summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl/lib
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2010-05-12 16:51:27 +0000
committerNorbert Preining <preining@logic.at>2010-05-12 16:51:27 +0000
commitb645030efc22e13c2498a1522083634ab91b2de1 (patch)
treec75c7a71998200d419af56eb755dac2f5115b585 /Master/tlpkg/tlperl/lib
parent44ccd4efc5352f9eb1099ba357708e7b5ff03b83 (diff)
move tlperl to tlperl.old
git-svn-id: svn://tug.org/texlive/trunk@18209 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/tlperl/lib')
-rw-r--r--Master/tlpkg/tlperl/lib/AnyDBM_File.pm93
-rw-r--r--Master/tlpkg/tlperl/lib/AutoLoader.pm343
-rw-r--r--Master/tlpkg/tlperl/lib/B.pm1111
-rw-r--r--Master/tlpkg/tlperl/lib/B/Asmdata.pm250
-rw-r--r--Master/tlpkg/tlperl/lib/B/Assembler.pm328
-rw-r--r--Master/tlpkg/tlperl/lib/B/Bblock.pm224
-rw-r--r--Master/tlpkg/tlperl/lib/B/Bytecode.pm889
-rw-r--r--Master/tlpkg/tlperl/lib/B/C.pm2272
-rw-r--r--Master/tlpkg/tlperl/lib/B/CC.pm2005
-rw-r--r--Master/tlpkg/tlperl/lib/B/Concise.pm1628
-rw-r--r--Master/tlpkg/tlperl/lib/B/Debug.pm305
-rw-r--r--Master/tlpkg/tlperl/lib/B/Deparse.pm4642
-rw-r--r--Master/tlpkg/tlperl/lib/B/Disassembler.pm233
-rw-r--r--Master/tlpkg/tlperl/lib/B/Lint.pm392
-rw-r--r--Master/tlpkg/tlperl/lib/B/Showlex.pm205
-rw-r--r--Master/tlpkg/tlperl/lib/B/Stackobj.pm349
-rw-r--r--Master/tlpkg/tlperl/lib/B/Stash.pm52
-rw-r--r--Master/tlpkg/tlperl/lib/B/Terse.pm103
-rw-r--r--Master/tlpkg/tlperl/lib/B/Xref.pm430
-rw-r--r--Master/tlpkg/tlperl/lib/B/assemble30
-rw-r--r--Master/tlpkg/tlperl/lib/B/cc_harness12
-rw-r--r--Master/tlpkg/tlperl/lib/B/disassemble22
-rw-r--r--Master/tlpkg/tlperl/lib/B/makeliblinks54
-rw-r--r--Master/tlpkg/tlperl/lib/Carp.pm274
-rw-r--r--Master/tlpkg/tlperl/lib/Carp/Heavy.pm241
-rw-r--r--Master/tlpkg/tlperl/lib/Class/ISA.pm214
-rw-r--r--Master/tlpkg/tlperl/lib/Class/Struct.pm636
-rw-r--r--Master/tlpkg/tlperl/lib/Config.pm95
-rw-r--r--Master/tlpkg/tlperl/lib/Config_heavy.pl1185
-rw-r--r--Master/tlpkg/tlperl/lib/Cwd.pm710
-rw-r--r--Master/tlpkg/tlperl/lib/Data/Dumper.pm1264
-rw-r--r--Master/tlpkg/tlperl/lib/Digest/MD5.pm376
-rw-r--r--Master/tlpkg/tlperl/lib/Digest/base.pm100
-rw-r--r--Master/tlpkg/tlperl/lib/Digest/file.pm85
-rw-r--r--Master/tlpkg/tlperl/lib/DynaLoader.pm833
-rw-r--r--Master/tlpkg/tlperl/lib/Encode.pm851
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/Alias.pm341
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/Byte.pm119
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/CJKConstants.pm66
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/CN.pm76
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/CN/HZ.pm196
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/Changes.e2x7
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/Config.pm166
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/ConfigLocal_PM.e2x13
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/EBCDIC.pm43
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/Encoder.pm249
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/Encoding.pm341
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/Guess.pm351
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/JP.pm97
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/JP/H2Z.pm174
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/JP/JIS7.pm165
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/KR.pm72
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/KR/2022_KR.pm79
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/MIME/Header.pm230
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/MIME/Header/ISO_2022_JP.pm127
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/Makefile_PL.e2x180
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/PerlIO.pod167
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/README.e2x31
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/Supported.pod890
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/Symbol.pm42
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/TW.pm78
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/Unicode.pm268
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/Unicode/UTF7.pm118
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/_PM.e2x23
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/_T.e2x7
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/encode.h111
-rw-r--r--Master/tlpkg/tlperl/lib/Errno.pm227
-rw-r--r--Master/tlpkg/tlperl/lib/Exporter.pm440
-rw-r--r--Master/tlpkg/tlperl/lib/Exporter/Heavy.pm248
-rw-r--r--Master/tlpkg/tlperl/lib/Fcntl.pm236
-rw-r--r--Master/tlpkg/tlperl/lib/File/Basename.pm398
-rw-r--r--Master/tlpkg/tlperl/lib/File/CheckTree.pm229
-rw-r--r--Master/tlpkg/tlperl/lib/File/Compare.pm178
-rw-r--r--Master/tlpkg/tlperl/lib/File/Copy.pm459
-rw-r--r--Master/tlpkg/tlperl/lib/File/DosGlob.pm571
-rw-r--r--Master/tlpkg/tlperl/lib/File/Find.pm1275
-rw-r--r--Master/tlpkg/tlperl/lib/File/Glob.pm496
-rw-r--r--Master/tlpkg/tlperl/lib/File/Path.pm285
-rw-r--r--Master/tlpkg/tlperl/lib/File/Spec.pm322
-rw-r--r--Master/tlpkg/tlperl/lib/File/Spec/Cygwin.pm93
-rw-r--r--Master/tlpkg/tlperl/lib/File/Spec/Epoc.pm77
-rw-r--r--Master/tlpkg/tlperl/lib/File/Spec/Functions.pm109
-rw-r--r--Master/tlpkg/tlperl/lib/File/Spec/Mac.pm780
-rw-r--r--Master/tlpkg/tlperl/lib/File/Spec/OS2.pm272
-rw-r--r--Master/tlpkg/tlperl/lib/File/Spec/Unix.pm510
-rw-r--r--Master/tlpkg/tlperl/lib/File/Spec/VMS.pm521
-rw-r--r--Master/tlpkg/tlperl/lib/File/Spec/Win32.pm369
-rw-r--r--Master/tlpkg/tlperl/lib/File/Temp.pm2244
-rw-r--r--Master/tlpkg/tlperl/lib/File/stat.pm139
-rw-r--r--Master/tlpkg/tlperl/lib/FileHandle.pm262
-rw-r--r--Master/tlpkg/tlperl/lib/Getopt/Long.pm2504
-rw-r--r--Master/tlpkg/tlperl/lib/Getopt/Std.pm294
-rw-r--r--Master/tlpkg/tlperl/lib/IO.pm68
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Dir.pm246
-rw-r--r--Master/tlpkg/tlperl/lib/IO/File.pm208
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Handle.pm625
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Pipe.pm257
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Poll.pm209
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Seekable.pm128
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Select.pm381
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Socket.pm476
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Socket/INET.pm431
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Socket/UNIX.pm144
-rwxr-xr-xMaster/tlpkg/tlperl/lib/IO/String.pm551
-rw-r--r--Master/tlpkg/tlperl/lib/List/Util.pm277
-rw-r--r--Master/tlpkg/tlperl/lib/Opcode.pm578
-rw-r--r--Master/tlpkg/tlperl/lib/POSIX.pm965
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Checker.pm1270
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Find.pm523
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Functions.pm376
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Html.pm2123
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/InputObjects.pm941
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/LaTeX.pm1876
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Man.pm1413
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/ParseLink.pm184
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/ParseUtils.pm852
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Parser.pm1799
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Perldoc.pm1762
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Perldoc/BaseTo.pm28
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Perldoc/GetOptsOO.pm106
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Perldoc/ToChecker.pm72
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Perldoc/ToMan.pm187
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Perldoc/ToNroff.pm100
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Perldoc/ToPod.pm90
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Perldoc/ToRtf.pm85
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Perldoc/ToText.pm91
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Perldoc/ToTk.pm129
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Perldoc/ToXml.pm63
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/PlainText.pm705
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Plainer.pm69
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Select.pm754
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Text.pm848
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Text/Color.pm145
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Text/Overstrike.pm208
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Text/Termcap.pm180
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Usage.pm659
-rw-r--r--Master/tlpkg/tlperl/lib/Safe.pm576
-rw-r--r--Master/tlpkg/tlperl/lib/Scalar/Util.pm147
-rw-r--r--Master/tlpkg/tlperl/lib/SelectSaver.pm54
-rw-r--r--Master/tlpkg/tlperl/lib/Symbol.pm170
-rw-r--r--Master/tlpkg/tlperl/lib/Term/ANSIColor.pm472
-rw-r--r--Master/tlpkg/tlperl/lib/Term/Cap.pm669
-rw-r--r--Master/tlpkg/tlperl/lib/Term/Complete.pm188
-rw-r--r--Master/tlpkg/tlperl/lib/Term/ReadLine.pm399
-rw-r--r--Master/tlpkg/tlperl/lib/Text/Abbrev.pm84
-rw-r--r--Master/tlpkg/tlperl/lib/Text/Balanced.pm2302
-rw-r--r--Master/tlpkg/tlperl/lib/Text/ParseWords.pm263
-rw-r--r--Master/tlpkg/tlperl/lib/Text/Soundex.pm150
-rw-r--r--Master/tlpkg/tlperl/lib/Text/Tabs.pm121
-rw-r--r--Master/tlpkg/tlperl/lib/Text/Wrap.pm223
-rw-r--r--Master/tlpkg/tlperl/lib/Tie/Array.pm287
-rw-r--r--Master/tlpkg/tlperl/lib/Tie/File.pm2632
-rw-r--r--Master/tlpkg/tlperl/lib/Tie/Handle.pm234
-rw-r--r--Master/tlpkg/tlperl/lib/Tie/Hash.pm257
-rw-r--r--Master/tlpkg/tlperl/lib/Tie/Memoize.pm128
-rw-r--r--Master/tlpkg/tlperl/lib/Tie/RefHash.pm170
-rw-r--r--Master/tlpkg/tlperl/lib/Tie/Scalar.pm140
-rw-r--r--Master/tlpkg/tlperl/lib/Tie/SubstrHash.pm215
-rw-r--r--Master/tlpkg/tlperl/lib/Tie/Watch.pm560
-rw-r--r--Master/tlpkg/tlperl/lib/Time/HiRes.pm500
-rw-r--r--Master/tlpkg/tlperl/lib/Time/Local.pm366
-rw-r--r--Master/tlpkg/tlperl/lib/Time/gmtime.pm90
-rw-r--r--Master/tlpkg/tlperl/lib/Time/localtime.pm86
-rw-r--r--Master/tlpkg/tlperl/lib/Time/tm.pm33
-rw-r--r--Master/tlpkg/tlperl/lib/Tk.pm821
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Adjuster.pm436
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/After.pm104
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Animation.pm178
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Balloon.pm621
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Bitmap.pm10
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/BrowseEntry.pm510
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Button.pm148
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Camel.xpm41
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Canvas.pm1436
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Checkbutton.pm42
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Clipboard.pm122
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/CmdLine.pm954
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/ColorEdit.xpm58
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/ColorEditor.pm761
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Compound.pm40
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Config.pm12
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Configure.pm69
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Credits7
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Derived.pm512
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Dialog.pm70
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/DialogBox.pm135
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/DirTree.pm252
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Dirlist.pm113
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/DragDrop.pm332
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/DragDrop/Common.pm59
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/DragDrop/LocalDrop.pm61
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/DragDrop/Rect.pm110
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/DragDrop/SunConst.pm34
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/DragDrop/SunDrop.pm200
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/DragDrop/SunSite.pm107
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/DragDrop/Win32Drop.pm8
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/DragDrop/Win32Site.pm50
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/DragDrop/XDNDDrop.pm145
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/DragDrop/XDNDSite.pm159
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/DropSite.pm257
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/DummyEncode.pm46
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/English.pm307
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Entry.pm615
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/ErrorDialog.pm125
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Event.pm13
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Event/IO.pm132
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/FBox.pm1043
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/FileSelect.pm578
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/FloatEntry.pm109
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Font.pm163
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Frame.pm378
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/HList.pm680
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/IO.pm182
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/IconList.pm712
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Image.pm74
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/ItemStyle.pm38
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/JPEG.pm50
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/LabEntry.pm31
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/LabFrame.pm138
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/LabRadio.pm63
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Label.pm21
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Labelframe.pm16
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Listbox.pm910
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/MMtry.pm54
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/MMutil.pm600
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/MainWindow.pm213
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/MakeDepend.pm292
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Menu.pm1145
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Menu/Item.pm180
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Menubar.pm15
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Menubutton.pm398
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Message.pm20
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/NBFrame.pm20
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/NoteBook.pm452
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Optionmenu.pm130
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/PNG.pm43
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Pane.pm544
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Panedwindow.pm221
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Photo.pm22
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Pixmap.pm19
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Pretty.pm93
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/ProgressBar.pm498
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/README.Adjust77
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/ROText.pm43
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Radiobutton.pm45
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Region.pm182
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Reindex.pm225
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/ReindexedROText.pm13
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/ReindexedText.pm13
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Scale.pm278
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Scrollbar.pm429
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Spinbox.pm115
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Stats.pm26
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Submethods.pm46
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/TList.pm416
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Table.pm598
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Text.pm1653
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Text/Tag.pm46
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/TextEdit.pm509
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/TextList.pm985
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/TextUndo.pm1022
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Tiler.pm203
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/TixGrid.pm1597
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Tk.xbm44
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Tk.xpm41
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/TkXSUB.def62
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Toplevel.pm211
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Trace.pm405
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Tree.pm228
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Widget.pm1510
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Wm.pm174
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/X.pm398
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/X11/X.h677
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/X11/Xatom.h79
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/X11/Xfuncproto.h60
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/X11/Xlib.h1214
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/X11/Xutil.h855
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/X11/cursorfont.h79
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/X11/keysym.h39
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/X11/keysymdef.h1169
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/X11/license.terms39
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/X11Font.pm184
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Xcamel.gifbin4193 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Xlib.pm15
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/Xrm.pm11
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/act_folder.xbm5
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/act_folder.xpm22
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/anim.gifbin2533 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/arrowdownwin.xbm5
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/balArrow.xbm4
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/cbxarrow.xbm6
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/file.xbm5
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/file.xpm18
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/folder.xbm5
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/folder.xpm21
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/icon.gifbin1924 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/install.pm37
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/license.terms35
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/openfile.xbm5
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/openfolder.xbm5
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/openfolder.xpm21
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/prolog.ps284
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/reindex.pl33
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/srcfile.xpm18
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/textfile.xpm18
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/tkGlue.def130
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/tkGlue.h79
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/tkGlue.m74
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/tkGlue.t70
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/tkGlue_f.h14
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/tranicon.gifbin1718 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/typemap96
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/vtab.def90
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/widgets.pm21
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/win.xbm6
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/winfolder.xpm39
-rw-r--r--Master/tlpkg/tlperl/lib/Tk/wintext.xpm42
-rw-r--r--Master/tlpkg/tlperl/lib/UNIVERSAL.pm147
-rw-r--r--Master/tlpkg/tlperl/lib/Win32.pm712
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/API.pm745
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/API.pm.orig741
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/API/Callback.pm174
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/API/Struct.pm532
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/API/Test.pm120
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/API/Type.pm446
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/ChangeNotify.pm198
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/Client.pl63
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/Clipboard.pm369
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/Console.pm1463
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/Event.pm104
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/EventLog.pm471
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/File.pm118
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/FileSecurity.pm308
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/IPC.pm195
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/Internet.pm3009
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/Job.pm370
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/Mutex.pm125
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/NetAdmin.pm419
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/NetResource.pm456
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/ODBC.pm1493
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/PerfLib.pm538
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/Pipe.pm414
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/Process.pm217
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/Registry.pm547
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/Semaphore.pm128
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/Server.pl48
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/Service.pm103
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/Shortcut.pm323
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/Sound.pm582
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/Test.pl477
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/TieRegistry.pm3801
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/WinError.pm1017
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/test-async.pl129
-rw-r--r--Master/tlpkg/tlperl/lib/Win32API/Registry.pm1792
-rw-r--r--Master/tlpkg/tlperl/lib/Win32API/Registry/cRegistry.pc87
-rw-r--r--Master/tlpkg/tlperl/lib/XSLoader.pm356
-rw-r--r--Master/tlpkg/tlperl/lib/attributes.pm418
-rw-r--r--Master/tlpkg/tlperl/lib/auto/B/B.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/B/B.dllbin113152 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/B/C/C.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/B/C/C.dllbin8192 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Cwd/Cwd.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Cwd/Cwd.dllbin10240 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Data/Dumper/Dumper.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Data/Dumper/Dumper.dllbin30720 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Digest/MD5/MD5.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Digest/MD5/MD5.dllbin15872 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/DynaLoader/autosplit.ix8
-rw-r--r--Master/tlpkg/tlperl/lib/auto/DynaLoader/dl_expandspec.al34
-rw-r--r--Master/tlpkg/tlperl/lib/auto/DynaLoader/dl_find_symbol_anywhere.al19
-rw-r--r--Master/tlpkg/tlperl/lib/auto/DynaLoader/dl_findfile.al115
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Encode/Byte/Byte.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/Byte/Byte.dllbin112640 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Encode/Encode.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/Encode.dllbin30208 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Encode/Symbol/Symbol.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/Symbol/Symbol.dllbin20992 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Encode/Unicode/Unicode.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/Unicode/Unicode.dllbin17920 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Fcntl/Fcntl.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Fcntl/Fcntl.dllbin14848 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/File/Glob/Glob.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/File/Glob/Glob.dllbin16384 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/IO/IO.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/IO/IO.dllbin16896 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/List/Util/Util.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/List/Util/Util.dllbin26624 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Opcode/Opcode.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Opcode/Opcode.dllbin21504 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/POSIX.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/POSIX/POSIX.dllbin97792 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/SigAction/flags.al9
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/SigAction/handler.al11
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/SigAction/mask.al9
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/SigAction/safe.al9
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/abs.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/alarm.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/assert.al15
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/atan2.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/atexit.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/atof.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/atoi.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/atol.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/autosplit.ix159
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/bsearch.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/calloc.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/chdir.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/chmod.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/chown.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/clearerr.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/closedir.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/cos.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/creat.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/div.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/errno.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/execl.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/execle.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/execlp.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/execv.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/execve.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/execvp.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/exit.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/exp.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/fabs.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/fclose.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/fcntl.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/fdopen.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/feof.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/ferror.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/fflush.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/fgetc.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/fgetpos.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/fgets.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/fileno.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/fopen.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/fork.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/fprintf.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/fputc.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/fputs.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/fread.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/free.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/freopen.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/fscanf.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/fseek.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/fsetpos.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/fstat.al17
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/fsync.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/ftell.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/fwrite.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/getc.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/getchar.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/getegid.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/getenv.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/geteuid.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/getgid.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/getgrgid.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/getgrnam.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/getgroups.al14
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/getlogin.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/getpgrp.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/getpid.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/getppid.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/getpwnam.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/getpwuid.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/gets.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/getuid.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/gmtime.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/isatty.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/kill.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/labs.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/ldiv.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/link.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/load_imports.al225
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/localtime.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/log.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/longjmp.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/malloc.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/memchr.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/memcmp.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/memcpy.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/memmove.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/memset.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/mkdir.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/offsetof.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/opendir.al16
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/perror.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/pow.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/printf.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/putc.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/putchar.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/puts.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/qsort.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/raise.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/rand.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/readdir.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/realloc.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/redef.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/remove.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/rename.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/rewind.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/rewinddir.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/rmdir.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/scanf.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/setbuf.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/setjmp.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/setvbuf.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/siglongjmp.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/sigsetjmp.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/sin.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/sleep.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/sprintf.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/sqrt.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/srand.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/sscanf.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/stat.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/strcat.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/strchr.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/strcmp.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/strcpy.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/strcspn.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/strerror.al14
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/strlen.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/strncat.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/strncmp.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/strncpy.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/strpbrk.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/strrchr.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/strspn.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/strstr.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/strtok.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/system.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/time.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/tmpfile.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/tolower.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/toupper.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/umask.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/ungetc.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/unimpl.al14
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/unlink.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/usage.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/utime.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/vfprintf.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/vprintf.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/vsprintf.al12
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/wait.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/POSIX/waitpid.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/SDBM_File/SDBM_File.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/SDBM_File/SDBM_File.dllbin29696 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Time/HiRes/HiRes.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Time/HiRes/HiRes.dllbin18944 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/CancelRepeat.al15
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Canvas/Canvas.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Tk/Canvas/Canvas.dllbin153600 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Clipboard/autosplit.ix6
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Clipboard/getSelected.al15
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Compound/Compound.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Tk/Compound/Compound.dllbin19968 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/DragDrop/Win32Site/Win32Site.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Tk/DragDrop/Win32Site/Win32Site.dllbin11264 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/EnterFocus.al27
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Entry/Entry.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Tk/Entry/Entry.dllbin41472 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Error.al20
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Event/Event.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Tk/Event/Event.dllbin56832 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/FirstMenu.al21
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/FocusChildren.al35
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/FocusOK.al36
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Frame/AddScrollbars.al52
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Frame/FindMenu.al22
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Frame/autosplit.ix24
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Frame/freeze_on_map.al18
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Frame/label.al24
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Frame/labelPack.al50
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Frame/labelVariable.al27
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Frame/packscrollbars.al86
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Frame/queuePack.al18
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Frame/sbset.al15
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Frame/scrollbars.al24
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/HList/HList.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Tk/HList/HList.dllbin51712 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/IO/IO.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Tk/IO/IO.dllbin11264 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/ImageNames.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/ImageTypes.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/JPEG/JPEG.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Tk/JPEG/JPEG.dllbin118784 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/AutoScan.al49
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/BeginExtend.al34
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/BeginSelect.al46
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/BeginToggle.al40
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/ButtonRelease_1.al16
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/CLEAR.al16
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Cancel.al42
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Cntrl_End.al19
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Cntrl_Home.al19
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Cntrl_backslash.al19
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/DELETE.al19
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/DataExtend.al39
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/EXISTS.al16
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/EXTEND.al16
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/ExtendUpDown.al36
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/FETCH.al56
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/FETCHSIZE.al16
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Listbox.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Tk/Listbox/Listbox.dllbin31232 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Motion.al77
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/POP.al19
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/PUSH.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/SHIFT.al19
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/SPLICE.al84
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/STORE.al80
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/SelectAll.al32
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/SetList.al16
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/TIEARRAY.al15
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/TIESCALAR.al15
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/UNSHIFT.al16
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/UpDown.al41
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/autosplit.ix56
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/clipboardPaste.al21
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/deleteSelected.al18
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/getSelected.al24
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Listbox/xyIndex.al29
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Menubutton/Menubutton.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Tk/Menubutton/Menubutton.dllbin20992 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/NBFrame/NBFrame.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Tk/NBFrame/NBFrame.dllbin22016 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/PNG/PNG.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Tk/PNG/PNG.dllbin168960 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Pixmap/Pixmap.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Tk/Pixmap/Pixmap.dllbin27136 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Receive.al23
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/RepeatId.al16
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scale/Activate.al33
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scale/ButtonDown.al40
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scale/ButtonUp.al16
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scale/ControlPress.al31
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scale/Drag.al29
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scale/EndDrag.al23
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scale/Enter.al19
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scale/Increment.al61
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scale/Leave.al15
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scale/Scale.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Tk/Scale/Scale.dllbin24576 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scale/autosplit.ix22
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ButtonDown.al55
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ButtonUp.al26
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Drag.al43
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/EndDrag.al28
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Enter.al21
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Leave.al18
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Motion.al15
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ScrlByPages.al38
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ScrlByUnits.al37
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ScrlToPos.al35
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ScrlTopBottom.al32
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Scrollbar.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Scrollbar.dllbin21504 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Select.al59
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/StartDrag.al38
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/autosplit.ix30
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Selection.al18
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/TList/TList.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Tk/TList/TList.dllbin28672 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Table/Create.al17
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Table/Posn.al15
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Table/autosplit.ix14
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Table/see.al46
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Table/totalColumns.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Table/totalRows.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Text/Text.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Tk/Text/Text.dllbin114176 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Text/autosplit.ix3
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/TextEdit/autosplit.ix3
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/TextUndo/autosplit.ix3
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/TixGrid/TixGrid.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Tk/TixGrid/TixGrid.dllbin52224 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Tk.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Tk/Tk.dllbin804864 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_BindIn.al19
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_BindOut.al20
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_Create.al56
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_Destroy.al29
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_In.al24
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_Out.al32
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/autosplit.ix10
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/TraverseToMenu.al27
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Widget/ASkludge.al30
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Widget/autosplit.ix11
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Widget/bindDump.al87
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Widget/clipboardKeysyms.al51
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Widget/pathname.al15
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Wm/AnchorAdjust.al17
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Wm/FullScreen.al29
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Wm/Popup.al50
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Wm/Post.al20
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Wm/autosplit.ix14
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Wm/iconposition.al24
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/X/X.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Tk/X/X.dllbin25088 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/X/autosplit.ix3
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/Xlib/Xlib.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Tk/Xlib/Xlib.dllbin29696 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/autosplit.ix45
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/break.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/focusFollowsMouse.al14
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/focusNext.al45
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/focusPrev.al65
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/getEncoding.al43
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/interps.al14
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/lsearch.al19
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/pTk/extralibs.ld1
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/tabFocus.al13
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Tk/updateWidgets.al17
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/API/API.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/API/API.dllbin20480 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/API/Callback/Callback.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/API/Callback/Callback.dllbin16384 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/ChangeNotify/ChangeNotify.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/ChangeNotify/ChangeNotify.dllbin11776 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/Clipboard/Clipboard.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/Clipboard/Clipboard.dllbin20480 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/Console/Console.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/Console/Console.dllbin47104 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/Event/Event.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/Event/Event.dllbin12288 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/EventLog/EventLog.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/EventLog/EventLog.dllbin25088 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/File/File.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/File/File.dllbin10240 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/FileSecurity/FileSecurity.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/FileSecurity/FileSecurity.dllbin16384 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/IPC/IPC.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/IPC/IPC.dllbin13312 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/Internet/Internet.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/Internet/Internet.dllbin51712 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/Job/Job.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/Job/Job.dllbin25088 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/Mutex/Mutex.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/Mutex/Mutex.dllbin10752 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/NetAdmin/NetAdmin.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/NetAdmin/NetAdmin.dllbin57344 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/NetResource/NetResource.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/NetResource/NetResource.dllbin25088 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/NetResource/autosplit.ix3
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/ODBC/ODBC.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/ODBC/ODBC.dllbin141824 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/OLE/OLE.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/OLE/OLE.dllbin139264 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/PerfLib/PerfLib.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/PerfLib/PerfLib.dllbin23040 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/PerfLib/autosplit.ix3
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/Pipe/Pipe.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/Pipe/Pipe.dllbin37376 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/Process/Process.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/Process/Process.dllbin39424 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/Registry/Registry.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/Registry/Registry.dllbin37376 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/Semaphore/Semaphore.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/Semaphore/Semaphore.dllbin11264 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/Service/Service.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/Service/Service.dllbin14848 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/Shortcut/Shortcut.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/Shortcut/Shortcut.dllbin29184 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/Sound/Sound.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/Sound/Sound.dllbin44544 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/Win32.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/Win32.dllbin21504 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32/WinError/WinError.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/WinError/WinError.dllbin67584 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/Win32API/Registry/Registry.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32API/Registry/Registry.dllbin181760 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/auto/re/re.bs0
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/re/re.dllbin138240 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/base.pm226
-rw-r--r--Master/tlpkg/tlperl/lib/bytes.pm88
-rw-r--r--Master/tlpkg/tlperl/lib/bytes_heavy.pl40
-rw-r--r--Master/tlpkg/tlperl/lib/constant.pm340
-rw-r--r--Master/tlpkg/tlperl/lib/fields.pm319
-rw-r--r--Master/tlpkg/tlperl/lib/lib.pm206
-rw-r--r--Master/tlpkg/tlperl/lib/newgetopt.pl75
-rw-r--r--Master/tlpkg/tlperl/lib/overload.pm1434
-rw-r--r--Master/tlpkg/tlperl/lib/re.pm134
-rw-r--r--Master/tlpkg/tlperl/lib/strict.pm136
-rw-r--r--Master/tlpkg/tlperl/lib/subs.pm40
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/ArabicShaping.txt299
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/BidiMirroring.txt550
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/Blocks.txt172
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/Canonical.pl1042
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/CaseFolding.txt1064
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/CombiningClass.pl203
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/CompositionExclusions.txt179
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/Decomposition.pl5366
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/EastAsianWidth.txt16368
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/Exact.pl73
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/HangulSyllableType.txt851
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/Index.txt4307
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/Jamo.txt92
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/LineBreak.txt17169
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/Name.pl16346
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/NamedSequences.txt95
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/NamesList.txt27024
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/NormalizationCorrections.txt48
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/PVA.pl2044
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/PropList.txt1049
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/PropValueAliases.txt578
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/Properties350
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/PropertyAliases.txt163
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/ReadMe.txt24
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/Scripts.txt1464
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/SpecialCasing.txt260
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/StandardizedVariants.txt122
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Digit.pl276
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Fold.pl993
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Lower.pl905
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Title.pl966
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Upper.pl989
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/UnicodeData.txt16351
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/bc/AL.pl34
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/bc/AN.pl11
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/bc/B.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/bc/BN.pl22
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/bc/CS.pl22
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/bc/EN.pl19
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/bc/ES.pl18
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/bc/ET.pl27
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/bc/L.pl400
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/bc/LRE.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/bc/LRO.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/bc/NSM.pl131
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/bc/ON.pl150
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/bc/PDF.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/bc/R.pl36
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/bc/RLE.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/bc/RLO.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/bc/S.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/bc/WS.pl17
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ccc/A.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ccc/AL.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ccc/AR.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ccc/ATAR.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ccc/ATB.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ccc/ATBL.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ccc/B.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ccc/BL.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ccc/BR.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ccc/DA.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ccc/DB.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ccc/IS.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ccc/KV.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ccc/L.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ccc/NK.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ccc/NR.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ccc/OV.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ccc/R.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ccc/VR.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/dt/can.pl222
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/dt/com.pl820
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/dt/enc.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/dt/fin.pl122
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/dt/font.pl43
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/dt/fra.pl11
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/dt/init.pl84
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/dt/iso.pl107
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/dt/med.pl63
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/dt/nar.pl15
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/dt/nb.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/dt/sml.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/dt/sqr.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/dt/sub.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/dt/sup.pl27
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/dt/vert.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/dt/wide.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ea/A.pl168
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ea/F.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ea/H.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ea/N.pl540
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ea/Na.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ea/W.pl40
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/AHex.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/ASCII.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Alnum.pl448
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Alpha.pl430
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Alphabet.pl415
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Any.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Arab.pl29
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Armn.pl17
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/AsciiHex.pl15
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Assigned.pl432
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Beng.pl26
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/BidiC.pl11
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/BidiCont.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Blank.pl21
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Bopo.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Brai.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Bugi.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Buhd.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/C.pl435
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Canadian.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cc.pl15
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cf.pl27
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cher.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cn.pl433
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cntrl.pl31
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Co.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Copt.pl15
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cprt.pl18
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cs.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cyrl.pl18
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Dash.pl25
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Dash2.pl28
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Dep.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Deprecat.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Deva.pl18
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Dia.pl91
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Diacriti.pl94
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Digit.pl35
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Dsrt.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ethi.pl39
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ext.pl21
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Extender.pl24
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Geor.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Glag.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Goth.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/GrLink.pl25
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Graph.pl436
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Grapheme.pl28
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Grek.pl43
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Gujr.pl26
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Guru.pl27
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hang.pl24
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hani.pl26
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hano.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hebr.pl22
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hex.pl15
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/HexDigit.pl18
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hira.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hyphen.pl19
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hyphen2.pl22
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IDSB.pl11
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IDST.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IdContin.pl460
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IdStart.pl364
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ideo.pl18
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ideograp.pl21
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IdsBinar.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IdsTrina.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InAegean.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InAlphab.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InAncie2.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InAncien.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArabi2.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArabi3.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArabi4.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArabic.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArmeni.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArrows.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBasicL.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBengal.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBlockE.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBopom2.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBopomo.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBoxDra.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBraill.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBugine.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBuhid.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InByzant.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCherok.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkCo2.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkCo3.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkCo4.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkCom.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkRad.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkStr.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkSym.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkUn2.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkUn3.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkUni.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCombi2.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCombi3.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCombi4.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCombin.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InContro.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCoptic.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCurren.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCyprio.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCyril2.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCyrill.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InDesere.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InDevana.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InDingba.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InEnclo2.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InEnclos.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InEthio2.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InEthio3.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InEthiop.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGenera.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGeomet.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGeorg2.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGeorgi.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGlagol.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGothic.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGreekA.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGreekE.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGujara.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGurmuk.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHalfwi.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHangu2.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHangu3.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHangul.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHanuno.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHebrew.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHighPr.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHighSu.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHiraga.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InIdeogr.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InIpaExt.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKanbun.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKangxi.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKannad.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKatak2.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKataka.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKharos.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKhmer.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKhmerS.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLao.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLatin1.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLatin2.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLatin3.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLatinE.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLetter.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLimbu.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLinea2.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLinear.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLowSur.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMalaya.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMathe2.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMathem.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMisce2.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMisce3.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMisce4.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMisce5.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMiscel.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InModifi.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMongol.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMusica.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMyanma.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InNewTai.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InNumber.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOgham.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOldIta.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOldPer.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOptica.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOriya.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOsmany.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InPhone2.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InPhonet.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InPrivat.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InRunic.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InShavia.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSinhal.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSmallF.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSpacin.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSpecia.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSupers.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSuppl2.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSuppl3.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSuppl4.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSuppl5.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSuppl6.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSupple.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSyloti.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSyriac.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTagalo.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTagban.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTags.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTaiLe.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTaiXua.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTamil.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTelugu.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InThaana.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InThai.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTibeta.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTifina.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InUgarit.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InUnifie.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InVaria2.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InVariat.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InVertic.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InYiRadi.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InYiSyll.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InYijing.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/JoinC.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/JoinCont.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Kana.pl17
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Khar.pl20
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Khmr.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Knda.pl25
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/L.pl360
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/LC.pl116
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/LOE.pl11
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Laoo.pl30
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Latn.pl35
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Limb.pl17
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/LinearB.pl19
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ll.pl493
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lm.pl39
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lo.pl258
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/LogicalO.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lower.pl492
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lowercas.pl497
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lt.pl23
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lu.pl489
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/M.pl146
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Math.pl103
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Mc.pl76
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Me.pl17
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Mlym.pl23
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Mn.pl137
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Mong.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Mymr.pl18
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/N.pl66
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/NChar.pl27
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Nd.pl36
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/NewTaiLu.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Nl.pl21
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/No.pl39
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Nonchara.pl30
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OAlpha.pl108
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/ODI.pl19
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OGrExt.pl24
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OIDC.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OIDS.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OLower.pl20
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OMath.pl77
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OUpper.pl11
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ogam.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OldItali.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OldPersi.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Orya.pl26
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Osma.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherAlp.pl111
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherDef.pl22
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherGra.pl27
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherIdC.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherIdS.pl15
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherLow.pl23
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherMat.pl80
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherUpp.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/P.pl109
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/PatSyn.pl37
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/PatWS.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/PatternS.pl40
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/PatternW.pl17
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Pc.pl19
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Pd.pl25
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Pe.pl78
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Pf.pl22
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Pi.pl23
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Po.pl101
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Print.pl435
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ps.pl80
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Punct.pl108
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/QMark.pl21
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Qaai.pl27
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Quotatio.pl24
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Radical.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Radical2.pl15
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Runr.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/S.pl175
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/SD.pl38
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/STerm.pl35
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Sc.pl27
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Shaw.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Sinh.pl23
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Sk.pl36
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Sm.pl72
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/So.pl133
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/SoftDott.pl41
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Space.pl23
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/SpacePer.pl24
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Sterm2.pl38
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/SylotiNa.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Syrc.pl15
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Tagb.pl15
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/TaiLe.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Taml.pl27
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Telu.pl24
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Term.pl49
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Terminal.pl52
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Tfng.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Tglg.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Thaa.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Thai.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Tibt.pl19
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Title.pl22
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/UIdeo.pl19
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ugar.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/UnifiedI.pl22
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Upper.pl488
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Uppercas.pl490
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/VS.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Variatio.pl15
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/WSpace.pl20
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/WhiteSpa.pl23
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Word.pl476
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/XDigit.pl15
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Yiii.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Z.pl22
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Zl.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Zp.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Zs.pl21
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Zyyy.pl138
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/_CanonDC.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/_CaseIgn.pl138
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/_CombAbo.pl69
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/hst/L.pl11
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/hst/LV.pl408
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/hst/LVT.pl408
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/hst/T.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/hst/V.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/jt/C.pl11
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/jt/D.pl33
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/jt/R.pl34
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/jt/U.pl15
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/AI.pl101
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/AL.pl449
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/B2.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/BA.pl45
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/BB.pl17
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/BK.pl11
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/CB.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/CL.pl80
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/CM.pl155
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/CR.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/EX.pl25
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/GL.pl19
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/H2.pl408
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/H3.pl408
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/HY.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/ID.pl80
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/IN.pl11
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/IS.pl18
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/JL.pl11
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/JT.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/JV.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/LF.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/NL.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/NS.pl46
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/NU.pl32
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/OP.pl76
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/PO.pl21
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/PR.pl27
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/QU.pl21
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/SA.pl34
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/SG.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/SP.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/SY.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/WJ.pl11
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/XX.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/lb/ZW.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/nt/De.pl32
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/nt/Di.pl25
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/nt/Nu.pl42
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/mktables2197
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/mktables.lst505
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/version1
-rw-r--r--Master/tlpkg/tlperl/lib/utf8.pm214
-rw-r--r--Master/tlpkg/tlperl/lib/utf8_heavy.pl412
-rw-r--r--Master/tlpkg/tlperl/lib/vars.pm82
-rw-r--r--Master/tlpkg/tlperl/lib/warnings.pm497
-rw-r--r--Master/tlpkg/tlperl/lib/warnings/register.pm51
1272 files changed, 0 insertions, 290444 deletions
diff --git a/Master/tlpkg/tlperl/lib/AnyDBM_File.pm b/Master/tlpkg/tlperl/lib/AnyDBM_File.pm
deleted file mode 100644
index d73abab0f9e..00000000000
--- a/Master/tlpkg/tlperl/lib/AnyDBM_File.pm
+++ /dev/null
@@ -1,93 +0,0 @@
-package AnyDBM_File;
-
-use 5.006_001;
-our $VERSION = '1.00';
-our @ISA = qw(NDBM_File DB_File GDBM_File SDBM_File ODBM_File) unless @ISA;
-
-my $mod;
-for $mod (@ISA) {
- if (eval "require $mod") {
- @ISA = ($mod); # if we leave @ISA alone, warnings abound
- return 1;
- }
-}
-
-die "No DBM package was successfully found or installed";
-#return 0;
-
-=head1 NAME
-
-AnyDBM_File - provide framework for multiple DBMs
-
-NDBM_File, DB_File, GDBM_File, SDBM_File, ODBM_File - various DBM implementations
-
-=head1 SYNOPSIS
-
- use AnyDBM_File;
-
-=head1 DESCRIPTION
-
-This module is a "pure virtual base class"--it has nothing of its own.
-It's just there to inherit from one of the various DBM packages. It
-prefers ndbm for compatibility reasons with Perl 4, then Berkeley DB (See
-L<DB_File>), GDBM, SDBM (which is always there--it comes with Perl), and
-finally ODBM. This way old programs that used to use NDBM via dbmopen()
-can still do so, but new ones can reorder @ISA:
-
- BEGIN { @AnyDBM_File::ISA = qw(DB_File GDBM_File NDBM_File) }
- use AnyDBM_File;
-
-Having multiple DBM implementations makes it trivial to copy database formats:
-
- use POSIX; use NDBM_File; use DB_File;
- tie %newhash, 'DB_File', $new_filename, O_CREAT|O_RDWR;
- tie %oldhash, 'NDBM_File', $old_filename, 1, 0;
- %newhash = %oldhash;
-
-=head2 DBM Comparisons
-
-Here's a partial table of features the different packages offer:
-
- odbm ndbm sdbm gdbm bsd-db
- ---- ---- ---- ---- ------
- Linkage comes w/ perl yes yes yes yes yes
- Src comes w/ perl no no yes no no
- Comes w/ many unix os yes yes[0] no no no
- Builds ok on !unix ? ? yes yes ?
- Code Size ? ? small big big
- Database Size ? ? small big? ok[1]
- Speed ? ? slow ok fast
- FTPable no no yes yes yes
- Easy to build N/A N/A yes yes ok[2]
- Size limits 1k 4k 1k[3] none none
- Byte-order independent no no no no yes
- Licensing restrictions ? ? no yes no
-
-
-=over 4
-
-=item [0]
-
-on mixed universe machines, may be in the bsd compat library,
-which is often shunned.
-
-=item [1]
-
-Can be trimmed if you compile for one access method.
-
-=item [2]
-
-See L<DB_File>.
-Requires symbolic links.
-
-=item [3]
-
-By default, but can be redefined.
-
-=back
-
-=head1 SEE ALSO
-
-dbm(3), ndbm(3), DB_File(3), L<perldbmfilter>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/AutoLoader.pm b/Master/tlpkg/tlperl/lib/AutoLoader.pm
deleted file mode 100644
index 4352d8b1fbe..00000000000
--- a/Master/tlpkg/tlperl/lib/AutoLoader.pm
+++ /dev/null
@@ -1,343 +0,0 @@
-package AutoLoader;
-
-use strict;
-use 5.006_001;
-
-our($VERSION, $AUTOLOAD);
-
-my $is_dosish;
-my $is_epoc;
-my $is_vms;
-my $is_macos;
-
-BEGIN {
- $is_dosish = $^O eq 'dos' || $^O eq 'os2' || $^O eq 'MSWin32' || $^O eq 'NetWare';
- $is_epoc = $^O eq 'epoc';
- $is_vms = $^O eq 'VMS';
- $is_macos = $^O eq 'MacOS';
- $VERSION = '5.60';
-}
-
-AUTOLOAD {
- my $sub = $AUTOLOAD;
- my $filename;
- # Braces used to preserve $1 et al.
- {
- # Try to find the autoloaded file from the package-qualified
- # name of the sub. e.g., if the sub needed is
- # Getopt::Long::GetOptions(), then $INC{Getopt/Long.pm} is
- # something like '/usr/lib/perl5/Getopt/Long.pm', and the
- # autoload file is '/usr/lib/perl5/auto/Getopt/Long/GetOptions.al'.
- #
- # However, if @INC is a relative path, this might not work. If,
- # for example, @INC = ('lib'), then $INC{Getopt/Long.pm} is
- # 'lib/Getopt/Long.pm', and we want to require
- # 'auto/Getopt/Long/GetOptions.al' (without the leading 'lib').
- # In this case, we simple prepend the 'auto/' and let the
- # C<require> take care of the searching for us.
-
- my ($pkg,$func) = ($sub =~ /(.*)::([^:]+)$/);
- $pkg =~ s#::#/#g;
- if (defined($filename = $INC{"$pkg.pm"})) {
- if ($is_macos) {
- $pkg =~ tr#/#:#;
- $filename =~ s#^(.*)$pkg\.pm\z#$1auto:$pkg:$func.al#s;
- } else {
- $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',
- # or './lib/auto/foo/bar.al'. This avoids C<require> searching
- # (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 $filename) {
- unless ($filename =~ m|^/|s) {
- if ($is_dosish) {
- unless ($filename =~ m{^([a-z]:)?[\\/]}is) {
- if ($^O ne 'NetWare') {
- $filename = "./$filename";
- } else {
- $filename = "$filename";
- }
- }
- }
- elsif ($is_epoc) {
- unless ($filename =~ m{^([a-z?]:)?[\\/]}is) {
- $filename = "./$filename";
- }
- }
- elsif ($is_vms) {
- # XXX todo by VMSmiths
- $filename = "./$filename";
- }
- elsif (!$is_macos) {
- $filename = "./$filename";
- }
- }
- }
- else {
- $filename = undef;
- }
- }
- unless (defined $filename) {
- # let C<require> do the searching
- $filename = "auto/$sub.al";
- $filename =~ s#::#/#g;
- }
- }
- my $save = $@;
- local $!; # Do not munge the value.
- eval { local $SIG{__DIE__}; require $filename };
- if ($@) {
- if (substr($sub,-9) eq '::DESTROY') {
- no strict 'refs';
- *$sub = sub {};
- $@ = undef;
- } elsif ($@ =~ /^Can't locate/) {
- # 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 successfully 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 ($filename =~ s/(\w{12,})\.al$/substr($1,0,11).".al"/e){
- eval { local $SIG{__DIE__}; require $filename };
- }
- }
- if ($@){
- $@ =~ s/ at .*\n//;
- my $error = $@;
- require Carp;
- Carp::croak($error);
- }
- }
- $@ = $save;
- goto &$sub;
-}
-
-sub import {
- my $pkg = shift;
- my $callpkg = caller;
-
- #
- # Export symbols, but not by accident of inheritance.
- #
-
- if ($pkg eq 'AutoLoader') {
- no strict 'refs';
- *{ $callpkg . '::AUTOLOAD' } = \&AUTOLOAD
- if @_ and $_[0] =~ /^&?AUTOLOAD$/;
- }
-
- #
- # Try to find the autosplit index file. Eg., if the call package
- # is POSIX, then $INC{POSIX.pm} is something like
- # '/usr/local/lib/perl5/POSIX.pm', and the autosplit index file is in
- # '/usr/local/lib/perl5/auto/POSIX/autosplit.ix', so we require that.
- #
- # However, if @INC is a relative path, this might not work. If,
- # for example, @INC = ('lib'), then
- # $INC{POSIX.pm} is 'lib/POSIX.pm', and we want to require
- # 'auto/POSIX/autosplit.ix' (without the leading 'lib').
- #
-
- (my $calldir = $callpkg) =~ s#::#/#g;
- my $path = $INC{$calldir . '.pm'};
- if (defined($path)) {
- # Try absolute path name.
- if ($is_macos) {
- (my $malldir = $calldir) =~ tr#/#:#;
- $path =~ s#^(.*)$malldir\.pm\z#$1auto:$malldir:autosplit.ix#s;
- } else {
- $path =~ s#^(.*)$calldir\.pm\z#$1auto/$calldir/autosplit.ix#;
- }
-
- eval { require $path; };
- # If that failed, try relative path with normal @INC searching.
- if ($@) {
- $path ="auto/$calldir/autosplit.ix";
- eval { require $path; };
- }
- if ($@) {
- my $error = $@;
- require Carp;
- Carp::carp($error);
- }
- }
-}
-
-sub unimport {
- my $callpkg = caller;
-
- no strict 'refs';
- my $symname = $callpkg . '::AUTOLOAD';
- undef *{ $symname } if \&{ $symname } == \&AUTOLOAD;
- *{ $symname } = \&{ $symname };
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-AutoLoader - load subroutines only on demand
-
-=head1 SYNOPSIS
-
- package Foo;
- use AutoLoader 'AUTOLOAD'; # import the default AUTOLOAD subroutine
-
- package Bar;
- use AutoLoader; # don't import AUTOLOAD, define our own
- sub AUTOLOAD {
- ...
- $AutoLoader::AUTOLOAD = "...";
- goto &AutoLoader::AUTOLOAD;
- }
-
-=head1 DESCRIPTION
-
-The B<AutoLoader> module works with the B<AutoSplit> module and the
-C<__END__> token to defer the loading of some subroutines until they are
-used rather than loading them all at once.
-
-To use B<AutoLoader>, the author of a module has to place the
-definitions of subroutines to be autoloaded after an C<__END__> token.
-(See L<perldata>.) The B<AutoSplit> module can then be run manually to
-extract the definitions into individual files F<auto/funcname.al>.
-
-B<AutoLoader> implements an AUTOLOAD subroutine. When an undefined
-subroutine in is called in a client module of B<AutoLoader>,
-B<AutoLoader>'s AUTOLOAD subroutine attempts to locate the subroutine in a
-file with a name related to the location of the file from which the
-client module was read. As an example, if F<POSIX.pm> is located in
-F</usr/local/lib/perl5/POSIX.pm>, B<AutoLoader> will look for perl
-subroutines B<POSIX> in F</usr/local/lib/perl5/auto/POSIX/*.al>, where
-the C<.al> file has the same name as the subroutine, sans package. If
-such a file exists, AUTOLOAD will read and evaluate it,
-thus (presumably) defining the needed subroutine. AUTOLOAD will then
-C<goto> the newly defined subroutine.
-
-Once this process completes for a given function, it is defined, so
-future calls to the subroutine will bypass the AUTOLOAD mechanism.
-
-=head2 Subroutine Stubs
-
-In order for object method lookup and/or prototype checking to operate
-correctly even when methods have not yet been defined it is necessary to
-"forward declare" each subroutine (as in C<sub NAME;>). See
-L<perlsub/"SYNOPSIS">. Such forward declaration creates "subroutine
-stubs", which are place holders with no code.
-
-The AutoSplit and B<AutoLoader> modules automate the creation of forward
-declarations. The AutoSplit module creates an 'index' file containing
-forward declarations of all the AutoSplit subroutines. When the
-AutoLoader module is 'use'd it loads these declarations into its callers
-package.
-
-Because of this mechanism it is important that B<AutoLoader> is always
-C<use>d and not C<require>d.
-
-=head2 Using B<AutoLoader>'s AUTOLOAD Subroutine
-
-In order to use B<AutoLoader>'s AUTOLOAD subroutine you I<must>
-explicitly import it:
-
- use AutoLoader 'AUTOLOAD';
-
-=head2 Overriding B<AutoLoader>'s AUTOLOAD Subroutine
-
-Some modules, mainly extensions, provide their own AUTOLOAD subroutines.
-They typically need to check for some special cases (such as constants)
-and then fallback to B<AutoLoader>'s AUTOLOAD for the rest.
-
-Such modules should I<not> import B<AutoLoader>'s AUTOLOAD subroutine.
-Instead, they should define their own AUTOLOAD subroutines along these
-lines:
-
- use AutoLoader;
- use Carp;
-
- sub AUTOLOAD {
- my $sub = $AUTOLOAD;
- (my $constname = $sub) =~ s/.*:://;
- my $val = constant($constname, @_ ? $_[0] : 0);
- if ($! != 0) {
- if ($! =~ /Invalid/ || $!{EINVAL}) {
- $AutoLoader::AUTOLOAD = $sub;
- goto &AutoLoader::AUTOLOAD;
- }
- else {
- croak "Your vendor has not defined constant $constname";
- }
- }
- *$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
-AutoLoader's AUTOLOAD subroutine (because it doesn't have any AutoSplit
-subroutines), then that module should not use B<AutoLoader> at all.
-
-=head2 Package Lexicals
-
-Package lexicals declared with C<my> in the main block of a package
-using B<AutoLoader> will not be visible to auto-loaded subroutines, due to
-the fact that the given scope ends at the C<__END__> marker. A module
-using such variables as package globals will not work properly under the
-B<AutoLoader>.
-
-The C<vars> pragma (see L<perlmod/"vars">) may be used in such
-situations as an alternative to explicitly qualifying all globals with
-the package namespace. Variables pre-declared with this pragma will be
-visible to any autoloaded routines (but will not be invisible outside
-the package, unfortunately).
-
-=head2 Not Using AutoLoader
-
-You can stop using AutoLoader by simply
-
- no AutoLoader;
-
-=head2 B<AutoLoader> vs. B<SelfLoader>
-
-The B<AutoLoader> is similar in purpose to B<SelfLoader>: both delay the
-loading of subroutines.
-
-B<SelfLoader> uses the C<__DATA__> marker rather than C<__END__>.
-While this avoids the use of a hierarchy of disk files and the
-associated open/close for each routine loaded, B<SelfLoader> suffers a
-startup speed disadvantage in the one-time parsing of the lines after
-C<__DATA__>, after which routines are cached. B<SelfLoader> can also
-handle multiple packages in a file.
-
-B<AutoLoader> only reads code as it is requested, and in many cases
-should be faster, but requires a mechanism like B<AutoSplit> be used to
-create the individual files. L<ExtUtils::MakeMaker> will invoke
-B<AutoSplit> automatically if B<AutoLoader> is used in a module source
-file.
-
-=head1 CAVEATS
-
-AutoLoaders prior to Perl 5.002 had a slightly different interface. Any
-old modules which use B<AutoLoader> should be changed to the new calling
-style. Typically this just means changing a require to a use, adding
-the explicit C<'AUTOLOAD'> import if needed, and removing B<AutoLoader>
-from C<@ISA>.
-
-On systems with restrictions on file name length, the file corresponding
-to a subroutine may have a shorter name that the routine itself. This
-can lead to conflicting file names. The I<AutoSplit> package warns of
-these potential conflicts when used to split a module.
-
-AutoLoader may fail to find the autosplit files (or even find the wrong
-ones) in cases where C<@INC> contains relative paths, B<and> the program
-does C<chdir>.
-
-=head1 SEE ALSO
-
-L<SelfLoader> - an autoloader that doesn't use external files.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/B.pm b/Master/tlpkg/tlperl/lib/B.pm
deleted file mode 100644
index 12917347cd0..00000000000
--- a/Master/tlpkg/tlperl/lib/B.pm
+++ /dev/null
@@ -1,1111 +0,0 @@
-# B.pm
-#
-# Copyright (c) 1996, 1997, 1998 Malcolm Beattie
-#
-# You may distribute under the terms of either the GNU General Public
-# License or the Artistic License, as specified in the README file.
-#
-package B;
-
-our $VERSION = '1.09_01';
-
-use XSLoader ();
-require Exporter;
-@ISA = qw(Exporter);
-
-# walkoptree_slow comes from B.pm (you are there),
-# walkoptree comes from B.xs
-@EXPORT_OK = qw(minus_c ppname save_BEGINs
- class peekop cast_I32 cstring cchar hash threadsv_names
- main_root main_start main_cv svref_2object opnumber
- amagic_generation perlstring
- walkoptree_slow walkoptree walkoptree_exec walksymtable
- parents comppadlist sv_undef compile_stats timing_info
- begin_av init_av check_av end_av regex_padav dowarn
- defstash curstash warnhook diehook inc_gv
- );
-
-sub OPf_KIDS ();
-use strict;
-@B::SV::ISA = 'B::OBJECT';
-@B::NULL::ISA = 'B::SV';
-@B::PV::ISA = 'B::SV';
-@B::IV::ISA = 'B::SV';
-@B::NV::ISA = 'B::SV';
-@B::RV::ISA = 'B::SV';
-@B::PVIV::ISA = qw(B::PV B::IV);
-@B::PVNV::ISA = qw(B::PVIV B::NV);
-@B::PVMG::ISA = 'B::PVNV';
-# Change in the inheritance hierarchy post 5.9.0
-@B::PVLV::ISA = $] > 5.009 ? 'B::GV' : 'B::PVMG';
-@B::BM::ISA = 'B::PVMG';
-@B::AV::ISA = 'B::PVMG';
-@B::GV::ISA = 'B::PVMG';
-@B::HV::ISA = 'B::PVMG';
-@B::CV::ISA = 'B::PVMG';
-@B::IO::ISA = 'B::PVMG';
-@B::FM::ISA = 'B::CV';
-
-@B::OP::ISA = 'B::OBJECT';
-@B::UNOP::ISA = 'B::OP';
-@B::BINOP::ISA = 'B::UNOP';
-@B::LOGOP::ISA = 'B::UNOP';
-@B::LISTOP::ISA = 'B::BINOP';
-@B::SVOP::ISA = 'B::OP';
-@B::PADOP::ISA = 'B::OP';
-@B::PVOP::ISA = 'B::OP';
-@B::LOOP::ISA = 'B::LISTOP';
-@B::PMOP::ISA = 'B::LISTOP';
-@B::COP::ISA = 'B::OP';
-
-@B::SPECIAL::ISA = 'B::OBJECT';
-
-{
- # Stop "-w" from complaining about the lack of a real B::OBJECT class
- package B::OBJECT;
-}
-
-sub B::GV::SAFENAME {
- my $name = (shift())->NAME;
-
- # The regex below corresponds to the isCONTROLVAR macro
- # from toke.c
-
- $name =~ s/^([\cA-\cZ\c\\c[\c]\c?\c_\c^])/"^".
- chr( utf8::unicode_to_native( 64 ^ ord($1) ))/e;
-
- # When we say unicode_to_native we really mean ascii_to_native,
- # which matters iff this is a non-ASCII platform (EBCDIC).
-
- return $name;
-}
-
-sub B::IV::int_value {
- my ($self) = @_;
- return (($self->FLAGS() & SVf_IVisUV()) ? $self->UVX : $self->IV);
-}
-
-sub B::NULL::as_string() {""}
-sub B::IV::as_string() {goto &B::IV::int_value}
-sub B::PV::as_string() {goto &B::PV::PV}
-
-my $debug;
-my $op_count = 0;
-my @parents = ();
-
-sub debug {
- my ($class, $value) = @_;
- $debug = $value;
- walkoptree_debug($value);
-}
-
-sub class {
- my $obj = shift;
- my $name = ref $obj;
- $name =~ s/^.*:://;
- return $name;
-}
-
-sub parents { \@parents }
-
-# For debugging
-sub peekop {
- my $op = shift;
- return sprintf("%s (0x%x) %s", class($op), $$op, $op->name);
-}
-
-sub walkoptree_slow {
- my($op, $method, $level) = @_;
- $op_count++; # just for statistics
- $level ||= 0;
- warn(sprintf("walkoptree: %d. %s\n", $level, peekop($op))) if $debug;
- $op->$method($level);
- if ($$op && ($op->flags & OPf_KIDS)) {
- my $kid;
- unshift(@parents, $op);
- for ($kid = $op->first; $$kid; $kid = $kid->sibling) {
- walkoptree_slow($kid, $method, $level + 1);
- }
- shift @parents;
- }
- if (class($op) eq 'PMOP' && ref($op->pmreplroot) && ${$op->pmreplroot}) {
- unshift(@parents, $op);
- walkoptree_slow($op->pmreplroot, $method, $level + 1);
- shift @parents;
- }
-}
-
-sub compile_stats {
- return "Total number of OPs processed: $op_count\n";
-}
-
-sub timing_info {
- my ($sec, $min, $hr) = localtime;
- my ($user, $sys) = times;
- sprintf("%02d:%02d:%02d user=$user sys=$sys",
- $hr, $min, $sec, $user, $sys);
-}
-
-my %symtable;
-
-sub clearsym {
- %symtable = ();
-}
-
-sub savesym {
- my ($obj, $value) = @_;
-# warn(sprintf("savesym: sym_%x => %s\n", $$obj, $value)); # debug
- $symtable{sprintf("sym_%x", $$obj)} = $value;
-}
-
-sub objsym {
- my $obj = shift;
- return $symtable{sprintf("sym_%x", $$obj)};
-}
-
-sub walkoptree_exec {
- my ($op, $method, $level) = @_;
- $level ||= 0;
- my ($sym, $ppname);
- my $prefix = " " x $level;
- for (; $$op; $op = $op->next) {
- $sym = objsym($op);
- if (defined($sym)) {
- print $prefix, "goto $sym\n";
- return;
- }
- savesym($op, sprintf("%s (0x%lx)", class($op), $$op));
- $op->$method($level);
- $ppname = $op->name;
- if ($ppname =~
- /^(d?or(assign)?|and(assign)?|mapwhile|grepwhile|entertry|range|cond_expr)$/)
- {
- print $prefix, uc($1), " => {\n";
- walkoptree_exec($op->other, $method, $level + 1);
- print $prefix, "}\n";
- } elsif ($ppname eq "match" || $ppname eq "subst") {
- my $pmreplstart = $op->pmreplstart;
- if ($$pmreplstart) {
- print $prefix, "PMREPLSTART => {\n";
- walkoptree_exec($pmreplstart, $method, $level + 1);
- print $prefix, "}\n";
- }
- } elsif ($ppname eq "substcont") {
- print $prefix, "SUBSTCONT => {\n";
- walkoptree_exec($op->other->pmreplstart, $method, $level + 1);
- print $prefix, "}\n";
- $op = $op->other;
- } elsif ($ppname eq "enterloop") {
- print $prefix, "REDO => {\n";
- walkoptree_exec($op->redoop, $method, $level + 1);
- print $prefix, "}\n", $prefix, "NEXT => {\n";
- walkoptree_exec($op->nextop, $method, $level + 1);
- print $prefix, "}\n", $prefix, "LAST => {\n";
- walkoptree_exec($op->lastop, $method, $level + 1);
- print $prefix, "}\n";
- } elsif ($ppname eq "subst") {
- my $replstart = $op->pmreplstart;
- if ($$replstart) {
- print $prefix, "SUBST => {\n";
- walkoptree_exec($replstart, $method, $level + 1);
- print $prefix, "}\n";
- }
- }
- }
-}
-
-sub walksymtable {
- my ($symref, $method, $recurse, $prefix) = @_;
- my $sym;
- my $ref;
- my $fullname;
- no strict 'refs';
- $prefix = '' unless defined $prefix;
- while (($sym, $ref) = each %$symref) {
- $fullname = "*main::".$prefix.$sym;
- if ($sym =~ /::$/) {
- $sym = $prefix . $sym;
- if ($sym ne "main::" && $sym ne "<none>::" && &$recurse($sym)) {
- walksymtable(\%$fullname, $method, $recurse, $sym);
- }
- } else {
- svref_2object(\*$fullname)->$method();
- }
- }
-}
-
-{
- package B::Section;
- my $output_fh;
- my %sections;
-
- sub new {
- my ($class, $section, $symtable, $default) = @_;
- $output_fh ||= FileHandle->new_tmpfile;
- my $obj = bless [-1, $section, $symtable, $default], $class;
- $sections{$section} = $obj;
- return $obj;
- }
-
- sub get {
- my ($class, $section) = @_;
- return $sections{$section};
- }
-
- sub add {
- my $section = shift;
- while (defined($_ = shift)) {
- print $output_fh "$section->[1]\t$_\n";
- $section->[0]++;
- }
- }
-
- sub index {
- my $section = shift;
- return $section->[0];
- }
-
- sub name {
- my $section = shift;
- return $section->[1];
- }
-
- sub symtable {
- my $section = shift;
- return $section->[2];
- }
-
- sub default {
- my $section = shift;
- return $section->[3];
- }
-
- sub output {
- my ($section, $fh, $format) = @_;
- my $name = $section->name;
- my $sym = $section->symtable || {};
- my $default = $section->default;
-
- seek($output_fh, 0, 0);
- while (<$output_fh>) {
- chomp;
- s/^(.*?)\t//;
- if ($1 eq $name) {
- s{(s\\_[0-9a-f]+)} {
- exists($sym->{$1}) ? $sym->{$1} : $default;
- }ge;
- printf $fh $format, $_;
- }
- }
- }
-}
-
-XSLoader::load 'B';
-
-1;
-
-__END__
-
-=head1 NAME
-
-B - The Perl Compiler
-
-=head1 SYNOPSIS
-
- use B;
-
-=head1 DESCRIPTION
-
-The C<B> module supplies classes which allow a Perl program to delve
-into its own innards. It is the module used to implement the
-"backends" of the Perl compiler. Usage of the compiler does not
-require knowledge of this module: see the F<O> module for the
-user-visible part. The C<B> module is of use to those who want to
-write new compiler backends. This documentation assumes that the
-reader knows a fair amount about perl's internals including such
-things as SVs, OPs and the internal symbol table and syntax tree
-of a program.
-
-=head1 OVERVIEW
-
-The C<B> module contains a set of utility functions for querying the
-current state of the Perl interpreter; typically these functions
-return objects from the B::SV and B::OP classes, or their derived
-classes. These classes in turn define methods for querying the
-resulting objects about their own internal state.
-
-=head1 Utility Functions
-
-The C<B> module exports a variety of functions: some are simple
-utility functions, others provide a Perl program with a way to
-get an initial "handle" on an internal object.
-
-=head2 Functions Returning C<B::SV>, C<B::AV>, C<B::HV>, and C<B::CV> objects
-
-For descriptions of the class hierarchy of these objects and the
-methods that can be called on them, see below, L<"OVERVIEW OF
-CLASSES"> and L<"SV-RELATED CLASSES">.
-
-=over 4
-
-=item sv_undef
-
-Returns the SV object corresponding to the C variable C<sv_undef>.
-
-=item sv_yes
-
-Returns the SV object corresponding to the C variable C<sv_yes>.
-
-=item sv_no
-
-Returns the SV object corresponding to the C variable C<sv_no>.
-
-=item svref_2object(SVREF)
-
-Takes a reference to any Perl value, and turns the referred-to value
-into an object in the appropriate B::OP-derived or B::SV-derived
-class. Apart from functions such as C<main_root>, this is the primary
-way to get an initial "handle" on an internal perl data structure
-which can then be followed with the other access methods.
-
-The returned object will only be valid as long as the underlying OPs
-and SVs continue to exist. Do not attempt to use the object after the
-underlying structures are freed.
-
-=item amagic_generation
-
-Returns the SV object corresponding to the C variable C<amagic_generation>.
-
-=item init_av
-
-Returns the AV object (i.e. in class B::AV) representing INIT blocks.
-
-=item check_av
-
-Returns the AV object (i.e. in class B::AV) representing CHECK blocks.
-
-=item begin_av
-
-Returns the AV object (i.e. in class B::AV) representing BEGIN blocks.
-
-=item end_av
-
-Returns the AV object (i.e. in class B::AV) representing END blocks.
-
-=item comppadlist
-
-Returns the AV object (i.e. in class B::AV) of the global comppadlist.
-
-=item regex_padav
-
-Only when perl was compiled with ithreads.
-
-=item main_cv
-
-Return the (faked) CV corresponding to the main part of the Perl
-program.
-
-=back
-
-=head2 Functions for Examining the Symbol Table
-
-=over 4
-
-=item walksymtable(SYMREF, METHOD, RECURSE, PREFIX)
-
-Walk the symbol table starting at SYMREF and call METHOD on each
-symbol (a B::GV object) visited. When the walk reaches package
-symbols (such as "Foo::") it invokes RECURSE, passing in the symbol
-name, and only recurses into the package if that sub returns true.
-
-PREFIX is the name of the SYMREF you're walking.
-
-For example:
-
- # Walk CGI's symbol table calling print_subs on each symbol.
- # Recurse only into CGI::Util::
- walksymtable(\%CGI::, 'print_subs', sub { $_[0] eq 'CGI::Util::' },
- 'CGI::');
-
-print_subs() is a B::GV method you have declared. Also see L<"B::GV
-Methods">, below.
-
-=back
-
-=head2 Functions Returning C<B::OP> objects or for walking op trees
-
-For descriptions of the class hierarchy of these objects and the
-methods that can be called on them, see below, L<"OVERVIEW OF
-CLASSES"> and L<"OP-RELATED CLASSES">.
-
-=over 4
-
-=item main_root
-
-Returns the root op (i.e. an object in the appropriate B::OP-derived
-class) of the main part of the Perl program.
-
-=item main_start
-
-Returns the starting op of the main part of the Perl program.
-
-=item walkoptree(OP, METHOD)
-
-Does a tree-walk of the syntax tree based at OP and calls METHOD on
-each op it visits. Each node is visited before its children. If
-C<walkoptree_debug> (see below) has been called to turn debugging on then
-the method C<walkoptree_debug> is called on each op before METHOD is
-called.
-
-=item walkoptree_debug(DEBUG)
-
-Returns the current debugging flag for C<walkoptree>. If the optional
-DEBUG argument is non-zero, it sets the debugging flag to that. See
-the description of C<walkoptree> above for what the debugging flag
-does.
-
-=back
-
-=head2 Miscellaneous Utility Functions
-
-=over 4
-
-=item ppname(OPNUM)
-
-Return the PP function name (e.g. "pp_add") of op number OPNUM.
-
-=item hash(STR)
-
-Returns a string in the form "0x..." representing the value of the
-internal hash function used by perl on string STR.
-
-=item cast_I32(I)
-
-Casts I to the internal I32 type used by that perl.
-
-=item minus_c
-
-Does the equivalent of the C<-c> command-line option. Obviously, this
-is only useful in a BEGIN block or else the flag is set too late.
-
-=item cstring(STR)
-
-Returns a double-quote-surrounded escaped version of STR which can
-be used as a string in C source code.
-
-=item perlstring(STR)
-
-Returns a double-quote-surrounded escaped version of STR which can
-be used as a string in Perl source code.
-
-=item class(OBJ)
-
-Returns the class of an object without the part of the classname
-preceding the first C<"::">. This is used to turn C<"B::UNOP"> into
-C<"UNOP"> for example.
-
-=item threadsv_names
-
-In a perl compiled for threads, this returns a list of the special
-per-thread threadsv variables.
-
-=back
-
-
-
-
-=head1 OVERVIEW OF CLASSES
-
-The C structures used by Perl's internals to hold SV and OP
-information (PVIV, AV, HV, ..., OP, SVOP, UNOP, ...) are modelled on a
-class hierarchy and the C<B> module gives access to them via a true
-object hierarchy. Structure fields which point to other objects
-(whether types of SV or types of OP) are represented by the C<B>
-module as Perl objects of the appropriate class.
-
-The bulk of the C<B> module is the methods for accessing fields of
-these structures.
-
-Note that all access is read-only. You cannot modify the internals by
-using this module. Also, note that the B::OP and B::SV objects created
-by this module are only valid for as long as the underlying objects
-exist; their creation doesn't increase the reference counts of the
-underlying objects. Trying to access the fields of a freed object will
-give incomprehensible results, or worse.
-
-=head2 SV-RELATED CLASSES
-
-B::IV, B::NV, B::RV, B::PV, B::PVIV, B::PVNV, B::PVMG, B::BM, B::PVLV,
-B::AV, B::HV, B::CV, B::GV, B::FM, B::IO. These classes correspond in
-the obvious way to the underlying C structures of similar names. The
-inheritance hierarchy mimics the underlying C "inheritance". For 5.9.1
-and later this is:
-
- B::SV
- |
- +--------------+----------+------------+
- | | | |
- B::PV B::IV B::NV B::RV
- \ / /
- \ / /
- B::PVIV /
- \ /
- \ /
- \ /
- B::PVNV
- |
- |
- B::PVMG
- |
- +-----+----+------+-----+-----+
- | | | | | |
- B::BM B::AV B::GV B::HV B::CV B::IO
- | |
- B::PVLV |
- B::FM
-
-
-For 5.9.0 and earlier, PVLV is a direct subclass of PVMG, so the base
-of this diagram is
-
- |
- B::PVMG
- |
- +------+-----+----+------+-----+-----+
- | | | | | | |
- B::PVLV B::BM B::AV B::GV B::HV B::CV B::IO
- |
- |
- B::FM
-
-
-Access methods correspond to the underlying C macros for field access,
-usually with the leading "class indication" prefix removed (Sv, Av,
-Hv, ...). The leading prefix is only left in cases where its removal
-would cause a clash in method name. For example, C<GvREFCNT> stays
-as-is since its abbreviation would clash with the "superclass" method
-C<REFCNT> (corresponding to the C function C<SvREFCNT>).
-
-=head2 B::SV Methods
-
-=over 4
-
-=item REFCNT
-
-=item FLAGS
-
-=item object_2svref
-
-Returns a reference to the regular scalar corresponding to this
-B::SV object. In other words, this method is the inverse operation
-to the svref_2object() subroutine. This scalar and other data it points
-at should be considered read-only: modifying them is neither safe nor
-guaranteed to have a sensible effect.
-
-=back
-
-=head2 B::IV Methods
-
-=over 4
-
-=item IV
-
-Returns the value of the IV, I<interpreted as
-a signed integer>. This will be misleading
-if C<FLAGS & SVf_IVisUV>. Perhaps you want the
-C<int_value> method instead?
-
-=item IVX
-
-=item UVX
-
-=item int_value
-
-This method returns the value of the IV as an integer.
-It differs from C<IV> in that it returns the correct
-value regardless of whether it's stored signed or
-unsigned.
-
-=item needs64bits
-
-=item packiv
-
-=back
-
-=head2 B::NV Methods
-
-=over 4
-
-=item NV
-
-=item NVX
-
-=back
-
-=head2 B::RV Methods
-
-=over 4
-
-=item RV
-
-=back
-
-=head2 B::PV Methods
-
-=over 4
-
-=item PV
-
-This method is the one you usually want. It constructs a
-string using the length and offset information in the struct:
-for ordinary scalars it will return the string that you'd see
-from Perl, even if it contains null characters.
-
-=item RV
-
-Same as B::RV::RV, except that it will die() if the PV isn't
-a reference.
-
-=item PVX
-
-This method is less often useful. It assumes that the string
-stored in the struct is null-terminated, and disregards the
-length information.
-
-It is the appropriate method to use if you need to get the name
-of a lexical variable from a padname array. Lexical variable names
-are always stored with a null terminator, and the length field
-(SvCUR) is overloaded for other purposes and can't be relied on here.
-
-=back
-
-=head2 B::PVMG Methods
-
-=over 4
-
-=item MAGIC
-
-=item SvSTASH
-
-=back
-
-=head2 B::MAGIC Methods
-
-=over 4
-
-=item MOREMAGIC
-
-=item precomp
-
-Only valid on r-magic, returns the string that generated the regexp.
-
-=item PRIVATE
-
-=item TYPE
-
-=item FLAGS
-
-=item OBJ
-
-Will die() if called on r-magic.
-
-=item PTR
-
-=item REGEX
-
-Only valid on r-magic, returns the integer value of the REGEX stored
-in the MAGIC.
-
-=back
-
-=head2 B::PVLV Methods
-
-=over 4
-
-=item TARGOFF
-
-=item TARGLEN
-
-=item TYPE
-
-=item TARG
-
-=back
-
-=head2 B::BM Methods
-
-=over 4
-
-=item USEFUL
-
-=item PREVIOUS
-
-=item RARE
-
-=item TABLE
-
-=back
-
-=head2 B::GV Methods
-
-=over 4
-
-=item is_empty
-
-This method returns TRUE if the GP field of the GV is NULL.
-
-=item NAME
-
-=item SAFENAME
-
-This method returns the name of the glob, but if the first
-character of the name is a control character, then it converts
-it to ^X first, so that *^G would return "^G" rather than "\cG".
-
-It's useful if you want to print out the name of a variable.
-If you restrict yourself to globs which exist at compile-time
-then the result ought to be unambiguous, because code like
-C<${"^G"} = 1> is compiled as two ops - a constant string and
-a dereference (rv2gv) - so that the glob is created at runtime.
-
-If you're working with globs at runtime, and need to disambiguate
-*^G from *{"^G"}, then you should use the raw NAME method.
-
-=item STASH
-
-=item SV
-
-=item IO
-
-=item FORM
-
-=item AV
-
-=item HV
-
-=item EGV
-
-=item CV
-
-=item CVGEN
-
-=item LINE
-
-=item FILE
-
-=item FILEGV
-
-=item GvREFCNT
-
-=item FLAGS
-
-=back
-
-=head2 B::IO Methods
-
-=over 4
-
-=item LINES
-
-=item PAGE
-
-=item PAGE_LEN
-
-=item LINES_LEFT
-
-=item TOP_NAME
-
-=item TOP_GV
-
-=item FMT_NAME
-
-=item FMT_GV
-
-=item BOTTOM_NAME
-
-=item BOTTOM_GV
-
-=item SUBPROCESS
-
-=item IoTYPE
-
-=item IoFLAGS
-
-=item IsSTD
-
-Takes one arguments ( 'stdin' | 'stdout' | 'stderr' ) and returns true
-if the IoIFP of the object is equal to the handle whose name was
-passed as argument ( i.e. $io->IsSTD('stderr') is true if
-IoIFP($io) == PerlIO_stdin() ).
-
-=back
-
-=head2 B::AV Methods
-
-=over 4
-
-=item FILL
-
-=item MAX
-
-=item OFF
-
-=item ARRAY
-
-=item ARRAYelt
-
-Like C<ARRAY>, but takes an index as an argument to get only one element,
-rather than a list of all of them.
-
-=item AvFLAGS
-
-=back
-
-=head2 B::CV Methods
-
-=over 4
-
-=item STASH
-
-=item START
-
-=item ROOT
-
-=item GV
-
-=item FILE
-
-=item DEPTH
-
-=item PADLIST
-
-=item OUTSIDE
-
-=item OUTSIDE_SEQ
-
-=item XSUB
-
-=item XSUBANY
-
-For constant subroutines, returns the constant SV returned by the subroutine.
-
-=item CvFLAGS
-
-=item const_sv
-
-=back
-
-=head2 B::HV Methods
-
-=over 4
-
-=item FILL
-
-=item MAX
-
-=item KEYS
-
-=item RITER
-
-=item NAME
-
-=item PMROOT
-
-=item ARRAY
-
-=back
-
-=head2 OP-RELATED CLASSES
-
-C<B::OP>, C<B::UNOP>, C<B::BINOP>, C<B::LOGOP>, C<B::LISTOP>, C<B::PMOP>,
-C<B::SVOP>, C<B::PADOP>, C<B::PVOP>, C<B::LOOP>, C<B::COP>.
-
-These classes correspond in the obvious way to the underlying C
-structures of similar names. The inheritance hierarchy mimics the
-underlying C "inheritance":
-
- B::OP
- |
- +---------------+--------+--------+
- | | | |
- B::UNOP B::SVOP B::PADOP B::COP
- ,' `-.
- / `--.
- B::BINOP B::LOGOP
- |
- |
- B::LISTOP
- ,' `.
- / \
- B::LOOP B::PMOP
-
-Access methods correspond to the underlying C structre field names,
-with the leading "class indication" prefix (C<"op_">) removed.
-
-=head2 B::OP Methods
-
-These methods get the values of similarly named fields within the OP
-data structure. See top of C<op.h> for more info.
-
-=over 4
-
-=item next
-
-=item sibling
-
-=item name
-
-This returns the op name as a string (e.g. "add", "rv2av").
-
-=item ppaddr
-
-This returns the function name as a string (e.g. "PL_ppaddr[OP_ADD]",
-"PL_ppaddr[OP_RV2AV]").
-
-=item desc
-
-This returns the op description from the global C PL_op_desc array
-(e.g. "addition" "array deref").
-
-=item targ
-
-=item type
-
-=item opt
-
-=item static
-
-=item flags
-
-=item private
-
-=item spare
-
-=back
-
-=head2 B::UNOP METHOD
-
-=over 4
-
-=item first
-
-=back
-
-=head2 B::BINOP METHOD
-
-=over 4
-
-=item last
-
-=back
-
-=head2 B::LOGOP METHOD
-
-=over 4
-
-=item other
-
-=back
-
-=head2 B::LISTOP METHOD
-
-=over 4
-
-=item children
-
-=back
-
-=head2 B::PMOP Methods
-
-=over 4
-
-=item pmreplroot
-
-=item pmreplstart
-
-=item pmnext
-
-=item pmregexp
-
-=item pmflags
-
-=item pmdynflags
-
-=item pmpermflags
-
-=item precomp
-
-=item pmoffset
-
-Only when perl was compiled with ithreads.
-
-=back
-
-=head2 B::SVOP METHOD
-
-=over 4
-
-=item sv
-
-=item gv
-
-=back
-
-=head2 B::PADOP METHOD
-
-=over 4
-
-=item padix
-
-=back
-
-=head2 B::PVOP METHOD
-
-=over 4
-
-=item pv
-
-=back
-
-=head2 B::LOOP Methods
-
-=over 4
-
-=item redoop
-
-=item nextop
-
-=item lastop
-
-=back
-
-=head2 B::COP Methods
-
-=over 4
-
-=item label
-
-=item stash
-
-=item stashpv
-
-=item file
-
-=item cop_seq
-
-=item arybase
-
-=item line
-
-=item warnings
-
-=item io
-
-=back
-
-
-=head1 AUTHOR
-
-Malcolm Beattie, C<mbeattie@sable.ox.ac.uk>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/B/Asmdata.pm b/Master/tlpkg/tlperl/lib/B/Asmdata.pm
deleted file mode 100644
index 9e41d6dd757..00000000000
--- a/Master/tlpkg/tlperl/lib/B/Asmdata.pm
+++ /dev/null
@@ -1,250 +0,0 @@
-# -#- buffer-read-only: t -#-
-#
-# Copyright (c) 1996-1999 Malcolm Beattie
-#
-# You may distribute under the terms of either the GNU General Public
-# License or the Artistic License, as specified in the README file.
-#
-#
-#
-# This file is autogenerated from bytecode.pl. Changes made here will be lost.
-#
-package B::Asmdata;
-
-our $VERSION = '1.01';
-
-use Exporter;
-@ISA = qw(Exporter);
-@EXPORT_OK = qw(%insn_data @insn_name @optype @specialsv_name);
-our(%insn_data, @insn_name, @optype, @specialsv_name);
-
-@optype = qw(OP UNOP BINOP LOGOP LISTOP PMOP SVOP PADOP PVOP LOOP COP);
-@specialsv_name = qw(Nullsv &PL_sv_undef &PL_sv_yes &PL_sv_no pWARN_ALL pWARN_NONE);
-
-# XXX insn_data is initialised this way because with a large
-# %insn_data = (foo => [...], bar => [...], ...) initialiser
-# I get a hard-to-track-down stack underflow and segfault.
-$insn_data{comment} = [35, \&PUT_comment_t, "GET_comment_t"];
-$insn_data{nop} = [10, \&PUT_none, "GET_none"];
-$insn_data{ret} = [0, \&PUT_none, "GET_none"];
-$insn_data{ldsv} = [1, \&PUT_svindex, "GET_svindex"];
-$insn_data{ldop} = [2, \&PUT_opindex, "GET_opindex"];
-$insn_data{stsv} = [3, \&PUT_U32, "GET_U32"];
-$insn_data{stop} = [4, \&PUT_U32, "GET_U32"];
-$insn_data{stpv} = [5, \&PUT_U32, "GET_U32"];
-$insn_data{ldspecsv} = [6, \&PUT_U8, "GET_U8"];
-$insn_data{ldspecsvx} = [7, \&PUT_U8, "GET_U8"];
-$insn_data{newsv} = [8, \&PUT_U8, "GET_U8"];
-$insn_data{newsvx} = [9, \&PUT_U32, "GET_U32"];
-$insn_data{newop} = [11, \&PUT_U8, "GET_U8"];
-$insn_data{newopx} = [12, \&PUT_U16, "GET_U16"];
-$insn_data{newopn} = [13, \&PUT_U8, "GET_U8"];
-$insn_data{newpv} = [14, \&PUT_PV, "GET_PV"];
-$insn_data{pv_cur} = [15, \&PUT_PADOFFSET, "GET_PADOFFSET"];
-$insn_data{pv_free} = [16, \&PUT_none, "GET_none"];
-$insn_data{sv_upgrade} = [17, \&PUT_U8, "GET_U8"];
-$insn_data{sv_refcnt} = [18, \&PUT_U32, "GET_U32"];
-$insn_data{sv_refcnt_add} = [19, \&PUT_I32, "GET_I32"];
-$insn_data{sv_flags} = [20, \&PUT_U32, "GET_U32"];
-$insn_data{xrv} = [21, \&PUT_svindex, "GET_svindex"];
-$insn_data{xpv} = [22, \&PUT_none, "GET_none"];
-$insn_data{xpv_cur} = [23, \&PUT_PADOFFSET, "GET_PADOFFSET"];
-$insn_data{xpv_len} = [24, \&PUT_PADOFFSET, "GET_PADOFFSET"];
-$insn_data{xiv} = [25, \&PUT_IV, "GET_IV"];
-$insn_data{xnv} = [26, \&PUT_NV, "GET_NV"];
-$insn_data{xlv_targoff} = [27, \&PUT_PADOFFSET, "GET_PADOFFSET"];
-$insn_data{xlv_targlen} = [28, \&PUT_PADOFFSET, "GET_PADOFFSET"];
-$insn_data{xlv_targ} = [29, \&PUT_svindex, "GET_svindex"];
-$insn_data{xlv_type} = [30, \&PUT_U8, "GET_U8"];
-$insn_data{xbm_useful} = [31, \&PUT_I32, "GET_I32"];
-$insn_data{xbm_previous} = [32, \&PUT_U16, "GET_U16"];
-$insn_data{xbm_rare} = [33, \&PUT_U8, "GET_U8"];
-$insn_data{xfm_lines} = [34, \&PUT_IV, "GET_IV"];
-$insn_data{xio_lines} = [36, \&PUT_IV, "GET_IV"];
-$insn_data{xio_page} = [37, \&PUT_IV, "GET_IV"];
-$insn_data{xio_page_len} = [38, \&PUT_IV, "GET_IV"];
-$insn_data{xio_lines_left} = [39, \&PUT_IV, "GET_IV"];
-$insn_data{xio_top_name} = [40, \&PUT_pvindex, "GET_pvindex"];
-$insn_data{xio_top_gv} = [41, \&PUT_svindex, "GET_svindex"];
-$insn_data{xio_fmt_name} = [42, \&PUT_pvindex, "GET_pvindex"];
-$insn_data{xio_fmt_gv} = [43, \&PUT_svindex, "GET_svindex"];
-$insn_data{xio_bottom_name} = [44, \&PUT_pvindex, "GET_pvindex"];
-$insn_data{xio_bottom_gv} = [45, \&PUT_svindex, "GET_svindex"];
-$insn_data{xio_subprocess} = [46, \&PUT_U16, "GET_U16"];
-$insn_data{xio_type} = [47, \&PUT_U8, "GET_U8"];
-$insn_data{xio_flags} = [48, \&PUT_U8, "GET_U8"];
-$insn_data{xcv_xsubany} = [49, \&PUT_svindex, "GET_svindex"];
-$insn_data{xcv_stash} = [50, \&PUT_svindex, "GET_svindex"];
-$insn_data{xcv_start} = [51, \&PUT_opindex, "GET_opindex"];
-$insn_data{xcv_root} = [52, \&PUT_opindex, "GET_opindex"];
-$insn_data{xcv_gv} = [53, \&PUT_svindex, "GET_svindex"];
-$insn_data{xcv_file} = [54, \&PUT_pvindex, "GET_pvindex"];
-$insn_data{xcv_depth} = [55, \&PUT_long, "GET_long"];
-$insn_data{xcv_padlist} = [56, \&PUT_svindex, "GET_svindex"];
-$insn_data{xcv_outside} = [57, \&PUT_svindex, "GET_svindex"];
-$insn_data{xcv_outside_seq} = [58, \&PUT_U32, "GET_U32"];
-$insn_data{xcv_flags} = [59, \&PUT_U16, "GET_U16"];
-$insn_data{av_extend} = [60, \&PUT_PADOFFSET, "GET_PADOFFSET"];
-$insn_data{av_pushx} = [61, \&PUT_svindex, "GET_svindex"];
-$insn_data{av_push} = [62, \&PUT_svindex, "GET_svindex"];
-$insn_data{xav_fill} = [63, \&PUT_PADOFFSET, "GET_PADOFFSET"];
-$insn_data{xav_max} = [64, \&PUT_PADOFFSET, "GET_PADOFFSET"];
-$insn_data{xav_flags} = [65, \&PUT_U8, "GET_U8"];
-$insn_data{xhv_riter} = [66, \&PUT_I32, "GET_I32"];
-$insn_data{xhv_name} = [67, \&PUT_pvindex, "GET_pvindex"];
-$insn_data{xhv_pmroot} = [68, \&PUT_opindex, "GET_opindex"];
-$insn_data{hv_store} = [69, \&PUT_svindex, "GET_svindex"];
-$insn_data{sv_magic} = [70, \&PUT_U8, "GET_U8"];
-$insn_data{mg_obj} = [71, \&PUT_svindex, "GET_svindex"];
-$insn_data{mg_private} = [72, \&PUT_U16, "GET_U16"];
-$insn_data{mg_flags} = [73, \&PUT_U8, "GET_U8"];
-$insn_data{mg_name} = [74, \&PUT_pvcontents, "GET_pvcontents"];
-$insn_data{mg_namex} = [75, \&PUT_svindex, "GET_svindex"];
-$insn_data{xmg_stash} = [76, \&PUT_svindex, "GET_svindex"];
-$insn_data{gv_fetchpv} = [77, \&PUT_strconst, "GET_strconst"];
-$insn_data{gv_fetchpvx} = [78, \&PUT_strconst, "GET_strconst"];
-$insn_data{gv_stashpv} = [79, \&PUT_strconst, "GET_strconst"];
-$insn_data{gv_stashpvx} = [80, \&PUT_strconst, "GET_strconst"];
-$insn_data{gp_sv} = [81, \&PUT_svindex, "GET_svindex"];
-$insn_data{gp_refcnt} = [82, \&PUT_U32, "GET_U32"];
-$insn_data{gp_refcnt_add} = [83, \&PUT_I32, "GET_I32"];
-$insn_data{gp_av} = [84, \&PUT_svindex, "GET_svindex"];
-$insn_data{gp_hv} = [85, \&PUT_svindex, "GET_svindex"];
-$insn_data{gp_cv} = [86, \&PUT_svindex, "GET_svindex"];
-$insn_data{gp_file} = [87, \&PUT_pvindex, "GET_pvindex"];
-$insn_data{gp_io} = [88, \&PUT_svindex, "GET_svindex"];
-$insn_data{gp_form} = [89, \&PUT_svindex, "GET_svindex"];
-$insn_data{gp_cvgen} = [90, \&PUT_U32, "GET_U32"];
-$insn_data{gp_line} = [91, \&PUT_U32, "GET_U32"];
-$insn_data{gp_share} = [92, \&PUT_svindex, "GET_svindex"];
-$insn_data{xgv_flags} = [93, \&PUT_U8, "GET_U8"];
-$insn_data{op_next} = [94, \&PUT_opindex, "GET_opindex"];
-$insn_data{op_sibling} = [95, \&PUT_opindex, "GET_opindex"];
-$insn_data{op_ppaddr} = [96, \&PUT_strconst, "GET_strconst"];
-$insn_data{op_targ} = [97, \&PUT_PADOFFSET, "GET_PADOFFSET"];
-$insn_data{op_type} = [98, \&PUT_U16, "GET_U16"];
-$insn_data{op_seq} = [99, \&PUT_U16, "GET_U16"];
-$insn_data{op_flags} = [100, \&PUT_U8, "GET_U8"];
-$insn_data{op_private} = [101, \&PUT_U8, "GET_U8"];
-$insn_data{op_first} = [102, \&PUT_opindex, "GET_opindex"];
-$insn_data{op_last} = [103, \&PUT_opindex, "GET_opindex"];
-$insn_data{op_other} = [104, \&PUT_opindex, "GET_opindex"];
-$insn_data{op_pmreplroot} = [105, \&PUT_opindex, "GET_opindex"];
-$insn_data{op_pmreplstart} = [106, \&PUT_opindex, "GET_opindex"];
-$insn_data{op_pmnext} = [107, \&PUT_opindex, "GET_opindex"];
-$insn_data{op_pmstashpv} = [108, \&PUT_pvindex, "GET_pvindex"];
-$insn_data{op_pmreplrootpo} = [109, \&PUT_PADOFFSET, "GET_PADOFFSET"];
-$insn_data{op_pmstash} = [110, \&PUT_svindex, "GET_svindex"];
-$insn_data{op_pmreplrootgv} = [111, \&PUT_svindex, "GET_svindex"];
-$insn_data{pregcomp} = [112, \&PUT_pvcontents, "GET_pvcontents"];
-$insn_data{op_pmflags} = [113, \&PUT_U16, "GET_U16"];
-$insn_data{op_pmpermflags} = [114, \&PUT_U16, "GET_U16"];
-$insn_data{op_pmdynflags} = [115, \&PUT_U8, "GET_U8"];
-$insn_data{op_sv} = [116, \&PUT_svindex, "GET_svindex"];
-$insn_data{op_padix} = [117, \&PUT_PADOFFSET, "GET_PADOFFSET"];
-$insn_data{op_pv} = [118, \&PUT_pvcontents, "GET_pvcontents"];
-$insn_data{op_pv_tr} = [119, \&PUT_op_tr_array, "GET_op_tr_array"];
-$insn_data{op_redoop} = [120, \&PUT_opindex, "GET_opindex"];
-$insn_data{op_nextop} = [121, \&PUT_opindex, "GET_opindex"];
-$insn_data{op_lastop} = [122, \&PUT_opindex, "GET_opindex"];
-$insn_data{cop_label} = [123, \&PUT_pvindex, "GET_pvindex"];
-$insn_data{cop_stashpv} = [124, \&PUT_pvindex, "GET_pvindex"];
-$insn_data{cop_file} = [125, \&PUT_pvindex, "GET_pvindex"];
-$insn_data{cop_stash} = [126, \&PUT_svindex, "GET_svindex"];
-$insn_data{cop_filegv} = [127, \&PUT_svindex, "GET_svindex"];
-$insn_data{cop_seq} = [128, \&PUT_U32, "GET_U32"];
-$insn_data{cop_arybase} = [129, \&PUT_I32, "GET_I32"];
-$insn_data{cop_line} = [130, \&PUT_U32, "GET_U32"];
-$insn_data{cop_io} = [131, \&PUT_svindex, "GET_svindex"];
-$insn_data{cop_warnings} = [132, \&PUT_svindex, "GET_svindex"];
-$insn_data{main_start} = [133, \&PUT_opindex, "GET_opindex"];
-$insn_data{main_root} = [134, \&PUT_opindex, "GET_opindex"];
-$insn_data{main_cv} = [135, \&PUT_svindex, "GET_svindex"];
-$insn_data{curpad} = [136, \&PUT_svindex, "GET_svindex"];
-$insn_data{push_begin} = [137, \&PUT_svindex, "GET_svindex"];
-$insn_data{push_init} = [138, \&PUT_svindex, "GET_svindex"];
-$insn_data{push_end} = [139, \&PUT_svindex, "GET_svindex"];
-$insn_data{curstash} = [140, \&PUT_svindex, "GET_svindex"];
-$insn_data{defstash} = [141, \&PUT_svindex, "GET_svindex"];
-$insn_data{data} = [142, \&PUT_U8, "GET_U8"];
-$insn_data{incav} = [143, \&PUT_svindex, "GET_svindex"];
-$insn_data{load_glob} = [144, \&PUT_svindex, "GET_svindex"];
-$insn_data{regex_padav} = [145, \&PUT_svindex, "GET_svindex"];
-$insn_data{dowarn} = [146, \&PUT_U8, "GET_U8"];
-$insn_data{comppad_name} = [147, \&PUT_svindex, "GET_svindex"];
-$insn_data{xgv_stash} = [148, \&PUT_svindex, "GET_svindex"];
-$insn_data{signal} = [149, \&PUT_strconst, "GET_strconst"];
-$insn_data{formfeed} = [150, \&PUT_svindex, "GET_svindex"];
-
-my ($insn_name, $insn_data);
-while (($insn_name, $insn_data) = each %insn_data) {
- $insn_name[$insn_data->[0]] = $insn_name;
-}
-# Fill in any gaps
-@insn_name = map($_ || "unused", @insn_name);
-
-1;
-
-__END__
-
-=head1 NAME
-
-B::Asmdata - Autogenerated data about Perl ops, used to generate bytecode
-
-=head1 SYNOPSIS
-
- use B::Asmdata qw(%insn_data @insn_name @optype @specialsv_name);
-
-=head1 DESCRIPTION
-
-Provides information about Perl ops in order to generate bytecode via
-a bunch of exported variables. Its mostly used by B::Assembler and
-B::Disassembler.
-
-=over 4
-
-=item %insn_data
-
- my($bytecode_num, $put_sub, $get_meth) = @$insn_data{$op_name};
-
-For a given $op_name (for example, 'cop_label', 'sv_flags', etc...)
-you get an array ref containing the bytecode number of the op, a
-reference to the subroutine used to 'PUT', and the name of the method
-used to 'GET'.
-
-=for _private
-Add more detail about what $put_sub and $get_meth are and how to use them.
-
-=item @insn_name
-
- my $op_name = $insn_name[$bytecode_num];
-
-A simple mapping of the bytecode number to the name of the op.
-Suitable for using with %insn_data like so:
-
- my $op_info = $insn_data{$insn_name[$bytecode_num]};
-
-=item @optype
-
- my $op_type = $optype[$op_type_num];
-
-A simple mapping of the op type number to its type (like 'COP' or 'BINOP').
-
-=item @specialsv_name
-
- my $sv_name = $specialsv_name[$sv_index];
-
-Certain SV types are considered 'special'. They're represented by
-B::SPECIAL and are referred to by a number from the specialsv_list.
-This array maps that number back to the name of the SV (like 'Nullsv'
-or '&PL_sv_undef').
-
-=back
-
-=head1 AUTHOR
-
-Malcolm Beattie, C<mbeattie@sable.ox.ac.uk>
-
-=cut
-
-# ex: set ro:
diff --git a/Master/tlpkg/tlperl/lib/B/Assembler.pm b/Master/tlpkg/tlperl/lib/B/Assembler.pm
deleted file mode 100644
index f312273ce36..00000000000
--- a/Master/tlpkg/tlperl/lib/B/Assembler.pm
+++ /dev/null
@@ -1,328 +0,0 @@
-# Assembler.pm
-#
-# Copyright (c) 1996 Malcolm Beattie
-#
-# You may distribute under the terms of either the GNU General Public
-# License or the Artistic License, as specified in the README file.
-
-package B::Assembler;
-use Exporter;
-use B qw(ppname);
-use B::Asmdata qw(%insn_data @insn_name);
-use Config qw(%Config);
-require ByteLoader; # we just need its $VERSION
-
-no warnings; # XXX
-
-@ISA = qw(Exporter);
-@EXPORT_OK = qw(assemble_fh newasm endasm assemble asm);
-$VERSION = 0.07;
-
-use strict;
-my %opnumber;
-my ($i, $opname);
-for ($i = 0; defined($opname = ppname($i)); $i++) {
- $opnumber{$opname} = $i;
-}
-
-my($linenum, $errors, $out); # global state, set up by newasm
-
-sub error {
- my $str = shift;
- warn "$linenum: $str\n";
- $errors++;
-}
-
-my $debug = 0;
-sub debug { $debug = shift }
-
-sub limcheck($$$$){
- my( $val, $lo, $hi, $loc ) = @_;
- if( $val < $lo || $hi < $val ){
- error "argument for $loc outside [$lo, $hi]: $val";
- $val = $hi;
- }
- return $val;
-}
-
-#
-# First define all the data conversion subs to which Asmdata will refer
-#
-
-sub B::Asmdata::PUT_U8 {
- my $arg = shift;
- my $c = uncstring($arg);
- if (defined($c)) {
- if (length($c) != 1) {
- error "argument for U8 is too long: $c";
- $c = substr($c, 0, 1);
- }
- } else {
- $arg = limcheck( $arg, 0, 0xff, 'U8' );
- $c = chr($arg);
- }
- return $c;
-}
-
-sub B::Asmdata::PUT_U16 {
- my $arg = limcheck( $_[0], 0, 0xffff, 'U16' );
- pack("S", $arg);
-}
-sub B::Asmdata::PUT_U32 {
- my $arg = limcheck( $_[0], 0, 0xffffffff, 'U32' );
- pack("L", $arg);
-}
-sub B::Asmdata::PUT_I32 {
- my $arg = limcheck( $_[0], -0x80000000, 0x7fffffff, 'I32' );
- pack("l", $arg);
-}
-sub B::Asmdata::PUT_NV { sprintf("%s\0", $_[0]) } # "%lf" looses precision and pack('d',...)
- # may not even be portable between compilers
-sub B::Asmdata::PUT_objindex { # could allow names here
- my $arg = limcheck( $_[0], 0, 0xffffffff, '*index' );
- pack("L", $arg);
-}
-sub B::Asmdata::PUT_svindex { &B::Asmdata::PUT_objindex }
-sub B::Asmdata::PUT_opindex { &B::Asmdata::PUT_objindex }
-sub B::Asmdata::PUT_pvindex { &B::Asmdata::PUT_objindex }
-
-sub B::Asmdata::PUT_strconst {
- my $arg = shift;
- my $str = uncstring($arg);
- if (!defined($str)) {
- error "bad string constant: $arg";
- $str = '';
- }
- if ($str =~ s/\0//g) {
- error "string constant argument contains NUL: $arg";
- $str = '';
- }
- return $str . "\0";
-}
-
-sub B::Asmdata::PUT_pvcontents {
- my $arg = shift;
- error "extraneous argument: $arg" if defined $arg;
- return "";
-}
-sub B::Asmdata::PUT_PV {
- my $arg = shift;
- my $str = uncstring($arg);
- if( ! defined($str) ){
- error "bad string argument: $arg";
- $str = '';
- }
- return pack("L", length($str)) . $str;
-}
-sub B::Asmdata::PUT_comment_t {
- my $arg = shift;
- $arg = uncstring($arg);
- error "bad string argument: $arg" unless defined($arg);
- if ($arg =~ s/\n//g) {
- error "comment argument contains linefeed: $arg";
- }
- return $arg . "\n";
-}
-sub B::Asmdata::PUT_double { sprintf("%s\0", $_[0]) } # see PUT_NV above
-sub B::Asmdata::PUT_none {
- my $arg = shift;
- error "extraneous argument: $arg" if defined $arg;
- return "";
-}
-sub B::Asmdata::PUT_op_tr_array {
- my @ary = split /\s*,\s*/, shift;
- return pack "S*", @ary;
-}
-
-sub B::Asmdata::PUT_IV64 {
- return pack "Q", shift;
-}
-
-sub B::Asmdata::PUT_IV {
- $Config{ivsize} == 4 ? &B::Asmdata::PUT_I32 : &B::Asmdata::PUT_IV64;
-}
-
-sub B::Asmdata::PUT_PADOFFSET {
- $Config{ptrsize} == 8 ? &B::Asmdata::PUT_IV64 : &B::Asmdata::PUT_U32;
-}
-
-sub B::Asmdata::PUT_long {
- $Config{longsize} == 8 ? &B::Asmdata::PUT_IV64 : &B::Asmdata::PUT_U32;
-}
-
-my %unesc = (n => "\n", r => "\r", t => "\t", a => "\a",
- b => "\b", f => "\f", v => "\013");
-
-sub uncstring {
- my $s = shift;
- $s =~ s/^"// and $s =~ s/"$// or return undef;
- $s =~ s/\\(\d\d\d|.)/length($1) == 3 ? chr(oct($1)) : ($unesc{$1}||$1)/eg;
- return $s;
-}
-
-sub strip_comments {
- my $stmt = shift;
- # Comments only allowed in instructions which don't take string arguments
- # Treat string as a single line so .* eats \n characters.
- $stmt =~ s{
- ^\s* # Ignore leading whitespace
- (
- [^"]* # A double quote '"' indicates a string argument. If we
- # find a double quote, the match fails and we strip nothing.
- )
- \s*\# # Any amount of whitespace plus the comment marker...
- .*$ # ...which carries on to end-of-string.
- }{$1}sx; # Keep only the instruction and optional argument.
- return $stmt;
-}
-
-# create the ByteCode header: magic, archname, ByteLoader $VERSION, ivsize,
-# ptrsize, byteorder
-# nvtype is irrelevant (floats are stored as strings)
-# byteorder is strconst not U32 because of varying size issues
-
-sub gen_header {
- my $header = "";
-
- $header .= B::Asmdata::PUT_U32(0x43424c50); # 'PLBC'
- $header .= B::Asmdata::PUT_strconst('"' . $Config{archname}. '"');
- $header .= B::Asmdata::PUT_strconst(qq["$ByteLoader::VERSION"]);
- $header .= B::Asmdata::PUT_U32($Config{ivsize});
- $header .= B::Asmdata::PUT_U32($Config{ptrsize});
- $header;
-}
-
-sub parse_statement {
- my $stmt = shift;
- my ($insn, $arg) = $stmt =~ m{
- ^\s* # allow (but ignore) leading whitespace
- (.*?) # Instruction continues up until...
- (?: # ...an optional whitespace+argument group
- \s+ # first whitespace.
- (.*) # The argument is all the rest (newlines included).
- )?$ # anchor at end-of-line
- }sx;
- if (defined($arg)) {
- if ($arg =~ s/^0x(?=[0-9a-fA-F]+$)//) {
- $arg = hex($arg);
- } elsif ($arg =~ s/^0(?=[0-7]+$)//) {
- $arg = oct($arg);
- } elsif ($arg =~ /^pp_/) {
- $arg =~ s/\s*$//; # strip trailing whitespace
- my $opnum = $opnumber{$arg};
- if (defined($opnum)) {
- $arg = $opnum;
- } else {
- error qq(No such op type "$arg");
- $arg = 0;
- }
- }
- }
- return ($insn, $arg);
-}
-
-sub assemble_insn {
- my ($insn, $arg) = @_;
- my $data = $insn_data{$insn};
- if (defined($data)) {
- my ($bytecode, $putsub) = @{$data}[0, 1];
- my $argcode = &$putsub($arg);
- return chr($bytecode).$argcode;
- } else {
- error qq(no such instruction "$insn");
- return "";
- }
-}
-
-sub assemble_fh {
- my ($fh, $out) = @_;
- my $line;
- my $asm = newasm($out);
- while ($line = <$fh>) {
- assemble($line);
- }
- endasm();
-}
-
-sub newasm {
- my($outsub) = @_;
-
- die "Invalid printing routine for B::Assembler\n" unless ref $outsub eq 'CODE';
- die <<EOD if ref $out;
-Can't have multiple byteassembly sessions at once!
- (perhaps you forgot an endasm()?)
-EOD
-
- $linenum = $errors = 0;
- $out = $outsub;
-
- $out->(gen_header());
-}
-
-sub endasm {
- if ($errors) {
- die "There were $errors assembly errors\n";
- }
- $linenum = $errors = $out = 0;
-}
-
-sub assemble {
- my($line) = @_;
- my ($insn, $arg);
- $linenum++;
- chomp $line;
- if ($debug) {
- my $quotedline = $line;
- $quotedline =~ s/\\/\\\\/g;
- $quotedline =~ s/"/\\"/g;
- $out->(assemble_insn("comment", qq("$quotedline")));
- }
- if( $line = strip_comments($line) ){
- ($insn, $arg) = parse_statement($line);
- $out->(assemble_insn($insn, $arg));
- if ($debug) {
- $out->(assemble_insn("nop", undef));
- }
- }
-}
-
-### temporary workaround
-
-sub asm {
- return if $_[0] =~ /\s*\W/;
- if (defined $_[1]) {
- return if $_[1] eq "0" and
- $_[0] !~ /^(?:newsvx?|av_pushx?|av_extend|xav_flags)$/;
- return if $_[1] eq "1" and $_[0] =~ /^(?:sv_refcnt)$/;
- }
- assemble "@_";
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-B::Assembler - Assemble Perl bytecode
-
-=head1 SYNOPSIS
-
- use B::Assembler qw(newasm endasm assemble);
- newasm(\&printsub); # sets up for assembly
- assemble($buf); # assembles one line
- endasm(); # closes down
-
- use B::Assembler qw(assemble_fh);
- assemble_fh($fh, \&printsub); # assemble everything in $fh
-
-=head1 DESCRIPTION
-
-See F<ext/B/B/Assembler.pm>.
-
-=head1 AUTHORS
-
-Malcolm Beattie, C<mbeattie@sable.ox.ac.uk>
-Per-statement interface by Benjamin Stuhl, C<sho_pi@hotmail.com>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/B/Bblock.pm b/Master/tlpkg/tlperl/lib/B/Bblock.pm
deleted file mode 100644
index 9566d125aaa..00000000000
--- a/Master/tlpkg/tlperl/lib/B/Bblock.pm
+++ /dev/null
@@ -1,224 +0,0 @@
-package B::Bblock;
-
-our $VERSION = '1.02_01';
-
-use Exporter ();
-@ISA = "Exporter";
-@EXPORT_OK = qw(find_leaders);
-
-use B qw(peekop walkoptree walkoptree_exec
- main_root main_start svref_2object
- OPf_SPECIAL OPf_STACKED );
-
-use B::Concise qw(concise_cv concise_main set_style_standard);
-use strict;
-
-my $bblock;
-my @bblock_ends;
-
-sub mark_leader {
- my $op = shift;
- if ($$op) {
- $bblock->{$$op} = $op;
- }
-}
-
-sub remove_sortblock{
- foreach (keys %$bblock){
- my $leader=$$bblock{$_};
- delete $$bblock{$_} if( $leader == 0);
- }
-}
-sub find_leaders {
- my ($root, $start) = @_;
- $bblock = {};
- mark_leader($start) if ( ref $start ne "B::NULL" );
- walkoptree($root, "mark_if_leader") if ((ref $root) ne "B::NULL") ;
- remove_sortblock();
- return $bblock;
-}
-
-# Debugging
-sub walk_bblocks {
- my ($root, $start) = @_;
- my ($op, $lastop, $leader, $bb);
- $bblock = {};
- mark_leader($start);
- walkoptree($root, "mark_if_leader");
- my @leaders = values %$bblock;
- while ($leader = shift @leaders) {
- $lastop = $leader;
- $op = $leader->next;
- while ($$op && !exists($bblock->{$$op})) {
- $bblock->{$$op} = $leader;
- $lastop = $op;
- $op = $op->next;
- }
- push(@bblock_ends, [$leader, $lastop]);
- }
- foreach $bb (@bblock_ends) {
- ($leader, $lastop) = @$bb;
- printf "%s .. %s\n", peekop($leader), peekop($lastop);
- for ($op = $leader; $$op != $$lastop; $op = $op->next) {
- printf " %s\n", peekop($op);
- }
- printf " %s\n", peekop($lastop);
- }
-}
-
-sub walk_bblocks_obj {
- my $cvref = shift;
- my $cv = svref_2object($cvref);
- walk_bblocks($cv->ROOT, $cv->START);
-}
-
-sub B::OP::mark_if_leader {}
-
-sub B::COP::mark_if_leader {
- my $op = shift;
- if ($op->label) {
- mark_leader($op);
- }
-}
-
-sub B::LOOP::mark_if_leader {
- my $op = shift;
- mark_leader($op->next);
- mark_leader($op->nextop);
- mark_leader($op->redoop);
- mark_leader($op->lastop->next);
-}
-
-sub B::LOGOP::mark_if_leader {
- my $op = shift;
- my $opname = $op->name;
- mark_leader($op->next);
- if ($opname eq "entertry") {
- mark_leader($op->other->next);
- } else {
- mark_leader($op->other);
- }
-}
-
-sub B::LISTOP::mark_if_leader {
- my $op = shift;
- my $first=$op->first;
- $first=$first->next while ($first->name eq "null");
- mark_leader($op->first) unless (exists( $bblock->{$$first}));
- mark_leader($op->next);
- if ($op->name eq "sort" and $op->flags & OPf_SPECIAL
- and $op->flags & OPf_STACKED){
- my $root=$op->first->sibling->first;
- my $leader=$root->first;
- $bblock->{$$leader} = 0;
- }
-}
-
-sub B::PMOP::mark_if_leader {
- my $op = shift;
- if ($op->name ne "pushre") {
- my $replroot = $op->pmreplroot;
- if ($$replroot) {
- mark_leader($replroot);
- mark_leader($op->next);
- mark_leader($op->pmreplstart);
- }
- }
-}
-
-# PMOP stuff omitted
-
-sub compile {
- my @options = @_;
- B::clearsym();
- if (@options) {
- return sub {
- my $objname;
- foreach $objname (@options) {
- $objname = "main::$objname" unless $objname =~ /::/;
- eval "walk_bblocks_obj(\\&$objname)";
- die "walk_bblocks_obj(\\&$objname) failed: $@" if $@;
- print "-------\n";
- set_style_standard("terse");
- eval "concise_cv('exec', \\&$objname)";
- die "concise_cv('exec', \\&$objname) failed: $@" if $@;
- }
- }
- } else {
- return sub {
- walk_bblocks(main_root, main_start);
- print "-------\n";
- set_style_standard("terse");
- concise_main("exec");
- };
- }
-}
-
-# Basic block leaders:
-# Any COP (pp_nextstate) with a non-NULL label
-# [The op after a pp_enter] Omit
-# [The op after a pp_entersub. Don't count this one.]
-# The ops pointed at by nextop, redoop and lastop->op_next of a LOOP
-# The ops pointed at by op_next and op_other of a LOGOP, except
-# for pp_entertry which has op_next and op_other->op_next
-# The op pointed at by op_pmreplstart of a PMOP
-# The op pointed at by op_other->op_pmreplstart of pp_substcont?
-# [The op after a pp_return] Omit
-
-1;
-
-__END__
-
-=head1 NAME
-
-B::Bblock - Walk basic blocks
-
-=head1 SYNOPSIS
-
- # External interface
- perl -MO=Bblock[,OPTIONS] foo.pl
-
- # Programmatic API
- use B::Bblock qw(find_leaders);
- my $leaders = find_leaders($root_op, $start_op);
-
-=head1 DESCRIPTION
-
-This module is used by the B::CC back end. It walks "basic blocks".
-A basic block is a series of operations which is known to execute from
-start to finish, with no possibility of branching or halting.
-
-It can be used either stand alone or from inside another program.
-
-=for _private
-Somebody who understands the stand-alone options document them, please.
-
-=head2 Functions
-
-=over 4
-
-=item B<find_leaders>
-
- my $leaders = find_leaders($root_op, $start_op);
-
-Given the root of the op tree and an op from which to start
-processing, it will return a hash ref representing all the ops which
-start a block.
-
-=for _private
-The above description may be somewhat wrong.
-
-The values of %$leaders are the op objects themselves. Keys are $$op
-addresses.
-
-=for _private
-Above cribbed from B::CC's comments. What's a $$op address?
-
-=back
-
-
-=head1 AUTHOR
-
-Malcolm Beattie, C<mbeattie@sable.ox.ac.uk>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/B/Bytecode.pm b/Master/tlpkg/tlperl/lib/B/Bytecode.pm
deleted file mode 100644
index 250569ae57b..00000000000
--- a/Master/tlpkg/tlperl/lib/B/Bytecode.pm
+++ /dev/null
@@ -1,889 +0,0 @@
-# B::Bytecode.pm
-# Copyright (c) 2003 Enache Adrian. All rights reserved.
-# This module is free software; you can redistribute and/or modify
-# it under the same terms as Perl itself.
-
-# Based on the original Bytecode.pm module written by Malcolm Beattie.
-
-package B::Bytecode;
-
-our $VERSION = '1.01_01';
-
-use strict;
-use Config;
-use B qw(class main_cv main_root main_start cstring comppadlist
- defstash curstash begin_av init_av end_av inc_gv warnhook diehook
- dowarn SVt_PVGV SVt_PVHV OPf_SPECIAL OPf_STACKED OPf_MOD
- OPpLVAL_INTRO SVf_FAKE SVf_READONLY);
-use B::Asmdata qw(@specialsv_name);
-use B::Assembler qw(asm newasm endasm);
-
-#################################################
-
-my ($varix, $opix, $savebegins, %walked, %files, @cloop);
-my %strtab = (0,0);
-my %svtab = (0,0);
-my %optab = (0,0);
-my %spectab = (0,0);
-my $tix = 1;
-sub asm;
-sub nice ($) { }
-
-BEGIN {
- my $ithreads = $Config{'useithreads'} eq 'define';
- eval qq{
- sub ITHREADS() { $ithreads }
- sub VERSION() { $] }
- }; die $@ if $@;
-}
-
-#################################################
-
-sub pvstring {
- my $pv = shift;
- defined($pv) ? cstring ($pv."\0") : "\"\"";
-}
-
-sub pvix {
- my $str = pvstring shift;
- my $ix = $strtab{$str};
- defined($ix) ? $ix : do {
- asm "newpv", $str;
- asm "stpv", $strtab{$str} = $tix;
- $tix++;
- }
-}
-
-sub B::OP::ix {
- my $op = shift;
- my $ix = $optab{$$op};
- defined($ix) ? $ix : do {
- nice "[".$op->name." $tix]";
- asm "newopx", $op->size | $op->type <<7;
- $optab{$$op} = $opix = $ix = $tix++;
- $op->bsave($ix);
- $ix;
- }
-}
-
-sub B::SPECIAL::ix {
- my $spec = shift;
- my $ix = $spectab{$$spec};
- defined($ix) ? $ix : do {
- nice '['.$specialsv_name[$$spec].']';
- asm "ldspecsvx", $$spec;
- $spectab{$$spec} = $varix = $tix++;
- }
-}
-
-sub B::SV::ix {
- my $sv = shift;
- my $ix = $svtab{$$sv};
- defined($ix) ? $ix : do {
- nice '['.class($sv).']';
- asm "newsvx", $sv->FLAGS;
- $svtab{$$sv} = $varix = $ix = $tix++;
- $sv->bsave($ix);
- $ix;
- }
-}
-
-sub B::GV::ix {
- my ($gv,$desired) = @_;
- my $ix = $svtab{$$gv};
- defined($ix) ? $ix : do {
- if ($gv->GP) {
- my ($svix, $avix, $hvix, $cvix, $ioix, $formix);
- nice "[GV]";
- my $name = $gv->STASH->NAME . "::" . $gv->NAME;
- asm "gv_fetchpvx", cstring $name;
- $svtab{$$gv} = $varix = $ix = $tix++;
- asm "sv_flags", $gv->FLAGS;
- asm "sv_refcnt", $gv->REFCNT;
- asm "xgv_flags", $gv->GvFLAGS;
-
- asm "gp_refcnt", $gv->GvREFCNT;
- asm "load_glob", $ix if $name eq "CORE::GLOBAL::glob";
- return $ix
- unless $desired || desired $gv;
- $svix = $gv->SV->ix;
- $avix = $gv->AV->ix;
- $hvix = $gv->HV->ix;
-
- # XXX {{{{
- my $cv = $gv->CV;
- $cvix = $$cv && defined $files{$cv->FILE} ? $cv->ix : 0;
- my $form = $gv->FORM;
- $formix = $$form && defined $files{$form->FILE} ? $form->ix : 0;
-
- $ioix = $name !~ /STDOUT$/ ? $gv->IO->ix : 0;
- # }}}} XXX
-
- nice "-GV-",
- asm "ldsv", $varix = $ix unless $ix == $varix;
- asm "gp_sv", $svix;
- asm "gp_av", $avix;
- asm "gp_hv", $hvix;
- asm "gp_cv", $cvix;
- asm "gp_io", $ioix;
- asm "gp_cvgen", $gv->CVGEN;
- asm "gp_form", $formix;
- asm "gp_file", pvix $gv->FILE;
- asm "gp_line", $gv->LINE;
- asm "formfeed", $svix if $name eq "main::\cL";
- } else {
- nice "[GV]";
- asm "newsvx", $gv->FLAGS;
- $svtab{$$gv} = $varix = $ix = $tix++;
- my $stashix = $gv->STASH->ix;
- $gv->B::PVMG::bsave($ix);
- asm "xgv_flags", $gv->GvFLAGS;
- asm "xgv_stash", $stashix;
- }
- $ix;
- }
-}
-
-sub B::HV::ix {
- my $hv = shift;
- my $ix = $svtab{$$hv};
- defined($ix) ? $ix : do {
- my ($ix,$i,@array);
- my $name = $hv->NAME;
- if ($name) {
- nice "[STASH]";
- asm "gv_stashpvx", cstring $name;
- asm "sv_flags", $hv->FLAGS;
- $svtab{$$hv} = $varix = $ix = $tix++;
- asm "xhv_name", pvix $name;
- # my $pmrootix = $hv->PMROOT->ix; # XXX
- asm "ldsv", $varix = $ix unless $ix == $varix;
- # asm "xhv_pmroot", $pmrootix; # XXX
- } else {
- nice "[HV]";
- asm "newsvx", $hv->FLAGS;
- $svtab{$$hv} = $varix = $ix = $tix++;
- my $stashix = $hv->SvSTASH->ix;
- for (@array = $hv->ARRAY) {
- next if $i = not $i;
- $_ = $_->ix;
- }
- nice "-HV-",
- asm "ldsv", $varix = $ix unless $ix == $varix;
- ($i = not $i) ? asm ("newpv", pvstring $_) : asm("hv_store", $_)
- for @array;
- if (VERSION < 5.009) {
- asm "xnv", $hv->NVX;
- }
- asm "xmg_stash", $stashix;
- asm "xhv_riter", $hv->RITER;
- }
- asm "sv_refcnt", $hv->REFCNT;
- $ix;
- }
-}
-
-sub B::NULL::ix {
- my $sv = shift;
- $$sv ? $sv->B::SV::ix : 0;
-}
-
-sub B::NULL::opwalk { 0 }
-
-#################################################
-
-sub B::NULL::bsave {
- my ($sv,$ix) = @_;
-
- nice '-'.class($sv).'-',
- asm "ldsv", $varix = $ix unless $ix == $varix;
- asm "sv_refcnt", $sv->REFCNT;
-}
-
-sub B::SV::bsave;
- *B::SV::bsave = *B::NULL::bsave;
-
-sub B::RV::bsave {
- my ($sv,$ix) = @_;
- my $rvix = $sv->RV->ix;
- $sv->B::NULL::bsave($ix);
- asm "xrv", $rvix;
-}
-
-sub B::PV::bsave {
- my ($sv,$ix) = @_;
- $sv->B::NULL::bsave($ix);
- asm "newpv", pvstring $sv->PVBM;
- asm "xpv";
-}
-
-sub B::IV::bsave {
- my ($sv,$ix) = @_;
- $sv->B::NULL::bsave($ix);
- asm "xiv", $sv->IVX;
-}
-
-sub B::NV::bsave {
- my ($sv,$ix) = @_;
- $sv->B::NULL::bsave($ix);
- asm "xnv", sprintf "%.40g", $sv->NVX;
-}
-
-sub B::PVIV::bsave {
- my ($sv,$ix) = @_;
- $sv->POK ?
- $sv->B::PV::bsave($ix):
- $sv->ROK ?
- $sv->B::RV::bsave($ix):
- $sv->B::NULL::bsave($ix);
- if (VERSION >= 5.009) {
- # See note below in B::PVNV::bsave
- return if $sv->isa('B::AV');
- return if $sv->isa('B::HV');
- }
- asm "xiv", !ITHREADS && $sv->FLAGS & (SVf_FAKE|SVf_READONLY) ?
- "0 but true" : $sv->IVX;
-}
-
-sub B::PVNV::bsave {
- my ($sv,$ix) = @_;
- $sv->B::PVIV::bsave($ix);
- if (VERSION >= 5.009) {
- # Magical AVs end up here, but AVs now don't have an NV slot actually
- # allocated. Hence don't write out assembly to store the NV slot if
- # we're actually an array.
- return if $sv->isa('B::AV');
- # Likewise HVs have no NV slot actually allocated.
- # I don't think that they can get here, but better safe than sorry
- return if $sv->isa('B::HV');
- }
- asm "xnv", sprintf "%.40g", $sv->NVX;
-}
-
-sub B::PVMG::domagic {
- my ($sv,$ix) = @_;
- nice '-MAGICAL-';
- my @mglist = $sv->MAGIC;
- my (@mgix, @namix);
- for (@mglist) {
- push @mgix, $_->OBJ->ix;
- push @namix, $_->PTR->ix if $_->LENGTH == B::HEf_SVKEY;
- }
-
- nice '-'.class($sv).'-',
- asm "ldsv", $varix = $ix unless $ix == $varix;
- for (@mglist) {
- asm "sv_magic", cstring $_->TYPE;
- asm "mg_obj", shift @mgix;
- my $length = $_->LENGTH;
- if ($length == B::HEf_SVKEY) {
- asm "mg_namex", shift @namix;
- } elsif ($length) {
- asm "newpv", pvstring $_->PTR;
- asm "mg_name";
- }
- }
-}
-
-sub B::PVMG::bsave {
- my ($sv,$ix) = @_;
- my $stashix = $sv->SvSTASH->ix;
- $sv->B::PVNV::bsave($ix);
- asm "xmg_stash", $stashix;
- $sv->domagic($ix) if $sv->MAGICAL;
-}
-
-sub B::PVLV::bsave {
- my ($sv,$ix) = @_;
- my $targix = $sv->TARG->ix;
- $sv->B::PVMG::bsave($ix);
- asm "xlv_targ", $targix;
- asm "xlv_targoff", $sv->TARGOFF;
- asm "xlv_targlen", $sv->TARGLEN;
- asm "xlv_type", $sv->TYPE;
-
-}
-
-sub B::BM::bsave {
- my ($sv,$ix) = @_;
- $sv->B::PVMG::bsave($ix);
- asm "xpv_cur", $sv->CUR;
- asm "xbm_useful", $sv->USEFUL;
- asm "xbm_previous", $sv->PREVIOUS;
- asm "xbm_rare", $sv->RARE;
-}
-
-sub B::IO::bsave {
- my ($io,$ix) = @_;
- my $topix = $io->TOP_GV->ix;
- my $fmtix = $io->FMT_GV->ix;
- my $bottomix = $io->BOTTOM_GV->ix;
- $io->B::PVMG::bsave($ix);
- asm "xio_lines", $io->LINES;
- asm "xio_page", $io->PAGE;
- asm "xio_page_len", $io->PAGE_LEN;
- asm "xio_lines_left", $io->LINES_LEFT;
- asm "xio_top_name", pvix $io->TOP_NAME;
- asm "xio_top_gv", $topix;
- asm "xio_fmt_name", pvix $io->FMT_NAME;
- asm "xio_fmt_gv", $fmtix;
- asm "xio_bottom_name", pvix $io->BOTTOM_NAME;
- asm "xio_bottom_gv", $bottomix;
- asm "xio_subprocess", $io->SUBPROCESS;
- asm "xio_type", ord $io->IoTYPE;
- # asm "xio_flags", ord($io->IoFLAGS) & ~32; # XXX XXX
-}
-
-sub B::CV::bsave {
- my ($cv,$ix) = @_;
- my $stashix = $cv->STASH->ix;
- my $gvix = $cv->GV->ix;
- my $padlistix = $cv->PADLIST->ix;
- my $outsideix = $cv->OUTSIDE->ix;
- my $constix = $cv->CONST ? $cv->XSUBANY->ix : 0;
- my $startix = $cv->START->opwalk;
- my $rootix = $cv->ROOT->ix;
-
- $cv->B::PVMG::bsave($ix);
- asm "xcv_stash", $stashix;
- asm "xcv_start", $startix;
- asm "xcv_root", $rootix;
- asm "xcv_xsubany", $constix;
- asm "xcv_gv", $gvix;
- asm "xcv_file", pvix $cv->FILE if $cv->FILE; # XXX AD
- asm "xcv_padlist", $padlistix;
- asm "xcv_outside", $outsideix;
- asm "xcv_flags", $cv->CvFLAGS;
- asm "xcv_outside_seq", $cv->OUTSIDE_SEQ;
- asm "xcv_depth", $cv->DEPTH;
-}
-
-sub B::FM::bsave {
- my ($form,$ix) = @_;
-
- $form->B::CV::bsave($ix);
- asm "xfm_lines", $form->LINES;
-}
-
-sub B::AV::bsave {
- my ($av,$ix) = @_;
- return $av->B::PVMG::bsave($ix) if $av->MAGICAL;
- my @array = $av->ARRAY;
- $_ = $_->ix for @array;
- my $stashix = $av->SvSTASH->ix;
-
- nice "-AV-",
- asm "ldsv", $varix = $ix unless $ix == $varix;
- asm "av_extend", $av->MAX if $av->MAX >= 0;
- asm "av_pushx", $_ for @array;
- asm "sv_refcnt", $av->REFCNT;
- if (VERSION < 5.009) {
- asm "xav_flags", $av->AvFLAGS;
- }
- asm "xmg_stash", $stashix;
-}
-
-sub B::GV::desired {
- my $gv = shift;
- my ($cv, $form);
- $files{$gv->FILE} && $gv->LINE
- || ${$cv = $gv->CV} && $files{$cv->FILE}
- || ${$form = $gv->FORM} && $files{$form->FILE}
-}
-
-sub B::HV::bwalk {
- my $hv = shift;
- return if $walked{$$hv}++;
- my %stash = $hv->ARRAY;
- while (my($k,$v) = each %stash) {
- if ($v->SvTYPE == SVt_PVGV) {
- my $hash = $v->HV;
- if ($$hash && $hash->NAME) {
- $hash->bwalk;
- }
- $v->ix(1) if desired $v;
- } else {
- nice "[prototype]";
- asm "gv_fetchpvx", cstring $hv->NAME . "::$k";
- $svtab{$$v} = $varix = $tix;
- $v->bsave($tix++);
- asm "sv_flags", $v->FLAGS;
- }
- }
-}
-
-######################################################
-
-
-sub B::OP::bsave_thin {
- my ($op, $ix) = @_;
- my $next = $op->next;
- my $nextix = $optab{$$next};
- $nextix = 0, push @cloop, $op unless defined $nextix;
- if ($ix != $opix) {
- nice '-'.$op->name.'-',
- asm "ldop", $opix = $ix;
- }
- asm "op_next", $nextix;
- asm "op_targ", $op->targ if $op->type; # tricky
- asm "op_flags", $op->flags;
- asm "op_private", $op->private;
-}
-
-sub B::OP::bsave;
- *B::OP::bsave = *B::OP::bsave_thin;
-
-sub B::UNOP::bsave {
- my ($op, $ix) = @_;
- my $name = $op->name;
- my $flags = $op->flags;
- my $first = $op->first;
- my $firstix =
- $name =~ /fl[io]p/
- # that's just neat
- || (!ITHREADS && $name eq 'regcomp')
- # trick for /$a/o in pp_regcomp
- || $name eq 'rv2sv'
- && $op->flags & OPf_MOD
- && $op->private & OPpLVAL_INTRO
- # change #18774 made my life hard
- ? $first->ix
- : 0;
-
- $op->B::OP::bsave($ix);
- asm "op_first", $firstix;
-}
-
-sub B::BINOP::bsave {
- my ($op, $ix) = @_;
- if ($op->name eq 'aassign' && $op->private & B::OPpASSIGN_HASH()) {
- my $last = $op->last;
- my $lastix = do {
- local *B::OP::bsave = *B::OP::bsave_fat;
- local *B::UNOP::bsave = *B::UNOP::bsave_fat;
- $last->ix;
- };
- asm "ldop", $lastix unless $lastix == $opix;
- asm "op_targ", $last->targ;
- $op->B::OP::bsave($ix);
- asm "op_last", $lastix;
- } else {
- $op->B::OP::bsave($ix);
- }
-}
-
-# not needed if no pseudohashes
-
-*B::BINOP::bsave = *B::OP::bsave if VERSION >= 5.009;
-
-# deal with sort / formline
-
-sub B::LISTOP::bsave {
- my ($op, $ix) = @_;
- my $name = $op->name;
- sub blocksort() { OPf_SPECIAL|OPf_STACKED }
- if ($name eq 'sort' && ($op->flags & blocksort) == blocksort) {
- my $first = $op->first;
- my $pushmark = $first->sibling;
- my $rvgv = $pushmark->first;
- my $leave = $rvgv->first;
-
- my $leaveix = $leave->ix;
-
- my $rvgvix = $rvgv->ix;
- asm "ldop", $rvgvix unless $rvgvix == $opix;
- asm "op_first", $leaveix;
-
- my $pushmarkix = $pushmark->ix;
- asm "ldop", $pushmarkix unless $pushmarkix == $opix;
- asm "op_first", $rvgvix;
-
- my $firstix = $first->ix;
- asm "ldop", $firstix unless $firstix == $opix;
- asm "op_sibling", $pushmarkix;
-
- $op->B::OP::bsave($ix);
- asm "op_first", $firstix;
- } elsif ($name eq 'formline') {
- $op->B::UNOP::bsave_fat($ix);
- } else {
- $op->B::OP::bsave($ix);
- }
-}
-
-# fat versions
-
-sub B::OP::bsave_fat {
- my ($op, $ix) = @_;
- my $siblix = $op->sibling->ix;
-
- $op->B::OP::bsave_thin($ix);
- asm "op_sibling", $siblix;
- # asm "op_seq", -1; XXX don't allocate OPs piece by piece
-}
-
-sub B::UNOP::bsave_fat {
- my ($op,$ix) = @_;
- my $firstix = $op->first->ix;
-
- $op->B::OP::bsave($ix);
- asm "op_first", $firstix;
-}
-
-sub B::BINOP::bsave_fat {
- my ($op,$ix) = @_;
- my $last = $op->last;
- my $lastix = $op->last->ix;
- if (VERSION < 5.009 && $op->name eq 'aassign' && $last->name eq 'null') {
- asm "ldop", $lastix unless $lastix == $opix;
- asm "op_targ", $last->targ;
- }
-
- $op->B::UNOP::bsave($ix);
- asm "op_last", $lastix;
-}
-
-sub B::LOGOP::bsave {
- my ($op,$ix) = @_;
- my $otherix = $op->other->ix;
-
- $op->B::UNOP::bsave($ix);
- asm "op_other", $otherix;
-}
-
-sub B::PMOP::bsave {
- my ($op,$ix) = @_;
- my ($rrop, $rrarg, $rstart);
-
- # my $pmnextix = $op->pmnext->ix; # XXX
-
- if (ITHREADS) {
- if ($op->name eq 'subst') {
- $rrop = "op_pmreplroot";
- $rrarg = $op->pmreplroot->ix;
- $rstart = $op->pmreplstart->ix;
- } elsif ($op->name eq 'pushre') {
- $rrop = "op_pmreplrootpo";
- $rrarg = $op->pmreplroot;
- }
- $op->B::BINOP::bsave($ix);
- asm "op_pmstashpv", pvix $op->pmstashpv;
- } else {
- $rrop = "op_pmreplrootgv";
- $rrarg = $op->pmreplroot->ix;
- $rstart = $op->pmreplstart->ix if $op->name eq 'subst';
- my $stashix = $op->pmstash->ix;
- $op->B::BINOP::bsave($ix);
- asm "op_pmstash", $stashix;
- }
-
- asm $rrop, $rrarg if $rrop;
- asm "op_pmreplstart", $rstart if $rstart;
-
- asm "op_pmflags", $op->pmflags;
- asm "op_pmpermflags", $op->pmpermflags;
- asm "op_pmdynflags", $op->pmdynflags;
- # asm "op_pmnext", $pmnextix; # XXX
- asm "newpv", pvstring $op->precomp;
- asm "pregcomp";
-}
-
-sub B::SVOP::bsave {
- my ($op,$ix) = @_;
- my $svix = $op->sv->ix;
-
- $op->B::OP::bsave($ix);
- asm "op_sv", $svix;
-}
-
-sub B::PADOP::bsave {
- my ($op,$ix) = @_;
-
- $op->B::OP::bsave($ix);
- asm "op_padix", $op->padix;
-}
-
-sub B::PVOP::bsave {
- my ($op,$ix) = @_;
- $op->B::OP::bsave($ix);
- return unless my $pv = $op->pv;
-
- if ($op->name eq 'trans') {
- asm "op_pv_tr", join ',', length($pv)/2, unpack("s*", $pv);
- } else {
- asm "newpv", pvstring $pv;
- asm "op_pv";
- }
-}
-
-sub B::LOOP::bsave {
- my ($op,$ix) = @_;
- my $nextix = $op->nextop->ix;
- my $lastix = $op->lastop->ix;
- my $redoix = $op->redoop->ix;
-
- $op->B::BINOP::bsave($ix);
- asm "op_redoop", $redoix;
- asm "op_nextop", $nextix;
- asm "op_lastop", $lastix;
-}
-
-sub B::COP::bsave {
- my ($cop,$ix) = @_;
- my $warnix = $cop->warnings->ix;
- my $ioix = $cop->io->ix;
- if (ITHREADS) {
- $cop->B::OP::bsave($ix);
- asm "cop_stashpv", pvix $cop->stashpv;
- asm "cop_file", pvix $cop->file;
- } else {
- my $stashix = $cop->stash->ix;
- my $fileix = $cop->filegv->ix(1);
- $cop->B::OP::bsave($ix);
- asm "cop_stash", $stashix;
- asm "cop_filegv", $fileix;
- }
- asm "cop_label", pvix $cop->label if $cop->label; # XXX AD
- asm "cop_seq", $cop->cop_seq;
- asm "cop_arybase", $cop->arybase;
- asm "cop_line", $cop->line;
- asm "cop_warnings", $warnix;
- asm "cop_io", $ioix;
-}
-
-sub B::OP::opwalk {
- my $op = shift;
- my $ix = $optab{$$op};
- defined($ix) ? $ix : do {
- my $ix;
- my @oplist = $op->oplist;
- push @cloop, undef;
- $ix = $_->ix while $_ = pop @oplist;
- while ($_ = pop @cloop) {
- asm "ldop", $optab{$$_};
- asm "op_next", $optab{${$_->next}};
- }
- $ix;
- }
-}
-
-#################################################
-
-sub save_cq {
- my $av;
- if (($av=begin_av)->isa("B::AV")) {
- if ($savebegins) {
- for ($av->ARRAY) {
- next unless $_->FILE eq $0;
- asm "push_begin", $_->ix;
- }
- } else {
- for ($av->ARRAY) {
- next unless $_->FILE eq $0;
- # XXX BEGIN { goto A while 1; A: }
- for (my $op = $_->START; $$op; $op = $op->next) {
- next unless $op->name eq 'require' ||
- # this kludge needed for tests
- $op->name eq 'gv' && do {
- my $gv = class($op) eq 'SVOP' ?
- $op->gv :
- (($_->PADLIST->ARRAY)[1]->ARRAY)[$op->padix];
- $$gv && $gv->NAME =~ /use_ok|plan/
- };
- asm "push_begin", $_->ix;
- last;
- }
- }
- }
- }
- if (($av=init_av)->isa("B::AV")) {
- for ($av->ARRAY) {
- next unless $_->FILE eq $0;
- asm "push_init", $_->ix;
- }
- }
- if (($av=end_av)->isa("B::AV")) {
- for ($av->ARRAY) {
- next unless $_->FILE eq $0;
- asm "push_end", $_->ix;
- }
- }
-}
-
-sub compile {
- my ($head, $scan, $T_inhinc, $keep_syn);
- my $cwd = '';
- $files{$0} = 1;
- sub keep_syn {
- $keep_syn = 1;
- *B::OP::bsave = *B::OP::bsave_fat;
- *B::UNOP::bsave = *B::UNOP::bsave_fat;
- *B::BINOP::bsave = *B::BINOP::bsave_fat;
- *B::LISTOP::bsave = *B::LISTOP::bsave_fat;
- }
- sub bwarn { print STDERR "Bytecode.pm: @_\n" }
-
- for (@_) {
- if (/^-S/) {
- *newasm = *endasm = sub { };
- *asm = sub { print " @_\n" };
- *nice = sub ($) { print "\n@_\n" };
- } elsif (/^-H/) {
- require ByteLoader;
- $head = "#! $^X\nuse ByteLoader $ByteLoader::VERSION;\n";
- } elsif (/^-k/) {
- keep_syn;
- } elsif (/^-o(.*)$/) {
- open STDOUT, ">$1" or die "open $1: $!";
- } elsif (/^-f(.*)$/) {
- $files{$1} = 1;
- } elsif (/^-s(.*)$/) {
- $scan = length($1) ? $1 : $0;
- } elsif (/^-b/) {
- $savebegins = 1;
- # this is here for the testsuite
- } elsif (/^-TI/) {
- $T_inhinc = 1;
- } elsif (/^-TF(.*)/) {
- my $thatfile = $1;
- *B::COP::file = sub { $thatfile };
- } else {
- bwarn "Ignoring '$_' option";
- }
- }
- if ($scan) {
- my $f;
- if (open $f, $scan) {
- while (<$f>) {
- /^#\s*line\s+\d+\s+("?)(.*)\1/ and $files{$2} = 1;
- /^#/ and next;
- if (/\bgoto\b\s*[^&]/ && !$keep_syn) {
- bwarn "keeping the syntax tree: \"goto\" op found";
- keep_syn;
- }
- }
- } else {
- bwarn "cannot rescan '$scan'";
- }
- close $f;
- }
- binmode STDOUT;
- return sub {
- print $head if $head;
- newasm sub { print @_ };
-
- defstash->bwalk;
- asm "main_start", main_start->opwalk;
- asm "main_root", main_root->ix;
- asm "main_cv", main_cv->ix;
- asm "curpad", (comppadlist->ARRAY)[1]->ix;
-
- asm "signal", cstring "__WARN__" # XXX
- if warnhook->ix;
- asm "incav", inc_gv->AV->ix if $T_inhinc;
- save_cq;
- asm "incav", inc_gv->AV->ix if $T_inhinc;
- asm "dowarn", dowarn;
-
- {
- no strict 'refs';
- nice "<DATA>";
- my $dh = *{defstash->NAME."::DATA"};
- unless (eof $dh) {
- local undef $/;
- asm "data", ord 'D';
- print <$dh>;
- } else {
- asm "ret";
- }
- }
-
- endasm;
- }
-}
-
-1;
-
-=head1 NAME
-
-B::Bytecode - Perl compiler's bytecode backend
-
-=head1 SYNOPSIS
-
-B<perl -MO=Bytecode>[B<,-H>][B<,-o>I<script.plc>] I<script.pl>
-
-=head1 DESCRIPTION
-
-Compiles a Perl script into a bytecode format that could be loaded
-later by the ByteLoader module and executed as a regular Perl script.
-
-=head1 EXAMPLE
-
- $ perl -MO=Bytecode,-H,-ohi -e 'print "hi!\n"'
- $ perl hi
- hi!
-
-=head1 OPTIONS
-
-=over 4
-
-=item B<-b>
-
-Save all the BEGIN blocks. Normally only BEGIN blocks that C<require>
-other files (ex. C<use Foo;>) are saved.
-
-=item B<-H>
-
-prepend a C<use ByteLoader VERSION;> line to the produced bytecode.
-
-=item B<-k>
-
-keep the syntax tree - it is stripped by default.
-
-=item B<-o>I<outfile>
-
-put the bytecode in <outfile> instead of dumping it to STDOUT.
-
-=item B<-s>
-
-scan the script for C<# line ..> directives and for <goto LABEL>
-expressions. When gotos are found keep the syntax tree.
-
-=back
-
-=head1 KNOWN BUGS
-
-=over 4
-
-=item *
-
-C<BEGIN { goto A: while 1; A: }> won't even compile.
-
-=item *
-
-C<?...?> and C<reset> do not work as expected.
-
-=item *
-
-variables in C<(?{ ... })> constructs are not properly scoped.
-
-=item *
-
-scripts that use source filters will fail miserably.
-
-=back
-
-=head1 NOTICE
-
-There are also undocumented bugs and options.
-
-THIS CODE IS HIGHLY EXPERIMENTAL. USE AT YOUR OWN RISK.
-
-=head1 AUTHORS
-
-Originally written by Malcolm Beattie <mbeattie@sable.ox.ac.uk> and
-modified by Benjamin Stuhl <sho_pi@hotmail.com>.
-
-Rewritten by Enache Adrian <enache@rdslink.ro>, 2003 a.d.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/B/C.pm b/Master/tlpkg/tlperl/lib/B/C.pm
deleted file mode 100644
index cebf4132ffd..00000000000
--- a/Master/tlpkg/tlperl/lib/B/C.pm
+++ /dev/null
@@ -1,2272 +0,0 @@
-# C.pm
-#
-# Copyright (c) 1996, 1997, 1998 Malcolm Beattie
-#
-# You may distribute under the terms of either the GNU General Public
-# License or the Artistic License, as specified in the README file.
-#
-
-package B::C;
-
-our $VERSION = '1.04_01';
-
-package B::C::Section;
-
-use B ();
-use base B::Section;
-
-sub new
-{
- my $class = shift;
- my $o = $class->SUPER::new(@_);
- push @$o, { values => [] };
- return $o;
-}
-
-sub add
-{
- my $section = shift;
- push(@{$section->[-1]{values}},@_);
-}
-
-sub index
-{
- my $section = shift;
- return scalar(@{$section->[-1]{values}})-1;
-}
-
-sub output
-{
- my ($section, $fh, $format) = @_;
- my $sym = $section->symtable || {};
- my $default = $section->default;
- my $i;
- foreach (@{$section->[-1]{values}})
- {
- s{(s\\_[0-9a-f]+)}{ exists($sym->{$1}) ? $sym->{$1} : $default; }ge;
- printf $fh $format, $_, $i;
- ++$i;
- }
-}
-
-package B::C::InitSection;
-
-# avoid use vars
-@B::C::InitSection::ISA = qw(B::C::Section);
-
-sub new {
- my $class = shift;
- my $max_lines = 10000; #pop;
- my $section = $class->SUPER::new( @_ );
-
- $section->[-1]{evals} = [];
- $section->[-1]{chunks} = [];
- $section->[-1]{nosplit} = 0;
- $section->[-1]{current} = [];
- $section->[-1]{count} = 0;
- $section->[-1]{max_lines} = $max_lines;
-
- return $section;
-}
-
-sub split {
- my $section = shift;
- $section->[-1]{nosplit}--
- if $section->[-1]{nosplit} > 0;
-}
-
-sub no_split {
- shift->[-1]{nosplit}++;
-}
-
-sub inc_count {
- my $section = shift;
-
- $section->[-1]{count} += $_[0];
- # this is cheating
- $section->add();
-}
-
-sub add {
- my $section = shift->[-1];
- my $current = $section->{current};
- my $nosplit = $section->{nosplit};
-
- push @$current, @_;
- $section->{count} += scalar(@_);
- if( !$nosplit && $section->{count} >= $section->{max_lines} ) {
- push @{$section->{chunks}}, $current;
- $section->{current} = [];
- $section->{count} = 0;
- }
-}
-
-sub add_eval {
- my $section = shift;
- my @strings = @_;
-
- foreach my $i ( @strings ) {
- $i =~ s/\"/\\\"/g;
- }
- push @{$section->[-1]{evals}}, @strings;
-}
-
-sub output {
- my( $section, $fh, $format, $init_name ) = @_;
- my $sym = $section->symtable || {};
- my $default = $section->default;
- push @{$section->[-1]{chunks}}, $section->[-1]{current};
-
- my $name = "aaaa";
- foreach my $i ( @{$section->[-1]{chunks}} ) {
- print $fh <<"EOT";
-static int perl_init_${name}()
-{
- dTARG;
- dSP;
-EOT
- foreach my $j ( @$i ) {
- $j =~ s{(s\\_[0-9a-f]+)}
- { exists($sym->{$1}) ? $sym->{$1} : $default; }ge;
- print $fh "\t$j\n";
- }
- print $fh "\treturn 0;\n}\n";
-
- $section->SUPER::add( "perl_init_${name}();" );
- ++$name;
- }
- foreach my $i ( @{$section->[-1]{evals}} ) {
- $section->SUPER::add( sprintf q{eval_pv("%s",1);}, $i );
- }
-
- print $fh <<"EOT";
-static int ${init_name}()
-{
- dTARG;
- dSP;
-EOT
- $section->SUPER::output( $fh, $format );
- print $fh "\treturn 0;\n}\n";
-}
-
-
-package B::C;
-use Exporter ();
-our %REGEXP;
-
-{ # block necessary for caller to work
- my $caller = caller;
- if( $caller eq 'O' ) {
- require XSLoader;
- XSLoader::load( 'B::C' );
- }
-}
-
-@ISA = qw(Exporter);
-@EXPORT_OK = qw(output_all output_boilerplate output_main mark_unused
- init_sections set_callback save_unused_subs objsym save_context);
-
-use B qw(minus_c sv_undef walkoptree walksymtable main_root main_start peekop
- class cstring cchar svref_2object compile_stats comppadlist hash
- threadsv_names main_cv init_av end_av regex_padav opnumber amagic_generation
- HEf_SVKEY SVf_POK SVf_ROK CVf_CONST);
-use B::Asmdata qw(@specialsv_name);
-
-use FileHandle;
-use Carp;
-use strict;
-use Config;
-
-my $hv_index = 0;
-my $gv_index = 0;
-my $re_index = 0;
-my $pv_index = 0;
-my $cv_index = 0;
-my $anonsub_index = 0;
-my $initsub_index = 0;
-
-my %symtable;
-my %xsub;
-my $warn_undefined_syms;
-my $verbose;
-my %unused_sub_packages;
-my $use_xsloader;
-my $nullop_count;
-my $pv_copy_on_grow = 0;
-my $optimize_ppaddr = 0;
-my $optimize_warn_sv = 0;
-my $use_perl_script_name = 0;
-my $save_data_fh = 0;
-my $save_sig = 0;
-my ($debug_cops, $debug_av, $debug_cv, $debug_mg);
-my $max_string_len;
-
-my $ithreads = $Config{useithreads} eq 'define';
-
-my @threadsv_names;
-BEGIN {
- @threadsv_names = threadsv_names();
-}
-
-# Code sections
-my ($init, $decl, $symsect, $binopsect, $condopsect, $copsect,
- $padopsect, $listopsect, $logopsect, $loopsect, $opsect, $pmopsect,
- $pvopsect, $svopsect, $unopsect, $svsect, $xpvsect, $xpvavsect,
- $xpvhvsect, $xpvcvsect, $xpvivsect, $xpvnvsect, $xpvmgsect, $xpvlvsect,
- $xrvsect, $xpvbmsect, $xpviosect );
-my @op_sections = \( $binopsect, $condopsect, $copsect, $padopsect, $listopsect,
- $logopsect, $loopsect, $opsect, $pmopsect, $pvopsect, $svopsect,
- $unopsect );
-
-sub walk_and_save_optree;
-my $saveoptree_callback = \&walk_and_save_optree;
-sub set_callback { $saveoptree_callback = shift }
-sub saveoptree { &$saveoptree_callback(@_) }
-
-sub walk_and_save_optree {
- my ($name, $root, $start) = @_;
- walkoptree($root, "save");
- return objsym($start);
-}
-
-# Look this up here so we can do just a number compare
-# rather than looking up the name of every BASEOP in B::OP
-my $OP_THREADSV = opnumber('threadsv');
-
-sub savesym {
- my ($obj, $value) = @_;
- my $sym = sprintf("s\\_%x", $$obj);
- $symtable{$sym} = $value;
-}
-
-sub objsym {
- my $obj = shift;
- return $symtable{sprintf("s\\_%x", $$obj)};
-}
-
-sub getsym {
- my $sym = shift;
- my $value;
-
- return 0 if $sym eq "sym_0"; # special case
- $value = $symtable{$sym};
- if (defined($value)) {
- return $value;
- } else {
- warn "warning: undefined symbol $sym\n" if $warn_undefined_syms;
- return "UNUSED";
- }
-}
-
-sub savere {
- my $re = shift;
- my $sym = sprintf("re%d", $re_index++);
- $decl->add(sprintf("static char *$sym = %s;", cstring($re)));
-
- return ($sym,length(pack "a*",$re));
-}
-
-sub savepv {
- my $pv = pack "a*", shift;
- my $pvsym = 0;
- my $pvmax = 0;
- if ($pv_copy_on_grow) {
- $pvsym = sprintf("pv%d", $pv_index++);
-
- if( defined $max_string_len && length($pv) > $max_string_len ) {
- my $chars = join ', ', map { cchar $_ } split //, $pv;
- $decl->add(sprintf("static char %s[] = { %s };", $pvsym, $chars));
- }
- else {
- my $cstring = cstring($pv);
- if ($cstring ne "0") { # sic
- $decl->add(sprintf("static char %s[] = %s;",
- $pvsym, $cstring));
- }
- }
- } else {
- $pvmax = length(pack "a*",$pv) + 1;
- }
- return ($pvsym, $pvmax);
-}
-
-sub save_rv {
- my $sv = shift;
-# confess "Can't save RV: not ROK" unless $sv->FLAGS & SVf_ROK;
- my $rv = $sv->RV->save;
-
- $rv =~ s/^\(([AGHS]V|IO)\s*\*\)\s*(\&sv_list.*)$/$2/;
-
- return $rv;
-}
-
-# savesym, pvmax, len, pv
-sub save_pv_or_rv {
- my $sv = shift;
-
- my $rok = $sv->FLAGS & SVf_ROK;
- my $pok = $sv->FLAGS & SVf_POK;
- my( $len, $pvmax, $savesym, $pv ) = ( 0, 0 );
- if( $rok ) {
- $savesym = '(char*)' . save_rv( $sv );
- }
- else {
- $pv = $pok ? (pack "a*", $sv->PV) : undef;
- $len = $pok ? length($pv) : 0;
- ($savesym, $pvmax) = $pok ? savepv($pv) : ( 'NULL', 0 );
- }
-
- return ( $savesym, $pvmax, $len, $pv );
-}
-
-# see also init_op_ppaddr below; initializes the ppaddt to the
-# OpTYPE; init_op_ppaddr iterates over the ops and sets
-# op_ppaddr to PL_ppaddr[op_ppaddr]; this avoids an explicit assignmente
-# in perl_init ( ~10 bytes/op with GCC/i386 )
-sub B::OP::fake_ppaddr {
- return $optimize_ppaddr ?
- sprintf("INT2PTR(void*,OP_%s)", uc( $_[0]->name ) ) :
- 'NULL';
-}
-
-# This pair is needed becase B::FAKEOP::save doesn't scalar dereference
-# $op->next and $op->sibling
-
-{
- # For 5.9 the hard coded text is the values for op_opt and op_static in each
- # op. The value of op_opt is irrelevant, and the value of op_static needs to
- # be 1 to tell op_free that this is a statically defined op and that is
- # shouldn't be freed.
-
- # For 5.8:
- # Current workaround/fix for op_free() trying to free statically
- # defined OPs is to set op_seq = -1 and check for that in op_free().
- # Instead of hardwiring -1 in place of $op->seq, we use $op_seq
- # so that it can be changed back easily if necessary. In fact, to
- # stop compilers from moaning about a U16 being initialised with an
- # uncast -1 (the printf format is %d so we can't tweak it), we have
- # to "know" that op_seq is a U16 and use 65535. Ugh.
-
- my $static = $] > 5.009 ? '0, 1, 0' : sprintf "%u", 65535;
- sub B::OP::_save_common_middle {
- my $op = shift;
- sprintf ("%s, %u, %u, $static, 0x%x, 0x%x",
- $op->fake_ppaddr, $op->targ, $op->type, $op->flags, $op->private);
- }
-}
-
-sub B::OP::_save_common {
- my $op = shift;
- return sprintf("s\\_%x, s\\_%x, %s",
- ${$op->next}, ${$op->sibling}, $op->_save_common_middle);
-}
-
-sub B::OP::save {
- my ($op, $level) = @_;
- my $sym = objsym($op);
- return $sym if defined $sym;
- my $type = $op->type;
- $nullop_count++ unless $type;
- if ($type == $OP_THREADSV) {
- # saves looking up ppaddr but it's a bit naughty to hard code this
- $init->add(sprintf("(void)find_threadsv(%s);",
- cstring($threadsv_names[$op->targ])));
- }
- $opsect->add($op->_save_common);
- my $ix = $opsect->index;
- $init->add(sprintf("op_list[$ix].op_ppaddr = %s;", $op->ppaddr))
- unless $optimize_ppaddr;
- savesym($op, "&op_list[$ix]");
-}
-
-sub B::FAKEOP::new {
- my ($class, %objdata) = @_;
- bless \%objdata, $class;
-}
-
-sub B::FAKEOP::save {
- my ($op, $level) = @_;
- $opsect->add(sprintf("%s, %s, %s",
- $op->next, $op->sibling, $op->_save_common_middle));
- my $ix = $opsect->index;
- $init->add(sprintf("op_list[$ix].op_ppaddr = %s;", $op->ppaddr))
- unless $optimize_ppaddr;
- return "&op_list[$ix]";
-}
-
-sub B::FAKEOP::next { $_[0]->{"next"} || 0 }
-sub B::FAKEOP::type { $_[0]->{type} || 0}
-sub B::FAKEOP::sibling { $_[0]->{sibling} || 0 }
-sub B::FAKEOP::ppaddr { $_[0]->{ppaddr} || 0 }
-sub B::FAKEOP::targ { $_[0]->{targ} || 0 }
-sub B::FAKEOP::flags { $_[0]->{flags} || 0 }
-sub B::FAKEOP::private { $_[0]->{private} || 0 }
-
-sub B::UNOP::save {
- my ($op, $level) = @_;
- my $sym = objsym($op);
- return $sym if defined $sym;
- $unopsect->add(sprintf("%s, s\\_%x", $op->_save_common, ${$op->first}));
- my $ix = $unopsect->index;
- $init->add(sprintf("unop_list[$ix].op_ppaddr = %s;", $op->ppaddr))
- unless $optimize_ppaddr;
- savesym($op, "(OP*)&unop_list[$ix]");
-}
-
-sub B::BINOP::save {
- my ($op, $level) = @_;
- my $sym = objsym($op);
- return $sym if defined $sym;
- $binopsect->add(sprintf("%s, s\\_%x, s\\_%x",
- $op->_save_common, ${$op->first}, ${$op->last}));
- my $ix = $binopsect->index;
- $init->add(sprintf("binop_list[$ix].op_ppaddr = %s;", $op->ppaddr))
- unless $optimize_ppaddr;
- savesym($op, "(OP*)&binop_list[$ix]");
-}
-
-sub B::LISTOP::save {
- my ($op, $level) = @_;
- my $sym = objsym($op);
- return $sym if defined $sym;
- $listopsect->add(sprintf("%s, s\\_%x, s\\_%x",
- $op->_save_common, ${$op->first}, ${$op->last}));
- my $ix = $listopsect->index;
- $init->add(sprintf("listop_list[$ix].op_ppaddr = %s;", $op->ppaddr))
- unless $optimize_ppaddr;
- savesym($op, "(OP*)&listop_list[$ix]");
-}
-
-sub B::LOGOP::save {
- my ($op, $level) = @_;
- my $sym = objsym($op);
- return $sym if defined $sym;
- $logopsect->add(sprintf("%s, s\\_%x, s\\_%x",
- $op->_save_common, ${$op->first}, ${$op->other}));
- my $ix = $logopsect->index;
- $init->add(sprintf("logop_list[$ix].op_ppaddr = %s;", $op->ppaddr))
- unless $optimize_ppaddr;
- savesym($op, "(OP*)&logop_list[$ix]");
-}
-
-sub B::LOOP::save {
- my ($op, $level) = @_;
- my $sym = objsym($op);
- return $sym if defined $sym;
- #warn sprintf("LOOP: redoop %s, nextop %s, lastop %s\n",
- # peekop($op->redoop), peekop($op->nextop),
- # peekop($op->lastop)); # debug
- $loopsect->add(sprintf("%s, s\\_%x, s\\_%x, s\\_%x, s\\_%x, s\\_%x",
- $op->_save_common, ${$op->first}, ${$op->last},
- ${$op->redoop}, ${$op->nextop},
- ${$op->lastop}));
- my $ix = $loopsect->index;
- $init->add(sprintf("loop_list[$ix].op_ppaddr = %s;", $op->ppaddr))
- unless $optimize_ppaddr;
- savesym($op, "(OP*)&loop_list[$ix]");
-}
-
-sub B::PVOP::save {
- my ($op, $level) = @_;
- my $sym = objsym($op);
- return $sym if defined $sym;
- $pvopsect->add(sprintf("%s, %s", $op->_save_common, cstring($op->pv)));
- my $ix = $pvopsect->index;
- $init->add(sprintf("pvop_list[$ix].op_ppaddr = %s;", $op->ppaddr))
- unless $optimize_ppaddr;
- savesym($op, "(OP*)&pvop_list[$ix]");
-}
-
-sub B::SVOP::save {
- my ($op, $level) = @_;
- my $sym = objsym($op);
- return $sym if defined $sym;
- my $sv = $op->sv;
- my $svsym = '(SV*)' . $sv->save;
- my $is_const_addr = $svsym =~ m/Null|\&/;
- $svopsect->add(sprintf("%s, %s", $op->_save_common,
- ( $is_const_addr ? $svsym : 'Nullsv' )));
- my $ix = $svopsect->index;
- $init->add(sprintf("svop_list[$ix].op_ppaddr = %s;", $op->ppaddr))
- unless $optimize_ppaddr;
- $init->add("svop_list[$ix].op_sv = $svsym;")
- unless $is_const_addr;
- savesym($op, "(OP*)&svop_list[$ix]");
-}
-
-sub B::PADOP::save {
- my ($op, $level) = @_;
- my $sym = objsym($op);
- return $sym if defined $sym;
- $padopsect->add(sprintf("%s, %d",
- $op->_save_common, $op->padix));
- my $ix = $padopsect->index;
- $init->add(sprintf("padop_list[$ix].op_ppaddr = %s;", $op->ppaddr))
- unless $optimize_ppaddr;
-# $init->add(sprintf("padop_list[$ix].op_padix = %ld;", $op->padix));
- savesym($op, "(OP*)&padop_list[$ix]");
-}
-
-sub B::COP::save {
- my ($op, $level) = @_;
- my $sym = objsym($op);
- return $sym if defined $sym;
- warn sprintf("COP: line %d file %s\n", $op->line, $op->file)
- if $debug_cops;
- # shameless cut'n'paste from B::Deparse
- my $warn_sv;
- my $warnings = $op->warnings;
- my $is_special = $warnings->isa("B::SPECIAL");
- if ($is_special && $$warnings == 4) {
- # use warnings 'all';
- $warn_sv = $optimize_warn_sv ?
- 'INT2PTR(SV*,1)' :
- 'pWARN_ALL';
- }
- elsif ($is_special && $$warnings == 5) {
- # no warnings 'all';
- $warn_sv = $optimize_warn_sv ?
- 'INT2PTR(SV*,2)' :
- 'pWARN_NONE';
- }
- elsif ($is_special) {
- # use warnings;
- $warn_sv = $optimize_warn_sv ?
- 'INT2PTR(SV*,3)' :
- 'pWARN_STD';
- }
- else {
- # something else
- $warn_sv = $warnings->save;
- }
-
- $copsect->add(sprintf("%s, %s, NULL, NULL, %u, %d, %u, %s",
- $op->_save_common, cstring($op->label), $op->cop_seq,
- $op->arybase, $op->line,
- ( $optimize_warn_sv ? $warn_sv : 'NULL' )));
- my $ix = $copsect->index;
- $init->add(sprintf("cop_list[$ix].op_ppaddr = %s;", $op->ppaddr))
- unless $optimize_ppaddr;
- $init->add(sprintf("cop_list[$ix].cop_warnings = %s;", $warn_sv ))
- unless $optimize_warn_sv;
- $init->add(sprintf("CopFILE_set(&cop_list[$ix], %s);", cstring($op->file)),
- sprintf("CopSTASHPV_set(&cop_list[$ix], %s);", cstring($op->stashpv)));
-
- savesym($op, "(OP*)&cop_list[$ix]");
-}
-
-sub B::PMOP::save {
- my ($op, $level) = @_;
- my $sym = objsym($op);
- return $sym if defined $sym;
- my $replroot = $op->pmreplroot;
- my $replstart = $op->pmreplstart;
- my $replrootfield;
- my $replstartfield = sprintf("s\\_%x", $$replstart);
- my $gvsym;
- my $ppaddr = $op->ppaddr;
- # under ithreads, OP_PUSHRE.op_replroot is an integer
- $replrootfield = sprintf("s\\_%x", $$replroot) if ref $replroot;
- if($ithreads && $op->name eq "pushre") {
- $replrootfield = "INT2PTR(OP*,${replroot})";
- } elsif ($$replroot) {
- # OP_PUSHRE (a mutated version of OP_MATCH for the regexp
- # argument to a split) stores a GV in op_pmreplroot instead
- # of a substitution syntax tree. We don't want to walk that...
- if ($op->name eq "pushre") {
- $gvsym = $replroot->save;
-# warn "PMOP::save saving a pp_pushre with GV $gvsym\n"; # debug
- $replrootfield = 0;
- } else {
- $replstartfield = saveoptree("*ignore*", $replroot, $replstart);
- }
- }
- # pmnext handling is broken in perl itself, I think. Bad op_pmnext
- # fields aren't noticed in perl's runtime (unless you try reset) but we
- # segfault when trying to dereference it to find op->op_pmnext->op_type
- $pmopsect->add(sprintf("%s, s\\_%x, s\\_%x, %s, %s, 0, %u, 0x%x, 0x%x, 0x%x",
- $op->_save_common, ${$op->first}, ${$op->last},
- $replrootfield, $replstartfield,
- ( $ithreads ? $op->pmoffset : 0 ),
- $op->pmflags, $op->pmpermflags, $op->pmdynflags ));
- my $pm = sprintf("pmop_list[%d]", $pmopsect->index);
- $init->add(sprintf("$pm.op_ppaddr = %s;", $ppaddr))
- unless $optimize_ppaddr;
- my $re = $op->precomp;
- if (defined($re)) {
- my( $resym, $relen ) = savere( $re );
- $init->add(sprintf("PM_SETRE(&$pm,pregcomp($resym, $resym + %u, &$pm));",
- $relen));
- }
- if ($gvsym) {
- $init->add("$pm.op_pmreplroot = (OP*)$gvsym;");
- }
- savesym($op, "(OP*)&$pm");
-}
-
-sub B::SPECIAL::save {
- my ($sv) = @_;
- # special case: $$sv is not the address but an index into specialsv_list
-# warn "SPECIAL::save specialsv $$sv\n"; # debug
- my $sym = $specialsv_name[$$sv];
- if (!defined($sym)) {
- confess "unknown specialsv index $$sv passed to B::SPECIAL::save";
- }
- return $sym;
-}
-
-sub B::OBJECT::save {}
-
-sub B::NULL::save {
- my ($sv) = @_;
- my $sym = objsym($sv);
- return $sym if defined $sym;
-# warn "Saving SVt_NULL SV\n"; # debug
- # debug
- if ($$sv == 0) {
- warn "NULL::save for sv = 0 called from @{[(caller(1))[3]]}\n";
- return savesym($sv, "(void*)Nullsv /* XXX */");
- }
- $svsect->add(sprintf("0, %u, 0x%x", $sv->REFCNT , $sv->FLAGS));
- return savesym($sv, sprintf("&sv_list[%d]", $svsect->index));
-}
-
-sub B::IV::save {
- my ($sv) = @_;
- my $sym = objsym($sv);
- return $sym if defined $sym;
- $xpvivsect->add(sprintf("0, 0, 0, %d", $sv->IVX));
- $svsect->add(sprintf("&xpviv_list[%d], %lu, 0x%x",
- $xpvivsect->index, $sv->REFCNT , $sv->FLAGS));
- return savesym($sv, sprintf("&sv_list[%d]", $svsect->index));
-}
-
-sub B::NV::save {
- my ($sv) = @_;
- my $sym = objsym($sv);
- return $sym if defined $sym;
- my $val= $sv->NVX;
- $val .= '.00' if $val =~ /^-?\d+$/;
- $xpvnvsect->add(sprintf("0, 0, 0, %d, %s", $sv->IVX, $val));
- $svsect->add(sprintf("&xpvnv_list[%d], %lu, 0x%x",
- $xpvnvsect->index, $sv->REFCNT , $sv->FLAGS));
- return savesym($sv, sprintf("&sv_list[%d]", $svsect->index));
-}
-
-sub savepvn {
- my ($dest,$pv) = @_;
- my @res;
- # work with byte offsets/lengths
- my $pv = pack "a*", $pv;
- if (defined $max_string_len && length($pv) > $max_string_len) {
- push @res, sprintf("Newx(%s,%u,char);", $dest, length($pv)+1);
- my $offset = 0;
- while (length $pv) {
- my $str = substr $pv, 0, $max_string_len, '';
- push @res, sprintf("Copy(%s,$dest+$offset,%u,char);",
- cstring($str), length($str));
- $offset += length $str;
- }
- push @res, sprintf("%s[%u] = '\\0';", $dest, $offset);
- }
- else {
- push @res, sprintf("%s = savepvn(%s, %u);", $dest,
- cstring($pv), length($pv));
- }
- return @res;
-}
-
-sub B::PVLV::save {
- my ($sv) = @_;
- my $sym = objsym($sv);
- return $sym if defined $sym;
- my $pv = $sv->PV;
- my $len = length($pv);
- my ($pvsym, $pvmax) = savepv($pv);
- my ($lvtarg, $lvtarg_sym);
- $xpvlvsect->add(sprintf("%s, %u, %u, %d, %g, 0, 0, %u, %u, 0, %s",
- $pvsym, $len, $pvmax, $sv->IVX, $sv->NVX,
- $sv->TARGOFF, $sv->TARGLEN, cchar($sv->TYPE)));
- $svsect->add(sprintf("&xpvlv_list[%d], %lu, 0x%x",
- $xpvlvsect->index, $sv->REFCNT , $sv->FLAGS));
- if (!$pv_copy_on_grow) {
- $init->add(savepvn(sprintf("xpvlv_list[%d].xpv_pv",
- $xpvlvsect->index), $pv));
- }
- $sv->save_magic;
- return savesym($sv, sprintf("&sv_list[%d]", $svsect->index));
-}
-
-sub B::PVIV::save {
- my ($sv) = @_;
- my $sym = objsym($sv);
- return $sym if defined $sym;
- my( $savesym, $pvmax, $len, $pv ) = save_pv_or_rv( $sv );
- $xpvivsect->add(sprintf("%s, %u, %u, %d", $savesym, $len, $pvmax, $sv->IVX));
- $svsect->add(sprintf("&xpviv_list[%d], %u, 0x%x",
- $xpvivsect->index, $sv->REFCNT , $sv->FLAGS));
- if (defined($pv) && !$pv_copy_on_grow) {
- $init->add(savepvn(sprintf("xpviv_list[%d].xpv_pv",
- $xpvivsect->index), $pv));
- }
- return savesym($sv, sprintf("&sv_list[%d]", $svsect->index));
-}
-
-sub B::PVNV::save {
- my ($sv) = @_;
- my $sym = objsym($sv);
- return $sym if defined $sym;
- my( $savesym, $pvmax, $len, $pv ) = save_pv_or_rv( $sv );
- my $val= $sv->NVX;
- $val .= '.00' if $val =~ /^-?\d+$/;
- $xpvnvsect->add(sprintf("%s, %u, %u, %d, %s",
- $savesym, $len, $pvmax, $sv->IVX, $val));
- $svsect->add(sprintf("&xpvnv_list[%d], %lu, 0x%x",
- $xpvnvsect->index, $sv->REFCNT , $sv->FLAGS));
- if (defined($pv) && !$pv_copy_on_grow) {
- $init->add(savepvn(sprintf("xpvnv_list[%d].xpv_pv",
- $xpvnvsect->index), $pv));
- }
- return savesym($sv, sprintf("&sv_list[%d]", $svsect->index));
-}
-
-sub B::BM::save {
- my ($sv) = @_;
- my $sym = objsym($sv);
- return $sym if defined $sym;
- my $pv = pack "a*", ($sv->PV . "\0" . $sv->TABLE);
- my $len = length($pv);
- $xpvbmsect->add(sprintf("0, %u, %u, %d, %s, 0, 0, %d, %u, 0x%x",
- $len, $len + 258, $sv->IVX, $sv->NVX,
- $sv->USEFUL, $sv->PREVIOUS, $sv->RARE));
- $svsect->add(sprintf("&xpvbm_list[%d], %lu, 0x%x",
- $xpvbmsect->index, $sv->REFCNT , $sv->FLAGS));
- $sv->save_magic;
- $init->add(savepvn(sprintf("xpvbm_list[%d].xpv_pv",
- $xpvbmsect->index), $pv),
- sprintf("xpvbm_list[%d].xpv_cur = %u;",
- $xpvbmsect->index, $len - 257));
- return savesym($sv, sprintf("&sv_list[%d]", $svsect->index));
-}
-
-sub B::PV::save {
- my ($sv) = @_;
- my $sym = objsym($sv);
- return $sym if defined $sym;
- my( $savesym, $pvmax, $len, $pv ) = save_pv_or_rv( $sv );
- $xpvsect->add(sprintf("%s, %u, %u", $savesym, $len, $pvmax));
- $svsect->add(sprintf("&xpv_list[%d], %lu, 0x%x",
- $xpvsect->index, $sv->REFCNT , $sv->FLAGS));
- if (defined($pv) && !$pv_copy_on_grow) {
- $init->add(savepvn(sprintf("xpv_list[%d].xpv_pv",
- $xpvsect->index), $pv));
- }
- return savesym($sv, sprintf("&sv_list[%d]", $svsect->index));
-}
-
-sub B::PVMG::save {
- my ($sv) = @_;
- my $sym = objsym($sv);
- return $sym if defined $sym;
- my( $savesym, $pvmax, $len, $pv ) = save_pv_or_rv( $sv );
-
- $xpvmgsect->add(sprintf("%s, %u, %u, %d, %s, 0, 0",
- $savesym, $len, $pvmax,
- $sv->IVX, $sv->NVX));
- $svsect->add(sprintf("&xpvmg_list[%d], %lu, 0x%x",
- $xpvmgsect->index, $sv->REFCNT , $sv->FLAGS));
- if (defined($pv) && !$pv_copy_on_grow) {
- $init->add(savepvn(sprintf("xpvmg_list[%d].xpv_pv",
- $xpvmgsect->index), $pv));
- }
- $sym = savesym($sv, sprintf("&sv_list[%d]", $svsect->index));
- $sv->save_magic;
- return $sym;
-}
-
-sub B::PVMG::save_magic {
- my ($sv) = @_;
- #warn sprintf("saving magic for %s (0x%x)\n", class($sv), $$sv); # debug
- my $stash = $sv->SvSTASH;
- $stash->save;
- if ($$stash) {
- warn sprintf("xmg_stash = %s (0x%x)\n", $stash->NAME, $$stash)
- if $debug_mg;
- # XXX Hope stash is already going to be saved.
- $init->add(sprintf("SvSTASH(s\\_%x) = s\\_%x;", $$sv, $$stash));
- }
- my @mgchain = $sv->MAGIC;
- my ($mg, $type, $obj, $ptr,$len,$ptrsv);
- foreach $mg (@mgchain) {
- $type = $mg->TYPE;
- $ptr = $mg->PTR;
- $len=$mg->LENGTH;
- if ($debug_mg) {
- warn sprintf("magic %s (0x%x), obj %s (0x%x), type %s, ptr %s\n",
- class($sv), $$sv, class($obj), $$obj,
- cchar($type), cstring($ptr));
- }
-
- unless( $type eq 'r' ) {
- $obj = $mg->OBJ;
- $obj->save;
- }
-
- if ($len == HEf_SVKEY){
- #The pointer is an SV*
- $ptrsv=svref_2object($ptr)->save;
- $init->add(sprintf("sv_magic((SV*)s\\_%x, (SV*)s\\_%x, %s,(char *) %s, %d);",
- $$sv, $$obj, cchar($type),$ptrsv,$len));
- }elsif( $type eq 'r' ){
- my $rx = $mg->REGEX;
- my $pmop = $REGEXP{$rx};
-
- confess "PMOP not found for REGEXP $rx" unless $pmop;
-
- my( $resym, $relen ) = savere( $mg->precomp );
- my $pmsym = $pmop->save;
- $init->add( split /\n/, sprintf <<CODE, $$sv, cchar($type), cstring($ptr) );
-{
- REGEXP* rx = pregcomp($resym, $resym + $relen, (PMOP*)$pmsym);
- sv_magic((SV*)s\\_%x, (SV*)rx, %s, %s, %d);
-}
-CODE
- }else{
- $init->add(sprintf("sv_magic((SV*)s\\_%x, (SV*)s\\_%x, %s, %s, %d);",
- $$sv, $$obj, cchar($type),cstring($ptr),$len));
- }
- }
-}
-
-sub B::RV::save {
- my ($sv) = @_;
- my $sym = objsym($sv);
- return $sym if defined $sym;
- my $rv = save_rv( $sv );
- # GVs need to be handled at runtime
- if( ref( $sv->RV ) eq 'B::GV' ) {
- $xrvsect->add( "(SV*)Nullgv" );
- $init->add(sprintf("xrv_list[%d].xrv_rv = (SV*)%s;\n", $xrvsect->index, $rv));
- }
- # and stashes, too
- elsif( $sv->RV->isa( 'B::HV' ) && $sv->RV->NAME ) {
- $xrvsect->add( "(SV*)Nullhv" );
- $init->add(sprintf("xrv_list[%d].xrv_rv = (SV*)%s;\n", $xrvsect->index, $rv));
- }
- else {
- $xrvsect->add($rv);
- }
- $svsect->add(sprintf("&xrv_list[%d], %lu, 0x%x",
- $xrvsect->index, $sv->REFCNT , $sv->FLAGS));
- return savesym($sv, sprintf("&sv_list[%d]", $svsect->index));
-}
-
-sub try_autoload {
- my ($cvstashname, $cvname) = @_;
- warn sprintf("No definition for sub %s::%s\n", $cvstashname, $cvname);
- # Handle AutoLoader classes explicitly. Any more general AUTOLOAD
- # use should be handled by the class itself.
- no strict 'refs';
- my $isa = \@{"$cvstashname\::ISA"};
- if (grep($_ eq "AutoLoader", @$isa)) {
- warn "Forcing immediate load of sub derived from AutoLoader\n";
- # Tweaked version of AutoLoader::AUTOLOAD
- my $dir = $cvstashname;
- $dir =~ s(::)(/)g;
- eval { require "auto/$dir/$cvname.al" };
- if ($@) {
- warn qq(failed require "auto/$dir/$cvname.al": $@\n);
- return 0;
- } else {
- return 1;
- }
- }
-}
-sub Dummy_initxs{};
-sub B::CV::save {
- my ($cv) = @_;
- my $sym = objsym($cv);
- if (defined($sym)) {
-# warn sprintf("CV 0x%x already saved as $sym\n", $$cv); # debug
- return $sym;
- }
- # Reserve a place in svsect and xpvcvsect and record indices
- my $gv = $cv->GV;
- my ($cvname, $cvstashname);
- if ($$gv){
- $cvname = $gv->NAME;
- $cvstashname = $gv->STASH->NAME;
- }
- my $root = $cv->ROOT;
- my $cvxsub = $cv->XSUB;
- my $isconst = $cv->CvFLAGS & CVf_CONST;
- if( $isconst ) {
- my $value = $cv->XSUBANY;
- my $stash = $gv->STASH;
- my $vsym = $value->save;
- my $stsym = $stash->save;
- my $name = cstring($cvname);
- $decl->add( "static CV* cv$cv_index;" );
- $init->add( "cv$cv_index = newCONSTSUB( $stsym, NULL, $vsym );" );
- my $sym = savesym( $cv, "cv$cv_index" );
- $cv_index++;
- return $sym;
- }
- #INIT is removed from the symbol table, so this call must come
- # from PL_initav->save. Re-bootstrapping will push INIT back in
- # so nullop should be sent.
- if (!$isconst && $cvxsub && ($cvname ne "INIT")) {
- my $egv = $gv->EGV;
- my $stashname = $egv->STASH->NAME;
- if ($cvname eq "bootstrap")
- {
- my $file = $gv->FILE;
- $decl->add("/* bootstrap $file */");
- warn "Bootstrap $stashname $file\n";
- # if it not isa('DynaLoader'), it should hopefully be XSLoaded
- # ( attributes being an exception, of course )
- if( $stashname ne 'attributes' &&
- !UNIVERSAL::isa($stashname,'DynaLoader') ) {
- $xsub{$stashname}='Dynamic-XSLoaded';
- $use_xsloader = 1;
- }
- else {
- $xsub{$stashname}='Dynamic';
- }
- # $xsub{$stashname}='Static' unless $xsub{$stashname};
- return qq/NULL/;
- }
- else
- {
- # XSUBs for IO::File, IO::Handle, IO::Socket,
- # IO::Seekable and IO::Poll
- # are defined in IO.xs, so let's bootstrap it
- svref_2object( \&IO::bootstrap )->save
- if grep { $stashname eq $_ } qw(IO::File IO::Handle IO::Socket
- IO::Seekable IO::Poll);
- }
- warn sprintf("stub for XSUB $cvstashname\:\:$cvname CV 0x%x\n", $$cv) if $debug_cv;
- return qq/(perl_get_cv("$stashname\:\:$cvname",TRUE))/;
- }
- if ($cvxsub && $cvname eq "INIT") {
- no strict 'refs';
- return svref_2object(\&Dummy_initxs)->save;
- }
- my $sv_ix = $svsect->index + 1;
- $svsect->add("svix$sv_ix");
- my $xpvcv_ix = $xpvcvsect->index + 1;
- $xpvcvsect->add("xpvcvix$xpvcv_ix");
- # Save symbol now so that GvCV() doesn't recurse back to us via CvGV()
- $sym = savesym($cv, "&sv_list[$sv_ix]");
- warn sprintf("saving $cvstashname\:\:$cvname CV 0x%x as $sym\n", $$cv) if $debug_cv;
- if (!$$root && !$cvxsub) {
- if (try_autoload($cvstashname, $cvname)) {
- # Recalculate root and xsub
- $root = $cv->ROOT;
- $cvxsub = $cv->XSUB;
- if ($$root || $cvxsub) {
- warn "Successful forced autoload\n";
- }
- }
- }
- my $startfield = 0;
- my $padlist = $cv->PADLIST;
- my $pv = $cv->PV;
- my $xsub = 0;
- my $xsubany = "Nullany";
- if ($$root) {
- warn sprintf("saving op tree for CV 0x%x, root = 0x%x\n",
- $$cv, $$root) if $debug_cv;
- my $ppname = "";
- if ($$gv) {
- my $stashname = $gv->STASH->NAME;
- my $gvname = $gv->NAME;
- if ($gvname ne "__ANON__") {
- $ppname = (${$gv->FORM} == $$cv) ? "pp_form_" : "pp_sub_";
- $ppname .= ($stashname eq "main") ?
- $gvname : "$stashname\::$gvname";
- $ppname =~ s/::/__/g;
- if ($gvname eq "INIT"){
- $ppname .= "_$initsub_index";
- $initsub_index++;
- }
- }
- }
- if (!$ppname) {
- $ppname = "pp_anonsub_$anonsub_index";
- $anonsub_index++;
- }
- $startfield = saveoptree($ppname, $root, $cv->START, $padlist->ARRAY);
- warn sprintf("done saving op tree for CV 0x%x, name %s, root 0x%x\n",
- $$cv, $ppname, $$root) if $debug_cv;
- if ($$padlist) {
- warn sprintf("saving PADLIST 0x%x for CV 0x%x\n",
- $$padlist, $$cv) if $debug_cv;
- $padlist->save;
- warn sprintf("done saving PADLIST 0x%x for CV 0x%x\n",
- $$padlist, $$cv) if $debug_cv;
- }
- }
- else {
- warn sprintf("No definition for sub %s::%s (unable to autoload)\n",
- $cvstashname, $cvname); # debug
- }
- $pv = '' unless defined $pv; # Avoid use of undef warnings
- $symsect->add(sprintf("xpvcvix%d\t%s, %u, 0, %d, %s, 0, Nullhv, Nullhv, %s, s\\_%x, $xsub, $xsubany, Nullgv, \"\", %d, s\\_%x, (CV*)s\\_%x, 0x%x, 0x%x",
- $xpvcv_ix, cstring($pv), length($pv), $cv->IVX,
- $cv->NVX, $startfield, ${$cv->ROOT}, $cv->DEPTH,
- $$padlist, ${$cv->OUTSIDE}, $cv->CvFLAGS,
- $cv->OUTSIDE_SEQ));
-
- if (${$cv->OUTSIDE} == ${main_cv()}){
- $init->add(sprintf("CvOUTSIDE(s\\_%x)=PL_main_cv;",$$cv));
- $init->add(sprintf("SvREFCNT_inc(PL_main_cv);"));
- }
-
- if ($$gv) {
- $gv->save;
- $init->add(sprintf("CvGV(s\\_%x) = s\\_%x;",$$cv,$$gv));
- warn sprintf("done saving GV 0x%x for CV 0x%x\n",
- $$gv, $$cv) if $debug_cv;
- }
- if( $ithreads ) {
- $init->add( savepvn( "CvFILE($sym)", $cv->FILE) );
- }
- else {
- $init->add(sprintf("CvFILE($sym) = %s;", cstring($cv->FILE)));
- }
- my $stash = $cv->STASH;
- if ($$stash) {
- $stash->save;
- $init->add(sprintf("CvSTASH(s\\_%x) = s\\_%x;", $$cv, $$stash));
- warn sprintf("done saving STASH 0x%x for CV 0x%x\n",
- $$stash, $$cv) if $debug_cv;
- }
- $symsect->add(sprintf("svix%d\t(XPVCV*)&xpvcv_list[%u], %lu, 0x%x",
- $sv_ix, $xpvcv_ix, $cv->REFCNT +1*0 , $cv->FLAGS));
- return $sym;
-}
-
-sub B::GV::save {
- my ($gv) = @_;
- my $sym = objsym($gv);
- if (defined($sym)) {
- #warn sprintf("GV 0x%x already saved as $sym\n", $$gv); # debug
- return $sym;
- } else {
- my $ix = $gv_index++;
- $sym = savesym($gv, "gv_list[$ix]");
- #warn sprintf("Saving GV 0x%x as $sym\n", $$gv); # debug
- }
- my $is_empty = $gv->is_empty;
- my $gvname = $gv->NAME;
- my $fullname = $gv->STASH->NAME . "::" . $gvname;
- my $name = cstring($fullname);
- #warn "GV name is $name\n"; # debug
- my $egvsym;
- unless ($is_empty) {
- my $egv = $gv->EGV;
- if ($$gv != $$egv) {
- #warn(sprintf("EGV name is %s, saving it now\n",
- # $egv->STASH->NAME . "::" . $egv->NAME)); # debug
- $egvsym = $egv->save;
- }
- }
- $init->add(qq[$sym = gv_fetchpv($name, TRUE, SVt_PV);],
- sprintf("SvFLAGS($sym) = 0x%x;", $gv->FLAGS ),
- sprintf("GvFLAGS($sym) = 0x%x;", $gv->GvFLAGS));
- $init->add(sprintf("GvLINE($sym) = %u;", $gv->LINE)) unless $is_empty;
- # XXX hack for when Perl accesses PVX of GVs
- $init->add("SvPVX($sym) = emptystring;\n");
- # Shouldn't need to do save_magic since gv_fetchpv handles that
- #$gv->save_magic;
- # XXX will always be > 1!!!
- my $refcnt = $gv->REFCNT + 1;
- $init->add(sprintf("SvREFCNT($sym) += %u;", $refcnt - 1 )) if $refcnt > 1;
-
- return $sym if $is_empty;
-
- # XXX B::walksymtable creates an extra reference to the GV
- my $gvrefcnt = $gv->GvREFCNT;
- if ($gvrefcnt > 1) {
- $init->add(sprintf("GvREFCNT($sym) += %u;", $gvrefcnt - 1));
- }
- # some non-alphavetic globs require some parts to be saved
- # ( ex. %!, but not $! )
- sub Save_HV() { 1 }
- sub Save_AV() { 2 }
- sub Save_SV() { 4 }
- sub Save_CV() { 8 }
- sub Save_FORM() { 16 }
- sub Save_IO() { 32 }
- my $savefields = 0;
- if( $gvname !~ /^([^A-Za-z]|STDIN|STDOUT|STDERR|ARGV|SIG|ENV)$/ ) {
- $savefields = Save_HV|Save_AV|Save_SV|Save_CV|Save_FORM|Save_IO;
- }
- elsif( $gvname eq '!' ) {
- $savefields = Save_HV;
- }
- # attributes::bootstrap is created in perl_parse
- # saving it would overwrite it, because perl_init() is
- # called after perl_parse()
- $savefields&=~Save_CV if $fullname eq 'attributes::bootstrap';
-
- # save it
- # XXX is that correct?
- if (defined($egvsym) && $egvsym !~ m/Null/ ) {
- # Shared glob *foo = *bar
- $init->add("gp_free($sym);",
- "GvGP($sym) = GvGP($egvsym);");
- } elsif ($savefields) {
- # Don't save subfields of special GVs (*_, *1, *# and so on)
-# warn "GV::save saving subfields\n"; # debug
- my $gvsv = $gv->SV;
- if ($$gvsv && $savefields&Save_SV) {
- $gvsv->save;
- $init->add(sprintf("GvSV($sym) = s\\_%x;", $$gvsv));
-# warn "GV::save \$$name\n"; # debug
- }
- my $gvav = $gv->AV;
- if ($$gvav && $savefields&Save_AV) {
- $gvav->save;
- $init->add(sprintf("GvAV($sym) = s\\_%x;", $$gvav));
-# warn "GV::save \@$name\n"; # debug
- }
- my $gvhv = $gv->HV;
- if ($$gvhv && $savefields&Save_HV) {
- $gvhv->save;
- $init->add(sprintf("GvHV($sym) = s\\_%x;", $$gvhv));
-# warn "GV::save \%$name\n"; # debug
- }
- my $gvcv = $gv->CV;
- if ($$gvcv && $savefields&Save_CV) {
- my $origname=cstring($gvcv->GV->EGV->STASH->NAME .
- "::" . $gvcv->GV->EGV->NAME);
- if (0 && $gvcv->XSUB && $name ne $origname) { #XSUB alias
- # must save as a 'stub' so newXS() has a CV to populate
- $init->add("{ CV *cv;");
- $init->add("\tcv=perl_get_cv($origname,TRUE);");
- $init->add("\tGvCV($sym)=cv;");
- $init->add("\tSvREFCNT_inc((SV *)cv);");
- $init->add("}");
- } else {
- $init->add(sprintf("GvCV($sym) = (CV*)(%s);", $gvcv->save));
-# warn "GV::save &$name\n"; # debug
- }
- }
- $init->add(sprintf("GvFILE($sym) = %s;", cstring($gv->FILE)));
-# warn "GV::save GvFILE(*$name)\n"; # debug
- my $gvform = $gv->FORM;
- if ($$gvform && $savefields&Save_FORM) {
- $gvform->save;
- $init->add(sprintf("GvFORM($sym) = (CV*)s\\_%x;", $$gvform));
-# warn "GV::save GvFORM(*$name)\n"; # debug
- }
- my $gvio = $gv->IO;
- if ($$gvio && $savefields&Save_IO) {
- $gvio->save;
- $init->add(sprintf("GvIOp($sym) = s\\_%x;", $$gvio));
- if( $fullname =~ m/::DATA$/ && $save_data_fh ) {
- no strict 'refs';
- my $fh = *{$fullname}{IO};
- use strict 'refs';
- $gvio->save_data( $fullname, <$fh> ) if $fh->opened;
- }
-# warn "GV::save GvIO(*$name)\n"; # debug
- }
- }
- return $sym;
-}
-
-sub B::AV::save {
- my ($av) = @_;
- my $sym = objsym($av);
- return $sym if defined $sym;
- my $line = "0, -1, -1, 0, 0.0, 0, Nullhv, 0, 0";
- $line .= sprintf(", 0x%x", $av->AvFLAGS) if $] < 5.009;
- $xpvavsect->add($line);
- $svsect->add(sprintf("&xpvav_list[%d], %lu, 0x%x",
- $xpvavsect->index, $av->REFCNT , $av->FLAGS));
- my $sv_list_index = $svsect->index;
- my $fill = $av->FILL;
- $av->save_magic;
- if ($debug_av) {
- $line = sprintf("saving AV 0x%x FILL=$fill", $$av);
- $line .= sprintf(" AvFLAGS=0x%x", $av->AvFLAGS) if $] < 5.009;
- warn $line;
- }
- # XXX AVf_REAL is wrong test: need to save comppadlist but not stack
- #if ($fill > -1 && ($avflags & AVf_REAL)) {
- if ($fill > -1) {
- my @array = $av->ARRAY;
- if ($debug_av) {
- my $el;
- my $i = 0;
- foreach $el (@array) {
- warn sprintf("AV 0x%x[%d] = %s 0x%x\n",
- $$av, $i++, class($el), $$el);
- }
- }
-# my @names = map($_->save, @array);
- # XXX Better ways to write loop?
- # Perhaps svp[0] = ...; svp[1] = ...; svp[2] = ...;
- # Perhaps I32 i = 0; svp[i++] = ...; svp[i++] = ...; svp[i++] = ...;
-
- # micro optimization: op/pat.t ( and other code probably )
- # has very large pads ( 20k/30k elements ) passing them to
- # ->add is a performance bottleneck: passing them as a
- # single string cuts runtime from 6min20sec to 40sec
-
- # you want to keep this out of the no_split/split
- # map("\t*svp++ = (SV*)$_;", @names),
- my $acc = '';
- foreach my $i ( 0..$#array ) {
- $acc .= "\t*svp++ = (SV*)" . $array[$i]->save . ";\n\t";
- }
- $acc .= "\n";
-
- $init->no_split;
- $init->add("{",
- "\tSV **svp;",
- "\tAV *av = (AV*)&sv_list[$sv_list_index];",
- "\tav_extend(av, $fill);",
- "\tsvp = AvARRAY(av);" );
- $init->add($acc);
- $init->add("\tAvFILLp(av) = $fill;",
- "}");
- $init->split;
- # we really added a lot of lines ( B::C::InitSection->add
- # should really scan for \n, but that would slow
- # it down
- $init->inc_count( $#array );
- } else {
- my $max = $av->MAX;
- $init->add("av_extend((AV*)&sv_list[$sv_list_index], $max);")
- if $max > -1;
- }
- return savesym($av, "(AV*)&sv_list[$sv_list_index]");
-}
-
-sub B::HV::save {
- my ($hv) = @_;
- my $sym = objsym($hv);
- return $sym if defined $sym;
- my $name = $hv->NAME;
- if ($name) {
- # It's a stash
-
- # A perl bug means HvPMROOT isn't altered when a PMOP is freed. Usually
- # the only symptom is that sv_reset tries to reset the PMf_USED flag of
- # a trashed op but we look at the trashed op_type and segfault.
- #my $adpmroot = ${$hv->PMROOT};
- my $adpmroot = 0;
- $decl->add("static HV *hv$hv_index;");
- # XXX Beware of weird package names containing double-quotes, \n, ...?
- $init->add(qq[hv$hv_index = gv_stashpv("$name", TRUE);]);
- if ($adpmroot) {
- $init->add(sprintf("HvPMROOT(hv$hv_index) = (PMOP*)s\\_%x;",
- $adpmroot));
- }
- $sym = savesym($hv, "hv$hv_index");
- $hv_index++;
- return $sym;
- }
- # It's just an ordinary HV
- $xpvhvsect->add(sprintf("0, 0, %d, 0, 0.0, 0, Nullhv, %d, 0, 0, 0",
- $hv->MAX, $hv->RITER));
- $svsect->add(sprintf("&xpvhv_list[%d], %lu, 0x%x",
- $xpvhvsect->index, $hv->REFCNT , $hv->FLAGS));
- my $sv_list_index = $svsect->index;
- my @contents = $hv->ARRAY;
- if (@contents) {
- my $i;
- for ($i = 1; $i < @contents; $i += 2) {
- $contents[$i] = $contents[$i]->save;
- }
- $init->no_split;
- $init->add("{", "\tHV *hv = (HV*)&sv_list[$sv_list_index];");
- while (@contents) {
- my ($key, $value) = splice(@contents, 0, 2);
- $init->add(sprintf("\thv_store(hv, %s, %u, %s, %s);",
- cstring($key),length(pack "a*",$key),
- $value, hash($key)));
-# $init->add(sprintf("\thv_store(hv, %s, %u, %s, %s);",
-# cstring($key),length($key),$value, 0));
- }
- $init->add("}");
- $init->split;
- }
- $hv->save_magic();
- return savesym($hv, "(HV*)&sv_list[$sv_list_index]");
-}
-
-sub B::IO::save_data {
- my( $io, $globname, @data ) = @_;
- my $data = join '', @data;
-
- # XXX using $DATA might clobber it!
- my $sym = svref_2object( \\$data )->save;
- $init->add( split /\n/, <<CODE );
- {
- GV* gv = (GV*)gv_fetchpv( "$globname", TRUE, SVt_PV );
- SV* sv = $sym;
- GvSV( gv ) = sv;
- }
-CODE
- # for PerlIO::scalar
- $use_xsloader = 1;
- $init->add_eval( sprintf 'open(%s, "<", $%s)', $globname, $globname );
-}
-
-sub B::IO::save {
- my ($io) = @_;
- my $sym = objsym($io);
- return $sym if defined $sym;
- my $pv = $io->PV;
- $pv = '' unless defined $pv;
- my $len = length($pv);
- $xpviosect->add(sprintf("0, %u, %u, %d, %s, 0, 0, 0, 0, 0, %d, %d, %d, %d, %s, Nullgv, %s, Nullgv, %s, Nullgv, %d, %s, 0x%x",
- $len, $len+1, $io->IVX, $io->NVX, $io->LINES,
- $io->PAGE, $io->PAGE_LEN, $io->LINES_LEFT,
- cstring($io->TOP_NAME), cstring($io->FMT_NAME),
- cstring($io->BOTTOM_NAME), $io->SUBPROCESS,
- cchar($io->IoTYPE), $io->IoFLAGS));
- $svsect->add(sprintf("&xpvio_list[%d], %lu, 0x%x",
- $xpviosect->index, $io->REFCNT , $io->FLAGS));
- $sym = savesym($io, sprintf("(IO*)&sv_list[%d]", $svsect->index));
- # deal with $x = *STDIN/STDOUT/STDERR{IO}
- my $perlio_func;
- foreach ( qw(stdin stdout stderr) ) {
- $io->IsSTD($_) and $perlio_func = $_;
- }
- if( $perlio_func ) {
- $init->add( "IoIFP(${sym})=PerlIO_${perlio_func}();" );
- $init->add( "IoOFP(${sym})=PerlIO_${perlio_func}();" );
- }
-
- my ($field, $fsym);
- foreach $field (qw(TOP_GV FMT_GV BOTTOM_GV)) {
- $fsym = $io->$field();
- if ($$fsym) {
- $init->add(sprintf("Io$field($sym) = (GV*)s\\_%x;", $$fsym));
- $fsym->save;
- }
- }
- $io->save_magic;
- return $sym;
-}
-
-sub B::SV::save {
- my $sv = shift;
- # This is where we catch an honest-to-goodness Nullsv (which gets
- # blessed into B::SV explicitly) and any stray erroneous SVs.
- return 0 unless $$sv;
- confess sprintf("cannot save that type of SV: %s (0x%x)\n",
- class($sv), $$sv);
-}
-
-sub output_all {
- my $init_name = shift;
- my $section;
- my @sections = ($opsect, $unopsect, $binopsect, $logopsect, $condopsect,
- $listopsect, $pmopsect, $svopsect, $padopsect, $pvopsect,
- $loopsect, $copsect, $svsect, $xpvsect,
- $xpvavsect, $xpvhvsect, $xpvcvsect, $xpvivsect, $xpvnvsect,
- $xpvmgsect, $xpvlvsect, $xrvsect, $xpvbmsect, $xpviosect);
- $symsect->output(\*STDOUT, "#define %s\n");
- print "\n";
- output_declarations();
- foreach $section (@sections) {
- my $lines = $section->index + 1;
- if ($lines) {
- my $name = $section->name;
- my $typename = ($name eq "xpvcv") ? "XPVCV_or_similar" : uc($name);
- print "Static $typename ${name}_list[$lines];\n";
- }
- }
- # XXX hack for when Perl accesses PVX of GVs
- print 'Static char emptystring[] = "\0";';
-
- $decl->output(\*STDOUT, "%s\n");
- print "\n";
- foreach $section (@sections) {
- my $lines = $section->index + 1;
- if ($lines) {
- my $name = $section->name;
- my $typename = ($name eq "xpvcv") ? "XPVCV_or_similar" : uc($name);
- printf "static %s %s_list[%u] = {\n", $typename, $name, $lines;
- $section->output(\*STDOUT, "\t{ %s }, /* %d */\n");
- print "};\n\n";
- }
- }
-
- $init->output(\*STDOUT, "\t%s\n", $init_name );
- if ($verbose) {
- warn compile_stats();
- warn "NULLOP count: $nullop_count\n";
- }
-}
-
-sub output_declarations {
- print <<'EOT';
-#ifdef BROKEN_STATIC_REDECL
-#define Static extern
-#else
-#define Static static
-#endif /* BROKEN_STATIC_REDECL */
-
-#ifdef BROKEN_UNION_INIT
-/*
- * Cribbed from cv.h with ANY (a union) replaced by void*.
- * Some pre-Standard compilers can't cope with initialising unions. Ho hum.
- */
-typedef struct {
- char * xpv_pv; /* pointer to malloced string */
- STRLEN xpv_cur; /* length of xp_pv as a C string */
- STRLEN xpv_len; /* allocated size */
- IV xof_off; /* integer value */
- NV xnv_nv; /* numeric value, if any */
- MAGIC* xmg_magic; /* magic for scalar array */
- HV* xmg_stash; /* class package */
-
- HV * xcv_stash;
- OP * xcv_start;
- OP * xcv_root;
- void (*xcv_xsub) (pTHX_ CV*);
- ANY xcv_xsubany;
- GV * xcv_gv;
- char * xcv_file;
- long xcv_depth; /* >= 2 indicates recursive call */
- AV * xcv_padlist;
- CV * xcv_outside;
-EOT
- print <<'EOT' if $] < 5.009;
-#ifdef USE_5005THREADS
- perl_mutex *xcv_mutexp;
- struct perl_thread *xcv_owner; /* current owner thread */
-#endif /* USE_5005THREADS */
-EOT
- print <<'EOT';
- cv_flags_t xcv_flags;
- U32 xcv_outside_seq; /* the COP sequence (at the point of our
- * compilation) in the lexically enclosing
- * sub */
-} XPVCV_or_similar;
-#define ANYINIT(i) i
-#else
-#define XPVCV_or_similar XPVCV
-#define ANYINIT(i) {i}
-#endif /* BROKEN_UNION_INIT */
-#define Nullany ANYINIT(0)
-
-#define UNUSED 0
-#define sym_0 0
-EOT
- print "static GV *gv_list[$gv_index];\n" if $gv_index;
- print "\n";
-}
-
-
-sub output_boilerplate {
- print <<'EOT';
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-/* Workaround for mapstart: the only op which needs a different ppaddr */
-#undef Perl_pp_mapstart
-#define Perl_pp_mapstart Perl_pp_grepstart
-#undef OP_MAPSTART
-#define OP_MAPSTART OP_GREPSTART
-#define XS_DynaLoader_boot_DynaLoader boot_DynaLoader
-EXTERN_C void boot_DynaLoader (pTHX_ CV* cv);
-
-static void xs_init (pTHX);
-static void dl_init (pTHX);
-static PerlInterpreter *my_perl;
-EOT
-}
-
-sub init_op_addr {
- my( $op_type, $num ) = @_;
- my $op_list = $op_type."_list";
-
- $init->add( split /\n/, <<EOT );
- {
- int i;
-
- for( i = 0; i < ${num}; ++i )
- {
- ${op_list}\[i].op_ppaddr = PL_ppaddr[INT2PTR(int,${op_list}\[i].op_ppaddr)];
- }
- }
-EOT
-}
-
-sub init_op_warn {
- my( $op_type, $num ) = @_;
- my $op_list = $op_type."_list";
-
- # for resons beyond imagination, MSVC5 considers pWARN_ALL non-const
- $init->add( split /\n/, <<EOT );
- {
- int i;
-
- for( i = 0; i < ${num}; ++i )
- {
- switch( (int)(${op_list}\[i].cop_warnings) )
- {
- case 1:
- ${op_list}\[i].cop_warnings = pWARN_ALL;
- break;
- case 2:
- ${op_list}\[i].cop_warnings = pWARN_NONE;
- break;
- case 3:
- ${op_list}\[i].cop_warnings = pWARN_STD;
- break;
- default:
- break;
- }
- }
- }
-EOT
-}
-
-sub output_main {
- print <<'EOT';
-/* if USE_IMPLICIT_SYS, we need a 'real' exit */
-#if defined(exit)
-#undef exit
-#endif
-
-int
-main(int argc, char **argv, char **env)
-{
- int exitstatus;
- int i;
- char **fakeargv;
- GV* tmpgv;
- SV* tmpsv;
- int options_count;
-
- PERL_SYS_INIT3(&argc,&argv,&env);
-
- if (!PL_do_undump) {
- my_perl = perl_alloc();
- if (!my_perl)
- exit(1);
- perl_construct( my_perl );
- PL_perl_destruct_level = 0;
- }
-EOT
- if( $ithreads ) {
- # XXX init free elems!
- my $pad_len = regex_padav->FILL + 1 - 1; # first is an avref
-
- print <<EOT;
-#ifdef USE_ITHREADS
- for( i = 0; i < $pad_len; ++i ) {
- av_push( PL_regex_padav, newSViv(0) );
- }
- PL_regex_pad = AvARRAY( PL_regex_padav );
-#endif
-EOT
- }
-
- print <<'EOT';
-#ifdef CSH
- if (!PL_cshlen)
- PL_cshlen = strlen(PL_cshname);
-#endif
-
-#ifdef ALLOW_PERL_OPTIONS
-#define EXTRA_OPTIONS 3
-#else
-#define EXTRA_OPTIONS 4
-#endif /* ALLOW_PERL_OPTIONS */
- Newx(fakeargv, argc + EXTRA_OPTIONS + 1, char *);
-
- fakeargv[0] = argv[0];
- fakeargv[1] = "-e";
- fakeargv[2] = "";
- options_count = 3;
-EOT
- # honour -T
- print <<EOT;
- if( ${^TAINT} ) {
- fakeargv[options_count] = "-T";
- ++options_count;
- }
-EOT
- print <<'EOT';
-#ifndef ALLOW_PERL_OPTIONS
- fakeargv[options_count] = "--";
- ++options_count;
-#endif /* ALLOW_PERL_OPTIONS */
- for (i = 1; i < argc; i++)
- fakeargv[i + options_count - 1] = argv[i];
- fakeargv[argc + options_count - 1] = 0;
-
- exitstatus = perl_parse(my_perl, xs_init, argc + options_count - 1,
- fakeargv, NULL);
-
- if (exitstatus)
- exit( exitstatus );
-
- TAINT;
-EOT
-
- if( $use_perl_script_name ) {
- my $dollar_0 = $0;
- $dollar_0 =~ s/\\/\\\\/g;
- $dollar_0 = '"' . $dollar_0 . '"';
-
- print <<EOT;
- if ((tmpgv = gv_fetchpv("0",TRUE, SVt_PV))) {/* $0 */
- tmpsv = GvSV(tmpgv);
- sv_setpv(tmpsv, ${dollar_0});
- SvSETMAGIC(tmpsv);
- }
-EOT
- }
- else {
- print <<EOT;
- if ((tmpgv = gv_fetchpv("0",TRUE, SVt_PV))) {/* $0 */
- tmpsv = GvSV(tmpgv);
- sv_setpv(tmpsv, argv[0]);
- SvSETMAGIC(tmpsv);
- }
-EOT
- }
-
- print <<'EOT';
- if ((tmpgv = gv_fetchpv("\030",TRUE, SVt_PV))) {/* $^X */
- tmpsv = GvSV(tmpgv);
-#ifdef WIN32
- sv_setpv(tmpsv,"perl.exe");
-#else
- sv_setpv(tmpsv,"perl");
-#endif
- SvSETMAGIC(tmpsv);
- }
-
- TAINT_NOT;
-
- /* PL_main_cv = PL_compcv; */
- PL_compcv = 0;
-
- exitstatus = perl_init();
- if (exitstatus)
- exit( exitstatus );
- dl_init(aTHX);
-
- exitstatus = perl_run( my_perl );
-
- perl_destruct( my_perl );
- perl_free( my_perl );
-
- PERL_SYS_TERM();
-
- exit( exitstatus );
-}
-
-/* yanked from perl.c */
-static void
-xs_init(pTHX)
-{
- char *file = __FILE__;
- dTARG;
- dSP;
-EOT
- print "\n#ifdef USE_DYNAMIC_LOADING";
- print qq/\n\tnewXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file);/;
- print "\n#endif\n" ;
- # delete $xsub{'DynaLoader'};
- delete $xsub{'UNIVERSAL'};
- print("/* bootstrapping code*/\n\tSAVETMPS;\n");
- print("\ttarg=sv_newmortal();\n");
- print "#ifdef USE_DYNAMIC_LOADING\n";
- print "\tPUSHMARK(sp);\n";
- print qq/\tXPUSHp("DynaLoader",strlen("DynaLoader"));\n/;
- print qq/\tPUTBACK;\n/;
- print "\tboot_DynaLoader(aTHX_ NULL);\n";
- print qq/\tSPAGAIN;\n/;
- print "#endif\n";
- foreach my $stashname (keys %xsub){
- if ($xsub{$stashname} !~ m/Dynamic/ ) {
- my $stashxsub=$stashname;
- $stashxsub =~ s/::/__/g;
- print "\tPUSHMARK(sp);\n";
- print qq/\tXPUSHp("$stashname",strlen("$stashname"));\n/;
- print qq/\tPUTBACK;\n/;
- print "\tboot_$stashxsub(aTHX_ NULL);\n";
- print qq/\tSPAGAIN;\n/;
- }
- }
- print("\tFREETMPS;\n/* end bootstrapping code */\n");
- print "}\n";
-
-print <<'EOT';
-static void
-dl_init(pTHX)
-{
- char *file = __FILE__;
- dTARG;
- dSP;
-EOT
- print("/* Dynamicboot strapping code*/\n\tSAVETMPS;\n");
- print("\ttarg=sv_newmortal();\n");
- foreach my $stashname (@DynaLoader::dl_modules) {
- warn "Loaded $stashname\n";
- if (exists($xsub{$stashname}) && $xsub{$stashname} =~ m/Dynamic/) {
- my $stashxsub=$stashname;
- $stashxsub =~ s/::/__/g;
- print "\tPUSHMARK(sp);\n";
- print qq/\tXPUSHp("$stashname",/,length($stashname),qq/);\n/;
- print qq/\tPUTBACK;\n/;
- print "#ifdef USE_DYNAMIC_LOADING\n";
- warn "bootstrapping $stashname added to xs_init\n";
- if( $xsub{$stashname} eq 'Dynamic' ) {
- print qq/\tperl_call_method("bootstrap",G_DISCARD);\n/;
- }
- else {
- print qq/\tperl_call_pv("XSLoader::load",G_DISCARD);\n/;
- }
- print "#else\n";
- print "\tboot_$stashxsub(aTHX_ NULL);\n";
- print "#endif\n";
- print qq/\tSPAGAIN;\n/;
- }
- }
- print("\tFREETMPS;\n/* end Dynamic bootstrapping code */\n");
- print "}\n";
-}
-sub dump_symtable {
- # For debugging
- my ($sym, $val);
- warn "----Symbol table:\n";
- while (($sym, $val) = each %symtable) {
- warn "$sym => $val\n";
- }
- warn "---End of symbol table\n";
-}
-
-sub save_object {
- my $sv;
- foreach $sv (@_) {
- svref_2object($sv)->save;
- }
-}
-
-sub Dummy_BootStrap { }
-
-sub B::GV::savecv
-{
- my $gv = shift;
- my $package=$gv->STASH->NAME;
- my $name = $gv->NAME;
- my $cv = $gv->CV;
- my $sv = $gv->SV;
- my $av = $gv->AV;
- my $hv = $gv->HV;
-
- my $fullname = $gv->STASH->NAME . "::" . $gv->NAME;
-
- # We may be looking at this package just because it is a branch in the
- # symbol table which is on the path to a package which we need to save
- # e.g. this is 'Getopt' and we need to save 'Getopt::Long'
- #
- return unless ($unused_sub_packages{$package});
- return unless ($$cv || $$av || $$sv || $$hv);
- $gv->save;
-}
-
-sub mark_package
-{
- my $package = shift;
- unless ($unused_sub_packages{$package})
- {
- no strict 'refs';
- $unused_sub_packages{$package} = 1;
- if (defined @{$package.'::ISA'})
- {
- foreach my $isa (@{$package.'::ISA'})
- {
- if ($isa eq 'DynaLoader')
- {
- unless (defined(&{$package.'::bootstrap'}))
- {
- warn "Forcing bootstrap of $package\n";
- eval { $package->bootstrap };
- }
- }
-# else
- {
- unless ($unused_sub_packages{$isa})
- {
- warn "$isa saved (it is in $package\'s \@ISA)\n";
- mark_package($isa);
- }
- }
- }
- }
- }
- return 1;
-}
-
-sub should_save
-{
- no strict qw(vars refs);
- my $package = shift;
- $package =~ s/::$//;
- return $unused_sub_packages{$package} = 0 if ($package =~ /::::/); # skip ::::ISA::CACHE etc.
- # warn "Considering $package\n";#debug
- foreach my $u (grep($unused_sub_packages{$_},keys %unused_sub_packages))
- {
- # If this package is a prefix to something we are saving, traverse it
- # but do not mark it for saving if it is not already
- # e.g. to get to Getopt::Long we need to traverse Getopt but need
- # not save Getopt
- return 1 if ($u =~ /^$package\:\:/);
- }
- if (exists $unused_sub_packages{$package})
- {
- # warn "Cached $package is ".$unused_sub_packages{$package}."\n";
- delete_unsaved_hashINC($package) unless $unused_sub_packages{$package} ;
- return $unused_sub_packages{$package};
- }
- # Omit the packages which we use (and which cause grief
- # because of fancy "goto &$AUTOLOAD" stuff).
- # XXX Surely there must be a nicer way to do this.
- if ($package eq "FileHandle" || $package eq "Config" ||
- $package eq "SelectSaver" || $package =~/^(B|IO)::/)
- {
- delete_unsaved_hashINC($package);
- return $unused_sub_packages{$package} = 0;
- }
- # Now see if current package looks like an OO class this is probably too strong.
- foreach my $m (qw(new DESTROY TIESCALAR TIEARRAY TIEHASH TIEHANDLE))
- {
- if (UNIVERSAL::can($package, $m))
- {
- warn "$package has method $m: saving package\n";#debug
- return mark_package($package);
- }
- }
- delete_unsaved_hashINC($package);
- return $unused_sub_packages{$package} = 0;
-}
-sub delete_unsaved_hashINC{
- my $packname=shift;
- $packname =~ s/\:\:/\//g;
- $packname .= '.pm';
-# warn "deleting $packname" if $INC{$packname} ;# debug
- delete $INC{$packname};
-}
-sub walkpackages
-{
- my ($symref, $recurse, $prefix) = @_;
- my $sym;
- my $ref;
- no strict 'vars';
- $prefix = '' unless defined $prefix;
- while (($sym, $ref) = each %$symref)
- {
- local(*glob);
- *glob = $ref;
- if ($sym =~ /::$/)
- {
- $sym = $prefix . $sym;
- if ($sym ne "main::" && $sym ne "<none>::" && &$recurse($sym))
- {
- walkpackages(\%glob, $recurse, $sym);
- }
- }
- }
-}
-
-
-sub save_unused_subs
-{
- no strict qw(refs);
- &descend_marked_unused;
- warn "Prescan\n";
- walkpackages(\%{"main::"}, sub { should_save($_[0]); return 1 });
- warn "Saving methods\n";
- walksymtable(\%{"main::"}, "savecv", \&should_save);
-}
-
-sub save_context
-{
- my $curpad_nam = (comppadlist->ARRAY)[0]->save;
- my $curpad_sym = (comppadlist->ARRAY)[1]->save;
- my $inc_hv = svref_2object(\%INC)->save;
- my $inc_av = svref_2object(\@INC)->save;
- my $amagic_generate= amagic_generation;
- $init->add( "PL_curpad = AvARRAY($curpad_sym);",
- "GvHV(PL_incgv) = $inc_hv;",
- "GvAV(PL_incgv) = $inc_av;",
- "av_store(CvPADLIST(PL_main_cv),0,SvREFCNT_inc($curpad_nam));",
- "av_store(CvPADLIST(PL_main_cv),1,SvREFCNT_inc($curpad_sym));",
- "PL_amagic_generation= $amagic_generate;" );
-}
-
-sub descend_marked_unused {
- foreach my $pack (keys %unused_sub_packages)
- {
- mark_package($pack);
- }
-}
-
-sub save_main {
- # this is mainly for the test suite
- my $warner = $SIG{__WARN__};
- local $SIG{__WARN__} = sub { print STDERR @_ };
-
- warn "Starting compile\n";
- warn "Walking tree\n";
- seek(STDOUT,0,0); #exclude print statements in BEGIN{} into output
- walkoptree(main_root, "save");
- warn "done main optree, walking symtable for extras\n" if $debug_cv;
- save_unused_subs();
- # XSLoader was used, force saving of XSLoader::load
- if( $use_xsloader ) {
- my $cv = svref_2object( \&XSLoader::load );
- $cv->save;
- }
- # save %SIG ( in case it was set in a BEGIN block )
- if( $save_sig ) {
- local $SIG{__WARN__} = $warner;
- $init->no_split;
- $init->add("{", "\tHV* hv = get_hv(\"main::SIG\",1);" );
- foreach my $k ( keys %SIG ) {
- next unless ref $SIG{$k};
- my $cv = svref_2object( \$SIG{$k} );
- my $sv = $cv->save;
- $init->add('{',sprintf 'SV* sv = (SV*)%s;', $sv );
- $init->add(sprintf("\thv_store(hv, %s, %u, %s, %s);",
- cstring($k),length(pack "a*",$k),
- 'sv', hash($k)));
- $init->add('mg_set(sv);','}');
- }
- $init->add('}');
- $init->split;
- }
- # honour -w
- $init->add( sprintf " PL_dowarn = ( %s ) ? G_WARN_ON : G_WARN_OFF;", $^W );
- #
- my $init_av = init_av->save;
- my $end_av = end_av->save;
- $init->add(sprintf("PL_main_root = s\\_%x;", ${main_root()}),
- sprintf("PL_main_start = s\\_%x;", ${main_start()}),
- "PL_initav = (AV *) $init_av;",
- "PL_endav = (AV*) $end_av;");
- save_context();
- # init op addrs ( must be the last action, otherwise
- # some ops might not be initialized
- if( $optimize_ppaddr ) {
- foreach my $i ( @op_sections ) {
- my $section = $$i;
- next unless $section->index >= 0;
- init_op_addr( $section->name, $section->index + 1);
- }
- }
- init_op_warn( $copsect->name, $copsect->index + 1)
- if $optimize_warn_sv && $copsect->index >= 0;
-
- warn "Writing output\n";
- output_boilerplate();
- print "\n";
- output_all("perl_init");
- print "\n";
- output_main();
-}
-
-sub init_sections {
- my @sections = (decl => \$decl, sym => \$symsect,
- binop => \$binopsect, condop => \$condopsect,
- cop => \$copsect, padop => \$padopsect,
- listop => \$listopsect, logop => \$logopsect,
- loop => \$loopsect, op => \$opsect, pmop => \$pmopsect,
- pvop => \$pvopsect, svop => \$svopsect, unop => \$unopsect,
- sv => \$svsect, xpv => \$xpvsect, xpvav => \$xpvavsect,
- xpvhv => \$xpvhvsect, xpvcv => \$xpvcvsect,
- xpviv => \$xpvivsect, xpvnv => \$xpvnvsect,
- xpvmg => \$xpvmgsect, xpvlv => \$xpvlvsect,
- xrv => \$xrvsect, xpvbm => \$xpvbmsect,
- xpvio => \$xpviosect);
- my ($name, $sectref);
- while (($name, $sectref) = splice(@sections, 0, 2)) {
- $$sectref = new B::C::Section $name, \%symtable, 0;
- }
- $init = new B::C::InitSection 'init', \%symtable, 0;
-}
-
-sub mark_unused
-{
- my ($arg,$val) = @_;
- $unused_sub_packages{$arg} = $val;
-}
-
-sub compile {
- my @options = @_;
- my ($option, $opt, $arg);
- my @eval_at_startup;
- my %option_map = ( 'cog' => \$pv_copy_on_grow,
- 'save-data' => \$save_data_fh,
- 'ppaddr' => \$optimize_ppaddr,
- 'warn-sv' => \$optimize_warn_sv,
- 'use-script-name' => \$use_perl_script_name,
- 'save-sig-hash' => \$save_sig,
- );
- my %optimization_map = ( 0 => [ qw() ], # special case
- 1 => [ qw(-fcog) ],
- 2 => [ qw(-fwarn-sv -fppaddr) ],
- );
- OPTION:
- while ($option = shift @options) {
- if ($option =~ /^-(.)(.*)/) {
- $opt = $1;
- $arg = $2;
- } else {
- unshift @options, $option;
- last OPTION;
- }
- if ($opt eq "-" && $arg eq "-") {
- shift @options;
- last OPTION;
- }
- if ($opt eq "w") {
- $warn_undefined_syms = 1;
- } elsif ($opt eq "D") {
- $arg ||= shift @options;
- foreach $arg (split(//, $arg)) {
- if ($arg eq "o") {
- B->debug(1);
- } elsif ($arg eq "c") {
- $debug_cops = 1;
- } elsif ($arg eq "A") {
- $debug_av = 1;
- } elsif ($arg eq "C") {
- $debug_cv = 1;
- } elsif ($arg eq "M") {
- $debug_mg = 1;
- } else {
- warn "ignoring unknown debug option: $arg\n";
- }
- }
- } elsif ($opt eq "o") {
- $arg ||= shift @options;
- open(STDOUT, ">$arg") or return "$arg: $!\n";
- } elsif ($opt eq "v") {
- $verbose = 1;
- } elsif ($opt eq "u") {
- $arg ||= shift @options;
- mark_unused($arg,undef);
- } elsif ($opt eq "f") {
- $arg ||= shift @options;
- $arg =~ m/(no-)?(.*)/;
- my $no = defined($1) && $1 eq 'no-';
- $arg = $no ? $2 : $arg;
- if( exists $option_map{$arg} ) {
- ${$option_map{$arg}} = !$no;
- } else {
- die "Invalid optimization '$arg'";
- }
- } elsif ($opt eq "O") {
- $arg = 1 if $arg eq "";
- my @opt;
- foreach my $i ( 1 .. $arg ) {
- push @opt, @{$optimization_map{$i}}
- if exists $optimization_map{$i};
- }
- unshift @options, @opt;
- } elsif ($opt eq "e") {
- push @eval_at_startup, $arg;
- } elsif ($opt eq "l") {
- $max_string_len = $arg;
- }
- }
- init_sections();
- foreach my $i ( @eval_at_startup ) {
- $init->add_eval( $i );
- }
- if (@options) {
- return sub {
- my $objname;
- foreach $objname (@options) {
- eval "save_object(\\$objname)";
- }
- output_all();
- }
- } else {
- return sub { save_main() };
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-B::C - Perl compiler's C backend
-
-=head1 SYNOPSIS
-
- perl -MO=C[,OPTIONS] foo.pl
-
-=head1 DESCRIPTION
-
-This compiler backend takes Perl source and generates C source code
-corresponding to the internal structures that perl uses to run
-your program. When the generated C source is compiled and run, it
-cuts out the time which perl would have taken to load and parse
-your program into its internal semi-compiled form. That means that
-compiling with this backend will not help improve the runtime
-execution speed of your program but may improve the start-up time.
-Depending on the environment in which your program runs this may be
-either a help or a hindrance.
-
-=head1 OPTIONS
-
-If there are any non-option arguments, they are taken to be
-names of objects to be saved (probably doesn't work properly yet).
-Without extra arguments, it saves the main program.
-
-=over 4
-
-=item B<-ofilename>
-
-Output to filename instead of STDOUT
-
-=item B<-v>
-
-Verbose compilation (currently gives a few compilation statistics).
-
-=item B<-->
-
-Force end of options
-
-=item B<-uPackname>
-
-Force apparently unused subs from package Packname to be compiled.
-This allows programs to use eval "foo()" even when sub foo is never
-seen to be used at compile time. The down side is that any subs which
-really are never used also have code generated. This option is
-necessary, for example, if you have a signal handler foo which you
-initialise with C<$SIG{BAR} = "foo">. A better fix, though, is just
-to change it to C<$SIG{BAR} = \&foo>. You can have multiple B<-u>
-options. The compiler tries to figure out which packages may possibly
-have subs in which need compiling but the current version doesn't do
-it very well. In particular, it is confused by nested packages (i.e.
-of the form C<A::B>) where package C<A> does not contain any subs.
-
-=item B<-D>
-
-Debug options (concatenated or separate flags like C<perl -D>).
-
-=item B<-Do>
-
-OPs, prints each OP as it's processed
-
-=item B<-Dc>
-
-COPs, prints COPs as processed (incl. file & line num)
-
-=item B<-DA>
-
-prints AV information on saving
-
-=item B<-DC>
-
-prints CV information on saving
-
-=item B<-DM>
-
-prints MAGIC information on saving
-
-=item B<-f>
-
-Force options/optimisations on or off one at a time. You can explicitly
-disable an option using B<-fno-option>. All options default to
-B<disabled>.
-
-=over 4
-
-=item B<-fcog>
-
-Copy-on-grow: PVs declared and initialised statically.
-
-=item B<-fsave-data>
-
-Save package::DATA filehandles ( only available with PerlIO ).
-
-=item B<-fppaddr>
-
-Optimize the initialization of op_ppaddr.
-
-=item B<-fwarn-sv>
-
-Optimize the initialization of cop_warnings.
-
-=item B<-fuse-script-name>
-
-Use the script name instead of the program name as $0.
-
-=item B<-fsave-sig-hash>
-
-Save compile-time modifications to the %SIG hash.
-
-=back
-
-=item B<-On>
-
-Optimisation level (n = 0, 1, 2, ...). B<-O> means B<-O1>.
-
-=over 4
-
-=item B<-O0>
-
-Disable all optimizations.
-
-=item B<-O1>
-
-Enable B<-fcog>.
-
-=item B<-O2>
-
-Enable B<-fppaddr>, B<-fwarn-sv>.
-
-=back
-
-=item B<-llimit>
-
-Some C compilers impose an arbitrary limit on the length of string
-constants (e.g. 2048 characters for Microsoft Visual C++). The
-B<-llimit> options tells the C backend not to generate string literals
-exceeding that limit.
-
-=back
-
-=head1 EXAMPLES
-
- perl -MO=C,-ofoo.c foo.pl
- perl cc_harness -o foo foo.c
-
-Note that C<cc_harness> lives in the C<B> subdirectory of your perl
-library directory. The utility called C<perlcc> may also be used to
-help make use of this compiler.
-
- perl -MO=C,-v,-DcA,-l2048 bar.pl > /dev/null
-
-=head1 BUGS
-
-Plenty. Current status: experimental.
-
-=head1 AUTHOR
-
-Malcolm Beattie, C<mbeattie@sable.ox.ac.uk>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/B/CC.pm b/Master/tlpkg/tlperl/lib/B/CC.pm
deleted file mode 100644
index 079313a0a4e..00000000000
--- a/Master/tlpkg/tlperl/lib/B/CC.pm
+++ /dev/null
@@ -1,2005 +0,0 @@
-# CC.pm
-#
-# Copyright (c) 1996, 1997, 1998 Malcolm Beattie
-#
-# You may distribute under the terms of either the GNU General Public
-# License or the Artistic License, as specified in the README file.
-#
-package B::CC;
-
-our $VERSION = '1.00_01';
-
-use Config;
-use strict;
-use B qw(main_start main_root class comppadlist peekop svref_2object
- timing_info init_av sv_undef amagic_generation
- OPf_WANT_LIST OPf_WANT OPf_MOD OPf_STACKED OPf_SPECIAL
- OPpASSIGN_BACKWARDS OPpLVAL_INTRO OPpDEREF_AV OPpDEREF_HV
- OPpDEREF OPpFLIP_LINENUM G_ARRAY G_SCALAR
- CXt_NULL CXt_SUB CXt_EVAL CXt_LOOP CXt_SUBST CXt_BLOCK
- );
-use B::C qw(save_unused_subs objsym init_sections mark_unused
- output_all output_boilerplate output_main);
-use B::Bblock qw(find_leaders);
-use B::Stackobj qw(:types :flags);
-
-# These should probably be elsewhere
-# Flags for $op->flags
-
-my $module; # module name (when compiled with -m)
-my %done; # hash keyed by $$op of leaders of basic blocks
- # which have already been done.
-my $leaders; # ref to hash of basic block leaders. Keys are $$op
- # addresses, values are the $op objects themselves.
-my @bblock_todo; # list of leaders of basic blocks that need visiting
- # sometime.
-my @cc_todo; # list of tuples defining what PP code needs to be
- # saved (e.g. CV, main or PMOP repl code). Each tuple
- # is [$name, $root, $start, @padlist]. PMOP repl code
- # tuples inherit padlist.
-my @stack; # shadows perl's stack when contents are known.
- # Values are objects derived from class B::Stackobj
-my @pad; # Lexicals in current pad as Stackobj-derived objects
-my @padlist; # Copy of current padlist so PMOP repl code can find it
-my @cxstack; # Shadows the (compile-time) cxstack for next,last,redo
-my $jmpbuf_ix = 0; # Next free index for dynamically allocated jmpbufs
-my %constobj; # OP_CONST constants as Stackobj-derived objects
- # keyed by $$sv.
-my $need_freetmps = 0; # We may postpone FREETMPS to the end of each basic
- # block or even to the end of each loop of blocks,
- # depending on optimisation options.
-my $know_op = 0; # Set when C variable op already holds the right op
- # (from an immediately preceding DOOP(ppname)).
-my $errors = 0; # Number of errors encountered
-my %skip_stack; # Hash of PP names which don't need write_back_stack
-my %skip_lexicals; # Hash of PP names which don't need write_back_lexicals
-my %skip_invalidate; # Hash of PP names which don't need invalidate_lexicals
-my %ignore_op; # Hash of ops which do nothing except returning op_next
-my %need_curcop; # Hash of ops which need PL_curcop
-
-my %lexstate; #state of padsvs at the start of a bblock
-
-BEGIN {
- foreach (qw(pp_scalar pp_regcmaybe pp_lineseq pp_scope pp_null)) {
- $ignore_op{$_} = 1;
- }
-}
-
-my ($module_name);
-my ($debug_op, $debug_stack, $debug_cxstack, $debug_pad, $debug_runtime,
- $debug_shadow, $debug_queue, $debug_lineno, $debug_timings);
-
-# Optimisation options. On the command line, use hyphens instead of
-# underscores for compatibility with gcc-style options. We use
-# underscores here because they are OK in (strict) barewords.
-my ($freetmps_each_bblock, $freetmps_each_loop, $omit_taint);
-my %optimise = (freetmps_each_bblock => \$freetmps_each_bblock,
- freetmps_each_loop => \$freetmps_each_loop,
- omit_taint => \$omit_taint);
-# perl patchlevel to generate code for (defaults to current patchlevel)
-my $patchlevel = int(0.5 + 1000 * ($] - 5));
-
-# Could rewrite push_runtime() and output_runtime() to use a
-# temporary file if memory is at a premium.
-my $ppname; # name of current fake PP function
-my $runtime_list_ref;
-my $declare_ref; # Hash ref keyed by C variable type of declarations.
-
-my @pp_list; # list of [$ppname, $runtime_list_ref, $declare_ref]
- # tuples to be written out.
-
-my ($init, $decl);
-
-sub init_hash { map { $_ => 1 } @_ }
-
-#
-# Initialise the hashes for the default PP functions where we can avoid
-# either write_back_stack, write_back_lexicals or invalidate_lexicals.
-#
-%skip_lexicals = init_hash qw(pp_enter pp_enterloop);
-%skip_invalidate = init_hash qw(pp_enter pp_enterloop);
-%need_curcop = init_hash qw(pp_rv2gv pp_bless pp_repeat pp_sort pp_caller
- pp_reset pp_rv2cv pp_entereval pp_require pp_dofile
- pp_entertry pp_enterloop pp_enteriter pp_entersub
- pp_enter pp_method);
-
-sub debug {
- if ($debug_runtime) {
- warn(@_);
- } else {
- my @tmp=@_;
- runtime(map { chomp; "/* $_ */"} @tmp);
- }
-}
-
-sub declare {
- my ($type, $var) = @_;
- push(@{$declare_ref->{$type}}, $var);
-}
-
-sub push_runtime {
- push(@$runtime_list_ref, @_);
- warn join("\n", @_) . "\n" if $debug_runtime;
-}
-
-sub save_runtime {
- push(@pp_list, [$ppname, $runtime_list_ref, $declare_ref]);
-}
-
-sub output_runtime {
- my $ppdata;
- print qq(#include "cc_runtime.h"\n);
- foreach $ppdata (@pp_list) {
- my ($name, $runtime, $declare) = @$ppdata;
- print "\nstatic\nCCPP($name)\n{\n";
- my ($type, $varlist, $line);
- while (($type, $varlist) = each %$declare) {
- print "\t$type ", join(", ", @$varlist), ";\n";
- }
- foreach $line (@$runtime) {
- print $line, "\n";
- }
- print "}\n";
- }
-}
-
-sub runtime {
- my $line;
- foreach $line (@_) {
- push_runtime("\t$line");
- }
-}
-
-sub init_pp {
- $ppname = shift;
- $runtime_list_ref = [];
- $declare_ref = {};
- runtime("dSP;");
- declare("I32", "oldsave");
- declare("SV", "**svp");
- map { declare("SV", "*$_") } qw(sv src dst left right);
- declare("MAGIC", "*mg");
- $decl->add("static OP * $ppname (pTHX);");
- debug "init_pp: $ppname\n" if $debug_queue;
-}
-
-# Initialise runtime_callback function for Stackobj class
-BEGIN { B::Stackobj::set_callback(\&runtime) }
-
-# Initialise saveoptree_callback for B::C class
-sub cc_queue {
- my ($name, $root, $start, @pl) = @_;
- debug "cc_queue: name $name, root $root, start $start, padlist (@pl)\n"
- if $debug_queue;
- if ($name eq "*ignore*") {
- $name = 0;
- } else {
- push(@cc_todo, [$name, $root, $start, (@pl ? @pl : @padlist)]);
- }
- my $fakeop = new B::FAKEOP ("next" => 0, sibling => 0, ppaddr => $name);
- $start = $fakeop->save;
- debug "cc_queue: name $name returns $start\n" if $debug_queue;
- return $start;
-}
-BEGIN { B::C::set_callback(\&cc_queue) }
-
-sub valid_int { $_[0]->{flags} & VALID_INT }
-sub valid_double { $_[0]->{flags} & VALID_DOUBLE }
-sub valid_numeric { $_[0]->{flags} & (VALID_INT | VALID_DOUBLE) }
-sub valid_sv { $_[0]->{flags} & VALID_SV }
-
-sub top_int { @stack ? $stack[-1]->as_int : "TOPi" }
-sub top_double { @stack ? $stack[-1]->as_double : "TOPn" }
-sub top_numeric { @stack ? $stack[-1]->as_numeric : "TOPn" }
-sub top_sv { @stack ? $stack[-1]->as_sv : "TOPs" }
-sub top_bool { @stack ? $stack[-1]->as_bool : "SvTRUE(TOPs)" }
-
-sub pop_int { @stack ? (pop @stack)->as_int : "POPi" }
-sub pop_double { @stack ? (pop @stack)->as_double : "POPn" }
-sub pop_numeric { @stack ? (pop @stack)->as_numeric : "POPn" }
-sub pop_sv { @stack ? (pop @stack)->as_sv : "POPs" }
-sub pop_bool {
- if (@stack) {
- return ((pop @stack)->as_bool);
- } else {
- # Careful: POPs has an auto-decrement and SvTRUE evaluates
- # its argument more than once.
- runtime("sv = POPs;");
- return "SvTRUE(sv)";
- }
-}
-
-sub write_back_lexicals {
- my $avoid = shift || 0;
- debug "write_back_lexicals($avoid) called from @{[(caller(1))[3]]}\n"
- if $debug_shadow;
- my $lex;
- foreach $lex (@pad) {
- next unless ref($lex);
- $lex->write_back unless $lex->{flags} & $avoid;
- }
-}
-
-sub save_or_restore_lexical_state {
- my $bblock=shift;
- unless( exists $lexstate{$bblock}){
- foreach my $lex (@pad) {
- next unless ref($lex);
- ${$lexstate{$bblock}}{$lex->{iv}} = $lex->{flags} ;
- }
- }
- else {
- foreach my $lex (@pad) {
- next unless ref($lex);
- my $old_flags=${$lexstate{$bblock}}{$lex->{iv}} ;
- next if ( $old_flags eq $lex->{flags});
- if (($old_flags & VALID_SV) && !($lex->{flags} & VALID_SV)){
- $lex->write_back;
- }
- if (($old_flags & VALID_DOUBLE) && !($lex->{flags} & VALID_DOUBLE)){
- $lex->load_double;
- }
- if (($old_flags & VALID_INT) && !($lex->{flags} & VALID_INT)){
- $lex->load_int;
- }
- }
- }
-}
-
-sub write_back_stack {
- my $obj;
- return unless @stack;
- runtime(sprintf("EXTEND(sp, %d);", scalar(@stack)));
- foreach $obj (@stack) {
- runtime(sprintf("PUSHs((SV*)%s);", $obj->as_sv));
- }
- @stack = ();
-}
-
-sub invalidate_lexicals {
- my $avoid = shift || 0;
- debug "invalidate_lexicals($avoid) called from @{[(caller(1))[3]]}\n"
- if $debug_shadow;
- my $lex;
- foreach $lex (@pad) {
- next unless ref($lex);
- $lex->invalidate unless $lex->{flags} & $avoid;
- }
-}
-
-sub reload_lexicals {
- my $lex;
- foreach $lex (@pad) {
- next unless ref($lex);
- my $type = $lex->{type};
- if ($type == T_INT) {
- $lex->as_int;
- } elsif ($type == T_DOUBLE) {
- $lex->as_double;
- } else {
- $lex->as_sv;
- }
- }
-}
-
-{
- package B::Pseudoreg;
- #
- # This class allocates pseudo-registers (OK, so they're C variables).
- #
- my %alloc; # Keyed by variable name. A value of 1 means the
- # variable has been declared. A value of 2 means
- # it's in use.
-
- sub new_scope { %alloc = () }
-
- sub new ($$$) {
- my ($class, $type, $prefix) = @_;
- my ($ptr, $i, $varname, $status, $obj);
- $prefix =~ s/^(\**)//;
- $ptr = $1;
- $i = 0;
- do {
- $varname = "$prefix$i";
- $status = $alloc{$varname};
- } while $status == 2;
- if ($status != 1) {
- # Not declared yet
- B::CC::declare($type, "$ptr$varname");
- $alloc{$varname} = 2; # declared and in use
- }
- $obj = bless \$varname, $class;
- return $obj;
- }
- sub DESTROY {
- my $obj = shift;
- $alloc{$$obj} = 1; # no longer in use but still declared
- }
-}
-{
- package B::Shadow;
- #
- # This class gives a standard API for a perl object to shadow a
- # C variable and only generate reloads/write-backs when necessary.
- #
- # Use $obj->load($foo) instead of runtime("shadowed_c_var = foo").
- # Use $obj->write_back whenever shadowed_c_var needs to be up to date.
- # Use $obj->invalidate whenever an unknown function may have
- # set shadow itself.
-
- sub new {
- my ($class, $write_back) = @_;
- # Object fields are perl shadow variable, validity flag
- # (for *C* variable) and callback sub for write_back
- # (passed perl shadow variable as argument).
- bless [undef, 1, $write_back], $class;
- }
- sub load {
- my ($obj, $newval) = @_;
- $obj->[1] = 0; # C variable no longer valid
- $obj->[0] = $newval;
- }
- sub write_back {
- my $obj = shift;
- if (!($obj->[1])) {
- $obj->[1] = 1; # C variable will now be valid
- &{$obj->[2]}($obj->[0]);
- }
- }
- sub invalidate { $_[0]->[1] = 0 } # force C variable to be invalid
-}
-my $curcop = new B::Shadow (sub {
- my $opsym = shift->save;
- runtime("PL_curcop = (COP*)$opsym;");
-});
-
-#
-# Context stack shadowing. Mimics stuff in pp_ctl.c, cop.h and so on.
-#
-sub dopoptoloop {
- my $cxix = $#cxstack;
- while ($cxix >= 0 && $cxstack[$cxix]->{type} != CXt_LOOP) {
- $cxix--;
- }
- debug "dopoptoloop: returning $cxix" if $debug_cxstack;
- return $cxix;
-}
-
-sub dopoptolabel {
- my $label = shift;
- my $cxix = $#cxstack;
- while ($cxix >= 0 &&
- ($cxstack[$cxix]->{type} != CXt_LOOP ||
- $cxstack[$cxix]->{label} ne $label)) {
- $cxix--;
- }
- debug "dopoptolabel: returning $cxix" if $debug_cxstack;
- return $cxix;
-}
-
-sub error {
- my $format = shift;
- my $file = $curcop->[0]->file;
- my $line = $curcop->[0]->line;
- $errors++;
- if (@_) {
- warn sprintf("%s:%d: $format\n", $file, $line, @_);
- } else {
- warn sprintf("%s:%d: %s\n", $file, $line, $format);
- }
-}
-
-#
-# Load pad takes (the elements of) a PADLIST as arguments and loads
-# up @pad with Stackobj-derived objects which represent those lexicals.
-# If/when perl itself can generate type information (my int $foo) then
-# we'll take advantage of that here. Until then, we'll use various hacks
-# to tell the compiler when we want a lexical to be a particular type
-# or to be a register.
-#
-sub load_pad {
- my ($namelistav, $valuelistav) = @_;
- @padlist = @_;
- my @namelist = $namelistav->ARRAY;
- my @valuelist = $valuelistav->ARRAY;
- my $ix;
- @pad = ();
- debug "load_pad: $#namelist names, $#valuelist values\n" if $debug_pad;
- # Temporary lexicals don't get named so it's possible for @valuelist
- # to be strictly longer than @namelist. We count $ix up to the end of
- # @valuelist but index into @namelist for the name. Any temporaries which
- # run off the end of @namelist will make $namesv undefined and we treat
- # that the same as having an explicit SPECIAL sv_undef object in @namelist.
- # [XXX If/when @_ becomes a lexical, we must start at 0 here.]
- for ($ix = 1; $ix < @valuelist; $ix++) {
- my $namesv = $namelist[$ix];
- my $type = T_UNKNOWN;
- my $flags = 0;
- my $name = "tmp$ix";
- my $class = class($namesv);
- if (!defined($namesv) || $class eq "SPECIAL") {
- # temporaries have &PL_sv_undef instead of a PVNV for a name
- $flags = VALID_SV|TEMPORARY|REGISTER;
- } else {
- if ($namesv->PV =~ /^\$(.*)_([di])(r?)$/) {
- $name = $1;
- if ($2 eq "i") {
- $type = T_INT;
- $flags = VALID_SV|VALID_INT;
- } elsif ($2 eq "d") {
- $type = T_DOUBLE;
- $flags = VALID_SV|VALID_DOUBLE;
- }
- $flags |= REGISTER if $3;
- }
- }
- $pad[$ix] = new B::Stackobj::Padsv ($type, $flags, $ix,
- "i_$name", "d_$name");
-
- debug sprintf("PL_curpad[$ix] = %s\n", $pad[$ix]->peek) if $debug_pad;
- }
-}
-
-sub declare_pad {
- my $ix;
- for ($ix = 1; $ix <= $#pad; $ix++) {
- my $type = $pad[$ix]->{type};
- declare("IV", $type == T_INT ?
- sprintf("%s=0",$pad[$ix]->{iv}):$pad[$ix]->{iv}) if $pad[$ix]->save_int;
- declare("double", $type == T_DOUBLE ?
- sprintf("%s = 0",$pad[$ix]->{nv}):$pad[$ix]->{nv} )if $pad[$ix]->save_double;
-
- }
-}
-#
-# Debugging stuff
-#
-sub peek_stack { sprintf "stack = %s\n", join(" ", map($_->minipeek, @stack)) }
-
-#
-# OP stuff
-#
-
-sub label {
- my $op = shift;
- # XXX Preserve original label name for "real" labels?
- return sprintf("lab_%x", $$op);
-}
-
-sub write_label {
- my $op = shift;
- push_runtime(sprintf(" %s:", label($op)));
-}
-
-sub loadop {
- my $op = shift;
- my $opsym = $op->save;
- runtime("PL_op = $opsym;") unless $know_op;
- return $opsym;
-}
-
-sub doop {
- my $op = shift;
- my $ppname = $op->ppaddr;
- my $sym = loadop($op);
- runtime("DOOP($ppname);");
- $know_op = 1;
- return $sym;
-}
-
-sub gimme {
- my $op = shift;
- my $flags = $op->flags;
- return (($flags & OPf_WANT) ? (($flags & OPf_WANT)== OPf_WANT_LIST? G_ARRAY:G_SCALAR) : "dowantarray()");
-}
-
-#
-# Code generation for PP code
-#
-
-sub pp_null {
- my $op = shift;
- return $op->next;
-}
-
-sub pp_stub {
- my $op = shift;
- my $gimme = gimme($op);
- if ($gimme != G_ARRAY) {
- my $obj= new B::Stackobj::Const(sv_undef);
- push(@stack, $obj);
- # XXX Change to push a constant sv_undef Stackobj onto @stack
- #write_back_stack();
- #runtime("if ($gimme != G_ARRAY) XPUSHs(&PL_sv_undef);");
- }
- return $op->next;
-}
-
-sub pp_unstack {
- my $op = shift;
- @stack = ();
- runtime("PP_UNSTACK;");
- return $op->next;
-}
-
-sub pp_and {
- my $op = shift;
- my $next = $op->next;
- reload_lexicals();
- unshift(@bblock_todo, $next);
- if (@stack >= 1) {
- my $bool = pop_bool();
- write_back_stack();
- save_or_restore_lexical_state($$next);
- runtime(sprintf("if (!$bool) {XPUSHs(&PL_sv_no); goto %s;}", label($next)));
- } else {
- save_or_restore_lexical_state($$next);
- runtime(sprintf("if (!%s) goto %s;", top_bool(), label($next)),
- "*sp--;");
- }
- return $op->other;
-}
-
-sub pp_or {
- my $op = shift;
- my $next = $op->next;
- reload_lexicals();
- unshift(@bblock_todo, $next);
- if (@stack >= 1) {
- my $bool = pop_bool @stack;
- write_back_stack();
- save_or_restore_lexical_state($$next);
- runtime(sprintf("if (%s) { XPUSHs(&PL_sv_yes); goto %s; }",
- $bool, label($next)));
- } else {
- save_or_restore_lexical_state($$next);
- runtime(sprintf("if (%s) goto %s;", top_bool(), label($next)),
- "*sp--;");
- }
- return $op->other;
-}
-
-sub pp_cond_expr {
- my $op = shift;
- my $false = $op->next;
- unshift(@bblock_todo, $false);
- reload_lexicals();
- my $bool = pop_bool();
- write_back_stack();
- save_or_restore_lexical_state($$false);
- runtime(sprintf("if (!$bool) goto %s;", label($false)));
- return $op->other;
-}
-
-sub pp_padsv {
- my $op = shift;
- my $ix = $op->targ;
- push(@stack, $pad[$ix]);
- if ($op->flags & OPf_MOD) {
- my $private = $op->private;
- if ($private & OPpLVAL_INTRO) {
- runtime("SAVECLEARSV(PL_curpad[$ix]);");
- } elsif ($private & OPpDEREF) {
- runtime(sprintf("vivify_ref(PL_curpad[%d], %d);",
- $ix, $private & OPpDEREF));
- $pad[$ix]->invalidate;
- }
- }
- return $op->next;
-}
-
-sub pp_const {
- my $op = shift;
- my $sv = $op->sv;
- my $obj;
- # constant could be in the pad (under useithreads)
- if ($$sv) {
- $obj = $constobj{$$sv};
- if (!defined($obj)) {
- $obj = $constobj{$$sv} = new B::Stackobj::Const ($sv);
- }
- }
- else {
- $obj = $pad[$op->targ];
- }
- push(@stack, $obj);
- return $op->next;
-}
-
-sub pp_nextstate {
- my $op = shift;
- $curcop->load($op);
- @stack = ();
- debug(sprintf("%s:%d\n", $op->file, $op->line)) if $debug_lineno;
- runtime("TAINT_NOT;") unless $omit_taint;
- runtime("sp = PL_stack_base + cxstack[cxstack_ix].blk_oldsp;");
- if ($freetmps_each_bblock || $freetmps_each_loop) {
- $need_freetmps = 1;
- } else {
- runtime("FREETMPS;");
- }
- return $op->next;
-}
-
-sub pp_dbstate {
- my $op = shift;
- $curcop->invalidate; # XXX?
- return default_pp($op);
-}
-
-#default_pp will handle this:
-#sub pp_bless { $curcop->write_back; default_pp(@_) }
-#sub pp_repeat { $curcop->write_back; default_pp(@_) }
-# The following subs need $curcop->write_back if we decide to support arybase:
-# pp_pos, pp_substr, pp_index, pp_rindex, pp_aslice, pp_lslice, pp_splice
-#sub pp_caller { $curcop->write_back; default_pp(@_) }
-#sub pp_reset { $curcop->write_back; default_pp(@_) }
-
-sub pp_rv2gv{
- my $op =shift;
- $curcop->write_back;
- write_back_lexicals() unless $skip_lexicals{$ppname};
- write_back_stack() unless $skip_stack{$ppname};
- my $sym=doop($op);
- if ($op->private & OPpDEREF) {
- $init->add(sprintf("((UNOP *)$sym)->op_first = $sym;"));
- $init->add(sprintf("((UNOP *)$sym)->op_type = %d;",
- $op->first->type));
- }
- return $op->next;
-}
-sub pp_sort {
- my $op = shift;
- my $ppname = $op->ppaddr;
- if ( $op->flags & OPf_SPECIAL && $op->flags & OPf_STACKED){
- #this indicates the sort BLOCK Array case
- #ugly surgery required.
- my $root=$op->first->sibling->first;
- my $start=$root->first;
- $op->first->save;
- $op->first->sibling->save;
- $root->save;
- my $sym=$start->save;
- my $fakeop=cc_queue("pp_sort".$$op,$root,$start);
- $init->add(sprintf("(%s)->op_next=%s;",$sym,$fakeop));
- }
- $curcop->write_back;
- write_back_lexicals();
- write_back_stack();
- doop($op);
- return $op->next;
-}
-
-sub pp_gv {
- my $op = shift;
- my $gvsym;
- if ($Config{useithreads}) {
- $gvsym = $pad[$op->padix]->as_sv;
- }
- else {
- $gvsym = $op->gv->save;
- }
- write_back_stack();
- runtime("XPUSHs((SV*)$gvsym);");
- return $op->next;
-}
-
-sub pp_gvsv {
- my $op = shift;
- my $gvsym;
- if ($Config{useithreads}) {
- $gvsym = $pad[$op->padix]->as_sv;
- }
- else {
- $gvsym = $op->gv->save;
- }
- write_back_stack();
- if ($op->private & OPpLVAL_INTRO) {
- runtime("XPUSHs(save_scalar($gvsym));");
- } else {
- runtime("XPUSHs(GvSV($gvsym));");
- }
- return $op->next;
-}
-
-sub pp_aelemfast {
- my $op = shift;
- my $gvsym;
- if ($Config{useithreads}) {
- $gvsym = $pad[$op->padix]->as_sv;
- }
- else {
- $gvsym = $op->gv->save;
- }
- my $ix = $op->private;
- my $flag = $op->flags & OPf_MOD;
- write_back_stack();
- runtime("svp = av_fetch(GvAV($gvsym), $ix, $flag);",
- "PUSHs(svp ? *svp : &PL_sv_undef);");
- return $op->next;
-}
-
-sub int_binop {
- my ($op, $operator) = @_;
- if ($op->flags & OPf_STACKED) {
- my $right = pop_int();
- if (@stack >= 1) {
- my $left = top_int();
- $stack[-1]->set_int(&$operator($left, $right));
- } else {
- runtime(sprintf("sv_setiv(TOPs, %s);",&$operator("TOPi", $right)));
- }
- } else {
- my $targ = $pad[$op->targ];
- my $right = new B::Pseudoreg ("IV", "riv");
- my $left = new B::Pseudoreg ("IV", "liv");
- runtime(sprintf("$$right = %s; $$left = %s;", pop_int(), pop_int));
- $targ->set_int(&$operator($$left, $$right));
- push(@stack, $targ);
- }
- return $op->next;
-}
-
-sub INTS_CLOSED () { 0x1 }
-sub INT_RESULT () { 0x2 }
-sub NUMERIC_RESULT () { 0x4 }
-
-sub numeric_binop {
- my ($op, $operator, $flags) = @_;
- my $force_int = 0;
- $force_int ||= ($flags & INT_RESULT);
- $force_int ||= ($flags & INTS_CLOSED && @stack >= 2
- && valid_int($stack[-2]) && valid_int($stack[-1]));
- if ($op->flags & OPf_STACKED) {
- my $right = pop_numeric();
- if (@stack >= 1) {
- my $left = top_numeric();
- if ($force_int) {
- $stack[-1]->set_int(&$operator($left, $right));
- } else {
- $stack[-1]->set_numeric(&$operator($left, $right));
- }
- } else {
- if ($force_int) {
- my $rightruntime = new B::Pseudoreg ("IV", "riv");
- runtime(sprintf("$$rightruntime = %s;",$right));
- runtime(sprintf("sv_setiv(TOPs, %s);",
- &$operator("TOPi", $$rightruntime)));
- } else {
- my $rightruntime = new B::Pseudoreg ("double", "rnv");
- runtime(sprintf("$$rightruntime = %s;",$right));
- runtime(sprintf("sv_setnv(TOPs, %s);",
- &$operator("TOPn",$$rightruntime)));
- }
- }
- } else {
- my $targ = $pad[$op->targ];
- $force_int ||= ($targ->{type} == T_INT);
- if ($force_int) {
- my $right = new B::Pseudoreg ("IV", "riv");
- my $left = new B::Pseudoreg ("IV", "liv");
- runtime(sprintf("$$right = %s; $$left = %s;",
- pop_numeric(), pop_numeric));
- $targ->set_int(&$operator($$left, $$right));
- } else {
- my $right = new B::Pseudoreg ("double", "rnv");
- my $left = new B::Pseudoreg ("double", "lnv");
- runtime(sprintf("$$right = %s; $$left = %s;",
- pop_numeric(), pop_numeric));
- $targ->set_numeric(&$operator($$left, $$right));
- }
- push(@stack, $targ);
- }
- return $op->next;
-}
-
-sub pp_ncmp {
- my ($op) = @_;
- if ($op->flags & OPf_STACKED) {
- my $right = pop_numeric();
- if (@stack >= 1) {
- my $left = top_numeric();
- runtime sprintf("if (%s > %s){",$left,$right);
- $stack[-1]->set_int(1);
- $stack[-1]->write_back();
- runtime sprintf("}else if (%s < %s ) {",$left,$right);
- $stack[-1]->set_int(-1);
- $stack[-1]->write_back();
- runtime sprintf("}else if (%s == %s) {",$left,$right);
- $stack[-1]->set_int(0);
- $stack[-1]->write_back();
- runtime sprintf("}else {");
- $stack[-1]->set_sv("&PL_sv_undef");
- runtime "}";
- } else {
- my $rightruntime = new B::Pseudoreg ("double", "rnv");
- runtime(sprintf("$$rightruntime = %s;",$right));
- runtime sprintf(qq/if ("TOPn" > %s){/,$rightruntime);
- runtime sprintf("sv_setiv(TOPs,1);");
- runtime sprintf(qq/}else if ( "TOPn" < %s ) {/,$$rightruntime);
- runtime sprintf("sv_setiv(TOPs,-1);");
- runtime sprintf(qq/} else if ("TOPn" == %s) {/,$$rightruntime);
- runtime sprintf("sv_setiv(TOPs,0);");
- runtime sprintf(qq/}else {/);
- runtime sprintf("sv_setiv(TOPs,&PL_sv_undef;");
- runtime "}";
- }
- } else {
- my $targ = $pad[$op->targ];
- my $right = new B::Pseudoreg ("double", "rnv");
- my $left = new B::Pseudoreg ("double", "lnv");
- runtime(sprintf("$$right = %s; $$left = %s;",
- pop_numeric(), pop_numeric));
- runtime sprintf("if (%s > %s){",$$left,$$right);
- $targ->set_int(1);
- $targ->write_back();
- runtime sprintf("}else if (%s < %s ) {",$$left,$$right);
- $targ->set_int(-1);
- $targ->write_back();
- runtime sprintf("}else if (%s == %s) {",$$left,$$right);
- $targ->set_int(0);
- $targ->write_back();
- runtime sprintf("}else {");
- $targ->set_sv("&PL_sv_undef");
- runtime "}";
- push(@stack, $targ);
- }
- return $op->next;
-}
-
-sub sv_binop {
- my ($op, $operator, $flags) = @_;
- if ($op->flags & OPf_STACKED) {
- my $right = pop_sv();
- if (@stack >= 1) {
- my $left = top_sv();
- if ($flags & INT_RESULT) {
- $stack[-1]->set_int(&$operator($left, $right));
- } elsif ($flags & NUMERIC_RESULT) {
- $stack[-1]->set_numeric(&$operator($left, $right));
- } else {
- # XXX Does this work?
- runtime(sprintf("sv_setsv($left, %s);",
- &$operator($left, $right)));
- $stack[-1]->invalidate;
- }
- } else {
- my $f;
- if ($flags & INT_RESULT) {
- $f = "sv_setiv";
- } elsif ($flags & NUMERIC_RESULT) {
- $f = "sv_setnv";
- } else {
- $f = "sv_setsv";
- }
- runtime(sprintf("%s(TOPs, %s);", $f, &$operator("TOPs", $right)));
- }
- } else {
- my $targ = $pad[$op->targ];
- runtime(sprintf("right = %s; left = %s;", pop_sv(), pop_sv));
- if ($flags & INT_RESULT) {
- $targ->set_int(&$operator("left", "right"));
- } elsif ($flags & NUMERIC_RESULT) {
- $targ->set_numeric(&$operator("left", "right"));
- } else {
- # XXX Does this work?
- runtime(sprintf("sv_setsv(%s, %s);",
- $targ->as_sv, &$operator("left", "right")));
- $targ->invalidate;
- }
- push(@stack, $targ);
- }
- return $op->next;
-}
-
-sub bool_int_binop {
- my ($op, $operator) = @_;
- my $right = new B::Pseudoreg ("IV", "riv");
- my $left = new B::Pseudoreg ("IV", "liv");
- runtime(sprintf("$$right = %s; $$left = %s;", pop_int(), pop_int()));
- my $bool = new B::Stackobj::Bool (new B::Pseudoreg ("int", "b"));
- $bool->set_int(&$operator($$left, $$right));
- push(@stack, $bool);
- return $op->next;
-}
-
-sub bool_numeric_binop {
- my ($op, $operator) = @_;
- my $right = new B::Pseudoreg ("double", "rnv");
- my $left = new B::Pseudoreg ("double", "lnv");
- runtime(sprintf("$$right = %s; $$left = %s;",
- pop_numeric(), pop_numeric()));
- my $bool = new B::Stackobj::Bool (new B::Pseudoreg ("int", "b"));
- $bool->set_numeric(&$operator($$left, $$right));
- push(@stack, $bool);
- return $op->next;
-}
-
-sub bool_sv_binop {
- my ($op, $operator) = @_;
- runtime(sprintf("right = %s; left = %s;", pop_sv(), pop_sv()));
- my $bool = new B::Stackobj::Bool (new B::Pseudoreg ("int", "b"));
- $bool->set_numeric(&$operator("left", "right"));
- push(@stack, $bool);
- return $op->next;
-}
-
-sub infix_op {
- my $opname = shift;
- return sub { "$_[0] $opname $_[1]" }
-}
-
-sub prefix_op {
- my $opname = shift;
- return sub { sprintf("%s(%s)", $opname, join(", ", @_)) }
-}
-
-BEGIN {
- my $plus_op = infix_op("+");
- my $minus_op = infix_op("-");
- my $multiply_op = infix_op("*");
- my $divide_op = infix_op("/");
- my $modulo_op = infix_op("%");
- my $lshift_op = infix_op("<<");
- my $rshift_op = infix_op(">>");
- my $scmp_op = prefix_op("sv_cmp");
- my $seq_op = prefix_op("sv_eq");
- my $sne_op = prefix_op("!sv_eq");
- my $slt_op = sub { "sv_cmp($_[0], $_[1]) < 0" };
- my $sgt_op = sub { "sv_cmp($_[0], $_[1]) > 0" };
- my $sle_op = sub { "sv_cmp($_[0], $_[1]) <= 0" };
- my $sge_op = sub { "sv_cmp($_[0], $_[1]) >= 0" };
- my $eq_op = infix_op("==");
- my $ne_op = infix_op("!=");
- my $lt_op = infix_op("<");
- my $gt_op = infix_op(">");
- my $le_op = infix_op("<=");
- my $ge_op = infix_op(">=");
-
- #
- # XXX The standard perl PP code has extra handling for
- # some special case arguments of these operators.
- #
- sub pp_add { numeric_binop($_[0], $plus_op) }
- sub pp_subtract { numeric_binop($_[0], $minus_op) }
- sub pp_multiply { numeric_binop($_[0], $multiply_op) }
- sub pp_divide { numeric_binop($_[0], $divide_op) }
- sub pp_modulo { int_binop($_[0], $modulo_op) } # differs from perl's
-
- sub pp_left_shift { int_binop($_[0], $lshift_op) }
- sub pp_right_shift { int_binop($_[0], $rshift_op) }
- sub pp_i_add { int_binop($_[0], $plus_op) }
- sub pp_i_subtract { int_binop($_[0], $minus_op) }
- sub pp_i_multiply { int_binop($_[0], $multiply_op) }
- sub pp_i_divide { int_binop($_[0], $divide_op) }
- sub pp_i_modulo { int_binop($_[0], $modulo_op) }
-
- sub pp_eq { bool_numeric_binop($_[0], $eq_op) }
- sub pp_ne { bool_numeric_binop($_[0], $ne_op) }
- sub pp_lt { bool_numeric_binop($_[0], $lt_op) }
- sub pp_gt { bool_numeric_binop($_[0], $gt_op) }
- sub pp_le { bool_numeric_binop($_[0], $le_op) }
- sub pp_ge { bool_numeric_binop($_[0], $ge_op) }
-
- sub pp_i_eq { bool_int_binop($_[0], $eq_op) }
- sub pp_i_ne { bool_int_binop($_[0], $ne_op) }
- sub pp_i_lt { bool_int_binop($_[0], $lt_op) }
- sub pp_i_gt { bool_int_binop($_[0], $gt_op) }
- sub pp_i_le { bool_int_binop($_[0], $le_op) }
- sub pp_i_ge { bool_int_binop($_[0], $ge_op) }
-
- sub pp_scmp { sv_binop($_[0], $scmp_op, INT_RESULT) }
- sub pp_slt { bool_sv_binop($_[0], $slt_op) }
- sub pp_sgt { bool_sv_binop($_[0], $sgt_op) }
- sub pp_sle { bool_sv_binop($_[0], $sle_op) }
- sub pp_sge { bool_sv_binop($_[0], $sge_op) }
- sub pp_seq { bool_sv_binop($_[0], $seq_op) }
- sub pp_sne { bool_sv_binop($_[0], $sne_op) }
-}
-
-
-sub pp_sassign {
- my $op = shift;
- my $backwards = $op->private & OPpASSIGN_BACKWARDS;
- my ($dst, $src);
- if (@stack >= 2) {
- $dst = pop @stack;
- $src = pop @stack;
- ($src, $dst) = ($dst, $src) if $backwards;
- my $type = $src->{type};
- if ($type == T_INT) {
- $dst->set_int($src->as_int,$src->{flags} & VALID_UNSIGNED);
- } elsif ($type == T_DOUBLE) {
- $dst->set_numeric($src->as_numeric);
- } else {
- $dst->set_sv($src->as_sv);
- }
- push(@stack, $dst);
- } elsif (@stack == 1) {
- if ($backwards) {
- my $src = pop @stack;
- my $type = $src->{type};
- runtime("if (PL_tainting && PL_tainted) TAINT_NOT;");
- if ($type == T_INT) {
- if ($src->{flags} & VALID_UNSIGNED){
- runtime sprintf("sv_setuv(TOPs, %s);", $src->as_int);
- }else{
- runtime sprintf("sv_setiv(TOPs, %s);", $src->as_int);
- }
- } elsif ($type == T_DOUBLE) {
- runtime sprintf("sv_setnv(TOPs, %s);", $src->as_double);
- } else {
- runtime sprintf("sv_setsv(TOPs, %s);", $src->as_sv);
- }
- runtime("SvSETMAGIC(TOPs);");
- } else {
- my $dst = $stack[-1];
- my $type = $dst->{type};
- runtime("sv = POPs;");
- runtime("MAYBE_TAINT_SASSIGN_SRC(sv);");
- if ($type == T_INT) {
- $dst->set_int("SvIV(sv)");
- } elsif ($type == T_DOUBLE) {
- $dst->set_double("SvNV(sv)");
- } else {
- runtime("SvSetMagicSV($dst->{sv}, sv);");
- $dst->invalidate;
- }
- }
- } else {
- if ($backwards) {
- runtime("src = POPs; dst = TOPs;");
- } else {
- runtime("dst = POPs; src = TOPs;");
- }
- runtime("MAYBE_TAINT_SASSIGN_SRC(src);",
- "SvSetSV(dst, src);",
- "SvSETMAGIC(dst);",
- "SETs(dst);");
- }
- return $op->next;
-}
-
-sub pp_preinc {
- my $op = shift;
- if (@stack >= 1) {
- my $obj = $stack[-1];
- my $type = $obj->{type};
- if ($type == T_INT || $type == T_DOUBLE) {
- $obj->set_int($obj->as_int . " + 1");
- } else {
- runtime sprintf("PP_PREINC(%s);", $obj->as_sv);
- $obj->invalidate();
- }
- } else {
- runtime sprintf("PP_PREINC(TOPs);");
- }
- return $op->next;
-}
-
-
-sub pp_pushmark {
- my $op = shift;
- write_back_stack();
- runtime("PUSHMARK(sp);");
- return $op->next;
-}
-
-sub pp_list {
- my $op = shift;
- write_back_stack();
- my $gimme = gimme($op);
- if ($gimme == G_ARRAY) { # sic
- runtime("POPMARK;"); # need this even though not a "full" pp_list
- } else {
- runtime("PP_LIST($gimme);");
- }
- return $op->next;
-}
-
-sub pp_entersub {
- my $op = shift;
- $curcop->write_back;
- write_back_lexicals(REGISTER|TEMPORARY);
- write_back_stack();
- my $sym = doop($op);
- runtime("while (PL_op != ($sym)->op_next && PL_op != (OP*)0 ){");
- runtime("PL_op = (*PL_op->op_ppaddr)(aTHX);");
- runtime("SPAGAIN;}");
- $know_op = 0;
- invalidate_lexicals(REGISTER|TEMPORARY);
- return $op->next;
-}
-sub pp_formline {
- my $op = shift;
- my $ppname = $op->ppaddr;
- write_back_lexicals() unless $skip_lexicals{$ppname};
- write_back_stack() unless $skip_stack{$ppname};
- my $sym=doop($op);
- # See comment in pp_grepwhile to see why!
- $init->add("((LISTOP*)$sym)->op_first = $sym;");
- runtime("if (PL_op == ((LISTOP*)($sym))->op_first){");
- save_or_restore_lexical_state(${$op->first});
- runtime( sprintf("goto %s;",label($op->first)));
- runtime("}");
- return $op->next;
-}
-
-sub pp_goto{
-
- my $op = shift;
- my $ppname = $op->ppaddr;
- write_back_lexicals() unless $skip_lexicals{$ppname};
- write_back_stack() unless $skip_stack{$ppname};
- my $sym=doop($op);
- runtime("if (PL_op != ($sym)->op_next && PL_op != (OP*)0){return PL_op;}");
- invalidate_lexicals() unless $skip_invalidate{$ppname};
- return $op->next;
-}
-sub pp_enterwrite {
- my $op = shift;
- pp_entersub($op);
-}
-sub pp_leavesub{
- my $op = shift;
- write_back_lexicals() unless $skip_lexicals{$ppname};
- write_back_stack() unless $skip_stack{$ppname};
- runtime("if (PL_curstackinfo->si_type == PERLSI_SORT){");
- runtime("\tPUTBACK;return 0;");
- runtime("}");
- doop($op);
- return $op->next;
-}
-sub pp_leavewrite {
- my $op = shift;
- write_back_lexicals(REGISTER|TEMPORARY);
- write_back_stack();
- my $sym = doop($op);
- # XXX Is this the right way to distinguish between it returning
- # CvSTART(cv) (via doform) and pop_return()?
- #runtime("if (PL_op) PL_op = (*PL_op->op_ppaddr)(aTHX);");
- runtime("SPAGAIN;");
- $know_op = 0;
- invalidate_lexicals(REGISTER|TEMPORARY);
- return $op->next;
-}
-
-sub doeval {
- my $op = shift;
- $curcop->write_back;
- write_back_lexicals(REGISTER|TEMPORARY);
- write_back_stack();
- my $sym = loadop($op);
- my $ppaddr = $op->ppaddr;
- #runtime(qq/printf("$ppaddr type eval\n");/);
- runtime("PP_EVAL($ppaddr, ($sym)->op_next);");
- $know_op = 1;
- invalidate_lexicals(REGISTER|TEMPORARY);
- return $op->next;
-}
-
-sub pp_entereval { doeval(@_) }
-sub pp_dofile { doeval(@_) }
-
-#pp_require is protected by pp_entertry, so no protection for it.
-sub pp_require {
- my $op = shift;
- $curcop->write_back;
- write_back_lexicals(REGISTER|TEMPORARY);
- write_back_stack();
- my $sym = doop($op);
- runtime("while (PL_op != ($sym)->op_next && PL_op != (OP*)0 ){");
- runtime("PL_op = (*PL_op->op_ppaddr)(ARGS);");
- runtime("SPAGAIN;}");
- $know_op = 1;
- invalidate_lexicals(REGISTER|TEMPORARY);
- return $op->next;
-}
-
-
-sub pp_entertry {
- my $op = shift;
- $curcop->write_back;
- write_back_lexicals(REGISTER|TEMPORARY);
- write_back_stack();
- my $sym = doop($op);
- my $jmpbuf = sprintf("jmpbuf%d", $jmpbuf_ix++);
- declare("JMPENV", $jmpbuf);
- runtime(sprintf("PP_ENTERTRY(%s,%s);", $jmpbuf, label($op->other->next)));
- invalidate_lexicals(REGISTER|TEMPORARY);
- return $op->next;
-}
-
-sub pp_leavetry{
- my $op=shift;
- default_pp($op);
- runtime("PP_LEAVETRY;");
- return $op->next;
-}
-
-sub pp_grepstart {
- my $op = shift;
- if ($need_freetmps && $freetmps_each_loop) {
- runtime("FREETMPS;"); # otherwise the grepwhile loop messes things up
- $need_freetmps = 0;
- }
- write_back_stack();
- my $sym= doop($op);
- my $next=$op->next;
- $next->save;
- my $nexttonext=$next->next;
- $nexttonext->save;
- save_or_restore_lexical_state($$nexttonext);
- runtime(sprintf("if (PL_op == (($sym)->op_next)->op_next) goto %s;",
- label($nexttonext)));
- return $op->next->other;
-}
-
-sub pp_mapstart {
- my $op = shift;
- if ($need_freetmps && $freetmps_each_loop) {
- runtime("FREETMPS;"); # otherwise the mapwhile loop messes things up
- $need_freetmps = 0;
- }
- write_back_stack();
- # pp_mapstart can return either op_next->op_next or op_next->op_other and
- # we need to be able to distinguish the two at runtime.
- my $sym= doop($op);
- my $next=$op->next;
- $next->save;
- my $nexttonext=$next->next;
- $nexttonext->save;
- save_or_restore_lexical_state($$nexttonext);
- runtime(sprintf("if (PL_op == (($sym)->op_next)->op_next) goto %s;",
- label($nexttonext)));
- return $op->next->other;
-}
-
-sub pp_grepwhile {
- my $op = shift;
- my $next = $op->next;
- unshift(@bblock_todo, $next);
- write_back_lexicals();
- write_back_stack();
- my $sym = doop($op);
- # pp_grepwhile can return either op_next or op_other and we need to
- # be able to distinguish the two at runtime. Since it's possible for
- # both ops to be "inlined", the fields could both be zero. To get
- # around that, we hack op_next to be our own op (purely because we
- # know it's a non-NULL pointer and can't be the same as op_other).
- $init->add("((LOGOP*)$sym)->op_next = $sym;");
- save_or_restore_lexical_state($$next);
- runtime(sprintf("if (PL_op == ($sym)->op_next) goto %s;", label($next)));
- $know_op = 0;
- return $op->other;
-}
-
-sub pp_mapwhile {
- pp_grepwhile(@_);
-}
-
-sub pp_return {
- my $op = shift;
- write_back_lexicals(REGISTER|TEMPORARY);
- write_back_stack();
- doop($op);
- runtime("PUTBACK;", "return PL_op;");
- $know_op = 0;
- return $op->next;
-}
-
-sub nyi {
- my $op = shift;
- warn sprintf("%s not yet implemented properly\n", $op->ppaddr);
- return default_pp($op);
-}
-
-sub pp_range {
- my $op = shift;
- my $flags = $op->flags;
- if (!($flags & OPf_WANT)) {
- error("context of range unknown at compile-time");
- }
- write_back_lexicals();
- write_back_stack();
- unless (($flags & OPf_WANT)== OPf_WANT_LIST) {
- # We need to save our UNOP structure since pp_flop uses
- # it to find and adjust out targ. We don't need it ourselves.
- $op->save;
- save_or_restore_lexical_state(${$op->other});
- runtime sprintf("if (SvTRUE(PL_curpad[%d])) goto %s;",
- $op->targ, label($op->other));
- unshift(@bblock_todo, $op->other);
- }
- return $op->next;
-}
-
-sub pp_flip {
- my $op = shift;
- my $flags = $op->flags;
- if (!($flags & OPf_WANT)) {
- error("context of flip unknown at compile-time");
- }
- if (($flags & OPf_WANT)==OPf_WANT_LIST) {
- return $op->first->other;
- }
- write_back_lexicals();
- write_back_stack();
- # We need to save our UNOP structure since pp_flop uses
- # it to find and adjust out targ. We don't need it ourselves.
- $op->save;
- my $ix = $op->targ;
- my $rangeix = $op->first->targ;
- runtime(($op->private & OPpFLIP_LINENUM) ?
- "if (PL_last_in_gv && SvIV(TOPs) == IoLINES(GvIOp(PL_last_in_gv))) {"
- : "if (SvTRUE(TOPs)) {");
- runtime("\tsv_setiv(PL_curpad[$rangeix], 1);");
- if ($op->flags & OPf_SPECIAL) {
- runtime("sv_setiv(PL_curpad[$ix], 1);");
- } else {
- save_or_restore_lexical_state(${$op->first->other});
- runtime("\tsv_setiv(PL_curpad[$ix], 0);",
- "\tsp--;",
- sprintf("\tgoto %s;", label($op->first->other)));
- }
- runtime("}",
- qq{sv_setpv(PL_curpad[$ix], "");},
- "SETs(PL_curpad[$ix]);");
- $know_op = 0;
- return $op->next;
-}
-
-sub pp_flop {
- my $op = shift;
- default_pp($op);
- $know_op = 0;
- return $op->next;
-}
-
-sub enterloop {
- my $op = shift;
- my $nextop = $op->nextop;
- my $lastop = $op->lastop;
- my $redoop = $op->redoop;
- $curcop->write_back;
- debug "enterloop: pushing on cxstack" if $debug_cxstack;
- push(@cxstack, {
- type => CXt_LOOP,
- op => $op,
- "label" => $curcop->[0]->label,
- nextop => $nextop,
- lastop => $lastop,
- redoop => $redoop
- });
- $nextop->save;
- $lastop->save;
- $redoop->save;
- return default_pp($op);
-}
-
-sub pp_enterloop { enterloop(@_) }
-sub pp_enteriter { enterloop(@_) }
-
-sub pp_leaveloop {
- my $op = shift;
- if (!@cxstack) {
- die "panic: leaveloop";
- }
- debug "leaveloop: popping from cxstack" if $debug_cxstack;
- pop(@cxstack);
- return default_pp($op);
-}
-
-sub pp_next {
- my $op = shift;
- my $cxix;
- if ($op->flags & OPf_SPECIAL) {
- $cxix = dopoptoloop();
- if ($cxix < 0) {
- error('"next" used outside loop');
- return $op->next; # ignore the op
- }
- } else {
- $cxix = dopoptolabel($op->pv);
- if ($cxix < 0) {
- error('Label not found at compile time for "next %s"', $op->pv);
- return $op->next; # ignore the op
- }
- }
- default_pp($op);
- my $nextop = $cxstack[$cxix]->{nextop};
- push(@bblock_todo, $nextop);
- save_or_restore_lexical_state($$nextop);
- runtime(sprintf("goto %s;", label($nextop)));
- return $op->next;
-}
-
-sub pp_redo {
- my $op = shift;
- my $cxix;
- if ($op->flags & OPf_SPECIAL) {
- $cxix = dopoptoloop();
- if ($cxix < 0) {
- error('"redo" used outside loop');
- return $op->next; # ignore the op
- }
- } else {
- $cxix = dopoptolabel($op->pv);
- if ($cxix < 0) {
- error('Label not found at compile time for "redo %s"', $op->pv);
- return $op->next; # ignore the op
- }
- }
- default_pp($op);
- my $redoop = $cxstack[$cxix]->{redoop};
- push(@bblock_todo, $redoop);
- save_or_restore_lexical_state($$redoop);
- runtime(sprintf("goto %s;", label($redoop)));
- return $op->next;
-}
-
-sub pp_last {
- my $op = shift;
- my $cxix;
- if ($op->flags & OPf_SPECIAL) {
- $cxix = dopoptoloop();
- if ($cxix < 0) {
- error('"last" used outside loop');
- return $op->next; # ignore the op
- }
- } else {
- $cxix = dopoptolabel($op->pv);
- if ($cxix < 0) {
- error('Label not found at compile time for "last %s"', $op->pv);
- return $op->next; # ignore the op
- }
- # XXX Add support for "last" to leave non-loop blocks
- if ($cxstack[$cxix]->{type} != CXt_LOOP) {
- error('Use of "last" for non-loop blocks is not yet implemented');
- return $op->next; # ignore the op
- }
- }
- default_pp($op);
- my $lastop = $cxstack[$cxix]->{lastop}->next;
- push(@bblock_todo, $lastop);
- save_or_restore_lexical_state($$lastop);
- runtime(sprintf("goto %s;", label($lastop)));
- return $op->next;
-}
-
-sub pp_subst {
- my $op = shift;
- write_back_lexicals();
- write_back_stack();
- my $sym = doop($op);
- my $replroot = $op->pmreplroot;
- if ($$replroot) {
- save_or_restore_lexical_state($$replroot);
- runtime sprintf("if (PL_op == ((PMOP*)(%s))->op_pmreplroot) goto %s;",
- $sym, label($replroot));
- $op->pmreplstart->save;
- push(@bblock_todo, $replroot);
- }
- invalidate_lexicals();
- return $op->next;
-}
-
-sub pp_substcont {
- my $op = shift;
- write_back_lexicals();
- write_back_stack();
- doop($op);
- my $pmop = $op->other;
- # warn sprintf("substcont: op = %s, pmop = %s\n",
- # peekop($op), peekop($pmop));#debug
-# my $pmopsym = objsym($pmop);
- my $pmopsym = $pmop->save; # XXX can this recurse?
-# warn "pmopsym = $pmopsym\n";#debug
- save_or_restore_lexical_state(${$pmop->pmreplstart});
- runtime sprintf("if (PL_op == ((PMOP*)(%s))->op_pmreplstart) goto %s;",
- $pmopsym, label($pmop->pmreplstart));
- invalidate_lexicals();
- return $pmop->next;
-}
-
-sub default_pp {
- my $op = shift;
- my $ppname = "pp_" . $op->name;
- if ($curcop and $need_curcop{$ppname}){
- $curcop->write_back;
- }
- write_back_lexicals() unless $skip_lexicals{$ppname};
- write_back_stack() unless $skip_stack{$ppname};
- doop($op);
- # XXX If the only way that ops can write to a TEMPORARY lexical is
- # when it's named in $op->targ then we could call
- # invalidate_lexicals(TEMPORARY) and avoid having to write back all
- # the temporaries. For now, we'll play it safe and write back the lot.
- invalidate_lexicals() unless $skip_invalidate{$ppname};
- return $op->next;
-}
-
-sub compile_op {
- my $op = shift;
- my $ppname = "pp_" . $op->name;
- if (exists $ignore_op{$ppname}) {
- return $op->next;
- }
- debug peek_stack() if $debug_stack;
- if ($debug_op) {
- debug sprintf("%s [%s]\n",
- peekop($op),
- $op->flags & OPf_STACKED ? "OPf_STACKED" : $op->targ);
- }
- no strict 'refs';
- if (defined(&$ppname)) {
- $know_op = 0;
- return &$ppname($op);
- } else {
- return default_pp($op);
- }
-}
-
-sub compile_bblock {
- my $op = shift;
- #warn "compile_bblock: ", peekop($op), "\n"; # debug
- save_or_restore_lexical_state($$op);
- write_label($op);
- $know_op = 0;
- do {
- $op = compile_op($op);
- } while (defined($op) && $$op && !exists($leaders->{$$op}));
- write_back_stack(); # boo hoo: big loss
- reload_lexicals();
- return $op;
-}
-
-sub cc {
- my ($name, $root, $start, @padlist) = @_;
- my $op;
- if($done{$$start}){
- #warn "repeat=>".ref($start)."$name,\n";#debug
- $decl->add(sprintf("#define $name %s",$done{$$start}));
- return;
- }
- init_pp($name);
- load_pad(@padlist);
- %lexstate=();
- B::Pseudoreg->new_scope;
- @cxstack = ();
- if ($debug_timings) {
- warn sprintf("Basic block analysis at %s\n", timing_info);
- }
- $leaders = find_leaders($root, $start);
- my @leaders= keys %$leaders;
- if ($#leaders > -1) {
- @bblock_todo = ($start, values %$leaders) ;
- } else{
- runtime("return PL_op?PL_op->op_next:0;");
- }
- if ($debug_timings) {
- warn sprintf("Compilation at %s\n", timing_info);
- }
- while (@bblock_todo) {
- $op = shift @bblock_todo;
- #warn sprintf("Considering basic block %s\n", peekop($op)); # debug
- next if !defined($op) || !$$op || $done{$$op};
- #warn "...compiling it\n"; # debug
- do {
- $done{$$op} = $name;
- $op = compile_bblock($op);
- if ($need_freetmps && $freetmps_each_bblock) {
- runtime("FREETMPS;");
- $need_freetmps = 0;
- }
- } while defined($op) && $$op && !$done{$$op};
- if ($need_freetmps && $freetmps_each_loop) {
- runtime("FREETMPS;");
- $need_freetmps = 0;
- }
- if (!$$op) {
- runtime("PUTBACK;","return PL_op;");
- } elsif ($done{$$op}) {
- save_or_restore_lexical_state($$op);
- runtime(sprintf("goto %s;", label($op)));
- }
- }
- if ($debug_timings) {
- warn sprintf("Saving runtime at %s\n", timing_info);
- }
- declare_pad(@padlist) ;
- save_runtime();
-}
-
-sub cc_recurse {
- my $ccinfo;
- my $start;
- $start = cc_queue(@_) if @_;
- while ($ccinfo = shift @cc_todo) {
- cc(@$ccinfo);
- }
- return $start;
-}
-
-sub cc_obj {
- my ($name, $cvref) = @_;
- my $cv = svref_2object($cvref);
- my @padlist = $cv->PADLIST->ARRAY;
- my $curpad_sym = $padlist[1]->save;
- cc_recurse($name, $cv->ROOT, $cv->START, @padlist);
-}
-
-sub cc_main {
- my @comppadlist = comppadlist->ARRAY;
- my $curpad_nam = $comppadlist[0]->save;
- my $curpad_sym = $comppadlist[1]->save;
- my $init_av = init_av->save;
- my $start = cc_recurse("pp_main", main_root, main_start, @comppadlist);
- # Do save_unused_subs before saving inc_hv
- save_unused_subs();
- cc_recurse();
-
- my $inc_hv = svref_2object(\%INC)->save;
- my $inc_av = svref_2object(\@INC)->save;
- my $amagic_generate= amagic_generation;
- return if $errors;
- if (!defined($module)) {
- $init->add(sprintf("PL_main_root = s\\_%x;", ${main_root()}),
- "PL_main_start = $start;",
- "PL_curpad = AvARRAY($curpad_sym);",
- "PL_initav = (AV *) $init_av;",
- "GvHV(PL_incgv) = $inc_hv;",
- "GvAV(PL_incgv) = $inc_av;",
- "av_store(CvPADLIST(PL_main_cv),0,SvREFCNT_inc($curpad_nam));",
- "av_store(CvPADLIST(PL_main_cv),1,SvREFCNT_inc($curpad_sym));",
- "PL_amagic_generation= $amagic_generate;",
- );
-
- }
- seek(STDOUT,0,0); #prevent print statements from BEGIN{} into the output
- output_boilerplate();
- print "\n";
- output_all("perl_init");
- output_runtime();
- print "\n";
- output_main();
- if (defined($module)) {
- my $cmodule = $module;
- $cmodule =~ s/::/__/g;
- print <<"EOT";
-
-#include "XSUB.h"
-XS(boot_$cmodule)
-{
- dXSARGS;
- perl_init();
- ENTER;
- SAVETMPS;
- SAVEVPTR(PL_curpad);
- SAVEVPTR(PL_op);
- PL_curpad = AvARRAY($curpad_sym);
- PL_op = $start;
- pp_main(aTHX);
- FREETMPS;
- LEAVE;
- ST(0) = &PL_sv_yes;
- XSRETURN(1);
-}
-EOT
- }
- if ($debug_timings) {
- warn sprintf("Done at %s\n", timing_info);
- }
-}
-
-sub compile {
- my @options = @_;
- my ($option, $opt, $arg);
- OPTION:
- while ($option = shift @options) {
- if ($option =~ /^-(.)(.*)/) {
- $opt = $1;
- $arg = $2;
- } else {
- unshift @options, $option;
- last OPTION;
- }
- if ($opt eq "-" && $arg eq "-") {
- shift @options;
- last OPTION;
- } elsif ($opt eq "o") {
- $arg ||= shift @options;
- open(STDOUT, ">$arg") or return "open '>$arg': $!\n";
- } elsif ($opt eq "n") {
- $arg ||= shift @options;
- $module_name = $arg;
- } elsif ($opt eq "u") {
- $arg ||= shift @options;
- mark_unused($arg,undef);
- } elsif ($opt eq "f") {
- $arg ||= shift @options;
- my $value = $arg !~ s/^no-//;
- $arg =~ s/-/_/g;
- my $ref = $optimise{$arg};
- if (defined($ref)) {
- $$ref = $value;
- } else {
- warn qq(ignoring unknown optimisation option "$arg"\n);
- }
- } elsif ($opt eq "O") {
- $arg = 1 if $arg eq "";
- my $ref;
- foreach $ref (values %optimise) {
- $$ref = 0;
- }
- if ($arg >= 2) {
- $freetmps_each_loop = 1;
- }
- if ($arg >= 1) {
- $freetmps_each_bblock = 1 unless $freetmps_each_loop;
- }
- } elsif ($opt eq "m") {
- $arg ||= shift @options;
- $module = $arg;
- mark_unused($arg,undef);
- } elsif ($opt eq "p") {
- $arg ||= shift @options;
- $patchlevel = $arg;
- } elsif ($opt eq "D") {
- $arg ||= shift @options;
- foreach $arg (split(//, $arg)) {
- if ($arg eq "o") {
- B->debug(1);
- } elsif ($arg eq "O") {
- $debug_op = 1;
- } elsif ($arg eq "s") {
- $debug_stack = 1;
- } elsif ($arg eq "c") {
- $debug_cxstack = 1;
- } elsif ($arg eq "p") {
- $debug_pad = 1;
- } elsif ($arg eq "r") {
- $debug_runtime = 1;
- } elsif ($arg eq "S") {
- $debug_shadow = 1;
- } elsif ($arg eq "q") {
- $debug_queue = 1;
- } elsif ($arg eq "l") {
- $debug_lineno = 1;
- } elsif ($arg eq "t") {
- $debug_timings = 1;
- }
- }
- }
- }
- init_sections();
- $init = B::Section->get("init");
- $decl = B::Section->get("decl");
-
- if (@options) {
- return sub {
- my ($objname, $ppname);
- foreach $objname (@options) {
- $objname = "main::$objname" unless $objname =~ /::/;
- ($ppname = $objname) =~ s/^.*?:://;
- eval "cc_obj(qq(pp_sub_$ppname), \\&$objname)";
- die "cc_obj(qq(pp_sub_$ppname, \\&$objname) failed: $@" if $@;
- return if $errors;
- }
- output_boilerplate();
- print "\n";
- output_all($module_name || "init_module");
- output_runtime();
- }
- } else {
- return sub { cc_main() };
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-B::CC - Perl compiler's optimized C translation backend
-
-=head1 SYNOPSIS
-
- perl -MO=CC[,OPTIONS] foo.pl
-
-=head1 DESCRIPTION
-
-This compiler backend takes Perl source and generates C source code
-corresponding to the flow of your program. In other words, this
-backend is somewhat a "real" compiler in the sense that many people
-think about compilers. Note however that, currently, it is a very
-poor compiler in that although it generates (mostly, or at least
-sometimes) correct code, it performs relatively few optimisations.
-This will change as the compiler develops. The result is that
-running an executable compiled with this backend may start up more
-quickly than running the original Perl program (a feature shared
-by the B<C> compiler backend--see F<B::C>) and may also execute
-slightly faster. This is by no means a good optimising compiler--yet.
-
-=head1 OPTIONS
-
-If there are any non-option arguments, they are taken to be
-names of objects to be saved (probably doesn't work properly yet).
-Without extra arguments, it saves the main program.
-
-=over 4
-
-=item B<-ofilename>
-
-Output to filename instead of STDOUT
-
-=item B<-v>
-
-Verbose compilation (currently gives a few compilation statistics).
-
-=item B<-->
-
-Force end of options
-
-=item B<-uPackname>
-
-Force apparently unused subs from package Packname to be compiled.
-This allows programs to use eval "foo()" even when sub foo is never
-seen to be used at compile time. The down side is that any subs which
-really are never used also have code generated. This option is
-necessary, for example, if you have a signal handler foo which you
-initialise with C<$SIG{BAR} = "foo">. A better fix, though, is just
-to change it to C<$SIG{BAR} = \&foo>. You can have multiple B<-u>
-options. The compiler tries to figure out which packages may possibly
-have subs in which need compiling but the current version doesn't do
-it very well. In particular, it is confused by nested packages (i.e.
-of the form C<A::B>) where package C<A> does not contain any subs.
-
-=item B<-mModulename>
-
-Instead of generating source for a runnable executable, generate
-source for an XSUB module. The boot_Modulename function (which
-DynaLoader can look for) does the appropriate initialisation and runs
-the main part of the Perl source that is being compiled.
-
-
-=item B<-D>
-
-Debug options (concatenated or separate flags like C<perl -D>).
-
-=item B<-Dr>
-
-Writes debugging output to STDERR just as it's about to write to the
-program's runtime (otherwise writes debugging info as comments in
-its C output).
-
-=item B<-DO>
-
-Outputs each OP as it's compiled
-
-=item B<-Ds>
-
-Outputs the contents of the shadow stack at each OP
-
-=item B<-Dp>
-
-Outputs the contents of the shadow pad of lexicals as it's loaded for
-each sub or the main program.
-
-=item B<-Dq>
-
-Outputs the name of each fake PP function in the queue as it's about
-to process it.
-
-=item B<-Dl>
-
-Output the filename and line number of each original line of Perl
-code as it's processed (C<pp_nextstate>).
-
-=item B<-Dt>
-
-Outputs timing information of compilation stages.
-
-=item B<-f>
-
-Force optimisations on or off one at a time.
-
-=item B<-ffreetmps-each-bblock>
-
-Delays FREETMPS from the end of each statement to the end of the each
-basic block.
-
-=item B<-ffreetmps-each-loop>
-
-Delays FREETMPS from the end of each statement to the end of the group
-of basic blocks forming a loop. At most one of the freetmps-each-*
-options can be used.
-
-=item B<-fomit-taint>
-
-Omits generating code for handling perl's tainting mechanism.
-
-=item B<-On>
-
-Optimisation level (n = 0, 1, 2, ...). B<-O> means B<-O1>.
-Currently, B<-O1> sets B<-ffreetmps-each-bblock> and B<-O2>
-sets B<-ffreetmps-each-loop>.
-
-=back
-
-=head1 EXAMPLES
-
- perl -MO=CC,-O2,-ofoo.c foo.pl
- perl cc_harness -o foo foo.c
-
-Note that C<cc_harness> lives in the C<B> subdirectory of your perl
-library directory. The utility called C<perlcc> may also be used to
-help make use of this compiler.
-
- perl -MO=CC,-mFoo,-oFoo.c Foo.pm
- perl cc_harness -shared -c -o Foo.so Foo.c
-
-=head1 BUGS
-
-Plenty. Current status: experimental.
-
-=head1 DIFFERENCES
-
-These aren't really bugs but they are constructs which are heavily
-tied to perl's compile-and-go implementation and with which this
-compiler backend cannot cope.
-
-=head2 Loops
-
-Standard perl calculates the target of "next", "last", and "redo"
-at run-time. The compiler calculates the targets at compile-time.
-For example, the program
-
- sub skip_on_odd { next NUMBER if $_[0] % 2 }
- NUMBER: for ($i = 0; $i < 5; $i++) {
- skip_on_odd($i);
- print $i;
- }
-
-produces the output
-
- 024
-
-with standard perl but gives a compile-time error with the compiler.
-
-=head2 Context of ".."
-
-The context (scalar or array) of the ".." operator determines whether
-it behaves as a range or a flip/flop. Standard perl delays until
-runtime the decision of which context it is in but the compiler needs
-to know the context at compile-time. For example,
-
- @a = (4,6,1,0,0,1);
- sub range { (shift @a)..(shift @a) }
- print range();
- while (@a) { print scalar(range()) }
-
-generates the output
-
- 456123E0
-
-with standard Perl but gives a compile-time error with compiled Perl.
-
-=head2 Arithmetic
-
-Compiled Perl programs use native C arithmetic much more frequently
-than standard perl. Operations on large numbers or on boundary
-cases may produce different behaviour.
-
-=head2 Deprecated features
-
-Features of standard perl such as C<$[> which have been deprecated
-in standard perl since Perl5 was released have not been implemented
-in the compiler.
-
-=head1 AUTHOR
-
-Malcolm Beattie, C<mbeattie@sable.ox.ac.uk>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/B/Concise.pm b/Master/tlpkg/tlperl/lib/B/Concise.pm
deleted file mode 100644
index c84578e44c4..00000000000
--- a/Master/tlpkg/tlperl/lib/B/Concise.pm
+++ /dev/null
@@ -1,1628 +0,0 @@
-package B::Concise;
-# Copyright (C) 2000-2003 Stephen McCamant. All rights reserved.
-# This program is free software; you can redistribute and/or modify it
-# under the same terms as Perl itself.
-
-# Note: we need to keep track of how many use declarations/BEGIN
-# blocks this module uses, so we can avoid printing them when user
-# asks for the BEGIN blocks in her program. Update the comments and
-# the count in concise_specials if you add or delete one. The
-# -MO=Concise counts as use #1.
-
-use strict; # use #2
-use warnings; # uses #3 and #4, since warnings uses Carp
-
-use Exporter (); # use #5
-
-our $VERSION = "0.66";
-our @ISA = qw(Exporter);
-our @EXPORT_OK = qw( set_style set_style_standard add_callback
- concise_subref concise_cv concise_main
- add_style walk_output compile reset_sequence );
-our %EXPORT_TAGS =
- ( io => [qw( walk_output compile reset_sequence )],
- style => [qw( add_style set_style_standard )],
- cb => [qw( add_callback )],
- mech => [qw( concise_subref concise_cv concise_main )], );
-
-# use #6
-use B qw(class ppname main_start main_root main_cv cstring svref_2object
- SVf_IOK SVf_NOK SVf_POK SVf_IVisUV SVf_FAKE OPf_KIDS OPf_SPECIAL
- CVf_ANON);
-
-my %style =
- ("terse" =>
- ["(?(#label =>\n)?)(*( )*)#class (#addr) #name (?([#targ])?) "
- . "#svclass~(?((#svaddr))?)~#svval~(?(label \"#coplabel\")?)\n",
- "(*( )*)goto #class (#addr)\n",
- "#class pp_#name"],
- "concise" =>
- ["#hyphseq2 (*( (x( ;)x))*)<#classsym> "
- . "#exname#arg(?([#targarglife])?)~#flags(?(/#private)?)(x(;~->#next)x)\n"
- , " (*( )*) goto #seq\n",
- "(?(<#seq>)?)#exname#arg(?([#targarglife])?)"],
- "linenoise" =>
- ["(x(;(*( )*))x)#noise#arg(?([#targarg])?)(x( ;\n)x)",
- "gt_#seq ",
- "(?(#seq)?)#noise#arg(?([#targarg])?)"],
- "debug" =>
- ["#class (#addr)\n\top_next\t\t#nextaddr\n\top_sibling\t#sibaddr\n\t"
- . "op_ppaddr\tPL_ppaddr[OP_#NAME]\n\top_type\t\t#typenum\n" .
- ($] > 5.009 ? '' : "\top_seq\t\t#seqnum\n")
- . "\top_flags\t#flagval\n\top_private\t#privval\n"
- . "(?(\top_first\t#firstaddr\n)?)(?(\top_last\t\t#lastaddr\n)?)"
- . "(?(\top_sv\t\t#svaddr\n)?)",
- " GOTO #addr\n",
- "#addr"],
- "env" => [$ENV{B_CONCISE_FORMAT}, $ENV{B_CONCISE_GOTO_FORMAT},
- $ENV{B_CONCISE_TREE_FORMAT}],
- );
-
-# Renderings, ie how Concise prints, is controlled by these vars
-# primary:
-our $stylename; # selects current style from %style
-my $order = "basic"; # how optree is walked & printed: basic, exec, tree
-
-# rendering mechanics:
-# these 'formats' are the line-rendering templates
-# they're updated from %style when $stylename changes
-my ($format, $gotofmt, $treefmt);
-
-# lesser players:
-my $base = 36; # how <sequence#> is displayed
-my $big_endian = 1; # more <sequence#> display
-my $tree_style = 0; # tree-order details
-my $banner = 1; # print banner before optree is traversed
-my $do_main = 0; # force printing of main routine
-
-# another factor: can affect all styles!
-our @callbacks; # allow external management
-
-set_style_standard("concise");
-
-my $curcv;
-my $cop_seq_base;
-
-sub set_style {
- ($format, $gotofmt, $treefmt) = @_;
- #warn "set_style: deprecated, use set_style_standard instead\n"; # someday
- die "expecting 3 style-format args\n" unless @_ == 3;
-}
-
-sub add_style {
- my ($newstyle,@args) = @_;
- die "style '$newstyle' already exists, choose a new name\n"
- if exists $style{$newstyle};
- die "expecting 3 style-format args\n" unless @args == 3;
- $style{$newstyle} = [@args];
- $stylename = $newstyle; # update rendering state
-}
-
-sub set_style_standard {
- ($stylename) = @_; # update rendering state
- die "err: style '$stylename' unknown\n" unless exists $style{$stylename};
- set_style(@{$style{$stylename}});
-}
-
-sub add_callback {
- push @callbacks, @_;
-}
-
-# output handle, used with all Concise-output printing
-our $walkHandle; # public for your convenience
-BEGIN { $walkHandle = \*STDOUT }
-
-sub walk_output { # updates $walkHandle
- my $handle = shift;
- return $walkHandle unless $handle; # allow use as accessor
-
- if (ref $handle eq 'SCALAR') {
- require Config;
- die "no perlio in this build, can't call walk_output (\\\$scalar)\n"
- unless $Config::Config{useperlio};
- # in 5.8+, open(FILEHANDLE,MODE,REFERENCE) writes to string
- open my $tmp, '>', $handle; # but cant re-set existing STDOUT
- $walkHandle = $tmp; # so use my $tmp as intermediate var
- return $walkHandle;
- }
- my $iotype = ref $handle;
- die "expecting argument/object that can print\n"
- unless $iotype eq 'GLOB' or $iotype and $handle->can('print');
- $walkHandle = $handle;
-}
-
-sub concise_subref {
- my($order, $coderef, $name) = @_;
- my $codeobj = svref_2object($coderef);
-
- return concise_stashref(@_)
- unless ref $codeobj eq 'B::CV';
- concise_cv_obj($order, $codeobj, $name);
-}
-
-sub concise_stashref {
- my($order, $h) = @_;
- foreach my $k (sort keys %$h) {
- local *s = $h->{$k};
- my $coderef = *s{CODE} or next;
- reset_sequence();
- print "FUNC: ", *s, "\n";
- my $codeobj = svref_2object($coderef);
- next unless ref $codeobj eq 'B::CV';
- eval { concise_cv_obj($order, $codeobj) }
- or warn "err $@ on $codeobj";
- }
-}
-
-# This should have been called concise_subref, but it was exported
-# under this name in versions before 0.56
-*concise_cv = \&concise_subref;
-
-sub concise_cv_obj {
- my ($order, $cv, $name) = @_;
- # name is either a string, or a CODE ref (copy of $cv arg??)
-
- $curcv = $cv;
- if ($cv->XSUB) {
- print $walkHandle "$name is XS code\n";
- return;
- }
- if (class($cv->START) eq "NULL") {
- no strict 'refs';
- if (ref $name eq 'CODE') {
- print $walkHandle "coderef $name has no START\n";
- }
- elsif (exists &$name) {
- print $walkHandle "$name exists in stash, but has no START\n";
- }
- else {
- print $walkHandle "$name not in symbol table\n";
- }
- return;
- }
- sequence($cv->START);
- if ($order eq "exec") {
- walk_exec($cv->START);
- }
- elsif ($order eq "basic") {
- # walk_topdown($cv->ROOT, sub { $_[0]->concise($_[1]) }, 0);
- my $root = $cv->ROOT;
- unless (ref $root eq 'B::NULL') {
- walk_topdown($root, sub { $_[0]->concise($_[1]) }, 0);
- } else {
- print $walkHandle "B::NULL encountered doing ROOT on $cv. avoiding disaster\n";
- }
- } else {
- print $walkHandle tree($cv->ROOT, 0);
- }
-}
-
-sub concise_main {
- my($order) = @_;
- sequence(main_start);
- $curcv = main_cv;
- if ($order eq "exec") {
- return if class(main_start) eq "NULL";
- walk_exec(main_start);
- } elsif ($order eq "tree") {
- return if class(main_root) eq "NULL";
- print $walkHandle tree(main_root, 0);
- } elsif ($order eq "basic") {
- return if class(main_root) eq "NULL";
- walk_topdown(main_root,
- sub { $_[0]->concise($_[1]) }, 0);
- }
-}
-
-sub concise_specials {
- my($name, $order, @cv_s) = @_;
- my $i = 1;
- if ($name eq "BEGIN") {
- splice(@cv_s, 0, 8); # skip 7 BEGIN blocks in this file. NOW 8 ??
- } elsif ($name eq "CHECK") {
- pop @cv_s; # skip the CHECK block that calls us
- }
- for my $cv (@cv_s) {
- print $walkHandle "$name $i:\n";
- $i++;
- concise_cv_obj($order, $cv, $name);
- }
-}
-
-my $start_sym = "\e(0"; # "\cN" sometimes also works
-my $end_sym = "\e(B"; # "\cO" respectively
-
-my @tree_decorations =
- ([" ", "--", "+-", "|-", "| ", "`-", "-", 1],
- [" ", "-", "+", "+", "|", "`", "", 0],
- [" ", map("$start_sym$_$end_sym", "qq", "wq", "tq", "x ", "mq", "q"), 1],
- [" ", map("$start_sym$_$end_sym", "q", "w", "t", "x", "m"), "", 0],
- );
-
-
-sub compileOpts {
- # set rendering state from options and args
- my (@options,@args);
- if (@_) {
- @options = grep(/^-/, @_);
- @args = grep(!/^-/, @_);
- }
- for my $o (@options) {
- # mode/order
- if ($o eq "-basic") {
- $order = "basic";
- } elsif ($o eq "-exec") {
- $order = "exec";
- } elsif ($o eq "-tree") {
- $order = "tree";
- }
- # tree-specific
- elsif ($o eq "-compact") {
- $tree_style |= 1;
- } elsif ($o eq "-loose") {
- $tree_style &= ~1;
- } elsif ($o eq "-vt") {
- $tree_style |= 2;
- } elsif ($o eq "-ascii") {
- $tree_style &= ~2;
- }
- # sequence numbering
- elsif ($o =~ /^-base(\d+)$/) {
- $base = $1;
- } elsif ($o eq "-bigendian") {
- $big_endian = 1;
- } elsif ($o eq "-littleendian") {
- $big_endian = 0;
- }
- elsif ($o eq "-nobanner") {
- $banner = 0;
- } elsif ($o eq "-banner") {
- $banner = 1;
- }
- elsif ($o eq "-main") {
- $do_main = 1;
- } elsif ($o eq "-nomain") {
- $do_main = 0;
- }
- # line-style options
- elsif (exists $style{substr($o, 1)}) {
- $stylename = substr($o, 1);
- set_style_standard($stylename);
- } else {
- warn "Option $o unrecognized";
- }
- }
- return (@args);
-}
-
-sub compile {
- my (@args) = compileOpts(@_);
- return sub {
- my @newargs = compileOpts(@_); # accept new rendering options
- warn "disregarding non-options: @newargs\n" if @newargs;
-
- for my $objname (@args) {
- next unless $objname; # skip null args to avoid noisy responses
-
- if ($objname eq "BEGIN") {
- concise_specials("BEGIN", $order,
- B::begin_av->isa("B::AV") ?
- B::begin_av->ARRAY : ());
- } elsif ($objname eq "INIT") {
- concise_specials("INIT", $order,
- B::init_av->isa("B::AV") ?
- B::init_av->ARRAY : ());
- } elsif ($objname eq "CHECK") {
- concise_specials("CHECK", $order,
- B::check_av->isa("B::AV") ?
- B::check_av->ARRAY : ());
- } elsif ($objname eq "END") {
- concise_specials("END", $order,
- B::end_av->isa("B::AV") ?
- B::end_av->ARRAY : ());
- }
- else {
- # convert function names to subrefs
- my $objref;
- if (ref $objname) {
- print $walkHandle "B::Concise::compile($objname)\n"
- if $banner;
- $objref = $objname;
- } else {
- $objname = "main::" . $objname unless $objname =~ /::/;
- print $walkHandle "$objname:\n";
- no strict 'refs';
- unless (exists &$objname) {
- print $walkHandle "err: unknown function ($objname)\n";
- return;
- }
- $objref = \&$objname;
- }
- concise_subref($order, $objref, $objname);
- }
- }
- if (!@args or $do_main) {
- print $walkHandle "main program:\n" if $do_main;
- concise_main($order);
- }
- return @args; # something
- }
-}
-
-my %labels;
-my $lastnext; # remembers op-chain, used to insert gotos
-
-my %opclass = ('OP' => "0", 'UNOP' => "1", 'BINOP' => "2", 'LOGOP' => "|",
- 'LISTOP' => "@", 'PMOP' => "/", 'SVOP' => "\$", 'GVOP' => "*",
- 'PVOP' => '"', 'LOOP' => "{", 'COP' => ";", 'PADOP' => "#");
-
-no warnings 'qw'; # "Possible attempt to put comments..."; use #7
-my @linenoise =
- qw'# () sc ( @? 1 $* gv *{ m$ m@ m% m? p/ *$ $ $# & a& pt \\ s\\ rf bl
- ` *? <> ?? ?/ r/ c/ // qr s/ /c y/ = @= C sC Cp sp df un BM po +1 +I
- -1 -I 1+ I+ 1- I- ** * i* / i/ %$ i% x + i+ - i- . " << >> < i<
- > i> <= i, >= i. == i= != i! <? i? s< s> s, s. s= s! s? b& b^ b| -0 -i
- ! ~ a2 si cs rd sr e^ lg sq in %x %o ab le ss ve ix ri sf FL od ch cy
- uf lf uc lc qm @ [f [ @[ eh vl ky dl ex % ${ @{ uk pk st jn ) )[ a@
- a% sl +] -] [- [+ so rv GS GW MS MW .. f. .f && || ^^ ?: &= |= -> s{ s}
- v} ca wa di rs ;; ; ;d }{ { } {} f{ it {l l} rt }l }n }r dm }g }e ^o
- ^c ^| ^# um bm t~ u~ ~d DB db ^s se ^g ^r {w }w pf pr ^O ^K ^R ^W ^d ^v
- ^e ^t ^k t. fc ic fl .s .p .b .c .l .a .h g1 s1 g2 s2 ?. l? -R -W -X -r
- -w -x -e -o -O -z -s -M -A -C -S -c -b -f -d -p -l -u -g -k -t -T -B cd
- co cr u. cm ut r. l@ s@ r@ mD uD oD rD tD sD wD cD f$ w$ p$ sh e$ k$ g3
- g4 s4 g5 s5 T@ C@ L@ G@ A@ S@ Hg Hc Hr Hw Mg Mc Ms Mr Sg Sc So rq do {e
- e} {t t} g6 G6 6e g7 G7 7e g8 G8 8e g9 G9 9e 6s 7s 8s 9s 6E 7E 8E 9E Pn
- Pu GP SP EP Gn Gg GG SG EG g0 c$ lk t$ ;s n> // /= CO';
-
-my $chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
-
-sub op_flags { # common flags (see BASOP.op_flags in op.h)
- my($x) = @_;
- my(@v);
- push @v, "v" if ($x & 3) == 1;
- push @v, "s" if ($x & 3) == 2;
- push @v, "l" if ($x & 3) == 3;
- push @v, "K" if $x & 4;
- push @v, "P" if $x & 8;
- push @v, "R" if $x & 16;
- push @v, "M" if $x & 32;
- push @v, "S" if $x & 64;
- push @v, "*" if $x & 128;
- return join("", @v);
-}
-
-sub base_n {
- my $x = shift;
- return "-" . base_n(-$x) if $x < 0;
- my $str = "";
- do { $str .= substr($chars, $x % $base, 1) } while $x = int($x / $base);
- $str = reverse $str if $big_endian;
- return $str;
-}
-
-my %sequence_num;
-my $seq_max = 1;
-
-sub reset_sequence {
- # reset the sequence
- %sequence_num = ();
- $seq_max = 1;
- $lastnext = 0;
-}
-
-sub seq {
- my($op) = @_;
- return "-" if not exists $sequence_num{$$op};
- return base_n($sequence_num{$$op});
-}
-
-sub walk_topdown {
- my($op, $sub, $level) = @_;
- $sub->($op, $level);
- if ($op->flags & OPf_KIDS) {
- for (my $kid = $op->first; $$kid; $kid = $kid->sibling) {
- walk_topdown($kid, $sub, $level + 1);
- }
- }
- elsif (class($op) eq "PMOP") {
- my $maybe_root = $op->pmreplroot;
- if (ref($maybe_root) and $maybe_root->isa("B::OP")) {
- # It really is the root of the replacement, not something
- # else stored here for lack of space elsewhere
- walk_topdown($maybe_root, $sub, $level + 1);
- }
- }
-}
-
-sub walklines {
- my($ar, $level) = @_;
- for my $l (@$ar) {
- if (ref($l) eq "ARRAY") {
- walklines($l, $level + 1);
- } else {
- $l->concise($level);
- }
- }
-}
-
-sub walk_exec {
- my($top, $level) = @_;
- my %opsseen;
- my @lines;
- my @todo = ([$top, \@lines]);
- while (@todo and my($op, $targ) = @{shift @todo}) {
- for (; $$op; $op = $op->next) {
- last if $opsseen{$$op}++;
- push @$targ, $op;
- my $name = $op->name;
- if (class($op) eq "LOGOP") {
- my $ar = [];
- push @$targ, $ar;
- push @todo, [$op->other, $ar];
- } elsif ($name eq "subst" and $ {$op->pmreplstart}) {
- my $ar = [];
- push @$targ, $ar;
- push @todo, [$op->pmreplstart, $ar];
- } elsif ($name =~ /^enter(loop|iter)$/) {
- if ($] > 5.009) {
- $labels{${$op->nextop}} = "NEXT";
- $labels{${$op->lastop}} = "LAST";
- $labels{${$op->redoop}} = "REDO";
- } else {
- $labels{$op->nextop->seq} = "NEXT";
- $labels{$op->lastop->seq} = "LAST";
- $labels{$op->redoop->seq} = "REDO";
- }
- }
- }
- }
- walklines(\@lines, 0);
-}
-
-# The structure of this routine is purposely modeled after op.c's peep()
-sub sequence {
- my($op) = @_;
- my $oldop = 0;
- return if class($op) eq "NULL" or exists $sequence_num{$$op};
- for (; $$op; $op = $op->next) {
- last if exists $sequence_num{$$op};
- my $name = $op->name;
- if ($name =~ /^(null|scalar|lineseq|scope)$/) {
- next if $oldop and $ {$op->next};
- } else {
- $sequence_num{$$op} = $seq_max++;
- if (class($op) eq "LOGOP") {
- my $other = $op->other;
- $other = $other->next while $other->name eq "null";
- sequence($other);
- } elsif (class($op) eq "LOOP") {
- my $redoop = $op->redoop;
- $redoop = $redoop->next while $redoop->name eq "null";
- sequence($redoop);
- my $nextop = $op->nextop;
- $nextop = $nextop->next while $nextop->name eq "null";
- sequence($nextop);
- my $lastop = $op->lastop;
- $lastop = $lastop->next while $lastop->name eq "null";
- sequence($lastop);
- } elsif ($name eq "subst" and $ {$op->pmreplstart}) {
- my $replstart = $op->pmreplstart;
- $replstart = $replstart->next while $replstart->name eq "null";
- sequence($replstart);
- }
- }
- $oldop = $op;
- }
-}
-
-sub fmt_line { # generate text-line for op.
- my($hr, $op, $text, $level) = @_;
-
- $_->($hr, $op, \$text, \$level, $stylename) for @callbacks;
-
- return '' if $hr->{SKIP}; # suppress line if a callback said so
- return '' if $hr->{goto} and $hr->{goto} eq '-'; # no goto nowhere
-
- # spec: (?(text1#varText2)?)
- $text =~ s/\(\?\(([^\#]*?)\#(\w+)([^\#]*?)\)\?\)/
- $hr->{$2} ? $1.$hr->{$2}.$3 : ""/eg;
-
- # spec: (x(exec_text;basic_text)x)
- $text =~ s/\(x\((.*?);(.*?)\)x\)/$order eq "exec" ? $1 : $2/egs;
-
- # spec: (*(text)*)
- $text =~ s/\(\*\(([^;]*?)\)\*\)/$1 x $level/egs;
-
- # spec: (*(text1;text2)*)
- $text =~ s/\(\*\((.*?);(.*?)\)\*\)/$1 x ($level - 1) . $2 x ($level>0)/egs;
-
- # convert #Var to tag=>val form: Var\t#var
- $text =~ s/\#([A-Z][a-z]+)(\d+)?/\t\u$1\t\L#$1$2/gs;
-
- # spec: #varN
- $text =~ s/\#([a-zA-Z]+)(\d+)/sprintf("%-$2s", $hr->{$1})/eg;
-
- $text =~ s/\#([a-zA-Z]+)/$hr->{$1}/eg; # populate #var's
- $text =~ s/[ \t]*~+[ \t]*/ /g; # squeeze tildes
- chomp $text;
- return "$text\n" if $text ne "";
- return $text; # suppress empty lines
-}
-
-our %priv; # used to display each opcode's BASEOP.op_private values
-
-$priv{$_}{128} = "LVINTRO"
- for ("pos", "substr", "vec", "threadsv", "gvsv", "rv2sv", "rv2hv", "rv2gv",
- "rv2av", "rv2arylen", "aelem", "helem", "aslice", "hslice", "padsv",
- "padav", "padhv", "enteriter");
-$priv{$_}{64} = "REFC" for ("leave", "leavesub", "leavesublv", "leavewrite");
-$priv{"aassign"}{64} = "COMMON";
-$priv{"aassign"}{32} = "PHASH" if $] < 5.009;
-$priv{"sassign"}{64} = "BKWARD";
-$priv{$_}{64} = "RTIME" for ("match", "subst", "substcont", "qr");
-@{$priv{"trans"}}{1,2,4,8,16,64} = ("<UTF", ">UTF", "IDENT", "SQUASH", "DEL",
- "COMPL", "GROWS");
-$priv{"repeat"}{64} = "DOLIST";
-$priv{"leaveloop"}{64} = "CONT";
-@{$priv{$_}}{32,64,96} = ("DREFAV", "DREFHV", "DREFSV")
- for (qw(rv2gv rv2sv padsv aelem helem));
-@{$priv{"entersub"}}{16,32,64} = ("DBG","TARG","NOMOD");
-@{$priv{$_}}{4,8,128} = ("INARGS","AMPER","NO()") for ("entersub", "rv2cv");
-$priv{"gv"}{32} = "EARLYCV";
-$priv{"aelem"}{16} = $priv{"helem"}{16} = "LVDEFER";
-$priv{$_}{16} = "OURINTR" for ("gvsv", "rv2sv", "rv2av", "rv2hv", "r2gv",
- "enteriter");
-$priv{$_}{16} = "TARGMY"
- for (map(($_,"s$_"),"chop", "chomp"),
- map(($_,"i_$_"), "postinc", "postdec", "multiply", "divide", "modulo",
- "add", "subtract", "negate"), "pow", "concat", "stringify",
- "left_shift", "right_shift", "bit_and", "bit_xor", "bit_or",
- "complement", "atan2", "sin", "cos", "rand", "exp", "log", "sqrt",
- "int", "hex", "oct", "abs", "length", "index", "rindex", "sprintf",
- "ord", "chr", "crypt", "quotemeta", "join", "push", "unshift", "flock",
- "chdir", "chown", "chroot", "unlink", "chmod", "utime", "rename",
- "link", "symlink", "mkdir", "rmdir", "wait", "waitpid", "system",
- "exec", "kill", "getppid", "getpgrp", "setpgrp", "getpriority",
- "setpriority", "time", "sleep");
-$priv{$_}{4} = "REVERSED" for ("enteriter", "iter");
-@{$priv{"const"}}{4,8,16,32,64,128} = ("SHORT","STRICT","ENTERED",'$[',"BARE","WARN");
-$priv{"flip"}{64} = $priv{"flop"}{64} = "LINENUM";
-$priv{"list"}{64} = "GUESSED";
-$priv{"delete"}{64} = "SLICE";
-$priv{"exists"}{64} = "SUB";
-$priv{$_}{64} = "LOCALE"
- for ("sort", "prtf", "sprintf", "slt", "sle", "seq", "sne", "sgt", "sge",
- "scmp", "lc", "uc", "lcfirst", "ucfirst");
-@{$priv{"sort"}}{1,2,4,8,16} = ("NUM", "INT", "REV", "INPLACE","DESC");
-$priv{"threadsv"}{64} = "SVREFd";
-@{$priv{$_}}{16,32,64,128} = ("INBIN","INCR","OUTBIN","OUTCR")
- for ("open", "backtick");
-$priv{"exit"}{128} = "VMS";
-$priv{$_}{2} = "FTACCESS"
- for ("ftrread", "ftrwrite", "ftrexec", "fteread", "ftewrite", "fteexec");
-if ($] >= 5.009) {
- # Stacked filetests are post 5.8.x
- $priv{$_}{4} = "FTSTACKED"
- for ("ftrread", "ftrwrite", "ftrexec", "fteread", "ftewrite", "fteexec",
- "ftis", "fteowned", "ftrowned", "ftzero", "ftsize", "ftmtime",
- "ftatime", "ftctime", "ftsock", "ftchr", "ftblk", "ftfile", "ftdir",
- "ftpipe", "ftlink", "ftsuid", "ftsgid", "ftsvtx", "fttty", "fttext",
- "ftbinary");
- # Lexical $_ is post 5.8.x
- $priv{$_}{2} = "GREPLEX"
- for ("mapwhile", "mapstart", "grepwhile", "grepstart");
-}
-
-sub private_flags {
- my($name, $x) = @_;
- my @s;
- for my $flag (128, 96, 64, 32, 16, 8, 4, 2, 1) {
- if ($priv{$name}{$flag} and $x & $flag and $x >= $flag) {
- $x -= $flag;
- push @s, $priv{$name}{$flag};
- }
- }
- push @s, $x if $x;
- return join(",", @s);
-}
-
-sub concise_sv {
- my($sv, $hr, $preferpv) = @_;
- $hr->{svclass} = class($sv);
- $hr->{svclass} = "UV"
- if $hr->{svclass} eq "IV" and $sv->FLAGS & SVf_IVisUV;
- Carp::cluck("bad concise_sv: $sv") unless $sv and $$sv;
- $hr->{svaddr} = sprintf("%#x", $$sv);
- if ($hr->{svclass} eq "GV") {
- my $gv = $sv;
- my $stash = $gv->STASH->NAME;
- if ($stash eq "main") {
- $stash = "";
- } else {
- $stash = $stash . "::";
- }
- $hr->{svval} = "*$stash" . $gv->SAFENAME;
- return "*$stash" . $gv->SAFENAME;
- } else {
- while (class($sv) eq "RV") {
- $hr->{svval} .= "\\";
- $sv = $sv->RV;
- }
- if (class($sv) eq "SPECIAL") {
- $hr->{svval} .= ["Null", "sv_undef", "sv_yes", "sv_no"]->[$$sv];
- } elsif ($preferpv && $sv->FLAGS & SVf_POK) {
- $hr->{svval} .= cstring($sv->PV);
- } elsif ($sv->FLAGS & SVf_NOK) {
- $hr->{svval} .= $sv->NV;
- } elsif ($sv->FLAGS & SVf_IOK) {
- $hr->{svval} .= $sv->int_value;
- } elsif ($sv->FLAGS & SVf_POK) {
- $hr->{svval} .= cstring($sv->PV);
- } elsif (class($sv) eq "HV") {
- $hr->{svval} .= 'HASH';
- }
-
- $hr->{svval} = 'undef' unless defined $hr->{svval};
- my $out = $hr->{svclass};
- return $out .= " $hr->{svval}" ;
- }
-}
-
-sub concise_op {
- my ($op, $level, $format) = @_;
- my %h;
- $h{exname} = $h{name} = $op->name;
- $h{NAME} = uc $h{name};
- $h{class} = class($op);
- $h{extarg} = $h{targ} = $op->targ;
- $h{extarg} = "" unless $h{extarg};
- if ($h{name} eq "null" and $h{targ}) {
- # targ holds the old type
- $h{exname} = "ex-" . substr(ppname($h{targ}), 3);
- $h{extarg} = "";
- } elsif ($op->name =~ /^leave(sub(lv)?|write)?$/) {
- # targ potentially holds a reference count
- if ($op->private & 64) {
- my $refs = "ref" . ($h{targ} != 1 ? "s" : "");
- $h{targarglife} = $h{targarg} = "$h{targ} $refs";
- }
- } elsif ($h{targ}) {
- my $padname = (($curcv->PADLIST->ARRAY)[0]->ARRAY)[$h{targ}];
- if (defined $padname and class($padname) ne "SPECIAL") {
- $h{targarg} = $padname->PVX;
- if ($padname->FLAGS & SVf_FAKE) {
- if ($] < 5.009) {
- $h{targarglife} = "$h{targarg}:FAKE";
- } else {
- # These changes relate to the jumbo closure fix.
- # See changes 19939 and 20005
- my $fake = '';
- $fake .= 'a' if $padname->IVX & 1; # PAD_FAKELEX_ANON
- $fake .= 'm' if $padname->IVX & 2; # PAD_FAKELEX_MULTI
- $fake .= ':' . $padname->NVX if $curcv->CvFLAGS & CVf_ANON;
- $h{targarglife} = "$h{targarg}:FAKE:$fake";
- }
- }
- else {
- my $intro = $padname->NVX - $cop_seq_base;
- my $finish = int($padname->IVX) - $cop_seq_base;
- $finish = "end" if $finish == 999999999 - $cop_seq_base;
- $h{targarglife} = "$h{targarg}:$intro,$finish";
- }
- } else {
- $h{targarglife} = $h{targarg} = "t" . $h{targ};
- }
- }
- $h{arg} = "";
- $h{svclass} = $h{svaddr} = $h{svval} = "";
- if ($h{class} eq "PMOP") {
- my $precomp = $op->precomp;
- if (defined $precomp) {
- $precomp = cstring($precomp); # Escape literal control sequences
- $precomp = "/$precomp/";
- } else {
- $precomp = "";
- }
- my $pmreplroot = $op->pmreplroot;
- my $pmreplstart;
- if (ref($pmreplroot) eq "B::GV") {
- # with C<@stash_array = split(/pat/, str);>,
- # *stash_array is stored in /pat/'s pmreplroot.
- $h{arg} = "($precomp => \@" . $pmreplroot->NAME . ")";
- } elsif (!ref($pmreplroot) and $pmreplroot) {
- # same as the last case, except the value is actually a
- # pad offset for where the GV is kept (this happens under
- # ithreads)
- my $gv = (($curcv->PADLIST->ARRAY)[1]->ARRAY)[$pmreplroot];
- $h{arg} = "($precomp => \@" . $gv->NAME . ")";
- } elsif ($ {$op->pmreplstart}) {
- undef $lastnext;
- $pmreplstart = "replstart->" . seq($op->pmreplstart);
- $h{arg} = "(" . join(" ", $precomp, $pmreplstart) . ")";
- } else {
- $h{arg} = "($precomp)";
- }
- } elsif ($h{class} eq "PVOP" and $h{name} ne "trans") {
- $h{arg} = '("' . $op->pv . '")';
- $h{svval} = '"' . $op->pv . '"';
- } elsif ($h{class} eq "COP") {
- my $label = $op->label;
- $h{coplabel} = $label;
- $label = $label ? "$label: " : "";
- my $loc = $op->file;
- $loc =~ s[.*/][];
- $loc .= ":" . $op->line;
- my($stash, $cseq) = ($op->stash->NAME, $op->cop_seq - $cop_seq_base);
- my $arybase = $op->arybase;
- $arybase = $arybase ? ' $[=' . $arybase : "";
- $h{arg} = "($label$stash $cseq $loc$arybase)";
- } elsif ($h{class} eq "LOOP") {
- $h{arg} = "(next->" . seq($op->nextop) . " last->" . seq($op->lastop)
- . " redo->" . seq($op->redoop) . ")";
- } elsif ($h{class} eq "LOGOP") {
- undef $lastnext;
- $h{arg} = "(other->" . seq($op->other) . ")";
- }
- elsif ($h{class} eq "SVOP" or $h{class} eq "PADOP") {
- unless ($h{name} eq 'aelemfast' and $op->flags & OPf_SPECIAL) {
- my $idx = ($h{class} eq "SVOP") ? $op->targ : $op->padix;
- my $preferpv = $h{name} eq "method_named";
- if ($h{class} eq "PADOP" or !${$op->sv}) {
- my $sv = (($curcv->PADLIST->ARRAY)[1]->ARRAY)[$idx];
- $h{arg} = "[" . concise_sv($sv, \%h, $preferpv) . "]";
- $h{targarglife} = $h{targarg} = "";
- } else {
- $h{arg} = "(" . concise_sv($op->sv, \%h, $preferpv) . ")";
- }
- }
- }
- $h{seq} = $h{hyphseq} = seq($op);
- $h{seq} = "" if $h{seq} eq "-";
- if ($] > 5.009) {
- $h{opt} = $op->opt;
- $h{static} = $op->static;
- $h{label} = $labels{$$op};
- } else {
- $h{seqnum} = $op->seq;
- $h{label} = $labels{$op->seq};
- }
- $h{next} = $op->next;
- $h{next} = (class($h{next}) eq "NULL") ? "(end)" : seq($h{next});
- $h{nextaddr} = sprintf("%#x", $ {$op->next});
- $h{sibaddr} = sprintf("%#x", $ {$op->sibling});
- $h{firstaddr} = sprintf("%#x", $ {$op->first}) if $op->can("first");
- $h{lastaddr} = sprintf("%#x", $ {$op->last}) if $op->can("last");
-
- $h{classsym} = $opclass{$h{class}};
- $h{flagval} = $op->flags;
- $h{flags} = op_flags($op->flags);
- $h{privval} = $op->private;
- $h{private} = private_flags($h{name}, $op->private);
- $h{addr} = sprintf("%#x", $$op);
- $h{typenum} = $op->type;
- $h{noise} = $linenoise[$op->type];
-
- return fmt_line(\%h, $op, $format, $level);
-}
-
-sub B::OP::concise {
- my($op, $level) = @_;
- if ($order eq "exec" and $lastnext and $$lastnext != $$op) {
- # insert a 'goto' line
- my $synth = {"seq" => seq($lastnext), "class" => class($lastnext),
- "addr" => sprintf("%#x", $$lastnext),
- "goto" => seq($lastnext), # simplify goto '-' removal
- };
- print $walkHandle fmt_line($synth, $op, $gotofmt, $level+1);
- }
- $lastnext = $op->next;
- print $walkHandle concise_op($op, $level, $format);
-}
-
-# B::OP::terse (see Terse.pm) now just calls this
-sub b_terse {
- my($op, $level) = @_;
-
- # This isn't necessarily right, but there's no easy way to get
- # from an OP to the right CV. This is a limitation of the
- # ->terse() interface style, and there isn't much to do about
- # it. In particular, we can die in concise_op if the main pad
- # isn't long enough, or has the wrong kind of entries, compared to
- # the pad a sub was compiled with. The fix for that would be to
- # make a backwards compatible "terse" format that never even
- # looked at the pad, just like the old B::Terse. I don't think
- # that's worth the effort, though.
- $curcv = main_cv unless $curcv;
-
- if ($order eq "exec" and $lastnext and $$lastnext != $$op) {
- # insert a 'goto'
- my $h = {"seq" => seq($lastnext), "class" => class($lastnext),
- "addr" => sprintf("%#x", $$lastnext)};
- print # $walkHandle
- fmt_line($h, $op, $style{"terse"}[1], $level+1);
- }
- $lastnext = $op->next;
- print # $walkHandle
- concise_op($op, $level, $style{"terse"}[0]);
-}
-
-sub tree {
- my $op = shift;
- my $level = shift;
- my $style = $tree_decorations[$tree_style];
- my($space, $single, $kids, $kid, $nokid, $last, $lead, $size) = @$style;
- my $name = concise_op($op, $level, $treefmt);
- if (not $op->flags & OPf_KIDS) {
- return $name . "\n";
- }
- my @lines;
- for (my $kid = $op->first; $$kid; $kid = $kid->sibling) {
- push @lines, tree($kid, $level+1);
- }
- my $i;
- for ($i = $#lines; substr($lines[$i], 0, 1) eq " "; $i--) {
- $lines[$i] = $space . $lines[$i];
- }
- if ($i > 0) {
- $lines[$i] = $last . $lines[$i];
- while ($i-- > 1) {
- if (substr($lines[$i], 0, 1) eq " ") {
- $lines[$i] = $nokid . $lines[$i];
- } else {
- $lines[$i] = $kid . $lines[$i];
- }
- }
- $lines[$i] = $kids . $lines[$i];
- } else {
- $lines[0] = $single . $lines[0];
- }
- return("$name$lead" . shift @lines,
- map(" " x (length($name)+$size) . $_, @lines));
-}
-
-# *** Warning: fragile kludge ahead ***
-# Because the B::* modules run in the same interpreter as the code
-# they're compiling, their presence tends to distort the view we have of
-# the code we're looking at. In particular, perl gives sequence numbers
-# to COPs. If the program we're looking at were run on its own, this
-# would start at 1. Because all of B::Concise and all the modules it
-# uses are compiled first, though, by the time we get to the user's
-# program the sequence number is already pretty high, which could be
-# distracting if you're trying to tell OPs apart. Therefore we'd like to
-# subtract an offset from all the sequence numbers we display, to
-# restore the simpler view of the world. The trick is to know what that
-# offset will be, when we're still compiling B::Concise! If we
-# hardcoded a value, it would have to change every time B::Concise or
-# other modules we use do. To help a little, what we do here is compile
-# a little code at the end of the module, and compute the base sequence
-# number for the user's program as being a small offset later, so all we
-# have to worry about are changes in the offset.
-
-# [For 5.8.x and earlier perl is generating sequence numbers for all ops,
-# and using them to reference labels]
-
-
-# When you say "perl -MO=Concise -e '$a'", the output should look like:
-
-# 4 <@> leave[t1] vKP/REFC ->(end)
-# 1 <0> enter ->2
- #^ smallest OP sequence number should be 1
-# 2 <;> nextstate(main 1 -e:1) v ->3
- # ^ smallest COP sequence number should be 1
-# - <1> ex-rv2sv vK/1 ->4
-# 3 <$> gvsv(*a) s ->4
-
-# If the second of the marked numbers there isn't 1, it means you need
-# to update the corresponding magic number in the next line.
-# Remember, this needs to stay the last things in the module.
-
-# Why is this different for MacOS? Does it matter?
-my $cop_seq_mnum = $^O eq 'MacOS' ? 12 : 11;
-$cop_seq_base = svref_2object(eval 'sub{0;}')->START->cop_seq + $cop_seq_mnum;
-
-1;
-
-__END__
-
-=head1 NAME
-
-B::Concise - Walk Perl syntax tree, printing concise info about ops
-
-=head1 SYNOPSIS
-
- perl -MO=Concise[,OPTIONS] foo.pl
-
- use B::Concise qw(set_style add_callback);
-
-=head1 DESCRIPTION
-
-This compiler backend prints the internal OPs of a Perl program's syntax
-tree in one of several space-efficient text formats suitable for debugging
-the inner workings of perl or other compiler backends. It can print OPs in
-the order they appear in the OP tree, in the order they will execute, or
-in a text approximation to their tree structure, and the format of the
-information displayed is customizable. Its function is similar to that of
-perl's B<-Dx> debugging flag or the B<B::Terse> module, but it is more
-sophisticated and flexible.
-
-=head1 EXAMPLE
-
-Here's an example of 2 outputs (aka 'renderings'), using the
--exec and -basic (i.e. default) formatting conventions on the same code
-snippet.
-
- % perl -MO=Concise,-exec -e '$a = $b + 42'
- 1 <0> enter
- 2 <;> nextstate(main 1 -e:1) v
- 3 <#> gvsv[*b] s
- 4 <$> const[IV 42] s
- * 5 <2> add[t3] sK/2
- 6 <#> gvsv[*a] s
- 7 <2> sassign vKS/2
- 8 <@> leave[1 ref] vKP/REFC
-
-Each line corresponds to an opcode. The opcode marked with '*' is used
-in a few examples below.
-
-The 1st column is the op's sequence number, starting at 1, and is
-displayed in base 36 by default. This rendering is in -exec (i.e.
-execution) order.
-
-The symbol between angle brackets indicates the op's type, for
-example; <2> is a BINOP, <@> a LISTOP, and <#> is a PADOP, which is
-used in threaded perls. (see L</"OP class abbreviations">).
-
-The opname, as in B<'add[t1]'>, which may be followed by op-specific
-information in parentheses or brackets (ex B<'[t1]'>).
-
-The op-flags (ex B<'sK/2'>) follow, and are described in (L</"OP flags
-abbreviations">).
-
- % perl -MO=Concise -e '$a = $b + 42'
- 8 <@> leave[1 ref] vKP/REFC ->(end)
- 1 <0> enter ->2
- 2 <;> nextstate(main 1 -e:1) v ->3
- 7 <2> sassign vKS/2 ->8
- * 5 <2> add[t1] sK/2 ->6
- - <1> ex-rv2sv sK/1 ->4
- 3 <$> gvsv(*b) s ->4
- 4 <$> const(IV 42) s ->5
- - <1> ex-rv2sv sKRM*/1 ->7
- 6 <$> gvsv(*a) s ->7
-
-The default rendering is top-down, so they're not in execution order.
-This form reflects the way the stack is used to parse and evaluate
-expressions; the add operates on the two terms below it in the tree.
-
-Nullops appear as C<ex-opname>, where I<opname> is an op that has been
-optimized away by perl. They're displayed with a sequence-number of
-'-', because they are not executed (they don't appear in previous
-example), they're printed here because they reflect the parse.
-
-The arrow points to the sequence number of the next op; they're not
-displayed in -exec mode, for obvious reasons.
-
-Note that because this rendering was done on a non-threaded perl, the
-PADOPs in the previous examples are now SVOPs, and some (but not all)
-of the square brackets have been replaced by round ones. This is a
-subtle feature to provide some visual distinction between renderings
-on threaded and un-threaded perls.
-
-
-=head1 OPTIONS
-
-Arguments that don't start with a hyphen are taken to be the names of
-subroutines to print the OPs of; if no such functions are specified,
-the main body of the program (outside any subroutines, and not
-including use'd or require'd files) is rendered. Passing C<BEGIN>,
-C<CHECK>, C<INIT>, or C<END> will cause all of the corresponding
-special blocks to be printed.
-
-Options affect how things are rendered (ie printed). They're presented
-here by their visual effect, 1st being strongest. They're grouped
-according to how they interrelate; within each group the options are
-mutually exclusive (unless otherwise stated).
-
-=head2 Options for Opcode Ordering
-
-These options control the 'vertical display' of opcodes. The display
-'order' is also called 'mode' elsewhere in this document.
-
-=over 4
-
-=item B<-basic>
-
-Print OPs in the order they appear in the OP tree (a preorder
-traversal, starting at the root). The indentation of each OP shows its
-level in the tree, and the '->' at the end of the line indicates the
-next opcode in execution order. This mode is the default, so the flag
-is included simply for completeness.
-
-=item B<-exec>
-
-Print OPs in the order they would normally execute (for the majority
-of constructs this is a postorder traversal of the tree, ending at the
-root). In most cases the OP that usually follows a given OP will
-appear directly below it; alternate paths are shown by indentation. In
-cases like loops when control jumps out of a linear path, a 'goto'
-line is generated.
-
-=item B<-tree>
-
-Print OPs in a text approximation of a tree, with the root of the tree
-at the left and 'left-to-right' order of children transformed into
-'top-to-bottom'. Because this mode grows both to the right and down,
-it isn't suitable for large programs (unless you have a very wide
-terminal).
-
-=back
-
-=head2 Options for Line-Style
-
-These options select the line-style (or just style) used to render
-each opcode, and dictates what info is actually printed into each line.
-
-=over 4
-
-=item B<-concise>
-
-Use the author's favorite set of formatting conventions. This is the
-default, of course.
-
-=item B<-terse>
-
-Use formatting conventions that emulate the output of B<B::Terse>. The
-basic mode is almost indistinguishable from the real B<B::Terse>, and the
-exec mode looks very similar, but is in a more logical order and lacks
-curly brackets. B<B::Terse> doesn't have a tree mode, so the tree mode
-is only vaguely reminiscent of B<B::Terse>.
-
-=item B<-linenoise>
-
-Use formatting conventions in which the name of each OP, rather than being
-written out in full, is represented by a one- or two-character abbreviation.
-This is mainly a joke.
-
-=item B<-debug>
-
-Use formatting conventions reminiscent of B<B::Debug>; these aren't
-very concise at all.
-
-=item B<-env>
-
-Use formatting conventions read from the environment variables
-C<B_CONCISE_FORMAT>, C<B_CONCISE_GOTO_FORMAT>, and C<B_CONCISE_TREE_FORMAT>.
-
-=back
-
-=head2 Options for tree-specific formatting
-
-=over 4
-
-=item B<-compact>
-
-Use a tree format in which the minimum amount of space is used for the
-lines connecting nodes (one character in most cases). This squeezes out
-a few precious columns of screen real estate.
-
-=item B<-loose>
-
-Use a tree format that uses longer edges to separate OP nodes. This format
-tends to look better than the compact one, especially in ASCII, and is
-the default.
-
-=item B<-vt>
-
-Use tree connecting characters drawn from the VT100 line-drawing set.
-This looks better if your terminal supports it.
-
-=item B<-ascii>
-
-Draw the tree with standard ASCII characters like C<+> and C<|>. These don't
-look as clean as the VT100 characters, but they'll work with almost any
-terminal (or the horizontal scrolling mode of less(1)) and are suitable
-for text documentation or email. This is the default.
-
-=back
-
-These are pairwise exclusive, i.e. compact or loose, vt or ascii.
-
-=head2 Options controlling sequence numbering
-
-=over 4
-
-=item B<-base>I<n>
-
-Print OP sequence numbers in base I<n>. If I<n> is greater than 10, the
-digit for 11 will be 'a', and so on. If I<n> is greater than 36, the digit
-for 37 will be 'A', and so on until 62. Values greater than 62 are not
-currently supported. The default is 36.
-
-=item B<-bigendian>
-
-Print sequence numbers with the most significant digit first. This is the
-usual convention for Arabic numerals, and the default.
-
-=item B<-littleendian>
-
-Print seqence numbers with the least significant digit first. This is
-obviously mutually exclusive with bigendian.
-
-=back
-
-=head2 Other options
-
-These are pairwise exclusive.
-
-=over 4
-
-=item B<-main>
-
-Include the main program in the output, even if subroutines were also
-specified. This rendering is normally suppressed when a subroutine
-name or reference is given.
-
-=item B<-nomain>
-
-This restores the default behavior after you've changed it with '-main'
-(it's not normally needed). If no subroutine name/ref is given, main is
-rendered, regardless of this flag.
-
-=item B<-nobanner>
-
-Renderings usually include a banner line identifying the function name
-or stringified subref. This suppresses the printing of the banner.
-
-TBC: Remove the stringified coderef; while it provides a 'cookie' for
-each function rendered, the cookies used should be 1,2,3.. not a
-random hex-address. It also complicates string comparison of two
-different trees.
-
-=item B<-banner>
-
-restores default banner behavior.
-
-=item B<-banneris> => subref
-
-TBC: a hookpoint (and an option to set it) for a user-supplied
-function to produce a banner appropriate for users needs. It's not
-ideal, because the rendering-state variables, which are a natural
-candidate for use in concise.t, are unavailable to the user.
-
-=back
-
-=head2 Option Stickiness
-
-If you invoke Concise more than once in a program, you should know that
-the options are 'sticky'. This means that the options you provide in
-the first call will be remembered for the 2nd call, unless you
-re-specify or change them.
-
-=head1 ABBREVIATIONS
-
-The concise style uses symbols to convey maximum info with minimal
-clutter (like hex addresses). With just a little practice, you can
-start to see the flowers, not just the branches, in the trees.
-
-=head2 OP class abbreviations
-
-These symbols appear before the op-name, and indicate the
-B:: namespace that represents the ops in your Perl code.
-
- 0 OP (aka BASEOP) An OP with no children
- 1 UNOP An OP with one child
- 2 BINOP An OP with two children
- | LOGOP A control branch OP
- @ LISTOP An OP that could have lots of children
- / PMOP An OP with a regular expression
- $ SVOP An OP with an SV
- " PVOP An OP with a string
- { LOOP An OP that holds pointers for a loop
- ; COP An OP that marks the start of a statement
- # PADOP An OP with a GV on the pad
-
-=head2 OP flags abbreviations
-
-OP flags are either public or private. The public flags alter the
-behavior of each opcode in consistent ways, and are represented by 0
-or more single characters.
-
- v OPf_WANT_VOID Want nothing (void context)
- s OPf_WANT_SCALAR Want single value (scalar context)
- l OPf_WANT_LIST Want list of any length (list context)
- Want is unknown
- K OPf_KIDS There is a firstborn child.
- P OPf_PARENS This operator was parenthesized.
- (Or block needs explicit scope entry.)
- R OPf_REF Certified reference.
- (Return container, not containee).
- M OPf_MOD Will modify (lvalue).
- S OPf_STACKED Some arg is arriving on the stack.
- * OPf_SPECIAL Do something weird for this op (see op.h)
-
-Private flags, if any are set for an opcode, are displayed after a '/'
-
- 8 <@> leave[1 ref] vKP/REFC ->(end)
- 7 <2> sassign vKS/2 ->8
-
-They're opcode specific, and occur less often than the public ones, so
-they're represented by short mnemonics instead of single-chars; see
-F<op.h> for gory details, or try this quick 2-liner:
-
- $> perl -MB::Concise -de 1
- DB<1> |x \%B::Concise::priv
-
-=head1 FORMATTING SPECIFICATIONS
-
-For each line-style ('concise', 'terse', 'linenoise', etc.) there are
-3 format-specs which control how OPs are rendered.
-
-The first is the 'default' format, which is used in both basic and exec
-modes to print all opcodes. The 2nd, goto-format, is used in exec
-mode when branches are encountered. They're not real opcodes, and are
-inserted to look like a closing curly brace. The tree-format is tree
-specific.
-
-When a line is rendered, the correct format-spec is copied and scanned
-for the following items; data is substituted in, and other
-manipulations like basic indenting are done, for each opcode rendered.
-
-There are 3 kinds of items that may be populated; special patterns,
-#vars, and literal text, which is copied verbatim. (Yes, it's a set
-of s///g steps.)
-
-=head2 Special Patterns
-
-These items are the primitives used to perform indenting, and to
-select text from amongst alternatives.
-
-=over 4
-
-=item B<(x(>I<exec_text>B<;>I<basic_text>B<)x)>
-
-Generates I<exec_text> in exec mode, or I<basic_text> in basic mode.
-
-=item B<(*(>I<text>B<)*)>
-
-Generates one copy of I<text> for each indentation level.
-
-=item B<(*(>I<text1>B<;>I<text2>B<)*)>
-
-Generates one fewer copies of I<text1> than the indentation level, followed
-by one copy of I<text2> if the indentation level is more than 0.
-
-=item B<(?(>I<text1>B<#>I<var>I<Text2>B<)?)>
-
-If the value of I<var> is true (not empty or zero), generates the
-value of I<var> surrounded by I<text1> and I<Text2>, otherwise
-nothing.
-
-=item B<~>
-
-Any number of tildes and surrounding whitespace will be collapsed to
-a single space.
-
-=back
-
-=head2 # Variables
-
-These #vars represent opcode properties that you may want as part of
-your rendering. The '#' is intended as a private sigil; a #var's
-value is interpolated into the style-line, much like "read $this".
-
-These vars take 3 forms:
-
-=over 4
-
-=item B<#>I<var>
-
-A property named 'var' is assumed to exist for the opcodes, and is
-interpolated into the rendering.
-
-=item B<#>I<var>I<N>
-
-Generates the value of I<var>, left justified to fill I<N> spaces.
-Note that this means while you can have properties 'foo' and 'foo2',
-you cannot render 'foo2', but you could with 'foo2a'. You would be
-wise not to rely on this behavior going forward ;-)
-
-=item B<#>I<Var>
-
-This ucfirst form of #var generates a tag-value form of itself for
-display; it converts '#Var' into a 'Var => #var' style, which is then
-handled as described above. (Imp-note: #Vars cannot be used for
-conditional-fills, because the => #var transform is done after the check
-for #Var's value).
-
-=back
-
-The following variables are 'defined' by B::Concise; when they are
-used in a style, their respective values are plugged into the
-rendering of each opcode.
-
-Only some of these are used by the standard styles, the others are
-provided for you to delve into optree mechanics, should you wish to
-add a new style (see L</add_style> below) that uses them. You can
-also add new ones using L</add_callback>.
-
-=over 4
-
-=item B<#addr>
-
-The address of the OP, in hexadecimal.
-
-=item B<#arg>
-
-The OP-specific information of the OP (such as the SV for an SVOP, the
-non-local exit pointers for a LOOP, etc.) enclosed in parentheses.
-
-=item B<#class>
-
-The B-determined class of the OP, in all caps.
-
-=item B<#classsym>
-
-A single symbol abbreviating the class of the OP.
-
-=item B<#coplabel>
-
-The label of the statement or block the OP is the start of, if any.
-
-=item B<#exname>
-
-The name of the OP, or 'ex-foo' if the OP is a null that used to be a foo.
-
-=item B<#extarg>
-
-The target of the OP, or nothing for a nulled OP.
-
-=item B<#firstaddr>
-
-The address of the OP's first child, in hexadecimal.
-
-=item B<#flags>
-
-The OP's flags, abbreviated as a series of symbols.
-
-=item B<#flagval>
-
-The numeric value of the OP's flags.
-
-=item B<#hyphseq>
-
-The sequence number of the OP, or a hyphen if it doesn't have one.
-
-=item B<#label>
-
-'NEXT', 'LAST', or 'REDO' if the OP is a target of one of those in exec
-mode, or empty otherwise.
-
-=item B<#lastaddr>
-
-The address of the OP's last child, in hexadecimal.
-
-=item B<#name>
-
-The OP's name.
-
-=item B<#NAME>
-
-The OP's name, in all caps.
-
-=item B<#next>
-
-The sequence number of the OP's next OP.
-
-=item B<#nextaddr>
-
-The address of the OP's next OP, in hexadecimal.
-
-=item B<#noise>
-
-A one- or two-character abbreviation for the OP's name.
-
-=item B<#private>
-
-The OP's private flags, rendered with abbreviated names if possible.
-
-=item B<#privval>
-
-The numeric value of the OP's private flags.
-
-=item B<#seq>
-
-The sequence number of the OP. Note that this is a sequence number
-generated by B::Concise.
-
-=item B<#seqnum>
-
-5.8.x and earlier only. 5.9 and later do not provide this.
-
-The real sequence number of the OP, as a regular number and not adjusted
-to be relative to the start of the real program. (This will generally be
-a fairly large number because all of B<B::Concise> is compiled before
-your program is).
-
-=item B<#opt>
-
-Whether or not the op has been optimised by the peephole optimiser.
-
-Only available in 5.9 and later.
-
-=item B<#static>
-
-Whether or not the op is statically defined. This flag is used by the
-B::C compiler backend and indicates that the op should not be freed.
-
-Only available in 5.9 and later.
-
-=item B<#sibaddr>
-
-The address of the OP's next youngest sibling, in hexadecimal.
-
-=item B<#svaddr>
-
-The address of the OP's SV, if it has an SV, in hexadecimal.
-
-=item B<#svclass>
-
-The class of the OP's SV, if it has one, in all caps (e.g., 'IV').
-
-=item B<#svval>
-
-The value of the OP's SV, if it has one, in a short human-readable format.
-
-=item B<#targ>
-
-The numeric value of the OP's targ.
-
-=item B<#targarg>
-
-The name of the variable the OP's targ refers to, if any, otherwise the
-letter t followed by the OP's targ in decimal.
-
-=item B<#targarglife>
-
-Same as B<#targarg>, but followed by the COP sequence numbers that delimit
-the variable's lifetime (or 'end' for a variable in an open scope) for a
-variable.
-
-=item B<#typenum>
-
-The numeric value of the OP's type, in decimal.
-
-=back
-
-=head1 Using B::Concise outside of the O framework
-
-The common (and original) usage of B::Concise was for command-line
-renderings of simple code, as given in EXAMPLE. But you can also use
-B<B::Concise> from your code, and call compile() directly, and
-repeatedly. By doing so, you can avoid the compile-time only
-operation of O.pm, and even use the debugger to step through
-B::Concise::compile() itself.
-
-Once you're doing this, you may alter Concise output by adding new
-rendering styles, and by optionally adding callback routines which
-populate new variables, if such were referenced from those (just
-added) styles.
-
-=head2 Example: Altering Concise Renderings
-
- use B::Concise qw(set_style add_callback);
- add_style($yourStyleName => $defaultfmt, $gotofmt, $treefmt);
- add_callback
- ( sub {
- my ($h, $op, $format, $level, $stylename) = @_;
- $h->{variable} = some_func($op);
- });
- $walker = B::Concise::compile(@options,@subnames,@subrefs);
- $walker->();
-
-=head2 set_style()
-
-B<set_style> accepts 3 arguments, and updates the three format-specs
-comprising a line-style (basic-exec, goto, tree). It has one minor
-drawback though; it doesn't register the style under a new name. This
-can become an issue if you render more than once and switch styles.
-Thus you may prefer to use add_style() and/or set_style_standard()
-instead.
-
-=head2 set_style_standard($name)
-
-This restores one of the standard line-styles: C<terse>, C<concise>,
-C<linenoise>, C<debug>, C<env>, into effect. It also accepts style
-names previously defined with add_style().
-
-=head2 add_style()
-
-This subroutine accepts a new style name and three style arguments as
-above, and creates, registers, and selects the newly named style. It is
-an error to re-add a style; call set_style_standard() to switch between
-several styles.
-
-=head2 add_callback()
-
-If your newly minted styles refer to any new #variables, you'll need
-to define a callback subroutine that will populate (or modify) those
-variables. They are then available for use in the style you've
-chosen.
-
-The callbacks are called for each opcode visited by Concise, in the
-same order as they are added. Each subroutine is passed five
-parameters.
-
- 1. A hashref, containing the variable names and values which are
- populated into the report-line for the op
- 2. the op, as a B<B::OP> object
- 3. a reference to the format string
- 4. the formatting (indent) level
- 5. the selected stylename
-
-To define your own variables, simply add them to the hash, or change
-existing values if you need to. The level and format are passed in as
-references to scalars, but it is unlikely that they will need to be
-changed or even used.
-
-=head2 Running B::Concise::compile()
-
-B<compile> accepts options as described above in L</OPTIONS>, and
-arguments, which are either coderefs, or subroutine names.
-
-It constructs and returns a $treewalker coderef, which when invoked,
-traverses, or walks, and renders the optrees of the given arguments to
-STDOUT. You can reuse this, and can change the rendering style used
-each time; thereafter the coderef renders in the new style.
-
-B<walk_output> lets you change the print destination from STDOUT to
-another open filehandle, or into a string passed as a ref (unless
-you've built perl with -Uuseperlio).
-
- my $walker = B::Concise::compile('-terse','aFuncName', \&aSubRef); # 1
- walk_output(\my $buf);
- $walker->(); # 1 renders -terse
- set_style_standard('concise'); # 2
- $walker->(); # 2 renders -concise
- $walker->(@new); # 3 renders whatever
- print "3 different renderings: terse, concise, and @new: $buf\n";
-
-When $walker is called, it traverses the subroutines supplied when it
-was created, and renders them using the current style. You can change
-the style afterwards in several different ways:
-
- 1. call C<compile>, altering style or mode/order
- 2. call C<set_style_standard>
- 3. call $walker, passing @new options
-
-Passing new options to the $walker is the easiest way to change
-amongst any pre-defined styles (the ones you add are automatically
-recognized as options), and is the only way to alter rendering order
-without calling compile again. Note however that rendering state is
-still shared amongst multiple $walker objects, so they must still be
-used in a coordinated manner.
-
-=head2 B::Concise::reset_sequence()
-
-This function (not exported) lets you reset the sequence numbers (note
-that they're numbered arbitrarily, their goal being to be human
-readable). Its purpose is mostly to support testing, i.e. to compare
-the concise output from two identical anonymous subroutines (but
-different instances). Without the reset, B::Concise, seeing that
-they're separate optrees, generates different sequence numbers in
-the output.
-
-=head2 Errors
-
-Errors in rendering (non-existent function-name, non-existent coderef)
-are written to the STDOUT, or wherever you've set it via
-walk_output().
-
-Errors using the various *style* calls, and bad args to walk_output(),
-result in die(). Use an eval if you wish to catch these errors and
-continue processing.
-
-=head1 AUTHOR
-
-Stephen McCamant, E<lt>smcc@CSUA.Berkeley.EDUE<gt>.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/B/Debug.pm b/Master/tlpkg/tlperl/lib/B/Debug.pm
deleted file mode 100644
index cb369682d66..00000000000
--- a/Master/tlpkg/tlperl/lib/B/Debug.pm
+++ /dev/null
@@ -1,305 +0,0 @@
-package B::Debug;
-
-our $VERSION = '1.02_01';
-
-use strict;
-use B qw(peekop class walkoptree walkoptree_exec
- main_start main_root cstring sv_undef);
-use B::Asmdata qw(@specialsv_name);
-
-my %done_gv;
-
-sub B::OP::debug {
- my ($op) = @_;
- printf <<'EOT', class($op), $$op, ${$op->next}, ${$op->sibling}, $op->ppaddr, $op->targ, $op->type;
-%s (0x%lx)
- op_next 0x%x
- op_sibling 0x%x
- op_ppaddr %s
- op_targ %d
- op_type %d
-EOT
- if ($] > 5.009) {
- printf <<'EOT', $op->opt, $op->static;
- op_opt %d
- op_static %d
-EOT
- } else {
- printf <<'EOT', $op->seq;
- op_seq %d
-EOT
- }
- printf <<'EOT', $op->flags, $op->private;
- op_flags %d
- op_private %d
-EOT
-}
-
-sub B::UNOP::debug {
- my ($op) = @_;
- $op->B::OP::debug();
- printf "\top_first\t0x%x\n", ${$op->first};
-}
-
-sub B::BINOP::debug {
- my ($op) = @_;
- $op->B::UNOP::debug();
- printf "\top_last\t\t0x%x\n", ${$op->last};
-}
-
-sub B::LOOP::debug {
- my ($op) = @_;
- $op->B::BINOP::debug();
- printf <<'EOT', ${$op->redoop}, ${$op->nextop}, ${$op->lastop};
- op_redoop 0x%x
- op_nextop 0x%x
- op_lastop 0x%x
-EOT
-}
-
-sub B::LOGOP::debug {
- my ($op) = @_;
- $op->B::UNOP::debug();
- printf "\top_other\t0x%x\n", ${$op->other};
-}
-
-sub B::LISTOP::debug {
- my ($op) = @_;
- $op->B::BINOP::debug();
- printf "\top_children\t%d\n", $op->children;
-}
-
-sub B::PMOP::debug {
- my ($op) = @_;
- $op->B::LISTOP::debug();
- printf "\top_pmreplroot\t0x%x\n", ${$op->pmreplroot};
- printf "\top_pmreplstart\t0x%x\n", ${$op->pmreplstart};
- printf "\top_pmnext\t0x%x\n", ${$op->pmnext};
- printf "\top_pmregexp->precomp\t%s\n", cstring($op->precomp);
- printf "\top_pmflags\t0x%x\n", $op->pmflags;
- $op->pmreplroot->debug;
-}
-
-sub B::COP::debug {
- my ($op) = @_;
- $op->B::OP::debug();
- my $cop_io = class($op->io) eq 'SPECIAL' ? '' : $op->io->as_string;
- printf <<'EOT', $op->label, $op->stashpv, $op->file, $op->cop_seq, $op->arybase, $op->line, ${$op->warnings}, cstring($cop_io);
- cop_label %s
- cop_stashpv %s
- cop_file %s
- cop_seq %d
- cop_arybase %d
- cop_line %d
- cop_warnings 0x%x
- cop_io %s
-EOT
-}
-
-sub B::SVOP::debug {
- my ($op) = @_;
- $op->B::OP::debug();
- printf "\top_sv\t\t0x%x\n", ${$op->sv};
- $op->sv->debug;
-}
-
-sub B::PVOP::debug {
- my ($op) = @_;
- $op->B::OP::debug();
- printf "\top_pv\t\t%s\n", cstring($op->pv);
-}
-
-sub B::PADOP::debug {
- my ($op) = @_;
- $op->B::OP::debug();
- printf "\top_padix\t\t%ld\n", $op->padix;
-}
-
-sub B::NULL::debug {
- my ($sv) = @_;
- if ($$sv == ${sv_undef()}) {
- print "&sv_undef\n";
- } else {
- printf "NULL (0x%x)\n", $$sv;
- }
-}
-
-sub B::SV::debug {
- my ($sv) = @_;
- if (!$$sv) {
- print class($sv), " = NULL\n";
- return;
- }
- printf <<'EOT', class($sv), $$sv, $sv->REFCNT, $sv->FLAGS;
-%s (0x%x)
- REFCNT %d
- FLAGS 0x%x
-EOT
-}
-
-sub B::RV::debug {
- my ($rv) = @_;
- B::SV::debug($rv);
- printf <<'EOT', ${$rv->RV};
- RV 0x%x
-EOT
- $rv->RV->debug;
-}
-
-sub B::PV::debug {
- my ($sv) = @_;
- $sv->B::SV::debug();
- my $pv = $sv->PV();
- printf <<'EOT', cstring($pv), length($pv);
- xpv_pv %s
- xpv_cur %d
-EOT
-}
-
-sub B::IV::debug {
- my ($sv) = @_;
- $sv->B::SV::debug();
- printf "\txiv_iv\t\t%d\n", $sv->IV;
-}
-
-sub B::NV::debug {
- my ($sv) = @_;
- $sv->B::IV::debug();
- printf "\txnv_nv\t\t%s\n", $sv->NV;
-}
-
-sub B::PVIV::debug {
- my ($sv) = @_;
- $sv->B::PV::debug();
- printf "\txiv_iv\t\t%d\n", $sv->IV;
-}
-
-sub B::PVNV::debug {
- my ($sv) = @_;
- $sv->B::PVIV::debug();
- printf "\txnv_nv\t\t%s\n", $sv->NV;
-}
-
-sub B::PVLV::debug {
- my ($sv) = @_;
- $sv->B::PVNV::debug();
- printf "\txlv_targoff\t%d\n", $sv->TARGOFF;
- printf "\txlv_targlen\t%u\n", $sv->TARGLEN;
- printf "\txlv_type\t%s\n", cstring(chr($sv->TYPE));
-}
-
-sub B::BM::debug {
- my ($sv) = @_;
- $sv->B::PVNV::debug();
- printf "\txbm_useful\t%d\n", $sv->USEFUL;
- printf "\txbm_previous\t%u\n", $sv->PREVIOUS;
- printf "\txbm_rare\t%s\n", cstring(chr($sv->RARE));
-}
-
-sub B::CV::debug {
- my ($sv) = @_;
- $sv->B::PVNV::debug();
- my ($stash) = $sv->STASH;
- my ($start) = $sv->START;
- my ($root) = $sv->ROOT;
- my ($padlist) = $sv->PADLIST;
- my ($file) = $sv->FILE;
- my ($gv) = $sv->GV;
- printf <<'EOT', $$stash, $$start, $$root, $$gv, $file, $sv->DEPTH, $padlist, ${$sv->OUTSIDE}, $sv->OUTSIDE_SEQ;
- STASH 0x%x
- START 0x%x
- ROOT 0x%x
- GV 0x%x
- FILE %s
- DEPTH %d
- PADLIST 0x%x
- OUTSIDE 0x%x
- OUTSIDE_SEQ %d
-EOT
- $start->debug if $start;
- $root->debug if $root;
- $gv->debug if $gv;
- $padlist->debug if $padlist;
-}
-
-sub B::AV::debug {
- my ($av) = @_;
- $av->B::SV::debug;
- my(@array) = $av->ARRAY;
- print "\tARRAY\t\t(", join(", ", map("0x" . $$_, @array)), ")\n";
- printf <<'EOT', scalar(@array), $av->MAX, $av->OFF;
- FILL %d
- MAX %d
- OFF %d
-EOT
- printf <<'EOT', $av->AvFLAGS if $] < 5.009;
- AvFLAGS %d
-EOT
-}
-
-sub B::GV::debug {
- my ($gv) = @_;
- if ($done_gv{$$gv}++) {
- printf "GV %s::%s\n", $gv->STASH->NAME, $gv->SAFENAME;
- return;
- }
- my ($sv) = $gv->SV;
- my ($av) = $gv->AV;
- my ($cv) = $gv->CV;
- $gv->B::SV::debug;
- printf <<'EOT', $gv->SAFENAME, $gv->STASH->NAME, $gv->STASH, $$sv, $gv->GvREFCNT, $gv->FORM, $$av, ${$gv->HV}, ${$gv->EGV}, $$cv, $gv->CVGEN, $gv->LINE, $gv->FILE, $gv->GvFLAGS;
- NAME %s
- STASH %s (0x%x)
- SV 0x%x
- GvREFCNT %d
- FORM 0x%x
- AV 0x%x
- HV 0x%x
- EGV 0x%x
- CV 0x%x
- CVGEN %d
- LINE %d
- FILE %s
- GvFLAGS 0x%x
-EOT
- $sv->debug if $sv;
- $av->debug if $av;
- $cv->debug if $cv;
-}
-
-sub B::SPECIAL::debug {
- my $sv = shift;
- print $specialsv_name[$$sv], "\n";
-}
-
-sub compile {
- my $order = shift;
- B::clearsym();
- if ($order && $order eq "exec") {
- return sub { walkoptree_exec(main_start, "debug") }
- } else {
- return sub { walkoptree(main_root, "debug") }
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-B::Debug - Walk Perl syntax tree, printing debug info about ops
-
-=head1 SYNOPSIS
-
- perl -MO=Debug[,OPTIONS] foo.pl
-
-=head1 DESCRIPTION
-
-See F<ext/B/README>.
-
-=head1 AUTHOR
-
-Malcolm Beattie, C<mbeattie@sable.ox.ac.uk>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/B/Deparse.pm b/Master/tlpkg/tlperl/lib/B/Deparse.pm
deleted file mode 100644
index 3db6fbe6e1f..00000000000
--- a/Master/tlpkg/tlperl/lib/B/Deparse.pm
+++ /dev/null
@@ -1,4642 +0,0 @@
-# B::Deparse.pm
-# Copyright (c) 1998-2000, 2002, 2003 Stephen McCamant. All rights reserved.
-# This module is free software; you can redistribute and/or modify
-# it under the same terms as Perl itself.
-
-# This is based on the module of the same name by Malcolm Beattie,
-# but essentially none of his code remains.
-
-package B::Deparse;
-use Carp;
-use B qw(class main_root main_start main_cv svref_2object opnumber perlstring
- OPf_WANT OPf_WANT_VOID OPf_WANT_SCALAR OPf_WANT_LIST
- OPf_KIDS OPf_REF OPf_STACKED OPf_SPECIAL OPf_MOD
- OPpLVAL_INTRO OPpOUR_INTRO OPpENTERSUB_AMPER OPpSLICE OPpCONST_BARE
- OPpTRANS_SQUASH OPpTRANS_DELETE OPpTRANS_COMPLEMENT OPpTARGET_MY
- OPpCONST_ARYBASE OPpEXISTS_SUB OPpSORT_NUMERIC OPpSORT_INTEGER
- OPpSORT_REVERSE OPpSORT_INPLACE OPpSORT_DESCEND OPpITER_REVERSED
- SVf_IOK SVf_NOK SVf_ROK SVf_POK SVpad_OUR SVf_FAKE SVs_RMG SVs_SMG
- CVf_METHOD CVf_LOCKED CVf_LVALUE CVf_ASSERTION
- PMf_KEEP PMf_GLOBAL PMf_CONTINUE PMf_EVAL PMf_ONCE PMf_SKIPWHITE
- PMf_MULTILINE PMf_SINGLELINE PMf_FOLD PMf_EXTENDED);
-$VERSION = 0.71;
-use strict;
-use vars qw/$AUTOLOAD/;
-use warnings ();
-
-# Changes between 0.50 and 0.51:
-# - fixed nulled leave with live enter in sort { }
-# - fixed reference constants (\"str")
-# - handle empty programs gracefully
-# - handle infinte loops (for (;;) {}, while (1) {})
-# - differentiate between `for my $x ...' and `my $x; for $x ...'
-# - various minor cleanups
-# - moved globals into an object
-# - added `-u', like B::C
-# - package declarations using cop_stash
-# - subs, formats and code sorted by cop_seq
-# Changes between 0.51 and 0.52:
-# - added pp_threadsv (special variables under USE_5005THREADS)
-# - added documentation
-# Changes between 0.52 and 0.53:
-# - many changes adding precedence contexts and associativity
-# - added `-p' and `-s' output style options
-# - various other minor fixes
-# Changes between 0.53 and 0.54:
-# - added support for new `for (1..100)' optimization,
-# thanks to Gisle Aas
-# Changes between 0.54 and 0.55:
-# - added support for new qr// construct
-# - added support for new pp_regcreset OP
-# Changes between 0.55 and 0.56:
-# - tested on base/*.t, cmd/*.t, comp/*.t, io/*.t
-# - fixed $# on non-lexicals broken in last big rewrite
-# - added temporary fix for change in opcode of OP_STRINGIFY
-# - fixed problem in 0.54's for() patch in `for (@ary)'
-# - fixed precedence in conditional of ?:
-# - tweaked list paren elimination in `my($x) = @_'
-# - made continue-block detection trickier wrt. null ops
-# - fixed various prototype problems in pp_entersub
-# - added support for sub prototypes that never get GVs
-# - added unquoting for special filehandle first arg in truncate
-# - print doubled rv2gv (a bug) as `*{*GV}' instead of illegal `**GV'
-# - added semicolons at the ends of blocks
-# - added -l `#line' declaration option -- fixes cmd/subval.t 27,28
-# Changes between 0.56 and 0.561:
-# - fixed multiply-declared my var in pp_truncate (thanks to Sarathy)
-# - used new B.pm symbolic constants (done by Nick Ing-Simmons)
-# Changes between 0.561 and 0.57:
-# - stylistic changes to symbolic constant stuff
-# - handled scope in s///e replacement code
-# - added unquote option for expanding "" into concats, etc.
-# - split method and proto parts of pp_entersub into separate functions
-# - various minor cleanups
-# Changes after 0.57:
-# - added parens in \&foo (patch by Albert Dvornik)
-# Changes between 0.57 and 0.58:
-# - fixed `0' statements that weren't being printed
-# - added methods for use from other programs
-# (based on patches from James Duncan and Hugo van der Sanden)
-# - added -si and -sT to control indenting (also based on a patch from Hugo)
-# - added -sv to print something else instead of '???'
-# - preliminary version of utf8 tr/// handling
-# Changes after 0.58:
-# - uses of $op->ppaddr changed to new $op->name (done by Sarathy)
-# - added support for Hugo's new OP_SETSTATE (like nextstate)
-# Changes between 0.58 and 0.59
-# - added support for Chip's OP_METHOD_NAMED
-# - added support for Ilya's OPpTARGET_MY optimization
-# - elided arrows before `()' subscripts when possible
-# Changes between 0.59 and 0.60
-# - support for method attribues was added
-# - some warnings fixed
-# - separate recognition of constant subs
-# - rewrote continue block handling, now recoginizing for loops
-# - added more control of expanding control structures
-# Changes between 0.60 and 0.61 (mostly by Robin Houston)
-# - many bug-fixes
-# - support for pragmas and 'use'
-# - support for the little-used $[ variable
-# - support for __DATA__ sections
-# - UTF8 support
-# - BEGIN, CHECK, INIT and END blocks
-# - scoping of subroutine declarations fixed
-# - compile-time output from the input program can be suppressed, so that the
-# output is just the deparsed code. (a change to O.pm in fact)
-# - our() declarations
-# - *all* the known bugs are now listed in the BUGS section
-# - comprehensive test mechanism (TEST -deparse)
-# Changes between 0.62 and 0.63 (mostly by Rafael Garcia-Suarez)
-# - bug-fixes
-# - new switch -P
-# - support for command-line switches (-l, -0, etc.)
-# Changes between 0.63 and 0.64
-# - support for //, CHECK blocks, and assertions
-# - improved handling of foreach loops and lexicals
-# - option to use Data::Dumper for constants
-# - more bug fixes
-# - discovered lots more bugs not yet fixed
-
-# Todo:
-# (See also BUGS section at the end of this file)
-#
-# - finish tr/// changes
-# - add option for even more parens (generalize \&foo change)
-# - left/right context
-# - copy comments (look at real text with $^P?)
-# - avoid semis in one-statement blocks
-# - associativity of &&=, ||=, ?:
-# - ',' => '=>' (auto-unquote?)
-# - break long lines ("\r" as discretionary break?)
-# - configurable syntax highlighting: ANSI color, HTML, TeX, etc.
-# - more style options: brace style, hex vs. octal, quotes, ...
-# - print big ints as hex/octal instead of decimal (heuristic?)
-# - handle `my $x if 0'?
-# - version using op_next instead of op_first/sibling?
-# - avoid string copies (pass arrays, one big join?)
-# - here-docs?
-
-# Current test.deparse failures
-# comp/assertions 38 - disabled assertions should be like "my($x) if 0"
-# 'sub f : assertion {}; no assertions; my $x=1; {f(my $x=2); print "$x\n"}'
-# comp/hints 6 - location of BEGIN blocks wrt. block openings
-# run/switchI 1 - missing -I switches entirely
-# perl -Ifoo -e 'print @INC'
-# op/caller 2 - warning mask propagates backwards before warnings::register
-# 'use warnings; BEGIN {${^WARNING_BITS} eq "U"x12;} use warnings::register'
-# op/getpid 2 - can't assign to shared my() declaration (threads only)
-# 'my $x : shared = 5'
-# op/override 7 - parens on overriden require change v-string interpretation
-# 'BEGIN{*CORE::GLOBAL::require=sub {}} require v5.6'
-# c.f. 'BEGIN { *f = sub {0} }; f 2'
-# op/pat 774 - losing Unicode-ness of Latin1-only strings
-# 'use charnames ":short"; $x="\N{latin:a with acute}"'
-# op/recurse 12 - missing parens on recursive call makes it look like method
-# 'sub f { f($x) }'
-# op/subst 90 - inconsistent handling of utf8 under "use utf8"
-# op/taint 29 - "use re 'taint'" deparsed in the wrong place wrt. block open
-# op/tiehandle compile - "use strict" deparsed in the wrong place
-# uni/tr_ several
-# ext/B/t/xref 11 - line numbers when we add newlines to one-line subs
-# ext/Data/Dumper/t/dumper compile
-# ext/DB_file/several
-# ext/Encode/several
-# ext/Ernno/Errno warnings
-# ext/IO/lib/IO/t/io_sel 23
-# ext/PerlIO/t/encoding compile
-# ext/POSIX/t/posix 6
-# ext/Socket/Socket 8
-# ext/Storable/t/croak compile
-# lib/Attribute/Handlers/t/multi compile
-# lib/bignum/ several
-# lib/charnames 35
-# lib/constant 32
-# lib/English 40
-# lib/ExtUtils/t/bytes 4
-# lib/File/DosGlob compile
-# lib/Filter/Simple/t/data 1
-# lib/Math/BigInt/t/constant 1
-# lib/Net/t/config Deparse-warning
-# lib/overload compile
-# lib/Switch/ several
-# lib/Symbol 4
-# lib/Test/Simple several
-# lib/Term/Complete
-# lib/Tie/File/t/29_downcopy 5
-# lib/vars 22
-
-# Object fields (were globals):
-#
-# avoid_local:
-# (local($a), local($b)) and local($a, $b) have the same internal
-# representation but the short form looks better. We notice we can
-# use a large-scale local when checking the list, but need to prevent
-# individual locals too. This hash holds the addresses of OPs that
-# have already had their local-ness accounted for. The same thing
-# is done with my().
-#
-# curcv:
-# CV for current sub (or main program) being deparsed
-#
-# curcvlex:
-# Cached hash of lexical variables for curcv: keys are names,
-# each value is an array of pairs, indicating the cop_seq of scopes
-# in which a var of that name is valid.
-#
-# curcop:
-# COP for statement being deparsed
-#
-# curstash:
-# name of the current package for deparsed code
-#
-# subs_todo:
-# array of [cop_seq, CV, is_format?] for subs and formats we still
-# want to deparse
-#
-# protos_todo:
-# as above, but [name, prototype] for subs that never got a GV
-#
-# subs_done, forms_done:
-# keys are addresses of GVs for subs and formats we've already
-# deparsed (or at least put into subs_todo)
-#
-# subs_declared
-# keys are names of subs for which we've printed declarations.
-# That means we can omit parentheses from the arguments.
-#
-# subs_deparsed
-# Keeps track of fully qualified names of all deparsed subs.
-#
-# parens: -p
-# linenums: -l
-# unquote: -q
-# cuddle: ` ' or `\n', depending on -sC
-# indent_size: -si
-# use_tabs: -sT
-# ex_const: -sv
-
-# A little explanation of how precedence contexts and associativity
-# work:
-#
-# deparse() calls each per-op subroutine with an argument $cx (short
-# for context, but not the same as the cx* in the perl core), which is
-# a number describing the op's parents in terms of precedence, whether
-# they're inside an expression or at statement level, etc. (see
-# chart below). When ops with children call deparse on them, they pass
-# along their precedence. Fractional values are used to implement
-# associativity (`($x + $y) + $z' => `$x + $y + $y') and related
-# parentheses hacks. The major disadvantage of this scheme is that
-# it doesn't know about right sides and left sides, so say if you
-# assign a listop to a variable, it can't tell it's allowed to leave
-# the parens off the listop.
-
-# Precedences:
-# 26 [TODO] inside interpolation context ("")
-# 25 left terms and list operators (leftward)
-# 24 left ->
-# 23 nonassoc ++ --
-# 22 right **
-# 21 right ! ~ \ and unary + and -
-# 20 left =~ !~
-# 19 left * / % x
-# 18 left + - .
-# 17 left << >>
-# 16 nonassoc named unary operators
-# 15 nonassoc < > <= >= lt gt le ge
-# 14 nonassoc == != <=> eq ne cmp
-# 13 left &
-# 12 left | ^
-# 11 left &&
-# 10 left ||
-# 9 nonassoc .. ...
-# 8 right ?:
-# 7 right = += -= *= etc.
-# 6 left , =>
-# 5 nonassoc list operators (rightward)
-# 4 right not
-# 3 left and
-# 2 left or xor
-# 1 statement modifiers
-# 0.5 statements, but still print scopes as do { ... }
-# 0 statement level
-
-# Nonprinting characters with special meaning:
-# \cS - steal parens (see maybe_parens_unop)
-# \n - newline and indent
-# \t - increase indent
-# \b - decrease indent (`outdent')
-# \f - flush left (no indent)
-# \cK - kill following semicolon, if any
-
-sub null {
- my $op = shift;
- return class($op) eq "NULL";
-}
-
-sub todo {
- my $self = shift;
- my($cv, $is_form) = @_;
- return unless ($cv->FILE eq $0 || exists $self->{files}{$cv->FILE});
- my $seq;
- if ($cv->OUTSIDE_SEQ) {
- $seq = $cv->OUTSIDE_SEQ;
- } elsif (!null($cv->START) and is_state($cv->START)) {
- $seq = $cv->START->cop_seq;
- } else {
- $seq = 0;
- }
- push @{$self->{'subs_todo'}}, [$seq, $cv, $is_form];
- unless ($is_form || class($cv->STASH) eq 'SPECIAL') {
- $self->{'subs_deparsed'}{$cv->STASH->NAME."::".$cv->GV->NAME} = 1;
- }
-}
-
-sub next_todo {
- my $self = shift;
- my $ent = shift @{$self->{'subs_todo'}};
- my $cv = $ent->[1];
- my $gv = $cv->GV;
- my $name = $self->gv_name($gv);
- if ($ent->[2]) {
- return "format $name =\n"
- . $self->deparse_format($ent->[1]). "\n";
- } else {
- $self->{'subs_declared'}{$name} = 1;
- if ($name eq "BEGIN") {
- my $use_dec = $self->begin_is_use($cv);
- if (defined ($use_dec) and $self->{'expand'} < 5) {
- return () if 0 == length($use_dec);
- return $use_dec;
- }
- }
- my $l = '';
- if ($self->{'linenums'}) {
- my $line = $gv->LINE;
- my $file = $gv->FILE;
- $l = "\n\f#line $line \"$file\"\n";
- }
- my $p = '';
- if (class($cv->STASH) ne "SPECIAL") {
- my $stash = $cv->STASH->NAME;
- if ($stash ne $self->{'curstash'}) {
- $p = "package $stash;\n";
- $name = "$self->{'curstash'}::$name" unless $name =~ /::/;
- $self->{'curstash'} = $stash;
- }
- $name =~ s/^\Q$stash\E:://;
- }
- return "${p}${l}sub $name " . $self->deparse_sub($cv);
- }
-}
-
-# Return a "use" declaration for this BEGIN block, if appropriate
-sub begin_is_use {
- my ($self, $cv) = @_;
- my $root = $cv->ROOT;
- local @$self{qw'curcv curcvlex'} = ($cv);
-#require B::Debug;
-#B::walkoptree($cv->ROOT, "debug");
- my $lineseq = $root->first;
- return if $lineseq->name ne "lineseq";
-
- my $req_op = $lineseq->first->sibling;
- return if $req_op->name ne "require";
-
- my $module;
- if ($req_op->first->private & OPpCONST_BARE) {
- # Actually it should always be a bareword
- $module = $self->const_sv($req_op->first)->PV;
- $module =~ s[/][::]g;
- $module =~ s/.pm$//;
- }
- else {
- $module = $self->const($self->const_sv($req_op->first), 6);
- }
-
- my $version;
- my $version_op = $req_op->sibling;
- return if class($version_op) eq "NULL";
- if ($version_op->name eq "lineseq") {
- # We have a version parameter; skip nextstate & pushmark
- my $constop = $version_op->first->next->next;
-
- return unless $self->const_sv($constop)->PV eq $module;
- $constop = $constop->sibling;
- $version = $self->const_sv($constop);
- if (class($version) eq "IV") {
- $version = $version->int_value;
- } elsif (class($version) eq "NV") {
- $version = $version->NV;
- } elsif (class($version) ne "PVMG") {
- # Includes PVIV and PVNV
- $version = $version->PV;
- } else {
- # version specified as a v-string
- $version = 'v'.join '.', map ord, split //, $version->PV;
- }
- $constop = $constop->sibling;
- return if $constop->name ne "method_named";
- return if $self->const_sv($constop)->PV ne "VERSION";
- }
-
- $lineseq = $version_op->sibling;
- return if $lineseq->name ne "lineseq";
- my $entersub = $lineseq->first->sibling;
- if ($entersub->name eq "stub") {
- return "use $module $version ();\n" if defined $version;
- return "use $module ();\n";
- }
- return if $entersub->name ne "entersub";
-
- # See if there are import arguments
- my $args = '';
-
- my $svop = $entersub->first->sibling; # Skip over pushmark
- return unless $self->const_sv($svop)->PV eq $module;
-
- # Pull out the arguments
- for ($svop=$svop->sibling; $svop->name ne "method_named";
- $svop = $svop->sibling) {
- $args .= ", " if length($args);
- $args .= $self->deparse($svop, 6);
- }
-
- my $use = 'use';
- my $method_named = $svop;
- return if $method_named->name ne "method_named";
- my $method_name = $self->const_sv($method_named)->PV;
-
- if ($method_name eq "unimport") {
- $use = 'no';
- }
-
- # Certain pragmas are dealt with using hint bits,
- # so we ignore them here
- if ($module eq 'strict' || $module eq 'integer'
- || $module eq 'bytes' || $module eq 'warnings') {
- return "";
- }
-
- if (defined $version && length $args) {
- return "$use $module $version ($args);\n";
- } elsif (defined $version) {
- return "$use $module $version;\n";
- } elsif (length $args) {
- return "$use $module ($args);\n";
- } else {
- return "$use $module;\n";
- }
-}
-
-sub stash_subs {
- my ($self, $pack) = @_;
- my (@ret, $stash);
- if (!defined $pack) {
- $pack = '';
- $stash = \%::;
- }
- else {
- $pack =~ s/(::)?$/::/;
- no strict 'refs';
- $stash = \%$pack;
- }
- my %stash = svref_2object($stash)->ARRAY;
- while (my ($key, $val) = each %stash) {
- next if $key eq 'main::'; # avoid infinite recursion
- my $class = class($val);
- if ($class eq "PV") {
- # Just a prototype. As an ugly but fairly effective way
- # to find out if it belongs here is to see if the AUTOLOAD
- # (if any) for the stash was defined in one of our files.
- my $A = $stash{"AUTOLOAD"};
- if (defined ($A) && class($A) eq "GV" && defined($A->CV)
- && class($A->CV) eq "CV") {
- my $AF = $A->FILE;
- next unless $AF eq $0 || exists $self->{'files'}{$AF};
- }
- push @{$self->{'protos_todo'}}, [$pack . $key, $val->PV];
- } elsif ($class eq "IV") {
- # Just a name. As above.
- my $A = $stash{"AUTOLOAD"};
- if (defined ($A) && class($A) eq "GV" && defined($A->CV)
- && class($A->CV) eq "CV") {
- my $AF = $A->FILE;
- next unless $AF eq $0 || exists $self->{'files'}{$AF};
- }
- push @{$self->{'protos_todo'}}, [$pack . $key, undef];
- } elsif ($class eq "GV") {
- if (class(my $cv = $val->CV) ne "SPECIAL") {
- next if $self->{'subs_done'}{$$val}++;
- next if $$val != ${$cv->GV}; # Ignore imposters
- $self->todo($cv, 0);
- }
- if (class(my $cv = $val->FORM) ne "SPECIAL") {
- next if $self->{'forms_done'}{$$val}++;
- next if $$val != ${$cv->GV}; # Ignore imposters
- $self->todo($cv, 1);
- }
- if (class($val->HV) ne "SPECIAL" && $key =~ /::$/) {
- $self->stash_subs($pack . $key);
- }
- }
- }
-}
-
-sub print_protos {
- my $self = shift;
- my $ar;
- my @ret;
- foreach $ar (@{$self->{'protos_todo'}}) {
- my $proto = (defined $ar->[1] ? " (". $ar->[1] . ")" : "");
- push @ret, "sub " . $ar->[0] . "$proto;\n";
- }
- delete $self->{'protos_todo'};
- return @ret;
-}
-
-sub style_opts {
- my $self = shift;
- my $opts = shift;
- my $opt;
- while (length($opt = substr($opts, 0, 1))) {
- if ($opt eq "C") {
- $self->{'cuddle'} = " ";
- $opts = substr($opts, 1);
- } elsif ($opt eq "i") {
- $opts =~ s/^i(\d+)//;
- $self->{'indent_size'} = $1;
- } elsif ($opt eq "T") {
- $self->{'use_tabs'} = 1;
- $opts = substr($opts, 1);
- } elsif ($opt eq "v") {
- $opts =~ s/^v([^.]*)(.|$)//;
- $self->{'ex_const'} = $1;
- }
- }
-}
-
-sub new {
- my $class = shift;
- my $self = bless {}, $class;
- $self->{'cuddle'} = "\n";
- $self->{'curcop'} = undef;
- $self->{'curstash'} = "main";
- $self->{'ex_const'} = "'???'";
- $self->{'expand'} = 0;
- $self->{'files'} = {};
- $self->{'indent_size'} = 4;
- $self->{'linenums'} = 0;
- $self->{'parens'} = 0;
- $self->{'subs_todo'} = [];
- $self->{'unquote'} = 0;
- $self->{'use_dumper'} = 0;
- $self->{'use_tabs'} = 0;
-
- $self->{'ambient_arybase'} = 0;
- $self->{'ambient_warnings'} = undef; # Assume no lexical warnings
- $self->{'ambient_hints'} = 0;
- $self->init();
-
- while (my $arg = shift @_) {
- if ($arg eq "-d") {
- $self->{'use_dumper'} = 1;
- require Data::Dumper;
- } elsif ($arg =~ /^-f(.*)/) {
- $self->{'files'}{$1} = 1;
- } elsif ($arg eq "-l") {
- $self->{'linenums'} = 1;
- } elsif ($arg eq "-p") {
- $self->{'parens'} = 1;
- } elsif ($arg eq "-P") {
- $self->{'noproto'} = 1;
- } elsif ($arg eq "-q") {
- $self->{'unquote'} = 1;
- } elsif (substr($arg, 0, 2) eq "-s") {
- $self->style_opts(substr $arg, 2);
- } elsif ($arg =~ /^-x(\d)$/) {
- $self->{'expand'} = $1;
- }
- }
- return $self;
-}
-
-{
- # Mask out the bits that L<warnings::register> uses
- my $WARN_MASK;
- BEGIN {
- $WARN_MASK = $warnings::Bits{all} | $warnings::DeadBits{all};
- }
- sub WARN_MASK () {
- return $WARN_MASK;
- }
-}
-
-# Initialise the contextual information, either from
-# defaults provided with the ambient_pragmas method,
-# or from perl's own defaults otherwise.
-sub init {
- my $self = shift;
-
- $self->{'arybase'} = $self->{'ambient_arybase'};
- $self->{'warnings'} = defined ($self->{'ambient_warnings'})
- ? $self->{'ambient_warnings'} & WARN_MASK
- : undef;
- $self->{'hints'} = $self->{'ambient_hints'} & 0xFF;
-
- # also a convenient place to clear out subs_declared
- delete $self->{'subs_declared'};
-}
-
-sub compile {
- my(@args) = @_;
- return sub {
- my $self = B::Deparse->new(@args);
- # First deparse command-line args
- if (defined $^I) { # deparse -i
- print q(BEGIN { $^I = ).perlstring($^I).qq(; }\n);
- }
- if ($^W) { # deparse -w
- print qq(BEGIN { \$^W = $^W; }\n);
- }
- if ($/ ne "\n" or defined $O::savebackslash) { # deparse -l and -0
- my $fs = perlstring($/) || 'undef';
- my $bs = perlstring($O::savebackslash) || 'undef';
- print qq(BEGIN { \$/ = $fs; \$\\ = $bs; }\n);
- }
- my @BEGINs = B::begin_av->isa("B::AV") ? B::begin_av->ARRAY : ();
- my @CHECKs = B::check_av->isa("B::AV") ? B::check_av->ARRAY : ();
- my @INITs = B::init_av->isa("B::AV") ? B::init_av->ARRAY : ();
- my @ENDs = B::end_av->isa("B::AV") ? B::end_av->ARRAY : ();
- for my $block (@BEGINs, @CHECKs, @INITs, @ENDs) {
- $self->todo($block, 0);
- }
- $self->stash_subs();
- local($SIG{"__DIE__"}) =
- sub {
- if ($self->{'curcop'}) {
- my $cop = $self->{'curcop'};
- my($line, $file) = ($cop->line, $cop->file);
- print STDERR "While deparsing $file near line $line,\n";
- }
- };
- $self->{'curcv'} = main_cv;
- $self->{'curcvlex'} = undef;
- print $self->print_protos;
- @{$self->{'subs_todo'}} =
- sort {$a->[0] <=> $b->[0]} @{$self->{'subs_todo'}};
- print $self->indent($self->deparse_root(main_root)), "\n"
- unless null main_root;
- my @text;
- while (scalar(@{$self->{'subs_todo'}})) {
- push @text, $self->next_todo;
- }
- print $self->indent(join("", @text)), "\n" if @text;
-
- # Print __DATA__ section, if necessary
- no strict 'refs';
- my $laststash = defined $self->{'curcop'}
- ? $self->{'curcop'}->stash->NAME : $self->{'curstash'};
- if (defined *{$laststash."::DATA"}{IO}) {
- print "package $laststash;\n"
- unless $laststash eq $self->{'curstash'};
- print "__DATA__\n";
- print readline(*{$laststash."::DATA"});
- }
- }
-}
-
-sub coderef2text {
- my $self = shift;
- my $sub = shift;
- croak "Usage: ->coderef2text(CODEREF)" unless UNIVERSAL::isa($sub, "CODE");
-
- $self->init();
- return $self->indent($self->deparse_sub(svref_2object($sub)));
-}
-
-sub ambient_pragmas {
- my $self = shift;
- my ($arybase, $hint_bits, $warning_bits) = (0, 0);
-
- while (@_ > 1) {
- my $name = shift();
- my $val = shift();
-
- if ($name eq 'strict') {
- require strict;
-
- if ($val eq 'none') {
- $hint_bits &= ~strict::bits(qw/refs subs vars/);
- next();
- }
-
- my @names;
- if ($val eq "all") {
- @names = qw/refs subs vars/;
- }
- elsif (ref $val) {
- @names = @$val;
- }
- else {
- @names = split' ', $val;
- }
- $hint_bits |= strict::bits(@names);
- }
-
- elsif ($name eq '$[') {
- $arybase = $val;
- }
-
- elsif ($name eq 'integer'
- || $name eq 'bytes'
- || $name eq 'utf8') {
- require "$name.pm";
- if ($val) {
- $hint_bits |= ${$::{"${name}::"}{"hint_bits"}};
- }
- else {
- $hint_bits &= ~${$::{"${name}::"}{"hint_bits"}};
- }
- }
-
- elsif ($name eq 're') {
- require re;
- if ($val eq 'none') {
- $hint_bits &= ~re::bits(qw/taint eval/);
- next();
- }
-
- my @names;
- if ($val eq 'all') {
- @names = qw/taint eval/;
- }
- elsif (ref $val) {
- @names = @$val;
- }
- else {
- @names = split' ',$val;
- }
- $hint_bits |= re::bits(@names);
- }
-
- elsif ($name eq 'warnings') {
- if ($val eq 'none') {
- $warning_bits = $warnings::NONE;
- next();
- }
-
- my @names;
- if (ref $val) {
- @names = @$val;
- }
- else {
- @names = split/\s+/, $val;
- }
-
- $warning_bits = $warnings::NONE if !defined ($warning_bits);
- $warning_bits |= warnings::bits(@names);
- }
-
- elsif ($name eq 'warning_bits') {
- $warning_bits = $val;
- }
-
- elsif ($name eq 'hint_bits') {
- $hint_bits = $val;
- }
-
- else {
- croak "Unknown pragma type: $name";
- }
- }
- if (@_) {
- croak "The ambient_pragmas method expects an even number of args";
- }
-
- $self->{'ambient_arybase'} = $arybase;
- $self->{'ambient_warnings'} = $warning_bits;
- $self->{'ambient_hints'} = $hint_bits;
-}
-
-# This method is the inner loop, so try to keep it simple
-sub deparse {
- my $self = shift;
- my($op, $cx) = @_;
-
- Carp::confess("Null op in deparse") if !defined($op)
- || class($op) eq "NULL";
- my $meth = "pp_" . $op->name;
- return $self->$meth($op, $cx);
-}
-
-sub indent {
- my $self = shift;
- my $txt = shift;
- my @lines = split(/\n/, $txt);
- my $leader = "";
- my $level = 0;
- my $line;
- for $line (@lines) {
- my $cmd = substr($line, 0, 1);
- if ($cmd eq "\t" or $cmd eq "\b") {
- $level += ($cmd eq "\t" ? 1 : -1) * $self->{'indent_size'};
- if ($self->{'use_tabs'}) {
- $leader = "\t" x ($level / 8) . " " x ($level % 8);
- } else {
- $leader = " " x $level;
- }
- $line = substr($line, 1);
- }
- if (substr($line, 0, 1) eq "\f") {
- $line = substr($line, 1); # no indent
- } else {
- $line = $leader . $line;
- }
- $line =~ s/\cK;?//g;
- }
- return join("\n", @lines);
-}
-
-sub deparse_sub {
- my $self = shift;
- my $cv = shift;
- my $proto = "";
-Carp::confess("NULL in deparse_sub") if !defined($cv) || $cv->isa("B::NULL");
-Carp::confess("SPECIAL in deparse_sub") if $cv->isa("B::SPECIAL");
- local $self->{'curcop'} = $self->{'curcop'};
- if ($cv->FLAGS & SVf_POK) {
- $proto = "(". $cv->PV . ") ";
- }
- if ($cv->CvFLAGS & (CVf_METHOD|CVf_LOCKED|CVf_LVALUE|CVf_ASSERTION)) {
- $proto .= ": ";
- $proto .= "lvalue " if $cv->CvFLAGS & CVf_LVALUE;
- $proto .= "locked " if $cv->CvFLAGS & CVf_LOCKED;
- $proto .= "method " if $cv->CvFLAGS & CVf_METHOD;
- $proto .= "assertion " if $cv->CvFLAGS & CVf_ASSERTION;
- }
-
- local($self->{'curcv'}) = $cv;
- local($self->{'curcvlex'});
- local(@$self{qw'curstash warnings hints'})
- = @$self{qw'curstash warnings hints'};
- my $body;
- if (not null $cv->ROOT) {
- my $lineseq = $cv->ROOT->first;
- if ($lineseq->name eq "lineseq") {
- my @ops;
- for(my$o=$lineseq->first; $$o; $o=$o->sibling) {
- push @ops, $o;
- }
- $body = $self->lineseq(undef, @ops).";";
- my $scope_en = $self->find_scope_en($lineseq);
- if (defined $scope_en) {
- my $subs = join"", $self->seq_subs($scope_en);
- $body .= ";\n$subs" if length($subs);
- }
- }
- else {
- $body = $self->deparse($cv->ROOT->first, 0);
- }
- }
- else {
- my $sv = $cv->const_sv;
- if ($$sv) {
- # uh-oh. inlinable sub... format it differently
- return $proto . "{ " . $self->const($sv, 0) . " }\n";
- } else { # XSUB? (or just a declaration)
- return "$proto;\n";
- }
- }
- return $proto ."{\n\t$body\n\b}" ."\n";
-}
-
-sub deparse_format {
- my $self = shift;
- my $form = shift;
- my @text;
- local($self->{'curcv'}) = $form;
- local($self->{'curcvlex'});
- local($self->{'in_format'}) = 1;
- local(@$self{qw'curstash warnings hints'})
- = @$self{qw'curstash warnings hints'};
- my $op = $form->ROOT;
- my $kid;
- return "\f." if $op->first->name eq 'stub'
- || $op->first->name eq 'nextstate';
- $op = $op->first->first; # skip leavewrite, lineseq
- while (not null $op) {
- $op = $op->sibling; # skip nextstate
- my @exprs;
- $kid = $op->first->sibling; # skip pushmark
- push @text, "\f".$self->const_sv($kid)->PV;
- $kid = $kid->sibling;
- for (; not null $kid; $kid = $kid->sibling) {
- push @exprs, $self->deparse($kid, 0);
- }
- push @text, "\f".join(", ", @exprs)."\n" if @exprs;
- $op = $op->sibling;
- }
- return join("", @text) . "\f.";
-}
-
-sub is_scope {
- my $op = shift;
- return $op->name eq "leave" || $op->name eq "scope"
- || $op->name eq "lineseq"
- || ($op->name eq "null" && class($op) eq "UNOP"
- && (is_scope($op->first) || $op->first->name eq "enter"));
-}
-
-sub is_state {
- my $name = $_[0]->name;
- return $name eq "nextstate" || $name eq "dbstate" || $name eq "setstate";
-}
-
-sub is_miniwhile { # check for one-line loop (`foo() while $y--')
- my $op = shift;
- return (!null($op) and null($op->sibling)
- and $op->name eq "null" and class($op) eq "UNOP"
- and (($op->first->name =~ /^(and|or)$/
- and $op->first->first->sibling->name eq "lineseq")
- or ($op->first->name eq "lineseq"
- and not null $op->first->first->sibling
- and $op->first->first->sibling->name eq "unstack")
- ));
-}
-
-# Check if the op and its sibling are the initialization and the rest of a
-# for (..;..;..) { ... } loop
-sub is_for_loop {
- my $op = shift;
- # This OP might be almost anything, though it won't be a
- # nextstate. (It's the initialization, so in the canonical case it
- # will be an sassign.) The sibling is a lineseq whose first child
- # is a nextstate and whose second is a leaveloop.
- my $lseq = $op->sibling;
- if (!is_state $op and !null($lseq) and $lseq->name eq "lineseq") {
- if ($lseq->first && !null($lseq->first) && is_state($lseq->first)
- && (my $sib = $lseq->first->sibling)) {
- return (!null($sib) && $sib->name eq "leaveloop");
- }
- }
- return 0;
-}
-
-sub is_scalar {
- my $op = shift;
- return ($op->name eq "rv2sv" or
- $op->name eq "padsv" or
- $op->name eq "gv" or # only in array/hash constructs
- $op->flags & OPf_KIDS && !null($op->first)
- && $op->first->name eq "gvsv");
-}
-
-sub maybe_parens {
- my $self = shift;
- my($text, $cx, $prec) = @_;
- if ($prec < $cx # unary ops nest just fine
- or $prec == $cx and $cx != 4 and $cx != 16 and $cx != 21
- or $self->{'parens'})
- {
- $text = "($text)";
- # In a unop, let parent reuse our parens; see maybe_parens_unop
- $text = "\cS" . $text if $cx == 16;
- return $text;
- } else {
- return $text;
- }
-}
-
-# same as above, but get around the `if it looks like a function' rule
-sub maybe_parens_unop {
- my $self = shift;
- my($name, $kid, $cx) = @_;
- if ($cx > 16 or $self->{'parens'}) {
- $kid = $self->deparse($kid, 1);
- if ($name eq "umask" && $kid =~ /^\d+$/) {
- $kid = sprintf("%#o", $kid);
- }
- return "$name($kid)";
- } else {
- $kid = $self->deparse($kid, 16);
- if ($name eq "umask" && $kid =~ /^\d+$/) {
- $kid = sprintf("%#o", $kid);
- }
- if (substr($kid, 0, 1) eq "\cS") {
- # use kid's parens
- return $name . substr($kid, 1);
- } elsif (substr($kid, 0, 1) eq "(") {
- # avoid looks-like-a-function trap with extra parens
- # (`+' can lead to ambiguities)
- return "$name(" . $kid . ")";
- } else {
- return "$name $kid";
- }
- }
-}
-
-sub maybe_parens_func {
- my $self = shift;
- my($func, $text, $cx, $prec) = @_;
- if ($prec <= $cx or substr($text, 0, 1) eq "(" or $self->{'parens'}) {
- return "$func($text)";
- } else {
- return "$func $text";
- }
-}
-
-sub maybe_local {
- my $self = shift;
- my($op, $cx, $text) = @_;
- my $our_intro = ($op->name =~ /^(gv|rv2)[ash]v$/) ? OPpOUR_INTRO : 0;
- if ($op->private & (OPpLVAL_INTRO|$our_intro)
- and not $self->{'avoid_local'}{$$op}) {
- my $our_local = ($op->private & OPpLVAL_INTRO) ? "local" : "our";
- if( $our_local eq 'our' ) {
- # XXX This assertion fails code with non-ASCII identifiers,
- # like ./ext/Encode/t/jperl.t
- die "Unexpected our($text)\n" unless $text =~ /^\W(\w+::)*\w+\z/;
- $text =~ s/(\w+::)+//;
- }
- if (want_scalar($op)) {
- return "$our_local $text";
- } else {
- return $self->maybe_parens_func("$our_local", $text, $cx, 16);
- }
- } else {
- return $text;
- }
-}
-
-sub maybe_targmy {
- my $self = shift;
- my($op, $cx, $func, @args) = @_;
- if ($op->private & OPpTARGET_MY) {
- my $var = $self->padname($op->targ);
- my $val = $func->($self, $op, 7, @args);
- return $self->maybe_parens("$var = $val", $cx, 7);
- } else {
- return $func->($self, $op, $cx, @args);
- }
-}
-
-sub padname_sv {
- my $self = shift;
- my $targ = shift;
- return $self->{'curcv'}->PADLIST->ARRAYelt(0)->ARRAYelt($targ);
-}
-
-sub maybe_my {
- my $self = shift;
- my($op, $cx, $text) = @_;
- if ($op->private & OPpLVAL_INTRO and not $self->{'avoid_local'}{$$op}) {
- if (want_scalar($op)) {
- return "my $text";
- } else {
- return $self->maybe_parens_func("my", $text, $cx, 16);
- }
- } else {
- return $text;
- }
-}
-
-# The following OPs don't have functions:
-
-# pp_padany -- does not exist after parsing
-
-sub AUTOLOAD {
- if ($AUTOLOAD =~ s/^.*::pp_//) {
- warn "unexpected OP_".uc $AUTOLOAD;
- return "XXX";
- } else {
- die "Undefined subroutine $AUTOLOAD called";
- }
-}
-
-sub DESTROY {} # Do not AUTOLOAD
-
-# $root should be the op which represents the root of whatever
-# we're sequencing here. If it's undefined, then we don't append
-# any subroutine declarations to the deparsed ops, otherwise we
-# append appropriate declarations.
-sub lineseq {
- my($self, $root, @ops) = @_;
- my($expr, @exprs);
-
- my $out_cop = $self->{'curcop'};
- my $out_seq = defined($out_cop) ? $out_cop->cop_seq : undef;
- my $limit_seq;
- if (defined $root) {
- $limit_seq = $out_seq;
- my $nseq;
- $nseq = $self->find_scope_st($root->sibling) if ${$root->sibling};
- $limit_seq = $nseq if !defined($limit_seq)
- or defined($nseq) && $nseq < $limit_seq;
- }
- $limit_seq = $self->{'limit_seq'}
- if defined($self->{'limit_seq'})
- && (!defined($limit_seq) || $self->{'limit_seq'} < $limit_seq);
- local $self->{'limit_seq'} = $limit_seq;
- for (my $i = 0; $i < @ops; $i++) {
- $expr = "";
- if (is_state $ops[$i]) {
- $expr = $self->deparse($ops[$i], 0);
- $i++;
- if ($i > $#ops) {
- push @exprs, $expr;
- last;
- }
- }
- if (!is_state $ops[$i] and (my $ls = $ops[$i+1]) and
- !null($ops[$i+1]) and $ops[$i+1]->name eq "lineseq")
- {
- if ($ls->first && !null($ls->first) && is_state($ls->first)
- && (my $sib = $ls->first->sibling)) {
- if (!null($sib) && $sib->name eq "leaveloop") {
- push @exprs, $expr . $self->for_loop($ops[$i], 0);
- $i++;
- next;
- }
- }
- }
- $expr .= $self->deparse($ops[$i], (@ops != 1)/2);
- $expr =~ s/;\n?\z//;
- push @exprs, $expr;
- }
- my $body = join(";\n", grep {length} @exprs);
- my $subs = "";
- if (defined $root && defined $limit_seq && !$self->{'in_format'}) {
- $subs = join "\n", $self->seq_subs($limit_seq);
- }
- return join(";\n", grep {length} $body, $subs);
-}
-
-sub scopeop {
- my($real_block, $self, $op, $cx) = @_;
- my $kid;
- my @kids;
-
- local(@$self{qw'curstash warnings hints'})
- = @$self{qw'curstash warnings hints'} if $real_block;
- if ($real_block) {
- $kid = $op->first->sibling; # skip enter
- if (is_miniwhile($kid)) {
- my $top = $kid->first;
- my $name = $top->name;
- if ($name eq "and") {
- $name = "while";
- } elsif ($name eq "or") {
- $name = "until";
- } else { # no conditional -> while 1 or until 0
- return $self->deparse($top->first, 1) . " while 1";
- }
- my $cond = $top->first;
- my $body = $cond->sibling->first; # skip lineseq
- $cond = $self->deparse($cond, 1);
- $body = $self->deparse($body, 1);
- return "$body $name $cond";
- }
- } else {
- $kid = $op->first;
- }
- for (; !null($kid); $kid = $kid->sibling) {
- push @kids, $kid;
- }
- if ($cx > 0) { # inside an expression, (a do {} while for lineseq)
- return "do {\n\t" . $self->lineseq($op, @kids) . "\n\b}";
- } else {
- my $lineseq = $self->lineseq($op, @kids);
- return (length ($lineseq) ? "$lineseq;" : "");
- }
-}
-
-sub pp_scope { scopeop(0, @_); }
-sub pp_lineseq { scopeop(0, @_); }
-sub pp_leave { scopeop(1, @_); }
-
-# This is a special case of scopeop and lineseq, for the case of the
-# main_root. The difference is that we print the output statements as
-# soon as we get them, for the sake of impatient users.
-sub deparse_root {
- my $self = shift;
- my($op) = @_;
- local(@$self{qw'curstash warnings hints'})
- = @$self{qw'curstash warnings hints'};
- my @kids;
- for (my $kid = $op->first->sibling; !null($kid); $kid = $kid->sibling) {
- push @kids, $kid;
- }
- for (my $i = 0; $i < @kids; $i++) {
- my $expr = "";
- if (is_state $kids[$i]) {
- $expr = $self->deparse($kids[$i], 0);
- $i++;
- if ($i > $#kids) {
- print $self->indent($expr);
- last;
- }
- }
- if (is_for_loop($kids[$i])) {
- $expr .= $self->for_loop($kids[$i], 0);
- $expr .= ";\n" unless $i == $#kids;
- print $self->indent($expr);
- $i++;
- next;
- }
- $expr .= $self->deparse($kids[$i], (@kids != 1)/2);
- $expr =~ s/;\n?\z//;
- $expr .= ";";
- print $self->indent($expr);
- print "\n" unless $i == $#kids;
- }
-}
-
-# The BEGIN {} is used here because otherwise this code isn't executed
-# when you run B::Deparse on itself.
-my %globalnames;
-BEGIN { map($globalnames{$_}++, "SIG", "STDIN", "STDOUT", "STDERR", "INC",
- "ENV", "ARGV", "ARGVOUT", "_"); }
-
-sub gv_name {
- my $self = shift;
- my $gv = shift;
-Carp::confess() unless ref($gv) eq "B::GV";
- my $stash = $gv->STASH->NAME;
- my $name = $gv->SAFENAME;
- if (($stash eq 'main' && $globalnames{$name})
- or ($stash eq $self->{'curstash'} && !$globalnames{$name})
- or $name =~ /^[^A-Za-z_:]/)
- {
- $stash = "";
- } else {
- $stash = $stash . "::";
- }
- if ($name =~ /^(\^..|{)/) {
- $name = "{$name}"; # ${^WARNING_BITS}, etc and ${
- }
- return $stash . $name;
-}
-
-# Return the name to use for a stash variable.
-# If a lexical with the same name is in scope, it may need to be
-# fully-qualified.
-sub stash_variable {
- my ($self, $prefix, $name) = @_;
-
- return "$prefix$name" if $name =~ /::/;
-
- unless ($prefix eq '$' || $prefix eq '@' || #'
- $prefix eq '%' || $prefix eq '$#') {
- return "$prefix$name";
- }
-
- my $v = ($prefix eq '$#' ? '@' : $prefix) . $name;
- return $prefix .$self->{'curstash'}.'::'. $name if $self->lex_in_scope($v);
- return "$prefix$name";
-}
-
-sub lex_in_scope {
- my ($self, $name) = @_;
- $self->populate_curcvlex() if !defined $self->{'curcvlex'};
-
- return 0 if !defined($self->{'curcop'});
- my $seq = $self->{'curcop'}->cop_seq;
- return 0 if !exists $self->{'curcvlex'}{$name};
- for my $a (@{$self->{'curcvlex'}{$name}}) {
- my ($st, $en) = @$a;
- return 1 if $seq > $st && $seq <= $en;
- }
- return 0;
-}
-
-sub populate_curcvlex {
- my $self = shift;
- for (my $cv = $self->{'curcv'}; class($cv) eq "CV"; $cv = $cv->OUTSIDE) {
- my $padlist = $cv->PADLIST;
- # an undef CV still in lexical chain
- next if class($padlist) eq "SPECIAL";
- my @padlist = $padlist->ARRAY;
- my @ns = $padlist[0]->ARRAY;
-
- for (my $i=0; $i<@ns; ++$i) {
- next if class($ns[$i]) eq "SPECIAL";
- next if $ns[$i]->FLAGS & SVpad_OUR; # Skip "our" vars
- if (class($ns[$i]) eq "PV") {
- # Probably that pesky lexical @_
- next;
- }
- my $name = $ns[$i]->PVX;
- my ($seq_st, $seq_en) =
- ($ns[$i]->FLAGS & SVf_FAKE)
- ? (0, 999999)
- : ($ns[$i]->NVX, $ns[$i]->IVX);
-
- push @{$self->{'curcvlex'}{$name}}, [$seq_st, $seq_en];
- }
- }
-}
-
-sub find_scope_st { ((find_scope(@_))[0]); }
-sub find_scope_en { ((find_scope(@_))[1]); }
-
-# Recurses down the tree, looking for pad variable introductions and COPs
-sub find_scope {
- my ($self, $op, $scope_st, $scope_en) = @_;
- carp("Undefined op in find_scope") if !defined $op;
- return ($scope_st, $scope_en) unless $op->flags & OPf_KIDS;
-
- for (my $o=$op->first; $$o; $o=$o->sibling) {
- if ($o->name =~ /^pad.v$/ && $o->private & OPpLVAL_INTRO) {
- my $s = int($self->padname_sv($o->targ)->NVX);
- my $e = $self->padname_sv($o->targ)->IVX;
- $scope_st = $s if !defined($scope_st) || $s < $scope_st;
- $scope_en = $e if !defined($scope_en) || $e > $scope_en;
- }
- elsif (is_state($o)) {
- my $c = $o->cop_seq;
- $scope_st = $c if !defined($scope_st) || $c < $scope_st;
- $scope_en = $c if !defined($scope_en) || $c > $scope_en;
- }
- elsif ($o->flags & OPf_KIDS) {
- ($scope_st, $scope_en) =
- $self->find_scope($o, $scope_st, $scope_en)
- }
- }
-
- return ($scope_st, $scope_en);
-}
-
-# Returns a list of subs which should be inserted before the COP
-sub cop_subs {
- my ($self, $op, $out_seq) = @_;
- my $seq = $op->cop_seq;
- # If we have nephews, then our sequence number indicates
- # the cop_seq of the end of some sort of scope.
- if (class($op->sibling) ne "NULL" && $op->sibling->flags & OPf_KIDS
- and my $nseq = $self->find_scope_st($op->sibling) ) {
- $seq = $nseq;
- }
- $seq = $out_seq if defined($out_seq) && $out_seq < $seq;
- return $self->seq_subs($seq);
-}
-
-sub seq_subs {
- my ($self, $seq) = @_;
- my @text;
-#push @text, "# ($seq)\n";
-
- return "" if !defined $seq;
- while (scalar(@{$self->{'subs_todo'}})
- and $seq > $self->{'subs_todo'}[0][0]) {
- push @text, $self->next_todo;
- }
- return @text;
-}
-
-# Notice how subs and formats are inserted between statements here;
-# also $[ assignments and pragmas.
-sub pp_nextstate {
- my $self = shift;
- my($op, $cx) = @_;
- $self->{'curcop'} = $op;
- my @text;
- push @text, $self->cop_subs($op);
- push @text, $op->label . ": " if $op->label;
- my $stash = $op->stashpv;
- if ($stash ne $self->{'curstash'}) {
- push @text, "package $stash;\n";
- $self->{'curstash'} = $stash;
- }
-
- if ($self->{'arybase'} != $op->arybase) {
- push @text, '$[ = '. $op->arybase .";\n";
- $self->{'arybase'} = $op->arybase;
- }
-
- my $warnings = $op->warnings;
- my $warning_bits;
- if ($warnings->isa("B::SPECIAL") && $$warnings == 4) {
- $warning_bits = $warnings::Bits{"all"} & WARN_MASK;
- }
- elsif ($warnings->isa("B::SPECIAL") && $$warnings == 5) {
- $warning_bits = $warnings::NONE;
- }
- elsif ($warnings->isa("B::SPECIAL")) {
- $warning_bits = undef;
- }
- else {
- $warning_bits = $warnings->PV & WARN_MASK;
- }
-
- if (defined ($warning_bits) and
- !defined($self->{warnings}) || $self->{'warnings'} ne $warning_bits) {
- push @text, declare_warnings($self->{'warnings'}, $warning_bits);
- $self->{'warnings'} = $warning_bits;
- }
-
- if ($self->{'hints'} != $op->private) {
- push @text, declare_hints($self->{'hints'}, $op->private);
- $self->{'hints'} = $op->private;
- }
-
- # This should go after of any branches that add statements, to
- # increase the chances that it refers to the same line it did in
- # the original program.
- if ($self->{'linenums'}) {
- push @text, "\f#line " . $op->line .
- ' "' . $op->file, qq'"\n';
- }
-
- return join("", @text);
-}
-
-sub declare_warnings {
- my ($from, $to) = @_;
- if (($to & WARN_MASK) eq (warnings::bits("all") & WARN_MASK)) {
- return "use warnings;\n";
- }
- elsif (($to & WARN_MASK) eq ("\0"x length($to) & WARN_MASK)) {
- return "no warnings;\n";
- }
- return "BEGIN {\${^WARNING_BITS} = ".perlstring($to)."}\n";
-}
-
-sub declare_hints {
- my ($from, $to) = @_;
- my $use = $to & ~$from;
- my $no = $from & ~$to;
- my $decls = "";
- for my $pragma (hint_pragmas($use)) {
- $decls .= "use $pragma;\n";
- }
- for my $pragma (hint_pragmas($no)) {
- $decls .= "no $pragma;\n";
- }
- return $decls;
-}
-
-sub hint_pragmas {
- my ($bits) = @_;
- my @pragmas;
- push @pragmas, "integer" if $bits & 0x1;
- push @pragmas, "strict 'refs'" if $bits & 0x2;
- push @pragmas, "bytes" if $bits & 0x8;
- return @pragmas;
-}
-
-sub pp_dbstate { pp_nextstate(@_) }
-sub pp_setstate { pp_nextstate(@_) }
-
-sub pp_unstack { return "" } # see also leaveloop
-
-sub baseop {
- my $self = shift;
- my($op, $cx, $name) = @_;
- return $name;
-}
-
-sub pp_stub {
- my $self = shift;
- my($op, $cx, $name) = @_;
- if ($cx >= 1) {
- return "()";
- }
- else {
- return "();";
- }
-}
-sub pp_wantarray { baseop(@_, "wantarray") }
-sub pp_fork { baseop(@_, "fork") }
-sub pp_wait { maybe_targmy(@_, \&baseop, "wait") }
-sub pp_getppid { maybe_targmy(@_, \&baseop, "getppid") }
-sub pp_time { maybe_targmy(@_, \&baseop, "time") }
-sub pp_tms { baseop(@_, "times") }
-sub pp_ghostent { baseop(@_, "gethostent") }
-sub pp_gnetent { baseop(@_, "getnetent") }
-sub pp_gprotoent { baseop(@_, "getprotoent") }
-sub pp_gservent { baseop(@_, "getservent") }
-sub pp_ehostent { baseop(@_, "endhostent") }
-sub pp_enetent { baseop(@_, "endnetent") }
-sub pp_eprotoent { baseop(@_, "endprotoent") }
-sub pp_eservent { baseop(@_, "endservent") }
-sub pp_gpwent { baseop(@_, "getpwent") }
-sub pp_spwent { baseop(@_, "setpwent") }
-sub pp_epwent { baseop(@_, "endpwent") }
-sub pp_ggrent { baseop(@_, "getgrent") }
-sub pp_sgrent { baseop(@_, "setgrent") }
-sub pp_egrent { baseop(@_, "endgrent") }
-sub pp_getlogin { baseop(@_, "getlogin") }
-
-sub POSTFIX () { 1 }
-
-# I couldn't think of a good short name, but this is the category of
-# symbolic unary operators with interesting precedence
-
-sub pfixop {
- my $self = shift;
- my($op, $cx, $name, $prec, $flags) = (@_, 0);
- my $kid = $op->first;
- $kid = $self->deparse($kid, $prec);
- return $self->maybe_parens(($flags & POSTFIX) ? "$kid$name" : "$name$kid",
- $cx, $prec);
-}
-
-sub pp_preinc { pfixop(@_, "++", 23) }
-sub pp_predec { pfixop(@_, "--", 23) }
-sub pp_postinc { maybe_targmy(@_, \&pfixop, "++", 23, POSTFIX) }
-sub pp_postdec { maybe_targmy(@_, \&pfixop, "--", 23, POSTFIX) }
-sub pp_i_preinc { pfixop(@_, "++", 23) }
-sub pp_i_predec { pfixop(@_, "--", 23) }
-sub pp_i_postinc { maybe_targmy(@_, \&pfixop, "++", 23, POSTFIX) }
-sub pp_i_postdec { maybe_targmy(@_, \&pfixop, "--", 23, POSTFIX) }
-sub pp_complement { maybe_targmy(@_, \&pfixop, "~", 21) }
-
-sub pp_negate { maybe_targmy(@_, \&real_negate) }
-sub real_negate {
- my $self = shift;
- my($op, $cx) = @_;
- if ($op->first->name =~ /^(i_)?negate$/) {
- # avoid --$x
- $self->pfixop($op, $cx, "-", 21.5);
- } else {
- $self->pfixop($op, $cx, "-", 21);
- }
-}
-sub pp_i_negate { pp_negate(@_) }
-
-sub pp_not {
- my $self = shift;
- my($op, $cx) = @_;
- if ($cx <= 4) {
- $self->pfixop($op, $cx, "not ", 4);
- } else {
- $self->pfixop($op, $cx, "!", 21);
- }
-}
-
-sub unop {
- my $self = shift;
- my($op, $cx, $name) = @_;
- my $kid;
- if ($op->flags & OPf_KIDS) {
- $kid = $op->first;
- if (defined prototype("CORE::$name")
- && prototype("CORE::$name") =~ /^;?\*/
- && $kid->name eq "rv2gv") {
- $kid = $kid->first;
- }
-
- return $self->maybe_parens_unop($name, $kid, $cx);
- } else {
- return $name . ($op->flags & OPf_SPECIAL ? "()" : "");
- }
-}
-
-sub pp_chop { maybe_targmy(@_, \&unop, "chop") }
-sub pp_chomp { maybe_targmy(@_, \&unop, "chomp") }
-sub pp_schop { maybe_targmy(@_, \&unop, "chop") }
-sub pp_schomp { maybe_targmy(@_, \&unop, "chomp") }
-sub pp_defined { unop(@_, "defined") }
-sub pp_undef { unop(@_, "undef") }
-sub pp_study { unop(@_, "study") }
-sub pp_ref { unop(@_, "ref") }
-sub pp_pos { maybe_local(@_, unop(@_, "pos")) }
-
-sub pp_sin { maybe_targmy(@_, \&unop, "sin") }
-sub pp_cos { maybe_targmy(@_, \&unop, "cos") }
-sub pp_rand { maybe_targmy(@_, \&unop, "rand") }
-sub pp_srand { unop(@_, "srand") }
-sub pp_exp { maybe_targmy(@_, \&unop, "exp") }
-sub pp_log { maybe_targmy(@_, \&unop, "log") }
-sub pp_sqrt { maybe_targmy(@_, \&unop, "sqrt") }
-sub pp_int { maybe_targmy(@_, \&unop, "int") }
-sub pp_hex { maybe_targmy(@_, \&unop, "hex") }
-sub pp_oct { maybe_targmy(@_, \&unop, "oct") }
-sub pp_abs { maybe_targmy(@_, \&unop, "abs") }
-
-sub pp_length { maybe_targmy(@_, \&unop, "length") }
-sub pp_ord { maybe_targmy(@_, \&unop, "ord") }
-sub pp_chr { maybe_targmy(@_, \&unop, "chr") }
-
-sub pp_each { unop(@_, "each") }
-sub pp_values { unop(@_, "values") }
-sub pp_keys { unop(@_, "keys") }
-sub pp_pop { unop(@_, "pop") }
-sub pp_shift { unop(@_, "shift") }
-
-sub pp_caller { unop(@_, "caller") }
-sub pp_reset { unop(@_, "reset") }
-sub pp_exit { unop(@_, "exit") }
-sub pp_prototype { unop(@_, "prototype") }
-
-sub pp_close { unop(@_, "close") }
-sub pp_fileno { unop(@_, "fileno") }
-sub pp_umask { unop(@_, "umask") }
-sub pp_untie { unop(@_, "untie") }
-sub pp_tied { unop(@_, "tied") }
-sub pp_dbmclose { unop(@_, "dbmclose") }
-sub pp_getc { unop(@_, "getc") }
-sub pp_eof { unop(@_, "eof") }
-sub pp_tell { unop(@_, "tell") }
-sub pp_getsockname { unop(@_, "getsockname") }
-sub pp_getpeername { unop(@_, "getpeername") }
-
-sub pp_chdir { maybe_targmy(@_, \&unop, "chdir") }
-sub pp_chroot { maybe_targmy(@_, \&unop, "chroot") }
-sub pp_readlink { unop(@_, "readlink") }
-sub pp_rmdir { maybe_targmy(@_, \&unop, "rmdir") }
-sub pp_readdir { unop(@_, "readdir") }
-sub pp_telldir { unop(@_, "telldir") }
-sub pp_rewinddir { unop(@_, "rewinddir") }
-sub pp_closedir { unop(@_, "closedir") }
-sub pp_getpgrp { maybe_targmy(@_, \&unop, "getpgrp") }
-sub pp_localtime { unop(@_, "localtime") }
-sub pp_gmtime { unop(@_, "gmtime") }
-sub pp_alarm { unop(@_, "alarm") }
-sub pp_sleep { maybe_targmy(@_, \&unop, "sleep") }
-
-sub pp_dofile { unop(@_, "do") }
-sub pp_entereval { unop(@_, "eval") }
-
-sub pp_ghbyname { unop(@_, "gethostbyname") }
-sub pp_gnbyname { unop(@_, "getnetbyname") }
-sub pp_gpbyname { unop(@_, "getprotobyname") }
-sub pp_shostent { unop(@_, "sethostent") }
-sub pp_snetent { unop(@_, "setnetent") }
-sub pp_sprotoent { unop(@_, "setprotoent") }
-sub pp_sservent { unop(@_, "setservent") }
-sub pp_gpwnam { unop(@_, "getpwnam") }
-sub pp_gpwuid { unop(@_, "getpwuid") }
-sub pp_ggrnam { unop(@_, "getgrnam") }
-sub pp_ggrgid { unop(@_, "getgrgid") }
-
-sub pp_lock { unop(@_, "lock") }
-
-sub pp_exists {
- my $self = shift;
- my($op, $cx) = @_;
- my $arg;
- if ($op->private & OPpEXISTS_SUB) {
- # Checking for the existence of a subroutine
- return $self->maybe_parens_func("exists",
- $self->pp_rv2cv($op->first, 16), $cx, 16);
- }
- if ($op->flags & OPf_SPECIAL) {
- # Array element, not hash element
- return $self->maybe_parens_func("exists",
- $self->pp_aelem($op->first, 16), $cx, 16);
- }
- return $self->maybe_parens_func("exists", $self->pp_helem($op->first, 16),
- $cx, 16);
-}
-
-sub pp_delete {
- my $self = shift;
- my($op, $cx) = @_;
- my $arg;
- if ($op->private & OPpSLICE) {
- if ($op->flags & OPf_SPECIAL) {
- # Deleting from an array, not a hash
- return $self->maybe_parens_func("delete",
- $self->pp_aslice($op->first, 16),
- $cx, 16);
- }
- return $self->maybe_parens_func("delete",
- $self->pp_hslice($op->first, 16),
- $cx, 16);
- } else {
- if ($op->flags & OPf_SPECIAL) {
- # Deleting from an array, not a hash
- return $self->maybe_parens_func("delete",
- $self->pp_aelem($op->first, 16),
- $cx, 16);
- }
- return $self->maybe_parens_func("delete",
- $self->pp_helem($op->first, 16),
- $cx, 16);
- }
-}
-
-sub pp_require {
- my $self = shift;
- my($op, $cx) = @_;
- my $opname = $op->flags & OPf_SPECIAL ? 'CORE::require' : 'require';
- if (class($op) eq "UNOP" and $op->first->name eq "const"
- and $op->first->private & OPpCONST_BARE)
- {
- my $name = $self->const_sv($op->first)->PV;
- $name =~ s[/][::]g;
- $name =~ s/\.pm//g;
- return "$opname $name";
- } else {
- $self->unop($op, $cx, $opname);
- }
-}
-
-sub pp_scalar {
- my $self = shift;
- my($op, $cv) = @_;
- my $kid = $op->first;
- if (not null $kid->sibling) {
- # XXX Was a here-doc
- return $self->dquote($op);
- }
- $self->unop(@_, "scalar");
-}
-
-
-sub padval {
- my $self = shift;
- my $targ = shift;
- return $self->{'curcv'}->PADLIST->ARRAYelt(1)->ARRAYelt($targ);
-}
-
-sub pp_refgen {
- my $self = shift;
- my($op, $cx) = @_;
- my $kid = $op->first;
- if ($kid->name eq "null") {
- $kid = $kid->first;
- if ($kid->name eq "anonlist" || $kid->name eq "anonhash") {
- my($pre, $post) = @{{"anonlist" => ["[","]"],
- "anonhash" => ["{","}"]}->{$kid->name}};
- my($expr, @exprs);
- $kid = $kid->first->sibling; # skip pushmark
- for (; !null($kid); $kid = $kid->sibling) {
- $expr = $self->deparse($kid, 6);
- push @exprs, $expr;
- }
- return $pre . join(", ", @exprs) . $post;
- } elsif (!null($kid->sibling) and
- $kid->sibling->name eq "anoncode") {
- return "sub " .
- $self->deparse_sub($self->padval($kid->sibling->targ));
- } elsif ($kid->name eq "pushmark") {
- my $sib_name = $kid->sibling->name;
- if ($sib_name =~ /^(pad|rv2)[ah]v$/
- and not $kid->sibling->flags & OPf_REF)
- {
- # The @a in \(@a) isn't in ref context, but only when the
- # parens are there.
- return "\\(" . $self->pp_list($op->first) . ")";
- } elsif ($sib_name eq 'entersub') {
- my $text = $self->deparse($kid->sibling, 1);
- # Always show parens for \(&func()), but only with -p otherwise
- $text = "($text)" if $self->{'parens'}
- or $kid->sibling->private & OPpENTERSUB_AMPER;
- return "\\$text";
- }
- }
- }
- $self->pfixop($op, $cx, "\\", 20);
-}
-
-sub pp_srefgen { pp_refgen(@_) }
-
-sub pp_readline {
- my $self = shift;
- my($op, $cx) = @_;
- my $kid = $op->first;
- $kid = $kid->first if $kid->name eq "rv2gv"; # <$fh>
- return "<" . $self->deparse($kid, 1) . ">" if is_scalar($kid);
- return $self->unop($op, $cx, "readline");
-}
-
-sub pp_rcatline {
- my $self = shift;
- my($op) = @_;
- return "<" . $self->gv_name($self->gv_or_padgv($op)) . ">";
-}
-
-# Unary operators that can occur as pseudo-listops inside double quotes
-sub dq_unop {
- my $self = shift;
- my($op, $cx, $name, $prec, $flags) = (@_, 0, 0);
- my $kid;
- if ($op->flags & OPf_KIDS) {
- $kid = $op->first;
- # If there's more than one kid, the first is an ex-pushmark.
- $kid = $kid->sibling if not null $kid->sibling;
- return $self->maybe_parens_unop($name, $kid, $cx);
- } else {
- return $name . ($op->flags & OPf_SPECIAL ? "()" : "");
- }
-}
-
-sub pp_ucfirst { dq_unop(@_, "ucfirst") }
-sub pp_lcfirst { dq_unop(@_, "lcfirst") }
-sub pp_uc { dq_unop(@_, "uc") }
-sub pp_lc { dq_unop(@_, "lc") }
-sub pp_quotemeta { maybe_targmy(@_, \&dq_unop, "quotemeta") }
-
-sub loopex {
- my $self = shift;
- my ($op, $cx, $name) = @_;
- if (class($op) eq "PVOP") {
- return "$name " . $op->pv;
- } elsif (class($op) eq "OP") {
- return $name;
- } elsif (class($op) eq "UNOP") {
- # Note -- loop exits are actually exempt from the
- # looks-like-a-func rule, but a few extra parens won't hurt
- return $self->maybe_parens_unop($name, $op->first, $cx);
- }
-}
-
-sub pp_last { loopex(@_, "last") }
-sub pp_next { loopex(@_, "next") }
-sub pp_redo { loopex(@_, "redo") }
-sub pp_goto { loopex(@_, "goto") }
-sub pp_dump { loopex(@_, "dump") }
-
-sub ftst {
- my $self = shift;
- my($op, $cx, $name) = @_;
- if (class($op) eq "UNOP") {
- # Genuine `-X' filetests are exempt from the LLAFR, but not
- # l?stat(); for the sake of clarity, give'em all parens
- return $self->maybe_parens_unop($name, $op->first, $cx);
- } elsif (class($op) =~ /^(SV|PAD)OP$/) {
- return $self->maybe_parens_func($name, $self->pp_gv($op, 1), $cx, 16);
- } else { # I don't think baseop filetests ever survive ck_ftst, but...
- return $name;
- }
-}
-
-sub pp_lstat { ftst(@_, "lstat") }
-sub pp_stat { ftst(@_, "stat") }
-sub pp_ftrread { ftst(@_, "-R") }
-sub pp_ftrwrite { ftst(@_, "-W") }
-sub pp_ftrexec { ftst(@_, "-X") }
-sub pp_fteread { ftst(@_, "-r") }
-sub pp_ftewrite { ftst(@_, "-w") }
-sub pp_fteexec { ftst(@_, "-x") }
-sub pp_ftis { ftst(@_, "-e") }
-sub pp_fteowned { ftst(@_, "-O") }
-sub pp_ftrowned { ftst(@_, "-o") }
-sub pp_ftzero { ftst(@_, "-z") }
-sub pp_ftsize { ftst(@_, "-s") }
-sub pp_ftmtime { ftst(@_, "-M") }
-sub pp_ftatime { ftst(@_, "-A") }
-sub pp_ftctime { ftst(@_, "-C") }
-sub pp_ftsock { ftst(@_, "-S") }
-sub pp_ftchr { ftst(@_, "-c") }
-sub pp_ftblk { ftst(@_, "-b") }
-sub pp_ftfile { ftst(@_, "-f") }
-sub pp_ftdir { ftst(@_, "-d") }
-sub pp_ftpipe { ftst(@_, "-p") }
-sub pp_ftlink { ftst(@_, "-l") }
-sub pp_ftsuid { ftst(@_, "-u") }
-sub pp_ftsgid { ftst(@_, "-g") }
-sub pp_ftsvtx { ftst(@_, "-k") }
-sub pp_fttty { ftst(@_, "-t") }
-sub pp_fttext { ftst(@_, "-T") }
-sub pp_ftbinary { ftst(@_, "-B") }
-
-sub SWAP_CHILDREN () { 1 }
-sub ASSIGN () { 2 } # has OP= variant
-sub LIST_CONTEXT () { 4 } # Assignment is in list context
-
-my(%left, %right);
-
-sub assoc_class {
- my $op = shift;
- my $name = $op->name;
- if ($name eq "concat" and $op->first->name eq "concat") {
- # avoid spurious `=' -- see comment in pp_concat
- return "concat";
- }
- if ($name eq "null" and class($op) eq "UNOP"
- and $op->first->name =~ /^(and|x?or)$/
- and null $op->first->sibling)
- {
- # Like all conditional constructs, OP_ANDs and OP_ORs are topped
- # with a null that's used as the common end point of the two
- # flows of control. For precedence purposes, ignore it.
- # (COND_EXPRs have these too, but we don't bother with
- # their associativity).
- return assoc_class($op->first);
- }
- return $name . ($op->flags & OPf_STACKED ? "=" : "");
-}
-
-# Left associative operators, like `+', for which
-# $a + $b + $c is equivalent to ($a + $b) + $c
-
-BEGIN {
- %left = ('multiply' => 19, 'i_multiply' => 19,
- 'divide' => 19, 'i_divide' => 19,
- 'modulo' => 19, 'i_modulo' => 19,
- 'repeat' => 19,
- 'add' => 18, 'i_add' => 18,
- 'subtract' => 18, 'i_subtract' => 18,
- 'concat' => 18,
- 'left_shift' => 17, 'right_shift' => 17,
- 'bit_and' => 13,
- 'bit_or' => 12, 'bit_xor' => 12,
- 'and' => 3,
- 'or' => 2, 'xor' => 2,
- );
-}
-
-sub deparse_binop_left {
- my $self = shift;
- my($op, $left, $prec) = @_;
- if ($left{assoc_class($op)} && $left{assoc_class($left)}
- and $left{assoc_class($op)} == $left{assoc_class($left)})
- {
- return $self->deparse($left, $prec - .00001);
- } else {
- return $self->deparse($left, $prec);
- }
-}
-
-# Right associative operators, like `=', for which
-# $a = $b = $c is equivalent to $a = ($b = $c)
-
-BEGIN {
- %right = ('pow' => 22,
- 'sassign=' => 7, 'aassign=' => 7,
- 'multiply=' => 7, 'i_multiply=' => 7,
- 'divide=' => 7, 'i_divide=' => 7,
- 'modulo=' => 7, 'i_modulo=' => 7,
- 'repeat=' => 7,
- 'add=' => 7, 'i_add=' => 7,
- 'subtract=' => 7, 'i_subtract=' => 7,
- 'concat=' => 7,
- 'left_shift=' => 7, 'right_shift=' => 7,
- 'bit_and=' => 7,
- 'bit_or=' => 7, 'bit_xor=' => 7,
- 'andassign' => 7,
- 'orassign' => 7,
- );
-}
-
-sub deparse_binop_right {
- my $self = shift;
- my($op, $right, $prec) = @_;
- if ($right{assoc_class($op)} && $right{assoc_class($right)}
- and $right{assoc_class($op)} == $right{assoc_class($right)})
- {
- return $self->deparse($right, $prec - .00001);
- } else {
- return $self->deparse($right, $prec);
- }
-}
-
-sub binop {
- my $self = shift;
- my ($op, $cx, $opname, $prec, $flags) = (@_, 0);
- my $left = $op->first;
- my $right = $op->last;
- my $eq = "";
- if ($op->flags & OPf_STACKED && $flags & ASSIGN) {
- $eq = "=";
- $prec = 7;
- }
- if ($flags & SWAP_CHILDREN) {
- ($left, $right) = ($right, $left);
- }
- $left = $self->deparse_binop_left($op, $left, $prec);
- $left = "($left)" if $flags & LIST_CONTEXT
- && $left !~ /^(my|our|local|)[\@\(]/;
- $right = $self->deparse_binop_right($op, $right, $prec);
- return $self->maybe_parens("$left $opname$eq $right", $cx, $prec);
-}
-
-sub pp_add { maybe_targmy(@_, \&binop, "+", 18, ASSIGN) }
-sub pp_multiply { maybe_targmy(@_, \&binop, "*", 19, ASSIGN) }
-sub pp_subtract { maybe_targmy(@_, \&binop, "-",18, ASSIGN) }
-sub pp_divide { maybe_targmy(@_, \&binop, "/", 19, ASSIGN) }
-sub pp_modulo { maybe_targmy(@_, \&binop, "%", 19, ASSIGN) }
-sub pp_i_add { maybe_targmy(@_, \&binop, "+", 18, ASSIGN) }
-sub pp_i_multiply { maybe_targmy(@_, \&binop, "*", 19, ASSIGN) }
-sub pp_i_subtract { maybe_targmy(@_, \&binop, "-", 18, ASSIGN) }
-sub pp_i_divide { maybe_targmy(@_, \&binop, "/", 19, ASSIGN) }
-sub pp_i_modulo { maybe_targmy(@_, \&binop, "%", 19, ASSIGN) }
-sub pp_pow { maybe_targmy(@_, \&binop, "**", 22, ASSIGN) }
-
-sub pp_left_shift { maybe_targmy(@_, \&binop, "<<", 17, ASSIGN) }
-sub pp_right_shift { maybe_targmy(@_, \&binop, ">>", 17, ASSIGN) }
-sub pp_bit_and { maybe_targmy(@_, \&binop, "&", 13, ASSIGN) }
-sub pp_bit_or { maybe_targmy(@_, \&binop, "|", 12, ASSIGN) }
-sub pp_bit_xor { maybe_targmy(@_, \&binop, "^", 12, ASSIGN) }
-
-sub pp_eq { binop(@_, "==", 14) }
-sub pp_ne { binop(@_, "!=", 14) }
-sub pp_lt { binop(@_, "<", 15) }
-sub pp_gt { binop(@_, ">", 15) }
-sub pp_ge { binop(@_, ">=", 15) }
-sub pp_le { binop(@_, "<=", 15) }
-sub pp_ncmp { binop(@_, "<=>", 14) }
-sub pp_i_eq { binop(@_, "==", 14) }
-sub pp_i_ne { binop(@_, "!=", 14) }
-sub pp_i_lt { binop(@_, "<", 15) }
-sub pp_i_gt { binop(@_, ">", 15) }
-sub pp_i_ge { binop(@_, ">=", 15) }
-sub pp_i_le { binop(@_, "<=", 15) }
-sub pp_i_ncmp { binop(@_, "<=>", 14) }
-
-sub pp_seq { binop(@_, "eq", 14) }
-sub pp_sne { binop(@_, "ne", 14) }
-sub pp_slt { binop(@_, "lt", 15) }
-sub pp_sgt { binop(@_, "gt", 15) }
-sub pp_sge { binop(@_, "ge", 15) }
-sub pp_sle { binop(@_, "le", 15) }
-sub pp_scmp { binop(@_, "cmp", 14) }
-
-sub pp_sassign { binop(@_, "=", 7, SWAP_CHILDREN) }
-sub pp_aassign { binop(@_, "=", 7, SWAP_CHILDREN | LIST_CONTEXT) }
-
-# `.' is special because concats-of-concats are optimized to save copying
-# by making all but the first concat stacked. The effect is as if the
-# programmer had written `($a . $b) .= $c', except legal.
-sub pp_concat { maybe_targmy(@_, \&real_concat) }
-sub real_concat {
- my $self = shift;
- my($op, $cx) = @_;
- my $left = $op->first;
- my $right = $op->last;
- my $eq = "";
- my $prec = 18;
- if ($op->flags & OPf_STACKED and $op->first->name ne "concat") {
- $eq = "=";
- $prec = 7;
- }
- $left = $self->deparse_binop_left($op, $left, $prec);
- $right = $self->deparse_binop_right($op, $right, $prec);
- return $self->maybe_parens("$left .$eq $right", $cx, $prec);
-}
-
-# `x' is weird when the left arg is a list
-sub pp_repeat {
- my $self = shift;
- my($op, $cx) = @_;
- my $left = $op->first;
- my $right = $op->last;
- my $eq = "";
- my $prec = 19;
- if ($op->flags & OPf_STACKED) {
- $eq = "=";
- $prec = 7;
- }
- if (null($right)) { # list repeat; count is inside left-side ex-list
- my $kid = $left->first->sibling; # skip pushmark
- my @exprs;
- for (; !null($kid->sibling); $kid = $kid->sibling) {
- push @exprs, $self->deparse($kid, 6);
- }
- $right = $kid;
- $left = "(" . join(", ", @exprs). ")";
- } else {
- $left = $self->deparse_binop_left($op, $left, $prec);
- }
- $right = $self->deparse_binop_right($op, $right, $prec);
- return $self->maybe_parens("$left x$eq $right", $cx, $prec);
-}
-
-sub range {
- my $self = shift;
- my ($op, $cx, $type) = @_;
- my $left = $op->first;
- my $right = $left->sibling;
- $left = $self->deparse($left, 9);
- $right = $self->deparse($right, 9);
- return $self->maybe_parens("$left $type $right", $cx, 9);
-}
-
-sub pp_flop {
- my $self = shift;
- my($op, $cx) = @_;
- my $flip = $op->first;
- my $type = ($flip->flags & OPf_SPECIAL) ? "..." : "..";
- return $self->range($flip->first, $cx, $type);
-}
-
-# one-line while/until is handled in pp_leave
-
-sub logop {
- my $self = shift;
- my ($op, $cx, $lowop, $lowprec, $highop, $highprec, $blockname) = @_;
- my $left = $op->first;
- my $right = $op->first->sibling;
- if ($cx < 1 and is_scope($right) and $blockname
- and $self->{'expand'} < 7)
- { # if ($a) {$b}
- $left = $self->deparse($left, 1);
- $right = $self->deparse($right, 0);
- return "$blockname ($left) {\n\t$right\n\b}\cK";
- } elsif ($cx < 1 and $blockname and not $self->{'parens'}
- and $self->{'expand'} < 7) { # $b if $a
- $right = $self->deparse($right, 1);
- $left = $self->deparse($left, 1);
- return "$right $blockname $left";
- } elsif ($cx > $lowprec and $highop) { # $a && $b
- $left = $self->deparse_binop_left($op, $left, $highprec);
- $right = $self->deparse_binop_right($op, $right, $highprec);
- return $self->maybe_parens("$left $highop $right", $cx, $highprec);
- } else { # $a and $b
- $left = $self->deparse_binop_left($op, $left, $lowprec);
- $right = $self->deparse_binop_right($op, $right, $lowprec);
- return $self->maybe_parens("$left $lowop $right", $cx, $lowprec);
- }
-}
-
-sub pp_and { logop(@_, "and", 3, "&&", 11, "if") }
-sub pp_or { logop(@_, "or", 2, "||", 10, "unless") }
-sub pp_dor { logop(@_, "err", 2, "//", 10, "") }
-
-# xor is syntactically a logop, but it's really a binop (contrary to
-# old versions of opcode.pl). Syntax is what matters here.
-sub pp_xor { logop(@_, "xor", 2, "", 0, "") }
-
-sub logassignop {
- my $self = shift;
- my ($op, $cx, $opname) = @_;
- my $left = $op->first;
- my $right = $op->first->sibling->first; # skip sassign
- $left = $self->deparse($left, 7);
- $right = $self->deparse($right, 7);
- return $self->maybe_parens("$left $opname $right", $cx, 7);
-}
-
-sub pp_andassign { logassignop(@_, "&&=") }
-sub pp_orassign { logassignop(@_, "||=") }
-sub pp_dorassign { logassignop(@_, "//=") }
-
-sub listop {
- my $self = shift;
- my($op, $cx, $name) = @_;
- my(@exprs);
- my $parens = ($cx >= 5) || $self->{'parens'};
- my $kid = $op->first->sibling;
- return $name if null $kid;
- my $first;
- $name = "socketpair" if $name eq "sockpair";
- my $proto = prototype("CORE::$name");
- if (defined $proto
- && $proto =~ /^;?\*/
- && $kid->name eq "rv2gv") {
- $first = $self->deparse($kid->first, 6);
- }
- else {
- $first = $self->deparse($kid, 6);
- }
- if ($name eq "chmod" && $first =~ /^\d+$/) {
- $first = sprintf("%#o", $first);
- }
- $first = "+$first" if not $parens and substr($first, 0, 1) eq "(";
- push @exprs, $first;
- $kid = $kid->sibling;
- if (defined $proto && $proto =~ /^\*\*/ && $kid->name eq "rv2gv") {
- push @exprs, $self->deparse($kid->first, 6);
- $kid = $kid->sibling;
- }
- for (; !null($kid); $kid = $kid->sibling) {
- push @exprs, $self->deparse($kid, 6);
- }
- if ($parens) {
- return "$name(" . join(", ", @exprs) . ")";
- } else {
- return "$name " . join(", ", @exprs);
- }
-}
-
-sub pp_bless { listop(@_, "bless") }
-sub pp_atan2 { maybe_targmy(@_, \&listop, "atan2") }
-sub pp_substr { maybe_local(@_, listop(@_, "substr")) }
-sub pp_vec { maybe_local(@_, listop(@_, "vec")) }
-sub pp_index { maybe_targmy(@_, \&listop, "index") }
-sub pp_rindex { maybe_targmy(@_, \&listop, "rindex") }
-sub pp_sprintf { maybe_targmy(@_, \&listop, "sprintf") }
-sub pp_formline { listop(@_, "formline") } # see also deparse_format
-sub pp_crypt { maybe_targmy(@_, \&listop, "crypt") }
-sub pp_unpack { listop(@_, "unpack") }
-sub pp_pack { listop(@_, "pack") }
-sub pp_join { maybe_targmy(@_, \&listop, "join") }
-sub pp_splice { listop(@_, "splice") }
-sub pp_push { maybe_targmy(@_, \&listop, "push") }
-sub pp_unshift { maybe_targmy(@_, \&listop, "unshift") }
-sub pp_reverse { listop(@_, "reverse") }
-sub pp_warn { listop(@_, "warn") }
-sub pp_die { listop(@_, "die") }
-# Actually, return is exempt from the LLAFR (see examples in this very
-# module!), but for consistency's sake, ignore that fact
-sub pp_return { listop(@_, "return") }
-sub pp_open { listop(@_, "open") }
-sub pp_pipe_op { listop(@_, "pipe") }
-sub pp_tie { listop(@_, "tie") }
-sub pp_binmode { listop(@_, "binmode") }
-sub pp_dbmopen { listop(@_, "dbmopen") }
-sub pp_sselect { listop(@_, "select") }
-sub pp_select { listop(@_, "select") }
-sub pp_read { listop(@_, "read") }
-sub pp_sysopen { listop(@_, "sysopen") }
-sub pp_sysseek { listop(@_, "sysseek") }
-sub pp_sysread { listop(@_, "sysread") }
-sub pp_syswrite { listop(@_, "syswrite") }
-sub pp_send { listop(@_, "send") }
-sub pp_recv { listop(@_, "recv") }
-sub pp_seek { listop(@_, "seek") }
-sub pp_fcntl { listop(@_, "fcntl") }
-sub pp_ioctl { listop(@_, "ioctl") }
-sub pp_flock { maybe_targmy(@_, \&listop, "flock") }
-sub pp_socket { listop(@_, "socket") }
-sub pp_sockpair { listop(@_, "sockpair") }
-sub pp_bind { listop(@_, "bind") }
-sub pp_connect { listop(@_, "connect") }
-sub pp_listen { listop(@_, "listen") }
-sub pp_accept { listop(@_, "accept") }
-sub pp_shutdown { listop(@_, "shutdown") }
-sub pp_gsockopt { listop(@_, "getsockopt") }
-sub pp_ssockopt { listop(@_, "setsockopt") }
-sub pp_chown { maybe_targmy(@_, \&listop, "chown") }
-sub pp_unlink { maybe_targmy(@_, \&listop, "unlink") }
-sub pp_chmod { maybe_targmy(@_, \&listop, "chmod") }
-sub pp_utime { maybe_targmy(@_, \&listop, "utime") }
-sub pp_rename { maybe_targmy(@_, \&listop, "rename") }
-sub pp_link { maybe_targmy(@_, \&listop, "link") }
-sub pp_symlink { maybe_targmy(@_, \&listop, "symlink") }
-sub pp_mkdir { maybe_targmy(@_, \&listop, "mkdir") }
-sub pp_open_dir { listop(@_, "opendir") }
-sub pp_seekdir { listop(@_, "seekdir") }
-sub pp_waitpid { maybe_targmy(@_, \&listop, "waitpid") }
-sub pp_system { maybe_targmy(@_, \&listop, "system") }
-sub pp_exec { maybe_targmy(@_, \&listop, "exec") }
-sub pp_kill { maybe_targmy(@_, \&listop, "kill") }
-sub pp_setpgrp { maybe_targmy(@_, \&listop, "setpgrp") }
-sub pp_getpriority { maybe_targmy(@_, \&listop, "getpriority") }
-sub pp_setpriority { maybe_targmy(@_, \&listop, "setpriority") }
-sub pp_shmget { listop(@_, "shmget") }
-sub pp_shmctl { listop(@_, "shmctl") }
-sub pp_shmread { listop(@_, "shmread") }
-sub pp_shmwrite { listop(@_, "shmwrite") }
-sub pp_msgget { listop(@_, "msgget") }
-sub pp_msgctl { listop(@_, "msgctl") }
-sub pp_msgsnd { listop(@_, "msgsnd") }
-sub pp_msgrcv { listop(@_, "msgrcv") }
-sub pp_semget { listop(@_, "semget") }
-sub pp_semctl { listop(@_, "semctl") }
-sub pp_semop { listop(@_, "semop") }
-sub pp_ghbyaddr { listop(@_, "gethostbyaddr") }
-sub pp_gnbyaddr { listop(@_, "getnetbyaddr") }
-sub pp_gpbynumber { listop(@_, "getprotobynumber") }
-sub pp_gsbyname { listop(@_, "getservbyname") }
-sub pp_gsbyport { listop(@_, "getservbyport") }
-sub pp_syscall { listop(@_, "syscall") }
-
-sub pp_glob {
- my $self = shift;
- my($op, $cx) = @_;
- my $text = $self->dq($op->first->sibling); # skip pushmark
- if ($text =~ /^\$?(\w|::|\`)+$/ # could look like a readline
- or $text =~ /[<>]/) {
- return 'glob(' . single_delim('qq', '"', $text) . ')';
- } else {
- return '<' . $text . '>';
- }
-}
-
-# Truncate is special because OPf_SPECIAL makes a bareword first arg
-# be a filehandle. This could probably be better fixed in the core
-# by moving the GV lookup into ck_truc.
-
-sub pp_truncate {
- my $self = shift;
- my($op, $cx) = @_;
- my(@exprs);
- my $parens = ($cx >= 5) || $self->{'parens'};
- my $kid = $op->first->sibling;
- my $fh;
- if ($op->flags & OPf_SPECIAL) {
- # $kid is an OP_CONST
- $fh = $self->const_sv($kid)->PV;
- } else {
- $fh = $self->deparse($kid, 6);
- $fh = "+$fh" if not $parens and substr($fh, 0, 1) eq "(";
- }
- my $len = $self->deparse($kid->sibling, 6);
- if ($parens) {
- return "truncate($fh, $len)";
- } else {
- return "truncate $fh, $len";
- }
-}
-
-sub indirop {
- my $self = shift;
- my($op, $cx, $name) = @_;
- my($expr, @exprs);
- my $kid = $op->first->sibling;
- my $indir = "";
- if ($op->flags & OPf_STACKED) {
- $indir = $kid;
- $indir = $indir->first; # skip rv2gv
- if (is_scope($indir)) {
- $indir = "{" . $self->deparse($indir, 0) . "}";
- $indir = "{;}" if $indir eq "{}";
- } elsif ($indir->name eq "const" && $indir->private & OPpCONST_BARE) {
- $indir = $self->const_sv($indir)->PV;
- } else {
- $indir = $self->deparse($indir, 24);
- }
- $indir = $indir . " ";
- $kid = $kid->sibling;
- }
- if ($name eq "sort" && $op->private & (OPpSORT_NUMERIC | OPpSORT_INTEGER)) {
- $indir = ($op->private & OPpSORT_DESCEND) ? '{$b <=> $a} '
- : '{$a <=> $b} ';
- }
- elsif ($name eq "sort" && $op->private & OPpSORT_DESCEND) {
- $indir = '{$b cmp $a} ';
- }
- for (; !null($kid); $kid = $kid->sibling) {
- $expr = $self->deparse($kid, 6);
- push @exprs, $expr;
- }
- my $name2 = $name;
- if ($name eq "sort" && $op->private & OPpSORT_REVERSE) {
- $name2 = 'reverse sort';
- }
- if ($name eq "sort" && ($op->private & OPpSORT_INPLACE)) {
- return "$exprs[0] = $name2 $indir $exprs[0]";
- }
-
- my $args = $indir . join(", ", @exprs);
- if ($indir ne "" and $name eq "sort") {
- # We don't want to say "sort(f 1, 2, 3)", since perl -w will
- # give bareword warnings in that case. Therefore if context
- # requires, we'll put parens around the outside "(sort f 1, 2,
- # 3)". Unfortunately, we'll currently think the parens are
- # necessary more often that they really are, because we don't
- # distinguish which side of an assignment we're on.
- if ($cx >= 5) {
- return "($name2 $args)";
- } else {
- return "$name2 $args";
- }
- } else {
- return $self->maybe_parens_func($name2, $args, $cx, 5);
- }
-
-}
-
-sub pp_prtf { indirop(@_, "printf") }
-sub pp_print { indirop(@_, "print") }
-sub pp_sort { indirop(@_, "sort") }
-
-sub mapop {
- my $self = shift;
- my($op, $cx, $name) = @_;
- my($expr, @exprs);
- my $kid = $op->first; # this is the (map|grep)start
- $kid = $kid->first->sibling; # skip a pushmark
- my $code = $kid->first; # skip a null
- if (is_scope $code) {
- $code = "{" . $self->deparse($code, 0) . "} ";
- } else {
- $code = $self->deparse($code, 24) . ", ";
- }
- $kid = $kid->sibling;
- for (; !null($kid); $kid = $kid->sibling) {
- $expr = $self->deparse($kid, 6);
- push @exprs, $expr if defined $expr;
- }
- return $self->maybe_parens_func($name, $code . join(", ", @exprs), $cx, 5);
-}
-
-sub pp_mapwhile { mapop(@_, "map") }
-sub pp_grepwhile { mapop(@_, "grep") }
-sub pp_mapstart { baseop(@_, "map") }
-sub pp_grepstart { baseop(@_, "grep") }
-
-sub pp_list {
- my $self = shift;
- my($op, $cx) = @_;
- my($expr, @exprs);
- my $kid = $op->first->sibling; # skip pushmark
- my $lop;
- my $local = "either"; # could be local(...), my(...) or our(...)
- for ($lop = $kid; !null($lop); $lop = $lop->sibling) {
- # This assumes that no other private flags equal 128, and that
- # OPs that store things other than flags in their op_private,
- # like OP_AELEMFAST, won't be immediate children of a list.
- #
- # OP_ENTERSUB can break this logic, so check for it.
- # I suspect that open and exit can too.
-
- if (!($lop->private & (OPpLVAL_INTRO|OPpOUR_INTRO)
- or $lop->name eq "undef")
- or $lop->name eq "entersub"
- or $lop->name eq "exit"
- or $lop->name eq "open")
- {
- $local = ""; # or not
- last;
- }
- if ($lop->name =~ /^pad[ash]v$/) { # my()
- ($local = "", last) if $local eq "local" || $local eq "our";
- $local = "my";
- } elsif ($lop->name =~ /^(gv|rv2)[ash]v$/
- && $lop->private & OPpOUR_INTRO
- or $lop->name eq "null" && $lop->first->name eq "gvsv"
- && $lop->first->private & OPpOUR_INTRO) { # our()
- ($local = "", last) if $local eq "my" || $local eq "local";
- $local = "our";
- } elsif ($lop->name ne "undef"
- # specifically avoid the "reverse sort" optimisation,
- # where "reverse" is nullified
- && !($lop->name eq 'sort' && ($lop->flags & OPpSORT_REVERSE)))
- {
- # local()
- ($local = "", last) if $local eq "my" || $local eq "our";
- $local = "local";
- }
- }
- $local = "" if $local eq "either"; # no point if it's all undefs
- return $self->deparse($kid, $cx) if null $kid->sibling and not $local;
- for (; !null($kid); $kid = $kid->sibling) {
- if ($local) {
- if (class($kid) eq "UNOP" and $kid->first->name eq "gvsv") {
- $lop = $kid->first;
- } else {
- $lop = $kid;
- }
- $self->{'avoid_local'}{$$lop}++;
- $expr = $self->deparse($kid, 6);
- delete $self->{'avoid_local'}{$$lop};
- } else {
- $expr = $self->deparse($kid, 6);
- }
- push @exprs, $expr;
- }
- if ($local) {
- return "$local(" . join(", ", @exprs) . ")";
- } else {
- return $self->maybe_parens( join(", ", @exprs), $cx, 6);
- }
-}
-
-sub is_ifelse_cont {
- my $op = shift;
- return ($op->name eq "null" and class($op) eq "UNOP"
- and $op->first->name =~ /^(and|cond_expr)$/
- and is_scope($op->first->first->sibling));
-}
-
-sub pp_cond_expr {
- my $self = shift;
- my($op, $cx) = @_;
- my $cond = $op->first;
- my $true = $cond->sibling;
- my $false = $true->sibling;
- my $cuddle = $self->{'cuddle'};
- unless ($cx < 1 and (is_scope($true) and $true->name ne "null") and
- (is_scope($false) || is_ifelse_cont($false))
- and $self->{'expand'} < 7) {
- $cond = $self->deparse($cond, 8);
- $true = $self->deparse($true, 8);
- $false = $self->deparse($false, 8);
- return $self->maybe_parens("$cond ? $true : $false", $cx, 8);
- }
-
- $cond = $self->deparse($cond, 1);
- $true = $self->deparse($true, 0);
- my $head = "if ($cond) {\n\t$true\n\b}";
- my @elsifs;
- while (!null($false) and is_ifelse_cont($false)) {
- my $newop = $false->first;
- my $newcond = $newop->first;
- my $newtrue = $newcond->sibling;
- $false = $newtrue->sibling; # last in chain is OP_AND => no else
- $newcond = $self->deparse($newcond, 1);
- $newtrue = $self->deparse($newtrue, 0);
- push @elsifs, "elsif ($newcond) {\n\t$newtrue\n\b}";
- }
- if (!null($false)) {
- $false = $cuddle . "else {\n\t" .
- $self->deparse($false, 0) . "\n\b}\cK";
- } else {
- $false = "\cK";
- }
- return $head . join($cuddle, "", @elsifs) . $false;
-}
-
-sub loop_common {
- my $self = shift;
- my($op, $cx, $init) = @_;
- my $enter = $op->first;
- my $kid = $enter->sibling;
- local(@$self{qw'curstash warnings hints'})
- = @$self{qw'curstash warnings hints'};
- my $head = "";
- my $bare = 0;
- my $body;
- my $cond = undef;
- if ($kid->name eq "lineseq") { # bare or infinite loop
- if ($kid->last->name eq "unstack") { # infinite
- $head = "while (1) "; # Can't use for(;;) if there's a continue
- $cond = "";
- } else {
- $bare = 1;
- }
- $body = $kid;
- } elsif ($enter->name eq "enteriter") { # foreach
- my $ary = $enter->first->sibling; # first was pushmark
- my $var = $ary->sibling;
- if ($ary->name eq 'null' and $enter->private & OPpITER_REVERSED) {
- # "reverse" was optimised away
- $ary = listop($self, $ary->first->sibling, 1, 'reverse');
- } elsif ($enter->flags & OPf_STACKED
- and not null $ary->first->sibling->sibling)
- {
- $ary = $self->deparse($ary->first->sibling, 9) . " .. " .
- $self->deparse($ary->first->sibling->sibling, 9);
- } else {
- $ary = $self->deparse($ary, 1);
- }
- if (null $var) {
- if ($enter->flags & OPf_SPECIAL) { # thread special var
- $var = $self->pp_threadsv($enter, 1);
- } else { # regular my() variable
- $var = $self->pp_padsv($enter, 1);
- }
- } elsif ($var->name eq "rv2gv") {
- $var = $self->pp_rv2sv($var, 1);
- if ($enter->private & OPpOUR_INTRO) {
- # our declarations don't have package names
- $var =~ s/^(.).*::/$1/;
- $var = "our $var";
- }
- } elsif ($var->name eq "gv") {
- $var = "\$" . $self->deparse($var, 1);
- }
- $body = $kid->first->first->sibling; # skip OP_AND and OP_ITER
- if (!is_state $body->first and $body->first->name ne "stub") {
- confess unless $var eq '$_';
- $body = $body->first;
- return $self->deparse($body, 2) . " foreach ($ary)";
- }
- $head = "foreach $var ($ary) ";
- } elsif ($kid->name eq "null") { # while/until
- $kid = $kid->first;
- my $name = {"and" => "while", "or" => "until"}->{$kid->name};
- $cond = $self->deparse($kid->first, 1);
- $head = "$name ($cond) ";
- $body = $kid->first->sibling;
- } elsif ($kid->name eq "stub") { # bare and empty
- return "{;}"; # {} could be a hashref
- }
- # If there isn't a continue block, then the next pointer for the loop
- # will point to the unstack, which is kid's last child, except
- # in a bare loop, when it will point to the leaveloop. When neither of
- # these conditions hold, then the second-to-last child is the continue
- # block (or the last in a bare loop).
- my $cont_start = $enter->nextop;
- my $cont;
- if ($$cont_start != $$op && ${$cont_start} != ${$body->last}) {
- if ($bare) {
- $cont = $body->last;
- } else {
- $cont = $body->first;
- while (!null($cont->sibling->sibling)) {
- $cont = $cont->sibling;
- }
- }
- my $state = $body->first;
- my $cuddle = $self->{'cuddle'};
- my @states;
- for (; $$state != $$cont; $state = $state->sibling) {
- push @states, $state;
- }
- $body = $self->lineseq(undef, @states);
- if (defined $cond and not is_scope $cont and $self->{'expand'} < 3) {
- $head = "for ($init; $cond; " . $self->deparse($cont, 1) .") ";
- $cont = "\cK";
- } else {
- $cont = $cuddle . "continue {\n\t" .
- $self->deparse($cont, 0) . "\n\b}\cK";
- }
- } else {
- return "" if !defined $body;
- if (length $init) {
- $head = "for ($init; $cond;) ";
- }
- $cont = "\cK";
- $body = $self->deparse($body, 0);
- }
- $body =~ s/;?$/;\n/;
-
- return $head . "{\n\t" . $body . "\b}" . $cont;
-}
-
-sub pp_leaveloop { loop_common(@_, "") }
-
-sub for_loop {
- my $self = shift;
- my($op, $cx) = @_;
- my $init = $self->deparse($op, 1);
- return $self->loop_common($op->sibling->first->sibling, $cx, $init);
-}
-
-sub pp_leavetry {
- my $self = shift;
- return "eval {\n\t" . $self->pp_leave(@_) . "\n\b}";
-}
-
-BEGIN { eval "sub OP_CONST () {" . opnumber("const") . "}" }
-BEGIN { eval "sub OP_STRINGIFY () {" . opnumber("stringify") . "}" }
-BEGIN { eval "sub OP_RV2SV () {" . opnumber("rv2sv") . "}" }
-BEGIN { eval "sub OP_LIST () {" . opnumber("list") . "}" }
-
-sub pp_null {
- my $self = shift;
- my($op, $cx) = @_;
- if (class($op) eq "OP") {
- # old value is lost
- return $self->{'ex_const'} if $op->targ == OP_CONST;
- } elsif ($op->first->name eq "pushmark") {
- return $self->pp_list($op, $cx);
- } elsif ($op->first->name eq "enter") {
- return $self->pp_leave($op, $cx);
- } elsif ($op->targ == OP_STRINGIFY) {
- return $self->dquote($op, $cx);
- } elsif (!null($op->first->sibling) and
- $op->first->sibling->name eq "readline" and
- $op->first->sibling->flags & OPf_STACKED) {
- return $self->maybe_parens($self->deparse($op->first, 7) . " = "
- . $self->deparse($op->first->sibling, 7),
- $cx, 7);
- } elsif (!null($op->first->sibling) and
- $op->first->sibling->name eq "trans" and
- $op->first->sibling->flags & OPf_STACKED) {
- return $self->maybe_parens($self->deparse($op->first, 20) . " =~ "
- . $self->deparse($op->first->sibling, 20),
- $cx, 20);
- } elsif ($op->flags & OPf_SPECIAL && $cx < 1 && !$op->targ) {
- return "do {\n\t". $self->deparse($op->first, $cx) ."\n\b};";
- } elsif (!null($op->first->sibling) and
- $op->first->sibling->name eq "null" and
- class($op->first->sibling) eq "UNOP" and
- $op->first->sibling->first->flags & OPf_STACKED and
- $op->first->sibling->first->name eq "rcatline") {
- return $self->maybe_parens($self->deparse($op->first, 18) . " .= "
- . $self->deparse($op->first->sibling, 18),
- $cx, 18);
- } else {
- return $self->deparse($op->first, $cx);
- }
-}
-
-sub padname {
- my $self = shift;
- my $targ = shift;
- return $self->padname_sv($targ)->PVX;
-}
-
-sub padany {
- my $self = shift;
- my $op = shift;
- return substr($self->padname($op->targ), 1); # skip $/@/%
-}
-
-sub pp_padsv {
- my $self = shift;
- my($op, $cx) = @_;
- return $self->maybe_my($op, $cx, $self->padname($op->targ));
-}
-
-sub pp_padav { pp_padsv(@_) }
-sub pp_padhv { pp_padsv(@_) }
-
-my @threadsv_names;
-
-BEGIN {
- @threadsv_names = ("_", "1", "2", "3", "4", "5", "6", "7", "8", "9",
- "&", "`", "'", "+", "/", ".", ",", "\\", '"', ";",
- "^", "-", "%", "=", "|", "~", ":", "^A", "^E",
- "!", "@");
-}
-
-sub pp_threadsv {
- my $self = shift;
- my($op, $cx) = @_;
- return $self->maybe_local($op, $cx, "\$" . $threadsv_names[$op->targ]);
-}
-
-sub gv_or_padgv {
- my $self = shift;
- my $op = shift;
- if (class($op) eq "PADOP") {
- return $self->padval($op->padix);
- } else { # class($op) eq "SVOP"
- return $op->gv;
- }
-}
-
-sub pp_gvsv {
- my $self = shift;
- my($op, $cx) = @_;
- my $gv = $self->gv_or_padgv($op);
- return $self->maybe_local($op, $cx, $self->stash_variable("\$",
- $self->gv_name($gv)));
-}
-
-sub pp_gv {
- my $self = shift;
- my($op, $cx) = @_;
- my $gv = $self->gv_or_padgv($op);
- return $self->gv_name($gv);
-}
-
-sub pp_aelemfast {
- my $self = shift;
- my($op, $cx) = @_;
- my $name;
- if ($op->flags & OPf_SPECIAL) { # optimised PADAV
- $name = $self->padname($op->targ);
- $name =~ s/^@/\$/;
- }
- else {
- my $gv = $self->gv_or_padgv($op);
- $name = $self->gv_name($gv);
- $name = $self->{'curstash'}."::$name"
- if $name !~ /::/ && $self->lex_in_scope('@'.$name);
- $name = '$' . $name;
- }
-
- return $name . "[" . ($op->private + $self->{'arybase'}) . "]";
-}
-
-sub rv2x {
- my $self = shift;
- my($op, $cx, $type) = @_;
-
- if (class($op) eq 'NULL' || !$op->can("first")) {
- carp("Unexpected op in pp_rv2x");
- return 'XXX';
- }
- my $kid = $op->first;
- if ($kid->name eq "gv") {
- return $self->stash_variable($type, $self->deparse($kid, 0));
- } elsif (is_scalar $kid) {
- my $str = $self->deparse($kid, 0);
- if ($str =~ /^\$([^\w\d])\z/) {
- # "$$+" isn't a legal way to write the scalar dereference
- # of $+, since the lexer can't tell you aren't trying to
- # do something like "$$ + 1" to get one more than your
- # PID. Either "${$+}" or "$${+}" are workable
- # disambiguations, but if the programmer did the former,
- # they'd be in the "else" clause below rather than here.
- # It's not clear if this should somehow be unified with
- # the code in dq and re_dq that also adds lexer
- # disambiguation braces.
- $str = '$' . "{$1}"; #'
- }
- return $type . $str;
- } else {
- return $type . "{" . $self->deparse($kid, 0) . "}";
- }
-}
-
-sub pp_rv2sv { maybe_local(@_, rv2x(@_, "\$")) }
-sub pp_rv2hv { maybe_local(@_, rv2x(@_, "%")) }
-sub pp_rv2gv { maybe_local(@_, rv2x(@_, "*")) }
-
-# skip rv2av
-sub pp_av2arylen {
- my $self = shift;
- my($op, $cx) = @_;
- if ($op->first->name eq "padav") {
- return $self->maybe_local($op, $cx, '$#' . $self->padany($op->first));
- } else {
- return $self->maybe_local($op, $cx,
- $self->rv2x($op->first, $cx, '$#'));
- }
-}
-
-# skip down to the old, ex-rv2cv
-sub pp_rv2cv {
- my ($self, $op, $cx) = @_;
- if (!null($op->first) && $op->first->name eq 'null' &&
- $op->first->targ eq OP_LIST)
- {
- return $self->rv2x($op->first->first->sibling, $cx, "&")
- }
- else {
- return $self->rv2x($op, $cx, "")
- }
-}
-
-sub list_const {
- my $self = shift;
- my($cx, @list) = @_;
- my @a = map $self->const($_, 6), @list;
- if (@a == 0) {
- return "()";
- } elsif (@a == 1) {
- return $a[0];
- } elsif ( @a > 2 and !grep(!/^-?\d+$/, @a)) {
- # collapse (-1,0,1,2) into (-1..2)
- my ($s, $e) = @a[0,-1];
- my $i = $s;
- return $self->maybe_parens("$s..$e", $cx, 9)
- unless grep $i++ != $_, @a;
- }
- return $self->maybe_parens(join(", ", @a), $cx, 6);
-}
-
-sub pp_rv2av {
- my $self = shift;
- my($op, $cx) = @_;
- my $kid = $op->first;
- if ($kid->name eq "const") { # constant list
- my $av = $self->const_sv($kid);
- return $self->list_const($cx, $av->ARRAY);
- } else {
- return $self->maybe_local($op, $cx, $self->rv2x($op, $cx, "\@"));
- }
- }
-
-sub is_subscriptable {
- my $op = shift;
- if ($op->name =~ /^[ahg]elem/) {
- return 1;
- } elsif ($op->name eq "entersub") {
- my $kid = $op->first;
- return 0 unless null $kid->sibling;
- $kid = $kid->first;
- $kid = $kid->sibling until null $kid->sibling;
- return 0 if is_scope($kid);
- $kid = $kid->first;
- return 0 if $kid->name eq "gv";
- return 0 if is_scalar($kid);
- return is_subscriptable($kid);
- } else {
- return 0;
- }
-}
-
-sub elem {
- my $self = shift;
- my ($op, $cx, $left, $right, $padname) = @_;
- my($array, $idx) = ($op->first, $op->first->sibling);
- unless ($array->name eq $padname) { # Maybe this has been fixed
- $array = $array->first; # skip rv2av (or ex-rv2av in _53+)
- }
- if ($array->name eq $padname) {
- $array = $self->padany($array);
- } elsif (is_scope($array)) { # ${expr}[0]
- $array = "{" . $self->deparse($array, 0) . "}";
- } elsif ($array->name eq "gv") {
- $array = $self->gv_name($self->gv_or_padgv($array));
- if ($array !~ /::/) {
- my $prefix = ($left eq '[' ? '@' : '%');
- $array = $self->{curstash}.'::'.$array
- if $self->lex_in_scope($prefix . $array);
- }
- } elsif (is_scalar $array) { # $x[0], $$x[0], ...
- $array = $self->deparse($array, 24);
- } else {
- # $x[20][3]{hi} or expr->[20]
- my $arrow = is_subscriptable($array) ? "" : "->";
- return $self->deparse($array, 24) . $arrow .
- $left . $self->deparse($idx, 1) . $right;
- }
- $idx = $self->deparse($idx, 1);
-
- # Outer parens in an array index will confuse perl
- # if we're interpolating in a regular expression, i.e.
- # /$x$foo[(-1)]/ is *not* the same as /$x$foo[-1]/
- #
- # If $self->{parens}, then an initial '(' will
- # definitely be paired with a final ')'. If
- # !$self->{parens}, the misleading parens won't
- # have been added in the first place.
- #
- # [You might think that we could get "(...)...(...)"
- # where the initial and final parens do not match
- # each other. But we can't, because the above would
- # only happen if there's an infix binop between the
- # two pairs of parens, and *that* means that the whole
- # expression would be parenthesized as well.]
- #
- $idx =~ s/^\((.*)\)$/$1/ if $self->{'parens'};
-
- # Hash-element braces will autoquote a bareword inside themselves.
- # We need to make sure that C<$hash{warn()}> doesn't come out as
- # C<$hash{warn}>, which has a quite different meaning. Currently
- # B::Deparse will always quote strings, even if the string was a
- # bareword in the original (i.e. the OPpCONST_BARE flag is ignored
- # for constant strings.) So we can cheat slightly here - if we see
- # a bareword, we know that it is supposed to be a function call.
- #
- $idx =~ s/^([A-Za-z_]\w*)$/$1()/;
-
- return "\$" . $array . $left . $idx . $right;
-}
-
-sub pp_aelem { maybe_local(@_, elem(@_, "[", "]", "padav")) }
-sub pp_helem { maybe_local(@_, elem(@_, "{", "}", "padhv")) }
-
-sub pp_gelem {
- my $self = shift;
- my($op, $cx) = @_;
- my($glob, $part) = ($op->first, $op->last);
- $glob = $glob->first; # skip rv2gv
- $glob = $glob->first if $glob->name eq "rv2gv"; # this one's a bug
- my $scope = is_scope($glob);
- $glob = $self->deparse($glob, 0);
- $part = $self->deparse($part, 1);
- return "*" . ($scope ? "{$glob}" : $glob) . "{$part}";
-}
-
-sub slice {
- my $self = shift;
- my ($op, $cx, $left, $right, $regname, $padname) = @_;
- my $last;
- my(@elems, $kid, $array, $list);
- if (class($op) eq "LISTOP") {
- $last = $op->last;
- } else { # ex-hslice inside delete()
- for ($kid = $op->first; !null $kid->sibling; $kid = $kid->sibling) {}
- $last = $kid;
- }
- $array = $last;
- $array = $array->first
- if $array->name eq $regname or $array->name eq "null";
- if (is_scope($array)) {
- $array = "{" . $self->deparse($array, 0) . "}";
- } elsif ($array->name eq $padname) {
- $array = $self->padany($array);
- } else {
- $array = $self->deparse($array, 24);
- }
- $kid = $op->first->sibling; # skip pushmark
- if ($kid->name eq "list") {
- $kid = $kid->first->sibling; # skip list, pushmark
- for (; !null $kid; $kid = $kid->sibling) {
- push @elems, $self->deparse($kid, 6);
- }
- $list = join(", ", @elems);
- } else {
- $list = $self->deparse($kid, 1);
- }
- return "\@" . $array . $left . $list . $right;
-}
-
-sub pp_aslice { maybe_local(@_, slice(@_, "[", "]", "rv2av", "padav")) }
-sub pp_hslice { maybe_local(@_, slice(@_, "{", "}", "rv2hv", "padhv")) }
-
-sub pp_lslice {
- my $self = shift;
- my($op, $cx) = @_;
- my $idx = $op->first;
- my $list = $op->last;
- my(@elems, $kid);
- $list = $self->deparse($list, 1);
- $idx = $self->deparse($idx, 1);
- return "($list)" . "[$idx]";
-}
-
-sub want_scalar {
- my $op = shift;
- return ($op->flags & OPf_WANT) == OPf_WANT_SCALAR;
-}
-
-sub want_list {
- my $op = shift;
- return ($op->flags & OPf_WANT) == OPf_WANT_LIST;
-}
-
-sub method {
- my $self = shift;
- my($op, $cx) = @_;
- my $kid = $op->first->sibling; # skip pushmark
- my($meth, $obj, @exprs);
- if ($kid->name eq "list" and want_list $kid) {
- # When an indirect object isn't a bareword but the args are in
- # parens, the parens aren't part of the method syntax (the LLAFR
- # doesn't apply), but they make a list with OPf_PARENS set that
- # doesn't get flattened by the append_elem that adds the method,
- # making a (object, arg1, arg2, ...) list where the object
- # usually is. This can be distinguished from
- # `($obj, $arg1, $arg2)->meth()' (which is legal if $arg2 is an
- # object) because in the later the list is in scalar context
- # as the left side of -> always is, while in the former
- # the list is in list context as method arguments always are.
- # (Good thing there aren't method prototypes!)
- $meth = $kid->sibling;
- $kid = $kid->first->sibling; # skip pushmark
- $obj = $kid;
- $kid = $kid->sibling;
- for (; not null $kid; $kid = $kid->sibling) {
- push @exprs, $self->deparse($kid, 6);
- }
- } else {
- $obj = $kid;
- $kid = $kid->sibling;
- for (; !null ($kid->sibling) && $kid->name ne "method_named";
- $kid = $kid->sibling) {
- push @exprs, $self->deparse($kid, 6);
- }
- $meth = $kid;
- }
- $obj = $self->deparse($obj, 24);
- if ($meth->name eq "method_named") {
- $meth = $self->const_sv($meth)->PV;
- } else {
- $meth = $meth->first;
- if ($meth->name eq "const") {
- # As of 5.005_58, this case is probably obsoleted by the
- # method_named case above
- $meth = $self->const_sv($meth)->PV; # needs to be bare
- } else {
- $meth = $self->deparse($meth, 1);
- }
- }
- my $args = join(", ", @exprs);
- $kid = $obj . "->" . $meth;
- if (length $args) {
- return $kid . "(" . $args . ")"; # parens mandatory
- } else {
- return $kid;
- }
-}
-
-# returns "&" if the prototype doesn't match the args,
-# or ("", $args_after_prototype_demunging) if it does.
-sub check_proto {
- my $self = shift;
- return "&" if $self->{'noproto'};
- my($proto, @args) = @_;
- my($arg, $real);
- my $doneok = 0;
- my @reals;
- # An unbackslashed @ or % gobbles up the rest of the args
- 1 while $proto =~ s/(?<!\\)([@%])[^\]]+$/$1/;
- while ($proto) {
- $proto =~ s/^(\\?[\$\@&%*]|\\\[[\$\@&%*]+\]|;)//;
- my $chr = $1;
- if ($chr eq "") {
- return "&" if @args;
- } elsif ($chr eq ";") {
- $doneok = 1;
- } elsif ($chr eq "@" or $chr eq "%") {
- push @reals, map($self->deparse($_, 6), @args);
- @args = ();
- } else {
- $arg = shift @args;
- last unless $arg;
- if ($chr eq "\$") {
- if (want_scalar $arg) {
- push @reals, $self->deparse($arg, 6);
- } else {
- return "&";
- }
- } elsif ($chr eq "&") {
- if ($arg->name =~ /^(s?refgen|undef)$/) {
- push @reals, $self->deparse($arg, 6);
- } else {
- return "&";
- }
- } elsif ($chr eq "*") {
- if ($arg->name =~ /^s?refgen$/
- and $arg->first->first->name eq "rv2gv")
- {
- $real = $arg->first->first; # skip refgen, null
- if ($real->first->name eq "gv") {
- push @reals, $self->deparse($real, 6);
- } else {
- push @reals, $self->deparse($real->first, 6);
- }
- } else {
- return "&";
- }
- } elsif (substr($chr, 0, 1) eq "\\") {
- $chr =~ tr/\\[]//d;
- if ($arg->name =~ /^s?refgen$/ and
- !null($real = $arg->first) and
- ($chr =~ /\$/ && is_scalar($real->first)
- or ($chr =~ /@/
- && class($real->first->sibling) ne 'NULL'
- && $real->first->sibling->name
- =~ /^(rv2|pad)av$/)
- or ($chr =~ /%/
- && class($real->first->sibling) ne 'NULL'
- && $real->first->sibling->name
- =~ /^(rv2|pad)hv$/)
- #or ($chr =~ /&/ # This doesn't work
- # && $real->first->name eq "rv2cv")
- or ($chr =~ /\*/
- && $real->first->name eq "rv2gv")))
- {
- push @reals, $self->deparse($real, 6);
- } else {
- return "&";
- }
- }
- }
- }
- return "&" if $proto and !$doneok; # too few args and no `;'
- return "&" if @args; # too many args
- return ("", join ", ", @reals);
-}
-
-sub pp_entersub {
- my $self = shift;
- my($op, $cx) = @_;
- return $self->method($op, $cx) unless null $op->first->sibling;
- my $prefix = "";
- my $amper = "";
- my($kid, @exprs);
- if ($op->flags & OPf_SPECIAL && !($op->flags & OPf_MOD)) {
- $prefix = "do ";
- } elsif ($op->private & OPpENTERSUB_AMPER) {
- $amper = "&";
- }
- $kid = $op->first;
- $kid = $kid->first->sibling; # skip ex-list, pushmark
- for (; not null $kid->sibling; $kid = $kid->sibling) {
- push @exprs, $kid;
- }
- my $simple = 0;
- my $proto = undef;
- if (is_scope($kid)) {
- $amper = "&";
- $kid = "{" . $self->deparse($kid, 0) . "}";
- } elsif ($kid->first->name eq "gv") {
- my $gv = $self->gv_or_padgv($kid->first);
- if (class($gv->CV) ne "SPECIAL") {
- $proto = $gv->CV->PV if $gv->CV->FLAGS & SVf_POK;
- }
- $simple = 1; # only calls of named functions can be prototyped
- $kid = $self->deparse($kid, 24);
- } elsif (is_scalar ($kid->first) && $kid->first->name ne 'rv2cv') {
- $amper = "&";
- $kid = $self->deparse($kid, 24);
- } else {
- $prefix = "";
- my $arrow = is_subscriptable($kid->first) ? "" : "->";
- $kid = $self->deparse($kid, 24) . $arrow;
- }
-
- # Doesn't matter how many prototypes there are, if
- # they haven't happened yet!
- my $declared;
- {
- no strict 'refs';
- no warnings 'uninitialized';
- $declared = exists $self->{'subs_declared'}{$kid}
- || (
- defined &{ ${$self->{'curstash'}."::"}{$kid} }
- && !exists
- $self->{'subs_deparsed'}{$self->{'curstash'}."::".$kid}
- && defined prototype $self->{'curstash'}."::".$kid
- );
- if (!$declared && defined($proto)) {
- # Avoid "too early to check prototype" warning
- ($amper, $proto) = ('&');
- }
- }
-
- my $args;
- if ($declared and defined $proto and not $amper) {
- ($amper, $args) = $self->check_proto($proto, @exprs);
- if ($amper eq "&") {
- $args = join(", ", map($self->deparse($_, 6), @exprs));
- }
- } else {
- $args = join(", ", map($self->deparse($_, 6), @exprs));
- }
- if ($prefix or $amper) {
- if ($op->flags & OPf_STACKED) {
- return $prefix . $amper . $kid . "(" . $args . ")";
- } else {
- return $prefix . $amper. $kid;
- }
- } else {
- # glob() invocations can be translated into calls of
- # CORE::GLOBAL::glob with a second parameter, a number.
- # Reverse this.
- if ($kid eq "CORE::GLOBAL::glob") {
- $kid = "glob";
- $args =~ s/\s*,[^,]+$//;
- }
-
- # It's a syntax error to call CORE::GLOBAL::foo without a prefix,
- # so it must have been translated from a keyword call. Translate
- # it back.
- $kid =~ s/^CORE::GLOBAL:://;
-
- my $dproto = defined($proto) ? $proto : "undefined";
- if (!$declared) {
- return "$kid(" . $args . ")";
- } elsif ($dproto eq "") {
- return $kid;
- } elsif ($dproto eq "\$" and is_scalar($exprs[0])) {
- # is_scalar is an excessively conservative test here:
- # really, we should be comparing to the precedence of the
- # top operator of $exprs[0] (ala unop()), but that would
- # take some major code restructuring to do right.
- return $self->maybe_parens_func($kid, $args, $cx, 16);
- } elsif ($dproto ne '$' and defined($proto) || $simple) { #'
- return $self->maybe_parens_func($kid, $args, $cx, 5);
- } else {
- return "$kid(" . $args . ")";
- }
- }
-}
-
-sub pp_enterwrite { unop(@_, "write") }
-
-# escape things that cause interpolation in double quotes,
-# but not character escapes
-sub uninterp {
- my($str) = @_;
- $str =~ s/(^|\G|[^\\])((?:\\\\)*)([\$\@]|\\[uUlLQE])/$1$2\\$3/g;
- return $str;
-}
-
-{
-my $bal;
-BEGIN {
- use re "eval";
- # Matches any string which is balanced with respect to {braces}
- $bal = qr(
- (?:
- [^\\{}]
- | \\\\
- | \\[{}]
- | \{(??{$bal})\}
- )*
- )x;
-}
-
-# the same, but treat $|, $), $( and $ at the end of the string differently
-sub re_uninterp {
- my($str) = @_;
-
- $str =~ s/
- ( ^|\G # $1
- | [^\\]
- )
-
- ( # $2
- (?:\\\\)*
- )
-
- ( # $3
- (\(\?\??\{$bal\}\)) # $4
- | [\$\@]
- (?!\||\)|\(|$)
- | \\[uUlLQE]
- )
-
- /defined($4) && length($4) ? "$1$2$4" : "$1$2\\$3"/xeg;
-
- return $str;
-}
-
-# This is for regular expressions with the /x modifier
-# We have to leave comments unmangled.
-sub re_uninterp_extended {
- my($str) = @_;
-
- $str =~ s/
- ( ^|\G # $1
- | [^\\]
- )
-
- ( # $2
- (?:\\\\)*
- )
-
- ( # $3
- ( \(\?\??\{$bal\}\) # $4 (skip over (?{}) and (??{}) blocks)
- | \#[^\n]* # (skip over comments)
- )
- | [\$\@]
- (?!\||\)|\(|$|\s)
- | \\[uUlLQE]
- )
-
- /defined($4) && length($4) ? "$1$2$4" : "$1$2\\$3"/xeg;
-
- return $str;
-}
-}
-
-my %unctrl = # portable to to EBCDIC
- (
- "\c@" => '\c@', # unused
- "\cA" => '\cA',
- "\cB" => '\cB',
- "\cC" => '\cC',
- "\cD" => '\cD',
- "\cE" => '\cE',
- "\cF" => '\cF',
- "\cG" => '\cG',
- "\cH" => '\cH',
- "\cI" => '\cI',
- "\cJ" => '\cJ',
- "\cK" => '\cK',
- "\cL" => '\cL',
- "\cM" => '\cM',
- "\cN" => '\cN',
- "\cO" => '\cO',
- "\cP" => '\cP',
- "\cQ" => '\cQ',
- "\cR" => '\cR',
- "\cS" => '\cS',
- "\cT" => '\cT',
- "\cU" => '\cU',
- "\cV" => '\cV',
- "\cW" => '\cW',
- "\cX" => '\cX',
- "\cY" => '\cY',
- "\cZ" => '\cZ',
- "\c[" => '\c[', # unused
- "\c\\" => '\c\\', # unused
- "\c]" => '\c]', # unused
- "\c_" => '\c_', # unused
- );
-
-# character escapes, but not delimiters that might need to be escaped
-sub escape_str { # ASCII, UTF8
- my($str) = @_;
- $str =~ s/(.)/ord($1) > 255 ? sprintf("\\x{%x}", ord($1)) : $1/eg;
- $str =~ s/\a/\\a/g;
-# $str =~ s/\cH/\\b/g; # \b means something different in a regex
- $str =~ s/\t/\\t/g;
- $str =~ s/\n/\\n/g;
- $str =~ s/\e/\\e/g;
- $str =~ s/\f/\\f/g;
- $str =~ s/\r/\\r/g;
- $str =~ s/([\cA-\cZ])/$unctrl{$1}/ge;
- $str =~ s/([[:^print:]])/sprintf("\\%03o", ord($1))/ge;
- return $str;
-}
-
-# For regexes with the /x modifier.
-# Leave whitespace unmangled.
-sub escape_extended_re {
- my($str) = @_;
- $str =~ s/(.)/ord($1) > 255 ? sprintf("\\x{%x}", ord($1)) : $1/eg;
- $str =~ s/([[:^print:]])/
- ($1 =~ y! \t\n!!) ? $1 : sprintf("\\%03o", ord($1))/ge;
- $str =~ s/\n/\n\f/g;
- return $str;
-}
-
-# Don't do this for regexen
-sub unback {
- my($str) = @_;
- $str =~ s/\\/\\\\/g;
- return $str;
-}
-
-# Remove backslashes which precede literal control characters,
-# to avoid creating ambiguity when we escape the latter.
-sub re_unback {
- my($str) = @_;
-
- # the insane complexity here is due to the behaviour of "\c\"
- $str =~ s/(^|[^\\]|\\c\\)(?<!\\c)\\(\\\\)*(?=[[:^print:]])/$1$2/g;
- return $str;
-}
-
-sub balanced_delim {
- my($str) = @_;
- my @str = split //, $str;
- my($ar, $open, $close, $fail, $c, $cnt);
- for $ar (['[',']'], ['(',')'], ['<','>'], ['{','}']) {
- ($open, $close) = @$ar;
- $fail = 0; $cnt = 0;
- for $c (@str) {
- if ($c eq $open) {
- $cnt++;
- } elsif ($c eq $close) {
- $cnt--;
- if ($cnt < 0) {
- # qq()() isn't ")("
- $fail = 1;
- last;
- }
- }
- }
- $fail = 1 if $cnt != 0;
- return ($open, "$open$str$close") if not $fail;
- }
- return ("", $str);
-}
-
-sub single_delim {
- my($q, $default, $str) = @_;
- return "$default$str$default" if $default and index($str, $default) == -1;
- if ($q ne 'qr') {
- (my $succeed, $str) = balanced_delim($str);
- return "$q$str" if $succeed;
- }
- for my $delim ('/', '"', '#') {
- return "$q$delim" . $str . $delim if index($str, $delim) == -1;
- }
- if ($default) {
- $str =~ s/$default/\\$default/g;
- return "$default$str$default";
- } else {
- $str =~ s[/][\\/]g;
- return "$q/$str/";
- }
-}
-
-my $max_prec;
-BEGIN { $max_prec = int(0.999 + 8*length(pack("F", 42))*log(2)/log(10)); }
-
-# Split a floating point number into an integer mantissa and a binary
-# exponent. Assumes you've already made sure the number isn't zero or
-# some weird infinity or NaN.
-sub split_float {
- my($f) = @_;
- my $exponent = 0;
- if ($f == int($f)) {
- while ($f % 2 == 0) {
- $f /= 2;
- $exponent++;
- }
- } else {
- while ($f != int($f)) {
- $f *= 2;
- $exponent--;
- }
- }
- my $mantissa = sprintf("%.0f", $f);
- return ($mantissa, $exponent);
-}
-
-sub const {
- my $self = shift;
- my($sv, $cx) = @_;
- if ($self->{'use_dumper'}) {
- return $self->const_dumper($sv, $cx);
- }
- if (class($sv) eq "SPECIAL") {
- # sv_undef, sv_yes, sv_no
- return ('undef', '1', $self->maybe_parens("!1", $cx, 21))[$$sv-1];
- } elsif (class($sv) eq "NULL") {
- return 'undef';
- }
- # convert a version object into the "v1.2.3" string in its V magic
- if ($sv->FLAGS & SVs_RMG) {
- for (my $mg = $sv->MAGIC; $mg; $mg = $mg->MOREMAGIC) {
- return $mg->PTR if $mg->TYPE eq 'V';
- }
- }
-
- if ($sv->FLAGS & SVf_IOK) {
- my $str = $sv->int_value;
- $str = $self->maybe_parens($str, $cx, 21) if $str < 0;
- return $str;
- } elsif ($sv->FLAGS & SVf_NOK) {
- my $nv = $sv->NV;
- if ($nv == 0) {
- if (pack("F", $nv) eq pack("F", 0)) {
- # positive zero
- return "0";
- } else {
- # negative zero
- return $self->maybe_parens("-.0", $cx, 21);
- }
- } elsif (1/$nv == 0) {
- if ($nv > 0) {
- # positive infinity
- return $self->maybe_parens("9**9**9", $cx, 22);
- } else {
- # negative infinity
- return $self->maybe_parens("-9**9**9", $cx, 21);
- }
- } elsif ($nv != $nv) {
- # NaN
- if (pack("F", $nv) eq pack("F", sin(9**9**9))) {
- # the normal kind
- return "sin(9**9**9)";
- } elsif (pack("F", $nv) eq pack("F", -sin(9**9**9))) {
- # the inverted kind
- return $self->maybe_parens("-sin(9**9**9)", $cx, 21);
- } else {
- # some other kind
- my $hex = unpack("h*", pack("F", $nv));
- return qq'unpack("F", pack("h*", "$hex"))';
- }
- }
- # first, try the default stringification
- my $str = "$nv";
- if ($str != $nv) {
- # failing that, try using more precision
- $str = sprintf("%.${max_prec}g", $nv);
-# if (pack("F", $str) ne pack("F", $nv)) {
- if ($str != $nv) {
- # not representable in decimal with whatever sprintf()
- # and atof() Perl is using here.
- my($mant, $exp) = split_float($nv);
- return $self->maybe_parens("$mant * 2**$exp", $cx, 19);
- }
- }
- $str = $self->maybe_parens($str, $cx, 21) if $nv < 0;
- return $str;
- } elsif ($sv->FLAGS & SVf_ROK && $sv->can("RV")) {
- my $ref = $sv->RV;
- if (class($ref) eq "AV") {
- return "[" . $self->list_const(2, $ref->ARRAY) . "]";
- } elsif (class($ref) eq "HV") {
- my %hash = $ref->ARRAY;
- my @elts;
- for my $k (sort keys %hash) {
- push @elts, "$k => " . $self->const($hash{$k}, 6);
- }
- return "{" . join(", ", @elts) . "}";
- } elsif (class($ref) eq "CV") {
- return "sub " . $self->deparse_sub($ref);
- }
- if ($ref->FLAGS & SVs_SMG) {
- for (my $mg = $ref->MAGIC; $mg; $mg = $mg->MOREMAGIC) {
- if ($mg->TYPE eq 'r') {
- my $re = re_uninterp(escape_str(re_unback($mg->precomp)));
- return single_delim("qr", "", $re);
- }
- }
- }
-
- return $self->maybe_parens("\\" . $self->const($ref, 20), $cx, 20);
- } elsif ($sv->FLAGS & SVf_POK) {
- my $str = $sv->PV;
- if ($str =~ /[^ -~]/) { # ASCII for non-printing
- return single_delim("qq", '"', uninterp escape_str unback $str);
- } else {
- return single_delim("q", "'", unback $str);
- }
- } else {
- return "undef";
- }
-}
-
-sub const_dumper {
- my $self = shift;
- my($sv, $cx) = @_;
- my $ref = $sv->object_2svref();
- my $dumper = Data::Dumper->new([$$ref], ['$v']);
- $dumper->Purity(1)->Terse(1)->Deparse(1)->Indent(0)->Useqq(1)->Sortkeys(1);
- my $str = $dumper->Dump();
- if ($str =~ /^\$v/) {
- return '${my ' . $str . ' \$v}';
- } else {
- return $str;
- }
-}
-
-sub const_sv {
- my $self = shift;
- my $op = shift;
- my $sv = $op->sv;
- # the constant could be in the pad (under useithreads)
- $sv = $self->padval($op->targ) unless $$sv;
- return $sv;
-}
-
-sub pp_const {
- my $self = shift;
- my($op, $cx) = @_;
- if ($op->private & OPpCONST_ARYBASE) {
- return '$[';
- }
-# if ($op->private & OPpCONST_BARE) { # trouble with `=>' autoquoting
-# return $self->const_sv($op)->PV;
-# }
- my $sv = $self->const_sv($op);
- return $self->const($sv, $cx);
-}
-
-sub dq {
- my $self = shift;
- my $op = shift;
- my $type = $op->name;
- if ($type eq "const") {
- return '$[' if $op->private & OPpCONST_ARYBASE;
- return uninterp(escape_str(unback($self->const_sv($op)->as_string)));
- } elsif ($type eq "concat") {
- my $first = $self->dq($op->first);
- my $last = $self->dq($op->last);
-
- # Disambiguate "${foo}bar", "${foo}{bar}", "${foo}[1]", "$foo\::bar"
- ($last =~ /^[A-Z\\\^\[\]_?]/ &&
- $first =~ s/([\$@])\^$/${1}{^}/) # "${^}W" etc
- || ($last =~ /^[:'{\[\w_]/ && #'
- $first =~ s/([\$@])([A-Za-z_]\w*)$/${1}{$2}/);
-
- return $first . $last;
- } elsif ($type eq "uc") {
- return '\U' . $self->dq($op->first->sibling) . '\E';
- } elsif ($type eq "lc") {
- return '\L' . $self->dq($op->first->sibling) . '\E';
- } elsif ($type eq "ucfirst") {
- return '\u' . $self->dq($op->first->sibling);
- } elsif ($type eq "lcfirst") {
- return '\l' . $self->dq($op->first->sibling);
- } elsif ($type eq "quotemeta") {
- return '\Q' . $self->dq($op->first->sibling) . '\E';
- } elsif ($type eq "join") {
- return $self->deparse($op->last, 26); # was join($", @ary)
- } else {
- return $self->deparse($op, 26);
- }
-}
-
-sub pp_backtick {
- my $self = shift;
- my($op, $cx) = @_;
- # skip pushmark
- return single_delim("qx", '`', $self->dq($op->first->sibling));
-}
-
-sub dquote {
- my $self = shift;
- my($op, $cx) = @_;
- my $kid = $op->first->sibling; # skip ex-stringify, pushmark
- return $self->deparse($kid, $cx) if $self->{'unquote'};
- $self->maybe_targmy($kid, $cx,
- sub {single_delim("qq", '"', $self->dq($_[1]))});
-}
-
-# OP_STRINGIFY is a listop, but it only ever has one arg
-sub pp_stringify { maybe_targmy(@_, \&dquote) }
-
-# tr/// and s/// (and tr[][], tr[]//, tr###, etc)
-# note that tr(from)/to/ is OK, but not tr/from/(to)
-sub double_delim {
- my($from, $to) = @_;
- my($succeed, $delim);
- if ($from !~ m[/] and $to !~ m[/]) {
- return "/$from/$to/";
- } elsif (($succeed, $from) = balanced_delim($from) and $succeed) {
- if (($succeed, $to) = balanced_delim($to) and $succeed) {
- return "$from$to";
- } else {
- for $delim ('/', '"', '#') { # note no `'' -- s''' is special
- return "$from$delim$to$delim" if index($to, $delim) == -1;
- }
- $to =~ s[/][\\/]g;
- return "$from/$to/";
- }
- } else {
- for $delim ('/', '"', '#') { # note no '
- return "$delim$from$delim$to$delim"
- if index($to . $from, $delim) == -1;
- }
- $from =~ s[/][\\/]g;
- $to =~ s[/][\\/]g;
- return "/$from/$to/";
- }
-}
-
-# Only used by tr///, so backslashes hyphens
-sub pchr { # ASCII
- my($n) = @_;
- if ($n == ord '\\') {
- return '\\\\';
- } elsif ($n == ord "-") {
- return "\\-";
- } elsif ($n >= ord(' ') and $n <= ord('~')) {
- return chr($n);
- } elsif ($n == ord "\a") {
- return '\\a';
- } elsif ($n == ord "\b") {
- return '\\b';
- } elsif ($n == ord "\t") {
- return '\\t';
- } elsif ($n == ord "\n") {
- return '\\n';
- } elsif ($n == ord "\e") {
- return '\\e';
- } elsif ($n == ord "\f") {
- return '\\f';
- } elsif ($n == ord "\r") {
- return '\\r';
- } elsif ($n >= ord("\cA") and $n <= ord("\cZ")) {
- return '\\c' . chr(ord("@") + $n);
- } else {
-# return '\x' . sprintf("%02x", $n);
- return '\\' . sprintf("%03o", $n);
- }
-}
-
-sub collapse {
- my(@chars) = @_;
- my($str, $c, $tr) = ("");
- for ($c = 0; $c < @chars; $c++) {
- $tr = $chars[$c];
- $str .= pchr($tr);
- if ($c <= $#chars - 2 and $chars[$c + 1] == $tr + 1 and
- $chars[$c + 2] == $tr + 2)
- {
- for (; $c <= $#chars-1 and $chars[$c + 1] == $chars[$c] + 1; $c++)
- {}
- $str .= "-";
- $str .= pchr($chars[$c]);
- }
- }
- return $str;
-}
-
-sub tr_decode_byte {
- my($table, $flags) = @_;
- my(@table) = unpack("s*", $table);
- splice @table, 0x100, 1; # Number of subsequent elements
- my($c, $tr, @from, @to, @delfrom, $delhyphen);
- if ($table[ord "-"] != -1 and
- $table[ord("-") - 1] == -1 || $table[ord("-") + 1] == -1)
- {
- $tr = $table[ord "-"];
- $table[ord "-"] = -1;
- if ($tr >= 0) {
- @from = ord("-");
- @to = $tr;
- } else { # -2 ==> delete
- $delhyphen = 1;
- }
- }
- for ($c = 0; $c < @table; $c++) {
- $tr = $table[$c];
- if ($tr >= 0) {
- push @from, $c; push @to, $tr;
- } elsif ($tr == -2) {
- push @delfrom, $c;
- }
- }
- @from = (@from, @delfrom);
- if ($flags & OPpTRANS_COMPLEMENT) {
- my @newfrom = ();
- my %from;
- @from{@from} = (1) x @from;
- for ($c = 0; $c < 256; $c++) {
- push @newfrom, $c unless $from{$c};
- }
- @from = @newfrom;
- }
- unless ($flags & OPpTRANS_DELETE || !@to) {
- pop @to while $#to and $to[$#to] == $to[$#to -1];
- }
- my($from, $to);
- $from = collapse(@from);
- $to = collapse(@to);
- $from .= "-" if $delhyphen;
- return ($from, $to);
-}
-
-sub tr_chr {
- my $x = shift;
- if ($x == ord "-") {
- return "\\-";
- } elsif ($x == ord "\\") {
- return "\\\\";
- } else {
- return chr $x;
- }
-}
-
-# XXX This doesn't yet handle all cases correctly either
-
-sub tr_decode_utf8 {
- my($swash_hv, $flags) = @_;
- my %swash = $swash_hv->ARRAY;
- my $final = undef;
- $final = $swash{'FINAL'}->IV if exists $swash{'FINAL'};
- my $none = $swash{"NONE"}->IV;
- my $extra = $none + 1;
- my(@from, @delfrom, @to);
- my $line;
- foreach $line (split /\n/, $swash{'LIST'}->PV) {
- my($min, $max, $result) = split(/\t/, $line);
- $min = hex $min;
- if (length $max) {
- $max = hex $max;
- } else {
- $max = $min;
- }
- $result = hex $result;
- if ($result == $extra) {
- push @delfrom, [$min, $max];
- } else {
- push @from, [$min, $max];
- push @to, [$result, $result + $max - $min];
- }
- }
- for my $i (0 .. $#from) {
- if ($from[$i][0] == ord '-') {
- unshift @from, splice(@from, $i, 1);
- unshift @to, splice(@to, $i, 1);
- last;
- } elsif ($from[$i][1] == ord '-') {
- $from[$i][1]--;
- $to[$i][1]--;
- unshift @from, ord '-';
- unshift @to, ord '-';
- last;
- }
- }
- for my $i (0 .. $#delfrom) {
- if ($delfrom[$i][0] == ord '-') {
- push @delfrom, splice(@delfrom, $i, 1);
- last;
- } elsif ($delfrom[$i][1] == ord '-') {
- $delfrom[$i][1]--;
- push @delfrom, ord '-';
- last;
- }
- }
- if (defined $final and $to[$#to][1] != $final) {
- push @to, [$final, $final];
- }
- push @from, @delfrom;
- if ($flags & OPpTRANS_COMPLEMENT) {
- my @newfrom;
- my $next = 0;
- for my $i (0 .. $#from) {
- push @newfrom, [$next, $from[$i][0] - 1];
- $next = $from[$i][1] + 1;
- }
- @from = ();
- for my $range (@newfrom) {
- if ($range->[0] <= $range->[1]) {
- push @from, $range;
- }
- }
- }
- my($from, $to, $diff);
- for my $chunk (@from) {
- $diff = $chunk->[1] - $chunk->[0];
- if ($diff > 1) {
- $from .= tr_chr($chunk->[0]) . "-" . tr_chr($chunk->[1]);
- } elsif ($diff == 1) {
- $from .= tr_chr($chunk->[0]) . tr_chr($chunk->[1]);
- } else {
- $from .= tr_chr($chunk->[0]);
- }
- }
- for my $chunk (@to) {
- $diff = $chunk->[1] - $chunk->[0];
- if ($diff > 1) {
- $to .= tr_chr($chunk->[0]) . "-" . tr_chr($chunk->[1]);
- } elsif ($diff == 1) {
- $to .= tr_chr($chunk->[0]) . tr_chr($chunk->[1]);
- } else {
- $to .= tr_chr($chunk->[0]);
- }
- }
- #$final = sprintf("%04x", $final) if defined $final;
- #$none = sprintf("%04x", $none) if defined $none;
- #$extra = sprintf("%04x", $extra) if defined $extra;
- #print STDERR "final: $final\n none: $none\nextra: $extra\n";
- #print STDERR $swash{'LIST'}->PV;
- return (escape_str($from), escape_str($to));
-}
-
-sub pp_trans {
- my $self = shift;
- my($op, $cx) = @_;
- my($from, $to);
- if (class($op) eq "PVOP") {
- ($from, $to) = tr_decode_byte($op->pv, $op->private);
- } else { # class($op) eq "SVOP"
- ($from, $to) = tr_decode_utf8($op->sv->RV, $op->private);
- }
- my $flags = "";
- $flags .= "c" if $op->private & OPpTRANS_COMPLEMENT;
- $flags .= "d" if $op->private & OPpTRANS_DELETE;
- $to = "" if $from eq $to and $flags eq "";
- $flags .= "s" if $op->private & OPpTRANS_SQUASH;
- return "tr" . double_delim($from, $to) . $flags;
-}
-
-# Like dq(), but different
-sub re_dq {
- my $self = shift;
- my ($op, $extended) = @_;
-
- my $type = $op->name;
- if ($type eq "const") {
- return '$[' if $op->private & OPpCONST_ARYBASE;
- my $unbacked = re_unback($self->const_sv($op)->as_string);
- return re_uninterp_extended(escape_extended_re($unbacked))
- if $extended;
- return re_uninterp(escape_str($unbacked));
- } elsif ($type eq "concat") {
- my $first = $self->re_dq($op->first, $extended);
- my $last = $self->re_dq($op->last, $extended);
-
- # Disambiguate "${foo}bar", "${foo}{bar}", "${foo}[1]"
- ($last =~ /^[A-Z\\\^\[\]_?]/ &&
- $first =~ s/([\$@])\^$/${1}{^}/) # "${^}W" etc
- || ($last =~ /^[{\[\w_]/ &&
- $first =~ s/([\$@])([A-Za-z_]\w*)$/${1}{$2}/);
-
- return $first . $last;
- } elsif ($type eq "uc") {
- return '\U' . $self->re_dq($op->first->sibling, $extended) . '\E';
- } elsif ($type eq "lc") {
- return '\L' . $self->re_dq($op->first->sibling, $extended) . '\E';
- } elsif ($type eq "ucfirst") {
- return '\u' . $self->re_dq($op->first->sibling, $extended);
- } elsif ($type eq "lcfirst") {
- return '\l' . $self->re_dq($op->first->sibling, $extended);
- } elsif ($type eq "quotemeta") {
- return '\Q' . $self->re_dq($op->first->sibling, $extended) . '\E';
- } elsif ($type eq "join") {
- return $self->deparse($op->last, 26); # was join($", @ary)
- } else {
- return $self->deparse($op, 26);
- }
-}
-
-sub pure_string {
- my ($self, $op) = @_;
- return 0 if null $op;
- my $type = $op->name;
-
- if ($type eq 'const') {
- return 1;
- }
- elsif ($type =~ /^[ul]c(first)?$/ || $type eq 'quotemeta') {
- return $self->pure_string($op->first->sibling);
- }
- elsif ($type eq 'join') {
- my $join_op = $op->first->sibling; # Skip pushmark
- return 0 unless $join_op->name eq 'null' && $join_op->targ eq OP_RV2SV;
-
- my $gvop = $join_op->first;
- return 0 unless $gvop->name eq 'gvsv';
- return 0 unless '"' eq $self->gv_name($self->gv_or_padgv($gvop));
-
- return 0 unless ${$join_op->sibling} eq ${$op->last};
- return 0 unless $op->last->name =~ /^(rv2|pad)av$/;
- }
- elsif ($type eq 'concat') {
- return $self->pure_string($op->first)
- && $self->pure_string($op->last);
- }
- elsif (is_scalar($op) || $type =~ /^[ah]elem$/) {
- return 1;
- }
- elsif ($type eq "null" and $op->can('first') and not null $op->first and
- $op->first->name eq "null" and $op->first->can('first')
- and not null $op->first->first and
- $op->first->first->name eq "aelemfast") {
- return 1;
- }
- else {
- return 0;
- }
-
- return 1;
-}
-
-sub regcomp {
- my $self = shift;
- my($op, $cx, $extended) = @_;
- my $kid = $op->first;
- $kid = $kid->first if $kid->name eq "regcmaybe";
- $kid = $kid->first if $kid->name eq "regcreset";
- if ($kid->name eq "null" and !null($kid->first)
- and $kid->first->name eq 'pushmark')
- {
- my $str = '';
- $kid = $kid->first->sibling;
- while (!null($kid)) {
- $str .= $self->re_dq($kid, $extended);
- $kid = $kid->sibling;
- }
- return $str, 1;
- }
-
- return ($self->re_dq($kid, $extended), 1) if $self->pure_string($kid);
- return ($self->deparse($kid, $cx), 0);
-}
-
-sub pp_regcomp {
- my ($self, $op, $cx) = @_;
- return (($self->regcomp($op, $cx, 0))[0]);
-}
-
-# osmic acid -- see osmium tetroxide
-
-my %matchwords;
-map($matchwords{join "", sort split //, $_} = $_, 'cig', 'cog', 'cos', 'cogs',
- 'cox', 'go', 'is', 'ism', 'iso', 'mig', 'mix', 'osmic', 'ox', 'sic',
- 'sig', 'six', 'smog', 'so', 'soc', 'sog', 'xi');
-
-sub matchop {
- my $self = shift;
- my($op, $cx, $name, $delim) = @_;
- my $kid = $op->first;
- my ($binop, $var, $re) = ("", "", "");
- if ($op->flags & OPf_STACKED) {
- $binop = 1;
- $var = $self->deparse($kid, 20);
- $kid = $kid->sibling;
- }
- my $quote = 1;
- my $extended = ($op->pmflags & PMf_EXTENDED);
- if (null $kid) {
- my $unbacked = re_unback($op->precomp);
- if ($extended) {
- $re = re_uninterp_extended(escape_extended_re($unbacked));
- } else {
- $re = re_uninterp(escape_str(re_unback($op->precomp)));
- }
- } elsif ($kid->name ne 'regcomp') {
- carp("found ".$kid->name." where regcomp expected");
- } else {
- ($re, $quote) = $self->regcomp($kid, 21, $extended);
- }
- my $flags = "";
- $flags .= "c" if $op->pmflags & PMf_CONTINUE;
- $flags .= "g" if $op->pmflags & PMf_GLOBAL;
- $flags .= "i" if $op->pmflags & PMf_FOLD;
- $flags .= "m" if $op->pmflags & PMf_MULTILINE;
- $flags .= "o" if $op->pmflags & PMf_KEEP;
- $flags .= "s" if $op->pmflags & PMf_SINGLELINE;
- $flags .= "x" if $op->pmflags & PMf_EXTENDED;
- $flags = $matchwords{$flags} if $matchwords{$flags};
- if ($op->pmflags & PMf_ONCE) { # only one kind of delimiter works here
- $re =~ s/\?/\\?/g;
- $re = "?$re?";
- } elsif ($quote) {
- $re = single_delim($name, $delim, $re);
- }
- $re = $re . $flags if $quote;
- if ($binop) {
- return $self->maybe_parens("$var =~ $re", $cx, 20);
- } else {
- return $re;
- }
-}
-
-sub pp_match { matchop(@_, "m", "/") }
-sub pp_pushre { matchop(@_, "m", "/") }
-sub pp_qr { matchop(@_, "qr", "") }
-
-sub pp_split {
- my $self = shift;
- my($op, $cx) = @_;
- my($kid, @exprs, $ary, $expr);
- $kid = $op->first;
-
- # For our kid (an OP_PUSHRE), pmreplroot is never actually the
- # root of a replacement; it's either empty, or abused to point to
- # the GV for an array we split into (an optimization to save
- # assignment overhead). Depending on whether we're using ithreads,
- # this OP* holds either a GV* or a PADOFFSET. Luckily, B.xs
- # figures out for us which it is.
- my $replroot = $kid->pmreplroot;
- my $gv = 0;
- if (ref($replroot) eq "B::GV") {
- $gv = $replroot;
- } elsif (!ref($replroot) and $replroot > 0) {
- $gv = $self->padval($replroot);
- }
- $ary = $self->stash_variable('@', $self->gv_name($gv)) if $gv;
-
- for (; !null($kid); $kid = $kid->sibling) {
- push @exprs, $self->deparse($kid, 6);
- }
-
- # handle special case of split(), and split(" ") that compiles to /\s+/
- $kid = $op->first;
- if ($kid->flags & OPf_SPECIAL
- && $exprs[0] eq '/\\s+/'
- && $kid->pmflags & PMf_SKIPWHITE ) {
- $exprs[0] = '" "';
- }
-
- $expr = "split(" . join(", ", @exprs) . ")";
- if ($ary) {
- return $self->maybe_parens("$ary = $expr", $cx, 7);
- } else {
- return $expr;
- }
-}
-
-# oxime -- any of various compounds obtained chiefly by the action of
-# hydroxylamine on aldehydes and ketones and characterized by the
-# bivalent grouping C=NOH [Webster's Tenth]
-
-my %substwords;
-map($substwords{join "", sort split //, $_} = $_, 'ego', 'egoism', 'em',
- 'es', 'ex', 'exes', 'gee', 'go', 'goes', 'ie', 'ism', 'iso', 'me',
- 'meese', 'meso', 'mig', 'mix', 'os', 'ox', 'oxime', 'see', 'seem',
- 'seg', 'sex', 'sig', 'six', 'smog', 'sog', 'some', 'xi');
-
-sub pp_subst {
- my $self = shift;
- my($op, $cx) = @_;
- my $kid = $op->first;
- my($binop, $var, $re, $repl) = ("", "", "", "");
- if ($op->flags & OPf_STACKED) {
- $binop = 1;
- $var = $self->deparse($kid, 20);
- $kid = $kid->sibling;
- }
- my $flags = "";
- if (null($op->pmreplroot)) {
- $repl = $self->dq($kid);
- $kid = $kid->sibling;
- } else {
- $repl = $op->pmreplroot->first; # skip substcont
- while ($repl->name eq "entereval") {
- $repl = $repl->first;
- $flags .= "e";
- }
- if ($op->pmflags & PMf_EVAL) {
- $repl = $self->deparse($repl->first, 0);
- } else {
- $repl = $self->dq($repl);
- }
- }
- my $extended = ($op->pmflags & PMf_EXTENDED);
- if (null $kid) {
- my $unbacked = re_unback($op->precomp);
- if ($extended) {
- $re = re_uninterp_extended(escape_extended_re($unbacked));
- }
- else {
- $re = re_uninterp(escape_str($unbacked));
- }
- } else {
- ($re) = $self->regcomp($kid, 1, $extended);
- }
- $flags .= "e" if $op->pmflags & PMf_EVAL;
- $flags .= "g" if $op->pmflags & PMf_GLOBAL;
- $flags .= "i" if $op->pmflags & PMf_FOLD;
- $flags .= "m" if $op->pmflags & PMf_MULTILINE;
- $flags .= "o" if $op->pmflags & PMf_KEEP;
- $flags .= "s" if $op->pmflags & PMf_SINGLELINE;
- $flags .= "x" if $extended;
- $flags = $substwords{$flags} if $substwords{$flags};
- if ($binop) {
- return $self->maybe_parens("$var =~ s"
- . double_delim($re, $repl) . $flags,
- $cx, 20);
- } else {
- return "s". double_delim($re, $repl) . $flags;
- }
-}
-
-1;
-__END__
-
-=head1 NAME
-
-B::Deparse - Perl compiler backend to produce perl code
-
-=head1 SYNOPSIS
-
-B<perl> B<-MO=Deparse>[B<,-d>][B<,-f>I<FILE>][B<,-p>][B<,-q>][B<,-l>]
- [B<,-s>I<LETTERS>][B<,-x>I<LEVEL>] I<prog.pl>
-
-=head1 DESCRIPTION
-
-B::Deparse is a backend module for the Perl compiler that generates
-perl source code, based on the internal compiled structure that perl
-itself creates after parsing a program. The output of B::Deparse won't
-be exactly the same as the original source, since perl doesn't keep
-track of comments or whitespace, and there isn't a one-to-one
-correspondence between perl's syntactical constructions and their
-compiled form, but it will often be close. When you use the B<-p>
-option, the output also includes parentheses even when they are not
-required by precedence, which can make it easy to see if perl is
-parsing your expressions the way you intended.
-
-While B::Deparse goes to some lengths to try to figure out what your
-original program was doing, some parts of the language can still trip
-it up; it still fails even on some parts of Perl's own test suite. If
-you encounter a failure other than the most common ones described in
-the BUGS section below, you can help contribute to B::Deparse's
-ongoing development by submitting a bug report with a small
-example.
-
-=head1 OPTIONS
-
-As with all compiler backend options, these must follow directly after
-the '-MO=Deparse', separated by a comma but not any white space.
-
-=over 4
-
-=item B<-d>
-
-Output data values (when they appear as constants) using Data::Dumper.
-Without this option, B::Deparse will use some simple routines of its
-own for the same purpose. Currently, Data::Dumper is better for some
-kinds of data (such as complex structures with sharing and
-self-reference) while the built-in routines are better for others
-(such as odd floating-point values).
-
-=item B<-f>I<FILE>
-
-Normally, B::Deparse deparses the main code of a program, and all the subs
-defined in the same file. To include subs defined in other files, pass the
-B<-f> option with the filename. You can pass the B<-f> option several times, to
-include more than one secondary file. (Most of the time you don't want to
-use it at all.) You can also use this option to include subs which are
-defined in the scope of a B<#line> directive with two parameters.
-
-=item B<-l>
-
-Add '#line' declarations to the output based on the line and file
-locations of the original code.
-
-=item B<-p>
-
-Print extra parentheses. Without this option, B::Deparse includes
-parentheses in its output only when they are needed, based on the
-structure of your program. With B<-p>, it uses parentheses (almost)
-whenever they would be legal. This can be useful if you are used to
-LISP, or if you want to see how perl parses your input. If you say
-
- if ($var & 0x7f == 65) {print "Gimme an A!"}
- print ($which ? $a : $b), "\n";
- $name = $ENV{USER} or "Bob";
-
-C<B::Deparse,-p> will print
-
- if (($var & 0)) {
- print('Gimme an A!')
- };
- (print(($which ? $a : $b)), '???');
- (($name = $ENV{'USER'}) or '???')
-
-which probably isn't what you intended (the C<'???'> is a sign that
-perl optimized away a constant value).
-
-=item B<-P>
-
-Disable prototype checking. With this option, all function calls are
-deparsed as if no prototype was defined for them. In other words,
-
- perl -MO=Deparse,-P -e 'sub foo (\@) { 1 } foo @x'
-
-will print
-
- sub foo (\@) {
- 1;
- }
- &foo(\@x);
-
-making clear how the parameters are actually passed to C<foo>.
-
-=item B<-q>
-
-Expand double-quoted strings into the corresponding combinations of
-concatenation, uc, ucfirst, lc, lcfirst, quotemeta, and join. For
-instance, print
-
- print "Hello, $world, @ladies, \u$gentlemen\E, \u\L$me!";
-
-as
-
- print 'Hello, ' . $world . ', ' . join($", @ladies) . ', '
- . ucfirst($gentlemen) . ', ' . ucfirst(lc $me . '!');
-
-Note that the expanded form represents the way perl handles such
-constructions internally -- this option actually turns off the reverse
-translation that B::Deparse usually does. On the other hand, note that
-C<$x = "$y"> is not the same as C<$x = $y>: the former makes the value
-of $y into a string before doing the assignment.
-
-=item B<-s>I<LETTERS>
-
-Tweak the style of B::Deparse's output. The letters should follow
-directly after the 's', with no space or punctuation. The following
-options are available:
-
-=over 4
-
-=item B<C>
-
-Cuddle C<elsif>, C<else>, and C<continue> blocks. For example, print
-
- if (...) {
- ...
- } else {
- ...
- }
-
-instead of
-
- if (...) {
- ...
- }
- else {
- ...
- }
-
-The default is not to cuddle.
-
-=item B<i>I<NUMBER>
-
-Indent lines by multiples of I<NUMBER> columns. The default is 4 columns.
-
-=item B<T>
-
-Use tabs for each 8 columns of indent. The default is to use only spaces.
-For instance, if the style options are B<-si4T>, a line that's indented
-3 times will be preceded by one tab and four spaces; if the options were
-B<-si8T>, the same line would be preceded by three tabs.
-
-=item B<v>I<STRING>B<.>
-
-Print I<STRING> for the value of a constant that can't be determined
-because it was optimized away (mnemonic: this happens when a constant
-is used in B<v>oid context). The end of the string is marked by a period.
-The string should be a valid perl expression, generally a constant.
-Note that unless it's a number, it probably needs to be quoted, and on
-a command line quotes need to be protected from the shell. Some
-conventional values include 0, 1, 42, '', 'foo', and
-'Useless use of constant omitted' (which may need to be
-B<-sv"'Useless use of constant omitted'.">
-or something similar depending on your shell). The default is '???'.
-If you're using B::Deparse on a module or other file that's require'd,
-you shouldn't use a value that evaluates to false, since the customary
-true constant at the end of a module will be in void context when the
-file is compiled as a main program.
-
-=back
-
-=item B<-x>I<LEVEL>
-
-Expand conventional syntax constructions into equivalent ones that expose
-their internal operation. I<LEVEL> should be a digit, with higher values
-meaning more expansion. As with B<-q>, this actually involves turning off
-special cases in B::Deparse's normal operations.
-
-If I<LEVEL> is at least 3, C<for> loops will be translated into equivalent
-while loops with continue blocks; for instance
-
- for ($i = 0; $i < 10; ++$i) {
- print $i;
- }
-
-turns into
-
- $i = 0;
- while ($i < 10) {
- print $i;
- } continue {
- ++$i
- }
-
-Note that in a few cases this translation can't be perfectly carried back
-into the source code -- if the loop's initializer declares a my variable,
-for instance, it won't have the correct scope outside of the loop.
-
-If I<LEVEL> is at least 5, C<use> declarations will be translated into
-C<BEGIN> blocks containing calls to C<require> and C<import>; for
-instance,
-
- use strict 'refs';
-
-turns into
-
- sub BEGIN {
- require strict;
- do {
- 'strict'->import('refs')
- };
- }
-
-If I<LEVEL> is at least 7, C<if> statements will be translated into
-equivalent expressions using C<&&>, C<?:> and C<do {}>; for instance
-
- print 'hi' if $nice;
- if ($nice) {
- print 'hi';
- }
- if ($nice) {
- print 'hi';
- } else {
- print 'bye';
- }
-
-turns into
-
- $nice and print 'hi';
- $nice and do { print 'hi' };
- $nice ? do { print 'hi' } : do { print 'bye' };
-
-Long sequences of elsifs will turn into nested ternary operators, which
-B::Deparse doesn't know how to indent nicely.
-
-=back
-
-=head1 USING B::Deparse AS A MODULE
-
-=head2 Synopsis
-
- use B::Deparse;
- $deparse = B::Deparse->new("-p", "-sC");
- $body = $deparse->coderef2text(\&func);
- eval "sub func $body"; # the inverse operation
-
-=head2 Description
-
-B::Deparse can also be used on a sub-by-sub basis from other perl
-programs.
-
-=head2 new
-
- $deparse = B::Deparse->new(OPTIONS)
-
-Create an object to store the state of a deparsing operation and any
-options. The options are the same as those that can be given on the
-command line (see L</OPTIONS>); options that are separated by commas
-after B<-MO=Deparse> should be given as separate strings. Some
-options, like B<-u>, don't make sense for a single subroutine, so
-don't pass them.
-
-=head2 ambient_pragmas
-
- $deparse->ambient_pragmas(strict => 'all', '$[' => $[);
-
-The compilation of a subroutine can be affected by a few compiler
-directives, B<pragmas>. These are:
-
-=over 4
-
-=item *
-
-use strict;
-
-=item *
-
-use warnings;
-
-=item *
-
-Assigning to the special variable $[
-
-=item *
-
-use integer;
-
-=item *
-
-use bytes;
-
-=item *
-
-use utf8;
-
-=item *
-
-use re;
-
-=back
-
-Ordinarily, if you use B::Deparse on a subroutine which has
-been compiled in the presence of one or more of these pragmas,
-the output will include statements to turn on the appropriate
-directives. So if you then compile the code returned by coderef2text,
-it will behave the same way as the subroutine which you deparsed.
-
-However, you may know that you intend to use the results in a
-particular context, where some pragmas are already in scope. In
-this case, you use the B<ambient_pragmas> method to describe the
-assumptions you wish to make.
-
-Not all of the options currently have any useful effect. See
-L</BUGS> for more details.
-
-The parameters it accepts are:
-
-=over 4
-
-=item strict
-
-Takes a string, possibly containing several values separated
-by whitespace. The special values "all" and "none" mean what you'd
-expect.
-
- $deparse->ambient_pragmas(strict => 'subs refs');
-
-=item $[
-
-Takes a number, the value of the array base $[.
-
-=item bytes
-
-=item utf8
-
-=item integer
-
-If the value is true, then the appropriate pragma is assumed to
-be in the ambient scope, otherwise not.
-
-=item re
-
-Takes a string, possibly containing a whitespace-separated list of
-values. The values "all" and "none" are special. It's also permissible
-to pass an array reference here.
-
- $deparser->ambient_pragmas(re => 'eval');
-
-
-=item warnings
-
-Takes a string, possibly containing a whitespace-separated list of
-values. The values "all" and "none" are special, again. It's also
-permissible to pass an array reference here.
-
- $deparser->ambient_pragmas(warnings => [qw[void io]]);
-
-If one of the values is the string "FATAL", then all the warnings
-in that list will be considered fatal, just as with the B<warnings>
-pragma itself. Should you need to specify that some warnings are
-fatal, and others are merely enabled, you can pass the B<warnings>
-parameter twice:
-
- $deparser->ambient_pragmas(
- warnings => 'all',
- warnings => [FATAL => qw/void io/],
- );
-
-See L<perllexwarn> for more information about lexical warnings.
-
-=item hint_bits
-
-=item warning_bits
-
-These two parameters are used to specify the ambient pragmas in
-the format used by the special variables $^H and ${^WARNING_BITS}.
-
-They exist principally so that you can write code like:
-
- { my ($hint_bits, $warning_bits);
- BEGIN {($hint_bits, $warning_bits) = ($^H, ${^WARNING_BITS})}
- $deparser->ambient_pragmas (
- hint_bits => $hint_bits,
- warning_bits => $warning_bits,
- '$[' => 0 + $[
- ); }
-
-which specifies that the ambient pragmas are exactly those which
-are in scope at the point of calling.
-
-=back
-
-=head2 coderef2text
-
- $body = $deparse->coderef2text(\&func)
- $body = $deparse->coderef2text(sub ($$) { ... })
-
-Return source code for the body of a subroutine (a block, optionally
-preceded by a prototype in parens), given a reference to the
-sub. Because a subroutine can have no names, or more than one name,
-this method doesn't return a complete subroutine definition -- if you
-want to eval the result, you should prepend "sub subname ", or "sub "
-for an anonymous function constructor. Unless the sub was defined in
-the main:: package, the code will include a package declaration.
-
-=head1 BUGS
-
-=over 4
-
-=item *
-
-The only pragmas to be completely supported are: C<use warnings>,
-C<use strict 'refs'>, C<use bytes>, and C<use integer>. (C<$[>, which
-behaves like a pragma, is also supported.)
-
-Excepting those listed above, we're currently unable to guarantee that
-B::Deparse will produce a pragma at the correct point in the program.
-(Specifically, pragmas at the beginning of a block often appear right
-before the start of the block instead.)
-Since the effects of pragmas are often lexically scoped, this can mean
-that the pragma holds sway over a different portion of the program
-than in the input file.
-
-=item *
-
-In fact, the above is a specific instance of a more general problem:
-we can't guarantee to produce BEGIN blocks or C<use> declarations in
-exactly the right place. So if you use a module which affects compilation
-(such as by over-riding keywords, overloading constants or whatever)
-then the output code might not work as intended.
-
-This is the most serious outstanding problem, and will require some help
-from the Perl core to fix.
-
-=item *
-
-If a keyword is over-ridden, and your program explicitly calls
-the built-in version by using CORE::keyword, the output of B::Deparse
-will not reflect this. If you run the resulting code, it will call
-the over-ridden version rather than the built-in one. (Maybe there
-should be an option to B<always> print keyword calls as C<CORE::name>.)
-
-=item *
-
-Some constants don't print correctly either with or without B<-d>.
-For instance, neither B::Deparse nor Data::Dumper know how to print
-dual-valued scalars correctly, as in:
-
- use constant E2BIG => ($!=7); $y = E2BIG; print $y, 0+$y;
-
-=item *
-
-An input file that uses source filtering probably won't be deparsed into
-runnable code, because it will still include the B<use> declaration
-for the source filtering module, even though the code that is
-produced is already ordinary Perl which shouldn't be filtered again.
-
-=item *
-
-Optimised away statements are rendered as '???'. This includes statements that
-have a compile-time side-effect, such as the obscure
-
- my $x if 0;
-
-which is not, consequently, deparsed correctly.
-
-=item *
-
-There are probably many more bugs on non-ASCII platforms (EBCDIC).
-
-=back
-
-=head1 AUTHOR
-
-Stephen McCamant <smcc@CSUA.Berkeley.EDU>, based on an earlier version
-by Malcolm Beattie <mbeattie@sable.ox.ac.uk>, with contributions from
-Gisle Aas, James Duncan, Albert Dvornik, Robin Houston, Dave Mitchell,
-Hugo van der Sanden, Gurusamy Sarathy, Nick Ing-Simmons, and Rafael
-Garcia-Suarez.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/B/Disassembler.pm b/Master/tlpkg/tlperl/lib/B/Disassembler.pm
deleted file mode 100644
index e1993aa9537..00000000000
--- a/Master/tlpkg/tlperl/lib/B/Disassembler.pm
+++ /dev/null
@@ -1,233 +0,0 @@
-# Disassembler.pm
-#
-# Copyright (c) 1996 Malcolm Beattie
-#
-# You may distribute under the terms of either the GNU General Public
-# License or the Artistic License, as specified in the README file.
-
-$B::Disassembler::VERSION = '1.05';
-
-package B::Disassembler::BytecodeStream;
-
-use FileHandle;
-use Carp;
-use Config qw(%Config);
-use B qw(cstring cast_I32);
-@ISA = qw(FileHandle);
-sub readn {
- my ($fh, $len) = @_;
- my $data;
- read($fh, $data, $len);
- croak "reached EOF while reading $len bytes" unless length($data) == $len;
- return $data;
-}
-
-sub GET_U8 {
- my $fh = shift;
- my $c = $fh->getc;
- croak "reached EOF while reading U8" unless defined($c);
- return ord($c);
-}
-
-sub GET_U16 {
- my $fh = shift;
- my $str = $fh->readn(2);
- croak "reached EOF while reading U16" unless length($str) == 2;
- return unpack("S", $str);
-}
-
-sub GET_NV {
- my $fh = shift;
- my ($str, $c);
- while (defined($c = $fh->getc) && $c ne "\0") {
- $str .= $c;
- }
- croak "reached EOF while reading double" unless defined($c);
- return $str;
-}
-
-sub GET_U32 {
- my $fh = shift;
- my $str = $fh->readn(4);
- croak "reached EOF while reading U32" unless length($str) == 4;
- return unpack("L", $str);
-}
-
-sub GET_I32 {
- my $fh = shift;
- my $str = $fh->readn(4);
- croak "reached EOF while reading I32" unless length($str) == 4;
- return unpack("l", $str);
-}
-
-sub GET_objindex {
- my $fh = shift;
- my $str = $fh->readn(4);
- croak "reached EOF while reading objindex" unless length($str) == 4;
- return unpack("L", $str);
-}
-
-sub GET_opindex {
- my $fh = shift;
- my $str = $fh->readn(4);
- croak "reached EOF while reading opindex" unless length($str) == 4;
- return unpack("L", $str);
-}
-
-sub GET_svindex {
- my $fh = shift;
- my $str = $fh->readn(4);
- croak "reached EOF while reading svindex" unless length($str) == 4;
- return unpack("L", $str);
-}
-
-sub GET_pvindex {
- my $fh = shift;
- my $str = $fh->readn(4);
- croak "reached EOF while reading pvindex" unless length($str) == 4;
- return unpack("L", $str);
-}
-
-sub GET_strconst {
- my $fh = shift;
- my ($str, $c);
- $str = '';
- while (defined($c = $fh->getc) && $c ne "\0") {
- $str .= $c;
- }
- croak "reached EOF while reading strconst" unless defined($c);
- return cstring($str);
-}
-
-sub GET_pvcontents {}
-
-sub GET_PV {
- my $fh = shift;
- my $str;
- my $len = $fh->GET_U32;
- if ($len) {
- read($fh, $str, $len);
- croak "reached EOF while reading PV" unless length($str) == $len;
- return cstring($str);
- } else {
- return '""';
- }
-}
-
-sub GET_comment_t {
- my $fh = shift;
- my ($str, $c);
- while (defined($c = $fh->getc) && $c ne "\n") {
- $str .= $c;
- }
- croak "reached EOF while reading comment" unless defined($c);
- return cstring($str);
-}
-
-sub GET_double {
- my $fh = shift;
- my ($str, $c);
- while (defined($c = $fh->getc) && $c ne "\0") {
- $str .= $c;
- }
- croak "reached EOF while reading double" unless defined($c);
- return $str;
-}
-
-sub GET_none {}
-
-sub GET_op_tr_array {
- my $fh = shift;
- my $len = unpack "S", $fh->readn(2);
- my @ary = unpack "S*", $fh->readn($len*2);
- return join(",", $len, @ary);
-}
-
-sub GET_IV64 {
- my $fh = shift;
- my $str = $fh->readn(8);
- croak "reached EOF while reading I32" unless length($str) == 8;
- return sprintf "0x%09llx", unpack("q", $str);
-}
-
-sub GET_IV {
- $Config{ivsize} == 4 ? &GET_I32 : &GET_IV64;
-}
-
-sub GET_PADOFFSET {
- $Config{ptrsize} == 8 ? &GET_IV64 : &GET_U32;
-}
-
-sub GET_long {
- $Config{longsize} == 8 ? &GET_IV64 : &GET_U32;
-}
-
-
-package B::Disassembler;
-use Exporter;
-@ISA = qw(Exporter);
-@EXPORT_OK = qw(disassemble_fh get_header);
-use Carp;
-use strict;
-
-use B::Asmdata qw(%insn_data @insn_name);
-
-our( $magic, $archname, $blversion, $ivsize, $ptrsize );
-
-sub dis_header($){
- my( $fh ) = @_;
- $magic = $fh->GET_U32();
- warn( "bad magic" ) if $magic != 0x43424c50;
- $archname = $fh->GET_strconst();
- $blversion = $fh->GET_strconst();
- $ivsize = $fh->GET_U32();
- $ptrsize = $fh->GET_U32();
-}
-
-sub get_header(){
- return( $magic, $archname, $blversion, $ivsize, $ptrsize);
-}
-
-sub disassemble_fh {
- my ($fh, $out) = @_;
- my ($c, $getmeth, $insn, $arg);
- bless $fh, "B::Disassembler::BytecodeStream";
- dis_header( $fh );
- while (defined($c = $fh->getc)) {
- $c = ord($c);
- $insn = $insn_name[$c];
- if (!defined($insn) || $insn eq "unused") {
- my $pos = $fh->tell - 1;
- die "Illegal instruction code $c at stream offset $pos\n";
- }
- $getmeth = $insn_data{$insn}->[2];
- $arg = $fh->$getmeth();
- if (defined($arg)) {
- &$out($insn, $arg);
- } else {
- &$out($insn);
- }
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-B::Disassembler - Disassemble Perl bytecode
-
-=head1 SYNOPSIS
-
- use Disassembler;
-
-=head1 DESCRIPTION
-
-See F<ext/B/B/Disassembler.pm>.
-
-=head1 AUTHOR
-
-Malcolm Beattie, C<mbeattie@sable.ox.ac.uk>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/B/Lint.pm b/Master/tlpkg/tlperl/lib/B/Lint.pm
deleted file mode 100644
index 3475bd2596e..00000000000
--- a/Master/tlpkg/tlperl/lib/B/Lint.pm
+++ /dev/null
@@ -1,392 +0,0 @@
-package B::Lint;
-
-our $VERSION = '1.03';
-
-=head1 NAME
-
-B::Lint - Perl lint
-
-=head1 SYNOPSIS
-
-perl -MO=Lint[,OPTIONS] foo.pl
-
-=head1 DESCRIPTION
-
-The B::Lint module is equivalent to an extended version of the B<-w>
-option of B<perl>. It is named after the program F<lint> which carries
-out a similar process for C programs.
-
-=head1 OPTIONS AND LINT CHECKS
-
-Option words are separated by commas (not whitespace) and follow the
-usual conventions of compiler backend options. Following any options
-(indicated by a leading B<->) come lint check arguments. Each such
-argument (apart from the special B<all> and B<none> options) is a
-word representing one possible lint check (turning on that check) or
-is B<no-foo> (turning off that check). Before processing the check
-arguments, a standard list of checks is turned on. Later options
-override earlier ones. Available options are:
-
-=over 8
-
-=item B<context>
-
-Produces a warning whenever an array is used in an implicit scalar
-context. For example, both of the lines
-
- $foo = length(@bar);
- $foo = @bar;
-
-will elicit a warning. Using an explicit B<scalar()> silences the
-warning. For example,
-
- $foo = scalar(@bar);
-
-=item B<implicit-read> and B<implicit-write>
-
-These options produce a warning whenever an operation implicitly
-reads or (respectively) writes to one of Perl's special variables.
-For example, B<implicit-read> will warn about these:
-
- /foo/;
-
-and B<implicit-write> will warn about these:
-
- s/foo/bar/;
-
-Both B<implicit-read> and B<implicit-write> warn about this:
-
- for (@a) { ... }
-
-=item B<bare-subs>
-
-This option warns whenever a bareword is implicitly quoted, but is also
-the name of a subroutine in the current package. Typical mistakes that it will
-trap are:
-
- use constant foo => 'bar';
- @a = ( foo => 1 );
- $b{foo} = 2;
-
-Neither of these will do what a naive user would expect.
-
-=item B<dollar-underscore>
-
-This option warns whenever C<$_> is used either explicitly anywhere or
-as the implicit argument of a B<print> statement.
-
-=item B<private-names>
-
-This option warns on each use of any variable, subroutine or
-method name that lives in a non-current package but begins with
-an underscore ("_"). Warnings aren't issued for the special case
-of the single character name "_" by itself (e.g. C<$_> and C<@_>).
-
-=item B<undefined-subs>
-
-This option warns whenever an undefined subroutine is invoked.
-This option will only catch explicitly invoked subroutines such
-as C<foo()> and not indirect invocations such as C<&$subref()>
-or C<$obj-E<gt>meth()>. Note that some programs or modules delay
-definition of subs until runtime by means of the AUTOLOAD
-mechanism.
-
-=item B<regexp-variables>
-
-This option warns whenever one of the regexp variables C<$`>, C<$&> or C<$'>
-is used. Any occurrence of any of these variables in your
-program can slow your whole program down. See L<perlre> for
-details.
-
-=item B<all>
-
-Turn all warnings on.
-
-=item B<none>
-
-Turn all warnings off.
-
-=back
-
-=head1 NON LINT-CHECK OPTIONS
-
-=over 8
-
-=item B<-u Package>
-
-Normally, Lint only checks the main code of the program together
-with all subs defined in package main. The B<-u> option lets you
-include other package names whose subs are then checked by Lint.
-
-=back
-
-=head1 BUGS
-
-This is only a very preliminary version.
-
-This module doesn't work correctly on thread-enabled perls.
-
-=head1 AUTHOR
-
-Malcolm Beattie, mbeattie@sable.ox.ac.uk.
-
-=cut
-
-use strict;
-use B qw(walkoptree_slow main_root walksymtable svref_2object parents
- OPf_WANT_LIST OPf_WANT OPf_STACKED G_ARRAY SVf_POK
- );
-
-my $file = "unknown"; # shadows current filename
-my $line = 0; # shadows current line number
-my $curstash = "main"; # shadows current stash
-
-# Lint checks
-my %check;
-my %implies_ok_context;
-BEGIN {
- map($implies_ok_context{$_}++,
- qw(scalar av2arylen aelem aslice helem hslice
- keys values hslice defined undef delete));
-}
-
-# Lint checks turned on by default
-my @default_checks = qw(context);
-
-my %valid_check;
-# All valid checks
-BEGIN {
- map($valid_check{$_}++,
- qw(context implicit_read implicit_write dollar_underscore
- private_names bare_subs undefined_subs regexp_variables));
-}
-
-# Debugging options
-my ($debug_op);
-
-my %done_cv; # used to mark which subs have already been linted
-my @extra_packages; # Lint checks mainline code and all subs which are
- # in main:: or in one of these packages.
-
-sub warning {
- my $format = (@_ < 2) ? "%s" : shift;
- warn sprintf("$format at %s line %d\n", @_, $file, $line);
-}
-
-# This gimme can't cope with context that's only determined
-# at runtime via dowantarray().
-sub gimme {
- my $op = shift;
- my $flags = $op->flags;
- if ($flags & OPf_WANT) {
- return(($flags & OPf_WANT) == OPf_WANT_LIST ? 1 : 0);
- }
- return undef;
-}
-
-sub B::OP::lint {}
-
-sub B::COP::lint {
- my $op = shift;
- if ($op->name eq "nextstate") {
- $file = $op->file;
- $line = $op->line;
- $curstash = $op->stash->NAME;
- }
-}
-
-sub B::UNOP::lint {
- my $op = shift;
- my $opname = $op->name;
- if ($check{context} && ($opname eq "rv2av" || $opname eq "rv2hv")) {
- my $parent = parents->[0];
- my $pname = $parent->name;
- return if gimme($op) || $implies_ok_context{$pname};
- # Two special cases to deal with: "foreach (@foo)" and "delete $a{$b}"
- # null out the parent so we have to check for a parent of pp_null and
- # a grandparent of pp_enteriter or pp_delete
- if ($pname eq "null") {
- my $gpname = parents->[1]->name;
- return if $gpname eq "enteriter" || $gpname eq "delete";
- }
- warning("Implicit scalar context for %s in %s",
- $opname eq "rv2av" ? "array" : "hash", $parent->desc);
- }
- if ($check{private_names} && $opname eq "method") {
- my $methop = $op->first;
- if ($methop->name eq "const") {
- my $method = $methop->sv->PV;
- if ($method =~ /^_/ && !defined(&{"$curstash\::$method"})) {
- warning("Illegal reference to private method name $method");
- }
- }
- }
-}
-
-sub B::PMOP::lint {
- my $op = shift;
- if ($check{implicit_read}) {
- if ($op->name eq "match" && !($op->flags & OPf_STACKED)) {
- warning('Implicit match on $_');
- }
- }
- if ($check{implicit_write}) {
- if ($op->name eq "subst" && !($op->flags & OPf_STACKED)) {
- warning('Implicit substitution on $_');
- }
- }
-}
-
-sub B::LOOP::lint {
- my $op = shift;
- if ($check{implicit_read} || $check{implicit_write}) {
- if ($op->name eq "enteriter") {
- my $last = $op->last;
- if ($last->name eq "gv" && $last->gv->NAME eq "_") {
- warning('Implicit use of $_ in foreach');
- }
- }
- }
-}
-
-sub B::SVOP::lint {
- my $op = shift;
- if ( $check{bare_subs} && $op->name eq 'const'
- && $op->private & 64 ) # OPpCONST_BARE = 64 in op.h
- {
- my $sv = $op->sv;
- if( $sv->FLAGS & SVf_POK && exists &{$curstash.'::'.$sv->PV} ) {
- warning "Bare sub name '" . $sv->PV . "' interpreted as string";
- }
- }
- if ($check{dollar_underscore} && $op->name eq "gvsv"
- && $op->gv->NAME eq "_")
- {
- warning('Use of $_');
- }
- if ($check{private_names}) {
- my $opname = $op->name;
- if ($opname eq "gv" || $opname eq "gvsv") {
- my $gv = $op->gv;
- if ($gv->NAME =~ /^_./ && $gv->STASH->NAME ne $curstash) {
- warning('Illegal reference to private name %s', $gv->NAME);
- }
- } elsif ($opname eq "method_named") {
- my $method = $op->gv->PV;
- if ($method =~ /^_./) {
- warning("Illegal reference to private method name $method");
- }
- }
- }
- if ($check{undefined_subs}) {
- if ($op->name eq "gv"
- && $op->next->name eq "entersub")
- {
- my $gv = $op->gv;
- my $subname = $gv->STASH->NAME . "::" . $gv->NAME;
- no strict 'refs';
- if (!defined(&$subname)) {
- $subname =~ s/^main:://;
- warning('Undefined subroutine %s called', $subname);
- }
- }
- }
- if ($check{regexp_variables} && $op->name eq "gvsv") {
- my $name = $op->gv->NAME;
- if ($name =~ /^[&'`]$/) {
- warning('Use of regexp variable $%s', $name);
- }
- }
-}
-
-sub B::GV::lintcv {
- my $gv = shift;
- my $cv = $gv->CV;
- #warn sprintf("lintcv: %s::%s (done=%d)\n",
- # $gv->STASH->NAME, $gv->NAME, $done_cv{$$cv});#debug
- return if !$$cv || $done_cv{$$cv}++;
- my $root = $cv->ROOT;
- #warn " root = $root (0x$$root)\n";#debug
- walkoptree_slow($root, "lint") if $$root;
-}
-
-sub do_lint {
- my %search_pack;
- walkoptree_slow(main_root, "lint") if ${main_root()};
-
- # Now do subs in main
- no strict qw(vars refs);
- local(*glob);
- for my $sym (keys %main::) {
- next if $sym =~ /::$/;
- *glob = $main::{$sym};
- svref_2object(\*glob)->EGV->lintcv;
- }
-
- # Now do subs in non-main packages given by -u options
- map { $search_pack{$_} = 1 } @extra_packages;
- walksymtable(\%{"main::"}, "lintcv", sub {
- my $package = shift;
- $package =~ s/::$//;
- #warn "Considering $package\n";#debug
- return exists $search_pack{$package};
- });
-}
-
-sub compile {
- my @options = @_;
- my ($option, $opt, $arg);
- # Turn on default lint checks
- for $opt (@default_checks) {
- $check{$opt} = 1;
- }
- OPTION:
- while ($option = shift @options) {
- if ($option =~ /^-(.)(.*)/) {
- $opt = $1;
- $arg = $2;
- } else {
- unshift @options, $option;
- last OPTION;
- }
- if ($opt eq "-" && $arg eq "-") {
- shift @options;
- last OPTION;
- } elsif ($opt eq "D") {
- $arg ||= shift @options;
- foreach $arg (split(//, $arg)) {
- if ($arg eq "o") {
- B->debug(1);
- } elsif ($arg eq "O") {
- $debug_op = 1;
- }
- }
- } elsif ($opt eq "u") {
- $arg ||= shift @options;
- push(@extra_packages, $arg);
- }
- }
- foreach $opt (@default_checks, @options) {
- $opt =~ tr/-/_/;
- if ($opt eq "all") {
- %check = %valid_check;
- }
- elsif ($opt eq "none") {
- %check = ();
- }
- else {
- if ($opt =~ s/^no_//) {
- $check{$opt} = 0;
- }
- else {
- $check{$opt} = 1;
- }
- warn "No such check: $opt\n" unless defined $valid_check{$opt};
- }
- }
- # Remaining arguments are things to check
-
- return \&do_lint;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/B/Showlex.pm b/Master/tlpkg/tlperl/lib/B/Showlex.pm
deleted file mode 100644
index 3b261a337df..00000000000
--- a/Master/tlpkg/tlperl/lib/B/Showlex.pm
+++ /dev/null
@@ -1,205 +0,0 @@
-package B::Showlex;
-
-our $VERSION = '1.02';
-
-use strict;
-use B qw(svref_2object comppadlist class);
-use B::Terse ();
-use B::Concise ();
-
-#
-# Invoke as
-# perl -MO=Showlex,foo bar.pl
-# to see the names of lexical variables used by &foo
-# or as
-# perl -MO=Showlex bar.pl
-# to see the names of file scope lexicals used by bar.pl
-#
-
-
-# borrowed from B::Concise
-our $walkHandle = \*STDOUT;
-
-sub walk_output { # updates $walkHandle
- $walkHandle = B::Concise::walk_output(@_);
- #print "got $walkHandle";
- #print $walkHandle "using it";
- $walkHandle;
-}
-
-sub shownamearray {
- my ($name, $av) = @_;
- my @els = $av->ARRAY;
- my $count = @els;
- my $i;
- print $walkHandle "$name has $count entries\n";
- for ($i = 0; $i < $count; $i++) {
- my $sv = $els[$i];
- if (class($sv) ne "SPECIAL") {
- printf $walkHandle "$i: %s (0x%lx) %s\n", class($sv), $$sv, $sv->PVX;
- } else {
- printf $walkHandle "$i: %s\n", $sv->terse;
- #printf $walkHandle "$i: %s\n", B::Concise::concise_sv($sv);
- }
- }
-}
-
-sub showvaluearray {
- my ($name, $av) = @_;
- my @els = $av->ARRAY;
- my $count = @els;
- my $i;
- print $walkHandle "$name has $count entries\n";
- for ($i = 0; $i < $count; $i++) {
- printf $walkHandle "$i: %s\n", $els[$i]->terse;
- #print $walkHandle "$i: %s\n", B::Concise::concise_sv($els[$i]);
- }
-}
-
-sub showlex {
- my ($objname, $namesav, $valsav) = @_;
- shownamearray("Pad of lexical names for $objname", $namesav);
- showvaluearray("Pad of lexical values for $objname", $valsav);
-}
-
-my ($newlex, $nosp1); # rendering state vars
-
-sub newlex { # drop-in for showlex
- my ($objname, $names, $vals) = @_;
- my @names = $names->ARRAY;
- my @vals = $vals->ARRAY;
- my $count = @names;
- print $walkHandle "$objname Pad has $count entries\n";
- printf $walkHandle "0: %s\n", $names[0]->terse unless $nosp1;
- for (my $i = 1; $i < $count; $i++) {
- printf $walkHandle "$i: %s = %s\n", $names[$i]->terse, $vals[$i]->terse
- unless $nosp1 and $names[$i]->terse =~ /SPECIAL/;
- }
-}
-
-sub showlex_obj {
- my ($objname, $obj) = @_;
- $objname =~ s/^&main::/&/;
- showlex($objname, svref_2object($obj)->PADLIST->ARRAY) if !$newlex;
- newlex ($objname, svref_2object($obj)->PADLIST->ARRAY) if $newlex;
-}
-
-sub showlex_main {
- showlex("comppadlist", comppadlist->ARRAY) if !$newlex;
- newlex ("main", comppadlist->ARRAY) if $newlex;
-}
-
-sub compile {
- my @options = grep(/^-/, @_);
- my @args = grep(!/^-/, @_);
- for my $o (@options) {
- $newlex = 1 if $o eq "-newlex";
- $nosp1 = 1 if $o eq "-nosp";
- }
-
- return \&showlex_main unless @args;
- return sub {
- my $objref;
- foreach my $objname (@args) {
- next unless $objname; # skip nulls w/o carping
-
- if (ref $objname) {
- print $walkHandle "B::Showlex::compile($objname)\n";
- $objref = $objname;
- } else {
- $objname = "main::$objname" unless $objname =~ /::/;
- print $walkHandle "$objname:\n";
- no strict 'refs';
- die "err: unknown function ($objname)\n"
- unless *{$objname}{CODE};
- $objref = \&$objname;
- }
- showlex_obj($objname, $objref);
- }
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-B::Showlex - Show lexical variables used in functions or files
-
-=head1 SYNOPSIS
-
- perl -MO=Showlex[,-OPTIONS][,SUBROUTINE] foo.pl
-
-=head1 DESCRIPTION
-
-When a comma-separated list of subroutine names is given as options, Showlex
-prints the lexical variables used in those subroutines. Otherwise, it prints
-the file-scope lexicals in the file.
-
-=head1 EXAMPLES
-
-Traditional form:
-
- $ perl -MO=Showlex -e 'my ($i,$j,$k)=(1,"foo")'
- Pad of lexical names for comppadlist has 4 entries
- 0: SPECIAL #1 &PL_sv_undef
- 1: PVNV (0x9db0fb0) $i
- 2: PVNV (0x9db0f38) $j
- 3: PVNV (0x9db0f50) $k
- Pad of lexical values for comppadlist has 5 entries
- 0: SPECIAL #1 &PL_sv_undef
- 1: NULL (0x9da4234)
- 2: NULL (0x9db0f2c)
- 3: NULL (0x9db0f44)
- 4: NULL (0x9da4264)
- -e syntax OK
-
-New-style form:
-
- $ perl -MO=Showlex,-newlex -e 'my ($i,$j,$k)=(1,"foo")'
- main Pad has 4 entries
- 0: SPECIAL #1 &PL_sv_undef
- 1: PVNV (0xa0c4fb8) "$i" = NULL (0xa0b8234)
- 2: PVNV (0xa0c4f40) "$j" = NULL (0xa0c4f34)
- 3: PVNV (0xa0c4f58) "$k" = NULL (0xa0c4f4c)
- -e syntax OK
-
-New form, no specials, outside O framework:
-
- $ perl -MB::Showlex -e \
- 'my ($i,$j,$k)=(1,"foo"); B::Showlex::compile(-newlex,-nosp)->()'
- main Pad has 4 entries
- 1: PVNV (0x998ffb0) "$i" = IV (0x9983234) 1
- 2: PVNV (0x998ff68) "$j" = PV (0x998ff5c) "foo"
- 3: PVNV (0x998ff80) "$k" = NULL (0x998ff74)
-
-Note that this example shows the values of the lexicals, whereas the other
-examples did not (as they're compile-time only).
-
-=head2 OPTIONS
-
-The C<-newlex> option produces a more readable C<< name => value >> format,
-and is shown in the second example above.
-
-The C<-nosp> option eliminates reporting of SPECIALs, such as C<0: SPECIAL
-#1 &PL_sv_undef> above. Reporting of SPECIALs can sometimes overwhelm
-your declared lexicals.
-
-=head1 SEE ALSO
-
-C<B::Showlex> can also be used outside of the O framework, as in the third
-example. See C<B::Concise> for a fuller explanation of reasons.
-
-=head1 TODO
-
-Some of the reported info, such as hex addresses, is not particularly
-valuable. Other information would be more useful for the typical
-programmer, such as line-numbers, pad-slot reuses, etc.. Given this,
--newlex isnt a particularly good flag-name.
-
-=head1 AUTHOR
-
-Malcolm Beattie, C<mbeattie@sable.ox.ac.uk>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/B/Stackobj.pm b/Master/tlpkg/tlperl/lib/B/Stackobj.pm
deleted file mode 100644
index b17dfb8173a..00000000000
--- a/Master/tlpkg/tlperl/lib/B/Stackobj.pm
+++ /dev/null
@@ -1,349 +0,0 @@
-# Stackobj.pm
-#
-# Copyright (c) 1996 Malcolm Beattie
-#
-# You may distribute under the terms of either the GNU General Public
-# License or the Artistic License, as specified in the README file.
-#
-package B::Stackobj;
-
-our $VERSION = '1.00';
-
-use Exporter ();
-@ISA = qw(Exporter);
-@EXPORT_OK = qw(set_callback T_UNKNOWN T_DOUBLE T_INT VALID_UNSIGNED
- VALID_INT VALID_DOUBLE VALID_SV REGISTER TEMPORARY);
-%EXPORT_TAGS = (types => [qw(T_UNKNOWN T_DOUBLE T_INT)],
- flags => [qw(VALID_INT VALID_DOUBLE VALID_SV
- VALID_UNSIGNED REGISTER TEMPORARY)]);
-
-use Carp qw(confess);
-use strict;
-use B qw(class SVf_IOK SVf_NOK SVf_IVisUV);
-
-# Types
-sub T_UNKNOWN () { 0 }
-sub T_DOUBLE () { 1 }
-sub T_INT () { 2 }
-sub T_SPECIAL () { 3 }
-
-# Flags
-sub VALID_INT () { 0x01 }
-sub VALID_UNSIGNED () { 0x02 }
-sub VALID_DOUBLE () { 0x04 }
-sub VALID_SV () { 0x08 }
-sub REGISTER () { 0x10 } # no implicit write-back when calling subs
-sub TEMPORARY () { 0x20 } # no implicit write-back needed at all
-sub SAVE_INT () { 0x40 } #if int part needs to be saved at all
-sub SAVE_DOUBLE () { 0x80 } #if double part needs to be saved at all
-
-
-#
-# Callback for runtime code generation
-#
-my $runtime_callback = sub { confess "set_callback not yet called" };
-sub set_callback (&) { $runtime_callback = shift }
-sub runtime { &$runtime_callback(@_) }
-
-#
-# Methods
-#
-
-sub write_back { confess "stack object does not implement write_back" }
-
-sub invalidate { shift->{flags} &= ~(VALID_INT |VALID_UNSIGNED | VALID_DOUBLE) }
-
-sub as_sv {
- my $obj = shift;
- if (!($obj->{flags} & VALID_SV)) {
- $obj->write_back;
- $obj->{flags} |= VALID_SV;
- }
- return $obj->{sv};
-}
-
-sub as_int {
- my $obj = shift;
- if (!($obj->{flags} & VALID_INT)) {
- $obj->load_int;
- $obj->{flags} |= VALID_INT|SAVE_INT;
- }
- return $obj->{iv};
-}
-
-sub as_double {
- my $obj = shift;
- if (!($obj->{flags} & VALID_DOUBLE)) {
- $obj->load_double;
- $obj->{flags} |= VALID_DOUBLE|SAVE_DOUBLE;
- }
- return $obj->{nv};
-}
-
-sub as_numeric {
- my $obj = shift;
- return $obj->{type} == T_INT ? $obj->as_int : $obj->as_double;
-}
-
-sub as_bool {
- my $obj=shift;
- if ($obj->{flags} & VALID_INT ){
- return $obj->{iv};
- }
- if ($obj->{flags} & VALID_DOUBLE ){
- return $obj->{nv};
- }
- return sprintf("(SvTRUE(%s))", $obj->as_sv) ;
-}
-
-#
-# Debugging methods
-#
-sub peek {
- my $obj = shift;
- my $type = $obj->{type};
- my $flags = $obj->{flags};
- my @flags;
- if ($type == T_UNKNOWN) {
- $type = "T_UNKNOWN";
- } elsif ($type == T_INT) {
- $type = "T_INT";
- } elsif ($type == T_DOUBLE) {
- $type = "T_DOUBLE";
- } else {
- $type = "(illegal type $type)";
- }
- push(@flags, "VALID_INT") if $flags & VALID_INT;
- push(@flags, "VALID_DOUBLE") if $flags & VALID_DOUBLE;
- push(@flags, "VALID_SV") if $flags & VALID_SV;
- push(@flags, "REGISTER") if $flags & REGISTER;
- push(@flags, "TEMPORARY") if $flags & TEMPORARY;
- @flags = ("none") unless @flags;
- return sprintf("%s type=$type flags=%s sv=$obj->{sv}",
- class($obj), join("|", @flags));
-}
-
-sub minipeek {
- my $obj = shift;
- my $type = $obj->{type};
- my $flags = $obj->{flags};
- if ($type == T_INT || $flags & VALID_INT) {
- return $obj->{iv};
- } elsif ($type == T_DOUBLE || $flags & VALID_DOUBLE) {
- return $obj->{nv};
- } else {
- return $obj->{sv};
- }
-}
-
-#
-# Caller needs to ensure that set_int, set_double,
-# set_numeric and set_sv are only invoked on legal lvalues.
-#
-sub set_int {
- my ($obj, $expr,$unsigned) = @_;
- runtime("$obj->{iv} = $expr;");
- $obj->{flags} &= ~(VALID_SV | VALID_DOUBLE);
- $obj->{flags} |= VALID_INT|SAVE_INT;
- $obj->{flags} |= VALID_UNSIGNED if $unsigned;
-}
-
-sub set_double {
- my ($obj, $expr) = @_;
- runtime("$obj->{nv} = $expr;");
- $obj->{flags} &= ~(VALID_SV | VALID_INT);
- $obj->{flags} |= VALID_DOUBLE|SAVE_DOUBLE;
-}
-
-sub set_numeric {
- my ($obj, $expr) = @_;
- if ($obj->{type} == T_INT) {
- $obj->set_int($expr);
- } else {
- $obj->set_double($expr);
- }
-}
-
-sub set_sv {
- my ($obj, $expr) = @_;
- runtime("SvSetSV($obj->{sv}, $expr);");
- $obj->invalidate;
- $obj->{flags} |= VALID_SV;
-}
-
-#
-# Stackobj::Padsv
-#
-
-@B::Stackobj::Padsv::ISA = 'B::Stackobj';
-sub B::Stackobj::Padsv::new {
- my ($class, $type, $extra_flags, $ix, $iname, $dname) = @_;
- $extra_flags |= SAVE_INT if $extra_flags & VALID_INT;
- $extra_flags |= SAVE_DOUBLE if $extra_flags & VALID_DOUBLE;
- bless {
- type => $type,
- flags => VALID_SV | $extra_flags,
- sv => "PL_curpad[$ix]",
- iv => "$iname",
- nv => "$dname"
- }, $class;
-}
-
-sub B::Stackobj::Padsv::load_int {
- my $obj = shift;
- if ($obj->{flags} & VALID_DOUBLE) {
- runtime("$obj->{iv} = $obj->{nv};");
- } else {
- runtime("$obj->{iv} = SvIV($obj->{sv});");
- }
- $obj->{flags} |= VALID_INT|SAVE_INT;
-}
-
-sub B::Stackobj::Padsv::load_double {
- my $obj = shift;
- $obj->write_back;
- runtime("$obj->{nv} = SvNV($obj->{sv});");
- $obj->{flags} |= VALID_DOUBLE|SAVE_DOUBLE;
-}
-sub B::Stackobj::Padsv::save_int {
- my $obj = shift;
- return $obj->{flags} & SAVE_INT;
-}
-
-sub B::Stackobj::Padsv::save_double {
- my $obj = shift;
- return $obj->{flags} & SAVE_DOUBLE;
-}
-
-sub B::Stackobj::Padsv::write_back {
- my $obj = shift;
- my $flags = $obj->{flags};
- return if $flags & VALID_SV;
- if ($flags & VALID_INT) {
- if ($flags & VALID_UNSIGNED ){
- runtime("sv_setuv($obj->{sv}, $obj->{iv});");
- }else{
- runtime("sv_setiv($obj->{sv}, $obj->{iv});");
- }
- } elsif ($flags & VALID_DOUBLE) {
- runtime("sv_setnv($obj->{sv}, $obj->{nv});");
- } else {
- confess "write_back failed for lexical @{[$obj->peek]}\n";
- }
- $obj->{flags} |= VALID_SV;
-}
-
-#
-# Stackobj::Const
-#
-
-@B::Stackobj::Const::ISA = 'B::Stackobj';
-sub B::Stackobj::Const::new {
- my ($class, $sv) = @_;
- my $obj = bless {
- flags => 0,
- sv => $sv # holds the SV object until write_back happens
- }, $class;
- if ( ref($sv) eq "B::SPECIAL" ){
- $obj->{type}= T_SPECIAL;
- }else{
- my $svflags = $sv->FLAGS;
- if ($svflags & SVf_IOK) {
- $obj->{flags} = VALID_INT|VALID_DOUBLE;
- $obj->{type} = T_INT;
- if ($svflags & SVf_IVisUV){
- $obj->{flags} |= VALID_UNSIGNED;
- $obj->{nv} = $obj->{iv} = $sv->UVX;
- }else{
- $obj->{nv} = $obj->{iv} = $sv->IV;
- }
- } elsif ($svflags & SVf_NOK) {
- $obj->{flags} = VALID_INT|VALID_DOUBLE;
- $obj->{type} = T_DOUBLE;
- $obj->{iv} = $obj->{nv} = $sv->NV;
- } else {
- $obj->{type} = T_UNKNOWN;
- }
- }
- return $obj;
-}
-
-sub B::Stackobj::Const::write_back {
- my $obj = shift;
- return if $obj->{flags} & VALID_SV;
- # Save the SV object and replace $obj->{sv} by its C source code name
- $obj->{sv} = $obj->{sv}->save;
- $obj->{flags} |= VALID_SV|VALID_INT|VALID_DOUBLE;
-}
-
-sub B::Stackobj::Const::load_int {
- my $obj = shift;
- if (ref($obj->{sv}) eq "B::RV"){
- $obj->{iv} = int($obj->{sv}->RV->PV);
- }else{
- $obj->{iv} = int($obj->{sv}->PV);
- }
- $obj->{flags} |= VALID_INT;
-}
-
-sub B::Stackobj::Const::load_double {
- my $obj = shift;
- if (ref($obj->{sv}) eq "B::RV"){
- $obj->{nv} = $obj->{sv}->RV->PV + 0.0;
- }else{
- $obj->{nv} = $obj->{sv}->PV + 0.0;
- }
- $obj->{flags} |= VALID_DOUBLE;
-}
-
-sub B::Stackobj::Const::invalidate {}
-
-#
-# Stackobj::Bool
-#
-
-@B::Stackobj::Bool::ISA = 'B::Stackobj';
-sub B::Stackobj::Bool::new {
- my ($class, $preg) = @_;
- my $obj = bless {
- type => T_INT,
- flags => VALID_INT|VALID_DOUBLE,
- iv => $$preg,
- nv => $$preg,
- preg => $preg # this holds our ref to the pseudo-reg
- }, $class;
- return $obj;
-}
-
-sub B::Stackobj::Bool::write_back {
- my $obj = shift;
- return if $obj->{flags} & VALID_SV;
- $obj->{sv} = "($obj->{iv} ? &PL_sv_yes : &PL_sv_no)";
- $obj->{flags} |= VALID_SV;
-}
-
-# XXX Might want to handle as_double/set_double/load_double?
-
-sub B::Stackobj::Bool::invalidate {}
-
-1;
-
-__END__
-
-=head1 NAME
-
-B::Stackobj - Helper module for CC backend
-
-=head1 SYNOPSIS
-
- use B::Stackobj;
-
-=head1 DESCRIPTION
-
-See F<ext/B/README>.
-
-=head1 AUTHOR
-
-Malcolm Beattie, C<mbeattie@sable.ox.ac.uk>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/B/Stash.pm b/Master/tlpkg/tlperl/lib/B/Stash.pm
deleted file mode 100644
index 5e60868a28e..00000000000
--- a/Master/tlpkg/tlperl/lib/B/Stash.pm
+++ /dev/null
@@ -1,52 +0,0 @@
-# Stash.pm -- show what stashes are loaded
-# vishalb@hotmail.com
-package B::Stash;
-
-our $VERSION = '1.00';
-
-=pod
-
-=head1 NAME
-
-B::Stash - show what stashes are loaded
-
-=cut
-
-BEGIN { %Seen = %INC }
-
-CHECK {
- my @arr=scan($main::{"main::"});
- @arr=map{s/\:\:$//;$_ eq "<none>"?():$_;} @arr;
- print "-umain,-u", join (",-u",@arr) ,"\n";
-}
-sub scan{
- my $start=shift;
- my $prefix=shift;
- $prefix = '' unless defined $prefix;
- my @return;
- foreach my $key ( keys %{$start}){
-# print $prefix,$key,"\n";
- if ($key =~ /::$/){
- unless ($start eq ${$start}{$key} or $key eq "B::" ){
- push @return, $key unless omit($prefix.$key);
- foreach my $subscan ( scan(${$start}{$key},$prefix.$key)){
- push @return, "$key".$subscan;
- }
- }
- }
- }
- return @return;
-}
-sub omit{
- my $module = shift;
- my %omit=("DynaLoader::" => 1 , "XSLoader::" => 1, "CORE::" => 1 ,
- "CORE::GLOBAL::" => 1, "UNIVERSAL::" => 1 );
- return 1 if $omit{$module};
- if ($module eq "IO::" or $module eq "IO::Handle::"){
- $module =~ s/::/\//g;
- return 1 unless $INC{$module};
- }
-
- return 0;
-}
-1;
diff --git a/Master/tlpkg/tlperl/lib/B/Terse.pm b/Master/tlpkg/tlperl/lib/B/Terse.pm
deleted file mode 100644
index 1d53950ad3b..00000000000
--- a/Master/tlpkg/tlperl/lib/B/Terse.pm
+++ /dev/null
@@ -1,103 +0,0 @@
-package B::Terse;
-
-our $VERSION = '1.03_01';
-
-use strict;
-use B qw(class);
-use B::Asmdata qw(@specialsv_name);
-use B::Concise qw(concise_subref set_style_standard);
-use Carp;
-
-sub terse {
- my ($order, $subref) = @_;
- set_style_standard("terse");
- if ($order eq "exec") {
- concise_subref('exec', $subref);
- } else {
- concise_subref('basic', $subref);
- }
-}
-
-sub compile {
- my @args = @_;
- my $order = @args ? shift(@args) : "";
- $order = "-exec" if $order eq "exec";
- unshift @args, $order if $order ne "";
- B::Concise::compile("-terse", @args);
-}
-
-sub indent {
- my ($level) = @_ ? shift : 0;
- return " " x $level;
-}
-
-# Don't use this, at least on OPs in subroutines: it has no way of
-# getting to the pad, and will give wrong answers or crash.
-sub B::OP::terse {
- carp "B::OP::terse is deprecated; use B::Concise instead";
- B::Concise::b_terse(@_);
-}
-
-sub B::SV::terse {
- my($sv, $level) = (@_, 0);
- my %info;
- B::Concise::concise_sv($sv, \%info);
- my $s = indent($level)
- . B::Concise::fmt_line(\%info, $sv,
- "#svclass~(?((#svaddr))?)~#svval", 0);
- chomp $s;
- print "$s\n" unless defined wantarray;
- $s;
-}
-
-sub B::NULL::terse {
- my ($sv, $level) = (@_, 0);
- my $s = indent($level) . sprintf "%s (0x%lx)", class($sv), $$sv;
- print "$s\n" unless defined wantarray;
- $s;
-}
-
-sub B::SPECIAL::terse {
- my ($sv, $level) = (@_, 0);
- my $s = indent($level)
- . sprintf( "%s #%d %s", class($sv), $$sv, $specialsv_name[$$sv]);
- print "$s\n" unless defined wantarray;
- $s;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-B::Terse - Walk Perl syntax tree, printing terse info about ops
-
-=head1 SYNOPSIS
-
- perl -MO=Terse[,OPTIONS] foo.pl
-
-=head1 DESCRIPTION
-
-This version of B::Terse is really just a wrapper that calls B::Concise
-with the B<-terse> option. It is provided for compatibility with old scripts
-(and habits) but using B::Concise directly is now recommended instead.
-
-For compatibility with the old B::Terse, this module also adds a
-method named C<terse> to B::OP and B::SV objects. The B::SV method is
-largely compatible with the old one, though authors of new software
-might be advised to choose a more user-friendly output format. The
-B::OP C<terse> method, however, doesn't work well. Since B::Terse was
-first written, much more information in OPs has migrated to the
-scratchpad datastructure, but the C<terse> interface doesn't have any
-way of getting to the correct pad. As a kludge, the new version will
-always use the pad for the main program, but for OPs in subroutines
-this will give the wrong answer or crash.
-
-=head1 AUTHOR
-
-The original version of B::Terse was written by Malcolm Beattie,
-E<lt>mbeattie@sable.ox.ac.ukE<gt>. This wrapper was written by Stephen
-McCamant, E<lt>smcc@MIT.EDUE<gt>.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/B/Xref.pm b/Master/tlpkg/tlperl/lib/B/Xref.pm
deleted file mode 100644
index f727dc766b5..00000000000
--- a/Master/tlpkg/tlperl/lib/B/Xref.pm
+++ /dev/null
@@ -1,430 +0,0 @@
-package B::Xref;
-
-our $VERSION = '1.01';
-
-=head1 NAME
-
-B::Xref - Generates cross reference reports for Perl programs
-
-=head1 SYNOPSIS
-
-perl -MO=Xref[,OPTIONS] foo.pl
-
-=head1 DESCRIPTION
-
-The B::Xref module is used to generate a cross reference listing of all
-definitions and uses of variables, subroutines and formats in a Perl program.
-It is implemented as a backend for the Perl compiler.
-
-The report generated is in the following format:
-
- File filename1
- Subroutine subname1
- Package package1
- object1 line numbers
- object2 line numbers
- ...
- Package package2
- ...
-
-Each B<File> section reports on a single file. Each B<Subroutine> section
-reports on a single subroutine apart from the special cases
-"(definitions)" and "(main)". These report, respectively, on subroutine
-definitions found by the initial symbol table walk and on the main part of
-the program or module external to all subroutines.
-
-The report is then grouped by the B<Package> of each variable,
-subroutine or format with the special case "(lexicals)" meaning
-lexical variables. Each B<object> name (implicitly qualified by its
-containing B<Package>) includes its type character(s) at the beginning
-where possible. Lexical variables are easier to track and even
-included dereferencing information where possible.
-
-The C<line numbers> are a comma separated list of line numbers (some
-preceded by code letters) where that object is used in some way.
-Simple uses aren't preceded by a code letter. Introductions (such as
-where a lexical is first defined with C<my>) are indicated with the
-letter "i". Subroutine and method calls are indicated by the character
-"&". Subroutine definitions are indicated by "s" and format
-definitions by "f".
-
-=head1 OPTIONS
-
-Option words are separated by commas (not whitespace) and follow the
-usual conventions of compiler backend options.
-
-=over 8
-
-=item C<-oFILENAME>
-
-Directs output to C<FILENAME> instead of standard output.
-
-=item C<-r>
-
-Raw output. Instead of producing a human-readable report, outputs a line
-in machine-readable form for each definition/use of a variable/sub/format.
-
-=item C<-d>
-
-Don't output the "(definitions)" sections.
-
-=item C<-D[tO]>
-
-(Internal) debug options, probably only useful if C<-r> included.
-The C<t> option prints the object on the top of the stack as it's
-being tracked. The C<O> option prints each operator as it's being
-processed in the execution order of the program.
-
-=back
-
-=head1 BUGS
-
-Non-lexical variables are quite difficult to track through a program.
-Sometimes the type of a non-lexical variable's use is impossible to
-determine. Introductions of non-lexical non-scalars don't seem to be
-reported properly.
-
-=head1 AUTHOR
-
-Malcolm Beattie, mbeattie@sable.ox.ac.uk.
-
-=cut
-
-use strict;
-use Config;
-use B qw(peekop class comppadlist main_start svref_2object walksymtable
- OPpLVAL_INTRO SVf_POK OPpOUR_INTRO cstring
- );
-
-sub UNKNOWN { ["?", "?", "?"] }
-
-my @pad; # lexicals in current pad
- # as ["(lexical)", type, name]
-my %done; # keyed by $$op: set when each $op is done
-my $top = UNKNOWN; # shadows top element of stack as
- # [pack, type, name] (pack can be "(lexical)")
-my $file; # shadows current filename
-my $line; # shadows current line number
-my $subname; # shadows current sub name
-my %table; # Multi-level hash to record all uses etc.
-my @todo = (); # List of CVs that need processing
-
-my %code = (intro => "i", used => "",
- subdef => "s", subused => "&",
- formdef => "f", meth => "->");
-
-
-# Options
-my ($debug_op, $debug_top, $nodefs, $raw);
-
-sub process {
- my ($var, $event) = @_;
- my ($pack, $type, $name) = @$var;
- if ($type eq "*") {
- if ($event eq "used") {
- return;
- } elsif ($event eq "subused") {
- $type = "&";
- }
- }
- $type =~ s/(.)\*$/$1/g;
- if ($raw) {
- printf "%-16s %-12s %5d %-12s %4s %-16s %s\n",
- $file, $subname, $line, $pack, $type, $name, $event;
- } else {
- # Wheee
- push(@{$table{$file}->{$subname}->{$pack}->{$type.$name}->{$event}},
- $line);
- }
-}
-
-sub load_pad {
- my $padlist = shift;
- my ($namelistav, $vallistav, @namelist, $ix);
- @pad = ();
- return if class($padlist) eq "SPECIAL";
- ($namelistav,$vallistav) = $padlist->ARRAY;
- @namelist = $namelistav->ARRAY;
- for ($ix = 1; $ix < @namelist; $ix++) {
- my $namesv = $namelist[$ix];
- next if class($namesv) eq "SPECIAL";
- my ($type, $name) = $namesv->PV =~ /^(.)([^\0]*)(\0.*)?$/;
- $pad[$ix] = ["(lexical)", $type || '?', $name || '?'];
- }
- if ($Config{useithreads}) {
- my (@vallist);
- @vallist = $vallistav->ARRAY;
- for ($ix = 1; $ix < @vallist; $ix++) {
- my $valsv = $vallist[$ix];
- next unless class($valsv) eq "GV";
- # these pad GVs don't have corresponding names, so same @pad
- # array can be used without collisions
- $pad[$ix] = [$valsv->STASH->NAME, "*", $valsv->NAME];
- }
- }
-}
-
-sub xref {
- my $start = shift;
- my $op;
- for ($op = $start; $$op; $op = $op->next) {
- last if $done{$$op}++;
- warn sprintf("top = [%s, %s, %s]\n", @$top) if $debug_top;
- warn peekop($op), "\n" if $debug_op;
- my $opname = $op->name;
- if ($opname =~ /^(or|and|mapwhile|grepwhile|range|cond_expr)$/) {
- xref($op->other);
- } elsif ($opname eq "match" || $opname eq "subst") {
- xref($op->pmreplstart);
- } elsif ($opname eq "substcont") {
- xref($op->other->pmreplstart);
- $op = $op->other;
- redo;
- } elsif ($opname eq "enterloop") {
- xref($op->redoop);
- xref($op->nextop);
- xref($op->lastop);
- } elsif ($opname eq "subst") {
- xref($op->pmreplstart);
- } else {
- no strict 'refs';
- my $ppname = "pp_$opname";
- &$ppname($op) if defined(&$ppname);
- }
- }
-}
-
-sub xref_cv {
- my $cv = shift;
- my $pack = $cv->GV->STASH->NAME;
- $subname = ($pack eq "main" ? "" : "$pack\::") . $cv->GV->NAME;
- load_pad($cv->PADLIST);
- xref($cv->START);
- $subname = "(main)";
-}
-
-sub xref_object {
- my $cvref = shift;
- xref_cv(svref_2object($cvref));
-}
-
-sub xref_main {
- $subname = "(main)";
- load_pad(comppadlist);
- xref(main_start);
- while (@todo) {
- xref_cv(shift @todo);
- }
-}
-
-sub pp_nextstate {
- my $op = shift;
- $file = $op->file;
- $line = $op->line;
- $top = UNKNOWN;
-}
-
-sub pp_padsv {
- my $op = shift;
- $top = $pad[$op->targ];
- process($top, $op->private & OPpLVAL_INTRO ? "intro" : "used");
-}
-
-sub pp_padav { pp_padsv(@_) }
-sub pp_padhv { pp_padsv(@_) }
-
-sub deref {
- my ($op, $var, $as) = @_;
- $var->[1] = $as . $var->[1];
- process($var, $op->private & OPpOUR_INTRO ? "intro" : "used");
-}
-
-sub pp_rv2cv { deref(shift, $top, "&"); }
-sub pp_rv2hv { deref(shift, $top, "%"); }
-sub pp_rv2sv { deref(shift, $top, "\$"); }
-sub pp_rv2av { deref(shift, $top, "\@"); }
-sub pp_rv2gv { deref(shift, $top, "*"); }
-
-sub pp_gvsv {
- my $op = shift;
- my $gv;
- if ($Config{useithreads}) {
- $top = $pad[$op->padix];
- $top = UNKNOWN unless $top;
- $top->[1] = '$';
- }
- else {
- $gv = $op->gv;
- $top = [$gv->STASH->NAME, '$', $gv->SAFENAME];
- }
- process($top, $op->private & OPpLVAL_INTRO ||
- $op->private & OPpOUR_INTRO ? "intro" : "used");
-}
-
-sub pp_gv {
- my $op = shift;
- my $gv;
- if ($Config{useithreads}) {
- $top = $pad[$op->padix];
- $top = UNKNOWN unless $top;
- $top->[1] = '*';
- }
- else {
- $gv = $op->gv;
- $top = [$gv->STASH->NAME, "*", $gv->SAFENAME];
- }
- process($top, $op->private & OPpLVAL_INTRO ? "intro" : "used");
-}
-
-sub pp_const {
- my $op = shift;
- my $sv = $op->sv;
- # constant could be in the pad (under useithreads)
- if ($$sv) {
- $top = ["?", "",
- (class($sv) ne "SPECIAL" && $sv->FLAGS & SVf_POK)
- ? cstring($sv->PV) : "?"];
- }
- else {
- $top = $pad[$op->targ];
- $top = UNKNOWN unless $top;
- }
-}
-
-sub pp_method {
- my $op = shift;
- $top = ["(method)", "->".$top->[1], $top->[2]];
-}
-
-sub pp_entersub {
- my $op = shift;
- if ($top->[1] eq "m") {
- process($top, "meth");
- } else {
- process($top, "subused");
- }
- $top = UNKNOWN;
-}
-
-#
-# Stuff for cross referencing definitions of variables and subs
-#
-
-sub B::GV::xref {
- my $gv = shift;
- my $cv = $gv->CV;
- if ($$cv) {
- #return if $done{$$cv}++;
- $file = $gv->FILE;
- $line = $gv->LINE;
- process([$gv->STASH->NAME, "&", $gv->NAME], "subdef");
- push(@todo, $cv);
- }
- my $form = $gv->FORM;
- if ($$form) {
- return if $done{$$form}++;
- $file = $gv->FILE;
- $line = $gv->LINE;
- process([$gv->STASH->NAME, "", $gv->NAME], "formdef");
- }
-}
-
-sub xref_definitions {
- my ($pack, %exclude);
- return if $nodefs;
- $subname = "(definitions)";
- foreach $pack (qw(B O AutoLoader DynaLoader XSLoader Config DB VMS
- strict vars FileHandle Exporter Carp PerlIO::Layer
- attributes utf8 warnings)) {
- $exclude{$pack."::"} = 1;
- }
- no strict qw(vars refs);
- walksymtable(\%{"main::"}, "xref", sub { !defined($exclude{$_[0]}) });
-}
-
-sub output {
- return if $raw;
- my ($file, $subname, $pack, $name, $ev, $perfile, $persubname,
- $perpack, $pername, $perev);
- foreach $file (sort(keys(%table))) {
- $perfile = $table{$file};
- print "File $file\n";
- foreach $subname (sort(keys(%$perfile))) {
- $persubname = $perfile->{$subname};
- print " Subroutine $subname\n";
- foreach $pack (sort(keys(%$persubname))) {
- $perpack = $persubname->{$pack};
- print " Package $pack\n";
- foreach $name (sort(keys(%$perpack))) {
- $pername = $perpack->{$name};
- my @lines;
- foreach $ev (qw(intro formdef subdef meth subused used)) {
- $perev = $pername->{$ev};
- if (defined($perev) && @$perev) {
- my $code = $code{$ev};
- push(@lines, map("$code$_", @$perev));
- }
- }
- printf " %-16s %s\n", $name, join(", ", @lines);
- }
- }
- }
- }
-}
-
-sub compile {
- my @options = @_;
- my ($option, $opt, $arg);
- OPTION:
- while ($option = shift @options) {
- if ($option =~ /^-(.)(.*)/) {
- $opt = $1;
- $arg = $2;
- } else {
- unshift @options, $option;
- last OPTION;
- }
- if ($opt eq "-" && $arg eq "-") {
- shift @options;
- last OPTION;
- } elsif ($opt eq "o") {
- $arg ||= shift @options;
- open(STDOUT, ">$arg") or return "$arg: $!\n";
- } elsif ($opt eq "d") {
- $nodefs = 1;
- } elsif ($opt eq "r") {
- $raw = 1;
- } elsif ($opt eq "D") {
- $arg ||= shift @options;
- foreach $arg (split(//, $arg)) {
- if ($arg eq "o") {
- B->debug(1);
- } elsif ($arg eq "O") {
- $debug_op = 1;
- } elsif ($arg eq "t") {
- $debug_top = 1;
- }
- }
- }
- }
- if (@options) {
- return sub {
- my $objname;
- xref_definitions();
- foreach $objname (@options) {
- $objname = "main::$objname" unless $objname =~ /::/;
- eval "xref_object(\\&$objname)";
- die "xref_object(\\&$objname) failed: $@" if $@;
- }
- output();
- }
- } else {
- return sub {
- xref_definitions();
- xref_main();
- output();
- }
- }
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/B/assemble b/Master/tlpkg/tlperl/lib/B/assemble
deleted file mode 100644
index 43cc5bc4b33..00000000000
--- a/Master/tlpkg/tlperl/lib/B/assemble
+++ /dev/null
@@ -1,30 +0,0 @@
-use B::Assembler qw(assemble_fh);
-use FileHandle;
-
-my ($filename, $fh, $out);
-
-if ($ARGV[0] eq "-d") {
- B::Assembler::debug(1);
- shift;
-}
-
-$out = \*STDOUT;
-
-if (@ARGV == 0) {
- $fh = \*STDIN;
- $filename = "-";
-} elsif (@ARGV == 1) {
- $filename = $ARGV[0];
- $fh = new FileHandle "<$filename";
-} elsif (@ARGV == 2) {
- $filename = $ARGV[0];
- $fh = new FileHandle "<$filename";
- $out = new FileHandle ">$ARGV[1]";
-} else {
- die "Usage: assemble [filename] [outfilename]\n";
-}
-
-binmode $out;
-$SIG{__WARN__} = sub { warn "$filename:@_" };
-$SIG{__DIE__} = sub { die "$filename: @_" };
-assemble_fh($fh, sub { print $out @_ });
diff --git a/Master/tlpkg/tlperl/lib/B/cc_harness b/Master/tlpkg/tlperl/lib/B/cc_harness
deleted file mode 100644
index 79f8727a8f0..00000000000
--- a/Master/tlpkg/tlperl/lib/B/cc_harness
+++ /dev/null
@@ -1,12 +0,0 @@
-use Config;
-
-$libdir = $ENV{PERL_SRC} || "$Config{installarchlib}/CORE";
-
-if (!grep(/^-[cS]$/, @ARGV)) {
- $linkargs = sprintf("%s $libdir/$Config{libperl} %s",
- @Config{qw(ldflags libs)});
-}
-
-$cccmd = "$Config{cc} $Config{ccflags} -I$libdir @ARGV $linkargs";
-print "$cccmd\n";
-exec $cccmd;
diff --git a/Master/tlpkg/tlperl/lib/B/disassemble b/Master/tlpkg/tlperl/lib/B/disassemble
deleted file mode 100644
index 6530b809502..00000000000
--- a/Master/tlpkg/tlperl/lib/B/disassemble
+++ /dev/null
@@ -1,22 +0,0 @@
-use B::Disassembler qw(disassemble_fh);
-use FileHandle;
-
-my $fh;
-if (@ARGV == 0) {
- $fh = \*STDIN;
-} elsif (@ARGV == 1) {
- $fh = new FileHandle "<$ARGV[0]";
-} else {
- die "Usage: disassemble [filename]\n";
-}
-
-sub print_insn {
- my ($insn, $arg) = @_;
- if (defined($arg)) {
- printf "%s %s\n", $insn, $arg;
- } else {
- print $insn, "\n";
- }
-}
-
-disassemble_fh($fh, \&print_insn);
diff --git a/Master/tlpkg/tlperl/lib/B/makeliblinks b/Master/tlpkg/tlperl/lib/B/makeliblinks
deleted file mode 100644
index 82560783c01..00000000000
--- a/Master/tlpkg/tlperl/lib/B/makeliblinks
+++ /dev/null
@@ -1,54 +0,0 @@
-use File::Find;
-use Config;
-
-if (@ARGV != 2) {
- warn <<"EOT";
-Usage: makeliblinks libautodir targetdir
-where libautodir is the architecture-dependent auto directory
-(e.g. $Config::Config{archlib}/auto).
-EOT
- exit 2;
-}
-
-my ($libautodir, $targetdir) = @ARGV;
-
-# Calculate relative path prefix from $targetdir to $libautodir
-sub relprefix {
- my ($to, $from) = @_;
- my $up;
- for ($up = 0; substr($to, 0, length($from)) ne $from; $up++) {
- $from =~ s(
- [^/]+ (?# a group of non-slashes)
- /* (?# maybe with some trailing slashes)
- $ (?# at the end of the path)
- )()x;
- }
- return (("../" x $up) . substr($to, length($from)));
-}
-
-my $relprefix = relprefix($libautodir, $targetdir);
-
-my ($dlext, $lib_ext) = @Config::Config{qw(dlext lib_ext)};
-
-sub link_if_library {
- if (/\.($dlext|$lib_ext)$/o) {
- my $ext = $1;
- my $name = $File::Find::name;
- if (substr($name, 0, length($libautodir) + 1) ne "$libautodir/") {
- die "directory of $name doesn't match $libautodir\n";
- }
- substr($name, 0, length($libautodir) + 1) = '';
- my @parts = split(m(/), $name);
- if ($parts[-1] ne "$parts[-2].$ext") {
- die "module name $_ doesn't match its directory $libautodir\n";
- }
- pop @parts;
- my $libpath = "$targetdir/lib" . join("__", @parts) . ".$ext";
- print "$libpath -> $relprefix/$name\n";
- symlink("$relprefix/$name", $libpath)
- or warn "above link failed with error: $!\n";
- }
-}
-
-find(\&link_if_library, $libautodir);
-exit 0;
diff --git a/Master/tlpkg/tlperl/lib/Carp.pm b/Master/tlpkg/tlperl/lib/Carp.pm
deleted file mode 100644
index 1a814ead34f..00000000000
--- a/Master/tlpkg/tlperl/lib/Carp.pm
+++ /dev/null
@@ -1,274 +0,0 @@
-package Carp;
-
-our $VERSION = '1.04';
-
-=head1 NAME
-
-carp - warn of errors (from perspective of caller)
-
-cluck - warn of errors with stack backtrace
- (not exported by default)
-
-croak - die of errors (from perspective of caller)
-
-confess - die of errors with stack backtrace
-
-shortmess - return the message that carp and croak produce
-
-longmess - return the message that cluck and confess produce
-
-=head1 SYNOPSIS
-
- use Carp;
- croak "We're outta here!";
-
- use Carp qw(cluck);
- cluck "This is how we got here!";
-
- print FH Carp::shortmess("This will have caller's details added");
- print FH Carp::longmess("This will have stack backtrace added");
-
-=head1 DESCRIPTION
-
-The Carp routines are useful in your own modules because
-they act like die() or warn(), but with a message which is more
-likely to be useful to a user of your module. In the case of
-cluck, confess, and longmess that context is a summary of every
-call in the call-stack. For a shorter message you can use carp,
-croak or shortmess which report the error as being from where
-your module was called. There is no guarantee that that is where
-the error was, but it is a good educated guess.
-
-You can also alter the way the output and logic of C<Carp> works, by
-changing some global variables in the C<Carp> namespace. See the
-section on C<GLOBAL VARIABLES> below.
-
-Here is a more complete description of how shortmess works. What
-it does is search the call-stack for a function call stack where
-it hasn't been told that there shouldn't be an error. If every
-call is marked safe, it then gives up and gives a full stack
-backtrace instead. In other words it presumes that the first likely
-looking potential suspect is guilty. Its rules for telling whether
-a call shouldn't generate errors work as follows:
-
-=over 4
-
-=item 1.
-
-Any call from a package to itself is safe.
-
-=item 2.
-
-Packages claim that there won't be errors on calls to or from
-packages explicitly marked as safe by inclusion in @CARP_NOT, or
-(if that array is empty) @ISA. The ability to override what
-@ISA says is new in 5.8.
-
-=item 3.
-
-The trust in item 2 is transitive. If A trusts B, and B
-trusts C, then A trusts C. So if you do not override @ISA
-with @CARP_NOT, then this trust relationship is identical to,
-"inherits from".
-
-=item 4.
-
-Any call from an internal Perl module is safe. (Nothing keeps
-user modules from marking themselves as internal to Perl, but
-this practice is discouraged.)
-
-=item 5.
-
-Any call to Carp is safe. (This rule is what keeps it from
-reporting the error where you call carp/croak/shortmess.)
-
-=back
-
-=head2 Forcing a Stack Trace
-
-As a debugging aid, you can force Carp to treat a croak as a confess
-and a carp as a cluck across I<all> modules. In other words, force a
-detailed stack trace to be given. This can be very helpful when trying
-to understand why, or from where, a warning or error is being generated.
-
-This feature is enabled by 'importing' the non-existent symbol
-'verbose'. You would typically enable it by saying
-
- perl -MCarp=verbose script.pl
-
-or by including the string C<MCarp=verbose> in the PERL5OPT
-environment variable.
-
-Alternately, you can set the global variable C<$Carp::Verbose> to true.
-See the C<GLOBAL VARIABLES> section below.
-
-=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.
-
-# The members of %Internal are packages that are internal to perl.
-# Carp will not report errors from within these packages if it
-# can. The members of %CarpInternal are internal to Perl's warning
-# system. Carp will not report errors from within these packages
-# either, and will not report calls *to* these packages for carp and
-# croak. They replace $CarpLevel, which is deprecated. The
-# $Max(EvalLen|(Arg(Len|Nums)) variables are used to specify how the eval
-# text and function arguments should be formatted when printed.
-
-# Comments added by Jos I. Boumans <kane@dwim.org> 11-Aug-2004
-# I can not get %CarpInternal or %Internal to work as advertised,
-# therefor leaving it out of the below documentation.
-# $CarpLevel may be decprecated according to the last comment, but
-# after 6 years, it's still around and in heavy use ;)
-
-=pod
-
-=head1 GLOBAL VARIABLES
-
-=head2 $Carp::CarpLevel
-
-This variable determines how many call frames are to be skipped when
-reporting where an error occurred on a call to one of C<Carp>'s
-functions. For example:
-
- $Carp::CarpLevel = 1;
- sub bar { .... or _error('Wrong input') }
- sub _error { Carp::carp(@_) }
-
-This would make Carp report the error as coming from C<bar>'s caller,
-rather than from C<_error>'s caller, as it normally would.
-
-Defaults to C<0>.
-
-=head2 $Carp::MaxEvalLen
-
-This variable determines how many characters of a string-eval are to
-be shown in the output. Use a value of C<0> to show all text.
-
-Defaults to C<0>.
-
-=head2 $Carp::MaxArgLen
-
-This variable determines how many characters of each argument to a
-function to print. Use a value of C<0> to show the full length of the
-argument.
-
-Defaults to C<64>.
-
-=head2 $Carp::MaxArgNums
-
-This variable determines how many arguments to each function to show.
-Use a value of C<0> to show all arguments to a function call.
-
-Defaults to C<8>.
-
-=head2 $Carp::Verbose
-
-This variable makes C<Carp> use the C<longmess> function at all times.
-This effectively means that all calls to C<carp> become C<cluck> and
-all calls to C<croak> become C<confess>.
-
-Note, this is analogous to using C<use Carp 'verbose'>.
-
-Defaults to C<0>.
-
-=cut
-
-
-$CarpInternal{Carp}++;
-$CarpInternal{warnings}++;
-$CarpLevel = 0; # How many extra package levels to skip on carp.
- # How many calls to skip on confess.
- # Reconciling these notions is hard, use
- # %Internal and %CarpInternal instead.
-$MaxEvalLen = 0; # How much eval '...text...' to show. 0 = all.
-$MaxArgLen = 64; # How much of each argument to print. 0 = all.
-$MaxArgNums = 8; # How many arguments to print. 0 = all.
-$Verbose = 0; # If true then make shortmess call longmess instead
-
-require Exporter;
-@ISA = ('Exporter');
-@EXPORT = qw(confess croak carp);
-@EXPORT_OK = qw(cluck verbose longmess shortmess);
-@EXPORT_FAIL = qw(verbose); # hook to enable verbose mode
-
-=head1 BUGS
-
-The Carp routines don't handle exception objects currently.
-If called with a first argument that is a reference, they simply
-call die() or warn(), as appropriate.
-
-=cut
-
-# if the caller specifies verbose usage ("perl -MCarp=verbose script.pl")
-# then the following method will be called by the Exporter which knows
-# to do this thanks to @EXPORT_FAIL, above. $_[1] will contain the word
-# 'verbose'.
-
-sub export_fail {
- shift;
- $Verbose = shift if $_[0] eq 'verbose';
- return @_;
-}
-
-
-# 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 {
- {
- local($@, $!);
- # XXX fix require to not clear $@ or $!?
- # don't use require unless we need to (for Safe compartments)
- require Carp::Heavy unless $INC{"Carp/Heavy.pm"};
- }
- # Icky backwards compatibility wrapper. :-(
- my $call_pack = caller();
- if ($Internal{$call_pack} or $CarpInternal{$call_pack}) {
- return longmess_heavy(@_);
- }
- else {
- local $CarpLevel = $CarpLevel + 1;
- return longmess_heavy(@_);
- }
-}
-
-
-# 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 { # Short-circuit &longmess if called via multiple packages
- {
- local($@, $!);
- # XXX fix require to not clear $@ or $!?
- # don't use require unless we need to (for Safe compartments)
- require Carp::Heavy unless $INC{"Carp/Heavy.pm"};
- }
- # Icky backwards compatibility wrapper. :-(
- my $call_pack = caller();
- local @CARP_NOT = caller();
- shortmess_heavy(@_);
-}
-
-
-# the following four functions call longmess() or shortmess() depending on
-# whether they should generate a full stack trace (confess() and cluck())
-# or simply report the caller's package (croak() and carp()), respectively.
-# confess() and croak() die, carp() and cluck() warn.
-
-sub croak { die shortmess @_ }
-sub confess { die longmess @_ }
-sub carp { warn shortmess @_ }
-sub cluck { warn longmess @_ }
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Carp/Heavy.pm b/Master/tlpkg/tlperl/lib/Carp/Heavy.pm
deleted file mode 100644
index 55bca2b421a..00000000000
--- a/Master/tlpkg/tlperl/lib/Carp/Heavy.pm
+++ /dev/null
@@ -1,241 +0,0 @@
-# Carp::Heavy uses some variables in common with Carp.
-package Carp;
-
-=head1 NAME
-
-Carp::Heavy - heavy machinery, no user serviceable parts inside
-
-=cut
-
-# use strict; # not yet
-
-# On one line so MakeMaker will see it.
-use Carp; our $VERSION = $Carp::VERSION;
-
-our ($CarpLevel, $MaxArgNums, $MaxEvalLen, $MaxArgLen, $Verbose);
-
-sub caller_info {
- my $i = shift(@_) + 1;
- package DB;
- my %call_info;
- @call_info{
- qw(pack file line sub has_args wantarray evaltext is_require)
- } = caller($i);
-
- unless (defined $call_info{pack}) {
- return ();
- }
-
- my $sub_name = Carp::get_subname(\%call_info);
- if ($call_info{has_args}) {
- my @args = map {Carp::format_arg($_)} @DB::args;
- if ($MaxArgNums and @args > $MaxArgNums) { # More than we want to show?
- $#args = $MaxArgNums;
- push @args, '...';
- }
- # Push the args onto the subroutine
- $sub_name .= '(' . join (', ', @args) . ')';
- }
- $call_info{sub_name} = $sub_name;
- return wantarray() ? %call_info : \%call_info;
-}
-
-# Transform an argument to a function into a string.
-sub format_arg {
- my $arg = shift;
- if (ref($arg)) {
- $arg = defined($overload::VERSION) ? overload::StrVal($arg) : "$arg";
- }elsif (not defined($arg)) {
- $arg = 'undef';
- }
- $arg =~ s/'/\\'/g;
- $arg = str_len_trim($arg, $MaxArgLen);
-
- # Quote it?
- $arg = "'$arg'" unless $arg =~ /^-?[\d.]+\z/;
-
- # The following handling of "control chars" is direct from
- # the original code - it is broken on Unicode though.
- # Suggestions?
- utf8::is_utf8($arg)
- or $arg =~ s/([[:cntrl:]]|[[:^ascii:]])/sprintf("\\x{%x}",ord($1))/eg;
- return $arg;
-}
-
-# Takes an inheritance cache and a package and returns
-# an anon hash of known inheritances and anon array of
-# inheritances which consequences have not been figured
-# for.
-sub get_status {
- my $cache = shift;
- my $pkg = shift;
- $cache->{$pkg} ||= [{$pkg => $pkg}, [trusts_directly($pkg)]];
- return @{$cache->{$pkg}};
-}
-
-# Takes the info from caller() and figures out the name of
-# the sub/require/eval
-sub get_subname {
- my $info = shift;
- if (defined($info->{evaltext})) {
- my $eval = $info->{evaltext};
- if ($info->{is_require}) {
- return "require $eval";
- }
- else {
- $eval =~ s/([\\\'])/\\$1/g;
- return "eval '" . str_len_trim($eval, $MaxEvalLen) . "'";
- }
- }
-
- return ($info->{sub} eq '(eval)') ? 'eval {...}' : $info->{sub};
-}
-
-# Figures out what call (from the point of view of the caller)
-# the long error backtrace should start at.
-sub long_error_loc {
- my $i;
- my $lvl = $CarpLevel;
- {
- my $pkg = caller(++$i);
- unless(defined($pkg)) {
- # This *shouldn't* happen.
- if (%Internal) {
- local %Internal;
- $i = long_error_loc();
- last;
- }
- else {
- # OK, now I am irritated.
- return 2;
- }
- }
- redo if $CarpInternal{$pkg};
- redo unless 0 > --$lvl;
- redo if $Internal{$pkg};
- }
- return $i - 1;
-}
-
-
-sub longmess_heavy {
- return @_ if ref($_[0]); # don't break references as exceptions
- my $i = long_error_loc();
- return ret_backtrace($i, @_);
-}
-
-# Returns a full stack backtrace starting from where it is
-# told.
-sub ret_backtrace {
- my ($i, @error) = @_;
- my $mess;
- my $err = join '', @error;
- $i++;
-
- my $tid_msg = '';
- if (defined &Thread::tid) {
- my $tid = Thread->self->tid;
- $tid_msg = " thread $tid" if $tid;
- }
-
- my %i = caller_info($i);
- $mess = "$err at $i{file} line $i{line}$tid_msg\n";
-
- while (my %i = caller_info(++$i)) {
- $mess .= "\t$i{sub_name} called at $i{file} line $i{line}$tid_msg\n";
- }
-
- return $mess;
-}
-
-sub ret_summary {
- my ($i, @error) = @_;
- my $err = join '', @error;
- $i++;
-
- my $tid_msg = '';
- if (defined &Thread::tid) {
- my $tid = Thread->self->tid;
- $tid_msg = " thread $tid" if $tid;
- }
-
- my %i = caller_info($i);
- return "$err at $i{file} line $i{line}$tid_msg\n";
-}
-
-
-sub short_error_loc {
- my $cache;
- my $i = 1;
- my $lvl = $CarpLevel;
- {
- my $called = caller($i++);
- my $caller = caller($i);
- return 0 unless defined($caller); # What happened?
- redo if $Internal{$caller};
- redo if $CarpInternal{$called};
- redo if trusts($called, $caller, $cache);
- redo if trusts($caller, $called, $cache);
- redo unless 0 > --$lvl;
- }
- return $i - 1;
-}
-
-sub shortmess_heavy {
- return longmess_heavy(@_) if $Verbose;
- return @_ if ref($_[0]); # don't break references as exceptions
- my $i = short_error_loc();
- if ($i) {
- ret_summary($i, @_);
- }
- else {
- longmess_heavy(@_);
- }
-}
-
-# If a string is too long, trims it with ...
-sub str_len_trim {
- my $str = shift;
- my $max = shift || 0;
- if (2 < $max and $max < length($str)) {
- substr($str, $max - 3) = '...';
- }
- return $str;
-}
-
-# Takes two packages and an optional cache. Says whether the
-# first inherits from the second.
-#
-# Recursive versions of this have to work to avoid certain
-# possible endless loops, and when following long chains of
-# inheritance are less efficient.
-sub trusts {
- my $child = shift;
- my $parent = shift;
- my $cache = shift || {};
- my ($known, $partial) = get_status($cache, $child);
- # Figure out consequences until we have an answer
- while (@$partial and not exists $known->{$parent}) {
- my $anc = shift @$partial;
- next if exists $known->{$anc};
- $known->{$anc}++;
- my ($anc_knows, $anc_partial) = get_status($cache, $anc);
- my @found = keys %$anc_knows;
- @$known{@found} = ();
- push @$partial, @$anc_partial;
- }
- return exists $known->{$parent};
-}
-
-# Takes a package and gives a list of those trusted directly
-sub trusts_directly {
- my $class = shift;
- no strict 'refs';
- no warnings 'once';
- return @{"$class\::CARP_NOT"}
- ? @{"$class\::CARP_NOT"}
- : @{"$class\::ISA"};
-}
-
-1;
-
diff --git a/Master/tlpkg/tlperl/lib/Class/ISA.pm b/Master/tlpkg/tlperl/lib/Class/ISA.pm
deleted file mode 100644
index e1371912e2c..00000000000
--- a/Master/tlpkg/tlperl/lib/Class/ISA.pm
+++ /dev/null
@@ -1,214 +0,0 @@
-#!/usr/local/bin/perl
-# Time-stamp: "2004-12-29 20:01:02 AST" -*-Perl-*-
-
-package Class::ISA;
-require 5;
-use strict;
-use vars qw($Debug $VERSION);
-$VERSION = '0.33';
-$Debug = 0 unless defined $Debug;
-
-=head1 NAME
-
-Class::ISA -- report the search path for a class's ISA tree
-
-=head1 SYNOPSIS
-
- # Suppose you go: use Food::Fishstick, and that uses and
- # inherits from other things, which in turn use and inherit
- # from other things. And suppose, for sake of brevity of
- # example, that their ISA tree is the same as:
-
- @Food::Fishstick::ISA = qw(Food::Fish Life::Fungus Chemicals);
- @Food::Fish::ISA = qw(Food);
- @Food::ISA = qw(Matter);
- @Life::Fungus::ISA = qw(Life);
- @Chemicals::ISA = qw(Matter);
- @Life::ISA = qw(Matter);
- @Matter::ISA = qw();
-
- use Class::ISA;
- print "Food::Fishstick path is:\n ",
- join(", ", Class::ISA::super_path('Food::Fishstick')),
- "\n";
-
-That prints:
-
- Food::Fishstick path is:
- Food::Fish, Food, Matter, Life::Fungus, Life, Chemicals
-
-=head1 DESCRIPTION
-
-Suppose you have a class (like Food::Fish::Fishstick) that is derived,
-via its @ISA, from one or more superclasses (as Food::Fish::Fishstick
-is from Food::Fish, Life::Fungus, and Chemicals), and some of those
-superclasses may themselves each be derived, via its @ISA, from one or
-more superclasses (as above).
-
-When, then, you call a method in that class ($fishstick->calories),
-Perl first searches there for that method, but if it's not there, it
-goes searching in its superclasses, and so on, in a depth-first (or
-maybe "height-first" is the word) search. In the above example, it'd
-first look in Food::Fish, then Food, then Matter, then Life::Fungus,
-then Life, then Chemicals.
-
-This library, Class::ISA, provides functions that return that list --
-the list (in order) of names of classes Perl would search to find a
-method, with no duplicates.
-
-=head1 FUNCTIONS
-
-=over
-
-=item the function Class::ISA::super_path($CLASS)
-
-This returns the ordered list of names of classes that Perl would
-search thru in order to find a method, with no duplicates in the list.
-$CLASS is not included in the list. UNIVERSAL is not included -- if
-you need to consider it, add it to the end.
-
-
-=item the function Class::ISA::self_and_super_path($CLASS)
-
-Just like C<super_path>, except that $CLASS is included as the first
-element.
-
-=item the function Class::ISA::self_and_super_versions($CLASS)
-
-This returns a hash whose keys are $CLASS and its
-(super-)superclasses, and whose values are the contents of each
-class's $VERSION (or undef, for classes with no $VERSION).
-
-The code for self_and_super_versions is meant to serve as an example
-for precisely the kind of tasks I anticipate that self_and_super_path
-and super_path will be used for. You are strongly advised to read the
-source for self_and_super_versions, and the comments there.
-
-=back
-
-=head1 CAUTIONARY NOTES
-
-* Class::ISA doesn't export anything. You have to address the
-functions with a "Class::ISA::" on the front.
-
-* Contrary to its name, Class::ISA isn't a class; it's just a package.
-Strange, isn't it?
-
-* Say you have a loop in the ISA tree of the class you're calling one
-of the Class::ISA functions on: say that Food inherits from Matter,
-but Matter inherits from Food (for sake of argument). If Perl, while
-searching for a method, actually discovers this cyclicity, it will
-throw a fatal error. The functions in Class::ISA effectively ignore
-this cyclicity; the Class::ISA algorithm is "never go down the same
-path twice", and cyclicities are just a special case of that.
-
-* The Class::ISA functions just look at @ISAs. But theoretically, I
-suppose, AUTOLOADs could bypass Perl's ISA-based search mechanism and
-do whatever they please. That would be bad behavior, tho; and I try
-not to think about that.
-
-* If Perl can't find a method anywhere in the ISA tree, it then looks
-in the magical class UNIVERSAL. This is rarely relevant to the tasks
-that I expect Class::ISA functions to be put to, but if it matters to
-you, then instead of this:
-
- @supers = Class::Tree::super_path($class);
-
-do this:
-
- @supers = (Class::Tree::super_path($class), 'UNIVERSAL');
-
-And don't say no-one ever told ya!
-
-* When you call them, the Class::ISA functions look at @ISAs anew --
-that is, there is no memoization, and so if ISAs change during
-runtime, you get the current ISA tree's path, not anything memoized.
-However, changing ISAs at runtime is probably a sign that you're out
-of your mind!
-
-=head1 COPYRIGHT
-
-Copyright (c) 1999, 2000 Sean M. Burke. All rights reserved.
-
-This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=head1 AUTHOR
-
-Sean M. Burke C<sburke@cpan.org>
-
-=cut
-
-###########################################################################
-
-sub self_and_super_versions {
- no strict 'refs';
- map {
- $_ => (defined(${"$_\::VERSION"}) ? ${"$_\::VERSION"} : undef)
- } self_and_super_path($_[0])
-}
-
-# Also consider magic like:
-# no strict 'refs';
-# my %class2SomeHashr =
-# map { defined(%{"$_\::SomeHash"}) ? ($_ => \%{"$_\::SomeHash"}) : () }
-# Class::ISA::self_and_super_path($class);
-# to get a hash of refs to all the defined (and non-empty) hashes in
-# $class and its superclasses.
-#
-# Or even consider this incantation for doing something like hash-data
-# inheritance:
-# no strict 'refs';
-# %union_hash =
-# map { defined(%{"$_\::SomeHash"}) ? %{"$_\::SomeHash"}) : () }
-# reverse(Class::ISA::self_and_super_path($class));
-# Consider that reverse() is necessary because with
-# %foo = ('a', 'wun', 'b', 'tiw', 'a', 'foist');
-# $foo{'a'} is 'foist', not 'wun'.
-
-###########################################################################
-sub super_path {
- my @ret = &self_and_super_path(@_);
- shift @ret if @ret;
- return @ret;
-}
-
-#--------------------------------------------------------------------------
-sub self_and_super_path {
- # Assumption: searching is depth-first.
- # Assumption: '' (empty string) can't be a class package name.
- # Note: 'UNIVERSAL' is not given any special treatment.
- return () unless @_;
-
- my @out = ();
-
- my @in_stack = ($_[0]);
- my %seen = ($_[0] => 1);
-
- my $current;
- while(@in_stack) {
- next unless defined($current = shift @in_stack) && length($current);
- print "At $current\n" if $Debug;
- push @out, $current;
- no strict 'refs';
- unshift @in_stack,
- map
- { my $c = $_; # copy, to avoid being destructive
- substr($c,0,2) = "main::" if substr($c,0,2) eq '::';
- # Canonize the :: -> main::, ::foo -> main::foo thing.
- # Should I ever canonize the Foo'Bar = Foo::Bar thing?
- $seen{$c}++ ? () : $c;
- }
- @{"$current\::ISA"}
- ;
- # I.e., if this class has any parents (at least, ones I've never seen
- # before), push them, in order, onto the stack of classes I need to
- # explore.
- }
-
- return @out;
-}
-#--------------------------------------------------------------------------
-1;
-
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Class/Struct.pm b/Master/tlpkg/tlperl/lib/Class/Struct.pm
deleted file mode 100644
index 7a9af54faf8..00000000000
--- a/Master/tlpkg/tlperl/lib/Class/Struct.pm
+++ /dev/null
@@ -1,636 +0,0 @@
-package Class::Struct;
-
-## See POD after __END__
-
-use 5.006_001;
-
-use strict;
-use warnings::register;
-our(@ISA, @EXPORT, $VERSION);
-
-use Carp;
-
-require Exporter;
-@ISA = qw(Exporter);
-@EXPORT = qw(struct);
-
-$VERSION = '0.63';
-
-## Tested on 5.002 and 5.003 without class membership tests:
-my $CHECK_CLASS_MEMBERSHIP = ($] >= 5.003_95);
-
-my $print = 0;
-sub printem {
- if (@_) { $print = shift }
- else { $print++ }
-}
-
-{
- package Class::Struct::Tie_ISA;
-
- sub TIEARRAY {
- my $class = shift;
- return bless [], $class;
- }
-
- sub STORE {
- my ($self, $index, $value) = @_;
- Class::Struct::_subclass_error();
- }
-
- sub FETCH {
- my ($self, $index) = @_;
- $self->[$index];
- }
-
- sub FETCHSIZE {
- my $self = shift;
- return scalar(@$self);
- }
-
- sub DESTROY { }
-}
-
-sub import {
- my $self = shift;
-
- if ( @_ == 0 ) {
- $self->export_to_level( 1, $self, @EXPORT );
- } elsif ( @_ == 1 ) {
- # This is admittedly a little bit silly:
- # do we ever export anything else than 'struct'...?
- $self->export_to_level( 1, $self, @_ );
- } else {
- goto &struct;
- }
-}
-
-sub struct {
-
- # Determine parameter list structure, one of:
- # struct( class => [ element-list ])
- # struct( class => { element-list })
- # struct( element-list )
- # Latter form assumes current package name as struct name.
-
- my ($class, @decls);
- my $base_type = ref $_[1];
- if ( $base_type eq 'HASH' ) {
- $class = shift;
- @decls = %{shift()};
- _usage_error() if @_;
- }
- elsif ( $base_type eq 'ARRAY' ) {
- $class = shift;
- @decls = @{shift()};
- _usage_error() if @_;
- }
- else {
- $base_type = 'ARRAY';
- $class = (caller())[0];
- @decls = @_;
- }
-
- _usage_error() if @decls % 2 == 1;
-
- # Ensure we are not, and will not be, a subclass.
-
- my $isa = do {
- no strict 'refs';
- \@{$class . '::ISA'};
- };
- _subclass_error() if @$isa;
- tie @$isa, 'Class::Struct::Tie_ISA';
-
- # Create constructor.
-
- croak "function 'new' already defined in package $class"
- if do { no strict 'refs'; defined &{$class . "::new"} };
-
- my @methods = ();
- my %refs = ();
- my %arrays = ();
- my %hashes = ();
- my %classes = ();
- my $got_class = 0;
- 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;
- my( $cmt, $name, $type, $elem );
-
- if( $base_type eq 'HASH' ){
- $out .= " my(\$r) = {};\n";
- $cmt = '';
- }
- elsif( $base_type eq 'ARRAY' ){
- $out .= " my(\$r) = [];\n";
- }
- while( $idx < @decls ){
- $name = $decls[$idx];
- $type = $decls[$idx+1];
- push( @methods, $name );
- if( $base_type eq 'HASH' ){
- $elem = "{'${class}::$name'}";
- }
- elsif( $base_type eq 'ARRAY' ){
- $elem = "[$cnt]";
- ++$cnt;
- $cmt = " # $name";
- }
- if( $type =~ /^\*(.)/ ){
- $refs{$name}++;
- $type = $1;
- }
- my $init = "defined(\$init{'$name'}) ? \$init{'$name'} :";
- if( $type eq '@' ){
- $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 .= " 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 = $init undef;$cmt\n";
- }
- elsif( $type =~ /^\w+(?:::\w+)*$/ ){
- $out .= " if (defined(\$init{'$name'})) {\n";
- $out .= " if (ref \$init{'$name'} eq 'HASH')\n";
- $out .= " { \$r->$elem = $type->new(\%{\$init{'$name'}}) } $cmt\n";
- $out .= " elsif (UNIVERSAL::isa(\$init{'$name'}, '$type'))\n";
- $out .= " { \$r->$elem = \$init{'$name'} } $cmt\n";
- $out .= " else { croak 'Initializer for $name must be hash or $type reference' }\n";
- $out .= " }\n";
- $classes{$name} = $type;
- $got_class = 1;
- }
- else{
- croak "'$type' is not a valid struct element type";
- }
- $idx += 2;
- }
- $out .= " bless \$r, \$class;\n }\n";
-
- # Create accessor methods.
-
- my( $pre, $pst, $sel );
- $cnt = 0;
- foreach $name (@methods){
- if ( do { no strict 'refs'; defined &{$class . "::$name"} } ) {
- warnings::warnif("function '$name' already defined, overrides struct accessor method");
- }
- else {
- $pre = $pst = $cmt = $sel = '';
- if( defined $refs{$name} ){
- $pre = "\\(";
- $pst = ")";
- $cmt = " # returns ref";
- }
- $out .= " sub $name {$cmt\n my \$r = shift;\n";
- if( $base_type eq 'ARRAY' ){
- $elem = "[$cnt]";
- ++$cnt;
- }
- elsif( $base_type eq 'HASH' ){
- $elem = "{'${class}::$name'}";
- }
- if( defined $arrays{$name} ){
- $out .= " my \$i;\n";
- $out .= " \@_ ? (\$i = shift) : return \$r->$elem;\n";
- $out .= " if (ref(\$i) eq 'ARRAY' && !\@_) { \$r->$elem = \$i; return \$r }\n";
- $sel = "->[\$i]";
- }
- elsif( defined $hashes{$name} ){
- $out .= " my \$i;\n";
- $out .= " \@_ ? (\$i = shift) : return \$r->$elem;\n";
- $out .= " if (ref(\$i) eq 'HASH' && !\@_) { \$r->$elem = \$i; return \$r }\n";
- $sel = "->{\$i}";
- }
- elsif( defined $classes{$name} ){
- if ( $CHECK_CLASS_MEMBERSHIP ) {
- $out .= " croak '$name argument is wrong class' if \@_ && ! UNIVERSAL::isa(\$_[0], '$classes{$name}');\n";
- }
- }
- $out .= " croak 'Too many args to $name' if \@_ > 1;\n";
- $out .= " \@_ ? ($pre\$r->$elem$sel = shift$pst) : $pre\$r->$elem$sel$pst;\n";
- $out .= " }\n";
- }
- }
- $out .= "}\n1;\n";
-
- print $out if $print;
- my $result = eval $out;
- carp $@ if $@;
-}
-
-sub _usage_error {
- confess "struct usage error";
-}
-
-sub _subclass_error {
- croak 'struct class cannot be a subclass (@ISA not allowed)';
-}
-
-1; # for require
-
-
-__END__
-
-=head1 NAME
-
-Class::Struct - declare struct-like datatypes as Perl classes
-
-=head1 SYNOPSIS
-
- use Class::Struct;
- # declare struct, based on array:
- struct( CLASS_NAME => [ ELEMENT_NAME => ELEMENT_TYPE, ... ]);
- # declare struct, based on hash:
- struct( CLASS_NAME => { ELEMENT_NAME => ELEMENT_TYPE, ... });
-
- package CLASS_NAME;
- use Class::Struct;
- # declare struct, based on array, implicit class name:
- struct( ELEMENT_NAME => ELEMENT_TYPE, ... );
-
- # Declare struct at compile time
- use Class::Struct CLASS_NAME => [ ELEMENT_NAME => ELEMENT_TYPE, ... ];
- use Class::Struct CLASS_NAME => { ELEMENT_NAME => ELEMENT_TYPE, ... };
-
- # declare struct at compile time, based on array, implicit class name:
- package CLASS_NAME;
- use Class::Struct ELEMENT_NAME => ELEMENT_TYPE, ... ;
-
- package Myobj;
- use Class::Struct;
- # declare struct with four types of elements:
- struct( s => '$', a => '@', h => '%', c => 'My_Other_Class' );
-
- $obj = new Myobj; # constructor
-
- # scalar type accessor:
- $element_value = $obj->s; # element value
- $obj->s('new value'); # assign to element
-
- # array type accessor:
- $ary_ref = $obj->a; # reference to whole array
- $ary_element_value = $obj->a(2); # array element value
- $obj->a(2, 'new value'); # assign to array element
-
- # hash type accessor:
- $hash_ref = $obj->h; # reference to whole hash
- $hash_element_value = $obj->h('x'); # hash element value
- $obj->h('x', 'new value'); # assign to hash element
-
- # class type accessor:
- $element_value = $obj->c; # object reference
- $obj->c->method(...); # call method of object
- $obj->c(new My_Other_Class); # assign a new object
-
-=head1 DESCRIPTION
-
-C<Class::Struct> exports a single function, C<struct>.
-Given a list of element names and types, and optionally
-a class name, C<struct> creates a Perl 5 class that implements
-a "struct-like" data structure.
-
-The new class is given a constructor method, C<new>, for creating
-struct objects.
-
-Each element in the struct data has an accessor method, which is
-used to assign to the element and to fetch its value. The
-default accessor can be overridden by declaring a C<sub> of the
-same name in the package. (See Example 2.)
-
-Each element's type can be scalar, array, hash, or class.
-
-=head2 The C<struct()> function
-
-The C<struct> function has three forms of parameter-list.
-
- struct( CLASS_NAME => [ ELEMENT_LIST ]);
- struct( CLASS_NAME => { ELEMENT_LIST });
- struct( ELEMENT_LIST );
-
-The first and second forms explicitly identify the name of the
-class being created. The third form assumes the current package
-name as the class name.
-
-An object of a class created by the first and third forms is
-based on an array, whereas an object of a class created by the
-second form is based on a hash. The array-based forms will be
-somewhat faster and smaller; the hash-based forms are more
-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>.
-
-The I<ELEMENT_LIST> has the form
-
- NAME => TYPE, ...
-
-Each name-type pair declares one element of the struct. Each
-element name will be defined as an accessor method unless a
-method by that name is explicitly defined; in the latter case, a
-warning is issued if the warning flag (B<-w>) is set.
-
-=head2 Class Creation at Compile Time
-
-C<Class::Struct> can create your class at compile time. The main reason
-for doing this is obvious, so your class acts like every other class in
-Perl. Creating your class at compile time will make the order of events
-similar to using any other class ( or Perl module ).
-
-There is no significant speed gain between compile time and run time
-class creation, there is just a new, more standard order of events.
-
-=head2 Element Types and Accessor Methods
-
-The four element types -- scalar, array, hash, and class -- are
-represented by strings -- C<'$'>, C<'@'>, C<'%'>, and a class name --
-optionally preceded by a C<'*'>.
-
-The accessor method provided by C<struct> for an element depends
-on the declared type of the element.
-
-=over 4
-
-=item Scalar (C<'$'> or C<'*$'>)
-
-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.
-
-If the element type is C<'$'>, the value of the element (after
-assignment) is returned. If the element type is C<'*$'>, a reference
-to the element is returned.
-
-=item Array (C<'@'> or 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 (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
-present, is assigned to the array element. If the element type
-is C<'@'>, the accessor returns the array element value. If the
-element type is C<'*@'>, a reference to the array element is
-returned.
-
-As a special case, when the accessor is called with an array reference
-as the sole argument, this causes an assignment of the whole array element.
-The object reference is returned.
-
-=item Hash (C<'%'> or 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 (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
-assigned to the hash element. If the element type is C<'%'>, the
-accessor returns the hash element value. If the element type is
-C<'*%'>, a reference to the hash element is returned.
-
-As a special case, when the accessor is called with a hash reference
-as the sole argument, this causes an assignment of the whole hash element.
-The object reference is returned.
-
-=item Class (C<'Class_Name'> or C<'*Class_Name'>)
-
-The element's value must be a reference blessed to the named
-class or to one of its subclasses. The element is not initialized
-by default.
-
-The accessor's argument, if any, is assigned to the element. The
-accessor will C<croak> if this is not an appropriate object
-reference.
-
-If the element type does not start with a C<'*'>, the accessor
-returns the element value (after assignment). If the element type
-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 an object of the corresponding class,
-or of one of it's subclasses, or a reference to a hash containing named
-arguments to be passed to the element's constructor.
-
-See Example 3 below for an example of initialization.
-
-=head1 EXAMPLES
-
-=over 4
-
-=item Example 1
-
-Giving a struct element a class type that is also a struct is how
-structs are nested. Here, C<Timeval> represents a time (seconds and
-microseconds), and C<Rusage> has two elements, each of which is of
-type C<Timeval>.
-
- use Class::Struct;
-
- struct( Rusage => {
- ru_utime => 'Timeval', # user time used
- ru_stime => 'Timeval', # system time used
- });
-
- struct( Timeval => [
- tv_secs => '$', # seconds
- tv_usecs => '$', # microseconds
- ]);
-
- # create an object:
- my $t = Rusage->new(ru_utime=>Timeval->new(), ru_stime=>Timeval->new());
-
- # $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);
- $t->ru_stime->tv_secs(5);
- $t->ru_stime->tv_usecs(0);
-
-=item Example 2
-
-An accessor function can be redefined in order to provide
-additional checking of values, etc. Here, we want the C<count>
-element always to be nonnegative, so we redefine the C<count>
-accessor accordingly.
-
- package MyObj;
- use Class::Struct;
-
- # declare the struct
- struct ( 'MyObj', { count => '$', stuff => '%' } );
-
- # override the default accessor method for 'count'
- sub count {
- my $self = shift;
- if ( @_ ) {
- die 'count must be nonnegative' if $_[0] < 0;
- $self->{'MyObj::count'} = shift;
- warn "Too many args to count" if @_;
- }
- return $self->{'MyObj::count'};
- }
-
- package main;
- $x = new MyObj;
- print "\$x->count(5) = ", $x->count(5), "\n";
- # prints '$x->count(5) = 5'
-
- print "\$x->count = ", $x->count, "\n";
- # prints '$x->count = 5'
-
- 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 class may be specified as
-an object of that class, or as a reference to a hash of initializers
-that are 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 => Breed->new(name=>'short-hair', cross=>1),
- or: 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, 2001-09-10, v0.62.
-
- Modified implicit construction of nested objects.
- Now will also take an object ref instead of requiring a hash ref.
- Also default initializes nested object attributes to undef, rather
- than calling object constructor without args
- Original over-helpfulness was fraught with problems:
- * the class's constructor might not be called 'new'
- * the class might not have a hash-like-arguments constructor
- * the class might not have a no-argument constructor
- * "recursive" data structures didn't work well:
- package Person;
- struct { mother => 'Person', father => 'Person'};
-
-
-Modified by Casey West, 2000-11-08, v0.59.
-
- Added the ability for compile time class creation.
-
-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.
- Documentation corrected and extended.
- Use of struct() in a subclass prohibited.
- User definition of accessor allowed.
- Treatment of '*' in element types corrected.
- Treatment of classes as element types corrected.
- Class name to struct() made optional.
- Diagnostic checks added.
-
-Originally C<Class::Template> by Dean Roehrich.
-
- # Template.pm --- struct/member template builder
- # 12mar95
- # Dean Roehrich
- #
- # changes/bugs fixed since 28nov94 version:
- # - podified
- # changes/bugs fixed since 21nov94 version:
- # - Fixed examples.
- # changes/bugs fixed since 02sep94 version:
- # - Moved to Class::Template.
- # changes/bugs fixed since 20feb94 version:
- # - Updated to be a more proper module.
- # - Added "use strict".
- # - Bug in build_methods, was using @var when @$var needed.
- # - Now using my() rather than local().
- #
- # Uses perl5 classes to create nested data types.
- # This is offered as one implementation of Tom Christiansen's "structs.pl"
- # idea.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Config.pm b/Master/tlpkg/tlperl/lib/Config.pm
deleted file mode 100644
index 7e5ad77b30a..00000000000
--- a/Master/tlpkg/tlperl/lib/Config.pm
+++ /dev/null
@@ -1,95 +0,0 @@
-# This file was created by configpm when Perl was built. Any changes
-# made to this file will be lost the next time perl is built.
-
-package Config;
-use strict;
-# use warnings; Pulls in Carp
-# use vars pulls in Carp
-@Config::EXPORT = qw(%Config);
-@Config::EXPORT_OK = qw(myconfig config_sh config_vars config_re);
-
-# Need to stub all the functions to make code such as print Config::config_sh
-# keep working
-
-sub myconfig;
-sub config_sh;
-sub config_vars;
-sub config_re;
-
-my %Export_Cache = map {($_ => 1)} (@Config::EXPORT, @Config::EXPORT_OK);
-
-our %Config;
-
-# Define our own import method to avoid pulling in the full Exporter:
-sub import {
- my $pkg = shift;
- @_ = @Config::EXPORT unless @_;
-
- my @funcs = grep $_ ne '%Config', @_;
- my $export_Config = @funcs < @_ ? 1 : 0;
-
- no strict 'refs';
- my $callpkg = caller(0);
- foreach my $func (@funcs) {
- die sprintf qq{"%s" is not exported by the %s module\n},
- $func, __PACKAGE__ unless $Export_Cache{$func};
- *{$callpkg.'::'.$func} = \&{$func};
- }
-
- *{"$callpkg\::Config"} = \%Config if $export_Config;
- return;
-}
-
-die "Perl lib version (v5.8.8) doesn't match executable version ($])"
- unless $^V;
-
-$^V eq v5.8.8
- or die "Perl lib version (v5.8.8) doesn't match executable version (" .
- sprintf("v%vd",$^V) . ")";
-
-
-sub FETCH {
- my($self, $key) = @_;
-
- # check for cached value (which may be undef so we use exists not defined)
- return $self->{$key} if exists $self->{$key};
-
- return $self->fetch_string($key);
-}
-sub TIEHASH {
- bless $_[1], $_[0];
-}
-
-sub DESTROY { }
-
-sub AUTOLOAD {
- require 'Config_heavy.pl';
- goto \&launcher unless $Config::AUTOLOAD =~ /launcher$/;
- die "&Config::AUTOLOAD failed on $Config::AUTOLOAD";
-}
-
-# tie returns the object, so the value returned to require will be true.
-tie %Config, 'Config', {
- archlibexp => 'x:\\perl\\lib',
- archname => 'MSWin32-x86-multi-thread',
- cc => 'gcc',
- d_readlink => undef,
- d_symlink => undef,
- dlsrc => 'dl_win32.xs',
- dont_use_nlink => undef,
- exe_ext => '.exe',
- inc_version_list => '',
- intsize => '4',
- ldlibpthname => '',
- libpth => 'x:\\msys\\mingw\\lib',
- osname => 'MSWin32',
- osvers => '5.1',
- path_sep => ';',
- privlibexp => 'x:\\perl\\lib',
- scriptdir => 'x:\\perl\\bin',
- sitearchexp => 'x:\\perl\\site\\lib',
- sitelibexp => 'x:\\perl\\site\\lib',
- useithreads => 'define',
- usevendorprefix => undef,
- version => '5.8.8',
-};
diff --git a/Master/tlpkg/tlperl/lib/Config_heavy.pl b/Master/tlpkg/tlperl/lib/Config_heavy.pl
deleted file mode 100644
index 919d4637cf2..00000000000
--- a/Master/tlpkg/tlperl/lib/Config_heavy.pl
+++ /dev/null
@@ -1,1185 +0,0 @@
-# This file was created by configpm when Perl was built. Any changes
-# made to this file will be lost the next time perl is built.
-
-package Config;
-use strict;
-# use warnings; Pulls in Carp
-# use vars pulls in Carp
-### Configured by: siepo@xpeco
-### Target system: WIN32
-
-our $summary = <<'!END!';
-Summary of my $package (revision $revision $version_patchlevel_string) configuration:
- Platform:
- osname=$osname, osvers=$osvers, archname=$archname
- uname='$myuname'
- config_args='$config_args'
- hint=$hint, useposix=$useposix, d_sigaction=$d_sigaction
- usethreads=$usethreads use5005threads=$use5005threads useithreads=$useithreads usemultiplicity=$usemultiplicity
- useperlio=$useperlio d_sfio=$d_sfio uselargefiles=$uselargefiles usesocks=$usesocks
- use64bitint=$use64bitint use64bitall=$use64bitall uselongdouble=$uselongdouble
- usemymalloc=$usemymalloc, bincompat5005=undef
- Compiler:
- cc='$cc', ccflags ='$ccflags',
- optimize='$optimize',
- cppflags='$cppflags'
- ccversion='$ccversion', gccversion='$gccversion', gccosandvers='$gccosandvers'
- intsize=$intsize, longsize=$longsize, ptrsize=$ptrsize, doublesize=$doublesize, byteorder=$byteorder
- d_longlong=$d_longlong, longlongsize=$longlongsize, d_longdbl=$d_longdbl, longdblsize=$longdblsize
- ivtype='$ivtype', ivsize=$ivsize, nvtype='$nvtype', nvsize=$nvsize, Off_t='$lseektype', lseeksize=$lseeksize
- alignbytes=$alignbytes, prototype=$prototype
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
- libs=$libs
- perllibs=$perllibs
- libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
- gnulibc_version='$gnulibc_version'
- Dynamic Linking:
- dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags'
- cccdlflags='$cccdlflags', lddlflags='$lddlflags'
-
-!END!
-my $summary_expanded;
-
-sub myconfig {
- return $summary_expanded if $summary_expanded;
- ($summary_expanded = $summary) =~ s{\$(\w+)}
- { my $c = $Config::Config{$1}; defined($c) ? $c : 'undef' }ge;
- $summary_expanded;
-}
-
-local *_ = \my $a;
-$_ = <<'!END!';
-Author=''
-CONFIG='true'
-Date='$Date'
-Header=''
-Id='$Id'
-Locker=''
-Log='$Log'
-Mcc='Mcc'
-PATCHLEVEL='8'
-PERL_API_REVISION='5'
-PERL_API_SUBVERSION='0'
-PERL_API_VERSION='8'
-PERL_CONFIG_SH='true'
-PERL_PATCHLEVEL='8'
-PERL_REVISION='5'
-PERL_SUBVERSION='8'
-PERL_VERSION='8'
-RCSfile='$RCSfile'
-Revision='$Revision'
-SUBVERSION='8'
-Source=''
-State=''
-_a='.a'
-_exe='.exe'
-_o='.o'
-afs='false'
-afsroot='/afs'
-alignbytes='8'
-ansi2knr=''
-aphostname=''
-api_revision='5'
-api_subversion='0'
-api_version='8'
-api_versionstring='5.8.0'
-ar='ar'
-archlib='x:\perl\lib'
-archlibexp='x:\perl\lib'
-archname64=''
-archname='MSWin32-x86-multi-thread'
-archobjs=''
-asctime_r_proto='0'
-awk='awk'
-baserev='5'
-bash=''
-bin='x:\perl\bin'
-binexp='x:\perl\bin'
-bison=''
-byacc='byacc'
-byteorder='1234'
-c=''
-castflags='0'
-cat='type'
-cc='gcc'
-cccdlflags=' '
-ccdlflags=' '
-ccflags=' -s -O2 -DWIN32 -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -fno-strict-aliasing -DPERL_MSVCRT_READFIX'
-ccflags_uselargefiles=''
-ccname='gcc'
-ccsymbols=''
-ccversion=''
-cf_by='siepo'
-cf_email='siepo@xpeco'
-cf_time='Sun May 27 17:53:00 2007'
-charsize='1'
-chgrp=''
-chmod=''
-chown=''
-clocktype='clock_t'
-comm=''
-compress=''
-contains='grep'
-cp='copy'
-cpio=''
-cpp='gcc -E'
-cpp_stuff='42'
-cppccsymbols=''
-cppflags='-DWIN32'
-cpplast=''
-cppminus='-'
-cpprun='gcc -E'
-cppstdin='gcc -E'
-cppsymbols=''
-crypt_r_proto='0'
-cryptlib=''
-csh='undef'
-ctermid_r_proto='0'
-ctime_r_proto='0'
-d_Gconvert='sprintf((b),"%.*g",(n),(x))'
-d_PRIEUldbl='undef'
-d_PRIFUldbl='undef'
-d_PRIGUldbl='undef'
-d_PRIXU64='undef'
-d_PRId64='undef'
-d_PRIeldbl='undef'
-d_PRIfldbl='undef'
-d_PRIgldbl='undef'
-d_PRIi64='undef'
-d_PRIo64='undef'
-d_PRIu64='undef'
-d_PRIx64='undef'
-d_SCNfldbl='undef'
-d__fwalk='undef'
-d_access='define'
-d_accessx='undef'
-d_aintl='undef'
-d_alarm='define'
-d_archlib='define'
-d_asctime_r='undef'
-d_atolf='undef'
-d_atoll='undef'
-d_attribute_format='undef'
-d_attribute_malloc='undef'
-d_attribute_nonnull='undef'
-d_attribute_noreturn='undef'
-d_attribute_pure='undef'
-d_attribute_unused='undef'
-d_attribute_warn_unused_result='undef'
-d_bcmp='undef'
-d_bcopy='undef'
-d_bsd='define'
-d_bsdgetpgrp='undef'
-d_bsdsetpgrp='undef'
-d_bzero='undef'
-d_casti32='define'
-d_castneg='define'
-d_charvspr='undef'
-d_chown='undef'
-d_chroot='undef'
-d_chsize='define'
-d_class='undef'
-d_clearenv='undef'
-d_closedir='define'
-d_cmsghdr_s='undef'
-d_const='define'
-d_copysignl='undef'
-d_crypt='define'
-d_crypt_r='undef'
-d_csh='undef'
-d_ctermid_r='undef'
-d_ctime_r='undef'
-d_cuserid='undef'
-d_dbl_dig='define'
-d_dbminitproto='undef'
-d_difftime='define'
-d_dirfd='undef'
-d_dirnamlen='define'
-d_dlerror='define'
-d_dlopen='define'
-d_dlsymun='undef'
-d_dosuid='undef'
-d_drand48_r='undef'
-d_drand48proto='undef'
-d_dup2='define'
-d_eaccess='undef'
-d_endgrent='undef'
-d_endgrent_r='undef'
-d_endhent='undef'
-d_endhostent_r='undef'
-d_endnent='undef'
-d_endnetent_r='undef'
-d_endpent='undef'
-d_endprotoent_r='undef'
-d_endpwent='undef'
-d_endpwent_r='undef'
-d_endsent='undef'
-d_endservent_r='undef'
-d_eofnblk='define'
-d_eunice='undef'
-d_faststdio='define'
-d_fchdir='undef'
-d_fchmod='undef'
-d_fchown='undef'
-d_fcntl='undef'
-d_fcntl_can_lock='undef'
-d_fd_macros='define'
-d_fd_set='define'
-d_fds_bits='define'
-d_fgetpos='define'
-d_finite='undef'
-d_finitel='undef'
-d_flexfnam='define'
-d_flock='define'
-d_flockproto='define'
-d_fork='undef'
-d_fp_class='undef'
-d_fpathconf='undef'
-d_fpclass='undef'
-d_fpclassify='undef'
-d_fpclassl='undef'
-d_fpos64_t='undef'
-d_frexpl='undef'
-d_fs_data_s='undef'
-d_fseeko='undef'
-d_fsetpos='define'
-d_fstatfs='undef'
-d_fstatvfs='undef'
-d_fsync='undef'
-d_ftello='undef'
-d_ftime='define'
-d_futimes='undef'
-d_getcwd='define'
-d_getespwnam='undef'
-d_getfsstat='undef'
-d_getgrent='undef'
-d_getgrent_r='undef'
-d_getgrgid_r='undef'
-d_getgrnam_r='undef'
-d_getgrps='undef'
-d_gethbyaddr='define'
-d_gethbyname='define'
-d_gethent='undef'
-d_gethname='define'
-d_gethostbyaddr_r='undef'
-d_gethostbyname_r='undef'
-d_gethostent_r='undef'
-d_gethostprotos='define'
-d_getitimer='undef'
-d_getlogin='define'
-d_getlogin_r='undef'
-d_getmnt='undef'
-d_getmntent='undef'
-d_getnbyaddr='undef'
-d_getnbyname='undef'
-d_getnent='undef'
-d_getnetbyaddr_r='undef'
-d_getnetbyname_r='undef'
-d_getnetent_r='undef'
-d_getnetprotos='undef'
-d_getpagsz='undef'
-d_getpbyname='define'
-d_getpbynumber='define'
-d_getpent='undef'
-d_getpgid='undef'
-d_getpgrp2='undef'
-d_getpgrp='undef'
-d_getppid='undef'
-d_getprior='undef'
-d_getprotobyname_r='undef'
-d_getprotobynumber_r='undef'
-d_getprotoent_r='undef'
-d_getprotoprotos='define'
-d_getprpwnam='undef'
-d_getpwent='undef'
-d_getpwent_r='undef'
-d_getpwnam_r='undef'
-d_getpwuid_r='undef'
-d_getsbyname='define'
-d_getsbyport='define'
-d_getsent='undef'
-d_getservbyname_r='undef'
-d_getservbyport_r='undef'
-d_getservent_r='undef'
-d_getservprotos='define'
-d_getspnam='undef'
-d_getspnam_r='undef'
-d_gettimeod='define'
-d_gmtime_r='undef'
-d_gnulibc='undef'
-d_grpasswd='undef'
-d_hasmntopt='undef'
-d_htonl='define'
-d_ilogbl='undef'
-d_index='undef'
-d_inetaton='undef'
-d_int64_t='undef'
-d_isascii='define'
-d_isfinite='undef'
-d_isinf='undef'
-d_isnan='define'
-d_isnanl='undef'
-d_killpg='undef'
-d_lchown='undef'
-d_ldbl_dig='define'
-d_libm_lib_version='undef'
-d_link='define'
-d_localtime_r='undef'
-d_locconv='define'
-d_lockf='undef'
-d_longdbl='define'
-d_longlong='undef'
-d_lseekproto='define'
-d_lstat='undef'
-d_madvise='undef'
-d_malloc_good_size='undef'
-d_malloc_size='undef'
-d_mblen='define'
-d_mbstowcs='define'
-d_mbtowc='define'
-d_memchr='define'
-d_memcmp='define'
-d_memcpy='define'
-d_memmove='define'
-d_memset='define'
-d_mkdir='define'
-d_mkdtemp='undef'
-d_mkfifo='undef'
-d_mkstemp='undef'
-d_mkstemps='undef'
-d_mktime='define'
-d_mmap='undef'
-d_modfl='undef'
-d_modfl_pow32_bug='undef'
-d_modflproto='undef'
-d_mprotect='undef'
-d_msg='undef'
-d_msg_ctrunc='undef'
-d_msg_dontroute='undef'
-d_msg_oob='undef'
-d_msg_peek='undef'
-d_msg_proxy='undef'
-d_msgctl='undef'
-d_msgget='undef'
-d_msghdr_s='undef'
-d_msgrcv='undef'
-d_msgsnd='undef'
-d_msync='undef'
-d_munmap='undef'
-d_mymalloc='undef'
-d_nice='undef'
-d_nl_langinfo='undef'
-d_nv_preserves_uv='define'
-d_nv_zero_is_allbits_zero='define'
-d_off64_t='undef'
-d_old_pthread_create_joinable='undef'
-d_oldpthreads='undef'
-d_oldsock='undef'
-d_open3='undef'
-d_pathconf='undef'
-d_pause='define'
-d_perl_otherlibdirs='undef'
-d_phostname='undef'
-d_pipe='define'
-d_poll='undef'
-d_portable='define'
-d_procselfexe='undef'
-d_pthread_atfork='undef'
-d_pthread_attr_setscope='undef'
-d_pthread_yield='undef'
-d_pwage='undef'
-d_pwchange='undef'
-d_pwclass='undef'
-d_pwcomment='undef'
-d_pwexpire='undef'
-d_pwgecos='undef'
-d_pwpasswd='undef'
-d_pwquota='undef'
-d_qgcvt='undef'
-d_quad='undef'
-d_random_r='undef'
-d_readdir64_r='undef'
-d_readdir='define'
-d_readdir_r='undef'
-d_readlink='undef'
-d_readv='undef'
-d_recvmsg='undef'
-d_rename='define'
-d_rewinddir='define'
-d_rmdir='define'
-d_safebcpy='undef'
-d_safemcpy='undef'
-d_sanemcmp='define'
-d_sbrkproto='undef'
-d_scalbnl='undef'
-d_sched_yield='undef'
-d_scm_rights='undef'
-d_seekdir='define'
-d_select='define'
-d_sem='undef'
-d_semctl='undef'
-d_semctl_semid_ds='undef'
-d_semctl_semun='undef'
-d_semget='undef'
-d_semop='undef'
-d_sendmsg='undef'
-d_setegid='undef'
-d_seteuid='undef'
-d_setgrent='undef'
-d_setgrent_r='undef'
-d_setgrps='undef'
-d_sethent='undef'
-d_sethostent_r='undef'
-d_setitimer='undef'
-d_setlinebuf='undef'
-d_setlocale='define'
-d_setlocale_r='undef'
-d_setnent='undef'
-d_setnetent_r='undef'
-d_setpent='undef'
-d_setpgid='undef'
-d_setpgrp2='undef'
-d_setpgrp='undef'
-d_setprior='undef'
-d_setproctitle='undef'
-d_setprotoent_r='undef'
-d_setpwent='undef'
-d_setpwent_r='undef'
-d_setregid='undef'
-d_setresgid='undef'
-d_setresuid='undef'
-d_setreuid='undef'
-d_setrgid='undef'
-d_setruid='undef'
-d_setsent='undef'
-d_setservent_r='undef'
-d_setsid='undef'
-d_setvbuf='define'
-d_sfio='undef'
-d_shm='undef'
-d_shmat='undef'
-d_shmatprototype='undef'
-d_shmctl='undef'
-d_shmdt='undef'
-d_shmget='undef'
-d_sigaction='undef'
-d_sigprocmask='undef'
-d_sigsetjmp='undef'
-d_sockatmark='undef'
-d_sockatmarkproto='undef'
-d_socket='define'
-d_socklen_t='undef'
-d_sockpair='undef'
-d_socks5_init='undef'
-d_sprintf_returns_strlen='define'
-d_sqrtl='undef'
-d_srand48_r='undef'
-d_srandom_r='undef'
-d_sresgproto='undef'
-d_sresuproto='undef'
-d_statblks='undef'
-d_statfs_f_flags='undef'
-d_statfs_s='undef'
-d_statvfs='undef'
-d_stdio_cnt_lval='define'
-d_stdio_ptr_lval='define'
-d_stdio_ptr_lval_nochange_cnt='define'
-d_stdio_ptr_lval_sets_cnt='undef'
-d_stdio_stream_array='undef'
-d_stdiobase='define'
-d_stdstdio='define'
-d_strchr='define'
-d_strcoll='define'
-d_strctcpy='define'
-d_strerrm='strerror(e)'
-d_strerror='define'
-d_strerror_r='undef'
-d_strftime='define'
-d_strlcat='undef'
-d_strlcpy='undef'
-d_strtod='define'
-d_strtol='define'
-d_strtold='undef'
-d_strtoll='undef'
-d_strtoq='undef'
-d_strtoul='define'
-d_strtoull='undef'
-d_strtouq='undef'
-d_strxfrm='define'
-d_suidsafe='undef'
-d_symlink='undef'
-d_syscall='undef'
-d_syscallproto='undef'
-d_sysconf='undef'
-d_sysernlst=''
-d_syserrlst='define'
-d_system='define'
-d_tcgetpgrp='undef'
-d_tcsetpgrp='undef'
-d_telldir='define'
-d_telldirproto='define'
-d_time='define'
-d_times='define'
-d_tm_tm_gmtoff='undef'
-d_tm_tm_zone='undef'
-d_tmpnam_r='undef'
-d_truncate='undef'
-d_ttyname_r='undef'
-d_tzname='define'
-d_u32align='define'
-d_ualarm='undef'
-d_umask='define'
-d_uname='define'
-d_union_semun='define'
-d_unordered='undef'
-d_unsetenv='undef'
-d_usleep='undef'
-d_usleepproto='undef'
-d_ustat='undef'
-d_vendorarch='undef'
-d_vendorbin='undef'
-d_vendorlib='undef'
-d_vendorscript='undef'
-d_vfork='undef'
-d_void_closedir='undef'
-d_voidsig='define'
-d_voidtty=''
-d_volatile='define'
-d_vprintf='define'
-d_wait4='undef'
-d_waitpid='define'
-d_wcstombs='define'
-d_wctomb='define'
-d_writev='undef'
-d_xenix='undef'
-date='date'
-db_hashtype='int'
-db_prefixtype='int'
-db_version_major='0'
-db_version_minor='0'
-db_version_patch='0'
-defvoidused='15'
-direntrytype='struct direct'
-dlext='dll'
-dlsrc='dl_win32.xs'
-doublesize='8'
-drand01='(rand()/(double)((unsigned)1<<RANDBITS))'
-drand48_r_proto='0'
-dynamic_ext='B ByteLoader Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call IO List/Util MIME/Base64 Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re threads threads/shared'
-eagain='EAGAIN'
-ebcdic='undef'
-echo='echo'
-egrep='egrep'
-emacs=''
-endgrent_r_proto='0'
-endhostent_r_proto='0'
-endnetent_r_proto='0'
-endprotoent_r_proto='0'
-endpwent_r_proto='0'
-endservent_r_proto='0'
-eunicefix=':'
-exe_ext='.exe'
-expr='expr'
-extensions='B ByteLoader Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Errno Fcntl File/Glob Filter/Util/Call IO List/Util MIME/Base64 Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re threads threads/shared'
-extras=''
-fflushNULL='define'
-fflushall='undef'
-find='find'
-firstmakefile='makefile'
-flex=''
-fpossize='8'
-fpostype='fpos_t'
-freetype='void'
-from=':'
-full_ar=''
-full_csh=''
-full_sed=''
-gccansipedantic=''
-gccosandvers=''
-gccversion='3.4.5'
-getgrent_r_proto='0'
-getgrgid_r_proto='0'
-getgrnam_r_proto='0'
-gethostbyaddr_r_proto='0'
-gethostbyname_r_proto='0'
-gethostent_r_proto='0'
-getlogin_r_proto='0'
-getnetbyaddr_r_proto='0'
-getnetbyname_r_proto='0'
-getnetent_r_proto='0'
-getprotobyname_r_proto='0'
-getprotobynumber_r_proto='0'
-getprotoent_r_proto='0'
-getpwent_r_proto='0'
-getpwnam_r_proto='0'
-getpwuid_r_proto='0'
-getservbyname_r_proto='0'
-getservbyport_r_proto='0'
-getservent_r_proto='0'
-getspnam_r_proto='0'
-gidformat='"ld"'
-gidsign='-1'
-gidsize='4'
-gidtype='gid_t'
-glibpth='/usr/shlib /lib/pa1.1 /usr/lib/large /lib /usr/lib /usr/lib/386 /lib/386 /lib/large /usr/lib/small /lib/small /usr/ccs/lib /usr/ucblib /usr/shlib '
-gmake='gmake'
-gmtime_r_proto='0'
-gnulibc_version=''
-grep='grep'
-groupcat=''
-groupstype='gid_t'
-gzip='gzip'
-h_fcntl='false'
-h_sysfile='true'
-hint='recommended'
-hostcat='ypcat hosts'
-html1dir=' '
-html1direxp=''
-html3dir=' '
-html3direxp=''
-i16size='2'
-i16type='short'
-i32size='4'
-i32type='long'
-i64size='8'
-i64type='long long'
-i8size='1'
-i8type='char'
-i_arpainet='define'
-i_bsdioctl=''
-i_crypt='undef'
-i_db='undef'
-i_dbm='undef'
-i_dirent='define'
-i_dld='undef'
-i_dlfcn='define'
-i_fcntl='define'
-i_float='define'
-i_fp='undef'
-i_fp_class='undef'
-i_gdbm='undef'
-i_grp='undef'
-i_ieeefp='undef'
-i_inttypes='undef'
-i_langinfo='undef'
-i_libutil='undef'
-i_limits='define'
-i_locale='define'
-i_machcthr='undef'
-i_malloc='define'
-i_math='define'
-i_memory='undef'
-i_mntent='undef'
-i_ndbm='undef'
-i_netdb='undef'
-i_neterrno='undef'
-i_netinettcp='undef'
-i_niin='undef'
-i_poll='undef'
-i_prot='undef'
-i_pthread='undef'
-i_pwd='undef'
-i_rpcsvcdbm='define'
-i_sfio='undef'
-i_sgtty='undef'
-i_shadow='undef'
-i_socks='undef'
-i_stdarg='define'
-i_stddef='define'
-i_stdlib='define'
-i_string='define'
-i_sunmath='undef'
-i_sysaccess='undef'
-i_sysdir='undef'
-i_sysfile='undef'
-i_sysfilio='define'
-i_sysin='undef'
-i_sysioctl='undef'
-i_syslog='undef'
-i_sysmman='undef'
-i_sysmode='undef'
-i_sysmount='undef'
-i_sysndir='undef'
-i_sysparam='undef'
-i_sysresrc='undef'
-i_syssecrt='undef'
-i_sysselct='undef'
-i_syssockio='undef'
-i_sysstat='define'
-i_sysstatfs='undef'
-i_sysstatvfs='undef'
-i_systime='undef'
-i_systimek='undef'
-i_systimes='undef'
-i_systypes='define'
-i_sysuio='undef'
-i_sysun='undef'
-i_sysutsname='undef'
-i_sysvfs='undef'
-i_syswait='undef'
-i_termio='undef'
-i_termios='undef'
-i_time='define'
-i_unistd='undef'
-i_ustat='undef'
-i_utime='define'
-i_values='undef'
-i_varargs='undef'
-i_varhdr='varargs.h'
-i_vfork='undef'
-ignore_versioned_solibs=''
-inc_version_list=''
-inc_version_list_init='0'
-incpath='x:\msys\mingw\include'
-inews=''
-installarchlib='x:\perl\lib'
-installbin='x:\perl\bin'
-installhtml1dir=''
-installhtml3dir=''
-installhtmldir='x:\perl\html'
-installhtmlhelpdir='x:\perl\htmlhelp'
-installman1dir='x:\perl\man\man1'
-installman3dir='x:\perl\man\man3'
-installprefix='x:\perl'
-installprefixexp='x:\perl'
-installprivlib='x:\perl\lib'
-installscript='x:\perl\bin'
-installsitearch='x:\perl\site\lib'
-installsitebin='x:\perl\bin'
-installsitehtml1dir=''
-installsitehtml3dir=''
-installsitelib='x:\perl\site\lib'
-installsiteman1dir=''
-installsiteman3dir=''
-installsitescript=''
-installstyle='lib'
-installusrbinperl='undef'
-installvendorarch=''
-installvendorbin=''
-installvendorhtml1dir=''
-installvendorhtml3dir=''
-installvendorlib=''
-installvendorman1dir=''
-installvendorman3dir=''
-installvendorscript=''
-intsize='4'
-issymlink=''
-ivdformat='"ld"'
-ivsize='4'
-ivtype='long'
-known_extensions='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call GDBM_File I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re threads threads/shared'
-ksh=''
-ld='g++'
-lddlflags='-mdll -s -L"x:\perl\lib\CORE" -L"x:\msys\mingw\lib"'
-ldflags='-s -L"x:\perl\lib\CORE" -L"x:\msys\mingw\lib"'
-ldflags_uselargefiles=''
-ldlibpthname=''
-less='less'
-lib_ext='.a'
-libc='-lmsvcrt'
-libperl='libperl58.a'
-libpth='x:\msys\mingw\lib'
-libs=' -lmsvcrt -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32'
-libsdirs=''
-libsfiles=''
-libsfound=''
-libspath=''
-libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun m c cposix posix ndir dir crypt ucb bsd BSD PW x'
-libswanted_uselargefiles='net socket inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun m c cposix posix ndir dir crypt ucb bsd BSD PW x'
-line='line'
-lint=''
-lkflags=''
-ln=''
-lns='copy'
-localtime_r_proto='0'
-locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include'
-loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib'
-longdblsize='12'
-longlongsize='8'
-longsize='4'
-lp=''
-lpr=''
-ls='dir'
-lseeksize='8'
-lseektype='long long'
-mail=''
-mailx=''
-make='dmake'
-make_set_make='#'
-mallocobj='malloc.o'
-mallocsrc='malloc.c'
-malloctype='void *'
-man1dir='x:\perl\man\man1'
-man1direxp='x:\perl\man\man1'
-man1ext='1'
-man3dir='x:\perl\man\man3'
-man3direxp='x:\perl\man\man3'
-man3ext='3'
-mips_type=''
-mistrustnm=''
-mkdir='mkdir'
-mmaptype='void *'
-modetype='mode_t'
-more='more /e'
-multiarch='undef'
-mv=''
-myarchname='MSWin32'
-mydomain=''
-myhostname=''
-myuname=''
-n='-n'
-need_va_copy='undef'
-netdb_hlen_type='int'
-netdb_host_type='char *'
-netdb_name_type='char *'
-netdb_net_type='long'
-nm='nm'
-nm_opt=''
-nm_so_opt=''
-nonxs_ext='Errno'
-nroff=''
-nvEUformat='"E"'
-nvFUformat='"F"'
-nvGUformat='"G"'
-nv_preserves_uv_bits='32'
-nveformat='"e"'
-nvfformat='"f"'
-nvgformat='"g"'
-nvsize='8'
-nvtype='double'
-o_nonblock='O_NONBLOCK'
-obj_ext='.o'
-old_pthread_create_joinable=''
-optimize='-s -O2'
-orderlib='false'
-osname='MSWin32'
-osvers='5.1'
-otherlibdirs=''
-package='perl5'
-pager='more /e'
-passcat=''
-patchlevel=''
-path_sep=';'
-perl5=''
-perl='perl'
-perl_patchlevel=''
-perladmin=''
-perllibs=' -lmsvcrt -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32'
-perlpath='x:\perl\bin\perl.exe'
-pg=''
-phostname='hostname'
-pidtype='int'
-plibpth=''
-pmake=''
-pr=''
-prefix='x:\perl'
-prefixexp='x:\perl'
-privlib='x:\perl\lib'
-privlibexp='x:\perl\lib'
-procselfexe=''
-prototype='define'
-ptrsize='4'
-quadkind='5'
-quadtype='long long'
-randbits='15'
-randfunc='rand'
-random_r_proto='0'
-randseedtype='unsigned'
-ranlib='rem'
-rd_nodata='-1'
-readdir64_r_proto='0'
-readdir_r_proto='0'
-revision='5'
-rm='del'
-rmail=''
-run=''
-runnm='true'
-sPRIEUldbl='"E"'
-sPRIFUldbl='"F"'
-sPRIGUldbl='"G"'
-sPRIXU64='"lX"'
-sPRId64='"ld"'
-sPRIeldbl='"e"'
-sPRIfldbl='"f"'
-sPRIgldbl='"g"'
-sPRIi64='"li"'
-sPRIo64='"lo"'
-sPRIu64='"lu"'
-sPRIx64='"lx"'
-sSCNfldbl='"f"'
-sched_yield=''
-scriptdir='x:\perl\bin'
-scriptdirexp='x:\perl\bin'
-sed='sed'
-seedfunc='srand'
-selectminbits='32'
-selecttype='Perl_fd_set *'
-sendmail='blat'
-setgrent_r_proto='0'
-sethostent_r_proto='0'
-setlocale_r_proto='0'
-setnetent_r_proto='0'
-setprotoent_r_proto='0'
-setpwent_r_proto='0'
-setservent_r_proto='0'
-sh='cmd /x /c'
-shar=''
-sharpbang='#!'
-shmattype='void *'
-shortsize='2'
-shrpenv=''
-shsharp='true'
-sig_count='26'
-sig_name='ZERO HUP INT QUIT ILL NUM05 NUM06 NUM07 FPE KILL NUM10 SEGV NUM12 PIPE ALRM TERM NUM16 NUM17 NUM18 NUM19 CHLD BREAK ABRT STOP NUM24 CONT CLD'
-sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", "FPE", "KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "NUM16", "NUM17", "NUM18", "NUM19", "CHLD", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD", 0'
-sig_num='0 1 2 21 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 20'
-sig_num_init='0, 1, 2, 21, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 20, 0'
-sig_size='27'
-signal_t='void'
-sitearch='x:\perl\site\lib'
-sitearchexp='x:\perl\site\lib'
-sitebin='x:\perl\site\bin'
-sitebinexp='x:\perl\site\bin'
-sitehtml1dir=''
-sitehtml1direxp=''
-sitehtml3dir=''
-sitehtml3direxp=''
-sitelib='x:\perl\site\lib'
-sitelib_stem=''
-sitelibexp='x:\perl\site\lib'
-siteman1dir=''
-siteman1direxp=''
-siteman3dir=''
-siteman3direxp=''
-siteprefix='x:\perl\site'
-siteprefixexp='x:\perl\site'
-sitescript=''
-sitescriptexp=''
-sizesize='4'
-sizetype='size_t'
-sleep=''
-smail=''
-so='dll'
-sockethdr=''
-socketlib=''
-socksizetype='int'
-sort='sort'
-spackage='Perl5'
-spitshell=''
-srand48_r_proto='0'
-srandom_r_proto='0'
-src=''
-ssizetype='int'
-startperl='#!perl'
-startsh='#!/bin/sh'
-static_ext=' '
-stdchar='char'
-stdio_base='((fp)->_base)'
-stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)'
-stdio_cnt='((fp)->_cnt)'
-stdio_filbuf=''
-stdio_ptr='((fp)->_ptr)'
-stdio_stream_array=''
-strerror_r_proto='0'
-strings='/usr/include/string.h'
-submit=''
-subversion=''
-sysman='/usr/man/man1'
-tail=''
-tar=''
-targetarch=''
-tbl=''
-tee=''
-test=''
-timeincl='/usr/include/sys/time.h '
-timetype='time_t'
-tmpnam_r_proto='0'
-to=':'
-touch='touch'
-tr=''
-trnl='\012'
-troff=''
-ttyname_r_proto='0'
-u16size='2'
-u16type='unsigned short'
-u32size='4'
-u32type='unsigned long'
-u64size='8'
-u64type='unsigned long long'
-u8size='1'
-u8type='unsigned char'
-uidformat='"ld"'
-uidsign='-1'
-uidsize='4'
-uidtype='uid_t'
-uname='uname'
-uniq='uniq'
-uquadtype='unsigned long long'
-use5005threads='undef'
-use64bitall='undef'
-use64bitint='undef'
-usecrosscompile='undef'
-usedl='define'
-usefaststdio='define'
-useithreads='define'
-uselargefiles='define'
-uselongdouble='undef'
-usemallocwrap='define'
-usemorebits='undef'
-usemultiplicity='define'
-usemymalloc='n'
-usenm='false'
-useopcode='true'
-useperlio='define'
-useposix='true'
-usereentrant='undef'
-userelocatableinc='undef'
-usesfio='false'
-useshrplib='yes'
-usesitecustomize='undef'
-usesocks='undef'
-usethreads='define'
-usevendorprefix='undef'
-usevfork='false'
-usrinc='/usr/include'
-uuname=''
-uvXUformat='"lX"'
-uvoformat='"lo"'
-uvsize='4'
-uvtype='unsigned long'
-uvuformat='"lu"'
-uvxformat='"lx"'
-vendorarch=''
-vendorarchexp=''
-vendorbin=''
-vendorbinexp=''
-vendorhtml1dir=' '
-vendorhtml1direxp=''
-vendorhtml3dir=' '
-vendorhtml3direxp=''
-vendorlib=''
-vendorlib_stem=''
-vendorlibexp=''
-vendorman1dir=' '
-vendorman1direxp=''
-vendorman3dir=' '
-vendorman3direxp=''
-vendorprefix=''
-vendorprefixexp=''
-vendorscript=''
-vendorscriptexp=''
-version='5.8.8'
-version_patchlevel_string='version 8 subversion 8'
-versiononly='undef'
-vi=''
-voidflags='15'
-xlibpth='/usr/lib/386 /lib/386'
-yacc='yacc'
-yaccflags=''
-zcat=''
-zip='zip'
-!END!
-
-my $i = 0;
-foreach my $c (4,3,2) { $i |= ord($c); $i <<= 8 }
-$i |= ord(1);
-our $byteorder = join('', unpack('aaaa', pack('L!', $i)));
-s/(byteorder=)(['"]).*?\2/$1$2$Config::byteorder$2/m;
-
-my $config_sh_len = length $_;
-
-our $Config_SH_expanded = "\n$_" . << 'EOVIRTUAL';
-ccflags_nolargefiles=' -s -O2 -DWIN32 -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -fno-strict-aliasing -DPERL_MSVCRT_READFIX'
-ldflags_nolargefiles='-s -L"x:\perl\lib\CORE" -L"x:\msys\mingw\lib"'
-libs_nolargefiles='-lmsvcrt -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32'
-libswanted_nolargefiles=''
-EOVIRTUAL
-
-# Search for it in the big string
-sub fetch_string {
- my($self, $key) = @_;
-
- # We only have ' delimted.
- my $start = index($Config_SH_expanded, "\n$key=\'");
- # Start can never be -1 now, as we've rigged the long string we're
- # searching with an initial dummy newline.
- return undef if $start == -1;
-
- $start += length($key) + 3;
-
- my $value = substr($Config_SH_expanded, $start,
- index($Config_SH_expanded, "'\n", $start)
- - $start);
- # So we can say "if $Config{'foo'}".
- $value = undef if $value eq 'undef';
- $self->{$key} = $value; # cache it
-}
-
-my $prevpos = 0;
-
-sub FIRSTKEY {
- $prevpos = 0;
- substr($Config_SH_expanded, 1, index($Config_SH_expanded, '=') - 1 );
-}
-
-sub NEXTKEY {
- my $pos = index($Config_SH_expanded, qq('\n), $prevpos) + 2;
- my $len = index($Config_SH_expanded, "=", $pos) - $pos;
- $prevpos = $pos;
- $len > 0 ? substr($Config_SH_expanded, $pos, $len) : undef;
-}
-
-sub EXISTS {
- return 1 if exists($_[0]->{$_[1]});
-
- return(index($Config_SH_expanded, "\n$_[1]='") != -1
- );
-}
-
-sub STORE { die "\%Config::Config is read-only\n" }
-*DELETE = \&STORE;
-*CLEAR = \&STORE;
-
-
-sub config_sh {
- substr $Config_SH_expanded, 1, $config_sh_len;
-}
-
-sub config_re {
- my $re = shift;
- return map { chomp; $_ } grep eval{ /^(?:$re)=/ }, split /^/,
- $Config_SH_expanded;
-}
-
-sub config_vars {
- # implements -V:cfgvar option (see perlrun -V:)
- foreach (@_) {
- # find optional leading, trailing colons; and query-spec
- my ($notag,$qry,$lncont) = m/^(:)?(.*?)(:)?$/; # flags fore and aft,
- # map colon-flags to print decorations
- my $prfx = $notag ? '': "$qry="; # tag-prefix for print
- my $lnend = $lncont ? ' ' : ";\n"; # line ending for print
-
- # all config-vars are by definition \w only, any \W means regex
- if ($qry =~ /\W/) {
- my @matches = config_re($qry);
- print map "$_$lnend", @matches ? @matches : "$qry: not found" if !$notag;
- print map { s/\w+=//; "$_$lnend" } @matches ? @matches : "$qry: not found" if $notag;
- } else {
- my $v = (exists $Config::Config{$qry}) ? $Config::Config{$qry}
- : 'UNKNOWN';
- $v = 'undef' unless defined $v;
- print "${prfx}'${v}'$lnend";
- }
- }
-}
-
-# Called by the real AUTOLOAD
-sub launcher {
- undef &AUTOLOAD;
- goto \&$Config::AUTOLOAD;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Cwd.pm b/Master/tlpkg/tlperl/lib/Cwd.pm
deleted file mode 100644
index 8d25af9f7cd..00000000000
--- a/Master/tlpkg/tlperl/lib/Cwd.pm
+++ /dev/null
@@ -1,710 +0,0 @@
-package Cwd;
-
-=head1 NAME
-
-Cwd - get pathname of current working directory
-
-=head1 SYNOPSIS
-
- use Cwd;
- my $dir = getcwd;
-
- use Cwd 'abs_path';
- my $abs_path = abs_path($file);
-
-=head1 DESCRIPTION
-
-This module provides functions for determining the pathname of the
-current working directory. It is recommended that getcwd (or another
-*cwd() function) be used in I<all> code to ensure portability.
-
-By default, it exports the functions cwd(), getcwd(), fastcwd(), and
-fastgetcwd() (and, on Win32, getdcwd()) into the caller's namespace.
-
-
-=head2 getcwd and friends
-
-Each of these functions are called without arguments and return the
-absolute path of the current working directory.
-
-=over 4
-
-=item getcwd
-
- my $cwd = getcwd();
-
-Returns the current working directory.
-
-Re-implements the getcwd(3) (or getwd(3)) functions in Perl.
-
-=item cwd
-
- my $cwd = cwd();
-
-The cwd() is the most natural form for the current architecture. For
-most systems it is identical to `pwd` (but without the trailing line
-terminator).
-
-=item fastcwd
-
- my $cwd = fastcwd();
-
-A more dangerous version of getcwd(), but potentially faster.
-
-It might conceivably chdir() you out of a directory that it can't
-chdir() you back into. If fastcwd encounters a problem it will return
-undef but will probably leave you in a different directory. For a
-measure of extra security, if everything appears to have worked, the
-fastcwd() function will check that it leaves you in the same directory
-that it started in. If it has changed it will C<die> with the message
-"Unstable directory path, current directory changed
-unexpectedly". That should never happen.
-
-=item fastgetcwd
-
- my $cwd = fastgetcwd();
-
-The fastgetcwd() function is provided as a synonym for cwd().
-
-=item getdcwd
-
- my $cwd = getdcwd();
- my $cwd = getdcwd('C:');
-
-The getdcwd() function is also provided on Win32 to get the current working
-directory on the specified drive, since Windows maintains a separate current
-working directory for each drive. If no drive is specified then the current
-drive is assumed.
-
-This function simply calls the Microsoft C library _getdcwd() function.
-
-=back
-
-
-=head2 abs_path and friends
-
-These functions are exported only on request. They each take a single
-argument and return the absolute pathname for it. If no argument is
-given they'll use the current working directory.
-
-=over 4
-
-=item abs_path
-
- my $abs_path = abs_path($file);
-
-Uses the same algorithm as getcwd(). Symbolic links and relative-path
-components ("." and "..") are resolved to return the canonical
-pathname, just like realpath(3).
-
-=item realpath
-
- my $abs_path = realpath($file);
-
-A synonym for abs_path().
-
-=item fast_abs_path
-
- my $abs_path = fast_abs_path($file);
-
-A more dangerous, but potentially faster version of abs_path.
-
-=back
-
-=head2 $ENV{PWD}
-
-If you ask to override your chdir() built-in function,
-
- use Cwd qw(chdir);
-
-then your PWD environment variable will be kept up to date. Note that
-it will only be kept up to date if all packages which use chdir import
-it from Cwd.
-
-
-=head1 NOTES
-
-=over 4
-
-=item *
-
-Since the path seperators are different on some operating systems ('/'
-on Unix, ':' on MacPerl, etc...) we recommend you use the File::Spec
-modules wherever portability is a concern.
-
-=item *
-
-Actually, on Mac OS, the C<getcwd()>, C<fastgetcwd()> and C<fastcwd()>
-functions are all aliases for the C<cwd()> function, which, on Mac OS,
-calls `pwd`. Likewise, the C<abs_path()> function is an alias for
-C<fast_abs_path()>.
-
-=back
-
-=head1 AUTHOR
-
-Originally by the perl5-porters.
-
-Maintained by Ken Williams <KWILLIAMS@cpan.org>
-
-=head1 COPYRIGHT
-
-Copyright (c) 2004 by the Perl 5 Porters. All rights reserved.
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-Portions of the C code in this library are copyright (c) 1994 by the
-Regents of the University of California. All rights reserved. The
-license on this code is compatible with the licensing of the rest of
-the distribution - please see the source code in F<Cwd.xs> for the
-details.
-
-=head1 SEE ALSO
-
-L<File::chdir>
-
-=cut
-
-use strict;
-use Exporter;
-use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION);
-
-$VERSION = '3.12';
-
-@ISA = qw/ Exporter /;
-@EXPORT = qw(cwd getcwd fastcwd fastgetcwd);
-push @EXPORT, qw(getdcwd) if $^O eq 'MSWin32';
-@EXPORT_OK = qw(chdir abs_path fast_abs_path realpath fast_realpath);
-
-# sys_cwd may keep the builtin command
-
-# All the functionality of this module may provided by builtins,
-# there is no sense to process the rest of the file.
-# The best choice may be to have this in BEGIN, but how to return from BEGIN?
-
-if ($^O eq 'os2') {
- local $^W = 0;
-
- *cwd = defined &sys_cwd ? \&sys_cwd : \&_os2_cwd;
- *getcwd = \&cwd;
- *fastgetcwd = \&cwd;
- *fastcwd = \&cwd;
-
- *fast_abs_path = \&sys_abspath if defined &sys_abspath;
- *abs_path = \&fast_abs_path;
- *realpath = \&fast_abs_path;
- *fast_realpath = \&fast_abs_path;
-
- return 1;
-}
-
-# If loading the XS stuff doesn't work, we can fall back to pure perl
-eval {
- if ( $] >= 5.006 ) {
- require XSLoader;
- XSLoader::load( __PACKAGE__, $VERSION );
- } else {
- require DynaLoader;
- push @ISA, 'DynaLoader';
- __PACKAGE__->bootstrap( $VERSION );
- }
-};
-
-# Must be after the DynaLoader stuff:
-$VERSION = eval $VERSION;
-
-# Big nasty table of function aliases
-my %METHOD_MAP =
- (
- VMS =>
- {
- cwd => '_vms_cwd',
- getcwd => '_vms_cwd',
- fastcwd => '_vms_cwd',
- fastgetcwd => '_vms_cwd',
- abs_path => '_vms_abs_path',
- fast_abs_path => '_vms_abs_path',
- },
-
- MSWin32 =>
- {
- # We assume that &_NT_cwd is defined as an XSUB or in the core.
- cwd => '_NT_cwd',
- getcwd => '_NT_cwd',
- fastcwd => '_NT_cwd',
- fastgetcwd => '_NT_cwd',
- abs_path => 'fast_abs_path',
- realpath => 'fast_abs_path',
- },
-
- dos =>
- {
- cwd => '_dos_cwd',
- getcwd => '_dos_cwd',
- fastgetcwd => '_dos_cwd',
- fastcwd => '_dos_cwd',
- abs_path => 'fast_abs_path',
- },
-
- qnx =>
- {
- cwd => '_qnx_cwd',
- getcwd => '_qnx_cwd',
- fastgetcwd => '_qnx_cwd',
- fastcwd => '_qnx_cwd',
- abs_path => '_qnx_abs_path',
- fast_abs_path => '_qnx_abs_path',
- },
-
- cygwin =>
- {
- getcwd => 'cwd',
- fastgetcwd => 'cwd',
- fastcwd => 'cwd',
- abs_path => 'fast_abs_path',
- realpath => 'fast_abs_path',
- },
-
- epoc =>
- {
- cwd => '_epoc_cwd',
- getcwd => '_epoc_cwd',
- fastgetcwd => '_epoc_cwd',
- fastcwd => '_epoc_cwd',
- abs_path => 'fast_abs_path',
- },
-
- MacOS =>
- {
- getcwd => 'cwd',
- fastgetcwd => 'cwd',
- fastcwd => 'cwd',
- abs_path => 'fast_abs_path',
- },
- );
-
-$METHOD_MAP{NT} = $METHOD_MAP{MSWin32};
-$METHOD_MAP{nto} = $METHOD_MAP{qnx};
-
-
-# Find the pwd command in the expected locations. We assume these
-# are safe. This prevents _backtick_pwd() consulting $ENV{PATH}
-# so everything works under taint mode.
-my $pwd_cmd;
-foreach my $try ('/bin/pwd',
- '/usr/bin/pwd',
- '/QOpenSys/bin/pwd', # OS/400 PASE.
- ) {
-
- if( -x $try ) {
- $pwd_cmd = $try;
- last;
- }
-}
-unless ($pwd_cmd) {
- # Isn't this wrong? _backtick_pwd() will fail if somenone has
- # pwd in their path but it is not /bin/pwd or /usr/bin/pwd?
- # See [perl #16774]. --jhi
- $pwd_cmd = 'pwd';
-}
-
-# Lazy-load Carp
-sub _carp { require Carp; Carp::carp(@_) }
-sub _croak { require Carp; Carp::croak(@_) }
-
-# The 'natural and safe form' for UNIX (pwd may be setuid root)
-sub _backtick_pwd {
- # Localize %ENV entries in a way that won't create new hash keys
- my @localize = grep exists $ENV{$_}, qw(PATH IFS CDPATH ENV BASH_ENV);
- local @ENV{@localize};
-
- my $cwd = `$pwd_cmd`;
- # Belt-and-suspenders in case someone said "undef $/".
- local $/ = "\n";
- # `pwd` may fail e.g. if the disk is full
- chomp($cwd) if defined $cwd;
- $cwd;
-}
-
-# Since some ports may predefine cwd internally (e.g., NT)
-# we take care not to override an existing definition for cwd().
-
-unless ($METHOD_MAP{$^O}{cwd} or defined &cwd) {
- # The pwd command is not available in some chroot(2)'ed environments
- my $sep = $Config::Config{path_sep} || ':';
- my $os = $^O; # Protect $^O from tainting
- if( $os eq 'MacOS' || (defined $ENV{PATH} &&
- $os ne 'MSWin32' && # no pwd on Windows
- grep { -x "$_/pwd" } split($sep, $ENV{PATH})) )
- {
- *cwd = \&_backtick_pwd;
- }
- else {
- *cwd = \&getcwd;
- }
-}
-
-# set a reasonable (and very safe) default for fastgetcwd, in case it
-# isn't redefined later (20001212 rspier)
-*fastgetcwd = \&cwd;
-
-# By Brandon S. Allbery
-#
-# Usage: $cwd = getcwd();
-
-sub getcwd
-{
- abs_path('.');
-}
-
-
-# By John Bazik
-#
-# Usage: $cwd = &fastcwd;
-#
-# 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.
-
-sub fastcwd_ {
- my($odev, $oino, $cdev, $cino, $tdev, $tino);
- my(@path, $path);
- local(*DIR);
-
- my($orig_cdev, $orig_cino) = stat('.');
- ($cdev, $cino) = ($orig_cdev, $orig_cino);
- for (;;) {
- my $direntry;
- ($odev, $oino) = ($cdev, $cino);
- CORE::chdir('..') || return undef;
- ($cdev, $cino) = stat('.');
- last if $odev == $cdev && $oino == $cino;
- opendir(DIR, '.') || return undef;
- for (;;) {
- $direntry = readdir(DIR);
- last unless defined $direntry;
- next if $direntry eq '.';
- next if $direntry eq '..';
-
- ($tdev, $tino) = lstat($direntry);
- last unless $tdev != $odev || $tino != $oino;
- }
- closedir(DIR);
- return undef unless defined $direntry; # should never happen
- 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.
- # Untaint it then check that we landed where we started.
- $path =~ /^(.*)\z/s # untaint
- && CORE::chdir($1) or return undef;
- ($cdev, $cino) = stat('.');
- die "Unstable directory path, current directory changed unexpectedly"
- if $cdev != $orig_cdev || $cino != $orig_cino;
- $path;
-}
-if (not defined &fastcwd) { *fastcwd = \&fastcwd_ }
-
-
-# Keeps track of current working directory in PWD environment var
-# Usage:
-# use Cwd 'chdir';
-# chdir $newdir;
-
-my $chdir_init = 0;
-
-sub chdir_init {
- if ($ENV{'PWD'} and $^O ne 'os2' and $^O ne 'dos' and $^O ne 'MSWin32') {
- my($dd,$di) = stat('.');
- my($pd,$pi) = stat($ENV{'PWD'});
- if (!defined $dd or !defined $pd or $di != $pi or $dd != $pd) {
- $ENV{'PWD'} = cwd();
- }
- }
- else {
- my $wd = cwd();
- $wd = Win32::GetFullPathName($wd) if $^O eq 'MSWin32';
- $ENV{'PWD'} = $wd;
- }
- # Strip an automounter prefix (where /tmp_mnt/foo/bar == /foo/bar)
- if ($^O ne 'MSWin32' and $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) {
- $ENV{'PWD'}="$2$3";
- }
- }
- $chdir_init = 1;
-}
-
-sub chdir {
- my $newdir = @_ ? shift : ''; # allow for no arg (chdir to HOME dir)
- $newdir =~ s|///*|/|g unless $^O eq 'MSWin32';
- chdir_init() unless $chdir_init;
- my $newpwd;
- if ($^O eq 'MSWin32') {
- # get the full path name *before* the chdir()
- $newpwd = Win32::GetFullPathName($newdir);
- }
-
- return 0 unless CORE::chdir $newdir;
-
- if ($^O eq 'VMS') {
- return $ENV{'PWD'} = $ENV{'DEFAULT'}
- }
- elsif ($^O eq 'MacOS') {
- return $ENV{'PWD'} = cwd();
- }
- elsif ($^O eq 'MSWin32') {
- $ENV{'PWD'} = $newpwd;
- return 1;
- }
-
- if ($newdir =~ m#^/#s) {
- $ENV{'PWD'} = $newdir;
- } else {
- my @curdir = split(m#/#,$ENV{'PWD'});
- @curdir = ('') unless @curdir;
- my $component;
- foreach $component (split(m#/#, $newdir)) {
- next if $component eq '.';
- pop(@curdir),next if $component eq '..';
- push(@curdir,$component);
- }
- $ENV{'PWD'} = join('/',@curdir) || '/';
- }
- 1;
-}
-
-
-sub _perl_abs_path
-{
- my $start = @_ ? shift : '.';
- my($dotdots, $cwd, @pst, @cst, $dir, @tst);
-
- unless (@cst = stat( $start ))
- {
- _carp("stat($start): $!");
- return '';
- }
-
- unless (-d _) {
- # Make sure we can be invoked on plain files, not just directories.
- # NOTE that this routine assumes that '/' is the only directory separator.
-
- my ($dir, $file) = $start =~ m{^(.*)/(.+)$}
- or return cwd() . '/' . $start;
-
- # Can't use "-l _" here, because the previous stat was a stat(), not an lstat().
- if (-l $start) {
- my $link_target = readlink($start);
- die "Can't resolve link $start: $!" unless defined $link_target;
-
- require File::Spec;
- $link_target = $dir . '/' . $link_target
- unless File::Spec->file_name_is_absolute($link_target);
-
- return abs_path($link_target);
- }
-
- return $dir ? abs_path($dir) . "/$file" : "/$file";
- }
-
- $cwd = '';
- $dotdots = $start;
- do
- {
- $dotdots .= '/..';
- @pst = @cst;
- local *PARENT;
- unless (opendir(PARENT, $dotdots))
- {
- _carp("opendir($dotdots): $!");
- return '';
- }
- unless (@cst = stat($dotdots))
- {
- _carp("stat($dotdots): $!");
- closedir(PARENT);
- return '';
- }
- if ($pst[0] == $cst[0] && $pst[1] == $cst[1])
- {
- $dir = undef;
- }
- else
- {
- do
- {
- unless (defined ($dir = readdir(PARENT)))
- {
- _carp("readdir($dotdots): $!");
- closedir(PARENT);
- return '';
- }
- $tst[0] = $pst[0]+1 unless (@tst = lstat("$dotdots/$dir"))
- }
- while ($dir eq '.' || $dir eq '..' || $tst[0] != $pst[0] ||
- $tst[1] != $pst[1]);
- }
- $cwd = (defined $dir ? "$dir" : "" ) . "/$cwd" ;
- closedir(PARENT);
- } while (defined $dir);
- chop($cwd) unless $cwd eq '/'; # drop the trailing /
- $cwd;
-}
-
-
-my $Curdir;
-sub fast_abs_path {
- local $ENV{PWD} = $ENV{PWD} || ''; # Guard against clobberage
- my $cwd = getcwd();
- require File::Spec;
- my $path = @_ ? shift : ($Curdir ||= File::Spec->curdir);
-
- # Detaint else we'll explode in taint mode. This is safe because
- # we're not doing anything dangerous with it.
- ($path) = $path =~ /(.*)/;
- ($cwd) = $cwd =~ /(.*)/;
-
- unless (-e $path) {
- _croak("$path: No such file or directory");
- }
-
- unless (-d _) {
- # Make sure we can be invoked on plain files, not just directories.
-
- my ($vol, $dir, $file) = File::Spec->splitpath($path);
- return File::Spec->catfile($cwd, $path) unless length $dir;
-
- if (-l $path) {
- my $link_target = readlink($path);
- die "Can't resolve link $path: $!" unless defined $link_target;
-
- $link_target = File::Spec->catpath($vol, $dir, $link_target)
- unless File::Spec->file_name_is_absolute($link_target);
-
- return fast_abs_path($link_target);
- }
-
- return $dir eq File::Spec->rootdir
- ? File::Spec->catpath($vol, $dir, $file)
- : fast_abs_path(File::Spec->catpath($vol, $dir, '')) . '/' . $file;
- }
-
- if (!CORE::chdir($path)) {
- _croak("Cannot chdir to $path: $!");
- }
- my $realpath = getcwd();
- if (! ((-d $cwd) && (CORE::chdir($cwd)))) {
- _croak("Cannot chdir back to $cwd: $!");
- }
- $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 ---
-
-# VMS: $ENV{'DEFAULT'} points to default directory at all times
-# 06-Mar-1996 Charles Bailey bailey@newman.upenn.edu
-# Note: Use of Cwd::chdir() causes the logical name PWD to be defined
-# in the process logical name table as the default device and directory
-# seen by Perl. This may not be the same as the default device
-# and directory seen by DCL after Perl exits, since the effects
-# the CRTL chdir() function persist only until Perl exits.
-
-sub _vms_cwd {
- return $ENV{'DEFAULT'};
-}
-
-sub _vms_abs_path {
- return $ENV{'DEFAULT'} unless @_;
-
- # may need to turn foo.dir into [.foo]
- my $path = VMS::Filespec::pathify($_[0]);
- $path = $_[0] unless defined $path;
-
- return VMS::Filespec::rmsexpand($path);
-}
-
-sub _os2_cwd {
- $ENV{'PWD'} = `cmd /c cd`;
- chomp $ENV{'PWD'};
- $ENV{'PWD'} =~ s:\\:/:g ;
- return $ENV{'PWD'};
-}
-
-sub _win32_cwd {
- $ENV{'PWD'} = Win32::GetCwd();
- $ENV{'PWD'} =~ s:\\:/:g ;
- return $ENV{'PWD'};
-}
-
-*_NT_cwd = defined &Win32::GetCwd ? \&_win32_cwd : \&_os2_cwd;
-
-sub _dos_cwd {
- if (!defined &Dos::GetCwd) {
- $ENV{'PWD'} = `command /c cd`;
- chomp $ENV{'PWD'};
- $ENV{'PWD'} =~ s:\\:/:g ;
- } else {
- $ENV{'PWD'} = Dos::GetCwd();
- }
- return $ENV{'PWD'};
-}
-
-sub _qnx_cwd {
- local $ENV{PATH} = '';
- local $ENV{CDPATH} = '';
- local $ENV{ENV} = '';
- $ENV{'PWD'} = `/usr/bin/fullpath -t`;
- chomp $ENV{'PWD'};
- return $ENV{'PWD'};
-}
-
-sub _qnx_abs_path {
- local $ENV{PATH} = '';
- local $ENV{CDPATH} = '';
- local $ENV{ENV} = '';
- my $path = @_ ? shift : '.';
- local *REALPATH;
-
- defined( open(REALPATH, '-|') || exec '/usr/bin/fullpath', '-t', $path ) or
- die "Can't open /usr/bin/fullpath: $!";
- my $realpath = <REALPATH>;
- close REALPATH;
- chomp $realpath;
- return $realpath;
-}
-
-sub _epoc_cwd {
- $ENV{'PWD'} = EPOC::getcwd();
- return $ENV{'PWD'};
-}
-
-
-# Now that all the base-level functions are set up, alias the
-# user-level functions to the right places
-
-if (exists $METHOD_MAP{$^O}) {
- my $map = $METHOD_MAP{$^O};
- foreach my $name (keys %$map) {
- local $^W = 0; # assignments trigger 'subroutine redefined' warning
- no strict 'refs';
- *{$name} = \&{$map->{$name}};
- }
-}
-
-# In case the XS version doesn't load.
-*abs_path = \&_perl_abs_path unless defined &abs_path;
-
-# added function alias for those of us more
-# used to the libc function. --tchrist 27-Jan-00
-*realpath = \&abs_path;
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Data/Dumper.pm b/Master/tlpkg/tlperl/lib/Data/Dumper.pm
deleted file mode 100644
index b7fe1d61e77..00000000000
--- a/Master/tlpkg/tlperl/lib/Data/Dumper.pm
+++ /dev/null
@@ -1,1264 +0,0 @@
-#
-# Data/Dumper.pm
-#
-# convert perl data structures into perl syntax suitable for both printing
-# and eval
-#
-# Documentation at the __END__
-#
-
-package Data::Dumper;
-
-$VERSION = '2.121_08';
-
-#$| = 1;
-
-use 5.006_001;
-require Exporter;
-require overload;
-
-use Carp;
-
-BEGIN {
- @ISA = qw(Exporter);
- @EXPORT = qw(Dumper);
- @EXPORT_OK = qw(DumperX);
-
- # if run under miniperl, or otherwise lacking dynamic loading,
- # XSLoader should be attempted to load, or the pure perl flag
- # toggled on load failure.
- eval {
- require XSLoader;
- };
- $Useperl = 1 if $@;
-}
-
-XSLoader::load( 'Data::Dumper' ) unless $Useperl;
-
-# module vars and their defaults
-$Indent = 2 unless defined $Indent;
-$Purity = 0 unless defined $Purity;
-$Pad = "" unless defined $Pad;
-$Varname = "VAR" unless defined $Varname;
-$Useqq = 0 unless defined $Useqq;
-$Terse = 0 unless defined $Terse;
-$Freezer = "" unless defined $Freezer;
-$Toaster = "" unless defined $Toaster;
-$Deepcopy = 0 unless defined $Deepcopy;
-$Quotekeys = 1 unless defined $Quotekeys;
-$Bless = "bless" unless defined $Bless;
-#$Expdepth = 0 unless defined $Expdepth;
-$Maxdepth = 0 unless defined $Maxdepth;
-$Pair = ' => ' unless defined $Pair;
-$Useperl = 0 unless defined $Useperl;
-$Sortkeys = 0 unless defined $Sortkeys;
-$Deparse = 0 unless defined $Deparse;
-
-#
-# expects an arrayref of values to be dumped.
-# can optionally pass an arrayref of names for the values.
-# names must have leading $ sign stripped. begin the name with *
-# to cause output of arrays and hashes rather than refs.
-#
-sub new {
- my($c, $v, $n) = @_;
-
- croak "Usage: PACKAGE->new(ARRAYREF, [ARRAYREF])"
- unless (defined($v) && (ref($v) eq 'ARRAY'));
- $n = [] unless (defined($n) && (ref($v) eq 'ARRAY'));
-
- my($s) = {
- level => 0, # current recursive depth
- indent => $Indent, # various styles of indenting
- pad => $Pad, # all lines prefixed by this string
- xpad => "", # padding-per-level
- apad => "", # added padding for hash keys n such
- sep => "", # list separator
- pair => $Pair, # hash key/value separator: defaults to ' => '
- seen => {}, # local (nested) refs (id => [name, val])
- todump => $v, # values to dump []
- names => $n, # optional names for values []
- varname => $Varname, # prefix to use for tagging nameless ones
- purity => $Purity, # degree to which output is evalable
- useqq => $Useqq, # use "" for strings (backslashitis ensues)
- terse => $Terse, # avoid name output (where feasible)
- freezer => $Freezer, # name of Freezer method for objects
- toaster => $Toaster, # name of method to revive objects
- deepcopy => $Deepcopy, # dont cross-ref, except to stop recursion
- quotekeys => $Quotekeys, # quote hash keys
- 'bless' => $Bless, # keyword to use for "bless"
-# expdepth => $Expdepth, # cutoff depth for explicit dumping
- maxdepth => $Maxdepth, # depth beyond which we give up
- useperl => $Useperl, # use the pure Perl implementation
- sortkeys => $Sortkeys, # flag or filter for sorting hash keys
- deparse => $Deparse, # use B::Deparse for coderefs
- };
-
- if ($Indent > 0) {
- $s->{xpad} = " ";
- $s->{sep} = "\n";
- }
- return bless($s, $c);
-}
-
-sub init_refaddr_format {
- require Config;
- my $f = $Config::Config{uvxformat};
- $f =~ tr/"//d;
- our $refaddr_format = "0x%" . $f;
-}
-
-sub format_refaddr {
- require Scalar::Util;
- sprintf our $refaddr_format, Scalar::Util::refaddr(shift);
-}
-
-#
-# add-to or query the table of already seen references
-#
-sub Seen {
- my($s, $g) = @_;
- if (defined($g) && (ref($g) eq 'HASH')) {
- my($k, $v, $id);
- while (($k, $v) = each %$g) {
- if (defined $v and ref $v) {
- $id = format_refaddr($v);
- if ($k =~ /^[*](.*)$/) {
- $k = (ref $v eq 'ARRAY') ? ( "\\\@" . $1 ) :
- (ref $v eq 'HASH') ? ( "\\\%" . $1 ) :
- (ref $v eq 'CODE') ? ( "\\\&" . $1 ) :
- ( "\$" . $1 ) ;
- }
- elsif ($k !~ /^\$/) {
- $k = "\$" . $k;
- }
- $s->{seen}{$id} = [$k, $v];
- }
- else {
- carp "Only refs supported, ignoring non-ref item \$$k";
- }
- }
- return $s;
- }
- else {
- return map { @$_ } values %{$s->{seen}};
- }
-}
-
-#
-# set or query the values to be dumped
-#
-sub Values {
- my($s, $v) = @_;
- if (defined($v) && (ref($v) eq 'ARRAY')) {
- $s->{todump} = [@$v]; # make a copy
- return $s;
- }
- else {
- return @{$s->{todump}};
- }
-}
-
-#
-# set or query the names of the values to be dumped
-#
-sub Names {
- my($s, $n) = @_;
- if (defined($n) && (ref($n) eq 'ARRAY')) {
- $s->{names} = [@$n]; # make a copy
- return $s;
- }
- else {
- return @{$s->{names}};
- }
-}
-
-sub DESTROY {}
-
-sub Dump {
- return &Dumpxs
- unless $Data::Dumper::Useperl || (ref($_[0]) && $_[0]->{useperl}) ||
- $Data::Dumper::Useqq || (ref($_[0]) && $_[0]->{useqq}) ||
- $Data::Dumper::Deparse || (ref($_[0]) && $_[0]->{deparse});
- return &Dumpperl;
-}
-
-#
-# dump the refs in the current dumper object.
-# expects same args as new() if called via package name.
-#
-sub Dumpperl {
- my($s) = shift;
- my(@out, $val, $name);
- my($i) = 0;
- local(@post);
- init_refaddr_format();
-
- $s = $s->new(@_) unless ref $s;
-
- for $val (@{$s->{todump}}) {
- my $out = "";
- @post = ();
- $name = $s->{names}[$i++];
- if (defined $name) {
- if ($name =~ /^[*](.*)$/) {
- if (defined $val) {
- $name = (ref $val eq 'ARRAY') ? ( "\@" . $1 ) :
- (ref $val eq 'HASH') ? ( "\%" . $1 ) :
- (ref $val eq 'CODE') ? ( "\*" . $1 ) :
- ( "\$" . $1 ) ;
- }
- else {
- $name = "\$" . $1;
- }
- }
- elsif ($name !~ /^\$/) {
- $name = "\$" . $name;
- }
- }
- else {
- $name = "\$" . $s->{varname} . $i;
- }
-
- my $valstr;
- {
- local($s->{apad}) = $s->{apad};
- $s->{apad} .= ' ' x (length($name) + 3) if $s->{indent} >= 2;
- $valstr = $s->_dump($val, $name);
- }
-
- $valstr = "$name = " . $valstr . ';' if @post or !$s->{terse};
- $out .= $s->{pad} . $valstr . $s->{sep};
- $out .= $s->{pad} . join(';' . $s->{sep} . $s->{pad}, @post)
- . ';' . $s->{sep} if @post;
-
- push @out, $out;
- }
- return wantarray ? @out : join('', @out);
-}
-
-#
-# twist, toil and turn;
-# and recurse, of course.
-# sometimes sordidly;
-# and curse if no recourse.
-#
-sub _dump {
- my($s, $val, $name) = @_;
- my($sname);
- my($out, $realpack, $realtype, $type, $ipad, $id, $blesspad);
-
- $type = ref $val;
- $out = "";
-
- if ($type) {
-
- # Call the freezer method if it's specified and the object has the
- # method. Trap errors and warn() instead of die()ing, like the XS
- # implementation.
- my $freezer = $s->{freezer};
- if ($freezer and UNIVERSAL::can($val, $freezer)) {
- eval { $val->$freezer() };
- warn "WARNING(Freezer method call failed): $@" if $@;
- }
-
- require Scalar::Util;
- $realpack = Scalar::Util::blessed($val);
- $realtype = $realpack ? Scalar::Util::reftype($val) : ref $val;
- $id = format_refaddr($val);
-
- # if it has a name, we need to either look it up, or keep a tab
- # on it so we know when we hit it later
- if (defined($name) and length($name)) {
- # keep a tab on it so that we dont fall into recursive pit
- if (exists $s->{seen}{$id}) {
-# if ($s->{expdepth} < $s->{level}) {
- if ($s->{purity} and $s->{level} > 0) {
- $out = ($realtype eq 'HASH') ? '{}' :
- ($realtype eq 'ARRAY') ? '[]' :
- 'do{my $o}' ;
- push @post, $name . " = " . $s->{seen}{$id}[0];
- }
- else {
- $out = $s->{seen}{$id}[0];
- if ($name =~ /^([\@\%])/) {
- my $start = $1;
- if ($out =~ /^\\$start/) {
- $out = substr($out, 1);
- }
- else {
- $out = $start . '{' . $out . '}';
- }
- }
- }
- return $out;
-# }
- }
- else {
- # store our name
- $s->{seen}{$id} = [ (($name =~ /^[@%]/) ? ('\\' . $name ) :
- ($realtype eq 'CODE' and
- $name =~ /^[*](.*)$/) ? ('\\&' . $1 ) :
- $name ),
- $val ];
- }
- }
-
- if ($realpack and $realpack eq 'Regexp') {
- $out = "$val";
- $out =~ s,/,\\/,g;
- return "qr/$out/";
- }
-
- # If purity is not set and maxdepth is set, then check depth:
- # if we have reached maximum depth, return the string
- # representation of the thing we are currently examining
- # at this depth (i.e., 'Foo=ARRAY(0xdeadbeef)').
- if (!$s->{purity}
- and $s->{maxdepth} > 0
- and $s->{level} >= $s->{maxdepth})
- {
- return qq['$val'];
- }
-
- # we have a blessed ref
- if ($realpack) {
- $out = $s->{'bless'} . '( ';
- $blesspad = $s->{apad};
- $s->{apad} .= ' ' if ($s->{indent} >= 2);
- }
-
- $s->{level}++;
- $ipad = $s->{xpad} x $s->{level};
-
- if ($realtype eq 'SCALAR' || $realtype eq 'REF') {
- if ($realpack) {
- $out .= 'do{\\(my $o = ' . $s->_dump($$val, "\${$name}") . ')}';
- }
- else {
- $out .= '\\' . $s->_dump($$val, "\${$name}");
- }
- }
- elsif ($realtype eq 'GLOB') {
- $out .= '\\' . $s->_dump($$val, "*{$name}");
- }
- elsif ($realtype eq 'ARRAY') {
- my($v, $pad, $mname);
- my($i) = 0;
- $out .= ($name =~ /^\@/) ? '(' : '[';
- $pad = $s->{sep} . $s->{pad} . $s->{apad};
- ($name =~ /^\@(.*)$/) ? ($mname = "\$" . $1) :
- # omit -> if $foo->[0]->{bar}, but not ${$foo->[0]}->{bar}
- ($name =~ /^\\?[\%\@\*\$][^{].*[]}]$/) ? ($mname = $name) :
- ($mname = $name . '->');
- $mname .= '->' if $mname =~ /^\*.+\{[A-Z]+\}$/;
- for $v (@$val) {
- $sname = $mname . '[' . $i . ']';
- $out .= $pad . $ipad . '#' . $i if $s->{indent} >= 3;
- $out .= $pad . $ipad . $s->_dump($v, $sname);
- $out .= "," if $i++ < $#$val;
- }
- $out .= $pad . ($s->{xpad} x ($s->{level} - 1)) if $i;
- $out .= ($name =~ /^\@/) ? ')' : ']';
- }
- elsif ($realtype eq 'HASH') {
- my($k, $v, $pad, $lpad, $mname, $pair);
- $out .= ($name =~ /^\%/) ? '(' : '{';
- $pad = $s->{sep} . $s->{pad} . $s->{apad};
- $lpad = $s->{apad};
- $pair = $s->{pair};
- ($name =~ /^\%(.*)$/) ? ($mname = "\$" . $1) :
- # omit -> if $foo->[0]->{bar}, but not ${$foo->[0]}->{bar}
- ($name =~ /^\\?[\%\@\*\$][^{].*[]}]$/) ? ($mname = $name) :
- ($mname = $name . '->');
- $mname .= '->' if $mname =~ /^\*.+\{[A-Z]+\}$/;
- my ($sortkeys, $keys, $key) = ("$s->{sortkeys}");
- if ($sortkeys) {
- if (ref($s->{sortkeys}) eq 'CODE') {
- $keys = $s->{sortkeys}($val);
- unless (ref($keys) eq 'ARRAY') {
- carp "Sortkeys subroutine did not return ARRAYREF";
- $keys = [];
- }
- }
- else {
- $keys = [ sort keys %$val ];
- }
- }
- while (($k, $v) = ! $sortkeys ? (each %$val) :
- @$keys ? ($key = shift(@$keys), $val->{$key}) :
- () )
- {
- my $nk = $s->_dump($k, "");
- $nk = $1 if !$s->{quotekeys} and $nk =~ /^[\"\']([A-Za-z_]\w*)[\"\']$/;
- $sname = $mname . '{' . $nk . '}';
- $out .= $pad . $ipad . $nk . $pair;
-
- # temporarily alter apad
- $s->{apad} .= (" " x (length($nk) + 4)) if $s->{indent} >= 2;
- $out .= $s->_dump($val->{$k}, $sname) . ",";
- $s->{apad} = $lpad if $s->{indent} >= 2;
- }
- if (substr($out, -1) eq ',') {
- chop $out;
- $out .= $pad . ($s->{xpad} x ($s->{level} - 1));
- }
- $out .= ($name =~ /^\%/) ? ')' : '}';
- }
- elsif ($realtype eq 'CODE') {
- if ($s->{deparse}) {
- require B::Deparse;
- my $sub = 'sub ' . (B::Deparse->new)->coderef2text($val);
- $pad = $s->{sep} . $s->{pad} . $s->{apad} . $s->{xpad} x ($s->{level} - 1);
- $sub =~ s/\n/$pad/gse;
- $out .= $sub;
- } else {
- $out .= 'sub { "DUMMY" }';
- carp "Encountered CODE ref, using dummy placeholder" if $s->{purity};
- }
- }
- else {
- croak "Can\'t handle $realtype type.";
- }
-
- if ($realpack) { # we have a blessed ref
- $out .= ', \'' . $realpack . '\'' . ' )';
- $out .= '->' . $s->{toaster} . '()' if $s->{toaster} ne '';
- $s->{apad} = $blesspad;
- }
- $s->{level}--;
-
- }
- else { # simple scalar
-
- my $ref = \$_[1];
- # first, catalog the scalar
- if ($name ne '') {
- $id = format_refaddr($ref);
- if (exists $s->{seen}{$id}) {
- if ($s->{seen}{$id}[2]) {
- $out = $s->{seen}{$id}[0];
- #warn "[<$out]\n";
- return "\${$out}";
- }
- }
- else {
- #warn "[>\\$name]\n";
- $s->{seen}{$id} = ["\\$name", $ref];
- }
- }
- if (ref($ref) eq 'GLOB' or "$ref" =~ /=GLOB\([^()]+\)$/) { # glob
- my $name = substr($val, 1);
- if ($name =~ /^[A-Za-z_][\w:]*$/) {
- $name =~ s/^main::/::/;
- $sname = $name;
- }
- else {
- $sname = $s->_dump($name, "");
- $sname = '{' . $sname . '}';
- }
- if ($s->{purity}) {
- my $k;
- local ($s->{level}) = 0;
- for $k (qw(SCALAR ARRAY HASH)) {
- my $gval = *$val{$k};
- next unless defined $gval;
- next if $k eq "SCALAR" && ! defined $$gval; # always there
-
- # _dump can push into @post, so we hold our place using $postlen
- my $postlen = scalar @post;
- $post[$postlen] = "\*$sname = ";
- local ($s->{apad}) = " " x length($post[$postlen]) if $s->{indent} >= 2;
- $post[$postlen] .= $s->_dump($gval, "\*$sname\{$k\}");
- }
- }
- $out .= '*' . $sname;
- }
- elsif (!defined($val)) {
- $out .= "undef";
- }
- elsif ($val =~ /^(?:0|-?[1-9]\d{0,8})\z/) { # safe decimal number
- $out .= $val;
- }
- else { # string
- if ($s->{useqq} or $val =~ tr/\0-\377//c) {
- # Fall back to qq if there's unicode
- $out .= qquote($val, $s->{useqq});
- }
- else {
- $val =~ s/([\\\'])/\\$1/g;
- $out .= '\'' . $val . '\'';
- }
- }
- }
- if ($id) {
- # if we made it this far, $id was added to seen list at current
- # level, so remove it to get deep copies
- if ($s->{deepcopy}) {
- delete($s->{seen}{$id});
- }
- elsif ($name) {
- $s->{seen}{$id}[2] = 1;
- }
- }
- return $out;
-}
-
-#
-# non-OO style of earlier version
-#
-sub Dumper {
- return Data::Dumper->Dump([@_]);
-}
-
-# compat stub
-sub DumperX {
- return Data::Dumper->Dumpxs([@_], []);
-}
-
-sub Dumpf { return Data::Dumper->Dump(@_) }
-
-sub Dumpp { print Data::Dumper->Dump(@_) }
-
-#
-# reset the "seen" cache
-#
-sub Reset {
- my($s) = shift;
- $s->{seen} = {};
- return $s;
-}
-
-sub Indent {
- my($s, $v) = @_;
- if (defined($v)) {
- if ($v == 0) {
- $s->{xpad} = "";
- $s->{sep} = "";
- }
- else {
- $s->{xpad} = " ";
- $s->{sep} = "\n";
- }
- $s->{indent} = $v;
- return $s;
- }
- else {
- return $s->{indent};
- }
-}
-
-sub Pair {
- my($s, $v) = @_;
- defined($v) ? (($s->{pair} = $v), return $s) : $s->{pair};
-}
-
-sub Pad {
- my($s, $v) = @_;
- defined($v) ? (($s->{pad} = $v), return $s) : $s->{pad};
-}
-
-sub Varname {
- my($s, $v) = @_;
- defined($v) ? (($s->{varname} = $v), return $s) : $s->{varname};
-}
-
-sub Purity {
- my($s, $v) = @_;
- defined($v) ? (($s->{purity} = $v), return $s) : $s->{purity};
-}
-
-sub Useqq {
- my($s, $v) = @_;
- defined($v) ? (($s->{useqq} = $v), return $s) : $s->{useqq};
-}
-
-sub Terse {
- my($s, $v) = @_;
- defined($v) ? (($s->{terse} = $v), return $s) : $s->{terse};
-}
-
-sub Freezer {
- my($s, $v) = @_;
- defined($v) ? (($s->{freezer} = $v), return $s) : $s->{freezer};
-}
-
-sub Toaster {
- my($s, $v) = @_;
- defined($v) ? (($s->{toaster} = $v), return $s) : $s->{toaster};
-}
-
-sub Deepcopy {
- my($s, $v) = @_;
- defined($v) ? (($s->{deepcopy} = $v), return $s) : $s->{deepcopy};
-}
-
-sub Quotekeys {
- my($s, $v) = @_;
- defined($v) ? (($s->{quotekeys} = $v), return $s) : $s->{quotekeys};
-}
-
-sub Bless {
- my($s, $v) = @_;
- defined($v) ? (($s->{'bless'} = $v), return $s) : $s->{'bless'};
-}
-
-sub Maxdepth {
- my($s, $v) = @_;
- defined($v) ? (($s->{'maxdepth'} = $v), return $s) : $s->{'maxdepth'};
-}
-
-sub Useperl {
- my($s, $v) = @_;
- defined($v) ? (($s->{'useperl'} = $v), return $s) : $s->{'useperl'};
-}
-
-sub Sortkeys {
- my($s, $v) = @_;
- defined($v) ? (($s->{'sortkeys'} = $v), return $s) : $s->{'sortkeys'};
-}
-
-sub Deparse {
- my($s, $v) = @_;
- defined($v) ? (($s->{'deparse'} = $v), return $s) : $s->{'deparse'};
-}
-
-# used by qquote below
-my %esc = (
- "\a" => "\\a",
- "\b" => "\\b",
- "\t" => "\\t",
- "\n" => "\\n",
- "\f" => "\\f",
- "\r" => "\\r",
- "\e" => "\\e",
-);
-
-# put a string value in double quotes
-sub qquote {
- local($_) = shift;
- s/([\\\"\@\$])/\\$1/g;
- my $bytes; { use bytes; $bytes = length }
- s/([^\x00-\x7f])/'\x{'.sprintf("%x",ord($1)).'}'/ge if $bytes > length;
- return qq("$_") unless
- /[^ !"\#\$%&'()*+,\-.\/0-9:;<=>?\@A-Z[\\\]^_`a-z{|}~]/; # fast exit
-
- my $high = shift || "";
- s/([\a\b\t\n\f\r\e])/$esc{$1}/g;
-
- if (ord('^')==94) { # ascii
- # no need for 3 digits in escape for these
- s/([\0-\037])(?!\d)/'\\'.sprintf('%o',ord($1))/eg;
- s/([\0-\037\177])/'\\'.sprintf('%03o',ord($1))/eg;
- # all but last branch below not supported --BEHAVIOR SUBJECT TO CHANGE--
- if ($high eq "iso8859") {
- s/([\200-\240])/'\\'.sprintf('%o',ord($1))/eg;
- } elsif ($high eq "utf8") {
-# use utf8;
-# $str =~ s/([^\040-\176])/sprintf "\\x{%04x}", ord($1)/ge;
- } elsif ($high eq "8bit") {
- # leave it as it is
- } else {
- s/([\200-\377])/'\\'.sprintf('%03o',ord($1))/eg;
- s/([^\040-\176])/sprintf "\\x{%04x}", ord($1)/ge;
- }
- }
- else { # ebcdic
- s{([^ !"\#\$%&'()*+,\-.\/0-9:;<=>?\@A-Z[\\\]^_`a-z{|}~])(?!\d)}
- {my $v = ord($1); '\\'.sprintf(($v <= 037 ? '%o' : '%03o'), $v)}eg;
- s{([^ !"\#\$%&'()*+,\-.\/0-9:;<=>?\@A-Z[\\\]^_`a-z{|}~])}
- {'\\'.sprintf('%03o',ord($1))}eg;
- }
-
- return qq("$_");
-}
-
-# helper sub to sort hash keys in Perl < 5.8.0 where we don't have
-# access to sortsv() from XS
-sub _sortkeys { [ sort keys %{$_[0]} ] }
-
-1;
-__END__
-
-=head1 NAME
-
-Data::Dumper - stringified perl data structures, suitable for both printing and C<eval>
-
-=head1 SYNOPSIS
-
- use Data::Dumper;
-
- # simple procedural interface
- print Dumper($foo, $bar);
-
- # extended usage with names
- print Data::Dumper->Dump([$foo, $bar], [qw(foo *ary)]);
-
- # configuration variables
- {
- local $Data::Dumper::Purity = 1;
- eval Data::Dumper->Dump([$foo, $bar], [qw(foo *ary)]);
- }
-
- # OO usage
- $d = Data::Dumper->new([$foo, $bar], [qw(foo *ary)]);
- ...
- print $d->Dump;
- ...
- $d->Purity(1)->Terse(1)->Deepcopy(1);
- eval $d->Dump;
-
-
-=head1 DESCRIPTION
-
-Given a list of scalars or reference variables, writes out their contents in
-perl syntax. The references can also be objects. The contents of each
-variable is output in a single Perl statement. Handles self-referential
-structures correctly.
-
-The return value can be C<eval>ed to get back an identical copy of the
-original reference structure.
-
-Any references that are the same as one of those passed in will be named
-C<$VAR>I<n> (where I<n> is a numeric suffix), and other duplicate references
-to substructures within C<$VAR>I<n> will be appropriately labeled using arrow
-notation. You can specify names for individual values to be dumped if you
-use the C<Dump()> method, or you can change the default C<$VAR> prefix to
-something else. See C<$Data::Dumper::Varname> and C<$Data::Dumper::Terse>
-below.
-
-The default output of self-referential structures can be C<eval>ed, but the
-nested references to C<$VAR>I<n> will be undefined, since a recursive
-structure cannot be constructed using one Perl statement. You should set the
-C<Purity> flag to 1 to get additional statements that will correctly fill in
-these references. Moreover, if C<eval>ed when strictures are in effect,
-you need to ensure that any variables it accesses are previously declared.
-
-In the extended usage form, the references to be dumped can be given
-user-specified names. If a name begins with a C<*>, the output will
-describe the dereferenced type of the supplied reference for hashes and
-arrays, and coderefs. Output of names will be avoided where possible if
-the C<Terse> flag is set.
-
-In many cases, methods that are used to set the internal state of the
-object will return the object itself, so method calls can be conveniently
-chained together.
-
-Several styles of output are possible, all controlled by setting
-the C<Indent> flag. See L<Configuration Variables or Methods> below
-for details.
-
-
-=head2 Methods
-
-=over 4
-
-=item I<PACKAGE>->new(I<ARRAYREF [>, I<ARRAYREF]>)
-
-Returns a newly created C<Data::Dumper> object. The first argument is an
-anonymous array of values to be dumped. The optional second argument is an
-anonymous array of names for the values. The names need not have a leading
-C<$> sign, and must be comprised of alphanumeric characters. You can begin
-a name with a C<*> to specify that the dereferenced type must be dumped
-instead of the reference itself, for ARRAY and HASH references.
-
-The prefix specified by C<$Data::Dumper::Varname> will be used with a
-numeric suffix if the name for a value is undefined.
-
-Data::Dumper will catalog all references encountered while dumping the
-values. Cross-references (in the form of names of substructures in perl
-syntax) will be inserted at all possible points, preserving any structural
-interdependencies in the original set of values. Structure traversal is
-depth-first, and proceeds in order from the first supplied value to
-the last.
-
-=item I<$OBJ>->Dump I<or> I<PACKAGE>->Dump(I<ARRAYREF [>, I<ARRAYREF]>)
-
-Returns the stringified form of the values stored in the object (preserving
-the order in which they were supplied to C<new>), subject to the
-configuration options below. In a list context, it returns a list
-of strings corresponding to the supplied values.
-
-The second form, for convenience, simply calls the C<new> method on its
-arguments before dumping the object immediately.
-
-=item I<$OBJ>->Seen(I<[HASHREF]>)
-
-Queries or adds to the internal table of already encountered references.
-You must use C<Reset> to explicitly clear the table if needed. Such
-references are not dumped; instead, their names are inserted wherever they
-are encountered subsequently. This is useful especially for properly
-dumping subroutine references.
-
-Expects an anonymous hash of name => value pairs. Same rules apply for names
-as in C<new>. If no argument is supplied, will return the "seen" list of
-name => value pairs, in a list context. Otherwise, returns the object
-itself.
-
-=item I<$OBJ>->Values(I<[ARRAYREF]>)
-
-Queries or replaces the internal array of values that will be dumped.
-When called without arguments, returns the values. Otherwise, returns the
-object itself.
-
-=item I<$OBJ>->Names(I<[ARRAYREF]>)
-
-Queries or replaces the internal array of user supplied names for the values
-that will be dumped. When called without arguments, returns the names.
-Otherwise, returns the object itself.
-
-=item I<$OBJ>->Reset
-
-Clears the internal table of "seen" references and returns the object
-itself.
-
-=back
-
-=head2 Functions
-
-=over 4
-
-=item Dumper(I<LIST>)
-
-Returns the stringified form of the values in the list, subject to the
-configuration options below. The values will be named C<$VAR>I<n> in the
-output, where I<n> is a numeric suffix. Will return a list of strings
-in a list context.
-
-=back
-
-=head2 Configuration Variables or Methods
-
-Several configuration variables can be used to control the kind of output
-generated when using the procedural interface. These variables are usually
-C<local>ized in a block so that other parts of the code are not affected by
-the change.
-
-These variables determine the default state of the object created by calling
-the C<new> method, but cannot be used to alter the state of the object
-thereafter. The equivalent method names should be used instead to query
-or set the internal state of the object.
-
-The method forms return the object itself when called with arguments,
-so that they can be chained together nicely.
-
-=over 4
-
-=item *
-
-$Data::Dumper::Indent I<or> I<$OBJ>->Indent(I<[NEWVAL]>)
-
-Controls the style of indentation. It can be set to 0, 1, 2 or 3. Style 0
-spews output without any newlines, indentation, or spaces between list
-items. It is the most compact format possible that can still be called
-valid perl. Style 1 outputs a readable form with newlines but no fancy
-indentation (each level in the structure is simply indented by a fixed
-amount of whitespace). Style 2 (the default) outputs a very readable form
-which takes into account the length of hash keys (so the hash value lines
-up). Style 3 is like style 2, but also annotates the elements of arrays
-with their index (but the comment is on its own line, so array output
-consumes twice the number of lines). Style 2 is the default.
-
-=item *
-
-$Data::Dumper::Purity I<or> I<$OBJ>->Purity(I<[NEWVAL]>)
-
-Controls the degree to which the output can be C<eval>ed to recreate the
-supplied reference structures. Setting it to 1 will output additional perl
-statements that will correctly recreate nested references. The default is
-0.
-
-=item *
-
-$Data::Dumper::Pad I<or> I<$OBJ>->Pad(I<[NEWVAL]>)
-
-Specifies the string that will be prefixed to every line of the output.
-Empty string by default.
-
-=item *
-
-$Data::Dumper::Varname I<or> I<$OBJ>->Varname(I<[NEWVAL]>)
-
-Contains the prefix to use for tagging variable names in the output. The
-default is "VAR".
-
-=item *
-
-$Data::Dumper::Useqq I<or> I<$OBJ>->Useqq(I<[NEWVAL]>)
-
-When set, enables the use of double quotes for representing string values.
-Whitespace other than space will be represented as C<[\n\t\r]>, "unsafe"
-characters will be backslashed, and unprintable characters will be output as
-quoted octal integers. Since setting this variable imposes a performance
-penalty, the default is 0. C<Dump()> will run slower if this flag is set,
-since the fast XSUB implementation doesn't support it yet.
-
-=item *
-
-$Data::Dumper::Terse I<or> I<$OBJ>->Terse(I<[NEWVAL]>)
-
-When set, Data::Dumper will emit single, non-self-referential values as
-atoms/terms rather than statements. This means that the C<$VAR>I<n> names
-will be avoided where possible, but be advised that such output may not
-always be parseable by C<eval>.
-
-=item *
-
-$Data::Dumper::Freezer I<or> $I<OBJ>->Freezer(I<[NEWVAL]>)
-
-Can be set to a method name, or to an empty string to disable the feature.
-Data::Dumper will invoke that method via the object before attempting to
-stringify it. This method can alter the contents of the object (if, for
-instance, it contains data allocated from C), and even rebless it in a
-different package. The client is responsible for making sure the specified
-method can be called via the object, and that the object ends up containing
-only perl data types after the method has been called. Defaults to an empty
-string.
-
-If an object does not support the method specified (determined using
-UNIVERSAL::can()) then the call will be skipped. If the method dies a
-warning will be generated.
-
-=item *
-
-$Data::Dumper::Toaster I<or> $I<OBJ>->Toaster(I<[NEWVAL]>)
-
-Can be set to a method name, or to an empty string to disable the feature.
-Data::Dumper will emit a method call for any objects that are to be dumped
-using the syntax C<bless(DATA, CLASS)-E<gt>METHOD()>. Note that this means that
-the method specified will have to perform any modifications required on the
-object (like creating new state within it, and/or reblessing it in a
-different package) and then return it. The client is responsible for making
-sure the method can be called via the object, and that it returns a valid
-object. Defaults to an empty string.
-
-=item *
-
-$Data::Dumper::Deepcopy I<or> $I<OBJ>->Deepcopy(I<[NEWVAL]>)
-
-Can be set to a boolean value to enable deep copies of structures.
-Cross-referencing will then only be done when absolutely essential
-(i.e., to break reference cycles). Default is 0.
-
-=item *
-
-$Data::Dumper::Quotekeys I<or> $I<OBJ>->Quotekeys(I<[NEWVAL]>)
-
-Can be set to a boolean value to control whether hash keys are quoted.
-A false value will avoid quoting hash keys when it looks like a simple
-string. Default is 1, which will always enclose hash keys in quotes.
-
-=item *
-
-$Data::Dumper::Bless I<or> $I<OBJ>->Bless(I<[NEWVAL]>)
-
-Can be set to a string that specifies an alternative to the C<bless>
-builtin operator used to create objects. A function with the specified
-name should exist, and should accept the same arguments as the builtin.
-Default is C<bless>.
-
-=item *
-
-$Data::Dumper::Pair I<or> $I<OBJ>->Pair(I<[NEWVAL]>)
-
-Can be set to a string that specifies the separator between hash keys
-and values. To dump nested hash, array and scalar values to JavaScript,
-use: C<$Data::Dumper::Pair = ' : ';>. Implementing C<bless> in JavaScript
-is left as an exercise for the reader.
-A function with the specified name exists, and accepts the same arguments
-as the builtin.
-
-Default is: C< =E<gt> >.
-
-=item *
-
-$Data::Dumper::Maxdepth I<or> $I<OBJ>->Maxdepth(I<[NEWVAL]>)
-
-Can be set to a positive integer that specifies the depth beyond which
-which we don't venture into a structure. Has no effect when
-C<Data::Dumper::Purity> is set. (Useful in debugger when we often don't
-want to see more than enough). Default is 0, which means there is
-no maximum depth.
-
-=item *
-
-$Data::Dumper::Useperl I<or> $I<OBJ>->Useperl(I<[NEWVAL]>)
-
-Can be set to a boolean value which controls whether the pure Perl
-implementation of C<Data::Dumper> is used. The C<Data::Dumper> module is
-a dual implementation, with almost all functionality written in both
-pure Perl and also in XS ('C'). Since the XS version is much faster, it
-will always be used if possible. This option lets you override the
-default behavior, usually for testing purposes only. Default is 0, which
-means the XS implementation will be used if possible.
-
-=item *
-
-$Data::Dumper::Sortkeys I<or> $I<OBJ>->Sortkeys(I<[NEWVAL]>)
-
-Can be set to a boolean value to control whether hash keys are dumped in
-sorted order. A true value will cause the keys of all hashes to be
-dumped in Perl's default sort order. Can also be set to a subroutine
-reference which will be called for each hash that is dumped. In this
-case C<Data::Dumper> will call the subroutine once for each hash,
-passing it the reference of the hash. The purpose of the subroutine is
-to return a reference to an array of the keys that will be dumped, in
-the order that they should be dumped. Using this feature, you can
-control both the order of the keys, and which keys are actually used. In
-other words, this subroutine acts as a filter by which you can exclude
-certain keys from being dumped. Default is 0, which means that hash keys
-are not sorted.
-
-=item *
-
-$Data::Dumper::Deparse I<or> $I<OBJ>->Deparse(I<[NEWVAL]>)
-
-Can be set to a boolean value to control whether code references are
-turned into perl source code. If set to a true value, C<B::Deparse>
-will be used to get the source of the code reference. Using this option
-will force using the Perl implementation of the dumper, since the fast
-XSUB implementation doesn't support it.
-
-Caution : use this option only if you know that your coderefs will be
-properly reconstructed by C<B::Deparse>.
-
-=back
-
-=head2 Exports
-
-=over 4
-
-=item Dumper
-
-=back
-
-=head1 EXAMPLES
-
-Run these code snippets to get a quick feel for the behavior of this
-module. When you are through with these examples, you may want to
-add or change the various configuration variables described above,
-to see their behavior. (See the testsuite in the Data::Dumper
-distribution for more examples.)
-
-
- use Data::Dumper;
-
- package Foo;
- sub new {bless {'a' => 1, 'b' => sub { return "foo" }}, $_[0]};
-
- package Fuz; # a weird REF-REF-SCALAR object
- sub new {bless \($_ = \ 'fu\'z'), $_[0]};
-
- package main;
- $foo = Foo->new;
- $fuz = Fuz->new;
- $boo = [ 1, [], "abcd", \*foo,
- {1 => 'a', 023 => 'b', 0x45 => 'c'},
- \\"p\q\'r", $foo, $fuz];
-
- ########
- # simple usage
- ########
-
- $bar = eval(Dumper($boo));
- print($@) if $@;
- print Dumper($boo), Dumper($bar); # pretty print (no array indices)
-
- $Data::Dumper::Terse = 1; # don't output names where feasible
- $Data::Dumper::Indent = 0; # turn off all pretty print
- print Dumper($boo), "\n";
-
- $Data::Dumper::Indent = 1; # mild pretty print
- print Dumper($boo);
-
- $Data::Dumper::Indent = 3; # pretty print with array indices
- print Dumper($boo);
-
- $Data::Dumper::Useqq = 1; # print strings in double quotes
- print Dumper($boo);
-
- $Data::Dumper::Pair = " : "; # specify hash key/value separator
- print Dumper($boo);
-
-
- ########
- # recursive structures
- ########
-
- @c = ('c');
- $c = \@c;
- $b = {};
- $a = [1, $b, $c];
- $b->{a} = $a;
- $b->{b} = $a->[1];
- $b->{c} = $a->[2];
- print Data::Dumper->Dump([$a,$b,$c], [qw(a b c)]);
-
-
- $Data::Dumper::Purity = 1; # fill in the holes for eval
- print Data::Dumper->Dump([$a, $b], [qw(*a b)]); # print as @a
- print Data::Dumper->Dump([$b, $a], [qw(*b a)]); # print as %b
-
-
- $Data::Dumper::Deepcopy = 1; # avoid cross-refs
- print Data::Dumper->Dump([$b, $a], [qw(*b a)]);
-
-
- $Data::Dumper::Purity = 0; # avoid cross-refs
- print Data::Dumper->Dump([$b, $a], [qw(*b a)]);
-
- ########
- # deep structures
- ########
-
- $a = "pearl";
- $b = [ $a ];
- $c = { 'b' => $b };
- $d = [ $c ];
- $e = { 'd' => $d };
- $f = { 'e' => $e };
- print Data::Dumper->Dump([$f], [qw(f)]);
-
- $Data::Dumper::Maxdepth = 3; # no deeper than 3 refs down
- print Data::Dumper->Dump([$f], [qw(f)]);
-
-
- ########
- # object-oriented usage
- ########
-
- $d = Data::Dumper->new([$a,$b], [qw(a b)]);
- $d->Seen({'*c' => $c}); # stash a ref without printing it
- $d->Indent(3);
- print $d->Dump;
- $d->Reset->Purity(0); # empty the seen cache
- print join "----\n", $d->Dump;
-
-
- ########
- # persistence
- ########
-
- package Foo;
- sub new { bless { state => 'awake' }, shift }
- sub Freeze {
- my $s = shift;
- print STDERR "preparing to sleep\n";
- $s->{state} = 'asleep';
- return bless $s, 'Foo::ZZZ';
- }
-
- package Foo::ZZZ;
- sub Thaw {
- my $s = shift;
- print STDERR "waking up\n";
- $s->{state} = 'awake';
- return bless $s, 'Foo';
- }
-
- package Foo;
- use Data::Dumper;
- $a = Foo->new;
- $b = Data::Dumper->new([$a], ['c']);
- $b->Freezer('Freeze');
- $b->Toaster('Thaw');
- $c = $b->Dump;
- print $c;
- $d = eval $c;
- print Data::Dumper->Dump([$d], ['d']);
-
-
- ########
- # symbol substitution (useful for recreating CODE refs)
- ########
-
- sub foo { print "foo speaking\n" }
- *other = \&foo;
- $bar = [ \&other ];
- $d = Data::Dumper->new([\&other,$bar],['*other','bar']);
- $d->Seen({ '*foo' => \&foo });
- print $d->Dump;
-
-
- ########
- # sorting and filtering hash keys
- ########
-
- $Data::Dumper::Sortkeys = \&my_filter;
- my $foo = { map { (ord, "$_$_$_") } 'I'..'Q' };
- my $bar = { %$foo };
- my $baz = { reverse %$foo };
- print Dumper [ $foo, $bar, $baz ];
-
- sub my_filter {
- my ($hash) = @_;
- # return an array ref containing the hash keys to dump
- # in the order that you want them to be dumped
- return [
- # Sort the keys of %$foo in reverse numeric order
- $hash eq $foo ? (sort {$b <=> $a} keys %$hash) :
- # Only dump the odd number keys of %$bar
- $hash eq $bar ? (grep {$_ % 2} keys %$hash) :
- # Sort keys in default order for all other hashes
- (sort keys %$hash)
- ];
- }
-
-=head1 BUGS
-
-Due to limitations of Perl subroutine call semantics, you cannot pass an
-array or hash. Prepend it with a C<\> to pass its reference instead. This
-will be remedied in time, now that Perl has subroutine prototypes.
-For now, you need to use the extended usage form, and prepend the
-name with a C<*> to output it as a hash or array.
-
-C<Data::Dumper> cheats with CODE references. If a code reference is
-encountered in the structure being processed (and if you haven't set
-the C<Deparse> flag), an anonymous subroutine that
-contains the string '"DUMMY"' will be inserted in its place, and a warning
-will be printed if C<Purity> is set. You can C<eval> the result, but bear
-in mind that the anonymous sub that gets created is just a placeholder.
-Someday, perl will have a switch to cache-on-demand the string
-representation of a compiled piece of code, I hope. If you have prior
-knowledge of all the code refs that your data structures are likely
-to have, you can use the C<Seen> method to pre-seed the internal reference
-table and make the dumped output point to them, instead. See L</EXAMPLES>
-above.
-
-The C<Useqq> and C<Deparse> flags makes Dump() run slower, since the
-XSUB implementation does not support them.
-
-SCALAR objects have the weirdest looking C<bless> workaround.
-
-Pure Perl version of C<Data::Dumper> escapes UTF-8 strings correctly
-only in Perl 5.8.0 and later.
-
-=head2 NOTE
-
-Starting from Perl 5.8.1 different runs of Perl will have different
-ordering of hash keys. The change was done for greater security,
-see L<perlsec/"Algorithmic Complexity Attacks">. This means that
-different runs of Perl will have different Data::Dumper outputs if
-the data contains hashes. If you need to have identical Data::Dumper
-outputs from different runs of Perl, use the environment variable
-PERL_HASH_SEED, see L<perlrun/PERL_HASH_SEED>. Using this restores
-the old (platform-specific) ordering: an even prettier solution might
-be to use the C<Sortkeys> filter of Data::Dumper.
-
-=head1 AUTHOR
-
-Gurusamy Sarathy gsar@activestate.com
-
-Copyright (c) 1996-98 Gurusamy Sarathy. All rights reserved.
-This program is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
-=head1 VERSION
-
-Version 2.121 (Aug 24 2003)
-
-=head1 SEE ALSO
-
-perl(1)
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Digest/MD5.pm b/Master/tlpkg/tlperl/lib/Digest/MD5.pm
deleted file mode 100644
index 17fb11d678a..00000000000
--- a/Master/tlpkg/tlperl/lib/Digest/MD5.pm
+++ /dev/null
@@ -1,376 +0,0 @@
-package Digest::MD5;
-
-use strict;
-use vars qw($VERSION @ISA @EXPORT_OK);
-
-$VERSION = '2.36'; # $Date: 2005/11/30 13:46:47 $
-
-require Exporter;
-*import = \&Exporter::import;
-@EXPORT_OK = qw(md5 md5_hex md5_base64);
-
-eval {
- require Digest::base;
- push(@ISA, 'Digest::base');
-};
-if ($@) {
- my $err = $@;
- *add_bits = sub { die $err };
-}
-
-
-eval {
- require XSLoader;
- XSLoader::load('Digest::MD5', $VERSION);
-};
-if ($@) {
- my $olderr = $@;
- eval {
- # Try to load the pure perl version
- require Digest::Perl::MD5;
-
- Digest::Perl::MD5->import(qw(md5 md5_hex md5_base64));
- push(@ISA, "Digest::Perl::MD5"); # make OO interface work
- };
- if ($@) {
- # restore the original error
- die $olderr;
- }
-}
-else {
- *reset = \&new;
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Digest::MD5 - Perl interface to the MD5 Algorithm
-
-=head1 SYNOPSIS
-
- # Functional style
- use Digest::MD5 qw(md5 md5_hex md5_base64);
-
- $digest = md5($data);
- $digest = md5_hex($data);
- $digest = md5_base64($data);
-
- # OO style
- use Digest::MD5;
-
- $ctx = Digest::MD5->new;
-
- $ctx->add($data);
- $ctx->addfile(*FILE);
-
- $digest = $ctx->digest;
- $digest = $ctx->hexdigest;
- $digest = $ctx->b64digest;
-
-=head1 DESCRIPTION
-
-The C<Digest::MD5> module allows you to use the RSA Data Security
-Inc. MD5 Message Digest algorithm from within Perl programs. The
-algorithm takes as input a message of arbitrary length and produces as
-output a 128-bit "fingerprint" or "message digest" of the input.
-
-Note that the MD5 algorithm is not as strong as it used to be. It has
-since 2005 been easy to generate different messages that produce the
-same MD5 digest. It still seems hard to generate messages that
-produce a given digest, but it is probably wise to move to stronger
-algorithms for applications that depend on the digest to uniquely identify
-a message.
-
-The C<Digest::MD5> module provide a procedural interface for simple
-use, as well as an object oriented interface that can handle messages
-of arbitrary length and which can read files directly.
-
-=head1 FUNCTIONS
-
-The following functions are provided by the C<Digest::MD5> module.
-None of these functions are exported by default.
-
-=over 4
-
-=item md5($data,...)
-
-This function will concatenate all arguments, calculate the MD5 digest
-of this "message", and return it in binary form. The returned string
-will be 16 bytes long.
-
-The result of md5("a", "b", "c") will be exactly the same as the
-result of md5("abc").
-
-=item md5_hex($data,...)
-
-Same as md5(), but will return the digest in hexadecimal form. The
-length of the returned string will be 32 and it will only contain
-characters from this set: '0'..'9' and 'a'..'f'.
-
-=item md5_base64($data,...)
-
-Same as md5(), but will return the digest as a base64 encoded string.
-The length of the returned string will be 22 and it will only contain
-characters from this set: 'A'..'Z', 'a'..'z', '0'..'9', '+' and
-'/'.
-
-Note that the base64 encoded string returned is not padded to be a
-multiple of 4 bytes long. If you want interoperability with other
-base64 encoded md5 digests you might want to append the redundant
-string "==" to the result.
-
-=back
-
-=head1 METHODS
-
-The object oriented interface to C<Digest::MD5> is described in this
-section. After a C<Digest::MD5> object has been created, you will add
-data to it and finally ask for the digest in a suitable format. A
-single object can be used to calculate multiple digests.
-
-The following methods are provided:
-
-=over 4
-
-=item $md5 = Digest::MD5->new
-
-The constructor returns a new C<Digest::MD5> object which encapsulate
-the state of the MD5 message-digest algorithm.
-
-If called as an instance method (i.e. $md5->new) it will just reset the
-state the object to the state of a newly created object. No new
-object is created in this case.
-
-=item $md5->reset
-
-This is just an alias for $md5->new.
-
-=item $md5->clone
-
-This a copy of the $md5 object. It is useful when you do not want to
-destroy the digests state, but need an intermediate value of the
-digest, e.g. when calculating digests iteratively on a continuous data
-stream. Example:
-
- my $md5 = Digest::MD5->new;
- while (<>) {
- $md5->add($_);
- print "Line $.: ", $md5->clone->hexdigest, "\n";
- }
-
-=item $md5->add($data,...)
-
-The $data provided as argument are appended to the message we
-calculate the digest for. The return value is the $md5 object itself.
-
-All these lines will have the same effect on the state of the $md5
-object:
-
- $md5->add("a"); $md5->add("b"); $md5->add("c");
- $md5->add("a")->add("b")->add("c");
- $md5->add("a", "b", "c");
- $md5->add("abc");
-
-=item $md5->addfile($io_handle)
-
-The $io_handle will be read until EOF and its content appended to the
-message we calculate the digest for. The return value is the $md5
-object itself.
-
-The addfile() method will croak() if it fails reading data for some
-reason. If it croaks it is unpredictable what the state of the $md5
-object will be in. The addfile() method might have been able to read
-the file partially before it failed. It is probably wise to discard
-or reset the $md5 object if this occurs.
-
-In most cases you want to make sure that the $io_handle is in
-C<binmode> before you pass it as argument to the addfile() method.
-
-=item $md5->add_bits($data, $nbits)
-
-=item $md5->add_bits($bitstring)
-
-Since the MD5 algorithm is byte oriented you might only add bits as
-multiples of 8, so you probably want to just use add() instead. The
-add_bits() method is provided for compatibility with other digest
-implementations. See L<Digest> for description of the arguments
-that add_bits() take.
-
-=item $md5->digest
-
-Return the binary digest for the message. The returned string will be
-16 bytes long.
-
-Note that the C<digest> operation is effectively a destructive,
-read-once operation. Once it has been performed, the C<Digest::MD5>
-object is automatically C<reset> and can be used to calculate another
-digest value. Call $md5->clone->digest if you want to calculate the
-digest without resetting the digest state.
-
-=item $md5->hexdigest
-
-Same as $md5->digest, but will return the digest in hexadecimal
-form. The length of the returned string will be 32 and it will only
-contain characters from this set: '0'..'9' and 'a'..'f'.
-
-=item $md5->b64digest
-
-Same as $md5->digest, but will return the digest as a base64 encoded
-string. The length of the returned string will be 22 and it will only
-contain characters from this set: 'A'..'Z', 'a'..'z', '0'..'9', '+'
-and '/'.
-
-
-The base64 encoded string returned is not padded to be a multiple of 4
-bytes long. If you want interoperability with other base64 encoded
-md5 digests you might want to append the string "==" to the result.
-
-=back
-
-
-=head1 EXAMPLES
-
-The simplest way to use this library is to import the md5_hex()
-function (or one of its cousins):
-
- use Digest::MD5 qw(md5_hex);
- print "Digest is ", md5_hex("foobarbaz"), "\n";
-
-The above example would print out the message:
-
- Digest is 6df23dc03f9b54cc38a0fc1483df6e21
-
-The same checksum can also be calculated in OO style:
-
- use Digest::MD5;
-
- $md5 = Digest::MD5->new;
- $md5->add('foo', 'bar');
- $md5->add('baz');
- $digest = $md5->hexdigest;
-
- print "Digest is $digest\n";
-
-With OO style you can break the message arbitrary. This means that we
-are no longer limited to have space for the whole message in memory, i.e.
-we can handle messages of any size.
-
-This is useful when calculating checksum for files:
-
- use Digest::MD5;
-
- my $file = shift || "/etc/passwd";
- open(FILE, $file) or die "Can't open '$file': $!";
- binmode(FILE);
-
- $md5 = Digest::MD5->new;
- while (<FILE>) {
- $md5->add($_);
- }
- close(FILE);
- print $md5->b64digest, " $file\n";
-
-Or we can use the addfile method for more efficient reading of
-the file:
-
- use Digest::MD5;
-
- my $file = shift || "/etc/passwd";
- open(FILE, $file) or die "Can't open '$file': $!";
- binmode(FILE);
-
- print Digest::MD5->new->addfile(*FILE)->hexdigest, " $file\n";
-
-Perl 5.8 support Unicode characters in strings. Since the MD5
-algorithm is only defined for strings of bytes, it can not be used on
-strings that contains chars with ordinal number above 255. The MD5
-functions and methods will croak if you try to feed them such input
-data:
-
- use Digest::MD5 qw(md5_hex);
-
- my $str = "abc\x{300}";
- print md5_hex($str), "\n"; # croaks
- # Wide character in subroutine entry
-
-What you can do is calculate the MD5 checksum of the UTF-8
-representation of such strings. This is achieved by filtering the
-string through encode_utf8() function:
-
- use Digest::MD5 qw(md5_hex);
- use Encode qw(encode_utf8);
-
- my $str = "abc\x{300}";
- print md5_hex(encode_utf8($str)), "\n";
- # 8c2d46911f3f5a326455f0ed7a8ed3b3
-
-=head1 SEE ALSO
-
-L<Digest>,
-L<Digest::MD2>,
-L<Digest::SHA1>,
-L<Digest::HMAC>
-
-L<md5sum(1)>
-
-RFC 1321
-
-http://en.wikipedia.org/wiki/MD5
-
-The paper "How to Break MD5 and Other Hash Functions" by Xiaoyun Wang
-and Hongbo Yu.
-
-=head1 COPYRIGHT
-
-This library is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
- Copyright 1998-2003 Gisle Aas.
- Copyright 1995-1996 Neil Winton.
- Copyright 1991-1992 RSA Data Security, Inc.
-
-The MD5 algorithm is defined in RFC 1321. This implementation is
-derived from the reference C code in RFC 1321 which is covered by
-the following copyright statement:
-
-=over 4
-
-=item
-
-Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
-rights reserved.
-
-License to copy and use this software is granted provided that it
-is identified as the "RSA Data Security, Inc. MD5 Message-Digest
-Algorithm" in all material mentioning or referencing this software
-or this function.
-
-License is also granted to make and use derivative works provided
-that such works are identified as "derived from the RSA Data
-Security, Inc. MD5 Message-Digest Algorithm" in all material
-mentioning or referencing the derived work.
-
-RSA Data Security, Inc. makes no representations concerning either
-the merchantability of this software or the suitability of this
-software for any particular purpose. It is provided "as is"
-without express or implied warranty of any kind.
-
-These notices must be retained in any copies of any part of this
-documentation and/or software.
-
-=back
-
-This copyright does not prohibit distribution of any version of Perl
-containing this extension under the terms of the GNU or Artistic
-licenses.
-
-=head1 AUTHORS
-
-The original C<MD5> interface was written by Neil Winton
-(C<N.Winton@axion.bt.co.uk>).
-
-The C<Digest::MD5> module is written by Gisle Aas <gisle@ActiveState.com>.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Digest/base.pm b/Master/tlpkg/tlperl/lib/Digest/base.pm
deleted file mode 100644
index cb336c2cf61..00000000000
--- a/Master/tlpkg/tlperl/lib/Digest/base.pm
+++ /dev/null
@@ -1,100 +0,0 @@
-package Digest::base;
-
-use strict;
-use vars qw($VERSION);
-$VERSION = "1.00";
-
-# subclass is supposed to implement at least these
-sub new;
-sub clone;
-sub add;
-sub digest;
-
-sub reset {
- my $self = shift;
- $self->new(@_); # ugly
-}
-
-sub addfile {
- my ($self, $handle) = @_;
-
- my $n;
- my $buf = "";
-
- while (($n = read($handle, $buf, 4*1024))) {
- $self->add($buf);
- }
- unless (defined $n) {
- require Carp;
- Carp::croak("Read failed: $!");
- }
-
- $self;
-}
-
-sub add_bits {
- my $self = shift;
- my $bits;
- my $nbits;
- if (@_ == 1) {
- my $arg = shift;
- $bits = pack("B*", $arg);
- $nbits = length($arg);
- }
- else {
- ($bits, $nbits) = @_;
- }
- if (($nbits % 8) != 0) {
- require Carp;
- Carp::croak("Number of bits must be multiple of 8 for this algorithm");
- }
- return $self->add(substr($bits, 0, $nbits/8));
-}
-
-sub hexdigest {
- my $self = shift;
- return unpack("H*", $self->digest(@_));
-}
-
-sub b64digest {
- my $self = shift;
- require MIME::Base64;
- my $b64 = MIME::Base64::encode($self->digest(@_), "");
- $b64 =~ s/=+$//;
- return $b64;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Digest::base - Digest base class
-
-=head1 SYNOPSIS
-
- package Digest::Foo;
- use base 'Digest::base';
-
-=head1 DESCRIPTION
-
-The C<Digest::base> class provide implementations of the methods
-C<addfile> and C<add_bits> in terms of C<add>, and of the methods
-C<hexdigest> and C<b64digest> in terms of C<digest>.
-
-Digest implementations might want to inherit from this class to get
-this implementations of the alternative I<add> and I<digest> methods.
-A minimal subclass needs to implement the following methods by itself:
-
- new
- clone
- add
- digest
-
-The arguments and expected behaviour of these methods are described in
-L<Digest>.
-
-=head1 SEE ALSO
-
-L<Digest>
diff --git a/Master/tlpkg/tlperl/lib/Digest/file.pm b/Master/tlpkg/tlperl/lib/Digest/file.pm
deleted file mode 100644
index 67985fd7599..00000000000
--- a/Master/tlpkg/tlperl/lib/Digest/file.pm
+++ /dev/null
@@ -1,85 +0,0 @@
-package Digest::file;
-
-use strict;
-
-use Exporter ();
-use Carp qw(croak);
-use Digest ();
-
-use vars qw($VERSION @ISA @EXPORT_OK);
-
-$VERSION = "1.00";
-@ISA = qw(Exporter);
-@EXPORT_OK = qw(digest_file_ctx digest_file digest_file_hex digest_file_base64);
-
-sub digest_file_ctx {
- my $file = shift;
- croak("No digest algorithm specified") unless @_;
- local *F;
- open(F, $file) || croak("Can't open '$file': $!");
- binmode(F);
- my $ctx = Digest->new(@_);
- $ctx->addfile(*F);
- close(F);
- return $ctx;
-}
-
-sub digest_file {
- digest_file_ctx(@_)->digest;
-}
-
-sub digest_file_hex {
- digest_file_ctx(@_)->hexdigest;
-}
-
-sub digest_file_base64 {
- digest_file_ctx(@_)->b64digest;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Digest::file - Calculate digests of files
-
-=head1 SYNOPSIS
-
- # Poor mans "md5sum" command
- use Digest::file qw(digest_file_hex);
- for (@ARGV) {
- print digest_file_hex($_, "MD5"), " $_\n";
- }
-
-=head1 DESCRIPTION
-
-This module provide 3 convenience functions to calculate the digest
-of files. The following functions are provided:
-
-=over
-
-=item digest_file( $file, $algorithm, [$arg,...] )
-
-This function will calculate and return the binary digest of the bytes
-of the given file. The function will croak if it fails to open or
-read the file.
-
-The $algorithm is a string like "MD2", "MD5", "SHA-1", "SHA-512".
-Additional arguments are passed to the constructor for the
-implementation of the given algorithm.
-
-=item digest_file_hex( $file, $algorithm, [$arg,...] )
-
-Same as digest_file(), but return the digest in hex form.
-
-=item digest_file_base64( $file, $algorithm, [$arg,...] )
-
-Same as digest_file(), but return the digest as a base64 encoded
-string.
-
-=back
-
-=head1 SEE ALSO
-
-L<Digest>
diff --git a/Master/tlpkg/tlperl/lib/DynaLoader.pm b/Master/tlpkg/tlperl/lib/DynaLoader.pm
deleted file mode 100644
index 178e9b2616c..00000000000
--- a/Master/tlpkg/tlperl/lib/DynaLoader.pm
+++ /dev/null
@@ -1,833 +0,0 @@
-
-# Generated from DynaLoader.pm.PL
-
-package DynaLoader;
-
-# And Gandalf said: 'Many folk like to know beforehand what is to
-# be set on the table; but those who have laboured to prepare the
-# feast like to keep their secret; for wonder makes the words of
-# praise louder.'
-
-# (Quote from Tolkien suggested by Anno Siegel.)
-#
-# See pod text at end of file for documentation.
-# See also ext/DynaLoader/README in source tree for other information.
-#
-# Tim.Bunce@ig.co.uk, August 1994
-
-use vars qw($VERSION *AUTOLOAD);
-
-$VERSION = '1.05'; # avoid typo warning
-
-require AutoLoader;
-*AUTOLOAD = \&AutoLoader::AUTOLOAD;
-
-use Config;
-
-# The following require can't be removed during maintenance
-# releases, sadly, because of the risk of buggy code that does
-# require Carp; Carp::croak "..."; without brackets dying
-# 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;
-
-# enable debug/trace messages from DynaLoader perl code
-$dl_debug = $ENV{PERL_DL_DEBUG} || 0 unless defined $dl_debug;
-
-#
-# Flags to alter dl_load_file behaviour. Assigned bits:
-# 0x01 make symbols available for linking later dl_load_file's.
-# (only known to work on Solaris 2 using dlopen(RTLD_GLOBAL))
-# (ignored under VMS; effect is built-in to image linking)
-#
-# This is called as a class method $module->dl_load_flags. The
-# definition here will be inherited and result on "default" loading
-# behaviour unless a sub-class of DynaLoader defines its own version.
-#
-
-sub dl_load_flags { 0x00 }
-
-# ($dl_dlext, $dlsrc)
-# = @Config::Config{'dlext', 'dlsrc'};
- ($dl_dlext, $dlsrc) = ('dll','dl_win32.xs')
-;
-# Some systems need special handling to expand file specifications
-# (VMS support by Charles Bailey <bailey@HMIVAX.HUMGEN.UPENN.EDU>)
-# See dl_expandspec() for more details. Should be harmless but
-# inefficient to define on systems that don't need it.
-$Is_VMS = $^O eq 'VMS';
-$do_expand = $Is_VMS;
-$Is_MacOS = $^O eq 'MacOS';
-
-my $Mac_FS;
-$Mac_FS = eval { require Mac::FileSpec::Unixish } if $Is_MacOS;
-
-@dl_require_symbols = (); # names of symbols we need
-@dl_resolve_using = (); # names of files to link with
-@dl_library_path = (); # path to look for files
-
-#XSLoader.pm may have added elements before we were required
-#@dl_shared_objects = (); # shared objects for symbols we have
-#@dl_librefs = (); # things we have loaded
-#@dl_modules = (); # Modules we have loaded
-
-# This is a fix to support DLD's unfortunate desire to relink -lc
-@dl_resolve_using = dl_findfile('-lc') if $dlsrc eq "dl_dld.xs";
-
-# Initialise @dl_library_path with the 'standard' library path
-# for this platform as determined by Configure.
-
-push(@dl_library_path, split(' ', $Config::Config{libpth}));
-
-
-my $ldlibpthname = $Config::Config{ldlibpthname};
-my $ldlibpthname_defined = defined $Config::Config{ldlibpthname};
-my $pthsep = $Config::Config{path_sep};
-
-# Add to @dl_library_path any extra directories we can gather from environment
-# during runtime.
-
-if ($ldlibpthname_defined &&
- exists $ENV{$ldlibpthname}) {
- push(@dl_library_path, split(/$pthsep/, $ENV{$ldlibpthname}));
-}
-
-# E.g. HP-UX supports both its native SHLIB_PATH *and* LD_LIBRARY_PATH.
-
-if ($ldlibpthname_defined &&
- $ldlibpthname ne 'LD_LIBRARY_PATH' &&
- exists $ENV{LD_LIBRARY_PATH}) {
- push(@dl_library_path, split(/$pthsep/, $ENV{LD_LIBRARY_PATH}));
-}
-
-
-# No prizes for guessing why we don't say 'bootstrap DynaLoader;' here.
-# NOTE: All dl_*.xs (including dl_none.xs) define a dl_error() XSUB
-boot_DynaLoader('DynaLoader') if defined(&boot_DynaLoader) &&
- !defined(&dl_error);
-
-if ($dl_debug) {
- print STDERR "DynaLoader.pm loaded (@INC, @dl_library_path)\n";
- print STDERR "DynaLoader not linked into this perl\n"
- unless defined(&boot_DynaLoader);
-}
-
-1; # End of main code
-
-
-sub croak { require Carp; Carp::croak(@_) }
-
-sub bootstrap_inherit {
- my $module = $_[0];
- local *isa = *{"$module\::ISA"};
- local @isa = (@isa, 'DynaLoader');
- # Cannot goto due to delocalization. Will report errors on a wrong line?
- bootstrap(@_);
-}
-
-# The bootstrap function cannot be autoloaded (without complications)
-# so we define it here:
-
-sub bootstrap {
- # use local vars to enable $module.bs script to edit values
- local(@args) = @_;
- local($module) = $args[0];
- local(@dirs, $file);
-
- unless ($module) {
- require Carp;
- Carp::confess("Usage: DynaLoader::bootstrap(module)");
- }
-
- # A common error on platforms which don't support dynamic loading.
- # Since it's fatal and potentially confusing we give a detailed message.
- croak("Can't load module $module, dynamic loading not available in this perl.\n".
- " (You may need to build a new perl executable which either supports\n".
- " dynamic loading or has the $module module statically linked into it.)\n")
- unless defined(&dl_load_file);
-
- my @modparts = split(/::/,$module);
- my $modfname = $modparts[-1];
-
- # Some systems have restrictions on files names for DLL's etc.
- # mod2fname returns appropriate file base name (typically truncated)
- # It may also edit @modparts if required.
- $modfname = &mod2fname(\@modparts) if defined &mod2fname;
-
- # Truncate the module name to 8.3 format for NetWare
- if (($^O eq 'NetWare') && (length($modfname) > 8)) {
- $modfname = substr($modfname, 0, 8);
- }
-
- my $modpname = join(($Is_MacOS ? ':' : '/'),@modparts);
-
- print STDERR "DynaLoader::bootstrap for $module ",
- ($Is_MacOS
- ? "(:auto:$modpname:$modfname.$dl_dlext)\n" :
- "(auto/$modpname/$modfname.$dl_dlext)\n")
- if $dl_debug;
-
- foreach (@INC) {
- chop($_ = VMS::Filespec::unixpath($_)) if $Is_VMS;
- my $dir;
- if ($Is_MacOS) {
- my $path = $_;
- if ($Mac_FS && ! -d $path) {
- $path = Mac::FileSpec::Unixish::nativize($path);
- }
- $path .= ":" unless /:$/;
- $dir = "${path}auto:$modpname";
- } else {
- $dir = "$_/auto/$modpname";
- }
-
- next unless -d $dir; # skip over uninteresting directories
-
- # check for common cases to avoid autoload of dl_findfile
- my $try = $Is_MacOS ? "$dir:$modfname.$dl_dlext" : "$dir/$modfname.$dl_dlext";
- last if $file = ($do_expand) ? dl_expandspec($try) : ((-f $try) && $try);
-
- # no luck here, save dir for possible later dl_findfile search
- push @dirs, $dir;
- }
- # last resort, let dl_findfile have a go in all known locations
- $file = dl_findfile(map("-L$_",@dirs,@INC), $modfname) unless $file;
-
- croak("Can't locate loadable object for module $module in \@INC (\@INC contains: @INC)")
- unless $file; # wording similar to error from 'require'
-
- $file = uc($file) if $Is_VMS && $Config::Config{d_vms_case_sensitive_symbols};
- my $bootname = "boot_$module";
- $bootname =~ s/\W/_/g;
- @dl_require_symbols = ($bootname);
-
- # Execute optional '.bootstrap' perl script for this module.
- # The .bs file can be used to configure @dl_resolve_using etc to
- # match the needs of the individual module on this architecture.
- my $bs = $file;
- $bs =~ s/(\.\w+)?(;\d*)?$/\.bs/; # look for .bs 'beside' the library
- if (-s $bs) { # only read file if it's not empty
- print STDERR "BS: $bs ($^O, $dlsrc)\n" if $dl_debug;
- eval { do $bs; };
- warn "$bs: $@\n" if $@;
- }
-
- my $boot_symbol_ref;
-
- if ($^O eq 'darwin') {
- if ($boot_symbol_ref = dl_find_symbol(0, $bootname)) {
- goto boot; #extension library has already been loaded, e.g. darwin
- }
- }
-
- # Many dynamic extension loading problems will appear to come from
- # this section of code: XYZ failed at line 123 of DynaLoader.pm.
- # Often these errors are actually occurring in the initialisation
- # C code of the extension XS file. Perl reports the error as being
- # in this perl code simply because this was the last perl code
- # it executed.
-
- my $libref = dl_load_file($file, $module->dl_load_flags) or
- croak("Can't load '$file' for module $module: ".dl_error());
-
- push(@dl_librefs,$libref); # record loaded object
-
- my @unresolved = dl_undef_symbols();
- if (@unresolved) {
- require Carp;
- Carp::carp("Undefined symbols present after loading $file: @unresolved\n");
- }
-
- $boot_symbol_ref = dl_find_symbol($libref, $bootname) or
- croak("Can't find '$bootname' symbol in $file\n");
-
- push(@dl_modules, $module); # record loaded module
-
- boot:
- my $xs = dl_install_xsub("${module}::bootstrap", $boot_symbol_ref, $file);
-
- # See comment block above
-
- push(@dl_shared_objects, $file); # record files loaded
-
- &$xs(@args);
-}
-
-
-#sub _check_file { # private utility to handle dl_expandspec vs -f tests
-# my($file) = @_;
-# return $file if (!$do_expand && -f $file); # the common case
-# return $file if ( $do_expand && ($file=dl_expandspec($file)));
-# return undef;
-#}
-
-
-# Let autosplit and the autoloader deal with these functions:
-__END__
-
-
-sub dl_findfile {
- # Read ext/DynaLoader/DynaLoader.doc for detailed information.
- # This function does not automatically consider the architecture
- # or the perl library auto directories.
- my (@args) = @_;
- my (@dirs, $dir); # which directories to search
- my (@found); # full paths to real files we have found
- my $dl_ext= 'dll'; # $Config::Config{'dlext'} suffix for perl extensions
- my $dl_so = 'dll'; # $Config::Config{'so'} suffix for shared libraries
-
- print STDERR "dl_findfile(@args)\n" if $dl_debug;
-
- # accumulate directories but process files as they appear
- arg: foreach(@args) {
- # Special fast case: full filepath requires no search
- if ($Is_VMS && m%[:>/\]]% && -f $_) {
- push(@found,dl_expandspec(VMS::Filespec::vmsify($_)));
- last arg unless wantarray;
- next;
- }
- elsif ($Is_MacOS) {
- if (m/:/ && -f $_) {
- push(@found,$_);
- last arg unless wantarray;
- }
- }
- elsif (m:/: && -f $_ && !$do_expand) {
- push(@found,$_);
- last arg unless wantarray;
- next;
- }
-
- # Deal with directories first:
- # Using a -L prefix is the preferred option (faster and more robust)
- if (m:^-L:) { s/^-L//; push(@dirs, $_); next; }
-
- if ($Is_MacOS) {
- # Otherwise we try to try to spot directories by a heuristic
- # (this is a more complicated issue than it first appears)
- if (m/:/ && -d $_) { push(@dirs, $_); next; }
- # Only files should get this far...
- my(@names, $name); # what filenames to look for
- s/^-l//;
- push(@names, $_);
- foreach $dir (@dirs, @dl_library_path) {
- next unless -d $dir;
- $dir =~ s/^([^:]+)$/:$1/;
- $dir =~ s/:$//;
- foreach $name (@names) {
- my($file) = "$dir:$name";
- print STDERR " checking in $dir for $name\n" if $dl_debug;
- if (-f $file) {
- push(@found, $file);
- next arg; # no need to look any further
- }
- }
- }
- next;
- }
-
- # Otherwise we try to try to spot directories by a heuristic
- # (this is a more complicated issue than it first appears)
- if (m:/: && -d $_) { push(@dirs, $_); next; }
-
- # VMS: we may be using native VMS directory syntax instead of
- # Unix emulation, so check this as well
- if ($Is_VMS && /[:>\]]/ && -d $_) { push(@dirs, $_); next; }
-
- # Only files should get this far...
- my(@names, $name); # what filenames to look for
- if (m:-l: ) { # convert -lname to appropriate library name
- s/-l//;
- push(@names,"lib$_.$dl_so");
- push(@names,"lib$_.a");
- } else { # Umm, a bare name. Try various alternatives:
- # these should be ordered with the most likely first
- push(@names,"$_.$dl_ext") unless m/\.$dl_ext$/o;
- push(@names,"$_.$dl_so") unless m/\.$dl_so$/o;
- push(@names,"lib$_.$dl_so") unless m:/:;
- push(@names,"$_.a") if !m/\.a$/ and $dlsrc eq "dl_dld.xs";
- push(@names, $_);
- }
- foreach $dir (@dirs, @dl_library_path) {
- next unless -d $dir;
- chop($dir = VMS::Filespec::unixpath($dir)) if $Is_VMS;
- foreach $name (@names) {
- my($file) = "$dir/$name";
- print STDERR " checking in $dir for $name\n" if $dl_debug;
- $file = ($do_expand) ? dl_expandspec($file) : (-f $file && $file);
- #$file = _check_file($file);
- if ($file) {
- push(@found, $file);
- next arg; # no need to look any further
- }
- }
- }
- }
- if ($dl_debug) {
- foreach(@dirs) {
- print STDERR " dl_findfile ignored non-existent directory: $_\n" unless -d $_;
- }
- print STDERR "dl_findfile found: @found\n";
- }
- return $found[0] unless wantarray;
- @found;
-}
-
-
-sub dl_expandspec {
- my($spec) = @_;
- # Optional function invoked if DynaLoader.pm sets $do_expand.
- # Most systems do not require or use this function.
- # Some systems may implement it in the dl_*.xs file in which case
- # this autoload version will not be called but is harmless.
-
- # This function is designed to deal with systems which treat some
- # 'filenames' in a special way. For example VMS 'Logical Names'
- # (something like unix environment variables - but different).
- # This function should recognise such names and expand them into
- # full file paths.
- # Must return undef if $spec is invalid or file does not exist.
-
- my $file = $spec; # default output to input
-
- if ($Is_VMS) { # dl_expandspec should be defined in dl_vms.xs
- require Carp;
- Carp::croak("dl_expandspec: should be defined in XS file!\n");
- } else {
- return undef unless -f $file;
- }
- print STDERR "dl_expandspec($spec) => $file\n" if $dl_debug;
- $file;
-}
-
-sub dl_find_symbol_anywhere
-{
- my $sym = shift;
- my $libref;
- foreach $libref (@dl_librefs) {
- my $symref = dl_find_symbol($libref,$sym);
- return $symref if $symref;
- }
- return undef;
-}
-
-=head1 NAME
-
-DynaLoader - Dynamically load C libraries into Perl code
-
-=head1 SYNOPSIS
-
- package YourPackage;
- require DynaLoader;
- @ISA = qw(... DynaLoader ...);
- bootstrap YourPackage;
-
- # optional method for 'global' loading
- sub dl_load_flags { 0x01 }
-
-
-=head1 DESCRIPTION
-
-This document defines a standard generic interface to the dynamic
-linking mechanisms available on many platforms. Its primary purpose is
-to implement automatic dynamic loading of Perl modules.
-
-This document serves as both a specification for anyone wishing to
-implement the DynaLoader for a new platform and as a guide for
-anyone wishing to use the DynaLoader directly in an application.
-
-The DynaLoader is designed to be a very simple high-level
-interface that is sufficiently general to cover the requirements
-of SunOS, HP-UX, NeXT, Linux, VMS and other platforms.
-
-It is also hoped that the interface will cover the needs of OS/2, NT
-etc and also allow pseudo-dynamic linking (using C<ld -A> at runtime).
-
-It must be stressed that the DynaLoader, by itself, is practically
-useless for accessing non-Perl libraries because it provides almost no
-Perl-to-C 'glue'. There is, for example, no mechanism for calling a C
-library function or supplying arguments. A C::DynaLib module
-is available from CPAN sites which performs that function for some
-common system types. And since the year 2000, there's also Inline::C,
-a module that allows you to write Perl subroutines in C. Also available
-from your local CPAN site.
-
-DynaLoader Interface Summary
-
- @dl_library_path
- @dl_resolve_using
- @dl_require_symbols
- $dl_debug
- @dl_librefs
- @dl_modules
- @dl_shared_objects
- Implemented in:
- bootstrap($modulename) Perl
- @filepaths = dl_findfile(@names) Perl
- $flags = $modulename->dl_load_flags Perl
- $symref = dl_find_symbol_anywhere($symbol) Perl
-
- $libref = dl_load_file($filename, $flags) C
- $status = dl_unload_file($libref) C
- $symref = dl_find_symbol($libref, $symbol) C
- @symbols = dl_undef_symbols() C
- dl_install_xsub($name, $symref [, $filename]) C
- $message = dl_error C
-
-=over 4
-
-=item @dl_library_path
-
-The standard/default list of directories in which dl_findfile() will
-search for libraries etc. Directories are searched in order:
-$dl_library_path[0], [1], ... etc
-
-@dl_library_path is initialised to hold the list of 'normal' directories
-(F</usr/lib>, etc) determined by B<Configure> (C<$Config{'libpth'}>). This should
-ensure portability across a wide range of platforms.
-
-@dl_library_path should also be initialised with any other directories
-that can be determined from the environment at runtime (such as
-LD_LIBRARY_PATH for SunOS).
-
-After initialisation @dl_library_path can be manipulated by an
-application using push and unshift before calling dl_findfile().
-Unshift can be used to add directories to the front of the search order
-either to save search time or to override libraries with the same name
-in the 'normal' directories.
-
-The load function that dl_load_file() calls may require an absolute
-pathname. The dl_findfile() function and @dl_library_path can be
-used to search for and return the absolute pathname for the
-library/object that you wish to load.
-
-=item @dl_resolve_using
-
-A list of additional libraries or other shared objects which can be
-used to resolve any undefined symbols that might be generated by a
-later call to load_file().
-
-This is only required on some platforms which do not handle dependent
-libraries automatically. For example the Socket Perl extension
-library (F<auto/Socket/Socket.so>) contains references to many socket
-functions which need to be resolved when it's loaded. Most platforms
-will automatically know where to find the 'dependent' library (e.g.,
-F</usr/lib/libsocket.so>). A few platforms need to be told the
-location of the dependent library explicitly. Use @dl_resolve_using
-for this.
-
-Example usage:
-
- @dl_resolve_using = dl_findfile('-lsocket');
-
-=item @dl_require_symbols
-
-A list of one or more symbol names that are in the library/object file
-to be dynamically loaded. This is only required on some platforms.
-
-=item @dl_librefs
-
-An array of the handles returned by successful calls to dl_load_file(),
-made by bootstrap, in the order in which they were loaded.
-Can be used with dl_find_symbol() to look for a symbol in any of
-the loaded files.
-
-=item @dl_modules
-
-An array of module (package) names that have been bootstrap'ed.
-
-=item @dl_shared_objects
-
-An array of file names for the shared objects that were loaded.
-
-=item dl_error()
-
-Syntax:
-
- $message = dl_error();
-
-Error message text from the last failed DynaLoader function. Note
-that, similar to errno in unix, a successful function call does not
-reset this message.
-
-Implementations should detect the error as soon as it occurs in any of
-the other functions and save the corresponding message for later
-retrieval. This will avoid problems on some platforms (such as SunOS)
-where the error message is very temporary (e.g., dlerror()).
-
-=item $dl_debug
-
-Internal debugging messages are enabled when $dl_debug is set true.
-Currently setting $dl_debug only affects the Perl side of the
-DynaLoader. These messages should help an application developer to
-resolve any DynaLoader usage problems.
-
-$dl_debug is set to C<$ENV{'PERL_DL_DEBUG'}> if defined.
-
-For the DynaLoader developer/porter there is a similar debugging
-variable added to the C code (see dlutils.c) and enabled if Perl was
-built with the B<-DDEBUGGING> flag. This can also be set via the
-PERL_DL_DEBUG environment variable. Set to 1 for minimal information or
-higher for more.
-
-=item dl_findfile()
-
-Syntax:
-
- @filepaths = dl_findfile(@names)
-
-Determine the full paths (including file suffix) of one or more
-loadable files given their generic names and optionally one or more
-directories. Searches directories in @dl_library_path by default and
-returns an empty list if no files were found.
-
-Names can be specified in a variety of platform independent forms. Any
-names in the form B<-lname> are converted into F<libname.*>, where F<.*> is
-an appropriate suffix for the platform.
-
-If a name does not already have a suitable prefix and/or suffix then
-the corresponding file will be searched for by trying combinations of
-prefix and suffix appropriate to the platform: "$name.o", "lib$name.*"
-and "$name".
-
-If any directories are included in @names they are searched before
-@dl_library_path. Directories may be specified as B<-Ldir>. Any other
-names are treated as filenames to be searched for.
-
-Using arguments of the form C<-Ldir> and C<-lname> is recommended.
-
-Example:
-
- @dl_resolve_using = dl_findfile(qw(-L/usr/5lib -lposix));
-
-
-=item dl_expandspec()
-
-Syntax:
-
- $filepath = dl_expandspec($spec)
-
-Some unusual systems, such as VMS, require special filename handling in
-order to deal with symbolic names for files (i.e., VMS's Logical Names).
-
-To support these systems a dl_expandspec() function can be implemented
-either in the F<dl_*.xs> file or code can be added to the autoloadable
-dl_expandspec() function in F<DynaLoader.pm>. See F<DynaLoader.pm> for
-more information.
-
-=item dl_load_file()
-
-Syntax:
-
- $libref = dl_load_file($filename, $flags)
-
-Dynamically load $filename, which must be the path to a shared object
-or library. An opaque 'library reference' is returned as a handle for
-the loaded object. Returns undef on error.
-
-The $flags argument to alters dl_load_file behaviour.
-Assigned bits:
-
- 0x01 make symbols available for linking later dl_load_file's.
- (only known to work on Solaris 2 using dlopen(RTLD_GLOBAL))
- (ignored under VMS; this is a normal part of image linking)
-
-(On systems that provide a handle for the loaded object such as SunOS
-and HPUX, $libref will be that handle. On other systems $libref will
-typically be $filename or a pointer to a buffer containing $filename.
-The application should not examine or alter $libref in any way.)
-
-This is the function that does the real work. It should use the
-current values of @dl_require_symbols and @dl_resolve_using if required.
-
- SunOS: dlopen($filename)
- HP-UX: shl_load($filename)
- Linux: dld_create_reference(@dl_require_symbols); dld_link($filename)
- NeXT: rld_load($filename, @dl_resolve_using)
- VMS: lib$find_image_symbol($filename,$dl_require_symbols[0])
-
-(The dlopen() function is also used by Solaris and some versions of
-Linux, and is a common choice when providing a "wrapper" on other
-mechanisms as is done in the OS/2 port.)
-
-=item dl_unload_file()
-
-Syntax:
-
- $status = dl_unload_file($libref)
-
-Dynamically unload $libref, which must be an opaque 'library reference' as
-returned from dl_load_file. Returns one on success and zero on failure.
-
-This function is optional and may not necessarily be provided on all platforms.
-If it is defined, it is called automatically when the interpreter exits for
-every shared object or library loaded by DynaLoader::bootstrap. All such
-library references are stored in @dl_librefs by DynaLoader::Bootstrap as it
-loads the libraries. The files are unloaded in last-in, first-out order.
-
-This unloading is usually necessary when embedding a shared-object perl (e.g.
-one configured with -Duseshrplib) within a larger application, and the perl
-interpreter is created and destroyed several times within the lifetime of the
-application. In this case it is possible that the system dynamic linker will
-unload and then subsequently reload the shared libperl without relocating any
-references to it from any files DynaLoaded by the previous incarnation of the
-interpreter. As a result, any shared objects opened by DynaLoader may point to
-a now invalid 'ghost' of the libperl shared object, causing apparently random
-memory corruption and crashes. This behaviour is most commonly seen when using
-Apache and mod_perl built with the APXS mechanism.
-
- SunOS: dlclose($libref)
- HP-UX: ???
- Linux: ???
- NeXT: ???
- VMS: ???
-
-(The dlclose() function is also used by Solaris and some versions of
-Linux, and is a common choice when providing a "wrapper" on other
-mechanisms as is done in the OS/2 port.)
-
-=item dl_load_flags()
-
-Syntax:
-
- $flags = dl_load_flags $modulename;
-
-Designed to be a method call, and to be overridden by a derived class
-(i.e. a class which has DynaLoader in its @ISA). The definition in
-DynaLoader itself returns 0, which produces standard behavior from
-dl_load_file().
-
-=item dl_find_symbol()
-
-Syntax:
-
- $symref = dl_find_symbol($libref, $symbol)
-
-Return the address of the symbol $symbol or C<undef> if not found. If the
-target system has separate functions to search for symbols of different
-types then dl_find_symbol() should search for function symbols first and
-then other types.
-
-The exact manner in which the address is returned in $symref is not
-currently defined. The only initial requirement is that $symref can
-be passed to, and understood by, dl_install_xsub().
-
- SunOS: dlsym($libref, $symbol)
- HP-UX: shl_findsym($libref, $symbol)
- Linux: dld_get_func($symbol) and/or dld_get_symbol($symbol)
- NeXT: rld_lookup("_$symbol")
- VMS: lib$find_image_symbol($libref,$symbol)
-
-
-=item dl_find_symbol_anywhere()
-
-Syntax:
-
- $symref = dl_find_symbol_anywhere($symbol)
-
-Applies dl_find_symbol() to the members of @dl_librefs and returns
-the first match found.
-
-=item dl_undef_symbols()
-
-Example
-
- @symbols = dl_undef_symbols()
-
-Return a list of symbol names which remain undefined after load_file().
-Returns C<()> if not known. Don't worry if your platform does not provide
-a mechanism for this. Most do not need it and hence do not provide it,
-they just return an empty list.
-
-
-=item dl_install_xsub()
-
-Syntax:
-
- dl_install_xsub($perl_name, $symref [, $filename])
-
-Create a new Perl external subroutine named $perl_name using $symref as
-a pointer to the function which implements the routine. This is simply
-a direct call to newXSUB(). Returns a reference to the installed
-function.
-
-The $filename parameter is used by Perl to identify the source file for
-the function if required by die(), caller() or the debugger. If
-$filename is not defined then "DynaLoader" will be used.
-
-
-=item bootstrap()
-
-Syntax:
-
-bootstrap($module)
-
-This is the normal entry point for automatic dynamic loading in Perl.
-
-It performs the following actions:
-
-=over 8
-
-=item *
-
-locates an auto/$module directory by searching @INC
-
-=item *
-
-uses dl_findfile() to determine the filename to load
-
-=item *
-
-sets @dl_require_symbols to C<("boot_$module")>
-
-=item *
-
-executes an F<auto/$module/$module.bs> file if it exists
-(typically used to add to @dl_resolve_using any files which
-are required to load the module on the current platform)
-
-=item *
-
-calls dl_load_flags() to determine how to load the file.
-
-=item *
-
-calls dl_load_file() to load the file
-
-=item *
-
-calls dl_undef_symbols() and warns if any symbols are undefined
-
-=item *
-
-calls dl_find_symbol() for "boot_$module"
-
-=item *
-
-calls dl_install_xsub() to install it as "${module}::bootstrap"
-
-=item *
-
-calls &{"${module}::bootstrap"} to bootstrap the module (actually
-it uses the function reference returned by dl_install_xsub for speed)
-
-=back
-
-=back
-
-
-=head1 AUTHOR
-
-Tim Bunce, 11 August 1994.
-
-This interface is based on the work and comments of (in no particular
-order): Larry Wall, Robert Sanders, Dean Roehrich, Jeff Okamoto, Anno
-Siegel, Thomas Neumann, Paul Marquess, Charles Bailey, myself and others.
-
-Larry Wall designed the elegant inherited bootstrap mechanism and
-implemented the first Perl 5 dynamic loader using it.
-
-Solaris global loading added by Nick Ing-Simmons with design/coding
-assistance from Tim Bunce, January 1996.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode.pm b/Master/tlpkg/tlperl/lib/Encode.pm
deleted file mode 100644
index ac0123c89ec..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode.pm
+++ /dev/null
@@ -1,851 +0,0 @@
-#
-# $Id: Encode.pm,v 2.12 2005/09/08 14:17:17 dankogai Exp dankogai $
-#
-package Encode;
-use strict;
-our $VERSION = sprintf "%d.%02d", q$Revision: 2.12 $ =~ /(\d+)/g;
-sub DEBUG () { 0 }
-use XSLoader ();
-XSLoader::load(__PACKAGE__, $VERSION);
-
-require Exporter;
-use base qw/Exporter/;
-
-# Public, encouraged API is exported by default
-
-our @EXPORT = qw(
- decode decode_utf8 encode encode_utf8
- encodings find_encoding clone_encoding
-);
-
-our @FB_FLAGS = qw(DIE_ON_ERR WARN_ON_ERR RETURN_ON_ERR LEAVE_SRC
- PERLQQ HTMLCREF XMLCREF STOP_AT_PARTIAL);
-our @FB_CONSTS = qw(FB_DEFAULT FB_CROAK FB_QUIET FB_WARN
- FB_PERLQQ FB_HTMLCREF FB_XMLCREF);
-
-our @EXPORT_OK =
- (
- qw(
- _utf8_off _utf8_on define_encoding from_to is_16bit is_8bit
- is_utf8 perlio_ok resolve_alias utf8_downgrade utf8_upgrade
- ),
- @FB_FLAGS, @FB_CONSTS,
- );
-
-our %EXPORT_TAGS =
- (
- all => [ @EXPORT, @EXPORT_OK ],
- fallbacks => [ @FB_CONSTS ],
- fallback_all => [ @FB_CONSTS, @FB_FLAGS ],
- );
-
-# Documentation moved after __END__ for speed - NI-S
-
-our $ON_EBCDIC = (ord("A") == 193);
-
-use Encode::Alias;
-
-# Make a %Encoding package variable to allow a certain amount of cheating
-our %Encoding;
-our %ExtModule;
-require Encode::Config;
-eval { require Encode::ConfigLocal };
-
-sub encodings
-{
- my $class = shift;
- my %enc;
- if (@_ and $_[0] eq ":all"){
- %enc = ( %Encoding, %ExtModule );
- }else{
- %enc = %Encoding;
- for my $mod (map {m/::/o ? $_ : "Encode::$_" } @_){
- DEBUG and warn $mod;
- for my $enc (keys %ExtModule){
- $ExtModule{$enc} eq $mod and $enc{$enc} = $mod;
- }
- }
- }
- return
- sort { lc $a cmp lc $b }
- grep {!/^(?:Internal|Unicode|Guess)$/o} keys %enc;
-}
-
-sub perlio_ok{
- my $obj = ref($_[0]) ? $_[0] : find_encoding($_[0]);
- $obj->can("perlio_ok") and return $obj->perlio_ok();
- return 0; # safety net
-}
-
-sub define_encoding
-{
- my $obj = shift;
- my $name = shift;
- $Encoding{$name} = $obj;
- my $lc = lc($name);
- define_alias($lc => $obj) unless $lc eq $name;
- while (@_){
- my $alias = shift;
- define_alias($alias, $obj);
- }
- return $obj;
-}
-
-sub getEncoding
-{
- my ($class, $name, $skip_external) = @_;
-
- ref($name) && $name->can('renew') and return $name;
- exists $Encoding{$name} and return $Encoding{$name};
- my $lc = lc $name;
- exists $Encoding{$lc} and return $Encoding{$lc};
-
- my $oc = $class->find_alias($name);
- defined($oc) and return $oc;
- $lc ne $name and $oc = $class->find_alias($lc);
- defined($oc) and return $oc;
-
- unless ($skip_external)
- {
- if (my $mod = $ExtModule{$name} || $ExtModule{$lc}){
- $mod =~ s,::,/,g ; $mod .= '.pm';
- eval{ require $mod; };
- exists $Encoding{$name} and return $Encoding{$name};
- }
- }
- return;
-}
-
-sub find_encoding($;$)
-{
- my ($name, $skip_external) = @_;
- return __PACKAGE__->getEncoding($name,$skip_external);
-}
-
-sub resolve_alias($){
- my $obj = find_encoding(shift);
- defined $obj and return $obj->name;
- return;
-}
-
-sub clone_encoding($){
- my $obj = find_encoding(shift);
- ref $obj or return;
- eval { require Storable };
- $@ and return;
- return Storable::dclone($obj);
-}
-
-sub encode($$;$)
-{
- my ($name, $string, $check) = @_;
- return undef unless defined $string;
- $string .= '' if ref $string; # stringify;
- $check ||=0;
- my $enc = find_encoding($name);
- unless(defined $enc){
- require Carp;
- Carp::croak("Unknown encoding '$name'");
- }
- my $octets = $enc->encode($string,$check);
- $_[1] = $string if $check and !($check & LEAVE_SRC());
- return $octets;
-}
-
-sub decode($$;$)
-{
- my ($name,$octets,$check) = @_;
- return undef unless defined $octets;
- $octets .= '' if ref $octets;
- $check ||=0;
- my $enc = find_encoding($name);
- unless(defined $enc){
- require Carp;
- Carp::croak("Unknown encoding '$name'");
- }
- my $string = $enc->decode($octets,$check);
- $_[1] = $octets if $check and !($check & LEAVE_SRC());
- return $string;
-}
-
-sub from_to($$$;$)
-{
- my ($string,$from,$to,$check) = @_;
- return undef unless defined $string;
- $check ||=0;
- my $f = find_encoding($from);
- unless (defined $f){
- require Carp;
- Carp::croak("Unknown encoding '$from'");
- }
- my $t = find_encoding($to);
- unless (defined $t){
- require Carp;
- Carp::croak("Unknown encoding '$to'");
- }
- my $uni = $f->decode($string,$check);
- return undef if ($check && length($string));
- $string = $t->encode($uni,$check);
- return undef if ($check && length($uni));
- return defined($_[0] = $string) ? length($string) : undef ;
-}
-
-sub encode_utf8($)
-{
- my ($str) = @_;
- utf8::encode($str);
- return $str;
-}
-
-sub decode_utf8($;$)
-{
- my ($str, $check) = @_;
- if ($check){
- return decode("utf8", $str, $check);
- }else{
- return decode("utf8", $str);
- return $str;
- }
-}
-
-predefine_encodings(1);
-
-#
-# This is to restore %Encoding if really needed;
-#
-
-sub predefine_encodings{
- use Encode::Encoding;
- no warnings 'redefine';
- my $use_xs = shift;
- if ($ON_EBCDIC) {
- # was in Encode::UTF_EBCDIC
- package Encode::UTF_EBCDIC;
- push @Encode::UTF_EBCDIC::ISA, 'Encode::Encoding';
- *decode = sub{
- my ($obj,$str,$chk) = @_;
- my $res = '';
- for (my $i = 0; $i < length($str); $i++) {
- $res .=
- chr(utf8::unicode_to_native(ord(substr($str,$i,1))));
- }
- $_[1] = '' if $chk;
- return $res;
- };
- *encode = sub{
- my ($obj,$str,$chk) = @_;
- my $res = '';
- for (my $i = 0; $i < length($str); $i++) {
- $res .=
- chr(utf8::native_to_unicode(ord(substr($str,$i,1))));
- }
- $_[1] = '' if $chk;
- return $res;
- };
- $Encode::Encoding{Unicode} =
- bless {Name => "UTF_EBCDIC"} => "Encode::UTF_EBCDIC";
- } else {
- package Encode::Internal;
- push @Encode::Internal::ISA, 'Encode::Encoding';
- *decode = sub{
- my ($obj,$str,$chk) = @_;
- utf8::upgrade($str);
- $_[1] = '' if $chk;
- return $str;
- };
- *encode = \&decode;
- $Encode::Encoding{Unicode} =
- bless {Name => "Internal"} => "Encode::Internal";
- }
-
- {
- # was in Encode::utf8
- package Encode::utf8;
- push @Encode::utf8::ISA, 'Encode::Encoding';
- #
- if ($use_xs){
- Encode::DEBUG and warn __PACKAGE__, " XS on";
- *decode = \&decode_xs;
- *encode = \&encode_xs;
- }else{
- Encode::DEBUG and warn __PACKAGE__, " XS off";
- *decode = sub{
- my ($obj,$octets,$chk) = @_;
- my $str = Encode::decode_utf8($octets);
- if (defined $str) {
- $_[1] = '' if $chk;
- return $str;
- }
- return undef;
- };
- *encode = sub {
- my ($obj,$string,$chk) = @_;
- my $octets = Encode::encode_utf8($string);
- $_[1] = '' if $chk;
- return $octets;
- };
- }
- *cat_decode = sub{ # ($obj, $dst, $src, $pos, $trm, $chk)
- my ($obj, undef, undef, $pos, $trm) = @_; # currently ignores $chk
- my ($rdst, $rsrc, $rpos) = \@_[1,2,3];
- use bytes;
- if ((my $npos = index($$rsrc, $trm, $pos)) >= 0) {
- $$rdst .= substr($$rsrc, $pos, $npos - $pos + length($trm));
- $$rpos = $npos + length($trm);
- return 1;
- }
- $$rdst .= substr($$rsrc, $pos);
- $$rpos = length($$rsrc);
- return '';
- };
- $Encode::Encoding{utf8} =
- bless {Name => "utf8"} => "Encode::utf8";
- $Encode::Encoding{"utf-8-strict"} =
- bless {Name => "utf-8-strict", strict_utf8 => 1 } => "Encode::utf8";
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Encode - character encodings
-
-=head1 SYNOPSIS
-
- use Encode;
-
-=head2 Table of Contents
-
-Encode consists of a collection of modules whose details are too big
-to fit in one document. This POD itself explains the top-level APIs
-and general topics at a glance. For other topics and more details,
-see the PODs below:
-
- Name Description
- --------------------------------------------------------
- Encode::Alias Alias definitions to encodings
- Encode::Encoding Encode Implementation Base Class
- Encode::Supported List of Supported Encodings
- Encode::CN Simplified Chinese Encodings
- Encode::JP Japanese Encodings
- Encode::KR Korean Encodings
- Encode::TW Traditional Chinese Encodings
- --------------------------------------------------------
-
-=head1 DESCRIPTION
-
-The C<Encode> module provides the interfaces between Perl's strings
-and the rest of the system. Perl strings are sequences of
-B<characters>.
-
-The repertoire of characters that Perl can represent is at least that
-defined by the Unicode Consortium. On most platforms the ordinal
-values of the characters (as returned by C<ord(ch)>) is the "Unicode
-codepoint" for the character (the exceptions are those platforms where
-the legacy encoding is some variant of EBCDIC rather than a super-set
-of ASCII - see L<perlebcdic>).
-
-Traditionally, computer data has been moved around in 8-bit chunks
-often called "bytes". These chunks are also known as "octets" in
-networking standards. Perl is widely used to manipulate data of many
-types - not only strings of characters representing human or computer
-languages but also "binary" data being the machine's representation of
-numbers, pixels in an image - or just about anything.
-
-When Perl is processing "binary data", the programmer wants Perl to
-process "sequences of bytes". This is not a problem for Perl - as a
-byte has 256 possible values, it easily fits in Perl's much larger
-"logical character".
-
-=head2 TERMINOLOGY
-
-=over 2
-
-=item *
-
-I<character>: a character in the range 0..(2**32-1) (or more).
-(What Perl's strings are made of.)
-
-=item *
-
-I<byte>: a character in the range 0..255
-(A special case of a Perl character.)
-
-=item *
-
-I<octet>: 8 bits of data, with ordinal values 0..255
-(Term for bytes passed to or from a non-Perl context, e.g. a disk file.)
-
-=back
-
-=head1 PERL ENCODING API
-
-=over 2
-
-=item $octets = encode(ENCODING, $string [, CHECK])
-
-Encodes a string from Perl's internal form into I<ENCODING> and returns
-a sequence of octets. ENCODING can be either a canonical name or
-an alias. For encoding names and aliases, see L</"Defining Aliases">.
-For CHECK, see L</"Handling Malformed Data">.
-
-For example, to convert a string from Perl's internal format to
-iso-8859-1 (also known as Latin1),
-
- $octets = encode("iso-8859-1", $string);
-
-B<CAVEAT>: When you run C<$octets = encode("utf8", $string)>, then $octets
-B<may not be equal to> $string. Though they both contain the same data, the utf8 flag
-for $octets is B<always> off. When you encode anything, utf8 flag of
-the result is always off, even when it contains completely valid utf8
-string. See L</"The UTF-8 flag"> below.
-
-If the $string is C<undef> then C<undef> is returned.
-
-=item $string = decode(ENCODING, $octets [, CHECK])
-
-Decodes a sequence of octets assumed to be in I<ENCODING> into Perl's
-internal form and returns the resulting string. As in encode(),
-ENCODING can be either a canonical name or an alias. For encoding names
-and aliases, see L</"Defining Aliases">. For CHECK, see
-L</"Handling Malformed Data">.
-
-For example, to convert ISO-8859-1 data to a string in Perl's internal format:
-
- $string = decode("iso-8859-1", $octets);
-
-B<CAVEAT>: When you run C<$string = decode("utf8", $octets)>, then $string
-B<may not be equal to> $octets. Though they both contain the same data,
-the utf8 flag for $string is on unless $octets entirely consists of
-ASCII data (or EBCDIC on EBCDIC machines). See L</"The UTF-8 flag">
-below.
-
-If the $string is C<undef> then C<undef> is returned.
-
-=item [$length =] from_to($octets, FROM_ENC, TO_ENC [, CHECK])
-
-Converts B<in-place> data between two encodings. The data in $octets
-must be encoded as octets and not as characters in Perl's internal
-format. For example, to convert ISO-8859-1 data to Microsoft's CP1250
-encoding:
-
- from_to($octets, "iso-8859-1", "cp1250");
-
-and to convert it back:
-
- from_to($octets, "cp1250", "iso-8859-1");
-
-Note that because the conversion happens in place, the data to be
-converted cannot be a string constant; it must be a scalar variable.
-
-from_to() returns the length of the converted string in octets on
-success, I<undef> on error.
-
-B<CAVEAT>: The following operations look the same but are not quite so;
-
- from_to($data, "iso-8859-1", "utf8"); #1
- $data = decode("iso-8859-1", $data); #2
-
-Both #1 and #2 make $data consist of a completely valid UTF-8 string
-but only #2 turns utf8 flag on. #1 is equivalent to
-
- $data = encode("utf8", decode("iso-8859-1", $data));
-
-See L</"The UTF-8 flag"> below.
-
-=item $octets = encode_utf8($string);
-
-Equivalent to C<$octets = encode("utf8", $string);> The characters
-that comprise $string are encoded in Perl's internal format and the
-result is returned as a sequence of octets. All possible
-characters have a UTF-8 representation so this function cannot fail.
-
-
-=item $string = decode_utf8($octets [, CHECK]);
-
-equivalent to C<$string = decode("utf8", $octets [, CHECK])>.
-The sequence of octets represented by
-$octets is decoded from UTF-8 into a sequence of logical
-characters. Not all sequences of octets form valid UTF-8 encodings, so
-it is possible for this call to fail. For CHECK, see
-L</"Handling Malformed Data">.
-
-=back
-
-=head2 Listing available encodings
-
- use Encode;
- @list = Encode->encodings();
-
-Returns a list of the canonical names of the available encodings that
-are loaded. To get a list of all available encodings including the
-ones that are not loaded yet, say
-
- @all_encodings = Encode->encodings(":all");
-
-Or you can give the name of a specific module.
-
- @with_jp = Encode->encodings("Encode::JP");
-
-When "::" is not in the name, "Encode::" is assumed.
-
- @ebcdic = Encode->encodings("EBCDIC");
-
-To find out in detail which encodings are supported by this package,
-see L<Encode::Supported>.
-
-=head2 Defining Aliases
-
-To add a new alias to a given encoding, use:
-
- use Encode;
- use Encode::Alias;
- define_alias(newName => ENCODING);
-
-After that, newName can be used as an alias for ENCODING.
-ENCODING may be either the name of an encoding or an
-I<encoding object>
-
-But before you do so, make sure the alias is nonexistent with
-C<resolve_alias()>, which returns the canonical name thereof.
-i.e.
-
- Encode::resolve_alias("latin1") eq "iso-8859-1" # true
- Encode::resolve_alias("iso-8859-12") # false; nonexistent
- Encode::resolve_alias($name) eq $name # true if $name is canonical
-
-resolve_alias() does not need C<use Encode::Alias>; it can be
-exported via C<use Encode qw(resolve_alias)>.
-
-See L<Encode::Alias> for details.
-
-=head1 Encoding via PerlIO
-
-If your perl supports I<PerlIO> (which is the default), you can use a PerlIO layer to decode
-and encode directly via a filehandle. The following two examples
-are totally identical in their functionality.
-
- # via PerlIO
- open my $in, "<:encoding(shiftjis)", $infile or die;
- open my $out, ">:encoding(euc-jp)", $outfile or die;
- while(<$in>){ print $out $_; }
-
- # via from_to
- open my $in, "<", $infile or die;
- open my $out, ">", $outfile or die;
- while(<$in>){
- from_to($_, "shiftjis", "euc-jp", 1);
- print $out $_;
- }
-
-Unfortunately, it may be that encodings are PerlIO-savvy. You can check
-if your encoding is supported by PerlIO by calling the C<perlio_ok>
-method.
-
- Encode::perlio_ok("hz"); # False
- find_encoding("euc-cn")->perlio_ok; # True where PerlIO is available
-
- use Encode qw(perlio_ok); # exported upon request
- perlio_ok("euc-jp")
-
-Fortunately, all encodings that come with Encode core are PerlIO-savvy
-except for hz and ISO-2022-kr. For gory details, see
-L<Encode::Encoding> and L<Encode::PerlIO>.
-
-=head1 Handling Malformed Data
-
-The optional I<CHECK> argument tells Encode what to do when it
-encounters malformed data. Without CHECK, Encode::FB_DEFAULT ( == 0 )
-is assumed.
-
-As of version 2.12 Encode supports coderef values for CHECK. See below.
-
-=over 2
-
-=item B<NOTE:> Not all encoding support this feature
-
-Some encodings ignore I<CHECK> argument. For example,
-L<Encode::Unicode> ignores I<CHECK> and it always croaks on error.
-
-=back
-
-Now here is the list of I<CHECK> values available
-
-=over 2
-
-=item I<CHECK> = Encode::FB_DEFAULT ( == 0)
-
-If I<CHECK> is 0, (en|de)code will put a I<substitution character> in
-place of a malformed character. When you encode, E<lt>subcharE<gt>
-will be used. When you decode the code point C<0xFFFD> is used. If
-the data is supposed to be UTF-8, an optional lexical warning
-(category utf8) is given.
-
-=item I<CHECK> = Encode::FB_CROAK ( == 1)
-
-If I<CHECK> is 1, methods will die on error immediately with an error
-message. Therefore, when I<CHECK> is set to 1, you should trap the
-error with eval{} unless you really want to let it die.
-
-=item I<CHECK> = Encode::FB_QUIET
-
-If I<CHECK> is set to Encode::FB_QUIET, (en|de)code will immediately
-return the portion of the data that has been processed so far when an
-error occurs. The data argument will be overwritten with everything
-after that point (that is, the unprocessed part of data). This is
-handy when you have to call decode repeatedly in the case where your
-source data may contain partial multi-byte character sequences,
-(i.e. you are reading with a fixed-width buffer). Here is a sample
-code that does exactly this:
-
- my $buffer = ''; my $string = '';
- while(read $fh, $buffer, 256, length($buffer)){
- $string .= decode($encoding, $buffer, Encode::FB_QUIET);
- # $buffer now contains the unprocessed partial character
- }
-
-=item I<CHECK> = Encode::FB_WARN
-
-This is the same as above, except that it warns on error. Handy when
-you are debugging the mode above.
-
-=item perlqq mode (I<CHECK> = Encode::FB_PERLQQ)
-
-=item HTML charref mode (I<CHECK> = Encode::FB_HTMLCREF)
-
-=item XML charref mode (I<CHECK> = Encode::FB_XMLCREF)
-
-For encodings that are implemented by Encode::XS, CHECK ==
-Encode::FB_PERLQQ turns (en|de)code into C<perlqq> fallback mode.
-
-When you decode, C<\xI<HH>> will be inserted for a malformed character,
-where I<HH> is the hex representation of the octet that could not be
-decoded to utf8. And when you encode, C<\x{I<HHHH>}> will be inserted,
-where I<HHHH> is the Unicode ID of the character that cannot be found
-in the character repertoire of the encoding.
-
-HTML/XML character reference modes are about the same, in place of
-C<\x{I<HHHH>}>, HTML uses C<&#I<NNN>;> where I<NNN> is a decimal number and
-XML uses C<&#xI<HHHH>;> where I<HHHH> is the hexadecimal number.
-
-In Encode 2.10 or later, C<LEAVE_SRC> is also implied.
-
-=item The bitmask
-
-These modes are actually set via a bitmask. Here is how the FB_XX
-constants are laid out. You can import the FB_XX constants via
-C<use Encode qw(:fallbacks)>; you can import the generic bitmask
-constants via C<use Encode qw(:fallback_all)>.
-
- FB_DEFAULT FB_CROAK FB_QUIET FB_WARN FB_PERLQQ
- DIE_ON_ERR 0x0001 X
- WARN_ON_ERR 0x0002 X
- RETURN_ON_ERR 0x0004 X X
- LEAVE_SRC 0x0008 X
- PERLQQ 0x0100 X
- HTMLCREF 0x0200
- XMLCREF 0x0400
-
-=back
-
-=head2 coderef for CHECK
-
-As of Encode 2.12 CHECK can also be a code reference which takes the
-ord value of unmapped caharacter as an argument and returns a string
-that represents the fallback character. For instance,
-
- $ascii = encode("ascii", $utf8, sub{ sprintf "<U+%04X>", shift });
-
-Acts like FB_PERLQQ but E<lt>U+I<XXXX>E<gt> is used instead of
-\x{I<XXXX>}.
-
-=head1 Defining Encodings
-
-To define a new encoding, use:
-
- use Encode qw(define_encoding);
- define_encoding($object, 'canonicalName' [, alias...]);
-
-I<canonicalName> will be associated with I<$object>. The object
-should provide the interface described in L<Encode::Encoding>.
-If more than two arguments are provided then additional
-arguments are taken as aliases for I<$object>.
-
-See L<Encode::Encoding> for more details.
-
-=head1 The UTF-8 flag
-
-Before the introduction of utf8 support in perl, The C<eq> operator
-just compared the strings represented by two scalars. Beginning with
-perl 5.8, C<eq> compares two strings with simultaneous consideration
-of I<the utf8 flag>. To explain why we made it so, I will quote page
-402 of C<Programming Perl, 3rd ed.>
-
-=over 2
-
-=item Goal #1:
-
-Old byte-oriented programs should not spontaneously break on the old
-byte-oriented data they used to work on.
-
-=item Goal #2:
-
-Old byte-oriented programs should magically start working on the new
-character-oriented data when appropriate.
-
-=item Goal #3:
-
-Programs should run just as fast in the new character-oriented mode
-as in the old byte-oriented mode.
-
-=item Goal #4:
-
-Perl should remain one language, rather than forking into a
-byte-oriented Perl and a character-oriented Perl.
-
-=back
-
-Back when C<Programming Perl, 3rd ed.> was written, not even Perl 5.6.0
-was born and many features documented in the book remained
-unimplemented for a long time. Perl 5.8 corrected this and the introduction
-of the UTF-8 flag is one of them. You can think of this perl notion as of a
-byte-oriented mode (utf8 flag off) and a character-oriented mode (utf8
-flag on).
-
-Here is how Encode takes care of the utf8 flag.
-
-=over 2
-
-=item *
-
-When you encode, the resulting utf8 flag is always off.
-
-=item *
-
-When you decode, the resulting utf8 flag is on unless you can
-unambiguously represent data. Here is the definition of
-dis-ambiguity.
-
-After C<$utf8 = decode('foo', $octet);>,
-
- When $octet is... The utf8 flag in $utf8 is
- ---------------------------------------------
- In ASCII only (or EBCDIC only) OFF
- In ISO-8859-1 ON
- In any other Encoding ON
- ---------------------------------------------
-
-As you see, there is one exception, In ASCII. That way you can assume
-Goal #1. And with Encode Goal #2 is assumed but you still have to be
-careful in such cases mentioned in B<CAVEAT> paragraphs.
-
-This utf8 flag is not visible in perl scripts, exactly for the same
-reason you cannot (or you I<don't have to>) see if a scalar contains a
-string, integer, or floating point number. But you can still peek
-and poke these if you will. See the section below.
-
-=back
-
-=head2 Messing with Perl's Internals
-
-The following API uses parts of Perl's internals in the current
-implementation. As such, they are efficient but may change.
-
-=over 2
-
-=item is_utf8(STRING [, CHECK])
-
-[INTERNAL] Tests whether the UTF-8 flag is turned on in the STRING.
-If CHECK is true, also checks the data in STRING for being well-formed
-UTF-8. Returns true if successful, false otherwise.
-
-As of perl 5.8.1, L<utf8> also has utf8::is_utf8().
-
-=item _utf8_on(STRING)
-
-[INTERNAL] Turns on the UTF-8 flag in STRING. The data in STRING is
-B<not> checked for being well-formed UTF-8. Do not use unless you
-B<know> that the STRING is well-formed UTF-8. Returns the previous
-state of the UTF-8 flag (so please don't treat the return value as
-indicating success or failure), or C<undef> if STRING is not a string.
-
-=item _utf8_off(STRING)
-
-[INTERNAL] Turns off the UTF-8 flag in STRING. Do not use frivolously.
-Returns the previous state of the UTF-8 flag (so please don't treat the
-return value as indicating success or failure), or C<undef> if STRING is
-not a string.
-
-=back
-
-=head1 UTF-8 vs. utf8
-
- ....We now view strings not as sequences of bytes, but as sequences
- of numbers in the range 0 .. 2**32-1 (or in the case of 64-bit
- computers, 0 .. 2**64-1) -- Programming Perl, 3rd ed.
-
-That has been the perl's notion of UTF-8 but official UTF-8 is more
-strict; Its ranges is much narrower (0 .. 10FFFF), some sequences are
-not allowed (i.e. Those used in the surrogate pair, 0xFFFE, et al).
-
-Now that is overruled by Larry Wall himself.
-
- From: Larry Wall <larry@wall.org>
- Date: December 04, 2004 11:51:58 JST
- To: perl-unicode@perl.org
- Subject: Re: Make Encode.pm support the real UTF-8
- Message-Id: <20041204025158.GA28754@wall.org>
-
- On Fri, Dec 03, 2004 at 10:12:12PM +0000, Tim Bunce wrote:
- : I've no problem with 'utf8' being perl's unrestricted uft8 encoding,
- : but "UTF-8" is the name of the standard and should give the
- : corresponding behaviour.
-
- For what it's worth, that's how I've always kept them straight in my
- head.
-
- Also for what it's worth, Perl 6 will mostly default to strict but
- make it easy to switch back to lax.
-
- Larry
-
-Do you copy? As of Perl 5.8.7, B<UTF-8> means strict, official UTF-8
-while B<utf8> means liberal, lax, version thereof. And Encode version
-2.10 or later thus groks the difference between C<UTF-8> and C"utf8".
-
- encode("utf8", "\x{FFFF_FFFF}", 1); # okay
- encode("UTF-8", "\x{FFFF_FFFF}", 1); # croaks
-
-C<UTF-8> in Encode is actually a canonical name for C<utf-8-strict>.
-Yes, the hyphen between "UTF" and "8" is important. Without it Encode
-goes "liberal"
-
- find_encoding("UTF-8")->name # is 'utf-8-strict'
- find_encoding("utf-8")->name # ditto. names are case insensitive
- find_encoding("utf8")->name # ditto. "_" are treated as "-"
- find_encoding("UTF8")->name # is 'utf8'.
-
-
-=head1 SEE ALSO
-
-L<Encode::Encoding>,
-L<Encode::Supported>,
-L<Encode::PerlIO>,
-L<encoding>,
-L<perlebcdic>,
-L<perlfunc/open>,
-L<perlunicode>,
-L<utf8>,
-the Perl Unicode Mailing List E<lt>perl-unicode@perl.orgE<gt>
-
-=head1 MAINTAINER
-
-This project was originated by Nick Ing-Simmons and later maintained
-by Dan Kogai E<lt>dankogai@dan.co.jpE<gt>. See AUTHORS for a full
-list of people involved. For any questions, use
-E<lt>perl-unicode@perl.orgE<gt> so we can all share.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode/Alias.pm b/Master/tlpkg/tlperl/lib/Encode/Alias.pm
deleted file mode 100644
index c0bbf69f469..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/Alias.pm
+++ /dev/null
@@ -1,341 +0,0 @@
-package Encode::Alias;
-use strict;
-no warnings 'redefine';
-use Encode;
-our $VERSION = do { my @r = (q$Revision: 2.4 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
-sub DEBUG () { 0 }
-
-use base qw(Exporter);
-
-# Public, encouraged API is exported by default
-
-our @EXPORT =
- qw (
- define_alias
- find_alias
- );
-
-our @Alias; # ordered matching list
-our %Alias; # cached known aliases
-
-sub find_alias{
- my $class = shift;
- my $find = shift;
- unless (exists $Alias{$find}) {
- $Alias{$find} = undef; # Recursion guard
- for (my $i=0; $i < @Alias; $i += 2){
- my $alias = $Alias[$i];
- my $val = $Alias[$i+1];
- my $new;
- if (ref($alias) eq 'Regexp' && $find =~ $alias){
- DEBUG and warn "eval $val";
- $new = eval $val;
- DEBUG and $@ and warn "$val, $@";
- }elsif (ref($alias) eq 'CODE'){
- DEBUG and warn "$alias", "->", "($find)";
- $new = $alias->($find);
- }elsif (lc($find) eq lc($alias)){
- $new = $val;
- }
- if (defined($new)){
- next if $new eq $find; # avoid (direct) recursion on bugs
- DEBUG and warn "$alias, $new";
- my $enc = (ref($new)) ? $new : Encode::find_encoding($new);
- if ($enc){
- $Alias{$find} = $enc;
- last;
- }
- }
- }
- # case insensitive search when canonical is not in all lowercase
- # RT ticket #7835
- unless ($Alias{$find}){
- my $lcfind = lc($find);
- for my $name (keys %Encode::Encoding, keys %Encode::ExtModule){
- $lcfind eq lc($name) or next;
- $Alias{$find} = Encode::find_encoding($name);
- DEBUG and warn "$find => $name";
- }
- }
- }
- if (DEBUG){
- my $name;
- if (my $e = $Alias{$find}){
- $name = $e->name;
- }else{
- $name = "";
- }
- warn "find_alias($class, $find)->name = $name";
- }
- return $Alias{$find};
-}
-
-sub define_alias{
- while (@_){
- my ($alias,$name) = splice(@_,0,2);
- unshift(@Alias, $alias => $name); # newer one has precedence
- if (ref($alias)){
- # clear %Alias cache to allow overrides
- my @a = keys %Alias;
- for my $k (@a){
- if (ref($alias) eq 'Regexp' && $k =~ $alias){
- DEBUG and warn "delete \$Alias\{$k\}";
- delete $Alias{$k};
- }
- elsif (ref($alias) eq 'CODE'){
- DEBUG and warn "delete \$Alias\{$k\}";
- delete $Alias{$alias->($name)};
- }
- }
- }else{
- DEBUG and warn "delete \$Alias\{$alias\}";
- delete $Alias{$alias};
- }
- }
-}
-
-# Allow latin-1 style names as well
-# 0 1 2 3 4 5 6 7 8 9 10
-our @Latin2iso = ( 0, 1, 2, 3, 4, 9, 10, 13, 14, 15, 16 );
-# Allow winlatin1 style names as well
-our %Winlatin2cp = (
- 'latin1' => 1252,
- 'latin2' => 1250,
- 'cyrillic' => 1251,
- 'greek' => 1253,
- 'turkish' => 1254,
- 'hebrew' => 1255,
- 'arabic' => 1256,
- 'baltic' => 1257,
- 'vietnamese' => 1258,
- );
-
-init_aliases();
-
-sub undef_aliases{
- @Alias = ();
- %Alias = ();
-}
-
-sub init_aliases
-{
- undef_aliases();
- # Try all-lower-case version should all else fails
- define_alias( qr/^(.*)$/ => '"\L$1"' );
-
- # UTF/UCS stuff
- define_alias( qr/^UTF-?7$/i => '"UTF-7"');
- define_alias( qr/^UCS-?2-?LE$/i => '"UCS-2LE"' );
- define_alias( qr/^UCS-?2-?(BE)?$/i => '"UCS-2BE"',
- qr/^UCS-?4-?(BE|LE)?$/i => 'uc("UTF-32$1")',
- qr/^iso-10646-1$/i => '"UCS-2BE"' );
- define_alias( qr/^UTF-?(16|32)-?BE$/i => '"UTF-$1BE"',
- qr/^UTF-?(16|32)-?LE$/i => '"UTF-$1LE"',
- qr/^UTF-?(16|32)$/i => '"UTF-$1"',
- );
- # ASCII
- define_alias(qr/^(?:US-?)ascii$/i => '"ascii"');
- define_alias('C' => 'ascii');
- define_alias(qr/\bISO[-_]?646[-_]?US$/i => '"ascii"');
- # Allow variants of iso-8859-1 etc.
- define_alias( qr/\biso[-_]?(\d+)[-_](\d+)$/i => '"iso-$1-$2"' );
-
- # At least HP-UX has these.
- define_alias( qr/\biso8859(\d+)$/i => '"iso-8859-$1"' );
-
- # More HP stuff.
- define_alias( qr/\b(?:hp-)?(arabic|greek|hebrew|kana|roman|thai|turkish)8$/i => '"${1}8"' );
-
- # The Official name of ASCII.
- define_alias( qr/\bANSI[-_]?X3\.4[-_]?1968$/i => '"ascii"' );
-
- # This is a font issue, not an encoding issue.
- # (The currency symbol of the Latin 1 upper half
- # has been redefined as the euro symbol.)
- define_alias( qr/^(.+)\@euro$/i => '"$1"' );
-
- define_alias( qr/\b(?:iso[-_]?)?latin[-_]?(\d+)$/i
- => 'defined $Encode::Alias::Latin2iso[$1] ? "iso-8859-$Encode::Alias::Latin2iso[$1]" : undef' );
-
- define_alias( qr/\bwin(latin[12]|cyrillic|baltic|greek|turkish|
- hebrew|arabic|baltic|vietnamese)$/ix =>
- '"cp" . $Encode::Alias::Winlatin2cp{lc($1)}' );
-
- # Common names for non-latin preferred MIME names
- define_alias( 'ascii' => 'US-ascii',
- 'cyrillic' => 'iso-8859-5',
- 'arabic' => 'iso-8859-6',
- 'greek' => 'iso-8859-7',
- 'hebrew' => 'iso-8859-8',
- 'thai' => 'iso-8859-11',
- 'tis620' => 'iso-8859-11',
- );
-
- # At least AIX has IBM-NNN (surprisingly...) instead of cpNNN.
- # And Microsoft has their own naming (again, surprisingly).
- # And windows-* is registered in IANA!
- define_alias( qr/\b(?:cp|ibm|ms|windows)[-_ ]?(\d{2,4})$/i => '"cp$1"');
-
- # Sometimes seen with a leading zero.
- # define_alias( qr/\bcp037\b/i => '"cp37"');
-
- # Mac Mappings
- # predefined in *.ucm; unneeded
- # define_alias( qr/\bmacIcelandic$/i => '"macIceland"');
- define_alias( qr/^mac_(.*)$/i => '"mac$1"');
- # Ououououou. gone. They are differente!
- # define_alias( qr/\bmacRomanian$/i => '"macRumanian"');
-
- # Standardize on the dashed versions.
- define_alias( qr/\bkoi8[\s\-_]*([ru])$/i => '"koi8-$1"' );
-
- unless ($Encode::ON_EBCDIC){
- # for Encode::CN
- define_alias( qr/\beuc.*cn$/i => '"euc-cn"' );
- define_alias( qr/\bcn.*euc$/i => '"euc-cn"' );
- # define_alias( qr/\bGB[- ]?(\d+)$/i => '"euc-cn"' )
- # CP936 doesn't have vendor-addon for GBK, so they're identical.
- define_alias( qr/^gbk$/i => '"cp936"');
- # This fixes gb2312 vs. euc-cn confusion, practically
- define_alias( qr/\bGB[-_ ]?2312(?!-?raw)/i => '"euc-cn"' );
- # for Encode::JP
- define_alias( qr/\bjis$/i => '"7bit-jis"' );
- define_alias( qr/\beuc.*jp$/i => '"euc-jp"' );
- define_alias( qr/\bjp.*euc$/i => '"euc-jp"' );
- define_alias( qr/\bujis$/i => '"euc-jp"' );
- define_alias( qr/\bshift.*jis$/i => '"shiftjis"' );
- define_alias( qr/\bsjis$/i => '"shiftjis"' );
- define_alias( qr/\bwindows-31j$/i => '"cp932"' );
- # for Encode::KR
- define_alias( qr/\beuc.*kr$/i => '"euc-kr"' );
- define_alias( qr/\bkr.*euc$/i => '"euc-kr"' );
- # This fixes ksc5601 vs. euc-kr confusion, practically
- define_alias( qr/(?:x-)?uhc$/i => '"cp949"' );
- define_alias( qr/(?:x-)?windows-949$/i => '"cp949"' );
- define_alias( qr/\bks_c_5601-1987$/i => '"cp949"' );
- # for Encode::TW
- define_alias( qr/\bbig-?5$/i => '"big5-eten"' );
- define_alias( qr/\bbig5-?et(?:en)?$/i => '"big5-eten"' );
- define_alias( qr/\btca[-_]?big5$/i => '"big5-eten"' );
- define_alias( qr/\bbig5-?hk(?:scs)?$/i => '"big5-hkscs"' );
- define_alias( qr/\bhk(?:scs)?[-_]?big5$/i => '"big5-hkscs"' );
- }
- # utf8 is blessed :)
- define_alias( qr/^UTF-8$/i => '"utf-8-strict"');
- # At last, Map white space and _ to '-'
- define_alias( qr/^(\S+)[\s_]+(.*)$/i => '"$1-$2"' );
-}
-
-1;
-__END__
-
-# TODO: HP-UX '8' encodings arabic8 greek8 hebrew8 kana8 thai8 turkish8
-# TODO: HP-UX '15' encodings japanese15 korean15 roi15
-# TODO: Cyrillic encoding ISO-IR-111 (useful?)
-# TODO: Armenian encoding ARMSCII-8
-# TODO: Hebrew encoding ISO-8859-8-1
-# TODO: Thai encoding TCVN
-# TODO: Vietnamese encodings VPS
-# TODO: Mac Asian+African encodings: Arabic Armenian Bengali Burmese
-# ChineseSimp ChineseTrad Devanagari Ethiopic ExtArabic
-# Farsi Georgian Gujarati Gurmukhi Hebrew Japanese
-# Kannada Khmer Korean Laotian Malayalam Mongolian
-# Oriya Sinhalese Symbol Tamil Telugu Tibetan Vietnamese
-
-=head1 NAME
-
-Encode::Alias - alias definitions to encodings
-
-=head1 SYNOPSIS
-
- use Encode;
- use Encode::Alias;
- define_alias( newName => ENCODING);
-
-=head1 DESCRIPTION
-
-Allows newName to be used as an alias for ENCODING. ENCODING may be
-either the name of an encoding or an encoding object (as described
-in L<Encode>).
-
-Currently I<newName> can be specified in the following ways:
-
-=over 4
-
-=item As a simple string.
-
-=item As a qr// compiled regular expression, e.g.:
-
- define_alias( qr/^iso8859-(\d+)$/i => '"iso-8859-$1"' );
-
-In this case, if I<ENCODING> is not a reference, it is C<eval>-ed
-in order to allow C<$1> etc. to be substituted. The example is one
-way to alias names as used in X11 fonts to the MIME names for the
-iso-8859-* family. Note the double quotes inside the single quotes.
-
-(or, you don't have to do this yourself because this example is predefined)
-
-If you are using a regex here, you have to use the quotes as shown or
-it won't work. Also note that regex handling is tricky even for the
-experienced. Use this feature with caution.
-
-=item As a code reference, e.g.:
-
- define_alias( sub {shift =~ /^iso8859-(\d+)$/i ? "iso-8859-$1" : undef } );
-
-The same effect as the example above in a different way. The coderef
-takes the alias name as an argument and returns a canonical name on
-success or undef if not. Note the second argument is not required.
-Use this with even more caution than the regex version.
-
-=back
-
-=head3 Changes in code reference aliasing
-
-As of Encode 1.87, the older form
-
- define_alias( sub { return /^iso8859-(\d+)$/i ? "iso-8859-$1" : undef } );
-
-no longer works.
-
-Encode up to 1.86 internally used "local $_" to implement ths older
-form. But consider the code below;
-
- use Encode;
- $_ = "eeeee" ;
- while (/(e)/g) {
- my $utf = decode('aliased-encoding-name', $1);
- print "position:",pos,"\n";
- }
-
-Prior to Encode 1.86 this fails because of "local $_".
-
-=head2 Alias overloading
-
-You can override predefined aliases by simply applying define_alias().
-The new alias is always evaluated first, and when necessary,
-define_alias() flushes the internal cache to make the new definition
-available.
-
- # redirect SHIFT_JIS to MS/IBM Code Page 932, which is a
- # superset of SHIFT_JIS
-
- define_alias( qr/shift.*jis$/i => '"cp932"' );
- define_alias( qr/sjis$/i => '"cp932"' );
-
-If you want to zap all predefined aliases, you can use
-
- Encode::Alias->undef_aliases;
-
-to do so. And
-
- Encode::Alias->init_aliases;
-
-gets the factory settings back.
-
-=head1 SEE ALSO
-
-L<Encode>, L<Encode::Supported>
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Encode/Byte.pm b/Master/tlpkg/tlperl/lib/Encode/Byte.pm
deleted file mode 100644
index d40c1c3d9d1..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/Byte.pm
+++ /dev/null
@@ -1,119 +0,0 @@
-package Encode::Byte;
-use Encode;
-our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
-
-use XSLoader;
-XSLoader::load(__PACKAGE__,$VERSION);
-
-1;
-__END__
-
-=head1 NAME
-
-Encode::Byte - Single Byte Encodings
-
-=head1 SYNOPSIS
-
- use Encode qw/encode decode/;
- $greek = encode("iso-8859-7", $utf8); # loads Encode::Byte implicitly
- $utf8 = decode("iso-8859-7", $greek); # ditto
-
-=head1 ABSTRACT
-
-This module implements various single byte encodings. For most cases it uses
-\x80-\xff (upper half) to map non-ASCII characters. Encodings
-supported are as follows.
-
- Canonical Alias Description
- --------------------------------------------------------------------
- # ISO 8859 series
- (iso-8859-1 is in built-in)
- iso-8859-2 latin2 [ISO]
- iso-8859-3 latin3 [ISO]
- iso-8859-4 latin4 [ISO]
- iso-8859-5 [ISO]
- iso-8859-6 [ISO]
- iso-8859-7 [ISO]
- iso-8859-8 [ISO]
- iso-8859-9 latin5 [ISO]
- iso-8859-10 latin6 [ISO]
- iso-8859-11
- (iso-8859-12 is nonexistent)
- iso-8859-13 latin7 [ISO]
- iso-8859-14 latin8 [ISO]
- iso-8859-15 latin9 [ISO]
- iso-8859-16 latin10 [ISO]
-
- # Cyrillic
- koi8-f
- koi8-r cp878 [RFC1489]
- koi8-u [RFC2319]
-
- # Vietnamese
- viscii
-
- # all cp* are also available as ibm-*, ms-*, and windows-*
- # also see L<http://msdn.microsoft.com/workshop/author/dhtml/reference/charsets/charset4.asp>
-
- cp424
- cp437
- cp737
- cp775
- cp850
- cp852
- cp855
- cp856
- cp857
- cp860
- cp861
- cp862
- cp863
- cp864
- cp865
- cp866
- cp869
- cp874
- cp1006
- cp1250 WinLatin2
- cp1251 WinCyrillic
- cp1252 WinLatin1
- cp1253 WinGreek
- cp1254 WinTurkish
- cp1255 WinHebrew
- cp1256 WinArabic
- cp1257 WinBaltic
- cp1258 WinVietnamese
-
- # Macintosh
- # Also see L<http://developer.apple.com/technotes/tn/tn1150.html>
- MacArabic
- MacCentralEurRoman
- MacCroatian
- MacCyrillic
- MacFarsi
- MacGreek
- MacHebrew
- MacIcelandic
- MacRoman
- MacRomanian
- MacRumanian
- MacSami
- MacThai
- MacTurkish
- MacUkrainian
-
- # More vendor encodings
- AdobeStandardEncoding
- nextstep
- gsm0338 # used in GSM handsets
- hp-roman8
-
-=head1 DESCRIPTION
-
-To find how to use this module in detail, see L<Encode>.
-
-=head1 SEE ALSO
-
-L<Encode>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode/CJKConstants.pm b/Master/tlpkg/tlperl/lib/Encode/CJKConstants.pm
deleted file mode 100644
index 4ab40e72ef2..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/CJKConstants.pm
+++ /dev/null
@@ -1,66 +0,0 @@
-#
-# $Id: CJKConstants.pm,v 2.0 2004/05/16 20:55:16 dankogai Exp $
-#
-
-package Encode::CJKConstants;
-
-use strict;
-
-our $RCSID = q$Id: CJKConstants.pm,v 2.0 2004/05/16 20:55:16 dankogai Exp $;
-our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
-
-use Carp;
-
-require Exporter;
-our @ISA = qw(Exporter);
-our @EXPORT = qw();
-our @EXPORT_OK = qw(%CHARCODE %ESC %RE);
-our %EXPORT_TAGS = ( 'all' => [ @EXPORT_OK, @EXPORT ] );
-
-my %_0208 = (
- 1978 => '\e\$\@',
- 1983 => '\e\$B',
- 1990 => '\e&\@\e\$B',
- );
-
-our %CHARCODE = (
- UNDEF_EUC => "\xa2\xae", # ¢® in EUC
- UNDEF_SJIS => "\x81\xac", # ¢® in SJIS
- UNDEF_JIS => "\xa2\xf7", # ¢÷ -- used in unicode
- UNDEF_UNICODE => "\x20\x20", # ¢÷ -- used in unicode
- );
-
-our %ESC = (
- GB_2312 => "\e\$A",
- JIS_0208 => "\e\$B",
- JIS_0212 => "\e\$(D",
- KSC_5601 => "\e\$(C",
- ASC => "\e\(B",
- KANA => "\e\(I",
- '2022_KR' => "\e\$)C",
- );
-
-our %RE =
- (
- ASCII => '[\x00-\x7f]',
- BIN => '[\x00-\x06\x7f\xff]',
- EUC_0212 => '\x8f[\xa1-\xfe][\xa1-\xfe]',
- EUC_C => '[\xa1-\xfe][\xa1-\xfe]',
- EUC_KANA => '\x8e[\xa1-\xdf]',
- JIS_0208 => "$_0208{1978}|$_0208{1983}|$_0208{1990}",
- JIS_0212 => "\e" . '\$\(D',
- ISO_ASC => "\e" . '\([BJ]',
- JIS_KANA => "\e" . '\(I',
- '2022_KR' => "\e" . '\$\)C',
- SJIS_C => '[\x81-\x9f\xe0-\xfc][\x40-\x7e\x80-\xfc]',
- SJIS_KANA => '[\xa1-\xdf]',
- UTF8 => '[\xc0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf][\x80-\xbf]'
- );
-
-1;
-
-=head1 NAME
-
-Encode::CJKConstants.pm -- Internally used by Encode::??::ISO_2022_*
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode/CN.pm b/Master/tlpkg/tlperl/lib/Encode/CN.pm
deleted file mode 100644
index be5a830fc51..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/CN.pm
+++ /dev/null
@@ -1,76 +0,0 @@
-package Encode::CN;
-BEGIN {
- if (ord("A") == 193) {
- die "Encode::CN not supported on EBCDIC\n";
- }
-}
-our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
-
-use Encode;
-use XSLoader;
-XSLoader::load(__PACKAGE__,$VERSION);
-
-# Relocated from Encode.pm
-
-use Encode::CN::HZ;
-# use Encode::CN::2022_CN;
-
-1;
-__END__
-
-=head1 NAME
-
-Encode::CN - China-based Chinese Encodings
-
-=head1 SYNOPSIS
-
- use Encode qw/encode decode/;
- $euc_cn = encode("euc-cn", $utf8); # loads Encode::CN implicitly
- $utf8 = decode("euc-cn", $euc_cn); # ditto
-
-=head1 DESCRIPTION
-
-This module implements China-based Chinese charset encodings.
-Encodings supported are as follows.
-
- Canonical Alias Description
- --------------------------------------------------------------------
- euc-cn /\beuc.*cn$/i EUC (Extended Unix Character)
- /\bcn.*euc$/i
- /\bGB[-_ ]?2312(?:\D.*$|$)/i (see below)
- gb2312-raw The raw (low-bit) GB2312 character map
- gb12345-raw Traditional chinese counterpart to
- GB2312 (raw)
- iso-ir-165 GB2312 + GB6345 + GB8565 + additions
- MacChineseSimp GB2312 + Apple Additions
- cp936 Code Page 936, also known as GBK
- (Extended GuoBiao)
- hz 7-bit escaped GB2312 encoding
- --------------------------------------------------------------------
-
-To find how to use this module in detail, see L<Encode>.
-
-=head1 NOTES
-
-Due to size concerns, C<GB 18030> (an extension to C<GBK>) is distributed
-separately on CPAN, under the name L<Encode::HanExtra>. That module
-also contains extra Taiwan-based encodings.
-
-=head1 BUGS
-
-When you see C<charset=gb2312> on mails and web pages, they really
-mean C<euc-cn> encodings. To fix that, C<gb2312> is aliased to C<euc-cn>.
-Use C<gb2312-raw> when you really mean it.
-
-The ASCII region (0x00-0x7f) is preserved for all encodings, even though
-this conflicts with mappings by the Unicode Consortium. See
-
-L<http://www.debian.or.jp/~kubota/unicode-symbols.html.en>
-
-to find out why it is implemented that way.
-
-=head1 SEE ALSO
-
-L<Encode>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode/CN/HZ.pm b/Master/tlpkg/tlperl/lib/Encode/CN/HZ.pm
deleted file mode 100644
index fbc6ba60ced..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/CN/HZ.pm
+++ /dev/null
@@ -1,196 +0,0 @@
-package Encode::CN::HZ;
-
-use strict;
-
-use vars qw($VERSION);
-$VERSION = do { my @r = (q$Revision: 2.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
-
-use Encode qw(:fallbacks);
-
-use base qw(Encode::Encoding);
-__PACKAGE__->Define('hz');
-
-# HZ is a combination of ASCII and escaped GB, so we implement it
-# with the GB2312(raw) encoding here. Cf. RFCs 1842 & 1843.
-
-# not ported for EBCDIC. Which should be used, "~" or "\x7E"?
-
-sub needs_lines { 1 }
-
-sub decode ($$;$)
-{
- my ($obj,$str,$chk) = @_;
-
- my $GB = Encode::find_encoding('gb2312-raw');
- my $ret = '';
- my $in_ascii = 1; # default mode is ASCII.
-
- while (length $str) {
- if ($in_ascii) { # ASCII mode
- if ($str =~ s/^([\x00-\x7D\x7F]+)//) { # no '~' => ASCII
- $ret .= $1;
- # EBCDIC should need ascii2native, but not ported.
- }
- elsif ($str =~ s/^\x7E\x7E//) { # escaped tilde
- $ret .= '~';
- }
- elsif ($str =~ s/^\x7E\cJ//) { # '\cJ' == LF in ASCII
- 1; # no-op
- }
- elsif ($str =~ s/^\x7E\x7B//) { # '~{'
- $in_ascii = 0; # to GB
- }
- else { # encounters an invalid escape, \x80 or greater
- last;
- }
- }
- else { # GB mode; the byte ranges are as in RFC 1843.
- if ($str =~ s/^((?:[\x21-\x77][\x21-\x7E])+)//) {
- $ret .= $GB->decode($1, $chk);
- }
- elsif ($str =~ s/^\x7E\x7D//) { # '~}'
- $in_ascii = 1;
- }
- else { # invalid
- last;
- }
- }
- }
- $_[1] = '' if $chk; # needs_lines guarantees no partial character
- return $ret;
-}
-
-sub cat_decode {
- my ($obj, undef, $src, $pos, $trm, $chk) = @_;
- my ($rdst, $rsrc, $rpos) = \@_[1..3];
-
- my $GB = Encode::find_encoding('gb2312-raw');
- my $ret = '';
- my $in_ascii = 1; # default mode is ASCII.
-
- my $ini_pos = pos($$rsrc);
-
- substr($src, 0, $pos) = '';
-
- my $ini_len = bytes::length($src);
-
- # $trm is the first of the pair '~~', then 2nd tilde is to be removed.
- # XXX: Is better C<$src =~ s/^\x7E// or die if ...>?
- $src =~ s/^\x7E// if $trm eq "\x7E";
-
- while (length $src) {
- my $now;
- if ($in_ascii) { # ASCII mode
- if ($src =~ s/^([\x00-\x7D\x7F])//) { # no '~' => ASCII
- $now = $1;
- }
- elsif ($src =~ s/^\x7E\x7E//) { # escaped tilde
- $now = '~';
- }
- elsif ($src =~ s/^\x7E\cJ//) { # '\cJ' == LF in ASCII
- next;
- }
- elsif ($src =~ s/^\x7E\x7B//) { # '~{'
- $in_ascii = 0; # to GB
- next;
- }
- else { # encounters an invalid escape, \x80 or greater
- last;
- }
- }
- else { # GB mode; the byte ranges are as in RFC 1843.
- if ($src =~ s/^((?:[\x21-\x77][\x21-\x7F])+)//) {
- $now = $GB->decode($1, $chk);
- }
- elsif ($src =~ s/^\x7E\x7D//) { # '~}'
- $in_ascii = 1;
- next;
- }
- else { # invalid
- last;
- }
- }
-
- next if ! defined $now;
-
- $ret .= $now;
-
- if ($now eq $trm) {
- $$rdst .= $ret;
- $$rpos = $ini_pos + $pos + $ini_len - bytes::length($src);
- pos($$rsrc) = $ini_pos;
- return 1;
- }
- }
-
- $$rdst .= $ret;
- $$rpos = $ini_pos + $pos + $ini_len - bytes::length($src);
- pos($$rsrc) = $ini_pos;
- return ''; # terminator not found
-}
-
-
-sub encode($$;$)
-{
- my ($obj,$str,$chk) = @_;
-
- my $GB = Encode::find_encoding('gb2312-raw');
- my $ret = '';
- my $in_ascii = 1; # default mode is ASCII.
-
- no warnings 'utf8'; # $str may be malformed UTF8 at the end of a chunk.
-
- while (length $str) {
- if ($str =~ s/^([[:ascii:]]+)//) {
- my $tmp = $1;
- $tmp =~ s/~/~~/g; # escapes tildes
- if (! $in_ascii) {
- $ret .= "\x7E\x7D"; # '~}'
- $in_ascii = 1;
- }
- $ret .= pack 'a*', $tmp; # remove UTF8 flag.
- }
- elsif ($str =~ s/(.)//) {
- my $s = $1;
- my $tmp = $GB->encode($s, $chk);
- last if !defined $tmp;
- if (length $tmp == 2) { # maybe a valid GB char (XXX)
- if ($in_ascii) {
- $ret .= "\x7E\x7B"; # '~{'
- $in_ascii = 0;
- }
- $ret .= $tmp;
- }
- elsif (length $tmp) { # maybe FALLBACK in ASCII (XXX)
- if (!$in_ascii) {
- $ret .= "\x7E\x7D"; # '~}'
- $in_ascii = 1;
- }
- $ret .= $tmp;
- }
- }
- else { # if $str is malformed UTF8 *and* if length $str != 0.
- last;
- }
- }
- $_[1] = $str if $chk;
-
- # The state at the end of the chunk is discarded, even if in GB mode.
- # That results in the combination of GB-OUT and GB-IN, i.e. "~}~{".
- # Parhaps it is harmless, but further investigations may be required...
-
- if (! $in_ascii) {
- $ret .= "\x7E\x7D"; # '~}'
- $in_ascii = 1;
- }
- return $ret;
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Encode::CN::HZ -- internally used by Encode::CN
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode/Changes.e2x b/Master/tlpkg/tlperl/lib/Encode/Changes.e2x
deleted file mode 100644
index 5c67c55cb93..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/Changes.e2x
+++ /dev/null
@@ -1,7 +0,0 @@
-#
-# $Id: Changes.e2x,v 2.0 2004/05/16 20:55:15 dankogai Exp $
-# Revision history for Perl extension Encode::$_Name_.
-#
-
-0.01 $_Now_
- Autogenerated by enc2xs version $_Version_.
diff --git a/Master/tlpkg/tlperl/lib/Encode/Config.pm b/Master/tlpkg/tlperl/lib/Encode/Config.pm
deleted file mode 100644
index d69b92d8248..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/Config.pm
+++ /dev/null
@@ -1,166 +0,0 @@
-#
-# Demand-load module list
-#
-package Encode::Config;
-our $VERSION = do { my @r = (q$Revision: 2.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
-
-use strict;
-
-our %ExtModule =
- (
- # Encode::Byte
- #iso-8859-1 is in Encode.pm itself
- 'iso-8859-2' => 'Encode::Byte',
- 'iso-8859-3' => 'Encode::Byte',
- 'iso-8859-4' => 'Encode::Byte',
- 'iso-8859-5' => 'Encode::Byte',
- 'iso-8859-6' => 'Encode::Byte',
- 'iso-8859-7' => 'Encode::Byte',
- 'iso-8859-8' => 'Encode::Byte',
- 'iso-8859-9' => 'Encode::Byte',
- 'iso-8859-10' => 'Encode::Byte',
- 'iso-8859-11' => 'Encode::Byte',
- 'iso-8859-13' => 'Encode::Byte',
- 'iso-8859-14' => 'Encode::Byte',
- 'iso-8859-15' => 'Encode::Byte',
- 'iso-8859-16' => 'Encode::Byte',
- 'koi8-f' => 'Encode::Byte',
- 'koi8-r' => 'Encode::Byte',
- 'koi8-u' => 'Encode::Byte',
- 'viscii' => 'Encode::Byte',
- 'cp424' => 'Encode::Byte',
- 'cp437' => 'Encode::Byte',
- 'cp737' => 'Encode::Byte',
- 'cp775' => 'Encode::Byte',
- 'cp850' => 'Encode::Byte',
- 'cp852' => 'Encode::Byte',
- 'cp855' => 'Encode::Byte',
- 'cp856' => 'Encode::Byte',
- 'cp857' => 'Encode::Byte',
- 'cp860' => 'Encode::Byte',
- 'cp861' => 'Encode::Byte',
- 'cp862' => 'Encode::Byte',
- 'cp863' => 'Encode::Byte',
- 'cp864' => 'Encode::Byte',
- 'cp865' => 'Encode::Byte',
- 'cp866' => 'Encode::Byte',
- 'cp869' => 'Encode::Byte',
- 'cp874' => 'Encode::Byte',
- 'cp1006' => 'Encode::Byte',
- 'cp1250' => 'Encode::Byte',
- 'cp1251' => 'Encode::Byte',
- 'cp1252' => 'Encode::Byte',
- 'cp1253' => 'Encode::Byte',
- 'cp1254' => 'Encode::Byte',
- 'cp1255' => 'Encode::Byte',
- 'cp1256' => 'Encode::Byte',
- 'cp1257' => 'Encode::Byte',
- 'cp1258' => 'Encode::Byte',
- 'AdobeStandardEncoding' => 'Encode::Byte',
- 'MacArabic' => 'Encode::Byte',
- 'MacCentralEurRoman' => 'Encode::Byte',
- 'MacCroatian' => 'Encode::Byte',
- 'MacCyrillic' => 'Encode::Byte',
- 'MacFarsi' => 'Encode::Byte',
- 'MacGreek' => 'Encode::Byte',
- 'MacHebrew' => 'Encode::Byte',
- 'MacIcelandic' => 'Encode::Byte',
- 'MacRoman' => 'Encode::Byte',
- 'MacRomanian' => 'Encode::Byte',
- 'MacRumanian' => 'Encode::Byte',
- 'MacSami' => 'Encode::Byte',
- 'MacThai' => 'Encode::Byte',
- 'MacTurkish' => 'Encode::Byte',
- 'MacUkrainian' => 'Encode::Byte',
- 'nextstep' => 'Encode::Byte',
- 'hp-roman8' => 'Encode::Byte',
- 'gsm0338' => 'Encode::Byte',
- # Encode::EBCDIC
- 'cp37' => 'Encode::EBCDIC',
- 'cp500' => 'Encode::EBCDIC',
- 'cp875' => 'Encode::EBCDIC',
- 'cp1026' => 'Encode::EBCDIC',
- 'cp1047' => 'Encode::EBCDIC',
- 'posix-bc' => 'Encode::EBCDIC',
- # Encode::Symbol
- 'dingbats' => 'Encode::Symbol',
- 'symbol' => 'Encode::Symbol',
- 'AdobeSymbol' => 'Encode::Symbol',
- 'AdobeZdingbat' => 'Encode::Symbol',
- 'MacDingbats' => 'Encode::Symbol',
- 'MacSymbol' => 'Encode::Symbol',
- # Encode::Unicode
- 'UCS-2BE' => 'Encode::Unicode',
- 'UCS-2LE' => 'Encode::Unicode',
- 'UTF-16' => 'Encode::Unicode',
- 'UTF-16BE' => 'Encode::Unicode',
- 'UTF-16LE' => 'Encode::Unicode',
- 'UTF-32' => 'Encode::Unicode',
- 'UTF-32BE' => 'Encode::Unicode',
- 'UTF-32LE' => 'Encode::Unicode',
- 'UTF-7' => 'Encode::Unicode::UTF7',
- );
-
-unless (ord("A") == 193){
- %ExtModule =
- (
- %ExtModule,
- 'euc-cn' => 'Encode::CN',
- 'gb12345-raw' => 'Encode::CN',
- 'gb2312-raw' => 'Encode::CN',
- 'hz' => 'Encode::CN',
- 'iso-ir-165' => 'Encode::CN',
- 'cp936' => 'Encode::CN',
- 'MacChineseSimp' => 'Encode::CN',
-
- '7bit-jis' => 'Encode::JP',
- 'euc-jp' => 'Encode::JP',
- 'iso-2022-jp' => 'Encode::JP',
- 'iso-2022-jp-1' => 'Encode::JP',
- 'jis0201-raw' => 'Encode::JP',
- 'jis0208-raw' => 'Encode::JP',
- 'jis0212-raw' => 'Encode::JP',
- 'cp932' => 'Encode::JP',
- 'MacJapanese' => 'Encode::JP',
- 'shiftjis' => 'Encode::JP',
-
-
- 'euc-kr' => 'Encode::KR',
- 'iso-2022-kr' => 'Encode::KR',
- 'johab' => 'Encode::KR',
- 'ksc5601-raw' => 'Encode::KR',
- 'cp949' => 'Encode::KR',
- 'MacKorean' => 'Encode::KR',
-
- 'big5-eten' => 'Encode::TW',
- 'big5-hkscs' => 'Encode::TW',
- 'cp950' => 'Encode::TW',
- 'MacChineseTrad' => 'Encode::TW',
-
- #'big5plus' => 'Encode::HanExtra',
- #'euc-tw' => 'Encode::HanExtra',
- #'gb18030' => 'Encode::HanExtra',
-
- 'MIME-Header' => 'Encode::MIME::Header',
- 'MIME-B' => 'Encode::MIME::Header',
- 'MIME-Q' => 'Encode::MIME::Header',
-
- 'MIME-Header-ISO_2022_JP' => 'Encode::MIME::Header::ISO_2022_JP',
- );
-}
-
-#
-# Why not export ? to keep ConfigLocal Happy!
-#
-while (my ($enc,$mod) = each %ExtModule){
- $Encode::ExtModule{$enc} = $mod;
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Encode::Config -- internally used by Encode
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode/ConfigLocal_PM.e2x b/Master/tlpkg/tlperl/lib/Encode/ConfigLocal_PM.e2x
deleted file mode 100644
index e203dfded50..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/ConfigLocal_PM.e2x
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Local demand-load module list
-#
-# You should not edit this file by hand! use "enc2xs -C"
-#
-package Encode::ConfigLocal;
-our $VERSION = $_LocalVer_;
-
-use strict;
-
-$_ModLines_
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Encode/EBCDIC.pm b/Master/tlpkg/tlperl/lib/Encode/EBCDIC.pm
deleted file mode 100644
index 200a82fea46..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/EBCDIC.pm
+++ /dev/null
@@ -1,43 +0,0 @@
-package Encode::EBCDIC;
-use Encode;
-our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
-
-use XSLoader;
-XSLoader::load(__PACKAGE__,$VERSION);
-
-1;
-__END__
-
-=head1 NAME
-
-Encode::EBCDIC - EBCDIC Encodings
-
-=head1 SYNOPSIS
-
- use Encode qw/encode decode/;
- $posix_bc = encode("posix-bc", $utf8); # loads Encode::EBCDIC implicitly
- $utf8 = decode("", $posix_bc); # ditto
-
-=head1 ABSTRACT
-
-This module implements various EBCDIC-Based encodings. Encodings
-supported are as follows.
-
- Canonical Alias Description
- --------------------------------------------------------------------
- cp37
- cp500
- cp875
- cp1026
- cp1047
- posix-bc
-
-=head1 DESCRIPTION
-
-To find how to use this module in detail, see L<Encode>.
-
-=head1 SEE ALSO
-
-L<Encode>, L<perlebcdic>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode/Encoder.pm b/Master/tlpkg/tlperl/lib/Encode/Encoder.pm
deleted file mode 100644
index fe2a2b90ff6..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/Encoder.pm
+++ /dev/null
@@ -1,249 +0,0 @@
-#
-# $Id: Encoder.pm,v 2.0 2004/05/16 20:55:17 dankogai Exp $
-#
-package Encode::Encoder;
-use strict;
-use warnings;
-our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
-
-require Exporter;
-our @ISA = qw(Exporter);
-our @EXPORT_OK = qw ( encoder );
-
-our $AUTOLOAD;
-sub DEBUG () { 0 }
-use Encode qw(encode decode find_encoding from_to);
-use Carp;
-
-sub new{
- my ($class, $data, $encname) = @_;
- unless($encname){
- $encname = Encode::is_utf8($data) ? 'utf8' : '';
- }else{
- my $obj = find_encoding($encname)
- or croak __PACKAGE__, ": unknown encoding: $encname";
- $encname = $obj->name;
- }
- my $self = {
- data => $data,
- encoding => $encname,
- };
- bless $self => $class;
-}
-
-sub encoder{ __PACKAGE__->new(@_) }
-
-sub data{
- my ($self, $data) = @_;
- if (defined $data){
- $self->{data} = $data;
- return $data;
- }else{
- return $self->{data};
- }
-}
-
-sub encoding{
- my ($self, $encname) = @_;
- if ($encname){
- my $obj = find_encoding($encname)
- or confess __PACKAGE__, ": unknown encoding: $encname";
- $self->{encoding} = $obj->name;
- return $self;
- }else{
- return $self->{encoding}
- }
-}
-
-sub bytes {
- my ($self, $encname) = @_;
- $encname ||= $self->{encoding};
- my $obj = find_encoding($encname)
- or confess __PACKAGE__, ": unknown encoding: $encname";
- $self->{data} = $obj->decode($self->{data}, 1);
- $self->{encoding} = '' ;
- return $self;
-}
-
-sub DESTROY{ # defined so it won't autoload.
- DEBUG and warn shift;
-}
-
-sub AUTOLOAD {
- my $self = shift;
- my $type = ref($self)
- or confess "$self is not an object";
- my $myname = $AUTOLOAD;
- $myname =~ s/.*://; # strip fully-qualified portion
- my $obj = find_encoding($myname)
- or confess __PACKAGE__, ": unknown encoding: $myname";
- DEBUG and warn $self->{encoding}, " => ", $obj->name;
- if ($self->{encoding}){
- from_to($self->{data}, $self->{encoding}, $obj->name, 1);
- }else{
- $self->{data} = $obj->encode($self->{data}, 1);
- }
- $self->{encoding} = $obj->name;
- return $self;
-}
-
-use overload
- q("") => sub { $_[0]->{data} },
- q(0+) => sub { use bytes (); bytes::length($_[0]->{data}) },
- fallback => 1,
- ;
-
-1;
-__END__
-
-=head1 NAME
-
-Encode::Encoder -- Object Oriented Encoder
-
-=head1 SYNOPSIS
-
- use Encode::Encoder;
- # Encode::encode("ISO-8859-1", $data);
- Encode::Encoder->new($data)->iso_8859_1; # OOP way
- # shortcut
- use Encode::Encoder qw(encoder);
- encoder($data)->iso_8859_1;
- # you can stack them!
- encoder($data)->iso_8859_1->base64; # provided base64() is defined
- # you can use it as a decoder as well
- encoder($base64)->bytes('base64')->latin1;
- # stringified
- print encoder($data)->utf8->latin1; # prints the string in latin1
- # numified
- encoder("\x{abcd}\x{ef}g")->utf8 == 6; # true. bytes::length($data)
-
-=head1 ABSTRACT
-
-B<Encode::Encoder> allows you to use Encode in an object-oriented
-style. This is not only more intuitive than a functional approach,
-but also handier when you want to stack encodings. Suppose you want
-your UTF-8 string converted to Latin1 then Base64: you can simply say
-
- my $base64 = encoder($utf8)->latin1->base64;
-
-instead of
-
- my $latin1 = encode("latin1", $utf8);
- my $base64 = encode_base64($utf8);
-
-or the lazier and more convoluted
-
- my $base64 = encode_base64(encode("latin1", $utf8));
-
-=head1 Description
-
-Here is how to use this module.
-
-=over 4
-
-=item *
-
-There are at least two instance variables stored in a hash reference,
-{data} and {encoding}.
-
-=item *
-
-When there is no method, it takes the method name as the name of the
-encoding and encodes the instance I<data> with I<encoding>. If successful,
-the instance I<encoding> is set accordingly.
-
-=item *
-
-You can retrieve the result via -E<gt>data but usually you don't have to
-because the stringify operator ("") is overridden to do exactly that.
-
-=back
-
-=head2 Predefined Methods
-
-This module predefines the methods below:
-
-=over 4
-
-=item $e = Encode::Encoder-E<gt>new([$data, $encoding]);
-
-returns an encoder object. Its data is initialized with $data if
-present, and its encoding is set to $encoding if present.
-
-When $encoding is omitted, it defaults to utf8 if $data is already in
-utf8 or "" (empty string) otherwise.
-
-=item encoder()
-
-is an alias of Encode::Encoder-E<gt>new(). This one is exported on demand.
-
-=item $e-E<gt>data([$data])
-
-When $data is present, sets the instance data to $data and returns the
-object itself. Otherwise, the current instance data is returned.
-
-=item $e-E<gt>encoding([$encoding])
-
-When $encoding is present, sets the instance encoding to $encoding and
-returns the object itself. Otherwise, the current instance encoding is
-returned.
-
-=item $e-E<gt>bytes([$encoding])
-
-decodes instance data from $encoding, or the instance encoding if
-omitted. If the conversion is successful, the instance encoding
-will be set to "".
-
-The name I<bytes> was deliberately picked to avoid namespace tainting
--- this module may be used as a base class so method names that appear
-in Encode::Encoding are avoided.
-
-=back
-
-=head2 Example: base64 transcoder
-
-This module is designed to work with L<Encode::Encoding>.
-To make the Base64 transcoder example above really work, you could
-write a module like this:
-
- package Encode::Base64;
- use base 'Encode::Encoding';
- __PACKAGE__->Define('base64');
- use MIME::Base64;
- sub encode{
- my ($obj, $data) = @_;
- return encode_base64($data);
- }
- sub decode{
- my ($obj, $data) = @_;
- return decode_base64($data);
- }
- 1;
- __END__
-
-And your caller module would be something like this:
-
- use Encode::Encoder;
- use Encode::Base64;
-
- # now you can really do the following
-
- encoder($data)->iso_8859_1->base64;
- encoder($base64)->bytes('base64')->latin1;
-
-=head2 Operator Overloading
-
-This module overloads two operators, stringify ("") and numify (0+).
-
-Stringify dumps the data inside the object.
-
-Numify returns the number of bytes in the instance data.
-
-They come in handy when you want to print or find the size of data.
-
-=head1 SEE ALSO
-
-L<Encode>,
-L<Encode::Encoding>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode/Encoding.pm b/Master/tlpkg/tlperl/lib/Encode/Encoding.pm
deleted file mode 100644
index 06af9fb6994..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/Encoding.pm
+++ /dev/null
@@ -1,341 +0,0 @@
-package Encode::Encoding;
-# Base class for classes which implement encodings
-use strict;
-our $VERSION = do { my @r = (q$Revision: 2.2 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
-
-require Encode;
-
-sub DEBUG { 0 }
-sub Define
-{
- my $obj = shift;
- my $canonical = shift;
- $obj = bless { Name => $canonical },$obj unless ref $obj;
- # warn "$canonical => $obj\n";
- Encode::define_encoding($obj, $canonical, @_);
-}
-
-sub name { return shift->{'Name'} }
-
-# sub renew { return $_[0] }
-
-sub renew {
- my $self = shift;
- my $clone = bless { %$self } => ref($self);
- $clone->{renewed}++; # so the caller can see it
- DEBUG and warn $clone->{renewed};
- return $clone;
-}
-
-sub renewed{ return $_[0]->{renewed} || 0 }
-
-*new_sequence = \&renew;
-
-sub needs_lines { 0 };
-
-sub perlio_ok {
- eval{ require PerlIO::encoding };
- return $@ ? 0 : 1;
-}
-
-# (Temporary|legacy) methods
-
-sub toUnicode { shift->decode(@_) }
-sub fromUnicode { shift->encode(@_) }
-
-#
-# Needs to be overloaded or just croak
-#
-
-sub encode {
- require Carp;
- my $obj = shift;
- my $class = ref($obj) ? ref($obj) : $obj;
- Carp::croak($class . "->encode() not defined!");
-}
-
-sub decode{
- require Carp;
- my $obj = shift;
- my $class = ref($obj) ? ref($obj) : $obj;
- Carp::croak($class . "->encode() not defined!");
-}
-
-sub DESTROY {}
-
-1;
-__END__
-
-=head1 NAME
-
-Encode::Encoding - Encode Implementation Base Class
-
-=head1 SYNOPSIS
-
- package Encode::MyEncoding;
- use base qw(Encode::Encoding);
-
- __PACKAGE__->Define(qw(myCanonical myAlias));
-
-=head1 DESCRIPTION
-
-As mentioned in L<Encode>, encodings are (in the current
-implementation at least) defined as objects. The mapping of encoding
-name to object is via the C<%Encode::Encoding> hash. Though you can
-directly manipulate this hash, it is strongly encouraged to use this
-base class module and add encode() and decode() methods.
-
-=head2 Methods you should implement
-
-You are strongly encouraged to implement methods below, at least
-either encode() or decode().
-
-=over 4
-
-=item -E<gt>encode($string [,$check])
-
-MUST return the octet sequence representing I<$string>.
-
-=over 2
-
-=item *
-
-If I<$check> is true, it SHOULD modify I<$string> in place to remove
-the converted part (i.e. the whole string unless there is an error).
-If perlio_ok() is true, SHOULD becomes MUST.
-
-=item *
-
-If an error occurs, it SHOULD return the octet sequence for the
-fragment of string that has been converted and modify $string in-place
-to remove the converted part leaving it starting with the problem
-fragment. If perlio_ok() is true, SHOULD becomes MUST.
-
-=item *
-
-If I<$check> is is false then C<encode> MUST make a "best effort" to
-convert the string - for example, by using a replacement character.
-
-=back
-
-=item -E<gt>decode($octets [,$check])
-
-MUST return the string that I<$octets> represents.
-
-=over 2
-
-=item *
-
-If I<$check> is true, it SHOULD modify I<$octets> in place to remove
-the converted part (i.e. the whole sequence unless there is an
-error). If perlio_ok() is true, SHOULD becomes MUST.
-
-=item *
-
-If an error occurs, it SHOULD return the fragment of string that has
-been converted and modify $octets in-place to remove the converted
-part leaving it starting with the problem fragment. If perlio_ok() is
-true, SHOULD becomes MUST.
-
-=item *
-
-If I<$check> is false then C<decode> should make a "best effort" to
-convert the string - for example by using Unicode's "\x{FFFD}" as a
-replacement character.
-
-=back
-
-=back
-
-If you want your encoding to work with L<encoding> pragma, you should
-also implement the method below.
-
-=over 4
-
-=item -E<gt>cat_decode($destination, $octets, $offset, $terminator [,$check])
-
-MUST decode I<$octets> with I<$offset> and concatenate it to I<$destination>.
-Decoding will terminate when $terminator (a string) appears in output.
-I<$offset> will be modified to the last $octets position at end of decode.
-Returns true if $terminator appears output, else returns false.
-
-=back
-
-=head2 Other methods defined in Encode::Encodings
-
-You do not have to override methods shown below unless you have to.
-
-=over 4
-
-=item -E<gt>name
-
-Predefined As:
-
- sub name { return shift->{'Name'} }
-
-MUST return the string representing the canonical name of the encoding.
-
-=item -E<gt>renew
-
-Predefined As:
-
- sub renew {
- my $self = shift;
- my $clone = bless { %$self } => ref($self);
- $clone->{renewed}++;
- return $clone;
- }
-
-This method reconstructs the encoding object if necessary. If you need
-to store the state during encoding, this is where you clone your object.
-
-PerlIO ALWAYS calls this method to make sure it has its own private
-encoding object.
-
-=item -E<gt>renewed
-
-Predefined As:
-
- sub renewed { $_[0]->{renewed} || 0 }
-
-Tells whether the object is renewed (and how many times). Some
-modules emit C<Use of uninitialized value in null operation> warning
-unless the value is numeric so return 0 for false.
-
-=item -E<gt>perlio_ok()
-
-Predefined As:
-
- sub perlio_ok {
- eval{ require PerlIO::encoding };
- return $@ ? 0 : 1;
- }
-
-If your encoding does not support PerlIO for some reasons, just;
-
- sub perlio_ok { 0 }
-
-=item -E<gt>needs_lines()
-
-Predefined As:
-
- sub needs_lines { 0 };
-
-If your encoding can work with PerlIO but needs line buffering, you
-MUST define this method so it returns true. 7bit ISO-2022 encodings
-are one example that needs this. When this method is missing, false
-is assumed.
-
-=back
-
-=head2 Example: Encode::ROT13
-
- package Encode::ROT13;
- use strict;
- use base qw(Encode::Encoding);
-
- __PACKAGE__->Define('rot13');
-
- sub encode($$;$){
- my ($obj, $str, $chk) = @_;
- $str =~ tr/A-Za-z/N-ZA-Mn-za-m/;
- $_[1] = '' if $chk; # this is what in-place edit means
- return $str;
- }
-
- # Jr pna or ynml yvxr guvf;
- *decode = \&encode;
-
- 1;
-
-=head1 Why the heck Encode API is different?
-
-It should be noted that the I<$check> behaviour is different from the
-outer public API. The logic is that the "unchecked" case is useful
-when the encoding is part of a stream which may be reporting errors
-(e.g. STDERR). In such cases, it is desirable to get everything
-through somehow without causing additional errors which obscure the
-original one. Also, the encoding is best placed to know what the
-correct replacement character is, so if that is the desired behaviour
-then letting low level code do it is the most efficient.
-
-By contrast, if I<$check> is true, the scheme above allows the
-encoding to do as much as it can and tell the layer above how much
-that was. What is lacking at present is a mechanism to report what
-went wrong. The most likely interface will be an additional method
-call to the object, or perhaps (to avoid forcing per-stream objects
-on otherwise stateless encodings) an additional parameter.
-
-It is also highly desirable that encoding classes inherit from
-C<Encode::Encoding> as a base class. This allows that class to define
-additional behaviour for all encoding objects.
-
- package Encode::MyEncoding;
- use base qw(Encode::Encoding);
-
- __PACKAGE__->Define(qw(myCanonical myAlias));
-
-to create an object with C<< bless {Name => ...}, $class >>, and call
-define_encoding. They inherit their C<name> method from
-C<Encode::Encoding>.
-
-=head2 Compiled Encodings
-
-For the sake of speed and efficiency, most of the encodings are now
-supported via a I<compiled form>: XS modules generated from UCM
-files. Encode provides the enc2xs tool to achieve that. Please see
-L<enc2xs> for more details.
-
-=head1 SEE ALSO
-
-L<perlmod>, L<enc2xs>
-
-=begin future
-
-=over 4
-
-=item Scheme 1
-
-The fixup routine gets passed the remaining fragment of string being
-processed. It modifies it in place to remove bytes/characters it can
-understand and returns a string used to represent them. For example:
-
- sub fixup {
- my $ch = substr($_[0],0,1,'');
- return sprintf("\x{%02X}",ord($ch);
- }
-
-This scheme is close to how the underlying C code for Encode works,
-but gives the fixup routine very little context.
-
-=item Scheme 2
-
-The fixup routine gets passed the original string, an index into
-it of the problem area, and the output string so far. It appends
-what it wants to the output string and returns a new index into the
-original string. For example:
-
- sub fixup {
- # my ($s,$i,$d) = @_;
- my $ch = substr($_[0],$_[1],1);
- $_[2] .= sprintf("\x{%02X}",ord($ch);
- return $_[1]+1;
- }
-
-This scheme gives maximal control to the fixup routine but is more
-complicated to code, and may require that the internals of Encode be tweaked to
-keep the original string intact.
-
-=item Other Schemes
-
-Hybrids of the above.
-
-Multiple return values rather than in-place modifications.
-
-Index into the string could be C<pos($str)> allowing C<s/\G...//>.
-
-=back
-
-=end future
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode/Guess.pm b/Master/tlpkg/tlperl/lib/Encode/Guess.pm
deleted file mode 100644
index 5692cee9a4a..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/Guess.pm
+++ /dev/null
@@ -1,351 +0,0 @@
-package Encode::Guess;
-use strict;
-
-use Encode qw(:fallbacks find_encoding);
-our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
-
-my $Canon = 'Guess';
-sub DEBUG () { 0 }
-our %DEF_SUSPECTS = map { $_ => find_encoding($_) } qw(ascii utf8);
-$Encode::Encoding{$Canon} =
- bless {
- Name => $Canon,
- Suspects => { %DEF_SUSPECTS },
- } => __PACKAGE__;
-
-use base qw(Encode::Encoding);
-sub needs_lines { 1 }
-sub perlio_ok { 0 }
-
-our @EXPORT = qw(guess_encoding);
-our $NoUTFAutoGuess = 0;
-our $UTF8_BOM = pack("C3", 0xef, 0xbb, 0xbf);
-
-sub import { # Exporter not used so we do it on our own
- my $callpkg = caller;
- for my $item (@EXPORT){
- no strict 'refs';
- *{"$callpkg\::$item"} = \&{"$item"};
- }
- set_suspects(@_);
-}
-
-sub set_suspects{
- my $class = shift;
- my $self = ref($class) ? $class : $Encode::Encoding{$Canon};
- $self->{Suspects} = { %DEF_SUSPECTS };
- $self->add_suspects(@_);
-}
-
-sub add_suspects{
- my $class = shift;
- my $self = ref($class) ? $class : $Encode::Encoding{$Canon};
- for my $c (@_){
- my $e = find_encoding($c) or die "Unknown encoding: $c";
- $self->{Suspects}{$e->name} = $e;
- DEBUG and warn "Added: ", $e->name;
- }
-}
-
-sub decode($$;$){
- my ($obj, $octet, $chk) = @_;
- my $guessed = guess($obj, $octet);
- unless (ref($guessed)){
- require Carp;
- Carp::croak($guessed);
- }
- my $utf8 = $guessed->decode($octet, $chk);
- $_[1] = $octet if $chk;
- return $utf8;
-}
-
-sub guess_encoding{
- guess($Encode::Encoding{$Canon}, @_);
-}
-
-sub guess {
- my $class = shift;
- my $obj = ref($class) ? $class : $Encode::Encoding{$Canon};
- my $octet = shift;
-
- # sanity check
- return unless defined $octet and length $octet;
-
- # cheat 0: utf8 flag;
- if ( Encode::is_utf8($octet) ) {
- return find_encoding('utf8') unless $NoUTFAutoGuess;
- Encode::_utf8_off($octet);
- }
- # cheat 1: BOM
- use Encode::Unicode;
- unless ($NoUTFAutoGuess) {
- my $BOM = pack('C3', unpack("C3", $octet));
- return find_encoding('utf8')
- if (defined $BOM and $BOM eq $UTF8_BOM);
- $BOM = unpack('N', $octet);
- return find_encoding('UTF-32')
- if (defined $BOM and ($BOM == 0xFeFF or $BOM == 0xFFFe0000));
- $BOM = unpack('n', $octet);
- return find_encoding('UTF-16')
- if (defined $BOM and ($BOM == 0xFeFF or $BOM == 0xFFFe));
- if ($octet =~ /\x00/o){ # if \x00 found, we assume UTF-(16|32)(BE|LE)
- my $utf;
- my ($be, $le) = (0, 0);
- if ($octet =~ /\x00\x00/o){ # UTF-32(BE|LE) assumed
- $utf = "UTF-32";
- for my $char (unpack('N*', $octet)){
- $char & 0x0000ffff and $be++;
- $char & 0xffff0000 and $le++;
- }
- }else{ # UTF-16(BE|LE) assumed
- $utf = "UTF-16";
- for my $char (unpack('n*', $octet)){
- $char & 0x00ff and $be++;
- $char & 0xff00 and $le++;
- }
- }
- DEBUG and warn "$utf, be == $be, le == $le";
- $be == $le
- and return
- "Encodings ambiguous between $utf BE and LE ($be, $le)";
- $utf .= ($be > $le) ? 'BE' : 'LE';
- return find_encoding($utf);
- }
- }
- my %try = %{$obj->{Suspects}};
- for my $c (@_){
- my $e = find_encoding($c) or die "Unknown encoding: $c";
- $try{$e->name} = $e;
- DEBUG and warn "Added: ", $e->name;
- }
- my $nline = 1;
- for my $line (split /\r\n?|\n/, $octet){
- # cheat 2 -- \e in the string
- if ($line =~ /\e/o){
- my @keys = keys %try;
- delete @try{qw/utf8 ascii/};
- for my $k (@keys){
- ref($try{$k}) eq 'Encode::XS' and delete $try{$k};
- }
- }
- my %ok = %try;
- # warn join(",", keys %try);
- for my $k (keys %try){
- my $scratch = $line;
- $try{$k}->decode($scratch, FB_QUIET);
- if ($scratch eq ''){
- DEBUG and warn sprintf("%4d:%-24s ok\n", $nline, $k);
- }else{
- use bytes ();
- DEBUG and
- warn sprintf("%4d:%-24s not ok; %d bytes left\n",
- $nline, $k, bytes::length($scratch));
- delete $ok{$k};
- }
- }
- %ok or return "No appropriate encodings found!";
- if (scalar(keys(%ok)) == 1){
- my ($retval) = values(%ok);
- return $retval;
- }
- %try = %ok; $nline++;
- }
- $try{ascii} or
- return "Encodings too ambiguous: ", join(" or ", keys %try);
- return $try{ascii};
-}
-
-
-
-1;
-__END__
-
-=head1 NAME
-
-Encode::Guess -- Guesses encoding from data
-
-=head1 SYNOPSIS
-
- # if you are sure $data won't contain anything bogus
-
- use Encode;
- use Encode::Guess qw/euc-jp shiftjis 7bit-jis/;
- my $utf8 = decode("Guess", $data);
- my $data = encode("Guess", $utf8); # this doesn't work!
-
- # more elaborate way
- use Encode::Guess;
- my $enc = guess_encoding($data, qw/euc-jp shiftjis 7bit-jis/);
- ref($enc) or die "Can't guess: $enc"; # trap error this way
- $utf8 = $enc->decode($data);
- # or
- $utf8 = decode($enc->name, $data)
-
-=head1 ABSTRACT
-
-Encode::Guess enables you to guess in what encoding a given data is
-encoded, or at least tries to.
-
-=head1 DESCRIPTION
-
-By default, it checks only ascii, utf8 and UTF-16/32 with BOM.
-
- use Encode::Guess; # ascii/utf8/BOMed UTF
-
-To use it more practically, you have to give the names of encodings to
-check (I<suspects> as follows). The name of suspects can either be
-canonical names or aliases.
-
-CAVEAT: Unlike UTF-(16|32), BOM in utf8 is NOT AUTOMATICALLY STRIPPED.
-
- # tries all major Japanese Encodings as well
- use Encode::Guess qw/euc-jp shiftjis 7bit-jis/;
-
-If the C<$Encode::Guess::NoUTFAutoGuess> variable is set to a true
-value, no heuristics will be applied to UTF8/16/32, and the result
-will be limited to the suspects and C<ascii>.
-
-=over 4
-
-=item Encode::Guess->set_suspects
-
-You can also change the internal suspects list via C<set_suspects>
-method.
-
- use Encode::Guess;
- Encode::Guess->set_suspects(qw/euc-jp shiftjis 7bit-jis/);
-
-=item Encode::Guess->add_suspects
-
-Or you can use C<add_suspects> method. The difference is that
-C<set_suspects> flushes the current suspects list while
-C<add_suspects> adds.
-
- use Encode::Guess;
- Encode::Guess->add_suspects(qw/euc-jp shiftjis 7bit-jis/);
- # now the suspects are euc-jp,shiftjis,7bit-jis, AND
- # euc-kr,euc-cn, and big5-eten
- Encode::Guess->add_suspects(qw/euc-kr euc-cn big5-eten/);
-
-=item Encode::decode("Guess" ...)
-
-When you are content with suspects list, you can now
-
- my $utf8 = Encode::decode("Guess", $data);
-
-=item Encode::Guess->guess($data)
-
-But it will croak if:
-
-=over
-
-=item *
-
-Two or more suspects remain
-
-=item *
-
-No suspects left
-
-=back
-
-So you should instead try this;
-
- my $decoder = Encode::Guess->guess($data);
-
-On success, $decoder is an object that is documented in
-L<Encode::Encoding>. So you can now do this;
-
- my $utf8 = $decoder->decode($data);
-
-On failure, $decoder now contains an error message so the whole thing
-would be as follows;
-
- my $decoder = Encode::Guess->guess($data);
- die $decoder unless ref($decoder);
- my $utf8 = $decoder->decode($data);
-
-=item guess_encoding($data, [, I<list of suspects>])
-
-You can also try C<guess_encoding> function which is exported by
-default. It takes $data to check and it also takes the list of
-suspects by option. The optional suspect list is I<not reflected> to
-the internal suspects list.
-
- my $decoder = guess_encoding($data, qw/euc-jp euc-kr euc-cn/);
- die $decoder unless ref($decoder);
- my $utf8 = $decoder->decode($data);
- # check only ascii and utf8
- my $decoder = guess_encoding($data);
-
-=back
-
-=head1 CAVEATS
-
-=over 4
-
-=item *
-
-Because of the algorithm used, ISO-8859 series and other single-byte
-encodings do not work well unless either one of ISO-8859 is the only
-one suspect (besides ascii and utf8).
-
- use Encode::Guess;
- # perhaps ok
- my $decoder = guess_encoding($data, 'latin1');
- # definitely NOT ok
- my $decoder = guess_encoding($data, qw/latin1 greek/);
-
-The reason is that Encode::Guess guesses encoding by trial and error.
-It first splits $data into lines and tries to decode the line for each
-suspect. It keeps it going until all but one encoding is eliminated
-out of suspects list. ISO-8859 series is just too successful for most
-cases (because it fills almost all code points in \x00-\xff).
-
-=item *
-
-Do not mix national standard encodings and the corresponding vendor
-encodings.
-
- # a very bad idea
- my $decoder
- = guess_encoding($data, qw/shiftjis MacJapanese cp932/);
-
-The reason is that vendor encoding is usually a superset of national
-standard so it becomes too ambiguous for most cases.
-
-=item *
-
-On the other hand, mixing various national standard encodings
-automagically works unless $data is too short to allow for guessing.
-
- # This is ok if $data is long enough
- my $decoder =
- guess_encoding($data, qw/euc-cn
- euc-jp shiftjis 7bit-jis
- euc-kr
- big5-eten/);
-
-=item *
-
-DO NOT PUT TOO MANY SUSPECTS! Don't you try something like this!
-
- my $decoder = guess_encoding($data,
- Encode->encodings(":all"));
-
-=back
-
-It is, after all, just a guess. You should alway be explicit when it
-comes to encodings. But there are some, especially Japanese,
-environment that guess-coding is a must. Use this module with care.
-
-=head1 TO DO
-
-Encode::Guess does not work on EBCDIC platforms.
-
-=head1 SEE ALSO
-
-L<Encode>, L<Encode::Encoding>
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Encode/JP.pm b/Master/tlpkg/tlperl/lib/Encode/JP.pm
deleted file mode 100644
index 01ad37f30db..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/JP.pm
+++ /dev/null
@@ -1,97 +0,0 @@
-package Encode::JP;
-BEGIN {
- if (ord("A") == 193) {
- die "Encode::JP not supported on EBCDIC\n";
- }
-}
-use Encode;
-our $VERSION = do { my @r = (q$Revision: 2.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
-
-use XSLoader;
-XSLoader::load(__PACKAGE__,$VERSION);
-
-use Encode::JP::JIS7;
-
-1;
-__END__
-
-=head1 NAME
-
-Encode::JP - Japanese Encodings
-
-=head1 SYNOPSIS
-
- use Encode qw/encode decode/;
- $euc_jp = encode("euc-jp", $utf8); # loads Encode::JP implicitly
- $utf8 = decode("euc-jp", $euc_jp); # ditto
-
-=head1 ABSTRACT
-
-This module implements Japanese charset encodings. Encodings
-supported are as follows.
-
- Canonical Alias Description
- --------------------------------------------------------------------
- euc-jp /\beuc.*jp$/i EUC (Extended Unix Character)
- /\bjp.*euc/i
- /\bujis$/i
- shiftjis /\bshift.*jis$/i Shift JIS (aka MS Kanji)
- /\bsjis$/i
- 7bit-jis /\bjis$/i 7bit JIS
- iso-2022-jp ISO-2022-JP [RFC1468]
- = 7bit JIS with all Halfwidth Kana
- converted to Fullwidth
- iso-2022-jp-1 ISO-2022-JP-1 [RFC2237]
- = ISO-2022-JP with JIS X 0212-1990
- support. See below
- MacJapanese Shift JIS + Apple vendor mappings
- cp932 /\bwindows-31j$/i Code Page 932
- = Shift JIS + MS/IBM vendor mappings
- jis0201-raw JIS0201, raw format
- jis0208-raw JIS0201, raw format
- jis0212-raw JIS0201, raw format
- --------------------------------------------------------------------
-
-=head1 DESCRIPTION
-
-To find out how to use this module in detail, see L<Encode>.
-
-=head1 Note on ISO-2022-JP(-1)?
-
-ISO-2022-JP-1 (RFC2237) is a superset of ISO-2022-JP (RFC1468) which
-adds support for JIS X 0212-1990. That means you can use the same
-code to decode to utf8 but not vice versa.
-
- $utf8 = decode('iso-2022-jp-1', $stream);
-
-and
-
- $utf8 = decode('iso-2022-jp', $stream);
-
-yield the same result but
-
- $with_0212 = encode('iso-2022-jp-1', $utf8);
-
-is now different from
-
- $without_0212 = encode('iso-2022-jp', $utf8 );
-
-In the latter case, characters that map to 0212 are first converted
-to U+3013 (0xA2AE in EUC-JP; a white square also known as 'Tofu' or
-'geta mark') then fed to the decoding engine. U+FFFD is not used,
-in order to preserve text layout as much as possible.
-
-=head1 BUGS
-
-The ASCII region (0x00-0x7f) is preserved for all encodings, even
-though this conflicts with mappings by the Unicode Consortium. See
-
-L<http://www.debian.or.jp/~kubota/unicode-symbols.html.en>
-
-to find out why it is implemented that way.
-
-=head1 SEE ALSO
-
-L<Encode>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode/JP/H2Z.pm b/Master/tlpkg/tlperl/lib/Encode/JP/H2Z.pm
deleted file mode 100644
index 0c84c62fda6..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/JP/H2Z.pm
+++ /dev/null
@@ -1,174 +0,0 @@
-#
-# $Id: H2Z.pm,v 2.0 2004/05/16 20:55:17 dankogai Exp $
-#
-
-package Encode::JP::H2Z;
-
-use strict;
-
-our $RCSID = q$Id: H2Z.pm,v 2.0 2004/05/16 20:55:17 dankogai Exp $;
-our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
-
-use Encode::CJKConstants qw(:all);
-
-use vars qw(%_D2Z $_PAT_D2Z
- %_Z2D $_PAT_Z2D
- %_H2Z $_PAT_H2Z
- %_Z2H $_PAT_Z2H);
-
-%_H2Z = (
- "\x8e\xa1" => "\xa1\xa3", #¡£
- "\x8e\xa2" => "\xa1\xd6", #¡Ö
- "\x8e\xa3" => "\xa1\xd7", #¡×
- "\x8e\xa4" => "\xa1\xa2", #¡¢
- "\x8e\xa5" => "\xa1\xa6", #¡¦
- "\x8e\xa6" => "\xa5\xf2", #¥ò
- "\x8e\xa7" => "\xa5\xa1", #¥¡
- "\x8e\xa8" => "\xa5\xa3", #¥£
- "\x8e\xa9" => "\xa5\xa5", #¥¥
- "\x8e\xaa" => "\xa5\xa7", #¥§
- "\x8e\xab" => "\xa5\xa9", #¥©
- "\x8e\xac" => "\xa5\xe3", #¥ã
- "\x8e\xad" => "\xa5\xe5", #¥å
- "\x8e\xae" => "\xa5\xe7", #¥ç
- "\x8e\xaf" => "\xa5\xc3", #¥Ã
- "\x8e\xb0" => "\xa1\xbc", #¡¼
- "\x8e\xb1" => "\xa5\xa2", #¥¢
- "\x8e\xb2" => "\xa5\xa4", #¥¤
- "\x8e\xb3" => "\xa5\xa6", #¥¦
- "\x8e\xb4" => "\xa5\xa8", #¥¨
- "\x8e\xb5" => "\xa5\xaa", #¥ª
- "\x8e\xb6" => "\xa5\xab", #¥«
- "\x8e\xb7" => "\xa5\xad", #¥­
- "\x8e\xb8" => "\xa5\xaf", #¥¯
- "\x8e\xb9" => "\xa5\xb1", #¥±
- "\x8e\xba" => "\xa5\xb3", #¥³
- "\x8e\xbb" => "\xa5\xb5", #¥µ
- "\x8e\xbc" => "\xa5\xb7", #¥·
- "\x8e\xbd" => "\xa5\xb9", #¥¹
- "\x8e\xbe" => "\xa5\xbb", #¥»
- "\x8e\xbf" => "\xa5\xbd", #¥½
- "\x8e\xc0" => "\xa5\xbf", #¥¿
- "\x8e\xc1" => "\xa5\xc1", #¥Á
- "\x8e\xc2" => "\xa5\xc4", #¥Ä
- "\x8e\xc3" => "\xa5\xc6", #¥Æ
- "\x8e\xc4" => "\xa5\xc8", #¥È
- "\x8e\xc5" => "\xa5\xca", #¥Ê
- "\x8e\xc6" => "\xa5\xcb", #¥Ë
- "\x8e\xc7" => "\xa5\xcc", #¥Ì
- "\x8e\xc8" => "\xa5\xcd", #¥Í
- "\x8e\xc9" => "\xa5\xce", #¥Î
- "\x8e\xca" => "\xa5\xcf", #¥Ï
- "\x8e\xcb" => "\xa5\xd2", #¥Ò
- "\x8e\xcc" => "\xa5\xd5", #¥Õ
- "\x8e\xcd" => "\xa5\xd8", #¥Ø
- "\x8e\xce" => "\xa5\xdb", #¥Û
- "\x8e\xcf" => "\xa5\xde", #¥Þ
- "\x8e\xd0" => "\xa5\xdf", #¥ß
- "\x8e\xd1" => "\xa5\xe0", #¥à
- "\x8e\xd2" => "\xa5\xe1", #¥á
- "\x8e\xd3" => "\xa5\xe2", #¥â
- "\x8e\xd4" => "\xa5\xe4", #¥ä
- "\x8e\xd5" => "\xa5\xe6", #¥æ
- "\x8e\xd6" => "\xa5\xe8", #¥è
- "\x8e\xd7" => "\xa5\xe9", #¥é
- "\x8e\xd8" => "\xa5\xea", #¥ê
- "\x8e\xd9" => "\xa5\xeb", #¥ë
- "\x8e\xda" => "\xa5\xec", #¥ì
- "\x8e\xdb" => "\xa5\xed", #¥í
- "\x8e\xdc" => "\xa5\xef", #¥ï
- "\x8e\xdd" => "\xa5\xf3", #¥ó
- "\x8e\xde" => "\xa1\xab", #¡«
- "\x8e\xdf" => "\xa1\xac", #¡¬
-);
-
-%_D2Z = (
- "\x8e\xb6\x8e\xde" => "\xa5\xac", #¥¬
- "\x8e\xb7\x8e\xde" => "\xa5\xae", #¥®
- "\x8e\xb8\x8e\xde" => "\xa5\xb0", #¥°
- "\x8e\xb9\x8e\xde" => "\xa5\xb2", #¥²
- "\x8e\xba\x8e\xde" => "\xa5\xb4", #¥´
- "\x8e\xbb\x8e\xde" => "\xa5\xb6", #¥¶
- "\x8e\xbc\x8e\xde" => "\xa5\xb8", #¥¸
- "\x8e\xbd\x8e\xde" => "\xa5\xba", #¥º
- "\x8e\xbe\x8e\xde" => "\xa5\xbc", #¥¼
- "\x8e\xbf\x8e\xde" => "\xa5\xbe", #¥¾
- "\x8e\xc0\x8e\xde" => "\xa5\xc0", #¥À
- "\x8e\xc1\x8e\xde" => "\xa5\xc2", #¥Â
- "\x8e\xc2\x8e\xde" => "\xa5\xc5", #¥Å
- "\x8e\xc3\x8e\xde" => "\xa5\xc7", #¥Ç
- "\x8e\xc4\x8e\xde" => "\xa5\xc9", #¥É
- "\x8e\xca\x8e\xde" => "\xa5\xd0", #¥Ð
- "\x8e\xcb\x8e\xde" => "\xa5\xd3", #¥Ó
- "\x8e\xcc\x8e\xde" => "\xa5\xd6", #¥Ö
- "\x8e\xcd\x8e\xde" => "\xa5\xd9", #¥Ù
- "\x8e\xce\x8e\xde" => "\xa5\xdc", #¥Ü
- "\x8e\xca\x8e\xdf" => "\xa5\xd1", #¥Ñ
- "\x8e\xcb\x8e\xdf" => "\xa5\xd4", #¥Ô
- "\x8e\xcc\x8e\xdf" => "\xa5\xd7", #¥×
- "\x8e\xcd\x8e\xdf" => "\xa5\xda", #¥Ú
- "\x8e\xce\x8e\xdf" => "\xa5\xdd", #¥Ý
- "\x8e\xb3\x8e\xde" => "\xa5\xf4", #¥ô
-);
-
-# init only once;
-
-#$_PAT_D2Z = join("|", keys %_D2Z);
-#$_PAT_H2Z = join("|", keys %_H2Z);
-
-%_Z2H = reverse %_H2Z;
-%_Z2D = reverse %_D2Z;
-
-#$_PAT_Z2H = join("|", keys %_Z2H);
-#$_PAT_Z2D = join("|", keys %_Z2D);
-
-sub h2z {
- no warnings qw(uninitialized);
- my $r_str = shift;
- my ($keep_dakuten) = @_;
- my $n = 0;
- unless ($keep_dakuten){
- $n = (
- $$r_str =~ s(
- ($RE{EUC_KANA}
- (?:\x8e[\xde\xdf])?)
- ){
- my $str = $1;
- $_D2Z{$str} || $_H2Z{$str} ||
- # in case dakuten and handakuten are side-by-side!
- $_H2Z{substr($str,0,2)} . $_H2Z{substr($str,2,2)};
- }eogx
- );
- }else{
- $n = (
- $$r_str =~ s(
- ($RE{EUC_KANA})
- ){
- $_H2Z{$1};
- }eogx
- );
- }
- $n;
-}
-
-sub z2h {
- my $r_str = shift;
- my $n = (
- $$r_str =~ s(
- ($RE{EUC_C}|$RE{EUC_0212}|$RE{EUC_KANA})
- ){
- $_Z2D{$1} || $_Z2H{$1} || $1;
- }eogx
- );
- $n;
-}
-
-1;
-__END__
-
-
-=head1 NAME
-
-Encode::JP::H2Z -- internally used by Encode::JP::2022_JP*
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode/JP/JIS7.pm b/Master/tlpkg/tlperl/lib/Encode/JP/JIS7.pm
deleted file mode 100644
index 28503ec760c..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/JP/JIS7.pm
+++ /dev/null
@@ -1,165 +0,0 @@
-package Encode::JP::JIS7;
-use strict;
-
-our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
-
-use Encode qw(:fallbacks);
-
-for my $name ('7bit-jis', 'iso-2022-jp', 'iso-2022-jp-1'){
- my $h2z = ($name eq '7bit-jis') ? 0 : 1;
- my $jis0212 = ($name eq 'iso-2022-jp') ? 0 : 1;
-
- $Encode::Encoding{$name} =
- bless {
- Name => $name,
- h2z => $h2z,
- jis0212 => $jis0212,
- } => __PACKAGE__;
-}
-
-use base qw(Encode::Encoding);
-
-# we override this to 1 so PerlIO works
-sub needs_lines { 1 }
-
-use Encode::CJKConstants qw(:all);
-
-#
-# decode is identical for all 2022 variants
-#
-
-sub decode($$;$)
-{
- my ($obj, $str, $chk) = @_;
- my $residue = '';
- if ($chk){
- $str =~ s/([^\x00-\x7f].*)$//so and $residue = $1;
- }
- $residue .= jis_euc(\$str);
- $_[1] = $residue if $chk;
- return Encode::decode('euc-jp', $str, FB_PERLQQ);
-}
-
-#
-# encode is different
-#
-
-sub encode($$;$)
-{
- require Encode::JP::H2Z;
- my ($obj, $utf8, $chk) = @_;
- # empty the input string in the stack so perlio is ok
- $_[1] = '' if $chk;
- my ($h2z, $jis0212) = @$obj{qw(h2z jis0212)};
- my $octet = Encode::encode('euc-jp', $utf8, FB_PERLQQ) ;
- $h2z and &Encode::JP::H2Z::h2z(\$octet);
- euc_jis(\$octet, $jis0212);
- return $octet;
-}
-
-#
-# cat_decode
-#
-my $re_scan_jis_g = qr{
- \G ( ($RE{JIS_0212}) | $RE{JIS_0208} |
- ($RE{ISO_ASC}) | ($RE{JIS_KANA}) | )
- ([^\e]*)
-}x;
-sub cat_decode { # ($obj, $dst, $src, $pos, $trm, $chk)
- my ($obj, undef, undef, $pos, $trm) = @_; # currently ignores $chk
- my ($rdst, $rsrc, $rpos) = \@_[1,2,3];
- local ${^ENCODING};
- use bytes;
- my $opos = pos($$rsrc);
- pos($$rsrc) = $pos;
- while ($$rsrc =~ /$re_scan_jis_g/gc) {
- my ($esc, $esc_0212, $esc_asc, $esc_kana, $chunk) =
- ($1, $2, $3, $4, $5);
-
- unless ($chunk) { $esc or last; next; }
-
- if ($esc && !$esc_asc) {
- $chunk =~ tr/\x21-\x7e/\xa1-\xfe/;
- if ($esc_kana) {
- $chunk =~ s/([\xa1-\xdf])/\x8e$1/og;
- } elsif ($esc_0212) {
- $chunk =~ s/([\xa1-\xfe][\xa1-\xfe])/\x8f$1/og;
- }
- $chunk = Encode::decode('euc-jp', $chunk, 0);
- }
- elsif ((my $npos = index($chunk, $trm)) >= 0) {
- $$rdst .= substr($chunk, 0, $npos + length($trm));
- $$rpos += length($esc) + $npos + length($trm);
- pos($$rsrc) = $opos;
- return 1;
- }
- $$rdst .= $chunk;
- $$rpos = pos($$rsrc);
- }
- $$rpos = pos($$rsrc);
- pos($$rsrc) = $opos;
- return '';
-}
-
-# JIS<->EUC
-my $re_scan_jis = qr{
- (?:($RE{JIS_0212})|$RE{JIS_0208}|($RE{ISO_ASC})|($RE{JIS_KANA}))([^\e]*)
-}x;
-
-sub jis_euc {
- local ${^ENCODING};
- my $r_str = shift;
- $$r_str =~ s($re_scan_jis)
- {
- my ($esc_0212, $esc_asc, $esc_kana, $chunk) =
- ($1, $2, $3, $4);
- if (!$esc_asc) {
- $chunk =~ tr/\x21-\x7e/\xa1-\xfe/;
- if ($esc_kana) {
- $chunk =~ s/([\xa1-\xdf])/\x8e$1/og;
- }
- elsif ($esc_0212) {
- $chunk =~ s/([\xa1-\xfe][\xa1-\xfe])/\x8f$1/og;
- }
- }
- $chunk;
- }geox;
- my ($residue) = ($$r_str =~ s/(\e.*)$//so);
- return $residue;
-}
-
-sub euc_jis{
- no warnings qw(uninitialized);
- my $r_str = shift;
- my $jis0212 = shift;
- $$r_str =~ s{
- ((?:$RE{EUC_C})+|(?:$RE{EUC_KANA})+|(?:$RE{EUC_0212})+)
- }{
- my $chunk = $1;
- my $esc =
- ( $chunk =~ tr/\x8E//d ) ? $ESC{KANA} :
- ( $chunk =~ tr/\x8F//d ) ? $ESC{JIS_0212} :
- $ESC{JIS_0208};
- if ($esc eq $ESC{JIS_0212} && !$jis0212){
- # fallback to '?'
- $chunk =~ tr/\xA1-\xFE/\x3F/;
- }else{
- $chunk =~ tr/\xA1-\xFE/\x21-\x7E/;
- }
- $esc . $chunk . $ESC{ASC};
- }geox;
- $$r_str =~
- s/\Q$ESC{ASC}\E
- (\Q$ESC{KANA}\E|\Q$ESC{JIS_0212}\E|\Q$ESC{JIS_0208}\E)/$1/gox;
- $$r_str;
-}
-
-1;
-__END__
-
-
-=head1 NAME
-
-Encode::JP::JIS7 -- internally used by Encode::JP
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode/KR.pm b/Master/tlpkg/tlperl/lib/Encode/KR.pm
deleted file mode 100644
index e9d4073b7b4..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/KR.pm
+++ /dev/null
@@ -1,72 +0,0 @@
-package Encode::KR;
-BEGIN {
- if (ord("A") == 193) {
- die "Encode::KR not supported on EBCDIC\n";
- }
-}
-our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
-
-use Encode;
-use XSLoader;
-XSLoader::load(__PACKAGE__,$VERSION);
-
-use Encode::KR::2022_KR;
-
-1;
-__END__
-
-=head1 NAME
-
-Encode::KR - Korean Encodings
-
-=head1 SYNOPSIS
-
- use Encode qw/encode decode/;
- $euc_kr = encode("euc-kr", $utf8); # loads Encode::KR implicitly
- $utf8 = decode("euc-kr", $euc_kr); # ditto
-
-=head1 DESCRIPTION
-
-This module implements Korean charset encodings. Encodings supported
-are as follows.
-
-
- Canonical Alias Description
- --------------------------------------------------------------------
- euc-kr /\beuc.*kr$/i EUC (Extended Unix Character)
- /\bkr.*euc$/i
- ksc5601-raw Korean standard code set (as is)
- cp949 /(?:x-)?uhc$/i
- /(?:x-)?windows-949$/i
- /\bks_c_5601-1987$/i
- Code Page 949 (EUC-KR + 8,822
- (additional Hangul syllables)
- MacKorean EUC-KR + Apple Vendor Mappings
- johab JOHAB A supplementary encoding defined in
- Annex 3 of KS X 1001:1998
- iso-2022-kr iso-2022-kr [RFC1557]
- --------------------------------------------------------------------
-
-To find how to use this module in detail, see L<Encode>.
-
-=head1 BUGS
-
-When you see C<charset=ks_c_5601-1987> on mails and web pages, they really
-mean "cp949" encodings. To fix that, the following aliases are set;
-
- qr/(?:x-)?uhc$/i => '"cp949"'
- qr/(?:x-)?windows-949$/i => '"cp949"'
- qr/ks_c_5601-1987$/i => '"cp949"'
-
-The ASCII region (0x00-0x7f) is preserved for all encodings, even
-though this conflicts with mappings by the Unicode Consortium. See
-
-L<http://www.debian.or.jp/~kubota/unicode-symbols.html.en>
-
-to find out why it is implemented that way.
-
-=head1 SEE ALSO
-
-L<Encode>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode/KR/2022_KR.pm b/Master/tlpkg/tlperl/lib/Encode/KR/2022_KR.pm
deleted file mode 100644
index 8b4052be570..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/KR/2022_KR.pm
+++ /dev/null
@@ -1,79 +0,0 @@
-package Encode::KR::2022_KR;
-use strict;
-
-our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
-
-use Encode qw(:fallbacks);
-
-use base qw(Encode::Encoding);
-__PACKAGE__->Define('iso-2022-kr');
-
-sub needs_lines { 1 }
-
-sub perlio_ok {
- return 0; # for the time being
-}
-
-sub decode
-{
- my ($obj, $str, $chk) = @_;
- my $res = $str;
- my $residue = iso_euc(\$res);
- # This is for PerlIO
- $_[1] = $residue if $chk;
- return Encode::decode('euc-kr', $res, FB_PERLQQ);
-}
-
-sub encode
-{
- my ($obj, $utf8, $chk) = @_;
- # empty the input string in the stack so perlio is ok
- $_[1] = '' if $chk;
- my $octet = Encode::encode('euc-kr', $utf8, FB_PERLQQ) ;
- euc_iso(\$octet);
- return $octet;
-}
-
-use Encode::CJKConstants qw(:all);
-
-# ISO<->EUC
-
-sub iso_euc{
- my $r_str = shift;
- $$r_str =~ s/$RE{'2022_KR'}//gox; # remove the designator
- $$r_str =~ s{ # replace characters in GL
- \x0e # between SO(\x0e) and SI(\x0f)
- ([^\x0f]*) # with characters in GR
- \x0f
- }
- {
- my $out= $1;
- $out =~ tr/\x21-\x7e/\xa1-\xfe/;
- $out;
- }geox;
- my ($residue) = ($$r_str =~ s/(\e.*)$//so);
- return $residue;
-}
-
-sub euc_iso{
- no warnings qw(uninitialized);
- my $r_str = shift;
- substr($$r_str,0,0)=$ESC{'2022_KR'}; # put the designator at the beg.
- $$r_str =~ s{ # move KS X 1001 characters in GR to GL
- ($RE{EUC_C}+) # and enclose them with SO and SI
- }{
- my $str = $1;
- $str =~ tr/\xA1-\xFE/\x21-\x7E/;
- "\x0e" . $str . "\x0f";
- }geox;
- $$r_str;
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Encode::KR::2022_KR -- internally used by Encode::KR
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode/MIME/Header.pm b/Master/tlpkg/tlperl/lib/Encode/MIME/Header.pm
deleted file mode 100644
index f4e2ad6e2b5..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/MIME/Header.pm
+++ /dev/null
@@ -1,230 +0,0 @@
-package Encode::MIME::Header;
-use strict;
-# use warnings;
-our $VERSION = do { my @r = (q$Revision: 2.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
-use Encode qw(find_encoding encode_utf8 decode_utf8);
-use MIME::Base64;
-use Carp;
-
-my %seed =
- (
- decode_b => '1', # decodes 'B' encoding ?
- decode_q => '1', # decodes 'Q' encoding ?
- encode => 'B', # encode with 'B' or 'Q' ?
- bpl => 75, # bytes per line
- );
-
-$Encode::Encoding{'MIME-Header'} =
- bless {
- %seed,
- Name => 'MIME-Header',
- } => __PACKAGE__;
-
-$Encode::Encoding{'MIME-B'} =
- bless {
- %seed,
- decode_q => 0,
- Name => 'MIME-B',
- } => __PACKAGE__;
-
-$Encode::Encoding{'MIME-Q'} =
- bless {
- %seed,
- decode_q => 1,
- encode => 'Q',
- Name => 'MIME-Q',
- } => __PACKAGE__;
-
-use base qw(Encode::Encoding);
-
-sub needs_lines { 1 }
-sub perlio_ok{ 0 };
-
-sub decode($$;$){
- use utf8;
- my ($obj, $str, $chk) = @_;
- # zap spaces between encoded words
- $str =~ s/\?=\s+=\?/\?==\?/gos;
- # multi-line header to single line
- $str =~ s/(:?\r|\n|\r\n)[ \t]//gos;
- $str =~
- s{
- =\? # begin encoded word
- ([0-9A-Za-z\-_]+) # charset (encoding)
- \?([QqBb])\? # delimiter
- (.*?) # Base64-encodede contents
- \?= # end encoded word
- }{
- if (uc($2) eq 'B'){
- $obj->{decode_b} or croak qq(MIME "B" unsupported);
- decode_b($1, $3);
- }elsif(uc($2) eq 'Q'){
- $obj->{decode_q} or croak qq(MIME "Q" unsupported);
- decode_q($1, $3);
- }else{
- croak qq(MIME "$2" encoding is nonexistent!);
- }
- }egox;
- $_[1] = '' if $chk;
- return $str;
-}
-
-sub decode_b{
- my $enc = shift;
- my $d = find_encoding($enc) or croak qq(Unknown encoding "$enc");
- my $db64 = decode_base64(shift);
- return $d->name eq 'utf8' ?
- Encode::decode_utf8($db64) : $d->decode($db64, Encode::FB_PERLQQ);
-}
-
-sub decode_q{
- my ($enc, $q) = @_;
- my $d = find_encoding($enc) or croak qq(Unknown encoding "$enc");
- $q =~ s/_/ /go;
- $q =~ s/=([0-9A-Fa-f]{2})/pack("C", hex($1))/ego;
- return $d->name eq 'utf8' ?
- Encode::decode_utf8($q) : $d->decode($q, Encode::FB_PERLQQ);
-}
-
-my $especials =
- join('|' =>
- map {quotemeta(chr($_))}
- unpack("C*", qq{()<>@,;:\"\'/[]?.=}));
-
-my $re_encoded_word =
- qr{
- (?:
- =\? # begin encoded word
- (?:[0-9A-Za-z\-_]+) # charset (encoding)
- \?(?:[QqBb])\? # delimiter
- (?:.*?) # Base64-encodede contents
- \?= # end encoded word
- )
- }xo;
-
-my $re_especials = qr{$re_encoded_word|$especials}xo;
-
-sub encode($$;$){
- my ($obj, $str, $chk) = @_;
- my @line = ();
- for my $line (split /\r|\n|\r\n/o, $str){
- my (@word, @subline);
- for my $word (split /($re_especials)/o, $line){
- if ($word =~ /[^\x00-\x7f]/o or $word =~ /^$re_encoded_word$/o){
- push @word, $obj->_encode($word);
- }else{
- push @word, $word;
- }
- }
- my $subline = '';
- for my $word (@word){
- use bytes ();
- if (bytes::length($subline) + bytes::length($word) > $obj->{bpl}){
- push @subline, $subline;
- $subline = '';
- }
- $subline .= $word;
- }
- $subline and push @subline, $subline;
- push @line, join("\n " => @subline);
- }
- $_[1] = '' if $chk;
- return join("\n", @line);
-}
-
-use constant HEAD => '=?UTF-8?';
-use constant TAIL => '?=';
-use constant SINGLE => { B => \&_encode_b, Q => \&_encode_q, };
-
-sub _encode{
- my ($o, $str) = @_;
- my $enc = $o->{encode};
- my $llen = ($o->{bpl} - length(HEAD) - 2 - length(TAIL));
- # to coerce a floating-point arithmetics, the following contains
- # .0 in numbers -- dankogai
- $llen *= $enc eq 'B' ? 3.0/4.0 : 1.0/3.0;
- my @result = ();
- my $chunk = '';
- while(length(my $chr = substr($str, 0, 1, ''))){
- use bytes ();
- if (bytes::length($chunk) + bytes::length($chr) > $llen){
- push @result, SINGLE->{$enc}($chunk);
- $chunk = '';
- }
- $chunk .= $chr;
- }
- $chunk and push @result, SINGLE->{$enc}($chunk);
- return @result;
-}
-
-sub _encode_b{
- HEAD . 'B?' . encode_base64(encode_utf8(shift), '') . TAIL;
-}
-
-sub _encode_q{
- my $chunk = shift;
- $chunk =~ s{
- ([^0-9A-Za-z])
- }{
- join("" => map {sprintf "=%02X", $_} unpack("C*", $1))
- }egox;
- return decode_utf8(HEAD . 'Q?' . $chunk . TAIL);
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Encode::MIME::Header -- MIME 'B' and 'Q' header encoding
-
-=head1 SYNOPSIS
-
- use Encode qw/encode decode/;
- $utf8 = decode('MIME-Header', $header);
- $header = encode('MIME-Header', $utf8);
-
-=head1 ABSTRACT
-
-This module implements RFC 2047 Mime Header Encoding. There are 3
-variant encoding names; C<MIME-Header>, C<MIME-B> and C<MIME-Q>. The
-difference is described below
-
- decode() encode()
- ----------------------------------------------
- MIME-Header Both B and Q =?UTF-8?B?....?=
- MIME-B B only; Q croaks =?UTF-8?B?....?=
- MIME-Q Q only; B croaks =?UTF-8?Q?....?=
-
-=head1 DESCRIPTION
-
-When you decode(=?I<encoding>?I<X>?I<ENCODED WORD>?=), I<ENCODED WORD>
-is extracted and decoded for I<X> encoding (B for Base64, Q for
-Quoted-Printable). Then the decoded chunk is fed to
-decode(I<encoding>). So long as I<encoding> is supported by Encode,
-any source encoding is fine.
-
-When you encode, it just encodes UTF-8 string with I<X> encoding then
-quoted with =?UTF-8?I<X>?....?= . The parts that RFC 2047 forbids to
-encode are left as is and long lines are folded within 76 bytes per
-line.
-
-=head1 BUGS
-
-It would be nice to support encoding to non-UTF8, such as =?ISO-2022-JP?
-and =?ISO-8859-1?= but that makes the implementation too complicated.
-These days major mail agents all support =?UTF-8? so I think it is
-just good enough.
-
-Due to popular demand, 'MIME-Header-ISO_2022_JP' was introduced by
-Makamaka. Thre are still too many MUAs especially cellular phone
-handsets which does not grok UTF-8.
-
-=head1 SEE ALSO
-
-L<Encode>
-
-RFC 2047, L<http://www.faqs.org/rfcs/rfc2047.html> and many other
-locations.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode/MIME/Header/ISO_2022_JP.pm b/Master/tlpkg/tlperl/lib/Encode/MIME/Header/ISO_2022_JP.pm
deleted file mode 100644
index 5f637a32472..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/MIME/Header/ISO_2022_JP.pm
+++ /dev/null
@@ -1,127 +0,0 @@
-package Encode::MIME::Header::ISO_2022_JP;
-
-use strict;
-use base qw(Encode::MIME::Header);
-
-$Encode::Encoding{'MIME-Header-ISO_2022_JP'}
- = bless {encode => 'B', bpl => 76, Name => 'MIME-Header-ISO_2022_JP'}
- => __PACKAGE__;
-
-use constant HEAD => '=?ISO-2022-JP?B?';
-use constant TAIL => '?=';
-
-use Encode::CJKConstants qw(%RE);
-
-our $VERSION = do { my @r = (q$Revision: 1.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
-
-
-# I owe the below codes totally to
-# Jcode by Dan Kogai & http://www.din.or.jp/~ohzaki/perl.htm#JP_Base64
-
-sub encode {
- my $self = shift;
- my $str = shift;
-
- utf8::encode($str) if( Encode::is_utf8($str) );
- Encode::from_to($str, 'utf8', 'euc-jp');
-
- my($trailing_crlf) = ($str =~ /(\n|\r|\x0d\x0a)$/o);
-
- $str = _mime_unstructured_header($str, $self->{bpl});
-
- not $trailing_crlf and $str =~ s/(\n|\r|\x0d\x0a)$//o;
-
- return $str;
-}
-
-
-sub _mime_unstructured_header {
- my ($oldheader, $bpl) = @_;
- my $crlf = $oldheader =~ /\n$/;
- my($header, @words, @wordstmp, $i) = ('');
-
- $oldheader =~ s/\s+$//;
-
- @wordstmp = split /\s+/, $oldheader;
-
- for ($i = 0; $i < $#wordstmp; $i++){
- if( $wordstmp[$i] !~ /^[\x21-\x7E]+$/ and $wordstmp[$i + 1] !~ /^[\x21-\x7E]+$/){
- $wordstmp[$i + 1] = "$wordstmp[$i] $wordstmp[$i + 1]";
- }
- else{
- push(@words, $wordstmp[$i]);
- }
- }
-
- push(@words, $wordstmp[-1]);
-
- for my $word (@words){
- if ($word =~ /^[\x21-\x7E]+$/) {
- $header =~ /(?:.*\n)*(.*)/;
- if (length($1) + length($word) > $bpl) {
- $header .= "\n $word";
- }
- else{
- $header .= $word;
- }
- }
- else{
- $header = _add_encoded_word($word, $header, $bpl);
- }
-
- $header =~ /(?:.*\n)*(.*)/;
-
- if(length($1) == $bpl){
- $header .= "\n ";
- }
- else {
- $header .= ' ';
- }
- }
-
- $header =~ s/\n? $//mg;
-
- $crlf ? "$header\n" : $header;
-}
-
-
-sub _add_encoded_word {
- my($str, $line, $bpl) = @_;
- my $result = '';
-
- while( length($str) ){
- my $target = $str;
- $str = '';
-
- if(length($line) + 22 + ($target =~ /^(?:$RE{EUC_0212}|$RE{EUC_C})/o) * 8 > $bpl){
- $line =~ s/[ \t\n\r]*$/\n/;
- $result .= $line;
- $line = ' ';
- }
-
- while(1){
- my $iso_2022_jp = $target;
- Encode::from_to($iso_2022_jp, 'euc-jp', 'iso-2022-jp');
-
- my $encoded
- = HEAD . MIME::Base64::encode_base64($iso_2022_jp, '') . TAIL;
-
- if(length($encoded) + length($line) > $bpl){
- $target =~ s/($RE{EUC_0212}|$RE{EUC_KANA}|$RE{EUC_C}|$RE{ASCII})$//o;
- $str = $1 . $str;
- }
- else{
- $line .= $encoded;
- last;
- }
- }
-
- }
-
- $result . $line;
-}
-
-
-1;
-__END__
-
diff --git a/Master/tlpkg/tlperl/lib/Encode/Makefile_PL.e2x b/Master/tlpkg/tlperl/lib/Encode/Makefile_PL.e2x
deleted file mode 100644
index 3bca0bff52b..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/Makefile_PL.e2x
+++ /dev/null
@@ -1,180 +0,0 @@
-#
-# This file is auto-generated by:
-# enc2xs version $_Version_
-# $_Now_
-#
-use 5.7.2;
-use strict;
-use ExtUtils::MakeMaker;
-use Config;
-
-# Please edit the following to the taste!
-my $name = '$_Name_';
-my %tables = (
- $_Name__t => [ $_TableFiles_ ],
- );
-
-#### DO NOT EDIT BEYOND THIS POINT!
-require File::Spec;
-my ($enc2xs, $encode_h) = ();
-PATHLOOP:
-for my $d (@Config{qw/bin sitebin vendorbin/},
- (split /$Config{path_sep}/o, $ENV{PATH})){
- for my $f (qw/enc2xs enc2xs5.7.3/){
- my $path = File::Spec->catfile($d, $f);
- -r $path and $enc2xs = $path and last PATHLOOP;
- }
-}
-$enc2xs or die "enc2xs not found!";
-print "enc2xs is $enc2xs\n";
-my %encode_h = ();
-for my $d (@INC){
- my $dir = File::Spec->catfile($d, "Encode");
- my $file = File::Spec->catfile($dir, "encode.h");
- -f $file and $encode_h{$dir} = -M $file;
-}
-%encode_h or die "encode.h not found!";
-# find the latest one
-($encode_h) = sort {$encode_h{$b} <=> $encode_h{$a}} keys %encode_h;
-print "encode.h is at $encode_h\n";
-
-WriteMakefile(
- INC => "-I$encode_h",
-#### END_OF_HEADER -- DO NOT EDIT THIS LINE BY HAND! ####
- NAME => 'Encode::'.$name,
- VERSION_FROM => "$name.pm",
- OBJECT => '$(O_FILES)',
- 'dist' => {
- COMPRESS => 'gzip -9f',
- SUFFIX => 'gz',
- DIST_DEFAULT => 'all tardist',
- },
- MAN3PODS => {},
- PREREQ_PM => {
- 'Encode' => "1.41",
- },
- # OS 390 winges about line numbers > 64K ???
- XSOPT => '-nolinenumbers',
- );
-
-package MY;
-
-sub post_initialize
-{
- my ($self) = @_;
- my %o;
- my $x = $self->{'OBJ_EXT'};
- # Add the table O_FILES
- foreach my $e (keys %tables)
- {
- $o{$e.$x} = 1;
- }
- $o{"$name$x"} = 1;
- $self->{'O_FILES'} = [sort keys %o];
- my @files = ("$name.xs");
- $self->{'C'} = ["$name.c"];
- # The next two lines to make MacPerl Happy -- dankogai via pudge
- $self->{SOURCE} .= " $name.c"
- if $^O eq 'MacOS' && $self->{SOURCE} !~ /\b$name\.c\b/;
- # $self->{'H'} = [$self->catfile($self->updir,'encode.h')];
- my %xs;
- foreach my $table (keys %tables) {
- push (@{$self->{'C'}},"$table.c");
- # Do NOT add $table.h etc. to H_FILES unless we own up as to how they
- # get built.
- foreach my $ext (qw($(OBJ_EXT) .c .h .exh .fnm)) {
- push (@files,$table.$ext);
- }
- }
- $self->{'XS'} = { "$name.xs" => "$name.c" };
- $self->{'clean'}{'FILES'} .= join(' ',@files);
- open(XS,">$name.xs") || die "Cannot open $name.xs:$!";
- print XS <<'END';
-#include <EXTERN.h>
-#include <perl.h>
-#include <XSUB.h>
-#define U8 U8
-#include "encode.h"
-END
- foreach my $table (keys %tables) {
- print XS qq[#include "${table}.h"\n];
- }
- print XS <<"END";
-
-static void
-Encode_XSEncoding(pTHX_ encode_t *enc)
-{
- dSP;
- HV *stash = gv_stashpv("Encode::XS", TRUE);
- SV *sv = sv_bless(newRV_noinc(newSViv(PTR2IV(enc))),stash);
- int i = 0;
- PUSHMARK(sp);
- XPUSHs(sv);
- while (enc->name[i])
- {
- const char *name = enc->name[i++];
- XPUSHs(sv_2mortal(newSVpvn(name,strlen(name))));
- }
- PUTBACK;
- call_pv("Encode::define_encoding",G_DISCARD);
- SvREFCNT_dec(sv);
-}
-
-MODULE = Encode::$name PACKAGE = Encode::$name
-PROTOTYPES: DISABLE
-BOOT:
-{
-END
- foreach my $table (keys %tables) {
- print XS qq[#include "${table}.exh"\n];
- }
- print XS "}\n";
- close(XS);
- return "# Built $name.xs\n\n";
-}
-
-sub postamble
-{
- my $self = shift;
- my $dir = "."; # $self->catdir('Encode');
- my $str = "# $name\$(OBJ_EXT) depends on .h and .exh files not .c files - but all written by enc2xs\n";
- $str .= "$name.c : $name.xs ";
- foreach my $table (keys %tables)
- {
- $str .= " $table.c";
- }
- $str .= "\n\n";
- $str .= "$name\$(OBJ_EXT) : $name.c\n\n";
-
- foreach my $table (keys %tables)
- {
- my $numlines = 1;
- my $lengthsofar = length($str);
- my $continuator = '';
- $str .= "$table.c : Makefile.PL";
- foreach my $file (@{$tables{$table}})
- {
- $str .= $continuator.' '.$self->catfile($dir,$file);
- if ( length($str)-$lengthsofar > 128*$numlines )
- {
- $continuator .= " \\\n\t";
- $numlines++;
- } else {
- $continuator = '';
- }
- }
- my $plib = $self->{PERL_CORE} ? '"-I$(PERL_LIB)"' : '';
- my $ucopts = '-"Q"';
- $str .=
- qq{\n\t\$(PERL) $plib $enc2xs $ucopts -o \$\@ -f $table.fnm\n\n};
- open (FILELIST, ">$table.fnm")
- || die "Could not open $table.fnm: $!";
- foreach my $file (@{$tables{$table}})
- {
- print FILELIST $self->catfile($dir,$file) . "\n";
- }
- close(FILELIST);
- }
- return $str;
-}
-
diff --git a/Master/tlpkg/tlperl/lib/Encode/PerlIO.pod b/Master/tlpkg/tlperl/lib/Encode/PerlIO.pod
deleted file mode 100644
index abd1f2d10a1..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/PerlIO.pod
+++ /dev/null
@@ -1,167 +0,0 @@
-=head1 NAME
-
-Encode::PerlIO -- a detailed document on Encode and PerlIO
-
-=head1 Overview
-
-It is very common to want to do encoding transformations when
-reading or writing files, network connections, pipes etc.
-If Perl is configured to use the new 'perlio' IO system then
-C<Encode> provides a "layer" (see L<PerlIO>) which can transform
-data as it is read or written.
-
-Here is how the blind poet would modernise the encoding:
-
- use Encode;
- open(my $iliad,'<:encoding(iso-8859-7)','iliad.greek');
- open(my $utf8,'>:utf8','iliad.utf8');
- my @epic = <$iliad>;
- print $utf8 @epic;
- close($utf8);
- close($illiad);
-
-In addition, the new IO system can also be configured to read/write
-UTF-8 encoded characters (as noted above, this is efficient):
-
- open(my $fh,'>:utf8','anything');
- print $fh "Any \x{0021} string \N{SMILEY FACE}\n";
-
-Either of the above forms of "layer" specifications can be made the default
-for a lexical scope with the C<use open ...> pragma. See L<open>.
-
-Once a handle is open, its layers can be altered using C<binmode>.
-
-Without any such configuration, or if Perl itself is built using the
-system's own IO, then write operations assume that the file handle
-accepts only I<bytes> and will C<die> if a character larger than 255 is
-written to the handle. When reading, each octet from the handle becomes
-a byte-in-a-character. Note that this default is the same behaviour
-as bytes-only languages (including Perl before v5.6) would have,
-and is sufficient to handle native 8-bit encodings e.g. iso-8859-1,
-EBCDIC etc. and any legacy mechanisms for handling other encodings
-and binary data.
-
-In other cases, it is the program's responsibility to transform
-characters into bytes using the API above before doing writes, and to
-transform the bytes read from a handle into characters before doing
-"character operations" (e.g. C<lc>, C</\W+/>, ...).
-
-You can also use PerlIO to convert larger amounts of data you don't
-want to bring into memory. For example, to convert between ISO-8859-1
-(Latin 1) and UTF-8 (or UTF-EBCDIC in EBCDIC machines):
-
- open(F, "<:encoding(iso-8859-1)", "data.txt") or die $!;
- open(G, ">:utf8", "data.utf") or die $!;
- while (<F>) { print G }
-
- # Could also do "print G <F>" but that would pull
- # the whole file into memory just to write it out again.
-
-More examples:
-
- open(my $f, "<:encoding(cp1252)")
- open(my $g, ">:encoding(iso-8859-2)")
- open(my $h, ">:encoding(latin9)") # iso-8859-15
-
-See also L<encoding> for how to change the default encoding of the
-data in your script.
-
-=head1 How does it work?
-
-Here is a crude diagram of how filehandle, PerlIO, and Encode
-interact.
-
- filehandle <-> PerlIO PerlIO <-> scalar (read/printed)
- \ /
- Encode
-
-When PerlIO receives data from either direction, it fills a buffer
-(currently with 1024 bytes) and passes the buffer to Encode.
-Encode tries to convert the valid part and passes it back to PerlIO,
-leaving invalid parts (usually a partial character) in the buffer.
-PerlIO then appends more data to the buffer, calls Encode again,
-and so on until the data stream ends.
-
-To do so, PerlIO always calls (de|en)code methods with CHECK set to 1.
-This ensures that the method stops at the right place when it
-encounters partial character. The following is what happens when
-PerlIO and Encode tries to encode (from utf8) more than 1024 bytes
-and the buffer boundary happens to be in the middle of a character.
-
- A B C .... ~ \x{3000} ....
- 41 42 43 .... 7E e3 80 80 ....
- <- buffer --------------->
- << encoded >>>>>>>>>>
- <- next buffer ------
-
-Encode converts from the beginning to \x7E, leaving \xe3 in the buffer
-because it is invalid (partial character).
-
-Unfortunately, this scheme does not work well with escape-based
-encodings such as ISO-2022-JP.
-
-=head1 Line Buffering
-
-Now let's see what happens when you try to decode from ISO-2022-JP and
-the buffer ends in the middle of a character.
-
- JIS208-ESC \x{5f3e}
- A B C .... ~ \e $ B |DAN | ....
- 41 42 43 .... 7E 1b 24 41 43 46 ....
- <- buffer --------------------------->
- << encoded >>>>>>>>>>>>>>>>>>>>>>>
-
-As you see, the next buffer begins with \x43. But \x43 is 'C' in
-ASCII, which is wrong in this case because we are now in JISX 0208
-area so it has to convert \x43\x46, not \x43. Unlike utf8 and EUC,
-in escape-based encodings you can't tell if a given octet is a whole
-character or just part of it.
-
-Fortunately PerlIO also supports line buffer if you tell PerlIO to use
-one instead of fixed buffer. Since ISO-2022-JP is guaranteed to revert to ASCII at the end of the line, partial
-character will never happen when line buffer is used.
-
-To tell PerlIO to use line buffer, implement -E<gt>needs_lines method
-for your encoding object. See L<Encode::Encoding> for details.
-
-Thanks to these efforts most encodings that come with Encode support
-PerlIO but that still leaves following encodings.
-
- iso-2022-kr
- MIME-B
- MIME-Header
- MIME-Q
-
-Fortunately iso-2022-kr is hardly used (according to Jungshik) and
-MIME-* are very unlikely to be fed to PerlIO because they are for mail
-headers. See L<Encode::MIME::Header> for details.
-
-=head2 How can I tell whether my encoding fully supports PerlIO ?
-
-As of this writing, any encoding whose class belongs to Encode::XS and
-Encode::Unicode works. The Encode module has a C<perlio_ok> method
-which you can use before applying PerlIO encoding to the filehandle.
-Here is an example:
-
- my $use_perlio = perlio_ok($enc);
- my $layer = $use_perlio ? "<:raw" : "<:encoding($enc)";
- open my $fh, $layer, $file or die "$file : $!";
- while(<$fh>){
- $_ = decode($enc, $_) unless $use_perlio;
- # ....
- }
-
-=head1 SEE ALSO
-
-L<Encode::Encoding>,
-L<Encode::Supported>,
-L<Encode::PerlIO>,
-L<encoding>,
-L<perlebcdic>,
-L<perlfunc/open>,
-L<perlunicode>,
-L<utf8>,
-the Perl Unicode Mailing List E<lt>perl-unicode@perl.orgE<gt>
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Encode/README.e2x b/Master/tlpkg/tlperl/lib/Encode/README.e2x
deleted file mode 100644
index 28a31a655c2..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/README.e2x
+++ /dev/null
@@ -1,31 +0,0 @@
-Encode::$_Name_ version 0.1
-========
-
-NAME
- Encode::$_Name_ - <describe encoding>
-
-SYNOPSIS
- use Encode::$_Name_;
- #<put more words here>
-ABSTRACT
- <fill this in>
-INSTALLATION
-
-To install this module type the following:
-
- perl Makefile.PL
- make
- make test
- make install
-
-DEPENDENCIES
-
-This module requires perl version 5.7.3 or later.
-
-COPYRIGHT AND LICENCE
-
-Copyright (C) 2002 Your Name <your@address.domain>
-
-This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
diff --git a/Master/tlpkg/tlperl/lib/Encode/Supported.pod b/Master/tlpkg/tlperl/lib/Encode/Supported.pod
deleted file mode 100644
index 651f7e6ed4f..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/Supported.pod
+++ /dev/null
@@ -1,890 +0,0 @@
-=head1 NAME
-
-Encode::Supported -- Encodings supported by Encode
-
-=head1 DESCRIPTION
-
-=head2 Encoding Names
-
-Encoding names are case insensitive. White space in names
-is ignored. In addition, an encoding may have aliases.
-Each encoding has one "canonical" name. The "canonical"
-name is chosen from the names of the encoding by picking
-the first in the following sequence (with a few exceptions).
-
-=over 4
-
-=item *
-
-The name used by the Perl community. That includes 'utf8' and 'ascii'.
-Unlike aliases, canonical names directly reach the method so such
-frequently used words like 'utf8' don't need to do alias lookups.
-
-=item *
-
-The MIME name as defined in IETF RFCs. This includes all "iso-"s.
-
-=item *
-
-The name in the IANA registry.
-
-=item *
-
-The name used by the organization that defined it.
-
-=back
-
-In case I<de jure> canonical names differ from that of the Encode
-module, they are always aliased if it ever be implemented. So you can
-safely tell if a given encoding is implemented or not just by passing
-the canonical name.
-
-Because of all the alias issues, and because in the general case
-encodings have state, "Encode" uses an encoding object internally
-once an operation is in progress.
-
-=head1 Supported Encodings
-
-As of Perl 5.8.0, at least the following encodings are recognized.
-Note that unless otherwise specified, they are all case insensitive
-(via alias) and all occurrence of spaces are replaced with '-'.
-In other words, "ISO 8859 1" and "iso-8859-1" are identical.
-
-Encodings are categorized and implemented in several different modules
-but you don't have to C<use Encode::XX> to make them available for
-most cases. Encode.pm will automatically load those modules on demand.
-
-=head2 Built-in Encodings
-
-The following encodings are always available.
-
- Canonical Aliases Comments & References
- ----------------------------------------------------------------
- ascii US-ascii ISO-646-US [ECMA]
- ascii-ctrl Special Encoding
- iso-8859-1 latin1 [ISO]
- null Special Encoding
- utf8 UTF-8 [RFC2279]
- ----------------------------------------------------------------
-
-I<null> and I<ascii-ctrl> are special. "null" fails for all character
-so when you set fallback mode to PERLQQ, HTMLCREF or XMLCREF, ALL
-CHARACTERS will fall back to character references. Ditto for
-"ascii-ctrl" except for control characters. For fallback modes, see
-L<Encode>.
-
-=head2 Encode::Unicode -- other Unicode encodings
-
-Unicode coding schemes other than native utf8 are supported by
-Encode::Unicode, which will be autoloaded on demand.
-
- ----------------------------------------------------------------
- UCS-2BE UCS-2, iso-10646-1 [IANA, UC]
- UCS-2LE [UC]
- UTF-16 [UC]
- UTF-16BE [UC]
- UTF-16LE [UC]
- UTF-32 [UC]
- UTF-32BE UCS-4 [UC]
- UTF-32LE [UC]
- UTF-7 [RFC2152]
- ----------------------------------------------------------------
-
-To find how (UCS-2|UTF-(16|32))(LE|BE)? differ from one another,
-see L<Encode::Unicode>.
-
-UTF-7 is a special encoding which "re-encodes" UTF-16BE into a 7-bit
-encoding. It is implemented seperately by Encode::Unicode::UTF7.
-
-=head2 Encode::Byte -- Extended ASCII
-
-Encode::Byte implements most single-byte encodings except for
-Symbols and EBCDIC. The following encodings are based on single-byte
-encodings implemented as extended ASCII. Most of them map
-\x80-\xff (upper half) to non-ASCII characters.
-
-=over 4
-
-=item ISO-8859 and corresponding vendor mappings
-
-Since there are so many, they are presented in table format with
-languages and corresponding encoding names by vendors. Note that
-the table is sorted in order of ISO-8859 and the corresponding vendor
-mappings are slightly different from that of ISO. See
-L<http://czyborra.com/charsets/iso8859.html> for details.
-
- Lang/Regions ISO/Other Std. DOS Windows Macintosh Others
- ----------------------------------------------------------------
- N. America (ASCII) cp437 AdobeStandardEncoding
- cp863 (DOSCanadaF)
- W. Europe iso-8859-1 cp850 cp1252 MacRoman nextstep
- hp-roman8
- cp860 (DOSPortuguese)
- Cntrl. Europe iso-8859-2 cp852 cp1250 MacCentralEurRoman
- MacCroatian
- MacRomanian
- MacRumanian
- Latin3[1] iso-8859-3
- Latin4[2] iso-8859-4
- Cyrillics iso-8859-5 cp855 cp1251 MacCyrillic
- (See also next section) cp866 MacUkrainian
- Arabic iso-8859-6 cp864 cp1256 MacArabic
- cp1006 MacFarsi
- Greek iso-8859-7 cp737 cp1253 MacGreek
- cp869 (DOSGreek2)
- Hebrew iso-8859-8 cp862 cp1255 MacHebrew
- Turkish iso-8859-9 cp857 cp1254 MacTurkish
- Nordics iso-8859-10 cp865
- cp861 MacIcelandic
- MacSami
- Thai iso-8859-11[3] cp874 MacThai
- (iso-8859-12 is nonexistent. Reserved for Indics?)
- Baltics iso-8859-13 cp775 cp1257
- Celtics iso-8859-14
- Latin9 [4] iso-8859-15
- Latin10 iso-8859-16
- Vietnamese viscii cp1258 MacVietnamese
- ----------------------------------------------------------------
-
- [1] Esperanto, Maltese, and Turkish. Turkish is now on 8859-9.
- [2] Baltics. Now on 8859-10, except for Latvian.
- [3] TIS 620 + Non-Breaking Space (0xA0 / U+00A0)
- [4] Nicknamed Latin0; the Euro sign as well as French and Finnish
- letters that are missing from 8859-1 were added.
-
-All cp* are also available as ibm-*, ms-*, and windows-* . See also
-L<http://czyborra.com/charsets/codepages.html>.
-
-Macintosh encodings don't seem to be registered in such entities as
-IANA. "Canonical" names in Encode are based upon Apple's Tech Note
-1150. See L<http://developer.apple.com/technotes/tn/tn1150.html>
-for details.
-
-=item KOI8 - De Facto Standard for the Cyrillic world
-
-Though ISO-8859 does have ISO-8859-5, the KOI8 series is far more
-popular in the Net. L<Encode> comes with the following KOI charsets.
-For gory details, see L<http://czyborra.com/charsets/cyrillic.html>
-
- ----------------------------------------------------------------
- koi8-f
- koi8-r cp878 [RFC1489]
- koi8-u [RFC2319]
- ----------------------------------------------------------------
-
-=item gsm0338 - Hentai Latin 1
-
-GSM0338 is for GSM handsets. Though it shares alphanumerals with
-ASCII, control character ranges and other parts are mapped very
-differently, mainly to store Greek characters. There are also escape
-sequences (starting with 0x1B) to cover e.g. the Euro sign. Some
-special cases like a trailing 0x00 byte or a lone 0x1B byte are not
-well-defined and decode() will return an empty string for them.
-One possible workaround is
-
- $gsm =~ s/\x00\z/\x00\x00/;
- $uni = decode("gsm0338", $gsm);
- $uni .= "\xA0" if $gsm =~ /\x1B\z/;
-
-Note that the Encode implementation of GSM0338 does not implement the
-reuse of Latin capital letters as Greek capital letters (for example,
-the 0x5A is U+005A (LATIN CAPITAL LETTER Z), not U+0396 (GREEK CAPITAL
-LETTER ZETA).
-
-The GSM0338 is also covered in Encode::Byte even though it is not
-an "extended ASCII" encoding.
-
-=back
-
-=head2 CJK: Chinese, Japanese, Korean (Multibyte)
-
-Note that Vietnamese is listed above. Also read "Encoding vs Charset"
-below. Also note that these are implemented in distinct modules by
-countries, due to the size concerns (simplified Chinese is mapped
-to 'CN', continental China, while traditional Chinese is mapped to
-'TW', Taiwan). Please refer to their respective documentation pages.
-
-=over 4
-
-=item Encode::CN -- Continental China
-
- Standard DOS/Win Macintosh Comment/Reference
- ----------------------------------------------------------------
- euc-cn [1] MacChineseSimp
- (gbk) cp936 [2]
- gb12345-raw { GB12345 without CES }
- gb2312-raw { GB2312 without CES }
- hz
- iso-ir-165
- ----------------------------------------------------------------
-
- [1] GB2312 is aliased to this. See L<Microsoft-related naming mess>
- [2] gbk is aliased to this. See L<Microsoft-related naming mess>
-
-=item Encode::JP -- Japan
-
- Standard DOS/Win Macintosh Comment/Reference
- ----------------------------------------------------------------
- euc-jp
- shiftjis cp932 macJapanese
- 7bit-jis
- iso-2022-jp [RFC1468]
- iso-2022-jp-1 [RFC2237]
- jis0201-raw { JIS X 0201 (roman + halfwidth kana) without CES }
- jis0208-raw { JIS X 0208 (Kanji + fullwidth kana) without CES }
- jis0212-raw { JIS X 0212 (Extended Kanji) without CES }
- ----------------------------------------------------------------
-
-=item Encode::KR -- Korea
-
- Standard DOS/Win Macintosh Comment/Reference
- ----------------------------------------------------------------
- euc-kr MacKorean [RFC1557]
- cp949 [1]
- iso-2022-kr [RFC1557]
- johab [KS X 1001:1998, Annex 3]
- ksc5601-raw { KSC5601 without CES }
- ----------------------------------------------------------------
-
- [1] ks_c_5601-1987, (x-)?windows-949, and uhc are aliased to this.
- See below.
-
-=item Encode::TW -- Taiwan
-
- Standard DOS/Win Macintosh Comment/Reference
- ----------------------------------------------------------------
- big5-eten cp950 MacChineseTrad {big5 aliased to big5-eten}
- big5-hkscs
- ----------------------------------------------------------------
-
-=item Encode::HanExtra -- More Chinese via CPAN
-
-Due to the size concerns, additional Chinese encodings below are
-distributed separately on CPAN, under the name Encode::HanExtra.
-
- Standard DOS/Win Macintosh Comment/Reference
- ----------------------------------------------------------------
- big5ext CMEX's Big5e Extension
- big5plus CMEX's Big5+ Extension
- cccii Chinese Character Code for Information Interchange
- euc-tw EUC (Extended Unix Character)
- gb18030 GBK with Traditional Characters
- ----------------------------------------------------------------
-
-=item Encode::JIS2K -- JIS X 0213 encodings via CPAN
-
-Due to size concerns, additional Japanese encodings below are
-distributed separately on CPAN, under the name Encode::JIS2K.
-
- Standard DOS/Win Macintosh Comment/Reference
- ----------------------------------------------------------------
- euc-jisx0213
- shiftjisx0123
- iso-2022-jp-3
- jis0213-1-raw
- jis0213-2-raw
- ----------------------------------------------------------------
-
-=back
-
-=head2 Miscellaneous encodings
-
-=over 4
-
-=item Encode::EBCDIC
-
-See L<perlebcdic> for details.
-
- ----------------------------------------------------------------
- cp37
- cp500
- cp875
- cp1026
- cp1047
- posix-bc
- ----------------------------------------------------------------
-
-=item Encode::Symbols
-
-For symbols and dingbats.
-
- ----------------------------------------------------------------
- symbol
- dingbats
- MacDingbats
- AdobeZdingbat
- AdobeSymbol
- ----------------------------------------------------------------
-
-=item Encode::MIME::Header
-
-Strictly speaking, MIME header encoding documented in RFC 2047 is more
-of encapsulation than encoding. However, their support in modern
-world is imperative so they are supported.
-
- ----------------------------------------------------------------
- MIME-Header [RFC2047]
- MIME-B [RFC2047]
- MIME-Q [RFC2047]
- ----------------------------------------------------------------
-
-=item Encode::Guess
-
-This one is not a name of encoding but a utility that lets you pick up
-the most appropriate encoding for a data out of given I<suspects>. See
-L<Encode::Guess> for details.
-
-=back
-
-=head1 Unsupported encodings
-
-The following encodings are not supported as yet; some because they
-are rarely used, some because of technical difficulties. They may
-be supported by external modules via CPAN in the future, however.
-
-=over 4
-
-=item ISO-2022-JP-2 [RFC1554]
-
-Not very popular yet. Needs Unicode Database or equivalent to
-implement encode() (because it includes JIS X 0208/0212, KSC5601, and
-GB2312 simultaneously, whose code points in Unicode overlap. So you
-need to lookup the database to determine to what character set a given
-Unicode character should belong).
-
-=item ISO-2022-CN [RFC1922]
-
-Not very popular. Needs CNS 11643-1 and -2 which are not available in
-this module. CNS 11643 is supported (via euc-tw) in Encode::HanExtra.
-Autrijus Tang may add support for this encoding in his module in future.
-
-=item Various HP-UX encodings
-
-The following are unsupported due to the lack of mapping data.
-
- '8' - arabic8, greek8, hebrew8, kana8, thai8, and turkish8
- '15' - japanese15, korean15, and roi15
-
-=item Cyrillic encoding ISO-IR-111
-
-Anton Tagunov doubts its usefulness.
-
-=item ISO-8859-8-1 [Hebrew]
-
-None of the Encode team knows Hebrew enough (ISO-8859-8, cp1255 and
-MacHebrew are supported because and just because there were mappings
-available at L<http://www.unicode.org/>). Contributions welcome.
-
-=item ISIRI 3342, Iran System, ISIRI 2900 [Farsi]
-
-Ditto.
-
-=item Thai encoding TCVN
-
-Ditto.
-
-=item Vietnamese encodings VPS
-
-Though Jungshik Shin has reported that Mozilla supports this encoding,
-it was too late before 5.8.0 for us to add it. In the future, it
-may be available via a separate module. See
-L<http://lxr.mozilla.org/seamonkey/source/intl/uconv/ucvlatin/vps.uf>
-and
-L<http://lxr.mozilla.org/seamonkey/source/intl/uconv/ucvlatin/vps.ut>
-if you are interested in helping us.
-
-=item Various Mac encodings
-
-The following are unsupported due to the lack of mapping data.
-
- MacArmenian, MacBengali, MacBurmese, MacEthiopic
- MacExtArabic, MacGeorgian, MacKannada, MacKhmer
- MacLaotian, MacMalayalam, MacMongolian, MacOriya
- MacSinhalese, MacTamil, MacTelugu, MacTibetan
- MacVietnamese
-
-The rest which are already available are based upon the vendor mappings
-at L<http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/> .
-
-=item (Mac) Indic encodings
-
-The maps for the following are available at L<http://www.unicode.org/>
-but remain unsupport because those encodings need algorithmical
-approach, currently unsupported by F<enc2xs>:
-
- MacDevanagari
- MacGurmukhi
- MacGujarati
-
-For details, please see C<Unicode mapping issues and notes:> at
-L<http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/DEVANAGA.TXT> .
-
-I believe this issue is prevalent not only for Mac Indics but also in
-other Indic encodings, but the above were the only Indic encodings
-maps that I could find at L<http://www.unicode.org/> .
-
-=back
-
-=head1 Encoding vs. Charset -- terminology
-
-We are used to using the term (character) I<encoding> and I<character
-set> interchangeably. But just as confusing the terms byte and
-character is dangerous and the terms should be differentiated when
-needed, we need to differentiate I<encoding> and I<character set>.
-
-To understand that, here is a description of how we make computers
-grok our characters.
-
-=over 4
-
-=item *
-
-First we start with which characters to include. We call this
-collection of characters I<character repertoire>.
-
-=item *
-
-Then we have to give each character a unique ID so your computer can
-tell the difference between 'a' and 'A'. This itemized character
-repertoire is now a I<character set>.
-
-=item *
-
-If your computer can grow the character set without further
-processing, you can go ahead and use it. This is called a I<coded
-character set> (CCS) or I<raw character encoding>. ASCII is used this
-way for most cases.
-
-=item *
-
-But in many cases, especially multi-byte CJK encodings, you have to
-tweak a little more. Your network connection may not accept any data
-with the Most Significant Bit set, and your computer may not be able to
-tell if a given byte is a whole character or just half of it. So you
-have to I<encode> the character set to use it.
-
-A I<character encoding scheme> (CES) determines how to encode a given
-character set, or a set of multiple character sets. 7bit ISO-2022 is
-an example of a CES. You switch between character sets via I<escape
-sequences>.
-
-=back
-
-Technically, or mathematically, speaking, a character set encoded in
-such a CES that maps character by character may form a CCS. EUC is such
-an example. The CES of EUC is as follows:
-
-=over 4
-
-=item *
-
-Map ASCII unchanged.
-
-=item *
-
-Map such a character set that consists of 94 or 96 powered by N
-members by adding 0x80 to each byte.
-
-=item *
-
-You can also use 0x8e and 0x8f to indicate that the following sequence of
-characters belongs to yet another character set. To each following byte
-is added the value 0x80.
-
-=back
-
-By carefully looking at the encoded byte sequence, you can find that the
-byte sequence conforms a unique number. In that sense, EUC is a CCS
-generated by a CES above from up to four CCS (complicated?). UTF-8
-falls into this category. See L<perlUnicode/"UTF-8"> to find out how
-UTF-8 maps Unicode to a byte sequence.
-
-You may also have found out by now why 7bit ISO-2022 cannot comprise
-a CCS. If you look at a byte sequence \x21\x21, you can't tell if
-it is two !'s or IDEOGRAPHIC SPACE. EUC maps the latter to \xA1\xA1
-so you have no trouble differentiating between "!!". and S<" ">.
-
-=head1 Encoding Classification (by Anton Tagunov and Dan Kogai)
-
-This section tries to classify the supported encodings by their
-applicability for information exchange over the Internet and to
-choose the most suitable aliases to name them in the context of
-such communication.
-
-=over 4
-
-=item *
-
-To (en|de)code encodings marked by C<(**)>, you need
-C<Encode::HanExtra>, available from CPAN.
-
-=back
-
-Encoding names
-
- US-ASCII UTF-8 ISO-8859-* KOI8-R
- Shift_JIS EUC-JP ISO-2022-JP ISO-2022-JP-1
- EUC-KR Big5 GB2312
-
-are registered with IANA as preferred MIME names and may
-be used over the Internet.
-
-C<Shift_JIS> has been officialized by JIS X 0208:1997.
-L<Microsoft-related naming mess> gives details.
-
-C<GB2312> is the IANA name for C<EUC-CN>.
-See L<Microsoft-related naming mess> for details.
-
-C<GB_2312-80> I<raw> encoding is available as C<gb2312-raw>
-with Encode. See L<Encode::CN> for details.
-
- EUC-CN
- KOI8-U [RFC2319]
-
-have not been registered with IANA (as of March 2002) but
-seem to be supported by major web browsers.
-The IANA name for C<EUC-CN> is C<GB2312>.
-
- KS_C_5601-1987
-
-is heavily misused.
-See L<Microsoft-related naming mess> for details.
-
-C<KS_C_5601-1987> I<raw> encoding is available as C<kcs5601-raw>
-with Encode. See L<Encode::KR> for details.
-
- UTF-16 UTF-16BE UTF-16LE
-
-are IANA-registered C<charset>s. See [RFC 2781] for details.
-Jungshik Shin reports that UTF-16 with a BOM is well accepted
-by MS IE 5/6 and NS 4/6. Beware however that
-
-=over 4
-
-=item *
-
-C<UTF-16> support in any software you're going to be
-using/interoperating with has probably been less tested
-then C<UTF-8> support
-
-=item *
-
-C<UTF-8> coded data seamlessly passes traditional
-command piping (C<cat>, C<more>, etc.) while C<UTF-16> coded
-data is likely to cause confusion (with its zero bytes,
-for example)
-
-=item *
-
-it is beyond the power of words to describe the way HTML browsers
-encode non-C<ASCII> form data. To get a general impression, visit
-L<http://ppewww.ph.gla.ac.uk/~flavell/charset/form-i18n.html>.
-While encoding of form data has stabilized for C<UTF-8> encoded pages
-(at least IE 5/6, NS 6, and Opera 6 behave consistently), be sure to
-expect fun (and cross-browser discrepancies) with C<UTF-16> encoded
-pages!
-
-=back
-
-The rule of thumb is to use C<UTF-8> unless you know what
-you're doing and unless you really benefit from using C<UTF-16>.
-
- ISO-IR-165 [RFC1345]
- VISCII
- GB 12345
- GB 18030 (**) (see links bellow)
- EUC-TW (**)
-
-are totally valid encodings but not registered at IANA.
-The names under which they are listed here are probably the
-most widely-known names for these encodings and are recommended
-names.
-
- BIG5PLUS (**)
-
-is a proprietary name.
-
-=head2 Microsoft-related naming mess
-
-Microsoft products misuse the following names:
-
-=over 4
-
-=item KS_C_5601-1987
-
-Microsoft extension to C<EUC-KR>.
-
-Proper names: C<CP949>, C<UHC>, C<x-windows-949> (as used by Mozilla).
-
-See L<http://lists.w3.org/Archives/Public/ietf-charsets/2001AprJun/0033.html>
-for details.
-
-Encode aliases C<KS_C_5601-1987> to C<cp949> to reflect this common
-misusage. I<Raw> C<KS_C_5601-1987> encoding is available as
-C<kcs5601-raw>.
-
-See L<Encode::KR> for details.
-
-=item GB2312
-
-Microsoft extension to C<EUC-CN>.
-
-Proper names: C<CP936>, C<GBK>.
-
-C<GB2312> has been registered in the C<EUC-CN> meaning at
-IANA. This has partially repaired the situation: Microsoft's
-C<GB2312> has become a superset of the official C<GB2312>.
-
-Encode aliases C<GB2312> to C<euc-cn> in full agreement with
-IANA registration. C<cp936> is supported separately.
-I<Raw> C<GB_2312-80> encoding is available as C<gb2312-raw>.
-
-See L<Encode::CN> for details.
-
-=item Big5
-
-Microsoft extension to C<Big5>.
-
-Proper name: C<CP950>.
-
-Encode separately supports C<Big5> and C<cp950>.
-
-=item Shift_JIS
-
-Microsoft's understanding of C<Shift_JIS>.
-
-JIS has not endorsed the full Microsoft standard however.
-The official C<Shift_JIS> includes only JIS X 0201 and JIS X 0208
-character sets, while Microsoft has always used C<Shift_JIS>
-to encode a wider character repertoire. See C<IANA> registration for
-C<Windows-31J>.
-
-As a historical predecessor, Microsoft's variant
-probably has more rights for the name, though it may be objected
-that Microsoft shouldn't have used JIS as part of the name
-in the first place.
-
-Unambiguous name: C<CP932>. C<IANA> name (also used by Mozilla, and
-provided as an alias by Encode): C<Windows-31J>.
-
-Encode separately supports C<Shift_JIS> and C<cp932>.
-
-=back
-
-=head1 Glossary
-
-=over 4
-
-=item character repertoire
-
-A collection of unique characters. A I<character> set in the strictest
-sense. At this stage, characters are not numbered.
-
-=item coded character set (CCS)
-
-A character set that is mapped in a way computers can use directly.
-Many character encodings, including EUC, fall in this category.
-
-=item character encoding scheme (CES)
-
-An algorithm to map a character set to a byte sequence. You don't
-have to be able to tell which character set a given byte sequence
-belongs. 7-bit ISO-2022 is a CES but it cannot be a CCS. EUC is an
-example of being both a CCS and CES.
-
-=item charset (in MIME context)
-
-has long been used in the meaning of C<encoding>, CES.
-
-While the word combination C<character set> has lost this meaning
-in MIME context since [RFC 2130], the C<charset> abbreviation has
-retained it. This is how [RFC 2277] and [RFC 2278] bless C<charset>:
-
- This document uses the term "charset" to mean a set of rules for
- mapping from a sequence of octets to a sequence of characters, such
- as the combination of a coded character set and a character encoding
- scheme; this is also what is used as an identifier in MIME "charset="
- parameters, and registered in the IANA charset registry ... (Note
- that this is NOT a term used by other standards bodies, such as ISO).
- [RFC 2277]
-
-=item EUC
-
-Extended Unix Character. See ISO-2022.
-
-=item ISO-2022
-
-A CES that was carefully designed to coexist with ASCII. There are a 7
-bit version and an 8 bit version.
-
-The 7 bit version switches character set via escape sequence so it
-cannot form a CCS. Since this is more difficult to handle in programs
-than the 8 bit version, the 7 bit version is not very popular except for
-iso-2022-jp, the I<de facto> standard CES for e-mails.
-
-The 8 bit version can form a CCS. EUC and ISO-8859 are two examples
-thereof. Pre-5.6 perl could use them as string literals.
-
-=item UCS
-
-Short for I<Universal Character Set>. When you say just UCS, it means
-I<Unicode>.
-
-=item UCS-2
-
-ISO/IEC 10646 encoding form: Universal Character Set coded in two
-octets.
-
-=item Unicode
-
-A character set that aims to include all character repertoires of the
-world. Many character sets in various national as well as industrial
-standards have become, in a way, just subsets of Unicode.
-
-=item UTF
-
-Short for I<Unicode Transformation Format>. Determines how to map a
-Unicode character into a byte sequence.
-
-=item UTF-16
-
-A UTF in 16-bit encoding. Can either be in big endian or little
-endian. The big endian version is called UTF-16BE (equal to UCS-2 +
-surrogate support) and the little endian version is called UTF-16LE.
-
-=back
-
-=head1 See Also
-
-L<Encode>,
-L<Encode::Byte>,
-L<Encode::CN>, L<Encode::JP>, L<Encode::KR>, L<Encode::TW>,
-L<Encode::EBCDIC>, L<Encode::Symbol>
-L<Encode::MIME::Header>, L<Encode::Guess>
-
-=head1 References
-
-=over 4
-
-=item ECMA
-
-European Computer Manufacturers Association
-L<http://www.ecma.ch>
-
-=over 4
-
-=item ECMA-035 (eq C<ISO-2022>)
-
-L<http://www.ecma.ch/ecma1/STAND/ECMA-035.HTM>
-
-The specification of ISO-2022 is available from the link above.
-
-=back
-
-=item IANA
-
-Internet Assigned Numbers Authority
-L<http://www.iana.org/>
-
-=over 4
-
-=item Assigned Charset Names by IANA
-
-L<http://www.iana.org/assignments/character-sets>
-
-Most of the C<canonical names> in Encode derive from this list
-so you can directly apply the string you have extracted from MIME
-header of mails and web pages.
-
-=back
-
-=item ISO
-
-International Organization for Standardization
-L<http://www.iso.ch/>
-
-=item RFC
-
-Request For Comments -- need I say more?
-L<http://www.rfc-editor.org/>, L<http://www.rfc.net/>,
-L<http://www.faqs.org/rfcs/>
-
-=item UC
-
-Unicode Consortium
-L<http://www.unicode.org/>
-
-=over 4
-
-=item Unicode Glossary
-
-L<http://www.unicode.org/glossary/>
-
-The glossary of this document is based upon this site.
-
-=back
-
-=back
-
-=head2 Other Notable Sites
-
-=over 4
-
-=item czyborra.com
-
-L<http://czyborra.com/>
-
-Contains a lot of useful information, especially gory details of ISO
-vs. vendor mappings.
-
-=item CJK.inf
-
-L<http://www.oreilly.com/people/authors/lunde/cjk_inf.html>
-
-Somewhat obsolete (last update in 1996), but still useful. Also try
-
-L<ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/pdf/GB18030_Summary.pdf>
-
-You will find brief info on C<EUC-CN>, C<GBK> and mostly on C<GB 18030>.
-
-=item Jungshik Shin's Hangul FAQ
-
-L<http://jshin.net/faq>
-
-And especially its subject 8.
-
-L<http://jshin.net/faq/qa8.html>
-
-A comprehensive overview of the Korean (C<KS *>) standards.
-
-=item debian.org: "Introduction to i18n"
-
-A brief description for most of the mentioned CJK encodings is
-contained in
-L<http://www.debian.org/doc/manuals/intro-i18n/ch-codes.en.html>
-
-=back
-
-=head2 Offline sources
-
-=over 4
-
-=item C<CJKV Information Processing> by Ken Lunde
-
-CJKV Information Processing
-1999 O'Reilly & Associates, ISBN : 1-56592-224-7
-
-The modern successor of C<CJK.inf>.
-
-Features a comprehensive coverage of CJKV character sets and
-encodings along with many other issues faced by anyone trying
-to better support CJKV languages/scripts in all the areas of
-information processing.
-
-To purchase this book, visit
-L<http://www.oreilly.com/catalog/cjkvinfo/>
-or your favourite bookstore.
-
-=back
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode/Symbol.pm b/Master/tlpkg/tlperl/lib/Encode/Symbol.pm
deleted file mode 100644
index 7ad8ca92c7d..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/Symbol.pm
+++ /dev/null
@@ -1,42 +0,0 @@
-package Encode::Symbol;
-use Encode;
-our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
-
-use XSLoader;
-XSLoader::load(__PACKAGE__,$VERSION);
-
-1;
-__END__
-
-=head1 NAME
-
-Encode::Symbol - Symbol Encodings
-
-=head1 SYNOPSIS
-
- use Encode qw/encode decode/;
- $symbol = encode("symbol", $utf8); # loads Encode::Symbol implicitly
- $utf8 = decode("", $symbol); # ditto
-
-=head1 ABSTRACT
-
-This module implements symbol and dingbats encodings. Encodings
-supported are as follows.
-
- Canonical Alias Description
- --------------------------------------------------------------------
- symbol
- dingbats
- AdobeZDingbat
- AdobeSymbol
- MacDingbats
-
-=head1 DESCRIPTION
-
-To find out how to use this module in detail, see L<Encode>.
-
-=head1 SEE ALSO
-
-L<Encode>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode/TW.pm b/Master/tlpkg/tlperl/lib/Encode/TW.pm
deleted file mode 100644
index 2e1abc0c7f9..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/TW.pm
+++ /dev/null
@@ -1,78 +0,0 @@
-package Encode::TW;
-BEGIN {
- if (ord("A") == 193) {
- die "Encode::TW not supported on EBCDIC\n";
- }
-}
-our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
-
-use Encode;
-use XSLoader;
-XSLoader::load(__PACKAGE__,$VERSION);
-
-1;
-__END__
-
-=head1 NAME
-
-Encode::TW - Taiwan-based Chinese Encodings
-
-=head1 SYNOPSIS
-
- use Encode qw/encode decode/;
- $big5 = encode("big5", $utf8); # loads Encode::TW implicitly
- $utf8 = decode("big5", $big5); # ditto
-
-=head1 DESCRIPTION
-
-This module implements tradition Chinese charset encodings as used
-in Taiwan and Hong Kong.
-Encodings supported are as follows.
-
- Canonical Alias Description
- --------------------------------------------------------------------
- big5-eten /\bbig-?5$/i Big5 encoding (with ETen extensions)
- /\bbig5-?et(en)?$/i
- /\btca-?big5$/i
- big5-hkscs /\bbig5-?hk(scs)?$/i
- /\bhk(scs)?-?big5$/i
- Big5 + Cantonese characters in Hong Kong
- MacChineseTrad Big5 + Apple Vendor Mappings
- cp950 Code Page 950
- = Big5 + Microsoft vendor mappings
- --------------------------------------------------------------------
-
-To find out how to use this module in detail, see L<Encode>.
-
-=head1 NOTES
-
-Due to size concerns, C<EUC-TW> (Extended Unix Character), C<CCCII>
-(Chinese Character Code for Information Interchange), C<BIG5PLUS>
-(CMEX's Big5+) and C<BIG5EXT> (CMEX's Big5e) are distributed separately
-on CPAN, under the name L<Encode::HanExtra>. That module also contains
-extra China-based encodings.
-
-=head1 BUGS
-
-Since the original C<big5> encoding (1984) is not supported anywhere
-(glibc and DOS-based systems uses C<big5> to mean C<big5-eten>; Microsoft
-uses C<big5> to mean C<cp950>), a conscious decision was made to alias
-C<big5> to C<big5-eten>, which is the de facto superset of the original
-big5.
-
-The C<CNS11643> encoding files are not complete. For common C<CNS11643>
-manipulation, please use C<EUC-TW> in L<Encode::HanExtra>, which contains
-planes 1-7.
-
-The ASCII region (0x00-0x7f) is preserved for all encodings, even
-though this conflicts with mappings by the Unicode Consortium. See
-
-L<http://www.debian.or.jp/~kubota/unicode-symbols.html.en>
-
-to find out why it is implemented that way.
-
-=head1 SEE ALSO
-
-L<Encode>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode/Unicode.pm b/Master/tlpkg/tlperl/lib/Encode/Unicode.pm
deleted file mode 100644
index 4d0c31d82d3..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/Unicode.pm
+++ /dev/null
@@ -1,268 +0,0 @@
-package Encode::Unicode;
-
-use strict;
-use warnings;
-no warnings 'redefine';
-
-our $VERSION = do { my @r = (q$Revision: 2.2 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
-
-use XSLoader;
-XSLoader::load(__PACKAGE__,$VERSION);
-
-#
-# Object Generator 8 transcoders all at once!
-#
-
-require Encode;
-
-our %BOM_Unknown = map {$_ => 1} qw(UTF-16 UTF-32);
-
-for my $name (qw(UTF-16 UTF-16BE UTF-16LE
- UTF-32 UTF-32BE UTF-32LE
- UCS-2BE UCS-2LE))
-{
- my ($size, $endian, $ucs2, $mask);
- $name =~ /^(\w+)-(\d+)(\w*)$/o;
- if ($ucs2 = ($1 eq 'UCS')){
- $size = 2;
- }else{
- $size = $2/8;
- }
- $endian = ($3 eq 'BE') ? 'n' : ($3 eq 'LE') ? 'v' : '' ;
- $size == 4 and $endian = uc($endian);
-
- $Encode::Encoding{$name} =
- bless {
- Name => $name,
- size => $size,
- endian => $endian,
- ucs2 => $ucs2,
- } => __PACKAGE__;
-}
-
-use base qw(Encode::Encoding);
-
-sub renew {
- my $self = shift;
- $BOM_Unknown{$self->name} or return $self;
- my $clone = bless { %$self } => ref($self);
- $clone->{renewed}++; # so the caller knows it is renewed.
- return $clone;
-}
-
-# There used to be a perl implemntation of (en|de)code but with
-# XS version is ripe, perl version is zapped for optimal speed
-
-*decode = \&decode_xs;
-*encode = \&encode_xs;
-
-1;
-__END__
-
-=head1 NAME
-
-Encode::Unicode -- Various Unicode Transformation Formats
-
-=cut
-
-=head1 SYNOPSIS
-
- use Encode qw/encode decode/;
- $ucs2 = encode("UCS-2BE", $utf8);
- $utf8 = decode("UCS-2BE", $ucs2);
-
-=head1 ABSTRACT
-
-This module implements all Character Encoding Schemes of Unicode that
-are officially documented by Unicode Consortium (except, of course,
-for UTF-8, which is a native format in perl).
-
-=over 4
-
-=item L<http://www.unicode.org/glossary/> says:
-
-I<Character Encoding Scheme> A character encoding form plus byte
-serialization. There are Seven character encoding schemes in Unicode:
-UTF-8, UTF-16, UTF-16BE, UTF-16LE, UTF-32 (UCS-4), UTF-32BE (UCS-4BE) and
-UTF-32LE (UCS-4LE), and UTF-7.
-
-Since UTF-7 is a 7-bit (re)encoded version of UTF-16BE, It is not part of
-Unicode's Character Encoding Scheme. It is separately implemented in
-Encode::Unicode::UTF7. For details see L<Encode::Unicode::UTF7>.
-
-=item Quick Reference
-
- Decodes from ord(N) Encodes chr(N) to...
- octet/char BOM S.P d800-dfff ord > 0xffff \x{1abcd} ==
- ---------------+-----------------+------------------------------
- UCS-2BE 2 N N is bogus Not Available
- UCS-2LE 2 N N bogus Not Available
- UTF-16 2/4 Y Y is S.P S.P BE/LE
- UTF-16BE 2/4 N Y S.P S.P 0xd82a,0xdfcd
- UTF-16LE 2 N Y S.P S.P 0x2ad8,0xcddf
- UTF-32 4 Y - is bogus As is BE/LE
- UTF-32BE 4 N - bogus As is 0x0001abcd
- UTF-32LE 4 N - bogus As is 0xcdab0100
- UTF-8 1-4 - - bogus >= 4 octets \xf0\x9a\af\8d
- ---------------+-----------------+------------------------------
-
-=back
-
-=head1 Size, Endianness, and BOM
-
-You can categorize these CES by 3 criteria: size of each character,
-endianness, and Byte Order Mark.
-
-=head2 by size
-
-UCS-2 is a fixed-length encoding with each character taking 16 bits.
-It B<does not> support I<surrogate pairs>. When a surrogate pair
-is encountered during decode(), its place is filled with \x{FFFD}
-if I<CHECK> is 0, or the routine croaks if I<CHECK> is 1. When a
-character whose ord value is larger than 0xFFFF is encountered,
-its place is filled with \x{FFFD} if I<CHECK> is 0, or the routine
-croaks if I<CHECK> is 1.
-
-UTF-16 is almost the same as UCS-2 but it supports I<surrogate pairs>.
-When it encounters a high surrogate (0xD800-0xDBFF), it fetches the
-following low surrogate (0xDC00-0xDFFF) and C<desurrogate>s them to
-form a character. Bogus surrogates result in death. When \x{10000}
-or above is encountered during encode(), it C<ensurrogate>s them and
-pushes the surrogate pair to the output stream.
-
-UTF-32 (UCS-4) is a fixed-length encoding with each character taking 32 bits.
-Since it is 32-bit, there is no need for I<surrogate pairs>.
-
-=head2 by endianness
-
-The first (and now failed) goal of Unicode was to map all character
-repertoires into a fixed-length integer so that programmers are happy.
-Since each character is either a I<short> or I<long> in C, you have to
-pay attention to the endianness of each platform when you pass data
-to one another.
-
-Anything marked as BE is Big Endian (or network byte order) and LE is
-Little Endian (aka VAX byte order). For anything not marked either
-BE or LE, a character called Byte Order Mark (BOM) indicating the
-endianness is prepended to the string.
-
-CAVEAT: Though BOM in utf8 (\xEF\xBB\xBF) is valid, it is meaningless
-and as of this writing Encode suite just leave it as is (\x{FeFF}).
-
-=over 4
-
-=item BOM as integer when fetched in network byte order
-
- 16 32 bits/char
- -------------------------
- BE 0xFeFF 0x0000FeFF
- LE 0xFFeF 0xFFFe0000
- -------------------------
-
-=back
-
-This modules handles the BOM as follows.
-
-=over 4
-
-=item *
-
-When BE or LE is explicitly stated as the name of encoding, BOM is
-simply treated as a normal character (ZERO WIDTH NO-BREAK SPACE).
-
-=item *
-
-When BE or LE is omitted during decode(), it checks if BOM is at the
-beginning of the string; if one is found, the endianness is set to
-what the BOM says. If no BOM is found, the routine dies.
-
-=item *
-
-When BE or LE is omitted during encode(), it returns a BE-encoded
-string with BOM prepended. So when you want to encode a whole text
-file, make sure you encode() the whole text at once, not line by line
-or each line, not file, will have a BOM prepended.
-
-=item *
-
-C<UCS-2> is an exception. Unlike others, this is an alias of UCS-2BE.
-UCS-2 is already registered by IANA and others that way.
-
-=back
-
-=head1 Surrogate Pairs
-
-To say the least, surrogate pairs were the biggest mistake of the
-Unicode Consortium. But according to the late Douglas Adams in I<The
-Hitchhiker's Guide to the Galaxy> Trilogy, C<In the beginning the
-Universe was created. This has made a lot of people very angry and
-been widely regarded as a bad move>. Their mistake was not of this
-magnitude so let's forgive them.
-
-(I don't dare make any comparison with Unicode Consortium and the
-Vogons here ;) Or, comparing Encode to Babel Fish is completely
-appropriate -- if you can only stick this into your ear :)
-
-Surrogate pairs were born when the Unicode Consortium finally
-admitted that 16 bits were not big enough to hold all the world's
-character repertoires. But they already made UCS-2 16-bit. What
-do we do?
-
-Back then, the range 0xD800-0xDFFF was not allocated. Let's split
-that range in half and use the first half to represent the C<upper
-half of a character> and the second half to represent the C<lower
-half of a character>. That way, you can represent 1024 * 1024 =
-1048576 more characters. Now we can store character ranges up to
-\x{10ffff} even with 16-bit encodings. This pair of half-character is
-now called a I<surrogate pair> and UTF-16 is the name of the encoding
-that embraces them.
-
-Here is a formula to ensurrogate a Unicode character \x{10000} and
-above;
-
- $hi = ($uni - 0x10000) / 0x400 + 0xD800;
- $lo = ($uni - 0x10000) % 0x400 + 0xDC00;
-
-And to desurrogate;
-
- $uni = 0x10000 + ($hi - 0xD800) * 0x400 + ($lo - 0xDC00);
-
-Note this move has made \x{D800}-\x{DFFF} into a forbidden zone but
-perl does not prohibit the use of characters within this range. To perl,
-every one of \x{0000_0000} up to \x{ffff_ffff} (*) is I<a character>.
-
- (*) or \x{ffff_ffff_ffff_ffff} if your perl is compiled with 64-bit
- integer support!
-
-=head1 Error Checking
-
-Unlike most encodings which accept various ways to handle errors,
-Unicode encodings simply croaks.
-
- % perl -MEncode -e '$_ = "\xfe\xff\xd8\xd9\xda\xdb\0\n"' \
- -e 'Encode::from_to($_, "utf16","shift_jis", 0); print'
- UTF-16:Malformed LO surrogate d8d9 at /path/to/Encode.pm line 184.
- % perl -MEncode -e '$a = "BOM missing"' \
- -e ' Encode::from_to($a, "utf16", "shift_jis", 0); print'
- UTF-16:Unrecognised BOM 424f at /path/to/Encode.pm line 184.
-
-Unlike other encodings where mappings are not one-to-one against
-Unicode, UTFs are supposed to map 100% against one another. So Encode
-is more strict on UTFs.
-
-Consider that "division by zero" of Encode :)
-
-=head1 SEE ALSO
-
-L<Encode>, L<Encode::Unicode::UTF7>, L<http://www.unicode.org/glossary/>,
-L<http://www.unicode.org/unicode/faq/utf_bom.html>,
-
-RFC 2781 L<http://rfc.net/rfc2781.html>,
-
-The whole Unicode standard L<http://www.unicode.org/unicode/uni2book/u2.html>
-
-Ch. 15, pp. 403 of C<Programming Perl (3rd Edition)>
-by Larry Wall, Tom Christiansen, Jon Orwant;
-O'Reilly & Associates; ISBN 0-596-00027-8
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode/Unicode/UTF7.pm b/Master/tlpkg/tlperl/lib/Encode/Unicode/UTF7.pm
deleted file mode 100644
index dc75ce37816..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/Unicode/UTF7.pm
+++ /dev/null
@@ -1,118 +0,0 @@
-#
-# $Id: UTF7.pm,v 2.1 2004/05/25 16:27:14 dankogai Exp $
-#
-package Encode::Unicode::UTF7;
-use strict;
-no warnings 'redefine';
-use base qw(Encode::Encoding);
-__PACKAGE__->Define('UTF-7');
-our $VERSION = do { my @r = (q$Revision: 2.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
-use MIME::Base64;
-use Encode;
-
-#
-# Algorithms taken from Unicode::String by Gisle Aas
-#
-
-our $OPTIONAL_DIRECT_CHARS = 1;
-my $specials = quotemeta "\'(),-./:?";
-$OPTIONAL_DIRECT_CHARS and
- $specials .= quotemeta "!\"#$%&*;<=>@[]^_`{|}";
-# \s will not work because it matches U+3000 DEOGRAPHIC SPACE
-# We use qr/[\n\r\t\ ] instead
-my $re_asis = qr/(?:[\n\r\t\ A-Za-z0-9$specials])/;
-my $re_encoded = qr/(?:[^\n\r\t\ A-Za-z0-9$specials])/;
-my $e_utf16 = find_encoding("UTF-16BE");
-
-sub needs_lines { 1 };
-
-sub encode($$;$){
- my ($obj, $str, $chk) = @_;
- my $len = length($str);
- pos($str) = 0;
- my $bytes = '';
- while (pos($str) < $len){
- if ($str =~ /\G($re_asis+)/ogc){
- $bytes .= $1;
- }elsif($str =~ /\G($re_encoded+)/ogsc){
- if ($1 eq "+"){
- $bytes .= "+-";
- }else{
- my $s = $1;
- my $base64 = encode_base64($e_utf16->encode($s), '');
- $base64 =~ s/=+$//;
- $bytes .= "+$base64-";
- }
- }else{
- die "This should not happen! (pos=" . pos($str) . ")";
- }
- }
- $_[1] = '' if $chk;
- return $bytes;
-}
-
-sub decode{
- my ($obj, $bytes, $chk) = @_;
- my $len = length($bytes);
- my $str = "";
- while (pos($bytes) < $len) {
- if ($bytes =~ /\G([^+]+)/ogc) {
- $str .= $1;
- }elsif($bytes =~ /\G\+-/ogc) {
- $str .= "+";
- }elsif($bytes =~ /\G\+([A-Za-z0-9+\/]+)-?/ogsc) {
- my $base64 = $1;
- my $pad = length($base64) % 4;
- $base64 .= "=" x (4 - $pad) if $pad;
- $str .= $e_utf16->decode(decode_base64($base64));
- }elsif($bytes =~ /\G\+/ogc) {
- $^W and warn "Bad UTF7 data escape";
- $str .= "+";
- }else{
- die "This should not happen " . pos($bytes);
- }
- }
- $_[1] = '' if $chk;
- return $str;
-}
-1;
-__END__
-
-=head1 NAME
-
-Encode::Unicode::UTF7 -- UTF-7 encoding
-
-=head1 SYNOPSIS
-
- use Encode qw/encode decode/;
- $utf7 = encode("UTF-7", $utf8);
- $utf8 = decode("UTF-7", $ucs2);
-
-=head1 ABSTRACT
-
-This module implements UTF-7 encoding documented in RFC 2152. UTF-7,
-as its name suggests, is a 7-bit re-encoded version of UTF-16BE. It
-is designed to be MTA-safe and expected to be a standard way to
-exchange Unicoded mails via mails. But with the advent of UTF-8 and
-8-bit compliant MTAs, UTF-7 is hardly ever used.
-
-UTF-7 was not supported by Encode until version 1.95 because of that.
-But Unicode::String, a module by Gisle Aas which adds Unicode supports
-to non-utf8-savvy perl did support UTF-7, the UTF-7 support was added
-so Encode can supersede Unicode::String 100%.
-
-=head1 In Practice
-
-When you want to encode Unicode for mails and web pages, however, do
-not use UTF-7 unless you are sure your recipients and readers can
-handle it. Very few MUAs and WWW Browsers support these days (only
-Mozilla seems to support one). For general cases, use UTF-8 for
-message body and MIME-Header for header instead.
-
-=head1 SEE ALSO
-
-L<Encode>, L<Encode::Unicode>, L<Unicode::String>
-
-RFC 2781 L<http://www.ietf.org/rfc/rfc2152.txt>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode/_PM.e2x b/Master/tlpkg/tlperl/lib/Encode/_PM.e2x
deleted file mode 100644
index eb59cd1b520..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/_PM.e2x
+++ /dev/null
@@ -1,23 +0,0 @@
-package Encode::$_Name_;
-our $VERSION = "0.01";
-
-use Encode;
-use XSLoader;
-XSLoader::load(__PACKAGE__,$VERSION);
-
-1;
-__END__
-
-=head1 NAME
-
-Encode::$_Name_ - New Encoding
-
-=head1 SYNOPSIS
-
-You got to fill this in!
-
-=head1 SEE ALSO
-
-L<Encode>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Encode/_T.e2x b/Master/tlpkg/tlperl/lib/Encode/_T.e2x
deleted file mode 100644
index 6cf5f293d54..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/_T.e2x
+++ /dev/null
@@ -1,7 +0,0 @@
-use strict;
-# Adjust the number here!
-use Test::More tests => 2;
-
-use_ok('Encode');
-use_ok('Encode::$_Name_');
-# Add more test here!
diff --git a/Master/tlpkg/tlperl/lib/Encode/encode.h b/Master/tlpkg/tlperl/lib/Encode/encode.h
deleted file mode 100644
index 94764a6a14c..00000000000
--- a/Master/tlpkg/tlperl/lib/Encode/encode.h
+++ /dev/null
@@ -1,111 +0,0 @@
-#ifndef ENCODE_H
-#define ENCODE_H
-
-#ifndef U8
-/*
- A tad devious this:
- perl normally has a #define for U8 - if that isn't present then we
- typedef it - leaving it #ifndef so we can do data parts without
- getting extern references to the code parts
-*/
-typedef unsigned char U8;
-#endif
-
-typedef struct encpage_s encpage_t;
-
-struct encpage_s
-{
- /* fields ordered to pack nicely on 32-bit machines */
- const U8 *seq; /* Packed output sequences we generate
- if we match */
- encpage_t *next; /* Page to go to if we match */
- U8 min; /* Min value of octet to match this entry */
- U8 max; /* Max value of octet to match this entry */
- U8 dlen; /* destination length -
- size of entries in seq */
- U8 slen; /* source length -
- number of source octets needed */
-};
-
-/*
- At any point in a translation there is a page pointer which points
- at an array of the above structures.
-
- Basic operation :
- get octet from source stream.
- if (octet >= min && octet < max) {
- if slen is 0 then we cannot represent this character.
- if we have less than slen octets (including this one) then
- we have a partial character.
- otherwise
- copy dlen octets from seq + dlen*(octet-min) to output
- (dlen may be zero if we don't know yet.)
- load page pointer with next to continue.
- (is slen is one this is end of a character)
- get next octet.
- }
- else {
- increment the page pointer to look at next slot in the array
- }
-
- arrays SHALL be constructed so there is an entry which matches
- ..0xFF at the end, and either maps it or indicates no
- representation.
-
- if MSB of slen is set then mapping is an approximate "FALLBACK" entry.
-
-*/
-
-
-typedef struct encode_s encode_t;
-struct encode_s
-{
- encpage_t *t_utf8; /* Starting table for translation from
- the encoding to UTF-8 form */
- encpage_t *f_utf8; /* Starting table for translation
- from UTF-8 to the encoding */
- const U8 *rep; /* Replacement character in this encoding
- e.g. "?" */
- int replen; /* Number of octets in rep */
- U8 min_el; /* Minimum octets to represent a character */
- U8 max_el; /* Maximum octets to represent a character */
- const char *name[2]; /* name(s) of this encoding */
-};
-
-#ifdef U8
-/* See comment at top of file for deviousness */
-
-extern int do_encode(encpage_t *enc, const U8 *src, STRLEN *slen,
- U8 *dst, STRLEN dlen, STRLEN *dout, int approx,
- const U8 *term, STRLEN tlen);
-
-extern void Encode_DefineEncoding(encode_t *enc);
-
-#endif /* U8 */
-
-#define ENCODE_NOSPACE 1
-#define ENCODE_PARTIAL 2
-#define ENCODE_NOREP 3
-#define ENCODE_FALLBACK 4
-#define ENCODE_FOUND_TERM 5
-
-#define FBCHAR_UTF8 "\xEF\xBF\xBD"
-
-#define ENCODE_DIE_ON_ERR 0x0001 /* croaks immediately */
-#define ENCODE_WARN_ON_ERR 0x0002 /* warn on error; may proceed */
-#define ENCODE_RETURN_ON_ERR 0x0004 /* immediately returns on NOREP */
-#define ENCODE_LEAVE_SRC 0x0008 /* $src updated unless set */
-#define ENCODE_PERLQQ 0x0100 /* perlqq fallback string */
-#define ENCODE_HTMLCREF 0x0200 /* HTML character ref. fb mode */
-#define ENCODE_XMLCREF 0x0400 /* XML character ref. fb mode */
-#define ENCODE_STOP_AT_PARTIAL 0x0800 /* stop at partial explicitly */
-
-#define ENCODE_FB_DEFAULT 0x0000
-#define ENCODE_FB_CROAK 0x0001
-#define ENCODE_FB_QUIET ENCODE_RETURN_ON_ERR
-#define ENCODE_FB_WARN (ENCODE_RETURN_ON_ERR|ENCODE_WARN_ON_ERR)
-#define ENCODE_FB_PERLQQ (ENCODE_PERLQQ|ENCODE_LEAVE_SRC)
-#define ENCODE_FB_HTMLCREF (ENCODE_HTMLCREF|ENCODE_LEAVE_SRC)
-#define ENCODE_FB_XMLCREF (ENCODE_XMLCREF|ENCODE_LEAVE_SRC)
-
-#endif /* ENCODE_H */
diff --git a/Master/tlpkg/tlperl/lib/Errno.pm b/Master/tlpkg/tlperl/lib/Errno.pm
deleted file mode 100644
index 23c07ea0482..00000000000
--- a/Master/tlpkg/tlperl/lib/Errno.pm
+++ /dev/null
@@ -1,227 +0,0 @@
-#
-# This file is auto-generated. ***ANY*** changes here will be lost
-#
-
-package Errno;
-our (@EXPORT_OK,%EXPORT_TAGS,@ISA,$VERSION,%errno,$AUTOLOAD);
-use Exporter ();
-use strict;
-
-$VERSION = "1.09_01";
-$VERSION = eval $VERSION;
-@ISA = qw(Exporter);
-
-@EXPORT_OK = qw(EBADR ENOMSG ENOTSUP ESTRPIPE EADDRINUSE EL3HLT EBADF
- ENOTBLK ENAVAIL ECHRNG ENOTNAM ELNRNG ENOKEY EXDEV EBADE EBADSLT
- ECONNREFUSED ENOSTR ENONET EOVERFLOW EISCONN EFBIG EKEYREVOKED
- ECONNRESET EWOULDBLOCK ELIBMAX EREMOTEIO ENOPKG ELIBSCN EDESTADDRREQ
- ENOTSOCK EIO EMEDIUMTYPE EINPROGRESS ERANGE EAFNOSUPPORT EADDRNOTAVAIL
- EINTR EREMOTE EILSEQ ENOMEM EPIPE ENETUNREACH ENODATA EUSERS
- EOPNOTSUPP EPROTO EISNAM ESPIPE EALREADY ENAMETOOLONG ENOEXEC EISDIR
- EBADRQC EEXIST EDOTDOT ELIBBAD EOWNERDEAD ESRCH EFAULT EXFULL
- EDEADLOCK EAGAIN ENOPROTOOPT ENETDOWN EPROTOTYPE EL2NSYNC ENETRESET
- EUCLEAN EADV EROFS ESHUTDOWN EMULTIHOP EPROTONOSUPPORT ENFILE ENOLCK
- ECONNABORTED ECANCELED EDEADLK ESRMNT ENOLINK ETIME ENOTDIR EINVAL
- ENOTTY ENOANO ELOOP ENOENT EPFNOSUPPORT EBADMSG ENOMEDIUM EL2HLT EDOM
- EBFONT EKEYEXPIRED EMSGSIZE ENOCSI EL3RST ENOSPC EIDRM ENOBUFS ENOSYS
- EHOSTDOWN EBADFD ENOSR ENOTCONN ESTALE EDQUOT EKEYREJECTED EMFILE
- ENOTRECOVERABLE EACCES EBUSY E2BIG EPERM ELIBEXEC ETOOMANYREFS ELIBACC
- ENOTUNIQ ECOMM ERESTART ESOCKTNOSUPPORT EUNATCH ETIMEDOUT ENXIO ENODEV
- ETXTBSY EMLINK ECHILD EHOSTUNREACH EREMCHG ENOTEMPTY);
-
-%EXPORT_TAGS = (
- POSIX => [qw(
- E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT EAGAIN EALREADY
- EBADF EBUSY ECHILD ECONNABORTED ECONNREFUSED ECONNRESET EDEADLK
- EDESTADDRREQ EDOM EDQUOT EEXIST EFAULT EFBIG EHOSTDOWN EHOSTUNREACH
- EINPROGRESS EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK
- EMSGSIZE ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH ENFILE ENOBUFS
- ENODEV ENOENT ENOEXEC ENOLCK ENOMEM ENOPROTOOPT ENOSPC ENOSYS ENOTBLK
- ENOTCONN ENOTDIR ENOTEMPTY ENOTSOCK ENOTTY ENXIO EOPNOTSUPP EPERM
- EPFNOSUPPORT EPIPE EPROTONOSUPPORT EPROTOTYPE ERANGE EREMOTE ERESTART
- EROFS ESHUTDOWN ESOCKTNOSUPPORT ESPIPE ESRCH ESTALE ETIMEDOUT
- ETOOMANYREFS ETXTBSY EUSERS EWOULDBLOCK EXDEV
- )]
-);
-
-sub EPERM () { 1 }
-sub ENOENT () { 2 }
-sub ESRCH () { 3 }
-sub EINTR () { 4 }
-sub EIO () { 5 }
-sub ENXIO () { 6 }
-sub E2BIG () { 7 }
-sub ENOEXEC () { 8 }
-sub EBADF () { 9 }
-sub ECHILD () { 10 }
-sub EWOULDBLOCK () { 11 }
-sub EAGAIN () { 11 }
-sub ENOMEM () { 12 }
-sub EACCES () { 13 }
-sub EFAULT () { 14 }
-sub ENOTBLK () { 15 }
-sub EBUSY () { 16 }
-sub EEXIST () { 17 }
-sub EXDEV () { 18 }
-sub ENODEV () { 19 }
-sub ENOTDIR () { 20 }
-sub EISDIR () { 21 }
-sub EINVAL () { 22 }
-sub ENFILE () { 23 }
-sub EMFILE () { 24 }
-sub ENOTTY () { 25 }
-sub ETXTBSY () { 26 }
-sub EFBIG () { 27 }
-sub ENOSPC () { 28 }
-sub ESPIPE () { 29 }
-sub EROFS () { 30 }
-sub EMLINK () { 31 }
-sub EPIPE () { 32 }
-sub EDOM () { 33 }
-sub ERANGE () { 34 }
-sub EDEADLOCK () { 35 }
-sub EDEADLK () { 35 }
-sub ENAMETOOLONG () { 36 }
-sub ENOLCK () { 37 }
-sub ENOSYS () { 38 }
-sub ENOTEMPTY () { 39 }
-sub ELOOP () { 40 }
-sub ENOMSG () { 42 }
-sub EIDRM () { 43 }
-sub ECHRNG () { 44 }
-sub EL2NSYNC () { 45 }
-sub EL3HLT () { 46 }
-sub EL3RST () { 47 }
-sub ELNRNG () { 48 }
-sub EUNATCH () { 49 }
-sub ENOCSI () { 50 }
-sub EL2HLT () { 51 }
-sub EBADE () { 52 }
-sub EBADR () { 53 }
-sub EXFULL () { 54 }
-sub ENOANO () { 55 }
-sub EBADRQC () { 56 }
-sub EBADSLT () { 57 }
-sub EBFONT () { 59 }
-sub ENOSTR () { 60 }
-sub ENODATA () { 61 }
-sub ETIME () { 62 }
-sub ENOSR () { 63 }
-sub ENONET () { 64 }
-sub ENOPKG () { 65 }
-sub EREMOTE () { 66 }
-sub ENOLINK () { 67 }
-sub EADV () { 68 }
-sub ESRMNT () { 69 }
-sub ECOMM () { 70 }
-sub EPROTO () { 71 }
-sub EMULTIHOP () { 72 }
-sub EDOTDOT () { 73 }
-sub EBADMSG () { 74 }
-sub EOVERFLOW () { 75 }
-sub ENOTUNIQ () { 76 }
-sub EBADFD () { 77 }
-sub EREMCHG () { 78 }
-sub ELIBACC () { 79 }
-sub ELIBBAD () { 80 }
-sub ELIBSCN () { 81 }
-sub ELIBMAX () { 82 }
-sub ELIBEXEC () { 83 }
-sub EILSEQ () { 84 }
-sub ERESTART () { 85 }
-sub ESTRPIPE () { 86 }
-sub EUSERS () { 87 }
-sub ENOTSOCK () { 88 }
-sub EDESTADDRREQ () { 89 }
-sub EMSGSIZE () { 90 }
-sub EPROTOTYPE () { 91 }
-sub ENOPROTOOPT () { 92 }
-sub EPROTONOSUPPORT () { 93 }
-sub ESOCKTNOSUPPORT () { 94 }
-sub ENOTSUP () { 95 }
-sub EOPNOTSUPP () { 95 }
-sub EPFNOSUPPORT () { 96 }
-sub EAFNOSUPPORT () { 97 }
-sub EADDRINUSE () { 98 }
-sub EADDRNOTAVAIL () { 99 }
-sub ENETDOWN () { 100 }
-sub ENETUNREACH () { 101 }
-sub ENETRESET () { 102 }
-sub ECONNABORTED () { 103 }
-sub ECONNRESET () { 104 }
-sub ENOBUFS () { 105 }
-sub EISCONN () { 106 }
-sub ENOTCONN () { 107 }
-sub ESHUTDOWN () { 108 }
-sub ETOOMANYREFS () { 109 }
-sub ETIMEDOUT () { 110 }
-sub ECONNREFUSED () { 111 }
-sub EHOSTDOWN () { 112 }
-sub EHOSTUNREACH () { 113 }
-sub EALREADY () { 114 }
-sub EINPROGRESS () { 115 }
-sub ESTALE () { 116 }
-sub EUCLEAN () { 117 }
-sub ENOTNAM () { 118 }
-sub ENAVAIL () { 119 }
-sub EISNAM () { 120 }
-sub EREMOTEIO () { 121 }
-sub EDQUOT () { 122 }
-sub ENOMEDIUM () { 123 }
-sub EMEDIUMTYPE () { 124 }
-sub ECANCELED () { 125 }
-sub ENOKEY () { 126 }
-sub EKEYEXPIRED () { 127 }
-sub EKEYREVOKED () { 128 }
-sub EKEYREJECTED () { 129 }
-sub EOWNERDEAD () { 130 }
-sub ENOTRECOVERABLE () { 131 }
-
-sub TIEHASH { bless [] }
-
-sub FETCH {
- my ($self, $errname) = @_;
- my $proto = prototype("Errno::$errname");
- my $errno = "";
- if (defined($proto) && $proto eq "") {
- no strict 'refs';
- $errno = &$errname;
- $errno = 0 unless $! == $errno;
- }
- return $errno;
-}
-
-sub STORE {
- require Carp;
- Carp::confess("ERRNO hash is read only!");
-}
-
-*CLEAR = \&STORE;
-*DELETE = \&STORE;
-
-sub NEXTKEY {
- my($k,$v);
- while(($k,$v) = each %Errno::) {
- my $proto = prototype("Errno::$k");
- last if (defined($proto) && $proto eq "");
- }
- $k
-}
-
-sub FIRSTKEY {
- my $s = scalar keys %Errno::; # initialize iterator
- goto &NEXTKEY;
-}
-
-sub EXISTS {
- my ($self, $errname) = @_;
- my $r = ref $errname;
- my $proto = !$r || $r eq 'CODE' ? prototype($errname) : undef;
- defined($proto) && $proto eq "";
-}
-
-tie %!, __PACKAGE__;
-
-1;
-__END__
-
diff --git a/Master/tlpkg/tlperl/lib/Exporter.pm b/Master/tlpkg/tlperl/lib/Exporter.pm
deleted file mode 100644
index d9c22049776..00000000000
--- a/Master/tlpkg/tlperl/lib/Exporter.pm
+++ /dev/null
@@ -1,440 +0,0 @@
-package Exporter;
-
-require 5.006;
-
-# Be lean.
-#use strict;
-#no strict 'refs';
-
-our $Debug = 0;
-our $ExportLevel = 0;
-our $Verbose ||= 0;
-our $VERSION = '5.58';
-our (%Cache);
-$Carp::Internal{Exporter} = 1;
-
-sub as_heavy {
- require Exporter::Heavy;
- # Unfortunately, this does not work if the caller is aliased as *name = \&foo
- # Thus the need to create a lot of identical subroutines
- my $c = (caller(1))[3];
- $c =~ s/.*:://;
- \&{"Exporter::Heavy::heavy_$c"};
-}
-
-sub export {
- goto &{as_heavy()};
-}
-
-sub import {
- my $pkg = shift;
- my $callpkg = caller($ExportLevel);
-
- if ($pkg eq "Exporter" and @_ and $_[0] eq "import") {
- *{$callpkg."::import"} = \&import;
- return;
- }
-
- # We *need* to treat @{"$pkg\::EXPORT_FAIL"} since Carp uses it :-(
- my($exports, $fail) = (\@{"$pkg\::EXPORT"}, \@{"$pkg\::EXPORT_FAIL"});
- return export $pkg, $callpkg, @_
- if $Verbose or $Debug or @$fail > 1;
- my $export_cache = ($Cache{$pkg} ||= {});
- my $args = @_ or @_ = @$exports;
-
- local $_;
- if ($args and not %$export_cache) {
- s/^&//, $export_cache->{$_} = 1
- foreach (@$exports, @{"$pkg\::EXPORT_OK"});
- }
- my $heavy;
- # Try very hard not to use {} and hence have to enter scope on the foreach
- # We bomb out of the loop with last as soon as heavy is set.
- if ($args or $fail) {
- ($heavy = (/\W/ or $args and not exists $export_cache->{$_}
- or @$fail and $_ eq $fail->[0])) and last
- foreach (@_);
- } else {
- ($heavy = /\W/) and last
- foreach (@_);
- }
- return export $pkg, $callpkg, ($args ? @_ : ()) if $heavy;
- local $SIG{__WARN__} =
- sub {require Carp; &Carp::carp};
- # shortcut for the common case of no type character
- *{"$callpkg\::$_"} = \&{"$pkg\::$_"} foreach @_;
-}
-
-# Default methods
-
-sub export_fail {
- my $self = shift;
- @_;
-}
-
-# Unfortunately, caller(1)[3] "does not work" if the caller is aliased as
-# *name = \&foo. Thus the need to create a lot of identical subroutines
-# Otherwise we could have aliased them to export().
-
-sub export_to_level {
- goto &{as_heavy()};
-}
-
-sub export_tags {
- goto &{as_heavy()};
-}
-
-sub export_ok_tags {
- goto &{as_heavy()};
-}
-
-sub require_version {
- goto &{as_heavy()};
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Exporter - Implements default import method for modules
-
-=head1 SYNOPSIS
-
-In module YourModule.pm:
-
- package YourModule;
- require Exporter;
- @ISA = qw(Exporter);
- @EXPORT_OK = qw(munge frobnicate); # symbols to export on request
-
-or
-
- package YourModule;
- use Exporter 'import'; # gives you Exporter's import() method directly
- @EXPORT_OK = qw(munge frobnicate); # symbols to export on request
-
-In other files which wish to use YourModule:
-
- use ModuleName qw(frobnicate); # import listed symbols
- frobnicate ($left, $right) # calls YourModule::frobnicate
-
-=head1 DESCRIPTION
-
-The Exporter module implements an C<import> method which allows a module
-to export functions and variables to its users' namespaces. Many modules
-use Exporter rather than implementing their own C<import> method because
-Exporter provides a highly flexible interface, with an implementation optimised
-for the common case.
-
-Perl automatically calls the C<import> method when processing a
-C<use> statement for a module. Modules and C<use> are documented
-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
-
-If you are only exporting function names it is recommended to omit the
-ampersand, as the implementation is faster this way.
-
-=head2 Selecting What To Export
-
-Do B<not> export method names!
-
-Do B<not> export anything else by default without a good reason!
-
-Exports pollute the namespace of the module user. If you must export
-try to use @EXPORT_OK in preference to @EXPORT and avoid short or
-common symbol names to reduce the risk of name clashes.
-
-Generally anything not exported is still accessible from outside the
-module using the ModuleName::item_name (or $blessed_ref-E<gt>method)
-syntax. By convention you can use a leading underscore on names to
-informally indicate that they are 'internal' and not for public use.
-
-(It is actually possible to get private functions by saying:
-
- my $subref = sub { ... };
- $subref->(@args); # Call it as a function
- $obj->$subref(@args); # Use it as a method
-
-However if you use them for methods it is up to you to figure out
-how to make inheritance work.)
-
-As a general rule, if the module is trying to be object oriented
-then export nothing. If it's just a collection of functions then
-@EXPORT_OK anything but use @EXPORT with caution. For function and
-method names use barewords in preference to names prefixed with
-ampersands for the export lists.
-
-Other module design guidelines can be found in L<perlmod>.
-
-=head2 How to Import
-
-In other files which wish to use your module there are three basic ways for
-them to load your module and import its symbols:
-
-=over 4
-
-=item C<use ModuleName;>
-
-This imports all the symbols from ModuleName's @EXPORT into the namespace
-of the C<use> statement.
-
-=item C<use ModuleName ();>
-
-This causes perl to load your module but does not import any symbols.
-
-=item C<use ModuleName qw(...);>
-
-This imports only the symbols listed by the caller into their namespace.
-All listed symbols must be in your @EXPORT or @EXPORT_OK, else an error
-occurs. The advanced export features of Exporter are accessed like this,
-but with list entries that are syntactically distinct from symbol names.
-
-=back
-
-Unless you want to use its advanced features, this is probably all you
-need to know to use Exporter.
-
-=head1 Advanced features
-
-=head2 Specialised Import Lists
-
-If any of the entries in an import list begins with !, : or / then
-the list is treated as a series of specifications which either add to
-or delete from the list of names to import. They are processed left to
-right. Specifications are in the form:
-
- [!]name This name only
- [!]:DEFAULT All names in @EXPORT
- [!]:tag All names in $EXPORT_TAGS{tag} anonymous list
- [!]/pattern/ All names in @EXPORT and @EXPORT_OK which match
-
-A leading ! indicates that matching names should be deleted from the
-list of names to import. If the first specification is a deletion it
-is treated as though preceded by :DEFAULT. If you just want to import
-extra names in addition to the default set you will still need to
-include :DEFAULT explicitly.
-
-e.g., Module.pm defines:
-
- @EXPORT = qw(A1 A2 A3 A4 A5);
- @EXPORT_OK = qw(B1 B2 B3 B4 B5);
- %EXPORT_TAGS = (T1 => [qw(A1 A2 B1 B2)], T2 => [qw(A1 A2 B3 B4)]);
-
- Note that you cannot use tags in @EXPORT or @EXPORT_OK.
- Names in EXPORT_TAGS must also appear in @EXPORT or @EXPORT_OK.
-
-An application using Module can say something like:
-
- use Module qw(:DEFAULT :T2 !B3 A3);
-
-Other examples include:
-
- use Socket qw(!/^[AP]F_/ !SOMAXCONN !SOL_SOCKET);
- use POSIX qw(:errno_h :termios_h !TCSADRAIN !/^EXIT/);
-
-Remember that most patterns (using //) will need to be anchored
-with a leading ^, e.g., C</^EXIT/> rather than C</EXIT/>.
-
-You can say C<BEGIN { $Exporter::Verbose=1 }> to see how the
-specifications are being processed and what is actually being imported
-into modules.
-
-=head2 Exporting without using Exporter's import method
-
-Exporter has a special method, 'export_to_level' which is used in situations
-where you can't directly call Exporter's import method. The export_to_level
-method looks like:
-
- 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 @_). The $package argument is
-currently unused.
-
-For example, suppose that you have a module, A, which already has an
-import function:
-
- package A;
-
- @ISA = qw(Exporter);
- @EXPORT_OK = qw ($b);
-
- sub import
- {
- $A::b = 1; # not a very useful import method
- }
-
-and you want to Export symbol $A::b back to the module that called
-package A. Since Exporter relies on the import method to work, via
-inheritance, as it stands Exporter::import() will never get called.
-Instead, say the following:
-
- package A;
- @ISA = qw(Exporter);
- @EXPORT_OK = qw ($b);
-
- sub import
- {
- $A::b = 1;
- A->export_to_level(1, @_);
- }
-
-This will export the symbols one level 'above' the current package - ie: to
-the program or module that used package A.
-
-Note: Be careful not to modify C<@_> at all before you call export_to_level
-- or people using your package will get very unexplained results!
-
-=head2 Exporting without inheriting from Exporter
-
-By including Exporter in your @ISA you inherit an Exporter's import() method
-but you also inherit several other helper methods which you probably don't
-want. To avoid this you can do
-
- package YourModule;
- use Exporter qw( import );
-
-which will export Exporter's own import() method into YourModule.
-Everything will work as before but you won't need to include Exporter in
-@YourModule::ISA.
-
-=head2 Module Version Checking
-
-The Exporter module will convert an attempt to import a number from a
-module into a call to $module_name-E<gt>require_version($value). This can
-be used to validate that the version of the module being used is
-greater than or equal to the required version.
-
-The Exporter module supplies a default require_version method which
-checks the value of $VERSION in the exporting module.
-
-Since the default require_version method treats the $VERSION number as
-a simple numeric value it will regard version 1.10 as lower than
-1.9. For this reason it is strongly recommended that you use numbers
-with at least two decimal places, e.g., 1.09.
-
-=head2 Managing Unknown Symbols
-
-In some situations you may want to prevent certain symbols from being
-exported. Typically this applies to extensions which have functions
-or constants that may not exist on some systems.
-
-The names of any symbols that cannot be exported should be listed
-in the C<@EXPORT_FAIL> array.
-
-If a module attempts to import any of these symbols the Exporter
-will give the module an opportunity to handle the situation before
-generating an error. The Exporter will call an export_fail method
-with a list of the failed symbols:
-
- @failed_symbols = $module_name->export_fail(@failed_symbols);
-
-If the export_fail method returns an empty list then no error is
-recorded and all the requested symbols are exported. If the returned
-list is not empty then an error is generated for each symbol and the
-export fails. The Exporter provides a default export_fail method which
-simply returns the list unchanged.
-
-Uses for the export_fail method include giving better error messages
-for some symbols and performing lazy architectural checks (put more
-symbols into @EXPORT_FAIL by default and then take them out if someone
-actually tries to use them and an expensive check shows that they are
-usable on that platform).
-
-=head2 Tag Handling Utility Functions
-
-Since the symbols listed within %EXPORT_TAGS must also appear in either
-@EXPORT or @EXPORT_OK, two utility functions are provided which allow
-you to easily add tagged sets of symbols to @EXPORT or @EXPORT_OK:
-
- %EXPORT_TAGS = (foo => [qw(aa bb cc)], bar => [qw(aa cc dd)]);
-
- Exporter::export_tags('foo'); # add aa, bb and cc to @EXPORT
- Exporter::export_ok_tags('bar'); # add aa, cc and dd to @EXPORT_OK
-
-Any names which are not tags are added to @EXPORT or @EXPORT_OK
-unchanged but will trigger a warning (with C<-w>) to avoid misspelt tags
-names being silently added to @EXPORT or @EXPORT_OK. Future versions
-may make this a fatal error.
-
-=head2 Generating combined tags
-
-If several symbol categories exist in %EXPORT_TAGS, it's usually
-useful to create the utility ":all" to simplify "use" statements.
-
-The simplest way to do this is:
-
- %EXPORT_TAGS = (foo => [qw(aa bb cc)], bar => [qw(aa cc dd)]);
-
- # add all the other ":class" tags to the ":all" class,
- # deleting duplicates
- {
- my %seen;
-
- push @{$EXPORT_TAGS{all}},
- grep {!$seen{$_}++} @{$EXPORT_TAGS{$_}} foreach keys %EXPORT_TAGS;
- }
-
-CGI.pm creates an ":all" tag which contains some (but not really
-all) of its categories. That could be done with one small
-change:
-
- # add some of the other ":class" tags to the ":all" class,
- # deleting duplicates
- {
- my %seen;
-
- push @{$EXPORT_TAGS{all}},
- grep {!$seen{$_}++} @{$EXPORT_TAGS{$_}}
- foreach qw/html2 html3 netscape form cgi internal/;
- }
-
-Note that the tag names in %EXPORT_TAGS don't have the leading ':'.
-
-=head2 C<AUTOLOAD>ed Constants
-
-Many modules make use of C<AUTOLOAD>ing for constant subroutines to
-avoid having to compile and waste memory on rarely used values (see
-L<perlsub> for details on constant subroutines). Calls to such
-constant subroutines are not optimized away at compile time because
-they can't be checked at compile time for constancy.
-
-Even if a prototype is available at compile time, the body of the
-subroutine is not (it hasn't been C<AUTOLOAD>ed yet). perl needs to
-examine both the C<()> prototype and the body of a subroutine at
-compile time to detect that it can safely replace calls to that
-subroutine with the constant value.
-
-A workaround for this is to call the constants once in a C<BEGIN> block:
-
- package My ;
-
- use Socket ;
-
- foo( SO_LINGER ); ## SO_LINGER NOT optimized away; called at runtime
- BEGIN { SO_LINGER }
- foo( SO_LINGER ); ## SO_LINGER optimized away at compile time.
-
-This forces the C<AUTOLOAD> for C<SO_LINGER> to take place before
-SO_LINGER is encountered later in C<My> package.
-
-If you are writing a package that C<AUTOLOAD>s, consider forcing
-an C<AUTOLOAD> for any constants explicitly imported by other packages
-or which are usually used when your package is C<use>d.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Exporter/Heavy.pm b/Master/tlpkg/tlperl/lib/Exporter/Heavy.pm
deleted file mode 100644
index 2cc792288f0..00000000000
--- a/Master/tlpkg/tlperl/lib/Exporter/Heavy.pm
+++ /dev/null
@@ -1,248 +0,0 @@
-package Exporter::Heavy;
-
-use strict;
-no strict 'refs';
-
-# On one line so MakeMaker will see it.
-require Exporter; our $VERSION = $Exporter::VERSION;
-$Carp::Internal{"Exporter::Heavy"} = 1;
-
-=head1 NAME
-
-Exporter::Heavy - Exporter guts
-
-=head1 SYNOPSIS
-
-(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 _rebuild_cache {
- my ($pkg, $exports, $cache) = @_;
- s/^&// foreach @$exports;
- @{$cache}{@$exports} = (1) x @$exports;
- my $ok = \@{"${pkg}::EXPORT_OK"};
- if (@$ok) {
- s/^&// foreach @$ok;
- @{$cache}{@$ok} = (1) x @$ok;
- }
-}
-
-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, $cache_is_current, $oops);
- my($exports, $export_cache) = (\@{"${pkg}::EXPORT"},
- $Exporter::Cache{$pkg} ||= {});
-
- if (@imports) {
- if (!%$export_cache) {
- _rebuild_cache ($pkg, $exports, $export_cache);
- $cache_is_current = 1;
- }
-
- if (grep m{^[/!:]}, @imports) {
- 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 %$export_cache 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 $Exporter::Verbose;
-
- if ($remove) {
- foreach $sym (@names) { delete $imports{$sym} }
- }
- else {
- @imports{@names} = (1) x @names;
- }
- }
- @imports = keys %imports;
- }
-
- my @carp;
- foreach $sym (@imports) {
- if (!$export_cache->{$sym}) {
- if ($sym =~ m/^\d/) {
- $pkg->VERSION($sym); # inherit from UNIVERSAL
- # 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/^&// || !$export_cache->{$sym}) {
- # Last chance - see if they've updated EXPORT_OK since we
- # cached it.
-
- unless ($cache_is_current) {
- %$export_cache = ();
- _rebuild_cache ($pkg, $exports, $export_cache);
- $cache_is_current = 1;
- }
-
- if (!$export_cache->{$sym}) {
- # accumulate the non-exports
- push @carp,
- qq["$sym" is not exported by the $pkg module\n];
- $oops++;
- }
- }
- }
- }
- if ($oops) {
- require Carp;
- Carp::croak("@{carp}Can't continue after import errors");
- }
- }
- else {
- @imports = @$exports;
- }
-
- my($fail, $fail_cache) = (\@{"${pkg}::EXPORT_FAIL"},
- $Exporter::FailCache{$pkg} ||= {});
-
- if (@$fail) {
- if (!%$fail_cache) {
- # Build cache of symbols. Optimise the lookup by adding
- # barewords twice... both with and without a leading &.
- # (Technique could be applied to $export_cache at cost of memory)
- my @expanded = map { /^\w/ ? ($_, '&'.$_) : $_ } @$fail;
- warn "${pkg}::EXPORT_FAIL cached: @expanded" if $Exporter::Verbose;
- @{$fail_cache}{@expanded} = (1) x @expanded;
- }
- my @failed;
- foreach $sym (@imports) { push(@failed, $sym) if $fail_cache->{$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 $Exporter::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 = ();
- my $export_tags = \%{"${pkg}::EXPORT_TAGS"};
- push(@{"${pkg}::$var"},
- map { $export_tags->{$_} ? @{$export_tags->{$_}}
- : scalar(push(@nontag,$_),$_) }
- (@$syms) ? @$syms : keys %$export_tags);
- if (@nontag and $^W) {
- # This may change to a die one day
- require Carp;
- Carp::carp(join(", ", @nontag)." are not tags of $pkg");
- }
-}
-
-sub heavy_require_version {
- my($self, $wanted) = @_;
- my $pkg = ref $self || $self;
- return ${pkg}->VERSION($wanted);
-}
-
-sub heavy_export_tags {
- _push_tags((caller)[0], "EXPORT", \@_);
-}
-
-sub heavy_export_ok_tags {
- _push_tags((caller)[0], "EXPORT_OK", \@_);
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Fcntl.pm b/Master/tlpkg/tlperl/lib/Fcntl.pm
deleted file mode 100644
index 7ef0038bd18..00000000000
--- a/Master/tlpkg/tlperl/lib/Fcntl.pm
+++ /dev/null
@@ -1,236 +0,0 @@
-package Fcntl;
-
-=head1 NAME
-
-Fcntl - load the C Fcntl.h defines
-
-=head1 SYNOPSIS
-
- use Fcntl;
- use Fcntl qw(:DEFAULT :flock);
-
-=head1 DESCRIPTION
-
-This module is just a translation of the C F<fcntl.h> file.
-Unlike the old mechanism of requiring a translated F<fcntl.ph>
-file, this uses the B<h2xs> program (see the Perl source distribution)
-and your native C compiler. This means that it has a
-far more likely chance of getting the numbers right.
-
-=head1 NOTE
-
-Only C<#define> symbols get translated; you must still correctly
-pack up your own arguments to pass as args for locking functions, etc.
-
-=head1 EXPORTED SYMBOLS
-
-By default your system's F_* and O_* constants (eg, F_DUPFD and
-O_CREAT) and the FD_CLOEXEC constant are exported into your namespace.
-
-You can request that the flock() constants (LOCK_SH, LOCK_EX, LOCK_NB
-and LOCK_UN) be provided by using the tag C<:flock>. See L<Exporter>.
-
-You can request that the old constants (FAPPEND, FASYNC, FCREAT,
-FDEFER, FEXCL, FNDELAY, FNONBLOCK, FSYNC, FTRUNC) be provided for
-compatibility reasons by using the tag C<:Fcompat>. For new
-applications the newer versions of these constants are suggested
-(O_APPEND, O_ASYNC, O_CREAT, O_DEFER, O_EXCL, O_NDELAY, O_NONBLOCK,
-O_SYNC, O_TRUNC).
-
-For ease of use also the SEEK_* constants (for seek() and sysseek(),
-e.g. SEEK_END) and the S_I* constants (for chmod() and stat()) are
-available for import. They can be imported either separately or using
-the tags C<:seek> and C<:mode>.
-
-Please refer to your native fcntl(2), open(2), fseek(3), lseek(2)
-(equal to Perl's seek() and sysseek(), respectively), and chmod(2)
-documentation to see what constants are implemented in your system.
-
-See L<perlopentut> to learn about the uses of the O_* constants
-with sysopen().
-
-See L<perlfunc/seek> and L<perlfunc/sysseek> about the SEEK_* constants.
-
-See L<perlfunc/stat> about the S_I* constants.
-
-=cut
-
-our($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $AUTOLOAD);
-
-require Exporter;
-use XSLoader ();
-@ISA = qw(Exporter);
-$VERSION = "1.05";
-# Items to export into callers namespace by default
-# (move infrequently used names to @EXPORT_OK below)
-@EXPORT =
- qw(
- FD_CLOEXEC
- F_ALLOCSP
- F_ALLOCSP64
- F_COMPAT
- F_DUP2FD
- F_DUPFD
- F_EXLCK
- F_FREESP
- F_FREESP64
- F_FSYNC
- F_FSYNC64
- F_GETFD
- F_GETFL
- F_GETLK
- F_GETLK64
- F_GETOWN
- F_NODNY
- F_POSIX
- F_RDACC
- F_RDDNY
- F_RDLCK
- F_RWACC
- F_RWDNY
- F_SETFD
- F_SETFL
- F_SETLK
- F_SETLK64
- F_SETLKW
- F_SETLKW64
- F_SETOWN
- F_SHARE
- F_SHLCK
- F_UNLCK
- F_UNSHARE
- F_WRACC
- F_WRDNY
- F_WRLCK
- O_ACCMODE
- O_ALIAS
- O_APPEND
- O_ASYNC
- O_BINARY
- O_CREAT
- O_DEFER
- O_DIRECT
- O_DIRECTORY
- O_DSYNC
- O_EXCL
- O_EXLOCK
- O_LARGEFILE
- O_NDELAY
- O_NOCTTY
- O_NOFOLLOW
- O_NOINHERIT
- O_NONBLOCK
- O_RANDOM
- O_RAW
- O_RDONLY
- O_RDWR
- O_RSRC
- O_RSYNC
- O_SEQUENTIAL
- O_SHLOCK
- O_SYNC
- O_TEMPORARY
- O_TEXT
- O_TRUNC
- O_WRONLY
- );
-
-# Other items we are prepared to export if requested
-@EXPORT_OK = qw(
- DN_ACCESS
- DN_ATTRIB
- DN_CREATE
- DN_DELETE
- DN_MODIFY
- DN_MULTISHOT
- DN_RENAME
- FAPPEND
- FASYNC
- FCREAT
- FDEFER
- FDSYNC
- FEXCL
- FLARGEFILE
- FNDELAY
- FNONBLOCK
- FRSYNC
- FSYNC
- FTRUNC
- F_GETLEASE
- F_GETSIG
- F_NOTIFY
- F_SETLEASE
- F_SETSIG
- LOCK_EX
- LOCK_MAND
- LOCK_NB
- LOCK_READ
- LOCK_RW
- LOCK_SH
- LOCK_UN
- LOCK_WRITE
- O_IGNORE_CTTY
- O_NOATIME
- O_NOLINK
- O_NOTRANS
- SEEK_CUR
- SEEK_END
- SEEK_SET
- S_IFSOCK S_IFBLK S_IFCHR S_IFIFO S_IFWHT S_ENFMT
- S_IREAD S_IWRITE S_IEXEC
- S_IRGRP S_IWGRP S_IXGRP S_IRWXG
- S_IROTH S_IWOTH S_IXOTH S_IRWXO
- S_IRUSR S_IWUSR S_IXUSR S_IRWXU
- S_ISUID S_ISGID S_ISVTX S_ISTXT
- _S_IFMT S_IFREG S_IFDIR S_IFLNK
- &S_ISREG &S_ISDIR &S_ISLNK &S_ISSOCK &S_ISBLK &S_ISCHR &S_ISFIFO
- &S_ISWHT &S_ISENFMT &S_IFMT &S_IMODE
-);
-# Named groups of exports
-%EXPORT_TAGS = (
- 'flock' => [qw(LOCK_SH LOCK_EX LOCK_NB LOCK_UN)],
- 'Fcompat' => [qw(FAPPEND FASYNC FCREAT FDEFER FDSYNC FEXCL FLARGEFILE
- FNDELAY FNONBLOCK FRSYNC FSYNC FTRUNC)],
- 'seek' => [qw(SEEK_SET SEEK_CUR SEEK_END)],
- 'mode' => [qw(S_ISUID S_ISGID S_ISVTX S_ISTXT
- _S_IFMT S_IFREG S_IFDIR S_IFLNK
- S_IFSOCK S_IFBLK S_IFCHR S_IFIFO S_IFWHT S_ENFMT
- S_IRUSR S_IWUSR S_IXUSR S_IRWXU
- S_IRGRP S_IWGRP S_IXGRP S_IRWXG
- S_IROTH S_IWOTH S_IXOTH S_IRWXO
- S_IREAD S_IWRITE S_IEXEC
- S_ISREG S_ISDIR S_ISLNK S_ISSOCK
- S_ISBLK S_ISCHR S_ISFIFO
- S_ISWHT S_ISENFMT
- S_IFMT S_IMODE
- )],
-);
-
-sub S_IFMT { @_ ? ( $_[0] & _S_IFMT() ) : _S_IFMT() }
-sub S_IMODE { $_[0] & 07777 }
-
-sub S_ISREG { ( $_[0] & _S_IFMT() ) == S_IFREG() }
-sub S_ISDIR { ( $_[0] & _S_IFMT() ) == S_IFDIR() }
-sub S_ISLNK { ( $_[0] & _S_IFMT() ) == S_IFLNK() }
-sub S_ISSOCK { ( $_[0] & _S_IFMT() ) == S_IFSOCK() }
-sub S_ISBLK { ( $_[0] & _S_IFMT() ) == S_IFBLK() }
-sub S_ISCHR { ( $_[0] & _S_IFMT() ) == S_IFCHR() }
-sub S_ISFIFO { ( $_[0] & _S_IFMT() ) == S_IFIFO() }
-sub S_ISWHT { ( $_[0] & _S_IFMT() ) == S_IFWHT() }
-sub S_ISENFMT { ( $_[0] & _S_IFMT() ) == S_IFENFMT() }
-
-sub AUTOLOAD {
- (my $constname = $AUTOLOAD) =~ s/.*:://;
- die "&Fcntl::constant not defined" if $constname eq 'constant';
- my ($error, $val) = constant($constname);
- if ($error) {
- my (undef,$file,$line) = caller;
- die "$error at $file line $line.\n";
- }
- *$AUTOLOAD = sub { $val };
- goto &$AUTOLOAD;
-}
-
-XSLoader::load 'Fcntl', $VERSION;
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/File/Basename.pm b/Master/tlpkg/tlperl/lib/File/Basename.pm
deleted file mode 100644
index 837b753972a..00000000000
--- a/Master/tlpkg/tlperl/lib/File/Basename.pm
+++ /dev/null
@@ -1,398 +0,0 @@
-=head1 NAME
-
-File::Basename - Parse file paths into directory, filename and suffix.
-
-=head1 SYNOPSIS
-
- use File::Basename;
-
- ($name,$path,$suffix) = fileparse($fullname,@suffixlist);
- $name = fileparse($fullname,@suffixlist);
-
- $basename = basename($fullname,@suffixlist);
- $dirname = dirname($fullname);
-
-
-=head1 DESCRIPTION
-
-These routines allow you to parse file paths into their directory, filename
-and suffix.
-
-B<NOTE>: C<dirname()> and C<basename()> emulate the behaviours, and
-quirks, of the shell and C functions of the same name. See each
-function's documentation for details. If your concern is just parsing
-paths it is safer to use L<File::Spec>'s C<splitpath()> and
-C<splitdir()> methods.
-
-It is guaranteed that
-
- # Where $path_separator is / for Unix, \ for Windows, etc...
- dirname($path) . $path_separator . basename($path);
-
-is equivalent to the original path for all systems but VMS.
-
-
-=cut
-
-
-package File::Basename;
-
-# 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; } ' } # HINT_RE_TAINT
- import re 'taint';
-}
-
-
-use strict;
-use 5.006;
-use warnings;
-our(@ISA, @EXPORT, $VERSION, $Fileparse_fstype, $Fileparse_igncase);
-require Exporter;
-@ISA = qw(Exporter);
-@EXPORT = qw(fileparse fileparse_set_fstype basename dirname);
-$VERSION = "2.74";
-
-fileparse_set_fstype($^O);
-
-
-=over 4
-
-=item C<fileparse>
-
- my($filename, $directories, $suffix) = fileparse($path);
- my($filename, $directories, $suffix) = fileparse($path, @suffixes);
- my $filename = fileparse($path, @suffixes);
-
-The C<fileparse()> routine divides a file path into its $directories, $filename
-and (optionally) the filename $suffix.
-
-$directories contains everything up to and including the last
-directory separator in the $path including the volume (if applicable).
-The remainder of the $path is the $filename.
-
- # On Unix returns ("baz", "/foo/bar/", "")
- fileparse("/foo/bar/baz");
-
- # On Windows returns ("baz", "C:\foo\bar\", "")
- fileparse("C:\foo\bar\baz");
-
- # On Unix returns ("", "/foo/bar/baz/", "")
- fileparse("/foo/bar/baz/");
-
-If @suffixes are given each element is a pattern (either a string or a
-C<qr//>) matched against the end of the $filename. The matching
-portion is removed and becomes the $suffix.
-
- # On Unix returns ("baz", "/foo/bar", ".txt")
- fileparse("/foo/bar/baz", qr/\.[^.]*/);
-
-If type is non-Unix (see C<fileparse_set_fstype()>) then the pattern
-matching for suffix removal is performed case-insensitively, since
-those systems are not case-sensitive when opening existing files.
-
-You are guaranteed that C<$directories . $filename . $suffix> will
-denote the same location as the original $path.
-
-=cut
-
-
-sub fileparse {
- my($fullname,@suffices) = @_;
-
- unless (defined $fullname) {
- require Carp;
- Carp::croak("fileparse(): need a valid pathname");
- }
-
- my $orig_type = '';
- my($type,$igncase) = ($Fileparse_fstype, $Fileparse_igncase);
-
- my($taint) = substr($fullname,0,0); # Is $fullname tainted?
-
- if ($type eq "VMS" and $fullname =~ m{/} ) {
- # We're doing Unix emulation
- $orig_type = $type;
- $type = 'Unix';
- }
-
- my($dirpath, $basename);
-
- if (grep { $type eq $_ } qw(MSDOS DOS MSWin32 Epoc)) {
- ($dirpath,$basename) = ($fullname =~ /^((?:.*[:\\\/])?)(.*)/s);
- $dirpath .= '.\\' unless $dirpath =~ /[\\\/]\z/;
- }
- elsif ($type eq "OS2") {
- ($dirpath,$basename) = ($fullname =~ m#^((?:.*[:\\/])?)(.*)#s);
- $dirpath = './' unless $dirpath; # Can't be 0
- $dirpath .= '/' unless $dirpath =~ m#[\\/]\z#;
- }
- elsif ($type eq "MacOS") {
- ($dirpath,$basename) = ($fullname =~ /^(.*:)?(.*)/s);
- $dirpath = ':' unless $dirpath;
- }
- elsif ($type eq "AmigaOS") {
- ($dirpath,$basename) = ($fullname =~ /(.*[:\/])?(.*)/s);
- $dirpath = './' unless $dirpath;
- }
- elsif ($type eq 'VMS' ) {
- ($dirpath,$basename) = ($fullname =~ /^(.*[:>\]])?(.*)/s);
- $dirpath ||= ''; # should always be defined
- }
- else { # Default to Unix semantics.
- ($dirpath,$basename) = ($fullname =~ m#^(.*/)?(.*)#s);
- if ($orig_type eq 'VMS' and $fullname =~ m:^(/[^/]+/000000(/|$))(.*):) {
- # dev:[000000] is top of VMS tree, similar to Unix '/'
- # so strip it off and treat the rest as "normal"
- my $devspec = $1;
- my $remainder = $3;
- ($dirpath,$basename) = ($remainder =~ m#^(.*/)?(.*)#s);
- $dirpath ||= ''; # should always be defined
- $dirpath = $devspec.$dirpath;
- }
- $dirpath = './' unless $dirpath;
- }
-
-
- my $tail = '';
- my $suffix = '';
- if (@suffices) {
- foreach $suffix (@suffices) {
- my $pat = ($igncase ? '(?i)' : '') . "($suffix)\$";
- if ($basename =~ s/$pat//s) {
- $taint .= substr($suffix,0,0);
- $tail = $1 . $tail;
- }
- }
- }
-
- # Ensure taint is propgated from the path to its pieces.
- $tail .= $taint;
- wantarray ? ($basename .= $taint, $dirpath .= $taint, $tail)
- : ($basename .= $taint);
-}
-
-
-
-=item C<basename>
-
- my $filename = basename($path);
- my $filename = basename($path, @suffixes);
-
-This function is provided for compatibility with the Unix shell command
-C<basename(1)>. It does B<NOT> always return the file name portion of a
-path as you might expect. To be safe, if you want the file name portion of
-a path use C<fileparse()>.
-
-C<basename()> returns the last level of a filepath even if the last
-level is clearly directory. In effect, it is acting like C<pop()> for
-paths. This differs from C<fileparse()>'s behaviour.
-
- # Both return "bar"
- basename("/foo/bar");
- basename("/foo/bar/");
-
-@suffixes work as in C<fileparse()> except all regex metacharacters are
-quoted.
-
- # These two function calls are equivalent.
- my $filename = basename("/foo/bar/baz.txt", ".txt");
- my $filename = fileparse("/foo/bar/baz.txt", qr/\Q.txt\E/);
-
-Also note that in order to be compatible with the shell command,
-C<basename()> does not strip off a suffix if it is identical to the
-remaining characters in the filename.
-
-=cut
-
-
-sub basename {
- my($path) = shift;
-
- # From BSD basename(1)
- # The basename utility deletes any prefix ending with the last slash `/'
- # character present in string (after first stripping trailing slashes)
- _strip_trailing_sep($path);
-
- my($basename, $dirname, $suffix) = fileparse( $path, map("\Q$_\E",@_) );
-
- # From BSD basename(1)
- # The suffix is not stripped if it is identical to the remaining
- # characters in string.
- if( length $suffix and !length $basename ) {
- $basename = $suffix;
- }
-
- # Ensure that basename '/' == '/'
- if( !length $basename ) {
- $basename = $dirname;
- }
-
- return $basename;
-}
-
-
-
-=item C<dirname>
-
-This function is provided for compatibility with the Unix shell
-command C<dirname(1)> and has inherited some of its quirks. In spite of
-its name it does B<NOT> always return the directory name as you might
-expect. To be safe, if you want the directory name of a path use
-C<fileparse()>.
-
-Only on VMS (where there is no ambiguity between the file and directory
-portions of a path) and AmigaOS (possibly due to an implementation quirk in
-this module) does C<dirname()> work like C<fileparse($path)>, returning just the
-$directories.
-
- # On VMS and AmigaOS
- my $directories = dirname($path);
-
-When using Unix or MSDOS syntax this emulates the C<dirname(1)> shell function
-which is subtly different from how C<fileparse()> works. It returns all but
-the last level of a file path even if the last level is clearly a directory.
-In effect, it is not returning the directory portion but simply the path one
-level up acting like C<chop()> for file paths.
-
-Also unlike C<fileparse()>, C<dirname()> does not include a trailing slash on
-its returned path.
-
- # returns /foo/bar. fileparse() would return /foo/bar/
- dirname("/foo/bar/baz");
-
- # also returns /foo/bar despite the fact that baz is clearly a
- # directory. fileparse() would return /foo/bar/baz/
- dirname("/foo/bar/baz/");
-
- # returns '.'. fileparse() would return 'foo/'
- dirname("foo/");
-
-Under VMS, if there is no directory information in the $path, then the
-current default device and directory is used.
-
-=cut
-
-
-sub dirname {
- my $path = shift;
-
- my($type) = $Fileparse_fstype;
-
- if( $type eq 'VMS' and $path =~ m{/} ) {
- # Parse as Unix
- local($File::Basename::Fileparse_fstype) = '';
- return dirname($path);
- }
-
- my($basename, $dirname) = fileparse($path);
-
- if ($type eq 'VMS') {
- $dirname ||= $ENV{DEFAULT};
- }
- elsif ($type eq 'MacOS') {
- if( !length($basename) && $dirname !~ /^[^:]+:\z/) {
- _strip_trailing_sep($dirname);
- ($basename,$dirname) = fileparse $dirname;
- }
- $dirname .= ":" unless $dirname =~ /:\z/;
- }
- elsif (grep { $type eq $_ } qw(MSDOS DOS MSWin32 OS2)) {
- _strip_trailing_sep($dirname);
- unless( length($basename) ) {
- ($basename,$dirname) = fileparse $dirname;
- _strip_trailing_sep($dirname);
- }
- }
- elsif ($type eq 'AmigaOS') {
- if ( $dirname =~ /:\z/) { return $dirname }
- chop $dirname;
- $dirname =~ s#[^:/]+\z## unless length($basename);
- }
- else {
- _strip_trailing_sep($dirname);
- unless( length($basename) ) {
- ($basename,$dirname) = fileparse $dirname;
- _strip_trailing_sep($dirname);
- }
- }
-
- $dirname;
-}
-
-
-# Strip the trailing path separator.
-sub _strip_trailing_sep {
- my $type = $Fileparse_fstype;
-
- if ($type eq 'MacOS') {
- $_[0] =~ s/([^:]):\z/$1/s;
- }
- elsif (grep { $type eq $_ } qw(MSDOS DOS MSWin32 OS2)) {
- $_[0] =~ s/([^:])[\\\/]*\z/$1/;
- }
- else {
- $_[0] =~ s{(.)/*\z}{$1}s;
- }
-}
-
-
-=item C<fileparse_set_fstype>
-
- my $type = fileparse_set_fstype();
- my $previous_type = fileparse_set_fstype($type);
-
-Normally File::Basename will assume a file path type native to your current
-operating system (ie. /foo/bar style on Unix, \foo\bar on Windows, etc...).
-With this function you can override that assumption.
-
-Valid $types are "MacOS", "VMS", "AmigaOS", "OS2", "RISCOS",
-"MSWin32", "DOS" (also "MSDOS" for backwards bug compatibility),
-"Epoc" and "Unix" (all case-insensitive). If an unrecognized $type is
-given "Unix" will be assumed.
-
-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 rules instead, for that function
-call only.
-
-=back
-
-=cut
-
-
-BEGIN {
-
-my @Ignore_Case = qw(MacOS VMS AmigaOS OS2 RISCOS MSWin32 MSDOS DOS Epoc);
-my @Types = (@Ignore_Case, qw(Unix));
-
-sub fileparse_set_fstype {
- my $old = $Fileparse_fstype;
-
- if (@_) {
- my $new_type = shift;
-
- $Fileparse_fstype = 'Unix'; # default
- foreach my $type (@Types) {
- $Fileparse_fstype = $type if $new_type =~ /^$type/i;
- }
-
- $Fileparse_igncase =
- (grep $Fileparse_fstype eq $_, @Ignore_Case) ? 1 : 0;
- }
-
- return $old;
-}
-
-}
-
-
-1;
-
-
-=head1 SEE ALSO
-
-L<dirname(1)>, L<basename(1)>, L<File::Spec>
diff --git a/Master/tlpkg/tlperl/lib/File/CheckTree.pm b/Master/tlpkg/tlperl/lib/File/CheckTree.pm
deleted file mode 100644
index 20ffd68124d..00000000000
--- a/Master/tlpkg/tlperl/lib/File/CheckTree.pm
+++ /dev/null
@@ -1,229 +0,0 @@
-package File::CheckTree;
-
-use 5.006;
-use Cwd;
-use Exporter;
-use File::Spec;
-use warnings;
-use strict;
-
-our $VERSION = '4.3';
-our @ISA = qw(Exporter);
-our @EXPORT = qw(validate);
-
-=head1 NAME
-
-validate - run many filetest checks on a tree
-
-=head1 SYNOPSIS
-
- use File::CheckTree;
-
- $num_warnings = validate( q{
- /vmunix -e || die
- /boot -e || die
- /bin cd
- csh -ex
- csh !-ug
- sh -ex
- sh !-ug
- /usr -d || warn "What happened to $file?\n"
- });
-
-=head1 DESCRIPTION
-
-The validate() routine takes a single multiline string consisting of
-directives, each containing a filename plus a file test to try on it.
-(The file test may also be a "cd", causing subsequent relative filenames
-to be interpreted relative to that directory.) After the file test
-you may put C<|| die> to make it a fatal error if the file test fails.
-The default is C<|| warn>. The file test may optionally have a "!' prepended
-to test for the opposite condition. If you do a cd and then list some
-relative filenames, you may want to indent them slightly for readability.
-If you supply your own die() or warn() message, you can use $file to
-interpolate the filename.
-
-Filetests may be bunched: "-rwx" tests for all of C<-r>, C<-w>, and C<-x>.
-Only the first failed test of the bunch will produce a warning.
-
-The routine returns the number of warnings issued.
-
-=head1 AUTHOR
-
-File::CheckTree was derived from lib/validate.pl which was
-written by Larry Wall.
-Revised by Paul Grassie <F<grassie@perl.com>> in 2002.
-
-=head1 HISTORY
-
-File::CheckTree used to not display fatal error messages.
-It used to count only those warnings produced by a generic C<|| warn>
-(and not those in which the user supplied the message). In addition,
-the validate() routine would leave the user program in whatever
-directory was last entered through the use of "cd" directives.
-These bugs were fixed during the development of perl 5.8.
-The first fixed version of File::CheckTree was 4.2.
-
-=cut
-
-my $Warnings;
-
-sub validate {
- my ($starting_dir, $file, $test, $cwd, $oldwarnings);
-
- $starting_dir = cwd;
-
- $cwd = "";
- $Warnings = 0;
-
- foreach my $check (split /\n/, $_[0]) {
- my ($testlist, @testlist);
-
- # skip blanks/comments
- next if $check =~ /^\s*#/ || $check =~ /^\s*$/;
-
- # Todo:
- # should probably check for invalid directives and die
- # but earlier versions of File::CheckTree did not do this either
-
- # split a line like "/foo -r || die"
- # so that $file is "/foo", $test is "-rwx || die"
- ($file, $test) = split(' ', $check, 2); # special whitespace split
-
- # change a $test like "!-ug || die" to "!-Z || die",
- # capturing the bundled tests (e.g. "ug") in $2
- if ($test =~ s/ ^ (!?-) (\w{2,}) \b /$1Z/x) {
- $testlist = $2;
- # split bundled tests, e.g. "ug" to 'u', 'g'
- @testlist = split(//, $testlist);
- }
- else {
- # put in placeholder Z for stand-alone test
- @testlist = ('Z');
- }
-
- # will compare these two later to stop on 1st warning w/in a bundle
- $oldwarnings = $Warnings;
-
- foreach my $one (@testlist) {
- # examples of $test: "!-Z || die" or "-w || warn"
- my $this = $test;
-
- # expand relative $file to full pathname if preceded by cd directive
- $file = File::Spec->catfile($cwd, $file)
- if $cwd && !File::Spec->file_name_is_absolute($file);
-
- # put filename in after the test operator
- $this =~ s/(-\w\b)/$1 "\$file"/g;
-
- # change the "-Z" representing a bundle with the $one test
- $this =~ s/-Z/-$one/;
-
- # if it's a "cd" directive...
- if ($this =~ /^cd\b/) {
- # add "|| die ..."
- $this .= ' || die "cannot cd to $file\n"';
- # expand "cd" directive with directory name
- $this =~ s/\bcd\b/chdir(\$cwd = '$file')/;
- }
- else {
- # add "|| warn" as a default disposition
- $this .= ' || warn' unless $this =~ /\|\|/;
-
- # change a generic ".. || die" or ".. || warn"
- # to call valmess instead of die/warn directly
- # valmess will look up the error message from %Val_Message
- $this =~ s/ ^ ( (\S+) \s+ \S+ ) \s* \|\| \s* (die|warn) \s* $
- /$1 || valmess('$3', '$2', \$file)/x;
- }
-
- {
- # count warnings, either from valmess or '-r || warn "my msg"'
- # also, call any pre-existing signal handler for __WARN__
- my $orig_sigwarn = $SIG{__WARN__};
- local $SIG{__WARN__} = sub {
- ++$Warnings;
- if ( $orig_sigwarn ) {
- $orig_sigwarn->(@_);
- }
- else {
- warn "@_";
- }
- };
-
- # do the test
- eval $this;
-
- # re-raise an exception caused by a "... || die" test
- if ($@) {
- # in case of any cd directives, return from whence we came
- if ($starting_dir ne cwd) {
- chdir($starting_dir) || die "$starting_dir: $!";
- }
- die $@ if $@;
- }
- }
-
- # stop on 1st warning within a bundle of tests
- last if $Warnings > $oldwarnings;
- }
- }
-
- # in case of any cd directives, return from whence we came
- if ($starting_dir ne cwd) {
- chdir($starting_dir) || die "chdir $starting_dir: $!";
- }
-
- return $Warnings;
-}
-
-my %Val_Message = (
- 'r' => "is not readable by uid $>.",
- 'w' => "is not writable by uid $>.",
- 'x' => "is not executable by uid $>.",
- 'o' => "is not owned by uid $>.",
- 'R' => "is not readable by you.",
- 'W' => "is not writable by you.",
- 'X' => "is not executable by you.",
- 'O' => "is not owned by you.",
- 'e' => "does not exist.",
- 'z' => "does not have zero size.",
- 's' => "does not have non-zero size.",
- 'f' => "is not a plain file.",
- 'd' => "is not a directory.",
- 'l' => "is not a symbolic link.",
- 'p' => "is not a named pipe (FIFO).",
- 'S' => "is not a socket.",
- 'b' => "is not a block special file.",
- 'c' => "is not a character special file.",
- 'u' => "does not have the setuid bit set.",
- 'g' => "does not have the setgid bit set.",
- 'k' => "does not have the sticky bit set.",
- 'T' => "is not a text file.",
- 'B' => "is not a binary file."
-);
-
-sub valmess {
- my ($disposition, $test, $file) = @_;
- my $ferror;
-
- if ($test =~ / ^ (!?) -(\w) \s* $ /x) {
- my ($neg, $ftype) = ($1, $2);
-
- $ferror = "$file $Val_Message{$ftype}";
-
- if ($neg eq '!') {
- $ferror =~ s/ is not / should not be / ||
- $ferror =~ s/ does not / should not / ||
- $ferror =~ s/ not / /;
- }
- }
- else {
- $ferror = "Can't do $test $file.\n";
- }
-
- die "$ferror\n" if $disposition eq 'die';
- warn "$ferror\n";
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/File/Compare.pm b/Master/tlpkg/tlperl/lib/File/Compare.pm
deleted file mode 100644
index 0b73d7c7657..00000000000
--- a/Master/tlpkg/tlperl/lib/File/Compare.pm
+++ /dev/null
@@ -1,178 +0,0 @@
-package File::Compare;
-
-use 5.006;
-use strict;
-use warnings;
-our($VERSION, @ISA, @EXPORT, @EXPORT_OK, $Too_Big);
-
-require Exporter;
-use Carp;
-
-$VERSION = '1.1003';
-@ISA = qw(Exporter);
-@EXPORT = qw(compare);
-@EXPORT_OK = qw(cmp compare_text);
-
-$Too_Big = 1024 * 1024 * 2;
-
-sub compare {
- croak("Usage: compare( file1, file2 [, buffersize]) ")
- unless(@_ == 2 || @_ == 3);
-
- 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);
-
- if (ref($from) &&
- (UNIVERSAL::isa($from,'GLOB') || UNIVERSAL::isa($from,'IO::Handle'))) {
- *FROM = *$from;
- } elsif (ref(\$from) eq 'GLOB') {
- *FROM = $from;
- } else {
- open(FROM,"<$from") or goto fail_open1;
- unless ($text_mode) {
- binmode FROM;
- $fromsize = -s FROM;
- }
- $closefrom = 1;
- }
-
- if (ref($to) &&
- (UNIVERSAL::isa($to,'GLOB') || UNIVERSAL::isa($to,'IO::Handle'))) {
- *TO = *$to;
- } elsif (ref(\$to) eq 'GLOB') {
- *TO = $to;
- } else {
- open(TO,"<$to") or goto fail_open2;
- binmode TO unless $text_mode;
- $closeto = 1;
- }
-
- 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 ($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;
- }
-
- 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;
- }
-
- close(TO) || goto fail_open2 if $closeto;
- close(FROM) || goto fail_open1 if $closefrom;
-
- return 0;
-
- # All of these contortions try to preserve error messages...
- fail_inner:
- close(TO) || goto fail_open2 if $closeto;
- close(FROM) || goto fail_open1 if $closefrom;
-
- return 1;
-
- fail_open2:
- if ($closefrom) {
- my $status = $!;
- $! = 0;
- close FROM;
- $! = $status unless $!;
- }
- fail_open1:
- 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__
-
-=head1 NAME
-
-File::Compare - Compare files or filehandles
-
-=head1 SYNOPSIS
-
- use File::Compare;
-
- if (compare("file1","file2") == 0) {
- print "They're equal\n";
- }
-
-=head1 DESCRIPTION
-
-The File::Compare::compare function compares the contents of two
-sources, each of which can be a file or a file handle. It is exported
-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 and its sibling functions return 0 if the files
-are equal, 1 if the files are unequal, or -1 if an error was encountered.
-
-=head1 AUTHOR
-
-File::Compare was written by Nick Ing-Simmons.
-Its original documentation was written by Chip Salzenberg.
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/File/Copy.pm b/Master/tlpkg/tlperl/lib/File/Copy.pm
deleted file mode 100644
index 52ba7c6d81a..00000000000
--- a/Master/tlpkg/tlperl/lib/File/Copy.pm
+++ /dev/null
@@ -1,459 +0,0 @@
-# File/Copy.pm. Written in 1994 by Aaron Sherman <ajs@ajs.com>. This
-# source code has been placed in the public domain by the author.
-# Please be kind and preserve the documentation.
-#
-# Additions copyright 1996 by Charles Bailey. Permission is granted
-# to distribute the revised code under the same terms as Perl itself.
-
-package File::Copy;
-
-use 5.006;
-use strict;
-use warnings;
-use Carp;
-use File::Spec;
-use Config;
-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.09';
-
-require Exporter;
-@ISA = qw(Exporter);
-@EXPORT = qw(copy move);
-@EXPORT_OK = qw(cp mv);
-
-$Too_Big = 1024 * 1024 * 2;
-
-my $macfiles;
-if ($^O eq 'MacOS') {
- $macfiles = eval { require Mac::MoreFiles };
- warn 'Mac::MoreFiles could not be loaded; using non-native syscopy'
- if $@ && $^W;
-}
-
-sub _catname {
- my($from, $to) = @_;
- if (not defined &basename) {
- require File::Basename;
- import File::Basename 'basename';
- }
-
- if ($^O eq 'MacOS') {
- # a partial dir name that's valid only in the cwd (e.g. 'tmp')
- $to = ':' . $to if $to !~ /:/;
- }
-
- return File::Spec->catfile($to, basename($from));
-}
-
-sub copy {
- croak("Usage: copy(FROM, TO [, BUFFERSIZE]) ")
- unless(@_ == 2 || @_ == 3);
-
- my $from = shift;
- my $to = shift;
-
- my $from_a_handle = (ref($from)
- ? (ref($from) eq 'GLOB'
- || UNIVERSAL::isa($from, 'GLOB')
- || UNIVERSAL::isa($from, 'IO::Handle'))
- : (ref(\$from) eq 'GLOB'));
- my $to_a_handle = (ref($to)
- ? (ref($to) eq 'GLOB'
- || UNIVERSAL::isa($to, 'GLOB')
- || UNIVERSAL::isa($to, 'IO::Handle'))
- : (ref(\$to) eq 'GLOB'));
-
- if ($from eq $to) { # works for references, too
- carp("'$from' and '$to' are identical (not copied)");
- # The "copy" was a success as the source and destination contain
- # the same data.
- return 1;
- }
-
- if ((($Config{d_symlink} && $Config{d_readlink}) || $Config{d_link}) &&
- !($^O eq 'MSWin32' || $^O eq 'os2' || $^O eq 'vms')) {
- my @fs = stat($from);
- if (@fs) {
- my @ts = stat($to);
- if (@ts && $fs[0] == $ts[0] && $fs[1] == $ts[1]) {
- carp("'$from' and '$to' are identical (not copied)");
- return 0;
- }
- }
- }
-
- if (!$from_a_handle && !$to_a_handle && -d $to && ! -d $from) {
- $to = _catname($from, $to);
- }
-
- 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')
- && !($from_a_handle && $^O eq 'MacOS')
- && !($from_a_handle && $^O eq 'NetWare')
- )
- {
- return syscopy($from, $to);
- }
-
- my $closefrom = 0;
- my $closeto = 0;
- my ($size, $status, $r, $buf);
- local($\) = '';
-
- my $from_h;
- if ($from_a_handle) {
- $from_h = $from;
- } else {
- $from = _protect($from) if $from =~ /^\s/s;
- $from_h = \do { local *FH };
- open($from_h, "< $from\0") or goto fail_open1;
- binmode $from_h or die "($!,$^E)";
- $closefrom = 1;
- }
-
- my $to_h;
- if ($to_a_handle) {
- $to_h = $to;
- } else {
- $to = _protect($to) if $to =~ /^\s/s;
- $to_h = \do { local *FH };
- open($to_h,"> $to\0") or goto fail_open2;
- binmode $to_h or die "($!,$^E)";
- $closeto = 1;
- }
-
- if (@_) {
- $size = shift(@_) + 0;
- croak("Bad buffer size for copy: $size\n") unless ($size > 0);
- } else {
- $size = tied(*$from_h) ? 0 : -s $from_h || 0;
- $size = 1024 if ($size < 512);
- $size = $Too_Big if ($size > $Too_Big);
- }
-
- $! = 0;
- for (;;) {
- my ($r, $w, $t);
- defined($r = sysread($from_h, $buf, $size))
- or goto fail_inner;
- last unless $r;
- for ($w = 0; $w < $r; $w += $t) {
- $t = syswrite($to_h, $buf, $r - $w, $w)
- or goto fail_inner;
- }
- }
-
- close($to_h) || goto fail_open2 if $closeto;
- close($from_h) || goto fail_open1 if $closefrom;
-
- # Use this idiom to avoid uninitialized value warning.
- return 1;
-
- # All of these contortions try to preserve error messages...
- fail_inner:
- if ($closeto) {
- $status = $!;
- $! = 0;
- close $to_h;
- $! = $status unless $!;
- }
- fail_open2:
- if ($closefrom) {
- $status = $!;
- $! = 0;
- close $from_h;
- $! = $status unless $!;
- }
- fail_open1:
- return 0;
-}
-
-sub move {
- croak("Usage: move(FROM, TO) ") unless @_ == 2;
-
- my($from,$to) = @_;
-
- my($fromsz,$tosz1,$tomt1,$tosz2,$tomt2,$sts,$ossts);
-
- if (-d $to && ! -d $from) {
- $to = _catname($from, $to);
- }
-
- ($tosz1,$tomt1) = (stat($to))[7,9];
- $fromsz = -s $from;
- if ($^O eq 'os2' and defined $tosz1 and defined $fromsz) {
- # will not rename with overwrite
- unlink $to;
- }
- return 1 if rename $from, $to;
-
- # Did rename return an error even though it succeeded, because $to
- # is on a remote NFS file system, and NFS lost the server's ack?
- return 1 if defined($fromsz) && !-e $from && # $from disappeared
- (($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
-
- {
- local $@;
- eval {
- local $SIG{__DIE__};
- copy($from,$to) or die;
- my($atime, $mtime) = (stat($from))[8,9];
- utime($atime, $mtime, $to);
- unlink($from) or die;
- };
- return 1 unless $@;
- }
- ($sts,$ossts) = ($! + 0, $^E + 0);
-
- ($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);
- return 0;
-}
-
-*cp = \&copy;
-*mv = \&move;
-
-
-if ($^O eq 'MacOS') {
- *_protect = sub { MacPerl::MakeFSSpec($_[0]) };
-} else {
- *_protect = sub { "./$_[0]" };
-}
-
-# &syscopy is an XSUB under OS/2
-unless (defined &syscopy) {
- if ($^O eq 'VMS') {
- *syscopy = \&rmscopy;
- } elsif ($^O eq 'mpeix') {
- *syscopy = sub {
- return 0 unless @_ == 2;
- # Use the MPE cp program in order to
- # 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);
- };
- } elsif ($macfiles) {
- *syscopy = sub {
- my($from, $to) = @_;
- my($dir, $toname);
-
- return 0 unless -e $from;
-
- if ($to =~ /(.*:)([^:]+):?$/) {
- ($dir, $toname) = ($1, $2);
- } else {
- ($dir, $toname) = (":", $to);
- }
-
- unlink($to);
- Mac::MoreFiles::FSpFileCopy($from, $dir, $toname, 1);
- };
- } else {
- $Syscopy_is_copy = 1;
- *syscopy = \&copy;
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-File::Copy - Copy files or filehandles
-
-=head1 SYNOPSIS
-
- use File::Copy;
-
- copy("file1","file2") or die "Copy failed: $!";
- copy("Copy.pm",\*STDOUT);
- move("/dev1/fileA","/dev2/fileB");
-
- use File::Copy "cp";
-
- $n = FileHandle->new("/a/file","r");
- cp($n,"x");
-
-=head1 DESCRIPTION
-
-The File::Copy module provides two basic functions, C<copy> and
-C<move>, which are useful for getting the contents of a file from
-one place to another.
-
-=over 4
-
-=item *
-
-The C<copy> function takes two
-parameters: a file to copy from and a file to copy to. Either
-argument may be a string, a FileHandle reference or a FileHandle
-glob. Obviously, if the first argument is a filehandle of some
-sort, it will be read from, and if it is a file I<name> it will
-be opened for reading. Likewise, the second argument will be
-written to (and created if need be). Trying to copy a file on top
-of itself is a fatal error.
-
-B<Note that passing in
-files as handles instead of names may lead to loss of information
-on some operating systems; it is recommended that you use file
-names whenever possible.> Files are opened in binary mode where
-applicable. To get a consistent behaviour when copying from a
-filehandle to a file, use C<binmode> on the filehandle.
-
-An optional third parameter can be used to specify the buffer
-size used for copying. This is the number of bytes from the
-first file, that wil be held in memory at any given time, before
-being written to the second file. The default buffer size depends
-upon the file, but will generally be the whole file (up to 2Mb), or
-1k for filehandles that do not reference files (eg. sockets).
-
-You may use the syntax C<use File::Copy "cp"> to get at the
-"cp" alias for this function. The syntax is I<exactly> the same.
-
-=item *
-
-The C<move> function also takes two parameters: the current name
-and the intended name of the file to be moved. If the destination
-already exists and is a directory, and the source is not a
-directory, then the source file will be renamed into the directory
-specified by the destination.
-
-If possible, move() will simply rename the file. Otherwise, it copies
-the file to the new location and deletes the original. If an error occurs
-during this copy-and-delete process, you may be left with a (possibly partial)
-copy of the file under the destination name.
-
-You may use the "mv" alias for this function in the same way that
-you may use the "cp" alias for C<copy>.
-
-=back
-
-File::Copy also provides the C<syscopy> routine, which copies the
-file specified in the first parameter to the file specified in the
-second parameter, preserving OS-specific attributes and file
-structure. For Unix systems, this is equivalent to the simple
-C<copy> routine, which doesn't preserve OS-specific attributes. For
-VMS systems, this calls the C<rmscopy> routine (see below). For OS/2
-systems, this calls the C<syscopy> XSUB directly. For Win32 systems,
-this calls C<Win32::CopyFile>.
-
-On Mac OS (Classic), C<syscopy> calls C<Mac::MoreFiles::FSpFileCopy>,
-if available.
-
-=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
-the input file to a new output file, in order to preserve file
-attributes, indexed file structure, I<etc.> The buffer size
-parameter is ignored. If either argument to C<copy> is a
-handle to an opened file, then data is copied using Perl
-operators, and no effort is made to preserve file attributes
-or record structure.
-
-The system copy routine may also be called directly under VMS and OS/2
-as C<File::Copy::syscopy> (or under VMS as C<File::Copy::rmscopy>, which
-is the routine that does the actual work for syscopy).
-
-=over 4
-
-=item rmscopy($from,$to[,$date_flag])
-
-The first and second arguments may be strings, typeglobs, typeglob
-references, or objects inheriting from IO::Handle;
-they are used in all cases to obtain the
-I<filespec> of the input and output files, respectively. The
-name and type of the input file are used as defaults for the
-output file, if necessary.
-
-A new version of the output file is always created, which
-inherits the structure and RMS attributes of the input file,
-except for owner and protections (and possibly timestamps;
-see below). All data from the input file is copied to the
-output file; if either of the first two parameters to C<rmscopy>
-is a file handle, its position is unchanged. (Note that this
-means a file handle pointing to the output file will be
-associated with an old version of that file after C<rmscopy>
-returns, not the newly created version.)
-
-The third parameter is an integer flag, which tells C<rmscopy>
-how to handle timestamps. If it is E<lt> 0, none of the input file's
-timestamps are propagated to the output file. If it is E<gt> 0, then
-it is interpreted as a bitmask: if bit 0 (the LSB) is set, then
-timestamps other than the revision date are propagated; if bit 1
-is set, the revision date is propagated. If the third parameter
-to C<rmscopy> is 0, then it behaves much like the DCL COPY command:
-if the name or type of the output file was explicitly specified,
-then no timestamps are propagated, but if they were taken implicitly
-from the input filespec, then all timestamps other than the
-revision date are propagated. If this parameter is not supplied,
-it defaults to 0.
-
-Like C<copy>, C<rmscopy> returns 1 on success. If an error occurs,
-it sets C<$!>, deletes the output file, and returns 0.
-
-=back
-
-=head1 RETURN
-
-All functions return 1 on success, 0 on failure.
-$! will be set if an error was encountered.
-
-=head1 NOTES
-
-=over 4
-
-=item *
-
-On Mac OS (Classic), the path separator is ':', not '/', and the
-current directory is denoted as ':', not '.'. You should be careful
-about specifying relative pathnames. While a full path always begins
-with a volume name, a relative pathname should always begin with a
-':'. If specifying a volume name only, a trailing ':' is required.
-
-E.g.
-
- copy("file1", "tmp"); # creates the file 'tmp' in the current directory
- copy("file1", ":tmp:"); # creates :tmp:file1
- copy("file1", ":tmp"); # same as above
- copy("file1", "tmp"); # same as above, if 'tmp' is a directory (but don't do
- # that, since it may cause confusion, see example #1)
- copy("file1", "tmp:file1"); # error, since 'tmp:' is not a volume
- copy("file1", ":tmp:file1"); # ok, partial path
- copy("file1", "DataHD:"); # creates DataHD:file1
-
- move("MacintoshHD:fileA", "DataHD:fileB"); # moves (don't copies) files from one
- # volume to another
-
-=back
-
-=head1 AUTHOR
-
-File::Copy was written by Aaron Sherman I<E<lt>ajs@ajs.comE<gt>> in 1995,
-and updated by Charles Bailey I<E<lt>bailey@newman.upenn.eduE<gt>> in 1996.
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/File/DosGlob.pm b/Master/tlpkg/tlperl/lib/File/DosGlob.pm
deleted file mode 100644
index a1c27d5c32a..00000000000
--- a/Master/tlpkg/tlperl/lib/File/DosGlob.pm
+++ /dev/null
@@ -1,571 +0,0 @@
-#!perl -w
-
-# use strict fails
-#Can't use string ("main::glob") as a symbol ref while "strict refs" in use at /usr/lib/perl5/5.005/File/DosGlob.pm line 191.
-
-#
-# Documentation at the __END__
-#
-
-package File::DosGlob;
-
-our $VERSION = '1.00';
-use strict;
-use warnings;
-
-sub doglob {
- my $cond = shift;
- my @retval = ();
- #print "doglob: ", join('|', @_), "\n";
- OUTER:
- for my $pat (@_) {
- my @matched = ();
- my @globdirs = ();
- my $head = '.';
- my $sepchr = '/';
- my $tail;
- next OUTER unless defined $pat and $pat ne '';
- # if arg is within quotes strip em and do no globbing
- if ($pat =~ /^"(.*)"\z/s) {
- $pat = $1;
- if ($cond eq 'd') { push(@retval, $pat) if -d $pat }
- else { push(@retval, $pat) if -e $pat }
- next OUTER;
- }
- # wildcards with a drive prefix such as h:*.pm must be changed
- # to h:./*.pm to expand correctly
- if ($pat =~ m|^([A-Za-z]:)[^/\\]|s) {
- substr($_,0,2) = $1 . "./";
- }
- if ($pat =~ m|^(.*)([\\/])([^\\/]*)\z|s) {
- ($head, $sepchr, $tail) = ($1,$2,$3);
- #print "div: |$head|$sepchr|$tail|\n";
- push (@retval, $pat), next OUTER if $tail eq '';
- if ($head =~ /[*?]/) {
- @globdirs = doglob('d', $head);
- push(@retval, doglob($cond, map {"$_$sepchr$tail"} @globdirs)),
- next OUTER if @globdirs;
- }
- $head .= $sepchr if $head eq '' or $head =~ /^[A-Za-z]:\z/s;
- $pat = $tail;
- }
- #
- # If file component has no wildcards, we can avoid opendir
- unless ($pat =~ /[*?]/) {
- $head = '' if $head eq '.';
- $head .= $sepchr unless $head eq '' or substr($head,-1) eq $sepchr;
- $head .= $pat;
- if ($cond eq 'd') { push(@retval,$head) if -d $head }
- else { push(@retval,$head) if -e $head }
- next OUTER;
- }
- opendir(D, $head) or next OUTER;
- my @leaves = readdir D;
- closedir D;
- $head = '' if $head eq '.';
- $head .= $sepchr unless $head eq '' or substr($head,-1) eq $sepchr;
-
- # escape regex metachars but not glob chars
- $pat =~ s:([].+^\-\${}[|]):\\$1:g;
- # and convert DOS-style wildcards to regex
- $pat =~ s/\*/.*/g;
- $pat =~ s/\?/.?/g;
-
- #print "regex: '$pat', head: '$head'\n";
- my $matchsub = sub { $_[0] =~ m|^$pat\z|is };
- INNER:
- for my $e (@leaves) {
- next INNER if $e eq '.' or $e eq '..';
- next INNER if $cond eq 'd' and ! -d "$head$e";
- push(@matched, "$head$e"), next INNER if &$matchsub($e);
- #
- # [DOS compatibility special case]
- # Failed, add a trailing dot and try again, but only
- # if name does not have a dot in it *and* pattern
- # has a dot *and* name is shorter than 9 chars.
- #
- if (index($e,'.') == -1 and length($e) < 9
- and index($pat,'\\.') != -1) {
- push(@matched, "$head$e"), next INNER if &$matchsub("$e.");
- }
- }
- push @retval, @matched if @matched;
- }
- return @retval;
-}
-
-
-#
-# Do DOS-like globbing on Mac OS
-#
-sub doglob_Mac {
- my $cond = shift;
- my @retval = ();
-
- #print "doglob_Mac: ", join('|', @_), "\n";
- OUTER:
- for my $arg (@_) {
- local $_ = $arg;
- my @matched = ();
- my @globdirs = ();
- my $head = ':';
- my $not_esc_head = $head;
- my $sepchr = ':';
- next OUTER unless defined $_ and $_ ne '';
- # if arg is within quotes strip em and do no globbing
- if (/^"(.*)"\z/s) {
- $_ = $1;
- # $_ may contain escaped metachars '\*', '\?' and '\'
- my $not_esc_arg = $_;
- $not_esc_arg =~ s/\\([*?\\])/$1/g;
- if ($cond eq 'd') { push(@retval, $not_esc_arg) if -d $not_esc_arg }
- else { push(@retval, $not_esc_arg) if -e $not_esc_arg }
- next OUTER;
- }
-
- if (m|^(.*?)(:+)([^:]*)\z|s) { # note: $1 is not greedy
- my $tail;
- ($head, $sepchr, $tail) = ($1,$2,$3);
- #print "div: |$head|$sepchr|$tail|\n";
- push (@retval, $_), next OUTER if $tail eq '';
- #
- # $head may contain escaped metachars '\*' and '\?'
-
- my $tmp_head = $head;
- # if a '*' or '?' is preceded by an odd count of '\', temporary delete
- # it (and its preceding backslashes), i.e. don't treat '\*' and '\?' as
- # wildcards
- $tmp_head =~ s/(\\*)([*?])/$2 x ((length($1) + 1) % 2)/eg;
-
- if ($tmp_head =~ /[*?]/) { # if there are wildcards ...
- @globdirs = doglob_Mac('d', $head);
- push(@retval, doglob_Mac($cond, map {"$_$sepchr$tail"} @globdirs)),
- next OUTER if @globdirs;
- }
-
- $head .= $sepchr;
- $not_esc_head = $head;
- # unescape $head for file operations
- $not_esc_head =~ s/\\([*?\\])/$1/g;
- $_ = $tail;
- }
- #
- # If file component has no wildcards, we can avoid opendir
-
- my $tmp_tail = $_;
- # if a '*' or '?' is preceded by an odd count of '\', temporary delete
- # it (and its preceding backslashes), i.e. don't treat '\*' and '\?' as
- # wildcards
- $tmp_tail =~ s/(\\*)([*?])/$2 x ((length($1) + 1) % 2)/eg;
-
- unless ($tmp_tail =~ /[*?]/) { # if there are wildcards ...
- $not_esc_head = $head = '' if $head eq ':';
- my $not_esc_tail = $_;
- # unescape $head and $tail for file operations
- $not_esc_tail =~ s/\\([*?\\])/$1/g;
- $head .= $_;
- $not_esc_head .= $not_esc_tail;
- if ($cond eq 'd') { push(@retval,$head) if -d $not_esc_head }
- else { push(@retval,$head) if -e $not_esc_head }
- next OUTER;
- }
- #print "opendir($not_esc_head)\n";
- opendir(D, $not_esc_head) or next OUTER;
- my @leaves = readdir D;
- closedir D;
-
- # escape regex metachars but not '\' and glob chars '*', '?'
- $_ =~ s:([].+^\-\${}[|]):\\$1:g;
- # and convert DOS-style wildcards to regex,
- # but only if they are not escaped
- $_ =~ s/(\\*)([*?])/$1 . ('.' x ((length($1) + 1) % 2)) . $2/eg;
-
- #print "regex: '$_', head: '$head', unescaped head: '$not_esc_head'\n";
- my $matchsub = eval 'sub { $_[0] =~ m|^' . $_ . '\\z|ios }';
- warn($@), next OUTER if $@;
- INNER:
- for my $e (@leaves) {
- next INNER if $e eq '.' or $e eq '..';
- next INNER if $cond eq 'd' and ! -d "$not_esc_head$e";
-
- if (&$matchsub($e)) {
- my $leave = (($not_esc_head eq ':') && (-f "$not_esc_head$e")) ?
- "$e" : "$not_esc_head$e";
- #
- # On Mac OS, the two glob metachars '*' and '?' and the escape
- # char '\' are valid characters for file and directory names.
- # We have to escape and treat them specially.
- $leave =~ s|([*?\\])|\\$1|g;
- push(@matched, $leave);
- next INNER;
- }
- }
- push @retval, @matched if @matched;
- }
- return @retval;
-}
-
-#
-# _expand_volume() will only be used on Mac OS (Classic):
-# Takes an array of original patterns as argument and returns an array of
-# possibly modified patterns. Each original pattern is processed like
-# that:
-# + If there's a volume name in the pattern, we push a separate pattern
-# for each mounted volume that matches (with '*', '?' and '\' escaped).
-# + If there's no volume name in the original pattern, it is pushed
-# unchanged.
-# Note that the returned array of patterns may be empty.
-#
-sub _expand_volume {
-
- require MacPerl; # to be verbose
-
- my @pat = @_;
- my @new_pat = ();
- my @FSSpec_Vols = MacPerl::Volumes();
- my @mounted_volumes = ();
-
- foreach my $spec_vol (@FSSpec_Vols) {
- # push all mounted volumes into array
- push @mounted_volumes, MacPerl::MakePath($spec_vol);
- }
- #print "mounted volumes: |@mounted_volumes|\n";
-
- while (@pat) {
- my $pat = shift @pat;
- if ($pat =~ /^([^:]+:)(.*)\z/) { # match a volume name?
- my $vol_pat = $1;
- my $tail = $2;
- #
- # escape regex metachars but not '\' and glob chars '*', '?'
- $vol_pat =~ s:([].+^\-\${}[|]):\\$1:g;
- # and convert DOS-style wildcards to regex,
- # but only if they are not escaped
- $vol_pat =~ s/(\\*)([*?])/$1 . ('.' x ((length($1) + 1) % 2)) . $2/eg;
- #print "volume regex: '$vol_pat' \n";
-
- foreach my $volume (@mounted_volumes) {
- if ($volume =~ m|^$vol_pat\z|ios) {
- #
- # On Mac OS, the two glob metachars '*' and '?' and the
- # escape char '\' are valid characters for volume names.
- # We have to escape and treat them specially.
- $volume =~ s|([*?\\])|\\$1|g;
- push @new_pat, $volume . $tail;
- }
- }
- } else { # no volume name in pattern, push original pattern
- push @new_pat, $pat;
- }
- }
- return @new_pat;
-}
-
-
-#
-# _preprocess_pattern() will only be used on Mac OS (Classic):
-# Resolves any updirs in the pattern. Removes a single trailing colon
-# from the pattern, unless it's a volume name pattern like "*HD:"
-#
-sub _preprocess_pattern {
- my @pat = @_;
-
- foreach my $p (@pat) {
- my $proceed;
- # resolve any updirs, e.g. "*HD:t?p::a*" -> "*HD:a*"
- do {
- $proceed = ($p =~ s/^(.*):[^:]+::(.*?)\z/$1:$2/);
- } while ($proceed);
- # remove a single trailing colon, e.g. ":*:" -> ":*"
- $p =~ s/:([^:]+):\z/:$1/;
- }
- return @pat;
-}
-
-
-#
-# _un_escape() will only be used on Mac OS (Classic):
-# Unescapes a list of arguments which may contain escaped
-# metachars '*', '?' and '\'.
-#
-sub _un_escape {
- foreach (@_) {
- s/\\([*?\\])/$1/g;
- }
- return @_;
-}
-
-#
-# this can be used to override CORE::glob in a specific
-# package by saying C<use File::DosGlob 'glob';> in that
-# namespace.
-#
-
-# context (keyed by second cxix arg provided by core)
-my %iter;
-my %entries;
-
-sub glob {
- my($pat,$cxix) = @_;
- my @pat;
-
- # glob without args defaults to $_
- $pat = $_ unless defined $pat;
-
- # extract patterns
- if ($pat =~ /\s/) {
- require Text::ParseWords;
- @pat = Text::ParseWords::parse_line('\s+',0,$pat);
- }
- else {
- push @pat, $pat;
- }
-
- # Mike Mestnik: made to do abc{1,2,3} == abc1 abc2 abc3.
- # abc3 will be the original {3} (and drop the {}).
- # abc1 abc2 will be put in @appendpat.
- # This was just the esiest way, not nearly the best.
- REHASH: {
- my @appendpat = ();
- for (@pat) {
- # There must be a "," I.E. abc{efg} is not what we want.
- while ( /^(.*)(?<!\\)\{(.*?)(?<!\\)\,.*?(?<!\\)\}(.*)$/ ) {
- my ($start, $match, $end) = ($1, $2, $3);
- #print "Got: \n\t$start\n\t$match\n\t$end\n";
- my $tmp = "$start$match$end";
- while ( $tmp =~ s/^(.*?)(?<!\\)\{(?:.*(?<!\\)\,)?(.*\Q$match\E.*?)(?:(?<!\\)\,.*)?(?<!\\)\}(.*)$/$1$2$3/ ) {
- #print "Striped: $tmp\n";
- # these expanshions will be preformed by the original,
- # when we call REHASH.
- }
- push @appendpat, ("$tmp");
- s/^\Q$start\E(?<!\\)\{\Q$match\E(?<!\\)\,/$start\{/;
- if ( /^\Q$start\E(?<!\\)\{(?!.*?(?<!\\)\,.*?\Q$end\E$)(.*)(?<!\\)\}\Q$end\E$/ ) {
- $match = $1;
- #print "GOT: \n\t$start\n\t$match\n\t$end\n\n";
- $_ = "$start$match$end";
- }
- }
- #print "Sould have "GOT" vs "Got"!\n";
- #FIXME: There should be checking for this.
- # How or what should be done about failure is beond me.
- }
- if ( $#appendpat != -1
- ) {
- #print "LOOP\n";
- #FIXME: Max loop, no way! :")
- for ( @appendpat ) {
- push @pat, $_;
- }
- goto REHASH;
- }
- }
- for ( @pat ) {
- s/\\{/{/g;
- s/\\}/}/g;
- s/\\,/,/g;
- }
- #print join ("\n", @pat). "\n";
-
- # assume global context if not provided one
- $cxix = '_G_' unless defined $cxix;
- $iter{$cxix} = 0 unless exists $iter{$cxix};
-
- # if we're just beginning, do it all first
- if ($iter{$cxix} == 0) {
- if ($^O eq 'MacOS') {
- # first, take care of updirs and trailing colons
- @pat = _preprocess_pattern(@pat);
- # expand volume names
- @pat = _expand_volume(@pat);
- $entries{$cxix} = (@pat) ? [_un_escape( doglob_Mac(1,@pat) )] : [()];
- } else {
- $entries{$cxix} = [doglob(1,@pat)];
- }
- }
-
- # chuck it all out, quick or slow
- if (wantarray) {
- delete $iter{$cxix};
- return @{delete $entries{$cxix}};
- }
- else {
- if ($iter{$cxix} = scalar @{$entries{$cxix}}) {
- return shift @{$entries{$cxix}};
- }
- else {
- # return undef for EOL
- delete $iter{$cxix};
- delete $entries{$cxix};
- return undef;
- }
- }
-}
-
-{
- no strict 'refs';
-
- sub import {
- my $pkg = shift;
- return unless @_;
- my $sym = shift;
- my $callpkg = ($sym =~ s/^GLOBAL_//s ? 'CORE::GLOBAL' : caller(0));
- *{$callpkg.'::'.$sym} = \&{$pkg.'::'.$sym} if $sym eq 'glob';
- }
-}
-1;
-
-__END__
-
-=head1 NAME
-
-File::DosGlob - DOS like globbing and then some
-
-=head1 SYNOPSIS
-
- require 5.004;
-
- # override CORE::glob in current package
- use File::DosGlob 'glob';
-
- # override CORE::glob in ALL packages (use with extreme caution!)
- use File::DosGlob 'GLOBAL_glob';
-
- @perlfiles = glob "..\\pe?l/*.p?";
- print <..\\pe?l/*.p?>;
-
- # from the command line (overrides only in main::)
- > perl -MFile::DosGlob=glob -e "print <../pe*/*p?>"
-
-=head1 DESCRIPTION
-
-A module that implements DOS-like globbing with a few enhancements.
-It is largely compatible with perlglob.exe (the M$ setargv.obj
-version) in all but one respect--it understands wildcards in
-directory components.
-
-For example, C<<..\\l*b\\file/*glob.p?>> will work as expected (in
-that it will find something like '..\lib\File/DosGlob.pm' alright).
-Note that all path components are case-insensitive, and that
-backslashes and forward slashes are both accepted, and preserved.
-You may have to double the backslashes if you are putting them in
-literally, due to double-quotish parsing of the pattern by perl.
-
-Spaces in the argument delimit distinct patterns, so
-C<glob('*.exe *.dll')> globs all filenames that end in C<.exe>
-or C<.dll>. If you want to put in literal spaces in the glob
-pattern, you can escape them with either double quotes, or backslashes.
-e.g. C<glob('c:/"Program Files"/*/*.dll')>, or
-C<glob('c:/Program\ Files/*/*.dll')>. The argument is tokenized using
-C<Text::ParseWords::parse_line()>, so see L<Text::ParseWords> for details
-of the quoting rules used.
-
-Extending it to csh patterns is left as an exercise to the reader.
-
-=head1 NOTES
-
-=over 4
-
-=item *
-
-Mac OS (Classic) users should note a few differences. The specification
-of pathnames in glob patterns adheres to the usual Mac OS conventions:
-The path separator is a colon ':', not a slash '/' or backslash '\'. A
-full path always begins with a volume name. A relative pathname on Mac
-OS must always begin with a ':', except when specifying a file or
-directory name in the current working directory, where the leading colon
-is optional. If specifying a volume name only, a trailing ':' is
-required. Due to these rules, a glob like E<lt>*:E<gt> will find all
-mounted volumes, while a glob like E<lt>*E<gt> or E<lt>:*E<gt> will find
-all files and directories in the current directory.
-
-Note that updirs in the glob pattern are resolved before the matching begins,
-i.e. a pattern like "*HD:t?p::a*" will be matched as "*HD:a*". Note also,
-that a single trailing ':' in the pattern is ignored (unless it's a volume
-name pattern like "*HD:"), i.e. a glob like <:*:> will find both directories
-I<and> files (and not, as one might expect, only directories).
-
-The metachars '*', '?' and the escape char '\' are valid characters in
-volume, directory and file names on Mac OS. Hence, if you want to match
-a '*', '?' or '\' literally, you have to escape these characters. Due to
-perl's quoting rules, things may get a bit complicated, when you want to
-match a string like '\*' literally, or when you want to match '\' literally,
-but treat the immediately following character '*' as metachar. So, here's a
-rule of thumb (applies to both single- and double-quoted strings): escape
-each '*' or '?' or '\' with a backslash, if you want to treat them literally,
-and then double each backslash and your are done. E.g.
-
-- Match '\*' literally
-
- escape both '\' and '*' : '\\\*'
- double the backslashes : '\\\\\\*'
-
-(Internally, the glob routine sees a '\\\*', which means that both '\' and
-'*' are escaped.)
-
-
-- Match '\' literally, treat '*' as metachar
-
- escape '\' but not '*' : '\\*'
- double the backslashes : '\\\\*'
-
-(Internally, the glob routine sees a '\\*', which means that '\' is escaped and
-'*' is not.)
-
-Note that you also have to quote literal spaces in the glob pattern, as described
-above.
-
-=back
-
-=head1 EXPORTS (by request only)
-
-glob()
-
-=head1 BUGS
-
-Should probably be built into the core, and needs to stop
-pandering to DOS habits. Needs a dose of optimizium too.
-
-=head1 AUTHOR
-
-Gurusamy Sarathy <gsar@activestate.com>
-
-=head1 HISTORY
-
-=over 4
-
-=item *
-
-Support for globally overriding glob() (GSAR 3-JUN-98)
-
-=item *
-
-Scalar context, independent iterator context fixes (GSAR 15-SEP-97)
-
-=item *
-
-A few dir-vs-file optimizations result in glob importation being
-10 times faster than using perlglob.exe, and using perlglob.bat is
-only twice as slow as perlglob.exe (GSAR 28-MAY-97)
-
-=item *
-
-Several cleanups prompted by lack of compatible perlglob.exe
-under Borland (GSAR 27-MAY-97)
-
-=item *
-
-Initial version (GSAR 20-FEB-97)
-
-=back
-
-=head1 SEE ALSO
-
-perl
-
-perlglob.bat
-
-Text::ParseWords
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/File/Find.pm b/Master/tlpkg/tlperl/lib/File/Find.pm
deleted file mode 100644
index 497051e0635..00000000000
--- a/Master/tlpkg/tlperl/lib/File/Find.pm
+++ /dev/null
@@ -1,1275 +0,0 @@
-package File::Find;
-use 5.006;
-use strict;
-use warnings;
-use warnings::register;
-our $VERSION = '1.10';
-require Exporter;
-require Cwd;
-
-#
-# Modified to ensure sub-directory traversal order is not inverded by stack
-# push and pops. That is remains in the same order as in the directory file,
-# or user pre-processing (EG:sorted).
-#
-
-=head1 NAME
-
-File::Find - Traverse a directory tree.
-
-=head1 SYNOPSIS
-
- use File::Find;
- find(\&wanted, @directories_to_search);
- sub wanted { ... }
-
- use File::Find;
- finddepth(\&wanted, @directories_to_search);
- sub wanted { ... }
-
- use File::Find;
- find({ wanted => \&process, follow => 1 }, '.');
-
-=head1 DESCRIPTION
-
-These are functions for searching through directory trees doing work
-on each file found similar to the Unix I<find> command. File::Find
-exports two functions, C<find> and C<finddepth>. They work similarly
-but have subtle differences.
-
-=over 4
-
-=item B<find>
-
- find(\&wanted, @directories);
- find(\%options, @directories);
-
-C<find()> does a depth-first search over the given C<@directories> in
-the order they are given. For each file or directory found, it calls
-the C<&wanted> subroutine. (See below for details on how to use the
-C<&wanted> function). Additionally, for each directory found, it will
-C<chdir()> into that directory and continue the search, invoking the
-C<&wanted> function on each file or subdirectory in the directory.
-
-=item B<finddepth>
-
- finddepth(\&wanted, @directories);
- finddepth(\%options, @directories);
-
-C<finddepth()> works just like C<find()> except that is invokes the
-C<&wanted> function for a directory I<after> invoking it for the
-directory's contents. It does a postorder traversal instead of a
-preorder traversal, working from the bottom of the directory tree up
-where C<find()> works from the top of the tree down.
-
-=back
-
-=head2 %options
-
-The first argument to C<find()> is either a code reference to your
-C<&wanted> function, or a hash reference describing the operations
-to be performed for each file. The
-code reference is described in L<The wanted function> below.
-
-Here are the possible keys for the hash:
-
-=over 3
-
-=item C<wanted>
-
-The value should be a code reference. This code reference is
-described in L<The wanted function> below.
-
-=item C<bydepth>
-
-Reports the name of a directory only AFTER all its entries
-have been reported. Entry point C<finddepth()> is a shortcut for
-specifying C<<{ bydepth => 1 }>> in the first argument of C<find()>.
-
-=item C<preprocess>
-
-The value should be a code reference. This code reference is used to
-preprocess the current directory. The name of the currently processed
-directory is in C<$File::Find::dir>. Your preprocessing function is
-called after C<readdir()>, but before the loop that calls the C<wanted()>
-function. It is called with a list of strings (actually file/directory
-names) and is expected to return a list of strings. The code can be
-used to sort the file/directory names alphabetically, numerically,
-or to filter out directory entries based on their name alone. When
-I<follow> or I<follow_fast> are in effect, C<preprocess> is a no-op.
-
-=item C<postprocess>
-
-The value should be a code reference. It is invoked just before leaving
-the currently processed directory. It is called in void context with no
-arguments. The name of the current directory is in C<$File::Find::dir>. This
-hook is handy for summarizing a directory, such as calculating its disk
-usage. When I<follow> or I<follow_fast> are in effect, C<postprocess> is a
-no-op.
-
-=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 guaranteed that an I<lstat> has been called before the user's
-C<wanted()> function is called. This enables fast file checks involving S<_>.
-Note that this guarantee no longer holds if I<follow> or I<follow_fast>
-are not set.
-
-=item *
-
-There is a variable C<$File::Find::fullname> which holds the absolute
-pathname of the file with all symbolic links resolved. If the link is
-a dangling symbolic link, then fullname will be set to C<undef>.
-
-=back
-
-This is a no-op on Win32.
-
-=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 C<wanted()> function)
-is worse than just taking time, the option I<follow> should be used.
-
-This is also a no-op on Win32.
-
-=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
-directories but to proceed normally otherwise.
-
-=item C<dangling_symlinks>
-
-If true and a code reference, will be called with the symbolic link
-name and the directory it lives in as arguments. Otherwise, if true
-and warnings are on, warning "symbolic_link_name is a dangling
-symbolic link\n" will be issued. If false, the dangling symbolic link
-will be silently ignored.
-
-=item C<no_chdir>
-
-Does not C<chdir()> to each directory as it recurses. The C<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 chdir'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. If this option is used while
-not in taint-mode, C<untaint> is a no-op.
-
-=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 parentheses are vital.
-
-=item C<untaint_skip>
-
-If set, a directory which fails the I<untaint_pattern> is skipped,
-including all its sub-directories. The default is to 'die' in such a case.
-
-=back
-
-=head2 The wanted function
-
-The C<wanted()> function does whatever verifications you want on
-each file and directory. Note that despite its name, the C<wanted()>
-function is a generic callback function, and does B<not> tell
-File::Find if a file is "wanted" or not. In fact, its return value
-is ignored.
-
-The wanted function takes no arguments but rather does its work
-through a collection of variables.
-
-=over 4
-
-=item C<$File::Find::dir> is the current directory name,
-
-=item C<$_> is the current filename within that directory
-
-=item C<$File::Find::name> is the complete pathname to the file.
-
-=back
-
-Don't modify these variables.
-
-For example, when examining the file F</some/path/foo.ext> you will have:
-
- $File::Find::dir = /some/path/
- $_ = foo.ext
- $File::Find::name = /some/path/foo.ext
-
-You are chdir()'d to C<$File::Find::dir> when the function is called,
-unless C<no_chdir> was specified. Note that when changing to
-directories is in effect the root directory (F</>) is a somewhat
-special case inasmuch as the concatenation of C<$File::Find::dir>,
-C<'/'> and C<$_> is not literally equal to C<$File::Find::name>. The
-table below summarizes all variants:
-
- $File::Find::name $File::Find::dir $_
- default / / .
- no_chdir=>0 /etc / etc
- /etc/x /etc x
-
- no_chdir=>1 / / /
- /etc / /etc
- /etc/x /etc /etc/x
-
-
-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
-
-produces something like:
-
- sub wanted {
- /^\.nfs.*\z/s &&
- (($dev, $ino, $mode, $nlink, $uid, $gid) = lstat($_)) &&
- int(-M _) > 7 &&
- unlink($_)
- ||
- ($nlink || (($dev, $ino, $mode, $nlink, $uid, $gid) = lstat($_))) &&
- $dev < 0 &&
- ($File::Find::prune = 1);
- }
-
-Notice the C<_> in the above C<int(-M _)>: the C<_> is a magical
-filehandle that caches the information from the preceding
-C<stat()>, C<lstat()>, or filetest.
-
-Here's another interesting wanted function. It will find all symbolic
-links that don't resolve:
-
- sub wanted {
- -l && !-e && print "bogus link: $File::Find::name\n";
- }
-
-See also the script C<pfind> on CPAN for a nice application of this
-module.
-
-=head1 WARNINGS
-
-If you run your program with the C<-w> switch, or if you use the
-C<warnings> pragma, File::Find will report warnings for several weird
-situations. You can disable these warnings by putting the statement
-
- no warnings 'File::Find';
-
-in the appropriate scope. See L<perllexwarn> for more info about lexical
-warnings.
-
-=head1 CAVEAT
-
-=over 2
-
-=item $dont_use_nlink
-
-You can set the variable C<$File::Find::dont_use_nlink> to 1, if you want to
-force File::Find to always stat directories. This was used for file systems
-that do not have an C<nlink> count matching the number of sub-directories.
-Examples are ISO-9660 (CD-ROM), AFS, HPFS (OS/2 file system), FAT (DOS file
-system) and a couple of others.
-
-You shouldn't need to set this variable, since File::Find should now detect
-such file systems on-the-fly and switch itself to using stat. This works even
-for parts of your file system, like a mounted CD-ROM.
-
-If you do set C<$File::Find::dont_use_nlink> to 1, you will notice slow-downs.
-
-=item symlinks
-
-Be aware that the option to follow symbolic 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.
-
-=back
-
-=head1 NOTES
-
-=over 4
-
-=item *
-
-Mac OS (Classic) users should note a few differences:
-
-=over 4
-
-=item *
-
-The path separator is ':', not '/', and the current directory is denoted
-as ':', not '.'. You should be careful about specifying relative pathnames.
-While a full path always begins with a volume name, a relative pathname
-should always begin with a ':'. If specifying a volume name only, a
-trailing ':' is required.
-
-=item *
-
-C<$File::Find::dir> is guaranteed to end with a ':'. If C<$_>
-contains the name of a directory, that name may or may not end with a
-':'. Likewise, C<$File::Find::name>, which contains the complete
-pathname to that directory, and C<$File::Find::fullname>, which holds
-the absolute pathname of that directory with all symbolic links resolved,
-may or may not end with a ':'.
-
-=item *
-
-The default C<untaint_pattern> (see above) on Mac OS is set to
-C<qr|^(.+)$|>. Note that the parentheses are vital.
-
-=item *
-
-The invisible system file "Icon\015" is ignored. While this file may
-appear in every directory, there are some more invisible system files
-on every volume, which are all located at the volume root level (i.e.
-"MacintoshHD:"). These system files are B<not> excluded automatically.
-Your filter may use the following code to recognize invisible files or
-directories (requires Mac::Files):
-
- use Mac::Files;
-
- # invisible() -- returns 1 if file/directory is invisible,
- # 0 if it's visible or undef if an error occurred
-
- sub invisible($) {
- my $file = shift;
- my ($fileCat, $fileInfo);
- my $invisible_flag = 1 << 14;
-
- if ( $fileCat = FSpGetCatInfo($file) ) {
- if ($fileInfo = $fileCat->ioFlFndrInfo() ) {
- return (($fileInfo->fdFlags & $invisible_flag) && 1);
- }
- }
- return undef;
- }
-
-Generally, invisible files are system files, unless an odd application
-decides to use invisible files for its own purposes. To distinguish
-such files from system files, you have to look at the B<type> and B<creator>
-file attributes. The MacPerl built-in functions C<GetFileInfo(FILE)> and
-C<SetFileInfo(CREATOR, TYPE, FILES)> offer access to these attributes
-(see MacPerl.pm for details).
-
-Files that appear on the desktop actually reside in an (hidden) directory
-named "Desktop Folder" on the particular disk volume. Note that, although
-all desktop files appear to be on the same "virtual" desktop, each disk
-volume actually maintains its own "Desktop Folder" directory.
-
-=back
-
-=back
-
-=head1 BUGS AND CAVEATS
-
-Despite the name of the C<finddepth()> function, both C<find()> and
-C<finddepth()> perform a depth-first search of the directory
-hierarchy.
-
-=head1 HISTORY
-
-File::Find used to produce incorrect results if called recursively.
-During the development of perl 5.8 this bug was fixed.
-The first fixed version of File::Find was 1.01.
-
-=cut
-
-our @ISA = qw(Exporter);
-our @EXPORT = qw(find finddepth);
-
-
-use strict;
-my $Is_VMS;
-my $Is_MacOS;
-
-require File::Basename;
-require File::Spec;
-
-# Should ideally be my() not our() but local() currently
-# refuses to operate on lexicals
-
-our %SLnkSeen;
-our ($wanted_callback, $avoid_nlink, $bydepth, $no_chdir, $follow,
- $follow_skip, $full_check, $untaint, $untaint_skip, $untaint_pat,
- $pre_process, $post_process, $dangling_symlinks);
-
-sub contract_name {
- my ($cdir,$fn) = @_;
-
- return substr($cdir,0,rindex($cdir,'/')) if $fn eq $File::Find::current_dir;
-
- $cdir = substr($cdir,0,rindex($cdir,'/')+1);
-
- $fn =~ s|^\./||;
-
- my $abs_name= $cdir . $fn;
-
- if (substr($fn,0,3) eq '../') {
- 1 while $abs_name =~ s!/[^/]*/\.\./!/!;
- }
-
- return $abs_name;
-}
-
-# return the absolute name of a directory or file
-sub contract_name_Mac {
- my ($cdir,$fn) = @_;
- my $abs_name;
-
- if ($fn =~ /^(:+)(.*)$/) { # valid pathname starting with a ':'
-
- my $colon_count = length ($1);
- if ($colon_count == 1) {
- $abs_name = $cdir . $2;
- return $abs_name;
- }
- else {
- # need to move up the tree, but
- # only if it's not a volume name
- for (my $i=1; $i<$colon_count; $i++) {
- unless ($cdir =~ /^[^:]+:$/) { # volume name
- $cdir =~ s/[^:]+:$//;
- }
- else {
- return undef;
- }
- }
- $abs_name = $cdir . $2;
- return $abs_name;
- }
-
- }
- else {
-
- # $fn may be a valid path to a directory or file or (dangling)
- # symlink, without a leading ':'
- if ( (-e $fn) || (-l $fn) ) {
- if ($fn =~ /^[^:]+:/) { # a volume name like DataHD:*
- return $fn; # $fn is already an absolute path
- }
- else {
- $abs_name = $cdir . $fn;
- return $abs_name;
- }
- }
- else { # argh!, $fn is not a valid directory/file
- return undef;
- }
- }
-}
-
-sub PathCombine($$) {
- my ($Base,$Name) = @_;
- my $AbsName;
-
- if ($Is_MacOS) {
- # $Name is the resolved symlink (always a full path on MacOS),
- # i.e. there's no need to call contract_name_Mac()
- $AbsName = $Name;
-
- # (simple) check for recursion
- if ( ( $Base =~ /^$AbsName/) && (-d $AbsName) ) { # recursion
- return undef;
- }
- }
- else {
- 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 && defined $DEV && $SLnkSeen{$DEV, $INO}++) {
- if ( ($follow_skip < 1) || ((-d _) && ($follow_skip < 2)) ) {
- die "$AbsName encountered a second time";
- }
- else {
- return undef;
- }
- }
-
- return $AbsName;
-}
-
-our($dir, $name, $fullname, $prune);
-sub _find_dir_symlnk($$$);
-sub _find_dir($$$);
-
-# check whether or not a scalar variable is tainted
-# (code straight from the Camel, 3rd ed., page 561)
-sub is_tainted_pp {
- my $arg = shift;
- my $nada = substr($arg, 0, 0); # zero-length
- local $@;
- eval { eval "# $nada" };
- return length($@) != 0;
-}
-
-sub _find_opt {
- my $wanted = shift;
- die "invalid top directory" unless defined $_[0];
-
- # This function must local()ize everything because callbacks may
- # call find() or finddepth()
-
- local %SLnkSeen;
- local ($wanted_callback, $avoid_nlink, $bydepth, $no_chdir, $follow,
- $follow_skip, $full_check, $untaint, $untaint_skip, $untaint_pat,
- $pre_process, $post_process, $dangling_symlinks);
- local($dir, $name, $fullname, $prune);
- local *_ = \my $a;
-
- my $cwd = $wanted->{bydepth} ? Cwd::fastcwd() : Cwd::getcwd();
- my $cwd_untainted = $cwd;
- my $check_t_cwd = 1;
- $wanted_callback = $wanted->{wanted};
- $bydepth = $wanted->{bydepth};
- $pre_process = $wanted->{preprocess};
- $post_process = $wanted->{postprocess};
- $no_chdir = $wanted->{no_chdir};
- $full_check = $^O eq 'MSWin32' ? 0 : $wanted->{follow};
- $follow = $^O eq 'MSWin32' ? 0 :
- $full_check || $wanted->{follow_fast};
- $follow_skip = $wanted->{follow_skip};
- $untaint = $wanted->{untaint};
- $untaint_pat = $wanted->{untaint_pattern};
- $untaint_skip = $wanted->{untaint_skip};
- $dangling_symlinks = $wanted->{dangling_symlinks};
-
- # for compatibility reasons (find.pl, find2perl)
- local 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;
-
- my ($abs_dir, $Is_Dir);
-
- Proc_Top_Item:
- foreach my $TOP (@_) {
- my $top_item = $TOP;
-
- ($topdev,$topino,$topmode,$topnlink) = $follow ? stat $top_item : lstat $top_item;
-
- if ($Is_MacOS) {
- $top_item = ":$top_item"
- if ( (-d _) && ( $top_item !~ /:/ ) );
- } elsif ($^O eq 'MSWin32') {
- $top_item =~ s|/\z|| unless $top_item =~ m|\w:/$|;
- }
- else {
- $top_item =~ s|/\z|| unless $top_item eq '/';
- }
-
- $Is_Dir= 0;
-
- if ($follow) {
-
- if ($Is_MacOS) {
- $cwd = "$cwd:" unless ($cwd =~ /:$/); # for safety
-
- if ($top_item eq $File::Find::current_dir) {
- $abs_dir = $cwd;
- }
- else {
- $abs_dir = contract_name_Mac($cwd, $top_item);
- unless (defined $abs_dir) {
- warnings::warnif "Can't determine absolute path for $top_item (No such file or directory)\n";
- next Proc_Top_Item;
- }
- }
-
- }
- else {
- if (substr($top_item,0,1) eq '/') {
- $abs_dir = $top_item;
- }
- elsif ($top_item eq $File::Find::current_dir) {
- $abs_dir = $cwd;
- }
- else { # care about any ../
- $abs_dir = contract_name("$cwd/",$top_item);
- }
- }
- $abs_dir= Follow_SymLink($abs_dir);
- unless (defined $abs_dir) {
- if ($dangling_symlinks) {
- if (ref $dangling_symlinks eq 'CODE') {
- $dangling_symlinks->($top_item, $cwd);
- } else {
- warnings::warnif "$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) {
- warnings::warnif "Can't stat $top_item: $!\n";
- next Proc_Top_Item;
- }
- if (-d _) {
- $top_item =~ s/\.dir\z//i 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)) {
- if ($Is_MacOS) {
- ($dir,$_) = (':', $top_item); # $File::Find::dir, $_
- }
- else {
- ($dir,$_) = ('./', $top_item);
- }
- }
-
- $abs_dir = $dir;
- if (( $untaint ) && (is_tainted($dir) )) {
- ( $abs_dir ) = $dir =~ m|$untaint_pat|;
- unless (defined $abs_dir) {
- if ($untaint_skip == 0) {
- die "directory $dir is still tainted";
- }
- else {
- next Proc_Top_Item;
- }
- }
- }
-
- unless ($no_chdir || chdir $abs_dir) {
- warnings::warnif "Couldn't chdir $abs_dir: $!\n";
- next Proc_Top_Item;
- }
-
- $name = $abs_dir . $_; # $File::Find::name
- $_ = $name if $no_chdir;
-
- { $wanted_callback->() }; # protect against wild "next"
-
- }
-
- unless ( $no_chdir ) {
- if ( ($check_t_cwd) && (($untaint) && (is_tainted($cwd) )) ) {
- ( $cwd_untainted ) = $cwd =~ m|$untaint_pat|;
- unless (defined $cwd_untainted) {
- die "insecure cwd in find(depth)";
- }
- $check_t_cwd = 0;
- }
- unless (chdir $cwd_untainted) {
- die "Can't cd to $cwd: $!\n";
- }
- }
- }
-}
-
-# 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;
- my $dir_rel = $File::Find::current_dir;
- my $tainted = 0;
- my $no_nlink;
-
- if ($Is_MacOS) {
- $dir_pref= ($p_dir =~ /:$/) ? $p_dir : "$p_dir:"; # preface
- } elsif ($^O eq 'MSWin32') {
- $dir_pref = ($p_dir =~ m|\w:/$| ? $p_dir : "$p_dir/" );
- }
- else {
- $dir_pref= ( $p_dir eq '/' ? '/' : "$p_dir/" );
- }
-
- local ($dir, $name, $prune, *DIR);
-
- unless ( $no_chdir || ($p_dir eq $File::Find::current_dir)) {
- my $udir = $p_dir;
- if (( $untaint ) && (is_tainted($p_dir) )) {
- ( $udir ) = $p_dir =~ m|$untaint_pat|;
- unless (defined $udir) {
- if ($untaint_skip == 0) {
- die "directory $p_dir is still tainted";
- }
- else {
- return;
- }
- }
- }
- unless (chdir ($Is_VMS && $udir !~ /[\/\[<]+/ ? "./$udir" : $udir)) {
- warnings::warnif "Can't cd to $udir: $!\n";
- return;
- }
- }
-
- # push the starting directory
- push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth;
-
- if ($Is_MacOS) {
- $p_dir = $dir_pref; # ensure trailing ':'
- }
-
- while (defined $SE) {
- unless ($bydepth) {
- $dir= $p_dir; # $File::Find::dir
- $name= $dir_name; # $File::Find::name
- $_= ($no_chdir ? $dir_name : $dir_rel ); # $_
- # prune may happen here
- $prune= 0;
- { $wanted_callback->() }; # protect against wild "next"
- next if $prune;
- }
-
- # change to that directory
- unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) {
- my $udir= $dir_rel;
- if ( ($untaint) && (($tainted) || ($tainted = is_tainted($dir_rel) )) ) {
- ( $udir ) = $dir_rel =~ m|$untaint_pat|;
- unless (defined $udir) {
- if ($untaint_skip == 0) {
- if ($Is_MacOS) {
- die "directory ($p_dir) $dir_rel is still tainted";
- }
- else {
- die "directory (" . ($p_dir ne '/' ? $p_dir : '') . "/) $dir_rel is still tainted";
- }
- } else { # $untaint_skip == 1
- next;
- }
- }
- }
- unless (chdir ($Is_VMS && $udir !~ /[\/\[<]+/ ? "./$udir" : $udir)) {
- if ($Is_MacOS) {
- warnings::warnif "Can't cd to ($p_dir) $udir: $!\n";
- }
- else {
- warnings::warnif "Can't cd to (" .
- ($p_dir ne '/' ? $p_dir : '') . "/) $udir: $!\n";
- }
- next;
- }
- $CdLvl++;
- }
-
- if ($Is_MacOS) {
- $dir_name = "$dir_name:" unless ($dir_name =~ /:$/);
- }
-
- $dir= $dir_name; # $File::Find::dir
-
- # Get the list of files in the current directory.
- unless (opendir DIR, ($no_chdir ? $dir_name : $File::Find::current_dir)) {
- warnings::warnif "Can't opendir($dir_name): $!\n";
- next;
- }
- @filenames = readdir DIR;
- closedir(DIR);
- @filenames = $pre_process->(@filenames) if $pre_process;
- push @Stack,[$CdLvl,$dir_name,"",-2] if $post_process;
-
- # default: use whatever was specifid
- # (if $nlink >= 2, and $avoid_nlink == 0, this will switch back)
- $no_nlink = $avoid_nlink;
- # if dir has wrong nlink count, force switch to slower stat method
- $no_nlink = 1 if ($nlink < 2);
-
- if ($nlink == 2 && !$no_nlink) {
- # This dir has no subdirectories.
- for my $FN (@filenames) {
- next if $FN =~ $File::Find::skip_pattern;
-
- $name = $dir_pref . $FN; # $File::Find::name
- $_ = ($no_chdir ? $name : $FN); # $_
- { $wanted_callback->() }; # protect against wild "next"
- }
-
- }
- else {
- # This dir has subdirectories.
- $subcount = $nlink - 2;
-
- # HACK: insert directories at this position. so as to preserve
- # the user pre-processed ordering of files.
- # EG: directory traversal is in user sorted order, not at random.
- my $stack_top = @Stack;
-
- for my $FN (@filenames) {
- next if $FN =~ $File::Find::skip_pattern;
- if ($subcount > 0 || $no_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//i if $Is_VMS;
- # HACK: replace push to preserve dir traversal order
- #push @Stack,[$CdLvl,$dir_name,$FN,$sub_nlink];
- splice @Stack, $stack_top, 0,
- [$CdLvl,$dir_name,$FN,$sub_nlink];
- }
- else {
- $name = $dir_pref . $FN; # $File::Find::name
- $_= ($no_chdir ? $name : $FN); # $_
- { $wanted_callback->() }; # protect against wild "next"
- }
- }
- else {
- $name = $dir_pref . $FN; # $File::Find::name
- $_= ($no_chdir ? $name : $FN); # $_
- { $wanted_callback->() }; # protect against wild "next"
- }
- }
- }
- }
- continue {
- while ( defined ($SE = pop @Stack) ) {
- ($Level, $p_dir, $dir_rel, $nlink) = @$SE;
- if ($CdLvl > $Level && !$no_chdir) {
- my $tmp;
- if ($Is_MacOS) {
- $tmp = (':' x ($CdLvl-$Level)) . ':';
- }
- else {
- $tmp = join('/',('..') x ($CdLvl-$Level));
- }
- die "Can't cd to $dir_name" . $tmp
- unless chdir ($tmp);
- $CdLvl = $Level;
- }
-
- if ($Is_MacOS) {
- # $pdir always has a trailing ':', except for the starting dir,
- # where $dir_rel eq ':'
- $dir_name = "$p_dir$dir_rel";
- $dir_pref = "$dir_name:";
- }
- elsif ($^O eq 'MSWin32') {
- $dir_name = ($p_dir =~ m|\w:/$| ? "$p_dir$dir_rel" : "$p_dir/$dir_rel");
- $dir_pref = "$dir_name/";
- }
- else {
- $dir_name = ($p_dir eq '/' ? "/$dir_rel" : "$p_dir/$dir_rel");
- $dir_pref = "$dir_name/";
- }
-
- if ( $nlink == -2 ) {
- $name = $dir = $p_dir; # $File::Find::name / dir
- $_ = $File::Find::current_dir;
- $post_process->(); # End-of-directory processing
- }
- elsif ( $nlink < 0 ) { # must be finddepth, report dirname now
- $name = $dir_name;
- if ($Is_MacOS) {
- if ($dir_rel eq ':') { # must be the top dir, where we started
- $name =~ s|:$||; # $File::Find::name
- $p_dir = "$p_dir:" unless ($p_dir =~ /:$/);
- }
- $dir = $p_dir; # $File::Find::dir
- $_ = ($no_chdir ? $name : $dir_rel); # $_
- }
- else {
- if ( substr($name,-2) eq '/.' ) {
- substr($name, length($name) == 2 ? -1 : -2) = '';
- }
- $dir = $p_dir;
- $_ = ($no_chdir ? $dir_name : $dir_rel );
- if ( substr($_,-2) eq '/.' ) {
- substr($_, length($_) == 2 ? -1 : -2) = '';
- }
- }
- { $wanted_callback->() }; # protect against wild "next"
- }
- else {
- push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth;
- last;
- }
- }
- }
-}
-
-
-# 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) = @_; # $dir_loc is the absolute directory
- my @Stack;
- my @filenames;
- my $new_loc;
- my $updir_loc = $dir_loc; # untainted parent directory
- my $SE = [];
- my $dir_name = $p_dir;
- my $dir_pref;
- my $loc_pref;
- my $dir_rel = $File::Find::current_dir;
- my $byd_flag; # flag for pending stack entry if $bydepth
- my $tainted = 0;
- my $ok = 1;
-
- if ($Is_MacOS) {
- $dir_pref = ($p_dir =~ /:$/) ? "$p_dir" : "$p_dir:";
- $loc_pref = ($dir_loc =~ /:$/) ? "$dir_loc" : "$dir_loc:";
- } else {
- $dir_pref = ( $p_dir eq '/' ? '/' : "$p_dir/" );
- $loc_pref = ( $dir_loc eq '/' ? '/' : "$dir_loc/" );
- }
-
- local ($dir, $name, $fullname, $prune, *DIR);
-
- unless ($no_chdir) {
- # untaint the topdir
- if (( $untaint ) && (is_tainted($dir_loc) )) {
- ( $updir_loc ) = $dir_loc =~ m|$untaint_pat|; # parent dir, now untainted
- # once untainted, $updir_loc is pushed on the stack (as parent directory);
- # hence, we don't need to untaint the parent directory every time we chdir
- # to it later
- unless (defined $updir_loc) {
- if ($untaint_skip == 0) {
- die "directory $dir_loc is still tainted";
- }
- else {
- return;
- }
- }
- }
- $ok = chdir($updir_loc) unless ($p_dir eq $File::Find::current_dir);
- unless ($ok) {
- warnings::warnif "Can't cd to $updir_loc: $!\n";
- return;
- }
- }
-
- push @Stack,[$dir_loc,$updir_loc,$p_dir,$dir_rel,-1] if $bydepth;
-
- if ($Is_MacOS) {
- $p_dir = $dir_pref; # ensure trailing ':'
- }
-
- while (defined $SE) {
-
- unless ($bydepth) {
- # change (back) to parent directory (always untainted)
- unless ($no_chdir) {
- unless (chdir $updir_loc) {
- warnings::warnif "Can't cd to $updir_loc: $!\n";
- next;
- }
- }
- $dir= $p_dir; # $File::Find::dir
- $name= $dir_name; # $File::Find::name
- $_= ($no_chdir ? $dir_name : $dir_rel ); # $_
- $fullname= $dir_loc; # $File::Find::fullname
- # prune may happen here
- $prune= 0;
- lstat($_); # make sure file tests with '_' work
- { $wanted_callback->() }; # protect against wild "next"
- next if $prune;
- }
-
- # change to that directory
- unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) {
- $updir_loc = $dir_loc;
- if ( ($untaint) && (($tainted) || ($tainted = is_tainted($dir_loc) )) ) {
- # untaint $dir_loc, what will be pushed on the stack as (untainted) parent dir
- ( $updir_loc ) = $dir_loc =~ m|$untaint_pat|;
- unless (defined $updir_loc) {
- if ($untaint_skip == 0) {
- die "directory $dir_loc is still tainted";
- }
- else {
- next;
- }
- }
- }
- unless (chdir $updir_loc) {
- warnings::warnif "Can't cd to $updir_loc: $!\n";
- next;
- }
- }
-
- if ($Is_MacOS) {
- $dir_name = "$dir_name:" unless ($dir_name =~ /:$/);
- }
-
- $dir = $dir_name; # $File::Find::dir
-
- # Get the list of files in the current directory.
- unless (opendir DIR, ($no_chdir ? $dir_loc : $File::Find::current_dir)) {
- warnings::warnif "Can't opendir($dir_loc): $!\n";
- next;
- }
- @filenames = readdir DIR;
- closedir(DIR);
-
- for my $FN (@filenames) {
- next if $FN =~ $File::Find::skip_pattern;
-
- # follow symbolic links / do an lstat
- $new_loc = Follow_SymLink($loc_pref.$FN);
-
- # ignore if invalid symlink
- unless (defined $new_loc) {
- if ($dangling_symlinks) {
- if (ref $dangling_symlinks eq 'CODE') {
- $dangling_symlinks->($FN, $dir_pref);
- } else {
- warnings::warnif "$dir_pref$FN is a dangling symbolic link\n";
- }
- }
-
- $fullname = undef;
- $name = $dir_pref . $FN;
- $_ = ($no_chdir ? $name : $FN);
- { $wanted_callback->() };
- next;
- }
-
- if (-d _) {
- push @Stack,[$new_loc,$updir_loc,$dir_name,$FN,1];
- }
- else {
- $fullname = $new_loc; # $File::Find::fullname
- $name = $dir_pref . $FN; # $File::Find::name
- $_ = ($no_chdir ? $name : $FN); # $_
- { $wanted_callback->() }; # protect against wild "next"
- }
- }
-
- }
- continue {
- while (defined($SE = pop @Stack)) {
- ($dir_loc, $updir_loc, $p_dir, $dir_rel, $byd_flag) = @$SE;
- if ($Is_MacOS) {
- # $p_dir always has a trailing ':', except for the starting dir,
- # where $dir_rel eq ':'
- $dir_name = "$p_dir$dir_rel";
- $dir_pref = "$dir_name:";
- $loc_pref = ($dir_loc =~ /:$/) ? $dir_loc : "$dir_loc:";
- }
- else {
- $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 || ($dir_rel eq $File::Find::current_dir)) {
- unless (chdir $updir_loc) { # $updir_loc (parent dir) is always untainted
- warnings::warnif "Can't cd to $updir_loc: $!\n";
- next;
- }
- }
- $fullname = $dir_loc; # $File::Find::fullname
- $name = $dir_name; # $File::Find::name
- if ($Is_MacOS) {
- if ($dir_rel eq ':') { # must be the top dir, where we started
- $name =~ s|:$||; # $File::Find::name
- $p_dir = "$p_dir:" unless ($p_dir =~ /:$/);
- }
- $dir = $p_dir; # $File::Find::dir
- $_ = ($no_chdir ? $name : $dir_rel); # $_
- }
- else {
- if ( substr($name,-2) eq '/.' ) {
- substr($name, length($name) == 2 ? -1 : -2) = ''; # $File::Find::name
- }
- $dir = $p_dir; # $File::Find::dir
- $_ = ($no_chdir ? $dir_name : $dir_rel); # $_
- if ( substr($_,-2) eq '/.' ) {
- substr($_, length($_) == 2 ? -1 : -2) = '';
- }
- }
-
- lstat($_); # make sure file tests with '_' work
- { $wanted_callback->() }; # protect against wild "next"
- }
- else {
- push @Stack,[$dir_loc, $updir_loc, $p_dir, $dir_rel,-1] if $bydepth;
- last;
- }
- }
- }
-}
-
-
-sub wrap_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} = $File::Find::untaint_pattern
- 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), @_);
-}
-
-sub finddepth {
- my $wanted = wrap_wanted(shift);
- $wanted->{bydepth} = 1;
- _find_opt($wanted, @_);
-}
-
-# default
-$File::Find::skip_pattern = qr/^\.{1,2}\z/;
-$File::Find::untaint_pattern = qr|^([-+@\w./]+)$|;
-
-# These are hard-coded for now, but may move to hint files.
-if ($^O eq 'VMS') {
- $Is_VMS = 1;
- $File::Find::dont_use_nlink = 1;
-}
-elsif ($^O eq 'MacOS') {
- $Is_MacOS = 1;
- $File::Find::dont_use_nlink = 1;
- $File::Find::skip_pattern = qr/^Icon\015\z/;
- $File::Find::untaint_pattern = qr|^(.+)$|;
-}
-
-# this _should_ work properly on all platforms
-# where File::Find can be expected to work
-$File::Find::current_dir = File::Spec->curdir || '.';
-
-$File::Find::dont_use_nlink = 1
- if $^O eq 'os2' || $^O eq 'dos' || $^O eq 'amigaos' || $^O eq 'MSWin32' ||
- $^O eq 'interix' || $^O eq 'cygwin' || $^O eq 'epoc' || $^O eq 'qnx' ||
- $^O eq 'nto';
-
-# 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 ($File::Find::dont_use_nlink) {
- require Config;
- $File::Find::dont_use_nlink = 1 if ($Config::Config{'dont_use_nlink'});
-}
-
-# We need a function that checks if a scalar is tainted. Either use the
-# Scalar::Util module's tainted() function or our (slower) pure Perl
-# fallback is_tainted_pp()
-{
- local $@;
- eval { require Scalar::Util };
- *is_tainted = $@ ? \&is_tainted_pp : \&Scalar::Util::tainted;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/File/Glob.pm b/Master/tlpkg/tlperl/lib/File/Glob.pm
deleted file mode 100644
index 133c650529b..00000000000
--- a/Master/tlpkg/tlperl/lib/File/Glob.pm
+++ /dev/null
@@ -1,496 +0,0 @@
-package File::Glob;
-
-use strict;
-our($VERSION, @ISA, @EXPORT_OK, @EXPORT_FAIL, %EXPORT_TAGS,
- $AUTOLOAD, $DEFAULT_FLAGS);
-
-use XSLoader ();
-
-@ISA = qw(Exporter);
-
-# NOTE: The glob() export is only here for compatibility with 5.6.0.
-# csh_glob() should not be used directly, unless you know what you're doing.
-
-@EXPORT_OK = qw(
- csh_glob
- bsd_glob
- glob
- GLOB_ABEND
- GLOB_ALPHASORT
- GLOB_ALTDIRFUNC
- GLOB_BRACE
- GLOB_CSH
- GLOB_ERR
- GLOB_ERROR
- GLOB_LIMIT
- GLOB_MARK
- GLOB_NOCASE
- GLOB_NOCHECK
- GLOB_NOMAGIC
- GLOB_NOSORT
- GLOB_NOSPACE
- GLOB_QUOTE
- GLOB_TILDE
-);
-
-%EXPORT_TAGS = (
- 'glob' => [ qw(
- GLOB_ABEND
- GLOB_ALPHASORT
- GLOB_ALTDIRFUNC
- GLOB_BRACE
- GLOB_CSH
- GLOB_ERR
- GLOB_ERROR
- GLOB_LIMIT
- GLOB_MARK
- GLOB_NOCASE
- GLOB_NOCHECK
- GLOB_NOMAGIC
- GLOB_NOSORT
- GLOB_NOSPACE
- GLOB_QUOTE
- GLOB_TILDE
- glob
- bsd_glob
- ) ],
-);
-
-$VERSION = '1.05';
-
-sub import {
- require Exporter;
- my $i = 1;
- while ($i < @_) {
- if ($_[$i] =~ /^:(case|nocase|globally)$/) {
- splice(@_, $i, 1);
- $DEFAULT_FLAGS &= ~GLOB_NOCASE() if $1 eq 'case';
- $DEFAULT_FLAGS |= GLOB_NOCASE() if $1 eq 'nocase';
- if ($1 eq 'globally') {
- local $^W;
- *CORE::GLOBAL::glob = \&File::Glob::csh_glob;
- }
- next;
- }
- ++$i;
- }
- goto &Exporter::import;
-}
-
-sub AUTOLOAD {
- # This AUTOLOAD is used to 'autoload' constants from the constant()
- # XS function. If a constant is not found then control is passed
- # to the AUTOLOAD in AutoLoader.
-
- my $constname;
- ($constname = $AUTOLOAD) =~ s/.*:://;
- my ($error, $val) = constant($constname);
- if ($error) {
- require Carp;
- Carp::croak($error);
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-XSLoader::load 'File::Glob', $VERSION;
-
-# Preloaded methods go here.
-
-sub GLOB_ERROR {
- return (constant('GLOB_ERROR'))[1];
-}
-
-sub GLOB_CSH () {
- GLOB_BRACE()
- | GLOB_NOMAGIC()
- | GLOB_QUOTE()
- | GLOB_TILDE()
- | GLOB_ALPHASORT()
-}
-
-$DEFAULT_FLAGS = GLOB_CSH();
-if ($^O =~ /^(?:MSWin32|VMS|os2|dos|riscos|MacOS)$/) {
- $DEFAULT_FLAGS |= GLOB_NOCASE();
-}
-
-# Autoload methods go after =cut, and are processed by the autosplit program.
-
-sub bsd_glob {
- my ($pat,$flags) = @_;
- $flags = $DEFAULT_FLAGS if @_ < 2;
- return doglob($pat,$flags);
-}
-
-# File::Glob::glob() is deprecated because its prototype is different from
-# CORE::glob() (use bsd_glob() instead)
-sub glob {
- splice @_, 1; # don't pass PL_glob_index as flags!
- goto &bsd_glob;
-}
-
-## borrowed heavily from gsar's File::DosGlob
-my %iter;
-my %entries;
-
-sub csh_glob {
- my $pat = shift;
- my $cxix = shift;
- my @pat;
-
- # glob without args defaults to $_
- $pat = $_ unless defined $pat;
-
- # extract patterns
- $pat =~ s/^\s+//; # Protect against empty elements in
- $pat =~ s/\s+$//; # things like < *.c> and <*.c >.
- # These alone shouldn't trigger ParseWords.
- if ($pat =~ /\s/) {
- # XXX this is needed for compatibility with the csh
- # implementation in Perl. Need to support a flag
- # to disable this behavior.
- require Text::ParseWords;
- @pat = Text::ParseWords::parse_line('\s+',0,$pat);
- }
-
- # assume global context if not provided one
- $cxix = '_G_' unless defined $cxix;
- $iter{$cxix} = 0 unless exists $iter{$cxix};
-
- # if we're just beginning, do it all first
- if ($iter{$cxix} == 0) {
- if (@pat) {
- $entries{$cxix} = [ map { doglob($_, $DEFAULT_FLAGS) } @pat ];
- }
- else {
- $entries{$cxix} = [ doglob($pat, $DEFAULT_FLAGS) ];
- }
- }
-
- # chuck it all out, quick or slow
- if (wantarray) {
- delete $iter{$cxix};
- return @{delete $entries{$cxix}};
- }
- else {
- if ($iter{$cxix} = scalar @{$entries{$cxix}}) {
- return shift @{$entries{$cxix}};
- }
- else {
- # return undef for EOL
- delete $iter{$cxix};
- delete $entries{$cxix};
- return undef;
- }
- }
-}
-
-1;
-__END__
-
-=head1 NAME
-
-File::Glob - Perl extension for BSD glob routine
-
-=head1 SYNOPSIS
-
- use File::Glob ':glob';
-
- @list = bsd_glob('*.[ch]');
- $homedir = bsd_glob('~gnat', GLOB_TILDE | GLOB_ERR);
-
- if (GLOB_ERROR) {
- # an error occurred reading $homedir
- }
-
- ## override the core glob (CORE::glob() does this automatically
- ## by default anyway, since v5.6.0)
- use File::Glob ':globally';
- my @sources = <*.{c,h,y}>;
-
- ## override the core glob, forcing case sensitivity
- use File::Glob qw(:globally :case);
- my @sources = <*.{c,h,y}>;
-
- ## override the core glob forcing case insensitivity
- use File::Glob qw(:globally :nocase);
- my @sources = <*.{c,h,y}>;
-
- ## glob on all files in home directory
- use File::Glob ':globally';
- my @sources = <~gnat/*>;
-
-=head1 DESCRIPTION
-
-The glob angle-bracket operator C<< <> >> is a pathname generator that
-implements the rules for file name pattern matching used by Unix-like shells
-such as the Bourne shell or C shell.
-
-File::Glob::bsd_glob() implements the FreeBSD glob(3) routine, which is
-a superset of the POSIX glob() (described in IEEE Std 1003.2 "POSIX.2").
-bsd_glob() takes a mandatory C<pattern> argument, and an optional
-C<flags> argument, and returns a list of filenames matching the
-pattern, with interpretation of the pattern modified by the C<flags>
-variable.
-
-Since v5.6.0, Perl's CORE::glob() is implemented in terms of bsd_glob().
-Note that they don't share the same prototype--CORE::glob() only accepts
-a single argument. Due to historical reasons, CORE::glob() will also
-split its argument on whitespace, treating it as multiple patterns,
-whereas bsd_glob() considers them as one pattern.
-
-=head2 META CHARACTERS
-
- \ Quote the next metacharacter
- [] Character class
- {} Multiple pattern
- * Match any string of characters
- ? Match any single character
- ~ User name home directory
-
-The metanotation C<a{b,c,d}e> is a shorthand for C<abe ace ade>. Left to
-right order is preserved, with results of matches being sorted separately
-at a low level to preserve this order. As a special case C<{>, C<}>, and
-C<{}> are passed undisturbed.
-
-=head2 POSIX FLAGS
-
-The POSIX defined flags for bsd_glob() are:
-
-=over 4
-
-=item C<GLOB_ERR>
-
-Force bsd_glob() to return an error when it encounters a directory it
-cannot open or read. Ordinarily bsd_glob() continues to find matches.
-
-=item C<GLOB_LIMIT>
-
-Make bsd_glob() return an error (GLOB_NOSPACE) when the pattern expands
-to a size bigger than the system constant C<ARG_MAX> (usually found in
-limits.h). If your system does not define this constant, bsd_glob() uses
-C<sysconf(_SC_ARG_MAX)> or C<_POSIX_ARG_MAX> where available (in that
-order). You can inspect these values using the standard C<POSIX>
-extension.
-
-=item C<GLOB_MARK>
-
-Each pathname that is a directory that matches the pattern has a slash
-appended.
-
-=item C<GLOB_NOCASE>
-
-By default, file names are assumed to be case sensitive; this flag
-makes bsd_glob() treat case differences as not significant.
-
-=item C<GLOB_NOCHECK>
-
-If the pattern does not match any pathname, then bsd_glob() returns a list
-consisting of only the pattern. If C<GLOB_QUOTE> is set, its effect
-is present in the pattern returned.
-
-=item C<GLOB_NOSORT>
-
-By default, the pathnames are sorted in ascending ASCII order; this
-flag prevents that sorting (speeding up bsd_glob()).
-
-=back
-
-The FreeBSD extensions to the POSIX standard are the following flags:
-
-=over 4
-
-=item C<GLOB_BRACE>
-
-Pre-process the string to expand C<{pat,pat,...}> strings like csh(1).
-The pattern '{}' is left unexpanded for historical reasons (and csh(1)
-does the same thing to ease typing of find(1) patterns).
-
-=item C<GLOB_NOMAGIC>
-
-Same as C<GLOB_NOCHECK> but it only returns the pattern if it does not
-contain any of the special characters "*", "?" or "[". C<NOMAGIC> is
-provided to simplify implementing the historic csh(1) globbing
-behaviour and should probably not be used anywhere else.
-
-=item C<GLOB_QUOTE>
-
-Use the backslash ('\') character for quoting: every occurrence of a
-backslash followed by a character in the pattern is replaced by that
-character, avoiding any special interpretation of the character.
-(But see below for exceptions on DOSISH systems).
-
-=item C<GLOB_TILDE>
-
-Expand patterns that start with '~' to user name home directories.
-
-=item C<GLOB_CSH>
-
-For convenience, C<GLOB_CSH> is a synonym for
-C<GLOB_BRACE | GLOB_NOMAGIC | GLOB_QUOTE | GLOB_TILDE | GLOB_ALPHASORT>.
-
-=back
-
-The POSIX provided C<GLOB_APPEND>, C<GLOB_DOOFFS>, and the FreeBSD
-extensions C<GLOB_ALTDIRFUNC>, and C<GLOB_MAGCHAR> flags have not been
-implemented in the Perl version because they involve more complex
-interaction with the underlying C structures.
-
-The following flag has been added in the Perl implementation for
-csh compatibility:
-
-=over 4
-
-=item C<GLOB_ALPHASORT>
-
-If C<GLOB_NOSORT> is not in effect, sort filenames is alphabetical
-order (case does not matter) rather than in ASCII order.
-
-=back
-
-=head1 DIAGNOSTICS
-
-bsd_glob() returns a list of matching paths, possibly zero length. If an
-error occurred, &File::Glob::GLOB_ERROR will be non-zero and C<$!> will be
-set. &File::Glob::GLOB_ERROR is guaranteed to be zero if no error occurred,
-or one of the following values otherwise:
-
-=over 4
-
-=item C<GLOB_NOSPACE>
-
-An attempt to allocate memory failed.
-
-=item C<GLOB_ABEND>
-
-The glob was stopped because an error was encountered.
-
-=back
-
-In the case where bsd_glob() has found some matching paths, but is
-interrupted by an error, it will return a list of filenames B<and>
-set &File::Glob::ERROR.
-
-Note that bsd_glob() deviates from POSIX and FreeBSD glob(3) behaviour
-by not considering C<ENOENT> and C<ENOTDIR> as errors - bsd_glob() will
-continue processing despite those errors, unless the C<GLOB_ERR> flag is
-set.
-
-Be aware that all filenames returned from File::Glob are tainted.
-
-=head1 NOTES
-
-=over 4
-
-=item *
-
-If you want to use multiple patterns, e.g. C<bsd_glob("a* b*")>, you should
-probably throw them in a set as in C<bsd_glob("{a*,b*}")>. This is because
-the argument to bsd_glob() isn't subjected to parsing by the C shell.
-Remember that you can use a backslash to escape things.
-
-=item *
-
-On DOSISH systems, backslash is a valid directory separator character.
-In this case, use of backslash as a quoting character (via GLOB_QUOTE)
-interferes with the use of backslash as a directory separator. The
-best (simplest, most portable) solution is to use forward slashes for
-directory separators, and backslashes for quoting. However, this does
-not match "normal practice" on these systems. As a concession to user
-expectation, therefore, backslashes (under GLOB_QUOTE) only quote the
-glob metacharacters '[', ']', '{', '}', '-', '~', and backslash itself.
-All other backslashes are passed through unchanged.
-
-=item *
-
-Win32 users should use the real slash. If you really want to use
-backslashes, consider using Sarathy's File::DosGlob, which comes with
-the standard Perl distribution.
-
-=item *
-
-Mac OS (Classic) users should note a few differences. Since
-Mac OS is not Unix, when the glob code encounters a tilde glob (e.g.
-~user) and the C<GLOB_TILDE> flag is used, it simply returns that
-pattern without doing any expansion.
-
-Glob on Mac OS is case-insensitive by default (if you don't use any
-flags). If you specify any flags at all and still want glob
-to be case-insensitive, you must include C<GLOB_NOCASE> in the flags.
-
-The path separator is ':' (aka colon), not '/' (aka slash). Mac OS users
-should be careful about specifying relative pathnames. While a full path
-always begins with a volume name, a relative pathname should always
-begin with a ':'. If specifying a volume name only, a trailing ':' is
-required.
-
-The specification of pathnames in glob patterns adheres to the usual Mac
-OS conventions: The path separator is a colon ':', not a slash '/'. A
-full path always begins with a volume name. A relative pathname on Mac
-OS must always begin with a ':', except when specifying a file or
-directory name in the current working directory, where the leading colon
-is optional. If specifying a volume name only, a trailing ':' is
-required. Due to these rules, a glob like E<lt>*:E<gt> will find all
-mounted volumes, while a glob like E<lt>*E<gt> or E<lt>:*E<gt> will find
-all files and directories in the current directory.
-
-Note that updirs in the glob pattern are resolved before the matching begins,
-i.e. a pattern like "*HD:t?p::a*" will be matched as "*HD:a*". Note also,
-that a single trailing ':' in the pattern is ignored (unless it's a volume
-name pattern like "*HD:"), i.e. a glob like E<lt>:*:E<gt> will find both
-directories I<and> files (and not, as one might expect, only directories).
-You can, however, use the C<GLOB_MARK> flag to distinguish (without a file
-test) directory names from file names.
-
-If the C<GLOB_MARK> flag is set, all directory paths will have a ':' appended.
-Since a directory like 'lib:' is I<not> a valid I<relative> path on Mac OS,
-both a leading and a trailing colon will be added, when the directory name in
-question doesn't contain any colons (e.g. 'lib' becomes ':lib:').
-
-=back
-
-=head1 SEE ALSO
-
-L<perlfunc/glob>, glob(3)
-
-=head1 AUTHOR
-
-The Perl interface was written by Nathan Torkington E<lt>gnat@frii.comE<gt>,
-and is released under the artistic license. Further modifications were
-made by Greg Bacon E<lt>gbacon@cs.uah.eduE<gt>, Gurusamy Sarathy
-E<lt>gsar@activestate.comE<gt>, and Thomas Wegner
-E<lt>wegner_thomas@yahoo.comE<gt>. The C glob code has the
-following copyright:
-
- Copyright (c) 1989, 1993 The Regents of the University of California.
- All rights reserved.
-
- This code is derived from software contributed to Berkeley by
- Guido van Rossum.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- 3. Neither the name of the University nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- SUCH DAMAGE.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/File/Path.pm b/Master/tlpkg/tlperl/lib/File/Path.pm
deleted file mode 100644
index 2e41ff3f77f..00000000000
--- a/Master/tlpkg/tlperl/lib/File/Path.pm
+++ /dev/null
@@ -1,285 +0,0 @@
-package File::Path;
-
-=head1 NAME
-
-File::Path - create or remove directory trees
-
-=head1 SYNOPSIS
-
- use File::Path;
-
- mkpath(['/foo/bar/baz', 'blurfl/quux'], 1, 0711);
- rmtree(['foo/bar/baz', 'blurfl/quux'], 1, 1);
-
-=head1 DESCRIPTION
-
-The C<mkpath> function provides a convenient way to create directories, even
-if your C<mkdir> kernel call won't create more than one level of directory at
-a time. C<mkpath> takes three arguments:
-
-=over 4
-
-=item *
-
-the name of the path to create, or a reference
-to a list of paths to create,
-
-=item *
-
-a boolean value, which if TRUE will cause C<mkpath>
-to print the name of each directory as it is created
-(defaults to FALSE), and
-
-=item *
-
-the numeric mode to use when creating the directories
-(defaults to 0777), to be modified by the current umask.
-
-=back
-
-It returns a list of all directories (including intermediates, determined
-using the Unix '/' separator) created.
-
-If a system error prevents a directory from being created, then the
-C<mkpath> function throws a fatal error with C<Carp::croak>. This error
-can be trapped with an C<eval> block:
-
- eval { mkpath($dir) };
- if ($@) {
- print "Couldn't create $dir: $@";
- }
-
-Similarly, the C<rmtree> function provides a convenient way to delete a
-subtree from the directory structure, much like the Unix command C<rm -r>.
-C<rmtree> takes three arguments:
-
-=over 4
-
-=item *
-
-the root of the subtree to delete, or a reference to
-a list of roots. All of the files and directories
-below each root, as well as the roots themselves,
-will be deleted.
-
-=item *
-
-a boolean value, which if TRUE will cause C<rmtree> to
-print a message each time it examines a file, giving the
-name of the file, and indicating whether it's using C<rmdir>
-or C<unlink> to remove it, or that it's skipping it.
-(defaults to FALSE)
-
-=item *
-
-a boolean value, which if TRUE will cause C<rmtree> to
-skip any files to which you do not have delete access
-(if running under VMS) or write access (if running
-under another OS). This will change in the future when
-a criterion for 'delete permission' under OSs other
-than VMS is settled. (defaults to FALSE)
-
-=back
-
-It returns the number of files successfully deleted. Symlinks are
-simply deleted and not followed.
-
-B<NOTE:> There are race conditions internal to the implementation of
-C<rmtree> making it unsafe to use on directory trees which may be
-altered or moved while C<rmtree> is running, and in particular on any
-directory trees with any path components or subdirectories potentially
-writable by untrusted users.
-
-Additionally, if the third parameter is not TRUE and C<rmtree> is
-interrupted, it may leave files and directories with permissions altered
-to allow deletion (and older versions of this module would even set
-files and directories to world-read/writable!)
-
-Note also that the occurrence of errors in C<rmtree> can be determined I<only>
-by trapping diagnostic messages using C<$SIG{__WARN__}>; it is not apparent
-from the return value.
-
-=head1 DIAGNOSTICS
-
-=over 4
-
-=item *
-
-On Windows, if C<mkpath> gives you the warning: B<No such file or
-directory>, this may mean that you've exceeded your filesystem's
-maximum path length.
-
-=back
-
-=head1 AUTHORS
-
-Tim Bunce <F<Tim.Bunce@ig.co.uk>> and
-Charles Bailey <F<bailey@newman.upenn.edu>>
-
-=cut
-
-use 5.006;
-use Carp;
-use File::Basename ();
-use Exporter ();
-use strict;
-use warnings;
-
-our $VERSION = "1.08";
-our @ISA = qw( Exporter );
-our @EXPORT = qw( mkpath rmtree );
-
-my $Is_VMS = $^O eq 'VMS';
-my $Is_MacOS = $^O eq 'MacOS';
-
-# These OSes complain if you want to remove a file that you have no
-# write permission to:
-my $force_writeable = ($^O eq 'os2' || $^O eq 'dos' || $^O eq 'MSWin32' ||
- $^O eq 'amigaos' || $^O eq 'MacOS' || $^O eq 'epoc');
-
-sub mkpath {
- my($paths, $verbose, $mode) = @_;
- # $paths -- either a path string or ref to list of paths
- # $verbose -- optional print "mkdir $path" for each directory created
- # $mode -- optional permissions, defaults to 0777
- local($")=$Is_MacOS ? ":" : "/";
- $mode = 0777 unless defined($mode);
- $paths = [$paths] unless ref $paths;
- my(@created,$path);
- foreach $path (@$paths) {
- $path .= '/' if $^O eq 'os2' and $path =~ /^\w:\z/s; # feature of CRT
- # Logic wants Unix paths, so go with the flow.
- if ($Is_VMS) {
- next if $path eq '/';
- $path = VMS::Filespec::unixify($path);
- if ($path =~ m:^(/[^/]+)/?\z:) {
- $path = $1.'/000000';
- }
- }
- next if -d $path;
- my $parent = File::Basename::dirname($path);
- 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
- $! = $e, croak ("mkdir $path: $e") unless -d $path;
- }
- push(@created, $path);
- }
- @created;
-}
-
-sub rmtree {
- my($roots, $verbose, $safe) = @_;
- my(@files);
- my($count) = 0;
- $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}) {
- if ($Is_MacOS) {
- $root = ":$root" if $root !~ /:/;
- $root =~ s#([^:])\z#$1:#;
- } else {
- $root =~ s#/\z##;
- }
- (undef, undef, my $rp) = lstat $root or next;
- $rp &= 07777; # don't forget setuid, setgid, sticky bits
- if ( -d _ ) {
- # notabene: 0700 is for making readable in the first place,
- # it's also intended to change it to writable in case we have
- # to recurse in which case we are better than rm -rf for
- # subtrees with strange permissions
- chmod($rp | 0700, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
- or carp "Can't make directory $root read+writeable: $!"
- unless $safe;
-
- if (opendir my $d, $root) {
- no strict 'refs';
- if (!defined ${"\cTAINT"} or ${"\cTAINT"}) {
- # Blindly untaint dir names
- @files = map { /^(.*)$/s ; $1 } readdir $d;
- } else {
- @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\z## if $Is_VMS;
- if ($Is_MacOS) {
- @files = map("$root$_", @files);
- } else {
- @files = map("$root/$_", grep $_!~/^\.{1,2}\z/s,@files);
- }
- $count += rmtree(\@files,$verbose,$safe);
- if ($safe &&
- ($Is_VMS ? !&VMS::Filespec::candelete($root) : !-w $root)) {
- print "skipped $root\n" if $verbose;
- next;
- }
- chmod $rp | 0700, $root
- or carp "Can't make directory $root writeable: $!"
- if $force_writeable;
- print "rmdir $root\n" if $verbose;
- if (rmdir $root) {
- ++$count;
- }
- else {
- carp "Can't remove directory $root: $!";
- chmod($rp, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
- or carp("and can't restore permissions to "
- . sprintf("0%o",$rp) . "\n");
- }
- }
- else {
- if ($safe &&
- ($Is_VMS ? !&VMS::Filespec::candelete($root)
- : !(-l $root || -w $root)))
- {
- print "skipped $root\n" if $verbose;
- next;
- }
- chmod $rp | 0600, $root
- or carp "Can't make file $root writeable: $!"
- if $force_writeable;
- print "unlink $root\n" if $verbose;
- # delete all versions under VMS
- for (;;) {
- unless (unlink $root) {
- carp "Can't unlink file $root: $!";
- if ($force_writeable) {
- chmod $rp, $root
- or carp("and can't restore permissions to "
- . sprintf("0%o",$rp) . "\n");
- }
- last;
- }
- ++$count;
- last unless $Is_VMS && lstat $root;
- }
- }
- }
-
- $count;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/File/Spec.pm b/Master/tlpkg/tlperl/lib/File/Spec.pm
deleted file mode 100644
index 0c8cd21e057..00000000000
--- a/Master/tlpkg/tlperl/lib/File/Spec.pm
+++ /dev/null
@@ -1,322 +0,0 @@
-package File::Spec;
-
-use strict;
-use vars qw(@ISA $VERSION);
-
-$VERSION = '3.12';
-$VERSION = eval $VERSION;
-
-my %module = (MacOS => 'Mac',
- MSWin32 => 'Win32',
- os2 => 'OS2',
- VMS => 'VMS',
- epoc => 'Epoc',
- NetWare => 'Win32', # Yes, File::Spec::Win32 works on NetWare.
- symbian => 'Win32', # Yes, File::Spec::Win32 works on symbian.
- dos => 'OS2', # Yes, File::Spec::OS2 works on DJGPP.
- cygwin => 'Cygwin');
-
-
-my $module = $module{$^O} || 'Unix';
-
-require "File/Spec/$module.pm";
-@ISA = ("File::Spec::$module");
-
-1;
-
-__END__
-
-=head1 NAME
-
-File::Spec - portably perform operations on file names
-
-=head1 SYNOPSIS
-
- use File::Spec;
-
- $x=File::Spec->catfile('a', 'b', 'c');
-
-which returns 'a/b/c' under Unix. Or:
-
- use File::Spec::Functions;
-
- $x = catfile('a', 'b', 'c');
-
-=head1 DESCRIPTION
-
-This module is designed to support operations commonly performed on file
-specifications (usually called "file names", but not to be confused with the
-contents of a file, or Perl's file handles), such as concatenating several
-directory and file names into a single path, or determining whether a path
-is rooted. It is based on code directly taken from MakeMaker 5.17, code
-written by Andreas KE<ouml>nig, Andy Dougherty, Charles Bailey, Ilya
-Zakharevich, Paul Schinder, and others.
-
-Since these functions are different for most operating systems, each set of
-OS specific routines is available in a separate module, including:
-
- File::Spec::Unix
- File::Spec::Mac
- File::Spec::OS2
- File::Spec::Win32
- File::Spec::VMS
-
-The module appropriate for the current OS is automatically loaded by
-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 be called directly,
-as in:
-
- File::Spec::catfile('a','b');
-
-but rather as class methods:
-
- File::Spec->catfile('a','b');
-
-For simple uses, L<File::Spec::Functions> provides convenient functional
-forms of these methods.
-
-=head1 METHODS
-
-=over 2
-
-=item canonpath
-
-No physical check on the filesystem, but a logical cleanup of a
-path.
-
- $cpath = File::Spec->canonpath( $path ) ;
-
-Note that this does *not* collapse F<x/../y> sections into F<y>. This
-is by design. If F</foo> on your system is a symlink to F</bar/baz>,
-then F</foo/../quux> is actually F</bar/quux>, not F</quux> as a naive
-F<../>-removal would give you. If you want to do this kind of
-processing, you probably want C<Cwd>'s C<realpath()> function to
-actually traverse the filesystem cleaning up paths like this.
-
-=item catdir
-
-Concatenate two or more directory names to form a complete path ending
-with a directory. But remove the trailing slash from the resulting
-string, because it doesn't look good, isn't necessary and confuses
-OS/2. Of course, if this is the root directory, don't cut off the
-trailing slash :-)
-
- $path = File::Spec->catdir( @directories );
-
-=item catfile
-
-Concatenate one or more directory names and a filename to form a
-complete path ending with a filename
-
- $path = File::Spec->catfile( @directories, $filename );
-
-=item curdir
-
-Returns a string representation of the current directory.
-
- $curdir = File::Spec->curdir();
-
-=item devnull
-
-Returns a string representation of the null device.
-
- $devnull = File::Spec->devnull();
-
-=item rootdir
-
-Returns a string representation of the root directory.
-
- $rootdir = File::Spec->rootdir();
-
-=item tmpdir
-
-Returns a string representation of the first writable directory from a
-list of possible temporary directories. Returns the current directory
-if no writable temporary directories are found. The list of directories
-checked depends on the platform; e.g. File::Spec::Unix checks C<$ENV{TMPDIR}>
-(unless taint is on) and F</tmp>.
-
- $tmpdir = File::Spec->tmpdir();
-
-=item updir
-
-Returns a string representation of the parent directory.
-
- $updir = File::Spec->updir();
-
-=item no_upwards
-
-Given a list of file names, strip out those that refer to a parent
-directory. (Does not strip symlinks, only '.', '..', and equivalents.)
-
- @paths = File::Spec->no_upwards( @paths );
-
-=item case_tolerant
-
-Returns a true or false value indicating, respectively, that alphabetic
-case is not or is significant when comparing file specifications.
-
- $is_case_tolerant = File::Spec->case_tolerant();
-
-=item file_name_is_absolute
-
-Takes as its argument a path, and returns true if it is an absolute path.
-
- $is_absolute = File::Spec->file_name_is_absolute( $path );
-
-This does not consult the local filesystem on Unix, Win32, OS/2, or
-Mac OS (Classic). It does consult the working environment for VMS
-(see L<File::Spec::VMS/file_name_is_absolute>).
-
-=item path
-
-Takes no argument. Returns the environment variable C<PATH> (or the local
-platform's equivalent) as a list.
-
- @PATH = File::Spec->path();
-
-=item join
-
-join is the same as catfile.
-
-=item splitpath
-
-Splits a path in to volume, directory, and filename portions. On systems
-with no concept of volume, returns '' for volume.
-
- ($volume,$directories,$file) = File::Spec->splitpath( $path );
- ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file );
-
-For systems with no syntax differentiating filenames from directories,
-assumes that the last file is a path unless C<$no_file> is true or a
-trailing separator or F</.> or F</..> is present. On Unix, this means that C<$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.
-
-=item splitdir
-
-The opposite of L</catdir()>.
-
- @dirs = File::Spec->splitdir( $directories );
-
-C<$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 OSes.
-
-=item catpath()
-
-Takes volume, directory and file portions and returns an entire path. Under
-Unix, C<$volume> is ignored, and directory and file are concatenated. A '/' is
-inserted if need be. On other OSes, C<$volume> is significant.
-
- $full_path = File::Spec->catpath( $volume, $directory, $file );
-
-=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( $path ) ;
- $rel_path = File::Spec->abs2rel( $path, $base ) ;
-
-If C<$base> is not present or '', then L<cwd()|Cwd> is used. If C<$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()|Cwd>.
-
-On systems with the concept of volume, if C<$path> and C<$base> appear to be
-on two different volumes, we will not attempt to resolve the two
-paths, and we will instead simply return C<$path>. Note that previous
-versions of this module ignored the volume of C<$base>, which resulted in
-garbage results part of the time.
-
-On systems that have a grammar that indicates filenames, this ignores the
-C<$base> filename as well. Otherwise all path components are assumed to be
-directories.
-
-If C<$path> is relative, it is converted to absolute form using L</rel2abs()>.
-This means that it is taken to be relative to L<cwd()|Cwd>.
-
-No checks against the filesystem are made. On VMS, there is
-interaction with the working environment, as logicals and
-macros are expanded.
-
-Based on code written by Shigio Yamaguchi.
-
-=item rel2abs()
-
-Converts a relative path to an absolute path.
-
- $abs_path = File::Spec->rel2abs( $path ) ;
- $abs_path = File::Spec->rel2abs( $path, $base ) ;
-
-If C<$base> is not present or '', then L<cwd()|Cwd> is used. If C<$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()|Cwd>.
-
-On systems with the concept of volume, if C<$path> and C<$base> appear to be
-on two different volumes, we will not attempt to resolve the two
-paths, and we will instead simply return C<$path>. Note that previous
-versions of this module ignored the volume of C<$base>, which resulted in
-garbage results part of the time.
-
-On systems that have a grammar that indicates filenames, this ignores the
-C<$base> filename as well. Otherwise all path components are assumed to be
-directories.
-
-If C<$path> is absolute, it is cleaned up and returned using L</canonpath()>.
-
-No checks against the filesystem are made. On VMS, there is
-interaction with the working environment, as logicals and
-macros are expanded.
-
-Based on code written by Shigio Yamaguchi.
-
-=back
-
-For further information, please see L<File::Spec::Unix>,
-L<File::Spec::Mac>, L<File::Spec::OS2>, L<File::Spec::Win32>, or
-L<File::Spec::VMS>.
-
-=head1 SEE ALSO
-
-L<File::Spec::Unix>, L<File::Spec::Mac>, L<File::Spec::OS2>,
-L<File::Spec::Win32>, L<File::Spec::VMS>, L<File::Spec::Functions>,
-L<ExtUtils::MakeMaker>
-
-=head1 AUTHOR
-
-Currently maintained by Ken Williams C<< <KWILLIAMS@cpan.org> >>.
-
-The vast majority of the code was written by
-Kenneth Albanowski C<< <kjahds@kjahds.com> >>,
-Andy Dougherty C<< <doughera@lafayette.edu> >>,
-Andreas KE<ouml>nig C<< <A.Koenig@franz.ww.TU-Berlin.DE> >>,
-Tim Bunce C<< <Tim.Bunce@ig.co.uk> >>.
-VMS support by Charles Bailey C<< <bailey@newman.upenn.edu> >>.
-OS/2 support by Ilya Zakharevich C<< <ilya@math.ohio-state.edu> >>.
-Mac support by Paul Schinder C<< <schinder@pobox.com> >>, and
-Thomas Wegner C<< <wegner_thomas@yahoo.com> >>.
-abs2rel() and rel2abs() written by Shigio Yamaguchi C<< <shigio@tamacom.com> >>,
-modified by Barrie Slaymaker C<< <barries@slaysys.com> >>.
-splitpath(), splitdir(), catpath() and catdir() by Barrie Slaymaker.
-
-=head1 COPYRIGHT
-
-Copyright (c) 2004 by the Perl 5 Porters. All rights reserved.
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/File/Spec/Cygwin.pm b/Master/tlpkg/tlperl/lib/File/Spec/Cygwin.pm
deleted file mode 100644
index 19a2937c6b9..00000000000
--- a/Master/tlpkg/tlperl/lib/File/Spec/Cygwin.pm
+++ /dev/null
@@ -1,93 +0,0 @@
-package File::Spec::Cygwin;
-
-use strict;
-use vars qw(@ISA $VERSION);
-require File::Spec::Unix;
-
-$VERSION = '1.1';
-
-@ISA = qw(File::Spec::Unix);
-
-=head1 NAME
-
-File::Spec::Cygwin - methods for Cygwin file specs
-
-=head1 SYNOPSIS
-
- require File::Spec::Cygwin; # Done internally by File::Spec if needed
-
-=head1 DESCRIPTION
-
-See L<File::Spec> and L<File::Spec::Unix>. This package overrides the
-implementation of these methods, not the semantics.
-
-This module is still in beta. Cygwin-knowledgeable folks are invited
-to offer patches and suggestions.
-
-=cut
-
-=pod
-
-=over 4
-
-=item canonpath
-
-Any C<\> (backslashes) are converted to C</> (forward slashes),
-and then File::Spec::Unix canonpath() is called on the result.
-
-=cut
-
-sub canonpath {
- my($self,$path) = @_;
- $path =~ s|\\|/|g;
- return $self->SUPER::canonpath($path);
-}
-
-=pod
-
-=item file_name_is_absolute
-
-True is returned if the file name begins with C<drive_letter:>,
-and if not, File::Spec::Unix file_name_is_absolute() is called.
-
-=cut
-
-
-sub file_name_is_absolute {
- my ($self,$file) = @_;
- return 1 if $file =~ m{^([a-z]:)?[\\/]}is; # C:/test
- return $self->SUPER::file_name_is_absolute($file);
-}
-
-=item tmpdir (override)
-
-Returns a string representation of the first existing directory
-from the following list:
-
- $ENV{TMPDIR}
- /tmp
- C:/temp
-
-Since Perl 5.8.0, if running under taint mode, and if the environment
-variables are tainted, they are not used.
-
-=cut
-
-my $tmpdir;
-sub tmpdir {
- return $tmpdir if defined $tmpdir;
- $tmpdir = $_[0]->_tmpdir( $ENV{TMPDIR}, "/tmp", 'C:/temp' );
-}
-
-=back
-
-=head1 COPYRIGHT
-
-Copyright (c) 2004 by the Perl 5 Porters. All rights reserved.
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=cut
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/File/Spec/Epoc.pm b/Master/tlpkg/tlperl/lib/File/Spec/Epoc.pm
deleted file mode 100644
index a7168f9e494..00000000000
--- a/Master/tlpkg/tlperl/lib/File/Spec/Epoc.pm
+++ /dev/null
@@ -1,77 +0,0 @@
-package File::Spec::Epoc;
-
-use strict;
-use vars qw($VERSION @ISA);
-
-$VERSION = '1.1';
-
-require File::Spec::Unix;
-@ISA = qw(File::Spec::Unix);
-
-=head1 NAME
-
-File::Spec::Epoc - methods for Epoc file specs
-
-=head1 SYNOPSIS
-
- require File::Spec::Epoc; # 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.
-
-This package is still work in progress ;-)
-
-=cut
-
-sub case_tolerant {
- return 1;
-}
-
-=pod
-
-=over 4
-
-=item canonpath()
-
-No physical check on the filesystem, but a logical cleanup of a
-path. On UNIX eliminated successive slashes and successive "/.".
-
-=back
-
-=cut
-
-sub canonpath {
- my ($self,$path) = @_;
-
- $path =~ s|/+|/|g; # 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(?!\n)|| unless $path eq "/"; # xx/ -> xx
- return $path;
-}
-
-=pod
-
-=head1 AUTHOR
-
-o.flebbe@gmx.de
-
-=head1 COPYRIGHT
-
-Copyright (c) 2004 by the Perl 5 Porters. All rights reserved.
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=head1 SEE ALSO
-
-See L<File::Spec> and L<File::Spec::Unix>. This package overrides the
-implementation of these methods, not the semantics.
-
-=cut
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/File/Spec/Functions.pm b/Master/tlpkg/tlperl/lib/File/Spec/Functions.pm
deleted file mode 100644
index 38c898c5d8f..00000000000
--- a/Master/tlpkg/tlperl/lib/File/Spec/Functions.pm
+++ /dev/null
@@ -1,109 +0,0 @@
-package File::Spec::Functions;
-
-use File::Spec;
-use strict;
-
-use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
-
-$VERSION = '1.3';
-
-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
- case_tolerant
-);
-
-%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
- case_tolerant
-
-All the functions may be imported using the C<:ALL> tag.
-
-=head1 COPYRIGHT
-
-Copyright (c) 2004 by the Perl 5 Porters. All rights reserved.
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=head1 SEE ALSO
-
-File::Spec, File::Spec::Unix, File::Spec::Mac, File::Spec::OS2,
-File::Spec::Win32, File::Spec::VMS, ExtUtils::MakeMaker
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/File/Spec/Mac.pm b/Master/tlpkg/tlperl/lib/File/Spec/Mac.pm
deleted file mode 100644
index 8b51bd6c249..00000000000
--- a/Master/tlpkg/tlperl/lib/File/Spec/Mac.pm
+++ /dev/null
@@ -1,780 +0,0 @@
-package File::Spec::Mac;
-
-use strict;
-use vars qw(@ISA $VERSION);
-require File::Spec::Unix;
-
-$VERSION = '1.4';
-
-@ISA = qw(File::Spec::Unix);
-
-my $macfiles;
-if ($^O eq 'MacOS') {
- $macfiles = eval { require Mac::Files };
-}
-
-sub case_tolerant { 1 }
-
-
-=head1 NAME
-
-File::Spec::Mac - File::Spec for Mac OS (Classic)
-
-=head1 SYNOPSIS
-
- require File::Spec::Mac; # Done internally by File::Spec if needed
-
-=head1 DESCRIPTION
-
-Methods for manipulating file specifications.
-
-=head1 METHODS
-
-=over 2
-
-=item canonpath
-
-On Mac OS, there's nothing to be done. Returns what it's given.
-
-=cut
-
-sub canonpath {
- my ($self,$path) = @_;
- return $path;
-}
-
-=item catdir()
-
-Concatenate two or more directory names to form a path separated by colons
-(":") ending with a directory. Resulting paths are B<relative> by default,
-but can be forced to be absolute (but avoid this, see below). Automatically
-puts a trailing ":" on the end of the complete path, because that's what's
-done in MacPerl's environment and helps to distinguish a file path from a
-directory path.
-
-B<IMPORTANT NOTE:> Beginning with version 1.3 of this module, the resulting
-path is relative by default and I<not> absolute. This decision was made due
-to portability reasons. Since C<File::Spec-E<gt>catdir()> returns relative paths
-on all other operating systems, it will now also follow this convention on Mac
-OS. Note that this may break some existing scripts.
-
-The intended purpose of this routine is to concatenate I<directory names>.
-But because of the nature of Macintosh paths, some additional possibilities
-are allowed to make using this routine give reasonable results for some
-common situations. In other words, you are also allowed to concatenate
-I<paths> instead of directory names (strictly speaking, a string like ":a"
-is a path, but not a name, since it contains a punctuation character ":").
-
-So, beside calls like
-
- catdir("a") = ":a:"
- catdir("a","b") = ":a:b:"
- catdir() = "" (special case)
-
-calls like the following
-
- catdir(":a:") = ":a:"
- catdir(":a","b") = ":a:b:"
- catdir(":a:","b") = ":a:b:"
- catdir(":a:",":b:") = ":a:b:"
- catdir(":") = ":"
-
-are allowed.
-
-Here are the rules that are used in C<catdir()>; note that we try to be as
-compatible as possible to Unix:
-
-=over 2
-
-=item 1.
-
-The resulting path is relative by default, i.e. the resulting path will have a
-leading colon.
-
-=item 2.
-
-A trailing colon is added automatically to the resulting path, to denote a
-directory.
-
-=item 3.
-
-Generally, each argument has one leading ":" and one trailing ":"
-removed (if any). They are then joined together by a ":". Special
-treatment applies for arguments denoting updir paths like "::lib:",
-see (4), or arguments consisting solely of colons ("colon paths"),
-see (5).
-
-=item 4.
-
-When an updir path like ":::lib::" is passed as argument, the number
-of directories to climb up is handled correctly, not removing leading
-or trailing colons when necessary. E.g.
-
- catdir(":::a","::b","c") = ":::a::b:c:"
- catdir(":::a::","::b","c") = ":::a:::b:c:"
-
-=item 5.
-
-Adding a colon ":" or empty string "" to a path at I<any> position
-doesn't alter the path, i.e. these arguments are ignored. (When a ""
-is passed as the first argument, it has a special meaning, see
-(6)). This way, a colon ":" is handled like a "." (curdir) on Unix,
-while an empty string "" is generally ignored (see
-C<Unix-E<gt>canonpath()> ). Likewise, a "::" is handled like a ".."
-(updir), and a ":::" is handled like a "../.." etc. E.g.
-
- catdir("a",":",":","b") = ":a:b:"
- catdir("a",":","::",":b") = ":a::b:"
-
-=item 6.
-
-If the first argument is an empty string "" or is a volume name, i.e. matches
-the pattern /^[^:]+:/, the resulting path is B<absolute>.
-
-=item 7.
-
-Passing an empty string "" as the first argument to C<catdir()> is
-like passingC<File::Spec-E<gt>rootdir()> as the first argument, i.e.
-
- catdir("","a","b") is the same as
-
- catdir(rootdir(),"a","b").
-
-This is true on Unix, where C<catdir("","a","b")> yields "/a/b" and
-C<rootdir()> is "/". Note that C<rootdir()> on Mac OS is the startup
-volume, which is the closest in concept to Unix' "/". This should help
-to run existing scripts originally written for Unix.
-
-=item 8.
-
-For absolute paths, some cleanup is done, to ensure that the volume
-name isn't immediately followed by updirs. This is invalid, because
-this would go beyond "root". Generally, these cases are handled like
-their Unix counterparts:
-
- Unix:
- Unix->catdir("","") = "/"
- Unix->catdir("",".") = "/"
- Unix->catdir("","..") = "/" # can't go beyond root
- Unix->catdir("",".","..","..","a") = "/a"
- Mac:
- Mac->catdir("","") = rootdir() # (e.g. "HD:")
- Mac->catdir("",":") = rootdir()
- Mac->catdir("","::") = rootdir() # can't go beyond root
- Mac->catdir("",":","::","::","a") = rootdir() . "a:" # (e.g. "HD:a:")
-
-However, this approach is limited to the first arguments following
-"root" (again, see C<Unix-E<gt>canonpath()> ). If there are more
-arguments that move up the directory tree, an invalid path going
-beyond root can be created.
-
-=back
-
-As you've seen, you can force C<catdir()> to create an absolute path
-by passing either an empty string or a path that begins with a volume
-name as the first argument. However, you are strongly encouraged not
-to do so, since this is done only for backward compatibility. Newer
-versions of File::Spec come with a method called C<catpath()> (see
-below), that is designed to offer a portable solution for the creation
-of absolute paths. It takes volume, directory and file portions and
-returns an entire path. While C<catdir()> is still suitable for the
-concatenation of I<directory names>, you are encouraged to use
-C<catpath()> to concatenate I<volume names> and I<directory
-paths>. E.g.
-
- $dir = File::Spec->catdir("tmp","sources");
- $abs_path = File::Spec->catpath("MacintoshHD:", $dir,"");
-
-yields
-
- "MacintoshHD:tmp:sources:" .
-
-=cut
-
-sub catdir {
- my $self = shift;
- return '' unless @_;
- my @args = @_;
- my $first_arg;
- my $relative;
-
- # take care of the first argument
-
- if ($args[0] eq '') { # absolute path, rootdir
- shift @args;
- $relative = 0;
- $first_arg = $self->rootdir;
-
- } elsif ($args[0] =~ /^[^:]+:/) { # absolute path, volume name
- $relative = 0;
- $first_arg = shift @args;
- # add a trailing ':' if need be (may be it's a path like HD:dir)
- $first_arg = "$first_arg:" unless ($first_arg =~ /:\Z(?!\n)/);
-
- } else { # relative path
- $relative = 1;
- if ( $args[0] =~ /^::+\Z(?!\n)/ ) {
- # updir colon path ('::', ':::' etc.), don't shift
- $first_arg = ':';
- } elsif ($args[0] eq ':') {
- $first_arg = shift @args;
- } else {
- # add a trailing ':' if need be
- $first_arg = shift @args;
- $first_arg = "$first_arg:" unless ($first_arg =~ /:\Z(?!\n)/);
- }
- }
-
- # For all other arguments,
- # (a) ignore arguments that equal ':' or '',
- # (b) handle updir paths specially:
- # '::' -> concatenate '::'
- # '::' . '::' -> concatenate ':::' etc.
- # (c) add a trailing ':' if need be
-
- my $result = $first_arg;
- while (@args) {
- my $arg = shift @args;
- unless (($arg eq '') || ($arg eq ':')) {
- if ($arg =~ /^::+\Z(?!\n)/ ) { # updir colon path like ':::'
- my $updir_count = length($arg) - 1;
- while ((@args) && ($args[0] =~ /^::+\Z(?!\n)/) ) { # while updir colon path
- $arg = shift @args;
- $updir_count += (length($arg) - 1);
- }
- $arg = (':' x $updir_count);
- } else {
- $arg =~ s/^://s; # remove a leading ':' if any
- $arg = "$arg:" unless ($arg =~ /:\Z(?!\n)/); # ensure trailing ':'
- }
- $result .= $arg;
- }#unless
- }
-
- if ( ($relative) && ($result !~ /^:/) ) {
- # add a leading colon if need be
- $result = ":$result";
- }
-
- unless ($relative) {
- # remove updirs immediately following the volume name
- $result =~ s/([^:]+:)(:*)(.*)\Z(?!\n)/$1$3/;
- }
-
- return $result;
-}
-
-=item catfile
-
-Concatenate one or more directory names and a filename to form a
-complete path ending with a filename. Resulting paths are B<relative>
-by default, but can be forced to be absolute (but avoid this).
-
-B<IMPORTANT NOTE:> Beginning with version 1.3 of this module, the
-resulting path is relative by default and I<not> absolute. This
-decision was made due to portability reasons. Since
-C<File::Spec-E<gt>catfile()> returns relative paths on all other
-operating systems, it will now also follow this convention on Mac OS.
-Note that this may break some existing scripts.
-
-The last argument is always considered to be the file portion. Since
-C<catfile()> uses C<catdir()> (see above) for the concatenation of the
-directory portions (if any), the following with regard to relative and
-absolute paths is true:
-
- catfile("") = ""
- catfile("file") = "file"
-
-but
-
- catfile("","") = rootdir() # (e.g. "HD:")
- catfile("","file") = rootdir() . file # (e.g. "HD:file")
- catfile("HD:","file") = "HD:file"
-
-This means that C<catdir()> is called only when there are two or more
-arguments, as one might expect.
-
-Note that the leading ":" is removed from the filename, so that
-
- catfile("a","b","file") = ":a:b:file" and
-
- catfile("a","b",":file") = ":a:b:file"
-
-give the same answer.
-
-To concatenate I<volume names>, I<directory paths> and I<filenames>,
-you are encouraged to use C<catpath()> (see below).
-
-=cut
-
-sub catfile {
- my $self = shift;
- return '' unless @_;
- my $file = pop @_;
- return $file unless @_;
- my $dir = $self->catdir(@_);
- $file =~ s/^://s;
- return $dir.$file;
-}
-
-=item curdir
-
-Returns a string representing the current directory. On Mac OS, this is ":".
-
-=cut
-
-sub curdir {
- return ":";
-}
-
-=item devnull
-
-Returns a string representing the null device. On Mac OS, this is "Dev:Null".
-
-=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. The name has a
-trailing ":", because that's the correct specification for a volume
-name on Mac OS.
-
-If Mac::Files could not be loaded, the empty string is returned.
-
-=cut
-
-sub rootdir {
-#
-# There's no real root directory on Mac OS. The name of the startup
-# volume is returned, since that's the closest in concept.
-#
- return '' unless $macfiles;
- my $system = Mac::Files::FindFolder(&Mac::Files::kOnSystemDisk,
- &Mac::Files::kSystemFolderType);
- $system =~ s/:.*\Z(?!\n)/:/s;
- return $system;
-}
-
-=item tmpdir
-
-Returns the contents of $ENV{TMPDIR}, if that directory exits or the
-current working directory otherwise. Under MacPerl, $ENV{TMPDIR} will
-contain a path like "MacintoshHD:Temporary Items:", which is a hidden
-directory on your startup volume.
-
-=cut
-
-my $tmpdir;
-sub tmpdir {
- return $tmpdir if defined $tmpdir;
- $tmpdir = $_[0]->_tmpdir( $ENV{TMPDIR} );
-}
-
-=item updir
-
-Returns a string representing the parent directory. On Mac OS, this is "::".
-
-=cut
-
-sub updir {
- return "::";
-}
-
-=item file_name_is_absolute
-
-Takes as argument a path and returns true, if it is an absolute path.
-If the path has a leading ":", it's a relative path. Otherwise, it's an
-absolute path, unless the path doesn't contain any colons, i.e. it's a name
-like "a". In this particular case, the path is considered to be relative
-(i.e. it is considered to be a filename). Use ":" in the appropriate place
-in the path if you want to distinguish unambiguously. As a special case,
-the filename '' is always considered to be absolute. Note that with version
-1.2 of File::Spec::Mac, this does no longer consult the local filesystem.
-
-E.g.
-
- File::Spec->file_name_is_absolute("a"); # false (relative)
- File::Spec->file_name_is_absolute(":a:b:"); # false (relative)
- File::Spec->file_name_is_absolute("MacintoshHD:"); # true (absolute)
- File::Spec->file_name_is_absolute(""); # true (absolute)
-
-
-=cut
-
-sub file_name_is_absolute {
- my ($self,$file) = @_;
- if ($file =~ /:/) {
- return (! ($file =~ m/^:/s) );
- } elsif ( $file eq '' ) {
- return 1 ;
- } else {
- return 0; # i.e. a file like "a"
- }
-}
-
-=item path
-
-Returns the null list for the MacPerl application, since the concept is
-usually meaningless under Mac OS. But if you're using the MacPerl tool under
-MPW, it gives back $ENV{Commands} suitably split, as is done in
-:lib:ExtUtils:MM_Mac.pm.
-
-=cut
-
-sub path {
-#
-# The concept is meaningless under the MacPerl application.
-# Under MPW, it has a meaning.
-#
- return unless exists $ENV{Commands};
- return split(/,/, $ENV{Commands});
-}
-
-=item splitpath
-
- ($volume,$directories,$file) = File::Spec->splitpath( $path );
- ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file );
-
-Splits a path into volume, directory, and filename portions.
-
-On Mac OS, assumes that the last part of the path is a filename unless
-$no_file is true or a trailing separator ":" is present.
-
-The volume portion is always returned with a trailing ":". The directory portion
-is always returned with a leading (to denote a relative path) and a trailing ":"
-(to denote a directory). The file portion is always returned I<without> a leading ":".
-Empty portions are returned as empty string ''.
-
-The results can be passed to C<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 ) {
- ( $volume, $directory ) = $path =~ m|^((?:[^:]+:)?)(.*)|s;
- }
- else {
- $path =~
- m|^( (?: [^:]+: )? )
- ( (?: .*: )? )
- ( .* )
- |xs;
- $volume = $1;
- $directory = $2;
- $file = $3;
- }
-
- $volume = '' unless defined($volume);
- $directory = ":$directory" if ( $volume && $directory ); # take care of "HD::dir"
- if ($directory) {
- # Make sure non-empty directories begin and end in ':'
- $directory .= ':' unless (substr($directory,-1) eq ':');
- $directory = ":$directory" unless (substr($directory,0,1) eq ':');
- } else {
- $directory = '';
- }
- $file = '' unless defined($file);
-
- return ($volume,$directory,$file);
-}
-
-
-=item splitdir
-
-The opposite of C<catdir()>.
-
- @dirs = File::Spec->splitdir( $directories );
-
-$directories should 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. Consider using C<splitpath()> otherwise.
-
-Unlike just splitting the directories on the separator, empty directory names
-(C<"">) can be returned. Since C<catdir()> on Mac OS always appends a trailing
-colon to distinguish a directory path from a file path, a single trailing colon
-will be ignored, i.e. there's no empty directory name after it.
-
-Hence, on Mac OS, both
-
- File::Spec->splitdir( ":a:b::c:" ); and
- File::Spec->splitdir( ":a:b::c" );
-
-yield:
-
- ( "a", "b", "::", "c")
-
-while
-
- File::Spec->splitdir( ":a:b::c::" );
-
-yields:
-
- ( "a", "b", "::", "c", "::")
-
-
-=cut
-
-sub splitdir {
- my ($self, $path) = @_;
- my @result = ();
- my ($head, $sep, $tail, $volume, $directories);
-
- return ('') if ( (!defined($path)) || ($path eq '') );
- return (':') if ($path eq ':');
-
- ( $volume, $sep, $directories ) = $path =~ m|^((?:[^:]+:)?)(:*)(.*)|s;
-
- # deprecated, but handle it correctly
- if ($volume) {
- push (@result, $volume);
- $sep .= ':';
- }
-
- while ($sep || $directories) {
- if (length($sep) > 1) {
- my $updir_count = length($sep) - 1;
- for (my $i=0; $i<$updir_count; $i++) {
- # push '::' updir_count times;
- # simulate Unix '..' updirs
- push (@result, '::');
- }
- }
- $sep = '';
- if ($directories) {
- ( $head, $sep, $tail ) = $directories =~ m|^((?:[^:]+)?)(:*)(.*)|s;
- push (@result, $head);
- $directories = $tail;
- }
- }
- return @result;
-}
-
-
-=item catpath
-
- $path = File::Spec->catpath($volume,$directory,$file);
-
-Takes volume, directory and file portions and returns an entire path. On Mac OS,
-$volume, $directory and $file are concatenated. A ':' is inserted if need be. You
-may pass an empty string for each portion. If all portions are empty, the empty
-string is returned. If $volume is empty, the result will be a relative path,
-beginning with a ':'. If $volume and $directory are empty, a leading ":" (if any)
-is removed form $file and the remainder is returned. If $file is empty, the
-resulting path will have a trailing ':'.
-
-
-=cut
-
-sub catpath {
- my ($self,$volume,$directory,$file) = @_;
-
- if ( (! $volume) && (! $directory) ) {
- $file =~ s/^:// if $file;
- return $file ;
- }
-
- # We look for a volume in $volume, then in $directory, but not both
-
- my ($dir_volume, $dir_dirs) = $self->splitpath($directory, 1);
-
- $volume = $dir_volume unless length $volume;
- my $path = $volume; # may be ''
- $path .= ':' unless (substr($path, -1) eq ':'); # ensure trailing ':'
-
- if ($directory) {
- $directory = $dir_dirs if $volume;
- $directory =~ s/^://; # remove leading ':' if any
- $path .= $directory;
- $path .= ':' unless (substr($path, -1) eq ':'); # ensure trailing ':'
- }
-
- if ($file) {
- $file =~ s/^://; # remove leading ':' if any
- $path .= $file;
- }
-
- return $path;
-}
-
-=item abs2rel
-
-Takes a destination path and an optional base path and returns a relative path
-from the base path to the destination path:
-
- $rel_path = File::Spec->abs2rel( $path ) ;
- $rel_path = File::Spec->abs2rel( $path, $base ) ;
-
-Note that both paths are assumed to have a notation that distinguishes a
-directory path (with trailing ':') from a file path (without trailing ':').
-
-If $base is not present or '', then the current working directory is used.
-If $base is relative, then it is converted to absolute form using C<rel2abs()>.
-This means that it is taken to be relative to the current working directory.
-
-If $path and $base appear to be on two different volumes, we will not
-attempt to resolve the two paths, and we will instead simply return
-$path. Note that previous versions of this module ignored the volume
-of $base, which resulted in garbage results part of the time.
-
-If $base doesn't have a trailing colon, the last element of $base is
-assumed to be a filename. This filename is ignored. Otherwise all path
-components are assumed to be directories.
-
-If $path is relative, it is converted to absolute form using C<rel2abs()>.
-This means that it is taken to be relative to the current working directory.
-
-Based on code written by Shigio Yamaguchi.
-
-
-=cut
-
-# maybe this should be done in canonpath() ?
-sub _resolve_updirs {
- my $path = shift @_;
- my $proceed;
-
- # resolve any updirs, e.g. "HD:tmp::file" -> "HD:file"
- do {
- $proceed = ($path =~ s/^(.*):[^:]+::(.*?)\z/$1:$2/);
- } while ($proceed);
-
- return $path;
-}
-
-
-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 = $self->_cwd();
- }
- elsif ( ! $self->file_name_is_absolute( $base ) ) {
- $base = $self->rel2abs( $base ) ;
- $base = _resolve_updirs( $base ); # resolve updirs in $base
- }
- else {
- $base = _resolve_updirs( $base );
- }
-
- # Split up paths - ignore $base's file
- my ( $path_vol, $path_dirs, $path_file ) = $self->splitpath( $path );
- my ( $base_vol, $base_dirs ) = $self->splitpath( $base );
-
- return $path unless lc( $path_vol ) eq lc( $base_vol );
-
- # Now, remove all leading components that are the same
- my @pathchunks = $self->splitdir( $path_dirs );
- my @basechunks = $self->splitdir( $base_dirs );
-
- while ( @pathchunks &&
- @basechunks &&
- lc( $pathchunks[0] ) eq lc( $basechunks[0] ) ) {
- shift @pathchunks ;
- shift @basechunks ;
- }
-
- # @pathchunks now has the directories to descend in to.
- # ensure relative path, even if @pathchunks is empty
- $path_dirs = $self->catdir( ':', @pathchunks );
-
- # @basechunks now contains the number of directories to climb out of.
- $base_dirs = (':' x @basechunks) . ':' ;
-
- return $self->catpath( '', $self->catdir( $base_dirs, $path_dirs ), $path_file ) ;
-}
-
-=item rel2abs
-
-Converts a relative path to an absolute path:
-
- $abs_path = File::Spec->rel2abs( $path ) ;
- $abs_path = File::Spec->rel2abs( $path, $base ) ;
-
-Note that both paths are assumed to have a notation that distinguishes a
-directory path (with trailing ':') from a file path (without trailing ':').
-
-If $base is not present or '', then $base is set to the current working
-directory. If $base is relative, then it is converted to absolute form
-using C<rel2abs()>. This means that it is taken to be relative to the
-current working directory.
-
-If $base doesn't have a trailing colon, the last element of $base is
-assumed to be a filename. This filename is ignored. Otherwise all path
-components are assumed to be directories.
-
-If $path is already absolute, it is returned and $base is ignored.
-
-Based on code written by Shigio Yamaguchi.
-
-=cut
-
-sub rel2abs {
- my ($self,$path,$base) = @_;
-
- if ( ! $self->file_name_is_absolute($path) ) {
- # Figure out the effective $base and clean it up.
- if ( !defined( $base ) || $base eq '' ) {
- $base = $self->_cwd();
- }
- elsif ( ! $self->file_name_is_absolute($base) ) {
- $base = $self->rel2abs($base) ;
- }
-
- # Split up paths
-
- # igonore $path's volume
- my ( $path_dirs, $path_file ) = ($self->splitpath($path))[1,2] ;
-
- # ignore $base's file part
- my ( $base_vol, $base_dirs ) = $self->splitpath($base) ;
-
- # Glom them together
- $path_dirs = ':' if ($path_dirs eq '');
- $base_dirs =~ s/:$//; # remove trailing ':', if any
- $base_dirs = $base_dirs . $path_dirs;
-
- $path = $self->catpath( $base_vol, $base_dirs, $path_file );
- }
- return $path;
-}
-
-
-=back
-
-=head1 AUTHORS
-
-See the authors list in I<File::Spec>. Mac OS support by Paul Schinder
-<schinder@pobox.com> and Thomas Wegner <wegner_thomas@yahoo.com>.
-
-=head1 COPYRIGHT
-
-Copyright (c) 2004 by the Perl 5 Porters. All rights reserved.
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=head1 SEE ALSO
-
-See L<File::Spec> and L<File::Spec::Unix>. This package overrides the
-implementation of these methods, not the semantics.
-
-=cut
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/File/Spec/OS2.pm b/Master/tlpkg/tlperl/lib/File/Spec/OS2.pm
deleted file mode 100644
index ec308f3b6f3..00000000000
--- a/Master/tlpkg/tlperl/lib/File/Spec/OS2.pm
+++ /dev/null
@@ -1,272 +0,0 @@
-package File::Spec::OS2;
-
-use strict;
-use vars qw(@ISA $VERSION);
-require File::Spec::Unix;
-
-$VERSION = '1.2';
-
-@ISA = qw(File::Spec::Unix);
-
-sub devnull {
- return "/dev/nul";
-}
-
-sub case_tolerant {
- return 1;
-}
-
-sub file_name_is_absolute {
- my ($self,$file) = @_;
- return scalar($file =~ m{^([a-z]:)?[\\/]}is);
-}
-
-sub path {
- my $path = $ENV{PATH};
- $path =~ s:\\:/:g;
- my @path = split(';',$path);
- foreach (@path) { $_ = '.' if $_ eq '' }
- return @path;
-}
-
-sub _cwd {
- # In OS/2 the "require Cwd" is unnecessary bloat.
- return Cwd::sys_cwd();
-}
-
-my $tmpdir;
-sub tmpdir {
- return $tmpdir if defined $tmpdir;
- $tmpdir = $_[0]->_tmpdir( @ENV{qw(TMPDIR TEMP TMP)},
- '/tmp',
- '/' );
-}
-
-sub catdir {
- my $self = shift;
- my @args = @_;
- foreach (@args) {
- tr[\\][/];
- # append a backslash to each argument unless it has one there
- $_ .= "/" unless m{/$};
- }
- return $self->canonpath(join('', @args));
-}
-
-sub canonpath {
- my ($self,$path) = @_;
- $path =~ s/^([a-z]:)/\l$1/s;
- $path =~ s|\\|/|g;
- $path =~ s|([^/])/+|$1/|g; # xx////xx -> xx/xx
- $path =~ s|(/\.)+/|/|g; # xx/././xx -> xx/xx
- $path =~ s|^(\./)+(?=[^/])||s; # ./xx -> xx
- $path =~ s|/\Z(?!\n)||
- unless $path =~ m#^([a-z]:)?/\Z(?!\n)#si;# xx/ -> xx
- $path =~ s{^/\.\.$}{/}; # /.. -> /
- 1 while $path =~ s{^/\.\.}{}; # /../xx -> /xx
- return $path;
-}
-
-
-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(?!\n))?)? )
- (.*)
- }xs;
- $volume = $1;
- $directory = $2;
- $file = $3;
- }
-
- return ($volume,$directory,$file);
-}
-
-
-sub splitdir {
- my ($self,$directories) = @_ ;
- split m|[\\/]|, $directories, -1;
-}
-
-
-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(?!\n)@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(?!\n)@s &&
- $volume =~ m@[^\\/]\Z(?!\n)@ &&
- $file =~ m@[^\\/]@
- ) {
- $volume =~ m@([\\/])@ ;
- my $sep = $1 ? $1 : '/' ;
- $volume .= $sep ;
- }
-
- $volume .= $file ;
-
- return $volume ;
-}
-
-
-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 = $self->_cwd();
- } elsif ( ! $self->file_name_is_absolute( $base ) ) {
- $base = $self->rel2abs( $base ) ;
- } else {
- $base = $self->canonpath( $base ) ;
- }
-
- # Split up paths
- my ( $path_volume, $path_directories, $path_file ) = $self->splitpath( $path, 1 ) ;
- my ( $base_volume, $base_directories ) = $self->splitpath( $base, 1 ) ;
- return $path unless $path_volume eq $base_volume;
-
- # 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" ;
- }
-
- return $self->canonpath(
- $self->catpath( "", $path_directories, $path_file )
- ) ;
-}
-
-
-sub rel2abs {
- my ($self,$path,$base ) = @_;
-
- if ( ! $self->file_name_is_absolute( $path ) ) {
-
- if ( !defined( $base ) || $base eq '' ) {
- $base = $self->_cwd();
- }
- elsif ( ! $self->file_name_is_absolute( $base ) ) {
- $base = $self->rel2abs( $base ) ;
- }
- else {
- $base = $self->canonpath( $base ) ;
- }
-
- my ( $path_directories, $path_file ) =
- ($self->splitpath( $path, 1 ))[1,2] ;
-
- my ( $base_volume, $base_directories ) =
- $self->splitpath( $base, 1 ) ;
-
- $path = $self->catpath(
- $base_volume,
- $self->catdir( $base_directories, $path_directories ),
- $path_file
- ) ;
- }
-
- return $self->canonpath( $path ) ;
-}
-
-1;
-__END__
-
-=head1 NAME
-
-File::Spec::OS2 - methods for OS/2 file specs
-
-=head1 SYNOPSIS
-
- require File::Spec::OS2; # Done internally by File::Spec if needed
-
-=head1 DESCRIPTION
-
-See L<File::Spec> and L<File::Spec::Unix>. This package overrides the
-implementation of these methods, not the semantics.
-
-Amongst the changes made for OS/2 are...
-
-=over 4
-
-=item tmpdir
-
-Modifies the list of places temp directory information is looked for.
-
- $ENV{TMPDIR}
- $ENV{TEMP}
- $ENV{TMP}
- /tmp
- /
-
-=item splitpath
-
-Volumes can be drive letters or UNC sharenames (\\server\share).
-
-=back
-
-=head1 COPYRIGHT
-
-Copyright (c) 2004 by the Perl 5 Porters. All rights reserved.
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/File/Spec/Unix.pm b/Master/tlpkg/tlperl/lib/File/Spec/Unix.pm
deleted file mode 100644
index 4a25fe632f2..00000000000
--- a/Master/tlpkg/tlperl/lib/File/Spec/Unix.pm
+++ /dev/null
@@ -1,510 +0,0 @@
-package File::Spec::Unix;
-
-use strict;
-use vars qw($VERSION);
-
-$VERSION = '1.5';
-
-=head1 NAME
-
-File::Spec::Unix - File::Spec for Unix, base for other File::Spec modules
-
-=head1 SYNOPSIS
-
- require File::Spec::Unix; # Done automatically by File::Spec
-
-=head1 DESCRIPTION
-
-Methods for manipulating file specifications. Other File::Spec
-modules, such as File::Spec::Mac, inherit from File::Spec::Unix and
-override specific methods.
-
-=head1 METHODS
-
-=over 2
-
-=item canonpath()
-
-No physical check on the filesystem, but a logical cleanup of a
-path. On UNIX eliminates successive slashes and successive "/.".
-
- $cpath = File::Spec->canonpath( $path ) ;
-
-Note that this does *not* collapse F<x/../y> sections into F<y>. This
-is by design. If F</foo> on your system is a symlink to F</bar/baz>,
-then F</foo/../quux> is actually F</bar/quux>, not F</quux> as a naive
-F<../>-removal would give you. If you want to do this kind of
-processing, you probably want C<Cwd>'s C<realpath()> function to
-actually traverse the filesystem cleaning up paths like this.
-
-=cut
-
-sub canonpath {
- my ($self,$path) = @_;
-
- # Handle POSIX-style node names beginning with double slash (qnx, nto)
- # Handle network path names beginning with double slash (cygwin)
- # (POSIX says: "a pathname that begins with two successive slashes
- # may be interpreted in an implementation-defined manner, although
- # more than two leading slashes shall be treated as a single slash.")
- my $node = '';
- if ( $^O =~ m/^(?:qnx|nto|cygwin)$/ && $path =~ s:^(//[^/]+)(/|\z):/:s ) {
- $node = $1;
- }
- # This used to be
- # $path =~ s|/+|/|g unless($^O eq 'cygwin');
- # but that made tests 29, 30, 35, 46, and 213 (as of #13272) to fail
- # (Mainly because trailing "" directories didn't get stripped).
- # Why would cygwin avoid collapsing multiple slashes into one? --jhi
- $path =~ s|/+|/|g; # xx////xx -> xx/xx
- $path =~ s@(/\.)+(/|\Z(?!\n))@/@g; # xx/././xx -> xx/xx
- $path =~ s|^(\./)+||s unless $path eq "./"; # ./xx -> xx
- $path =~ s|^/(\.\./)+|/|; # /../../xx -> xx
- $path =~ s|^/\.\.$|/|; # /.. -> /
- $path =~ s|/\Z(?!\n)|| unless $path eq "/"; # xx/ -> xx
- return "$node$path";
-}
-
-=item catdir()
-
-Concatenate two or more directory names to form a complete path ending
-with a directory. But remove the trailing slash from the resulting
-string, because it doesn't look good, isn't necessary and confuses
-OS2. Of course, if this is the root directory, don't cut off the
-trailing slash :-)
-
-=cut
-
-sub catdir {
- my $self = shift;
-
- $self->canonpath(join('/', @_, '')); # '' because need a trailing '/'
-}
-
-=item catfile
-
-Concatenate one or more directory names and a filename to form a
-complete path ending with a filename
-
-=cut
-
-sub catfile {
- my $self = shift;
- my $file = $self->canonpath(pop @_);
- return $file unless @_;
- my $dir = $self->catdir(@_);
- $dir .= "/" unless substr($dir,-1) eq "/";
- return $dir.$file;
-}
-
-=item curdir
-
-Returns a string representation of the current directory. "." on UNIX.
-
-=cut
-
-sub curdir () { '.' }
-
-=item devnull
-
-Returns a string representation of the null device. "/dev/null" on UNIX.
-
-=cut
-
-sub devnull () { '/dev/null' }
-
-=item rootdir
-
-Returns a string representation of the root directory. "/" on UNIX.
-
-=cut
-
-sub rootdir () { '/' }
-
-=item tmpdir
-
-Returns a string representation of the first writable directory from
-the following list or the current directory if none from the list are
-writable:
-
- $ENV{TMPDIR}
- /tmp
-
-Since perl 5.8.0, if running under taint mode, and if $ENV{TMPDIR}
-is tainted, it is not used.
-
-=cut
-
-my $tmpdir;
-sub _tmpdir {
- return $tmpdir if defined $tmpdir;
- my $self = shift;
- my @dirlist = @_;
- {
- no strict 'refs';
- if (${"\cTAINT"}) { # Check for taint mode on perl >= 5.8.0
- require Scalar::Util;
- @dirlist = grep { ! Scalar::Util::tainted($_) } @dirlist;
- }
- }
- foreach (@dirlist) {
- next unless defined && -d && -w _;
- $tmpdir = $_;
- last;
- }
- $tmpdir = $self->curdir unless defined $tmpdir;
- $tmpdir = defined $tmpdir && $self->canonpath($tmpdir);
- return $tmpdir;
-}
-
-sub tmpdir {
- return $tmpdir if defined $tmpdir;
- $tmpdir = $_[0]->_tmpdir( $ENV{TMPDIR}, "/tmp" );
-}
-
-=item updir
-
-Returns a string representation of the parent directory. ".." on UNIX.
-
-=cut
-
-sub updir () { '..' }
-
-=item no_upwards
-
-Given a list of file names, strip out those that refer to a parent
-directory. (Does not strip symlinks, only '.', '..', and equivalents.)
-
-=cut
-
-sub no_upwards {
- my $self = shift;
- return grep(!/^\.{1,2}\Z(?!\n)/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 () { 0 }
-
-=item file_name_is_absolute
-
-Takes as argument a path and returns true if it is an absolute path.
-
-This does not consult the local filesystem on Unix, Win32, OS/2 or Mac
-OS (Classic). It does consult the working environment for VMS (see
-L<File::Spec::VMS/file_name_is_absolute>).
-
-=cut
-
-sub file_name_is_absolute {
- my ($self,$file) = @_;
- return scalar($file =~ m:^/:s);
-}
-
-=item path
-
-Takes no argument, returns the environment variable PATH as an array.
-
-=cut
-
-sub path {
- return () unless exists $ENV{PATH};
- my @path = split(':', $ENV{PATH});
- foreach (@path) { $_ = '.' if $_ eq '' }
- return @path;
-}
-
-=item join
-
-join is the same as catfile.
-
-=cut
-
-sub join {
- 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 into volume, directory, and filename portions. On systems
-with no concept of volume, returns '' 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(?!\n) )? )? ) ([^/]*) |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.
-
-On Unix,
-
- File::Spec->splitdir( "/a/b//c/" );
-
-Yields:
-
- ( '', 'a', 'b', '', 'c', '' )
-
-=cut
-
-sub splitdir {
- return split m|/|, $_[1], -1; # Preserve trailing fields
-}
-
-
-=item catpath()
-
-Takes volume, directory and file portions and returns an entire path. Under
-Unix, $volume is ignored, and directory and file are concatenated. A '/' is
-inserted if needed (though if the directory portion doesn't start with
-'/' it is not added). On other OSs, $volume is significant.
-
-=cut
-
-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( $path ) ;
- $rel_path = File::Spec->abs2rel( $path, $base ) ;
-
-If $base is not present or '', then L<cwd()|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()|Cwd>.
-
-On systems that have a grammar that indicates filenames, this ignores the
-$base filename. 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()|Cwd>.
-
-No checks against the filesystem are made. On VMS, there is
-interaction with the working environment, as logicals and
-macros are expanded.
-
-Based on code written by Shigio Yamaguchi.
-
-=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 = $self->_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( $path ) ;
- $abs_path = File::Spec->rel2abs( $path, $base ) ;
-
-If $base is not present or '', then L<cwd()|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()|Cwd>.
-
-On systems that have a grammar that indicates filenames, this ignores
-the $base filename. Otherwise all path components are assumed to be
-directories.
-
-If $path is absolute, it is cleaned up and returned using L</canonpath()>.
-
-No checks against the filesystem are made. On VMS, there is
-interaction with the working environment, as logicals and
-macros are expanded.
-
-Based on code written by Shigio Yamaguchi.
-
-=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 = $self->_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 COPYRIGHT
-
-Copyright (c) 2004 by the Perl 5 Porters. All rights reserved.
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=head1 SEE ALSO
-
-L<File::Spec>
-
-=cut
-
-# Internal routine to File::Spec, no point in making this public since
-# it is the standard Cwd interface. Most of the platform-specific
-# File::Spec subclasses use this.
-sub _cwd {
- require Cwd;
- Cwd::cwd();
-}
-
-
-# Internal method to reduce xx\..\yy -> yy
-sub _collapse {
- my($fs, $path) = @_;
-
- my $updir = $fs->updir;
- my $curdir = $fs->curdir;
-
- my($vol, $dirs, $file) = $fs->splitpath($path);
- my @dirs = $fs->splitdir($dirs);
-
- my @collapsed;
- foreach my $dir (@dirs) {
- if( $dir eq $updir and # if we have an updir
- @collapsed and # and something to collapse
- length $collapsed[-1] and # and its not the rootdir
- $collapsed[-1] ne $updir and # nor another updir
- $collapsed[-1] ne $curdir # nor the curdir
- )
- { # then
- pop @collapsed; # collapse
- }
- else { # else
- push @collapsed, $dir; # just hang onto it
- }
- }
-
- return $fs->catpath($vol,
- $fs->catdir(@collapsed),
- $file
- );
-}
-
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/File/Spec/VMS.pm b/Master/tlpkg/tlperl/lib/File/Spec/VMS.pm
deleted file mode 100644
index f8923f25fb2..00000000000
--- a/Master/tlpkg/tlperl/lib/File/Spec/VMS.pm
+++ /dev/null
@@ -1,521 +0,0 @@
-package File::Spec::VMS;
-
-use strict;
-use vars qw(@ISA $VERSION);
-require File::Spec::Unix;
-
-$VERSION = '1.4';
-
-@ISA = qw(File::Spec::Unix);
-
-use File::Basename;
-use VMS::Filespec;
-
-=head1 NAME
-
-File::Spec::VMS - methods for VMS file specs
-
-=head1 SYNOPSIS
-
- require File::Spec::VMS; # 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.
-
-=over 4
-
-=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(?!\n)|;
- $path = $self->SUPER::canonpath($path);
- if ($pathify) { return vmspath($path); }
- else { return vmsify($path); }
- }
- else {
- $path =~ tr/<>/[]/; # < and > ==> [ and ]
- $path =~ s/\]\[\./\.\]\[/g; # ][. ==> .][
- $path =~ s/\[000000\.\]\[/\[/g; # [000000.][ ==> [
- $path =~ s/\[000000\./\[/g; # [000000. ==> [
- $path =~ s/\.\]\[000000\]/\]/g; # .][000000] ==> ]
- $path =~ s/\.\]\[/\./g; # foo.][bar ==> foo.bar
- 1 while ($path =~ s/([\[\.])(-+)\.(-+)([\.\]])/$1$2$3$4/);
- # That loop does the following
- # with any amount of dashes:
- # .-.-. ==> .--.
- # [-.-. ==> [--.
- # .-.-] ==> .--]
- # [-.-] ==> [--]
- 1 while ($path =~ s/([\[\.])[^\]\.]+\.-(-+)([\]\.])/$1$2$3/);
- # That loop does the following
- # with any amount (minimum 2)
- # of dashes:
- # .foo.--. ==> .-.
- # .foo.--] ==> .-]
- # [foo.--. ==> [-.
- # [foo.--] ==> [-]
- #
- # And then, the remaining cases
- $path =~ s/\[\.-/[-/; # [.- ==> [-
- $path =~ s/\.[^\]\.]+\.-\./\./g; # .foo.-. ==> .
- $path =~ s/\[[^\]\.]+\.-\./\[/g; # [foo.-. ==> [
- $path =~ s/\.[^\]\.]+\.-\]/\]/g; # .foo.-] ==> ]
- $path =~ s/\[[^\]\.]+\.-\]/\[000000\]/g;# [foo.-] ==> [000000]
- $path =~ s/\[\]//; # [] ==>
- return $path;
- }
-}
-
-=item catdir (override)
-
-Concatenates a list of file specifications, and returns the result as a
-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;
- @dirs = grep($_,@dirs);
- my $rslt;
- if (@dirs) {
- my $path = (@dirs == 1 ? $dirs[0] : $self->catdir(@dirs));
- my ($spath,$sdir) = ($path,$dir);
- $spath =~ s/\.dir\Z(?!\n)//; $sdir =~ s/\.dir\Z(?!\n)//;
- $sdir = $self->eliminate_macros($sdir) unless $sdir =~ /^[\w\-]+\Z(?!\n)/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 (not defined $dir or not length $dir) { $rslt = ''; }
- elsif ($dir =~ /^\$\([^\)]+\)\Z(?!\n)/s) { $rslt = $dir; }
- else { $rslt = vmspath($dir); }
- }
- return $self->canonpath($rslt);
-}
-
-=item catfile (override)
-
-Concatenates a list of file specifications, and returns the result as a
-VMS-syntax file specification.
-
-=cut
-
-sub catfile {
- my ($self,@files) = @_;
- my $file = $self->canonpath(pop @files);
- @files = grep($_,@files);
- my $rslt;
- if (@files) {
- my $path = (@files == 1 ? $files[0] : $self->catdir(@files));
- my $spath = $path;
- $spath =~ s/\.dir\Z(?!\n)//;
- if ($spath =~ /^[^\)\]\/:>]+\)\Z(?!\n)/s && basename($file) eq $file) {
- $rslt = "$spath$file";
- }
- else {
- $rslt = $self->eliminate_macros($spath);
- $rslt = vmsify($rslt.($rslt ? '/' : '').unixify($file));
- }
- }
- else { $rslt = (defined($file) && length($file)) ? vmsify($file) : ''; }
- return $self->canonpath($rslt);
-}
-
-
-=item curdir (override)
-
-Returns a string representation of the current directory: '[]'
-
-=cut
-
-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 representation of the root directory: 'SYS$DISK:[000000]'
-
-=cut
-
-sub rootdir {
- 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}
-
-Since perl 5.8.0, if running under taint mode, and if $ENV{TMPDIR}
-is tainted, it is not used.
-
-=cut
-
-my $tmpdir;
-sub tmpdir {
- return $tmpdir if defined $tmpdir;
- $tmpdir = $_[0]->_tmpdir( 'sys$scratch:', $ENV{TMPDIR} );
-}
-
-=item updir (override)
-
-Returns a string representation of the parent directory: '[-]'
-
-=cut
-
-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
-to C<split> string value of C<$ENV{'PATH'}>.
-
-=cut
-
-sub path {
- my (@dirs,$dir,$i);
- while ($dir = $ENV{'DCL$PATH;' . $i++}) { push(@dirs,$dir); }
- return @dirs;
-}
-
-=item file_name_is_absolute (override)
-
-Checks for VMS directory spec as well as Unix separators.
-
-=cut
-
-sub file_name_is_absolute {
- my ($self,$file) = @_;
- # If it's a logical name, expand it.
- $file = $ENV{$file} while $file =~ /^[\w\$\-]+\Z(?!\n)/s && $ENV{$file};
- return scalar($file =~ m!^/!s ||
- $file =~ m![<\[][^.\-\]>]! ||
- $file =~ /:[^<\[]/);
-}
-
-=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 =~ tr/<>/[]/; # < and > ==> [ and ]
- $dirspec =~ s/\]\[\./\.\]\[/g; # ][. ==> .][
- $dirspec =~ s/\[000000\.\]\[/\[/g; # [000000.][ ==> [
- $dirspec =~ s/\[000000\./\[/g; # [000000. ==> [
- $dirspec =~ s/\.\]\[000000\]/\]/g; # .][000000] ==> ]
- $dirspec =~ s/\.\]\[/\./g; # foo.][bar ==> foo.bar
- while ($dirspec =~ s/(^|[\[\<\.])\-(\-+)($|[\]\>\.])/$1-.$2$3/g) {}
- # That loop does the following
- # with any amount of dashes:
- # .--. ==> .-.-.
- # [--. ==> [-.-.
- # .--] ==> .-.-]
- # [--] ==> [-.-]
- $dirspec = "[$dirspec]" unless $dirspec =~ /[\[<]/; # make legal
- my(@dirs) = split('\.', vmspath($dirspec));
- $dirs[0] =~ s/^[\[<]//s; $dirs[-1] =~ s/[\]>]\Z(?!\n)//s;
- @dirs;
-}
-
-
-=item catpath (override)
-
-Construct a complete filespec using VMS syntax
-
-=cut
-
-sub catpath {
- my($self,$dev,$dir,$file) = @_;
-
- # We look for a volume in $dev, then in $dir, but not both
- my ($dir_volume, $dir_dir, $dir_file) = $self->splitpath($dir);
- $dev = $dir_volume unless length $dev;
- $dir = length $dir_file ? $self->catfile($dir_dir, $dir_file) : $dir_dir;
-
- if ($dev =~ m|^/+([^/]+)|) { $dev = "$1:"; }
- else { $dev .= ':' unless $dev eq '' or $dev =~ /:\Z(?!\n)/; }
- 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 grep m{/}, @_;
-
- my($path,$base) = @_;
- $base = $self->_cwd() unless defined $base and length $base;
-
- for ($path, $base) { $_ = $self->canonpath($_) }
-
- # Are we even starting $path on the same (node::)device as $base? Note that
- # logical paths or nodename differences may be on the "same device"
- # but the comparison that ignores device differences so as to concatenate
- # [---] up directory specs is not even a good idea in cases where there is
- # a logical path difference between $path and $base nodename and/or device.
- # Hence we fall back to returning the absolute $path spec
- # if there is a case blind device (or node) difference of any sort
- # and we do not even try to call $parse() or consult %ENV for $trnlnm()
- # (this module needs to run on non VMS platforms after all).
-
- my ($path_volume, $path_directories, $path_file) = $self->splitpath($path);
- my ($base_volume, $base_directories, $base_file) = $self->splitpath($base);
- return $path unless lc($path_volume) eq lc($base_volume);
-
- for ($path, $base) { $_ = $self->rel2abs($_) }
-
- # Now, remove all leading components that are the same
- my @pathchunks = $self->splitdir( $path_directories );
- unshift(@pathchunks,'000000') unless $pathchunks[0] eq '000000';
- my @basechunks = $self->splitdir( $base_directories );
- unshift(@basechunks,'000000') unless $basechunks[0] eq '000000';
-
- 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 = join '.', ('-' x @basechunks, @pathchunks) ;
- return $self->canonpath( $self->catpath( '', $path_directories, $path_file ) ) ;
-}
-
-
-=item rel2abs (override)
-
-Use VMS syntax when converting filespecs.
-
-=cut
-
-sub rel2abs {
- my $self = shift ;
- my ($path,$base ) = @_;
- return undef unless defined $path;
- if ($path =~ m/\//) {
- $path = ( -d $path || $path =~ m/\/\z/ # educated guessing about
- ? vmspath($path) # whether it's a directory
- : vmsify($path) );
- }
- $base = vmspath($base) if defined $base && $base =~ m/\//;
- # 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 = $self->_cwd;
- }
- elsif ( ! $self->file_name_is_absolute( $base ) ) {
- $base = $self->rel2abs( $base ) ;
- }
- else {
- $base = $self->canonpath( $base ) ;
- }
-
- # Split up paths
- my ( $path_directories, $path_file ) =
- ($self->splitpath( $path ))[1,2] ;
-
- my ( $base_volume, $base_directories ) =
- $self->splitpath( $base ) ;
-
- $path_directories = '' if $path_directories eq '[]' ||
- $path_directories eq '<>';
- my $sep = '' ;
- $sep = '.'
- if ( $base_directories =~ m{[^.\]>]\Z(?!\n)} &&
- $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 ) ;
-}
-
-
-# eliminate_macros() and fixpath() are MakeMaker-specific methods
-# which are used inside catfile() and catdir(). MakeMaker has its own
-# copies as of 6.06_03 which are the canonical ones. We leave these
-# here, in peace, so that File::Spec continues to work with MakeMakers
-# prior to 6.06_03.
-#
-# Please consider these two methods deprecated. Do not patch them,
-# patch the ones in ExtUtils::MM_VMS instead.
-sub eliminate_macros {
- my($self,$path) = @_;
- return '' unless $path;
- $self = {} unless ref $self;
-
- if ($path =~ /\s/) {
- return join ' ', map { $self->eliminate_macros($_) } split /\s+/, $path;
- }
-
- 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(?!\n)##; }
- $npath = "$head$macro$tail";
- }
- }
- if ($complex) { $npath =~ s#\cB(.*?)\cB#\${$1}#gs; }
- $npath;
-}
-
-# Deprecated. See the note above for eliminate_macros().
-sub fixpath {
- my($self,$path,$force_path) = @_;
- return '' unless $path;
- $self = bless {} unless ref $self;
- my($fixedpath,$prefix,$name);
-
- if ($path =~ /\s/) {
- return join ' ',
- map { $self->fixpath($_,$force_path) }
- split /\s+/, $path;
- }
-
- if ($path =~ m#^\$\([^\)]+\)\Z(?!\n)#s || $path =~ m#[/:>\]]#) {
- if ($force_path or $path =~ /(?:DIR\)|\])\Z(?!\n)/) {
- $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(?!\n)/) ? 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
-
-=head1 COPYRIGHT
-
-Copyright (c) 2004 by the Perl 5 Porters. All rights reserved.
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=head1 SEE ALSO
-
-See L<File::Spec> and L<File::Spec::Unix>. This package overrides the
-implementation of these methods, not the semantics.
-
-An explanation of VMS file specs can be found at
-L<"http://h71000.www7.hp.com/doc/731FINAL/4506/4506pro_014.html#apps_locating_naming_files">.
-
-=cut
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/File/Spec/Win32.pm b/Master/tlpkg/tlperl/lib/File/Spec/Win32.pm
deleted file mode 100644
index a324306a74b..00000000000
--- a/Master/tlpkg/tlperl/lib/File/Spec/Win32.pm
+++ /dev/null
@@ -1,369 +0,0 @@
-package File::Spec::Win32;
-
-use strict;
-
-use vars qw(@ISA $VERSION);
-require File::Spec::Unix;
-
-$VERSION = '1.6';
-
-@ISA = qw(File::Spec::Unix);
-
-=head1 NAME
-
-File::Spec::Win32 - methods for Win32 file specs
-
-=head1 SYNOPSIS
-
- require File::Spec::Win32; # 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.
-
-=over 4
-
-=item devnull
-
-Returns a string representation of the null device.
-
-=cut
-
-sub devnull {
- return "nul";
-}
-
-sub rootdir () { '\\' }
-
-
-=item tmpdir
-
-Returns a string representation of the first existing directory
-from the following list:
-
- $ENV{TMPDIR}
- $ENV{TEMP}
- $ENV{TMP}
- SYS:/temp
- C:\system\temp
- C:/temp
- /tmp
- /
-
-The SYS:/temp is preferred in Novell NetWare and the C:\system\temp
-for Symbian (the File::Spec::Win32 is used also for those platforms).
-
-Since Perl 5.8.0, if running under taint mode, and if the environment
-variables are tainted, they are not used.
-
-=cut
-
-my $tmpdir;
-sub tmpdir {
- return $tmpdir if defined $tmpdir;
- $tmpdir = $_[0]->_tmpdir( @ENV{qw(TMPDIR TEMP TMP)},
- 'SYS:/temp',
- 'C:\system\temp',
- 'C:/temp',
- '/tmp',
- '/' );
-}
-
-sub case_tolerant {
- return 1;
-}
-
-sub file_name_is_absolute {
- my ($self,$file) = @_;
- return scalar($file =~ m{^([a-z]:)?[\\/]}is);
-}
-
-=item catfile
-
-Concatenate one or more directory names and a filename to form a
-complete path ending with a filename
-
-=cut
-
-sub catfile {
- my $self = shift;
- my $file = $self->canonpath(pop @_);
- return $file unless @_;
- my $dir = $self->catdir(@_);
- $dir .= "\\" unless substr($dir,-1) eq "\\";
- return $dir.$file;
-}
-
-sub catdir {
- my $self = shift;
- my @args = @_;
- foreach (@args) {
- tr[/][\\];
- # append a backslash to each argument unless it has one there
- $_ .= "\\" unless m{\\$};
- }
- return $self->canonpath(join('', @args));
-}
-
-sub path {
- my @path = split(';', $ENV{PATH});
- s/"//g for @path;
- @path = grep length, @path;
- unshift(@path, ".");
- return @path;
-}
-
-=item canonpath
-
-No physical check on the filesystem, but a logical cleanup of a
-path. On UNIX eliminated successive slashes and successive "/.".
-On Win32 makes
-
- dir1\dir2\dir3\..\..\dir4 -> \dir\dir4 and even
- dir1\dir2\dir3\...\dir4 -> \dir\dir4
-
-=cut
-
-sub canonpath {
- my ($self,$path) = @_;
-
- $path =~ s/^([a-z]:)/\u$1/s;
- $path =~ s|/|\\|g;
- $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(?!\n)||
- unless $path =~ m{^([A-Z]:)?\\\Z(?!\n)}s; # xx\ -> xx
- # xx1/xx2/xx3/../../xx -> xx1/xx
- $path =~ s|\\\.\.\.\\|\\\.\.\\\.\.\\|g; # \...\ is 2 levels up
- $path =~ s|^\.\.\.\\|\.\.\\\.\.\\|g; # ...\ is 2 levels up
- return $path if $path =~ m|^\.\.|; # skip relative paths
- return $path unless $path =~ /\.\./; # too few .'s to cleanup
- return $path if $path =~ /\.\.\.\./; # too many .'s to cleanup
- $path =~ s{^\\\.\.$}{\\}; # \.. -> \
- 1 while $path =~ s{^\\\.\.}{}; # \..\xx -> \xx
-
- return $self->_collapse($path);
-}
-
-=item splitpath
-
- ($volume,$directories,$file) = File::Spec->splitpath( $path );
- ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file );
-
-Splits a path into 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, '' ).
-
-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(?!\n))?)? )
- (.*)
- }xs;
- $volume = $1;
- $directory = $2;
- $file = $3;
- }
-
- return ($volume,$directory,$file);
-}
-
-
-=item splitdir
-
-The opposite of L<catdir()|File::Spec/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(?!\n)| ) {
- 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
- my $v;
- $volume .= $v
- if ( (($v) = $volume =~ m@^([\\/])[\\/][^\\/]+[\\/][^\\/]+\Z(?!\n)@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(?!\n)@s &&
- $volume =~ m@[^\\/]\Z(?!\n)@ &&
- $file =~ m@[^\\/]@
- ) {
- $volume =~ m@([\\/])@ ;
- my $sep = $1 ? $1 : '\\' ;
- $volume .= $sep ;
- }
-
- $volume .= $file ;
-
- return $volume ;
-}
-
-
-sub abs2rel {
- my($self,$path,$base) = @_;
- $base = $self->_cwd() unless defined $base and length $base;
-
- for ($path, $base) { $_ = $self->canonpath($_) }
-
- my ($path_volume) = $self->splitpath($path, 1);
- my ($base_volume) = $self->splitpath($base, 1);
-
- # Can't relativize across volumes
- return $path unless $path_volume eq $base_volume;
-
- for ($path, $base) { $_ = $self->rel2abs($_) }
-
- my $path_directories = ($self->splitpath($path, 1))[1];
- my $base_directories = ($self->splitpath($base, 1))[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 ;
- }
-
- my $result_dirs = $self->catdir( ($self->updir) x @basechunks, @pathchunks );
-
- return $self->canonpath( $self->catpath('', $result_dirs, '') );
-}
-
-
-sub rel2abs {
- my ($self,$path,$base ) = @_;
-
- if ( ! $self->file_name_is_absolute( $path ) ) {
-
- if ( !defined( $base ) || $base eq '' ) {
- require Cwd ;
- $base = Cwd::getdcwd( ($self->splitpath( $path ))[0] ) if defined &Cwd::getdcwd ;
- $base = $self->_cwd() unless defined $base ;
- }
- elsif ( ! $self->file_name_is_absolute( $base ) ) {
- $base = $self->rel2abs( $base ) ;
- }
- else {
- $base = $self->canonpath( $base ) ;
- }
-
- my ( $path_directories, $path_file ) =
- ($self->splitpath( $path, 1 ))[1,2] ;
-
- my ( $base_volume, $base_directories ) =
- $self->splitpath( $base, 1 ) ;
-
- $path = $self->catpath(
- $base_volume,
- $self->catdir( $base_directories, $path_directories ),
- $path_file
- ) ;
- }
-
- return $self->canonpath( $path ) ;
-}
-
-=back
-
-=head2 Note For File::Spec::Win32 Maintainers
-
-Novell NetWare inherits its File::Spec behaviour from File::Spec::Win32.
-
-=head1 COPYRIGHT
-
-Copyright (c) 2004 by the Perl 5 Porters. All rights reserved.
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=head1 SEE ALSO
-
-See L<File::Spec> and L<File::Spec::Unix>. This package overrides the
-implementation of these methods, not the semantics.
-
-=cut
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/File/Temp.pm b/Master/tlpkg/tlperl/lib/File/Temp.pm
deleted file mode 100644
index 6ddcb3619a7..00000000000
--- a/Master/tlpkg/tlperl/lib/File/Temp.pm
+++ /dev/null
@@ -1,2244 +0,0 @@
-package File::Temp;
-
-=head1 NAME
-
-File::Temp - return name and handle of a temporary file safely
-
-=begin __INTERNALS
-
-=head1 PORTABILITY
-
-This section is at the top in order to provide easier access to
-porters. It is not expected to be rendered by a standard pod
-formatting tool. Please skip straight to the SYNOPSIS section if you
-are not trying to port this module to a new platform.
-
-This module is designed to be portable across operating systems and it
-currently supports Unix, VMS, DOS, OS/2, Windows and Mac OS
-(Classic). When porting to a new OS there are generally three main
-issues that have to be solved:
-
-=over 4
-
-=item *
-
-Can the OS unlink an open file? If it can not then the
-C<_can_unlink_opened_file> method should be modified.
-
-=item *
-
-Are the return values from C<stat> reliable? By default all the
-return values from C<stat> are compared when unlinking a temporary
-file using the filename and the handle. Operating systems other than
-unix do not always have valid entries in all fields. If C<unlink0> fails
-then the C<stat> comparison should be modified accordingly.
-
-=item *
-
-Security. Systems that can not support a test for the sticky bit
-on a directory can not use the MEDIUM and HIGH security tests.
-The C<_can_do_level> method should be modified accordingly.
-
-=back
-
-=end __INTERNALS
-
-=head1 SYNOPSIS
-
- use File::Temp qw/ tempfile tempdir /;
-
- $fh = tempfile();
- ($fh, $filename) = tempfile();
-
- ($fh, $filename) = tempfile( $template, DIR => $dir);
- ($fh, $filename) = tempfile( $template, SUFFIX => '.dat');
-
-
- $dir = tempdir( CLEANUP => 1 );
- ($fh, $filename) = tempfile( DIR => $dir );
-
-Object interface:
-
- require File::Temp;
- use File::Temp ();
-
- $fh = new File::Temp($template);
- $fname = $fh->filename;
-
- $tmp = new File::Temp( UNLINK => 0, SUFFIX => '.dat' );
- print $tmp "Some data\n";
- print "Filename is $tmp\n";
-
-The following interfaces are provided for compatibility with
-existing APIs. They should not be used in new code.
-
-MkTemp family:
-
- use File::Temp qw/ :mktemp /;
-
- ($fh, $file) = mkstemp( "tmpfileXXXXX" );
- ($fh, $file) = mkstemps( "tmpfileXXXXXX", $suffix);
-
- $tmpdir = mkdtemp( $template );
-
- $unopened_file = mktemp( $template );
-
-POSIX functions:
-
- use File::Temp qw/ :POSIX /;
-
- $file = tmpnam();
- $fh = tmpfile();
-
- ($fh, $file) = tmpnam();
-
-Compatibility functions:
-
- $unopened_file = File::Temp::tempnam( $dir, $pfx );
-
-=head1 DESCRIPTION
-
-C<File::Temp> can be used to create and open temporary files in a safe
-way. There is both a function interface and an object-oriented
-interface. The File::Temp constructor or the tempfile() function can
-be used to return the name and the open filehandle of a temporary
-file. The tempdir() function can be used to create a temporary
-directory.
-
-The security aspect of temporary file creation is emphasized such that
-a filehandle and filename are returned together. This helps guarantee
-that a race condition can not occur where the temporary file is
-created by another process between checking for the existence of the
-file and its opening. Additional security levels are provided to
-check, for example, that the sticky bit is set on world writable
-directories. See L<"safe_level"> for more information.
-
-For compatibility with popular C library functions, Perl implementations of
-the mkstemp() family of functions are provided. These are, mkstemp(),
-mkstemps(), mkdtemp() and mktemp().
-
-Additionally, implementations of the standard L<POSIX|POSIX>
-tmpnam() and tmpfile() functions are provided if required.
-
-Implementations of mktemp(), tmpnam(), and tempnam() are provided,
-but should be used with caution since they return only a filename
-that was valid when function was called, so cannot guarantee
-that the file will not exist by the time the caller opens the filename.
-
-=cut
-
-# 5.6.0 gives us S_IWOTH, S_IWGRP, our and auto-vivifying filehandls
-# People would like a version on 5.005 so give them what they want :-)
-use 5.005;
-use strict;
-use Carp;
-use File::Spec 0.8;
-use File::Path qw/ rmtree /;
-use Fcntl 1.03;
-use Errno;
-require VMS::Stdio if $^O eq 'VMS';
-
-# Need the Symbol package if we are running older perl
-require Symbol if $] < 5.006;
-
-### For the OO interface
-use base qw/ IO::Handle /;
-use overload '""' => "STRINGIFY";
-
-
-# use 'our' on v5.6.0
-use vars qw($VERSION @EXPORT_OK %EXPORT_TAGS $DEBUG $KEEP_ALL);
-
-$DEBUG = 0;
-$KEEP_ALL = 0;
-
-# We are exporting functions
-
-use base qw/Exporter/;
-
-# Export list - to allow fine tuning of export table
-
-@EXPORT_OK = qw{
- tempfile
- tempdir
- tmpnam
- tmpfile
- mktemp
- mkstemp
- mkstemps
- mkdtemp
- unlink0
- cleanup
- };
-
-# Groups of functions for export
-
-%EXPORT_TAGS = (
- 'POSIX' => [qw/ tmpnam tmpfile /],
- 'mktemp' => [qw/ mktemp mkstemp mkstemps mkdtemp/],
- );
-
-# add contents of these tags to @EXPORT
-Exporter::export_tags('POSIX','mktemp');
-
-# Version number
-
-$VERSION = '0.16';
-
-# This is a list of characters that can be used in random filenames
-
-my @CHARS = (qw/ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
- a b c d e f g h i j k l m n o p q r s t u v w x y z
- 0 1 2 3 4 5 6 7 8 9 _
- /);
-
-# Maximum number of tries to make a temp file before failing
-
-use constant MAX_TRIES => 1000;
-
-# Minimum number of X characters that should be in a template
-use constant MINX => 4;
-
-# Default template when no template supplied
-
-use constant TEMPXXX => 'X' x 10;
-
-# Constants for the security level
-
-use constant STANDARD => 0;
-use constant MEDIUM => 1;
-use constant HIGH => 2;
-
-# OPENFLAGS. If we defined the flag to use with Sysopen here this gives
-# us an optimisation when many temporary files are requested
-
-my $OPENFLAGS = O_CREAT | O_EXCL | O_RDWR;
-
-unless ($^O eq 'MacOS') {
- for my $oflag (qw/ NOFOLLOW BINARY LARGEFILE EXLOCK NOINHERIT /) {
- my ($bit, $func) = (0, "Fcntl::O_" . $oflag);
- no strict 'refs';
- $OPENFLAGS |= $bit if eval {
- # Make sure that redefined die handlers do not cause problems
- # eg CGI::Carp
- local $SIG{__DIE__} = sub {};
- local $SIG{__WARN__} = sub {};
- $bit = &$func();
- 1;
- };
- }
-}
-
-# On some systems the O_TEMPORARY flag can be used to tell the OS
-# to automatically remove the file when it is closed. This is fine
-# in most cases but not if tempfile is called with UNLINK=>0 and
-# the filename is requested -- in the case where the filename is to
-# be passed to another routine. This happens on windows. We overcome
-# this by using a second open flags variable
-
-my $OPENTEMPFLAGS = $OPENFLAGS;
-unless ($^O eq 'MacOS') {
- for my $oflag (qw/ TEMPORARY /) {
- my ($bit, $func) = (0, "Fcntl::O_" . $oflag);
- no strict 'refs';
- $OPENTEMPFLAGS |= $bit if eval {
- # Make sure that redefined die handlers do not cause problems
- # eg CGI::Carp
- local $SIG{__DIE__} = sub {};
- local $SIG{__WARN__} = sub {};
- $bit = &$func();
- 1;
- };
- }
-}
-
-# INTERNAL ROUTINES - not to be used outside of package
-
-# Generic routine for getting a temporary filename
-# modelled on OpenBSD _gettemp() in mktemp.c
-
-# The template must contain X's that are to be replaced
-# with the random values
-
-# Arguments:
-
-# TEMPLATE - string containing the XXXXX's that is converted
-# to a random filename and opened if required
-
-# Optionally, a hash can also be supplied containing specific options
-# "open" => if true open the temp file, else just return the name
-# default is 0
-# "mkdir"=> if true, we are creating a temp directory rather than tempfile
-# default is 0
-# "suffixlen" => number of characters at end of PATH to be ignored.
-# default is 0.
-# "unlink_on_close" => indicates that, if possible, the OS should remove
-# the file as soon as it is closed. Usually indicates
-# use of the O_TEMPORARY flag to sysopen.
-# Usually irrelevant on unix
-
-# Optionally a reference to a scalar can be passed into the function
-# On error this will be used to store the reason for the error
-# "ErrStr" => \$errstr
-
-# "open" and "mkdir" can not both be true
-# "unlink_on_close" is not used when "mkdir" is true.
-
-# The default options are equivalent to mktemp().
-
-# Returns:
-# filehandle - open file handle (if called with doopen=1, else undef)
-# temp name - name of the temp file or directory
-
-# For example:
-# ($fh, $name) = _gettemp($template, "open" => 1);
-
-# for the current version, failures are associated with
-# stored in an error string and returned to give the reason whilst debugging
-# This routine is not called by any external function
-sub _gettemp {
-
- croak 'Usage: ($fh, $name) = _gettemp($template, OPTIONS);'
- unless scalar(@_) >= 1;
-
- # the internal error string - expect it to be overridden
- # Need this in case the caller decides not to supply us a value
- # need an anonymous scalar
- my $tempErrStr;
-
- # Default options
- my %options = (
- "open" => 0,
- "mkdir" => 0,
- "suffixlen" => 0,
- "unlink_on_close" => 0,
- "ErrStr" => \$tempErrStr,
- );
-
- # Read the template
- my $template = shift;
- if (ref($template)) {
- # Use a warning here since we have not yet merged ErrStr
- carp "File::Temp::_gettemp: template must not be a reference";
- return ();
- }
-
- # Check that the number of entries on stack are even
- if (scalar(@_) % 2 != 0) {
- # Use a warning here since we have not yet merged ErrStr
- carp "File::Temp::_gettemp: Must have even number of options";
- return ();
- }
-
- # Read the options and merge with defaults
- %options = (%options, @_) if @_;
-
- # Make sure the error string is set to undef
- ${$options{ErrStr}} = undef;
-
- # Can not open the file and make a directory in a single call
- if ($options{"open"} && $options{"mkdir"}) {
- ${$options{ErrStr}} = "doopen and domkdir can not both be true\n";
- return ();
- }
-
- # Find the start of the end of the Xs (position of last X)
- # Substr starts from 0
- my $start = length($template) - 1 - $options{"suffixlen"};
-
- # Check that we have at least MINX x X (eg 'XXXX") at the end of the string
- # (taking suffixlen into account). Any fewer is insecure.
-
- # Do it using substr - no reason to use a pattern match since
- # we know where we are looking and what we are looking for
-
- if (substr($template, $start - MINX + 1, MINX) ne 'X' x MINX) {
- ${$options{ErrStr}} = "The template must end with at least ".
- MINX . " 'X' characters\n";
- return ();
- }
-
- # Replace all the X at the end of the substring with a
- # random character or just all the XX at the end of a full string.
- # Do it as an if, since the suffix adjusts which section to replace
- # and suffixlen=0 returns nothing if used in the substr directly
- # and generate a full path from the template
-
- my $path = _replace_XX($template, $options{"suffixlen"});
-
-
- # Split the path into constituent parts - eventually we need to check
- # whether the directory exists
- # We need to know whether we are making a temp directory
- # or a tempfile
-
- my ($volume, $directories, $file);
- my $parent; # parent directory
- if ($options{"mkdir"}) {
- # There is no filename at the end
- ($volume, $directories, $file) = File::Spec->splitpath( $path, 1);
-
- # The parent is then $directories without the last directory
- # Split the directory and put it back together again
- my @dirs = File::Spec->splitdir($directories);
-
- # If @dirs only has one entry (i.e. the directory template) that means
- # we are in the current directory
- if ($#dirs == 0) {
- $parent = File::Spec->curdir;
- } else {
-
- if ($^O eq 'VMS') { # need volume to avoid relative dir spec
- $parent = File::Spec->catdir($volume, @dirs[0..$#dirs-1]);
- $parent = 'sys$disk:[]' if $parent eq '';
- } else {
-
- # Put it back together without the last one
- $parent = File::Spec->catdir(@dirs[0..$#dirs-1]);
-
- # ...and attach the volume (no filename)
- $parent = File::Spec->catpath($volume, $parent, '');
- }
-
- }
-
- } else {
-
- # Get rid of the last filename (use File::Basename for this?)
- ($volume, $directories, $file) = File::Spec->splitpath( $path );
-
- # Join up without the file part
- $parent = File::Spec->catpath($volume,$directories,'');
-
- # If $parent is empty replace with curdir
- $parent = File::Spec->curdir
- unless $directories ne '';
-
- }
-
- # Check that the parent directories exist
- # Do this even for the case where we are simply returning a name
- # not a file -- no point returning a name that includes a directory
- # that does not exist or is not writable
-
- unless (-d $parent) {
- ${$options{ErrStr}} = "Parent directory ($parent) is not a directory";
- return ();
- }
- unless (-w $parent) {
- ${$options{ErrStr}} = "Parent directory ($parent) is not writable\n";
- return ();
- }
-
-
- # Check the stickiness of the directory and chown giveaway if required
- # If the directory is world writable the sticky bit
- # must be set
-
- if (File::Temp->safe_level == MEDIUM) {
- my $safeerr;
- unless (_is_safe($parent,\$safeerr)) {
- ${$options{ErrStr}} = "Parent directory ($parent) is not safe ($safeerr)";
- return ();
- }
- } elsif (File::Temp->safe_level == HIGH) {
- my $safeerr;
- unless (_is_verysafe($parent, \$safeerr)) {
- ${$options{ErrStr}} = "Parent directory ($parent) is not safe ($safeerr)";
- return ();
- }
- }
-
-
- # Now try MAX_TRIES time to open the file
- for (my $i = 0; $i < MAX_TRIES; $i++) {
-
- # Try to open the file if requested
- if ($options{"open"}) {
- my $fh;
-
- # If we are running before perl5.6.0 we can not auto-vivify
- if ($] < 5.006) {
- $fh = &Symbol::gensym;
- }
-
- # Try to make sure this will be marked close-on-exec
- # XXX: Win32 doesn't respect this, nor the proper fcntl,
- # but may have O_NOINHERIT. This may or may not be in Fcntl.
- local $^F = 2;
-
- # Store callers umask
- my $umask = umask();
-
- # Set a known umask
- umask(066);
-
- # Attempt to open the file
- my $open_success = undef;
- if ( $^O eq 'VMS' and $options{"unlink_on_close"} && !$KEEP_ALL) {
- # make it auto delete on close by setting FAB$V_DLT bit
- $fh = VMS::Stdio::vmssysopen($path, $OPENFLAGS, 0600, 'fop=dlt');
- $open_success = $fh;
- } else {
- my $flags = ( ($options{"unlink_on_close"} && !$KEEP_ALL) ?
- $OPENTEMPFLAGS :
- $OPENFLAGS );
- $open_success = sysopen($fh, $path, $flags, 0600);
- }
- if ( $open_success ) {
-
- # Reset umask
- umask($umask) if defined $umask;
-
- # Opened successfully - return file handle and name
- return ($fh, $path);
-
- } else {
- # Reset umask
- umask($umask) if defined $umask;
-
- # Error opening file - abort with error
- # if the reason was anything but EEXIST
- unless ($!{EEXIST}) {
- ${$options{ErrStr}} = "Could not create temp file $path: $!";
- return ();
- }
-
- # Loop round for another try
-
- }
- } elsif ($options{"mkdir"}) {
-
- # Store callers umask
- my $umask = umask();
-
- # Set a known umask
- umask(066);
-
- # Open the temp directory
- if (mkdir( $path, 0700)) {
- # created okay
- # Reset umask
- umask($umask) if defined $umask;
-
- return undef, $path;
- } else {
-
- # Reset umask
- umask($umask) if defined $umask;
-
- # Abort with error if the reason for failure was anything
- # except EEXIST
- unless ($!{EEXIST}) {
- ${$options{ErrStr}} = "Could not create directory $path: $!";
- return ();
- }
-
- # Loop round for another try
-
- }
-
- } else {
-
- # Return true if the file can not be found
- # Directory has been checked previously
-
- return (undef, $path) unless -e $path;
-
- # Try again until MAX_TRIES
-
- }
-
- # Did not successfully open the tempfile/dir
- # so try again with a different set of random letters
- # No point in trying to increment unless we have only
- # 1 X say and the randomness could come up with the same
- # file MAX_TRIES in a row.
-
- # Store current attempt - in principal this implies that the
- # 3rd time around the open attempt that the first temp file
- # name could be generated again. Probably should store each
- # attempt and make sure that none are repeated
-
- my $original = $path;
- my $counter = 0; # Stop infinite loop
- my $MAX_GUESS = 50;
-
- do {
-
- # Generate new name from original template
- $path = _replace_XX($template, $options{"suffixlen"});
-
- $counter++;
-
- } until ($path ne $original || $counter > $MAX_GUESS);
-
- # Check for out of control looping
- if ($counter > $MAX_GUESS) {
- ${$options{ErrStr}} = "Tried to get a new temp name different to the previous value $MAX_GUESS times.\nSomething wrong with template?? ($template)";
- return ();
- }
-
- }
-
- # If we get here, we have run out of tries
- ${ $options{ErrStr} } = "Have exceeded the maximum number of attempts ("
- . MAX_TRIES . ") to open temp file/dir";
-
- return ();
-
-}
-
-# Internal routine to return a random character from the
-# character list. Does not do an srand() since rand()
-# will do one automatically
-
-# No arguments. Return value is the random character
-
-# No longer called since _replace_XX runs a few percent faster if
-# I inline the code. This is important if we are creating thousands of
-# temporary files.
-
-sub _randchar {
-
- $CHARS[ int( rand( $#CHARS ) ) ];
-
-}
-
-# Internal routine to replace the XXXX... with random characters
-# This has to be done by _gettemp() every time it fails to
-# open a temp file/dir
-
-# Arguments: $template (the template with XXX),
-# $ignore (number of characters at end to ignore)
-
-# Returns: modified template
-
-sub _replace_XX {
-
- croak 'Usage: _replace_XX($template, $ignore)'
- unless scalar(@_) == 2;
-
- my ($path, $ignore) = @_;
-
- # Do it as an if, since the suffix adjusts which section to replace
- # and suffixlen=0 returns nothing if used in the substr directly
- # Alternatively, could simply set $ignore to length($path)-1
- # Don't want to always use substr when not required though.
-
- if ($ignore) {
- substr($path, 0, - $ignore) =~ s/X(?=X*\z)/$CHARS[ int( rand( $#CHARS ) ) ]/ge;
- } else {
- $path =~ s/X(?=X*\z)/$CHARS[ int( rand( $#CHARS ) ) ]/ge;
- }
- return $path;
-}
-
-# Internal routine to force a temp file to be writable after
-# it is created so that we can unlink it. Windows seems to occassionally
-# force a file to be readonly when written to certain temp locations
-sub _force_writable {
- my $file = shift;
- my $umask = umask();
- umask(066);
- chmod 0600, $file;
- umask($umask) if defined $umask;
-}
-
-
-# internal routine to check to see if the directory is safe
-# First checks to see if the directory is not owned by the
-# current user or root. Then checks to see if anyone else
-# can write to the directory and if so, checks to see if
-# it has the sticky bit set
-
-# Will not work on systems that do not support sticky bit
-
-#Args: directory path to check
-# Optionally: reference to scalar to contain error message
-# Returns true if the path is safe and false otherwise.
-# Returns undef if can not even run stat() on the path
-
-# This routine based on version written by Tom Christiansen
-
-# Presumably, by the time we actually attempt to create the
-# file or directory in this directory, it may not be safe
-# anymore... Have to run _is_safe directly after the open.
-
-sub _is_safe {
-
- my $path = shift;
- my $err_ref = shift;
-
- # Stat path
- my @info = stat($path);
- unless (scalar(@info)) {
- $$err_ref = "stat(path) returned no values";
- return 0;
- };
- return 1 if $^O eq 'VMS'; # owner delete control at file level
-
- # Check to see whether owner is neither superuser (or a system uid) nor me
- # Use the real uid from the $< variable
- # UID is in [4]
- if ($info[4] > File::Temp->top_system_uid() && $info[4] != $<) {
-
- Carp::cluck(sprintf "uid=$info[4] topuid=%s \$<=$< path='$path'",
- File::Temp->top_system_uid());
-
- $$err_ref = "Directory owned neither by root nor the current user"
- if ref($err_ref);
- return 0;
- }
-
- # check whether group or other can write file
- # use 066 to detect either reading or writing
- # use 022 to check writability
- # Do it with S_IWOTH and S_IWGRP for portability (maybe)
- # mode is in info[2]
- if (($info[2] & &Fcntl::S_IWGRP) || # Is group writable?
- ($info[2] & &Fcntl::S_IWOTH) ) { # Is world writable?
- # Must be a directory
- unless (-d $path) {
- $$err_ref = "Path ($path) is not a directory"
- if ref($err_ref);
- return 0;
- }
- # Must have sticky bit set
- unless (-k $path) {
- $$err_ref = "Sticky bit not set on $path when dir is group|world writable"
- if ref($err_ref);
- return 0;
- }
- }
-
- return 1;
-}
-
-# Internal routine to check whether a directory is safe
-# for temp files. Safer than _is_safe since it checks for
-# the possibility of chown giveaway and if that is a possibility
-# checks each directory in the path to see if it is safe (with _is_safe)
-
-# If _PC_CHOWN_RESTRICTED is not set, does the full test of each
-# directory anyway.
-
-# Takes optional second arg as scalar ref to error reason
-
-sub _is_verysafe {
-
- # Need POSIX - but only want to bother if really necessary due to overhead
- require POSIX;
-
- my $path = shift;
- print "_is_verysafe testing $path\n" if $DEBUG;
- return 1 if $^O eq 'VMS'; # owner delete control at file level
-
- my $err_ref = shift;
-
- # Should Get the value of _PC_CHOWN_RESTRICTED if it is defined
- # and If it is not there do the extensive test
- my $chown_restricted;
- $chown_restricted = &POSIX::_PC_CHOWN_RESTRICTED()
- if eval { &POSIX::_PC_CHOWN_RESTRICTED(); 1};
-
- # If chown_resticted is set to some value we should test it
- if (defined $chown_restricted) {
-
- # Return if the current directory is safe
- return _is_safe($path,$err_ref) if POSIX::sysconf( $chown_restricted );
-
- }
-
- # To reach this point either, the _PC_CHOWN_RESTRICTED symbol
- # was not avialable or the symbol was there but chown giveaway
- # is allowed. Either way, we now have to test the entire tree for
- # safety.
-
- # Convert path to an absolute directory if required
- unless (File::Spec->file_name_is_absolute($path)) {
- $path = File::Spec->rel2abs($path);
- }
-
- # Split directory into components - assume no file
- my ($volume, $directories, undef) = File::Spec->splitpath( $path, 1);
-
- # Slightly less efficient than having a function in File::Spec
- # to chop off the end of a directory or even a function that
- # can handle ../ in a directory tree
- # Sometimes splitdir() returns a blank at the end
- # so we will probably check the bottom directory twice in some cases
- my @dirs = File::Spec->splitdir($directories);
-
- # Concatenate one less directory each time around
- foreach my $pos (0.. $#dirs) {
- # Get a directory name
- my $dir = File::Spec->catpath($volume,
- File::Spec->catdir(@dirs[0.. $#dirs - $pos]),
- ''
- );
-
- print "TESTING DIR $dir\n" if $DEBUG;
-
- # Check the directory
- return 0 unless _is_safe($dir,$err_ref);
-
- }
-
- return 1;
-}
-
-
-
-# internal routine to determine whether unlink works on this
-# platform for files that are currently open.
-# Returns true if we can, false otherwise.
-
-# Currently WinNT, OS/2 and VMS can not unlink an opened file
-# On VMS this is because the O_EXCL flag is used to open the
-# temporary file. Currently I do not know enough about the issues
-# on VMS to decide whether O_EXCL is a requirement.
-
-sub _can_unlink_opened_file {
-
- if ($^O eq 'MSWin32' || $^O eq 'os2' || $^O eq 'VMS' || $^O eq 'dos' || $^O eq 'MacOS') {
- return 0;
- } else {
- return 1;
- }
-
-}
-
-# internal routine to decide which security levels are allowed
-# see safe_level() for more information on this
-
-# Controls whether the supplied security level is allowed
-
-# $cando = _can_do_level( $level )
-
-sub _can_do_level {
-
- # Get security level
- my $level = shift;
-
- # Always have to be able to do STANDARD
- return 1 if $level == STANDARD;
-
- # Currently, the systems that can do HIGH or MEDIUM are identical
- if ( $^O eq 'MSWin32' || $^O eq 'os2' || $^O eq 'cygwin' || $^O eq 'dos' || $^O eq 'MacOS' || $^O eq 'mpeix') {
- return 0;
- } else {
- return 1;
- }
-
-}
-
-# This routine sets up a deferred unlinking of a specified
-# filename and filehandle. It is used in the following cases:
-# - Called by unlink0 if an opened file can not be unlinked
-# - Called by tempfile() if files are to be removed on shutdown
-# - Called by tempdir() if directories are to be removed on shutdown
-
-# Arguments:
-# _deferred_unlink( $fh, $fname, $isdir );
-#
-# - filehandle (so that it can be expclicitly closed if open
-# - filename (the thing we want to remove)
-# - isdir (flag to indicate that we are being given a directory)
-# [and hence no filehandle]
-
-# Status is not referred to since all the magic is done with an END block
-
-{
- # Will set up two lexical variables to contain all the files to be
- # removed. One array for files, another for directories They will
- # only exist in this block.
-
- # This means we only have to set up a single END block to remove
- # all files.
-
- # in order to prevent child processes inadvertently deleting the parent
- # temp files we use a hash to store the temp files and directories
- # created by a particular process id.
-
- # %files_to_unlink contains values that are references to an array of
- # array references containing the filehandle and filename associated with
- # the temp file.
- my (%files_to_unlink, %dirs_to_unlink);
-
- # Set up an end block to use these arrays
- END {
- cleanup();
- }
-
- # Cleanup function. Always triggered on END but can be invoked
- # manually.
- sub cleanup {
- if (!$KEEP_ALL) {
- # Files
- my @files = (exists $files_to_unlink{$$} ?
- @{ $files_to_unlink{$$} } : () );
- foreach my $file (@files) {
- # close the filehandle without checking its state
- # in order to make real sure that this is closed
- # if its already closed then I dont care about the answer
- # probably a better way to do this
- close($file->[0]); # file handle is [0]
-
- if (-f $file->[1]) { # file name is [1]
- _force_writable( $file->[1] ); # for windows
- unlink $file->[1] or warn "Error removing ".$file->[1];
- }
- }
- # Dirs
- my @dirs = (exists $dirs_to_unlink{$$} ?
- @{ $dirs_to_unlink{$$} } : () );
- foreach my $dir (@dirs) {
- if (-d $dir) {
- rmtree($dir, $DEBUG, 0);
- }
- }
-
- # clear the arrays
- @{ $files_to_unlink{$$} } = ()
- if exists $files_to_unlink{$$};
- @{ $dirs_to_unlink{$$} } = ()
- if exists $dirs_to_unlink{$$};
- }
- }
-
-
- # This is the sub called to register a file for deferred unlinking
- # This could simply store the input parameters and defer everything
- # until the END block. For now we do a bit of checking at this
- # point in order to make sure that (1) we have a file/dir to delete
- # and (2) we have been called with the correct arguments.
- sub _deferred_unlink {
-
- croak 'Usage: _deferred_unlink($fh, $fname, $isdir)'
- unless scalar(@_) == 3;
-
- my ($fh, $fname, $isdir) = @_;
-
- warn "Setting up deferred removal of $fname\n"
- if $DEBUG;
-
- # If we have a directory, check that it is a directory
- if ($isdir) {
-
- if (-d $fname) {
-
- # Directory exists so store it
- # first on VMS turn []foo into [.foo] for rmtree
- $fname = VMS::Filespec::vmspath($fname) if $^O eq 'VMS';
- $dirs_to_unlink{$$} = []
- unless exists $dirs_to_unlink{$$};
- push (@{ $dirs_to_unlink{$$} }, $fname);
-
- } else {
- carp "Request to remove directory $fname could not be completed since it does not exist!\n" if $^W;
- }
-
- } else {
-
- if (-f $fname) {
-
- # file exists so store handle and name for later removal
- $files_to_unlink{$$} = []
- unless exists $files_to_unlink{$$};
- push(@{ $files_to_unlink{$$} }, [$fh, $fname]);
-
- } else {
- carp "Request to remove file $fname could not be completed since it is not there!\n" if $^W;
- }
-
- }
-
- }
-
-
-}
-
-=head1 OBJECT-ORIENTED INTERFACE
-
-This is the primary interface for interacting with
-C<File::Temp>. Using the OO interface a temporary file can be created
-when the object is constructed and the file can be removed when the
-object is no longer required.
-
-Note that there is no method to obtain the filehandle from the
-C<File::Temp> object. The object itself acts as a filehandle. Also,
-the object is configured such that it stringifies to the name of the
-temporary file.
-
-=over 4
-
-=item B<new>
-
-Create a temporary file object.
-
- my $tmp = new File::Temp();
-
-by default the object is constructed as if C<tempfile>
-was called without options, but with the additional behaviour
-that the temporary file is removed by the object destructor
-if UNLINK is set to true (the default).
-
-Supported arguments are the same as for C<tempfile>: UNLINK
-(defaulting to true), DIR and SUFFIX. Additionally, the filename
-template is specified using the TEMPLATE option. The OPEN option
-is not supported (the file is always opened).
-
- $tmp = new File::Temp( TEMPLATE => 'tempXXXXX',
- DIR => 'mydir',
- SUFFIX => '.dat');
-
-Arguments are case insensitive.
-
-=cut
-
-sub new {
- my $proto = shift;
- my $class = ref($proto) || $proto;
-
- # read arguments and convert keys to upper case
- my %args = @_;
- %args = map { uc($_), $args{$_} } keys %args;
-
- # see if they are unlinking (defaulting to yes)
- my $unlink = (exists $args{UNLINK} ? $args{UNLINK} : 1 );
- delete $args{UNLINK};
-
- # template (store it in an error so that it will
- # disappear from the arg list of tempfile
- my @template = ( exists $args{TEMPLATE} ? $args{TEMPLATE} : () );
- delete $args{TEMPLATE};
-
- # Protect OPEN
- delete $args{OPEN};
-
- # Open the file and retain file handle and file name
- my ($fh, $path) = tempfile( @template, %args );
-
- print "Tmp: $fh - $path\n" if $DEBUG;
-
- # Store the filename in the scalar slot
- ${*$fh} = $path;
-
- # Store unlink information in hash slot (plus other constructor info)
- %{*$fh} = %args;
-
- # create the object
- bless $fh, $class;
-
- # final method-based configuration
- $fh->unlink_on_destroy( $unlink );
-
- return $fh;
-}
-
-=item B<filename>
-
-Return the name of the temporary file associated with this object.
-
- $filename = $tmp->filename;
-
-This method is called automatically when the object is used as
-a string.
-
-=cut
-
-sub filename {
- my $self = shift;
- return ${*$self};
-}
-
-sub STRINGIFY {
- my $self = shift;
- return $self->filename;
-}
-
-=item B<unlink_on_destroy>
-
-Control whether the file is unlinked when the object goes out of scope.
-The file is removed if this value is true and $KEEP_ALL is not.
-
- $fh->unlink_on_destroy( 1 );
-
-Default is for the file to be removed.
-
-=cut
-
-sub unlink_on_destroy {
- my $self = shift;
- if (@_) {
- ${*$self}{UNLINK} = shift;
- }
- return ${*$self}{UNLINK};
-}
-
-=item B<DESTROY>
-
-When the object goes out of scope, the destructor is called. This
-destructor will attempt to unlink the file (using C<unlink1>)
-if the constructor was called with UNLINK set to 1 (the default state
-if UNLINK is not specified).
-
-No error is given if the unlink fails.
-
-If the global variable $KEEP_ALL is true, the file will not be removed.
-
-=cut
-
-sub DESTROY {
- my $self = shift;
- if (${*$self}{UNLINK} && !$KEEP_ALL) {
- print "# ---------> Unlinking $self\n" if $DEBUG;
-
- # The unlink1 may fail if the file has been closed
- # by the caller. This leaves us with the decision
- # of whether to refuse to remove the file or simply
- # do an unlink without test. Seems to be silly
- # to do this when we are trying to be careful
- # about security
- _force_writable( $self->filename ); # for windows
- unlink1( $self, $self->filename )
- or unlink($self->filename);
- }
-}
-
-=back
-
-=head1 FUNCTIONS
-
-This section describes the recommended interface for generating
-temporary files and directories.
-
-=over 4
-
-=item B<tempfile>
-
-This is the basic function to generate temporary files.
-The behaviour of the file can be changed using various options:
-
- $fh = tempfile();
- ($fh, $filename) = tempfile();
-
-Create a temporary file in the directory specified for temporary
-files, as specified by the tmpdir() function in L<File::Spec>.
-
- ($fh, $filename) = tempfile($template);
-
-Create a temporary file in the current directory using the supplied
-template. Trailing `X' characters are replaced with random letters to
-generate the filename. At least four `X' characters must be present
-at the end of the template.
-
- ($fh, $filename) = tempfile($template, SUFFIX => $suffix)
-
-Same as previously, except that a suffix is added to the template
-after the `X' translation. Useful for ensuring that a temporary
-filename has a particular extension when needed by other applications.
-But see the WARNING at the end.
-
- ($fh, $filename) = tempfile($template, DIR => $dir);
-
-Translates the template as before except that a directory name
-is specified.
-
- ($fh, $filename) = tempfile($template, UNLINK => 1);
-
-Return the filename and filehandle as before except that the file is
-automatically removed when the program exits (dependent on
-$KEEP_ALL). Default is for the file to be removed if a file handle is
-requested and to be kept if the filename is requested. In a scalar
-context (where no filename is returned) the file is always deleted
-either (depending on the operating system) on exit or when it is
-closed (unless $KEEP_ALL is true when the temp file is created).
-
-Use the object-oriented interface if fine-grained control of when
-a file is removed is required.
-
-If the template is not specified, a template is always
-automatically generated. This temporary file is placed in tmpdir()
-(L<File::Spec>) unless a directory is specified explicitly with the
-DIR option.
-
- $fh = tempfile( $template, DIR => $dir );
-
-If called in scalar context, only the filehandle is returned and the
-file will automatically be deleted when closed on operating systems
-that support this (see the description of tmpfile() elsewhere in this
-document). This is the preferred mode of operation, as if you only
-have a filehandle, you can never create a race condition by fumbling
-with the filename. On systems that can not unlink an open file or can
-not mark a file as temporary when it is opened (for example, Windows
-NT uses the C<O_TEMPORARY> flag) the file is marked for deletion when
-the program ends (equivalent to setting UNLINK to 1). The C<UNLINK>
-flag is ignored if present.
-
- (undef, $filename) = tempfile($template, OPEN => 0);
-
-This will return the filename based on the template but
-will not open this file. Cannot be used in conjunction with
-UNLINK set to true. Default is to always open the file
-to protect from possible race conditions. A warning is issued
-if warnings are turned on. Consider using the tmpnam()
-and mktemp() functions described elsewhere in this document
-if opening the file is not required.
-
-Options can be combined as required.
-
-=cut
-
-sub tempfile {
-
- # Can not check for argument count since we can have any
- # number of args
-
- # Default options
- my %options = (
- "DIR" => undef, # Directory prefix
- "SUFFIX" => '', # Template suffix
- "UNLINK" => 0, # Do not unlink file on exit
- "OPEN" => 1, # Open file
- );
-
- # Check to see whether we have an odd or even number of arguments
- my $template = (scalar(@_) % 2 == 1 ? shift(@_) : undef);
-
- # Read the options and merge with defaults
- %options = (%options, @_) if @_;
-
- # First decision is whether or not to open the file
- if (! $options{"OPEN"}) {
-
- warn "tempfile(): temporary filename requested but not opened.\nPossibly unsafe, consider using tempfile() with OPEN set to true\n"
- if $^W;
-
- }
-
- if ($options{"DIR"} and $^O eq 'VMS') {
-
- # on VMS turn []foo into [.foo] for concatenation
- $options{"DIR"} = VMS::Filespec::vmspath($options{"DIR"});
- }
-
- # Construct the template
-
- # Have a choice of trying to work around the mkstemp/mktemp/tmpnam etc
- # functions or simply constructing a template and using _gettemp()
- # explicitly. Go for the latter
-
- # First generate a template if not defined and prefix the directory
- # If no template must prefix the temp directory
- if (defined $template) {
- if ($options{"DIR"}) {
-
- $template = File::Spec->catfile($options{"DIR"}, $template);
-
- }
-
- } else {
-
- if ($options{"DIR"}) {
-
- $template = File::Spec->catfile($options{"DIR"}, TEMPXXX);
-
- } else {
-
- $template = File::Spec->catfile(File::Spec->tmpdir, TEMPXXX);
-
- }
-
- }
-
- # Now add a suffix
- $template .= $options{"SUFFIX"};
-
- # Determine whether we should tell _gettemp to unlink the file
- # On unix this is irrelevant and can be worked out after the file is
- # opened (simply by unlinking the open filehandle). On Windows or VMS
- # we have to indicate temporary-ness when we open the file. In general
- # we only want a true temporary file if we are returning just the
- # filehandle - if the user wants the filename they probably do not
- # want the file to disappear as soon as they close it (which may be
- # important if they want a child process to use the file)
- # For this reason, tie unlink_on_close to the return context regardless
- # of OS.
- my $unlink_on_close = ( wantarray ? 0 : 1);
-
- # Create the file
- my ($fh, $path, $errstr);
- croak "Error in tempfile() using $template: $errstr"
- unless (($fh, $path) = _gettemp($template,
- "open" => $options{'OPEN'},
- "mkdir"=> 0 ,
- "unlink_on_close" => $unlink_on_close,
- "suffixlen" => length($options{'SUFFIX'}),
- "ErrStr" => \$errstr,
- ) );
-
- # Set up an exit handler that can do whatever is right for the
- # system. This removes files at exit when requested explicitly or when
- # system is asked to unlink_on_close but is unable to do so because
- # of OS limitations.
- # The latter should be achieved by using a tied filehandle.
- # Do not check return status since this is all done with END blocks.
- _deferred_unlink($fh, $path, 0) if $options{"UNLINK"};
-
- # Return
- if (wantarray()) {
-
- if ($options{'OPEN'}) {
- return ($fh, $path);
- } else {
- return (undef, $path);
- }
-
- } else {
-
- # Unlink the file. It is up to unlink0 to decide what to do with
- # this (whether to unlink now or to defer until later)
- unlink0($fh, $path) or croak "Error unlinking file $path using unlink0";
-
- # Return just the filehandle.
- return $fh;
- }
-
-
-}
-
-=item B<tempdir>
-
-This is the recommended interface for creation of temporary directories.
-The behaviour of the function depends on the arguments:
-
- $tempdir = tempdir();
-
-Create a directory in tmpdir() (see L<File::Spec|File::Spec>).
-
- $tempdir = tempdir( $template );
-
-Create a directory from the supplied template. This template is
-similar to that described for tempfile(). `X' characters at the end
-of the template are replaced with random letters to construct the
-directory name. At least four `X' characters must be in the template.
-
- $tempdir = tempdir ( DIR => $dir );
-
-Specifies the directory to use for the temporary directory.
-The temporary directory name is derived from an internal template.
-
- $tempdir = tempdir ( $template, DIR => $dir );
-
-Prepend the supplied directory name to the template. The template
-should not include parent directory specifications itself. Any parent
-directory specifications are removed from the template before
-prepending the supplied directory.
-
- $tempdir = tempdir ( $template, TMPDIR => 1 );
-
-Using the supplied template, create the temporary directory in
-a standard location for temporary files. Equivalent to doing
-
- $tempdir = tempdir ( $template, DIR => File::Spec->tmpdir);
-
-but shorter. Parent directory specifications are stripped from the
-template itself. The C<TMPDIR> option is ignored if C<DIR> is set
-explicitly. Additionally, C<TMPDIR> is implied if neither a template
-nor a directory are supplied.
-
- $tempdir = tempdir( $template, CLEANUP => 1);
-
-Create a temporary directory using the supplied template, but
-attempt to remove it (and all files inside it) when the program
-exits. Note that an attempt will be made to remove all files from
-the directory even if they were not created by this module (otherwise
-why ask to clean it up?). The directory removal is made with
-the rmtree() function from the L<File::Path|File::Path> module.
-Of course, if the template is not specified, the temporary directory
-will be created in tmpdir() and will also be removed at program exit.
-
-=cut
-
-# '
-
-sub tempdir {
-
- # Can not check for argument count since we can have any
- # number of args
-
- # Default options
- my %options = (
- "CLEANUP" => 0, # Remove directory on exit
- "DIR" => '', # Root directory
- "TMPDIR" => 0, # Use tempdir with template
- );
-
- # Check to see whether we have an odd or even number of arguments
- my $template = (scalar(@_) % 2 == 1 ? shift(@_) : undef );
-
- # Read the options and merge with defaults
- %options = (%options, @_) if @_;
-
- # Modify or generate the template
-
- # Deal with the DIR and TMPDIR options
- if (defined $template) {
-
- # Need to strip directory path if using DIR or TMPDIR
- if ($options{'TMPDIR'} || $options{'DIR'}) {
-
- # Strip parent directory from the filename
- #
- # There is no filename at the end
- $template = VMS::Filespec::vmspath($template) if $^O eq 'VMS';
- my ($volume, $directories, undef) = File::Spec->splitpath( $template, 1);
-
- # Last directory is then our template
- $template = (File::Spec->splitdir($directories))[-1];
-
- # Prepend the supplied directory or temp dir
- if ($options{"DIR"}) {
-
- $template = File::Spec->catdir($options{"DIR"}, $template);
-
- } elsif ($options{TMPDIR}) {
-
- # Prepend tmpdir
- $template = File::Spec->catdir(File::Spec->tmpdir, $template);
-
- }
-
- }
-
- } else {
-
- if ($options{"DIR"}) {
-
- $template = File::Spec->catdir($options{"DIR"}, TEMPXXX);
-
- } else {
-
- $template = File::Spec->catdir(File::Spec->tmpdir, TEMPXXX);
-
- }
-
- }
-
- # Create the directory
- my $tempdir;
- my $suffixlen = 0;
- if ($^O eq 'VMS') { # dir names can end in delimiters
- $template =~ m/([\.\]:>]+)$/;
- $suffixlen = length($1);
- }
- if ( ($^O eq 'MacOS') && (substr($template, -1) eq ':') ) {
- # dir name has a trailing ':'
- ++$suffixlen;
- }
-
- my $errstr;
- croak "Error in tempdir() using $template: $errstr"
- unless ((undef, $tempdir) = _gettemp($template,
- "open" => 0,
- "mkdir"=> 1 ,
- "suffixlen" => $suffixlen,
- "ErrStr" => \$errstr,
- ) );
-
- # Install exit handler; must be dynamic to get lexical
- if ( $options{'CLEANUP'} && -d $tempdir) {
- _deferred_unlink(undef, $tempdir, 1);
- }
-
- # Return the dir name
- return $tempdir;
-
-}
-
-=back
-
-=head1 MKTEMP FUNCTIONS
-
-The following functions are Perl implementations of the
-mktemp() family of temp file generation system calls.
-
-=over 4
-
-=item B<mkstemp>
-
-Given a template, returns a filehandle to the temporary file and the name
-of the file.
-
- ($fh, $name) = mkstemp( $template );
-
-In scalar context, just the filehandle is returned.
-
-The template may be any filename with some number of X's appended
-to it, for example F</tmp/temp.XXXX>. The trailing X's are replaced
-with unique alphanumeric combinations.
-
-=cut
-
-
-
-sub mkstemp {
-
- croak "Usage: mkstemp(template)"
- if scalar(@_) != 1;
-
- my $template = shift;
-
- my ($fh, $path, $errstr);
- croak "Error in mkstemp using $template: $errstr"
- unless (($fh, $path) = _gettemp($template,
- "open" => 1,
- "mkdir"=> 0 ,
- "suffixlen" => 0,
- "ErrStr" => \$errstr,
- ) );
-
- if (wantarray()) {
- return ($fh, $path);
- } else {
- return $fh;
- }
-
-}
-
-
-=item B<mkstemps>
-
-Similar to mkstemp(), except that an extra argument can be supplied
-with a suffix to be appended to the template.
-
- ($fh, $name) = mkstemps( $template, $suffix );
-
-For example a template of C<testXXXXXX> and suffix of C<.dat>
-would generate a file similar to F<testhGji_w.dat>.
-
-Returns just the filehandle alone when called in scalar context.
-
-=cut
-
-sub mkstemps {
-
- croak "Usage: mkstemps(template, suffix)"
- if scalar(@_) != 2;
-
-
- my $template = shift;
- my $suffix = shift;
-
- $template .= $suffix;
-
- my ($fh, $path, $errstr);
- croak "Error in mkstemps using $template: $errstr"
- unless (($fh, $path) = _gettemp($template,
- "open" => 1,
- "mkdir"=> 0 ,
- "suffixlen" => length($suffix),
- "ErrStr" => \$errstr,
- ) );
-
- if (wantarray()) {
- return ($fh, $path);
- } else {
- return $fh;
- }
-
-}
-
-=item B<mkdtemp>
-
-Create a directory from a template. The template must end in
-X's that are replaced by the routine.
-
- $tmpdir_name = mkdtemp($template);
-
-Returns the name of the temporary directory created.
-Returns undef on failure.
-
-Directory must be removed by the caller.
-
-=cut
-
-#' # for emacs
-
-sub mkdtemp {
-
- croak "Usage: mkdtemp(template)"
- if scalar(@_) != 1;
-
- my $template = shift;
- my $suffixlen = 0;
- if ($^O eq 'VMS') { # dir names can end in delimiters
- $template =~ m/([\.\]:>]+)$/;
- $suffixlen = length($1);
- }
- if ( ($^O eq 'MacOS') && (substr($template, -1) eq ':') ) {
- # dir name has a trailing ':'
- ++$suffixlen;
- }
- my ($junk, $tmpdir, $errstr);
- croak "Error creating temp directory from template $template\: $errstr"
- unless (($junk, $tmpdir) = _gettemp($template,
- "open" => 0,
- "mkdir"=> 1 ,
- "suffixlen" => $suffixlen,
- "ErrStr" => \$errstr,
- ) );
-
- return $tmpdir;
-
-}
-
-=item B<mktemp>
-
-Returns a valid temporary filename but does not guarantee
-that the file will not be opened by someone else.
-
- $unopened_file = mktemp($template);
-
-Template is the same as that required by mkstemp().
-
-=cut
-
-sub mktemp {
-
- croak "Usage: mktemp(template)"
- if scalar(@_) != 1;
-
- my $template = shift;
-
- my ($tmpname, $junk, $errstr);
- croak "Error getting name to temp file from template $template: $errstr"
- unless (($junk, $tmpname) = _gettemp($template,
- "open" => 0,
- "mkdir"=> 0 ,
- "suffixlen" => 0,
- "ErrStr" => \$errstr,
- ) );
-
- return $tmpname;
-}
-
-=back
-
-=head1 POSIX FUNCTIONS
-
-This section describes the re-implementation of the tmpnam()
-and tmpfile() functions described in L<POSIX>
-using the mkstemp() from this module.
-
-Unlike the L<POSIX|POSIX> implementations, the directory used
-for the temporary file is not specified in a system include
-file (C<P_tmpdir>) but simply depends on the choice of tmpdir()
-returned by L<File::Spec|File::Spec>. On some implementations this
-location can be set using the C<TMPDIR> environment variable, which
-may not be secure.
-If this is a problem, simply use mkstemp() and specify a template.
-
-=over 4
-
-=item B<tmpnam>
-
-When called in scalar context, returns the full name (including path)
-of a temporary file (uses mktemp()). The only check is that the file does
-not already exist, but there is no guarantee that that condition will
-continue to apply.
-
- $file = tmpnam();
-
-When called in list context, a filehandle to the open file and
-a filename are returned. This is achieved by calling mkstemp()
-after constructing a suitable template.
-
- ($fh, $file) = tmpnam();
-
-If possible, this form should be used to prevent possible
-race conditions.
-
-See L<File::Spec/tmpdir> for information on the choice of temporary
-directory for a particular operating system.
-
-=cut
-
-sub tmpnam {
-
- # Retrieve the temporary directory name
- my $tmpdir = File::Spec->tmpdir;
-
- croak "Error temporary directory is not writable"
- if $tmpdir eq '';
-
- # Use a ten character template and append to tmpdir
- my $template = File::Spec->catfile($tmpdir, TEMPXXX);
-
- if (wantarray() ) {
- return mkstemp($template);
- } else {
- return mktemp($template);
- }
-
-}
-
-=item B<tmpfile>
-
-Returns the filehandle of a temporary file.
-
- $fh = tmpfile();
-
-The file is removed when the filehandle is closed or when the program
-exits. No access to the filename is provided.
-
-If the temporary file can not be created undef is returned.
-Currently this command will probably not work when the temporary
-directory is on an NFS file system.
-
-=cut
-
-sub tmpfile {
-
- # Simply call tmpnam() in a list context
- my ($fh, $file) = tmpnam();
-
- # Make sure file is removed when filehandle is closed
- # This will fail on NFS
- unlink0($fh, $file)
- or return undef;
-
- return $fh;
-
-}
-
-=back
-
-=head1 ADDITIONAL FUNCTIONS
-
-These functions are provided for backwards compatibility
-with common tempfile generation C library functions.
-
-They are not exported and must be addressed using the full package
-name.
-
-=over 4
-
-=item B<tempnam>
-
-Return the name of a temporary file in the specified directory
-using a prefix. The file is guaranteed not to exist at the time
-the function was called, but such guarantees are good for one
-clock tick only. Always use the proper form of C<sysopen>
-with C<O_CREAT | O_EXCL> if you must open such a filename.
-
- $filename = File::Temp::tempnam( $dir, $prefix );
-
-Equivalent to running mktemp() with $dir/$prefixXXXXXXXX
-(using unix file convention as an example)
-
-Because this function uses mktemp(), it can suffer from race conditions.
-
-=cut
-
-sub tempnam {
-
- croak 'Usage tempnam($dir, $prefix)' unless scalar(@_) == 2;
-
- my ($dir, $prefix) = @_;
-
- # Add a string to the prefix
- $prefix .= 'XXXXXXXX';
-
- # Concatenate the directory to the file
- my $template = File::Spec->catfile($dir, $prefix);
-
- return mktemp($template);
-
-}
-
-=back
-
-=head1 UTILITY FUNCTIONS
-
-Useful functions for dealing with the filehandle and filename.
-
-=over 4
-
-=item B<unlink0>
-
-Given an open filehandle and the associated filename, make a safe
-unlink. This is achieved by first checking that the filename and
-filehandle initially point to the same file and that the number of
-links to the file is 1 (all fields returned by stat() are compared).
-Then the filename is unlinked and the filehandle checked once again to
-verify that the number of links on that file is now 0. This is the
-closest you can come to making sure that the filename unlinked was the
-same as the file whose descriptor you hold.
-
- unlink0($fh, $path)
- or die "Error unlinking file $path safely";
-
-Returns false on error. The filehandle is not closed since on some
-occasions this is not required.
-
-On some platforms, for example Windows NT, it is not possible to
-unlink an open file (the file must be closed first). On those
-platforms, the actual unlinking is deferred until the program ends and
-good status is returned. A check is still performed to make sure that
-the filehandle and filename are pointing to the same thing (but not at
-the time the end block is executed since the deferred removal may not
-have access to the filehandle).
-
-Additionally, on Windows NT not all the fields returned by stat() can
-be compared. For example, the C<dev> and C<rdev> fields seem to be
-different. Also, it seems that the size of the file returned by stat()
-does not always agree, with C<stat(FH)> being more accurate than
-C<stat(filename)>, presumably because of caching issues even when
-using autoflush (this is usually overcome by waiting a while after
-writing to the tempfile before attempting to C<unlink0> it).
-
-Finally, on NFS file systems the link count of the file handle does
-not always go to zero immediately after unlinking. Currently, this
-command is expected to fail on NFS disks.
-
-This function is disabled if the global variable $KEEP_ALL is true
-and an unlink on open file is supported. If the unlink is to be deferred
-to the END block, the file is still registered for removal.
-
-=cut
-
-sub unlink0 {
-
- croak 'Usage: unlink0(filehandle, filename)'
- unless scalar(@_) == 2;
-
- # Read args
- my ($fh, $path) = @_;
-
- cmpstat($fh, $path) or return 0;
-
- # attempt remove the file (does not work on some platforms)
- if (_can_unlink_opened_file()) {
-
- # return early (Without unlink) if we have been instructed to retain files.
- return 1 if $KEEP_ALL;
-
- # XXX: do *not* call this on a directory; possible race
- # resulting in recursive removal
- croak "unlink0: $path has become a directory!" if -d $path;
- unlink($path) or return 0;
-
- # Stat the filehandle
- my @fh = stat $fh;
-
- print "Link count = $fh[3] \n" if $DEBUG;
-
- # Make sure that the link count is zero
- # - Cygwin provides deferred unlinking, however,
- # on Win9x the link count remains 1
- # On NFS the link count may still be 1 but we cant know that
- # we are on NFS
- return ( $fh[3] == 0 or $^O eq 'cygwin' ? 1 : 0);
-
- } else {
- _deferred_unlink($fh, $path, 0);
- return 1;
- }
-
-}
-
-=item B<cmpstat>
-
-Compare C<stat> of filehandle with C<stat> of provided filename. This
-can be used to check that the filename and filehandle initially point
-to the same file and that the number of links to the file is 1 (all
-fields returned by stat() are compared).
-
- cmpstat($fh, $path)
- or die "Error comparing handle with file";
-
-Returns false if the stat information differs or if the link count is
-greater than 1.
-
-On certain platofms, eg Windows, not all the fields returned by stat()
-can be compared. For example, the C<dev> and C<rdev> fields seem to be
-different in Windows. Also, it seems that the size of the file
-returned by stat() does not always agree, with C<stat(FH)> being more
-accurate than C<stat(filename)>, presumably because of caching issues
-even when using autoflush (this is usually overcome by waiting a while
-after writing to the tempfile before attempting to C<unlink0> it).
-
-Not exported by default.
-
-=cut
-
-sub cmpstat {
-
- croak 'Usage: cmpstat(filehandle, filename)'
- unless scalar(@_) == 2;
-
- # Read args
- my ($fh, $path) = @_;
-
- warn "Comparing stat\n"
- if $DEBUG;
-
- # Stat the filehandle - which may be closed if someone has manually
- # closed the file. Can not turn off warnings without using $^W
- # unless we upgrade to 5.006 minimum requirement
- my @fh;
- {
- local ($^W) = 0;
- @fh = stat $fh;
- }
- return unless @fh;
-
- if ($fh[3] > 1 && $^W) {
- carp "unlink0: fstat found too many links; SB=@fh" if $^W;
- }
-
- # Stat the path
- my @path = stat $path;
-
- unless (@path) {
- carp "unlink0: $path is gone already" if $^W;
- return;
- }
-
- # this is no longer a file, but may be a directory, or worse
- unless (-f $path) {
- confess "panic: $path is no longer a file: SB=@fh";
- }
-
- # Do comparison of each member of the array
- # On WinNT dev and rdev seem to be different
- # depending on whether it is a file or a handle.
- # Cannot simply compare all members of the stat return
- # Select the ones we can use
- my @okstat = (0..$#fh); # Use all by default
- if ($^O eq 'MSWin32') {
- @okstat = (1,2,3,4,5,7,8,9,10);
- } elsif ($^O eq 'os2') {
- @okstat = (0, 2..$#fh);
- } elsif ($^O eq 'VMS') { # device and file ID are sufficient
- @okstat = (0, 1);
- } elsif ($^O eq 'dos') {
- @okstat = (0,2..7,11..$#fh);
- } elsif ($^O eq 'mpeix') {
- @okstat = (0..4,8..10);
- }
-
- # Now compare each entry explicitly by number
- for (@okstat) {
- print "Comparing: $_ : $fh[$_] and $path[$_]\n" if $DEBUG;
- # Use eq rather than == since rdev, blksize, and blocks (6, 11,
- # and 12) will be '' on platforms that do not support them. This
- # is fine since we are only comparing integers.
- unless ($fh[$_] eq $path[$_]) {
- warn "Did not match $_ element of stat\n" if $DEBUG;
- return 0;
- }
- }
-
- return 1;
-}
-
-=item B<unlink1>
-
-Similar to C<unlink0> except after file comparison using cmpstat, the
-filehandle is closed prior to attempting to unlink the file. This
-allows the file to be removed without using an END block, but does
-mean that the post-unlink comparison of the filehandle state provided
-by C<unlink0> is not available.
-
- unlink1($fh, $path)
- or die "Error closing and unlinking file";
-
-Usually called from the object destructor when using the OO interface.
-
-Not exported by default.
-
-This function is disabled if the global variable $KEEP_ALL is true.
-
-=cut
-
-sub unlink1 {
- croak 'Usage: unlink1(filehandle, filename)'
- unless scalar(@_) == 2;
-
- # Read args
- my ($fh, $path) = @_;
-
- cmpstat($fh, $path) or return 0;
-
- # Close the file
- close( $fh ) or return 0;
-
- # Make sure the file is writable (for windows)
- _force_writable( $path );
-
- # return early (without unlink) if we have been instructed to retain files.
- return 1 if $KEEP_ALL;
-
- # remove the file
- return unlink($path);
-}
-
-=item B<cleanup>
-
-Calling this function will cause any temp files or temp directories
-that are registered for removal to be removed. This happens automatically
-when the process exits but can be triggered manually if the caller is sure
-that none of the temp files are required. This method can be registered as
-an Apache callback.
-
-On OSes where temp files are automatically removed when the temp file
-is closed, calling this function will have no effect other than to remove
-temporary directories (which may include temporary files).
-
- File::Temp::cleanup();
-
-Not exported by default.
-
-=back
-
-=head1 PACKAGE VARIABLES
-
-These functions control the global state of the package.
-
-=over 4
-
-=item B<safe_level>
-
-Controls the lengths to which the module will go to check the safety of the
-temporary file or directory before proceeding.
-Options are:
-
-=over 8
-
-=item STANDARD
-
-Do the basic security measures to ensure the directory exists and
-is writable, that the umask() is fixed before opening of the file,
-that temporary files are opened only if they do not already exist, and
-that possible race conditions are avoided. Finally the L<unlink0|"unlink0">
-function is used to remove files safely.
-
-=item MEDIUM
-
-In addition to the STANDARD security, the output directory is checked
-to make sure that it is owned either by root or the user running the
-program. If the directory is writable by group or by other, it is then
-checked to make sure that the sticky bit is set.
-
-Will not work on platforms that do not support the C<-k> test
-for sticky bit.
-
-=item HIGH
-
-In addition to the MEDIUM security checks, also check for the
-possibility of ``chown() giveaway'' using the L<POSIX|POSIX>
-sysconf() function. If this is a possibility, each directory in the
-path is checked in turn for safeness, recursively walking back to the
-root directory.
-
-For platforms that do not support the L<POSIX|POSIX>
-C<_PC_CHOWN_RESTRICTED> symbol (for example, Windows NT) it is
-assumed that ``chown() giveaway'' is possible and the recursive test
-is performed.
-
-=back
-
-The level can be changed as follows:
-
- File::Temp->safe_level( File::Temp::HIGH );
-
-The level constants are not exported by the module.
-
-Currently, you must be running at least perl v5.6.0 in order to
-run with MEDIUM or HIGH security. This is simply because the
-safety tests use functions from L<Fcntl|Fcntl> that are not
-available in older versions of perl. The problem is that the version
-number for Fcntl is the same in perl 5.6.0 and in 5.005_03 even though
-they are different versions.
-
-On systems that do not support the HIGH or MEDIUM safety levels
-(for example Win NT or OS/2) any attempt to change the level will
-be ignored. The decision to ignore rather than raise an exception
-allows portable programs to be written with high security in mind
-for the systems that can support this without those programs failing
-on systems where the extra tests are irrelevant.
-
-If you really need to see whether the change has been accepted
-simply examine the return value of C<safe_level>.
-
- $newlevel = File::Temp->safe_level( File::Temp::HIGH );
- die "Could not change to high security"
- if $newlevel != File::Temp::HIGH;
-
-=cut
-
-{
- # protect from using the variable itself
- my $LEVEL = STANDARD;
- sub safe_level {
- my $self = shift;
- if (@_) {
- my $level = shift;
- if (($level != STANDARD) && ($level != MEDIUM) && ($level != HIGH)) {
- carp "safe_level: Specified level ($level) not STANDARD, MEDIUM or HIGH - ignoring\n" if $^W;
- } else {
- # Dont allow this on perl 5.005 or earlier
- if ($] < 5.006 && $level != STANDARD) {
- # Cant do MEDIUM or HIGH checks
- croak "Currently requires perl 5.006 or newer to do the safe checks";
- }
- # Check that we are allowed to change level
- # Silently ignore if we can not.
- $LEVEL = $level if _can_do_level($level);
- }
- }
- return $LEVEL;
- }
-}
-
-=item TopSystemUID
-
-This is the highest UID on the current system that refers to a root
-UID. This is used to make sure that the temporary directory is
-owned by a system UID (C<root>, C<bin>, C<sys> etc) rather than
-simply by root.
-
-This is required since on many unix systems C</tmp> is not owned
-by root.
-
-Default is to assume that any UID less than or equal to 10 is a root
-UID.
-
- File::Temp->top_system_uid(10);
- my $topid = File::Temp->top_system_uid;
-
-This value can be adjusted to reduce security checking if required.
-The value is only relevant when C<safe_level> is set to MEDIUM or higher.
-
-=cut
-
-{
- my $TopSystemUID = 10;
- sub top_system_uid {
- my $self = shift;
- if (@_) {
- my $newuid = shift;
- croak "top_system_uid: UIDs should be numeric"
- unless $newuid =~ /^\d+$/s;
- $TopSystemUID = $newuid;
- }
- return $TopSystemUID;
- }
-}
-
-=item B<$KEEP_ALL>
-
-Controls whether temporary files and directories should be retained
-regardless of any instructions in the program to remove them
-automatically. This is useful for debugging but should not be used in
-production code.
-
- $File::Temp::KEEP_ALL = 1;
-
-Default is for files to be removed as requested by the caller.
-
-In some cases, files will only be retained if this variable is true
-when the file is created. This means that you can not create a temporary
-file, set this variable and expect the temp file to still be around
-when the program exits.
-
-=item B<$DEBUG>
-
-Controls whether debugging messages should be enabled.
-
- $File::Temp::DEBUG = 1;
-
-Default is for debugging mode to be disabled.
-
-=back
-
-=head1 WARNING
-
-For maximum security, endeavour always to avoid ever looking at,
-touching, or even imputing the existence of the filename. You do not
-know that that filename is connected to the same file as the handle
-you have, and attempts to check this can only trigger more race
-conditions. It's far more secure to use the filehandle alone and
-dispense with the filename altogether.
-
-If you need to pass the handle to something that expects a filename
-then, on a unix system, use C<"/dev/fd/" . fileno($fh)> for arbitrary
-programs, or more generally C<< "+<=&" . fileno($fh) >> for Perl
-programs. You will have to clear the close-on-exec bit on that file
-descriptor before passing it to another process.
-
- use Fcntl qw/F_SETFD F_GETFD/;
- fcntl($tmpfh, F_SETFD, 0)
- or die "Can't clear close-on-exec flag on temp fh: $!\n";
-
-=head2 Temporary files and NFS
-
-Some problems are associated with using temporary files that reside
-on NFS file systems and it is recommended that a local filesystem
-is used whenever possible. Some of the security tests will most probably
-fail when the temp file is not local. Additionally, be aware that
-the performance of I/O operations over NFS will not be as good as for
-a local disk.
-
-=head2 Forking
-
-In some cases files created by File::Temp are removed from within an
-END block. Since END blocks are triggered when a child process exits
-(unless C<POSIX::_exit()> is used by the child) File::Temp takes care
-to only remove those temp files created by a particular process ID. This
-means that a child will not attempt to remove temp files created by the
-parent process.
-
-=head2 BINMODE
-
-The file returned by File::Temp will have been opened in binary mode
-if such a mode is available. If that is not correct, use the binmode()
-function to change the mode of the filehandle.
-
-=head1 HISTORY
-
-Originally began life in May 1999 as an XS interface to the system
-mkstemp() function. In March 2000, the OpenBSD mkstemp() code was
-translated to Perl for total control of the code's
-security checking, to ensure the presence of the function regardless of
-operating system and to help with portability. The module was shipped
-as a standard part of perl from v5.6.1.
-
-=head1 SEE ALSO
-
-L<POSIX/tmpnam>, L<POSIX/tmpfile>, L<File::Spec>, L<File::Path>
-
-See L<IO::File> and L<File::MkTemp>, L<Apachae::TempFile> for
-different implementations of temporary file handling.
-
-=head1 AUTHOR
-
-Tim Jenness E<lt>tjenness@cpan.orgE<gt>
-
-Copyright (C) 1999-2005 Tim Jenness and the UK Particle Physics and
-Astronomy Research Council. All Rights Reserved. This program is free
-software; you can redistribute it and/or modify it under the same
-terms as Perl itself.
-
-Original Perl implementation loosely based on the OpenBSD C code for
-mkstemp(). Thanks to Tom Christiansen for suggesting that this module
-should be written and providing ideas for code improvements and
-security enhancements.
-
-=cut
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/File/stat.pm b/Master/tlpkg/tlperl/lib/File/stat.pm
deleted file mode 100644
index 132cbee27ad..00000000000
--- a/Master/tlpkg/tlperl/lib/File/stat.pm
+++ /dev/null
@@ -1,139 +0,0 @@
-package File::stat;
-use 5.006;
-
-use strict;
-use warnings;
-
-our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
-
-our $VERSION = '1.00';
-
-BEGIN {
- use Exporter ();
- @EXPORT = qw(stat lstat);
- @EXPORT_OK = qw( $st_dev $st_ino $st_mode
- $st_nlink $st_uid $st_gid
- $st_rdev $st_size
- $st_atime $st_mtime $st_ctime
- $st_blksize $st_blocks
- );
- %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
-}
-use vars @EXPORT_OK;
-
-# Class::Struct forbids use of @ISA
-sub import { goto &Exporter::import }
-
-use Class::Struct qw(struct);
-struct 'File::stat' => [
- map { $_ => '$' } qw{
- dev ino mode nlink uid gid rdev size
- atime mtime ctime blksize blocks
- }
-];
-
-sub populate (@) {
- return unless @_;
- my $stob = new();
- @$stob = (
- $st_dev, $st_ino, $st_mode, $st_nlink, $st_uid, $st_gid, $st_rdev,
- $st_size, $st_atime, $st_mtime, $st_ctime, $st_blksize, $st_blocks )
- = @_;
- return $stob;
-}
-
-sub lstat ($) { populate(CORE::lstat(shift)) }
-
-sub stat ($) {
- my $arg = shift;
- my $st = populate(CORE::stat $arg);
- return $st if $st;
- my $fh;
- {
- local $!;
- no strict 'refs';
- require Symbol;
- $fh = \*{ Symbol::qualify( $arg, caller() )};
- return unless defined fileno $fh;
- }
- return populate(CORE::stat $fh);
-}
-
-1;
-__END__
-
-=head1 NAME
-
-File::stat - by-name interface to Perl's built-in stat() functions
-
-=head1 SYNOPSIS
-
- use File::stat;
- $st = stat($file) or die "No $file: $!";
- if ( ($st->mode & 0111) && $st->nlink > 1) ) {
- print "$file is executable with lotsa links\n";
- }
-
- use File::stat qw(:FIELDS);
- stat($file) or die "No $file: $!";
- if ( ($st_mode & 0111) && $st_nlink > 1) ) {
- print "$file is executable with lotsa links\n";
- }
-
-=head1 DESCRIPTION
-
-This module's default exports override the core stat()
-and lstat() functions, replacing them with versions that return
-"File::stat" objects. This object has methods that
-return the similarly named structure field name from the
-stat(2) function; namely,
-dev,
-ino,
-mode,
-nlink,
-uid,
-gid,
-rdev,
-size,
-atime,
-mtime,
-ctime,
-blksize,
-and
-blocks.
-
-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 stat() and lstat() functions.) Access these fields as
-variables named with a preceding C<st_> in front their method names.
-Thus, C<$stat_obj-E<gt>dev()> corresponds to $st_dev if you import
-the fields.
-
-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.
-
-=head1 BUGS
-
-As of Perl 5.8.0 after using this module you cannot use the implicit
-C<$_> or the special filehandle C<_> with stat() or lstat(), trying
-to do so leads into strange errors. The workaround is for C<$_> to
-be explicit
-
- my $stat_obj = stat $_;
-
-and for C<_> to explicitly populate the object using the unexported
-and undocumented populate() function with CORE::stat():
-
- my $stat_obj = File::stat::populate(CORE::stat(_));
-
-=head1 NOTE
-
-While this class is currently implemented using the Class::Struct
-module to build a struct-like class, you shouldn't rely upon this.
-
-=head1 AUTHOR
-
-Tom Christiansen
diff --git a/Master/tlpkg/tlperl/lib/FileHandle.pm b/Master/tlpkg/tlperl/lib/FileHandle.pm
deleted file mode 100644
index 6be22429440..00000000000
--- a/Master/tlpkg/tlperl/lib/FileHandle.pm
+++ /dev/null
@@ -1,262 +0,0 @@
-package FileHandle;
-
-use 5.006;
-use strict;
-our($VERSION, @ISA, @EXPORT, @EXPORT_OK);
-
-$VERSION = "2.01";
-
-require IO::File;
-@ISA = qw(IO::File);
-
-@EXPORT = qw(_IOFBF _IOLBF _IONBF);
-
-@EXPORT_OK = qw(
- pipe
-
- autoflush
- output_field_separator
- output_record_separator
- input_record_separator
- input_line_number
- format_page_number
- format_lines_per_page
- format_lines_left
- format_name
- format_top_name
- format_line_break_characters
- format_formfeed
-
- print
- printf
- getline
- getlines
-);
-
-#
-# Everything we're willing to export, we must first import.
-#
-import IO::Handle grep { !defined(&$_) } @EXPORT, @EXPORT_OK;
-
-#
-# Some people call "FileHandle::function", so all the functions
-# that were in the old FileHandle class must be imported, too.
-#
-{
- no strict 'refs';
-
- my %import = (
- 'IO::Handle' =>
- [qw(DESTROY new_from_fd fdopen close fileno getc ungetc gets
- eof flush error clearerr setbuf setvbuf _open_mode_string)],
- 'IO::Seekable' =>
- [qw(seek tell getpos setpos)],
- 'IO::File' =>
- [qw(new new_tmpfile open)]
- );
- for my $pkg (keys %import) {
- for my $func (@{$import{$pkg}}) {
- my $c = *{"${pkg}::$func"}{CODE}
- or die "${pkg}::$func missing";
- *$func = $c;
- }
- }
-}
-
-#
-# Specialized importer for Fcntl magic.
-#
-sub import {
- my $pkg = shift;
- my $callpkg = caller;
- require Exporter;
- Exporter::export($pkg, $callpkg, @_);
-
- #
- # If the Fcntl extension is available,
- # export its constants.
- #
- eval {
- require Fcntl;
- Exporter::export('Fcntl', $callpkg);
- };
-}
-
-################################################
-# This is the only exported function we define;
-# the rest come from other classes.
-#
-
-sub pipe {
- my $r = new IO::Handle;
- my $w = new IO::Handle;
- CORE::pipe($r, $w) or return undef;
- ($r, $w);
-}
-
-# Rebless standard file handles
-bless *STDIN{IO}, "FileHandle" if ref *STDIN{IO} eq "IO::Handle";
-bless *STDOUT{IO}, "FileHandle" if ref *STDOUT{IO} eq "IO::Handle";
-bless *STDERR{IO}, "FileHandle" if ref *STDERR{IO} eq "IO::Handle";
-
-1;
-
-__END__
-
-=head1 NAME
-
-FileHandle - supply object methods for filehandles
-
-=head1 SYNOPSIS
-
- use FileHandle;
-
- $fh = new FileHandle;
- if ($fh->open("< file")) {
- print <$fh>;
- $fh->close;
- }
-
- $fh = new FileHandle "> FOO";
- if (defined $fh) {
- print $fh "bar\n";
- $fh->close;
- }
-
- $fh = new FileHandle "file", "r";
- if (defined $fh) {
- print <$fh>;
- undef $fh; # automatically closes the file
- }
-
- $fh = new FileHandle "file", O_WRONLY|O_APPEND;
- if (defined $fh) {
- print $fh "corge\n";
- undef $fh; # automatically closes the file
- }
-
- $pos = $fh->getpos;
- $fh->setpos($pos);
-
- $fh->setvbuf($buffer_var, _IOLBF, 1024);
-
- ($readfh, $writefh) = FileHandle::pipe;
-
- autoflush STDOUT 1;
-
-=head1 DESCRIPTION
-
-NOTE: This class is now a front-end to the IO::* classes.
-
-C<FileHandle::new> creates a C<FileHandle>, which is a reference to a
-newly created symbol (see the C<Symbol> package). If it receives any
-parameters, they are passed to C<FileHandle::open>; if the open fails,
-the C<FileHandle> object is destroyed. Otherwise, it is returned to
-the caller.
-
-C<FileHandle::new_from_fd> creates a C<FileHandle> like C<new> does.
-It requires two parameters, which are passed to C<FileHandle::fdopen>;
-if the fdopen fails, the C<FileHandle> object is destroyed.
-Otherwise, it is returned to the caller.
-
-C<FileHandle::open> accepts one parameter or two. With one parameter,
-it is just a front end for the built-in C<open> function. With two
-parameters, the first parameter is a filename that may include
-whitespace or other special characters, and the second parameter is
-the open mode, optionally followed by a file permission value.
-
-If C<FileHandle::open> receives a Perl mode string (">", "+<", etc.)
-or a POSIX fopen() mode string ("w", "r+", etc.), it uses the basic
-Perl C<open> operator.
-
-If C<FileHandle::open> is given a numeric mode, it passes that mode
-and the optional permissions value to the Perl C<sysopen> operator.
-For convenience, C<FileHandle::import> tries to import the O_XXX
-constants from the Fcntl module. If dynamic loading is not available,
-this may fail, but the rest of FileHandle will still work.
-
-C<FileHandle::fdopen> is like C<open> except that its first parameter
-is not a filename but rather a file handle name, a FileHandle object,
-or a file descriptor number.
-
-If the C functions fgetpos() and fsetpos() are available, then
-C<FileHandle::getpos> returns an opaque value that represents the
-current position of the FileHandle, and C<FileHandle::setpos> uses
-that value to return to a previously visited position.
-
-If the C function setvbuf() is available, then C<FileHandle::setvbuf>
-sets the buffering policy for the FileHandle. The calling sequence
-for the Perl function is the same as its C counterpart, including the
-macros C<_IOFBF>, C<_IOLBF>, and C<_IONBF>, except that the buffer
-parameter specifies a scalar variable to use as a buffer. WARNING: A
-variable used as a buffer by C<FileHandle::setvbuf> must not be
-modified in any way until the FileHandle is closed or until
-C<FileHandle::setvbuf> is called again, or memory corruption may
-result!
-
-See L<perlfunc> for complete descriptions of each of the following
-supported C<FileHandle> methods, which are just front ends for the
-corresponding built-in functions:
-
- close
- fileno
- getc
- gets
- eof
- clearerr
- seek
- tell
-
-See L<perlvar> for complete descriptions of each of the following
-supported C<FileHandle> methods:
-
- autoflush
- output_field_separator
- output_record_separator
- input_record_separator
- input_line_number
- format_page_number
- format_lines_per_page
- format_lines_left
- format_name
- format_top_name
- format_line_break_characters
- format_formfeed
-
-Furthermore, for doing normal I/O you might need these:
-
-=over 4
-
-=item $fh->print
-
-See L<perlfunc/print>.
-
-=item $fh->printf
-
-See L<perlfunc/printf>.
-
-=item $fh->getline
-
-This works like <$fh> described in L<perlop/"I/O Operators">
-except that it's more readable and can be safely called in a
-list context but still returns just one line.
-
-=item $fh->getlines
-
-This works like <$fh> when called in a list context to
-read all the remaining lines in a file, except that it's more readable.
-It will also croak() if accidentally called in a scalar context.
-
-=back
-
-There are many other functions available since FileHandle is descended
-from IO::File, IO::Seekable, and IO::Handle. Please see those
-respective pages for documentation on more functions.
-
-=head1 SEE ALSO
-
-The B<IO> extension,
-L<perlfunc>,
-L<perlop/"I/O Operators">.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Getopt/Long.pm b/Master/tlpkg/tlperl/lib/Getopt/Long.pm
deleted file mode 100644
index 04038db58e3..00000000000
--- a/Master/tlpkg/tlperl/lib/Getopt/Long.pm
+++ /dev/null
@@ -1,2504 +0,0 @@
-# Getopt::Long.pm -- Universal options parsing
-
-package Getopt::Long;
-
-# RCS Status : $Id: GetoptLong.pm,v 2.72 2005-04-28 21:18:33+02 jv Exp $
-# Author : Johan Vromans
-# Created On : Tue Sep 11 15:00:12 1990
-# Last Modified By: Johan Vromans
-# Last Modified On: Wed Dec 14 21:17:21 2005
-# Update Count : 1458
-# Status : Released
-
-################ Copyright ################
-
-# This program is Copyright 1990,2005 by Johan Vromans.
-# This program is free software; you can redistribute it and/or
-# 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,
-# MA 02139, USA.
-
-################ Module Preamble ################
-
-use 5.004;
-
-use strict;
-
-use vars qw($VERSION);
-$VERSION = 2.35;
-# For testing versions only.
-#use vars qw($VERSION_STRING);
-#$VERSION_STRING = "2.35";
-
-use Exporter;
-use vars qw(@ISA @EXPORT @EXPORT_OK);
-@ISA = qw(Exporter);
-
-# Exported subroutines.
-sub GetOptions(@); # always
-sub Configure(@); # on demand
-sub HelpMessage(@); # on demand
-sub VersionMessage(@); # in demand
-
-BEGIN {
- # Init immediately so their contents can be used in the 'use vars' below.
- @EXPORT = qw(&GetOptions $REQUIRE_ORDER $PERMUTE $RETURN_IN_ORDER);
- @EXPORT_OK = qw(&HelpMessage &VersionMessage &Configure);
-}
-
-# User visible variables.
-use vars @EXPORT, @EXPORT_OK;
-use vars qw($error $debug $major_version $minor_version);
-# Deprecated visible variables.
-use vars qw($autoabbrev $getopt_compat $ignorecase $bundling $order
- $passthrough);
-# Official invisible variables.
-use vars qw($genprefix $caller $gnu_compat $auto_help $auto_version $longprefix);
-
-# Public subroutines.
-sub config(@); # deprecated name
-
-# Private subroutines.
-sub ConfigDefaults();
-sub ParseOptionSpec($$);
-sub OptCtl($);
-sub FindOption($$$$);
-sub ValidValue ($$$$$);
-
-################ Local Variables ################
-
-# $requested_version holds the version that was mentioned in the 'use'
-# or 'require', if any. It can be used to enable or disable specific
-# features.
-my $requested_version = 0;
-
-################ Resident subroutines ################
-
-sub ConfigDefaults() {
- # Handle POSIX compliancy.
- if ( defined $ENV{"POSIXLY_CORRECT"} ) {
- $genprefix = "(--|-)";
- $autoabbrev = 0; # no automatic abbrev of options
- $bundling = 0; # no bundling of single letter switches
- $getopt_compat = 0; # disallow '+' to start options
- $order = $REQUIRE_ORDER;
- }
- else {
- $genprefix = "(--|-|\\+)";
- $autoabbrev = 1; # automatic abbrev of options
- $bundling = 0; # bundling off by default
- $getopt_compat = 1; # allow '+' to start options
- $order = $PERMUTE;
- }
- # Other configurable settings.
- $debug = 0; # for debugging
- $error = 0; # error tally
- $ignorecase = 1; # ignore case when matching options
- $passthrough = 0; # leave unrecognized options alone
- $gnu_compat = 0; # require --opt=val if value is optional
- $longprefix = "(--)"; # what does a long prefix look like
-}
-
-# Override import.
-sub import {
- my $pkg = shift; # package
- my @syms = (); # symbols to import
- my @config = (); # configuration
- my $dest = \@syms; # symbols first
- for ( @_ ) {
- if ( $_ eq ':config' ) {
- $dest = \@config; # config next
- next;
- }
- push(@$dest, $_); # push
- }
- # Hide one level and call super.
- local $Exporter::ExportLevel = 1;
- push(@syms, qw(&GetOptions)) if @syms; # always export GetOptions
- $pkg->SUPER::import(@syms);
- # And configure.
- Configure(@config) if @config;
-}
-
-################ Initialization ################
-
-# Values for $order. See GNU getopt.c for details.
-($REQUIRE_ORDER, $PERMUTE, $RETURN_IN_ORDER) = (0..2);
-# Version major/minor numbers.
-($major_version, $minor_version) = $VERSION =~ /^(\d+)\.(\d+)/;
-
-ConfigDefaults();
-
-################ OO Interface ################
-
-package Getopt::Long::Parser;
-
-# Store a copy of the default configuration. Since ConfigDefaults has
-# just been called, what we get from Configure is the default.
-my $default_config = do {
- Getopt::Long::Configure ()
-};
-
-sub new {
- my $that = shift;
- my $class = ref($that) || $that;
- my %atts = @_;
-
- # Register the callers package.
- my $self = { caller_pkg => (caller)[0] };
-
- bless ($self, $class);
-
- # Process config attributes.
- if ( defined $atts{config} ) {
- my $save = Getopt::Long::Configure ($default_config, @{$atts{config}});
- $self->{settings} = Getopt::Long::Configure ($save);
- delete ($atts{config});
- }
- # Else use default config.
- else {
- $self->{settings} = $default_config;
- }
-
- if ( %atts ) { # Oops
- die(__PACKAGE__.": unhandled attributes: ".
- join(" ", sort(keys(%atts)))."\n");
- }
-
- $self;
-}
-
-sub configure {
- my ($self) = shift;
-
- # Restore settings, merge new settings in.
- my $save = Getopt::Long::Configure ($self->{settings}, @_);
-
- # Restore orig config and save the new config.
- $self->{settings} = Getopt::Long::Configure ($save);
-}
-
-sub getoptions {
- my ($self) = shift;
-
- # Restore config settings.
- my $save = Getopt::Long::Configure ($self->{settings});
-
- # Call main routine.
- my $ret = 0;
- $Getopt::Long::caller = $self->{caller_pkg};
-
- eval {
- # Locally set exception handler to default, otherwise it will
- # be called implicitly here, and again explicitly when we try
- # to deliver the messages.
- local ($SIG{__DIE__}) = '__DEFAULT__';
- $ret = Getopt::Long::GetOptions (@_);
- };
-
- # Restore saved settings.
- Getopt::Long::Configure ($save);
-
- # Handle errors and return value.
- die ($@) if $@;
- return $ret;
-}
-
-package Getopt::Long;
-
-################ Back to Normal ################
-
-# Indices in option control info.
-# Note that ParseOptions uses the fields directly. Search for 'hard-wired'.
-use constant CTL_TYPE => 0;
-#use constant CTL_TYPE_FLAG => '';
-#use constant CTL_TYPE_NEG => '!';
-#use constant CTL_TYPE_INCR => '+';
-#use constant CTL_TYPE_INT => 'i';
-#use constant CTL_TYPE_INTINC => 'I';
-#use constant CTL_TYPE_XINT => 'o';
-#use constant CTL_TYPE_FLOAT => 'f';
-#use constant CTL_TYPE_STRING => 's';
-
-use constant CTL_CNAME => 1;
-
-use constant CTL_DEFAULT => 2;
-
-use constant CTL_DEST => 3;
- use constant CTL_DEST_SCALAR => 0;
- use constant CTL_DEST_ARRAY => 1;
- use constant CTL_DEST_HASH => 2;
- use constant CTL_DEST_CODE => 3;
-
-use constant CTL_AMIN => 4;
-use constant CTL_AMAX => 5;
-
-# FFU.
-#use constant CTL_RANGE => ;
-#use constant CTL_REPEAT => ;
-
-sub GetOptions(@) {
-
- my @optionlist = @_; # local copy of the option descriptions
- my $argend = '--'; # option list terminator
- my %opctl = (); # table of option specs
- my $pkg = $caller || (caller)[0]; # current context
- # Needed if linkage is omitted.
- my @ret = (); # accum for non-options
- my %linkage; # linkage
- my $userlinkage; # user supplied HASH
- my $opt; # current option
- my $prefix = $genprefix; # current prefix
-
- $error = '';
-
- if ( $debug ) {
- # Avoid some warnings if debugging.
- local ($^W) = 0;
- print STDERR
- ("Getopt::Long $Getopt::Long::VERSION (",
- '$Revision: 2.72 $', ") ",
- "called from package \"$pkg\".",
- "\n ",
- "ARGV: (@ARGV)",
- "\n ",
- "autoabbrev=$autoabbrev,".
- "bundling=$bundling,",
- "getopt_compat=$getopt_compat,",
- "gnu_compat=$gnu_compat,",
- "order=$order,",
- "\n ",
- "ignorecase=$ignorecase,",
- "requested_version=$requested_version,",
- "passthrough=$passthrough,",
- "genprefix=\"$genprefix\",",
- "longprefix=\"$longprefix\".",
- "\n");
- }
-
- # 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.
- $userlinkage = undef;
- if ( @optionlist && ref($optionlist[0]) and
- UNIVERSAL::isa($optionlist[0],'HASH') ) {
- $userlinkage = shift (@optionlist);
- print STDERR ("=> user linkage: $userlinkage\n") if $debug;
- }
-
- # See if the first element of the optionlist contains option
- # starter characters.
- # Be careful not to interpret '<>' as option starters.
- if ( @optionlist && $optionlist[0] =~ /^\W+$/
- && !($optionlist[0] eq '<>'
- && @optionlist > 0
- && ref($optionlist[1])) ) {
- $prefix = shift (@optionlist);
- # Turn into regexp. Needs to be parenthesized!
- $prefix =~ s/(\W)/\\$1/g;
- $prefix = "([" . $prefix . "])";
- print STDERR ("=> prefix=\"$prefix\"\n") if $debug;
- }
-
- # Verify correctness of optionlist.
- %opctl = ();
- while ( @optionlist ) {
- my $opt = shift (@optionlist);
-
- unless ( defined($opt) ) {
- $error .= "Undefined argument in option spec\n";
- next;
- }
-
- # Strip leading prefix so people can specify "--foo=i" if they like.
- $opt = $+ if $opt =~ /^$prefix+(.*)$/s;
-
- if ( $opt eq '<>' ) {
- if ( (defined $userlinkage)
- && !(@optionlist > 0 && ref($optionlist[0]))
- && (exists $userlinkage->{$opt})
- && ref($userlinkage->{$opt}) ) {
- unshift (@optionlist, $userlinkage->{$opt});
- }
- unless ( @optionlist > 0
- && ref($optionlist[0]) && ref($optionlist[0]) eq 'CODE' ) {
- $error .= "Option spec <> requires a reference to a subroutine\n";
- # Kill the linkage (to avoid another error).
- shift (@optionlist)
- if @optionlist && ref($optionlist[0]);
- next;
- }
- $linkage{'<>'} = shift (@optionlist);
- next;
- }
-
- # Parse option spec.
- my ($name, $orig) = ParseOptionSpec ($opt, \%opctl);
- unless ( defined $name ) {
- # Failed. $orig contains the error message. Sorry for the abuse.
- $error .= $orig;
- # Kill the linkage (to avoid another error).
- shift (@optionlist)
- if @optionlist && ref($optionlist[0]);
- next;
- }
-
- # If no linkage is supplied in the @optionlist, copy it from
- # the userlinkage if available.
- if ( defined $userlinkage ) {
- unless ( @optionlist > 0 && ref($optionlist[0]) ) {
- if ( exists $userlinkage->{$orig} &&
- ref($userlinkage->{$orig}) ) {
- print STDERR ("=> found userlinkage for \"$orig\": ",
- "$userlinkage->{$orig}\n")
- if $debug;
- unshift (@optionlist, $userlinkage->{$orig});
- }
- else {
- # Do nothing. Being undefined will be handled later.
- next;
- }
- }
- }
-
- # Copy the linkage. If omitted, link to global variable.
- if ( @optionlist > 0 && ref($optionlist[0]) ) {
- print STDERR ("=> link \"$orig\" to $optionlist[0]\n")
- if $debug;
- my $rl = ref($linkage{$orig} = shift (@optionlist));
-
- if ( $rl eq "ARRAY" ) {
- $opctl{$name}[CTL_DEST] = CTL_DEST_ARRAY;
- }
- elsif ( $rl eq "HASH" ) {
- $opctl{$name}[CTL_DEST] = CTL_DEST_HASH;
- }
- elsif ( $rl eq "SCALAR" ) {
-# if ( $opctl{$name}[CTL_DEST] == CTL_DEST_ARRAY ) {
-# my $t = $linkage{$orig};
-# $$t = $linkage{$orig} = [];
-# }
-# elsif ( $opctl{$name}[CTL_DEST] == CTL_DEST_HASH ) {
-# }
-# else {
- # Ok.
-# }
- }
- elsif ( $rl eq "CODE" ) {
- # Ok.
- }
- else {
- $error .= "Invalid option linkage for \"$opt\"\n";
- }
- }
- else {
- # Link to global $opt_XXX variable.
- # Make sure a valid perl identifier results.
- my $ov = $orig;
- $ov =~ s/\W/_/g;
- if ( $opctl{$name}[CTL_DEST] == CTL_DEST_ARRAY ) {
- print STDERR ("=> link \"$orig\" to \@$pkg","::opt_$ov\n")
- if $debug;
- eval ("\$linkage{\$orig} = \\\@".$pkg."::opt_$ov;");
- }
- elsif ( $opctl{$name}[CTL_DEST] == CTL_DEST_HASH ) {
- print STDERR ("=> link \"$orig\" to \%$pkg","::opt_$ov\n")
- if $debug;
- eval ("\$linkage{\$orig} = \\\%".$pkg."::opt_$ov;");
- }
- else {
- print STDERR ("=> link \"$orig\" to \$$pkg","::opt_$ov\n")
- if $debug;
- eval ("\$linkage{\$orig} = \\\$".$pkg."::opt_$ov;");
- }
- }
- }
-
- # Bail out if errors found.
- die ($error) if $error;
- $error = 0;
-
- # Supply --version and --help support, if needed and allowed.
- if ( defined($auto_version) ? $auto_version : ($requested_version >= 2.3203) ) {
- if ( !defined($opctl{version}) ) {
- $opctl{version} = ['','version',0,CTL_DEST_CODE,undef];
- $linkage{version} = \&VersionMessage;
- }
- $auto_version = 1;
- }
- if ( defined($auto_help) ? $auto_help : ($requested_version >= 2.3203) ) {
- if ( !defined($opctl{help}) && !defined($opctl{'?'}) ) {
- $opctl{help} = $opctl{'?'} = ['','help',0,CTL_DEST_CODE,undef];
- $linkage{help} = \&HelpMessage;
- }
- $auto_help = 1;
- }
-
- # Show the options tables if debugging.
- if ( $debug ) {
- my ($arrow, $k, $v);
- $arrow = "=> ";
- while ( ($k,$v) = each(%opctl) ) {
- print STDERR ($arrow, "\$opctl{$k} = $v ", OptCtl($v), "\n");
- $arrow = " ";
- }
- }
-
- # Process argument list
- my $goon = 1;
- while ( $goon && @ARGV > 0 ) {
-
- # Get next argument.
- $opt = shift (@ARGV);
- print STDERR ("=> arg \"", $opt, "\"\n") if $debug;
-
- # Double dash is option list terminator.
- if ( $opt eq $argend ) {
- push (@ret, $argend) if $passthrough;
- last;
- }
-
- # Look it up.
- my $tryopt = $opt;
- my $found; # success status
- my $key; # key (if hash type)
- my $arg; # option argument
- my $ctl; # the opctl entry
-
- ($found, $opt, $ctl, $arg, $key) =
- FindOption ($prefix, $argend, $opt, \%opctl);
-
- if ( $found ) {
-
- # FindOption undefines $opt in case of errors.
- next unless defined $opt;
-
- my $argcnt = 0;
- while ( defined $arg ) {
-
- # Get the canonical name.
- print STDERR ("=> cname for \"$opt\" is ") if $debug;
- $opt = $ctl->[CTL_CNAME];
- print STDERR ("\"$ctl->[CTL_CNAME]\"\n") if $debug;
-
- if ( defined $linkage{$opt} ) {
- print STDERR ("=> ref(\$L{$opt}) -> ",
- ref($linkage{$opt}), "\n") if $debug;
-
- if ( ref($linkage{$opt}) eq 'SCALAR' ) {
- if ( $ctl->[CTL_TYPE] eq '+' ) {
- print STDERR ("=> \$\$L{$opt} += \"$arg\"\n")
- if $debug;
- if ( defined ${$linkage{$opt}} ) {
- ${$linkage{$opt}} += $arg;
- }
- else {
- ${$linkage{$opt}} = $arg;
- }
- }
- elsif ( $ctl->[CTL_DEST] == CTL_DEST_ARRAY ) {
- print STDERR ("=> ref(\$L{$opt}) auto-vivified",
- " to ARRAY\n")
- if $debug;
- my $t = $linkage{$opt};
- $$t = $linkage{$opt} = [];
- print STDERR ("=> push(\@{\$L{$opt}, \"$arg\")\n")
- if $debug;
- push (@{$linkage{$opt}}, $arg);
- }
- elsif ( $ctl->[CTL_DEST] == CTL_DEST_HASH ) {
- print STDERR ("=> ref(\$L{$opt}) auto-vivified",
- " to HASH\n")
- if $debug;
- my $t = $linkage{$opt};
- $$t = $linkage{$opt} = {};
- print STDERR ("=> \$\$L{$opt}->{$key} = \"$arg\"\n")
- if $debug;
- $linkage{$opt}->{$key} = $arg;
- }
- else {
- print STDERR ("=> \$\$L{$opt} = \"$arg\"\n")
- if $debug;
- ${$linkage{$opt}} = $arg;
- }
- }
- elsif ( ref($linkage{$opt}) eq 'ARRAY' ) {
- print STDERR ("=> push(\@{\$L{$opt}, \"$arg\")\n")
- if $debug;
- push (@{$linkage{$opt}}, $arg);
- }
- elsif ( ref($linkage{$opt}) eq 'HASH' ) {
- print STDERR ("=> \$\$L{$opt}->{$key} = \"$arg\"\n")
- if $debug;
- $linkage{$opt}->{$key} = $arg;
- }
- elsif ( ref($linkage{$opt}) eq 'CODE' ) {
- print STDERR ("=> &L{$opt}(\"$opt\"",
- $ctl->[CTL_DEST] == CTL_DEST_HASH ? ", \"$key\"" : "",
- ", \"$arg\")\n")
- if $debug;
- my $eval_error = do {
- local $@;
- local $SIG{__DIE__} = '__DEFAULT__';
- eval {
- &{$linkage{$opt}}($opt,
- $ctl->[CTL_DEST] == CTL_DEST_HASH ? ($key) : (),
- $arg);
- };
- $@;
- };
- print STDERR ("=> die($eval_error)\n")
- if $debug && $eval_error ne '';
- if ( $eval_error =~ /^!/ ) {
- if ( $eval_error =~ /^!FINISH\b/ ) {
- $goon = 0;
- }
- }
- elsif ( $eval_error ne '' ) {
- warn ($eval_error);
- $error++;
- }
- }
- else {
- print STDERR ("Invalid REF type \"", ref($linkage{$opt}),
- "\" in linkage\n");
- die("Getopt::Long -- internal error!\n");
- }
- }
- # No entry in linkage means entry in userlinkage.
- elsif ( $ctl->[CTL_DEST] == CTL_DEST_ARRAY ) {
- if ( defined $userlinkage->{$opt} ) {
- print STDERR ("=> push(\@{\$L{$opt}}, \"$arg\")\n")
- if $debug;
- push (@{$userlinkage->{$opt}}, $arg);
- }
- else {
- print STDERR ("=>\$L{$opt} = [\"$arg\"]\n")
- if $debug;
- $userlinkage->{$opt} = [$arg];
- }
- }
- elsif ( $ctl->[CTL_DEST] == CTL_DEST_HASH ) {
- if ( defined $userlinkage->{$opt} ) {
- print STDERR ("=> \$L{$opt}->{$key} = \"$arg\"\n")
- if $debug;
- $userlinkage->{$opt}->{$key} = $arg;
- }
- else {
- print STDERR ("=>\$L{$opt} = {$key => \"$arg\"}\n")
- if $debug;
- $userlinkage->{$opt} = {$key => $arg};
- }
- }
- else {
- if ( $ctl->[CTL_TYPE] eq '+' ) {
- print STDERR ("=> \$L{$opt} += \"$arg\"\n")
- if $debug;
- if ( defined $userlinkage->{$opt} ) {
- $userlinkage->{$opt} += $arg;
- }
- else {
- $userlinkage->{$opt} = $arg;
- }
- }
- else {
- print STDERR ("=>\$L{$opt} = \"$arg\"\n") if $debug;
- $userlinkage->{$opt} = $arg;
- }
- }
-
- $argcnt++;
- last if $argcnt >= $ctl->[CTL_AMAX] && $ctl->[CTL_AMAX] != -1;
- undef($arg);
-
- # Need more args?
- if ( $argcnt < $ctl->[CTL_AMIN] ) {
- if ( @ARGV ) {
- if ( ValidValue($ctl, $ARGV[0], 1, $argend, $prefix) ) {
- $arg = shift(@ARGV);
- ($key,$arg) = $arg =~ /^([^=]+)=(.*)/
- if $ctl->[CTL_DEST] == CTL_DEST_HASH;
- next;
- }
- warn("Value \"$ARGV[0]\" invalid for option $opt\n");
- $error++;
- }
- else {
- warn("Insufficient arguments for option $opt\n");
- $error++;
- }
- }
-
- # Any more args?
- if ( @ARGV && ValidValue($ctl, $ARGV[0], 0, $argend, $prefix) ) {
- $arg = shift(@ARGV);
- ($key,$arg) = $arg =~ /^([^=]+)=(.*)/
- if $ctl->[CTL_DEST] == CTL_DEST_HASH;
- next;
- }
- }
- }
-
- # Not an option. Save it if we $PERMUTE and don't have a <>.
- elsif ( $order == $PERMUTE ) {
- # Try non-options call-back.
- my $cb;
- if ( (defined ($cb = $linkage{'<>'})) ) {
- print STDERR ("=> &L{$tryopt}(\"$tryopt\")\n")
- if $debug;
- my $eval_error = do {
- local $@;
- local $SIG{__DIE__} = '__DEFAULT__';
- eval { &$cb ($tryopt) };
- $@;
- };
- print STDERR ("=> die($eval_error)\n")
- if $debug && $eval_error ne '';
- if ( $eval_error =~ /^!/ ) {
- if ( $eval_error =~ /^!FINISH\b/ ) {
- $goon = 0;
- }
- }
- elsif ( $eval_error ne '' ) {
- warn ($eval_error);
- $error++;
- }
- }
- else {
- print STDERR ("=> saving \"$tryopt\" ",
- "(not an option, may permute)\n") if $debug;
- push (@ret, $tryopt);
- }
- next;
- }
-
- # ...otherwise, terminate.
- else {
- # Push this one back and exit.
- unshift (@ARGV, $tryopt);
- return ($error == 0);
- }
-
- }
-
- # Finish.
- if ( @ret && $order == $PERMUTE ) {
- # Push back accumulated arguments
- print STDERR ("=> restoring \"", join('" "', @ret), "\"\n")
- if $debug;
- unshift (@ARGV, @ret);
- }
-
- return ($error == 0);
-}
-
-# A readable representation of what's in an optbl.
-sub OptCtl ($) {
- my ($v) = @_;
- my @v = map { defined($_) ? ($_) : ("<undef>") } @$v;
- "[".
- join(",",
- "\"$v[CTL_TYPE]\"",
- "\"$v[CTL_CNAME]\"",
- "\"$v[CTL_DEFAULT]\"",
- ("\$","\@","\%","\&")[$v[CTL_DEST] || 0],
- $v[CTL_AMIN] || '',
- $v[CTL_AMAX] || '',
-# $v[CTL_RANGE] || '',
-# $v[CTL_REPEAT] || '',
- ). "]";
-}
-
-# Parse an option specification and fill the tables.
-sub ParseOptionSpec ($$) {
- my ($opt, $opctl) = @_;
-
- # Match option spec.
- if ( $opt !~ m;^
- (
- # Option name
- (?: \w+[-\w]* )
- # Alias names, or "?"
- (?: \| (?: \? | \w[-\w]* )? )*
- )?
- (
- # Either modifiers ...
- [!+]
- |
- # ... or a value/dest/repeat specification
- [=:] [ionfs] [@%]? (?: \{\d*,?\d*\} )?
- |
- # ... or an optional-with-default spec
- : (?: -?\d+ | \+ ) [@%]?
- )?
- $;x ) {
- return (undef, "Error in option spec: \"$opt\"\n");
- }
-
- my ($names, $spec) = ($1, $2);
- $spec = '' unless defined $spec;
-
- # $orig keeps track of the primary name the user specified.
- # This name will be used for the internal or external linkage.
- # In other words, if the user specifies "FoO|BaR", it will
- # match any case combinations of 'foo' and 'bar', but if a global
- # variable needs to be set, it will be $opt_FoO in the exact case
- # as specified.
- my $orig;
-
- my @names;
- if ( defined $names ) {
- @names = split (/\|/, $names);
- $orig = $names[0];
- }
- else {
- @names = ('');
- $orig = '';
- }
-
- # Construct the opctl entries.
- my $entry;
- if ( $spec eq '' || $spec eq '+' || $spec eq '!' ) {
- # Fields are hard-wired here.
- $entry = [$spec,$orig,undef,CTL_DEST_SCALAR,0,0];
- }
- elsif ( $spec =~ /^:(-?\d+|\+)([@%])?$/ ) {
- my $def = $1;
- my $dest = $2;
- my $type = $def eq '+' ? 'I' : 'i';
- $dest ||= '$';
- $dest = $dest eq '@' ? CTL_DEST_ARRAY
- : $dest eq '%' ? CTL_DEST_HASH : CTL_DEST_SCALAR;
- # Fields are hard-wired here.
- $entry = [$type,$orig,$def eq '+' ? undef : $def,
- $dest,0,1];
- }
- else {
- my ($mand, $type, $dest) =
- $spec =~ /^([=:])([ionfs])([@%])?(\{(\d+)?(,)?(\d+)?\})?$/;
- return (undef, "Cannot repeat while bundling: \"$opt\"\n")
- if $bundling && defined($4);
- my ($mi, $cm, $ma) = ($5, $6, $7);
- return (undef, "{0} is useless in option spec: \"$opt\"\n")
- if defined($mi) && !$mi && !defined($ma) && !defined($cm);
-
- $type = 'i' if $type eq 'n';
- $dest ||= '$';
- $dest = $dest eq '@' ? CTL_DEST_ARRAY
- : $dest eq '%' ? CTL_DEST_HASH : CTL_DEST_SCALAR;
- # Default minargs to 1/0 depending on mand status.
- $mi = $mand eq '=' ? 1 : 0 unless defined $mi;
- # Adjust mand status according to minargs.
- $mand = $mi ? '=' : ':';
- # Adjust maxargs.
- $ma = $mi ? $mi : 1 unless defined $ma || defined $cm;
- return (undef, "Max must be greater than zero in option spec: \"$opt\"\n")
- if defined($ma) && !$ma;
- return (undef, "Max less than min in option spec: \"$opt\"\n")
- if defined($ma) && $ma < $mi;
-
- # Fields are hard-wired here.
- $entry = [$type,$orig,undef,$dest,$mi,$ma||-1];
- }
-
- # Process all names. First is canonical, the rest are aliases.
- my $dups = '';
- foreach ( @names ) {
-
- $_ = lc ($_)
- if $ignorecase > (($bundling && length($_) == 1) ? 1 : 0);
-
- if ( exists $opctl->{$_} ) {
- $dups .= "Duplicate specification \"$opt\" for option \"$_\"\n";
- }
-
- if ( $spec eq '!' ) {
- $opctl->{"no$_"} = $entry;
- $opctl->{"no-$_"} = $entry;
- $opctl->{$_} = [@$entry];
- $opctl->{$_}->[CTL_TYPE] = '';
- }
- else {
- $opctl->{$_} = $entry;
- }
- }
-
- if ( $dups && $^W ) {
- foreach ( split(/\n+/, $dups) ) {
- warn($_."\n");
- }
- }
- ($names[0], $orig);
-}
-
-# Option lookup.
-sub FindOption ($$$$) {
-
- # returns (1, $opt, $ctl, $arg, $key) if okay,
- # returns (1, undef) if option in error,
- # returns (0) otherwise.
-
- my ($prefix, $argend, $opt, $opctl) = @_;
-
- print STDERR ("=> find \"$opt\"\n") if $debug;
-
- return (0) unless $opt =~ /^$prefix(.*)$/s;
- return (0) if $opt eq "-" && !defined $opctl->{''};
-
- $opt = $+;
- my $starter = $1;
-
- print STDERR ("=> split \"$starter\"+\"$opt\"\n") if $debug;
-
- my $optarg; # value supplied with --opt=value
- my $rest; # remainder from unbundling
-
- # If it is a long option, it may include the value.
- # With getopt_compat, only if not bundling.
- if ( ($starter=~/^$longprefix$/
- || ($getopt_compat && ($bundling == 0 || $bundling == 2)))
- && $opt =~ /^([^=]+)=(.*)$/s ) {
- $opt = $1;
- $optarg = $2;
- print STDERR ("=> option \"", $opt,
- "\", optarg = \"$optarg\"\n") if $debug;
- }
-
- #### Look it up ###
-
- my $tryopt = $opt; # option to try
-
- if ( $bundling && $starter eq '-' ) {
-
- # To try overrides, obey case ignore.
- $tryopt = $ignorecase ? lc($opt) : $opt;
-
- # If bundling == 2, long options can override bundles.
- if ( $bundling == 2 && length($tryopt) > 1
- && defined ($opctl->{$tryopt}) ) {
- print STDERR ("=> $starter$tryopt overrides unbundling\n")
- if $debug;
- }
- else {
- $tryopt = $opt;
- # Unbundle single letter option.
- $rest = length ($tryopt) > 0 ? substr ($tryopt, 1) : '';
- $tryopt = substr ($tryopt, 0, 1);
- $tryopt = lc ($tryopt) if $ignorecase > 1;
- print STDERR ("=> $starter$tryopt unbundled from ",
- "$starter$tryopt$rest\n") if $debug;
- $rest = undef unless $rest ne '';
- }
- }
-
- # Try auto-abbreviation.
- elsif ( $autoabbrev ) {
- # Sort the possible long option names.
- my @names = sort(keys (%$opctl));
- # Downcase if allowed.
- $opt = lc ($opt) if $ignorecase;
- $tryopt = $opt;
- # Turn option name into pattern.
- my $pat = quotemeta ($opt);
- # Look up in option names.
- my @hits = grep (/^$pat/, @names);
- print STDERR ("=> ", scalar(@hits), " hits (@hits) with \"$pat\" ",
- "out of ", scalar(@names), "\n") if $debug;
-
- # Check for ambiguous results.
- unless ( (@hits <= 1) || (grep ($_ eq $opt, @hits) == 1) ) {
- # See if all matches are for the same option.
- my %hit;
- foreach ( @hits ) {
- my $hit = $_;
- $hit = $opctl->{$hit}->[CTL_CNAME]
- if defined $opctl->{$hit}->[CTL_CNAME];
- $hit{$hit} = 1;
- }
- # Remove auto-supplied options (version, help).
- if ( keys(%hit) == 2 ) {
- if ( $auto_version && exists($hit{version}) ) {
- delete $hit{version};
- }
- elsif ( $auto_help && exists($hit{help}) ) {
- delete $hit{help};
- }
- }
- # Now see if it really is ambiguous.
- unless ( keys(%hit) == 1 ) {
- return (0) if $passthrough;
- warn ("Option ", $opt, " is ambiguous (",
- join(", ", @hits), ")\n");
- $error++;
- return (1, undef);
- }
- @hits = keys(%hit);
- }
-
- # Complete the option name, if appropriate.
- if ( @hits == 1 && $hits[0] ne $opt ) {
- $tryopt = $hits[0];
- $tryopt = lc ($tryopt) if $ignorecase;
- print STDERR ("=> option \"$opt\" -> \"$tryopt\"\n")
- if $debug;
- }
- }
-
- # Map to all lowercase if ignoring case.
- elsif ( $ignorecase ) {
- $tryopt = lc ($opt);
- }
-
- # Check validity by fetching the info.
- my $ctl = $opctl->{$tryopt};
- unless ( defined $ctl ) {
- return (0) if $passthrough;
- # Pretend one char when bundling.
- if ( $bundling == 1 && length($starter) == 1 ) {
- $opt = substr($opt,0,1);
- unshift (@ARGV, $starter.$rest) if defined $rest;
- }
- warn ("Unknown option: ", $opt, "\n");
- $error++;
- return (1, undef);
- }
- # Apparently valid.
- $opt = $tryopt;
- print STDERR ("=> found ", OptCtl($ctl),
- " for \"", $opt, "\"\n") if $debug;
-
- #### Determine argument status ####
-
- # If it is an option w/o argument, we're almost finished with it.
- my $type = $ctl->[CTL_TYPE];
- my $arg;
-
- if ( $type eq '' || $type eq '!' || $type eq '+' ) {
- if ( defined $optarg ) {
- return (0) if $passthrough;
- warn ("Option ", $opt, " does not take an argument\n");
- $error++;
- undef $opt;
- }
- elsif ( $type eq '' || $type eq '+' ) {
- # Supply explicit value.
- $arg = 1;
- }
- else {
- $opt =~ s/^no-?//i; # strip NO prefix
- $arg = 0; # supply explicit value
- }
- unshift (@ARGV, $starter.$rest) if defined $rest;
- return (1, $opt, $ctl, $arg);
- }
-
- # Get mandatory status and type info.
- my $mand = $ctl->[CTL_AMIN];
-
- # Check if there is an option argument available.
- if ( $gnu_compat && defined $optarg && $optarg eq '' ) {
- return (1, $opt, $ctl, $type eq 's' ? '' : 0) unless $mand;
- $optarg = 0 unless $type eq 's';
- }
-
- # Check if there is an option argument available.
- if ( defined $optarg
- ? ($optarg eq '')
- : !(defined $rest || @ARGV > 0) ) {
- # Complain if this option needs an argument.
- if ( $mand ) {
- return (0) if $passthrough;
- warn ("Option ", $opt, " requires an argument\n");
- $error++;
- return (1, undef);
- }
- if ( $type eq 'I' ) {
- # Fake incremental type.
- my @c = @$ctl;
- $c[CTL_TYPE] = '+';
- return (1, $opt, \@c, 1);
- }
- return (1, $opt, $ctl,
- defined($ctl->[CTL_DEFAULT]) ? $ctl->[CTL_DEFAULT] :
- $type eq 's' ? '' : 0);
- }
-
- # Get (possibly optional) argument.
- $arg = (defined $rest ? $rest
- : (defined $optarg ? $optarg : shift (@ARGV)));
-
- # Get key if this is a "name=value" pair for a hash option.
- my $key;
- if ($ctl->[CTL_DEST] == CTL_DEST_HASH && defined $arg) {
- ($key, $arg) = ($arg =~ /^([^=]*)=(.*)$/s) ? ($1, $2)
- : ($arg, defined($ctl->[CTL_DEFAULT]) ? $ctl->[CTL_DEFAULT] :
- ($mand ? undef : ($type eq 's' ? "" : 1)));
- if (! defined $arg) {
- warn ("Option $opt, key \"$key\", requires a value\n");
- $error++;
- # Push back.
- unshift (@ARGV, $starter.$rest) if defined $rest;
- return (1, undef);
- }
- }
-
- #### Check if the argument is valid for this option ####
-
- my $key_valid = $ctl->[CTL_DEST] == CTL_DEST_HASH ? "[^=]+=" : "";
-
- if ( $type eq 's' ) { # string
- # A mandatory string takes anything.
- return (1, $opt, $ctl, $arg, $key) if $mand;
-
- # An optional string takes almost anything.
- return (1, $opt, $ctl, $arg, $key)
- if defined $optarg || defined $rest;
- return (1, $opt, $ctl, $arg, $key) if $arg eq "-"; # ??
-
- # Check for option or option list terminator.
- if ($arg eq $argend ||
- $arg =~ /^$prefix.+/) {
- # Push back.
- unshift (@ARGV, $arg);
- # Supply empty value.
- $arg = '';
- }
- }
-
- elsif ( $type eq 'i' # numeric/integer
- || $type eq 'I' # numeric/integer w/ incr default
- || $type eq 'o' ) { # dec/oct/hex/bin value
-
- my $o_valid =
- $type eq 'o' ? "[-+]?[1-9][0-9]*|0x[0-9a-f]+|0b[01]+|0[0-7]*"
- : "[-+]?[0-9]+";
-
- if ( $bundling && defined $rest
- && $rest =~ /^($key_valid)($o_valid)(.*)$/si ) {
- ($key, $arg, $rest) = ($1, $2, $+);
- chop($key) if $key;
- $arg = ($type eq 'o' && $arg =~ /^0/) ? oct($arg) : 0+$arg;
- unshift (@ARGV, $starter.$rest) if defined $rest && $rest ne '';
- }
- elsif ( $arg =~ /^($o_valid)$/si ) {
- $arg = ($type eq 'o' && $arg =~ /^0/) ? oct($arg) : 0+$arg;
- }
- else {
- if ( defined $optarg || $mand ) {
- if ( $passthrough ) {
- unshift (@ARGV, defined $rest ? $starter.$rest : $arg)
- unless defined $optarg;
- return (0);
- }
- warn ("Value \"", $arg, "\" invalid for option ",
- $opt, " (",
- $type eq 'o' ? "extended " : '',
- "number expected)\n");
- $error++;
- # Push back.
- unshift (@ARGV, $starter.$rest) if defined $rest;
- return (1, undef);
- }
- else {
- # Push back.
- unshift (@ARGV, defined $rest ? $starter.$rest : $arg);
- if ( $type eq 'I' ) {
- # Fake incremental type.
- my @c = @$ctl;
- $c[CTL_TYPE] = '+';
- return (1, $opt, \@c, 1);
- }
- # Supply default value.
- $arg = defined($ctl->[CTL_DEFAULT]) ? $ctl->[CTL_DEFAULT] : 0;
- }
- }
- }
-
- elsif ( $type eq 'f' ) { # real number, int is also ok
- # We require at least one digit before a point or 'e',
- # and at least one digit following the point and 'e'.
- # [-]NN[.NN][eNN]
- if ( $bundling && defined $rest &&
- $rest =~ /^($key_valid)([-+]?[0-9]+(\.[0-9]+)?([eE][-+]?[0-9]+)?)(.*)$/s ) {
- ($key, $arg, $rest) = ($1, $2, $+);
- chop($key) if $key;
- unshift (@ARGV, $starter.$rest) if defined $rest && $rest ne '';
- }
- elsif ( $arg !~ /^[-+]?[0-9.]+(\.[0-9]+)?([eE][-+]?[0-9]+)?$/ ) {
- if ( defined $optarg || $mand ) {
- if ( $passthrough ) {
- unshift (@ARGV, defined $rest ? $starter.$rest : $arg)
- unless defined $optarg;
- return (0);
- }
- warn ("Value \"", $arg, "\" invalid for option ",
- $opt, " (real number expected)\n");
- $error++;
- # Push back.
- unshift (@ARGV, $starter.$rest) if defined $rest;
- return (1, undef);
- }
- else {
- # Push back.
- unshift (@ARGV, defined $rest ? $starter.$rest : $arg);
- # Supply default value.
- $arg = 0.0;
- }
- }
- }
- else {
- die("Getopt::Long internal error (Can't happen)\n");
- }
- return (1, $opt, $ctl, $arg, $key);
-}
-
-sub ValidValue ($$$$$) {
- my ($ctl, $arg, $mand, $argend, $prefix) = @_;
-
- if ( $ctl->[CTL_DEST] == CTL_DEST_HASH ) {
- return 0 unless $arg =~ /[^=]+=(.*)/;
- $arg = $1;
- }
-
- my $type = $ctl->[CTL_TYPE];
-
- if ( $type eq 's' ) { # string
- # A mandatory string takes anything.
- return (1) if $mand;
-
- return (1) if $arg eq "-";
-
- # Check for option or option list terminator.
- return 0 if $arg eq $argend || $arg =~ /^$prefix.+/;
- return 1;
- }
-
- elsif ( $type eq 'i' # numeric/integer
- || $type eq 'I' # numeric/integer w/ incr default
- || $type eq 'o' ) { # dec/oct/hex/bin value
-
- my $o_valid =
- $type eq 'o' ? "[-+]?[1-9][0-9]*|0x[0-9a-f]+|0b[01]+|0[0-7]*"
- : "[-+]?[0-9]+";
-
- return $arg =~ /^$o_valid$/si;
- }
-
- elsif ( $type eq 'f' ) { # real number, int is also ok
- # We require at least one digit before a point or 'e',
- # and at least one digit following the point and 'e'.
- # [-]NN[.NN][eNN]
- return $arg =~ /^[-+]?[0-9.]+(\.[0-9]+)?([eE][-+]?[0-9]+)?$/;
- }
- die("ValidValue: Cannot happen\n");
-}
-
-# Getopt::Long Configuration.
-sub Configure (@) {
- my (@options) = @_;
-
- my $prevconfig =
- [ $error, $debug, $major_version, $minor_version,
- $autoabbrev, $getopt_compat, $ignorecase, $bundling, $order,
- $gnu_compat, $passthrough, $genprefix, $auto_version, $auto_help,
- $longprefix ];
-
- if ( ref($options[0]) eq 'ARRAY' ) {
- ( $error, $debug, $major_version, $minor_version,
- $autoabbrev, $getopt_compat, $ignorecase, $bundling, $order,
- $gnu_compat, $passthrough, $genprefix, $auto_version, $auto_help,
- $longprefix ) = @{shift(@options)};
- }
-
- my $opt;
- foreach $opt ( @options ) {
- my $try = lc ($opt);
- my $action = 1;
- if ( $try =~ /^no_?(.*)$/s ) {
- $action = 0;
- $try = $+;
- }
- if ( ($try eq 'default' or $try eq 'defaults') && $action ) {
- ConfigDefaults ();
- }
- elsif ( ($try eq 'posix_default' or $try eq 'posix_defaults') ) {
- local $ENV{POSIXLY_CORRECT};
- $ENV{POSIXLY_CORRECT} = 1 if $action;
- ConfigDefaults ();
- }
- elsif ( $try eq 'auto_abbrev' or $try eq 'autoabbrev' ) {
- $autoabbrev = $action;
- }
- elsif ( $try eq 'getopt_compat' ) {
- $getopt_compat = $action;
- }
- elsif ( $try eq 'gnu_getopt' ) {
- if ( $action ) {
- $gnu_compat = 1;
- $bundling = 1;
- $getopt_compat = 0;
- $order = $PERMUTE;
- }
- }
- elsif ( $try eq 'gnu_compat' ) {
- $gnu_compat = $action;
- }
- elsif ( $try =~ /^(auto_?)?version$/ ) {
- $auto_version = $action;
- }
- elsif ( $try =~ /^(auto_?)?help$/ ) {
- $auto_help = $action;
- }
- elsif ( $try eq 'ignorecase' or $try eq 'ignore_case' ) {
- $ignorecase = $action;
- }
- elsif ( $try eq 'ignore_case_always' ) {
- $ignorecase = $action ? 2 : 0;
- }
- elsif ( $try eq 'bundling' ) {
- $bundling = $action;
- }
- elsif ( $try eq 'bundling_override' ) {
- $bundling = $action ? 2 : 0;
- }
- elsif ( $try eq 'require_order' ) {
- $order = $action ? $REQUIRE_ORDER : $PERMUTE;
- }
- elsif ( $try eq 'permute' ) {
- $order = $action ? $PERMUTE : $REQUIRE_ORDER;
- }
- elsif ( $try eq 'pass_through' or $try eq 'passthrough' ) {
- $passthrough = $action;
- }
- elsif ( $try =~ /^prefix=(.+)$/ && $action ) {
- $genprefix = $1;
- # Turn into regexp. Needs to be parenthesized!
- $genprefix = "(" . quotemeta($genprefix) . ")";
- eval { '' =~ /$genprefix/; };
- die("Getopt::Long: invalid pattern \"$genprefix\"") if $@;
- }
- elsif ( $try =~ /^prefix_pattern=(.+)$/ && $action ) {
- $genprefix = $1;
- # Parenthesize if needed.
- $genprefix = "(" . $genprefix . ")"
- unless $genprefix =~ /^\(.*\)$/;
- eval { '' =~ m"$genprefix"; };
- die("Getopt::Long: invalid pattern \"$genprefix\"") if $@;
- }
- elsif ( $try =~ /^long_prefix_pattern=(.+)$/ && $action ) {
- $longprefix = $1;
- # Parenthesize if needed.
- $longprefix = "(" . $longprefix . ")"
- unless $longprefix =~ /^\(.*\)$/;
- eval { '' =~ m"$longprefix"; };
- die("Getopt::Long: invalid long prefix pattern \"$longprefix\"") if $@;
- }
- elsif ( $try eq 'debug' ) {
- $debug = $action;
- }
- else {
- die("Getopt::Long: unknown config parameter \"$opt\"")
- }
- }
- $prevconfig;
-}
-
-# Deprecated name.
-sub config (@) {
- Configure (@_);
-}
-
-# Issue a standard message for --version.
-#
-# The arguments are mostly the same as for Pod::Usage::pod2usage:
-#
-# - a number (exit value)
-# - a string (lead in message)
-# - a hash with options. See Pod::Usage for details.
-#
-sub VersionMessage(@) {
- # Massage args.
- my $pa = setup_pa_args("version", @_);
-
- my $v = $main::VERSION;
- my $fh = $pa->{-output} ||
- ($pa->{-exitval} eq "NOEXIT" || $pa->{-exitval} < 2) ? \*STDOUT : \*STDERR;
-
- print $fh (defined($pa->{-message}) ? $pa->{-message} : (),
- $0, defined $v ? " version $v" : (),
- "\n",
- "(", __PACKAGE__, "::", "GetOptions",
- " version ",
- defined($Getopt::Long::VERSION_STRING)
- ? $Getopt::Long::VERSION_STRING : $VERSION, ";",
- " Perl version ",
- $] >= 5.006 ? sprintf("%vd", $^V) : $],
- ")\n");
- exit($pa->{-exitval}) unless $pa->{-exitval} eq "NOEXIT";
-}
-
-# Issue a standard message for --help.
-#
-# The arguments are the same as for Pod::Usage::pod2usage:
-#
-# - a number (exit value)
-# - a string (lead in message)
-# - a hash with options. See Pod::Usage for details.
-#
-sub HelpMessage(@) {
- eval {
- require Pod::Usage;
- import Pod::Usage;
- 1;
- } || die("Cannot provide help: cannot load Pod::Usage\n");
-
- # Note that pod2usage will issue a warning if -exitval => NOEXIT.
- pod2usage(setup_pa_args("help", @_));
-
-}
-
-# Helper routine to set up a normalized hash ref to be used as
-# argument to pod2usage.
-sub setup_pa_args($@) {
- my $tag = shift; # who's calling
-
- # If called by direct binding to an option, it will get the option
- # name and value as arguments. Remove these, if so.
- @_ = () if @_ == 2 && $_[0] eq $tag;
-
- my $pa;
- if ( @_ > 1 ) {
- $pa = { @_ };
- }
- else {
- $pa = shift || {};
- }
-
- # At this point, $pa can be a number (exit value), string
- # (message) or hash with options.
-
- if ( UNIVERSAL::isa($pa, 'HASH') ) {
- # Get rid of -msg vs. -message ambiguity.
- $pa->{-message} = $pa->{-msg};
- delete($pa->{-msg});
- }
- elsif ( $pa =~ /^-?\d+$/ ) {
- $pa = { -exitval => $pa };
- }
- else {
- $pa = { -message => $pa };
- }
-
- # These are _our_ defaults.
- $pa->{-verbose} = 0 unless exists($pa->{-verbose});
- $pa->{-exitval} = 0 unless exists($pa->{-exitval});
- $pa;
-}
-
-# Sneak way to know what version the user requested.
-sub VERSION {
- $requested_version = $_[1];
- shift->SUPER::VERSION(@_);
-}
-
-1;
-
-################ Documentation ################
-
-=head1 NAME
-
-Getopt::Long - Extended processing of command line options
-
-=head1 SYNOPSIS
-
- use Getopt::Long;
- my $data = "file.dat";
- my $length = 24;
- my $verbose;
- $result = GetOptions ("length=i" => \$length, # numeric
- "file=s" => \$data, # string
- "verbose" => \$verbose); # flag
-
-=head1 DESCRIPTION
-
-The Getopt::Long module implements an extended getopt function called
-GetOptions(). This function adheres to the POSIX syntax for command
-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.
-
-=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
-first 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. Single character
-options may be any alphabetic character, a question mark, and a dash.
-Long options may consist of a series of letters, digits, and dashes.
-Although this is currently not enforced by Getopt::Long, multiple
-consecutive dashes are not allowed, and the option name must not end
-with a dash.
-
-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 an 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:
-
- GetOptions ("library=s" => \@libfiles);
-
-Alternatively, you can specify that the option can have multiple
-values by adding a "@", and pass a scalar reference as the
-destination:
-
- GetOptions ("library=s@" => \$libfiles);
-
-Used with the example above, C<@libfiles> (or 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 acceptable 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:
-
- GetOptions ("library=s" => \@libfiles);
- @libfiles = split(/,/,join(',',@libfiles));
-
-Of course, it is important to choose the right separator string for
-each purpose.
-
-Warning: What follows is an experimental feature.
-
-Options can take multiple values at once, for example
-
- --coordinates 52.2 16.4 --rgbcolor 255 255 149
-
-This can be accomplished by adding a repeat specifier to the option
-specification. Repeat specifiers are very similar to the C<{...}>
-repeat specifiers that can be used with regular expression patterns.
-For example, the above command line would be handled as follows:
-
- GetOptions('coordinates=f{2}' => \@coor, 'rgbcolor=i{3}' => \@color);
-
-The destination for the option must be an array or array reference.
-
-It is also possible to specify the minimal and maximal number of
-arguments an option takes. C<foo=s{2,4}> indicates an option that
-takes at least two and at most 4 arguments. C<foo=s{,}> indicates one
-or more values; C<foo:s{,}> indicates zero or more option values.
-
-=head2 Options with hash values
-
-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.
-
- GetOptions ("define=s" => \%defines);
-
-Alternatively you can use:
-
- GetOptions ("define=s%" => \$defines);
-
-When used with command line options:
-
- --define os=linux --define vendor=redhat
-
-the hash C<%defines> (or 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 acceptable values. The keys are always taken to be strings.
-
-=head2 User-defined subroutines to handle options
-
-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 or three arguments. The first
-argument is the name of the option. For a scalar or array destination,
-the second argument is the value to be stored. For a hash destination,
-the second arguments is the key to the hash, and the third argument
-the value to be stored. It is up to the subroutine to store the value,
-or do whatever it thinks is appropriate.
-
-A trivial application of this mechanism is to implement options that
-are related to each other. For example:
-
- my $verbose = ''; # option variable with default value (false)
- GetOptions ('verbose' => \$verbose,
- 'quiet' => sub { $verbose = 0 });
-
-Here C<--verbose> and C<--quiet> control the same variable
-C<$verbose>, but with opposite values.
-
-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.
-
-If the text of the error message starts with an exclamation 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<-->.
-
-=head2 Options with multiple names
-
-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>. When using a hash to store options, the key will
-always be the primary name.
-
-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 4
-
-=item !
-
-The option does not take an argument and may be negated by prefixing
-it with "no" or "no-". E.g. C<"foo!"> will allow C<--foo> (a value of
-1 will be assigned) as well as C<--nofoo> and C<--no-foo> (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 +
-
-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.
-
-=item = I<type> [ I<desttype> ] [ I<repeat> ]
-
-The option requires an argument of the given type. Supported types
-are:
-
-=over 4
-
-=item s
-
-String. An arbitrary sequence of characters. It is valid for the
-argument to start with C<-> or C<-->.
-
-=item i
-
-Integer. An optional leading plus or minus sign, followed by a
-sequence of digits.
-
-=item o
-
-Extended integer, Perl style. This can be either an optional leading
-plus or minus sign, followed by a sequence of digits, or an octal
-string (a zero, optionally followed by '0', '1', .. '7'), or a
-hexadecimal string (C<0x> followed by '0' .. '9', 'a' .. 'f', case
-insensitive), or a binary string (C<0b> followed by a series of '0'
-and '1').
-
-=item f
-
-Real number. For example C<3.14>, C<-6.23E24> and so on.
-
-=back
-
-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.
-
-The I<repeat> specifies the number of values this option takes per
-occurrence on the command line. It has the format C<{> [ I<min> ] [ C<,> [ I<max> ] ] C<}>.
-
-I<min> denotes the minimal number of arguments. It defaults to 1 for
-options with C<=> and to 0 for options with C<:>, see below. Note that
-I<min> overrules the C<=> / C<:> semantics.
-
-I<max> denotes the maximum number of arguments. It must be at least
-I<min>. If I<max> is omitted, I<but the comma is not>, there is no
-upper bound to the number of argument values taken.
-
-=item : I<type> [ I<desttype> ]
-
-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.
-
-Note that if a string argument starts with C<-> or C<-->, it will be
-considered an option on itself.
-
-=item : I<number> [ I<desttype> ]
-
-Like C<:i>, but if the value is omitted, the I<number> will be assigned.
-
-=item : + [ I<desttype> ]
-
-Like C<:i>, but if the value is omitted, the current value for the
-option will be incremented.
-
-=back
-
-=head1 Advanced Possibilities
-
-=head2 Object oriented interface
-
-Getopt::Long can be used in an object oriented way as well:
-
- use Getopt::Long;
- $p = new Getopt::Long::Parser;
- $p->configure(...configuration options...);
- if ($p->getoptions(...options descriptions...)) ...
-
-Configuration options can be passed to the constructor:
-
- $p = new Getopt::Long::Parser
- config => [...configuration options...];
-
-=head2 Thread Safety
-
-Getopt::Long is thread safe when using ithreads as of Perl 5.8. It is
-I<not> thread safe when using the older (experimental and now
-obsolete) threads implementation that was added to Perl 5.005.
-
-=head2 Documentation and help texts
-
-Getopt::Long encourages the use of Pod::Usage to produce help
-messages. For example:
-
- use Getopt::Long;
- use Pod::Usage;
-
- my $man = 0;
- my $help = 0;
-
- GetOptions('help|?' => \$help, man => \$man) or pod2usage(2);
- pod2usage(1) if $help;
- pod2usage(-exitstatus => 0, -verbose => 2) if $man;
-
- __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
-
-See L<Pod::Usage> for details.
-
-=head2 Storing option values in a hash
-
-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.
-
-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.
-
- my %h = ();
- GetOptions (\%h, 'length=i'); # will store in $h{length}
-
-For options that take list or hash values, it is necessary to indicate
-this by appending an C<@> or C<%> sign after the type:
-
- GetOptions (\%h, 'colours=s@'); # will push to @{$h{colours}}
-
-To make things more complicated, the hash may contain references to
-the actual destinations, for example:
-
- my $len = 0;
- my %h = ('length' => \$len);
- GetOptions (\%h, 'length=i'); # will store in $len
-
-This example is fully equivalent with:
-
- my $len = 0;
- GetOptions ('length=i' => \$len); # will store in $len
-
-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:
-
- 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 ... }
-
-=head2 Bundling
-
-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,
-
- -vax
-
-would set all three.
-
-Getopt::Long supports two levels of bundling. To enable bundling, a
-call to Getopt::Long::Configure is required.
-
-The first level of bundling can be enabled with:
-
- Getopt::Long::Configure ("bundling");
-
-Configured this way, single-character options can be bundled but long
-options B<must> always start with a double dash C<--> to avoid
-ambiguity. For example, when C<vax>, C<a>, C<v> and C<x> are all valid
-options,
-
- -vax
-
-would set C<a>, C<v> and C<x>, but
-
- --vax
-
-would set C<vax>.
-
-The second level of bundling lifts this restriction. It can be enabled
-with:
-
- Getopt::Long::Configure ("bundling_override");
-
-Now, C<-vax> would set the option C<vax>.
-
-When any level of bundling is enabled, option values may be inserted
-in the bundle. For example:
-
- -h24w80
-
-is equivalent to
-
- -h 24 -w 80
-
-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:
-
- Getopt::Long::Configure ("bundling", "ignorecase_always");
-
-It goes without saying that bundling can be quite confusing.
-
-=head2 The lonesome dash
-
-Normally, a lone dash C<-> on the command line will not be considered
-an option. Option processing will terminate (unless "permute" is
-configured) and the dash will be left in C<@ARGV>.
-
-It is possible to get special treatment for a lone dash. This can be
-achieved by adding an option specification with an empty name, for
-example:
-
- GetOptions ('' => \$stdio);
-
-A lone dash on the command line will now be a legal option, and using
-it will set variable C<$stdio>.
-
-=head2 Argument callback
-
-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 one parameter: the argument name.
-
-For example:
-
- my $width = 80;
- sub process { ... }
- GetOptions ('width=i' => \$width, '<>' => \&process);
-
-When applied to the following command line:
-
- arg1 --width=72 arg2 --width=60 arg3
-
-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>.
-
-This feature requires configuration option B<permute>, see section
-L<Configuring Getopt::Long>.
-
-=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 enabled, e.g.
-C<ignore_case>, or disabled, e.g. C<no_ignore_case>. Case does not
-matter. Multiple calls to Configure() are possible.
-
-Alternatively, as of version 2.24, the configuration options may be
-passed together with the C<use> statement:
-
- use Getopt::Long qw(:config no_ignore_case bundling);
-
-The following options are available:
-
-=over 12
-
-=item default
-
-This option causes all configuration options to be reset to their
-default values.
-
-=item posix_default
-
-This option causes all configuration options to be reset to their
-default values as if the environment variable POSIXLY_CORRECT had
-been set.
-
-=item auto_abbrev
-
-Allow option names to be abbreviated to uniqueness.
-Default is enabled unless environment variable
-POSIXLY_CORRECT has been set, in which case C<auto_abbrev> is disabled.
-
-=item getopt_compat
-
-Allow C<+> to start options.
-Default is enabled unless environment variable
-POSIXLY_CORRECT has been set, in which case C<getopt_compat> is disabled.
-
-=item gnu_compat
-
-C<gnu_compat> controls whether C<--opt=> is allowed, and what it should
-do. Without C<gnu_compat>, C<--opt=> gives an error. With C<gnu_compat>,
-C<--opt=> will give option C<opt> and empty value.
-This is the way GNU getopt_long() does it.
-
-=item gnu_getopt
-
-This is a short way of setting C<gnu_compat> C<bundling> C<permute>
-C<no_getopt_compat>. With C<gnu_getopt>, command line handling should be
-fully compatible with GNU getopt_long().
-
-=item require_order
-
-Whether command line arguments are allowed to be mixed with options.
-Default is disabled unless environment variable
-POSIXLY_CORRECT has been set, in which case C<require_order> is enabled.
-
-See also C<permute>, which is the opposite of C<require_order>.
-
-=item permute
-
-Whether command line arguments are allowed to be mixed with options.
-Default is enabled unless environment variable
-POSIXLY_CORRECT has been set, in which case C<permute> is disabled.
-Note that C<permute> is the opposite of C<require_order>.
-
-If C<permute> is enabled, this means that
-
- --foo arg1 --bar arg2 arg3
-
-is equivalent to
-
- --foo --bar arg1 arg2 arg3
-
-If an argument callback routine is specified, C<@ARGV> will always be
-empty upon successful return of GetOptions() since all options have been
-processed. The only exception is when C<--> is used:
-
- --foo arg1 --bar arg2 -- arg3
-
-This will call the callback routine for arg1 and arg2, and then
-terminate GetOptions() leaving C<"arg2"> in C<@ARGV>.
-
-If C<require_order> is enabled, options processing
-terminates when the first non-option is encountered.
-
- --foo arg1 --bar arg2 arg3
-
-is equivalent to
-
- --foo -- arg1 --bar arg2 arg3
-
-If C<pass_through> is also enabled, options processing will terminate
-at the first unrecognized option, or non-option, whichever comes
-first.
-
-=item bundling (default: disabled)
-
-Enabling 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 bundles with C<->.
-
-Note that, if you have options C<a>, C<l> and C<all>, and
-auto_abbrev enabled, possible arguments and option settings are:
-
- using argument sets option(s)
- ------------------------------------------
- -a, --a a
- -l, --l l
- -al, -la, -ala, -all,... a, l
- --al, --all all
-
-The surprising part is that C<--a> sets option C<a> (due to auto
-completion), not C<all>.
-
-Note: disabling C<bundling> also disables C<bundling_override>.
-
-=item bundling_override (default: disabled)
-
-If C<bundling_override> is enabled, bundling is enabled as with
-C<bundling> but now long option names override option bundles.
-
-Note: disabling C<bundling_override> also disables 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: enabled)
-
-If enabled, case is ignored when matching long option names. If,
-however, bundling is enabled as well, single character options will be
-treated case-sensitive.
-
-With C<ignore_case>, option specifications for options that only
-differ in case, e.g., C<"foo"> and C<"Foo">, will be flagged as
-duplicates.
-
-Note: disabling C<ignore_case> also disables C<ignore_case_always>.
-
-=item ignore_case_always (default: disabled)
-
-When bundling is in effect, case is ignored on single-character
-options also.
-
-Note: disabling C<ignore_case_always> also disables C<ignore_case>.
-
-=item auto_version (default:disabled)
-
-Automatically provide support for the B<--version> option if
-the application did not specify a handler for this option itself.
-
-Getopt::Long will provide a standard version message that includes the
-program name, its version (if $main::VERSION is defined), and the
-versions of Getopt::Long and Perl. The message will be written to
-standard output and processing will terminate.
-
-C<auto_version> will be enabled if the calling program explicitly
-specified a version number higher than 2.32 in the C<use> or
-C<require> statement.
-
-=item auto_help (default:disabled)
-
-Automatically provide support for the B<--help> and B<-?> options if
-the application did not specify a handler for this option itself.
-
-Getopt::Long will provide a help message using module L<Pod::Usage>. The
-message, derived from the SYNOPSIS POD section, will be written to
-standard output and processing will terminate.
-
-C<auto_help> will be enabled if the calling program explicitly
-specified a version number higher than 2.32 in the C<use> or
-C<require> statement.
-
-=item pass_through (default: disabled)
-
-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.
-
-If C<require_order> is enabled, options processing will terminate at
-the first unrecognized option, or non-option, whichever comes first.
-However, if C<permute> is enabled instead, results can become confusing.
-
-Note that the options terminator (default C<-->), if present, will
-also be passed through in C<@ARGV>.
-
-=item prefix
-
-The string that starts options. If a constant string is not
-sufficient, see C<prefix_pattern>.
-
-=item prefix_pattern
-
-A Perl pattern that identifies the strings that introduce options.
-Default is C<--|-|\+> unless environment variable
-POSIXLY_CORRECT has been set, in which case it is C<--|->.
-
-=item long_prefix_pattern
-
-A Perl pattern that allows the disambiguation of long and short
-prefixes. Default is C<-->.
-
-Typically you only need to set this if you are using nonstandard
-prefixes and want some or all of them to have the same semantics as
-'--' does under normal circumstances.
-
-For example, setting prefix_pattern to C<--|-|\+|\/> and
-long_prefix_pattern to C<--|\/> would add Win32 style argument
-handling.
-
-=item debug (default: disabled)
-
-Enable debugging output.
-
-=back
-
-=head1 Exportable Methods
-
-=over
-
-=item VersionMessage
-
-This subroutine provides a standard version message. Its argument can be:
-
-=over 4
-
-=item *
-
-A string containing the text of a message to print I<before> printing
-the standard message.
-
-=item *
-
-A numeric value corresponding to the desired exit status.
-
-=item *
-
-A reference to a hash.
-
-=back
-
-If more than one argument is given then the entire argument list is
-assumed to be a hash. If a hash is supplied (either as a reference or
-as a list) it should contain one or more elements with the following
-keys:
-
-=over 4
-
-=item C<-message>
-
-=item C<-msg>
-
-The text of a message to print immediately prior to printing the
-program's usage message.
-
-=item C<-exitval>
-
-The desired exit status to pass to the B<exit()> function.
-This should be an integer, or else the string "NOEXIT" to
-indicate that control should simply be returned without
-terminating the invoking process.
-
-=item C<-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>).
-
-=back
-
-You cannot tie this routine directly to an option, e.g.:
-
- GetOptions("version" => \&VersionMessage);
-
-Use this instead:
-
- GetOptions("version" => sub { VersionMessage() });
-
-=item HelpMessage
-
-This subroutine produces a standard help message, derived from the
-program's POD section SYNOPSIS using L<Pod::Usage>. It takes the same
-arguments as VersionMessage(). In particular, you cannot tie it
-directly to an option, e.g.:
-
- GetOptions("help" => \&HelpMessage);
-
-Use this instead:
-
- GetOptions("help" => sub { HelpMessage() });
-
-=back
-
-=head1 Return values and Errors
-
-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__}>.
-
-GetOptions returns true to indicate success.
-It returns false when the function detected one or more errors during
-option parsing. These errors are signalled using warn() and can be
-trapped with C<$SIG{__WARN__}>.
-
-=head1 Legacy
-
-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'.
-
-=head2 Default destinations
-
-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 C<Configure> routine that was introduced
-in version 2.17. Besides, it is much easier.
-
-=head1 Trouble Shooting
-
-=head2 GetOptions does not return a false result when an option is not supplied
-
-That's why they're called 'options'.
-
-=head2 GetOptions does not split the command line correctly
-
-The command line is not split by GetOptions, but by the command line
-interpreter (CLI). On Unix, this is the shell. On Windows, it is
-COMMAND.COM or CMD.EXE. Other operating systems have other CLIs.
-
-It is important to know that these CLIs may behave different when the
-command line contains special characters, in particular quotes or
-backslashes. For example, with Unix shells you can use single quotes
-(C<'>) and double quotes (C<">) to group words together. The following
-alternatives are equivalent on Unix:
-
- "two words"
- 'two words'
- two\ words
-
-In case of doubt, insert the following statement in front of your Perl
-program:
-
- print STDERR (join("|",@ARGV),"\n");
-
-to verify how your CLI passes the arguments to the program.
-
-=head2 Undefined subroutine &main::GetOptions called
-
-Are you running Windows, and did you write
-
- use GetOpt::Long;
-
-(note the capital 'O')?
-
-=head2 How do I put a "-?" option into a Getopt::Long?
-
-You can only obtain this using an alias, and Getopt::Long of at least
-version 2.13.
-
- use Getopt::Long;
- GetOptions ("help|?"); # -help and -? will both set $opt_help
-
-=head1 AUTHOR
-
-Johan Vromans <jvromans@squirrel.nl>
-
-=head1 COPYRIGHT AND DISCLAIMER
-
-This program is Copyright 1990,2005 by Johan Vromans.
-This program is free software; you can redistribute it and/or
-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,
-MA 02139, USA.
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Getopt/Std.pm b/Master/tlpkg/tlperl/lib/Getopt/Std.pm
deleted file mode 100644
index 99f93590622..00000000000
--- a/Master/tlpkg/tlperl/lib/Getopt/Std.pm
+++ /dev/null
@@ -1,294 +0,0 @@
-package Getopt::Std;
-require 5.000;
-require Exporter;
-
-=head1 NAME
-
-getopt, getopts - Process single-character switches with switch clustering
-
-=head1 SYNOPSIS
-
- use Getopt::Std;
-
- getopt('oDI'); # -o, -D & -I take arg. Sets $opt_* as a side effect.
- getopt('oDI', \%opts); # -o, -D & -I take arg. Values in %opts
- getopts('oif:'); # -o & -i are boolean flags, -f takes an argument
- # Sets $opt_* as a side effect.
- getopts('oif:', \%opts); # options as above. Values in %opts
-
-=head1 DESCRIPTION
-
-The getopt() function processes 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 argument if an argument is expected,
-or 1 otherwise. Switches which take an argument don't care whether
-there is a space between the switch and the argument.
-
-The getopts() function is similar, but you should pass to it the list of all
-switches to be recognized. If unspecified switches are found on the
-command-line, the user will be warned that an unknown option was given.
-
-Note that, if your code is running under the recommended C<use strict
-'vars'> pragma, you will need to declare these package variables
-with "our":
-
- our($opt_x, $opt_y);
-
-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.
-
-=head1 C<--help> and C<--version>
-
-If C<-> is not a recognized switch letter, getopts() supports arguments
-C<--help> and C<--version>. If C<main::HELP_MESSAGE()> and/or
-C<main::VERSION_MESSAGE()> are defined, they are called; the arguments are
-the output file handle, the name of option-processing package, its version,
-and the switches string. If the subroutines are not defined, an attempt is
-made to generate intelligent messages; for best results, define $main::VERSION.
-
-If embedded documentation (in pod format, see L<perlpod>) is detected
-in the script, C<--help> will also show how to access the documentation.
-
-Note that due to excessive paranoia, if $Getopt::Std::STANDARD_HELP_VERSION
-isn't true (the default is false), then the messages are printed on STDERR,
-and the processing continues after the messages are printed. This being
-the opposite of the standard-conforming behaviour, it is strongly recommended
-to set $Getopt::Std::STANDARD_HELP_VERSION to true.
-
-One can change the output file handle of the messages by setting
-$Getopt::Std::OUTPUT_HELP_VERSION. One can print the messages of C<--help>
-(without the C<Usage:> line) and C<--version> by calling functions help_mess()
-and version_mess() with the switches string as an argument.
-
-=cut
-
-@ISA = qw(Exporter);
-@EXPORT = qw(getopt getopts);
-$VERSION = '1.05';
-# uncomment the next line to disable 1.03-backward compatibility paranoia
-# $STANDARD_HELP_VERSION = 1;
-
-# 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
-# argument, or 1 if no argument. Switches which take an argument don't care
-# whether there is a space between the switch and the argument.
-
-# Usage:
-# getopt('oDI'); # -o, -D & -I take arg. Sets opt_* as a side effect.
-
-sub getopt (;$$) {
- my ($argumentative, $hash) = @_;
- $argumentative = '' if !defined $argumentative;
- my ($first,$rest);
- local $_;
- local @EXPORT;
-
- 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);
- }
- else {
- shift(@ARGV);
- $rest = shift(@ARGV);
- }
- 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 ne '') {
- $ARGV[0] = "-$rest";
- }
- else {
- shift(@ARGV);
- }
- }
- }
- unless (ref $hash) {
- local $Exporter::ExportLevel = 1;
- import Getopt::Std;
- }
-}
-
-sub output_h () {
- return $OUTPUT_HELP_VERSION if defined $OUTPUT_HELP_VERSION;
- return \*STDOUT if $STANDARD_HELP_VERSION;
- return \*STDERR;
-}
-
-sub try_exit () {
- exit 0 if $STANDARD_HELP_VERSION;
- my $p = __PACKAGE__;
- print {output_h()} <<EOM;
- [Now continuing due to backward compatibility and excessive paranoia.
- See ``perldoc $p'' about \$$p\::STANDARD_HELP_VERSION.]
-EOM
-}
-
-sub version_mess ($;$) {
- my $args = shift;
- my $h = output_h;
- if (@_ and defined &main::VERSION_MESSAGE) {
- main::VERSION_MESSAGE($h, __PACKAGE__, $VERSION, $args);
- } else {
- my $v = $main::VERSION;
- $v = '[unknown]' unless defined $v;
- my $myv = $VERSION;
- $myv .= ' [paranoid]' unless $STANDARD_HELP_VERSION;
- my $perlv = $];
- $perlv = sprintf "%vd", $^V if $] >= 5.006;
- print $h <<EOH;
-$0 version $v calling Getopt::Std::getopts (version $myv),
-running under Perl version $perlv.
-EOH
- }
-}
-
-sub help_mess ($;$) {
- my $args = shift;
- my $h = output_h;
- if (@_ and defined &main::HELP_MESSAGE) {
- main::HELP_MESSAGE($h, __PACKAGE__, $VERSION, $args);
- } else {
- my (@witharg) = ($args =~ /(\S)\s*:/g);
- my (@rest) = ($args =~ /([^\s:])(?!\s*:)/g);
- my ($help, $arg) = ('', '');
- if (@witharg) {
- $help .= "\n\tWith arguments: -" . join " -", @witharg;
- $arg = "\nSpace is not required between options and their arguments.";
- }
- if (@rest) {
- $help .= "\n\tBoolean (without arguments): -" . join " -", @rest;
- }
- my ($scr) = ($0 =~ m,([^/\\]+)$,);
- print $h <<EOH if @_; # Let the script override this
-
-Usage: $scr [-OPTIONS [-MORE_OPTIONS]] [--] [PROGRAM_ARG1 ...]
-EOH
- print $h <<EOH;
-
-The following single-character options are accepted:$help
-
-Options may be merged together. -- stops processing of options.$arg
-EOH
- my $has_pod;
- if ( defined $0 and $0 ne '-e' and -f $0 and -r $0
- and open my $script, '<', $0 ) {
- while (<$script>) {
- $has_pod = 1, last if /^=(pod|head1)/;
- }
- }
- print $h <<EOH if $has_pod;
-
-For more details run
- perldoc -F $0
-EOH
- }
-}
-
-# Usage:
-# getopts('a:bc'); # -a takes arg. -b & -c not. Sets opt_* as a
-# # side effect.
-
-sub getopts ($;$) {
- my ($argumentative, $hash) = @_;
- my (@args,$first,$rest,$exit);
- my $errs = 0;
- local $_;
- local @EXPORT;
-
- @args = split( / */, $argumentative );
- while(@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/s) {
- ($first,$rest) = ($1,$2);
- if (/^--$/) { # early exit if --
- shift @ARGV;
- last;
- }
- my $pos = index($argumentative,$first);
- if ($pos >= 0) {
- if (defined($args[$pos+1]) and ($args[$pos+1] eq ':')) {
- shift(@ARGV);
- if ($rest eq '') {
- ++$errs unless @ARGV;
- $rest = shift(@ARGV);
- }
- 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 '') {
- shift(@ARGV);
- }
- else {
- $ARGV[0] = "-$rest";
- }
- }
- }
- else {
- if ($first eq '-' and $rest eq 'help') {
- version_mess($argumentative, 'main');
- help_mess($argumentative, 'main');
- try_exit();
- shift(@ARGV);
- next;
- } elsif ($first eq '-' and $rest eq 'version') {
- version_mess($argumentative, 'main');
- try_exit();
- shift(@ARGV);
- next;
- }
- warn "Unknown option: $first\n";
- ++$errs;
- if ($rest ne '') {
- $ARGV[0] = "-$rest";
- }
- else {
- shift(@ARGV);
- }
- }
- }
- unless (ref $hash) {
- local $Exporter::ExportLevel = 1;
- import Getopt::Std;
- }
- $errs == 0;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/IO.pm b/Master/tlpkg/tlperl/lib/IO.pm
deleted file mode 100644
index 9fccc3a7356..00000000000
--- a/Master/tlpkg/tlperl/lib/IO.pm
+++ /dev/null
@@ -1,68 +0,0 @@
-#
-
-package IO;
-
-use XSLoader ();
-use Carp;
-use strict;
-use warnings;
-
-our $VERSION = "1.22";
-XSLoader::load 'IO', $VERSION;
-
-sub import {
- shift;
-
- warnings::warnif('deprecated', qq{Parameterless "use IO" deprecated})
- if @_ == 0 ;
-
- my @l = @_ ? @_ : qw(Handle Seekable File Pipe Socket Dir);
-
- eval join("", map { "require IO::" . (/(\w+)/)[0] . ";\n" } @l)
- or croak $@;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-IO - load various IO modules
-
-=head1 SYNOPSIS
-
- use IO qw(Handle File); # loads IO modules, here IO::Handle, IO::File
- use IO; # DEPRECATED
-
-=head1 DESCRIPTION
-
-C<IO> provides a simple mechanism to load several of the IO modules
-in one go. The IO modules belonging to the core are:
-
- IO::Handle
- IO::Seekable
- IO::File
- IO::Pipe
- IO::Socket
- IO::Dir
- IO::Select
- IO::Poll
-
-Some other IO modules don't belong to the perl core but can be loaded
-as well if they have been installed from CPAN. You can discover which
-ones exist by searching for "^IO::" on http://search.cpan.org.
-
-For more information on any of these modules, please see its respective
-documentation.
-
-=head1 DEPRECATED
-
- use IO; # loads all the modules listed below
-
-The loaded modules are IO::Handle, IO::Seekable, IO::File, IO::Pipe,
-IO::Socket, IO::Dir. You should instead explicitly import the IO
-modules you want.
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/IO/Dir.pm b/Master/tlpkg/tlperl/lib/IO/Dir.pm
deleted file mode 100644
index fccd02c088a..00000000000
--- a/Master/tlpkg/tlperl/lib/IO/Dir.pm
+++ /dev/null
@@ -1,246 +0,0 @@
-# IO::Dir.pm
-#
-# Copyright (c) 1997-8 Graham Barr <gbarr@pobox.com>. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-
-package IO::Dir;
-
-use 5.006;
-
-use strict;
-use Carp;
-use Symbol;
-use Exporter;
-use IO::File;
-our(@ISA, $VERSION, @EXPORT_OK);
-use Tie::Hash;
-use File::stat;
-use File::Spec;
-
-@ISA = qw(Tie::Hash Exporter);
-$VERSION = "1.05";
-$VERSION = eval $VERSION;
-@EXPORT_OK = qw(DIR_UNLINK);
-
-sub DIR_UNLINK () { 1 }
-
-sub new {
- @_ >= 1 && @_ <= 2 or croak 'usage: new IO::Dir [DIRNAME]';
- my $class = shift;
- my $dh = gensym;
- if (@_) {
- IO::Dir::open($dh, $_[0])
- or return undef;
- }
- bless $dh, $class;
-}
-
-sub DESTROY {
- my ($dh) = @_;
- closedir($dh);
-}
-
-sub open {
- @_ == 2 or croak 'usage: $dh->open(DIRNAME)';
- my ($dh, $dirname) = @_;
- return undef
- unless opendir($dh, $dirname);
- # a dir name should always have a ":" in it; assume dirname is
- # in current directory
- $dirname = ':' . $dirname if ( ($^O eq 'MacOS') && ($dirname !~ /:/) );
- ${*$dh}{io_dir_path} = $dirname;
- 1;
-}
-
-sub close {
- @_ == 1 or croak 'usage: $dh->close()';
- my ($dh) = @_;
- closedir($dh);
-}
-
-sub read {
- @_ == 1 or croak 'usage: $dh->read()';
- my ($dh) = @_;
- readdir($dh);
-}
-
-sub seek {
- @_ == 2 or croak 'usage: $dh->seek(POS)';
- my ($dh,$pos) = @_;
- seekdir($dh,$pos);
-}
-
-sub tell {
- @_ == 1 or croak 'usage: $dh->tell()';
- my ($dh) = @_;
- telldir($dh);
-}
-
-sub rewind {
- @_ == 1 or croak 'usage: $dh->rewind()';
- my ($dh) = @_;
- rewinddir($dh);
-}
-
-sub TIEHASH {
- my($class,$dir,$options) = @_;
-
- my $dh = $class->new($dir)
- or return undef;
-
- $options ||= 0;
-
- ${*$dh}{io_dir_unlink} = $options & DIR_UNLINK;
- $dh;
-}
-
-sub FIRSTKEY {
- my($dh) = @_;
- $dh->rewind;
- scalar $dh->read;
-}
-
-sub NEXTKEY {
- my($dh) = @_;
- scalar $dh->read;
-}
-
-sub EXISTS {
- my($dh,$key) = @_;
- -e File::Spec->catfile(${*$dh}{io_dir_path}, $key);
-}
-
-sub FETCH {
- my($dh,$key) = @_;
- &lstat(File::Spec->catfile(${*$dh}{io_dir_path}, $key));
-}
-
-sub STORE {
- my($dh,$key,$data) = @_;
- my($atime,$mtime) = ref($data) ? @$data : ($data,$data);
- my $file = File::Spec->catfile(${*$dh}{io_dir_path}, $key);
- unless(-e $file) {
- my $io = IO::File->new($file,O_CREAT | O_RDWR);
- $io->close if $io;
- }
- utime($atime,$mtime, $file);
-}
-
-sub DELETE {
- my($dh,$key) = @_;
-
- # Only unlink if unlink-ing is enabled
- return 0
- unless ${*$dh}{io_dir_unlink};
-
- my $file = File::Spec->catfile(${*$dh}{io_dir_path}, $key);
-
- -d $file
- ? rmdir($file)
- : unlink($file);
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-IO::Dir - supply object methods for directory handles
-
-=head1 SYNOPSIS
-
- use IO::Dir;
- $d = IO::Dir->new(".");
- if (defined $d) {
- while (defined($_ = $d->read)) { something($_); }
- $d->rewind;
- while (defined($_ = $d->read)) { something_else($_); }
- undef $d;
- }
-
- tie %dir, 'IO::Dir', ".";
- foreach (keys %dir) {
- print $_, " " , $dir{$_}->size,"\n";
- }
-
-=head1 DESCRIPTION
-
-The C<IO::Dir> package provides two interfaces to perl's directory reading
-routines.
-
-The first interface is an object approach. C<IO::Dir> provides an object
-constructor and methods, which are just wrappers around perl's built in
-directory reading routines.
-
-=over 4
-
-=item new ( [ DIRNAME ] )
-
-C<new> is the constructor for C<IO::Dir> objects. It accepts one optional
-argument which, if given, C<new> will pass to C<open>
-
-=back
-
-The following methods are wrappers for the directory related functions built
-into perl (the trailing `dir' has been removed from the names). See L<perlfunc>
-for details of these functions.
-
-=over 4
-
-=item open ( DIRNAME )
-
-=item read ()
-
-=item seek ( POS )
-
-=item tell ()
-
-=item rewind ()
-
-=item close ()
-
-=back
-
-C<IO::Dir> also provides an interface to reading directories via a tied
-hash. The tied hash extends the interface beyond just the directory
-reading routines by the use of C<lstat>, from the C<File::stat> package,
-C<unlink>, C<rmdir> and C<utime>.
-
-=over 4
-
-=item tie %hash, 'IO::Dir', DIRNAME [, OPTIONS ]
-
-=back
-
-The keys of the hash will be the names of the entries in the directory.
-Reading a value from the hash will be the result of calling
-C<File::stat::lstat>. Deleting an element from the hash will
-delete the corresponding file or subdirectory,
-provided that C<DIR_UNLINK> is included in the C<OPTIONS>.
-
-Assigning to an entry in the hash will cause the time stamps of the file
-to be modified. If the file does not exist then it will be created. Assigning
-a single integer to a hash element will cause both the access and
-modification times to be changed to that value. Alternatively a reference to
-an array of two values can be passed. The first array element will be used to
-set the access time and the second element will be used to set the modification
-time.
-
-=head1 SEE ALSO
-
-L<File::stat>
-
-=head1 AUTHOR
-
-Graham Barr. Currently maintained by the Perl Porters. Please report all
-bugs to <perl5-porters@perl.org>.
-
-=head1 COPYRIGHT
-
-Copyright (c) 1997-2003 Graham Barr <gbarr@pobox.com>. All rights reserved.
-This program is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/IO/File.pm b/Master/tlpkg/tlperl/lib/IO/File.pm
deleted file mode 100644
index e7cdbbed6d7..00000000000
--- a/Master/tlpkg/tlperl/lib/IO/File.pm
+++ /dev/null
@@ -1,208 +0,0 @@
-#
-
-package IO::File;
-
-=head1 NAME
-
-IO::File - supply object methods for filehandles
-
-=head1 SYNOPSIS
-
- use IO::File;
-
- $fh = new IO::File;
- if ($fh->open("< file")) {
- print <$fh>;
- $fh->close;
- }
-
- $fh = new IO::File "> file";
- if (defined $fh) {
- print $fh "bar\n";
- $fh->close;
- }
-
- $fh = new IO::File "file", "r";
- if (defined $fh) {
- print <$fh>;
- undef $fh; # automatically closes the file
- }
-
- $fh = new IO::File "file", O_WRONLY|O_APPEND;
- if (defined $fh) {
- print $fh "corge\n";
-
- $pos = $fh->getpos;
- $fh->setpos($pos);
-
- undef $fh; # automatically closes the file
- }
-
- autoflush STDOUT 1;
-
-=head1 DESCRIPTION
-
-C<IO::File> inherits from C<IO::Handle> and C<IO::Seekable>. It extends
-these classes with methods that are specific to file handles.
-
-=head1 CONSTRUCTOR
-
-=over 4
-
-=item new ( FILENAME [,MODE [,PERMS]] )
-
-Creates an C<IO::File>. If it receives any parameters, they are passed to
-the method C<open>; if the open fails, the object is destroyed. Otherwise,
-it is returned to the caller.
-
-=item new_tmpfile
-
-Creates an C<IO::File> opened for read/write on a newly created temporary
-file. On systems where this is possible, the temporary file is anonymous
-(i.e. it is unlinked after creation, but held open). If the temporary
-file cannot be created or opened, the C<IO::File> object is destroyed.
-Otherwise, it is returned to the caller.
-
-=back
-
-=head1 METHODS
-
-=over 4
-
-=item open( FILENAME [,MODE [,PERMS]] )
-
-=item open( FILENAME, IOLAYERS )
-
-C<open> accepts one, two or three parameters. With one parameter,
-it is just a front end for the built-in C<open> function. With two or three
-parameters, the first parameter is a filename that may include
-whitespace or other special characters, and the second parameter is
-the open mode, optionally followed by a file permission value.
-
-If C<IO::File::open> receives a Perl mode string ("E<gt>", "+E<lt>", etc.)
-or an ANSI C fopen() mode string ("w", "r+", etc.), it uses the basic
-Perl C<open> operator (but protects any special characters).
-
-If C<IO::File::open> is given a numeric mode, it passes that mode
-and the optional permissions value to the Perl C<sysopen> operator.
-The permissions default to 0666.
-
-If C<IO::File::open> is given a mode that includes the C<:> character,
-it passes all the three arguments to the three-argument C<open> operator.
-
-For convenience, C<IO::File> exports the O_XXX constants from the
-Fcntl module, if this module is available.
-
-=item binmode( [LAYER] )
-
-C<binmode> sets C<binmode> on the underlying C<IO> object, as documented
-in C<perldoc -f binmode>.
-
-C<binmode> accepts one optional parameter, which is the layer to be
-passed on to the C<binmode> call.
-
-=back
-
-=head1 NOTE
-
-Some operating systems may perform C<IO::File::new()> or C<IO::File::open()>
-on a directory without errors. This behavior is not portable and not
-suggested for use. Using C<opendir()> and C<readdir()> or C<IO::Dir> are
-suggested instead.
-
-=head1 SEE ALSO
-
-L<perlfunc>,
-L<perlop/"I/O Operators">,
-L<IO::Handle>,
-L<IO::Seekable>,
-L<IO::Dir>
-
-=head1 HISTORY
-
-Derived from FileHandle.pm by Graham Barr E<lt>F<gbarr@pobox.com>E<gt>.
-
-=cut
-
-use 5.006_001;
-use strict;
-our($VERSION, @EXPORT, @EXPORT_OK, @ISA);
-use Carp;
-use Symbol;
-use SelectSaver;
-use IO::Seekable;
-use File::Spec;
-
-require Exporter;
-
-@ISA = qw(IO::Handle IO::Seekable Exporter);
-
-$VERSION = "1.13";
-
-@EXPORT = @IO::Seekable::EXPORT;
-
-eval {
- # Make all Fcntl O_XXX constants available for importing
- require Fcntl;
- my @O = grep /^O_/, @Fcntl::EXPORT;
- Fcntl->import(@O); # first we import what we want to export
- push(@EXPORT, @O);
-};
-
-################################################
-## Constructor
-##
-
-sub new {
- my $type = shift;
- my $class = ref($type) || $type || "IO::File";
- @_ >= 0 && @_ <= 3
- or croak "usage: new $class [FILENAME [,MODE [,PERMS]]]";
- my $fh = $class->SUPER::new();
- if (@_) {
- $fh->open(@_)
- or return undef;
- }
- $fh;
-}
-
-################################################
-## Open
-##
-
-sub open {
- @_ >= 2 && @_ <= 4 or croak 'usage: $fh->open(FILENAME [,MODE [,PERMS]])';
- my ($fh, $file) = @_;
- if (@_ > 2) {
- my ($mode, $perms) = @_[2, 3];
- if ($mode =~ /^\d+$/) {
- defined $perms or $perms = 0666;
- return sysopen($fh, $file, $mode, $perms);
- } elsif ($mode =~ /:/) {
- return open($fh, $mode, $file) if @_ == 3;
- croak 'usage: $fh->open(FILENAME, IOLAYERS)';
- }
- if (defined($file) && length($file)
- && ! File::Spec->file_name_is_absolute($file))
- {
- $file = File::Spec->rel2abs($file);
- }
- $file = IO::Handle::_open_mode_string($mode) . " $file\0";
- }
- open($fh, $file);
-}
-
-################################################
-## Binmode
-##
-
-sub binmode {
- ( @_ == 1 or @_ == 2 ) or croak 'usage $fh->binmode([LAYER])';
-
- my($fh, $layer) = @_;
-
- return binmode $$fh unless $layer;
- return binmode $$fh, $layer;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/IO/Handle.pm b/Master/tlpkg/tlperl/lib/IO/Handle.pm
deleted file mode 100644
index 329d26ad198..00000000000
--- a/Master/tlpkg/tlperl/lib/IO/Handle.pm
+++ /dev/null
@@ -1,625 +0,0 @@
-package IO::Handle;
-
-=head1 NAME
-
-IO::Handle - supply object methods for I/O handles
-
-=head1 SYNOPSIS
-
- use IO::Handle;
-
- $io = new IO::Handle;
- if ($io->fdopen(fileno(STDIN),"r")) {
- print $io->getline;
- $io->close;
- }
-
- $io = new IO::Handle;
- if ($io->fdopen(fileno(STDOUT),"w")) {
- $io->print("Some text\n");
- }
-
- # setvbuf is not available by default on Perls 5.8.0 and later.
- use IO::Handle '_IOLBF';
- $io->setvbuf($buffer_var, _IOLBF, 1024);
-
- undef $io; # automatically closes the file if it's open
-
- autoflush STDOUT 1;
-
-=head1 DESCRIPTION
-
-C<IO::Handle> is the base class for all other IO handle classes. It is
-not intended that objects of C<IO::Handle> would be created directly,
-but instead C<IO::Handle> is inherited from by several other classes
-in the IO hierarchy.
-
-If you are reading this documentation, looking for a replacement for
-the C<FileHandle> package, then I suggest you read the documentation
-for C<IO::File> too.
-
-=head1 CONSTRUCTOR
-
-=over 4
-
-=item new ()
-
-Creates a new C<IO::Handle> object.
-
-=item new_from_fd ( FD, MODE )
-
-Creates an C<IO::Handle> like C<new> does.
-It requires two parameters, which are passed to the method C<fdopen>;
-if the fdopen fails, the object is destroyed. Otherwise, it is returned
-to the caller.
-
-=back
-
-=head1 METHODS
-
-See L<perlfunc> for complete descriptions of each of the following
-supported C<IO::Handle> methods, which are just front ends for the
-corresponding built-in functions:
-
- $io->close
- $io->eof
- $io->fileno
- $io->format_write( [FORMAT_NAME] )
- $io->getc
- $io->read ( BUF, LEN, [OFFSET] )
- $io->print ( ARGS )
- $io->printf ( FMT, [ARGS] )
- $io->stat
- $io->sysread ( BUF, LEN, [OFFSET] )
- $io->syswrite ( BUF, [LEN, [OFFSET]] )
- $io->truncate ( LEN )
-
-See L<perlvar> for complete descriptions of each of the following
-supported C<IO::Handle> methods. All of them return the previous
-value of the attribute and takes an optional single argument that when
-given will set the value. If no argument is given the previous value
-is unchanged (except for $io->autoflush will actually turn ON
-autoflush by default).
-
- $io->autoflush ( [BOOL] ) $|
- $io->format_page_number( [NUM] ) $%
- $io->format_lines_per_page( [NUM] ) $=
- $io->format_lines_left( [NUM] ) $-
- $io->format_name( [STR] ) $~
- $io->format_top_name( [STR] ) $^
- $io->input_line_number( [NUM]) $.
-
-The following methods are not supported on a per-filehandle basis.
-
- IO::Handle->format_line_break_characters( [STR] ) $:
- IO::Handle->format_formfeed( [STR]) $^L
- IO::Handle->output_field_separator( [STR] ) $,
- IO::Handle->output_record_separator( [STR] ) $\
-
- IO::Handle->input_record_separator( [STR] ) $/
-
-Furthermore, for doing normal I/O you might need these:
-
-=over 4
-
-=item $io->fdopen ( FD, MODE )
-
-C<fdopen> is like an ordinary C<open> except that its first parameter
-is not a filename but rather a file handle name, an IO::Handle object,
-or a file descriptor number.
-
-=item $io->opened
-
-Returns true if the object is currently a valid file descriptor, false
-otherwise.
-
-=item $io->getline
-
-This works like <$io> described in L<perlop/"I/O Operators">
-except that it's more readable and can be safely called in a
-list context but still returns just one line. If used as the conditional
-+within a C<while> or C-style C<for> loop, however, you will need to
-+emulate the functionality of <$io> with C<< defined($_ = $io->getline) >>.
-
-=item $io->getlines
-
-This works like <$io> when called in a list context to read all
-the remaining lines in a file, except that it's more readable.
-It will also croak() if accidentally called in a scalar context.
-
-=item $io->ungetc ( ORD )
-
-Pushes a character with the given ordinal value back onto the given
-handle's input stream. Only one character of pushback per handle is
-guaranteed.
-
-=item $io->write ( BUF, LEN [, OFFSET ] )
-
-This C<write> is like C<write> found in C, that is it is the
-opposite of read. The wrapper for the perl C<write> function is
-called C<format_write>.
-
-=item $io->error
-
-Returns a true value if the given handle has experienced any errors
-since it was opened or since the last call to C<clearerr>, or if the
-handle is invalid. It only returns false for a valid handle with no
-outstanding errors.
-
-=item $io->clearerr
-
-Clear the given handle's error indicator. Returns -1 if the handle is
-invalid, 0 otherwise.
-
-=item $io->sync
-
-C<sync> synchronizes a file's in-memory state with that on the
-physical medium. C<sync> does not operate at the perlio api level, but
-operates on the file descriptor (similar to sysread, sysseek and
-systell). This means that any data held at the perlio api level will not
-be synchronized. To synchronize data that is buffered at the perlio api
-level you must use the flush method. C<sync> is not implemented on all
-platforms. Returns "0 but true" on success, C<undef> on error, C<undef>
-for an invalid handle. See L<fsync(3c)>.
-
-=item $io->flush
-
-C<flush> causes perl to flush any buffered data at the perlio api level.
-Any unread data in the buffer will be discarded, and any unwritten data
-will be written to the underlying file descriptor. Returns "0 but true"
-on success, C<undef> on error.
-
-=item $io->printflush ( ARGS )
-
-Turns on autoflush, print ARGS and then restores the autoflush status of the
-C<IO::Handle> object. Returns the return value from print.
-
-=item $io->blocking ( [ BOOL ] )
-
-If called with an argument C<blocking> will turn on non-blocking IO if
-C<BOOL> is false, and turn it off if C<BOOL> is true.
-
-C<blocking> will return the value of the previous setting, or the
-current setting if C<BOOL> is not given.
-
-If an error occurs C<blocking> will return undef and C<$!> will be set.
-
-=back
-
-
-If the C functions setbuf() and/or setvbuf() are available, then
-C<IO::Handle::setbuf> and C<IO::Handle::setvbuf> set the buffering
-policy for an IO::Handle. The calling sequences for the Perl functions
-are the same as their C counterparts--including the constants C<_IOFBF>,
-C<_IOLBF>, and C<_IONBF> for setvbuf()--except that the buffer parameter
-specifies a scalar variable to use as a buffer. You should only
-change the buffer before any I/O, or immediately after calling flush.
-
-WARNING: The IO::Handle::setvbuf() is not available by default on
-Perls 5.8.0 and later because setvbuf() is rather specific to using
-the stdio library, while Perl prefers the new perlio subsystem instead.
-
-WARNING: A variable used as a buffer by C<setbuf> or C<setvbuf> B<must not
-be modified> in any way until the IO::Handle is closed or C<setbuf> or
-C<setvbuf> is called again, or memory corruption may result! Remember that
-the order of global destruction is undefined, so even if your buffer
-variable remains in scope until program termination, it may be undefined
-before the file IO::Handle is closed. Note that you need to import the
-constants C<_IOFBF>, C<_IOLBF>, and C<_IONBF> explicitly. Like C, setbuf
-returns nothing. setvbuf returns "0 but true", on success, C<undef> on
-failure.
-
-Lastly, there is a special method for working under B<-T> and setuid/gid
-scripts:
-
-=over 4
-
-=item $io->untaint
-
-Marks the object as taint-clean, and as such data read from it will also
-be considered taint-clean. Note that this is a very trusting action to
-take, and appropriate consideration for the data source and potential
-vulnerability should be kept in mind. Returns 0 on success, -1 if setting
-the taint-clean flag failed. (eg invalid handle)
-
-=back
-
-=head1 NOTE
-
-An C<IO::Handle> object is a reference to a symbol/GLOB reference (see
-the C<Symbol> package). Some modules that
-inherit from C<IO::Handle> may want to keep object related variables
-in the hash table part of the GLOB. In an attempt to prevent modules
-trampling on each other I propose the that any such module should prefix
-its variables with its own name separated by _'s. For example the IO::Socket
-module keeps a C<timeout> variable in 'io_socket_timeout'.
-
-=head1 SEE ALSO
-
-L<perlfunc>,
-L<perlop/"I/O Operators">,
-L<IO::File>
-
-=head1 BUGS
-
-Due to backwards compatibility, all filehandles resemble objects
-of class C<IO::Handle>, or actually classes derived from that class.
-They actually aren't. Which means you can't derive your own
-class from C<IO::Handle> and inherit those methods.
-
-=head1 HISTORY
-
-Derived from FileHandle.pm by Graham Barr E<lt>F<gbarr@pobox.com>E<gt>
-
-=cut
-
-use 5.006_001;
-use strict;
-our($VERSION, @EXPORT_OK, @ISA);
-use Carp;
-use Symbol;
-use SelectSaver;
-use IO (); # Load the XS module
-
-require Exporter;
-@ISA = qw(Exporter);
-
-$VERSION = "1.25";
-$VERSION = eval $VERSION;
-
-@EXPORT_OK = qw(
- autoflush
- output_field_separator
- output_record_separator
- input_record_separator
- input_line_number
- format_page_number
- format_lines_per_page
- format_lines_left
- format_name
- format_top_name
- format_line_break_characters
- format_formfeed
- format_write
-
- print
- printf
- getline
- getlines
-
- printflush
- flush
-
- SEEK_SET
- SEEK_CUR
- SEEK_END
- _IOFBF
- _IOLBF
- _IONBF
-);
-
-################################################
-## Constructors, destructors.
-##
-
-sub new {
- my $class = ref($_[0]) || $_[0] || "IO::Handle";
- @_ == 1 or croak "usage: new $class";
- my $io = gensym;
- bless $io, $class;
-}
-
-sub new_from_fd {
- my $class = ref($_[0]) || $_[0] || "IO::Handle";
- @_ == 3 or croak "usage: new_from_fd $class FD, MODE";
- my $io = gensym;
- shift;
- IO::Handle::fdopen($io, @_)
- or return undef;
- bless $io, $class;
-}
-
-#
-# There is no need for DESTROY to do anything, because when the
-# last reference to an IO object is gone, Perl automatically
-# closes its associated files (if any). However, to avoid any
-# attempts to autoload DESTROY, we here define it to do nothing.
-#
-sub DESTROY {}
-
-
-################################################
-## Open and close.
-##
-
-sub _open_mode_string {
- my ($mode) = @_;
- $mode =~ /^\+?(<|>>?)$/
- or $mode =~ s/^r(\+?)$/$1</
- or $mode =~ s/^w(\+?)$/$1>/
- or $mode =~ s/^a(\+?)$/$1>>/
- or croak "IO::Handle: bad open mode: $mode";
- $mode;
-}
-
-sub fdopen {
- @_ == 3 or croak 'usage: $io->fdopen(FD, MODE)';
- my ($io, $fd, $mode) = @_;
- local(*GLOB);
-
- if (ref($fd) && "".$fd =~ /GLOB\(/o) {
- # It's a glob reference; Alias it as we cannot get name of anon GLOBs
- my $n = qualify(*GLOB);
- *GLOB = *{*$fd};
- $fd = $n;
- } elsif ($fd =~ m#^\d+$#) {
- # It's an FD number; prefix with "=".
- $fd = "=$fd";
- }
-
- open($io, _open_mode_string($mode) . '&' . $fd)
- ? $io : undef;
-}
-
-sub close {
- @_ == 1 or croak 'usage: $io->close()';
- my($io) = @_;
-
- close($io);
-}
-
-################################################
-## Normal I/O functions.
-##
-
-# flock
-# select
-
-sub opened {
- @_ == 1 or croak 'usage: $io->opened()';
- defined fileno($_[0]);
-}
-
-sub fileno {
- @_ == 1 or croak 'usage: $io->fileno()';
- fileno($_[0]);
-}
-
-sub getc {
- @_ == 1 or croak 'usage: $io->getc()';
- getc($_[0]);
-}
-
-sub eof {
- @_ == 1 or croak 'usage: $io->eof()';
- eof($_[0]);
-}
-
-sub print {
- @_ or croak 'usage: $io->print(ARGS)';
- my $this = shift;
- print $this @_;
-}
-
-sub printf {
- @_ >= 2 or croak 'usage: $io->printf(FMT,[ARGS])';
- my $this = shift;
- printf $this @_;
-}
-
-sub getline {
- @_ == 1 or croak 'usage: $io->getline()';
- my $this = shift;
- return scalar <$this>;
-}
-
-*gets = \&getline; # deprecated
-
-sub getlines {
- @_ == 1 or croak 'usage: $io->getlines()';
- wantarray or
- croak 'Can\'t call $io->getlines in a scalar context, use $io->getline';
- my $this = shift;
- return <$this>;
-}
-
-sub truncate {
- @_ == 2 or croak 'usage: $io->truncate(LEN)';
- truncate($_[0], $_[1]);
-}
-
-sub read {
- @_ == 3 || @_ == 4 or croak 'usage: $io->read(BUF, LEN [, OFFSET])';
- read($_[0], $_[1], $_[2], $_[3] || 0);
-}
-
-sub sysread {
- @_ == 3 || @_ == 4 or croak 'usage: $io->sysread(BUF, LEN [, OFFSET])';
- sysread($_[0], $_[1], $_[2], $_[3] || 0);
-}
-
-sub write {
- @_ >= 2 && @_ <= 4 or croak 'usage: $io->write(BUF [, LEN [, OFFSET]])';
- local($\) = "";
- $_[2] = length($_[1]) unless defined $_[2];
- print { $_[0] } substr($_[1], $_[3] || 0, $_[2]);
-}
-
-sub syswrite {
- @_ >= 2 && @_ <= 4 or croak 'usage: $io->syswrite(BUF [, LEN [, OFFSET]])';
- if (defined($_[2])) {
- syswrite($_[0], $_[1], $_[2], $_[3] || 0);
- } else {
- syswrite($_[0], $_[1]);
- }
-}
-
-sub stat {
- @_ == 1 or croak 'usage: $io->stat()';
- stat($_[0]);
-}
-
-################################################
-## State modification functions.
-##
-
-sub autoflush {
- my $old = new SelectSaver qualify($_[0], caller);
- my $prev = $|;
- $| = @_ > 1 ? $_[1] : 1;
- $prev;
-}
-
-sub output_field_separator {
- carp "output_field_separator is not supported on a per-handle basis"
- if ref($_[0]);
- my $prev = $,;
- $, = $_[1] if @_ > 1;
- $prev;
-}
-
-sub output_record_separator {
- carp "output_record_separator is not supported on a per-handle basis"
- if ref($_[0]);
- my $prev = $\;
- $\ = $_[1] if @_ > 1;
- $prev;
-}
-
-sub input_record_separator {
- carp "input_record_separator is not supported on a per-handle basis"
- if ref($_[0]);
- my $prev = $/;
- $/ = $_[1] if @_ > 1;
- $prev;
-}
-
-sub input_line_number {
- local $.;
- () = tell qualify($_[0], caller) if ref($_[0]);
- my $prev = $.;
- $. = $_[1] if @_ > 1;
- $prev;
-}
-
-sub format_page_number {
- my $old;
- $old = new SelectSaver qualify($_[0], caller) if ref($_[0]);
- my $prev = $%;
- $% = $_[1] if @_ > 1;
- $prev;
-}
-
-sub format_lines_per_page {
- my $old;
- $old = new SelectSaver qualify($_[0], caller) if ref($_[0]);
- my $prev = $=;
- $= = $_[1] if @_ > 1;
- $prev;
-}
-
-sub format_lines_left {
- my $old;
- $old = new SelectSaver qualify($_[0], caller) if ref($_[0]);
- my $prev = $-;
- $- = $_[1] if @_ > 1;
- $prev;
-}
-
-sub format_name {
- my $old;
- $old = new SelectSaver qualify($_[0], caller) if ref($_[0]);
- my $prev = $~;
- $~ = qualify($_[1], caller) if @_ > 1;
- $prev;
-}
-
-sub format_top_name {
- my $old;
- $old = new SelectSaver qualify($_[0], caller) if ref($_[0]);
- my $prev = $^;
- $^ = qualify($_[1], caller) if @_ > 1;
- $prev;
-}
-
-sub format_line_break_characters {
- carp "format_line_break_characters is not supported on a per-handle basis"
- if ref($_[0]);
- my $prev = $:;
- $: = $_[1] if @_ > 1;
- $prev;
-}
-
-sub format_formfeed {
- carp "format_formfeed is not supported on a per-handle basis"
- if ref($_[0]);
- my $prev = $^L;
- $^L = $_[1] if @_ > 1;
- $prev;
-}
-
-sub formline {
- my $io = shift;
- my $picture = shift;
- local($^A) = $^A;
- local($\) = "";
- formline($picture, @_);
- print $io $^A;
-}
-
-sub format_write {
- @_ < 3 || croak 'usage: $io->write( [FORMAT_NAME] )';
- if (@_ == 2) {
- my ($io, $fmt) = @_;
- my $oldfmt = $io->format_name($fmt);
- CORE::write($io);
- $io->format_name($oldfmt);
- } else {
- CORE::write($_[0]);
- }
-}
-
-# XXX undocumented
-sub fcntl {
- @_ == 3 || croak 'usage: $io->fcntl( OP, VALUE );';
- my ($io, $op) = @_;
- return fcntl($io, $op, $_[2]);
-}
-
-# XXX undocumented
-sub ioctl {
- @_ == 3 || croak 'usage: $io->ioctl( OP, VALUE );';
- my ($io, $op) = @_;
- return ioctl($io, $op, $_[2]);
-}
-
-# this sub is for compatability with older releases of IO that used
-# a sub called constant to detemine if a constant existed -- GMB
-#
-# The SEEK_* and _IO?BF constants were the only constants at that time
-# any new code should just chech defined(&CONSTANT_NAME)
-
-sub constant {
- no strict 'refs';
- my $name = shift;
- (($name =~ /^(SEEK_(SET|CUR|END)|_IO[FLN]BF)$/) && defined &{$name})
- ? &{$name}() : undef;
-}
-
-
-# so that flush.pl can be deprecated
-
-sub printflush {
- my $io = shift;
- my $old;
- $old = new SelectSaver qualify($io, caller) if ref($io);
- local $| = 1;
- if(ref($io)) {
- print $io @_;
- }
- else {
- print @_;
- }
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/IO/Pipe.pm b/Master/tlpkg/tlperl/lib/IO/Pipe.pm
deleted file mode 100644
index 827cc48bfcd..00000000000
--- a/Master/tlpkg/tlperl/lib/IO/Pipe.pm
+++ /dev/null
@@ -1,257 +0,0 @@
-# IO::Pipe.pm
-#
-# Copyright (c) 1996-8 Graham Barr <gbarr@pobox.com>. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-
-package IO::Pipe;
-
-use 5.006_001;
-
-use IO::Handle;
-use strict;
-our($VERSION);
-use Carp;
-use Symbol;
-
-$VERSION = "1.13";
-
-sub new {
- my $type = shift;
- my $class = ref($type) || $type || "IO::Pipe";
- @_ == 0 || @_ == 2 or croak "usage: new $class [READFH, WRITEFH]";
-
- my $me = bless gensym(), $class;
-
- my($readfh,$writefh) = @_ ? @_ : $me->handles;
-
- pipe($readfh, $writefh)
- or return undef;
-
- @{*$me} = ($readfh, $writefh);
-
- $me;
-}
-
-sub handles {
- @_ == 1 or croak 'usage: $pipe->handles()';
- (IO::Pipe::End->new(), IO::Pipe::End->new());
-}
-
-my $do_spawn = $^O eq 'os2' || $^O eq 'MSWin32';
-
-sub _doit {
- my $me = shift;
- my $rw = shift;
-
- my $pid = $do_spawn ? 0 : fork();
-
- if($pid) { # Parent
- return $pid;
- }
- elsif(defined $pid) { # Child or spawn
- my $fh;
- my $io = $rw ? \*STDIN : \*STDOUT;
- my ($mode, $save) = $rw ? "r" : "w";
- if ($do_spawn) {
- require Fcntl;
- $save = IO::Handle->new_from_fd($io, $mode);
- my $handle = shift;
- # Close in child:
- unless ($^O eq 'MSWin32') {
- fcntl($handle, Fcntl::F_SETFD(), 1) or croak "fcntl: $!";
- }
- $fh = $rw ? ${*$me}[0] : ${*$me}[1];
- } else {
- shift;
- $fh = $rw ? $me->reader() : $me->writer(); # close the other end
- }
- bless $io, "IO::Handle";
- $io->fdopen($fh, $mode);
- $fh->close;
-
- if ($do_spawn) {
- $pid = eval { system 1, @_ }; # 1 == P_NOWAIT
- my $err = $!;
-
- $io->fdopen($save, $mode);
- $save->close or croak "Cannot close $!";
- croak "IO::Pipe: Cannot spawn-NOWAIT: $err" if not $pid or $pid < 0;
- return $pid;
- } else {
- exec @_ or
- croak "IO::Pipe: Cannot exec: $!";
- }
- }
- else {
- croak "IO::Pipe: Cannot fork: $!";
- }
-
- # NOT Reached
-}
-
-sub reader {
- @_ >= 1 or croak 'usage: $pipe->reader( [SUB_COMMAND_ARGS] )';
- my $me = shift;
-
- return undef
- unless(ref($me) || ref($me = $me->new));
-
- my $fh = ${*$me}[0];
- my $pid;
- $pid = $me->_doit(0, $fh, @_)
- if(@_);
-
- close ${*$me}[1];
- bless $me, ref($fh);
- *$me = *$fh; # Alias self to handle
- $me->fdopen($fh->fileno,"r")
- unless defined($me->fileno);
- bless $fh; # Really wan't un-bless here
- ${*$me}{'io_pipe_pid'} = $pid
- if defined $pid;
-
- $me;
-}
-
-sub writer {
- @_ >= 1 or croak 'usage: $pipe->writer( [SUB_COMMAND_ARGS] )';
- my $me = shift;
-
- return undef
- unless(ref($me) || ref($me = $me->new));
-
- my $fh = ${*$me}[1];
- my $pid;
- $pid = $me->_doit(1, $fh, @_)
- if(@_);
-
- close ${*$me}[0];
- bless $me, ref($fh);
- *$me = *$fh; # Alias self to handle
- $me->fdopen($fh->fileno,"w")
- unless defined($me->fileno);
- bless $fh; # Really wan't un-bless here
- ${*$me}{'io_pipe_pid'} = $pid
- if defined $pid;
-
- $me;
-}
-
-package IO::Pipe::End;
-
-our(@ISA);
-
-@ISA = qw(IO::Handle);
-
-sub close {
- my $fh = shift;
- my $r = $fh->SUPER::close(@_);
-
- waitpid(${*$fh}{'io_pipe_pid'},0)
- if(defined ${*$fh}{'io_pipe_pid'});
-
- $r;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-IO::Pipe - supply object methods for pipes
-
-=head1 SYNOPSIS
-
- use IO::Pipe;
-
- $pipe = new IO::Pipe;
-
- if($pid = fork()) { # Parent
- $pipe->reader();
-
- while(<$pipe>) {
- ...
- }
-
- }
- elsif(defined $pid) { # Child
- $pipe->writer();
-
- print $pipe ...
- }
-
- or
-
- $pipe = new IO::Pipe;
-
- $pipe->reader(qw(ls -l));
-
- while(<$pipe>) {
- ...
- }
-
-=head1 DESCRIPTION
-
-C<IO::Pipe> provides an interface to creating pipes between
-processes.
-
-=head1 CONSTRUCTOR
-
-=over 4
-
-=item new ( [READER, WRITER] )
-
-Creates an C<IO::Pipe>, which is a reference to a newly created symbol
-(see the C<Symbol> package). C<IO::Pipe::new> optionally takes two
-arguments, which should be objects blessed into C<IO::Handle>, or a
-subclass thereof. These two objects will be used for the system call
-to C<pipe>. If no arguments are given then method C<handles> is called
-on the new C<IO::Pipe> object.
-
-These two handles are held in the array part of the GLOB until either
-C<reader> or C<writer> is called.
-
-=back
-
-=head1 METHODS
-
-=over 4
-
-=item reader ([ARGS])
-
-The object is re-blessed into a sub-class of C<IO::Handle>, and becomes a
-handle at the reading end of the pipe. If C<ARGS> are given then C<fork>
-is called and C<ARGS> are passed to exec.
-
-=item writer ([ARGS])
-
-The object is re-blessed into a sub-class of C<IO::Handle>, and becomes a
-handle at the writing end of the pipe. If C<ARGS> are given then C<fork>
-is called and C<ARGS> are passed to exec.
-
-=item handles ()
-
-This method is called during construction by C<IO::Pipe::new>
-on the newly created C<IO::Pipe> object. It returns an array of two objects
-blessed into C<IO::Pipe::End>, or a subclass thereof.
-
-=back
-
-=head1 SEE ALSO
-
-L<IO::Handle>
-
-=head1 AUTHOR
-
-Graham Barr. Currently maintained by the Perl Porters. Please report all
-bugs to <perl5-porters@perl.org>.
-
-=head1 COPYRIGHT
-
-Copyright (c) 1996-8 Graham Barr <gbarr@pobox.com>. All rights reserved.
-This program is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/IO/Poll.pm b/Master/tlpkg/tlperl/lib/IO/Poll.pm
deleted file mode 100644
index e7fb0135069..00000000000
--- a/Master/tlpkg/tlperl/lib/IO/Poll.pm
+++ /dev/null
@@ -1,209 +0,0 @@
-
-# IO::Poll.pm
-#
-# Copyright (c) 1997-8 Graham Barr <gbarr@pobox.com>. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-
-package IO::Poll;
-
-use strict;
-use IO::Handle;
-use Exporter ();
-our(@ISA, @EXPORT_OK, @EXPORT, $VERSION);
-
-@ISA = qw(Exporter);
-$VERSION = "0.07";
-
-@EXPORT = qw( POLLIN
- POLLOUT
- POLLERR
- POLLHUP
- POLLNVAL
- );
-
-@EXPORT_OK = qw(
- POLLPRI
- POLLRDNORM
- POLLWRNORM
- POLLRDBAND
- POLLWRBAND
- POLLNORM
- );
-
-# [0] maps fd's to requested masks
-# [1] maps fd's to returned masks
-# [2] maps fd's to handles
-sub new {
- my $class = shift;
-
- my $self = bless [{},{},{}], $class;
-
- $self;
-}
-
-sub mask {
- my $self = shift;
- my $io = shift;
- my $fd = fileno($io);
- return unless defined $fd;
- if (@_) {
- my $mask = shift;
- if($mask) {
- $self->[0]{$fd}{$io} = $mask; # the error events are always returned
- $self->[1]{$fd} = 0; # output mask
- $self->[2]{$io} = $io; # remember handle
- } else {
- delete $self->[0]{$fd}{$io};
- unless(%{$self->[0]{$fd}}) {
- # We no longer have any handles for this FD
- delete $self->[1]{$fd};
- delete $self->[0]{$fd};
- }
- delete $self->[2]{$io};
- }
- }
-
- return unless exists $self->[0]{$fd} and exists $self->[0]{$fd}{$io};
- return $self->[0]{$fd}{$io};
-}
-
-
-sub poll {
- my($self,$timeout) = @_;
-
- $self->[1] = {};
-
- my($fd,$mask,$iom);
- my @poll = ();
-
- while(($fd,$iom) = each %{$self->[0]}) {
- $mask = 0;
- $mask |= $_ for values(%$iom);
- push(@poll,$fd => $mask);
- }
-
- my $ret = @poll ? _poll(defined($timeout) ? $timeout * 1000 : -1,@poll) : 0;
-
- return $ret
- unless $ret > 0;
-
- while(@poll) {
- my($fd,$got) = splice(@poll,0,2);
- $self->[1]{$fd} = $got if $got;
- }
-
- return $ret;
-}
-
-sub events {
- my $self = shift;
- my $io = shift;
- my $fd = fileno($io);
- exists $self->[1]{$fd} and exists $self->[0]{$fd}{$io}
- ? $self->[1]{$fd} & ($self->[0]{$fd}{$io}|POLLHUP|POLLERR|POLLNVAL)
- : 0;
-}
-
-sub remove {
- my $self = shift;
- my $io = shift;
- $self->mask($io,0);
-}
-
-sub handles {
- my $self = shift;
- return values %{$self->[2]} unless @_;
-
- my $events = shift || 0;
- my($fd,$ev,$io,$mask);
- my @handles = ();
-
- while(($fd,$ev) = each %{$self->[1]}) {
- while (($io,$mask) = each %{$self->[0]{$fd}}) {
- $mask |= POLLHUP|POLLERR|POLLNVAL; # must allow these
- push @handles,$self->[2]{$io} if ($ev & $mask) & $events;
- }
- }
- return @handles;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-IO::Poll - Object interface to system poll call
-
-=head1 SYNOPSIS
-
- use IO::Poll qw(POLLRDNORM POLLWRNORM POLLIN POLLHUP);
-
- $poll = new IO::Poll;
-
- $poll->mask($input_handle => POLLIN);
- $poll->mask($output_handle => POLLOUT);
-
- $poll->poll($timeout);
-
- $ev = $poll->events($input);
-
-=head1 DESCRIPTION
-
-C<IO::Poll> is a simple interface to the system level poll routine.
-
-=head1 METHODS
-
-=over 4
-
-=item mask ( IO [, EVENT_MASK ] )
-
-If EVENT_MASK is given, then, if EVENT_MASK is non-zero, IO is added to the
-list of file descriptors and the next call to poll will check for
-any event specified in EVENT_MASK. If EVENT_MASK is zero then IO will be
-removed from the list of file descriptors.
-
-If EVENT_MASK is not given then the return value will be the current
-event mask value for IO.
-
-=item poll ( [ TIMEOUT ] )
-
-Call the system level poll routine. If TIMEOUT is not specified then the
-call will block. Returns the number of handles which had events
-happen, or -1 on error.
-
-=item events ( IO )
-
-Returns the event mask which represents the events that happened on IO
-during the last call to C<poll>.
-
-=item remove ( IO )
-
-Remove IO from the list of file descriptors for the next poll.
-
-=item handles( [ EVENT_MASK ] )
-
-Returns a list of handles. If EVENT_MASK is not given then a list of all
-handles known will be returned. If EVENT_MASK is given then a list
-of handles will be returned which had one of the events specified by
-EVENT_MASK happen during the last call ti C<poll>
-
-=back
-
-=head1 SEE ALSO
-
-L<poll(2)>, L<IO::Handle>, L<IO::Select>
-
-=head1 AUTHOR
-
-Graham Barr. Currently maintained by the Perl Porters. Please report all
-bugs to <perl5-porters@perl.org>.
-
-=head1 COPYRIGHT
-
-Copyright (c) 1997-8 Graham Barr <gbarr@pobox.com>. All rights reserved.
-This program is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/IO/Seekable.pm b/Master/tlpkg/tlperl/lib/IO/Seekable.pm
deleted file mode 100644
index db1effda287..00000000000
--- a/Master/tlpkg/tlperl/lib/IO/Seekable.pm
+++ /dev/null
@@ -1,128 +0,0 @@
-#
-
-package IO::Seekable;
-
-=head1 NAME
-
-IO::Seekable - supply seek based methods for I/O objects
-
-=head1 SYNOPSIS
-
- use IO::Seekable;
- package IO::Something;
- @ISA = qw(IO::Seekable);
-
-=head1 DESCRIPTION
-
-C<IO::Seekable> does not have a constructor of its own as it is intended to
-be inherited by other C<IO::Handle> based objects. It provides methods
-which allow seeking of the file descriptors.
-
-=over 4
-
-=item $io->getpos
-
-Returns an opaque value that represents the current position of the
-IO::File, or C<undef> if this is not possible (eg an unseekable stream such
-as a terminal, pipe or socket). If the fgetpos() function is available in
-your C library it is used to implements getpos, else perl emulates getpos
-using C's ftell() function.
-
-=item $io->setpos
-
-Uses the value of a previous getpos call to return to a previously visited
-position. Returns "0 but true" on success, C<undef> on failure.
-
-=back
-
-See L<perlfunc> for complete descriptions of each of the following
-supported C<IO::Seekable> methods, which are just front ends for the
-corresponding built-in functions:
-
-=over 4
-
-=item $io->seek ( POS, WHENCE )
-
-Seek the IO::File to position POS, relative to WHENCE:
-
-=over 8
-
-=item WHENCE=0 (SEEK_SET)
-
-POS is absolute position. (Seek relative to the start of the file)
-
-=item WHENCE=1 (SEEK_CUR)
-
-POS is an offset from the current position. (Seek relative to current)
-
-=item WHENCE=2 (SEEK_END)
-
-POS is an offset from the end of the file. (Seek relative to end)
-
-=back
-
-The SEEK_* constants can be imported from the C<Fcntl> module if you
-don't wish to use the numbers C<0> C<1> or C<2> in your code.
-
-Returns C<1> upon success, C<0> otherwise.
-
-=item $io->sysseek( POS, WHENCE )
-
-Similar to $io->seek, but sets the IO::File's position using the system
-call lseek(2) directly, so will confuse most perl IO operators except
-sysread and syswrite (see L<perlfunc> for full details)
-
-Returns the new position, or C<undef> on failure. A position
-of zero is returned as the string C<"0 but true">
-
-=item $io->tell
-
-Returns the IO::File's current position, or -1 on error.
-
-=back
-
-=head1 SEE ALSO
-
-L<perlfunc>,
-L<perlop/"I/O Operators">,
-L<IO::Handle>
-L<IO::File>
-
-=head1 HISTORY
-
-Derived from FileHandle.pm by Graham Barr E<lt>gbarr@pobox.comE<gt>
-
-=cut
-
-use 5.006_001;
-use Carp;
-use strict;
-our($VERSION, @EXPORT, @ISA);
-use IO::Handle ();
-# XXX we can't get these from IO::Handle or we'll get prototype
-# mismatch warnings on C<use POSIX; use IO::File;> :-(
-use Fcntl qw(SEEK_SET SEEK_CUR SEEK_END);
-require Exporter;
-
-@EXPORT = qw(SEEK_SET SEEK_CUR SEEK_END);
-@ISA = qw(Exporter);
-
-$VERSION = "1.10";
-$VERSION = eval $VERSION;
-
-sub seek {
- @_ == 3 or croak 'usage: $io->seek(POS, WHENCE)';
- seek($_[0], $_[1], $_[2]);
-}
-
-sub sysseek {
- @_ == 3 or croak 'usage: $io->sysseek(POS, WHENCE)';
- sysseek($_[0], $_[1], $_[2]);
-}
-
-sub tell {
- @_ == 1 or croak 'usage: $io->tell()';
- tell($_[0]);
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/IO/Select.pm b/Master/tlpkg/tlperl/lib/IO/Select.pm
deleted file mode 100644
index fc05fe70e9c..00000000000
--- a/Master/tlpkg/tlperl/lib/IO/Select.pm
+++ /dev/null
@@ -1,381 +0,0 @@
-# IO::Select.pm
-#
-# Copyright (c) 1997-8 Graham Barr <gbarr@pobox.com>. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-
-package IO::Select;
-
-use strict;
-use warnings::register;
-use vars qw($VERSION @ISA);
-require Exporter;
-
-$VERSION = "1.17";
-
-@ISA = qw(Exporter); # This is only so we can do version checking
-
-sub VEC_BITS () {0}
-sub FD_COUNT () {1}
-sub FIRST_FD () {2}
-
-sub new
-{
- my $self = shift;
- my $type = ref($self) || $self;
-
- my $vec = bless [undef,0], $type;
-
- $vec->add(@_)
- if @_;
-
- $vec;
-}
-
-sub add
-{
- shift->_update('add', @_);
-}
-
-
-sub remove
-{
- shift->_update('remove', @_);
-}
-
-
-sub exists
-{
- my $vec = shift;
- my $fno = $vec->_fileno(shift);
- return undef unless defined $fno;
- $vec->[$fno + FIRST_FD];
-}
-
-
-sub _fileno
-{
- my($self, $f) = @_;
- return unless defined $f;
- $f = $f->[0] if ref($f) eq 'ARRAY';
- ($f =~ /^\d+$/) ? $f : fileno($f);
-}
-
-sub _update
-{
- my $vec = shift;
- my $add = shift eq 'add';
-
- my $bits = $vec->[VEC_BITS];
- $bits = '' unless defined $bits;
-
- my $count = 0;
- my $f;
- foreach $f (@_)
- {
- my $fn = $vec->_fileno($f);
- next unless defined $fn;
- my $i = $fn + FIRST_FD;
- if ($add) {
- if (defined $vec->[$i]) {
- $vec->[$i] = $f; # if array rest might be different, so we update
- next;
- }
- $vec->[FD_COUNT]++;
- vec($bits, $fn, 1) = 1;
- $vec->[$i] = $f;
- } else { # remove
- next unless defined $vec->[$i];
- $vec->[FD_COUNT]--;
- vec($bits, $fn, 1) = 0;
- $vec->[$i] = undef;
- }
- $count++;
- }
- $vec->[VEC_BITS] = $vec->[FD_COUNT] ? $bits : undef;
- $count;
-}
-
-sub can_read
-{
- my $vec = shift;
- my $timeout = shift;
- my $r = $vec->[VEC_BITS];
-
- defined($r) && (select($r,undef,undef,$timeout) > 0)
- ? handles($vec, $r)
- : ();
-}
-
-sub can_write
-{
- my $vec = shift;
- my $timeout = shift;
- my $w = $vec->[VEC_BITS];
-
- defined($w) && (select(undef,$w,undef,$timeout) > 0)
- ? handles($vec, $w)
- : ();
-}
-
-sub has_exception
-{
- my $vec = shift;
- my $timeout = shift;
- my $e = $vec->[VEC_BITS];
-
- defined($e) && (select(undef,undef,$e,$timeout) > 0)
- ? handles($vec, $e)
- : ();
-}
-
-sub has_error
-{
- warnings::warn("Call to deprecated method 'has_error', use 'has_exception'")
- if warnings::enabled();
- goto &has_exception;
-}
-
-sub count
-{
- my $vec = shift;
- $vec->[FD_COUNT];
-}
-
-sub bits
-{
- my $vec = shift;
- $vec->[VEC_BITS];
-}
-
-sub as_string # for debugging
-{
- my $vec = shift;
- my $str = ref($vec) . ": ";
- my $bits = $vec->bits;
- my $count = $vec->count;
- $str .= defined($bits) ? unpack("b*", $bits) : "undef";
- $str .= " $count";
- my @handles = @$vec;
- splice(@handles, 0, FIRST_FD);
- for (@handles) {
- $str .= " " . (defined($_) ? "$_" : "-");
- }
- $str;
-}
-
-sub _max
-{
- my($a,$b,$c) = @_;
- $a > $b
- ? $a > $c
- ? $a
- : $c
- : $b > $c
- ? $b
- : $c;
-}
-
-sub select
-{
- shift
- if defined $_[0] && !ref($_[0]);
-
- my($r,$w,$e,$t) = @_;
- my @result = ();
-
- my $rb = defined $r ? $r->[VEC_BITS] : undef;
- my $wb = defined $w ? $w->[VEC_BITS] : undef;
- my $eb = defined $e ? $e->[VEC_BITS] : undef;
-
- if(select($rb,$wb,$eb,$t) > 0)
- {
- my @r = ();
- my @w = ();
- my @e = ();
- my $i = _max(defined $r ? scalar(@$r)-1 : 0,
- defined $w ? scalar(@$w)-1 : 0,
- defined $e ? scalar(@$e)-1 : 0);
-
- for( ; $i >= FIRST_FD ; $i--)
- {
- my $j = $i - FIRST_FD;
- push(@r, $r->[$i])
- if defined $rb && defined $r->[$i] && vec($rb, $j, 1);
- push(@w, $w->[$i])
- if defined $wb && defined $w->[$i] && vec($wb, $j, 1);
- push(@e, $e->[$i])
- if defined $eb && defined $e->[$i] && vec($eb, $j, 1);
- }
-
- @result = (\@r, \@w, \@e);
- }
- @result;
-}
-
-
-sub handles
-{
- my $vec = shift;
- my $bits = shift;
- my @h = ();
- my $i;
- my $max = scalar(@$vec) - 1;
-
- for ($i = FIRST_FD; $i <= $max; $i++)
- {
- next unless defined $vec->[$i];
- push(@h, $vec->[$i])
- if !defined($bits) || vec($bits, $i - FIRST_FD, 1);
- }
-
- @h;
-}
-
-1;
-__END__
-
-=head1 NAME
-
-IO::Select - OO interface to the select system call
-
-=head1 SYNOPSIS
-
- use IO::Select;
-
- $s = IO::Select->new();
-
- $s->add(\*STDIN);
- $s->add($some_handle);
-
- @ready = $s->can_read($timeout);
-
- @ready = IO::Select->new(@handles)->can_read(0);
-
-=head1 DESCRIPTION
-
-The C<IO::Select> package implements an object approach to the system C<select>
-function call. It allows the user to see what IO handles, see L<IO::Handle>,
-are ready for reading, writing or have an exception pending.
-
-=head1 CONSTRUCTOR
-
-=over 4
-
-=item new ( [ HANDLES ] )
-
-The constructor creates a new object and optionally initialises it with a set
-of handles.
-
-=back
-
-=head1 METHODS
-
-=over 4
-
-=item add ( HANDLES )
-
-Add the list of handles to the C<IO::Select> object. It is these values that
-will be returned when an event occurs. C<IO::Select> keeps these values in a
-cache which is indexed by the C<fileno> of the handle, so if more than one
-handle with the same C<fileno> is specified then only the last one is cached.
-
-Each handle can be an C<IO::Handle> object, an integer or an array
-reference where the first element is an C<IO::Handle> or an integer.
-
-=item remove ( HANDLES )
-
-Remove all the given handles from the object. This method also works
-by the C<fileno> of the handles. So the exact handles that were added
-need not be passed, just handles that have an equivalent C<fileno>
-
-=item exists ( HANDLE )
-
-Returns a true value (actually the handle itself) if it is present.
-Returns undef otherwise.
-
-=item handles
-
-Return an array of all registered handles.
-
-=item can_read ( [ TIMEOUT ] )
-
-Return an array of handles that are ready for reading. C<TIMEOUT> is
-the maximum amount of time to wait before returning an empty list, in
-seconds, possibly fractional. If C<TIMEOUT> is not given and any
-handles are registered then the call will block.
-
-=item can_write ( [ TIMEOUT ] )
-
-Same as C<can_read> except check for handles that can be written to.
-
-=item has_exception ( [ TIMEOUT ] )
-
-Same as C<can_read> except check for handles that have an exception
-condition, for example pending out-of-band data.
-
-=item count ()
-
-Returns the number of handles that the object will check for when
-one of the C<can_> methods is called or the object is passed to
-the C<select> static method.
-
-=item bits()
-
-Return the bit string suitable as argument to the core select() call.
-
-=item select ( READ, WRITE, EXCEPTION [, TIMEOUT ] )
-
-C<select> is a static method, that is you call it with the package name
-like C<new>. C<READ>, C<WRITE> and C<EXCEPTION> are either C<undef> or
-C<IO::Select> objects. C<TIMEOUT> is optional and has the same effect as
-for the core select call.
-
-The result will be an array of 3 elements, each a reference to an array
-which will hold the handles that are ready for reading, writing and have
-exceptions respectively. Upon error an empty list is returned.
-
-=back
-
-=head1 EXAMPLE
-
-Here is a short example which shows how C<IO::Select> could be used
-to write a server which communicates with several sockets while also
-listening for more connections on a listen socket
-
- use IO::Select;
- use IO::Socket;
-
- $lsn = new IO::Socket::INET(Listen => 1, LocalPort => 8080);
- $sel = new IO::Select( $lsn );
-
- while(@ready = $sel->can_read) {
- foreach $fh (@ready) {
- if($fh == $lsn) {
- # Create a new socket
- $new = $lsn->accept;
- $sel->add($new);
- }
- else {
- # Process socket
-
- # Maybe we have finished with the socket
- $sel->remove($fh);
- $fh->close;
- }
- }
- }
-
-=head1 AUTHOR
-
-Graham Barr. Currently maintained by the Perl Porters. Please report all
-bugs to <perl5-porters@perl.org>.
-
-=head1 COPYRIGHT
-
-Copyright (c) 1997-8 Graham Barr <gbarr@pobox.com>. All rights reserved.
-This program is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/IO/Socket.pm b/Master/tlpkg/tlperl/lib/IO/Socket.pm
deleted file mode 100644
index 4429f2bb3e6..00000000000
--- a/Master/tlpkg/tlperl/lib/IO/Socket.pm
+++ /dev/null
@@ -1,476 +0,0 @@
-# IO::Socket.pm
-#
-# Copyright (c) 1997-8 Graham Barr <gbarr@pobox.com>. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-
-package IO::Socket;
-
-require 5.006;
-
-use IO::Handle;
-use Socket 1.3;
-use Carp;
-use strict;
-our(@ISA, $VERSION, @EXPORT_OK);
-use Exporter;
-use Errno;
-
-# legacy
-
-require IO::Socket::INET;
-require IO::Socket::UNIX if ($^O ne 'epoc' && $^O ne 'symbian');
-
-@ISA = qw(IO::Handle);
-
-$VERSION = "1.29";
-
-@EXPORT_OK = qw(sockatmark);
-
-sub import {
- my $pkg = shift;
- if (@_ && $_[0] eq 'sockatmark') { # not very extensible but for now, fast
- Exporter::export_to_level('IO::Socket', 1, $pkg, 'sockatmark');
- } else {
- my $callpkg = caller;
- Exporter::export 'Socket', $callpkg, @_;
- }
-}
-
-sub new {
- my($class,%arg) = @_;
- my $sock = $class->SUPER::new();
-
- $sock->autoflush(1);
-
- ${*$sock}{'io_socket_timeout'} = delete $arg{Timeout};
-
- return scalar(%arg) ? $sock->configure(\%arg)
- : $sock;
-}
-
-my @domain2pkg;
-
-sub register_domain {
- my($p,$d) = @_;
- $domain2pkg[$d] = $p;
-}
-
-sub configure {
- my($sock,$arg) = @_;
- my $domain = delete $arg->{Domain};
-
- croak 'IO::Socket: Cannot configure a generic socket'
- unless defined $domain;
-
- croak "IO::Socket: Unsupported socket domain"
- unless defined $domain2pkg[$domain];
-
- croak "IO::Socket: Cannot configure socket in domain '$domain'"
- unless ref($sock) eq "IO::Socket";
-
- bless($sock, $domain2pkg[$domain]);
- $sock->configure($arg);
-}
-
-sub socket {
- @_ == 4 or croak 'usage: $sock->socket(DOMAIN, TYPE, PROTOCOL)';
- my($sock,$domain,$type,$protocol) = @_;
-
- socket($sock,$domain,$type,$protocol) or
- return undef;
-
- ${*$sock}{'io_socket_domain'} = $domain;
- ${*$sock}{'io_socket_type'} = $type;
- ${*$sock}{'io_socket_proto'} = $protocol;
-
- $sock;
-}
-
-sub socketpair {
- @_ == 4 || croak 'usage: IO::Socket->socketpair(DOMAIN, TYPE, PROTOCOL)';
- my($class,$domain,$type,$protocol) = @_;
- my $sock1 = $class->new();
- my $sock2 = $class->new();
-
- socketpair($sock1,$sock2,$domain,$type,$protocol) or
- return ();
-
- ${*$sock1}{'io_socket_type'} = ${*$sock2}{'io_socket_type'} = $type;
- ${*$sock1}{'io_socket_proto'} = ${*$sock2}{'io_socket_proto'} = $protocol;
-
- ($sock1,$sock2);
-}
-
-sub connect {
- @_ == 2 or croak 'usage: $sock->connect(NAME)';
- my $sock = shift;
- my $addr = shift;
- my $timeout = ${*$sock}{'io_socket_timeout'};
- my $err;
- my $blocking;
-
- $blocking = $sock->blocking(0) if $timeout;
- if (!connect($sock, $addr)) {
- if (defined $timeout && $!{EINPROGRESS}) {
- require IO::Select;
-
- my $sel = new IO::Select $sock;
-
- if (!$sel->can_write($timeout)) {
- $err = $! || (exists &Errno::ETIMEDOUT ? &Errno::ETIMEDOUT : 1);
- $@ = "connect: timeout";
- }
- elsif (!connect($sock,$addr) && not $!{EISCONN}) {
- # Some systems refuse to re-connect() to
- # an already open socket and set errno to EISCONN.
- $err = $!;
- $@ = "connect: $!";
- }
- }
- elsif ($blocking || !$!{EINPROGRESS}) {
- $err = $!;
- $@ = "connect: $!";
- }
- }
-
- $sock->blocking(1) if $blocking;
-
- $! = $err if $err;
-
- $err ? undef : $sock;
-}
-
-sub bind {
- @_ == 2 or croak 'usage: $sock->bind(NAME)';
- my $sock = shift;
- my $addr = shift;
-
- return bind($sock, $addr) ? $sock
- : undef;
-}
-
-sub listen {
- @_ >= 1 && @_ <= 2 or croak 'usage: $sock->listen([QUEUE])';
- my($sock,$queue) = @_;
- $queue = 5
- unless $queue && $queue > 0;
-
- return listen($sock, $queue) ? $sock
- : undef;
-}
-
-sub accept {
- @_ == 1 || @_ == 2 or croak 'usage $sock->accept([PKG])';
- my $sock = shift;
- my $pkg = shift || $sock;
- my $timeout = ${*$sock}{'io_socket_timeout'};
- my $new = $pkg->new(Timeout => $timeout);
- my $peer = undef;
-
- if(defined $timeout) {
- require IO::Select;
-
- my $sel = new IO::Select $sock;
-
- unless ($sel->can_read($timeout)) {
- $@ = 'accept: timeout';
- $! = (exists &Errno::ETIMEDOUT ? &Errno::ETIMEDOUT : 1);
- return;
- }
- }
-
- $peer = accept($new,$sock)
- or return;
-
- return wantarray ? ($new, $peer)
- : $new;
-}
-
-sub sockname {
- @_ == 1 or croak 'usage: $sock->sockname()';
- getsockname($_[0]);
-}
-
-sub peername {
- @_ == 1 or croak 'usage: $sock->peername()';
- my($sock) = @_;
- getpeername($sock)
- || ${*$sock}{'io_socket_peername'}
- || undef;
-}
-
-sub connected {
- @_ == 1 or croak 'usage: $sock->connected()';
- my($sock) = @_;
- getpeername($sock);
-}
-
-sub send {
- @_ >= 2 && @_ <= 4 or croak 'usage: $sock->send(BUF, [FLAGS, [TO]])';
- my $sock = $_[0];
- my $flags = $_[2] || 0;
- my $peer = $_[3] || $sock->peername;
-
- croak 'send: Cannot determine peer address'
- unless($peer);
-
- my $r = defined(getpeername($sock))
- ? send($sock, $_[1], $flags)
- : send($sock, $_[1], $flags, $peer);
-
- # remember who we send to, if it was successful
- ${*$sock}{'io_socket_peername'} = $peer
- if(@_ == 4 && defined $r);
-
- $r;
-}
-
-sub recv {
- @_ == 3 || @_ == 4 or croak 'usage: $sock->recv(BUF, LEN [, FLAGS])';
- my $sock = $_[0];
- my $len = $_[2];
- my $flags = $_[3] || 0;
-
- # remember who we recv'd from
- ${*$sock}{'io_socket_peername'} = recv($sock, $_[1]='', $len, $flags);
-}
-
-sub shutdown {
- @_ == 2 or croak 'usage: $sock->shutdown(HOW)';
- my($sock, $how) = @_;
- shutdown($sock, $how);
-}
-
-sub setsockopt {
- @_ == 4 or croak '$sock->setsockopt(LEVEL, OPTNAME)';
- setsockopt($_[0],$_[1],$_[2],$_[3]);
-}
-
-my $intsize = length(pack("i",0));
-
-sub getsockopt {
- @_ == 3 or croak '$sock->getsockopt(LEVEL, OPTNAME)';
- my $r = getsockopt($_[0],$_[1],$_[2]);
- # Just a guess
- $r = unpack("i", $r)
- if(defined $r && length($r) == $intsize);
- $r;
-}
-
-sub sockopt {
- my $sock = shift;
- @_ == 1 ? $sock->getsockopt(SOL_SOCKET,@_)
- : $sock->setsockopt(SOL_SOCKET,@_);
-}
-
-sub atmark {
- @_ == 1 or croak 'usage: $sock->atmark()';
- my($sock) = @_;
- sockatmark($sock);
-}
-
-sub timeout {
- @_ == 1 || @_ == 2 or croak 'usage: $sock->timeout([VALUE])';
- my($sock,$val) = @_;
- my $r = ${*$sock}{'io_socket_timeout'};
-
- ${*$sock}{'io_socket_timeout'} = defined $val ? 0 + $val : $val
- if(@_ == 2);
-
- $r;
-}
-
-sub sockdomain {
- @_ == 1 or croak 'usage: $sock->sockdomain()';
- my $sock = shift;
- ${*$sock}{'io_socket_domain'};
-}
-
-sub socktype {
- @_ == 1 or croak 'usage: $sock->socktype()';
- my $sock = shift;
- ${*$sock}{'io_socket_type'}
-}
-
-sub protocol {
- @_ == 1 or croak 'usage: $sock->protocol()';
- my($sock) = @_;
- ${*$sock}{'io_socket_proto'};
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-IO::Socket - Object interface to socket communications
-
-=head1 SYNOPSIS
-
- use IO::Socket;
-
-=head1 DESCRIPTION
-
-C<IO::Socket> provides an object interface to creating and using sockets. It
-is built upon the L<IO::Handle> interface and inherits all the methods defined
-by L<IO::Handle>.
-
-C<IO::Socket> only defines methods for those operations which are common to all
-types of socket. Operations which are specified to a socket in a particular
-domain have methods defined in sub classes of C<IO::Socket>
-
-C<IO::Socket> will export all functions (and constants) defined by L<Socket>.
-
-=head1 CONSTRUCTOR
-
-=over 4
-
-=item new ( [ARGS] )
-
-Creates an C<IO::Socket>, which is a reference to a
-newly created symbol (see the C<Symbol> package). C<new>
-optionally takes arguments, these arguments are in key-value pairs.
-C<new> only looks for one key C<Domain> which tells new which domain
-the socket will be in. All other arguments will be passed to the
-configuration method of the package for that domain, See below.
-
- NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
-
-As of VERSION 1.18 all IO::Socket objects have autoflush turned on
-by default. This was not the case with earlier releases.
-
- NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
-
-=back
-
-=head1 METHODS
-
-See L<perlfunc> for complete descriptions of each of the following
-supported C<IO::Socket> methods, which are just front ends for the
-corresponding built-in functions:
-
- socket
- socketpair
- bind
- listen
- accept
- send
- recv
- peername (getpeername)
- sockname (getsockname)
- shutdown
-
-Some methods take slightly different arguments to those defined in L<perlfunc>
-in attempt to make the interface more flexible. These are
-
-=over 4
-
-=item accept([PKG])
-
-perform the system call C<accept> on the socket and return a new
-object. The new object will be created in the same class as the listen
-socket, unless C<PKG> is specified. This object can be used to
-communicate with the client that was trying to connect.
-
-In a scalar context the new socket is returned, or undef upon
-failure. In a list context a two-element array is returned containing
-the new socket and the peer address; the list will be empty upon
-failure.
-
-The timeout in the [PKG] can be specified as zero to effect a "poll",
-but you shouldn't do that because a new IO::Select object will be
-created behind the scenes just to do the single poll. This is
-horrendously inefficient. Use rather true select() with a zero
-timeout on the handle, or non-blocking IO.
-
-=item socketpair(DOMAIN, TYPE, PROTOCOL)
-
-Call C<socketpair> and return a list of two sockets created, or an
-empty list on failure.
-
-=back
-
-Additional methods that are provided are:
-
-=over 4
-
-=item atmark
-
-True if the socket is currently positioned at the urgent data mark,
-false otherwise.
-
- use IO::Socket;
-
- my $sock = IO::Socket::INET->new('some_server');
- $sock->read($data, 1024) until $sock->atmark;
-
-Note: this is a reasonably new addition to the family of socket
-functions, so all systems may not support this yet. If it is
-unsupported by the system, an attempt to use this method will
-abort the program.
-
-The atmark() functionality is also exportable as sockatmark() function:
-
- use IO::Socket 'sockatmark';
-
-This allows for a more traditional use of sockatmark() as a procedural
-socket function. If your system does not support sockatmark(), the
-C<use> declaration will fail at compile time.
-
-=item connected
-
-If the socket is in a connected state the peer address is returned.
-If the socket is not in a connected state then undef will be returned.
-
-=item protocol
-
-Returns the numerical number for the protocol being used on the socket, if
-known. If the protocol is unknown, as with an AF_UNIX socket, zero
-is returned.
-
-=item sockdomain
-
-Returns the numerical number for the socket domain type. For example, for
-an AF_INET socket the value of &AF_INET will be returned.
-
-=item sockopt(OPT [, VAL])
-
-Unified method to both set and get options in the SOL_SOCKET level. If called
-with one argument then getsockopt is called, otherwise setsockopt is called.
-
-=item socktype
-
-Returns the numerical number for the socket type. For example, for
-a SOCK_STREAM socket the value of &SOCK_STREAM will be returned.
-
-=item timeout([VAL])
-
-Set or get the timeout value associated with this socket. If called without
-any arguments then the current setting is returned. If called with an argument
-the current setting is changed and the previous value returned.
-
-=back
-
-=head1 SEE ALSO
-
-L<Socket>, L<IO::Handle>, L<IO::Socket::INET>, L<IO::Socket::UNIX>
-
-=head1 AUTHOR
-
-Graham Barr. atmark() by Lincoln Stein. Currently maintained by the
-Perl Porters. Please report all bugs to <perl5-porters@perl.org>.
-
-=head1 COPYRIGHT
-
-Copyright (c) 1997-8 Graham Barr <gbarr@pobox.com>. All rights reserved.
-This program is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
-The atmark() implementation: Copyright 2001, Lincoln Stein <lstein@cshl.org>.
-This module is distributed under the same terms as Perl itself.
-Feel free to use, modify and redistribute it as long as you retain
-the correct attribution.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/IO/Socket/INET.pm b/Master/tlpkg/tlperl/lib/IO/Socket/INET.pm
deleted file mode 100644
index 96b49911d81..00000000000
--- a/Master/tlpkg/tlperl/lib/IO/Socket/INET.pm
+++ /dev/null
@@ -1,431 +0,0 @@
-# IO::Socket::INET.pm
-#
-# Copyright (c) 1997-8 Graham Barr <gbarr@pobox.com>. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-
-package IO::Socket::INET;
-
-use strict;
-our(@ISA, $VERSION);
-use IO::Socket;
-use Socket;
-use Carp;
-use Exporter;
-use Errno;
-
-@ISA = qw(IO::Socket);
-$VERSION = "1.29";
-
-my $EINVAL = exists(&Errno::EINVAL) ? Errno::EINVAL() : 1;
-
-IO::Socket::INET->register_domain( AF_INET );
-
-my %socket_type = ( tcp => SOCK_STREAM,
- udp => SOCK_DGRAM,
- icmp => SOCK_RAW
- );
-
-sub new {
- my $class = shift;
- unshift(@_, "PeerAddr") if @_ == 1;
- return $class->SUPER::new(@_);
-}
-
-sub _sock_info {
- my($addr,$port,$proto) = @_;
- my $origport = $port;
- my @proto = ();
- my @serv = ();
-
- $port = $1
- if(defined $addr && $addr =~ s,:([\w\(\)/]+)$,,);
-
- if(defined $proto && $proto =~ /\D/) {
- if(@proto = getprotobyname($proto)) {
- $proto = $proto[2] || undef;
- }
- else {
- $@ = "Bad protocol '$proto'";
- return;
- }
- }
-
- if(defined $port) {
- my $defport = ($port =~ s,\((\d+)\)$,,) ? $1 : undef;
- my $pnum = ($port =~ m,^(\d+)$,)[0];
-
- @serv = getservbyname($port, $proto[0] || "")
- if ($port =~ m,\D,);
-
- $port = $serv[2] || $defport || $pnum;
- unless (defined $port) {
- $@ = "Bad service '$origport'";
- return;
- }
-
- $proto = (getprotobyname($serv[3]))[2] || undef
- if @serv && !$proto;
- }
-
- return ($addr || undef,
- $port || undef,
- $proto || undef
- );
-}
-
-sub _error {
- my $sock = shift;
- my $err = shift;
- {
- local($!);
- my $title = ref($sock).": ";
- $@ = join("", $_[0] =~ /^$title/ ? "" : $title, @_);
- close($sock)
- if(defined fileno($sock));
- }
- $! = $err;
- return undef;
-}
-
-sub _get_addr {
- my($sock,$addr_str, $multi) = @_;
- my @addr;
- if ($multi && $addr_str !~ /^\d+(?:\.\d+){3}$/) {
- (undef, undef, undef, undef, @addr) = gethostbyname($addr_str);
- } else {
- my $h = inet_aton($addr_str);
- push(@addr, $h) if defined $h;
- }
- @addr;
-}
-
-sub configure {
- my($sock,$arg) = @_;
- my($lport,$rport,$laddr,$raddr,$proto,$type);
-
-
- $arg->{LocalAddr} = $arg->{LocalHost}
- if exists $arg->{LocalHost} && !exists $arg->{LocalAddr};
-
- ($laddr,$lport,$proto) = _sock_info($arg->{LocalAddr},
- $arg->{LocalPort},
- $arg->{Proto})
- or return _error($sock, $!, $@);
-
- $laddr = defined $laddr ? inet_aton($laddr)
- : INADDR_ANY;
-
- return _error($sock, $EINVAL, "Bad hostname '",$arg->{LocalAddr},"'")
- unless(defined $laddr);
-
- $arg->{PeerAddr} = $arg->{PeerHost}
- if exists $arg->{PeerHost} && !exists $arg->{PeerAddr};
-
- unless(exists $arg->{Listen}) {
- ($raddr,$rport,$proto) = _sock_info($arg->{PeerAddr},
- $arg->{PeerPort},
- $proto)
- or return _error($sock, $!, $@);
- }
-
- $proto ||= (getprotobyname('tcp'))[2];
-
- my $pname = (getprotobynumber($proto))[0];
- $type = $arg->{Type} || $socket_type{lc $pname};
-
- my @raddr = ();
-
- if(defined $raddr) {
- @raddr = $sock->_get_addr($raddr, $arg->{MultiHomed});
- return _error($sock, $EINVAL, "Bad hostname '",$arg->{PeerAddr},"'")
- unless @raddr;
- }
-
- while(1) {
-
- $sock->socket(AF_INET, $type, $proto) or
- return _error($sock, $!, "$!");
-
- if (defined $arg->{Blocking}) {
- defined $sock->blocking($arg->{Blocking})
- or return _error($sock, $!, "$!");
- }
-
- if ($arg->{Reuse} || $arg->{ReuseAddr}) {
- $sock->sockopt(SO_REUSEADDR,1) or
- return _error($sock, $!, "$!");
- }
-
- if ($arg->{ReusePort}) {
- $sock->sockopt(SO_REUSEPORT,1) or
- return _error($sock, $!, "$!");
- }
-
- if ($arg->{Broadcast}) {
- $sock->sockopt(SO_BROADCAST,1) or
- return _error($sock, $!, "$!");
- }
-
- if($lport || ($laddr ne INADDR_ANY) || exists $arg->{Listen}) {
- $sock->bind($lport || 0, $laddr) or
- return _error($sock, $!, "$!");
- }
-
- if(exists $arg->{Listen}) {
- $sock->listen($arg->{Listen} || 5) or
- return _error($sock, $!, "$!");
- last;
- }
-
- # don't try to connect unless we're given a PeerAddr
- last unless exists($arg->{PeerAddr});
-
- $raddr = shift @raddr;
-
- return _error($sock, $EINVAL, 'Cannot determine remote port')
- unless($rport || $type == SOCK_DGRAM || $type == SOCK_RAW);
-
- last
- unless($type == SOCK_STREAM || defined $raddr);
-
- return _error($sock, $EINVAL, "Bad hostname '",$arg->{PeerAddr},"'")
- unless defined $raddr;
-
-# my $timeout = ${*$sock}{'io_socket_timeout'};
-# my $before = time() if $timeout;
-
- undef $@;
- if ($sock->connect(pack_sockaddr_in($rport, $raddr))) {
-# ${*$sock}{'io_socket_timeout'} = $timeout;
- return $sock;
- }
-
- return _error($sock, $!, $@ || "Timeout")
- unless @raddr;
-
-# if ($timeout) {
-# my $new_timeout = $timeout - (time() - $before);
-# return _error($sock,
-# (exists(&Errno::ETIMEDOUT) ? Errno::ETIMEDOUT() : $EINVAL),
-# "Timeout") if $new_timeout <= 0;
-# ${*$sock}{'io_socket_timeout'} = $new_timeout;
-# }
-
- }
-
- $sock;
-}
-
-sub connect {
- @_ == 2 || @_ == 3 or
- croak 'usage: $sock->connect(NAME) or $sock->connect(PORT, ADDR)';
- my $sock = shift;
- return $sock->SUPER::connect(@_ == 1 ? shift : pack_sockaddr_in(@_));
-}
-
-sub bind {
- @_ == 2 || @_ == 3 or
- croak 'usage: $sock->bind(NAME) or $sock->bind(PORT, ADDR)';
- my $sock = shift;
- return $sock->SUPER::bind(@_ == 1 ? shift : pack_sockaddr_in(@_))
-}
-
-sub sockaddr {
- @_ == 1 or croak 'usage: $sock->sockaddr()';
- my($sock) = @_;
- my $name = $sock->sockname;
- $name ? (sockaddr_in($name))[1] : undef;
-}
-
-sub sockport {
- @_ == 1 or croak 'usage: $sock->sockport()';
- my($sock) = @_;
- my $name = $sock->sockname;
- $name ? (sockaddr_in($name))[0] : undef;
-}
-
-sub sockhost {
- @_ == 1 or croak 'usage: $sock->sockhost()';
- my($sock) = @_;
- my $addr = $sock->sockaddr;
- $addr ? inet_ntoa($addr) : undef;
-}
-
-sub peeraddr {
- @_ == 1 or croak 'usage: $sock->peeraddr()';
- my($sock) = @_;
- my $name = $sock->peername;
- $name ? (sockaddr_in($name))[1] : undef;
-}
-
-sub peerport {
- @_ == 1 or croak 'usage: $sock->peerport()';
- my($sock) = @_;
- my $name = $sock->peername;
- $name ? (sockaddr_in($name))[0] : undef;
-}
-
-sub peerhost {
- @_ == 1 or croak 'usage: $sock->peerhost()';
- my($sock) = @_;
- my $addr = $sock->peeraddr;
- $addr ? inet_ntoa($addr) : undef;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-IO::Socket::INET - Object interface for AF_INET domain sockets
-
-=head1 SYNOPSIS
-
- use IO::Socket::INET;
-
-=head1 DESCRIPTION
-
-C<IO::Socket::INET> provides an object interface to creating and using sockets
-in the AF_INET domain. It is built upon the L<IO::Socket> interface and
-inherits all the methods defined by L<IO::Socket>.
-
-=head1 CONSTRUCTOR
-
-=over 4
-
-=item new ( [ARGS] )
-
-Creates an C<IO::Socket::INET> object, which is a reference to a
-newly created symbol (see the C<Symbol> package). C<new>
-optionally takes arguments, these arguments are in key-value pairs.
-
-In addition to the key-value pairs accepted by L<IO::Socket>,
-C<IO::Socket::INET> provides.
-
-
- PeerAddr Remote host address <hostname>[:<port>]
- PeerHost Synonym for PeerAddr
- PeerPort Remote port or service <service>[(<no>)] | <no>
- LocalAddr Local host bind address hostname[:port]
- LocalHost Synonym for LocalAddr
- LocalPort Local host bind port <service>[(<no>)] | <no>
- Proto Protocol name (or number) "tcp" | "udp" | ...
- Type Socket type SOCK_STREAM | SOCK_DGRAM | ...
- Listen Queue size for listen
- ReuseAddr Set SO_REUSEADDR before binding
- Reuse Set SO_REUSEADDR before binding (deprecated, prefer ReuseAddr)
- ReusePort Set SO_REUSEPORT before binding
- Broadcast Set SO_BROADCAST before binding
- Timeout Timeout value for various operations
- MultiHomed Try all addresses for multi-homed hosts
- Blocking Determine if connection will be blocking mode
-
-If C<Listen> is defined then a listen socket is created, else if the
-socket type, which is derived from the protocol, is SOCK_STREAM then
-connect() is called.
-
-Although it is not illegal, the use of C<MultiHomed> on a socket
-which is in non-blocking mode is of little use. This is because the
-first connect will never fail with a timeout as the connect call
-will not block.
-
-The C<PeerAddr> can be a hostname or the IP-address on the
-"xx.xx.xx.xx" form. The C<PeerPort> can be a number or a symbolic
-service name. The service name might be followed by a number in
-parenthesis which is used if the service is not known by the system.
-The C<PeerPort> specification can also be embedded in the C<PeerAddr>
-by preceding it with a ":".
-
-If C<Proto> is not given and you specify a symbolic C<PeerPort> port,
-then the constructor will try to derive C<Proto> from the service
-name. As a last resort C<Proto> "tcp" is assumed. The C<Type>
-parameter will be deduced from C<Proto> if not specified.
-
-If the constructor is only passed a single argument, it is assumed to
-be a C<PeerAddr> specification.
-
-If C<Blocking> is set to 0, the connection will be in nonblocking mode.
-If not specified it defaults to 1 (blocking mode).
-
-Examples:
-
- $sock = IO::Socket::INET->new(PeerAddr => 'www.perl.org',
- PeerPort => 'http(80)',
- Proto => 'tcp');
-
- $sock = IO::Socket::INET->new(PeerAddr => 'localhost:smtp(25)');
-
- $sock = IO::Socket::INET->new(Listen => 5,
- LocalAddr => 'localhost',
- LocalPort => 9000,
- Proto => 'tcp');
-
- $sock = IO::Socket::INET->new('127.0.0.1:25');
-
- $sock = IO::Socket::INET->new(PeerPort => 9999,
- PeerAddr => inet_ntoa(INADDR_BROADCAST),
- Proto => udp,
- LocalAddr => 'localhost',
- Broadcast => 1 )
- or die "Can't bind : $@\n";
-
- NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
-
-As of VERSION 1.18 all IO::Socket objects have autoflush turned on
-by default. This was not the case with earlier releases.
-
- NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
-
-=back
-
-=head2 METHODS
-
-=over 4
-
-=item sockaddr ()
-
-Return the address part of the sockaddr structure for the socket
-
-=item sockport ()
-
-Return the port number that the socket is using on the local host
-
-=item sockhost ()
-
-Return the address part of the sockaddr structure for the socket in a
-text form xx.xx.xx.xx
-
-=item peeraddr ()
-
-Return the address part of the sockaddr structure for the socket on
-the peer host
-
-=item peerport ()
-
-Return the port number for the socket on the peer host.
-
-=item peerhost ()
-
-Return the address part of the sockaddr structure for the socket on the
-peer host in a text form xx.xx.xx.xx
-
-=back
-
-=head1 SEE ALSO
-
-L<Socket>, L<IO::Socket>
-
-=head1 AUTHOR
-
-Graham Barr. Currently maintained by the Perl Porters. Please report all
-bugs to <perl5-porters@perl.org>.
-
-=head1 COPYRIGHT
-
-Copyright (c) 1996-8 Graham Barr <gbarr@pobox.com>. All rights reserved.
-This program is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/IO/Socket/UNIX.pm b/Master/tlpkg/tlperl/lib/IO/Socket/UNIX.pm
deleted file mode 100644
index 952a0f41f0c..00000000000
--- a/Master/tlpkg/tlperl/lib/IO/Socket/UNIX.pm
+++ /dev/null
@@ -1,144 +0,0 @@
-# IO::Socket::UNIX.pm
-#
-# Copyright (c) 1997-8 Graham Barr <gbarr@pobox.com>. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-
-package IO::Socket::UNIX;
-
-use strict;
-our(@ISA, $VERSION);
-use IO::Socket;
-use Socket;
-use Carp;
-
-@ISA = qw(IO::Socket);
-$VERSION = "1.22";
-$VERSION = eval $VERSION;
-
-IO::Socket::UNIX->register_domain( AF_UNIX );
-
-sub new {
- my $class = shift;
- unshift(@_, "Peer") if @_ == 1;
- return $class->SUPER::new(@_);
-}
-
-sub configure {
- my($sock,$arg) = @_;
- my($bport,$cport);
-
- my $type = $arg->{Type} || SOCK_STREAM;
-
- $sock->socket(AF_UNIX, $type, 0) or
- return undef;
-
- if(exists $arg->{Local}) {
- my $addr = sockaddr_un($arg->{Local});
- $sock->bind($addr) or
- return undef;
- }
- if(exists $arg->{Listen} && $type != SOCK_DGRAM) {
- $sock->listen($arg->{Listen} || 5) or
- return undef;
- }
- elsif(exists $arg->{Peer}) {
- my $addr = sockaddr_un($arg->{Peer});
- $sock->connect($addr) or
- return undef;
- }
-
- $sock;
-}
-
-sub hostpath {
- @_ == 1 or croak 'usage: $sock->hostpath()';
- my $n = $_[0]->sockname || return undef;
- (sockaddr_un($n))[0];
-}
-
-sub peerpath {
- @_ == 1 or croak 'usage: $sock->peerpath()';
- my $n = $_[0]->peername || return undef;
- (sockaddr_un($n))[0];
-}
-
-1; # Keep require happy
-
-__END__
-
-=head1 NAME
-
-IO::Socket::UNIX - Object interface for AF_UNIX domain sockets
-
-=head1 SYNOPSIS
-
- use IO::Socket::UNIX;
-
-=head1 DESCRIPTION
-
-C<IO::Socket::UNIX> provides an object interface to creating and using sockets
-in the AF_UNIX domain. It is built upon the L<IO::Socket> interface and
-inherits all the methods defined by L<IO::Socket>.
-
-=head1 CONSTRUCTOR
-
-=over 4
-
-=item new ( [ARGS] )
-
-Creates an C<IO::Socket::UNIX> object, which is a reference to a
-newly created symbol (see the C<Symbol> package). C<new>
-optionally takes arguments, these arguments are in key-value pairs.
-
-In addition to the key-value pairs accepted by L<IO::Socket>,
-C<IO::Socket::UNIX> provides.
-
- Type Type of socket (eg SOCK_STREAM or SOCK_DGRAM)
- Local Path to local fifo
- Peer Path to peer fifo
- Listen Create a listen socket
-
-If the constructor is only passed a single argument, it is assumed to
-be a C<Peer> specification.
-
-
- NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
-
-As of VERSION 1.18 all IO::Socket objects have autoflush turned on
-by default. This was not the case with earlier releases.
-
- NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
-
-=back
-
-=head1 METHODS
-
-=over 4
-
-=item hostpath()
-
-Returns the pathname to the fifo at the local end
-
-=item peerpath()
-
-Returns the pathanme to the fifo at the peer end
-
-=back
-
-=head1 SEE ALSO
-
-L<Socket>, L<IO::Socket>
-
-=head1 AUTHOR
-
-Graham Barr. Currently maintained by the Perl Porters. Please report all
-bugs to <perl5-porters@perl.org>.
-
-=head1 COPYRIGHT
-
-Copyright (c) 1996-8 Graham Barr <gbarr@pobox.com>. All rights reserved.
-This program is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/IO/String.pm b/Master/tlpkg/tlperl/lib/IO/String.pm
deleted file mode 100755
index 4bc8e719601..00000000000
--- a/Master/tlpkg/tlperl/lib/IO/String.pm
+++ /dev/null
@@ -1,551 +0,0 @@
-package IO::String;
-
-# Copyright 1998-2005 Gisle Aas.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-
-require 5.005_03;
-use strict;
-use vars qw($VERSION $DEBUG $IO_CONSTANTS);
-$VERSION = "1.08"; # $Date: 2005/12/05 12:00:47 $
-
-use Symbol ();
-
-sub new
-{
- my $class = shift;
- my $self = bless Symbol::gensym(), ref($class) || $class;
- tie *$self, $self;
- $self->open(@_);
- return $self;
-}
-
-sub open
-{
- my $self = shift;
- return $self->new(@_) unless ref($self);
-
- if (@_) {
- my $bufref = ref($_[0]) ? $_[0] : \$_[0];
- $$bufref = "" unless defined $$bufref;
- *$self->{buf} = $bufref;
- }
- else {
- my $buf = "";
- *$self->{buf} = \$buf;
- }
- *$self->{pos} = 0;
- *$self->{lno} = 0;
- return $self;
-}
-
-sub pad
-{
- my $self = shift;
- my $old = *$self->{pad};
- *$self->{pad} = substr($_[0], 0, 1) if @_;
- return "\0" unless defined($old) && length($old);
- return $old;
-}
-
-sub dump
-{
- require Data::Dumper;
- my $self = shift;
- print Data::Dumper->Dump([$self], ['*self']);
- print Data::Dumper->Dump([*$self{HASH}], ['$self{HASH}']);
- return;
-}
-
-sub TIEHANDLE
-{
- print "TIEHANDLE @_\n" if $DEBUG;
- return $_[0] if ref($_[0]);
- my $class = shift;
- my $self = bless Symbol::gensym(), $class;
- $self->open(@_);
- return $self;
-}
-
-sub DESTROY
-{
- print "DESTROY @_\n" if $DEBUG;
-}
-
-sub close
-{
- my $self = shift;
- delete *$self->{buf};
- delete *$self->{pos};
- delete *$self->{lno};
- undef *$self if $] eq "5.008"; # workaround for some bug
- return 1;
-}
-
-sub opened
-{
- my $self = shift;
- return defined *$self->{buf};
-}
-
-sub binmode
-{
- my $self = shift;
- return 1 unless @_;
- # XXX don't know much about layers yet :-(
- return 0;
-}
-
-sub getc
-{
- my $self = shift;
- my $buf;
- return $buf if $self->read($buf, 1);
- return undef;
-}
-
-sub ungetc
-{
- my $self = shift;
- $self->setpos($self->getpos() - 1);
- return 1;
-}
-
-sub eof
-{
- my $self = shift;
- return length(${*$self->{buf}}) <= *$self->{pos};
-}
-
-sub print
-{
- my $self = shift;
- if (defined $\) {
- if (defined $,) {
- $self->write(join($,, @_).$\);
- }
- else {
- $self->write(join("",@_).$\);
- }
- }
- else {
- if (defined $,) {
- $self->write(join($,, @_));
- }
- else {
- $self->write(join("",@_));
- }
- }
- return 1;
-}
-*printflush = \*print;
-
-sub printf
-{
- my $self = shift;
- print "PRINTF(@_)\n" if $DEBUG;
- my $fmt = shift;
- $self->write(sprintf($fmt, @_));
- return 1;
-}
-
-
-my($SEEK_SET, $SEEK_CUR, $SEEK_END);
-
-sub _init_seek_constants
-{
- if ($IO_CONSTANTS) {
- require IO::Handle;
- $SEEK_SET = &IO::Handle::SEEK_SET;
- $SEEK_CUR = &IO::Handle::SEEK_CUR;
- $SEEK_END = &IO::Handle::SEEK_END;
- }
- else {
- $SEEK_SET = 0;
- $SEEK_CUR = 1;
- $SEEK_END = 2;
- }
-}
-
-
-sub seek
-{
- my($self,$off,$whence) = @_;
- my $buf = *$self->{buf} || return 0;
- my $len = length($$buf);
- my $pos = *$self->{pos};
-
- _init_seek_constants() unless defined $SEEK_SET;
-
- if ($whence == $SEEK_SET) { $pos = $off }
- elsif ($whence == $SEEK_CUR) { $pos += $off }
- elsif ($whence == $SEEK_END) { $pos = $len + $off }
- else { die "Bad whence ($whence)" }
- print "SEEK(POS=$pos,OFF=$off,LEN=$len)\n" if $DEBUG;
-
- $pos = 0 if $pos < 0;
- $self->truncate($pos) if $pos > $len; # extend file
- *$self->{pos} = $pos;
- return 1;
-}
-
-sub pos
-{
- my $self = shift;
- my $old = *$self->{pos};
- if (@_) {
- my $pos = shift || 0;
- my $buf = *$self->{buf};
- my $len = $buf ? length($$buf) : 0;
- $pos = $len if $pos > $len;
- *$self->{pos} = $pos;
- }
- return $old;
-}
-
-sub getpos { shift->pos; }
-
-*sysseek = \&seek;
-*setpos = \&pos;
-*tell = \&getpos;
-
-
-
-sub getline
-{
- my $self = shift;
- my $buf = *$self->{buf} || return;
- my $len = length($$buf);
- my $pos = *$self->{pos};
- return if $pos >= $len;
-
- unless (defined $/) { # slurp
- *$self->{pos} = $len;
- return substr($$buf, $pos);
- }
-
- unless (length $/) { # paragraph mode
- # XXX slow&lazy implementation using getc()
- my $para = "";
- my $eol = 0;
- my $c;
- while (defined($c = $self->getc)) {
- if ($c eq "\n") {
- $eol++;
- next if $eol > 2;
- }
- elsif ($eol > 1) {
- $self->ungetc($c);
- last;
- }
- else {
- $eol = 0;
- }
- $para .= $c;
- }
- return $para; # XXX wantarray
- }
-
- my $idx = index($$buf,$/,$pos);
- if ($idx < 0) {
- # return rest of it
- *$self->{pos} = $len;
- $. = ++ *$self->{lno};
- return substr($$buf, $pos);
- }
- $len = $idx - $pos + length($/);
- *$self->{pos} += $len;
- $. = ++ *$self->{lno};
- return substr($$buf, $pos, $len);
-}
-
-sub getlines
-{
- die "getlines() called in scalar context\n" unless wantarray;
- my $self = shift;
- my($line, @lines);
- push(@lines, $line) while defined($line = $self->getline);
- return @lines;
-}
-
-sub READLINE
-{
- goto &getlines if wantarray;
- goto &getline;
-}
-
-sub input_line_number
-{
- my $self = shift;
- my $old = *$self->{lno};
- *$self->{lno} = shift if @_;
- return $old;
-}
-
-sub truncate
-{
- my $self = shift;
- my $len = shift || 0;
- my $buf = *$self->{buf};
- if (length($$buf) >= $len) {
- substr($$buf, $len) = '';
- *$self->{pos} = $len if $len < *$self->{pos};
- }
- else {
- $$buf .= ($self->pad x ($len - length($$buf)));
- }
- return 1;
-}
-
-sub read
-{
- my $self = shift;
- my $buf = *$self->{buf};
- return undef unless $buf;
-
- my $pos = *$self->{pos};
- my $rem = length($$buf) - $pos;
- my $len = $_[1];
- $len = $rem if $len > $rem;
- return undef if $len < 0;
- if (@_ > 2) { # read offset
- substr($_[0],$_[2]) = substr($$buf, $pos, $len);
- }
- else {
- $_[0] = substr($$buf, $pos, $len);
- }
- *$self->{pos} += $len;
- return $len;
-}
-
-sub write
-{
- my $self = shift;
- my $buf = *$self->{buf};
- return unless $buf;
-
- my $pos = *$self->{pos};
- my $slen = length($_[0]);
- my $len = $slen;
- my $off = 0;
- if (@_ > 1) {
- $len = $_[1] if $_[1] < $len;
- if (@_ > 2) {
- $off = $_[2] || 0;
- die "Offset outside string" if $off > $slen;
- if ($off < 0) {
- $off += $slen;
- die "Offset outside string" if $off < 0;
- }
- my $rem = $slen - $off;
- $len = $rem if $rem < $len;
- }
- }
- substr($$buf, $pos, $len) = substr($_[0], $off, $len);
- *$self->{pos} += $len;
- return $len;
-}
-
-*sysread = \&read;
-*syswrite = \&write;
-
-sub stat
-{
- my $self = shift;
- return unless $self->opened;
- return 1 unless wantarray;
- my $len = length ${*$self->{buf}};
-
- return (
- undef, undef, # dev, ino
- 0666, # filemode
- 1, # links
- $>, # user id
- $), # group id
- undef, # device id
- $len, # size
- undef, # atime
- undef, # mtime
- undef, # ctime
- 512, # blksize
- int(($len+511)/512) # blocks
- );
-}
-
-sub FILENO {
- return undef; # XXX perlfunc says this means the file is closed
-}
-
-sub blocking {
- my $self = shift;
- my $old = *$self->{blocking} || 0;
- *$self->{blocking} = shift if @_;
- return $old;
-}
-
-my $notmuch = sub { return };
-
-*fileno = $notmuch;
-*error = $notmuch;
-*clearerr = $notmuch;
-*sync = $notmuch;
-*flush = $notmuch;
-*setbuf = $notmuch;
-*setvbuf = $notmuch;
-
-*untaint = $notmuch;
-*autoflush = $notmuch;
-*fcntl = $notmuch;
-*ioctl = $notmuch;
-
-*GETC = \&getc;
-*PRINT = \&print;
-*PRINTF = \&printf;
-*READ = \&read;
-*WRITE = \&write;
-*SEEK = \&seek;
-*TELL = \&getpos;
-*EOF = \&eof;
-*CLOSE = \&close;
-*BINMODE = \&binmode;
-
-
-sub string_ref
-{
- my $self = shift;
- return *$self->{buf};
-}
-*sref = \&string_ref;
-
-1;
-
-__END__
-
-=head1 NAME
-
-IO::String - Emulate file interface for in-core strings
-
-=head1 SYNOPSIS
-
- use IO::String;
- $io = IO::String->new;
- $io = IO::String->new($var);
- tie *IO, 'IO::String';
-
- # read data
- <$io>;
- $io->getline;
- read($io, $buf, 100);
-
- # write data
- print $io "string\n";
- $io->print(@data);
- syswrite($io, $buf, 100);
-
- select $io;
- printf "Some text %s\n", $str;
-
- # seek
- $pos = $io->getpos;
- $io->setpos(0); # rewind
- $io->seek(-30, -1);
- seek($io, 0, 0);
-
-=head1 DESCRIPTION
-
-The C<IO::String> module provides the C<IO::File> interface for in-core
-strings. An C<IO::String> object can be attached to a string, and
-makes it possible to use the normal file operations for reading or
-writing data, as well as for seeking to various locations of the string.
-This is useful when you want to use a library module that only
-provides an interface to file handles on data that you have in a string
-variable.
-
-Note that perl-5.8 and better has built-in support for "in memory"
-files, which are set up by passing a reference instead of a filename
-to the open() call. The reason for using this module is that it
-makes the code backwards compatible with older versions of Perl.
-
-The C<IO::String> module provides an interface compatible with
-C<IO::File> as distributed with F<IO-1.20>, but the following methods
-are not available: new_from_fd, fdopen, format_write,
-format_page_number, format_lines_per_page, format_lines_left,
-format_name, format_top_name.
-
-The following methods are specific to the C<IO::String> class:
-
-=over 4
-
-=item $io = IO::String->new
-
-=item $io = IO::String->new( $string )
-
-The constructor returns a newly-created C<IO::String> object. It
-takes an optional argument, which is the string to read from or write
-into. If no $string argument is given, then an internal buffer
-(initially empty) is allocated.
-
-The C<IO::String> object returned is tied to itself. This means
-that you can use most Perl I/O built-ins on it too: readline, <>, getc,
-print, printf, syswrite, sysread, close.
-
-=item $io->open
-
-=item $io->open( $string )
-
-Attaches an existing IO::String object to some other $string, or
-allocates a new internal buffer (if no argument is given). The
-position is reset to 0.
-
-=item $io->string_ref
-
-Returns a reference to the string that is attached to
-the C<IO::String> object. Most useful when you let the C<IO::String>
-create an internal buffer to write into.
-
-=item $io->pad
-
-=item $io->pad( $char )
-
-Specifies the padding to use if
-the string is extended by either the seek() or truncate() methods. It
-is a single character and defaults to "\0".
-
-=item $io->pos
-
-=item $io->pos( $newpos )
-
-Yet another interface for reading and setting the current read/write
-position within the string (the normal getpos/setpos/tell/seek
-methods are also available). The pos() method always returns the
-old position, and if you pass it an argument it sets the new
-position.
-
-There is (deliberately) a difference between the setpos() and seek()
-methods in that seek() extends the string (with the specified
-padding) if you go to a location past the end, whereas setpos()
-just snaps back to the end. If truncate() is used to extend the string,
-then it works as seek().
-
-=back
-
-=head1 BUGS
-
-In Perl versions < 5.6, the TIEHANDLE interface was incomplete.
-If you use such a Perl, then seek(), tell(), eof(), fileno(), binmode() will
-not do anything on an C<IO::String> handle. See L<perltie> for
-details.
-
-=head1 SEE ALSO
-
-L<IO::File>, L<IO::Stringy>, L<perlfunc/open>
-
-=head1 COPYRIGHT
-
-Copyright 1998-2005 Gisle Aas.
-
-This library is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/List/Util.pm b/Master/tlpkg/tlperl/lib/List/Util.pm
deleted file mode 100644
index cfe31f70123..00000000000
--- a/Master/tlpkg/tlperl/lib/List/Util.pm
+++ /dev/null
@@ -1,277 +0,0 @@
-# List::Util.pm
-#
-# Copyright (c) 1997-2005 Graham Barr <gbarr@pobox.com>. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-
-package List::Util;
-
-use strict;
-use vars qw(@ISA @EXPORT_OK $VERSION $XS_VERSION $TESTING_PERL_ONLY);
-require Exporter;
-
-@ISA = qw(Exporter);
-@EXPORT_OK = qw(first min max minstr maxstr reduce sum shuffle);
-$VERSION = "1.18";
-$XS_VERSION = $VERSION;
-$VERSION = eval $VERSION;
-
-eval {
- # PERL_DL_NONLAZY must be false, or any errors in loading will just
- # cause the perl code to be tested
- local $ENV{PERL_DL_NONLAZY} = 0 if $ENV{PERL_DL_NONLAZY};
- eval {
- require XSLoader;
- XSLoader::load('List::Util', $XS_VERSION);
- 1;
- } or do {
- require DynaLoader;
- local @ISA = qw(DynaLoader);
- bootstrap List::Util $XS_VERSION;
- };
-} unless $TESTING_PERL_ONLY;
-
-
-# This code is only compiled if the XS did not load
-# of for perl < 5.6.0
-
-if (!defined &reduce) {
-eval <<'ESQ'
-
-sub reduce (&@) {
- my $code = shift;
- no strict 'refs';
-
- return shift unless @_ > 1;
-
- use vars qw($a $b);
-
- my $caller = caller;
- local(*{$caller."::a"}) = \my $a;
- local(*{$caller."::b"}) = \my $b;
-
- $a = shift;
- foreach (@_) {
- $b = $_;
- $a = &{$code}();
- }
-
- $a;
-}
-
-sub first (&@) {
- my $code = shift;
-
- foreach (@_) {
- return $_ if &{$code}();
- }
-
- undef;
-}
-
-ESQ
-}
-
-# This code is only compiled if the XS did not load
-eval <<'ESQ' if !defined &sum;
-
-use vars qw($a $b);
-
-sub sum (@) { reduce { $a + $b } @_ }
-
-sub min (@) { reduce { $a < $b ? $a : $b } @_ }
-
-sub max (@) { reduce { $a > $b ? $a : $b } @_ }
-
-sub minstr (@) { reduce { $a lt $b ? $a : $b } @_ }
-
-sub maxstr (@) { reduce { $a gt $b ? $a : $b } @_ }
-
-sub shuffle (@) {
- my @a=\(@_);
- my $n;
- my $i=@_;
- map {
- $n = rand($i--);
- (${$a[$n]}, $a[$n] = $a[$i])[0];
- } @_;
-}
-
-ESQ
-
-1;
-
-__END__
-
-=head1 NAME
-
-List::Util - A selection of general-utility list subroutines
-
-=head1 SYNOPSIS
-
- use List::Util qw(first max maxstr min minstr reduce shuffle sum);
-
-=head1 DESCRIPTION
-
-C<List::Util> contains a selection of subroutines that people have
-expressed would be nice to have in the perl core, but the usage would
-not really be high enough to warrant the use of a keyword, and the size
-so small such that being individual extensions would be wasteful.
-
-By default C<List::Util> does not export any subroutines. The
-subroutines defined are
-
-=over 4
-
-=item first BLOCK LIST
-
-Similar to C<grep> in that it evaluates BLOCK setting C<$_> to each element
-of LIST in turn. C<first> returns the first element where the result from
-BLOCK is a true value. If BLOCK never returns true or LIST was empty then
-C<undef> is returned.
-
- $foo = first { defined($_) } @list # first defined value in @list
- $foo = first { $_ > $value } @list # first value in @list which
- # is greater than $value
-
-This function could be implemented using C<reduce> like this
-
- $foo = reduce { defined($a) ? $a : wanted($b) ? $b : undef } undef, @list
-
-for example wanted() could be defined() which would return the first
-defined value in @list
-
-=item max LIST
-
-Returns the entry in the list with the highest numerical value. If the
-list is empty then C<undef> is returned.
-
- $foo = max 1..10 # 10
- $foo = max 3,9,12 # 12
- $foo = max @bar, @baz # whatever
-
-This function could be implemented using C<reduce> like this
-
- $foo = reduce { $a > $b ? $a : $b } 1..10
-
-=item maxstr LIST
-
-Similar to C<max>, but treats all the entries in the list as strings
-and returns the highest string as defined by the C<gt> operator.
-If the list is empty then C<undef> is returned.
-
- $foo = maxstr 'A'..'Z' # 'Z'
- $foo = maxstr "hello","world" # "world"
- $foo = maxstr @bar, @baz # whatever
-
-This function could be implemented using C<reduce> like this
-
- $foo = reduce { $a gt $b ? $a : $b } 'A'..'Z'
-
-=item min LIST
-
-Similar to C<max> but returns the entry in the list with the lowest
-numerical value. If the list is empty then C<undef> is returned.
-
- $foo = min 1..10 # 1
- $foo = min 3,9,12 # 3
- $foo = min @bar, @baz # whatever
-
-This function could be implemented using C<reduce> like this
-
- $foo = reduce { $a < $b ? $a : $b } 1..10
-
-=item minstr LIST
-
-Similar to C<min>, but treats all the entries in the list as strings
-and returns the lowest string as defined by the C<lt> operator.
-If the list is empty then C<undef> is returned.
-
- $foo = minstr 'A'..'Z' # 'A'
- $foo = minstr "hello","world" # "hello"
- $foo = minstr @bar, @baz # whatever
-
-This function could be implemented using C<reduce> like this
-
- $foo = reduce { $a lt $b ? $a : $b } 'A'..'Z'
-
-=item reduce BLOCK LIST
-
-Reduces LIST by calling BLOCK multiple times, setting C<$a> and C<$b>
-each time. The first call will be with C<$a> and C<$b> set to the first
-two elements of the list, subsequent calls will be done by
-setting C<$a> to the result of the previous call and C<$b> to the next
-element in the list.
-
-Returns the result of the last call to BLOCK. If LIST is empty then
-C<undef> is returned. If LIST only contains one element then that
-element is returned and BLOCK is not executed.
-
- $foo = reduce { $a < $b ? $a : $b } 1..10 # min
- $foo = reduce { $a lt $b ? $a : $b } 'aa'..'zz' # minstr
- $foo = reduce { $a + $b } 1 .. 10 # sum
- $foo = reduce { $a . $b } @bar # concat
-
-=item shuffle LIST
-
-Returns the elements of LIST in a random order
-
- @cards = shuffle 0..51 # 0..51 in a random order
-
-=item sum LIST
-
-Returns the sum of all the elements in LIST. If LIST is empty then
-C<undef> is returned.
-
- $foo = sum 1..10 # 55
- $foo = sum 3,9,12 # 24
- $foo = sum @bar, @baz # whatever
-
-This function could be implemented using C<reduce> like this
-
- $foo = reduce { $a + $b } 1..10
-
-=back
-
-=head1 KNOWN BUGS
-
-With perl versions prior to 5.005 there are some cases where reduce
-will return an incorrect result. This will show up as test 7 of
-reduce.t failing.
-
-=head1 SUGGESTED ADDITIONS
-
-The following are additions that have been requested, but I have been reluctant
-to add due to them being very simple to implement in perl
-
- # One argument is true
-
- sub any { $_ && return 1 for @_; 0 }
-
- # All arguments are true
-
- sub all { $_ || return 0 for @_; 1 }
-
- # All arguments are false
-
- sub none { $_ && return 0 for @_; 1 }
-
- # One argument is false
-
- sub notall { $_ || return 1 for @_; 0 }
-
- # How many elements are true
-
- sub true { scalar grep { $_ } @_ }
-
- # How many elements are false
-
- sub false { scalar grep { !$_ } @_ }
-
-=head1 COPYRIGHT
-
-Copyright (c) 1997-2005 Graham Barr <gbarr@pobox.com>. All rights reserved.
-This program is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Opcode.pm b/Master/tlpkg/tlperl/lib/Opcode.pm
deleted file mode 100644
index 2987b9952e0..00000000000
--- a/Master/tlpkg/tlperl/lib/Opcode.pm
+++ /dev/null
@@ -1,578 +0,0 @@
-package Opcode;
-
-use 5.006_001;
-
-use strict;
-
-our($VERSION, $XS_VERSION, @ISA, @EXPORT_OK);
-
-$VERSION = "1.06";
-$XS_VERSION = "1.03";
-
-use Carp;
-use Exporter ();
-use XSLoader ();
-
-BEGIN {
- @ISA = qw(Exporter);
- @EXPORT_OK = qw(
- opset ops_to_opset
- opset_to_ops opset_to_hex invert_opset
- empty_opset full_opset
- opdesc opcodes opmask define_optag
- opmask_add verify_opset opdump
- );
-}
-
-sub opset (;@);
-sub opset_to_hex ($);
-sub opdump (;$);
-use subs @EXPORT_OK;
-
-XSLoader::load 'Opcode', $XS_VERSION;
-
-_init_optags();
-
-sub ops_to_opset { opset @_ } # alias for old name
-
-sub opset_to_hex ($) {
- return "(invalid opset)" unless verify_opset($_[0]);
- unpack("h*",$_[0]);
-}
-
-sub opdump (;$) {
- my $pat = shift;
- # handy utility: perl -MOpcode=opdump -e 'opdump File'
- foreach(opset_to_ops(full_opset)) {
- my $op = sprintf " %12s %s\n", $_, opdesc($_);
- next if defined $pat and $op !~ m/$pat/i;
- print $op;
- }
-}
-
-
-
-sub _init_optags {
- my(%all, %seen);
- @all{opset_to_ops(full_opset)} = (); # keys only
-
- local($_);
- local($/) = "\n=cut"; # skip to optags definition section
- <DATA>;
- $/ = "\n="; # now read in 'pod section' chunks
- while(<DATA>) {
- next unless m/^item\s+(:\w+)/;
- my $tag = $1;
-
- # Split into lines, keep only indented lines
- my @lines = grep { m/^\s/ } split(/\n/);
- foreach (@lines) { s/--.*// } # delete comments
- my @ops = map { split ' ' } @lines; # get op words
-
- foreach(@ops) {
- warn "$tag - $_ already tagged in $seen{$_}\n" if $seen{$_};
- $seen{$_} = $tag;
- delete $all{$_};
- }
- # opset will croak on invalid names
- define_optag($tag, opset(@ops));
- }
- close(DATA);
- warn "Untagged opnames: ".join(' ',keys %all)."\n" if %all;
-}
-
-
-1;
-
-__DATA__
-
-=head1 NAME
-
-Opcode - Disable named opcodes when compiling perl code
-
-=head1 SYNOPSIS
-
- use Opcode;
-
-
-=head1 DESCRIPTION
-
-Perl code is always compiled into an internal format before execution.
-
-Evaluating perl code (e.g. via "eval" or "do 'file'") causes
-the code to be compiled into an internal format and then,
-provided there was no error in the compilation, executed.
-The internal format is based on many distinct I<opcodes>.
-
-By default no opmask is in effect and any code can be compiled.
-
-The Opcode module allow you to define an I<operator mask> to be in
-effect when perl I<next> compiles any code. Attempting to compile code
-which contains a masked opcode will cause the compilation to fail
-with an error. The code will not be executed.
-
-=head1 NOTE
-
-The Opcode module is not usually used directly. See the ops pragma and
-Safe modules for more typical uses.
-
-=head1 WARNING
-
-The authors make B<no warranty>, implied or otherwise, about the
-suitability of this software for safety or security purposes.
-
-The authors shall not in any case be liable for special, incidental,
-consequential, indirect or other similar damages arising from the use
-of this software.
-
-Your mileage will vary. If in any doubt B<do not use it>.
-
-
-=head1 Operator Names and Operator Lists
-
-The canonical list of operator names is the contents of the array
-PL_op_name defined and initialised in file F<opcode.h> of the Perl
-source distribution (and installed into the perl library).
-
-Each operator has both a terse name (its opname) and a more verbose or
-recognisable descriptive name. The opdesc function can be used to
-return a list of descriptions for a list of operators.
-
-Many of the functions and methods listed below take a list of
-operators as parameters. Most operator lists can be made up of several
-types of element. Each element can be one of
-
-=over 8
-
-=item an operator name (opname)
-
-Operator names are typically small lowercase words like enterloop,
-leaveloop, last, next, redo etc. Sometimes they are rather cryptic
-like gv2cv, i_ncmp and ftsvtx.
-
-=item an operator tag name (optag)
-
-Operator tags can be used to refer to groups (or sets) of operators.
-Tag names always begin with a colon. The Opcode module defines several
-optags and the user can define others using the define_optag function.
-
-=item a negated opname or optag
-
-An opname or optag can be prefixed with an exclamation mark, e.g., !mkdir.
-Negating an opname or optag means remove the corresponding ops from the
-accumulated set of ops at that point.
-
-=item an operator set (opset)
-
-An I<opset> as a binary string of approximately 44 bytes which holds a
-set or zero or more operators.
-
-The opset and opset_to_ops functions can be used to convert from
-a list of operators to an opset and I<vice versa>.
-
-Wherever a list of operators can be given you can use one or more opsets.
-See also Manipulating Opsets below.
-
-=back
-
-
-=head1 Opcode Functions
-
-The Opcode package contains functions for manipulating operator names
-tags and sets. All are available for export by the package.
-
-=over 8
-
-=item opcodes
-
-In a scalar context opcodes returns the number of opcodes in this
-version of perl (around 350 for perl-5.7.0).
-
-In a list context it returns a list of all the operator names.
-(Not yet implemented, use @names = opset_to_ops(full_opset).)
-
-=item opset (OP, ...)
-
-Returns an opset containing the listed operators.
-
-=item opset_to_ops (OPSET)
-
-Returns a list of operator names corresponding to those operators in
-the set.
-
-=item opset_to_hex (OPSET)
-
-Returns a string representation of an opset. Can be handy for debugging.
-
-=item full_opset
-
-Returns an opset which includes all operators.
-
-=item empty_opset
-
-Returns an opset which contains no operators.
-
-=item invert_opset (OPSET)
-
-Returns an opset which is the inverse set of the one supplied.
-
-=item verify_opset (OPSET, ...)
-
-Returns true if the supplied opset looks like a valid opset (is the
-right length etc) otherwise it returns false. If an optional second
-parameter is true then verify_opset will croak on an invalid opset
-instead of returning false.
-
-Most of the other Opcode functions call verify_opset automatically
-and will croak if given an invalid opset.
-
-=item define_optag (OPTAG, OPSET)
-
-Define OPTAG as a symbolic name for OPSET. Optag names always start
-with a colon C<:>.
-
-The optag name used must not be defined already (define_optag will
-croak if it is already defined). Optag names are global to the perl
-process and optag definitions cannot be altered or deleted once
-defined.
-
-It is strongly recommended that applications using Opcode should use a
-leading capital letter on their tag names since lowercase names are
-reserved for use by the Opcode module. If using Opcode within a module
-you should prefix your tags names with the name of your module to
-ensure uniqueness and thus avoid clashes with other modules.
-
-=item opmask_add (OPSET)
-
-Adds the supplied opset to the current opmask. Note that there is
-currently I<no> mechanism for unmasking ops once they have been masked.
-This is intentional.
-
-=item opmask
-
-Returns an opset corresponding to the current opmask.
-
-=item opdesc (OP, ...)
-
-This takes a list of operator names and returns the corresponding list
-of operator descriptions.
-
-=item opdump (PAT)
-
-Dumps to STDOUT a two column list of op names and op descriptions.
-If an optional pattern is given then only lines which match the
-(case insensitive) pattern will be output.
-
-It's designed to be used as a handy command line utility:
-
- perl -MOpcode=opdump -e opdump
- perl -MOpcode=opdump -e 'opdump Eval'
-
-=back
-
-=head1 Manipulating Opsets
-
-Opsets may be manipulated using the perl bit vector operators & (and), | (or),
-^ (xor) and ~ (negate/invert).
-
-However you should never rely on the numerical position of any opcode
-within the opset. In other words both sides of a bit vector operator
-should be opsets returned from Opcode functions.
-
-Also, since the number of opcodes in your current version of perl might
-not be an exact multiple of eight, there may be unused bits in the last
-byte of an upset. This should not cause any problems (Opcode functions
-ignore those extra bits) but it does mean that using the ~ operator
-will typically not produce the same 'physical' opset 'string' as the
-invert_opset function.
-
-
-=head1 TO DO (maybe)
-
- $bool = opset_eq($opset1, $opset2) true if opsets are logically eqiv
-
- $yes = opset_can($opset, @ops) true if $opset has all @ops set
-
- @diff = opset_diff($opset1, $opset2) => ('foo', '!bar', ...)
-
-=cut
-
-# the =cut above is used by _init_optags() to get here quickly
-
-=head1 Predefined Opcode Tags
-
-=over 5
-
-=item :base_core
-
- null stub scalar pushmark wantarray const defined undef
-
- rv2sv sassign
-
- rv2av aassign aelem aelemfast aslice av2arylen
-
- rv2hv helem hslice each values keys exists delete
-
- preinc i_preinc predec i_predec postinc i_postinc postdec i_postdec
- int hex oct abs pow multiply i_multiply divide i_divide
- modulo i_modulo add i_add subtract i_subtract
-
- left_shift right_shift bit_and bit_xor bit_or negate i_negate
- not complement
-
- lt i_lt gt i_gt le i_le ge i_ge eq i_eq ne i_ne ncmp i_ncmp
- slt sgt sle sge seq sne scmp
-
- substr vec stringify study pos length index rindex ord chr
-
- ucfirst lcfirst uc lc quotemeta trans chop schop chomp schomp
-
- match split qr
-
- list lslice splice push pop shift unshift reverse
-
- cond_expr flip flop andassign orassign and or xor
-
- warn die lineseq nextstate scope enter leave setstate
-
- rv2cv anoncode prototype
-
- entersub leavesub leavesublv return method method_named -- XXX loops via recursion?
-
- leaveeval -- needed for Safe to operate, is safe without entereval
-
-=item :base_mem
-
-These memory related ops are not included in :base_core because they
-can easily be used to implement a resource attack (e.g., consume all
-available memory).
-
- concat repeat join range
-
- anonlist anonhash
-
-Note that despite the existence of this optag a memory resource attack
-may still be possible using only :base_core ops.
-
-Disabling these ops is a I<very> heavy handed way to attempt to prevent
-a memory resource attack. It's probable that a specific memory limit
-mechanism will be added to perl in the near future.
-
-=item :base_loop
-
-These loop ops are not included in :base_core because they can easily be
-used to implement a resource attack (e.g., consume all available CPU time).
-
- grepstart grepwhile
- mapstart mapwhile
- enteriter iter
- enterloop leaveloop unstack
- last next redo
- goto
-
-=item :base_io
-
-These ops enable I<filehandle> (rather than filename) based input and
-output. These are safe on the assumption that only pre-existing
-filehandles are available for use. To create new filehandles other ops
-such as open would need to be enabled.
-
- readline rcatline getc read
-
- formline enterwrite leavewrite
-
- print sysread syswrite send recv
-
- eof tell seek sysseek
-
- readdir telldir seekdir rewinddir
-
-=item :base_orig
-
-These are a hotchpotch of opcodes still waiting to be considered
-
- gvsv gv gelem
-
- padsv padav padhv padany
-
- rv2gv refgen srefgen ref
-
- bless -- could be used to change ownership of objects (reblessing)
-
- pushre regcmaybe regcreset regcomp subst substcont
-
- sprintf prtf -- can core dump
-
- crypt
-
- tie untie
-
- dbmopen dbmclose
- sselect select
- pipe_op sockpair
-
- getppid getpgrp setpgrp getpriority setpriority localtime gmtime
-
- entertry leavetry -- can be used to 'hide' fatal errors
-
- custom -- where should this go
-
-=item :base_math
-
-These ops are not included in :base_core because of the risk of them being
-used to generate floating point exceptions (which would have to be caught
-using a $SIG{FPE} handler).
-
- atan2 sin cos exp log sqrt
-
-These ops are not included in :base_core because they have an effect
-beyond the scope of the compartment.
-
- rand srand
-
-=item :base_thread
-
-These ops are related to multi-threading.
-
- lock threadsv
-
-=item :default
-
-A handy tag name for a I<reasonable> default set of ops. (The current ops
-allowed are unstable while development continues. It will change.)
-
- :base_core :base_mem :base_loop :base_io :base_orig :base_thread
-
-If safety matters to you (and why else would you be using the Opcode module?)
-then you should not rely on the definition of this, or indeed any other, optag!
-
-
-=item :filesys_read
-
- stat lstat readlink
-
- ftatime ftblk ftchr ftctime ftdir fteexec fteowned fteread
- ftewrite ftfile ftis ftlink ftmtime ftpipe ftrexec ftrowned
- ftrread ftsgid ftsize ftsock ftsuid fttty ftzero ftrwrite ftsvtx
-
- fttext ftbinary
-
- fileno
-
-=item :sys_db
-
- ghbyname ghbyaddr ghostent shostent ehostent -- hosts
- gnbyname gnbyaddr gnetent snetent enetent -- networks
- gpbyname gpbynumber gprotoent sprotoent eprotoent -- protocols
- gsbyname gsbyport gservent sservent eservent -- services
-
- gpwnam gpwuid gpwent spwent epwent getlogin -- users
- ggrnam ggrgid ggrent sgrent egrent -- groups
-
-=item :browse
-
-A handy tag name for a I<reasonable> default set of ops beyond the
-:default optag. Like :default (and indeed all the other optags) its
-current definition is unstable while development continues. It will change.
-
-The :browse tag represents the next step beyond :default. It it a
-superset of the :default ops and adds :filesys_read the :sys_db.
-The intent being that scripts can access more (possibly sensitive)
-information about your system but not be able to change it.
-
- :default :filesys_read :sys_db
-
-=item :filesys_open
-
- sysopen open close
- umask binmode
-
- open_dir closedir -- other dir ops are in :base_io
-
-=item :filesys_write
-
- link unlink rename symlink truncate
-
- mkdir rmdir
-
- utime chmod chown
-
- fcntl -- not strictly filesys related, but possibly as dangerous?
-
-=item :subprocess
-
- backtick system
-
- fork
-
- wait waitpid
-
- glob -- access to Cshell via <`rm *`>
-
-=item :ownprocess
-
- exec exit kill
-
- time tms -- could be used for timing attacks (paranoid?)
-
-=item :others
-
-This tag holds groups of assorted specialist opcodes that don't warrant
-having optags defined for them.
-
-SystemV Interprocess Communications:
-
- msgctl msgget msgrcv msgsnd
-
- semctl semget semop
-
- shmctl shmget shmread shmwrite
-
-=item :still_to_be_decided
-
- chdir
- flock ioctl
-
- socket getpeername ssockopt
- bind connect listen accept shutdown gsockopt getsockname
-
- sleep alarm -- changes global timer state and signal handling
- sort -- assorted problems including core dumps
- tied -- can be used to access object implementing a tie
- pack unpack -- can be used to create/use memory pointers
-
- entereval -- can be used to hide code from initial compile
- require dofile
-
- caller -- get info about calling environment and args
-
- reset
-
- dbstate -- perl -d version of nextstate(ment) opcode
-
-=item :dangerous
-
-This tag is simply a bucket for opcodes that are unlikely to be used via
-a tag name but need to be tagged for completeness and documentation.
-
- syscall dump chroot
-
-
-=back
-
-=head1 SEE ALSO
-
-ops(3) -- perl pragma interface to Opcode module.
-
-Safe(3) -- Opcode and namespace limited execution compartments
-
-=head1 AUTHORS
-
-Originally designed and implemented by Malcolm Beattie,
-mbeattie@sable.ox.ac.uk as part of Safe version 1.
-
-Split out from Safe module version 1, named opcode tags and other
-changes added by Tim Bunce.
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/POSIX.pm b/Master/tlpkg/tlperl/lib/POSIX.pm
deleted file mode 100644
index 87676215e73..00000000000
--- a/Master/tlpkg/tlperl/lib/POSIX.pm
+++ /dev/null
@@ -1,965 +0,0 @@
-package POSIX;
-
-our(@ISA, %EXPORT_TAGS, @EXPORT_OK, $AUTOLOAD) = ();
-
-our $VERSION = "1.09";
-
-use AutoLoader;
-
-use XSLoader ();
-
-# Grandfather old foo_h form to new :foo_h form
-my $loaded;
-
-sub import {
- load_imports() unless $loaded++;
- my $this = shift;
- my @list = map { m/^\w+_h$/ ? ":$_" : $_ } @_;
- local $Exporter::ExportLevel = 1;
- Exporter::import($this,@list);
-}
-
-sub croak { require Carp; goto &Carp::croak }
-# declare usage to assist AutoLoad
-sub usage;
-
-XSLoader::load 'POSIX', $VERSION;
-
-my %NON_CONSTS = (map {($_,1)}
- qw(S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISREG WEXITSTATUS
- WIFEXITED WIFSIGNALED WIFSTOPPED WSTOPSIG WTERMSIG));
-
-sub AUTOLOAD {
- if ($AUTOLOAD =~ /::(_?[a-z])/) {
- # require AutoLoader;
- $AutoLoader::AUTOLOAD = $AUTOLOAD;
- goto &AutoLoader::AUTOLOAD
- }
- local $! = 0;
- my $constname = $AUTOLOAD;
- $constname =~ s/.*:://;
- if ($NON_CONSTS{$constname}) {
- my ($val, $error) = &int_macro_int($constname, $_[0]);
- croak $error if $error;
- *$AUTOLOAD = sub { &int_macro_int($constname, $_[0]) };
- } else {
- my ($error, $val) = constant($constname);
- croak $error if $error;
- *$AUTOLOAD = sub { $val };
- }
-
- goto &$AUTOLOAD;
-}
-
-package POSIX::SigAction;
-
-use AutoLoader 'AUTOLOAD';
-sub new { bless {HANDLER => $_[1], MASK => $_[2], FLAGS => $_[3] || 0, SAFE => 0}, $_[0] }
-
-package POSIX;
-
-1;
-__END__
-
-sub usage {
- my ($mess) = @_;
- croak "Usage: POSIX::$mess";
-}
-
-sub redef {
- my ($mess) = @_;
- croak "Use method $mess instead";
-}
-
-sub unimpl {
- my ($mess) = @_;
- $mess =~ s/xxx//;
- croak "Unimplemented: POSIX::$mess";
-}
-
-sub assert {
- usage "assert(expr)" if @_ != 1;
- if (!$_[0]) {
- croak "Assertion failed";
- }
-}
-
-sub tolower {
- usage "tolower(string)" if @_ != 1;
- lc($_[0]);
-}
-
-sub toupper {
- usage "toupper(string)" if @_ != 1;
- uc($_[0]);
-}
-
-sub closedir {
- usage "closedir(dirhandle)" if @_ != 1;
- CORE::closedir($_[0]);
-}
-
-sub opendir {
- usage "opendir(directory)" if @_ != 1;
- my $dirhandle;
- CORE::opendir($dirhandle, $_[0])
- ? $dirhandle
- : undef;
-}
-
-sub readdir {
- usage "readdir(dirhandle)" if @_ != 1;
- CORE::readdir($_[0]);
-}
-
-sub rewinddir {
- usage "rewinddir(dirhandle)" if @_ != 1;
- CORE::rewinddir($_[0]);
-}
-
-sub errno {
- usage "errno()" if @_ != 0;
- $! + 0;
-}
-
-sub creat {
- usage "creat(filename, mode)" if @_ != 2;
- &open($_[0], &O_WRONLY | &O_CREAT | &O_TRUNC, $_[1]);
-}
-
-sub fcntl {
- usage "fcntl(filehandle, cmd, arg)" if @_ != 3;
- CORE::fcntl($_[0], $_[1], $_[2]);
-}
-
-sub getgrgid {
- usage "getgrgid(gid)" if @_ != 1;
- CORE::getgrgid($_[0]);
-}
-
-sub getgrnam {
- usage "getgrnam(name)" if @_ != 1;
- CORE::getgrnam($_[0]);
-}
-
-sub atan2 {
- usage "atan2(x,y)" if @_ != 2;
- CORE::atan2($_[0], $_[1]);
-}
-
-sub cos {
- usage "cos(x)" if @_ != 1;
- CORE::cos($_[0]);
-}
-
-sub exp {
- usage "exp(x)" if @_ != 1;
- CORE::exp($_[0]);
-}
-
-sub fabs {
- usage "fabs(x)" if @_ != 1;
- CORE::abs($_[0]);
-}
-
-sub log {
- usage "log(x)" if @_ != 1;
- CORE::log($_[0]);
-}
-
-sub pow {
- usage "pow(x,exponent)" if @_ != 2;
- $_[0] ** $_[1];
-}
-
-sub sin {
- usage "sin(x)" if @_ != 1;
- CORE::sin($_[0]);
-}
-
-sub sqrt {
- usage "sqrt(x)" if @_ != 1;
- CORE::sqrt($_[0]);
-}
-
-sub getpwnam {
- usage "getpwnam(name)" if @_ != 1;
- CORE::getpwnam($_[0]);
-}
-
-sub getpwuid {
- usage "getpwuid(uid)" if @_ != 1;
- CORE::getpwuid($_[0]);
-}
-
-sub longjmp {
- unimpl "longjmp() is C-specific: use die instead";
-}
-
-sub setjmp {
- unimpl "setjmp() is C-specific: use eval {} instead";
-}
-
-sub siglongjmp {
- unimpl "siglongjmp() is C-specific: use die instead";
-}
-
-sub sigsetjmp {
- unimpl "sigsetjmp() is C-specific: use eval {} instead";
-}
-
-sub kill {
- usage "kill(pid, sig)" if @_ != 2;
- CORE::kill $_[1], $_[0];
-}
-
-sub raise {
- usage "raise(sig)" if @_ != 1;
- CORE::kill $_[0], $$; # Is this good enough?
-}
-
-sub offsetof {
- unimpl "offsetof() is C-specific, stopped";
-}
-
-sub clearerr {
- redef "IO::Handle::clearerr()";
-}
-
-sub fclose {
- redef "IO::Handle::close()";
-}
-
-sub fdopen {
- redef "IO::Handle::new_from_fd()";
-}
-
-sub feof {
- redef "IO::Handle::eof()";
-}
-
-sub fgetc {
- redef "IO::Handle::getc()";
-}
-
-sub fgets {
- redef "IO::Handle::gets()";
-}
-
-sub fileno {
- redef "IO::Handle::fileno()";
-}
-
-sub fopen {
- redef "IO::File::open()";
-}
-
-sub fprintf {
- unimpl "fprintf() is C-specific--use printf instead";
-}
-
-sub fputc {
- unimpl "fputc() is C-specific--use print instead";
-}
-
-sub fputs {
- unimpl "fputs() is C-specific--use print instead";
-}
-
-sub fread {
- unimpl "fread() is C-specific--use read instead";
-}
-
-sub freopen {
- unimpl "freopen() is C-specific--use open instead";
-}
-
-sub fscanf {
- unimpl "fscanf() is C-specific--use <> and regular expressions instead";
-}
-
-sub fseek {
- redef "IO::Seekable::seek()";
-}
-
-sub fsync {
- redef "IO::Handle::sync()";
-}
-
-sub ferror {
- redef "IO::Handle::error()";
-}
-
-sub fflush {
- redef "IO::Handle::flush()";
-}
-
-sub fgetpos {
- redef "IO::Seekable::getpos()";
-}
-
-sub fsetpos {
- redef "IO::Seekable::setpos()";
-}
-
-sub ftell {
- redef "IO::Seekable::tell()";
-}
-
-sub fwrite {
- unimpl "fwrite() is C-specific--use print instead";
-}
-
-sub getc {
- usage "getc(handle)" if @_ != 1;
- CORE::getc($_[0]);
-}
-
-sub getchar {
- usage "getchar()" if @_ != 0;
- CORE::getc(STDIN);
-}
-
-sub gets {
- usage "gets()" if @_ != 0;
- scalar <STDIN>;
-}
-
-sub perror {
- print STDERR "@_: " if @_;
- print STDERR $!,"\n";
-}
-
-sub printf {
- usage "printf(pattern, args...)" if @_ < 1;
- CORE::printf STDOUT @_;
-}
-
-sub putc {
- unimpl "putc() is C-specific--use print instead";
-}
-
-sub putchar {
- unimpl "putchar() is C-specific--use print instead";
-}
-
-sub puts {
- unimpl "puts() is C-specific--use print instead";
-}
-
-sub remove {
- usage "remove(filename)" if @_ != 1;
- CORE::unlink($_[0]);
-}
-
-sub rename {
- usage "rename(oldfilename, newfilename)" if @_ != 2;
- CORE::rename($_[0], $_[1]);
-}
-
-sub rewind {
- usage "rewind(filehandle)" if @_ != 1;
- CORE::seek($_[0],0,0);
-}
-
-sub scanf {
- unimpl "scanf() is C-specific--use <> and regular expressions instead";
-}
-
-sub sprintf {
- usage "sprintf(pattern,args)" if @_ == 0;
- CORE::sprintf(shift,@_);
-}
-
-sub sscanf {
- unimpl "sscanf() is C-specific--use regular expressions instead";
-}
-
-sub tmpfile {
- redef "IO::File::new_tmpfile()";
-}
-
-sub ungetc {
- redef "IO::Handle::ungetc()";
-}
-
-sub vfprintf {
- unimpl "vfprintf() is C-specific";
-}
-
-sub vprintf {
- unimpl "vprintf() is C-specific";
-}
-
-sub vsprintf {
- unimpl "vsprintf() is C-specific";
-}
-
-sub abs {
- usage "abs(x)" if @_ != 1;
- CORE::abs($_[0]);
-}
-
-sub atexit {
- unimpl "atexit() is C-specific: use END {} instead";
-}
-
-sub atof {
- unimpl "atof() is C-specific, stopped";
-}
-
-sub atoi {
- unimpl "atoi() is C-specific, stopped";
-}
-
-sub atol {
- unimpl "atol() is C-specific, stopped";
-}
-
-sub bsearch {
- unimpl "bsearch() not supplied";
-}
-
-sub calloc {
- unimpl "calloc() is C-specific, stopped";
-}
-
-sub div {
- unimpl "div() is C-specific, use /, % and int instead";
-}
-
-sub exit {
- usage "exit(status)" if @_ != 1;
- CORE::exit($_[0]);
-}
-
-sub free {
- unimpl "free() is C-specific, stopped";
-}
-
-sub getenv {
- usage "getenv(name)" if @_ != 1;
- $ENV{$_[0]};
-}
-
-sub labs {
- unimpl "labs() is C-specific, use abs instead";
-}
-
-sub ldiv {
- unimpl "ldiv() is C-specific, use /, % and int instead";
-}
-
-sub malloc {
- unimpl "malloc() is C-specific, stopped";
-}
-
-sub qsort {
- unimpl "qsort() is C-specific, use sort instead";
-}
-
-sub rand {
- unimpl "rand() is non-portable, use Perl's rand instead";
-}
-
-sub realloc {
- unimpl "realloc() is C-specific, stopped";
-}
-
-sub srand {
- unimpl "srand()";
-}
-
-sub system {
- usage "system(command)" if @_ != 1;
- CORE::system($_[0]);
-}
-
-sub memchr {
- unimpl "memchr() is C-specific, use index() instead";
-}
-
-sub memcmp {
- unimpl "memcmp() is C-specific, use eq instead";
-}
-
-sub memcpy {
- unimpl "memcpy() is C-specific, use = instead";
-}
-
-sub memmove {
- unimpl "memmove() is C-specific, use = instead";
-}
-
-sub memset {
- unimpl "memset() is C-specific, use x instead";
-}
-
-sub strcat {
- unimpl "strcat() is C-specific, use .= instead";
-}
-
-sub strchr {
- unimpl "strchr() is C-specific, use index() instead";
-}
-
-sub strcmp {
- unimpl "strcmp() is C-specific, use eq instead";
-}
-
-sub strcpy {
- unimpl "strcpy() is C-specific, use = instead";
-}
-
-sub strcspn {
- unimpl "strcspn() is C-specific, use regular expressions instead";
-}
-
-sub strerror {
- usage "strerror(errno)" if @_ != 1;
- local $! = $_[0];
- $! . "";
-}
-
-sub strlen {
- unimpl "strlen() is C-specific, use length instead";
-}
-
-sub strncat {
- unimpl "strncat() is C-specific, use .= instead";
-}
-
-sub strncmp {
- unimpl "strncmp() is C-specific, use eq instead";
-}
-
-sub strncpy {
- unimpl "strncpy() is C-specific, use = instead";
-}
-
-sub strpbrk {
- unimpl "strpbrk() is C-specific, stopped";
-}
-
-sub strrchr {
- unimpl "strrchr() is C-specific, use rindex() instead";
-}
-
-sub strspn {
- unimpl "strspn() is C-specific, stopped";
-}
-
-sub strstr {
- usage "strstr(big, little)" if @_ != 2;
- CORE::index($_[0], $_[1]);
-}
-
-sub strtok {
- unimpl "strtok() is C-specific, stopped";
-}
-
-sub chmod {
- usage "chmod(mode, filename)" if @_ != 2;
- CORE::chmod($_[0], $_[1]);
-}
-
-sub fstat {
- usage "fstat(fd)" if @_ != 1;
- local *TMP;
- CORE::open(TMP, "<&$_[0]"); # Gross.
- my @l = CORE::stat(TMP);
- CORE::close(TMP);
- @l;
-}
-
-sub mkdir {
- usage "mkdir(directoryname, mode)" if @_ != 2;
- CORE::mkdir($_[0], $_[1]);
-}
-
-sub stat {
- usage "stat(filename)" if @_ != 1;
- CORE::stat($_[0]);
-}
-
-sub umask {
- usage "umask(mask)" if @_ != 1;
- CORE::umask($_[0]);
-}
-
-sub wait {
- usage "wait()" if @_ != 0;
- CORE::wait();
-}
-
-sub waitpid {
- usage "waitpid(pid, options)" if @_ != 2;
- CORE::waitpid($_[0], $_[1]);
-}
-
-sub gmtime {
- usage "gmtime(time)" if @_ != 1;
- CORE::gmtime($_[0]);
-}
-
-sub localtime {
- usage "localtime(time)" if @_ != 1;
- CORE::localtime($_[0]);
-}
-
-sub time {
- usage "time()" if @_ != 0;
- CORE::time;
-}
-
-sub alarm {
- usage "alarm(seconds)" if @_ != 1;
- CORE::alarm($_[0]);
-}
-
-sub chdir {
- usage "chdir(directory)" if @_ != 1;
- CORE::chdir($_[0]);
-}
-
-sub chown {
- usage "chown(uid, gid, filename)" if @_ != 3;
- CORE::chown($_[0], $_[1], $_[2]);
-}
-
-sub execl {
- unimpl "execl() is C-specific, stopped";
-}
-
-sub execle {
- unimpl "execle() is C-specific, stopped";
-}
-
-sub execlp {
- unimpl "execlp() is C-specific, stopped";
-}
-
-sub execv {
- unimpl "execv() is C-specific, stopped";
-}
-
-sub execve {
- unimpl "execve() is C-specific, stopped";
-}
-
-sub execvp {
- unimpl "execvp() is C-specific, stopped";
-}
-
-sub fork {
- usage "fork()" if @_ != 0;
- CORE::fork;
-}
-
-sub getegid {
- usage "getegid()" if @_ != 0;
- $) + 0;
-}
-
-sub geteuid {
- usage "geteuid()" if @_ != 0;
- $> + 0;
-}
-
-sub getgid {
- usage "getgid()" if @_ != 0;
- $( + 0;
-}
-
-sub getgroups {
- usage "getgroups()" if @_ != 0;
- my %seen;
- grep(!$seen{$_}++, split(' ', $) ));
-}
-
-sub getlogin {
- usage "getlogin()" if @_ != 0;
- CORE::getlogin();
-}
-
-sub getpgrp {
- usage "getpgrp()" if @_ != 0;
- CORE::getpgrp;
-}
-
-sub getpid {
- usage "getpid()" if @_ != 0;
- $$;
-}
-
-sub getppid {
- usage "getppid()" if @_ != 0;
- CORE::getppid;
-}
-
-sub getuid {
- usage "getuid()" if @_ != 0;
- $<;
-}
-
-sub isatty {
- usage "isatty(filehandle)" if @_ != 1;
- -t $_[0];
-}
-
-sub link {
- usage "link(oldfilename, newfilename)" if @_ != 2;
- CORE::link($_[0], $_[1]);
-}
-
-sub rmdir {
- usage "rmdir(directoryname)" if @_ != 1;
- CORE::rmdir($_[0]);
-}
-
-sub setbuf {
- redef "IO::Handle::setbuf()";
-}
-
-sub setvbuf {
- redef "IO::Handle::setvbuf()";
-}
-
-sub sleep {
- usage "sleep(seconds)" if @_ != 1;
- $_[0] - CORE::sleep($_[0]);
-}
-
-sub unlink {
- usage "unlink(filename)" if @_ != 1;
- CORE::unlink($_[0]);
-}
-
-sub utime {
- usage "utime(filename, atime, mtime)" if @_ != 3;
- CORE::utime($_[1], $_[2], $_[0]);
-}
-
-sub load_imports {
-%EXPORT_TAGS = (
-
- assert_h => [qw(assert NDEBUG)],
-
- ctype_h => [qw(isalnum isalpha iscntrl isdigit isgraph islower
- isprint ispunct isspace isupper isxdigit tolower toupper)],
-
- dirent_h => [],
-
- errno_h => [qw(E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT
- EAGAIN EALREADY EBADF EBUSY ECHILD ECONNABORTED
- ECONNREFUSED ECONNRESET EDEADLK EDESTADDRREQ EDOM EDQUOT
- EEXIST EFAULT EFBIG EHOSTDOWN EHOSTUNREACH EINPROGRESS
- EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK
- EMSGSIZE ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH
- ENFILE ENOBUFS ENODEV ENOENT ENOEXEC ENOLCK ENOMEM
- ENOPROTOOPT ENOSPC ENOSYS ENOTBLK ENOTCONN ENOTDIR
- ENOTEMPTY ENOTSOCK ENOTTY ENXIO EOPNOTSUPP EPERM
- EPFNOSUPPORT EPIPE EPROCLIM EPROTONOSUPPORT EPROTOTYPE
- ERANGE EREMOTE ERESTART EROFS ESHUTDOWN ESOCKTNOSUPPORT
- ESPIPE ESRCH ESTALE ETIMEDOUT ETOOMANYREFS ETXTBSY
- EUSERS EWOULDBLOCK EXDEV errno)],
-
- fcntl_h => [qw(FD_CLOEXEC F_DUPFD F_GETFD F_GETFL F_GETLK F_RDLCK
- F_SETFD F_SETFL F_SETLK F_SETLKW F_UNLCK F_WRLCK
- O_ACCMODE O_APPEND O_CREAT O_EXCL O_NOCTTY O_NONBLOCK
- O_RDONLY O_RDWR O_TRUNC O_WRONLY
- creat
- SEEK_CUR SEEK_END SEEK_SET
- S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU
- S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG S_ISUID
- S_IWGRP S_IWOTH S_IWUSR)],
-
- float_h => [qw(DBL_DIG DBL_EPSILON DBL_MANT_DIG
- DBL_MAX DBL_MAX_10_EXP DBL_MAX_EXP
- DBL_MIN DBL_MIN_10_EXP DBL_MIN_EXP
- FLT_DIG FLT_EPSILON FLT_MANT_DIG
- FLT_MAX FLT_MAX_10_EXP FLT_MAX_EXP
- FLT_MIN FLT_MIN_10_EXP FLT_MIN_EXP
- FLT_RADIX FLT_ROUNDS
- LDBL_DIG LDBL_EPSILON LDBL_MANT_DIG
- LDBL_MAX LDBL_MAX_10_EXP LDBL_MAX_EXP
- LDBL_MIN LDBL_MIN_10_EXP LDBL_MIN_EXP)],
-
- grp_h => [],
-
- limits_h => [qw( ARG_MAX CHAR_BIT CHAR_MAX CHAR_MIN CHILD_MAX
- INT_MAX INT_MIN LINK_MAX LONG_MAX LONG_MIN MAX_CANON
- MAX_INPUT MB_LEN_MAX NAME_MAX NGROUPS_MAX OPEN_MAX
- PATH_MAX PIPE_BUF SCHAR_MAX SCHAR_MIN SHRT_MAX SHRT_MIN
- SSIZE_MAX STREAM_MAX TZNAME_MAX UCHAR_MAX UINT_MAX
- ULONG_MAX USHRT_MAX _POSIX_ARG_MAX _POSIX_CHILD_MAX
- _POSIX_LINK_MAX _POSIX_MAX_CANON _POSIX_MAX_INPUT
- _POSIX_NAME_MAX _POSIX_NGROUPS_MAX _POSIX_OPEN_MAX
- _POSIX_PATH_MAX _POSIX_PIPE_BUF _POSIX_SSIZE_MAX
- _POSIX_STREAM_MAX _POSIX_TZNAME_MAX)],
-
- locale_h => [qw(LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES
- LC_MONETARY LC_NUMERIC LC_TIME NULL
- localeconv setlocale)],
-
- math_h => [qw(HUGE_VAL acos asin atan ceil cosh fabs floor fmod
- frexp ldexp log10 modf pow sinh tan tanh)],
-
- pwd_h => [],
-
- setjmp_h => [qw(longjmp setjmp siglongjmp sigsetjmp)],
-
- signal_h => [qw(SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK
- SA_RESETHAND SA_RESTART SA_SIGINFO SIGABRT SIGALRM
- SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL
- SIGPIPE SIGQUIT SIGSEGV SIGSTOP SIGTERM SIGTSTP SIGTTIN
- SIGTTOU SIGUSR1 SIGUSR2 SIG_BLOCK SIG_DFL SIG_ERR
- SIG_IGN SIG_SETMASK SIG_UNBLOCK raise sigaction signal
- sigpending sigprocmask sigsuspend)],
-
- stdarg_h => [],
-
- stddef_h => [qw(NULL offsetof)],
-
- stdio_h => [qw(BUFSIZ EOF FILENAME_MAX L_ctermid L_cuserid
- L_tmpname NULL SEEK_CUR SEEK_END SEEK_SET
- STREAM_MAX TMP_MAX stderr stdin stdout
- clearerr fclose fdopen feof ferror fflush fgetc fgetpos
- fgets fopen fprintf fputc fputs fread freopen
- fscanf fseek fsetpos ftell fwrite getchar gets
- perror putc putchar puts remove rewind
- scanf setbuf setvbuf sscanf tmpfile tmpnam
- ungetc vfprintf vprintf vsprintf)],
-
- stdlib_h => [qw(EXIT_FAILURE EXIT_SUCCESS MB_CUR_MAX NULL RAND_MAX
- abort atexit atof atoi atol bsearch calloc div
- free getenv labs ldiv malloc mblen mbstowcs mbtowc
- qsort realloc strtod strtol strtoul wcstombs wctomb)],
-
- string_h => [qw(NULL memchr memcmp memcpy memmove memset strcat
- strchr strcmp strcoll strcpy strcspn strerror strlen
- strncat strncmp strncpy strpbrk strrchr strspn strstr
- strtok strxfrm)],
-
- sys_stat_h => [qw(S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU
- S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG
- S_ISUID S_IWGRP S_IWOTH S_IWUSR S_IXGRP S_IXOTH S_IXUSR
- fstat mkfifo)],
-
- sys_times_h => [],
-
- sys_types_h => [],
-
- sys_utsname_h => [qw(uname)],
-
- sys_wait_h => [qw(WEXITSTATUS WIFEXITED WIFSIGNALED WIFSTOPPED
- WNOHANG WSTOPSIG WTERMSIG WUNTRACED)],
-
- termios_h => [qw( B0 B110 B1200 B134 B150 B1800 B19200 B200 B2400
- B300 B38400 B4800 B50 B600 B75 B9600 BRKINT CLOCAL
- CREAD CS5 CS6 CS7 CS8 CSIZE CSTOPB ECHO ECHOE ECHOK
- ECHONL HUPCL ICANON ICRNL IEXTEN IGNBRK IGNCR IGNPAR
- INLCR INPCK ISIG ISTRIP IXOFF IXON NCCS NOFLSH OPOST
- PARENB PARMRK PARODD TCIFLUSH TCIOFF TCIOFLUSH TCION
- TCOFLUSH TCOOFF TCOON TCSADRAIN TCSAFLUSH TCSANOW
- TOSTOP VEOF VEOL VERASE VINTR VKILL VMIN VQUIT VSTART
- VSTOP VSUSP VTIME
- cfgetispeed cfgetospeed cfsetispeed cfsetospeed tcdrain
- tcflow tcflush tcgetattr tcsendbreak tcsetattr )],
-
- time_h => [qw(CLK_TCK CLOCKS_PER_SEC NULL asctime clock ctime
- difftime mktime strftime tzset tzname)],
-
- unistd_h => [qw(F_OK NULL R_OK SEEK_CUR SEEK_END SEEK_SET
- STDERR_FILENO STDIN_FILENO STDOUT_FILENO W_OK X_OK
- _PC_CHOWN_RESTRICTED _PC_LINK_MAX _PC_MAX_CANON
- _PC_MAX_INPUT _PC_NAME_MAX _PC_NO_TRUNC _PC_PATH_MAX
- _PC_PIPE_BUF _PC_VDISABLE _POSIX_CHOWN_RESTRICTED
- _POSIX_JOB_CONTROL _POSIX_NO_TRUNC _POSIX_SAVED_IDS
- _POSIX_VDISABLE _POSIX_VERSION _SC_ARG_MAX
- _SC_CHILD_MAX _SC_CLK_TCK _SC_JOB_CONTROL
- _SC_NGROUPS_MAX _SC_OPEN_MAX _SC_PAGESIZE _SC_SAVED_IDS
- _SC_STREAM_MAX _SC_TZNAME_MAX _SC_VERSION
- _exit access ctermid cuserid
- dup2 dup execl execle execlp execv execve execvp
- fpathconf fsync getcwd getegid geteuid getgid getgroups
- getpid getuid isatty lseek pathconf pause setgid setpgid
- setsid setuid sysconf tcgetpgrp tcsetpgrp ttyname)],
-
- utime_h => [],
-
-);
-
-# Exporter::export_tags();
-for (values %EXPORT_TAGS) {
- push @EXPORT, @$_;
-}
-
-@EXPORT_OK = qw(
- abs
- alarm
- atan2
- chdir
- chmod
- chown
- close
- closedir
- cos
- exit
- exp
- fcntl
- fileno
- fork
- getc
- getgrgid
- getgrnam
- getlogin
- getpgrp
- getppid
- getpwnam
- getpwuid
- gmtime
- isatty
- kill
- lchown
- link
- localtime
- log
- mkdir
- nice
- open
- opendir
- pipe
- printf
- rand
- read
- readdir
- rename
- rewinddir
- rmdir
- sin
- sleep
- sprintf
- sqrt
- srand
- stat
- system
- time
- times
- umask
- unlink
- utime
- wait
- waitpid
- write
-);
-
-require Exporter;
-}
-
-package POSIX::SigAction;
-
-sub handler { $_[0]->{HANDLER} = $_[1] if @_ > 1; $_[0]->{HANDLER} };
-sub mask { $_[0]->{MASK} = $_[1] if @_ > 1; $_[0]->{MASK} };
-sub flags { $_[0]->{FLAGS} = $_[1] if @_ > 1; $_[0]->{FLAGS} };
-sub safe { $_[0]->{SAFE} = $_[1] if @_ > 1; $_[0]->{SAFE} };
diff --git a/Master/tlpkg/tlperl/lib/Pod/Checker.pm b/Master/tlpkg/tlperl/lib/Pod/Checker.pm
deleted file mode 100644
index 49162da4a27..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Checker.pm
+++ /dev/null
@@ -1,1270 +0,0 @@
-#############################################################################
-# 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.43; ## 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. I<val> is usually 1 for on, but higher values
-trigger additional warnings. See L<"Warnings">.
-
-=back
-
-=head1 DESCRIPTION
-
-B<podchecker> will perform syntax checking of Perl5 POD format documentation.
-
-Curious/ambitious users are welcome to propose additional features they wish
-to see in B<Pod::Checker> and B<podchecker> and verify that the checks are
-consistent with L<perlpod>.
-
-The following checks are currently performed:
-
-=over 4
-
-=item *
-
-Unknown '=xxxx' commands, unknown 'XE<lt>...E<gt>' interior-sequences,
-and unterminated interior sequences.
-
-=item *
-
-Check for proper balancing of C<=begin> and C<=end>. The contents of such
-a block are generally ignored, i.e. no syntax checks are performed.
-
-=item *
-
-Check for proper nesting and balancing of C<=over>, C<=item> and C<=back>.
-
-=item *
-
-Check for same nested interior-sequences (e.g.
-C<LE<lt>...LE<lt>...E<gt>...E<gt>>).
-
-=item *
-
-Check for malformed or 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<=head3>, C<=head4>, C<=over>, C<=item>, C<=back>, C<=begin>, C<=end>,
-C<=for>, C<=pod>, C<=cut>
-
-=item * Unknown interior-sequence "I<SEQ>"
-
-An invalid markup command has been encountered. Valid are:
-C<BE<lt>E<gt>>, C<CE<lt>E<gt>>, C<EE<lt>E<gt>>, C<FE<lt>E<gt>>,
-C<IE<lt>E<gt>>, C<LE<lt>E<gt>>, C<SE<lt>E<gt>>, C<XE<lt>E<gt>>,
-C<ZE<lt>E<gt>>
-
-=item * nested commands I<CMD>E<lt>...I<CMD>E<lt>...E<gt>...E<gt>
-
-Two nested identical markup commands have been found. Generally this
-does not make sense.
-
-=item * garbled entity I<STRING>
-
-The I<STRING> found cannot be interpreted as a character entity.
-
-=item * Entity number out of range
-
-An entity specified by number (dec, hex, oct) is out of range (1-255).
-
-=item * malformed link LE<lt>E<gt>
-
-The link found cannot be parsed because it does not conform to the
-syntax described in L<perlpod>.
-
-=item * nonempty ZE<lt>E<gt>
-
-The C<ZE<lt>E<gt>> sequence is supposed to be empty.
-
-=item * empty XE<lt>E<gt>
-
-The index entry specified contains nothing but whitespace.
-
-=item * Spurious text after =pod / =cut
-
-The commands C<=pod> and C<=cut> do not take any arguments.
-
-=item * Spurious character(s) after =back
-
-The C<=back> command does not take any arguments.
-
-=back
-
-=head2 Warnings
-
-These may not necessarily cause trouble, but indicate mediocre style.
-
-=over 4
-
-=item * multiple occurrence of link target I<name>
-
-The POD file has some C<=item> and/or C<=head> commands that have
-the same text. Potential hyperlinks to such a text cannot be unique then.
-This warning is printed only with warning level greater than one.
-
-=item * line containing nothing but whitespace in paragraph
-
-There is some whitespace on a seemingly empty line. POD is very sensitive
-to such things, so this is flagged. B<vi> users switch on the B<list>
-option to avoid this problem.
-
-=begin _disabled_
-
-=item * file does not start with =head
-
-The file starts with a different POD directive than head.
-This is most probably something you do not want.
-
-=end _disabled_
-
-=item * previous =item has no contents
-
-There is a list C<=item> right above the flagged line that has no
-text contents. You probably want to delete empty items.
-
-=item * preceding non-item paragraph(s)
-
-A list introduced by C<=over> starts with a text or verbatim paragraph,
-but continues with C<=item>s. Move the non-item paragraph out of the
-C<=over>/C<=back> block.
-
-=item * =item type mismatch (I<one> vs. I<two>)
-
-A list started with e.g. a 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. This is only printed when the -warnings level is
-greater than 1.
-
-=item * Unknown entity
-
-A character entity was found that does not belong to the standard
-ISO set or the POD specials C<verbar> and C<sol>.
-
-=item * No items in =over
-
-The list opened with C<=over> does not contain any items.
-
-=item * No argument for =item
-
-C<=item> without any parameters is deprecated. It should either be followed
-by C<*> to indicate an unordered list, by a number (optionally followed
-by a dot) to indicate an ordered (numbered) list or simple text for a
-definition list.
-
-=item * empty section in previous paragraph
-
-The previous section (introduced by a C<=head> command) does not contain
-any text. This usually indicates that something is missing. Note: A
-C<=head1> followed immediately by C<=head2> does not trigger this warning.
-
-=item * Verbatim paragraph in NAME section
-
-The NAME section (C<=head1 NAME>) should consist of a single paragraph
-with the script/module name, followed by a dash `-' and a very short
-description of what the thing is good for.
-
-=item * =headI<n> without preceding higher level
-
-For example if there is a C<=head2> in the POD file prior to a
-C<=head1>.
-
-=back
-
-=head2 Hyperlinks
-
-There are some warnings wrt. malformed hyperlinks.
-
-=over 4
-
-=item * ignoring leading/trailing whitespace in link
-
-There is whitespace at the beginning or the end of the contents of
-LE<lt>...E<gt>.
-
-=item * (section) in '$page' deprecated
-
-There is a section detected in the page name of LE<lt>...E<gt>, e.g.
-C<LE<lt>passwd(2)E<gt>>. POD hyperlinks may point to POD documents only.
-Please write C<CE<lt>passwd(2)E<gt>> instead. Some formatters are able
-to expand this to appropriate code. For links to (builtin) functions,
-please say C<LE<lt>perlfunc/mkdirE<gt>>, without ().
-
-=item * alternative text/node '%s' contains non-escaped | or /
-
-The characters C<|> and C</> are special in the LE<lt>...E<gt> context.
-Although the hyperlink parser does its best to determine which "/" is
-text and which is a delimiter in case of doubt, one ought to escape
-these literal characters like this:
-
- / E<sol>
- | E<verbar>
-
-=back
-
-=head1 RETURN VALUE
-
-B<podchecker> returns the number of POD syntax errors found or -1 if
-there were no POD commands at all found in the file.
-
-=head1 EXAMPLES
-
-See L</SYNOPSIS>
-
-=head1 INTERFACE
-
-While checking, this module collects document properties, e.g. the nodes
-for hyperlinks (C<=headX>, C<=item>) and index entries (C<XE<lt>E<gt>>).
-POD translators can use this feature to syntax-check and get the nodes in
-a first pass before actually starting to convert. This is expensive in terms
-of execution time, but allows for very robust conversions.
-
-Since PodParser-1.24 the B<Pod::Checker> module uses only the B<poderror>
-method to print errors and warnings. The summary output (e.g.
-"Pod syntax OK") has been dropped from the module and has been included in
-B<podchecker> (the script). This allows users of B<Pod::Checker> to
-control completely the output behaviour. Users of B<podchecker> (the script)
-get the well-known behaviour.
-
-=cut
-
-#############################################################################
-
-use strict;
-#use diagnostics;
-use Carp;
-use Exporter;
-use Pod::Parser;
-
-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,
- 'head3' => 1,
- 'head4' => 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);
-
- ## Now check the pod document for errors
- $checker->parse_from_file($infile, $outfile);
-
- ## Return the number of errors found
- return $checker->num_errors();
-}
-
-##---------------------------------------------------------------------------
-
-##-------------------------------
-## Method definitions begin here
-##-------------------------------
-
-##################################
-
-=over 4
-
-=item C<Pod::Checker-E<gt>new( %options )>
-
-Return a reference to a new Pod::Checker object that inherits from
-Pod::Parser and is used for calling the required methods later. The
-following options are recognized:
-
-C<-warnings =E<gt> num>
- Print warnings if C<num> is true. The higher the value of C<num>,
-the more warnings are printed. Currently there are only levels 1 and 2.
-
-C<-quiet =E<gt> num>
- If C<num> is true, do not print any errors/warnings. This is useful
-when Pod::Checker is used to munge POD code into plain text from within
-POD formatters.
-
-=cut
-
-## sub new {
-## my $this = shift;
-## my $class = ref($this) || $this;
-## my %params = @_;
-## my $self = {%params};
-## bless $self, $class;
-## $self->initialize();
-## return $self;
-## }
-
-sub initialize {
- my $self = shift;
- ## Initialize number of errors, and setup an error function to
- ## increment this number and then print to the designated output.
- $self->{_NUM_ERRORS} = 0;
- $self->{_NUM_WARNINGS} = 0;
- $self->{-quiet} ||= 0;
- # set the error handling subroutine
- $self->errorsub($self->{-quiet} ? sub { 1; } : 'poderror');
- $self->{_commands} = 0; # total number of POD commands encountered
- $self->{_list_stack} = []; # stack for nested lists
- $self->{_have_begin} = ''; # stores =begin
- $self->{_links} = []; # stack for internal hyperlinks
- $self->{_nodes} = []; # stack for =head/=item nodes
- $self->{_index} = []; # text in X<>
- # print warnings?
- $self->{-warnings} = 1 unless(defined $self->{-warnings});
- $self->{_current_head1} = ''; # the current =head1 block
- $self->parseopts(-process_cut_cmd => 1, -warnings => $self->{-warnings});
-}
-
-##################################
-
-=item C<$checker-E<gt>poderror( @args )>
-
-=item C<$checker-E<gt>poderror( {%opts}, @args )>
-
-Internal method for printing errors and warnings. If no options are
-given, simply prints "@_". The following options are recognized and used
-to form the output:
-
- -msg
-
-A message to print prior to C<@args>.
-
- -line
-
-The line number the error occurred in.
-
- -file
-
-The file (name) the error occurred in.
-
- -severity
-
-The error level, should be 'WARNING' or 'ERROR'.
-
-=cut
-
-# Invoked as $self->poderror( @args ), or $self->poderror( {%opts}, @args )
-sub poderror {
- my $self = shift;
- my %opts = (ref $_[0]) ? %{shift()} : ();
-
- ## Retrieve options
- chomp( my $msg = ($opts{-msg} || "")."@_" );
- my $line = (exists $opts{-line}) ? " at line $opts{-line}" : "";
- my $file = (exists $opts{-file}) ? " in file $opts{-file}" : "";
- unless (exists $opts{-severity}) {
- ## See if can find severity in message prefix
- $opts{-severity} = $1 if ( $msg =~ s/^\**\s*([A-Z]{3,}):\s+// );
- }
- my $severity = (exists $opts{-severity}) ? "*** $opts{-severity}: " : "";
-
- ## Increment error count and print message "
- ++($self->{_NUM_ERRORS})
- if(!%opts || ($opts{-severity} && $opts{-severity} eq 'ERROR'));
- ++($self->{_NUM_WARNINGS})
- if(!%opts || ($opts{-severity} && $opts{-severity} eq 'WARNING'));
- unless($self->{-quiet}) {
- my $out_fh = $self->output_handle() || \*STDERR;
- print $out_fh ($severity, $msg, $line, $file, "\n")
- if($self->{-warnings} || !%opts || $opts{-severity} ne 'WARNING');
- }
-}
-
-##################################
-
-=item C<$checker-E<gt>num_errors()>
-
-Set (if argument specified) and retrieve the number of errors found.
-
-=cut
-
-sub num_errors {
- return (@_ > 1) ? ($_[0]->{_NUM_ERRORS} = $_[1]) : $_[0]->{_NUM_ERRORS};
-}
-
-##################################
-
-=item C<$checker-E<gt>num_warnings()>
-
-Set (if argument specified) and retrieve the number of warnings found.
-
-=cut
-
-sub num_warnings {
- return (@_ > 1) ? ($_[0]->{_NUM_WARNINGS} = $_[1]) : $_[0]->{_NUM_WARNINGS};
-}
-
-##################################
-
-=item C<$checker-E<gt>name()>
-
-Set (if argument specified) and retrieve the canonical name of POD as
-found in the C<=head1 NAME> section.
-
-=cut
-
-sub name {
- return (@_ > 1 && $_[1]) ?
- ($_[0]->{-name} = $_[1]) : $_[0]->{-name};
-}
-
-##################################
-
-=item C<$checker-E<gt>node()>
-
-Add (if argument specified) and retrieve the nodes (as defined by C<=headX>
-and C<=item>) of the current POD. The nodes are returned in the order of
-their occurrence. They consist of plain text, each piece of whitespace is
-collapsed to a single blank.
-
-=cut
-
-sub node {
- my ($self,$text) = @_;
- if(defined $text) {
- $text =~ s/\s+$//s; # strip trailing whitespace
- $text =~ s/\s+/ /gs; # collapse whitespace
- # add node, order important!
- push(@{$self->{_nodes}}, $text);
- # keep also a uniqueness counter
- $self->{_unique_nodes}->{$text}++ if($text !~ /^\s*$/s);
- return $text;
- }
- @{$self->{_nodes}};
-}
-
-##################################
-
-=item C<$checker-E<gt>idx()>
-
-Add (if argument specified) and retrieve the index entries (as defined by
-C<XE<lt>E<gt>>) of the current POD. They consist of plain text, each piece
-of whitespace is collapsed to a single blank.
-
-=cut
-
-# set/return index entries of current POD
-sub idx {
- my ($self,$text) = @_;
- if(defined $text) {
- $text =~ s/\s+$//s; # strip trailing whitespace
- $text =~ s/\s+/ /gs; # collapse whitespace
- # add node, order important!
- push(@{$self->{_index}}, $text);
- # keep also a uniqueness counter
- $self->{_unique_nodes}->{$text}++ if($text !~ /^\s*$/s);
- return $text;
- }
- @{$self->{_index}};
-}
-
-##################################
-
-=item C<$checker-E<gt>hyperlink()>
-
-Add (if argument specified) and retrieve the hyperlinks (as defined by
-C<LE<lt>E<gt>>) of the current POD. They consist of a 2-item array: line
-number and C<Pod::Hyperlink> object.
-
-=back
-
-=cut
-
-# set/return hyperlinks of the current POD
-sub hyperlink {
- my $self = shift;
- if($_[0]) {
- push(@{$self->{_links}}, $_[0]);
- return $_[0];
- }
- @{$self->{_links}};
-}
-
-## overrides for Pod::Parser
-
-sub end_pod {
- ## Do some final checks and
- ## print the number of errors found
- my $self = shift;
- my $infile = $self->input_file();
-
- if(@{$self->{_list_stack}}) {
- my $list;
- while(($list = $self->_close_list('EOF',$infile)) &&
- $list->indent() ne 'auto') {
- $self->poderror({ -line => 'EOF', -file => $infile,
- -severity => 'ERROR', -msg => "=over on line " .
- $list->start() . " without closing =back" }); #"
- }
- }
-
- # check validity of document internal hyperlinks
- # first build the node names from the paragraph text
- my %nodes;
- foreach($self->node()) {
- $nodes{$_} = 1;
- if(/^(\S+)\s+\S/) {
- # we have more than one word. Use the first as a node, too.
- # This is used heavily in perlfunc.pod
- $nodes{$1} ||= 2; # derived node
- }
- }
- foreach($self->idx()) {
- $nodes{$_} = 3; # index node
- }
- foreach($self->hyperlink()) {
- my ($line,$link) = @$_;
- # _TODO_ what if there is a link to the page itself by the name,
- # e.g. in Tk::Pod : L<Tk::Pod/"DESCRIPTION">
- if($link->node() && !$link->page() && $link->type() ne 'hyperlink') {
- my $node = $self->_check_ptree($self->parse_text($link->node(),
- $line), $line, $infile, 'L');
- if($node && !$nodes{$node}) {
- $self->poderror({ -line => $line || '', -file => $infile,
- -severity => 'ERROR',
- -msg => "unresolved internal link '$node'"});
- }
- }
- }
-
- # check the internal nodes for uniqueness. This pertains to
- # =headX, =item and X<...>
- if($self->{-warnings} && $self->{-warnings}>1) {
- foreach(grep($self->{_unique_nodes}->{$_} > 1,
- keys %{$self->{_unique_nodes}})) {
- $self->poderror({ -line => '-', -file => $infile,
- -severity => 'WARNING',
- -msg => "multiple occurrence of link target '$_'"});
- }
- }
-
- # no POD found here
- $self->num_errors(-1) if($self->{_commands} == 0);
-}
-
-# check a POD command directive
-sub command {
- my ($self, $cmd, $paragraph, $line_num, $pod_para) = @_;
- my ($file, $line) = $pod_para->file_line;
- ## Check the command syntax
- my $arg; # this will hold the command argument
- if (! $VALID_COMMANDS{$cmd}) {
- $self->poderror({ -line => $line, -file => $file, -severity => 'ERROR',
- -msg => "Unknown command '$cmd'" });
- }
- else { # found a valid command
- $self->{_commands}++; # delete this line if below is enabled again
-
- ##### following check disabled due to strong request
- #if(!$self->{_commands}++ && $cmd !~ /^head/) {
- # $self->poderror({ -line => $line, -file => $file,
- # -severity => 'WARNING',
- # -msg => "file does not start with =head" });
- #}
-
- # check syntax of particular command
- if($cmd eq 'over') {
- # check for argument
- $arg = $self->interpolate_and_check($paragraph, $line,$file);
- my $indent = 4; # default
- if($arg && $arg =~ /^\s*(\d+)\s*$/) {
- $indent = $1;
- }
- # start a new list
- $self->_open_list($indent,$line,$file);
- }
- elsif($cmd eq 'item') {
- # are we in a list?
- unless(@{$self->{_list_stack}}) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "=item without previous =over" });
- # auto-open in case we encounter many more
- $self->_open_list('auto',$line,$file);
- }
- my $list = $self->{_list_stack}->[0];
- # check whether the previous item had some contents
- if(defined $self->{_list_item_contents} &&
- $self->{_list_item_contents} == 0) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => "previous =item has no contents" });
- }
- if($list->{_has_par}) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => "preceding non-item paragraph(s)" });
- delete $list->{_has_par};
- }
- # check for argument
- $arg = $self->interpolate_and_check($paragraph, $line, $file);
- if($arg && $arg =~ /(\S+)/) {
- $arg =~ s/[\s\n]+$//;
- my $type;
- if($arg =~ /^[*]\s*(\S*.*)/) {
- $type = 'bullet';
- $self->{_list_item_contents} = $1 ? 1 : 0;
- $arg = $1;
- }
- elsif($arg =~ /^\d+\.?\s*(\S*)/) {
- $type = 'number';
- $self->{_list_item_contents} = $1 ? 1 : 0;
- $arg = $1;
- }
- else {
- $type = 'definition';
- $self->{_list_item_contents} = 1;
- }
- my $first = $list->type();
- if($first && $first ne $type) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => "=item type mismatch ('$first' vs. '$type')"});
- }
- else { # first item
- $list->type($type);
- }
- }
- else {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => "No argument for =item" });
- $arg = ' '; # empty
- $self->{_list_item_contents} = 0;
- }
- # add this item
- $list->item($arg);
- # remember this node
- $self->node($arg);
- }
- elsif($cmd eq 'back') {
- # check if we have an open list
- unless(@{$self->{_list_stack}}) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "=back without previous =over" });
- }
- else {
- # check for spurious characters
- $arg = $self->interpolate_and_check($paragraph, $line,$file);
- if($arg && $arg =~ /\S/) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "Spurious character(s) after =back" });
- }
- # close list
- my $list = $self->_close_list($line,$file);
- # check for empty lists
- if(!$list->item() && $self->{-warnings}) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => "No items in =over (at line " .
- $list->start() . ") / =back list"}); #"
- }
- }
- }
- elsif($cmd =~ /^head(\d+)/) {
- my $hnum = $1;
- $self->{"_have_head_$hnum"}++; # count head types
- if($hnum > 1 && !$self->{"_have_head_".($hnum -1)}) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => "=head$hnum without preceding higher level"});
- }
- # check whether the previous =head section had some contents
- if(defined $self->{_commands_in_head} &&
- $self->{_commands_in_head} == 0 &&
- defined $self->{_last_head} &&
- $self->{_last_head} >= $hnum) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => "empty section in previous paragraph"});
- }
- $self->{_commands_in_head} = -1;
- $self->{_last_head} = $hnum;
- # check if there is an open list
- if(@{$self->{_list_stack}}) {
- my $list;
- while(($list = $self->_close_list($line,$file)) &&
- $list->indent() ne 'auto') {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "=over on line ". $list->start() .
- " without closing =back (at $cmd)" });
- }
- }
- # remember this node
- $arg = $self->interpolate_and_check($paragraph, $line,$file);
- $arg =~ s/[\s\n]+$//s;
- $self->node($arg);
- unless(length($arg)) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "empty =$cmd"});
- }
- if($cmd eq 'head1') {
- $self->{_current_head1} = $arg;
- } else {
- $self->{_current_head1} = '';
- }
- }
- elsif($cmd eq 'begin') {
- if($self->{_have_begin}) {
- # already have a begin
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "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) {
- # count the unescaped angle brackets
- # complain only when warning level is greater than 1
- if($self->{-warnings} && $self->{-warnings}>1) {
- my $count;
- if($count = tr/<>/<>/) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => "$count unescaped <> in paragraph" });
- }
- }
- $text .= $_;
- next;
- }
- # have an interior sequence
- my $cmd = $_->cmd_name();
- my $contents = $_->parse_tree();
- ($file,$line) = $_->file_line();
- # check for valid tag
- if (! $VALID_SEQUENCES{$cmd}) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => qq(Unknown interior-sequence '$cmd')});
- # expand it anyway
- $text .= $self->_check_ptree($contents, $line, $file, "$nestlist$cmd");
- next;
- }
- if($nestlist =~ /$cmd/) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => "nested commands $cmd<...$cmd<...>...>"});
- # _TODO_ should we add the contents anyway?
- # expand it anyway, see below
- }
- if($cmd eq 'E') {
- # preserve entities
- if(@$contents > 1 || ref $$contents[0] || $$contents[0] !~ /^\w+$/) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "garbled entity " . $_->raw_text()});
- next;
- }
- my $ent = $$contents[0];
- my $val;
- if($ent =~ /^0x[0-9a-f]+$/i) {
- # hexadec entity
- $val = hex($ent);
- }
- elsif($ent =~ /^0\d+$/) {
- # octal
- $val = oct($ent);
- }
- elsif($ent =~ /^\d+$/) {
- # numeric entity
- $val = $ent;
- }
- if(defined $val) {
- if($val>0 && $val<256) {
- $text .= chr($val);
- }
- else {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "Entity number out of range " . $_->raw_text()});
- }
- }
- elsif($ENTITIES{$ent}) {
- # known ISO entity
- $text .= $ENTITIES{$ent};
- }
- else {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => "Unknown entity " . $_->raw_text()});
- $text .= "E<$ent>";
- }
- }
- elsif($cmd eq 'L') {
- # try to parse the hyperlink
- my $link = Pod::Hyperlink->new($contents->raw_text());
- unless(defined $link) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "malformed link " . $_->raw_text() ." : $@"});
- next;
- }
- $link->line($line); # remember line
- if($self->{-warnings}) {
- foreach my $w ($link->warning()) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => $w });
- }
- }
- # check the link text
- $text .= $self->_check_ptree($self->parse_text($link->text(),
- $line), $line, $file, "$nestlist$cmd");
- # remember link
- $self->hyperlink([$line,$link]);
- }
- elsif($cmd =~ /[BCFIS]/) {
- # add the guts
- $text .= $self->_check_ptree($contents, $line, $file, "$nestlist$cmd");
- }
- elsif($cmd eq 'Z') {
- if(length($contents->raw_text())) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "Nonempty Z<>"});
- }
- }
- elsif($cmd eq 'X') {
- my $idx = $self->_check_ptree($contents, $line, $file, "$nestlist$cmd");
- if($idx =~ /^\s*$/s) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "Empty X<>"});
- }
- else {
- # remember this node
- $self->idx($idx);
- }
- }
- else {
- # not reached
- 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
-
-Please report bugs using L<http://rt.cpan.org>.
-
-Brad Appleton E<lt>bradapp@enteract.comE<gt> (initial version),
-Marek Rouchal E<lt>marekr@cpan.orgE<gt>
-
-Based on code for B<Pod::Text::pod2text()> written by
-Tom Christiansen E<lt>tchrist@mox.perl.comE<gt>
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Pod/Find.pm b/Master/tlpkg/tlperl/lib/Pod/Find.pm
deleted file mode 100644
index 0b085b8c9e3..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Find.pm
+++ /dev/null
@@ -1,523 +0,0 @@
-#############################################################################
-# Pod/Find.pm -- finds files containing POD documentation
-#
-# Author: Marek Rouchal <marekr@cpan.org>
-#
-# Copyright (C) 1999-2000 by Marek Rouchal (and borrowing code
-# from Nick Ing-Simmon's PodToHtml). All rights reserved.
-# This file is part of "PodParser". Pod::Find is free software;
-# you can redistribute it and/or modify it under the same terms
-# as Perl itself.
-#############################################################################
-
-package Pod::Find;
-
-use vars qw($VERSION);
-$VERSION = 1.34; ## Current version of this package
-require 5.005; ## requires this Perl version or later
-use Carp;
-
-#############################################################################
-
-=head1 NAME
-
-Pod::Find - find POD documents in directory trees
-
-=head1 SYNOPSIS
-
- use Pod::Find qw(pod_find simplify_name);
- my %pods = pod_find({ -verbose => 1, -inc => 1 });
- foreach(keys %pods) {
- print "found library POD `$pods{$_}' in $_\n";
- }
-
- print "podname=",simplify_name('a/b/c/mymodule.pod'),"\n";
-
- $location = pod_where( { -inc => 1 }, "Pod::Find" );
-
-=head1 DESCRIPTION
-
-B<Pod::Find> provides a set of functions to locate POD files. Note that
-no function is exported by default to avoid pollution of your namespace,
-so be sure to specify them in the B<use> statement if you need them:
-
- use Pod::Find qw(pod_find);
-
-From this version on the typical SCM (software configuration management)
-files/directories like RCS, CVS, SCCS, .svn are ignored.
-
-=cut
-
-use 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 &pod_where &contains_pod);
-
-# package global variables
-my $SIMPLIFY_RX;
-
-=head2 C<pod_find( { %opts } , @directories )>
-
-The function B<pod_find> searches for POD documents in a given set of
-files and/or directories. It returns a hash with the file names as keys
-and the POD name as value. The POD name is derived from the file name
-and its position in the directory tree.
-
-E.g. when searching in F<$HOME/perl5lib>, the file
-F<$HOME/perl5lib/MyModule.pm> would get the POD name I<MyModule>,
-whereas F<$HOME/perl5lib/Myclass/Subclass.pm> would be
-I<Myclass::Subclass>. The name information can be used for POD
-translators.
-
-Only text files containing at least one valid POD command are found.
-
-A warning is printed if more than one POD file with the same POD name
-is found, e.g. F<CPAN.pm> in different directories. This usually
-indicates duplicate occurrences of modules in the I<@INC> search path.
-
-B<OPTIONS> The first argument for B<pod_find> may be a hash reference
-with options. The rest are either directories that are searched
-recursively or files. The POD names of files are the plain basenames
-with any Perl-like extension (.pm, .pl, .pod) stripped.
-
-=over 4
-
-=item C<-verbose =E<gt> 1>
-
-Print progress information while scanning.
-
-=item C<-perl =E<gt> 1>
-
-Apply Perl-specific heuristics to find the correct PODs. This includes
-stripping Perl-like extensions, omitting subdirectories that are numeric
-but do I<not> match the current Perl interpreter's version id, suppressing
-F<site_perl> as a module hierarchy name etc.
-
-=item C<-script =E<gt> 1>
-
-Search for PODs in the current Perl interpreter's installation
-B<scriptdir>. This is taken from the local L<Config|Config> module.
-
-=item C<-inc =E<gt> 1>
-
-Search for PODs in the current Perl interpreter's I<@INC> paths. This
-automatically considers paths specified in the C<PERL5LIB> environment
-as this is prepended to I<@INC> by the Perl interpreter itself.
-
-=back
-
-=cut
-
-# return a hash of the POD files found
-# first argument may be a hashref (options),
-# rest is a list of directories to search recursively
-sub pod_find
-{
- my %opts;
- if(ref $_[0]) {
- %opts = %{shift()};
- }
-
- $opts{-verbose} ||= 0;
- $opts{-perl} ||= 0;
-
- my (@search) = @_;
-
- if($opts{-script}) {
- require Config;
- push(@search, $Config::Config{scriptdir})
- if -d $Config::Config{scriptdir};
- $opts{-perl} = 1;
- }
-
- if($opts{-inc}) {
- if ($^O eq 'MacOS') {
- # tolerate '.', './some_dir' and '(../)+some_dir' on Mac OS
- my @new_INC = @INC;
- for (@new_INC) {
- if ( $_ eq '.' ) {
- $_ = ':';
- } elsif ( $_ =~ s|^((?:\.\./)+)|':' x (length($1)/3)|e ) {
- $_ = ':'. $_;
- } else {
- $_ =~ s|^\./|:|;
- }
- }
- push(@search, grep($_ ne File::Spec->curdir, @new_INC));
- } else {
- push(@search, grep($_ ne File::Spec->curdir, @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)
-
- # Mac OS:
- # * remove ":?site_perl:"
- # * remove :?pod: if followed by *.pod (e.g. in :pod:perlfunc.pod)
-
- if ($^O eq 'MacOS') {
- $SIMPLIFY_RX =
- qq!^(?i:\:?site_perl\:|\:?pod\:(?=.*?\\.pod\\z))*!;
- } else {
- $SIMPLIFY_RX =
- qq!^(?i:site(_perl)?/|\Q$Config::Config{archname}\E/|\\d+\\.\\d+([_.]?\\d+)?/|pod/(?=.*?\\.pod\\z))*!;
- }
- }
-
- my %dirs_visited;
- my %pods;
- my %names;
- my $pwd = cwd();
-
- foreach my $try (@search) {
- unless(File::Spec->file_name_is_absolute($try)) {
- # make path absolute
- $try = File::Spec->catfile($pwd,$try);
- }
- # simplify path
- # on VMS canonpath will vmsify:[the.path], but File::Find::find
- # wants /unixy/paths
- $try = File::Spec->canonpath($try) if ($^O ne 'VMS');
- $try = VMS::Filespec::unixify($try) if ($^O eq 'VMS');
- my $name;
- if(-f $try) {
- if($name = _check_and_extract_name($try, $opts{-verbose})) {
- _check_for_duplicates($try, $name, \%names, \%pods);
- }
- next;
- }
- my $root_rx = $^O eq 'MacOS' ? qq!^\Q$try\E! : qq!^\Q$try\E/!;
- File::Find::find( sub {
- my $item = $File::Find::name;
- if(-d) {
- if($item =~ m{/(?:RCS|CVS|SCCS|\.svn)$}) {
- $File::Find::prune = 1;
- return;
- }
- elsif($dirs_visited{$item}) {
- warn "Directory '$item' already seen, skipping.\n"
- if($opts{-verbose});
- $File::Find::prune = 1;
- return;
- }
- else {
- $dirs_visited{$item} = 1;
- }
- if($opts{-perl} && /^(\d+\.[\d_]+)\z/s && eval "$1" != $]) {
- $File::Find::prune = 1;
- warn "Perl $] version mismatch on $_, skipping.\n"
- if($opts{-verbose});
- }
- return;
- }
- if($name = _check_and_extract_name($item, $opts{-verbose}, $root_rx)) {
- _check_for_duplicates($item, $name, \%names, \%pods);
- }
- }, $try); # end of File::Find::find
- }
- chdir $pwd;
- %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(-f $file && -T $file && ($file =~ /\.(pod|pm|plx?)\z/i || -x $file )) {
- return undef;
- }
-
- return undef unless contains_pod($file,$verbose);
-
- # strip non-significant path components
- # TODO what happens on e.g. Win32?
- my $name = $file;
- if(defined $root_rx) {
- $name =~ s!$root_rx!!s;
- $name =~ s!$SIMPLIFY_RX!!os if(defined $SIMPLIFY_RX);
- }
- else {
- if ($^O eq 'MacOS') {
- $name =~ s/^.*://s;
- } else {
- $name =~ s:^.*/::s;
- }
- }
- _simplify($name);
- $name =~ s!/+!::!g; #/
- if ($^O eq 'MacOS') {
- $name =~ s!:+!::!g; # : -> ::
- } else {
- $name =~ s!/+!::!g; # / -> ::
- }
- $name;
-}
-
-=head2 C<simplify_name( $str )>
-
-The function B<simplify_name> is equivalent to B<basename>, but also
-strips Perl-like extensions (.pm, .pl, .pod) and extensions like
-F<.bat>, F<.cmd> on Win32 and OS/2, or F<.com> on VMS, respectively.
-
-=cut
-
-# basic simplification of the POD name:
-# basename & strip extension
-sub simplify_name {
- my ($str) = @_;
- # remove all path components
- if ($^O eq 'MacOS') {
- $str =~ s/^.*://s;
- } else {
- $str =~ s:^.*/::s;
- }
- _simplify($str);
- $str;
-}
-
-# internal sub only
-sub _simplify {
- # strip Perl's own extensions
- $_[0] =~ s/\.(pod|pm|plx?)\z//i;
- # strip meaningless extensions on Win32 and OS/2
- $_[0] =~ s/\.(bat|exe|cmd)\z//i if($^O =~ /mswin|os2/i);
- # strip meaningless extensions on VMS
- $_[0] =~ s/\.(com)\z//i if($^O eq 'VMS');
-}
-
-# contribution from Tim Jenness <t.jenness@jach.hawaii.edu>
-
-=head2 C<pod_where( { %opts }, $pod )>
-
-Returns the location of a pod document given a search directory
-and a module (e.g. C<File::Find>) or script (e.g. C<perldoc>) name.
-
-Options:
-
-=over 4
-
-=item C<-inc =E<gt> 1>
-
-Search @INC for the pod and also the C<scriptdir> defined in the
-L<Config|Config> module.
-
-=item C<-dirs =E<gt> [ $dir1, $dir2, ... ]>
-
-Reference to an array of search directories. These are searched in order
-before looking in C<@INC> (if B<-inc>). Current directory is used if
-none are specified.
-
-=item C<-verbose =E<gt> 1>
-
-List directories as they are searched
-
-=back
-
-Returns the full path of the first occurrence to the file.
-Package names (eg 'A::B') are automatically converted to directory
-names in the selected directory. (eg on unix 'A::B' is converted to
-'A/B'). Additionally, '.pm', '.pl' and '.pod' are appended to the
-search automatically if required.
-
-A subdirectory F<pod/> is also checked if it exists in any of the given
-search directories. This ensures that e.g. L<perlfunc|perlfunc> is
-found.
-
-It is assumed that if a module name is supplied, that that name
-matches the file name. Pods are not opened to check for the 'NAME'
-entry.
-
-A check is made to make sure that the file that is found does
-contain some pod documentation.
-
-=cut
-
-sub pod_where {
-
- # default options
- my %options = (
- '-inc' => 0,
- '-verbose' => 0,
- '-dirs' => [ File::Spec->curdir ],
- );
-
- # Check for an options hash as first argument
- if (defined $_[0] && ref($_[0]) eq 'HASH') {
- my $opt = shift;
-
- # Merge default options with supplied options
- %options = (%options, %$opt);
- }
-
- # Check usage
- carp 'Usage: pod_where({options}, $pod)' unless (scalar(@_));
-
- # Read argument
- my $pod = shift;
-
- # Split on :: and then join the name together using File::Spec
- my @parts = split (/::/, $pod);
-
- # Get full directory list
- my @search_dirs = @{ $options{'-dirs'} };
-
- if ($options{'-inc'}) {
-
- require Config;
-
- # Add @INC
- if ($^O eq 'MacOS' && $options{'-inc'}) {
- # tolerate '.', './some_dir' and '(../)+some_dir' on Mac OS
- my @new_INC = @INC;
- for (@new_INC) {
- if ( $_ eq '.' ) {
- $_ = ':';
- } elsif ( $_ =~ s|^((?:\.\./)+)|':' x (length($1)/3)|e ) {
- $_ = ':'. $_;
- } else {
- $_ =~ s|^\./|:|;
- }
- }
- push (@search_dirs, @new_INC);
- } elsif ($options{'-inc'}) {
- push (@search_dirs, @INC);
- }
-
- # Add location of pod documentation for perl man pages (eg perlfunc)
- # This is a pod directory in the private install tree
- #my $perlpoddir = File::Spec->catdir($Config::Config{'installprivlib'},
- # 'pod');
- #push (@search_dirs, $perlpoddir)
- # if -d $perlpoddir;
-
- # Add location of binaries such as pod2text
- push (@search_dirs, $Config::Config{'scriptdir'})
- if -d $Config::Config{'scriptdir'};
- }
-
- warn "Search path is: ".join(' ', @search_dirs)."\n"
- if $options{'-verbose'};
-
- # Loop over directories
- Dir: foreach my $dir ( @search_dirs ) {
-
- # Don't bother if can't find the directory
- if (-d $dir) {
- warn "Looking in directory $dir\n"
- if $options{'-verbose'};
-
- # Now concatenate this directory with the pod we are searching for
- my $fullname = File::Spec->catfile($dir, @parts);
- warn "Filename is now $fullname\n"
- if $options{'-verbose'};
-
- # Loop over possible extensions
- foreach my $ext ('', '.pod', '.pm', '.pl') {
- my $fullext = $fullname . $ext;
- if (-f $fullext &&
- contains_pod($fullext, $options{'-verbose'}) ) {
- warn "FOUND: $fullext\n" if $options{'-verbose'};
- return $fullext;
- }
- }
- } else {
- warn "Directory $dir does not exist\n"
- if $options{'-verbose'};
- next Dir;
- }
- # for some strange reason the path on MacOS/darwin/cygwin is
- # 'pods' not 'pod'
- # this could be the case also for other systems that
- # have a case-tolerant file system, but File::Spec
- # does not recognize 'darwin' yet. And cygwin also has "pods",
- # but is not case tolerant. Oh well...
- if((File::Spec->case_tolerant || $^O =~ /macos|darwin|cygwin/i)
- && -d File::Spec->catdir($dir,'pods')) {
- $dir = File::Spec->catdir($dir,'pods');
- redo Dir;
- }
- if(-d File::Spec->catdir($dir,'pod')) {
- $dir = File::Spec->catdir($dir,'pod');
- redo Dir;
- }
- }
- # No match;
- return undef;
-}
-
-=head2 C<contains_pod( $file , $verbose )>
-
-Returns true if the supplied filename (not POD module) contains some pod
-information.
-
-=cut
-
-sub contains_pod {
- my $file = shift;
- my $verbose = 0;
- $verbose = shift if @_;
-
- # check for one line of POD
- unless(open(POD,"<$file")) {
- warn "Error: $file is unreadable: $!\n";
- return undef;
- }
-
- local $/ = undef;
- my $pod = <POD>;
- close(POD) || die "Error closing $file: $!\n";
- unless($pod =~ /^=(head\d|pod|over|item)\b/m) {
- warn "No POD in $file, skipping.\n"
- if($verbose);
- return 0;
- }
-
- return 1;
-}
-
-=head1 AUTHOR
-
-Please report bugs using L<http://rt.cpan.org>.
-
-Marek Rouchal E<lt>marekr@cpan.orgE<gt>,
-heavily borrowing code from Nick Ing-Simmons' PodToHtml.
-
-Tim Jenness E<lt>t.jenness@jach.hawaii.eduE<gt> provided
-C<pod_where> and C<contains_pod>.
-
-=head1 SEE ALSO
-
-L<Pod::Parser>, L<Pod::Checker>, L<perldoc>
-
-=cut
-
-1;
-
diff --git a/Master/tlpkg/tlperl/lib/Pod/Functions.pm b/Master/tlpkg/tlperl/lib/Pod/Functions.pm
deleted file mode 100644
index 0e250cf0b50..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Functions.pm
+++ /dev/null
@@ -1,376 +0,0 @@
-package Pod::Functions;
-use strict;
-
-=head1 NAME
-
-Pod::Functions - Group Perl's functions a la perlfunc.pod
-
-=head1 SYNOPSIS
-
- use Pod::Functions;
-
- my @misc_ops = @{ $Kinds{ 'Misc' } };
- my $misc_dsc = $Type_Description{ 'Misc' };
-
-or
-
- perl /path/to/lib/Pod/Functions.pm
-
-This will print a grouped list of Perl's functions, like the
-L<perlfunc/"Perl Functions by Category"> section.
-
-=head1 DESCRIPTION
-
-It exports the following variables:
-
-=over 4
-
-=item %Kinds
-
-This holds a hash-of-lists. Each list contains the functions in the category
-the key denotes.
-
-=item %Type
-
-In this hash each key represents a function and the value is the category.
-The category can be a comma separated list.
-
-=item %Flavor
-
-In this hash each key represents a function and the value is a short
-description of that function.
-
-=item %Type_Description
-
-In this hash each key represents a category of functions and the value is
-a short description of that category.
-
-=item @Type_Order
-
-This list of categories is used to produce the same order as the
-L<perlfunc/"Perl Functions by Category"> section.
-
-=back
-
-=head1 CHANGES
-
-1.02 20020813 <abe@ztreet.demon.nl>
- de-typo in the SYNOPSIS section (thanks Mike Castle for noticing)
-
-1.01 20011229 <abe@ztreet.demon.nl>
- fixed some bugs that slipped in after 5.6.1
- added the pod
- finished making it strict safe
-
-1.00 ??
- first numbered version
-
-=cut
-
-our $VERSION = '1.03';
-
-require Exporter;
-
-our @ISA = qw(Exporter);
-our @EXPORT = qw(%Kinds %Type %Flavor %Type_Description @Type_Order);
-
-our(%Kinds, %Type, %Flavor);
-
-our %Type_Description = (
- 'ARRAY' => 'Functions for real @ARRAYs',
- 'Binary' => 'Functions for fixed length data or records',
- 'File' => 'Functions for filehandles, files, or directories',
- 'Flow' => 'Keywords related to control flow of your perl program',
- 'HASH' => 'Functions for real %HASHes',
- 'I/O' => 'Input and output functions',
- 'LIST' => 'Functions for list data',
- 'Math' => 'Numeric functions',
- 'Misc' => 'Miscellaneous functions',
- 'Modules' => 'Keywords related to perl modules',
- 'Network' => 'Fetching network info',
- 'Objects' => 'Keywords related to classes and object-orientedness',
- 'Process' => 'Functions for processes and process groups',
- 'Regexp' => 'Regular expressions and pattern matching',
- 'Socket' => 'Low-level socket functions',
- 'String' => 'Functions for SCALARs or strings',
- 'SysV' => 'System V interprocess communication functions',
- 'Time' => 'Time-related functions',
- 'User' => 'Fetching user and group info',
- 'Namespace' => 'Keywords altering or affecting scoping of identifiers',
-);
-
-our @Type_Order = qw{
- String
- Regexp
- Math
- ARRAY
- LIST
- HASH
- I/O
- Binary
- File
- Flow
- Namespace
- Misc
- Process
- Modules
- Objects
- Socket
- SysV
- User
- Network
- Time
-};
-
-while (<DATA>) {
- chomp;
- s/#.*//;
- next unless $_;
- my($name, $type, $text) = split " ", $_, 3;
- $Type{$name} = $type;
- $Flavor{$name} = $text;
- for my $t ( split /[,\s]+/, $type ) {
- push @{$Kinds{$t}}, $name;
- }
-}
-
-close DATA;
-
-my( $typedesc, $list );
-unless (caller) {
- foreach my $type ( @Type_Order ) {
- $list = join(", ", sort @{$Kinds{$type}});
- $typedesc = $Type_Description{$type} . ":";
- write;
- }
-}
-
-format =
-
-^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- $typedesc
-~~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- $typedesc
- ~~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- $list
-.
-
-1;
-
-__DATA__
--X File a file test (-r, -x, etc)
-abs Math absolute value function
-accept Socket accept an incoming socket connect
-alarm Process schedule a SIGALRM
-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 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
-chmod File changes the permissions on a list of files
-chomp String remove a trailing record separator from a string
-chop String remove the last character from a string
-chown File change the owership on a list of files
-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 remote socket
-continue Flow optional trailing block in a while or foreach
-cos Math cosine function
-crypt String one-way passwd-style encryption
-dbmclose Objects,I/O breaks binding on a tied dbm file
-dbmopen Objects,I/O create binding on a tied dbm file
-defined Misc test whether a value, variable, or function is defined
-delete HASH deletes a value from a hash
-die I/O,Flow raise an exception or bail out
-do Flow,Modules turn a BLOCK into a TERM
-dump Misc,Flow create an immediate core dump
-each HASH retrieve the next key/value pair from a hash
-endgrent User be done using group file
-endhostent User be done using hosts file
-endnetent User be done using networks file
-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 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 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
-format I/O declare a picture format with use by the write() function
-formline Misc internal function used for formats
-getc I/O get the next character from the filehandle
-getgrent User get next group record
-getgrgid User get group record given group user ID
-getgrnam User get group record given group name
-gethostbyaddr Network get host record given its address
-gethostbyname Network get host record given name
-gethostent Network get next hosts record
-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 end of a socket connection
-getpgrp Process get process group
-getppid Process get parent process ID
-getpriority Process get current nice value
-getprotobyname Network get protocol record given name
-getprotobynumber Network get protocol record numeric protocol
-getprotoent Network get next protocols record
-getpwent User get next passwd record
-getpwnam User get passwd record given user login name
-getpwuid User get passwd record given user ID
-getservbyname Network get services record given its name
-getservbyport Network get services record given numeric port
-getservent Network get next services record
-getsockname Socket retrieve the sockaddr for a given socket
-getsockopt Socket get socket options on a given socket
-glob File expand filenames using wildcards
-gmtime Time convert UNIX time into record or string using Greenwich time
-goto Flow create spaghetti code
-grep LIST locate elements in a list test true against a given criterion
-hex Math,String convert a string to a hexadecimal number
-import Modules,Namespace patch a module's namespace into your own
-index String find a substring within a string
-int Math get the integer portion of a number
-ioctl File system-dependent device control system call
-join LIST join a list into a string using a separator
-keys HASH retrieve list of indices from a hash
-kill Process send a signal to a process or process group
-last Flow exit a block prematurely
-lc String return lower-case version of a string
-lcfirst String return a string with just the next letter in lower case
-length String return the number of bytes in a string
-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
-map LIST apply a change to a list to get back a new list with the changes
-mkdir File create a directory
-msgctl SysV SysV IPC message control operations
-msgget SysV get SysV IPC message queue
-msgrcv SysV receive a SysV IPC message from a message queue
-msgsnd SysV send a SysV IPC message to a message queue
-my Misc,Namespace declare and assign a local variable (lexical scoping)
-next Flow iterate a block prematurely
-no Modules unimport some module symbols or semantics at compile time
-package Modules,Objects,Namespace declare a separate global namespace
-prototype Flow,Misc get the prototype (if any) of a subroutine
-oct String,Math convert a string to an octal number
-open File open a file, pipe, or descriptor
-opendir File open a directory
-ord String find a character's numeric representation
-our Misc,Namespace declare and assign a package variable (lexical scoping)
-pack Binary,String convert a list into a binary representation
-pipe Process open a pair of connected filehandles
-pop ARRAY remove the last element from an array and return it
-pos Regexp find or set the offset for the last/next m//g search
-print I/O output a list to a filehandle
-printf I/O output a formatted list to a filehandle
-push ARRAY append one or more elements to an array
-q/STRING/ String singly quote a string
-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/STRING/ 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
-readpipe Process execute a system command and collect standard output
-recv Socket receive a message over a Socket
-redo Flow start this loop iteration over again
-ref Objects find out the type of thing being referenced
-rename File change a filename
-require Modules load in external functions from a library at runtime
-reset Misc clear all variables of a given name
-return Flow get out of a function early
-reverse String,LIST flip a string or a list
-rewinddir I/O reset directory handle
-rindex String right-to-left substring search
-rmdir File remove a directory
-s/// Regexp replace a pattern with a string
-scalar Misc force a scalar context
-seek I/O reposition file pointer for random-access I/O
-seekdir I/O reposition directory pointer
-select I/O reset default output or do I/O multiplexing
-semctl SysV SysV semaphore control operations
-semget SysV get set of SysV semaphores
-semop SysV SysV semaphore operations
-send Socket send a message over a socket
-setgrent User prepare group file for use
-sethostent Network prepare hosts file for use
-setnetent Network prepare networks file for use
-setpgrp Process set the process group of a process
-setpriority Process set a process's nice value
-setprotoent Network prepare protocols file for use
-setpwent User prepare passwd file for use
-setservent Network prepare services file for use
-setsockopt Socket set some socket options
-shift ARRAY remove the first element of an array, and return it
-shmctl SysV SysV shared memory operations
-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 sine of a number
-sleep Process block for some number of seconds
-socket Socket create a socket
-socketpair Socket create a pair of sockets
-sort LIST sort a list of values
-splice ARRAY add or remove elements anywhere in an array
-split Regexp split up a string using a regexp delimiter
-sprintf String formatted print into a string
-sqrt Math square root function
-srand Math seed the random number generator
-stat File get a file's status information
-study Regexp optimize input data for repeated searches
-sub Flow declare a subroutine, possibly anonymously
-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
-sysopen File open a file, pipe, or descriptor
-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
-telldir I/O get current seekpointer on a directory handle
-tie Objects bind a variable to an object class
-tied Objects get a reference to the object underlying a tied variable
-time Time return number of seconds since 1970
-times Process,Time return elapsed time for self and child processes
-tr/// String transliterate a string
-truncate I/O shorten a file
-uc String return upper-case version of a string
-ucfirst String return a string with just the next letter in upper case
-umask File set file creation mode mask
-undef Misc remove a variable or function definition
-unlink File remove one link to a file
-unpack Binary,LIST convert binary structure into normal perl variables
-unshift ARRAY prepend more elements to the beginning of a list
-untie Objects break a tie binding to a variable
-use Modules,Namespace load a module and import its namespace
-use Objects load in a module at compile time
-utime File set a file's last access and modify times
-values HASH return a list of the values in a hash
-vec Binary test or set particular bits in a string
-wait Process wait for any child process to die
-waitpid Process wait for a particular child process to die
-wantarray Misc,Flow get void vs scalar vs list context of current subroutine call
-warn I/O print debugging info
-write I/O print a picture record
-y/// String transliterate a string
diff --git a/Master/tlpkg/tlperl/lib/Pod/Html.pm b/Master/tlpkg/tlperl/lib/Pod/Html.pm
deleted file mode 100644
index 4b9752bc6fc..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Html.pm
+++ /dev/null
@@ -1,2123 +0,0 @@
-package Pod::Html;
-use strict;
-require Exporter;
-
-use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
-$VERSION = 1.0504;
-@ISA = qw(Exporter);
-@EXPORT = qw(pod2html htmlify);
-@EXPORT_OK = qw(anchorify);
-
-use Carp;
-use Config;
-use Cwd;
-use File::Spec;
-use File::Spec::Unix;
-use Getopt::Long;
-
-use locale; # make \w work right in non-ASCII lands
-
-=head1 NAME
-
-Pod::Html - module to convert pod files to HTML
-
-=head1 SYNOPSIS
-
- use Pod::Html;
- pod2html([options]);
-
-=head1 DESCRIPTION
-
-Converts files from pod format (see L<perlpod>) to HTML format. It
-can automatically generate indexes and cross-references, and it keeps
-a cache of things it knows how to cross-reference.
-
-=head1 ARGUMENTS
-
-Pod::Html takes the following arguments:
-
-=over 4
-
-=item backlink
-
- --backlink="Back to Top"
-
-Adds "Back to Top" links in front of every C<head1> heading (except for
-the first). By default, no backlinks are generated.
-
-=item cachedir
-
- --cachedir=name
-
-Creates the item and directory caches in the given directory.
-
-=item css
-
- --css=stylesheet
-
-Specify the URL of a cascading style sheet. Also disables all HTML/CSS
-C<style> attributes that are output by default (to avoid conflicts).
-
-=item flush
-
- --flush
-
-Flushes the item and directory caches.
-
-=item header
-
- --header
- --noheader
-
-Creates header and footer blocks containing the text of the C<NAME>
-section. By default, no headers are generated.
-
-=item help
-
- --help
-
-Displays the usage message.
-
-=item hiddendirs
-
- --hiddendirs
- --nohiddendirs
-
-Include hidden directories in the search for POD's in podpath if recurse
-is set.
-The default is not to traverse any directory whose name begins with C<.>.
-See L</"podpath"> and L</"recurse">.
-
-[This option is for backward compatibility only.
-It's hard to imagine that one would usefully create a module with a
-name component beginning with C<.>.]
-
-=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
-
-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
-
-Specify the pod file to convert. Input is taken from STDIN if no
-infile is specified.
-
-=item libpods
-
- --libpods=name:...:name
-
-List of page names (eg, "perlfunc") which contain linkable C<=item>s.
-
-=item netscape
-
- --netscape
- --nonetscape
-
-B<Deprecated>, has no effect. For backwards compatibility only.
-
-=item outfile
-
- --outfile=name
-
-Specify the HTML file to create. Output goes to STDOUT if no outfile
-is specified.
-
-=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 podroot
-
- --podroot=name
-
-Specify the base directory for finding library pods.
-
-=item quiet
-
- --quiet
- --noquiet
-
-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 recurse
-
- --recurse
- --norecurse
-
-Recurse into subdirectories specified in podpath (default behaviour).
-
-=item title
-
- --title=title
-
-Specify the title of the resulting HTML file.
-
-=item verbose
-
- --verbose
- --noverbose
-
-Display progress messages. By default, they won't be displayed.
-
-=back
-
-=head1 EXAMPLE
-
- pod2html("pod2html",
- "--podpath=lib:ext:pod:vms",
- "--podroot=/usr/src/perl",
- "--htmlroot=/perl/nmanual",
- "--libpods=perlfunc:perlguts:perlvar:perlrun:perlop",
- "--recurse",
- "--infile=foo.pod",
- "--outfile=/perl/nmanual/foo.html");
-
-=head1 ENVIRONMENT
-
-Uses C<$Config{pod2html}> to setup default options.
-
-=head1 AUTHOR
-
-Tom Christiansen, E<lt>tchrist@perl.comE<gt>.
-
-=head1 SEE ALSO
-
-L<perlpod>
-
-=head1 COPYRIGHT
-
-This program is distributed under the Artistic License.
-
-=cut
-
-
-my($Cachedir);
-my($Dircache, $Itemcache);
-my @Begin_Stack;
-my @Libpods;
-my($Htmlroot, $Htmldir, $Htmlfile, $Htmlfileurl);
-my($Podfile, @Podpath, $Podroot);
-my $Css;
-
-my $Recurse;
-my $Quiet;
-my $HiddenDirs;
-my $Verbose;
-my $Doindex;
-
-my $Backlink;
-my($Listlevel, @Listtype);
-my $ListNewTerm;
-use vars qw($Ignore); # need to localize it later.
-
-my(%Items_Named, @Items_Seen);
-my($Title, $Header);
-
-my $Top;
-my $Paragraph;
-
-my %Sections;
-
-# Caches
-my %Pages = (); # associative array used to find the location
- # of pages referenced by L<> links.
-my %Items = (); # associative array used to find the location
- # of =item directives referenced by C<> links
-
-my %Local_Items;
-my $Is83;
-my $PTQuote;
-
-my $Curdir = File::Spec->curdir;
-
-init_globals();
-
-sub init_globals {
- $Cachedir = "."; # The directory to which item and directory
- # caches will be written.
-
- $Dircache = "pod2htmd.tmp";
- $Itemcache = "pod2htmi.tmp";
-
- @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
- $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.
-
- $Podfile = ""; # read from stdin by default
- @Podpath = (); # list of directories containing library pods.
- $Podroot = $Curdir; # 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
- @Listtype = (); # list types for open lists
- $ListNewTerm = 0; # indicates new term in definition list; used
- # to correctly open/close <dd> tags
- $Ignore = 1; # whether or not to format text. we don't
- # format text until we hit our first pod
- # directive.
-
- @Items_Seen = (); # for multiples of the same item in perlfunc
- %Items_Named = ();
- $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.
- $Paragraph = ''; # which paragraph we're processing (used
- # for error messages)
- $PTQuote = 0; # status of double-quote conversion
- %Sections = (); # sections within this page
-
- %Local_Items = ();
- $Is83 = $^O eq 'dos'; # Is it an 8.3 filesystem?
-}
-
-#
-# clean_data: global clean-up of pod data
-#
-sub clean_data($){
- my( $dataref ) = @_;
- for my $i ( 0..$#{$dataref} ) {
- ${$dataref}[$i] =~ s/\s+\Z//;
-
- # have a look for all-space lines
- if( ${$dataref}[$i] =~ /^\s+$/m and $dataref->[$i] !~ /^\s/ ){
- my @chunks = split( /^\s+$/m, ${$dataref}[$i] );
- splice( @$dataref, $i, 1, @chunks );
- }
- }
-}
-
-
-sub pod2html {
- local(@ARGV) = @_;
- local($/);
- local $_;
-
- init_globals();
-
- $Is83 = 0 if (defined (&Dos::UseLFN) && Dos::UseLFN());
-
- # cache of %Pages and %Items from last time we ran pod2html
-
- #undef $opt_help if defined $opt_help;
-
- # parse the command-line parameters
- parse_command_line();
-
- # escape the backlink argument (same goes for title but is done later...)
- $Backlink = html_escape($Backlink) if defined $Backlink;
-
- # set some variables to their default values if necessary
- local *POD;
- unless (@ARGV && $ARGV[0]) {
- $Podfile = "-" unless $Podfile; # stdin
- open(POD, "<$Podfile")
- || die "$0: cannot open $Podfile file for input: $!\n";
- } else {
- $Podfile = $ARGV[0]; # XXX: might be more filenames
- *POD = *ARGV;
- }
- $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);
-
- # be eol agnostic
- for (@poddata) {
- if (/\r/) {
- if (/\r\n/) {
- @poddata = map { s/\r\n/\n/g;
- /\n\n/ ?
- map { "$_\n\n" } split /\n\n/ :
- $_ } @poddata;
- } else {
- @poddata = map { s/\r/\n/g;
- /\n\n/ ?
- map { "$_\n\n" } split /\n\n/ :
- $_ } @poddata;
- }
- last;
- }
- }
-
- 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 headings in $Podfile\n" if $Verbose;
- }
-
- # open the output file
- open(HTML, ">$Htmlfile")
- || die "$0: cannot open $Htmlfile file for output: $!\n";
-
- # put a title in the HTML file if one wasn't specified
- if ($Title eq '') {
- TITLE_SEARCH: {
- for (my $i = 0; $i < @poddata; $i++) {
- if ($poddata[$i] =~ /^=head1\s*NAME\b/m) {
- for my $para ( @poddata[$i, $i+1] ) {
- last TITLE_SEARCH
- if ($Title) = $para =~ /(\S+\s+-+.*\S)/s;
- }
- }
-
- }
- }
- }
- 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*(.*)/;
- }
- warn "adopted '$Title' as title for $Podfile\n"
- if $Verbose and $Title;
- }
- if ($Title) {
- $Title =~ s/\s*\(.*\)//;
- } else {
- warn "$0: no title for $Podfile.\n" unless $Quiet;
- $Podfile =~ /^(.*)(\.[^.\/]+)?\z/s;
- $Title = ($Podfile eq "-" ? 'No Title' : $1);
- warn "using $Title" if $Verbose;
- }
- $Title = html_escape($Title);
-
- my $csslink = '';
- my $bodystyle = ' style="background-color: white"';
- my $tdstyle = ' style="background-color: #cccccc"';
-
- if ($Css) {
- $csslink = qq(\n<link rel="stylesheet" href="$Css" type="text/css" />);
- $csslink =~ s,\\,/,g;
- $csslink =~ s,(/.):,$1|,;
- $bodystyle = '';
- $tdstyle = '';
- }
-
- my $block = $Header ? <<END_OF_BLOCK : '';
-<table border="0" width="100%" cellspacing="0" cellpadding="3">
-<tr><td class="block"$tdstyle valign="middle">
-<big><strong><span class="block">&nbsp;$Title</span></strong></big>
-</td></tr>
-</table>
-END_OF_BLOCK
-
- print HTML <<END_OF_HEAD;
-<?xml version="1.0" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>$Title</title>$csslink
-<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-<link rev="made" href="mailto:$Config{perladmin}" />
-</head>
-
-<body$bodystyle>
-$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( \%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 "<p><a name=\"__index__\"></a></p>\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 and $index;
-
- # now convert this file
- 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);
- } elsif (/^=end\s+(\S+)\s*(.*)/si) {# =end
- process_end($1, $2);
- } elsif (/^=cut/) { # =cut
- process_cut();
- } elsif (/^=pod/) { # =pod
- process_pod();
- } else {
- next if @Begin_Stack && $Begin_Stack[-1] ne 'html';
-
- if (/^=(head[1-6])\s+(.*\S)/s) { # =head[1-6] heading
- process_head( $1, $2, $Doindex && $index );
- } elsif (/^=item\s*(.*\S)?/sm) { # =item text
- 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
- process_for($1,$2);
- } else {
- /^=(\S*)\s*/;
- warn "$0: $Podfile: unknown pod directive '$1' in "
- . "paragraph $Paragraph. ignoring.\n" unless $Quiet;
- }
- }
- $Top = 0;
- }
- else {
- next if $Ignore;
- next if @Begin_Stack && $Begin_Stack[-1] ne 'html';
- print HTML and next if @Begin_Stack && $Begin_Stack[-1] eq 'html';
- my $text = $_;
-
- # Open tag for definition list as we have something to put in it
- if( $ListNewTerm ){
- print HTML "<dd>\n";
- $ListNewTerm = 0;
- }
-
- 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
-
- 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>
-END_OF_TAIL
-
- # close the html file
- close(HTML);
-
- warn "Finished\n" if $Verbose;
-}
-
-##############################################################################
-
-sub usage {
- my $podfile = shift;
- warn "$0: $podfile: @_\n" if @_;
- die <<END_OF_USAGE;
-Usage: $0 --help --htmlroot=<name> --infile=<name> --outfile=<name>
- --podpath=<name>:...:<name> --podroot=<name>
- --libpods=<name>:...:<name> --recurse --verbose --index
- --netscape --norecurse --noindex --cachedir=<name>
-
- --backlink - set text for "back to top" links (default: none).
- --cachedir - directory for the item and directory cache files.
- --css - stylesheet URL
- --flush - flushes the item and directory caches.
- --[no]header - produce block header/footer (default is no headers).
- --help - prints this message.
- --hiddendirs - search hidden directories in podpath
- --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.
- --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 - suppress 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).
- --[no]netscape - deprecated, has no effect. for backwards compatibility only.
-
-END_OF_USAGE
-
-}
-
-sub parse_command_line {
- my ($opt_backlink,$opt_cachedir,$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,$opt_hiddendirs);
-
- unshift @ARGV, split ' ', $Config{pod2html} if $Config{pod2html};
- my $result = GetOptions(
- 'backlink=s' => \$opt_backlink,
- 'cachedir=s' => \$opt_cachedir,
- 'css=s' => \$opt_css,
- 'flush' => \$opt_flush,
- 'header!' => \$opt_header,
- 'help' => \$opt_help,
- 'hiddendirs!'=> \$opt_hiddendirs,
- 'htmldir=s' => \$opt_htmldir,
- 'htmlroot=s' => \$opt_htmlroot,
- 'index!' => \$opt_index,
- 'infile=s' => \$opt_infile,
- 'libpods=s' => \$opt_libpods,
- 'netscape!' => \$opt_netscape,
- 'outfile=s' => \$opt_outfile,
- 'podpath=s' => \$opt_podpath,
- 'podroot=s' => \$opt_podroot,
- 'quiet!' => \$opt_quiet,
- 'recurse!' => \$opt_recurse,
- 'title=s' => \$opt_title,
- '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.
-
- @Podpath = split(":", $opt_podpath) if defined $opt_podpath;
- @Libpods = split(":", $opt_libpods) if defined $opt_libpods;
-
- $Backlink = $opt_backlink if defined $opt_backlink;
- $Cachedir = $opt_cachedir if defined $opt_cachedir;
- $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;
- $HiddenDirs = $opt_hiddendirs if defined $opt_hiddendirs;
- $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;
- $Dircache = "$Cachedir/pod2htmd.tmp";
- $Itemcache = "$Cachedir/pod2htmi.tmp";
- if (defined $opt_flush) {
- 1 while unlink($Dircache, $Itemcache);
- }
-}
-
-
-my $Saved_Cache_Key;
-
-sub get_cache {
- my($dircache, $itemcache, $podpath, $podroot, $recurse) = @_;
- my @cache_key_args = @_;
-
- # A first-level cache:
- # Don't bother reading the cache files if they still apply
- # and haven't changed since we last read them.
-
- my $this_cache_key = cache_key(@cache_key_args);
-
- return if $Saved_Cache_Key and $this_cache_key eq $Saved_Cache_Key;
-
- # load the cache of %Pages and %Items if possible. $tests will be
- # non-zero if successful.
- my $tests = 0;
- if (-f $dircache && -f $itemcache) {
- warn "scanning for item cache\n" if $Verbose;
- $tests = load_cache($dircache, $itemcache, $podpath, $podroot);
- }
-
- # if we didn't succeed in loading the cache then we must (re)build
- # %Pages and %Items.
- if (!$tests) {
- warn "scanning directories in pod-path\n" if $Verbose;
- scan_podpath($podroot, $recurse, 0);
- }
- $Saved_Cache_Key = cache_key(@cache_key_args);
-}
-
-sub cache_key {
- my($dircache, $itemcache, $podpath, $podroot, $recurse) = @_;
- return join('!', $dircache, $itemcache, $recurse,
- @$podpath, $podroot, stat($dircache), stat($itemcache));
-}
-
-#
-# load_cache - tries to find if the caches stored in $dircache and $itemcache
-# 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);
- local $_;
-
- $tests = 0;
-
- open(CACHE, "<$itemcache") ||
- die "$0: error opening $itemcache for reading: $!\n";
- $/ = "\n";
-
- # is it the same podpath?
- $_ = <CACHE>;
- chomp($_);
- $tests++ if (join(":", @$podpath) eq $_);
-
- # is it the same podroot?
- $_ = <CACHE>;
- chomp($_);
- $tests++ if ($podroot eq $_);
-
- # load the cache if its good
- if ($tests != 2) {
- close(CACHE);
- return 0;
- }
-
- warn "loading item cache\n" if $Verbose;
- while (<CACHE>) {
- /(.*?) (.*)$/;
- $Items{$1} = $2;
- }
- close(CACHE);
-
- warn "scanning for directory cache\n" if $Verbose;
- open(CACHE, "<$dircache") ||
- die "$0: error opening $dircache for reading: $!\n";
- $/ = "\n";
- $tests = 0;
-
- # is it the same podpath?
- $_ = <CACHE>;
- chomp($_);
- $tests++ if (join(":", @$podpath) eq $_);
-
- # is it the same podroot?
- $_ = <CACHE>;
- chomp($_);
- $tests++ if ($podroot eq $_);
-
- # load the cache if its good
- if ($tests != 2) {
- close(CACHE);
- return 0;
- }
-
- warn "loading directory cache\n" if $Verbose;
- while (<CACHE>) {
- /(.*?) (.*)$/;
- $Pages{$1} = $2;
- }
-
- close(CACHE);
-
- return 1;
-}
-
-#
-# scan_podpath - scans the directories specified in @podpath for directories,
-# .pod files, and .pm files. it also scans the pod files specified in
-# @Libpods for =item directives.
-#
-sub scan_podpath {
- my($podroot, $recurse, $append) = @_;
- my($pwd, $dir);
- my($libpod, $dirname, $pod, @files, @poddata);
-
- unless($append) {
- %Items = ();
- %Pages = ();
- }
-
- # scan each directory listed in @Podpath
- $pwd = getcwd();
- chdir($podroot)
- || die "$0: error changing to directory $podroot: $!\n";
- foreach $dir (@Podpath) {
- scan_dir($dir, $recurse);
- }
-
- # scan the pods listed in @Libpods for =item directives
- foreach $libpod (@Libpods) {
- # if the page isn't defined then we won't know where to find it
- # on the system.
- next unless defined $Pages{$libpod} && $Pages{$libpod};
-
- # if there is a directory then use the .pod and .pm files within it.
- # 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)\z/ && ! -d $_, readdir(DIR));
- closedir(DIR);
-
- # scan each .pod and .pm file for =item directives
- foreach $pod (@files) {
- open(POD, "<$dirname/$pod") ||
- die "$0: error opening $dirname/$pod for input: $!\n";
- @poddata = <POD>;
- close(POD);
- clean_data( \@poddata );
-
- scan_items( \%Items, "$dirname/$pod", @poddata);
- }
-
- # use the names of files as =item directives too.
-### 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
- $pod = $1;
- open(POD, "<$pod") ||
- die "$0: error opening $pod for input: $!\n";
- @poddata = <POD>;
- close(POD);
- clean_data( \@poddata );
-
- scan_items( \%Items, "$pod", @poddata);
- } else {
- warn "$0: shouldn't be here (line ".__LINE__."\n" unless $Quiet;
- }
- }
- @poddata = (); # clean-up a bit
-
- chdir($pwd)
- || die "$0: error changing to directory $pwd: $!\n";
-
- # cache the item list for later use
- warn "caching items for later use\n" if $Verbose;
- open(CACHE, ">$Itemcache") ||
- die "$0: error open $Itemcache for writing: $!\n";
-
- print CACHE join(":", @Podpath) . "\n$podroot\n";
- foreach my $key (keys %Items) {
- print CACHE "$key $Items{$key}\n";
- }
-
- close(CACHE);
-
- # cache the directory list for later use
- warn "caching directories for later use\n" if $Verbose;
- open(CACHE, ">$Dircache") ||
- die "$0: error open $Dircache for writing: $!\n";
-
- print CACHE join(":", @Podpath) . "\n$podroot\n";
- foreach my $key (keys %Pages) {
- print CACHE "$key $Pages{$key}\n";
- }
-
- close(CACHE);
-}
-
-#
-# scan_dir - scans the directory specified in $dir for subdirectories, .pod
-# files, and .pm files. notes those that it finds. this information will
-# be used later in order to figure out where the pages specified in L<>
-# links are on the filesystem.
-#
-sub scan_dir {
- my($dir, $recurse) = @_;
- my($t, @subdirs, @pods, $pod, $dirname, @dirs);
- local $_;
-
- @subdirs = ();
- @pods = ();
-
- opendir(DIR, $dir) ||
- die "$0: error opening directory $dir: $!\n";
- while (defined($_ = readdir(DIR))) {
- if (-d "$dir/$_" && $_ ne "." && $_ ne ".."
- && ($HiddenDirs || !/^\./)
- ) { # directory
- $Pages{$_} = "" unless defined $Pages{$_};
- $Pages{$_} .= "$dir/$_:";
- push(@subdirs, $_);
- } elsif (/\.pod\z/) { # .pod
- s/\.pod\z//;
- $Pages{$_} = "" unless defined $Pages{$_};
- $Pages{$_} .= "$dir/$_.pod:";
- push(@pods, "$dir/$_.pod");
- } elsif (/\.html\z/) { # .html
- s/\.html\z//;
- $Pages{$_} = "" unless defined $Pages{$_};
- $Pages{$_} .= "$dir/$_.pod:";
- } elsif (/\.pm\z/) { # .pm
- s/\.pm\z//;
- $Pages{$_} = "" unless defined $Pages{$_};
- $Pages{$_} .= "$dir/$_.pm:";
- push(@pods, "$dir/$_.pm");
- } elsif (-T "$dir/$_") { # script(?)
- local *F;
- if (open(F, "$dir/$_")) {
- my $line;
- while (defined($line = <F>)) {
- if ($line =~ /^=(?:pod|head1)/) {
- $Pages{$_} = "" unless defined $Pages{$_};
- $Pages{$_} .= "$dir/$_.pod:";
- last;
- }
- }
- close(F);
- }
- }
- }
- closedir(DIR);
-
- # recurse on the subdirectories if necessary
- if ($recurse) {
- foreach my $subdir (@subdirs) {
- scan_dir("$dir/$subdir", $recurse);
- }
- }
-}
-
-#
-# scan_headings - scan a pod file for head[1-6] tags, note the tags, and
-# build an index.
-#
-sub scan_headings {
- my($sections, @data) = @_;
- my($tag, $which_head, $otitle, $listdepth, $index);
-
- local $Ignore = 0;
-
- $listdepth = 0;
- $index = "";
-
- # scan for =head directives, note their name, and build an index
- # pointing to each of them.
- foreach my $line (@data) {
- if ($line =~ /^=(head)([1-6])\s+(.*)/) {
- ($tag, $which_head, $otitle) = ($1,$2,$3);
-
- my $title = depod( $otitle );
- my $name = anchorify( $title );
- $$sections{$name} = 1;
- $title = process_text( \$otitle );
-
- while ($which_head != $listdepth) {
- if ($which_head > $listdepth) {
- $index .= "\n" . ("\t" x $listdepth) . "<ul>\n";
- $listdepth++;
- } elsif ($which_head < $listdepth) {
- $listdepth--;
- $index .= "\n" . ("\t" x $listdepth) . "</ul>\n";
- }
- }
-
- $index .= "\n" . ("\t" x $listdepth) . "<li>" .
- "<a href=\"#" . $name . "\">" .
- $title . "</a></li>";
- }
- }
-
- # finish off the lists
- while ($listdepth--) {
- $index .= "\n" . ("\t" x $listdepth) . "</ul>\n";
- }
-
- # get rid of bogus lists
- $index =~ s,\t*<ul>\s*</ul>\n,,g;
-
- return $index;
-}
-
-#
-# scan_items - scans the pod specified by $pod for =item directives. we
-# will use this information later on in resolving C<> links.
-#
-sub scan_items {
- my( $itemref, $pod, @poddata ) = @_;
- my($i, $item);
- local $_;
-
- $pod =~ s/\.pod\z//;
- $pod .= ".html" if $pod;
-
- foreach $i (0..$#poddata) {
- 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 ) { # bulleted list
- 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 ) { # definition list
- $item = $1;
- } else {
- next;
- }
- my $fid = fragment_id( $item );
- $$itemref{$fid} = "$pod" if $fid;
- }
-}
-
-#
-# process_head - convert a pod head[1-6] tag and convert it to HTML format.
-#
-sub process_head {
- my($tag, $heading, $hasindex) = @_;
-
- # figure out the level of the =head
- $tag =~ /head([1-6])/;
- my $level = $1;
-
- finish_list();
-
- print HTML "<p>\n";
- if( $level == 1 && ! $Top ){
- print HTML "<a href=\"#__index__\"><small>$Backlink</small></a>\n"
- if $hasindex and $Backlink;
- print HTML "</p>\n<hr />\n"
- } else {
- print HTML "</p>\n";
- }
-
- my $name = anchorify( depod( $heading ) );
- my $convert = process_text( \$heading );
- print HTML "<h$level><a name=\"$name\">$convert</a></h$level>\n";
-}
-
-
-#
-# emit_item_tag - print an =item's text
-# Note: The global $EmittedItem is used for inhibiting self-references.
-#
-my $EmittedItem;
-
-sub emit_item_tag($$$){
- my( $otext, $text, $compact ) = @_;
- my $item = fragment_id( $text );
-
- $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;
- $name = anchorify($name);
- print HTML qq{<a name="$name">}, process_text( \$otext ), '</a>';
- }
- print HTML "</strong>";
- undef( $EmittedItem );
-}
-
-sub new_listitem {
- my( $tag ) = @_;
- # Open tag for definition list as we have something to put in it
- if( ($tag ne 'dl') && ($ListNewTerm) ){
- print HTML "<dd>\n";
- $ListNewTerm = 0;
- }
-
- if( $Items_Seen[$Listlevel]++ == 0 ){
- # start of new list
- push( @Listtype, "$tag" );
- print HTML "<$tag>\n";
- } else {
- # if this is not the first item, close the previous one
- if ( $tag eq 'dl' ){
- print HTML "</dd>\n" unless $ListNewTerm;
- } else {
- print HTML "</li>\n";
- }
- }
- my $opentag = $tag eq 'dl' ? 'dt' : 'li';
- print HTML "<$opentag>";
-}
-
-#
-# 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.
- if( $Listlevel == 0 ){
- warn "$0: $Podfile: unexpected =item directive in paragraph $Paragraph. ignoring.\n" unless $Quiet;
- process_over();
- }
-
- # remove formatting instructions from the text
- my $text = depod( $otext );
-
- # all the list variants:
- if( $text =~ /\A\*/ ){ # bullet
- new_listitem( 'ul' );
- if ($text =~ /\A\*\s+(.+)\Z/s ) { # with additional text
- my $tag = $1;
- $otext =~ s/\A\*\s+//;
- emit_item_tag( $otext, $tag, 1 );
- print HTML "\n";
- }
-
- } elsif( $text =~ /\A\d+/ ){ # numbered list
- new_listitem( '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 "\n";
- }
-
- } else { # definition list
- # new_listitem takes care of opening the <dt> tag
- new_listitem( 'dl' );
- if( $text =~ /\A(.+)\Z/s ){ # should have text
- emit_item_tag( $otext, $text, 1 );
- } else {
- warn "$0: $Podfile: no term text provided for definition list in paragraph $Paragraph. ignoring.\n" unless $Quiet;
- }
- # write the definition term and close <dt> tag
- print HTML "</dt>\n";
- # trigger opening a <dd> tag for the actual definition; will not
- # happen if next paragraph is also a definition term (=item)
- $ListNewTerm = 1;
- }
- print HTML "\n";
-}
-
-#
-# 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 );
-}
-
-#
-# process_back - process a pod back tag and convert it to HTML format.
-#
-sub process_back {
- if( $Listlevel == 0 ){
- warn "$0: $Podfile: unexpected =back directive in paragraph $Paragraph. ignoring.\n" unless $Quiet;
- return;
- }
-
- # close off the list. note, I check to see if $Listtype[$Listlevel] is
- # defined because an =item directive may have never appeared and thus
- # $Listtype[$Listlevel] may have never been initialized.
- $Listlevel--;
- if( defined $Listtype[$Listlevel] ){
- if ( $Listtype[$Listlevel] eq 'dl' ){
- print HTML "</dd>\n" unless $ListNewTerm;
- } else {
- print HTML "</li>\n";
- }
- print HTML "</$Listtype[$Listlevel]>\n";
- pop( @Listtype );
- $ListNewTerm = 0;
- }
-
- # clean up item count
- pop( @Items_Seen );
-}
-
-#
-# process_cut - process a pod cut tag, thus start ignoring pod directives.
-#
-sub process_cut {
- $Ignore = 1;
-}
-
-#
-# process_pod - process a 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, spit
-# it out verbatim, if illustration, center it, otherwise ignore it.
-#
-sub process_for {
- my($whom, $text) = @_;
- if ( $whom =~ /^(pod2)?html$/i) {
- print HTML $text;
- } elsif ($whom =~ /^illustration$/i) {
- 1 while chomp $text;
- for my $ext (qw[.png .gif .jpeg .jpg .tga .pcl .bmp]) {
- $text .= $ext, last if -r "$text$ext";
- }
- print HTML qq{<p align="center"><img src="$text" alt="$text illustration" /></p>};
- }
-}
-
-#
-# process_begin - process a =begin pod tag. this pushes
-# whom we're beginning on the begin stack. if there's a
-# begin stack, we only print if it us.
-#
-sub process_begin {
- my($whom, $text) = @_;
- $whom = lc($whom);
- push (@Begin_Stack, $whom);
- if ( $whom =~ /^(pod2)?html$/) {
- print HTML $text if $text;
- }
-}
-
-#
-# process_end - process a =end pod tag. pop the
-# begin stack. die if we're mismatched.
-#
-sub process_end {
- my($whom, $text) = @_;
- $whom = lc($whom);
- if ($Begin_Stack[-1] ne $whom ) {
- die "Unmatched begin/end at chunk $Paragraph\n"
- }
- pop( @Begin_Stack );
-}
-
-#
-# process_pre - indented paragraph, made into <pre></pre>
-#
-sub process_pre {
- my( $text ) = @_;
- my( $rest );
- return if $Ignore;
-
- $rest = $$text;
-
- # insert spaces in place of tabs
- $rest =~ s#(.+)#
- my $line = $1;
- 1 while $line =~ s/(\t+)/' ' x ((length($1) * 8) - $-[0] % 8)/e;
- $line;
- #eg;
-
- # convert some special chars to HTML escapes
- $rest = html_escape($rest);
-
- # 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
- news
- gopher
- file
- wais
- ftp
- } )
- . ')';
-
- my $ltrs = '\w';
- my $gunk = '/#~:.?+=&%@!\-';
- my $punc = '.:!?\-;';
- my $any = "${ltrs}${gunk}${punc}";
-
- $rest =~ s{
- \b # start at word boundary
- ( # begin $1 {
- $urls : # need resource and a colon
- (?!:) # Ignore File::, among others.
- [$any] +? # followed by one or more of any valid
- # character, but be conservative and
- # take only what you need to....
- ) # end $1 }
- (?=
- &quot; &gt; # maybe pre-quoted '<a href="...">'
- | # or:
- [$punc]* # 0 or more punctuation
- (?: # followed
- [^$any] # by a non-url char
- | # or
- $ # end of the string
- ) #
- | # or else
- $ # then end of the string
- )
- }{<a href="$1">$1</a>}igox;
-
- # text should be as it is (verbatim)
- $$text = $rest;
-}
-
-
-#
-# 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 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, $notinIS) = @_;
-
- ## Guessing at func() or [\$\@%&]*var references in plain text is destined
- ## to produce some strange looking ref's. uncomment to disable:
- ## $notinIS = 0;
-
- 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 =~ s/\A(\s+)//s ? $1 : "");
- $trail = ($text =~ s/(\s+)\Z//s ? $1 : "");
-
- # 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( $notinIS && $word =~ /^(\w+)\((.*)\)$/ ) {
- # has parenthesis so should have been a C<> ref
- ## 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
- my ($w1, $w2, $w3) = ("", $word, "");
- ($w1, $w2, $w3) = ("(", $1, ")$2") if $word =~ /^\((.*?)\)(,?)/;
- ($w1, $w2, $w3) = ("&lt;", $1, "&gt;$2") if $word =~ /^<(.*?)>(,?)/;
- $word = qq($w1<a href="mailto:$w2">$w2</a>$w3);
- } else {
- $word = html_escape($word) if $word =~ /["&<>]/;
- }
- }
-
- # put everything back together
- return $lead . join( '', @words ) . $trail;
-}
-
-
-#
-# 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/^([^>]*)>//;
- my $escape = $1;
- $escape =~ s/^(\d+|X[\dA-F]+)$/#$1/i;
- $res = "&$escape;";
-
- } 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.\n" unless $Quiet;
- }
-
- # now we have a 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.\n"
- unless $$rstr =~ s/^>// or $Quiet;
-
- } 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 {
- warn "$0: $Podfile: undelimited $func<> in paragraph $Paragraph.\n" unless $Quiet;
- }
- }
- return $res;
-}
-
-#
-# 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.\n" unless $Quiet;
- return $res;
-}
-
-#
-# 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;
-}
-
-#
-# html_escape: make text safe for HTML
-#
-sub html_escape {
- my $rest = $_[0];
- $rest =~ s/&/&amp;/g;
- $rest =~ s/</&lt;/g;
- $rest =~ s/>/&gt;/g;
- $rest =~ s/"/&quot;/g;
- # &apos; is only in XHTML, not HTML4. Be conservative
- #$rest =~ s/'/&apos;/g;
- return $rest;
-}
-
-
-#
-# 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;
- $str =~ s/(\w+)/substr ($1,0,8)/ge;
- }
- return $str;
-}
-
-#
-# page_sect - make a URL from the text of a L<>
-#
-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 = "#" . anchorify( $section );
- } elsif ( $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 .= "#" . anchorify( $section ) if ($section);
- } elsif (!defined $Pages{$page}) {
- $link = "";
- } else {
- $section = anchorify( $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)):/) {
- $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" 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 {
- $link = "";
- }
- }
- }
-
- if ($link) {
- # 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 {
- return undef();
- }
-}
-
-#
-# relativize_url - convert an absolute URL to one relative to a base URL.
-# Assumes both end in a filename.
-#
-sub relativize_url {
- my ($dest,$source) = @_ ;
-
- my ($dest_volume,$dest_directory,$dest_file) =
- File::Spec::Unix->splitpath( $dest ) ;
- $dest = File::Spec::Unix->catpath( $dest_volume, $dest_directory, '' ) ;
-
- my ($source_volume,$source_directory,$source_file) =
- File::Spec::Unix->splitpath( $source ) ;
- $source = File::Spec::Unix->catpath( $source_volume, $source_directory, '' ) ;
-
- 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 $rel_path ;
-}
-
-
-#
-# coderef - make URL from the text of a C<>
-#
-sub coderef($$){
- my( $page, $item ) = @_;
- my( $url );
-
- my $fid = fragment_id( $item );
- if( defined( $page ) && $page ne "" ){
- # 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();
- }
-
- } else {
- # no page - local items precede cached items
- if( defined( $fid ) ){
- if( exists $Local_Items{$fid} ){
- $page = $Local_Items{$fid};
- } else {
- $page = $Items{$fid};
- }
- }
- }
-
- # 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_" . anchorify($fid);
-
- # 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_" . anchorify($fid);
- }
-
- confess "url has space: $url" if $url =~ /"[^"]*\s[^"]*"/;
- }
- return( $url, $fid );
-}
-
-
-
-#
-# 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;
-}
-
-
-#
-# finish_list - finish off any pending HTML lists. this should be called
-# after the entire pod file has been read and converted.
-#
-sub finish_list {
- if( $Listlevel ){
- warn "$0: $Podfile: unterminated list(s) at =head in paragraph $Paragraph. ignoring.\n" unless $Quiet;
- while( $Listlevel ){
- process_back();
- }
- }
-}
-
-#
-# htmlify - converts a pod section specification to a suitable section
-# specification for HTML. Note that we keep spaces and special characters
-# except ", ? (Netscape problem) and the hyphen (writer's problem...).
-#
-sub htmlify {
- 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;
-}
-
-#
-# similar to htmlify, but turns non-alphanumerics into underscores
-#
-sub anchorify {
- my ($anchor) = @_;
- $anchor = htmlify($anchor);
- $anchor =~ s/\W/_/g;
- return $anchor;
-}
-
-#
-# 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 );
- }
-}
-
-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/^([^>]*)>//;
- $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;
-}
-
-#
-# 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();
- }
-}
-
-#
-# 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/Master/tlpkg/tlperl/lib/Pod/InputObjects.pm b/Master/tlpkg/tlperl/lib/Pod/InputObjects.pm
deleted file mode 100644
index fa5f61f9a70..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/InputObjects.pm
+++ /dev/null
@@ -1,941 +0,0 @@
-#############################################################################
-# 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.30; ## 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 package B<Pod::InputSource>
-
-An object corresponding to a source of POD input text. It is mostly a
-wrapper around a filehandle or C<IO::Handle>-type object (or anything
-that implements the C<getline()> method) which keeps track of some
-additional information relevant to the parsing of PODs.
-
-=end __PRIVATE__
-
-=item package B<Pod::Paragraph>
-
-An object corresponding to a paragraph of POD input text. It may be a
-plain paragraph, a verbatim paragraph, or a command paragraph (see
-L<perlpod>).
-
-=item package B<Pod::InteriorSequence>
-
-An object corresponding to an interior sequence command from the POD
-input text (see L<perlpod>).
-
-=item package B<Pod::ParseTree>
-
-An object corresponding to a tree of parsed POD text. Each "node" in
-a parse-tree (or I<ptree>) is either a text-string or a reference to
-a B<Pod::InteriorSequence> object. The nodes appear in the parse-tree
-in the order in which they were parsed from left-to-right.
-
-=back
-
-Each of these input objects are described in further detail in the
-sections which follow.
-
-=cut
-
-#############################################################################
-
-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 Pod::Paragraph-E<gt>B<new()>
-
- my $pod_para1 = Pod::Paragraph->new(-text => $text);
- my $pod_para2 = Pod::Paragraph->new(-name => $cmd,
- -text => $text);
- my $pod_para3 = new Pod::Paragraph(-text => $text);
- my $pod_para4 = new Pod::Paragraph(-name => $cmd,
- -text => $text);
- my $pod_para5 = Pod::Paragraph->new(-name => $cmd,
- -text => $text,
- -file => $filename,
- -line => $line_number);
-
-This is a class method that constructs a C<Pod::Paragraph> object and
-returns a reference to the new paragraph object. It may be given one or
-two keyword arguments. The C<-text> keyword indicates the corresponding
-text of the POD paragraph. The C<-name> keyword indicates the name of
-the corresponding POD command, such as C<head1> or C<item> (it should
-I<not> contain the C<=> prefix); this is needed only if the POD
-paragraph corresponds to a command paragraph. The C<-file> and C<-line>
-keywords indicate the filename and line number corresponding to the
-beginning of the paragraph
-
-=cut
-
-sub new {
- ## Determine if we were called via an object-ref or a classname
- my $this = shift;
- my $class = ref($this) || $this;
-
- ## Any remaining arguments are treated as initial values for the
- ## hash that is used to represent this object. Note that we default
- ## certain values by specifying them *before* the arguments passed.
- ## If they are in the argument list, they will override the defaults.
- my $self = {
- -name => undef,
- -text => (@_ == 1) ? shift : undef,
- -file => '<unknown-file>',
- -line => 0,
- -prefix => '=',
- -separator => ' ',
- -ptree => [],
- @_
- };
-
- ## Bless ourselves into the desired class and perform any initialization
- bless $self, $class;
- return $self;
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_para-E<gt>B<cmd_name()>
-
- my $para_cmd = $pod_para->cmd_name();
-
-If this paragraph is a command paragraph, then this method will return
-the name of the command (I<without> any leading C<=> prefix).
-
-=cut
-
-sub cmd_name {
- (@_ > 1) and $_[0]->{'-name'} = $_[1];
- return $_[0]->{'-name'};
-}
-
-## let name() be an alias for cmd_name()
-*name = \&cmd_name;
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_para-E<gt>B<text()>
-
- my $para_text = $pod_para->text();
-
-This method will return the corresponding text of the paragraph.
-
-=cut
-
-sub text {
- (@_ > 1) and $_[0]->{'-text'} = $_[1];
- return $_[0]->{'-text'};
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_para-E<gt>B<raw_text()>
-
- my $raw_pod_para = $pod_para->raw_text();
-
-This method will return the I<raw> text of the POD paragraph, exactly
-as it appeared in the input.
-
-=cut
-
-sub raw_text {
- return $_[0]->{'-text'} unless (defined $_[0]->{'-name'});
- return $_[0]->{'-prefix'} . $_[0]->{'-name'} .
- $_[0]->{'-separator'} . $_[0]->{'-text'};
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_para-E<gt>B<cmd_prefix()>
-
- my $prefix = $pod_para->cmd_prefix();
-
-If this paragraph is a command paragraph, then this method will return
-the prefix used to denote the command (which should be the string "="
-or "==").
-
-=cut
-
-sub cmd_prefix {
- return $_[0]->{'-prefix'};
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_para-E<gt>B<cmd_separator()>
-
- my $separator = $pod_para->cmd_separator();
-
-If this paragraph is a command paragraph, then this method will return
-the text used to separate the command name from the rest of the
-paragraph (if any).
-
-=cut
-
-sub cmd_separator {
- return $_[0]->{'-separator'};
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_para-E<gt>B<parse_tree()>
-
- my $ptree = $pod_parser->parse_text( $pod_para->text() );
- $pod_para->parse_tree( $ptree );
- $ptree = $pod_para->parse_tree();
-
-This method will get/set the corresponding parse-tree of the paragraph's text.
-
-=cut
-
-sub parse_tree {
- (@_ > 1) and $_[0]->{'-ptree'} = $_[1];
- return $_[0]->{'-ptree'};
-}
-
-## let ptree() be an alias for parse_tree()
-*ptree = \&parse_tree;
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_para-E<gt>B<file_line()>
-
- my ($filename, $line_number) = $pod_para->file_line();
- my $position = $pod_para->file_line();
-
-Returns the current filename and line number for the paragraph
-object. If called in a list context, it returns a list of two
-elements: first the filename, then the line number. If called in
-a scalar context, it returns a string containing the filename, followed
-by a colon (':'), followed by the line number.
-
-=cut
-
-sub file_line {
- my @loc = ($_[0]->{'-file'} || '<unknown-file>',
- $_[0]->{'-line'} || 0);
- return (wantarray) ? @loc : join(':', @loc);
-}
-
-##---------------------------------------------------------------------------
-
-#############################################################################
-
-package Pod::InteriorSequence;
-
-##---------------------------------------------------------------------------
-
-=head1 B<Pod::InteriorSequence>
-
-An object representing a POD interior sequence command.
-It has the following methods/attributes:
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=head2 Pod::InteriorSequence-E<gt>B<new()>
-
- my $pod_seq1 = Pod::InteriorSequence->new(-name => $cmd
- -ldelim => $delimiter);
- my $pod_seq2 = new Pod::InteriorSequence(-name => $cmd,
- -ldelim => $delimiter);
- my $pod_seq3 = new Pod::InteriorSequence(-name => $cmd,
- -ldelim => $delimiter,
- -file => $filename,
- -line => $line_number);
-
- my $pod_seq4 = new Pod::InteriorSequence(-name => $cmd, $ptree);
- my $pod_seq5 = new Pod::InteriorSequence($cmd, $ptree);
-
-This is a class method that constructs a C<Pod::InteriorSequence> object
-and returns a reference to the new interior sequence object. It should
-be given two keyword arguments. The C<-ldelim> keyword indicates the
-corresponding left-delimiter of the interior sequence (e.g. 'E<lt>').
-The C<-name> keyword indicates the name of the corresponding interior
-sequence command, such as C<I> or C<B> or C<C>. The C<-file> and
-C<-line> keywords indicate the filename and line number corresponding
-to the beginning of the interior sequence. If the C<$ptree> argument is
-given, it must be the last argument, and it must be either string, or
-else an array-ref suitable for passing to B<Pod::ParseTree::new> (or
-it may be a reference to a Pod::ParseTree object).
-
-=cut
-
-sub new {
- ## Determine if we were called via an object-ref or a classname
- my $this = shift;
- my $class = ref($this) || $this;
-
- ## See if first argument has no keyword
- if (((@_ <= 2) or (@_ % 2)) and $_[0] !~ /^-\w/) {
- ## Yup - need an implicit '-name' before first parameter
- unshift @_, '-name';
- }
-
- ## See if odd number of args
- if ((@_ % 2) != 0) {
- ## Yup - need an implicit '-ptree' before the last parameter
- splice @_, $#_, 0, '-ptree';
- }
-
- ## Any remaining arguments are treated as initial values for the
- ## hash that is used to represent this object. Note that we default
- ## certain values by specifying them *before* the arguments passed.
- ## If they are in the argument list, they will override the defaults.
- my $self = {
- -name => (@_ == 1) ? $_[0] : undef,
- -file => '<unknown-file>',
- -line => 0,
- -ldelim => '<',
- -rdelim => '>',
- @_
- };
-
- ## Initialize contents if they havent been already
- my $ptree = $self->{'-ptree'} || new Pod::ParseTree();
- if ( ref $ptree =~ /^(ARRAY)?$/ ) {
- ## We have an array-ref, or a normal scalar. Pass it as an
- ## an argument to the ptree-constructor
- $ptree = new Pod::ParseTree($1 ? [$ptree] : $ptree);
- }
- $self->{'-ptree'} = $ptree;
-
- ## Bless ourselves into the desired class and perform any initialization
- bless $self, $class;
- return $self;
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<cmd_name()>
-
- my $seq_cmd = $pod_seq->cmd_name();
-
-The name of the interior sequence command.
-
-=cut
-
-sub cmd_name {
- (@_ > 1) and $_[0]->{'-name'} = $_[1];
- return $_[0]->{'-name'};
-}
-
-## let name() be an alias for cmd_name()
-*name = \&cmd_name;
-
-##---------------------------------------------------------------------------
-
-## Private subroutine to set the parent pointer of all the given
-## children that are interior-sequences to be $self
-
-sub _set_child2parent_links {
- my ($self, @children) = @_;
- ## Make sure any sequences know who their parent is
- for (@children) {
- next unless (length and ref and ref ne 'SCALAR');
- if (UNIVERSAL::isa($_, 'Pod::InteriorSequence') or
- UNIVERSAL::can($_, 'nested'))
- {
- $_->nested($self);
- }
- }
-}
-
-## Private subroutine to unset child->parent links
-
-sub _unset_child2parent_links {
- my $self = shift;
- $self->{'-parent_sequence'} = undef;
- my $ptree = $self->{'-ptree'};
- for (@$ptree) {
- next unless (length and ref and ref ne 'SCALAR');
- $_->_unset_child2parent_links()
- if UNIVERSAL::isa($_, 'Pod::InteriorSequence');
- }
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<prepend()>
-
- $pod_seq->prepend($text);
- $pod_seq1->prepend($pod_seq2);
-
-Prepends the given string or parse-tree or sequence object to the parse-tree
-of this interior sequence.
-
-=cut
-
-sub prepend {
- my $self = shift;
- $self->{'-ptree'}->prepend(@_);
- _set_child2parent_links($self, @_);
- return $self;
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<append()>
-
- $pod_seq->append($text);
- $pod_seq1->append($pod_seq2);
-
-Appends the given string or parse-tree or sequence object to the parse-tree
-of this interior sequence.
-
-=cut
-
-sub append {
- my $self = shift;
- $self->{'-ptree'}->append(@_);
- _set_child2parent_links($self, @_);
- return $self;
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<nested()>
-
- $outer_seq = $pod_seq->nested || print "not nested";
-
-If this interior sequence is nested inside of another interior
-sequence, then the outer/parent sequence that contains it is
-returned. Otherwise C<undef> is returned.
-
-=cut
-
-sub nested {
- my $self = shift;
- (@_ == 1) and $self->{'-parent_sequence'} = shift;
- return $self->{'-parent_sequence'} || undef;
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<raw_text()>
-
- my $seq_raw_text = $pod_seq->raw_text();
-
-This method will return the I<raw> text of the POD interior sequence,
-exactly as it appeared in the input.
-
-=cut
-
-sub raw_text {
- my $self = shift;
- my $text = $self->{'-name'} . $self->{'-ldelim'};
- for ( $self->{'-ptree'}->children ) {
- $text .= (ref $_) ? $_->raw_text : $_;
- }
- $text .= $self->{'-rdelim'};
- return $text;
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<left_delimiter()>
-
- my $ldelim = $pod_seq->left_delimiter();
-
-The leftmost delimiter beginning the argument text to the interior
-sequence (should be "<").
-
-=cut
-
-sub left_delimiter {
- (@_ > 1) and $_[0]->{'-ldelim'} = $_[1];
- return $_[0]->{'-ldelim'};
-}
-
-## let ldelim() be an alias for left_delimiter()
-*ldelim = \&left_delimiter;
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<right_delimiter()>
-
-The rightmost delimiter beginning the argument text to the interior
-sequence (should be ">").
-
-=cut
-
-sub right_delimiter {
- (@_ > 1) and $_[0]->{'-rdelim'} = $_[1];
- return $_[0]->{'-rdelim'};
-}
-
-## let rdelim() be an alias for right_delimiter()
-*rdelim = \&right_delimiter;
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<parse_tree()>
-
- my $ptree = $pod_parser->parse_text($paragraph_text);
- $pod_seq->parse_tree( $ptree );
- $ptree = $pod_seq->parse_tree();
-
-This method will get/set the corresponding parse-tree of the interior
-sequence's text.
-
-=cut
-
-sub parse_tree {
- (@_ > 1) and $_[0]->{'-ptree'} = $_[1];
- return $_[0]->{'-ptree'};
-}
-
-## let ptree() be an alias for parse_tree()
-*ptree = \&parse_tree;
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<file_line()>
-
- my ($filename, $line_number) = $pod_seq->file_line();
- my $position = $pod_seq->file_line();
-
-Returns the current filename and line number for the interior sequence
-object. If called in a list context, it returns a list of two
-elements: first the filename, then the line number. If called in
-a scalar context, it returns a string containing the filename, followed
-by a colon (':'), followed by the line number.
-
-=cut
-
-sub file_line {
- my @loc = ($_[0]->{'-file'} || '<unknown-file>',
- $_[0]->{'-line'} || 0);
- return (wantarray) ? @loc : join(':', @loc);
-}
-
-##---------------------------------------------------------------------------
-
-=head2 Pod::InteriorSequence::B<DESTROY()>
-
-This method performs any necessary cleanup for the interior-sequence.
-If you override this method then it is B<imperative> that you invoke
-the parent method from within your own method, otherwise
-I<interior-sequence storage will not be reclaimed upon destruction!>
-
-=cut
-
-sub DESTROY {
- ## We need to get rid of all child->parent pointers throughout the
- ## tree so their reference counts will go to zero and they can be
- ## garbage-collected
- _unset_child2parent_links(@_);
-}
-
-##---------------------------------------------------------------------------
-
-#############################################################################
-
-package Pod::ParseTree;
-
-##---------------------------------------------------------------------------
-
-=head1 B<Pod::ParseTree>
-
-This object corresponds to a tree of parsed POD text. As POD text is
-scanned from left to right, it is parsed into an ordered list of
-text-strings and B<Pod::InteriorSequence> objects (in order of
-appearance). A B<Pod::ParseTree> object corresponds to this list of
-strings and sequences. Each interior sequence in the parse-tree may
-itself contain a parse-tree (since interior sequences may be nested).
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=head2 Pod::ParseTree-E<gt>B<new()>
-
- my $ptree1 = Pod::ParseTree->new;
- my $ptree2 = new Pod::ParseTree;
- my $ptree4 = Pod::ParseTree->new($array_ref);
- my $ptree3 = new Pod::ParseTree($array_ref);
-
-This is a class method that constructs a C<Pod::Parse_tree> object and
-returns a reference to the new parse-tree. If a single-argument is given,
-it must be a reference to an array, and is used to initialize the root
-(top) of the parse tree.
-
-=cut
-
-sub new {
- ## Determine if we were called via an object-ref or a classname
- my $this = shift;
- my $class = ref($this) || $this;
-
- my $self = (@_ == 1 and ref $_[0]) ? $_[0] : [];
-
- ## Bless ourselves into the desired class and perform any initialization
- bless $self, $class;
- return $self;
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $ptree-E<gt>B<top()>
-
- my $top_node = $ptree->top();
- $ptree->top( $top_node );
- $ptree->top( @children );
-
-This method gets/sets the top node of the parse-tree. If no arguments are
-given, it returns the topmost node in the tree (the root), which is also
-a B<Pod::ParseTree>. If it is given a single argument that is a reference,
-then the reference is assumed to a parse-tree and becomes the new top node.
-Otherwise, if arguments are given, they are treated as the new list of
-children for the top node.
-
-=cut
-
-sub top {
- my $self = shift;
- if (@_ > 0) {
- @{ $self } = (@_ == 1 and ref $_[0]) ? ${ @_ } : @_;
- }
- return $self;
-}
-
-## let parse_tree() & ptree() be aliases for the 'top' method
-*parse_tree = *ptree = \&top;
-
-##---------------------------------------------------------------------------
-
-=head2 $ptree-E<gt>B<children()>
-
-This method gets/sets the children of the top node in the parse-tree.
-If no arguments are given, it returns the list (array) of children
-(each of which should be either a string or a B<Pod::InteriorSequence>.
-Otherwise, if arguments are given, they are treated as the new list of
-children for the top node.
-
-=cut
-
-sub children {
- my $self = shift;
- if (@_ > 0) {
- @{ $self } = (@_ == 1 and ref $_[0]) ? ${ @_ } : @_;
- }
- return @{ $self };
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $ptree-E<gt>B<prepend()>
-
-This method prepends the given text or parse-tree to the current parse-tree.
-If the first item on the parse-tree is text and the argument is also text,
-then the text is prepended to the first item (not added as a separate string).
-Otherwise the argument is added as a new string or parse-tree I<before>
-the current one.
-
-=cut
-
-use vars qw(@ptree); ## an alias used for performance reasons
-
-sub prepend {
- my $self = shift;
- local *ptree = $self;
- for (@_) {
- next unless length;
- if (@ptree and !(ref $ptree[0]) and !(ref $_)) {
- $ptree[0] = $_ . $ptree[0];
- }
- else {
- unshift @ptree, $_;
- }
- }
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $ptree-E<gt>B<append()>
-
-This method appends the given text or parse-tree to the current parse-tree.
-If the last item on the parse-tree is text and the argument is also text,
-then the text is appended to the last item (not added as a separate string).
-Otherwise the argument is added as a new string or parse-tree I<after>
-the current one.
-
-=cut
-
-sub append {
- my $self = shift;
- local *ptree = $self;
- my $can_append = @ptree && !(ref $ptree[-1]);
- for (@_) {
- if (ref) {
- push @ptree, $_;
- }
- elsif(!length) {
- next;
- }
- elsif ($can_append) {
- $ptree[-1] .= $_;
- }
- else {
- push @ptree, $_;
- }
- }
-}
-
-=head2 $ptree-E<gt>B<raw_text()>
-
- my $ptree_raw_text = $ptree->raw_text();
-
-This method will return the I<raw> text of the POD parse-tree
-exactly as it appeared in the input.
-
-=cut
-
-sub raw_text {
- my $self = shift;
- my $text = "";
- for ( @$self ) {
- $text .= (ref $_) ? $_->raw_text : $_;
- }
- return $text;
-}
-
-##---------------------------------------------------------------------------
-
-## Private routines to set/unset child->parent links
-
-sub _unset_child2parent_links {
- my $self = shift;
- local *ptree = $self;
- for (@ptree) {
- next unless (defined and length and ref and ref ne 'SCALAR');
- $_->_unset_child2parent_links()
- if UNIVERSAL::isa($_, 'Pod::InteriorSequence');
- }
-}
-
-sub _set_child2parent_links {
- ## nothing to do, Pod::ParseTrees cant have parent pointers
-}
-
-=head2 Pod::ParseTree::B<DESTROY()>
-
-This method performs any necessary cleanup for the parse-tree.
-If you override this method then it is B<imperative>
-that you invoke the parent method from within your own method,
-otherwise I<parse-tree storage will not be reclaimed upon destruction!>
-
-=cut
-
-sub DESTROY {
- ## We need to get rid of all child->parent pointers throughout the
- ## tree so their reference counts will go to zero and they can be
- ## garbage-collected
- _unset_child2parent_links(@_);
-}
-
-#############################################################################
-
-=head1 SEE ALSO
-
-See L<Pod::Parser>, L<Pod::Select>
-
-=head1 AUTHOR
-
-Please report bugs using L<http://rt.cpan.org>.
-
-Brad Appleton E<lt>bradapp@enteract.comE<gt>
-
-=cut
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Pod/LaTeX.pm b/Master/tlpkg/tlperl/lib/Pod/LaTeX.pm
deleted file mode 100644
index 9d3a905258f..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/LaTeX.pm
+++ /dev/null
@@ -1,1876 +0,0 @@
-package Pod::LaTeX;
-
-=head1 NAME
-
-Pod::LaTeX - Convert Pod data to formatted Latex
-
-=head1 SYNOPSIS
-
- use Pod::LaTeX;
- my $parser = Pod::LaTeX->new ( );
-
- $parser->parse_from_filehandle;
-
- $parser->parse_from_file ('file.pod', 'file.tex');
-
-=head1 DESCRIPTION
-
-C<Pod::LaTeX> is a module to convert documentation in the Pod format
-into Latex. The L<B<pod2latex>|pod2latex> X<pod2latex> command uses
-this module for translation.
-
-C<Pod::LaTeX> is a derived class from L<Pod::Select|Pod::Select>.
-
-=cut
-
-
-use strict;
-require Pod::ParseUtils;
-use base qw/ Pod::Select /;
-
-# use Data::Dumper; # for debugging
-use Carp;
-
-use vars qw/ $VERSION %HTML_Escapes @LatexSections /;
-
-$VERSION = '0.58';
-
-# Definitions of =headN -> latex mapping
-@LatexSections = (qw/
- chapter
- section
- subsection
- subsubsection
- paragraph
- subparagraph
- /);
-
-# Standard escape sequences converted to Latex.
-# The Unicode name of each character is given in the comments.
-# Complete LaTeX set added by Peter Acklam.
-
-%HTML_Escapes = (
- 'sol' => '\textfractionsolidus{}', # xxx - or should it be just '/'
- 'verbar' => '|',
-
- # The stuff below is based on the information available at
- # http://www.w3.org/TR/html401/sgml/entities.html
-
- # All characters in the range 0xA0-0xFF of the ISO 8859-1 character set.
- # Several of these characters require the `textcomp' LaTeX package.
- 'nbsp' => q|~|, # 0xA0 - no-break space = non-breaking space
- 'iexcl' => q|\textexclamdown{}|, # 0xA1 - inverted exclamation mark
- 'cent' => q|\textcent{}|, # 0xA2 - cent sign
- 'pound' => q|\textsterling{}|, # 0xA3 - pound sign
- 'curren' => q|\textcurrency{}|, # 0xA4 - currency sign
- 'yen' => q|\textyen{}|, # 0xA5 - yen sign = yuan sign
- 'brvbar' => q|\textbrokenbar{}|, # 0xA6 - broken bar = broken vertical bar
- 'sect' => q|\textsection{}|, # 0xA7 - section sign
- 'uml' => q|\textasciidieresis{}|, # 0xA8 - diaeresis = spacing diaeresis
- 'copy' => q|\textcopyright{}|, # 0xA9 - copyright sign
- 'ordf' => q|\textordfeminine{}|, # 0xAA - feminine ordinal indicator
- 'laquo' => q|\guillemotleft{}|, # 0xAB - left-pointing double angle quotation mark = left pointing guillemet
- 'not' => q|\textlnot{}|, # 0xAC - not sign
- 'shy' => q|\-|, # 0xAD - soft hyphen = discretionary hyphen
- 'reg' => q|\textregistered{}|, # 0xAE - registered sign = registered trade mark sign
- 'macr' => q|\textasciimacron{}|, # 0xAF - macron = spacing macron = overline = APL overbar
- 'deg' => q|\textdegree{}|, # 0xB0 - degree sign
- 'plusmn' => q|\textpm{}|, # 0xB1 - plus-minus sign = plus-or-minus sign
- 'sup2' => q|\texttwosuperior{}|, # 0xB2 - superscript two = superscript digit two = squared
- 'sup3' => q|\textthreesuperior{}|, # 0xB3 - superscript three = superscript digit three = cubed
- 'acute' => q|\textasciiacute{}|, # 0xB4 - acute accent = spacing acute
- 'micro' => q|\textmu{}|, # 0xB5 - micro sign
- 'para' => q|\textparagraph{}|, # 0xB6 - pilcrow sign = paragraph sign
- 'middot' => q|\textperiodcentered{}|, # 0xB7 - middle dot = Georgian comma = Greek middle dot
- 'cedil' => q|\c{}|, # 0xB8 - cedilla = spacing cedilla
- 'sup1' => q|\textonesuperior{}|, # 0xB9 - superscript one = superscript digit one
- 'ordm' => q|\textordmasculine{}|, # 0xBA - masculine ordinal indicator
- 'raquo' => q|\guillemotright{}|, # 0xBB - right-pointing double angle quotation mark = right pointing guillemet
- 'frac14' => q|\textonequarter{}|, # 0xBC - vulgar fraction one quarter = fraction one quarter
- 'frac12' => q|\textonehalf{}|, # 0xBD - vulgar fraction one half = fraction one half
- 'frac34' => q|\textthreequarters{}|, # 0xBE - vulgar fraction three quarters = fraction three quarters
- 'iquest' => q|\textquestiondown{}|, # 0xBF - inverted question mark = turned question mark
- 'Agrave' => q|\`A|, # 0xC0 - latin capital letter A with grave = latin capital letter A grave
- 'Aacute' => q|\'A|, # 0xC1 - latin capital letter A with acute
- 'Acirc' => q|\^A|, # 0xC2 - latin capital letter A with circumflex
- 'Atilde' => q|\~A|, # 0xC3 - latin capital letter A with tilde
- 'Auml' => q|\"A|, # 0xC4 - latin capital letter A with diaeresis
- 'Aring' => q|\AA{}|, # 0xC5 - latin capital letter A with ring above = latin capital letter A ring
- 'AElig' => q|\AE{}|, # 0xC6 - latin capital letter AE = latin capital ligature AE
- 'Ccedil' => q|\c{C}|, # 0xC7 - latin capital letter C with cedilla
- 'Egrave' => q|\`E|, # 0xC8 - latin capital letter E with grave
- 'Eacute' => q|\'E|, # 0xC9 - latin capital letter E with acute
- 'Ecirc' => q|\^E|, # 0xCA - latin capital letter E with circumflex
- 'Euml' => q|\"E|, # 0xCB - latin capital letter E with diaeresis
- 'Igrave' => q|\`I|, # 0xCC - latin capital letter I with grave
- 'Iacute' => q|\'I|, # 0xCD - latin capital letter I with acute
- 'Icirc' => q|\^I|, # 0xCE - latin capital letter I with circumflex
- 'Iuml' => q|\"I|, # 0xCF - latin capital letter I with diaeresis
- 'ETH' => q|\DH{}|, # 0xD0 - latin capital letter ETH
- 'Ntilde' => q|\~N|, # 0xD1 - latin capital letter N with tilde
- 'Ograve' => q|\`O|, # 0xD2 - latin capital letter O with grave
- 'Oacute' => q|\'O|, # 0xD3 - latin capital letter O with acute
- 'Ocirc' => q|\^O|, # 0xD4 - latin capital letter O with circumflex
- 'Otilde' => q|\~O|, # 0xD5 - latin capital letter O with tilde
- 'Ouml' => q|\"O|, # 0xD6 - latin capital letter O with diaeresis
- 'times' => q|\texttimes{}|, # 0xD7 - multiplication sign
- 'Oslash' => q|\O{}|, # 0xD8 - latin capital letter O with stroke = latin capital letter O slash
- 'Ugrave' => q|\`U|, # 0xD9 - latin capital letter U with grave
- 'Uacute' => q|\'U|, # 0xDA - latin capital letter U with acute
- 'Ucirc' => q|\^U|, # 0xDB - latin capital letter U with circumflex
- 'Uuml' => q|\"U|, # 0xDC - latin capital letter U with diaeresis
- 'Yacute' => q|\'Y|, # 0xDD - latin capital letter Y with acute
- 'THORN' => q|\TH{}|, # 0xDE - latin capital letter THORN
- 'szlig' => q|\ss{}|, # 0xDF - latin small letter sharp s = ess-zed
- 'agrave' => q|\`a|, # 0xE0 - latin small letter a with grave = latin small letter a grave
- 'aacute' => q|\'a|, # 0xE1 - latin small letter a with acute
- 'acirc' => q|\^a|, # 0xE2 - latin small letter a with circumflex
- 'atilde' => q|\~a|, # 0xE3 - latin small letter a with tilde
- 'auml' => q|\"a|, # 0xE4 - latin small letter a with diaeresis
- 'aring' => q|\aa{}|, # 0xE5 - latin small letter a with ring above = latin small letter a ring
- 'aelig' => q|\ae{}|, # 0xE6 - latin small letter ae = latin small ligature ae
- 'ccedil' => q|\c{c}|, # 0xE7 - latin small letter c with cedilla
- 'egrave' => q|\`e|, # 0xE8 - latin small letter e with grave
- 'eacute' => q|\'e|, # 0xE9 - latin small letter e with acute
- 'ecirc' => q|\^e|, # 0xEA - latin small letter e with circumflex
- 'euml' => q|\"e|, # 0xEB - latin small letter e with diaeresis
- 'igrave' => q|\`i|, # 0xEC - latin small letter i with grave
- 'iacute' => q|\'i|, # 0xED - latin small letter i with acute
- 'icirc' => q|\^i|, # 0xEE - latin small letter i with circumflex
- 'iuml' => q|\"i|, # 0xEF - latin small letter i with diaeresis
- 'eth' => q|\dh{}|, # 0xF0 - latin small letter eth
- 'ntilde' => q|\~n|, # 0xF1 - latin small letter n with tilde
- 'ograve' => q|\`o|, # 0xF2 - latin small letter o with grave
- 'oacute' => q|\'o|, # 0xF3 - latin small letter o with acute
- 'ocirc' => q|\^o|, # 0xF4 - latin small letter o with circumflex
- 'otilde' => q|\~o|, # 0xF5 - latin small letter o with tilde
- 'ouml' => q|\"o|, # 0xF6 - latin small letter o with diaeresis
- 'divide' => q|\textdiv{}|, # 0xF7 - division sign
- 'oslash' => q|\o{}|, # 0xF8 - latin small letter o with stroke, = latin small letter o slash
- 'ugrave' => q|\`u|, # 0xF9 - latin small letter u with grave
- 'uacute' => q|\'u|, # 0xFA - latin small letter u with acute
- 'ucirc' => q|\^u|, # 0xFB - latin small letter u with circumflex
- 'uuml' => q|\"u|, # 0xFC - latin small letter u with diaeresis
- 'yacute' => q|\'y|, # 0xFD - latin small letter y with acute
- 'thorn' => q|\th{}|, # 0xFE - latin small letter thorn
- 'yuml' => q|\"y|, # 0xFF - latin small letter y with diaeresis
-
- # Latin Extended-B
- 'fnof' => q|\textflorin{}|, # latin small f with hook = function = florin
-
- # Greek
- 'Alpha' => q|$\mathrm{A}$|, # greek capital letter alpha
- 'Beta' => q|$\mathrm{B}$|, # greek capital letter beta
- 'Gamma' => q|$\Gamma$|, # greek capital letter gamma
- 'Delta' => q|$\Delta$|, # greek capital letter delta
- 'Epsilon' => q|$\mathrm{E}$|, # greek capital letter epsilon
- 'Zeta' => q|$\mathrm{Z}$|, # greek capital letter zeta
- 'Eta' => q|$\mathrm{H}$|, # greek capital letter eta
- 'Theta' => q|$\Theta$|, # greek capital letter theta
- 'Iota' => q|$\mathrm{I}$|, # greek capital letter iota
- 'Kappa' => q|$\mathrm{K}$|, # greek capital letter kappa
- 'Lambda' => q|$\Lambda$|, # greek capital letter lambda
- 'Mu' => q|$\mathrm{M}$|, # greek capital letter mu
- 'Nu' => q|$\mathrm{N}$|, # greek capital letter nu
- 'Xi' => q|$\Xi$|, # greek capital letter xi
- 'Omicron' => q|$\mathrm{O}$|, # greek capital letter omicron
- 'Pi' => q|$\Pi$|, # greek capital letter pi
- 'Rho' => q|$\mathrm{R}$|, # greek capital letter rho
- 'Sigma' => q|$\Sigma$|, # greek capital letter sigma
- 'Tau' => q|$\mathrm{T}$|, # greek capital letter tau
- 'Upsilon' => q|$\Upsilon$|, # greek capital letter upsilon
- 'Phi' => q|$\Phi$|, # greek capital letter phi
- 'Chi' => q|$\mathrm{X}$|, # greek capital letter chi
- 'Psi' => q|$\Psi$|, # greek capital letter psi
- 'Omega' => q|$\Omega$|, # greek capital letter omega
-
- 'alpha' => q|$\alpha$|, # greek small letter alpha
- 'beta' => q|$\beta$|, # greek small letter beta
- 'gamma' => q|$\gamma$|, # greek small letter gamma
- 'delta' => q|$\delta$|, # greek small letter delta
- 'epsilon' => q|$\epsilon$|, # greek small letter epsilon
- 'zeta' => q|$\zeta$|, # greek small letter zeta
- 'eta' => q|$\eta$|, # greek small letter eta
- 'theta' => q|$\theta$|, # greek small letter theta
- 'iota' => q|$\iota$|, # greek small letter iota
- 'kappa' => q|$\kappa$|, # greek small letter kappa
- 'lambda' => q|$\lambda$|, # greek small letter lambda
- 'mu' => q|$\mu$|, # greek small letter mu
- 'nu' => q|$\nu$|, # greek small letter nu
- 'xi' => q|$\xi$|, # greek small letter xi
- 'omicron' => q|$o$|, # greek small letter omicron
- 'pi' => q|$\pi$|, # greek small letter pi
- 'rho' => q|$\rho$|, # greek small letter rho
-# 'sigmaf' => q||, # greek small letter final sigma
- 'sigma' => q|$\sigma$|, # greek small letter sigma
- 'tau' => q|$\tau$|, # greek small letter tau
- 'upsilon' => q|$\upsilon$|, # greek small letter upsilon
- 'phi' => q|$\phi$|, # greek small letter phi
- 'chi' => q|$\chi$|, # greek small letter chi
- 'psi' => q|$\psi$|, # greek small letter psi
- 'omega' => q|$\omega$|, # greek small letter omega
-# 'thetasym' => q||, # greek small letter theta symbol
-# 'upsih' => q||, # greek upsilon with hook symbol
-# 'piv' => q||, # greek pi symbol
-
- # General Punctuation
- 'bull' => q|\textbullet{}|, # bullet = black small circle
- # bullet is NOT the same as bullet operator
- 'hellip' => q|\textellipsis{}|, # horizontal ellipsis = three dot leader
- 'prime' => q|\textquotesingle{}|, # prime = minutes = feet
- 'Prime' => q|\textquotedbl{}|, # double prime = seconds = inches
- 'oline' => q|\textasciimacron{}|, # overline = spacing overscore
- 'frasl' => q|\textfractionsolidus{}|, # fraction slash
-
- # Letterlike Symbols
- 'weierp' => q|$\wp$|, # script capital P = power set = Weierstrass p
- 'image' => q|$\Re$|, # blackletter capital I = imaginary part
- 'real' => q|$\Im$|, # blackletter capital R = real part symbol
- 'trade' => q|\texttrademark{}|, # trade mark sign
-# 'alefsym' => q||, # alef symbol = first transfinite cardinal
- # alef symbol is NOT the same as hebrew letter alef, although the same
- # glyph could be used to depict both characters
-
- # Arrows
- 'larr' => q|\textleftarrow{}|, # leftwards arrow
- 'uarr' => q|\textuparrow{}|, # upwards arrow
- 'rarr' => q|\textrightarrow{}|, # rightwards arrow
- 'darr' => q|\textdownarrow{}|, # downwards arrow
- 'harr' => q|$\leftrightarrow$|, # left right arrow
-# 'crarr' => q||, # downwards arrow with corner leftwards = carriage return
- 'lArr' => q|$\Leftarrow$|, # leftwards double arrow
- # ISO 10646 does not say that lArr is the same as the 'is implied by'
- # arrow but also does not have any other character for that function. So
- # lArr can be used for 'is implied by' as ISOtech suggests
- 'uArr' => q|$\Uparrow$|, # upwards double arrow
- 'rArr' => q|$\Rightarrow$|, # rightwards double arrow
- # ISO 10646 does not say this is the 'implies' character but does not
- # have another character with this function so ? rArr can be used for
- # 'implies' as ISOtech suggests
- 'dArr' => q|$\Downarrow$|, # downwards double arrow
- 'hArr' => q|$\Leftrightarrow$|, # left right double arrow
-
- # Mathematical Operators.
- # Some of these require the `amssymb' package.
- 'forall' => q|$\forall$|, # for all
- 'part' => q|$\partial$|, # partial differential
- 'exist' => q|$\exists$|, # there exists
- 'empty' => q|$\emptyset$|, # empty set = null set = diameter
- 'nabla' => q|$\nabla$|, # nabla = backward difference
- 'isin' => q|$\in$|, # element of
- 'notin' => q|$\notin$|, # not an element of
- 'ni' => q|$\ni$|, # contains as member
- 'prod' => q|$\prod$|, # n-ary product = product sign
- # prod is NOT the same character as 'greek capital letter pi' though the
- # same glyph might be used for both
- 'sum' => q|$\sum$|, # n-ary sumation
- # sum is NOT the same character as 'greek capital letter sigma' though
- # the same glyph might be used for both
- 'minus' => q|$-$|, # minus sign
- 'lowast' => q|$\ast$|, # asterisk operator
- 'radic' => q|$\surd$|, # square root = radical sign
- 'prop' => q|$\propto$|, # proportional to
- 'infin' => q|$\infty$|, # infinity
- 'ang' => q|$\angle$|, # angle
- 'and' => q|$\wedge$|, # logical and = wedge
- 'or' => q|$\vee$|, # logical or = vee
- 'cap' => q|$\cap$|, # intersection = cap
- 'cup' => q|$\cup$|, # union = cup
- 'int' => q|$\int$|, # integral
- 'there4' => q|$\therefore$|, # therefore
- 'sim' => q|$\sim$|, # tilde operator = varies with = similar to
- # tilde operator is NOT the same character as the tilde
- 'cong' => q|$\cong$|, # approximately equal to
- 'asymp' => q|$\asymp$|, # almost equal to = asymptotic to
- 'ne' => q|$\neq$|, # not equal to
- 'equiv' => q|$\equiv$|, # identical to
- 'le' => q|$\leq$|, # less-than or equal to
- 'ge' => q|$\geq$|, # greater-than or equal to
- 'sub' => q|$\subset$|, # subset of
- 'sup' => q|$\supset$|, # superset of
- # note that nsup, 'not a superset of' is not covered by the Symbol font
- # encoding and is not included.
- 'nsub' => q|$\not\subset$|, # not a subset of
- 'sube' => q|$\subseteq$|, # subset of or equal to
- 'supe' => q|$\supseteq$|, # superset of or equal to
- 'oplus' => q|$\oplus$|, # circled plus = direct sum
- 'otimes' => q|$\otimes$|, # circled times = vector product
- 'perp' => q|$\perp$|, # up tack = orthogonal to = perpendicular
- 'sdot' => q|$\cdot$|, # dot operator
- # dot operator is NOT the same character as middle dot
-
- # Miscellaneous Technical
- 'lceil' => q|$\lceil$|, # left ceiling = apl upstile
- 'rceil' => q|$\rceil$|, # right ceiling
- 'lfloor' => q|$\lfloor$|, # left floor = apl downstile
- 'rfloor' => q|$\rfloor$|, # right floor
- 'lang' => q|$\langle$|, # left-pointing angle bracket = bra
- # lang is NOT the same character as 'less than' or 'single left-pointing
- # angle quotation mark'
- 'rang' => q|$\rangle$|, # right-pointing angle bracket = ket
- # rang is NOT the same character as 'greater than' or 'single
- # right-pointing angle quotation mark'
-
- # Geometric Shapes
- 'loz' => q|$\lozenge$|, # lozenge
-
- # Miscellaneous Symbols
- 'spades' => q|$\spadesuit$|, # black spade suit
- 'clubs' => q|$\clubsuit$|, # black club suit = shamrock
- 'hearts' => q|$\heartsuit$|, # black heart suit = valentine
- 'diams' => q|$\diamondsuit$|, # black diamond suit
-
- # C0 Controls and Basic Latin
- 'quot' => q|"|, # quotation mark = APL quote ["]
- 'amp' => q|\&|, # ampersand
- 'lt' => q|<|, # less-than sign
- 'gt' => q|>|, # greater-than sign
- 'OElig' => q|\OE{}|, # latin capital ligature OE
- 'oelig' => q|\oe{}|, # latin small ligature oe
- 'Scaron' => q|\v{S}|, # latin capital letter S with caron
- 'scaron' => q|\v{s}|, # latin small letter s with caron
- 'Yuml' => q|\"Y|, # latin capital letter Y with diaeresis
- 'circ' => q|\textasciicircum{}|, # modifier letter circumflex accent
- 'tilde' => q|\textasciitilde{}|, # small tilde
- 'ensp' => q|\phantom{n}|, # en space
- 'emsp' => q|\hspace{1em}|, # em space
- 'thinsp' => q|\,|, # thin space
- 'zwnj' => q|{}|, # zero width non-joiner
-# 'zwj' => q||, # zero width joiner
-# 'lrm' => q||, # left-to-right mark
-# 'rlm' => q||, # right-to-left mark
- 'ndash' => q|--|, # en dash
- 'mdash' => q|---|, # em dash
- 'lsquo' => q|\textquoteleft{}|, # left single quotation mark
- 'rsquo' => q|\textquoteright{}|, # right single quotation mark
- 'sbquo' => q|\quotesinglbase{}|, # single low-9 quotation mark
- 'ldquo' => q|\textquotedblleft{}|, # left double quotation mark
- 'rdquo' => q|\textquotedblright{}|, # right double quotation mark
- 'bdquo' => q|\quotedblbase{}|, # double low-9 quotation mark
- 'dagger' => q|\textdagger{}|, # dagger
- 'Dagger' => q|\textdaggerdbl{}|, # double dagger
- 'permil' => q|\textperthousand{}|, # per mille sign
- 'lsaquo' => q|\guilsinglleft{}|, # single left-pointing angle quotation mark
- 'rsaquo' => q|\guilsinglright{}|, # single right-pointing angle quotation mark
- 'euro' => q|\texteuro{}|, # euro sign
-);
-
-=head1 OBJECT METHODS
-
-The following methods are provided in this module. Methods inherited
-from C<Pod::Select> are not described in the public interface.
-
-=over 4
-
-=begin __PRIVATE__
-
-=item C<initialize>
-
-Initialise the object. This method is subclassed from C<Pod::Parser>.
-The base class method is invoked. This method defines the default
-behaviour of the object unless overridden by supplying arguments to
-the constructor.
-
-Internal settings are defaulted as well as the public instance data.
-Internal hash values are accessed directly (rather than through
-a method) and start with an underscore.
-
-This method should not be invoked by the user directly.
-
-=end __PRIVATE__
-
-=cut
-
-
-
-# - An array for nested lists
-
-# Arguments have already been read by this point
-
-sub initialize {
- my $self = shift;
-
- # print Dumper($self);
-
- # Internals
- $self->{_Lists} = []; # For nested lists
- $self->{_suppress_all_para} = 0; # For =begin blocks
- $self->{_dont_modify_any_para}=0; # For =begin blocks
- $self->{_CURRENT_HEAD1} = ''; # Name of current HEAD1 section
-
- # Options - only initialise if not already set
-
- # Cause the '=head1 NAME' field to be treated specially
- # The contents of the NAME paragraph will be converted
- # to a section title. All subsequent =head1 will be converted
- # to =head2 and down. Will not affect =head1's prior to NAME
- # Assumes: 'Module - purpose' format
- # Also creates a purpose field
- # The name is used for Labeling of the subsequent subsections
- $self->{ReplaceNAMEwithSection} = 0
- unless exists $self->{ReplaceNAMEwithSection};
- $self->{AddPreamble} = 1 # make full latex document
- unless exists $self->{AddPreamble};
- $self->{StartWithNewPage} = 0 # Start new page for pod section
- unless exists $self->{StartWithNewPage};
- $self->{TableOfContents} = 0 # Add table of contents
- unless exists $self->{TableOfContents}; # only relevent if AddPreamble=1
- $self->{AddPostamble} = 1 # Add closing latex code at end
- unless exists $self->{AddPostamble}; # effectively end{document} and index
- $self->{MakeIndex} = 1 # Add index (only relevant AddPostamble
- unless exists $self->{MakeIndex}; # and AddPreamble)
-
- $self->{UniqueLabels} = 1 # Use label unique for each pod
- unless exists $self->{UniqueLabels}; # either based on the filename
- # or supplied
-
- # Control the level of =head1. default is \section
- #
- $self->{Head1Level} = 1 # Offset in latex sections
- unless exists $self->{Head1Level}; # 0 is chapter, 2 is subsection
-
- # Control at which level numbering of sections is turned off
- # ie subsection becomes subsection*
- # The numbering is relative to the latex sectioning commands
- # and is independent of Pod heading level
- # default is to number \section but not \subsection
- $self->{LevelNoNum} = 2
- unless exists $self->{LevelNoNum};
-
- # Label to be used as prefix to all internal section names
- # If not defined will attempt to derive it from the filename
- # This can not happen when running parse_from_filehandle though
- # hence the ability to set the label externally
- # The label could then be Pod::Parser_DESCRIPTION or somesuch
-
- $self->{Label} = undef # label to be used as prefix
- unless exists $self->{Label}; # to all internal section names
-
- # These allow the caller to add arbritrary latex code to
- # start and end of document. AddPreamble and AddPostamble are ignored
- # if these are set.
- # Also MakeIndex and TableOfContents are also ignored.
- $self->{UserPreamble} = undef # User supplied start (AddPreamble =1)
- unless exists $self->{Label};
- $self->{UserPostamble} = undef # Use supplied end (AddPostamble=1)
- unless exists $self->{Label};
-
- # Run base initialize
- $self->SUPER::initialize;
-
-}
-
-=back
-
-=head2 Data Accessors
-
-The following methods are provided for accessing instance data. These
-methods should be used for accessing configuration parameters rather
-than assuming the object is a hash.
-
-Default values can be supplied by using these names as keys to a hash
-of arguments when using the C<new()> constructor.
-
-=over 4
-
-=item B<AddPreamble>
-
-Logical to control whether a C<latex> preamble is to be written.
-If true, a valid C<latex> preamble is written before the pod data is written.
-This is similar to:
-
- \documentclass{article}
- \usepackage[T1]{fontenc}
- \usepackage{textcomp}
- \begin{document}
-
-but will be more complicated if table of contents and indexing are required.
-Can be used to set or retrieve the current value.
-
- $add = $parser->AddPreamble();
- $parser->AddPreamble(1);
-
-If used in conjunction with C<AddPostamble> a full latex document will
-be written that could be immediately processed by C<latex>.
-
-For some pod escapes it may be necessary to include the amsmath
-package. This is not yet added to the preamble automaatically.
-
-=cut
-
-sub AddPreamble {
- my $self = shift;
- if (@_) {
- $self->{AddPreamble} = shift;
- }
- return $self->{AddPreamble};
-}
-
-=item B<AddPostamble>
-
-Logical to control whether a standard C<latex> ending is written to the output
-file after the document has been processed.
-In its simplest form this is simply:
-
- \end{document}
-
-but can be more complicated if a index is required.
-Can be used to set or retrieve the current value.
-
- $add = $parser->AddPostamble();
- $parser->AddPostamble(1);
-
-If used in conjunction with C<AddPreaamble> a full latex document will
-be written that could be immediately processed by C<latex>.
-
-=cut
-
-sub AddPostamble {
- my $self = shift;
- if (@_) {
- $self->{AddPostamble} = shift;
- }
- return $self->{AddPostamble};
-}
-
-=item B<Head1Level>
-
-The C<latex> sectioning level that should be used to correspond to
-a pod C<=head1> directive. This can be used, for example, to turn
-a C<=head1> into a C<latex> C<subsection>. This should hold a number
-corresponding to the required position in an array containing the
-following elements:
-
- [0] chapter
- [1] section
- [2] subsection
- [3] subsubsection
- [4] paragraph
- [5] subparagraph
-
-Can be used to set or retrieve the current value:
-
- $parser->Head1Level(2);
- $sect = $parser->Head1Level;
-
-Setting this number too high can result in sections that may not be reproducible
-in the expected way. For example, setting this to 4 would imply that C<=head3>
-do not have a corresponding C<latex> section (C<=head1> would correspond to
-a C<paragraph>).
-
-A check is made to ensure that the supplied value is an integer in the
-range 0 to 5.
-
-Default is for a value of 1 (i.e. a C<section>).
-
-=cut
-
-sub Head1Level {
- my $self = shift;
- if (@_) {
- my $arg = shift;
- if ($arg =~ /^\d$/ && $arg <= $#LatexSections) {
- $self->{Head1Level} = $arg;
- } else {
- carp "Head1Level supplied ($arg) must be integer in range 0 to ".$#LatexSections . "- Ignoring\n";
- }
- }
- return $self->{Head1Level};
-}
-
-=item B<Label>
-
-This is the label that is prefixed to all C<latex> label and index
-entries to make them unique. In general, pods have similarly titled
-sections (NAME, DESCRIPTION etc) and a C<latex> label will be multiply
-defined if more than one pod document is to be included in a single
-C<latex> file. To overcome this, this label is prefixed to a label
-whenever a label is required (joined with an underscore) or to an
-index entry (joined by an exclamation mark which is the normal index
-separator). For example, C<\label{text}> becomes C<\label{Label_text}>.
-
-Can be used to set or retrieve the current value:
-
- $label = $parser->Label;
- $parser->Label($label);
-
-This label is only used if C<UniqueLabels> is true.
-Its value is set automatically from the C<NAME> field
-if C<ReplaceNAMEwithSection> is true. If this is not the case
-it must be set manually before starting the parse.
-
-Default value is C<undef>.
-
-=cut
-
-sub Label {
- my $self = shift;
- if (@_) {
- $self->{Label} = shift;
- }
- return $self->{Label};
-}
-
-=item B<LevelNoNum>
-
-Control the point at which C<latex> section numbering is turned off.
-For example, this can be used to make sure that C<latex> sections
-are numbered but subsections are not.
-
-Can be used to set or retrieve the current value:
-
- $lev = $parser->LevelNoNum;
- $parser->LevelNoNum(2);
-
-The argument must be an integer between 0 and 5 and is the same as the
-number described in C<Head1Level> method description. The number has
-nothing to do with the pod heading number, only the C<latex> sectioning.
-
-Default is 2. (i.e. C<latex> subsections are written as C<subsection*>
-but sections are numbered).
-
-=cut
-
-sub LevelNoNum {
- my $self = shift;
- if (@_) {
- $self->{LevelNoNum} = shift;
- }
- return $self->{LevelNoNum};
-}
-
-=item B<MakeIndex>
-
-Controls whether C<latex> commands for creating an index are to be inserted
-into the preamble and postamble
-
- $makeindex = $parser->MakeIndex;
- $parser->MakeIndex(0);
-
-Irrelevant if both C<AddPreamble> and C<AddPostamble> are false (or equivalently,
-C<UserPreamble> and C<UserPostamble> are set).
-
-Default is for an index to be created.
-
-=cut
-
-sub MakeIndex {
- my $self = shift;
- if (@_) {
- $self->{MakeIndex} = shift;
- }
- return $self->{MakeIndex};
-}
-
-=item B<ReplaceNAMEwithSection>
-
-This controls whether the C<NAME> section in the pod is to be translated
-literally or converted to a slightly modified output where the section
-name is the pod name rather than "NAME".
-
-If true, the pod segment
-
- =head1 NAME
-
- pod::name - purpose
-
- =head1 SYNOPSIS
-
-is converted to the C<latex>
-
- \section{pod::name\label{pod_name}\index{pod::name}}
-
- Purpose
-
- \subsection*{SYNOPSIS\label{pod_name_SYNOPSIS}%
- \index{pod::name!SYNOPSIS}}
-
-(dependent on the value of C<Head1Level> and C<LevelNoNum>). Note that
-subsequent C<head1> directives translate to subsections rather than
-sections and that the labels and index now include the pod name (dependent
-on the value of C<UniqueLabels>).
-
-The C<Label> is set from the pod name regardless of any current value
-of C<Label>.
-
- $mod = $parser->ReplaceNAMEwithSection;
- $parser->ReplaceNAMEwithSection(0);
-
-Default is to translate the pod literally.
-
-=cut
-
-sub ReplaceNAMEwithSection {
- my $self = shift;
- if (@_) {
- $self->{ReplaceNAMEwithSection} = shift;
- }
- return $self->{ReplaceNAMEwithSection};
-}
-
-=item B<StartWithNewPage>
-
-If true, each pod translation will begin with a C<latex>
-C<\clearpage>.
-
- $parser->StartWithNewPage(1);
- $newpage = $parser->StartWithNewPage;
-
-Default is false.
-
-=cut
-
-sub StartWithNewPage {
- my $self = shift;
- if (@_) {
- $self->{StartWithNewPage} = shift;
- }
- return $self->{StartWithNewPage};
-}
-
-=item B<TableOfContents>
-
-If true, a table of contents will be created.
-Irrelevant if C<AddPreamble> is false or C<UserPreamble>
-is set.
-
- $toc = $parser->TableOfContents;
- $parser->TableOfContents(1);
-
-Default is false.
-
-=cut
-
-sub TableOfContents {
- my $self = shift;
- if (@_) {
- $self->{TableOfContents} = shift;
- }
- return $self->{TableOfContents};
-}
-
-=item B<UniqueLabels>
-
-If true, the translator will attempt to make sure that
-each C<latex> label or index entry will be uniquely identified
-by prefixing the contents of C<Label>. This allows
-multiple documents to be combined without clashing
-common labels such as C<DESCRIPTION> and C<SYNOPSIS>
-
- $parser->UniqueLabels(1);
- $unq = $parser->UniqueLabels;
-
-Default is true.
-
-=cut
-
-sub UniqueLabels {
- my $self = shift;
- if (@_) {
- $self->{UniqueLabels} = shift;
- }
- return $self->{UniqueLabels};
-}
-
-=item B<UserPreamble>
-
-User supplied C<latex> preamble. Added before the pod translation
-data.
-
-If set, the contents will be prepended to the output file before the translated
-data regardless of the value of C<AddPreamble>.
-C<MakeIndex> and C<TableOfContents> will also be ignored.
-
-=cut
-
-sub UserPreamble {
- my $self = shift;
- if (@_) {
- $self->{UserPreamble} = shift;
- }
- return $self->{UserPreamble};
-}
-
-=item B<UserPostamble>
-
-User supplied C<latex> postamble. Added after the pod translation
-data.
-
-If set, the contents will be prepended to the output file after the translated
-data regardless of the value of C<AddPostamble>.
-C<MakeIndex> will also be ignored.
-
-=cut
-
-sub UserPostamble {
- my $self = shift;
- if (@_) {
- $self->{UserPostamble} = shift;
- }
- return $self->{UserPostamble};
-}
-
-=begin __PRIVATE__
-
-=item B<Lists>
-
-Contains details of the currently active lists.
- The array contains C<Pod::List> objects. A new C<Pod::List>
-object is created each time a list is encountered and it is
-pushed onto this stack. When the list context ends, it
-is popped from the stack. The array will be empty if no
-lists are active.
-
-Returns array of list information in list context
-Returns array ref in scalar context
-
-=cut
-
-
-
-sub lists {
- my $self = shift;
- return @{ $self->{_Lists} } if wantarray();
- return $self->{_Lists};
-}
-
-=end __PRIVATE__
-
-=back
-
-=begin __PRIVATE__
-
-=head2 Subclassed methods
-
-The following methods override methods provided in the C<Pod::Select>
-base class. See C<Pod::Parser> and C<Pod::Select> for more information
-on what these methods require.
-
-=over 4
-
-=cut
-
-######### END ACCESSORS ###################
-
-# Opening pod
-
-=item B<begin_pod>
-
-Writes the C<latex> preamble if requested. Only writes something
-if AddPreamble is true. Writes a standard header unless a UserPreamble
-is defined.
-
-=cut
-
-sub begin_pod {
- my $self = shift;
-
- # Get the pod identification
- # This should really come from the '=head1 NAME' paragraph
-
- my $infile = $self->input_file;
- my $class = ref($self);
- my $date = gmtime(time);
-
- # Comment message to say where this came from
- my $comment = << "__TEX_COMMENT__";
-%% Latex generated from POD in document $infile
-%% Using the perl module $class
-%% Converted on $date
-__TEX_COMMENT__
-
- # Write the preamble
- # If the caller has supplied one then we just use that
-
- my $preamble = '';
-
- if ($self->AddPreamble) {
-
- if (defined $self->UserPreamble) {
-
- $preamble = $self->UserPreamble;
-
- # Add the description of where this came from
- $preamble .= "\n$comment\n%% Preamble supplied by user.\n\n";
-
- } else {
-
- # Write our own preamble
-
- # Code to initialise index making
- # Use an array so that we can prepend comment if required
- my @makeidx = (
- '\usepackage{makeidx}',
- '\makeindex',
- );
-
- unless ($self->MakeIndex) {
- foreach (@makeidx) {
- $_ = '%% ' . $_;
- }
- }
- my $makeindex = join("\n",@makeidx) . "\n";
-
- # Table of contents
- my $tableofcontents = '\tableofcontents';
-
- $tableofcontents = '%% ' . $tableofcontents
- unless $self->TableOfContents;
-
- # Roll our own
- $preamble = << "__TEX_HEADER__";
-\\documentclass{article}
-\\usepackage[T1]{fontenc}
-\\usepackage{textcomp}
-
-$comment
-
-$makeindex
-
-\\begin{document}
-
-$tableofcontents
-
-__TEX_HEADER__
-
- }
- }
-
- # Write the header (blank if none)
- $self->_output($preamble);
-
- # Start on new page if requested
- $self->_output("\\clearpage\n") if $self->StartWithNewPage;
-
-}
-
-
-=item B<end_pod>
-
-Write the closing C<latex> code. Only writes something if AddPostamble
-is true. Writes a standard header unless a UserPostamble is defined.
-
-=cut
-
-sub end_pod {
- my $self = shift;
-
- # End string
- my $end = '';
-
- # Use the user version of the postamble if defined
- if ($self->AddPostamble) {
-
- if (defined $self->UserPostamble) {
- $end = $self->UserPostamble;
-
- } else {
-
- # Check for index
- my $makeindex = '\printindex';
-
- $makeindex = '%% '. $makeindex unless $self->MakeIndex;
-
- $end = "$makeindex\n\n\\end{document}\n";
- }
- }
-
- $self->_output($end);
-
-}
-
-=item B<command>
-
-Process basic pod commands.
-
-=cut
-
-sub command {
- my $self = shift;
- my ($command, $paragraph, $line_num, $parobj) = @_;
-
- # return if we dont care
- return if $command eq 'pod';
-
- # Store a copy of the raw text in case we are in a =for
- # block and need to preserve the existing latex
- my $rawpara = $paragraph;
-
- # Do the latex escapes
- $paragraph = $self->_replace_special_chars($paragraph);
-
- # Interpolate pod sequences in paragraph
- $paragraph = $self->interpolate($paragraph, $line_num);
- $paragraph =~ s/\s+$//;
-
- # Replace characters that can only be done after
- # interpolation of interior sequences
- $paragraph = $self->_replace_special_chars_late($paragraph);
-
- # Now run the command
- if ($command eq 'over') {
-
- $self->begin_list($paragraph, $line_num);
-
- } elsif ($command eq 'item') {
-
- $self->add_item($paragraph, $line_num);
-
- } elsif ($command eq 'back') {
-
- $self->end_list($line_num);
-
- } elsif ($command eq 'head1') {
-
- # Store the name of the section
- $self->{_CURRENT_HEAD1} = $paragraph;
-
- # Print it
- $self->head(1, $paragraph, $parobj);
-
- } elsif ($command eq 'head2') {
-
- $self->head(2, $paragraph, $parobj);
-
- } elsif ($command eq 'head3') {
-
- $self->head(3, $paragraph, $parobj);
-
- } elsif ($command eq 'head4') {
-
- $self->head(4, $paragraph, $parobj);
-
- } elsif ($command eq 'head5') {
-
- $self->head(5, $paragraph, $parobj);
-
- } elsif ($command eq 'head6') {
-
- $self->head(6, $paragraph, $parobj);
-
- } elsif ($command eq 'begin') {
-
- # pass through if latex
- if ($paragraph =~ /^latex/i) {
- # Make sure that subsequent paragraphs are not modfied before printing
- $self->{_dont_modify_any_para} = 1;
-
- } else {
- # Suppress all subsequent paragraphs unless
- # it is explcitly intended for latex
- $self->{_suppress_all_para} = 1;
- }
-
- } elsif ($command eq 'for') {
-
- # =for latex
- # some latex
-
- # With =for we will get the text for the full paragraph
- # as well as the format name.
- # We do not get an additional paragraph later on. The next
- # paragraph is not governed by the =for
-
- # The first line contains the format and the rest is the
- # raw code.
- my ($format, $chunk) = split(/\n/, $rawpara, 2);
-
- # If we have got some latex code print it out immediately
- # unmodified. Else do nothing.
- if ($format =~ /^latex/i) {
- # Make sure that next paragraph is not modfied before printing
- $self->_output( $chunk );
-
- }
-
- } elsif ($command eq 'end') {
-
- # Reset suppression
- $self->{_suppress_all_para} = 0;
- $self->{_dont_modify_any_para} = 0;
-
- } elsif ($command eq 'pod') {
-
- # Do nothing
-
- } else {
- carp "Command $command not recognised at line $line_num\n";
- }
-
-}
-
-=item B<verbatim>
-
-Verbatim text
-
-=cut
-
-sub verbatim {
- my $self = shift;
- my ($paragraph, $line_num, $parobj) = @_;
-
- # Expand paragraph unless in =begin block
- if ($self->{_dont_modify_any_para}) {
- # Just print as is
- $self->_output($paragraph);
-
- } else {
-
- return if $paragraph =~ /^\s+$/;
-
- # Clean trailing space
- $paragraph =~ s/\s+$//;
-
- # Clean tabs. Routine taken from Tabs.pm
- # by David Muir Sharnoff muir@idiom.com,
- # slightly modified by hsmyers@sdragons.com 10/22/01
- my @l = split("\n",$paragraph);
- foreach (@l) {
- 1 while s/(^|\n)([^\t\n]*)(\t+)/
- $1. $2 . (" " x
- (8 * length($3)
- - (length($2) % 8)))
- /sex;
- }
- $paragraph = join("\n",@l);
- # End of change.
-
-
-
- $self->_output('\begin{verbatim}' . "\n$paragraph\n". '\end{verbatim}'."\n");
- }
-}
-
-=item B<textblock>
-
-Plain text paragraph.
-
-=cut
-
-sub textblock {
- my $self = shift;
- my ($paragraph, $line_num, $parobj) = @_;
-
- # print Dumper($self);
-
- # Expand paragraph unless in =begin block
- if ($self->{_dont_modify_any_para}) {
- # Just print as is
- $self->_output($paragraph);
-
- return;
- }
-
-
- # Escape latex special characters
- $paragraph = $self->_replace_special_chars($paragraph);
-
- # Interpolate interior sequences
- my $expansion = $self->interpolate($paragraph, $line_num);
- $expansion =~ s/\s+$//;
-
- # Escape special characters that can not be done earlier
- $expansion = $self->_replace_special_chars_late($expansion);
-
- # If we are replacing 'head1 NAME' with a section
- # we need to look in the paragraph and rewrite things
- # Need to make sure this is called only on the first paragraph
- # following 'head1 NAME' and not on subsequent paragraphs that may be
- # present.
- if ($self->{_CURRENT_HEAD1} =~ /^NAME/i && $self->ReplaceNAMEwithSection()) {
-
- # Strip white space from start and end
- $paragraph =~ s/^\s+//;
- $paragraph =~ s/\s$//;
-
- # Split the string into 2 parts
- my ($name, $purpose) = split(/\s+-\s+/, $expansion,2);
-
- # Now prevent this from triggering until a new head1 NAME is set
- $self->{_CURRENT_HEAD1} = '_NAME';
-
- # Might want to clear the Label() before doing this (CHECK)
-
- # Print the heading
- $self->head(1, $name, $parobj);
-
- # Set the labeling in case we want unique names later
- $self->Label( $self->_create_label( $name, 1 ) );
-
- # Raise the Head1Level by one so that subsequent =head1 appear
- # as subsections of the main name section unless we are already
- # at maximum [Head1Level() could check this itself - CHECK]
- $self->Head1Level( $self->Head1Level() + 1)
- unless $self->Head1Level == $#LatexSections;
-
- # Now write out the new latex paragraph
- $purpose = ucfirst($purpose);
- $self->_output("\n\n$purpose\n\n");
-
- } else {
- # Just write the output
- $self->_output("\n\n$expansion\n\n");
- }
-
-}
-
-=item B<interior_sequence>
-
-Interior sequence expansion
-
-=cut
-
-sub interior_sequence {
- my $self = shift;
-
- my ($seq_command, $seq_argument, $pod_seq) = @_;
-
- if ($seq_command eq 'B') {
- return "\\textbf{$seq_argument}";
-
- } elsif ($seq_command eq 'I') {
- return "\\textit{$seq_argument}";
-
- } elsif ($seq_command eq 'E') {
-
- # If it is simply a number
- if ($seq_argument =~ /^\d+$/) {
- return chr($seq_argument);
- # Look up escape in hash table
- } elsif (exists $HTML_Escapes{$seq_argument}) {
- return $HTML_Escapes{$seq_argument};
-
- } else {
- my ($file, $line) = $pod_seq->file_line();
- warn "Escape sequence $seq_argument not recognised at line $line of file $file\n";
- return;
- }
-
- } elsif ($seq_command eq 'Z') {
-
- # Zero width space
- return '{}';
-
- } elsif ($seq_command eq 'C') {
- return "\\texttt{$seq_argument}";
-
- } elsif ($seq_command eq 'F') {
- return "\\emph{$seq_argument}";
-
- } elsif ($seq_command eq 'S') {
- # non breakable spaces
- my $nbsp = '~';
-
- $seq_argument =~ s/\s/$nbsp/g;
- return $seq_argument;
-
- } elsif ($seq_command eq 'L') {
- my $link = new Pod::Hyperlink($seq_argument);
-
- # undef on failure
- unless (defined $link) {
- carp $@;
- return;
- }
-
- # Handle internal links differently
- my $type = $link->type;
- my $page = $link->page;
-
- if ($type eq 'section' && $page eq '') {
- # Use internal latex reference
- my $node = $link->node;
-
- # Convert to a label
- $node = $self->_create_label($node);
-
- return "\\S\\ref{$node}";
-
- } else {
- # Use default markup for external references
- # (although Starlink would use \xlabel)
- my $markup = $link->markup;
- my ($file, $line) = $pod_seq->file_line();
-
- return $self->interpolate($link->markup, $line);
- }
-
-
-
- } elsif ($seq_command eq 'P') {
- # Special markup for Pod::Hyperlink
- # Replace :: with / - but not sure if I want to do this
- # any more.
- my $link = $seq_argument;
- $link =~ s|::|/|g;
-
- my $ref = "\\emph{$seq_argument}";
- return $ref;
-
- } elsif ($seq_command eq 'Q') {
- # Special markup for Pod::Hyperlink
- return "\\textsf{$seq_argument}";
-
- } elsif ($seq_command eq 'X') {
- # Index entries
-
- # use \index command
- # I will let '!' go through for now
- # not sure how sub categories are handled in X<>
- my $index = $self->_create_index($seq_argument);
- return "\\index{$index}\n";
-
- } else {
- carp "Unknown sequence $seq_command<$seq_argument>";
- }
-
-}
-
-=back
-
-=head2 List Methods
-
-Methods used to handle lists.
-
-=over 4
-
-=item B<begin_list>
-
-Called when a new list is found (via the C<over> directive).
-Creates a new C<Pod::List> object and stores it on the
-list stack.
-
- $parser->begin_list($indent, $line_num);
-
-=cut
-
-sub begin_list {
- my $self = shift;
- my $indent = shift;
- my $line_num = shift;
-
- # Indicate that a list should be started for the next item
- # need to do this to work out the type of list
- push ( @{$self->lists}, new Pod::List(-indent => $indent,
- -start => $line_num,
- -file => $self->input_file,
- )
- );
-
-}
-
-=item B<end_list>
-
-Called when the end of a list is found (the C<back> directive).
-Pops the C<Pod::List> object off the stack of lists and writes
-the C<latex> code required to close a list.
-
- $parser->end_list($line_num);
-
-=cut
-
-sub end_list {
- my $self = shift;
- my $line_num = shift;
-
- unless (defined $self->lists->[-1]) {
- my $file = $self->input_file;
- warn "No list is active at line $line_num (file=$file). Missing =over?\n";
- return;
- }
-
- # What to write depends on list type
- my $type = $self->lists->[-1]->type;
-
- # Dont write anything if the list type is not set
- # iomplying that a list was created but no entries were
- # placed in it (eg because of a =begin/=end combination)
- $self->_output("\\end{$type}\n")
- if (defined $type && length($type) > 0);
-
- # Clear list
- pop(@{ $self->lists});
-
-}
-
-=item B<add_item>
-
-Add items to the list. The first time an item is encountered
-(determined from the state of the current C<Pod::List> object)
-the type of list is determined (ordered, unnumbered or description)
-and the relevant latex code issued.
-
- $parser->add_item($paragraph, $line_num);
-
-=cut
-
-sub add_item {
- my $self = shift;
- my $paragraph = shift;
- my $line_num = shift;
-
- unless (defined $self->lists->[-1]) {
- my $file = $self->input_file;
- warn "List has already ended by line $line_num of file $file. Missing =over?\n";
- # Replace special chars
-# $paragraph = $self->_replace_special_chars($paragraph);
- $self->_output("$paragraph\n\n");
- return;
- }
-
- # If paragraphs printing is turned off via =begin/=end or whatver
- # simply return immediately
- return if $self->{_suppress_all_para};
-
- # Check to see whether we are starting a new lists
- if (scalar($self->lists->[-1]->item) == 0) {
-
- # Examine the paragraph to determine what type of list
- # we have
- $paragraph =~ s/\s+$//;
- $paragraph =~ s/^\s+//;
-
- my $type;
- if (substr($paragraph, 0,1) eq '*') {
- $type = 'itemize';
- } elsif ($paragraph =~ /^\d/) {
- $type = 'enumerate';
- } else {
- $type = 'description';
- }
- $self->lists->[-1]->type($type);
-
- $self->_output("\\begin{$type}\n");
-
- }
-
- my $type = $self->lists->[-1]->type;
-
- if ($type eq 'description') {
- # Handle long items - long items do not wrap
- # If the string is longer than 40 characters we split
- # it into a real item header and some bold text.
- my $maxlen = 40;
- my ($hunk1, $hunk2) = $self->_split_delimited( $paragraph, $maxlen );
-
- # Print the first hunk
- $self->_output("\n\\item[{$hunk1}] ");
-
- # and the second hunk if it is defined
- if ($hunk2) {
- $self->_output("\\textbf{$hunk2}");
- } else {
- # Not there so make sure we have a new line
- $self->_output("\\mbox{}");
- }
-
- } else {
- # If the item was '* Something' or '\d+ something' we still need to write
- # out the something. Also allow 1) and 1.
- my $extra_info = $paragraph;
- $extra_info =~ s/^(\*|\d+[\.\)]?)\s*//;
- $self->_output("\n\\item $extra_info");
- }
-
- # Store the item name in the object. Required so that
- # we can tell if the list is new or not
- $self->lists->[-1]->item($paragraph);
-
-}
-
-=back
-
-=head2 Methods for headings
-
-=over 4
-
-=item B<head>
-
-Print a heading of the required level.
-
- $parser->head($level, $paragraph, $parobj);
-
-The first argument is the pod heading level. The second argument
-is the contents of the heading. The 3rd argument is a Pod::Paragraph
-object so that the line number can be extracted.
-
-=cut
-
-sub head {
- my $self = shift;
- my $num = shift;
- my $paragraph = shift;
- my $parobj = shift;
-
- # If we are replace 'head1 NAME' with a section
- # we return immediately if we get it
- return
- if ($self->{_CURRENT_HEAD1} =~ /^NAME/i && $self->ReplaceNAMEwithSection());
-
- # Create a label
- my $label = $self->_create_label($paragraph);
-
- # Create an index entry
- my $index = $self->_create_index($paragraph);
-
- # Work out position in the above array taking into account
- # that =head1 is equivalent to $self->Head1Level
-
- my $level = $self->Head1Level() - 1 + $num;
-
- # Warn if heading to large
- if ($num > $#LatexSections) {
- my $line = $parobj->file_line;
- my $file = $self->input_file;
- warn "Heading level too large ($level) for LaTeX at line $line of file $file\n";
- $level = $#LatexSections;
- }
-
- # Check to see whether section should be unnumbered
- my $star = ($level >= $self->LevelNoNum ? '*' : '');
-
- # Section
- $self->_output("\\" .$LatexSections[$level] .$star ."{$paragraph\\label{".$label ."}\\index{".$index."}}\n");
-
-}
-
-
-=back
-
-=end __PRIVATE__
-
-=begin __PRIVATE__
-
-=head2 Internal methods
-
-Internal routines are described in this section. They do not form part of the
-public interface. All private methods start with an underscore.
-
-=over 4
-
-=item B<_output>
-
-Output text to the output filehandle. This method must be always be called
-to output parsed text.
-
- $parser->_output($text);
-
-Does not write anything if a =begin is active that should be
-ignored.
-
-=cut
-
-sub _output {
- my $self = shift;
- my $text = shift;
-
- print { $self->output_handle } $text
- unless $self->{_suppress_all_para};
-
-}
-
-
-=item B<_replace_special_chars>
-
-Subroutine to replace characters that are special in C<latex>
-with the escaped forms
-
- $escaped = $parser->_replace_special_chars($paragraph);
-
-Need to call this routine before interior_sequences are munged but not
-if verbatim. It must be called before interpolation of interior
-sequences so that curly brackets and special latex characters inserted
-during interpolation are not themselves escaped. This means that < and
-> can not be modified here since the text still contains interior
-sequences.
-
-Special characters and the C<latex> equivalents are:
-
- } \}
- { \{
- _ \_
- $ \$
- % \%
- & \&
- \ $\backslash$
- ^ \^{}
- ~ \~{}
- # \#
-
-=cut
-
-sub _replace_special_chars {
- my $self = shift;
- my $paragraph = shift;
-
- # Replace a \ with $\backslash$
- # This is made more complicated because the dollars will be escaped
- # by the subsequent replacement. Easiest to add \backslash
- # now and then add the dollars
- $paragraph =~ s/\\/\\backslash/g;
-
- # Must be done after escape of \ since this command adds latex escapes
- # Replace characters that can be escaped
- $paragraph =~ s/([\$\#&%_{}])/\\$1/g;
-
- # Replace ^ characters with \^{} so that $^F works okay
- $paragraph =~ s/(\^)/\\$1\{\}/g;
-
- # Replace tilde (~) with \texttt{\~{}}
- $paragraph =~ s/~/\\texttt\{\\~\{\}\}/g;
-
- # Now add the dollars around each \backslash
- $paragraph =~ s/(\\backslash)/\$$1\$/g;
- return $paragraph;
-}
-
-=item B<_replace_special_chars_late>
-
-Replace special characters that can not be replaced before interior
-sequence interpolation. See C<_replace_special_chars> for a routine
-to replace special characters prior to interpolation of interior
-sequences.
-
-Does the following transformation:
-
- < $<$
- > $>$
- | $|$
-
-
-=cut
-
-sub _replace_special_chars_late {
- my $self = shift;
- my $paragraph = shift;
-
- # < and >
- $paragraph =~ s/(<|>)/\$$1\$/g;
-
- # Replace | with $|$
- $paragraph =~ s'\|'$|$'g;
-
-
- return $paragraph;
-}
-
-
-=item B<_create_label>
-
-Return a string that can be used as an internal reference
-in a C<latex> document (i.e. accepted by the C<\label> command)
-
- $label = $parser->_create_label($string)
-
-If UniqueLabels is true returns a label prefixed by Label()
-This can be suppressed with an optional second argument.
-
- $label = $parser->_create_label($string, $suppress);
-
-If a second argument is supplied (of any value including undef)
-the Label() is never prefixed. This means that this routine can
-be called to create a Label() without prefixing a previous setting.
-
-=cut
-
-sub _create_label {
- my $self = shift;
- my $paragraph = shift;
- my $suppress = (@_ ? 1 : 0 );
-
- # Remove latex commands
- $paragraph = $self->_clean_latex_commands($paragraph);
-
- # Remove non alphanumerics from the label and replace with underscores
- # want to protect '-' though so use negated character classes
- $paragraph =~ s/[^-:\w]/_/g;
-
- # Multiple underscores will look unsightly so remove repeats
- # This will also have the advantage of tidying up the end and
- # start of string
- $paragraph =~ s/_+/_/g;
-
- # If required need to make sure that the label is unique
- # since it is possible to have multiple pods in a single
- # document
- if (!$suppress && $self->UniqueLabels() && defined $self->Label) {
- $paragraph = $self->Label() .'_'. $paragraph;
- }
-
- return $paragraph;
-}
-
-
-=item B<_create_index>
-
-Similar to C<_create_label> except an index entry is created.
-If C<UniqueLabels> is true, the index entry is prefixed by
-the current C<Label> and an exclamation mark.
-
- $ind = $parser->_create_index($paragraph);
-
-An exclamation mark is used by C<makeindex> to generate
-sub-entries in an index.
-
-=cut
-
-sub _create_index {
- my $self = shift;
- my $paragraph = shift;
- my $suppress = (@_ ? 1 : 0 );
-
- # Remove latex commands
- $paragraph = $self->_clean_latex_commands($paragraph);
-
- # If required need to make sure that the index entry is unique
- # since it is possible to have multiple pods in a single
- # document
- if (!$suppress && $self->UniqueLabels() && defined $self->Label) {
- $paragraph = $self->Label() .'!'. $paragraph;
- }
-
- # Need to replace _ with space
- $paragraph =~ s/_/ /g;
-
- return $paragraph;
-
-}
-
-=item B<_clean_latex_commands>
-
-Removes latex commands from text. The latex command is assumed to be of the
-form C<\command{ text }>. "C<text>" is retained
-
- $clean = $parser->_clean_latex_commands($text);
-
-=cut
-
-sub _clean_latex_commands {
- my $self = shift;
- my $paragraph = shift;
-
- # Remove latex commands of the form \text{ }
- # and replace with the contents of the { }
- # need to make this non-greedy so that it can handle
- # "\text{a} and \text2{b}"
- # without converting it to
- # "a} and \text2{b"
- # This match will still get into trouble if \} is present
- # This is not vital since the subsequent replacement of non-alphanumeric
- # characters will tidy it up anyway
- $paragraph =~ s/\\\w+{(.*?)}/$1/g;
-
- return $paragraph
-}
-
-=item B<_split_delimited>
-
-Split the supplied string into two parts at approximately the
-specified word boundary. Special care is made to make sure that it
-does not split in the middle of some curly brackets.
-
-e.g. "this text is \textbf{very bold}" would not be split into
-"this text is \textbf{very" and " bold".
-
- ($hunk1, $hunk2) = $self->_split_delimited( $para, $length);
-
-The length indicates the maximum length of hunk1.
-
-=cut
-
-# initially Supplied by hsmyers@sdragons.com
-# 10/25/01, utility to split \hbox
-# busting lines. Reformatted by TimJ to match module style.
-sub _split_delimited {
- my $self = shift;
- my $input = shift;
- my $limit = shift;
-
- # Return immediately if already small
- return ($input, '') if length($input) < $limit;
-
- my @output;
- my $s = '';
- my $t = '';
- my $depth = 0;
- my $token;
-
- $input =~ s/\n/ /gm;
- $input .= ' ';
- foreach ( split ( //, $input ) ) {
- $token .= $_;
- if (/\{/) {
- $depth++;
- } elsif ( /}/ ) {
- $depth--;
- } elsif ( / / and $depth == 0) {
- push @output, $token if ( $token and $token ne ' ' );
- $token = '';
- }
- }
-
- foreach (@output) {
- if (length($s) < $limit) {
- $s .= $_;
- } else {
- $t .= $_;
- }
- }
-
- # Tidy up
- $s =~ s/\s+$//;
- $t =~ s/\s+$//;
- return ($s,$t);
-}
-
-=back
-
-=end __PRIVATE__
-
-=head1 NOTES
-
-Compatible with C<latex2e> only. Can not be used with C<latex> v2.09
-or earlier.
-
-A subclass of C<Pod::Select> so that specific pod sections can be
-converted to C<latex> by using the C<select> method.
-
-Some HTML escapes are missing and many have not been tested.
-
-=head1 SEE ALSO
-
-L<Pod::Parser>, L<Pod::Select>, L<pod2latex>
-
-=head1 AUTHORS
-
-Tim Jenness E<lt>tjenness@cpan.orgE<gt>
-
-Bug fixes and improvements have been received from: Simon Cozens
-E<lt>simon@cozens.netE<gt>, Mark A. Hershberger
-E<lt>mah@everybody.orgE<gt>, Marcel Grunauer
-E<lt>marcel@codewerk.comE<gt>, Hugh S Myers
-E<lt>hsmyers@sdragons.comE<gt>, Peter J Acklam
-E<lt>jacklam@math.uio.noE<gt>, Sudhi Herle E<lt>sudhi@herle.netE<gt>,
-Ariel Scolnicov E<lt>ariels@compugen.co.ilE<gt>,
-Adriano Rodrigues Ferreira E<lt>ferreira@triang.com.brE<gt> and
-R. de Vries E<lt>r.de.vries@dutchspace.nlE<gt>.
-
-
-=head1 COPYRIGHT
-
-Copyright (C) 2000-2004 Tim Jenness. All Rights Reserved.
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=begin __PRIVATE__
-
-=head1 REVISION
-
-$Id: LaTeX.pm,v 1.19 2004/12/30 01:40:44 timj Exp $
-
-=end __PRIVATE__
-
-=cut
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Pod/Man.pm b/Master/tlpkg/tlperl/lib/Pod/Man.pm
deleted file mode 100644
index 693e4c46896..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Man.pm
+++ /dev/null
@@ -1,1413 +0,0 @@
-# Pod::Man -- Convert POD data to formatted *roff input.
-# $Id: Man.pm,v 1.37 2003/03/30 22:34:11 eagle Exp $
-#
-# Copyright 1999, 2000, 2001, 2002, 2003 by Russ Allbery <rra@stanford.edu>
-#
-# This program is free software; you may redistribute it and/or modify it
-# under the same terms as Perl itself.
-#
-# This module translates POD documentation into *roff markup using the man
-# macro set, and is intended for converting POD documents written as Unix
-# manual pages to manual pages that can be read by the man(1) command. It is
-# a replacement for the pod2man command distributed with versions of Perl
-# prior to 5.6.
-#
-# 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.005;
-
-use Carp qw(carp croak);
-use Pod::ParseLink qw(parselink);
-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.37;
-
-
-##############################################################################
-# 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@, and the left and right
-# quotes to use for C<> text, designated by @LQOUTE@ and @RQUOTE@. $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 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. \*(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-
-.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` @LQUOTE@
-. ds C' @RQUOTE@
-'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.
-. \" 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----
-#`# for cperl-mode
-
-# 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
- 'apos' => "'", # apostrophe
- 'lt' => '<', # left chevron, less-than
- 'gt' => '>', # right chevron, greater-than
- 'quot' => '"', # double quote
- 'sol' => '/', # solidus (forward slash)
- 'verbar' => '|', # vertical bar
-
- '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
-
- 'nbsp' => '\\ ', # non-breaking space
- 'shy' => '', # soft (discretionary) hyphen
-);
-
-
-##############################################################################
-# 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;
- $_;
-}
-
-# 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 qq(roff font should be 1 or 2 chars,)
- . qq( 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{$_};
- }
-
- # Figure out what quotes we'll be using for C<> text.
- $$self{quotes} ||= '"';
- if ($$self{quotes} eq 'none') {
- $$self{LQUOTE} = $$self{RQUOTE} = '';
- } elsif (length ($$self{quotes}) == 1) {
- $$self{LQUOTE} = $$self{RQUOTE} = $$self{quotes};
- } elsif ($$self{quotes} =~ /^(.)(.)$/
- || $$self{quotes} =~ /^(..)(..)$/) {
- $$self{LQUOTE} = $1;
- $$self{RQUOTE} = $2;
- } else {
- croak qq(Invalid quote specification "$$self{quotes}");
- }
-
- # Double the first quote; note that this should not be s///g as two double
- # quotes is represented in *roff as three double quotes, not four. Weird,
- # I know.
- $$self{LQUOTE} =~ s/\"/\"\"/;
- $$self{RQUOTE} =~ s/\"/\"\"/;
-
- $self->SUPER::initialize;
-}
-
-# For each document we process, output the preamble first.
-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 !~ /^3/) {
- require File::Basename;
- $name = uc File::Basename::basename ($name);
- } else {
- # Assume that we're dealing with a module. We want to figure out
- # the full module name from the path to the file, but we don't
- # want to include too much of the path into the module name. Lose
- # everything up to the first of:
- #
- # */lib/*perl*/ standard or site_perl module
- # */*perl*/lib/ from -Dprefix=/opt/perl
- # */*perl*/ random module hierarchy
- #
- # which works. Also strip off a leading site or site_perl
- # component, any OS-specific component, and any version number
- # component, and strip off an initial component of "lib" or
- # "blib/lib" since that's what ExtUtils::MakeMaker creates.
- # splitdir requires at least File::Spec 0.8.
- require File::Spec;
- my ($volume, $dirs, $file) = File::Spec->splitpath ($name);
- my @dirs = File::Spec->splitdir ($dirs);
- my $cut = 0;
- my $i;
- for ($i = 0; $i < scalar @dirs; $i++) {
- if ($dirs[$i] eq 'lib' && $dirs[$i + 1] =~ /perl/) {
- $cut = $i + 2;
- last;
- } elsif ($dirs[$i] =~ /perl/) {
- $cut = $i + 1;
- $cut++ if $dirs[$i + 1] eq 'lib';
- last;
- }
- }
- if ($cut > 0) {
- splice (@dirs, 0, $cut);
- shift @dirs if ($dirs[0] =~ /^site(_perl)?$/);
- shift @dirs if ($dirs[0] =~ /^[\d.]+$/);
- shift @dirs if ($dirs[0] =~ /^(.*-$^O|$^O-.*|$^O)$/);
- }
- shift @dirs if $dirs[0] eq 'lib';
- splice (@dirs, 0, 2) if ($dirs[0] eq 'blib' && $dirs[1] eq 'lib');
-
- # Remove empty directories when building the module name; they
- # occur too easily on Unix by doubling slashes.
- $name = join ('::', (grep { $_ ? $_ : () } @dirs), $file);
- }
- }
-
- # If $name contains spaces, quote it; this mostly comes up in the case of
- # input from stdin.
- $name = '"' . $name . '"' if ($name =~ /\s/);
-
- # 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. The meaning of the arguments
- # to .TH unfortunately vary by system; some systems consider the fourth
- # argument to be a "source" and others use it as a version number.
- # Generally it's just presented as the left-side footer, though, so it
- # doesn't matter too much if a particular system gives it another
- # interpretation.
- #
- # The order of date and release used to be reversed in older versions of
- # this module, but this order is correct for both Solaris and Linux.
- local $_ = $PREAMBLE;
- s/\@CFONT\@/$$self{fixed}/;
- s/\@LQUOTE\@/$$self{LQUOTE}/;
- s/\@RQUOTE\@/$$self{RQUOTE}/;
- chomp $_;
- my $pversion = $Pod::Parser::VERSION;
- print { $self->output_handle } <<"----END OF HEADER----";
-.\\" Automatically generated by Pod::Man v$VERSION, Pod::Parser v$pversion
-.\\"
-.\\" Standard preamble:
-.\\" ========================================================================
-$_
-.\\" ========================================================================
-.\\"
-.IX Title "$name $section"
-.TH $name $section "$$self{date}" "$$self{release}" "$$self{center}"
-----END OF HEADER----
-
- # Initialize a few per-file variables.
- $$self{INDENT} = 0; # Current indentation level.
- $$self{INDENTS} = []; # Stack of indentations.
- $$self{INDEX} = []; # Index keys waiting to be printed.
- $$self{IN_NAME} = 0; # Whether processing the NAME section.
- $$self{ITEMS} = 0; # The number of consecutive =items.
- $$self{ITEMTYPES} = []; # Stack of =item types, one per list.
- $$self{SHIFTWAIT} = 0; # Whether there is a shift waiting.
- $$self{SHIFTS} = []; # Stack of .RS shifts.
-}
-
-
-##############################################################################
-# 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');
- if ($self->can ('cmd_' . $command)) {
- $command = 'cmd_' . $command;
- $self->$command (@_);
- } else {
- my ($text, $line, $paragraph) = @_;
- my $file;
- ($file, $line) = $paragraph->file_line;
- $text =~ s/\n+\z//;
- $text = " $text" if ($text =~ /^\S/);
- warn qq($file:$line: Unknown command paragraph "=$command$text"\n);
- return;
- }
-}
-
-# 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/-/\\-/g;
- s/'/\\(aq/g;
- s/^(\s*\S)/'\&' . $1/gme;
- $self->makespace;
- $self->output (".Vb $lines\n$_.Ve\n");
- $$self{NEEDSPACE} = 1;
-}
-
-# 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};
-
- # Parse the tree. collapse knows about references to scalars as well as
- # scalars and does the right thing with them. Tidy up any trailing
- # whitespace.
- my $text = shift;
- $text = $self->parse ($text, @_);
- $text =~ s/\n\s*$/\n/;
-
- # Output the paragraph. We also have to handle =over without =item. If
- # there's an =over without =item, SHIFTWAIT will be set, and we need to
- # handle creation of the indent here. Add the shift to SHIFTS so that it
- # will be cleaned up on =back.
- $self->makespace;
- if ($$self{SHIFTWAIT}) {
- $self->output (".RS $$self{INDENT}\n");
- push (@{ $$self{SHIFTS} }, $$self{INDENT});
- $$self{SHIFTWAIT} = 0;
- }
- $self->output (protect $self->textmapfonts ($text));
- $self->outindex;
- $$self{NEEDSPACE} = 1;
-}
-
-# Called for a formatting code. 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 to an array so that other formatting codes
-# above us know that the text has already been processed.
-sub sequence {
- my ($self, $seq) = @_;
- my $command = $seq->cmd_name;
-
- # We have to defer processing of the inside of an L<> formatting code. If
- # this code is nested inside an L<> code, return the literal raw text of
- # it.
- my $parent = $seq->nested;
- while (defined $parent) {
- return $seq->raw_text if ($parent->cmd_name eq 'L');
- $parent = $parent->nested;
- }
-
- # Zero-width characters.
- return [ '\&' ] if ($command eq 'Z');
-
- # C<>, L<>, X<>, and E<> don't apply guesswork to their contents. C<>
- # needs some additional special handling.
- my $literal = ($command =~ /^[CELX]$/);
- local $_ = $self->collapse ($seq->parse_tree, $literal, $command eq 'C');
-
- # Handle E<> escapes. Numeric escapes that match one of the supported ISO
- # 8859-1 characters don't work at present.
- if ($command eq 'E') {
- if (/^\d+$/) {
- return [ chr ($_) ];
- } elsif (exists $ESCAPES{$_}) {
- return [ $ESCAPES{$_} ];
- } else {
- my ($file, $line) = $seq->file_line;
- warn "$file:$line: Unknown escape E<$_>\n";
- return [ "E<$_>" ];
- }
- }
-
- # For all the other codes, empty content produces no output.
- return '' if $_ eq '';
-
- # Handle simple formatting codes.
- if ($command eq 'B') {
- return [ '\f(BS' . $_ . '\f(BE' ];
- } elsif ($command eq 'F' || $command eq 'I') {
- return [ '\f(IS' . $_ . '\f(IE' ];
- } elsif ($command eq 'C') {
- return [ $self->quote_literal ($_) ];
- }
-
- # Handle links.
- if ($command eq 'L') {
- my ($text, $type) = (parselink ($_))[1,4];
- return '' unless $text;
- my ($file, $line) = $seq->file_line;
- $text = $self->parse ($text, $line);
- $text = '<' . $text . '>' if $type eq 'url';
- return [ $text ];
- }
-
- # Whitespace protection replaces whitespace with "\ ".
- if ($command eq 'S') {
- s/\s+/\\ /g;
- return [ $_ ];
- }
-
- # 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.
- my ($file, $line) = $seq->file_line;
- warn "$file:$line: Unknown formatting code $command<$_>\n";
-}
-
-
-##############################################################################
-# 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 \s1 and \s-1. Maintain IN_NAME as
-# appropriate, but don't leave it set while calling parse() so as to not
-# override guesswork on section headings after NAME.
-sub cmd_head1 {
- my $self = shift;
- $$self{IN_NAME} = 0;
- local $_ = $self->parse (@_);
- s/\s+$//;
- s/\\s-?\d//g;
- s/\s*\n\s*/ /g;
- if ($$self{ITEMS} > 1) {
- $$self{ITEMS} = 0;
- $self->output (".PD\n");
- }
- $self->output ($self->switchquotes ('.SH', $self->mapfonts ($_)));
- $self->outindex (($_ eq 'NAME') ? () : ('Header', $_));
- $$self{NEEDSPACE} = 0;
- $$self{IN_NAME} = ($_ eq 'NAME');
-}
-
-# Second level heading.
-sub cmd_head2 {
- my $self = shift;
- local $_ = $self->parse (@_);
- s/\s+$//;
- s/\s*\n\s*/ /g;
- if ($$self{ITEMS} > 1) {
- $$self{ITEMS} = 0;
- $self->output (".PD\n");
- }
- $self->output ($self->switchquotes ('.Sh', $self->mapfonts ($_)));
- $self->outindex ('Subsection', $_);
- $$self{NEEDSPACE} = 0;
-}
-
-# Third level heading.
-sub cmd_head3 {
- my $self = shift;
- local $_ = $self->parse (@_);
- s/\s+$//;
- s/\s*\n\s*/ /g;
- if ($$self{ITEMS} > 1) {
- $$self{ITEMS} = 0;
- $self->output (".PD\n");
- }
- $self->makespace;
- $self->output ($self->textmapfonts ('\f(IS' . $_ . '\f(IE') . "\n");
- $self->outindex ('Subsection', $_);
- $$self{NEEDSPACE} = 1;
-}
-
-# Fourth level heading.
-sub cmd_head4 {
- my $self = shift;
- local $_ = $self->parse (@_);
- s/\s+$//;
- s/\s*\n\s*/ /g;
- if ($$self{ITEMS} > 1) {
- $$self{ITEMS} = 0;
- $self->output (".PD\n");
- }
- $self->makespace;
- $self->output ($self->textmapfonts ($_) . "\n");
- $self->outindex ('Subsection', $_);
- $$self{NEEDSPACE} = 1;
-}
-
-# 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{SHIFTS} } < @{ $$self{INDENTS} }) {
- $self->output (".RS $$self{INDENT}\n");
- push (@{ $$self{SHIFTS} }, $$self{INDENT});
- }
- push (@{ $$self{INDENTS} }, $$self{INDENT});
- push (@{ $$self{ITEMTYPES} }, 'unknown');
- $$self{INDENT} = ($_ + 0);
- $$self{SHIFTWAIT} = 1;
-}
-
-# 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} };
- if (defined $$self{INDENT}) {
- pop @{ $$self{ITEMTYPES} };
- } else {
- my ($file, $line, $paragraph) = @_;
- ($file, $line) = $paragraph->file_line;
- warn "$file:$line: Unmatched =back\n";
- $$self{INDENT} = 0;
- }
- if (@{ $$self{SHIFTS} } > @{ $$self{INDENTS} }) {
- $self->output (".RE\n");
- pop @{ $$self{SHIFTS} };
- }
- if (@{ $$self{INDENTS} } > 0) {
- $self->output (".RE\n");
- $self->output (".RS $$self{INDENT}\n");
- }
- $$self{NEEDSPACE} = 1;
- $$self{SHIFTWAIT} = 0;
-}
-
-# 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+|\Z)//;
- }
- $_ = '*' unless length ($_) > 0;
- my $type = $$self{ITEMTYPES}[0];
- unless (defined $type) {
- my ($file, $line, $paragraph) = @_;
- ($file, $line) = $paragraph->file_line;
- $type = 'unknown';
- }
- if ($type eq 'unknown') {
- $type = /^\*\s*\Z/ ? 'bullet' : 'text';
- $$self{ITEMTYPES}[0] = $type if $$self{ITEMTYPES}[0];
- }
- s/^\*\s*\Z/\\\(bu/ if $type eq 'bullet';
- if (@{ $$self{SHIFTS} } == @{ $$self{INDENTS} }) {
- $self->output (".RE\n");
- pop @{ $$self{SHIFTS} };
- }
- $_ = $self->textmapfonts ($_);
- $self->output (".PD 0\n") if ($$self{ITEMS} == 1);
- $self->output ($self->switchquotes ('.IP', $_, $$self{INDENT}));
- $self->outindex ($index ? ('Item', $index) : ());
- $$self{NEEDSPACE} = 0;
- $$self{ITEMS}++;
- $$self{SHIFTWAIT} = 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 ($_);
-}
-
-
-##############################################################################
-# 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. The old pod2man didn't get B<someI<thing> else> right; after I<>
-# it switched back to normal text rather than bold. 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.
-#
-# \fP changes to the previous font, but only one previous font is kept. We
-# don't know what the outside level font is; normally it's R, but if we're
-# inside a heading it could be something else. So arrange things so that the
-# outside font is always the "previous" font and end with \fP instead of \fR.
-# Idea from Zack Weinberg.
-sub mapfonts {
- my $self = shift;
- local $_ = shift;
-
- my ($fixed, $bold, $italic) = (0, 0, 0);
- my %magic = (F => \$fixed, B => \$bold, I => \$italic);
- my $last = '\fR';
- s { \\f\((.)(.) } {
- my $sequence = '';
- my $f;
- if ($last ne '\fR') { $sequence = '\fP' }
- ${ $magic{$1} } += ($2 eq 'S') ? 1 : -1;
- $f = $$self{FONTS}{($fixed && 1) . ($bold && 1) . ($italic && 1)};
- if ($f eq $last) {
- '';
- } else {
- if ($f ne '\fR') { $sequence .= $f }
- $last = $f;
- $sequence;
- }
- }gxe;
- $_;
-}
-
-# Unfortunately, there is a bug in Solaris 2.6 nroff (not present in GNU
-# groff) where the sequence \fB\fP\f(CW\fP leaves the font set to B rather
-# than R, presumably because \f(CW doesn't actually do a font change. To work
-# around this, use a separate textmapfonts for text blocks where the default
-# font is always R and only use the smart mapfonts for headings.
-sub textmapfonts {
- 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 and magic
-##############################################################################
-
-# 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, a flag saying whether or not to treat it as literal text
-# (not call guesswork on it), and a flag saying whether or not to clean some
-# things up for *roff, 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. Otherwise, if
-# collapse is being called on a C<> code, $cleanup should be set to true and
-# some additional cleanup will be done. Assumes that everything in the parse
-# tree is either a scalar or a reference to a scalar.
-sub collapse {
- my ($self, $ptree, $literal, $cleanup) = @_;
-
- # If we're processing the NAME section, don't do normal guesswork. This
- # is because NAME lines are often extracted by utilities like catman that
- # require plain text and don't understand *roff markup. We still need to
- # escape backslashes and hyphens for *roff (and catman expects \- instead
- # of -).
- if ($$self{IN_NAME}) {
- $literal = 1;
- $cleanup = 1;
- }
-
- # Do the collapse of the parse tree as described above.
- return join ('', map {
- if (ref $_) {
- join ('', @$_);
- } elsif ($literal) {
- if ($cleanup) {
- s/\\/\\e/g;
- s/-/\\-/g;
- s/__/_\\|_/g;
- }
- $_;
- } else {
- $self->guesswork ($_);
- }
- } $ptree->children);
-}
-
-# Takes a text block to perform guesswork on; this is guaranteed not to
-# contain any formatting codes. 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;
-
- # Leave hyphens only if they're part of regular words and there is only
- # one dash at a time. Leave a dash after the first character as a regular
- # non-breaking dash, but don't let it mark the rest of the word invalid
- # for hyphenation.
- s/-/\\-/g;
- s{
- ( (?:\G|^|\s) [a-zA-Z] ) ( \\- )?
- ( (?: [a-zA-Z]+ \\-)+ )
- ( [a-zA-Z]+ ) (?=\s|\Z)
- \b
- } {
- my ($prefix, $hyphen, $main, $suffix) = ($1, $2, $3, $4);
- $hyphen ||= '';
- $main =~ s/\\-/-/g;
- $prefix . $hyphen . $main . $suffix;
- }egx;
-
- # Translate -- into a real em dash if it's used like one.
- s{ (\s) \\-\\- (\s) } { $1 . '\*(--' . $2 }egx;
- s{ (\b[a-zA-Z]+) \\-\\- (\s|\Z|[a-zA-Z]+\b) } { $1 . '\*(--' . $2 }egx;
-
- # 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;
-
- # Italize functions in the form func().
- s{
- ( \b | \\s-1 )
- (
- [A-Za-z_] ([:\w]|\\s-?[01])+ \(\)
- )
- } { $1 . '\f(IS' . $2 . '\f(IE' }egx;
-
- # func(n) is a reference to a manual page. Make it \fIfunc\fR\|(n).
- s{
- ( \b | \\s-1 )
- ( [A-Za-z_] (?:[.:\w]|\\-|\\s-?[01])+ )
- (
- \( \d [a-z]* \)
- )
- } { $1 . '\f(IS' . $2 . '\f(IE\|' . $3 }egx;
-
- # Convert simple Perl variable references to a fixed-width font.
- s{
- ( \s+ )
- ( [\$\@%] [\w:]+ )
- (?! \( )
- } { $1 . '\f(FS' . $2 . '\f(FE'}egx;
-
- # 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.
- $_;
-}
-
-# Handles C<> text, deciding whether to put \*C` around it or not. This is a
-# whole bunch of messy heuristics to try to avoid overquoting, originally from
-# Barrie Slaymaker. This largely duplicates similar code in Pod::Text.
-sub quote_literal {
- my $self = shift;
- local $_ = shift;
-
- # A regex that matches the portion of a variable reference that's the
- # array or hash index, separated out just because we want to use it in
- # several places in the following regex.
- my $index = '(?: \[.*\] | \{.*\} )?';
-
- # Check for things that we don't want to quote, and if we find any of
- # them, return the string with just a font change and no quoting.
- m{
- ^\s*
- (?:
- ( [\'\`\"] ) .* \1 # already quoted
- | \` .* \' # `quoted'
- | \$+ [\#^]? \S $index # special ($^Foo, $")
- | [\$\@%&*]+ \#? [:\'\w]+ $index # plain var or func
- | [\$\@%&*]* [:\'\w]+ (?: -> )? \(\s*[^\s,]\s*\) # 0/1-arg func call
- | [+-]? ( \d[\d.]* | \.\d+ ) (?: [eE][+-]?\d+ )? # a number
- | 0x [a-fA-F\d]+ # a hex constant
- )
- \s*\z
- }xo && return '\f(FS' . $_ . '\f(FE';
-
- # If we didn't return, go ahead and quote the text.
- return '\f(FS\*(C`' . $_ . "\\*(C'\\f(FE";
-}
-
-
-##############################################################################
-# Output formatting
-##############################################################################
-
-# Make vertical whitespace.
-sub makespace {
- my $self = shift;
- $self->output (".PD\n") if ($$self{ITEMS} > 1);
- $$self{ITEMS} = 0;
- $self->output ($$self{INDENT} > 0 ? ".Sp\n" : ".PP\n")
- if $$self{NEEDSPACE};
-}
-
-# 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) {
- push (@output, [ 'Xref', join (' ', @entries) ]);
- }
- if ($section) {
- $index =~ s/\\-/-/g;
- $index =~ s/\\(?:s-?\d|.\(..|.)//g;
- push (@output, [ $section, $index ]);
- }
- for (@output) {
- my ($type, $entry) = @$_;
- $entry =~ s/\"/\"\"/g;
- $entry =~ s/\\/\\e/g;
- $self->output (".IX $type " . '"' . $entry . '"' . "\n");
- }
-}
-
-# Output text to the output device.
-sub output { print { $_[0]->output_handle } $_[1] }
-
-# 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 LQUOTE and RQUOTE.
-sub switchquotes {
- my $self = shift;
- my $command = shift;
- local $_ = shift;
- my $extra = shift;
- s/\\\*\([LR]\"/\"/g;
-
- # We also have to deal with \*C` and \*C', which are used to add the
- # quotes around C<> text, since they may expand to " and if they do this
- # confuses the .SH macros and the like no end. Expand them ourselves.
- # Also separate troff from nroff if there are any fixed-width fonts in use
- # to work around problems with Solaris nroff.
- my $c_is_quote = ($$self{LQUOTE} =~ /\"/) || ($$self{RQUOTE} =~ /\"/);
- my $fixedpat = join ('|', @{ $$self{FONTS} }{'100', '101', '110', '111'});
- $fixedpat =~ s/\\/\\\\/g;
- $fixedpat =~ s/\(/\\\(/g;
- if (/\"/ || /$fixedpat/) {
- s/\"/\"\"/g;
- my $nroff = $_;
- my $troff = $_;
- $troff =~ s/\"\"([^\"]*)\"\"/\`\`$1\'\'/g;
- if ($c_is_quote && /\\\*\(C[\'\`]/) {
- $nroff =~ s/\\\*\(C\`/$$self{LQUOTE}/g;
- $nroff =~ s/\\\*\(C\'/$$self{RQUOTE}/g;
- $troff =~ s/\\\*\(C[\'\`]//g;
- }
- $nroff = qq("$nroff") . ($extra ? " $extra" : '');
- $troff = qq("$troff") . ($extra ? " $extra" : '');
-
- # Work around the Solaris nroff bug where \f(CW\fP leaves the font set
- # to Roman rather than the actual previous font when used in headings.
- # troff output may still be broken, but at least we can fix nroff by
- # just switching the font changes to the non-fixed versions.
- $nroff =~ s/\Q$$self{FONTS}{100}\E(.*)\\f[PR]/$1/g;
- $nroff =~ s/\Q$$self{FONTS}{101}\E(.*)\\f([PR])/\\fI$1\\f$2/g;
- $nroff =~ s/\Q$$self{FONTS}{110}\E(.*)\\f([PR])/\\fB$1\\f$2/g;
- $nroff =~ s/\Q$$self{FONTS}{111}\E(.*)\\f([PR])/\\f\(BI$1\\f$2/g;
-
- # Now finally output the command. Only bother with .ie if the nroff
- # and troff output isn't the same.
- if ($nroff ne $troff) {
- return ".ie n $command $nroff\n.el $command $troff\n";
- } else {
- return "$command $nroff\n";
- }
- } else {
- $_ = qq("$_") . ($extra ? " $extra" : '');
- return "$command $_\n";
- }
-}
-
-##############################################################################
-# Module return value and documentation
-##############################################################################
-
-1;
-__END__
-
-=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 L<nroff(1)>, normally via L<man(1)>, or printing using L<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->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(3), 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++ look right,
-puts a little space between double underbars, makes ALLCAPS a teeny bit
-smaller in B<troff>, 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 B<troff> output.
-
-=item fixedbold
-
-Bold version of the fixed-width font. Defaults to CB. Only matters for
-B<troff> 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 B<troff> 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 B<troff>
-output.
-
-=item name
-
-Set the name of the manual page. Without this option, the manual name is
-set to the uppercased base name of the file being converted unless the
-manual section is 3, in which case the path is parsed to see if it is a Perl
-module path. If it is, a path like C<.../lib/Pod/Man.pm> is converted into
-a name like C<Pod::Man>. This option, if given, overrides any automatic
-determination of the name.
-
-=item quotes
-
-Sets the quote marks used to surround CE<lt>> text. If the value is a
-single character, it is used as both the left and right quote; if it is two
-characters, the first character is used as the left quote and the second as
-the right quoted; and if it is four characters, the first two are used as
-the left quote and the second two as the right quote.
-
-This may also be set to the special value C<none>, in which case no quote
-marks are added around CE<lt>> text (but the font is still changed for troff
-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 B<nroff> and B<troff> don't either).
-
-=item Invalid link %s
-
-(W) The POD source contained a C<LE<lt>E<gt>> formatting code that
-Pod::Man was unable to parse. You should never see this error message; it
-probably indicates a bug in Pod::Man.
-
-=item Invalid quote specification "%s"
-
-(F) The quote specification given (the quotes option to the constructor) was
-invalid. A quote specification must be one, two, or four characters long.
-
-=item %s:%d: Unknown command paragraph "%s".
-
-(W) The POD source contained a non-standard command paragraph (something of
-the form C<=command args>) that Pod::Man didn't know about. It was ignored.
-
-=item %s:%d: 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 %s:%d: Unknown formatting code %s
-
-(W) The POD source contained a non-standard formatting code (something of
-the form C<XE<lt>E<gt>>) that Pod::Man didn't know about. It was ignored.
-
-=item %s:%d: Unmatched =back
-
-(W) Pod::Man encountered a C<=back> command that didn't correspond to an
-C<=over> command.
-
-=back
-
-=head1 BUGS
-
-Eight-bit input data isn't handled at all well at present. The correct
-approach would be to map EE<lt>E<gt> escapes to the appropriate UTF-8
-characters and then do a translation pass on the output according to the
-user-specified output character set. Unfortunately, we can't send eight-bit
-data directly to the output unless the user says this is okay, since some
-vendor *roff implementations can't handle eight-bit data. If the *roff
-implementation can, however, that's far superior to the current hacked
-characters that only work under troff.
-
-There is currently no way to turn off the guesswork that tries to format
-unmarked text appropriately, and sometimes it isn't wanted (particularly
-when using POD to document something other than Perl).
-
-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.
-
-Pod::Man doesn't handle font names longer than two characters. Neither do
-most B<troff> 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.
-
-Pod::Man is excessively slow.
-
-=head1 CAVEATS
-
-The handling of hyphens and em dashes is somewhat fragile, and one may get
-the wrong one under some circumstances. This should only matter for
-B<troff> output.
-
-When and whether to use small caps is somewhat tricky, and Pod::Man doesn't
-necessarily get it right.
-
-=head1 SEE ALSO
-
-L<Pod::Parser>, L<perlpod(1)>, L<pod2man(1)>, L<nroff(1)>, L<troff(1)>,
-L<man(1)>, L<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 B<nroff> and B<troff>. At the time of
-this writing, it's available at
-L<http://www.cs.bell-labs.com/cm/cs/cstr.html>.
-
-The man page documenting the man macro set may be L<man(5)> instead of
-L<man(7)> on your system. Also, please see L<pod2man(1)> for extensive
-documentation on writing manual pages if you've not done it before and
-aren't familiar with the conventions.
-
-The current version of this module is always available from its web site at
-L<http://www.eyrie.org/~eagle/software/podlators/>. It is also part of the
-Perl core distribution as of 5.6.0.
-
-=head1 AUTHOR
-
-Russ Allbery <rra@stanford.edu>, based I<very> heavily on the original
-B<pod2man> by Tom Christiansen <tchrist@mox.perl.com>.
-
-=head1 COPYRIGHT AND LICENSE
-
-Copyright 1999, 2000, 2001, 2002, 2003 by Russ Allbery <rra@stanford.edu>.
-
-This program is free software; you may redistribute it and/or modify it
-under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Pod/ParseLink.pm b/Master/tlpkg/tlperl/lib/Pod/ParseLink.pm
deleted file mode 100644
index 7e4153da3d0..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/ParseLink.pm
+++ /dev/null
@@ -1,184 +0,0 @@
-# Pod::ParseLink -- Parse an L<> formatting code in POD text.
-# $Id: ParseLink.pm,v 1.6 2002/07/15 05:46:00 eagle Exp $
-#
-# Copyright 2001 by Russ Allbery <rra@stanford.edu>
-#
-# This program is free software; you may redistribute it and/or modify it
-# under the same terms as Perl itself.
-#
-# This module implements parsing of the text of an L<> formatting code as
-# defined in perlpodspec. It should be suitable for any POD formatter. It
-# exports only one function, parselink(), which returns the five-item parse
-# defined in perlpodspec.
-#
-# 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::ParseLink;
-
-require 5.004;
-
-use strict;
-use vars qw(@EXPORT @ISA $VERSION);
-
-use Exporter;
-@ISA = qw(Exporter);
-@EXPORT = qw(parselink);
-
-# 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.06;
-
-
-##############################################################################
-# Implementation
-##############################################################################
-
-# Parse the name and section portion of a link into a name and section.
-sub _parse_section {
- my ($link) = @_;
- $link =~ s/^\s+//;
- $link =~ s/\s+$//;
-
- # If the whole link is enclosed in quotes, interpret it all as a section
- # even if it contains a slash.
- return (undef, $1) if ($link =~ /^"\s*(.*?)\s*"$/);
-
- # Split into page and section on slash, and then clean up quoting in the
- # section. If there is no section and the name contains spaces, also
- # guess that it's an old section link.
- my ($page, $section) = split (/\s*\/\s*/, $link, 2);
- $section =~ s/^"\s*(.*?)\s*"$/$1/ if $section;
- if ($page && $page =~ / / && !defined ($section)) {
- $section = $page;
- $page = undef;
- } else {
- $page = undef unless $page;
- $section = undef unless $section;
- }
- return ($page, $section);
-}
-
-# Infer link text from the page and section.
-sub _infer_text {
- my ($page, $section) = @_;
- my $inferred;
- if ($page && !$section) {
- $inferred = $page;
- } elsif (!$page && $section) {
- $inferred = '"' . $section . '"';
- } elsif ($page && $section) {
- $inferred = '"' . $section . '" in ' . $page;
- }
- return $inferred;
-}
-
-# Given the contents of an L<> formatting code, parse it into the link text,
-# the possibly inferred link text, the name or URL, the section, and the type
-# of link (pod, man, or url).
-sub parselink {
- my ($link) = @_;
- $link =~ s/\s+/ /g;
- if ($link =~ /\A\w+:[^:\s]\S*\Z/) {
- return (undef, $link, $link, undef, 'url');
- } else {
- my $text;
- if ($link =~ /\|/) {
- ($text, $link) = split (/\|/, $link, 2);
- }
- my ($name, $section) = _parse_section ($link);
- my $inferred = $text || _infer_text ($name, $section);
- my $type = ($name && $name =~ /\(\S*\)/) ? 'man' : 'pod';
- return ($text, $inferred, $name, $section, $type);
- }
-}
-
-
-##############################################################################
-# Module return value and documentation
-##############################################################################
-
-# Ensure we evaluate to true.
-1;
-__END__
-
-=head1 NAME
-
-Pod::ParseLink - Parse an LE<lt>E<gt> formatting code in POD text
-
-=head1 SYNOPSIS
-
- use Pod::ParseLink;
- my ($text, $inferred, $name, $section, $type) = parselink ($link);
-
-=head1 DESCRIPTION
-
-This module only provides a single function, parselink(), which takes the
-text of an LE<lt>E<gt> formatting code and parses it. It returns the anchor
-text for the link (if any was given), the anchor text possibly inferred from
-the name and section, the name or URL, the section if any, and the type of
-link. The type will be one of 'url', 'pod', or 'man', indicating a URL, a
-link to a POD page, or a link to a Unix manual page.
-
-Parsing is implemented per L<perlpodspec>. For backward compatibility,
-links where there is no section and name contains spaces, or links where the
-entirety of the link (except for the anchor text if given) is enclosed in
-double-quotes are interpreted as links to a section (LE<lt>/sectionE<gt>).
-
-The inferred anchor text is implemented per L<perlpodspec>:
-
- L<name> => L<name|name>
- L</section> => L<"section"|/section>
- L<name/section> => L<"section" in name|name/section>
-
-The name may contain embedded EE<lt>E<gt> and ZE<lt>E<gt> formatting codes,
-and the section, anchor text, and inferred anchor text may contain any
-formatting codes. Any double quotes around the section are removed as part
-of the parsing, as is any leading or trailing whitespace.
-
-If the text of the LE<lt>E<gt> escape is entirely enclosed in double quotes,
-it's interpreted as a link to a section for backwards compatibility.
-
-No attempt is made to resolve formatting codes. This must be done after
-calling parselink (since EE<lt>E<gt> formatting codes can be used to escape
-characters that would otherwise be significant to the parser and resolving
-them before parsing would result in an incorrect parse of a formatting code
-like:
-
- L<verticalE<verbar>barE<sol>slash>
-
-which should be interpreted as a link to the C<vertical|bar/slash> POD page
-and not as a link to the C<slash> section of the C<bar> POD page with an
-anchor text of C<vertical>. Note that not only the anchor text will need to
-have formatting codes expanded, but so will the target of the link (to deal
-with EE<lt>E<gt> and ZE<lt>E<gt> formatting codes), and special handling of
-the section may be necessary depending on whether the translator wants to
-consider markup in sections to be significant when resolving links. See
-L<perlpodspec> for more information.
-
-=head1 SEE ALSO
-
-L<Pod::Parser>
-
-The current version of this module is always available from its web site at
-L<http://www.eyrie.org/~eagle/software/podlators/>.
-
-=head1 AUTHOR
-
-Russ Allbery <rra@stanford.edu>.
-
-=head1 COPYRIGHT AND LICENSE
-
-Copyright 2001 by Russ Allbery <rra@stanford.edu>.
-
-This program is free software; you may redistribute it and/or modify it
-under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Pod/ParseUtils.pm b/Master/tlpkg/tlperl/lib/Pod/ParseUtils.pm
deleted file mode 100644
index 878860121d3..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/ParseUtils.pm
+++ /dev/null
@@ -1,852 +0,0 @@
-#############################################################################
-# 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 = 1.33; ## Current version of this package
-require 5.005; ## requires this Perl version or later
-
-=head1 NAME
-
-Pod::ParseUtils - helpers for POD parsing and conversion
-
-=head1 SYNOPSIS
-
- use Pod::ParseUtils;
-
- my $list = new Pod::List;
- my $link = Pod::Hyperlink->new('Pod::Parser');
-
-=head1 DESCRIPTION
-
-B<Pod::ParseUtils> contains a few object-oriented helper packages for
-POD parsing and processing (i.e. in POD formatters and translators).
-
-=cut
-
-#-----------------------------------------------------------------------------
-# Pod::List
-#
-# class to hold POD list info (=over, =item, =back)
-#-----------------------------------------------------------------------------
-
-package Pod::List;
-
-use Carp;
-
-=head2 Pod::List
-
-B<Pod::List> can be used to hold information about POD lists
-(written as =over ... =item ... =back) for further processing.
-The following methods are available:
-
-=over 4
-
-=item Pod::List-E<gt>new()
-
-Create a new list object. Properties may be specified through a hash
-reference like this:
-
- my $list = Pod::List->new({ -start => $., -indent => 4 });
-
-See the individual methods/properties for details.
-
-=cut
-
-sub new {
- my $this = shift;
- my $class = ref($this) || $this;
- my %params = @_;
- my $self = {%params};
- bless $self, $class;
- $self->initialize();
- return $self;
-}
-
-sub initialize {
- my $self = shift;
- $self->{-file} ||= 'unknown';
- $self->{-start} ||= 'unknown';
- $self->{-indent} ||= 4; # perlpod: "should be the default"
- $self->{_items} = [];
- $self->{-type} ||= '';
-}
-
-=item $list-E<gt>file()
-
-Without argument, retrieves the file name the list is in. This must
-have been set before by either specifying B<-file> in the B<new()>
-method or by calling the B<file()> method with a scalar argument.
-
-=cut
-
-# The POD file name the list appears in
-sub file {
- return (@_ > 1) ? ($_[0]->{-file} = $_[1]) : $_[0]->{-file};
-}
-
-=item $list-E<gt>start()
-
-Without argument, retrieves the line number where the list started.
-This must have been set before by either specifying B<-start> in the
-B<new()> method or by calling the B<start()> method with a scalar
-argument.
-
-=cut
-
-# The line in the file the node appears
-sub start {
- return (@_ > 1) ? ($_[0]->{-start} = $_[1]) : $_[0]->{-start};
-}
-
-=item $list-E<gt>indent()
-
-Without argument, retrieves the indent level of the list as specified
-in C<=over n>. This must have been set before by either specifying
-B<-indent> in the B<new()> method or by calling the B<indent()> method
-with a scalar argument.
-
-=cut
-
-# indent level
-sub indent {
- return (@_ > 1) ? ($_[0]->{-indent} = $_[1]) : $_[0]->{-indent};
-}
-
-=item $list-E<gt>type()
-
-Without argument, retrieves the list type, which can be an arbitrary value,
-e.g. C<OL>, C<UL>, ... when thinking the HTML way.
-This must have been set before by either specifying
-B<-type> in the B<new()> method or by calling the B<type()> method
-with a scalar argument.
-
-=cut
-
-# The type of the list (UL, OL, ...)
-sub type {
- return (@_ > 1) ? ($_[0]->{-type} = $_[1]) : $_[0]->{-type};
-}
-
-=item $list-E<gt>rx()
-
-Without argument, retrieves a regular expression for simplifying the
-individual item strings once the list type has been determined. Usage:
-E.g. when converting to HTML, one might strip the leading number in
-an ordered list as C<E<lt>OLE<gt>> already prints numbers itself.
-This must have been set before by either specifying
-B<-rx> in the B<new()> method or by calling the B<rx()> method
-with a scalar argument.
-
-=cut
-
-# The regular expression to simplify the items
-sub rx {
- return (@_ > 1) ? ($_[0]->{-rx} = $_[1]) : $_[0]->{-rx};
-}
-
-=item $list-E<gt>item()
-
-Without argument, retrieves the array of the items in this list.
-The items may be represented by any scalar.
-If an argument has been given, it is pushed on the list of items.
-
-=cut
-
-# The individual =items of this list
-sub item {
- my ($self,$item) = @_;
- if(defined $item) {
- push(@{$self->{_items}}, $item);
- return $item;
- }
- else {
- return @{$self->{_items}};
- }
-}
-
-=item $list-E<gt>parent()
-
-Without argument, retrieves information about the parent holding this
-list, which is represented as an arbitrary scalar.
-This must have been set before by either specifying
-B<-parent> in the B<new()> method or by calling the B<parent()> method
-with a scalar argument.
-
-=cut
-
-# possibility for parsers/translators to store information about the
-# lists's parent object
-sub parent {
- return (@_ > 1) ? ($_[0]->{-parent} = $_[1]) : $_[0]->{-parent};
-}
-
-=item $list-E<gt>tag()
-
-Without argument, retrieves information about the list tag, which can be
-any scalar.
-This must have been set before by either specifying
-B<-tag> in the B<new()> method or by calling the B<tag()> method
-with a scalar argument.
-
-=back
-
-=cut
-
-# possibility for parsers/translators to store information about the
-# list's object
-sub tag {
- return (@_ > 1) ? ($_[0]->{-tag} = $_[1]) : $_[0]->{-tag};
-}
-
-#-----------------------------------------------------------------------------
-# Pod::Hyperlink
-#
-# class to manipulate POD hyperlinks (L<>)
-#-----------------------------------------------------------------------------
-
-package Pod::Hyperlink;
-
-=head2 Pod::Hyperlink
-
-B<Pod::Hyperlink> is a class for manipulation of POD hyperlinks. Usage:
-
- my $link = Pod::Hyperlink->new('alternative text|page/"section in page"');
-
-The B<Pod::Hyperlink> class is mainly designed to parse the contents of the
-C<LE<lt>...E<gt>> sequence, providing a simple interface for accessing the
-different parts of a POD hyperlink for further processing. It can also be
-used to construct hyperlinks.
-
-=over 4
-
-=item Pod::Hyperlink-E<gt>new()
-
-The B<new()> method can either be passed a set of key/value pairs or a single
-scalar value, namely the contents of a C<LE<lt>...E<gt>> sequence. An object
-of the class C<Pod::Hyperlink> is returned. The value C<undef> indicates a
-failure, the error message is stored in C<$@>.
-
-=cut
-
-use Carp;
-
-sub new {
- my $this = shift;
- my $class = ref($this) || $this;
- my $self = +{};
- bless $self, $class;
- $self->initialize();
- if(defined $_[0]) {
- if(ref($_[0])) {
- # called with a list of parameters
- %$self = %{$_[0]};
- $self->_construct_text();
- }
- else {
- # called with L<> contents
- return 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 $link-E<gt>parse($string)
-
-This method can be used to (re)parse a (new) hyperlink, i.e. the contents
-of a C<LE<lt>...E<gt>> sequence. The result is stored in the current object.
-Warnings are stored in the B<warnings> property.
-E.g. sections like C<LE<lt>open(2)E<gt>> are deprecated, as they do not point
-to Perl documents. C<LE<lt>DBI::foo(3p)E<gt>> is wrong as well, the manpage
-section can simply be dropped.
-
-=cut
-
-sub parse {
- my $self = shift;
- local($_) = $_[0];
- # syntax check the link and extract destination
- my ($alttext,$page,$node,$type,$quoted) = (undef,'','','',0);
-
- $self->{_warnings} = [];
-
- # collapse newlines with whitespace
- s/\s*\n+\s*/ /g;
-
- # strip leading/trailing whitespace
- if(s/^[\s\n]+//) {
- $self->warning("ignoring leading whitespace in link");
- }
- if(s/[\s\n]+$//) {
- $self->warning("ignoring trailing whitespace in link");
- }
- unless(length($_)) {
- _invalid_link("empty link");
- return 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...
- my $page_rx = '[\w.-]+(?:::[\w.-]+)*(?:[(](?:\d\w*|)[)]|)';
- # page name only
- 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';
- $quoted = 1; #... therefore | and / are allowed
- }
- # 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';
- $quoted = 1;
- }
- # page and "section"
- elsif(m!^($page_rx)\s*/\s*"(.+)"$!o) {
- ($page, $node) = ($1, $2);
- $type = 'section';
- $quoted = 1;
- }
- # page and item
- elsif(m!^($page_rx)\s*/\s*(.+)$!o) {
- ($page, $node) = ($1, $2);
- $type = 'item';
- }
- # only "section"
- elsif(m!^/?"(.+)"$!) {
- $node = $1;
- $type = 'section';
- $quoted = 1;
- }
- # only item
- elsif(m!^\s*/(.+)$!) {
- $node = $1;
- $type = 'item';
- }
- # non-standard: Hyperlink
- elsif(m!^(\w+:[^:\s]\S*)$!i) {
- $node = $1;
- $type = 'hyperlink';
- }
- # alttext, page and item
- elsif(m!^(.*?)\s*[|]\s*($page_rx)\s*/\s*(.+)$!o) {
- ($alttext, $page, $node) = ($1, $2, $3);
- $type = 'item';
- }
- # alttext and item
- elsif(m!^(.*?)\s*[|]\s*/(.+)$!) {
- ($alttext, $node) = ($1,$2);
- }
- # nonstandard: alttext and hyperlink
- elsif(m!^(.*?)\s*[|]\s*(\w+:[^:\s]\S*)$!) {
- ($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;
-
- # empty alternative text expands to node name
- if(defined $alttext) {
- if(!length($alttext)) {
- $alttext = $node | $page;
- }
- }
- else {
- $alttext = '';
- }
-
- if($page =~ /[(]\w*[)]$/) {
- $self->warning("(section) in '$page' deprecated");
- }
- if(!$quoted && $node =~ m:[|/]: && $type ne 'hyperlink') {
- $self->warning("node '$node' contains non-escaped | or /");
- }
- if($alttext =~ m:[|/]:) {
- $self->warning("alternative text '$node' contains non-escaped | or /");
- }
- $self->{-page} = $page;
- $self->{-node} = $node;
- $self->{-alttext} = $alttext;
- #warn "DEBUG: page=$page section=$section item=$item alttext=$alttext\n";
- $self->{-type} = $type;
- $self->_construct_text();
- 1;
-}
-
-sub _construct_text {
- my $self = shift;
- my $alttext = $self->alttext();
- my $type = $self->type();
- my $section = $self->node();
- my $page = $self->page();
- my $page_ext = '';
- $page =~ s/([(]\w*[)])$// && ($page_ext = $1);
- if($alttext) {
- $self->{_text} = $alttext;
- }
- elsif($type eq 'hyperlink') {
- $self->{_text} = $section;
- }
- else {
- $self->{_text} = ($section || '') .
- (($page && $section) ? ' in ' : '') .
- "$page$page_ext";
- }
- # for being marked up later
- # use the non-standard markers P<> and Q<>, so that the resulting
- # text can be parsed by the translators. It's their job to put
- # the correct hypertext around the linktext
- if($alttext) {
- $self->{_markup} = "Q<$alttext>";
- }
- elsif($type eq 'hyperlink') {
- $self->{_markup} = "Q<$section>";
- }
- else {
- $self->{_markup} = (!$section ? '' : "Q<$section>") .
- ($page ? ($section ? ' in ':'') . "P<$page>$page_ext" : '');
- }
-}
-
-=item $link-E<gt>markup($string)
-
-Set/retrieve the textual value of the link. This string contains special
-markers C<PE<lt>E<gt>> and C<QE<lt>E<gt>> that should be expanded by the
-translator's interior sequence expansion engine to the
-formatter-specific code to highlight/activate the hyperlink. The details
-have to be implemented in the translator.
-
-=cut
-
-#' retrieve/set markuped text
-sub markup {
- return (@_ > 1) ? ($_[0]->{_markup} = $_[1]) : $_[0]->{_markup};
-}
-
-=item $link-E<gt>text()
-
-This method returns the textual representation of the hyperlink as above,
-but without markers (read only). Depending on the link type this is one of
-the following alternatives (the + and * denote the portions of the text
-that are marked up):
-
- +perl+ L<perl>
- *$|* in +perlvar+ L<perlvar/$|>
- *OPTIONS* in +perldoc+ L<perldoc/"OPTIONS">
- *DESCRIPTION* L<"DESCRIPTION">
-
-=cut
-
-# The complete link's text
-sub text {
- $_[0]->{_text};
-}
-
-=item $link-E<gt>warning()
-
-After parsing, this method returns any warnings encountered during the
-parsing process.
-
-=cut
-
-# Set/retrieve warnings
-sub warning {
- my $self = shift;
- if(@_) {
- push(@{$self->{_warnings}}, @_);
- return @_;
- }
- return @{$self->{_warnings}};
-}
-
-=item $link-E<gt>file()
-
-=item $link-E<gt>line()
-
-Just simple slots for storing information about the line and the file
-the link was encountered in. Has to be filled in manually.
-
-=cut
-
-# The line in the file the link appears
-sub line {
- return (@_ > 1) ? ($_[0]->{-line} = $_[1]) : $_[0]->{-line};
-}
-
-# The POD file name the link appears in
-sub file {
- return (@_ > 1) ? ($_[0]->{-file} = $_[1]) : $_[0]->{-file};
-}
-
-=item $link-E<gt>page()
-
-This method sets or returns the POD page this link points to.
-
-=cut
-
-# The POD page the link appears on
-sub page {
- if (@_ > 1) {
- $_[0]->{-page} = $_[1];
- $_[0]->_construct_text();
- }
- $_[0]->{-page};
-}
-
-=item $link-E<gt>node()
-
-As above, but the destination node text of the link.
-
-=cut
-
-# The link destination
-sub node {
- if (@_ > 1) {
- $_[0]->{-node} = $_[1];
- $_[0]->_construct_text();
- }
- $_[0]->{-node};
-}
-
-=item $link-E<gt>alttext()
-
-Sets or returns an alternative text specified in the link.
-
-=cut
-
-# Potential alternative text
-sub alttext {
- if (@_ > 1) {
- $_[0]->{-alttext} = $_[1];
- $_[0]->_construct_text();
- }
- $_[0]->{-alttext};
-}
-
-=item $link-E<gt>type()
-
-The node type, either C<section> or C<item>. As an unofficial type,
-there is also C<hyperlink>, derived from e.g. C<LE<lt>http://perl.comE<gt>>
-
-=cut
-
-# The type: item or headn
-sub type {
- return (@_ > 1) ? ($_[0]->{-type} = $_[1]) : $_[0]->{-type};
-}
-
-=item $link-E<gt>link()
-
-Returns the link as contents of C<LE<lt>E<gt>>. Reciprocal to B<parse()>.
-
-=back
-
-=cut
-
-# The link itself
-sub link {
- my $self = shift;
- my $link = $self->page() || '';
- if($self->node()) {
- my $node = $self->node();
- $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 Pod::Cache-E<gt>new()
-
-Create a new cache object. This object can hold an arbitrary number of
-POD documents of class Pod::Cache::Item.
-
-=cut
-
-sub new {
- my $this = shift;
- my $class = ref($this) || $this;
- my $self = [];
- bless $self, $class;
- return $self;
-}
-
-=item $cache-E<gt>item()
-
-Add a new item to the cache. Without arguments, this method returns a
-list of all cache elements.
-
-=cut
-
-sub item {
- my ($self,%param) = @_;
- if(%param) {
- my $item = Pod::Cache::Item->new(%param);
- push(@$self, $item);
- return $item;
- }
- else {
- return @{$self};
- }
-}
-
-=item $cache-E<gt>find_page($name)
-
-Look for a POD document named C<$name> in the cache. Returns the
-reference to the corresponding Pod::Cache::Item object or undef if
-not found.
-
-=back
-
-=cut
-
-sub find_page {
- my ($self,$page) = @_;
- foreach(@$self) {
- if($_->page() eq $page) {
- return $_;
- }
- }
- 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 Pod::Cache::Item-E<gt>new()
-
-Create a new object.
-
-=cut
-
-sub new {
- my $this = shift;
- my $class = ref($this) || $this;
- my %params = @_;
- my $self = {%params};
- bless $self, $class;
- $self->initialize();
- return $self;
-}
-
-sub initialize {
- my $self = shift;
- $self->{-nodes} = [] unless(defined $self->{-nodes});
-}
-
-=item $cacheitem-E<gt>page()
-
-Set/retrieve the POD document name (e.g. "Pod::Parser").
-
-=cut
-
-# The POD page
-sub page {
- return (@_ > 1) ? ($_[0]->{-page} = $_[1]) : $_[0]->{-page};
-}
-
-=item $cacheitem-E<gt>description()
-
-Set/retrieve the POD short description as found in the C<=head1 NAME>
-section.
-
-=cut
-
-# The POD description, taken out of NAME if present
-sub description {
- return (@_ > 1) ? ($_[0]->{-description} = $_[1]) : $_[0]->{-description};
-}
-
-=item $cacheitem-E<gt>path()
-
-Set/retrieve the POD file storage path.
-
-=cut
-
-# The file path
-sub path {
- return (@_ > 1) ? ($_[0]->{-path} = $_[1]) : $_[0]->{-path};
-}
-
-=item $cacheitem-E<gt>file()
-
-Set/retrieve the POD file name.
-
-=cut
-
-# The POD file name
-sub file {
- return (@_ > 1) ? ($_[0]->{-file} = $_[1]) : $_[0]->{-file};
-}
-
-=item $cacheitem-E<gt>nodes()
-
-Add a node (or a list of nodes) to the document's node list. Note that
-the order is kept, i.e. start with the first node and end with the last.
-If no argument is given, the current list of nodes is returned in the
-same order the nodes have been added.
-A node can be any scalar, but usually is a pair of node string and
-unique id for the C<find_node> method to work correctly.
-
-=cut
-
-# The POD nodes
-sub nodes {
- my ($self,@nodes) = @_;
- if(@nodes) {
- push(@{$self->{-nodes}}, @nodes);
- return @nodes;
- }
- else {
- return @{$self->{-nodes}};
- }
-}
-
-=item $cacheitem-E<gt>find_node($name)
-
-Look for a node or index entry named C<$name> in the object.
-Returns the unique id of the node (i.e. the second element of the array
-stored in the node arry) or undef if not found.
-
-=cut
-
-sub find_node {
- my ($self,$node) = @_;
- my @search;
- push(@search, @{$self->{-nodes}}) if($self->{-nodes});
- push(@search, @{$self->{-idx}}) if($self->{-idx});
- foreach(@search) {
- if($_->[0] eq $node) {
- return $_->[1]; # id
- }
- }
- undef;
-}
-
-=item $cacheitem-E<gt>idx()
-
-Add an index entry (or a list of them) to the document's index list. Note that
-the order is kept, i.e. start with the first node and end with the last.
-If no argument is given, the current list of index entries is returned in the
-same order the entries have been added.
-An index entry can be any scalar, but usually is a pair of string and
-unique id.
-
-=back
-
-=cut
-
-# The POD index entries
-sub idx {
- my ($self,@idx) = @_;
- if(@idx) {
- push(@{$self->{-idx}}, @idx);
- return @idx;
- }
- else {
- return @{$self->{-idx}};
- }
-}
-
-=head1 AUTHOR
-
-Please report bugs using L<http://rt.cpan.org>.
-
-Marek Rouchal E<lt>marekr@cpan.orgE<gt>, borrowing
-a lot of things from L<pod2man> and L<pod2roff> as well as other POD
-processing tools by Tom Christiansen, Brad Appleton and Russ Allbery.
-
-=head1 SEE ALSO
-
-L<pod2man>, L<pod2roff>, L<Pod::Parser>, L<Pod::Checker>,
-L<pod2html>
-
-=cut
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Pod/Parser.pm b/Master/tlpkg/tlperl/lib/Pod/Parser.pm
deleted file mode 100644
index a5fde848503..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Parser.pm
+++ /dev/null
@@ -1,1799 +0,0 @@
-#############################################################################
-# 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.32; ## 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 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;
-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.
-
-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"
- my $ldelim_orig;
- ($cmd, $ldelim_orig) = ($1, $2);
- ($ldelim = $ldelim_orig) =~ s/\s+$//;
- ($rdelim = $ldelim) =~ tr/</>/;
- $seq = Pod::InteriorSequence->new(
- -name => $cmd,
- -ldelim => $ldelim_orig, -rdelim => $rdelim,
- -file => $file, -line => $line
- );
- (@seq_stack > 1) and $seq->nested($seq_stack[-1]);
- push @seq_stack, $seq;
- }
- ## Look for sequence ending
- elsif ( @seq_stack > 1 ) {
- ## Make sure we match the right kind of closing delimiter
- my ($seq_end, $post_seq) = ("", "");
- if ( ($ldelim eq '<' and /\A(.*?)(>)/s)
- or /\A(.*?)(\s+$rdelim)/s )
- {
- ## Found end-of-sequence, capture the interior and the
- ## closing the delimiter, and put the rest back on the
- ## token-list
- $post_seq = substr($_, length($1) + length($2));
- ($_, $seq_end) = ($1, $2);
- (length $post_seq) and unshift @tokens, $post_seq;
- }
- if (length) {
- ## In the middle of a sequence, append this text to it, and
- ## dont forget to "expand" it if that's what the caller wanted
- $seq->append($expand_text ? &$xtext_sub($self,$_,$seq) : $_);
- $_ .= $seq_end;
- }
- if (length $seq_end) {
- ## End of current sequence, record terminating delimiter
- $seq->rdelim($seq_end);
- ## Pop it off the stack of "in progress" sequences
- pop @seq_stack;
- ## Append result to its parent in current parse tree
- $seq_stack[-1]->append($expand_seq ? &$xseq_sub($self,$seq)
- : $seq);
- ## Remember the current cmd-name and left-delimiter
- if(@seq_stack > 1) {
- $cmd = $seq_stack[-1]->name;
- $ldelim = $seq_stack[-1]->ldelim;
- $rdelim = $seq_stack[-1]->rdelim;
- } else {
- $cmd = $ldelim = $rdelim = '';
- }
- }
- }
- elsif (length) {
- ## In the middle of a sequence, append this text to it, and
- ## dont forget to "expand" it if that's what the caller wanted
- $seq->append($expand_text ? &$xtext_sub($self,$_,$seq) : $_);
- }
- ## Keep track of line count
- $line += 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);
- $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));
-
- 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) > 0 and $myOpts{'-warnings'} and ! $myData{_CUTTING}) {
- my $errorsub = $self->errorsub();
- my $file = $self->input_file();
- 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.
-Alternatively, an L<IO::String> object is also accepted as an output
-file handle.
-
-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.006);
- my ($close_input, $close_output) = (0, 0);
- local *myData = $self;
- local *_;
-
- ## Is $infile a filename or a (possibly implied) filehandle
- if (defined $infile && ref $infile) {
- if (ref($infile) =~ /^(SCALAR|ARRAY|HASH|CODE|REF)$/) {
- croak "Input from $1 reference not supported!\n";
- }
- ## Must be a filehandle-ref (or else assume its a ref to an object
- ## that supports the common IO read operations).
- $myData{_INFILE} = ${$infile};
- $in_fh = $infile;
- }
- elsif (!defined($infile) || !length($infile) || ($infile eq '-')
- || ($infile =~ /^<&(?:STDIN|0)$/i))
- {
- ## Not a filename, just a string implying STDIN
- $infile ||= '-';
- $myData{_INFILE} = "<standard input>";
- $in_fh = \*STDIN;
- }
- else {
- ## We have a filename, open it for reading
- $myData{_INFILE} = $infile;
- open($in_fh, "< $infile") or
- croak "Can't open $infile for reading: $!\n";
- $close_input = 1;
- }
-
- ## NOTE: we need to be *very* careful when "defaulting" the output
- ## file. We only want to use a default if this is the beginning of
- ## the entire document (but *not* if this is an included file). We
- ## determine this by seeing if the input stream stack has been set-up
- ## already
-
- ## Is $outfile a filename, a (possibly implied) filehandle, maybe a ref?
- if (ref $outfile) {
- ## we need to check for ref() first, as other checks involve reading
- if (ref($outfile) =~ /^(ARRAY|HASH|CODE)$/) {
- croak "Output to $1 reference not supported!\n";
- }
- elsif (ref($outfile) eq 'SCALAR') {
-# # NOTE: IO::String isn't a part of the perl distribution,
-# # so probably we shouldn't support this case...
-# require IO::String;
-# $myData{_OUTFILE} = "$outfile";
-# $out_fh = IO::String->new($outfile);
- croak "Output to SCALAR reference not supported!\n";
- }
- else {
- ## Must be a filehandle-ref (or else assume its a ref to an
- ## object that supports the common IO write operations).
- $myData{_OUTFILE} = ${$outfile};
- $out_fh = $outfile;
- }
- }
- elsif (!defined($outfile) || !length($outfile) || ($outfile eq '-')
- || ($outfile =~ /^>&?(?:STDOUT|1)$/i))
- {
- if (defined $myData{_TOP_STREAM}) {
- $out_fh = $myData{_OUTPUT};
- }
- else {
- ## Not a filename, just a string implying STDOUT
- $outfile ||= '-';
- $myData{_OUTFILE} = "<standard output>";
- $out_fh = \*STDOUT;
- }
- }
- elsif ($outfile =~ /^>&(STDERR|2)$/i) {
- ## Not a filename, just a string implying STDERR
- $myData{_OUTFILE} = "<standard error>";
- $out_fh = \*STDERR;
- }
- else {
- ## We have a filename, open it for writing
- $myData{_OUTFILE} = $outfile;
- (-d $outfile) and croak "$outfile is a directory, not POD input!\n";
- open($out_fh, "> $outfile") or
- croak "Can't open $outfile for writing: $!\n";
- $close_output = 1;
- }
-
- ## Whew! That was a lot of work to set up reasonably/robust behavior
- ## in the case of a non-filename for reading and writing. Now we just
- ## have to parse the input and close the handles when we're finished.
- $self->parse_from_filehandle(\%opts, $in_fh, $out_fh);
-
- $close_input and
- close($in_fh) || croak "Can't close $infile after reading: $!\n";
- $close_output and
- close($out_fh) || croak "Can't close $outfile after writing: $!\n";
-}
-
-#############################################################################
-
-=head1 ACCESSOR METHODS
-
-Clients of B<Pod::Parser> should use the following methods to access
-instance data fields:
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=head1 B<errorsub()>
-
- $parser->errorsub("method_name");
- $parser->errorsub(\&warn_user);
- $parser->errorsub(sub { print STDERR, @_ });
-
-Specifies the method or subroutine to use when printing error messages
-about POD syntax. The supplied method/subroutine I<must> return TRUE upon
-successful printing of the message. If C<undef> is given, then the B<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 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
-
-Please report bugs using L<http://rt.cpan.org>.
-
-Brad Appleton E<lt>bradapp@enteract.comE<gt>
-
-Based on code for B<Pod::Text> written by
-Tom Christiansen E<lt>tchrist@mox.perl.comE<gt>
-
-=cut
-
-1;
-# vim: ts=4 sw=4 et
diff --git a/Master/tlpkg/tlperl/lib/Pod/Perldoc.pm b/Master/tlpkg/tlperl/lib/Pod/Perldoc.pm
deleted file mode 100644
index 8f9614838fb..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Perldoc.pm
+++ /dev/null
@@ -1,1762 +0,0 @@
-
-require 5;
-use 5.006; # we use some open(X, "<", $y) syntax
-package Pod::Perldoc;
-use strict;
-use warnings;
-use Config '%Config';
-
-use Fcntl; # for sysopen
-use File::Spec::Functions qw(catfile catdir splitdir);
-
-use vars qw($VERSION @Pagers $Bindir $Pod2man
- $Temp_Files_Created $Temp_File_Lifetime
-);
-$VERSION = '3.14';
-#..........................................................................
-
-BEGIN { # Make a DEBUG constant very first thing...
- unless(defined &DEBUG) {
- if(($ENV{'PERLDOCDEBUG'} || '') =~ m/^(\d+)/) { # untaint
- eval("sub DEBUG () {$1}");
- die "WHAT? Couldn't eval-up a DEBUG constant!? $@" if $@;
- } else {
- *DEBUG = sub () {0};
- }
- }
-}
-
-use Pod::Perldoc::GetOptsOO; # uses the DEBUG.
-
-#..........................................................................
-
-sub TRUE () {1}
-sub FALSE () {return}
-
-BEGIN {
- *IS_VMS = $^O eq 'VMS' ? \&TRUE : \&FALSE unless defined &IS_VMS;
- *IS_MSWin32 = $^O eq 'MSWin32' ? \&TRUE : \&FALSE unless defined &IS_MSWin32;
- *IS_Dos = $^O eq 'dos' ? \&TRUE : \&FALSE unless defined &IS_Dos;
- *IS_OS2 = $^O eq 'os2' ? \&TRUE : \&FALSE unless defined &IS_OS2;
- *IS_Cygwin = $^O eq 'cygwin' ? \&TRUE : \&FALSE unless defined &IS_Cygwin;
- *IS_Linux = $^O eq 'linux' ? \&TRUE : \&FALSE unless defined &IS_Linux;
- *IS_HPUX = $^O =~ m/hpux/ ? \&TRUE : \&FALSE unless defined &IS_HPUX;
-}
-
-$Temp_File_Lifetime ||= 60 * 60 * 24 * 5;
- # If it's older than five days, it's quite unlikely
- # that anyone's still looking at it!!
- # (Currently used only by the MSWin cleanup routine)
-
-
-#..........................................................................
-{ my $pager = $Config{'pager'};
- push @Pagers, $pager if -x (split /\s+/, $pager)[0] or IS_VMS;
-}
-$Bindir = $Config{'scriptdirexp'};
-$Pod2man = "pod2man" . ( $Config{'versiononly'} ? $Config{'version'} : '' );
-
-# End of class-init stuff
-#
-###########################################################################
-#
-# Option accessors...
-
-foreach my $subname (map "opt_$_", split '', q{mhlvriFfXqnTdU}) {
- no strict 'refs';
- *$subname = do{ use strict 'refs'; sub () { shift->_elem($subname, @_) } };
-}
-
-# And these are so that GetOptsOO knows they take options:
-sub opt_f_with { shift->_elem('opt_f', @_) }
-sub opt_q_with { shift->_elem('opt_q', @_) }
-sub opt_d_with { shift->_elem('opt_d', @_) }
-
-sub opt_w_with { # Specify an option for the formatter subclass
- my($self, $value) = @_;
- if($value =~ m/^([-_a-zA-Z][-_a-zA-Z0-9]*)(?:[=\:](.*?))?$/s) {
- my $option = $1;
- my $option_value = defined($2) ? $2 : "TRUE";
- $option =~ tr/\-/_/s; # tolerate "foo-bar" for "foo_bar"
- $self->add_formatter_option( $option, $option_value );
- } else {
- warn "\"$value\" isn't a good formatter option name. I'm ignoring it!\n";
- }
- return;
-}
-
-sub opt_M_with { # specify formatter class name(s)
- my($self, $classes) = @_;
- return unless defined $classes and length $classes;
- DEBUG > 4 and print "Considering new formatter classes -M$classes\n";
- my @classes_to_add;
- foreach my $classname (split m/[,;]+/s, $classes) {
- next unless $classname =~ m/\S/;
- if( $classname =~ m/^(\w+(::\w+)+)$/s ) {
- # A mildly restrictive concept of what modulenames are valid.
- push @classes_to_add, $1; # untaint
- } else {
- warn "\"$classname\" isn't a valid classname. Ignoring.\n";
- }
- }
-
- unshift @{ $self->{'formatter_classes'} }, @classes_to_add;
-
- DEBUG > 3 and print(
- "Adding @classes_to_add to the list of formatter classes, "
- . "making them @{ $self->{'formatter_classes'} }.\n"
- );
-
- return;
-}
-
-sub opt_V { # report version and exit
- print join '',
- "Perldoc v$VERSION, under perl v$] for $^O",
-
- (defined(&Win32::BuildNumber) and defined &Win32::BuildNumber())
- ? (" (win32 build ", &Win32::BuildNumber(), ")") : (),
-
- (chr(65) eq 'A') ? () : " (non-ASCII)",
-
- "\n",
- ;
- exit;
-}
-
-sub opt_t { # choose plaintext as output format
- my $self = shift;
- $self->opt_o_with('text') if @_ and $_[0];
- return $self->_elem('opt_t', @_);
-}
-
-sub opt_u { # choose raw pod as output format
- my $self = shift;
- $self->opt_o_with('pod') if @_ and $_[0];
- return $self->_elem('opt_u', @_);
-}
-
-sub opt_n_with {
- # choose man as the output format, and specify the proggy to run
- my $self = shift;
- $self->opt_o_with('man') if @_ and $_[0];
- $self->_elem('opt_n', @_);
-}
-
-sub opt_o_with { # "o" for output format
- my($self, $rest) = @_;
- return unless defined $rest and length $rest;
- if($rest =~ m/^(\w+)$/s) {
- $rest = $1; #untaint
- } else {
- warn "\"$rest\" isn't a valid output format. Skipping.\n";
- return;
- }
-
- $self->aside("Noting \"$rest\" as desired output format...\n");
-
- # Figure out what class(es) that could actually mean...
-
- my @classes;
- foreach my $prefix ("Pod::Perldoc::To", "Pod::Simple::", "Pod::") {
- # Messy but smart:
- foreach my $stem (
- $rest, # Yes, try it first with the given capitalization
- "\L$rest", "\L\u$rest", "\U$rest" # And then try variations
-
- ) {
- push @classes, $prefix . $stem;
- #print "Considering $prefix$stem\n";
- }
-
- # Tidier, but misses too much:
- #push @classes, $prefix . ucfirst(lc($rest));
- }
- $self->opt_M_with( join ";", @classes );
- return;
-}
-
-###########################################################################
-# % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
-
-sub run { # to be called by the "perldoc" executable
- my $class = shift;
- if(DEBUG > 3) {
- print "Parameters to $class\->run:\n";
- my @x = @_;
- while(@x) {
- $x[1] = '<undef>' unless defined $x[1];
- $x[1] = "@{$x[1]}" if ref( $x[1] ) eq 'ARRAY';
- print " [$x[0]] => [$x[1]]\n";
- splice @x,0,2;
- }
- print "\n";
- }
- return $class -> new(@_) -> process() || 0;
-}
-
-# % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
-###########################################################################
-
-sub new { # yeah, nothing fancy
- my $class = shift;
- my $new = bless {@_}, (ref($class) || $class);
- DEBUG > 1 and print "New $class object $new\n";
- $new->init();
- $new;
-}
-
-#..........................................................................
-
-sub aside { # If we're in -v or DEBUG mode, say this.
- my $self = shift;
- if( DEBUG or $self->opt_v ) {
- my $out = join( '',
- DEBUG ? do {
- my $callsub = (caller(1))[3];
- my $package = quotemeta(__PACKAGE__ . '::');
- $callsub =~ s/^$package/'/os;
- # the o is justified, as $package really won't change.
- $callsub . ": ";
- } : '',
- @_,
- );
- if(DEBUG) { print $out } else { print STDERR $out }
- }
- return;
-}
-
-#..........................................................................
-
-sub usage {
- my $self = shift;
- warn "@_\n" if @_;
-
- # Erase evidence of previous errors (if any), so exit status is simple.
- $! = 0;
-
- die <<EOF;
-perldoc [options] PageName|ModuleName|ProgramName...
-perldoc [options] -f BuiltinFunction
-perldoc [options] -q FAQRegex
-
-Options:
- -h Display this help message
- -V report version
- -r Recursive search (slow)
- -i Ignore case
- -t Display pod using pod2text instead of pod2man and nroff
- (-t is the default on win32 unless -n is specified)
- -u Display unformatted pod text
- -m Display module's file in its entirety
- -n Specify replacement for nroff
- -l Display the module's file name
- -F Arguments are file names, not modules
- -v Verbosely describe what's going on
- -T Send output to STDOUT without any pager
- -d output_filename_to_send_to
- -o output_format_name
- -M FormatterModuleNameToUse
- -w formatter_option:option_value
- -X use index if present (looks for pod.idx at $Config{archlib})
- -q Search the text of questions (not answers) in perlfaq[1-9]
-
-PageName|ModuleName...
- is the name of a piece of documentation that you want to look at. You
- may either give a descriptive name of the page (as in the case of
- `perlfunc') the name of a module, either like `Term::Info' or like
- `Term/Info', or the name of a program, like `perldoc'.
-
-BuiltinFunction
- is the name of a perl function. Will extract documentation from
- `perlfunc'.
-
-FAQRegex
- is a regex. Will search perlfaq[1-9] for and extract any
- questions that match.
-
-Any switches in the PERLDOC environment variable will be used before the
-command line arguments. The optional pod index file contains a list of
-filenames, one per line.
- [Perldoc v$VERSION]
-EOF
-
-}
-
-#..........................................................................
-
-sub usage_brief {
- my $me = $0; # Editing $0 is unportable
-
- $me =~ s,.*[/\\],,; # get basename
-
- die <<"EOUSAGE";
-Usage: $me [-h] [-V] [-r] [-i] [-v] [-t] [-u] [-m] [-n nroffer_program] [-l] [-T] [-d output_filename] [-o output_format] [-M FormatterModuleNameToUse] [-w formatter_option:option_value] [-F] [-X] PageName|ModuleName|ProgramName
- $me -f PerlFunc
- $me -q FAQKeywords
-
-The -h option prints more help. Also try "perldoc perldoc" to get
-acquainted with the system. [Perldoc v$VERSION]
-EOUSAGE
-
-}
-
-#..........................................................................
-
-sub pagers { @{ shift->{'pagers'} } }
-
-#..........................................................................
-
-sub _elem { # handy scalar meta-accessor: shift->_elem("foo", @_)
- if(@_ > 2) { return $_[0]{ $_[1] } = $_[2] }
- else { return $_[0]{ $_[1] } }
-}
-#..........................................................................
-###########################################################################
-#
-# Init formatter switches, and start it off with __bindir and all that
-# other stuff that ToMan.pm needs.
-#
-
-sub init {
- my $self = shift;
-
- # Make sure creat()s are neither too much nor too little
- eval { umask(0077) }; # doubtless someone has no mask
-
- $self->{'args'} ||= \@ARGV;
- $self->{'found'} ||= [];
- $self->{'temp_file_list'} ||= [];
-
-
- $self->{'target'} = undef;
-
- $self->init_formatter_class_list;
-
- $self->{'pagers' } = [@Pagers] unless exists $self->{'pagers'};
- $self->{'bindir' } = $Bindir unless exists $self->{'bindir'};
- $self->{'pod2man'} = $Pod2man unless exists $self->{'pod2man'};
-
- push @{ $self->{'formatter_switches'} = [] }, (
- # Yeah, we could use a hashref, but maybe there's some class where options
- # have to be ordered; so we'll use an arrayref.
-
- [ '__bindir' => $self->{'bindir' } ],
- [ '__pod2man' => $self->{'pod2man'} ],
- );
-
- DEBUG > 3 and printf "Formatter switches now: [%s]\n",
- join ' ', map "[@$_]", @{ $self->{'formatter_switches'} };
-
- return;
-}
-
-#..........................................................................
-
-sub init_formatter_class_list {
- my $self = shift;
- $self->{'formatter_classes'} ||= [];
-
- # Remember, no switches have been read yet, when
- # we've started this routine.
-
- $self->opt_M_with('Pod::Perldoc::ToPod'); # the always-there fallthru
- $self->opt_o_with('text');
- $self->opt_o_with('man') unless IS_MSWin32 || IS_Dos
- || !($ENV{TERM} && (
- ($ENV{TERM} || '') !~ /dumb|emacs|none|unknown/i
- ));
-
- return;
-}
-
-#..........................................................................
-
-sub process {
- # if this ever returns, its retval will be used for exit(RETVAL)
-
- my $self = shift;
- DEBUG > 1 and print " Beginning process.\n";
- DEBUG > 1 and print " Args: @{$self->{'args'}}\n\n";
- if(DEBUG > 3) {
- print "Object contents:\n";
- my @x = %$self;
- while(@x) {
- $x[1] = '<undef>' unless defined $x[1];
- $x[1] = "@{$x[1]}" if ref( $x[1] ) eq 'ARRAY';
- print " [$x[0]] => [$x[1]]\n";
- splice @x,0,2;
- }
- print "\n";
- }
-
- # TODO: make it deal with being invoked as various different things
- # such as perlfaq".
-
- return $self->usage_brief unless @{ $self->{'args'} };
- $self->pagers_guessing;
- $self->options_reading;
- $self->aside(sprintf "$0 => %s v%s\n", ref($self), $self->VERSION);
- $self->drop_privs_maybe;
- $self->options_processing;
-
- # Hm, we have @pages and @found, but we only really act on one
- # file per call, with the exception of the opt_q hack, and with
- # -l things
-
- $self->aside("\n");
-
- my @pages;
- $self->{'pages'} = \@pages;
- if( $self->opt_f) { @pages = ("perlfunc") }
- elsif( $self->opt_q) { @pages = ("perlfaq1" .. "perlfaq9") }
- else { @pages = @{$self->{'args'}};
- # @pages = __FILE__
- # if @pages == 1 and $pages[0] eq 'perldoc';
- }
-
- return $self->usage_brief unless @pages;
-
- $self->find_good_formatter_class();
- $self->formatter_sanity_check();
-
- $self->maybe_diddle_INC();
- # for when we're apparently in a module or extension directory
-
- my @found = $self->grand_search_init(\@pages);
- exit (IS_VMS ? 98962 : 1) unless @found;
-
- if ($self->opt_l) {
- DEBUG and print "We're in -l mode, so byebye after this:\n";
- print join("\n", @found), "\n";
- return;
- }
-
- $self->tweak_found_pathnames(\@found);
- $self->assert_closing_stdout;
- return $self->page_module_file(@found) if $self->opt_m;
- DEBUG > 2 and print "Found: [@found]\n";
-
- return $self->render_and_page(\@found);
-}
-
-#..........................................................................
-{
-
-my( %class_seen, %class_loaded );
-sub find_good_formatter_class {
- my $self = $_[0];
- my @class_list = @{ $self->{'formatter_classes'} || [] };
- die "WHAT? Nothing in the formatter class list!?" unless @class_list;
-
- my $good_class_found;
- foreach my $c (@class_list) {
- DEBUG > 4 and print "Trying to load $c...\n";
- if($class_loaded{$c}) {
- DEBUG > 4 and print "OK, the already-loaded $c it is!\n";
- $good_class_found = $c;
- last;
- }
-
- if($class_seen{$c}) {
- DEBUG > 4 and print
- "I've tried $c before, and it's no good. Skipping.\n";
- next;
- }
-
- $class_seen{$c} = 1;
-
- if( $c->can('parse_from_file') ) {
- DEBUG > 4 and print
- "Interesting, the formatter class $c is already loaded!\n";
-
- } elsif(
- (IS_VMS or IS_MSWin32 or IS_Dos or IS_OS2)
- # the alway case-insensitive fs's
- and $class_seen{lc("~$c")}++
- ) {
- DEBUG > 4 and print
- "We already used something quite like \"\L$c\E\", so no point using $c\n";
- # This avoids redefining the package.
- } else {
- DEBUG > 4 and print "Trying to eval 'require $c'...\n";
-
- local $^W = $^W;
- if(DEBUG() or $self->opt_v) {
- # feh, let 'em see it
- } else {
- $^W = 0;
- # The average user just has no reason to be seeing
- # $^W-suppressable warnings from the the require!
- }
-
- eval "require $c";
- if($@) {
- DEBUG > 4 and print "Couldn't load $c: $!\n";
- next;
- }
- }
-
- if( $c->can('parse_from_file') ) {
- DEBUG > 4 and print "Settling on $c\n";
- my $v = $c->VERSION;
- $v = ( defined $v and length $v ) ? " version $v" : '';
- $self->aside("Formatter class $c$v successfully loaded!\n");
- $good_class_found = $c;
- last;
- } else {
- DEBUG > 4 and print "Class $c isn't a formatter?! Skipping.\n";
- }
- }
-
- die "Can't find any loadable formatter class in @class_list?!\nAborting"
- unless $good_class_found;
-
- $self->{'formatter_class'} = $good_class_found;
- $self->aside("Will format with the class $good_class_found\n");
-
- return;
-}
-
-}
-#..........................................................................
-
-sub formatter_sanity_check {
- my $self = shift;
- my $formatter_class = $self->{'formatter_class'}
- || die "NO FORMATTER CLASS YET!?";
-
- if(!$self->opt_T # so -T can FORCE sending to STDOUT
- and $formatter_class->can('is_pageable')
- and !$formatter_class->is_pageable
- and !$formatter_class->can('page_for_perldoc')
- ) {
- my $ext =
- ($formatter_class->can('output_extension')
- && $formatter_class->output_extension
- ) || '';
- $ext = ".$ext" if length $ext;
-
- die
- "When using Perldoc to format with $formatter_class, you have to\n"
- . "specify -T or -dsomefile$ext\n"
- . "See `perldoc perldoc' for more information on those switches.\n"
- ;
- }
-}
-
-#..........................................................................
-
-sub render_and_page {
- my($self, $found_list) = @_;
-
- $self->maybe_generate_dynamic_pod($found_list);
-
- my($out, $formatter) = $self->render_findings($found_list);
-
- if($self->opt_d) {
- printf "Perldoc (%s) output saved to %s\n",
- $self->{'formatter_class'} || ref($self),
- $out;
- print "But notice that it's 0 bytes long!\n" unless -s $out;
-
-
- } elsif( # Allow the formatter to "page" itself, if it wants.
- $formatter->can('page_for_perldoc')
- and do {
- $self->aside("Going to call $formatter\->page_for_perldoc(\"$out\")\n");
- if( $formatter->page_for_perldoc($out, $self) ) {
- $self->aside("page_for_perldoc returned true, so NOT paging with $self.\n");
- 1;
- } else {
- $self->aside("page_for_perldoc returned false, so paging with $self instead.\n");
- '';
- }
- }
- ) {
- # Do nothing, since the formatter has "paged" it for itself.
-
- } else {
- # Page it normally (internally)
-
- if( -s $out ) { # Usual case:
- $self->page($out, $self->{'output_to_stdout'}, $self->pagers);
-
- } else {
- # Odd case:
- $self->aside("Skipping $out (from $$found_list[0] "
- . "via $$self{'formatter_class'}) as it is 0-length.\n");
-
- push @{ $self->{'temp_file_list'} }, $out;
- $self->unlink_if_temp_file($out);
- }
- }
-
- $self->after_rendering(); # any extra cleanup or whatever
-
- return;
-}
-
-#..........................................................................
-
-sub options_reading {
- my $self = shift;
-
- if( defined $ENV{"PERLDOC"} and length $ENV{"PERLDOC"} ) {
- require Text::ParseWords;
- $self->aside("Noting env PERLDOC setting of $ENV{'PERLDOC'}\n");
- # Yes, appends to the beginning
- unshift @{ $self->{'args'} },
- Text::ParseWords::shellwords( $ENV{"PERLDOC"} )
- ;
- DEBUG > 1 and print " Args now: @{$self->{'args'}}\n\n";
- } else {
- DEBUG > 1 and print " Okay, no PERLDOC setting in ENV.\n";
- }
-
- DEBUG > 1
- and print " Args right before switch processing: @{$self->{'args'}}\n";
-
- Pod::Perldoc::GetOptsOO::getopts( $self, $self->{'args'}, 'YES' )
- or return $self->usage;
-
- DEBUG > 1
- and print " Args after switch processing: @{$self->{'args'}}\n";
-
- return $self->usage if $self->opt_h;
-
- return;
-}
-
-#..........................................................................
-
-sub options_processing {
- my $self = shift;
-
- if ($self->opt_X) {
- my $podidx = "$Config{'archlib'}/pod.idx";
- $podidx = "" unless -f $podidx && -r _ && -M _ <= 7;
- $self->{'podidx'} = $podidx;
- }
-
- $self->{'output_to_stdout'} = 1 if $self->opt_T or ! -t STDOUT;
-
- $self->options_sanity;
-
- $self->opt_n("nroff") unless $self->opt_n;
- $self->add_formatter_option( '__nroffer' => $self->opt_n );
-
- return;
-}
-
-#..........................................................................
-
-sub options_sanity {
- my $self = shift;
-
- # The opts-counting stuff interacts quite badly with
- # the $ENV{"PERLDOC"} stuff. I.e., if I have $ENV{"PERLDOC"}
- # set to -t, and I specify -u on the command line, I don't want
- # to be hectored at that -u and -t don't make sense together.
-
- #my $opts = grep $_ && 1, # yes, the count of the set ones
- # $self->opt_t, $self->opt_u, $self->opt_m, $self->opt_l
- #;
- #
- #$self->usage("only one of -t, -u, -m or -l") if $opts > 1;
-
-
- # Any sanity-checking need doing here?
-
- return;
-}
-
-#..........................................................................
-
-sub grand_search_init {
- my($self, $pages, @found) = @_;
-
- foreach (@$pages) {
- if ($self->{'podidx'} && open(PODIDX, $self->{'podidx'})) {
- my $searchfor = catfile split '::', $_;
- $self->aside( "Searching for '$searchfor' in $self->{'podidx'}\n" );
- local $_;
- while (<PODIDX>) {
- chomp;
- push(@found, $_) if m,/$searchfor(?:\.(?:pod|pm))?\z,i;
- }
- close(PODIDX) or die "Can't close $$self{'podidx'}: $!";
- next;
- }
-
- $self->aside( "Searching for $_\n" );
-
- if ($self->opt_F) {
- next unless -r;
- push @found, $_ if $self->opt_m or $self->containspod($_);
- next;
- }
-
- # We must look both in @INC for library modules and in $bindir
- # for executables, like h2xs or perldoc itself.
-
- my @searchdirs = ($self->{'bindir'}, @INC);
- unless ($self->opt_m) {
- if (IS_VMS) {
- my($i,$trn);
- for ($i = 0; $trn = $ENV{'DCL$PATH;'.$i}; $i++) {
- push(@searchdirs,$trn);
- }
- push(@searchdirs,'perl_root:[lib.pod]') # installed pods
- }
- else {
- push(@searchdirs, grep(-d, split($Config{path_sep},
- $ENV{'PATH'})));
- }
- }
- my @files = $self->searchfor(0,$_,@searchdirs);
- if (@files) {
- $self->aside( "Found as @files\n" );
- }
- else {
- # no match, try recursive search
- @searchdirs = grep(!/^\.\z/s,@INC);
- @files= $self->searchfor(1,$_,@searchdirs) if $self->opt_r;
- if (@files) {
- $self->aside( "Loosely found as @files\n" );
- }
- else {
- print STDERR "No " .
- ($self->opt_m ? "module" : "documentation") . " found for \"$_\".\n";
- if ( @{ $self->{'found'} } ) {
- print STDERR "However, try\n";
- for my $dir (@{ $self->{'found'} }) {
- opendir(DIR, $dir) or die "opendir $dir: $!";
- while (my $file = readdir(DIR)) {
- next if ($file =~ /^\./s);
- $file =~ s/\.(pm|pod)\z//; # XXX: badfs
- print STDERR "\tperldoc $_\::$file\n";
- }
- closedir(DIR) or die "closedir $dir: $!";
- }
- }
- }
- }
- push(@found,@files);
- }
- return @found;
-}
-
-#..........................................................................
-
-sub maybe_generate_dynamic_pod {
- my($self, $found_things) = @_;
- my @dynamic_pod;
-
- $self->search_perlfunc($found_things, \@dynamic_pod) if $self->opt_f;
-
- $self->search_perlfaqs($found_things, \@dynamic_pod) if $self->opt_q;
-
- if( ! $self->opt_f and ! $self->opt_q ) {
- DEBUG > 4 and print "That's a non-dynamic pod search.\n";
- } elsif ( @dynamic_pod ) {
- $self->aside("Hm, I found some Pod from that search!\n");
- my ($buffd, $buffer) = $self->new_tempfile('pod', 'dyn');
-
- push @{ $self->{'temp_file_list'} }, $buffer;
- # I.e., it MIGHT be deleted at the end.
-
- my $in_list = $self->opt_f;
-
- print $buffd "=over 8\n\n" if $in_list;
- print $buffd @dynamic_pod or die "Can't print $buffer: $!";
- print $buffd "=back\n" if $in_list;
-
- close $buffd or die "Can't close $buffer: $!";
-
- @$found_things = $buffer;
- # Yes, so found_things never has more than one thing in
- # it, by time we leave here
-
- $self->add_formatter_option('__filter_nroff' => 1);
-
- } else {
- @$found_things = ();
- $self->aside("I found no Pod from that search!\n");
- }
-
- return;
-}
-
-#..........................................................................
-
-sub add_formatter_option { # $self->add_formatter_option('key' => 'value');
- my $self = shift;
- push @{ $self->{'formatter_switches'} }, [ @_ ] if @_;
-
- DEBUG > 3 and printf "Formatter switches now: [%s]\n",
- join ' ', map "[@$_]", @{ $self->{'formatter_switches'} };
-
- return;
-}
-
-#..........................................................................
-
-sub search_perlfunc {
- my($self, $found_things, $pod) = @_;
-
- DEBUG > 2 and print "Search: @$found_things\n";
-
- my $perlfunc = shift @$found_things;
- open(PFUNC, "<", $perlfunc) # "Funk is its own reward"
- or die("Can't open $perlfunc: $!");
-
- # Functions like -r, -e, etc. are listed under `-X'.
- my $search_re = ($self->opt_f =~ /^-[rwxoRWXOeszfdlpSbctugkTBMAC]$/)
- ? '(?:I<)?-X' : quotemeta($self->opt_f) ;
-
- DEBUG > 2 and
- print "Going to perlfunc-scan for $search_re in $perlfunc\n";
-
- # Skip introduction
- local $_;
- while (<PFUNC>) {
- last if /^=head2 Alphabetical Listing of Perl Functions/;
- }
-
- # Look for our function
- my $found = 0;
- my $inlist = 0;
- while (<PFUNC>) { # "The Mothership Connection is here!"
- if ( m/^=item\s+$search_re\b/ ) {
- $found = 1;
- }
- elsif (/^=item/) {
- last if $found > 1 and not $inlist;
- }
- next unless $found;
- if (/^=over/) {
- ++$inlist;
- }
- elsif (/^=back/) {
- --$inlist;
- }
- push @$pod, $_;
- ++$found if /^\w/; # found descriptive text
- }
- if (!@$pod) {
- die sprintf
- "No documentation for perl function `%s' found\n",
- $self->opt_f
- ;
- }
- close PFUNC or die "Can't open $perlfunc: $!";
-
- return;
-}
-
-#..........................................................................
-
-sub search_perlfaqs {
- my( $self, $found_things, $pod) = @_;
-
- my $found = 0;
- my %found_in;
- my $search_key = $self->opt_q;
-
- my $rx = eval { qr/$search_key/ }
- or die <<EOD;
-Invalid regular expression '$search_key' given as -q pattern:
-$@
-Did you mean \\Q$search_key ?
-
-EOD
-
- local $_;
- foreach my $file (@$found_things) {
- die "invalid file spec: $!" if $file =~ /[<>|]/;
- open(INFAQ, "<", $file) # XXX 5.6ism
- or die "Can't read-open $file: $!\nAborting";
- while (<INFAQ>) {
- if ( m/^=head2\s+.*(?:$search_key)/i ) {
- $found = 1;
- push @$pod, "=head1 Found in $file\n\n" unless $found_in{$file}++;
- }
- elsif (/^=head[12]/) {
- $found = 0;
- }
- next unless $found;
- push @$pod, $_;
- }
- close(INFAQ);
- }
- die("No documentation for perl FAQ keyword `$search_key' found\n")
- unless @$pod;
-
- return;
-}
-
-
-#..........................................................................
-
-sub render_findings {
- # Return the filename to open
-
- my($self, $found_things) = @_;
-
- my $formatter_class = $self->{'formatter_class'}
- || die "No formatter class set!?";
- my $formatter = $formatter_class->can('new')
- ? $formatter_class->new
- : $formatter_class
- ;
-
- if(! @$found_things) {
- die "Nothing found?!";
- # should have been caught before here
- } elsif(@$found_things > 1) {
- warn join '',
- "Perldoc is only really meant for reading one document at a time.\n",
- "So these parameters are being ignored: ",
- join(' ', @$found_things[1 .. $#$found_things] ),
- "\n"
- }
-
- my $file = $found_things->[0];
-
- DEBUG > 3 and printf "Formatter switches now: [%s]\n",
- join ' ', map "[@$_]", @{ $self->{'formatter_switches'} };
-
- # Set formatter options:
- if( ref $formatter ) {
- foreach my $f (@{ $self->{'formatter_switches'} || [] }) {
- my($switch, $value, $silent_fail) = @$f;
- if( $formatter->can($switch) ) {
- eval { $formatter->$switch( defined($value) ? $value : () ) };
- warn "Got an error when setting $formatter_class\->$switch:\n$@\n"
- if $@;
- } else {
- if( $silent_fail or $switch =~ m/^__/s ) {
- DEBUG > 2 and print "Formatter $formatter_class doesn't support $switch\n";
- } else {
- warn "$formatter_class doesn't recognize the $switch switch.\n";
- }
- }
- }
- }
-
- $self->{'output_is_binary'} =
- $formatter->can('write_with_binmode') && $formatter->write_with_binmode;
-
- my ($out_fh, $out) = $self->new_output_file(
- ( $formatter->can('output_extension') && $formatter->output_extension )
- || undef,
- $self->useful_filename_bit,
- );
-
- # Now, finally, do the formatting!
- {
- local $^W = $^W;
- if(DEBUG() or $self->opt_v) {
- # feh, let 'em see it
- } else {
- $^W = 0;
- # The average user just has no reason to be seeing
- # $^W-suppressable warnings from the formatting!
- }
-
- eval { $formatter->parse_from_file( $file, $out_fh ) };
- }
-
- warn "Error while formatting with $formatter_class:\n $@\n" if $@;
- DEBUG > 2 and print "Back from formatting with $formatter_class\n";
-
- close $out_fh
- or warn "Can't close $out: $!\n(Did $formatter already close it?)";
- sleep 0; sleep 0; sleep 0;
- # Give the system a few timeslices to meditate on the fact
- # that the output file does in fact exist and is closed.
-
- $self->unlink_if_temp_file($file);
-
- unless( -s $out ) {
- if( $formatter->can( 'if_zero_length' ) ) {
- # Basically this is just a hook for Pod::Simple::Checker; since
- # what other class could /happily/ format an input file with Pod
- # as a 0-length output file?
- $formatter->if_zero_length( $file, $out, $out_fh );
- } else {
- warn "Got a 0-length file from $$found_things[0] via $formatter_class!?\n"
- }
- }
-
- DEBUG and print "Finished writing to $out.\n";
- return($out, $formatter) if wantarray;
- return $out;
-}
-
-#..........................................................................
-
-sub unlink_if_temp_file {
- # Unlink the specified file IFF it's in the list of temp files.
- # Really only used in the case of -f / -q things when we can
- # throw away the dynamically generated source pod file once
- # we've formatted it.
- #
- my($self, $file) = @_;
- return unless defined $file and length $file;
-
- my $temp_file_list = $self->{'temp_file_list'} || return;
- if(grep $_ eq $file, @$temp_file_list) {
- $self->aside("Unlinking $file\n");
- unlink($file) or warn "Odd, couldn't unlink $file: $!";
- } else {
- DEBUG > 1 and print "$file isn't a temp file, so not unlinking.\n";
- }
- return;
-}
-
-#..........................................................................
-
-sub MSWin_temp_cleanup {
-
- # Nothing particularly MSWin-specific in here, but I don't know if any
- # other OS needs its temp dir policed like MSWin does!
-
- my $self = shift;
-
- my $tempdir = $ENV{'TEMP'};
- return unless defined $tempdir and length $tempdir
- and -e $tempdir and -d _ and -w _;
-
- $self->aside(
- "Considering whether any old files of mine in $tempdir need unlinking.\n"
- );
-
- opendir(TMPDIR, $tempdir) || return;
- my @to_unlink;
-
- my $limit = time() - $Temp_File_Lifetime;
-
- DEBUG > 5 and printf "Looking for things pre-dating %s (%x)\n",
- ($limit) x 2;
-
- my $filespec;
-
- while(defined($filespec = readdir(TMPDIR))) {
- if(
- $filespec =~ m{^perldoc_[a-zA-Z0-9]+_T([a-fA-F0-9]{7,})_[a-fA-F0-9]{3,}}s
- ) {
- if( hex($1) < $limit ) {
- push @to_unlink, "$tempdir/$filespec";
- $self->aside( "Will unlink my old temp file $to_unlink[-1]\n" );
- } else {
- DEBUG > 5 and
- printf " $tempdir/$filespec is too recent (after %x)\n", $limit;
- }
- } else {
- DEBUG > 5 and
- print " $tempdir/$filespec doesn't look like a perldoc temp file.\n";
- }
- }
- closedir(TMPDIR);
- $self->aside(sprintf "Unlinked %s items of mine in %s\n",
- scalar(unlink(@to_unlink)),
- $tempdir
- );
- return;
-}
-
-# . . . . . . . . . . . . . . . . . . . . . . . . .
-
-sub MSWin_perldoc_tempfile {
- my($self, $suffix, $infix) = @_;
-
- my $tempdir = $ENV{'TEMP'};
- return unless defined $tempdir and length $tempdir
- and -e $tempdir and -d _ and -w _;
-
- my $spec;
-
- do {
- $spec = sprintf "%s\\perldoc_%s_T%x_%x%02x.%s", # used also in MSWin_temp_cleanup
- # Yes, we embed the create-time in the filename!
- $tempdir,
- $infix || 'x',
- time(),
- $$,
- defined( &Win32::GetTickCount )
- ? (Win32::GetTickCount() & 0xff)
- : int(rand 256)
- # Under MSWin, $$ values get reused quickly! So if we ran
- # perldoc foo and then perldoc bar before there was time for
- # time() to increment time."_$$" would likely be the same
- # for each process! So we tack on the tick count's lower
- # bits (or, in a pinch, rand)
- ,
- $suffix || 'txt';
- ;
- } while( -e $spec );
-
- my $counter = 0;
-
- while($counter < 50) {
- my $fh;
- # If we are running before perl5.6.0, we can't autovivify
- if ($] < 5.006) {
- require Symbol;
- $fh = Symbol::gensym();
- }
- DEBUG > 3 and print "About to try making temp file $spec\n";
- return($fh, $spec) if open($fh, ">", $spec); # XXX 5.6ism
- $self->aside("Can't create temp file $spec: $!\n");
- }
-
- $self->aside("Giving up on making a temp file!\n");
- die "Can't make a tempfile!?";
-}
-
-#..........................................................................
-
-
-sub after_rendering {
- my $self = $_[0];
- $self->after_rendering_VMS if IS_VMS;
- $self->after_rendering_MSWin32 if IS_MSWin32;
- $self->after_rendering_Dos if IS_Dos;
- $self->after_rendering_OS2 if IS_OS2;
- return;
-}
-
-sub after_rendering_VMS { return }
-sub after_rendering_Dos { return }
-sub after_rendering_OS2 { return }
-
-sub after_rendering_MSWin32 {
- shift->MSWin_temp_cleanup() if $Temp_Files_Created;
-}
-
-#..........................................................................
-# : : : : : : : : :
-#..........................................................................
-
-
-sub minus_f_nocase { # i.e., do like -f, but without regard to case
-
- my($self, $dir, $file) = @_;
- my $path = catfile($dir,$file);
- return $path if -f $path and -r _;
-
- if(!$self->opt_i
- or IS_VMS or IS_MSWin32
- or IS_Dos or IS_OS2
- ) {
- # On a case-forgiving file system, or if case is important,
- # that is it, all we can do.
- warn "Ignored $path: unreadable\n" if -f _;
- return '';
- }
-
- local *DIR;
- my @p = ($dir);
- my($p,$cip);
- foreach $p (splitdir $file){
- my $try = catfile @p, $p;
- $self->aside("Scrutinizing $try...\n");
- stat $try;
- if (-d _) {
- push @p, $p;
- if ( $p eq $self->{'target'} ) {
- my $tmp_path = catfile @p;
- my $path_f = 0;
- for (@{ $self->{'found'} }) {
- $path_f = 1 if $_ eq $tmp_path;
- }
- push (@{ $self->{'found'} }, $tmp_path) unless $path_f;
- $self->aside( "Found as $tmp_path but directory\n" );
- }
- }
- elsif (-f _ && -r _) {
- return $try;
- }
- elsif (-f _) {
- warn "Ignored $try: unreadable\n";
- }
- elsif (-d catdir(@p)) { # at least we see the containing directory!
- my $found = 0;
- my $lcp = lc $p;
- my $p_dirspec = catdir(@p);
- opendir DIR, $p_dirspec or die "opendir $p_dirspec: $!";
- while(defined( $cip = readdir(DIR) )) {
- if (lc $cip eq $lcp){
- $found++;
- last; # XXX stop at the first? what if there's others?
- }
- }
- closedir DIR or die "closedir $p_dirspec: $!";
- return "" unless $found;
-
- push @p, $cip;
- my $p_filespec = catfile(@p);
- return $p_filespec if -f $p_filespec and -r _;
- warn "Ignored $p_filespec: unreadable\n" if -f _;
- }
- }
- return "";
-}
-
-#..........................................................................
-
-sub pagers_guessing {
- my $self = shift;
-
- my @pagers;
- push @pagers, $self->pagers;
- $self->{'pagers'} = \@pagers;
-
- if (IS_MSWin32) {
- push @pagers, qw( more< less notepad );
- unshift @pagers, $ENV{PAGER} if $ENV{PAGER};
- }
- elsif (IS_VMS) {
- push @pagers, qw( most more less type/page );
- }
- elsif (IS_Dos) {
- push @pagers, qw( less.exe more.com< );
- unshift @pagers, $ENV{PAGER} if $ENV{PAGER};
- }
- else {
- if (IS_OS2) {
- unshift @pagers, 'less', 'cmd /c more <';
- }
- push @pagers, qw( more less pg view cat );
- unshift @pagers, $ENV{PAGER} if $ENV{PAGER};
- }
-
- if (IS_Cygwin) {
- if (($pagers[0] eq 'less') || ($pagers[0] eq '/usr/bin/less')) {
- unshift @pagers, '/usr/bin/less -isrR';
- }
- }
-
- unshift @pagers, $ENV{PERLDOC_PAGER} if $ENV{PERLDOC_PAGER};
-
- return;
-}
-
-#..........................................................................
-
-sub page_module_file {
- my($self, @found) = @_;
-
- # Security note:
- # Don't ever just pass this off to anything like MSWin's "start.exe",
- # since we might be calling on a .pl file, and we wouldn't want that
- # to actually /execute/ the file that we just want to page thru!
- # Also a consideration if one were to use a web browser as a pager;
- # doing so could trigger the browser's MIME mapping for whatever
- # it thinks .pm/.pl/whatever is. Probably just a (useless and
- # annoying) "Save as..." dialog, but potentially executing the file
- # in question -- particularly in the case of MSIE and it's, ahem,
- # occasionally hazy distinction between OS-local extension
- # associations, and browser-specific MIME mappings.
-
- if ($self->{'output_to_stdout'}) {
- $self->aside("Sending unpaged output to STDOUT.\n");
- local $_;
- my $any_error = 0;
- foreach my $output (@found) {
- unless( open(TMP, "<", $output) ) { # XXX 5.6ism
- warn("Can't open $output: $!");
- $any_error = 1;
- next;
- }
- while (<TMP>) {
- print or die "Can't print to stdout: $!";
- }
- close TMP or die "Can't close while $output: $!";
- $self->unlink_if_temp_file($output);
- }
- return $any_error; # successful
- }
-
- foreach my $pager ( $self->pagers ) {
- $self->aside("About to try calling $pager @found\n");
- if (system($pager, @found) == 0) {
- $self->aside("Yay, it worked.\n");
- return 0;
- }
- $self->aside("That didn't work.\n");
-
- # Odd -- when it fails, under Win32, this seems to neither
- # return with a fail nor return with a success!!
- # That's discouraging!
- }
-
- $self->aside(
- sprintf "Can't manage to find a way to page [%s] via pagers [%s]\n",
- join(' ', @found),
- join(' ', $self->pagers),
- );
-
- if (IS_VMS) {
- DEBUG > 1 and print "Bailing out in a VMSish way.\n";
- eval q{
- use vmsish qw(status exit);
- exit $?;
- 1;
- } or die;
- }
-
- return 1;
- # i.e., an UNSUCCESSFUL return value!
-}
-
-#..........................................................................
-
-sub check_file {
- my($self, $dir, $file) = @_;
-
- unless( ref $self ) {
- # Should never get called:
- $Carp::Verbose = 1;
- require Carp;
- Carp::croak( join '',
- "Crazy ", __PACKAGE__, " error:\n",
- "check_file must be an object_method!\n",
- "Aborting"
- );
- }
-
- if(length $dir and not -d $dir) {
- DEBUG > 3 and print " No dir $dir -- skipping.\n";
- return "";
- }
-
- if ($self->opt_m) {
- return $self->minus_f_nocase($dir,$file);
- }
-
- else {
- my $path = $self->minus_f_nocase($dir,$file);
- if( length $path and $self->containspod($path) ) {
- DEBUG > 3 and print
- " The file $path indeed looks promising!\n";
- return $path;
- }
- }
- DEBUG > 3 and print " No good: $file in $dir\n";
-
- return "";
-}
-
-#..........................................................................
-
-sub containspod {
- my($self, $file, $readit) = @_;
- return 1 if !$readit && $file =~ /\.pod\z/i;
-
-
- # Under cygwin the /usr/bin/perl is legal executable, but
- # you cannot open a file with that name. It must be spelled
- # out as "/usr/bin/perl.exe".
- #
- # The following if-case under cygwin prevents error
- #
- # $ perldoc perl
- # Cannot open /usr/bin/perl: no such file or directory
- #
- # This would work though
- #
- # $ perldoc perl.pod
-
- if ( IS_Cygwin and -x $file and -f "$file.exe" )
- {
- warn "Cygwin $file.exe search skipped\n" if DEBUG or $self->opt_v;
- return 0;
- }
-
- local($_);
- open(TEST,"<", $file) or die "Can't open $file: $!"; # XXX 5.6ism
- while (<TEST>) {
- if (/^=head/) {
- close(TEST) or die "Can't close $file: $!";
- return 1;
- }
- }
- close(TEST) or die "Can't close $file: $!";
- return 0;
-}
-
-#..........................................................................
-
-sub maybe_diddle_INC {
- my $self = shift;
-
- # Does this look like a module or extension directory?
-
- if (-f "Makefile.PL") {
-
- # Add "." and "lib" to @INC (if they exist)
- eval q{ use lib qw(. lib); 1; } or die;
-
- # don't add if superuser
- if ($< && $> && -f "blib") { # don't be looking too hard now!
- eval q{ use blib; 1 };
- warn $@ if $@ && $self->opt_v;
- }
- }
-
- return;
-}
-
-#..........................................................................
-
-sub new_output_file {
- my $self = shift;
- my $outspec = $self->opt_d; # Yes, -d overrides all else!
- # So don't call this twice per format-job!
-
- return $self->new_tempfile(@_) unless defined $outspec and length $outspec;
-
- # Otherwise open a write-handle on opt_d!f
-
- my $fh;
- # If we are running before perl5.6.0, we can't autovivify
- if ($] < 5.006) {
- require Symbol;
- $fh = Symbol::gensym();
- }
- DEBUG > 3 and print "About to try writing to specified output file $outspec\n";
- die "Can't write-open $outspec: $!"
- unless open($fh, ">", $outspec); # XXX 5.6ism
-
- DEBUG > 3 and print "Successfully opened $outspec\n";
- binmode($fh) if $self->{'output_is_binary'};
- return($fh, $outspec);
-}
-
-#..........................................................................
-
-sub useful_filename_bit {
- # This tries to provide a meaningful bit of text to do with the query,
- # such as can be used in naming the file -- since if we're going to be
- # opening windows on temp files (as a "pager" may well do!) then it's
- # better if the temp file's name (which may well be used as the window
- # title) isn't ALL just random garbage!
- # In other words "perldoc_LWPSimple_2371981429" is a better temp file
- # name than "perldoc_2371981429". So this routine is what tries to
- # provide the "LWPSimple" bit.
- #
- my $self = shift;
- my $pages = $self->{'pages'} || return undef;
- return undef unless @$pages;
-
- my $chunk = $pages->[0];
- return undef unless defined $chunk;
- $chunk =~ s/:://g;
- $chunk =~ s/\.\w+$//g; # strip any extension
- if( $chunk =~ m/([^\#\\:\/\$]+)$/s ) { # get basename, if it's a file
- $chunk = $1;
- } else {
- return undef;
- }
- $chunk =~ s/[^a-zA-Z0-9]+//g; # leave ONLY a-zA-Z0-9 things!
- $chunk = substr($chunk, -10) if length($chunk) > 10;
- return $chunk;
-}
-
-#..........................................................................
-
-sub new_tempfile { # $self->new_tempfile( [$suffix, [$infix] ] )
- my $self = shift;
-
- ++$Temp_Files_Created;
-
- if( IS_MSWin32 ) {
- my @out = $self->MSWin_perldoc_tempfile(@_);
- return @out if @out;
- # otherwise fall thru to the normal stuff below...
- }
-
- require File::Temp;
- return File::Temp::tempfile(UNLINK => 1);
-}
-
-#..........................................................................
-
-sub page { # apply a pager to the output file
- my ($self, $output, $output_to_stdout, @pagers) = @_;
- if ($output_to_stdout) {
- $self->aside("Sending unpaged output to STDOUT.\n");
- open(TMP, "<", $output) or die "Can't open $output: $!"; # XXX 5.6ism
- local $_;
- while (<TMP>) {
- print or die "Can't print to stdout: $!";
- }
- close TMP or die "Can't close while $output: $!";
- $self->unlink_if_temp_file($output);
- } else {
- # On VMS, quoting prevents logical expansion, and temp files with no
- # extension get the wrong default extension (such as .LIS for TYPE)
-
- $output = VMS::Filespec::rmsexpand($output, '.') if IS_VMS;
-
- $output =~ s{/}{\\}g if IS_MSWin32 || IS_Dos;
- # Altho "/" under MSWin is in theory good as a pathsep,
- # many many corners of the OS don't like it. So we
- # have to force it to be "\" to make everyone happy.
-
- foreach my $pager (@pagers) {
- $self->aside("About to try calling $pager $output\n");
- if (IS_VMS) {
- last if system("$pager $output") == 0;
- } else {
- last if system("$pager \"$output\"") == 0;
- }
- }
- }
- return;
-}
-
-#..........................................................................
-
-sub searchfor {
- my($self, $recurse,$s,@dirs) = @_;
- $s =~ s!::!/!g;
- $s = VMS::Filespec::unixify($s) if IS_VMS;
- return $s if -f $s && $self->containspod($s);
- $self->aside( "Looking for $s in @dirs\n" );
- my $ret;
- my $i;
- my $dir;
- $self->{'target'} = (splitdir $s)[-1]; # XXX: why not use File::Basename?
- for ($i=0; $i<@dirs; $i++) {
- $dir = $dirs[$i];
- next unless -d $dir; # some dirs in @INC are optional
- ($dir = VMS::Filespec::unixpath($dir)) =~ s!/\z!! if IS_VMS;
- if ( (! $self->opt_m && ( $ret = $self->check_file($dir,"$s.pod")))
- or ( $ret = $self->check_file($dir,"$s.pm"))
- or ( $ret = $self->check_file($dir,$s))
- or ( IS_VMS and
- $ret = $self->check_file($dir,"$s.com"))
- or ( IS_OS2 and
- $ret = $self->check_file($dir,"$s.cmd"))
- or ( (IS_MSWin32 or IS_Dos or IS_OS2) and
- $ret = $self->check_file($dir,"$s.bat"))
- or ( $ret = $self->check_file("$dir/pod","$s.pod"))
- or ( $ret = $self->check_file("$dir/pod",$s))
- or ( $ret = $self->check_file("$dir/pods","$s.pod"))
- or ( $ret = $self->check_file("$dir/pods",$s))
- ) {
- DEBUG > 1 and print " Found $ret\n";
- return $ret;
- }
-
- if ($recurse) {
- opendir(D,$dir) or die "Can't opendir $dir: $!";
- my @newdirs = map catfile($dir, $_), grep {
- not /^\.\.?\z/s and
- not /^auto\z/s and # save time! don't search auto dirs
- -d catfile($dir, $_)
- } readdir D;
- closedir(D) or die "Can't closedir $dir: $!";
- next unless @newdirs;
- # what a wicked map!
- @newdirs = map((s/\.dir\z//,$_)[1],@newdirs) if IS_VMS;
- $self->aside( "Also looking in @newdirs\n" );
- push(@dirs,@newdirs);
- }
- }
- return ();
-}
-
-#..........................................................................
-{
- my $already_asserted;
- sub assert_closing_stdout {
- my $self = shift;
-
- return if $already_asserted;
-
- eval q~ END { close(STDOUT) || die "Can't close STDOUT: $!" } ~;
- # What for? to let the pager know that nothing more will come?
-
- die $@ if $@;
- $already_asserted = 1;
- return;
- }
-}
-
-#..........................................................................
-
-sub tweak_found_pathnames {
- my($self, $found) = @_;
- if (IS_MSWin32) {
- foreach (@$found) { s,/,\\,g }
- }
- return;
-}
-
-#..........................................................................
-# : : : : : : : : :
-#..........................................................................
-
-sub am_taint_checking {
- my $self = shift;
- die "NO ENVIRONMENT?!?!" unless keys %ENV; # reset iterator along the way
- my($k,$v) = each %ENV;
- return is_tainted($v);
-}
-
-#..........................................................................
-
-sub is_tainted { # just a function
- my $arg = shift;
- my $nada = substr($arg, 0, 0); # zero-length!
- local $@; # preserve the caller's version of $@
- eval { eval "# $nada" };
- return length($@) != 0;
-}
-
-#..........................................................................
-
-sub drop_privs_maybe {
- my $self = shift;
-
- # Attempt to drop privs if we should be tainting and aren't
- if (!(IS_VMS || IS_MSWin32 || IS_Dos
- || IS_OS2
- )
- && ($> == 0 || $< == 0)
- && !$self->am_taint_checking()
- ) {
- my $id = eval { getpwnam("nobody") };
- $id = eval { getpwnam("nouser") } unless defined $id;
- $id = -2 unless defined $id;
- #
- # According to Stevens' APUE and various
- # (BSD, Solaris, HP-UX) man pages, setting
- # the real uid first and effective uid second
- # is the way to go if one wants to drop privileges,
- # because if one changes into an effective uid of
- # non-zero, one cannot change the real uid any more.
- #
- # Actually, it gets even messier. There is
- # a third uid, called the saved uid, and as
- # long as that is zero, one can get back to
- # uid of zero. Setting the real-effective *twice*
- # helps in *most* systems (FreeBSD and Solaris)
- # but apparently in HP-UX even this doesn't help:
- # the saved uid stays zero (apparently the only way
- # in HP-UX to change saved uid is to call setuid()
- # when the effective uid is zero).
- #
- eval {
- $< = $id; # real uid
- $> = $id; # effective uid
- $< = $id; # real uid
- $> = $id; # effective uid
- };
- if( !$@ && $< && $> ) {
- DEBUG and print "OK, I dropped privileges.\n";
- } elsif( $self->opt_U ) {
- DEBUG and print "Couldn't drop privileges, but in -U mode, so feh."
- } else {
- DEBUG and print "Hm, couldn't drop privileges. Ah well.\n";
- # We used to die here; but that seemed pointless.
- }
- }
- return;
-}
-
-#..........................................................................
-
-1;
-
-__END__
-
-# See "perldoc perldoc" for basic details.
-#
-# Perldoc -- look up a piece of documentation in .pod format that
-# is embedded in the perl installation tree.
-#
-#~~~~~~
-#
-# See ChangeLog in CPAN dist for Pod::Perldoc for later notes.
-#
-# Version 3.01: Sun Nov 10 21:38:09 MST 2002
-# Sean M. Burke <sburke@cpan.org>
-# Massive refactoring and code-tidying.
-# Now it's a module(-family)!
-# Formatter-specific stuff pulled out into Pod::Perldoc::To(Whatever).pm
-# Added -T, -d, -o, -M, -w.
-# Added some improved MSWin funk.
-#
-#~~~~~~
-#
-# Version 2.05: Sat Oct 12 16:09:00 CEST 2002
-# Hugo van der Sanden <hv@crypt.org>
-# Made -U the default, based on patch from Simon Cozens
-# Version 2.04: Sun Aug 18 13:27:12 BST 2002
-# Randy W. Sims <RandyS@ThePierianSpring.org>
-# allow -n to enable nroff under Win32
-# Version 2.03: Sun Apr 23 16:56:34 BST 2000
-# Hugo van der Sanden <hv@crypt.org>
-# don't die when 'use blib' fails
-# Version 2.02: Mon Mar 13 18:03:04 MST 2000
-# Tom Christiansen <tchrist@perl.com>
-# Added -U insecurity option
-# Version 2.01: Sat Mar 11 15:22:33 MST 2000
-# Tom Christiansen <tchrist@perl.com>, querulously.
-# Security and correctness patches.
-# What a twisted bit of distasteful spaghetti code.
-# Version 2.0: ????
-#
-#~~~~~~
-#
-# Version 1.15: Tue Aug 24 01:50:20 EST 1999
-# Charles Wilson <cwilson@ece.gatech.edu>
-# changed /pod/ directory to /pods/ for cygwin
-# to support cygwin/win32
-# Version 1.14: Wed Jul 15 01:50:20 EST 1998
-# Robin Barker <rmb1@cise.npl.co.uk>
-# -strict, -w cleanups
-# Version 1.13: Fri Feb 27 16:20:50 EST 1997
-# Gurusamy Sarathy <gsar@activestate.com>
-# -doc tweaks for -F and -X options
-# Version 1.12: Sat Apr 12 22:41:09 EST 1997
-# Gurusamy Sarathy <gsar@activestate.com>
-# -various fixes for win32
-# Version 1.11: Tue Dec 26 09:54:33 EST 1995
-# Kenneth Albanowski <kjahds@kjahds.com>
-# -added Charles Bailey's further VMS patches, and -u switch
-# -added -t switch, with pod2text support
-#
-# Version 1.10: Thu Nov 9 07:23:47 EST 1995
-# Kenneth Albanowski <kjahds@kjahds.com>
-# -added VMS support
-# -added better error recognition (on no found pages, just exit. On
-# missing nroff/pod2man, just display raw pod.)
-# -added recursive/case-insensitive matching (thanks, Andreas). This
-# slows things down a bit, unfortunately. Give a precise name, and
-# it'll run faster.
-#
-# Version 1.01: Tue May 30 14:47:34 EDT 1995
-# Andy Dougherty <doughera@lafcol.lafayette.edu>
-# -added pod documentation.
-# -added PATH searching.
-# -added searching pod/ subdirectory (mainly to pick up perlfunc.pod
-# and friends.
-#
-#~~~~~~~
-#
-# TODO:
-#
-# Cache the directories read during sloppy match
-# (To disk, or just in-memory?)
-#
-# Backport this to perl 5.005?
-#
-# Implement at least part of the "perlman" interface described
-# in Programming Perl 3e?
diff --git a/Master/tlpkg/tlperl/lib/Pod/Perldoc/BaseTo.pm b/Master/tlpkg/tlperl/lib/Pod/Perldoc/BaseTo.pm
deleted file mode 100644
index 6ca2a8c7e54..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Perldoc/BaseTo.pm
+++ /dev/null
@@ -1,28 +0,0 @@
-
-require 5;
-package Pod::Perldoc::BaseTo;
-use strict;
-use warnings;
-
-sub is_pageable { '' }
-sub write_with_binmode { 1 }
-
-sub output_extension { 'txt' } # override in subclass!
-
-# sub new { my $self = shift; ... }
-# sub parse_from_file( my($class, $in, $out) = ...; ... }
-
-#sub new { return bless {}, ref($_[0]) || $_[0] }
-
-sub _perldoc_elem {
- my($self, $name) = splice @_,0,2;
- if(@_) {
- $self->{$name} = $_[0];
- } else {
- $self->{$name};
- }
-}
-
-
-1;
-
diff --git a/Master/tlpkg/tlperl/lib/Pod/Perldoc/GetOptsOO.pm b/Master/tlpkg/tlperl/lib/Pod/Perldoc/GetOptsOO.pm
deleted file mode 100644
index b29aeb10906..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Perldoc/GetOptsOO.pm
+++ /dev/null
@@ -1,106 +0,0 @@
-
-require 5;
-package Pod::Perldoc::GetOptsOO;
-use strict;
-
-# Rather like Getopt::Std's getopts
-# Call Pod::Perldoc::GetOptsOO::getopts($object, \@ARGV, $truth)
-# Given -n, if there's a opt_n_with, it'll call $object->opt_n_with( ARGUMENT )
-# (e.g., "-n foo" => $object->opt_n_with('foo'). Ditto "-nfoo")
-# Otherwise (given -n) if there's an opt_n, we'll call it $object->opt_n($truth)
-# (Truth defaults to 1)
-# Otherwise we try calling $object->handle_unknown_option('n')
-# (and we increment the error count by the return value of it)
-# If there's no handle_unknown_option, then we just warn, and then increment
-# the error counter
-#
-# The return value of Pod::Perldoc::GetOptsOO::getopts is true if no errors,
-# otherwise it's false.
-#
-## sburke@cpan.org 2002-10-31
-
-BEGIN { # Make a DEBUG constant ASAP
- *DEBUG = defined( &Pod::Perldoc::DEBUG )
- ? \&Pod::Perldoc::DEBUG
- : sub(){10};
-}
-
-
-sub getopts {
- my($target, $args, $truth) = @_;
-
- $args ||= \@ARGV;
-
- $target->aside(
- "Starting switch processing. Scanning arguments [@$args]\n"
- ) if $target->can('aside');
-
- return unless @$args;
-
- $truth = 1 unless @_ > 2;
-
- DEBUG > 3 and print " Truth is $truth\n";
-
-
- my $error_count = 0;
-
- while( @$args and ($_ = $args->[0]) =~ m/^-(.)(.*)/s ) {
- my($first,$rest) = ($1,$2);
- if ($_ eq '--') { # early exit if "--"
- shift @$args;
- last;
- }
- my $method = "opt_${first}_with";
- if( $target->can($method) ) { # it's argumental
- if($rest eq '') { # like -f bar
- shift @$args;
- warn "Option $first needs a following argument!\n" unless @$args;
- $rest = shift @$args;
- } else { # like -fbar (== -f bar)
- shift @$args;
- }
-
- DEBUG > 3 and print " $method => $rest\n";
- $target->$method( $rest );
-
- # Otherwise, it's not argumental...
- } else {
-
- if( $target->can( $method = "opt_$first" ) ) {
- DEBUG > 3 and print " $method is true ($truth)\n";
- $target->$method( $truth );
-
- # Otherwise it's an unknown option...
-
- } elsif( $target->can('handle_unknown_option') ) {
- DEBUG > 3
- and print " calling handle_unknown_option('$first')\n";
-
- $error_count += (
- $target->handle_unknown_option( $first ) || 0
- );
-
- } else {
- ++$error_count;
- warn "Unknown option: $first\n";
- }
-
- if($rest eq '') { # like -f
- shift @$args
- } else { # like -fbar (== -f -bar )
- DEBUG > 2 and print " Setting args->[0] to \"-$rest\"\n";
- $args->[0] = "-$rest";
- }
- }
- }
-
-
- $target->aside(
- "Ending switch processing. Args are [@$args] with $error_count errors.\n"
- ) if $target->can('aside');
-
- $error_count == 0;
-}
-
-1;
-
diff --git a/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToChecker.pm b/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToChecker.pm
deleted file mode 100644
index c60290d6502..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToChecker.pm
+++ /dev/null
@@ -1,72 +0,0 @@
-
-require 5;
-package Pod::Perldoc::ToChecker;
-use strict;
-use warnings;
-use vars qw(@ISA);
-
-# Pick our superclass...
-#
-eval 'require Pod::Simple::Checker';
-if($@) {
- require Pod::Checker;
- @ISA = ('Pod::Checker');
-} else {
- @ISA = ('Pod::Simple::Checker');
-}
-
-sub is_pageable { 1 }
-sub write_with_binmode { 0 }
-sub output_extension { 'txt' }
-
-sub if_zero_length {
- my( $self, $file, $tmp, $tmpfd ) = @_;
- print "No Pod errors in $file\n";
-}
-
-
-1;
-
-__END__
-
-=head1 NAME
-
-Pod::Perldoc::ToChecker - let Perldoc check Pod for errors
-
-=head1 SYNOPSIS
-
- % perldoc -o checker SomeFile.pod
- No Pod errors in SomeFile.pod
- (or an error report)
-
-=head1 DESCRIPTION
-
-This is a "plug-in" class that allows Perldoc to use
-Pod::Simple::Checker as a "formatter" class (or if that is
-not available, then Pod::Checker), to check for errors in a given
-Pod file.
-
-This is actually a Pod::Simple::Checker (or Pod::Checker) subclass, and
-inherits all its options.
-
-=head1 SEE ALSO
-
-L<Pod::Simple::Checker>, L<Pod::Simple>, L<Pod::Checker>, L<Pod::Perldoc>
-
-=head1 COPYRIGHT AND DISCLAIMERS
-
-Copyright (c) 2002 Sean M. Burke. All rights reserved.
-
-This library is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-
-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.
-
-=head1 AUTHOR
-
-Sean M. Burke C<sburke@cpan.org>
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToMan.pm b/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToMan.pm
deleted file mode 100644
index 43191222376..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToMan.pm
+++ /dev/null
@@ -1,187 +0,0 @@
-
-require 5;
-package Pod::Perldoc::ToMan;
-use strict;
-use warnings;
-
-# This class is unlike ToText.pm et al, because we're NOT paging thru
-# the output in our particular format -- we make the output and
-# then we run nroff (or whatever) on it, and then page thru the
-# (plaintext) output of THAT!
-
-use base qw(Pod::Perldoc::BaseTo);
-sub is_pageable { 1 }
-sub write_with_binmode { 0 }
-sub output_extension { 'txt' }
-
-sub __filter_nroff { shift->_perldoc_elem('__filter_nroff' , @_) }
-sub __nroffer { shift->_perldoc_elem('__nroffer' , @_) }
-sub __bindir { shift->_perldoc_elem('__bindir' , @_) }
-sub __pod2man { shift->_perldoc_elem('__pod2man' , @_) }
-sub __output_file { shift->_perldoc_elem('__output_file' , @_) }
-
-sub center { shift->_perldoc_elem('center' , @_) }
-sub date { shift->_perldoc_elem('date' , @_) }
-sub fixed { shift->_perldoc_elem('fixed' , @_) }
-sub fixedbold { shift->_perldoc_elem('fixedbold' , @_) }
-sub fixeditalic { shift->_perldoc_elem('fixeditalic' , @_) }
-sub fixedbolditalic { shift->_perldoc_elem('fixedbolditalic', @_) }
-sub quotes { shift->_perldoc_elem('quotes' , @_) }
-sub release { shift->_perldoc_elem('release' , @_) }
-sub section { shift->_perldoc_elem('section' , @_) }
-
-sub new { return bless {}, ref($_[0]) || $_[0] }
-
-use File::Spec::Functions qw(catfile);
-
-sub parse_from_file {
- my $self = shift;
- my($file, $outfh) = @_;
-
- my $render = $self->{'__nroffer'} || die "no nroffer set!?";
-
- # turn the switches into CLIs
- my $switches = join ' ',
- map qq{"--$_=$self->{$_}"},
- grep !m/^_/s,
- keys %$self
- ;
-
- my $pod2man =
- catfile(
- ($self->{'__bindir'} || die "no bindir set?!" ),
- ($self->{'__pod2man'} || die "no pod2man set?!" ),
- )
- ;
- unless(-e $pod2man) {
- # This is rarely needed, I think.
- $pod2man = $self->{'__pod2man'} || die "no pod2man set?!";
- die "Can't find a pod2man?! (". $self->{'__pod2man'} .")\nAborting"
- unless -e $pod2man;
- }
-
- my $command = "$pod2man $switches --lax $file | $render -man";
- # no temp file, just a pipe!
-
- # Thanks to Brendan O'Dea for contributing the following block
- if(Pod::Perldoc::IS_Linux and -t STDOUT
- and my ($cols) = `stty -a` =~ m/\bcolumns\s+(\d+)/
- ) {
- my $c = $cols * 39 / 40;
- $cols = $c > $cols - 2 ? $c : $cols -2;
- $command .= ' -rLL=' . (int $c) . 'n' if $cols > 80;
- }
-
- if(Pod::Perldoc::IS_Cygwin) {
- $command .= ' -c';
- }
-
- # I hear persistent reports that adding a -c switch to $render
- # solves many people's problems. But I also hear that some mans
- # don't have a -c switch, so that unconditionally adding it here
- # would presumably be a Bad Thing -- sburke@cpan.org
-
- $command .= " | col -x" if Pod::Perldoc::IS_HPUX;
-
- defined(&Pod::Perldoc::DEBUG)
- and Pod::Perldoc::DEBUG()
- and print "About to run $command\n";
- ;
-
- my $rslt = `$command`;
-
- my $err;
-
- if( $self->{'__filter_nroff'} ) {
- defined(&Pod::Perldoc::DEBUG)
- and &Pod::Perldoc::DEBUG()
- and print "filter_nroff is set, so filtering...\n";
- $rslt = $self->___Do_filter_nroff($rslt);
- } else {
- defined(&Pod::Perldoc::DEBUG)
- and Pod::Perldoc::DEBUG()
- and print "filter_nroff isn't set, so not filtering.\n";
- }
-
- if (($err = $?)) {
- defined(&Pod::Perldoc::DEBUG)
- and Pod::Perldoc::DEBUG()
- and print "Nonzero exit ($?) while running $command.\n",
- "Falling back to Pod::Perldoc::ToPod\n ",
- ;
- # A desperate fallthru:
- require Pod::Perldoc::ToPod;
- return Pod::Perldoc::ToPod->new->parse_from_file(@_);
-
- } else {
- print $outfh $rslt
- or die "Can't print to $$self{__output_file}: $!";
- }
-
- return;
-}
-
-
-sub ___Do_filter_nroff {
- my $self = shift;
- my @data = split /\n{2,}/, shift;
-
- shift @data while @data and $data[0] !~ /\S/; # Go to header
- shift @data if @data and $data[0] =~ /Contributed\s+Perl/; # Skip header
- pop @data if @data and $data[-1] =~ /^\w/; # Skip footer, like
- # 28/Jan/99 perl 5.005, patch 53 1
- join "\n\n", @data;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Pod::Perldoc::ToMan - let Perldoc render Pod as man pages
-
-=head1 SYNOPSIS
-
- perldoc -o man Some::Modulename
-
-=head1 DESCRIPTION
-
-This is a "plug-in" class that allows Perldoc to use
-Pod::Man and C<nroff> for reading Pod pages.
-
-The following options are supported: center, date, fixed, fixedbold,
-fixeditalic, fixedbolditalic, quotes, release, section
-
-(Those options are explained in L<Pod::Man>.)
-
-For example:
-
- perldoc -o man -w center:Pod Some::Modulename
-
-=head1 CAVEAT
-
-This module may change to use a different pod-to-nroff formatter class
-in the future, and this may change what options are supported.
-
-=head1 SEE ALSO
-
-L<Pod::Man>, L<Pod::Perldoc>, L<Pod::Perldoc::ToNroff>
-
-=head1 COPYRIGHT AND DISCLAIMERS
-
-Copyright (c) 2002,3,4 Sean M. Burke. All rights reserved.
-
-This library is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-
-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.
-
-=head1 AUTHOR
-
-Sean M. Burke C<sburke@cpan.org>
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToNroff.pm b/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToNroff.pm
deleted file mode 100644
index d0568605068..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToNroff.pm
+++ /dev/null
@@ -1,100 +0,0 @@
-
-require 5;
-package Pod::Perldoc::ToNroff;
-use strict;
-use warnings;
-
-# This is unlike ToMan.pm in that it emits the raw nroff source!
-
-use base qw(Pod::Perldoc::BaseTo);
-
-sub is_pageable { 1 } # well, if you ask for it...
-sub write_with_binmode { 0 }
-sub output_extension { 'man' }
-
-use Pod::Man ();
-
-sub center { shift->_perldoc_elem('center' , @_) }
-sub date { shift->_perldoc_elem('date' , @_) }
-sub fixed { shift->_perldoc_elem('fixed' , @_) }
-sub fixedbold { shift->_perldoc_elem('fixedbold' , @_) }
-sub fixeditalic { shift->_perldoc_elem('fixeditalic' , @_) }
-sub fixedbolditalic { shift->_perldoc_elem('fixedbolditalic', @_) }
-sub quotes { shift->_perldoc_elem('quotes' , @_) }
-sub release { shift->_perldoc_elem('release' , @_) }
-sub section { shift->_perldoc_elem('section' , @_) }
-
-sub new { return bless {}, ref($_[0]) || $_[0] }
-
-sub parse_from_file {
- my $self = shift;
- my $file = $_[0];
-
- my @options =
- map {; $_, $self->{$_} }
- grep !m/^_/s,
- keys %$self
- ;
-
- defined(&Pod::Perldoc::DEBUG)
- and Pod::Perldoc::DEBUG()
- and print "About to call new Pod::Man ",
- $Pod::Man::VERSION ? "(v$Pod::Man::VERSION) " : '',
- "with options: ",
- @options ? "[@options]" : "(nil)", "\n";
- ;
-
- Pod::Man->new(@options)->parse_from_file(@_);
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Pod::Perldoc::ToNroff - let Perldoc convert Pod to nroff
-
-=head1 SYNOPSIS
-
- perldoc -o nroff -d something.3 Some::Modulename
-
-=head1 DESCRIPTION
-
-This is a "plug-in" class that allows Perldoc to use
-Pod::Man as a formatter class.
-
-The following options are supported: center, date, fixed, fixedbold,
-fixeditalic, fixedbolditalic, quotes, release, section
-
-Those options are explained in L<Pod::Man>.
-
-For example:
-
- perldoc -o nroff -w center:Pod -d something.3 Some::Modulename
-
-=head1 CAVEAT
-
-This module may change to use a different pod-to-nroff formatter class
-in the future, and this may change what options are supported.
-
-=head1 SEE ALSO
-
-L<Pod::Man>, L<Pod::Perldoc>, L<Pod::Perldoc::ToMan>
-
-=head1 COPYRIGHT AND DISCLAIMERS
-
-Copyright (c) 2002 Sean M. Burke. All rights reserved.
-
-This library is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-
-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.
-
-=head1 AUTHOR
-
-Sean M. Burke C<sburke@cpan.org>
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToPod.pm b/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToPod.pm
deleted file mode 100644
index bccbfcadbd6..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToPod.pm
+++ /dev/null
@@ -1,90 +0,0 @@
-
-# This class is just a hack to act as a "formatter" for
-# actually unformatted Pod.
-#
-# Note that this isn't the same as just passing thru whatever
-# we're given -- we pass thru only the pod source, and suppress
-# the Perl code (or whatever non-pod stuff is in the source file).
-
-
-require 5;
-package Pod::Perldoc::ToPod;
-use strict;
-use warnings;
-
-use base qw(Pod::Perldoc::BaseTo);
-sub is_pageable { 1 }
-sub write_with_binmode { 0 }
-sub output_extension { 'pod' }
-
-sub new { return bless {}, ref($_[0]) || $_[0] }
-
-sub parse_from_file {
- my( $self, $in, $outfh ) = @_;
-
- open(IN, "<", $in) or die "Can't read-open $in: $!\nAborting";
-
- my $cut_mode = 1;
-
- # A hack for finding things between =foo and =cut, inclusive
- local $_;
- while (<IN>) {
- if( m/^=(\w+)/s ) {
- if($cut_mode = ($1 eq 'cut')) {
- print $outfh "\n=cut\n\n";
- # Pass thru the =cut line with some harmless
- # (and occasionally helpful) padding
- }
- }
- next if $cut_mode;
- print $outfh $_ or die "Can't print to $outfh: $!";
- }
-
- close IN or die "Can't close $in: $!";
- return;
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Pod::Perldoc::ToPod - let Perldoc render Pod as ... Pod!
-
-=head1 SYNOPSIS
-
- perldoc -opod Some::Modulename
-
-(That's currently the same as the following:)
-
- perldoc -u Some::Modulename
-
-=head1 DESCRIPTION
-
-This is a "plug-in" class that allows Perldoc to display Pod source as
-itself! Pretty Zen, huh?
-
-Currently this class works by just filtering out the non-Pod stuff from
-a given input file.
-
-=head1 SEE ALSO
-
-L<Pod::Perldoc>
-
-=head1 COPYRIGHT AND DISCLAIMERS
-
-Copyright (c) 2002 Sean M. Burke. All rights reserved.
-
-This library is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-
-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.
-
-=head1 AUTHOR
-
-Sean M. Burke C<sburke@cpan.org>
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToRtf.pm b/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToRtf.pm
deleted file mode 100644
index 25e609e313a..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToRtf.pm
+++ /dev/null
@@ -1,85 +0,0 @@
-
-require 5;
-package Pod::Perldoc::ToRtf;
-use strict;
-use warnings;
-use vars qw($VERSION);
-
-use base qw( Pod::Simple::RTF );
-
-$VERSION # so that ->VERSION is happy
-# stop CPAN from seeing this
- =
-$Pod::Simple::RTF::VERSION;
-
-
-sub is_pageable { 0 }
-sub write_with_binmode { 0 }
-sub output_extension { 'rtf' }
-
-sub page_for_perldoc {
- my($self, $tempfile, $perldoc) = @_;
- return unless $perldoc->IS_MSWin32;
-
- my $rtf_pager = $ENV{'RTFREADER'} || 'write.exe';
-
- $perldoc->aside( "About to launch <\"$rtf_pager\" \"$tempfile\">\n" );
-
- return 1 if system( qq{"$rtf_pager"}, qq{"$tempfile"} ) == 0;
- return 0;
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Pod::Perldoc::ToRtf - let Perldoc render Pod as RTF
-
-=head1 SYNOPSIS
-
- perldoc -o rtf Some::Modulename
-
-=head1 DESCRIPTION
-
-This is a "plug-in" class that allows Perldoc to use
-Pod::Simple::RTF as a formatter class.
-
-This is actually a Pod::Simple::RTF subclass, and inherits
-all its options.
-
-You have to have Pod::Simple::RTF installed (from the Pod::Simple dist),
-or this module won't work.
-
-If Perldoc is running under MSWin and uses this class as a formatter,
-the output will be opened with F<write.exe> or whatever program is
-specified in the environment variable C<RTFREADER>. For example, to
-specify that RTF files should be opened the same as they are when you
-double-click them, you would do C<set RTFREADER=start.exe> in your
-F<autoexec.bat>.
-
-Handy tip: put C<set PERLDOC=-ortf> in your F<autoexec.bat>
-and that will set this class as the default formatter to run when
-you do C<perldoc whatever>.
-
-=head1 SEE ALSO
-
-L<Pod::Simple::RTF>, L<Pod::Simple>, L<Pod::Perldoc>
-
-=head1 COPYRIGHT AND DISCLAIMERS
-
-Copyright (c) 2002 Sean M. Burke. All rights reserved.
-
-This library is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-
-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.
-
-=head1 AUTHOR
-
-Sean M. Burke C<sburke@cpan.org>
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToText.pm b/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToText.pm
deleted file mode 100644
index 2eb9e0644ac..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToText.pm
+++ /dev/null
@@ -1,91 +0,0 @@
-
-require 5;
-package Pod::Perldoc::ToText;
-use strict;
-use warnings;
-
-use base qw(Pod::Perldoc::BaseTo);
-
-sub is_pageable { 1 }
-sub write_with_binmode { 0 }
-sub output_extension { 'txt' }
-
-use Pod::Text ();
-
-sub alt { shift->_perldoc_elem('alt' , @_) }
-sub indent { shift->_perldoc_elem('indent' , @_) }
-sub loose { shift->_perldoc_elem('loose' , @_) }
-sub quotes { shift->_perldoc_elem('quotes' , @_) }
-sub sentence { shift->_perldoc_elem('sentence', @_) }
-sub width { shift->_perldoc_elem('width' , @_) }
-
-sub new { return bless {}, ref($_[0]) || $_[0] }
-
-sub parse_from_file {
- my $self = shift;
-
- my @options =
- map {; $_, $self->{$_} }
- grep !m/^_/s,
- keys %$self
- ;
-
- defined(&Pod::Perldoc::DEBUG)
- and Pod::Perldoc::DEBUG()
- and print "About to call new Pod::Text ",
- $Pod::Text::VERSION ? "(v$Pod::Text::VERSION) " : '',
- "with options: ",
- @options ? "[@options]" : "(nil)", "\n";
- ;
-
- Pod::Text->new(@options)->parse_from_file(@_);
-}
-
-1;
-
-=head1 NAME
-
-Pod::Perldoc::ToText - let Perldoc render Pod as plaintext
-
-=head1 SYNOPSIS
-
- perldoc -o text Some::Modulename
-
-=head1 DESCRIPTION
-
-This is a "plug-in" class that allows Perldoc to use
-Pod::Text as a formatter class.
-
-It supports the following options, which are explained in
-L<Pod::Text>: alt, indent, loose, quotes, sentence, width
-
-For example:
-
- perldoc -o text -w indent:5 Some::Modulename
-
-=head1 CAVEAT
-
-This module may change to use a different text formatter class in the
-future, and this may change what options are supported.
-
-=head1 SEE ALSO
-
-L<Pod::Text>, L<Pod::Perldoc>
-
-=head1 COPYRIGHT AND DISCLAIMERS
-
-Copyright (c) 2002 Sean M. Burke. All rights reserved.
-
-This library is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-
-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.
-
-=head1 AUTHOR
-
-Sean M. Burke C<sburke@cpan.org>
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToTk.pm b/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToTk.pm
deleted file mode 100644
index 39459629503..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToTk.pm
+++ /dev/null
@@ -1,129 +0,0 @@
-
-require 5;
-package Pod::Perldoc::ToTk;
-use strict;
-use warnings;
-
-use base qw(Pod::Perldoc::BaseTo);
-
-sub is_pageable { 1 }
-sub write_with_binmode { 0 }
-sub output_extension { 'txt' } # doesn't matter
-sub if_zero_length { } # because it will be 0-length!
-sub new { return bless {}, ref($_[0]) || $_[0] }
-
-# TODO: document these and their meanings...
-sub tree { shift->_perldoc_elem('tree' , @_) }
-sub tk_opt { shift->_perldoc_elem('tk_opt' , @_) }
-sub forky { shift->_perldoc_elem('forky' , @_) }
-
-use Pod::Perldoc ();
-use File::Spec::Functions qw(catfile);
-
-use Tk;
-die join '', __PACKAGE__, " doesn't work nice with Tk.pm verison $Tk::VERSION"
- if $Tk::VERSION eq '800.003';
-
-BEGIN { eval { require Tk::FcyEntry; }; };
-use Tk::Pod;
-
-# The following was adapted from "tkpod" in the Tk-Pod dist.
-
-sub parse_from_file {
-
- my($self, $Input_File) = @_;
- if($self->{'forky'}) {
- return if fork; # i.e., parent process returns
- }
-
- $Input_File =~ s{\\}{/}g
- if Pod::Perldoc::IS_MSWin32 or Pod::Perldoc::IS_Dos
- # and maybe OS/2
- ;
-
- my($tk_opt, $tree);
- $tree = $self->{'tree' };
- $tk_opt = $self->{'tk_opt'};
-
- #require Tk::ErrorDialog;
-
- # Add 'Tk' subdirectories to search path so, e.g.,
- # 'Scrolled' will find doc in 'Tk/Scrolled'
-
- if( $tk_opt ) {
- push @INC, grep -d $_, map catfile($_,'Tk'), @INC;
- }
-
- my $mw = MainWindow->new();
- #eval 'use blib "/home/e/eserte/src/perl/Tk-App";require Tk::App::Debug';
- $mw->withdraw;
-
- # CDE use Font Settings if available
- my $ufont = $mw->optionGet('userFont','UserFont'); # fixed width
- my $sfont = $mw->optionGet('systemFont','SystemFont'); # proportional
- if (defined($ufont) and defined($sfont)) {
- foreach ($ufont, $sfont) { s/:$//; };
- $mw->optionAdd('*Font', $sfont);
- $mw->optionAdd('*Entry.Font', $ufont);
- $mw->optionAdd('*Text.Font', $ufont);
- }
-
- $mw->optionAdd('*Menu.tearOff', $Tk::platform ne 'MSWin32' ? 1 : 0);
-
- $mw->Pod(
- '-file' => $Input_File,
- (($Tk::Pod::VERSION >= 4) ? ('-tree' => $tree) : ())
- )->focusNext;
-
- # xxx dirty but it works. A simple $mw->destroy if $mw->children
- # does not work because Tk::ErrorDialogs could be created.
- # (they are withdrawn after Ok instead of destory'ed I guess)
-
- if ($mw->children) {
- $mw->repeat(1000, sub {
- # ErrorDialog is withdrawn not deleted :-(
- foreach ($mw->children) {
- return if "$_" =~ /^Tk::Pod/ # ->isa('Tk::Pod')
- }
- $mw->destroy;
- });
- } else {
- $mw->destroy;
- }
- #$mw->WidgetDump;
- MainLoop();
-
- exit if $self->{'forky'}; # we were the child! so exit now!
- return;
-}
-
-1;
-__END__
-
-
-=head1 NAME
-
-Pod::Perldoc::ToTk - let Perldoc use Tk::Pod to render Pod
-
-=head1 SYNOPSIS
-
- perldoc -o tk Some::Modulename &
-
-=head1 DESCRIPTION
-
-This is a "plug-in" class that allows Perldoc to use
-Tk::Pod as a formatter class.
-
-You have to have installed Tk::Pod first, or this class won't load.
-
-=head1 SEE ALSO
-
-L<Tk::Pod>, L<Pod::Perldoc>
-
-=head1 AUTHOR
-
-Sean M. Burke C<sburke@cpan.org>, with significant portions copied from
-F<tkpod> in the Tk::Pod dist, by Nick Ing-Simmons, Slaven Rezic, et al.
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToXml.pm b/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToXml.pm
deleted file mode 100644
index dd0d15cc10b..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToXml.pm
+++ /dev/null
@@ -1,63 +0,0 @@
-
-require 5;
-package Pod::Perldoc::ToXml;
-use strict;
-use warnings;
-use vars qw($VERSION);
-
-use base qw( Pod::Simple::XMLOutStream );
-
-$VERSION # so that ->VERSION is happy
-# stop CPAN from seeing this
- =
-$Pod::Simple::XMLOutStream::VERSION;
-
-
-sub is_pageable { 0 }
-sub write_with_binmode { 0 }
-sub output_extension { 'xml' }
-
-1;
-__END__
-
-=head1 NAME
-
-Pod::Perldoc::ToXml - let Perldoc render Pod as XML
-
-=head1 SYNOPSIS
-
- perldoc -o xml -d out.xml Some::Modulename
-
-=head1 DESCRIPTION
-
-This is a "plug-in" class that allows Perldoc to use
-Pod::Simple::XMLOutStream as a formatter class.
-
-This is actually a Pod::Simple::XMLOutStream subclass, and inherits
-all its options.
-
-You have to have installed Pod::Simple::XMLOutStream (from the Pod::Simple
-dist), or this class won't work.
-
-
-=head1 SEE ALSO
-
-L<Pod::Simple::XMLOutStream>, L<Pod::Simple>, L<Pod::Perldoc>
-
-=head1 COPYRIGHT AND DISCLAIMERS
-
-Copyright (c) 2002 Sean M. Burke. All rights reserved.
-
-This library is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-
-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.
-
-=head1 AUTHOR
-
-Sean M. Burke C<sburke@cpan.org>
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Pod/PlainText.pm b/Master/tlpkg/tlperl/lib/Pod/PlainText.pm
deleted file mode 100644
index 3f5ce90d2ba..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/PlainText.pm
+++ /dev/null
@@ -1,705 +0,0 @@
-# Pod::PlainText -- Convert POD data to formatted ASCII text.
-# $Id: Text.pm,v 2.1 1999/09/20 11:53:33 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 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
-############################################################################
-
-package Pod::PlainText;
-
-require 5.005;
-
-use Carp qw(carp croak);
-use Pod::Select ();
-
-use strict;
-use vars qw(@ISA %ESCAPES $VERSION);
-
-# We inherit from Pod::Select instead of Pod::Parser so that we can be used
-# by Pod::Usage.
-@ISA = qw(Pod::Select);
-
-$VERSION = '2.02';
-
-
-############################################################################
-# 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. :)
-%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)
-);
-
-
-############################################################################
-# Initialization
-############################################################################
-
-# Initialize the object. Must be sure to call our parent initializer.
-sub initialize {
- my $self = shift;
-
- $$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};
-
- $$self{INDENTS} = []; # Stack of indentations.
- $$self{MARGIN} = $$self{indent}; # Current left margin in spaces.
-
- $self->SUPER::initialize;
-}
-
-
-############################################################################
-# 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 (@_);
-}
-
-# 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 ($_);
-}
-
-# 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;
-
- # 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"));
- }
-}
-
-# 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');
-
- # Expand escapes into the actual character now, carping if invalid.
- if ($command eq 'E') {
- return $ESCAPES{$_} if defined $ESCAPES{$_};
- carp "Unknown escape: E<$_>";
- return "E<$_>";
- }
-
- # For all the other sequences, empty content produces no output.
- return if $_ eq '';
-
- # 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 $_;
- }
-
- # 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<$_>" }
-}
-
-# 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;
- $_;
-}
-
-
-############################################################################
-# Command paragraphs
-############################################################################
-
-# All command paragraphs take the paragraph and the line number.
-
-# 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");
- }
-}
-
-# 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");
- }
-}
-
-# Start a list.
-sub cmd_over {
- my $self = shift;
- local $_ = shift;
- unless (/^[-+]?\d+\s+$/) { $_ = $$self{indent} }
- push (@{ $$self{INDENTS} }, $$self{MARGIN});
- $$self{MARGIN} += ($_ + 0);
-}
-
-# 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};
- }
-}
-
-# An individual list item.
-sub cmd_item {
- my $self = shift;
- if (defined $$self{ITEM}) { $self->item }
- local $_ = shift;
- s/\s+$//;
- $$self{ITEM} = $self->interpolate ($_);
-}
-
-# 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;
- }
-}
-
-# 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);
-}
-
-
-############################################################################
-# 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;
-
- # 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 (/^(?:https?|ftp|news):/) {
- # a URL
- return $_;
- } elsif (/^"\s*(.*?)\s*"$/) {
- $section = '"' . $1 . '"';
- } elsif (m/^[-:.\w]+(?:\(\S+\))?$/) {
- ($manpage, $section) = ($_, '');
- } elsif (m%/%) {
- ($manpage, $section) = split (/\s*\/\s*/, $_, 2);
- }
-
- my $text = '';
- # Now build the actual output 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 {
- $section =~ s/^\"\s*//;
- $section =~ s/\s*\"$//;
- $text .= 'the section on "' . $section . '"';
- $text .= " in the $manpage manpage" if length $manpage;
- }
- $text;
-}
-
-
-############################################################################
-# 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 {
- $_ = $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 ($_);
- }
-}
-
-
-############################################################################
-# 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 $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;
- }
- }
- $output .= $spaces . $_;
- $output =~ s/\s+$/\n\n/;
- $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;
-
- # 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/\s+/ /g;
- }
- $self->wrap ($_);
-}
-
-# Output text to the output device.
-sub output { $_[1] =~ tr/\01/ /; print { $_[0]->output_handle } $_[1] }
-
-
-############################################################################
-# Backwards compatibility
-############################################################################
-
-# 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;
- }
- }
-
- # Now that we know what arguments we're using, create the parser.
- my $parser = Pod::PlainText->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 (@_);
- }
-}
-
-
-############################################################################
-# Module return value and documentation
-############################################################################
-
-1;
-__END__
-
-=head1 NAME
-
-Pod::PlainText - Convert POD data to formatted ASCII text
-
-=head1 SYNOPSIS
-
- use Pod::PlainText;
- my $parser = Pod::PlainText->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::PlainText 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::PlainText supports the same methods and
-interfaces. See L<Pod::Parser> for all the details; briefly, one creates a
-new parser with C<Pod::PlainText-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::PlainText 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::PlainText; you should never see it.
-
-=item Can't open %s for reading: %s
-
-(F) Pod::PlainText 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::PlainText 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::PlainText didn't know about.
-
-=item Unmatched =back
-
-(W) Pod::PlainText 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
-
-Please report bugs using L<http://rt.cpan.org>.
-
-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/Master/tlpkg/tlperl/lib/Pod/Plainer.pm b/Master/tlpkg/tlperl/lib/Pod/Plainer.pm
deleted file mode 100644
index 373e8d090af..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Plainer.pm
+++ /dev/null
@@ -1,69 +0,0 @@
-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/Master/tlpkg/tlperl/lib/Pod/Select.pm b/Master/tlpkg/tlperl/lib/Pod/Select.pm
deleted file mode 100644
index 1cc14dff4b6..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Select.pm
+++ /dev/null
@@ -1,754 +0,0 @@
-#############################################################################
-# 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.30; ## 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 a 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
-
-Please report bugs using L<http://rt.cpan.org>.
-
-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;
-# vim: ts=4 sw=4 et
diff --git a/Master/tlpkg/tlperl/lib/Pod/Text.pm b/Master/tlpkg/tlperl/lib/Pod/Text.pm
deleted file mode 100644
index 1028f2e9e1b..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Text.pm
+++ /dev/null
@@ -1,848 +0,0 @@
-# Pod::Text -- Convert POD data to formatted ASCII text.
-# $Id: Text.pm,v 2.21 2002/08/04 03:34:58 eagle Exp $
-#
-# Copyright 1999, 2000, 2001, 2002 by Russ Allbery <rra@stanford.edu>
-#
-# This program is free software; you may redistribute it and/or modify it
-# under the same terms as Perl itself.
-#
-# This module converts POD to formatted text. It replaces the old Pod::Text
-# module that came with versions of Perl prior to 5.6.0 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.
-#
-# 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::Text;
-
-require 5.004;
-
-use Carp qw(carp croak);
-use Exporter ();
-use Pod::ParseLink qw(parselink);
-use Pod::Select ();
-
-use strict;
-use vars qw(@ISA @EXPORT %ESCAPES $VERSION);
-
-# We inherit from Pod::Select instead of Pod::Parser so that we can be used by
-# Pod::Usage.
-@ISA = qw(Pod::Select Exporter);
-
-# We have to export pod2text for backward compatibility.
-@EXPORT = qw(pod2text);
-
-# 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 = 2.21;
-
-
-##############################################################################
-# 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
- 'apos' => "'", # apostrophe
- 'lt' => '<', # left chevron, less-than
- 'gt' => '>', # right chevron, greater-than
- 'quot' => '"', # double quote
- 'sol' => '/', # solidus (forward slash)
- 'verbar' => '|', # vertical bar
-
- "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" => "\xCC", # capital I, grave accent
- "igrave" => "\xEC", # 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
-
- "laquo" => "\xAB", # left pointing double angle quotation mark
- "lchevron" => "\xAB", # synonym (backwards compatibility)
- "raquo" => "\xBB", # right pointing double angle quotation mark
- "rchevron" => "\xBB", # synonym (backwards compatibility)
-
- "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
- "not" => "\xAC", # not sign
- "shy" => '', # soft (discretionary) 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
- "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
-
- "nbsp" => "\x01", # non-breaking space
-);
-
-
-##############################################################################
-# Initialization
-##############################################################################
-
-# Initialize the object. Must be sure to call our parent initializer.
-sub initialize {
- my $self = shift;
-
- $$self{alt} = 0 unless defined $$self{alt};
- $$self{indent} = 4 unless defined $$self{indent};
- $$self{margin} = 0 unless defined $$self{margin};
- $$self{loose} = 0 unless defined $$self{loose};
- $$self{sentence} = 0 unless defined $$self{sentence};
- $$self{width} = 76 unless defined $$self{width};
-
- # Figure out what quotes we'll be using for C<> text.
- $$self{quotes} ||= '"';
- if ($$self{quotes} eq 'none') {
- $$self{LQUOTE} = $$self{RQUOTE} = '';
- } elsif (length ($$self{quotes}) == 1) {
- $$self{LQUOTE} = $$self{RQUOTE} = $$self{quotes};
- } elsif ($$self{quotes} =~ /^(.)(.)$/
- || $$self{quotes} =~ /^(..)(..)$/) {
- $$self{LQUOTE} = $1;
- $$self{RQUOTE} = $2;
- } else {
- croak qq(Invalid quote specification "$$self{quotes}");
- }
-
- # Stack of indentations.
- $$self{INDENTS} = [];
-
- # Current left margin.
- $$self{MARGIN} = $$self{indent} + $$self{margin};
-
- $self->SUPER::initialize;
-
- # Tell Pod::Parser that we want the non-POD stuff too if code was set.
- $self->parseopts ('-want_nonPODs' => 1) if $$self{code};
-}
-
-
-##############################################################################
-# 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');
- if ($self->can ('cmd_' . $command)) {
- $command = 'cmd_' . $command;
- $self->$command (@_);
- } else {
- my ($text, $line, $paragraph) = @_;
- my $file;
- ($file, $line) = $paragraph->file_line;
- $text =~ s/\n+\z//;
- $text = " $text" if ($text =~ /^\S/);
- warn qq($file:$line: Unknown command paragraph: =$command$text\n);
- return;
- }
-}
-
-# 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 ($_);
-}
-
-# 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;
-
- # Interpolate and output the paragraph.
- $_ = $self->interpolate ($_, $line);
- s/\s+$/\n/;
- if (defined $$self{ITEM}) {
- $self->item ($_ . "\n");
- } else {
- $self->output ($self->reformat ($_ . "\n"));
- }
-}
-
-# Called for a formatting code. Gets the command, argument, and a
-# Pod::InteriorSequence object and is expected to return the resulting text.
-# Calls methods for code, bold, italic, file, and link to handle those types
-# of codes, and handles S<>, E<>, X<>, and Z<> directly.
-sub interior_sequence {
- local $_;
- my ($self, $command, $seq);
- ($self, $command, $_, $seq) = @_;
-
- # We have to defer processing of the inside of an L<> formatting code. If
- # this code is nested inside an L<> code, return the literal raw text of
- # it.
- my $parent = $seq->nested;
- while (defined $parent) {
- return $seq->raw_text if ($parent->cmd_name eq 'L');
- $parent = $parent->nested;
- }
-
- # Index entries are ignored in plain text.
- return '' if ($command eq 'X' || $command eq 'Z');
-
- # Expand escapes into the actual character now, warning if invalid.
- if ($command eq 'E') {
- if (/^\d+$/) {
- return chr;
- } else {
- return $ESCAPES{$_} if defined $ESCAPES{$_};
- my ($file, $line) = $seq->file_line;
- warn "$file:$line: Unknown escape: E<$_>\n";
- return "E<$_>";
- }
- }
-
- # For all the other formatting codes, empty content produces no output.
- return if $_ eq '';
-
- # 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+/ /g;
- tr/ /\01/;
- return $_;
- }
-
- # 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 ($_, $seq) }
- else {
- my ($file, $line) = $seq->file_line;
- warn "$file:$line: Unknown formatting code: $command<$_>\n";
- }
-}
-
-# Called for each paragraph that's actually part of the POD. We take
-# advantage of this opportunity to untabify the input. Also, if given the
-# code option, we may see paragraphs that aren't part of the POD and need to
-# output them directly.
-sub preprocess_paragraph {
- my $self = shift;
- local $_ = shift;
- 1 while s/^(.*?)(\t+)/$1 . ' ' x (length ($2) * 8 - length ($1) % 8)/me;
- $self->output_code ($_) if $self->cutting;
- $_;
-}
-
-
-##############################################################################
-# Command paragraphs
-##############################################################################
-
-# All command paragraphs take the paragraph and the line number.
-
-# First level heading.
-sub cmd_head1 {
- my ($self, $text, $line) = @_;
- $self->heading ($text, $line, 0, '====');
-}
-
-# Second level heading.
-sub cmd_head2 {
- my ($self, $text, $line) = @_;
- $self->heading ($text, $line, $$self{indent} / 2, '== ');
-}
-
-# Third level heading.
-sub cmd_head3 {
- my ($self, $text, $line) = @_;
- $self->heading ($text, $line, $$self{indent} * 2 / 3 + 0.5, '= ');
-}
-
-# Third level heading.
-sub cmd_head4 {
- my ($self, $text, $line) = @_;
- $self->heading ($text, $line, $$self{indent} * 3 / 4 + 0.5, '- ');
-}
-
-# Start a list.
-sub cmd_over {
- my $self = shift;
- local $_ = shift;
- $self->item ("\n\n") if defined $$self{ITEM};
- unless (/^[-+]?\d+\s+$/) { $_ = $$self{indent} }
- push (@{ $$self{INDENTS} }, $$self{MARGIN});
- $$self{MARGIN} += ($_ + 0);
-}
-
-# End a list.
-sub cmd_back {
- my ($self, $text, $line, $paragraph) = @_;
- $self->item ("\n\n") if defined $$self{ITEM};
- $$self{MARGIN} = pop @{ $$self{INDENTS} };
- unless (defined $$self{MARGIN}) {
- my $file;
- ($file, $line) = $paragraph->file_line;
- warn "$file:$line: Unmatched =back\n";
- $$self{MARGIN} = $$self{indent};
- }
-}
-
-# An individual list item.
-sub cmd_item {
- my $self = shift;
- if (defined $$self{ITEM}) { $self->item }
- local $_ = shift;
- s/\s+$//;
- $$self{ITEM} = $_ ? $self->interpolate ($_) : '*';
-}
-
-# 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;
- }
-}
-
-# 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);
-}
-
-
-##############################################################################
-# Formatting codes
-##############################################################################
-
-# The simple 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_f { return $_[0]{alt} ? "\"$_[1]\"" : $_[1] }
-sub seq_i { return '*' . $_[1] . '*' }
-
-# Apply a whole bunch of messy heuristics to not quote things that don't
-# benefit from being quoted. These originally come from Barrie Slaymaker and
-# largely duplicate code in Pod::Man.
-sub seq_c {
- my $self = shift;
- local $_ = shift;
-
- # A regex that matches the portion of a variable reference that's the
- # array or hash index, separated out just because we want to use it in
- # several places in the following regex.
- my $index = '(?: \[.*\] | \{.*\} )?';
-
- # Check for things that we don't want to quote, and if we find any of
- # them, return the string with just a font change and no quoting.
- m{
- ^\s*
- (?:
- ( [\'\`\"] ) .* \1 # already quoted
- | \` .* \' # `quoted'
- | \$+ [\#^]? \S $index # special ($^Foo, $")
- | [\$\@%&*]+ \#? [:\'\w]+ $index # plain var or func
- | [\$\@%&*]* [:\'\w]+ (?: -> )? \(\s*[^\s,]\s*\) # 0/1-arg func call
- | [+-]? ( \d[\d.]* | \.\d+ ) (?: [eE][+-]?\d+ )? # a number
- | 0x [a-fA-F\d]+ # a hex constant
- )
- \s*\z
- }xo && return $_;
-
- # If we didn't return, go ahead and quote the text.
- return $$self{alt} ? "``$_''" : "$$self{LQUOTE}$_$$self{RQUOTE}";
-}
-
-# 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. Most of the
-# work is done by Pod::ParseLink.
-sub seq_l {
- my ($self, $link, $seq) = @_;
- my ($text, $type) = (parselink ($link))[1,4];
- my ($file, $line) = $seq->file_line;
- $text = $self->interpolate ($text, $line);
- $text = '<' . $text . '>' if $type eq 'url';
- return $text || '';
-}
-
-
-##############################################################################
-# Header handling
-##############################################################################
-
-# The common code for handling all headers. Takes the interpolated header
-# text, the line number, the indentation, and the surrounding marker for the
-# alt formatting method.
-sub heading {
- my ($self, $text, $line, $indent, $marker) = @_;
- $self->item ("\n\n") if defined $$self{ITEM};
- $text =~ s/\s+$//;
- $text = $self->interpolate ($text, $line);
- if ($$self{alt}) {
- my $closemark = reverse (split (//, $marker));
- my $margin = ' ' x $$self{margin};
- $self->output ("\n" . "$margin$marker $text $closemark" . "\n\n");
- } else {
- $text .= "\n" if $$self{loose};
- my $margin = ' ' x ($$self{margin} + $indent);
- $self->output ($margin . $text . "\n");
- }
-}
-
-
-##############################################################################
-# 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 $margin = ' ' x $$self{margin};
- if (!$_ || /^\s+$/ || ($$self{MARGIN} - $indent < length ($tag) + 1)) {
- my $realindent = $$self{MARGIN};
- $$self{MARGIN} = $indent;
- my $output = $self->reformat ($tag);
- $output =~ s/^$margin /$margin:/ if ($$self{alt} && $indent > 0);
- $output =~ s/\n*$/\n/;
-
- # If the text is just whitespace, we have an empty item paragraph;
- # this can result from =over/=item/=back without any intermixed
- # paragraphs. Insert some whitespace to keep the =item from merging
- # into the next paragraph.
- $output .= "\n" if $_ && $_ =~ /^\s*$/;
-
- $self->output ($output);
- $$self{MARGIN} = $realindent;
- $self->output ($self->reformat ($_)) if $_ && /\S/;
- } else {
- my $space = ' ' x $indent;
- $space =~ s/^$margin /$margin:/ if $$self{alt};
- $_ = $self->reformat ($_);
- s/^$margin /$margin:/ if ($$self{alt} && $indent > 0);
- my $tagspace = ' ' x length $tag;
- s/^($space)$tagspace/$1$tag/ or warn "Bizarre space in item";
- $self->output ($_);
- }
-}
-
-
-##############################################################################
-# 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 $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;
- }
- }
- $output .= $spaces . $_;
- $output =~ s/\s+$/\n\n/;
- $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;
-
- # 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/\s+/ /g;
- }
- $self->wrap ($_);
-}
-
-# Output text to the output device.
-sub output { $_[1] =~ tr/\01/ /; print { $_[0]->output_handle } $_[1] }
-
-# Output a block of code (something that isn't part of the POD text). Called
-# by preprocess_paragraph only if we were given the code option. Exists here
-# only so that it can be overridden by subclasses.
-sub output_code { $_[0]->output ($_[1]) }
-
-
-##############################################################################
-# Backwards compatibility
-##############################################################################
-
-# 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;
- }
- }
-
- # 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]) {
- my @fhs = @_;
- local *IN;
- unless (open (IN, $fhs[0])) {
- croak ("Can't open $fhs[0] for reading: $!\n");
- return;
- }
- $fhs[0] = \*IN;
- return $parser->parse_from_filehandle (@fhs);
- } else {
- return $parser->parse_from_file (@_);
- }
-}
-
-
-##############################################################################
-# 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->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 code
-
-If set to a true value, the non-POD parts of the input file will be included
-in the output. Useful for viewing code documented with POD blocks with the
-POD rendered and the code left intact.
-
-=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 margin
-
-The width of the left margin in spaces. Defaults to 0. This is the margin
-for all text, including headings, not the amount by which regular text is
-indented; for the latter, see the I<indent> option. To set the right
-margin, see the I<width> option.
-
-=item quotes
-
-Sets the quote marks used to surround CE<lt>> text. If the value is a
-single character, it is used as both the left and right quote; if it is two
-characters, the first character is used as the left quote and the second as
-the right quoted; and if it is four characters, the first two are used as
-the left quote and the second two as the right quote.
-
-This may also be set to the special value C<none>, in which case no quote
-marks are added around CE<lt>> text.
-
-=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
-
-=item Item called without tag
-
-(W) Something has gone wrong in internal C<=item> processing. These
-messages indicate a bug in Pod::Text; you should never see them.
-
-=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 Invalid quote specification "%s"
-
-(F) The quote specification given (the quotes option to the constructor) was
-invalid. A quote specification must be one, two, or four characters long.
-
-=item %s:%d: Unknown command paragraph: %s
-
-(W) The POD source contained a non-standard command paragraph (something of
-the form C<=command args>) that Pod::Man didn't know about. It was ignored.
-
-=item %s:%d: Unknown escape: %s
-
-(W) The POD source contained an C<EE<lt>E<gt>> escape that Pod::Text didn't
-know about.
-
-=item %s:%d: Unknown formatting code: %s
-
-(W) The POD source contained a non-standard formatting code (something of
-the form C<XE<lt>E<gt>>) that Pod::Text didn't know about.
-
-=item %s:%d: 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>.
-
-=head1 SEE ALSO
-
-L<Pod::Parser>, L<Pod::Text::Termcap>, L<pod2text(1)>
-
-The current version of this module is always available from its web site at
-L<http://www.eyrie.org/~eagle/software/podlators/>. It is also part of the
-Perl core distribution as of 5.6.0.
-
-=head1 AUTHOR
-
-Russ Allbery <rra@stanford.edu>, based I<very> heavily on the original
-Pod::Text by Tom Christiansen <tchrist@mox.perl.com> and its conversion to
-Pod::Parser by Brad Appleton <bradapp@enteract.com>.
-
-=head1 COPYRIGHT AND LICENSE
-
-Copyright 1999, 2000, 2001, 2002 by Russ Allbery <rra@stanford.edu>.
-
-This program is free software; you may redistribute it and/or modify it
-under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Pod/Text/Color.pm b/Master/tlpkg/tlperl/lib/Pod/Text/Color.pm
deleted file mode 100644
index 2ba31369b96..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Text/Color.pm
+++ /dev/null
@@ -1,145 +0,0 @@
-# Pod::Text::Color -- Convert POD data to formatted color ASCII text
-# $Id: Color.pm,v 1.4 2002/07/15 05:46:00 eagle Exp $
-#
-# Copyright 1999, 2001 by Russ Allbery <rra@stanford.edu>
-#
-# This program is free software; you may redistribute it and/or modify it
-# under the same terms as Perl itself.
-#
-# 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);
-
-# 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.04;
-
-
-##############################################################################
-# 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 formatting codes.
-sub seq_b { return colored ($_[1], 'bold') }
-sub seq_f { return colored ($_[1], 'cyan') }
-sub seq_i { return colored ($_[1], 'yellow') }
-
-# Output any included code in green.
-sub output_code {
- my ($self, $code) = @_;
- $code = colored ($code, 'green');
- $self->output ($code);
-}
-
-# 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>, L<Pod::Parser>
-
-The current version of this module is always available from its web site at
-L<http://www.eyrie.org/~eagle/software/podlators/>. It is also part of the
-Perl core distribution as of 5.6.0.
-
-=head1 AUTHOR
-
-Russ Allbery <rra@stanford.edu>.
-
-=head1 COPYRIGHT AND LICENSE
-
-Copyright 1999, 2001 by Russ Allbery <rra@stanford.edu>.
-
-This program is free software; you may redistribute it and/or modify it
-under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Pod/Text/Overstrike.pm b/Master/tlpkg/tlperl/lib/Pod/Text/Overstrike.pm
deleted file mode 100644
index 8ba918396c1..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Text/Overstrike.pm
+++ /dev/null
@@ -1,208 +0,0 @@
-# Pod::Text::Overstrike -- Convert POD data to formatted overstrike text
-# $Id: Overstrike.pm,v 1.10 2002/08/04 03:35:01 eagle Exp $
-#
-# Created by Joe Smith <Joe.Smith@inwap.com> 30-Nov-2000
-# (based on Pod::Text::Color by Russ Allbery <rra@stanford.edu>)
-#
-# This program is free software; you may redistribute it and/or modify it
-# under the same terms as Perl itself.
-#
-# This was written because the output from:
-#
-# pod2text Text.pm > plain.txt; less plain.txt
-#
-# is not as rich as the output from
-#
-# pod2man Text.pm | nroff -man > fancy.txt; less fancy.txt
-#
-# and because both Pod::Text::Color and Pod::Text::Termcap are not device
-# independent.
-
-##############################################################################
-# Modules and declarations
-##############################################################################
-
-package Pod::Text::Overstrike;
-
-require 5.004;
-
-use Pod::Text ();
-
-use strict;
-use vars qw(@ISA $VERSION);
-
-@ISA = qw(Pod::Text);
-
-# 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.10;
-
-
-##############################################################################
-# Overrides
-##############################################################################
-
-# Make level one headings bold, overridding any existing formatting.
-sub cmd_head1 {
- my ($self, $text, $line) = @_;
- $text =~ s/\s+$//;
- $text = $self->strip_format ($self->interpolate ($text, $line));
- $text =~ s/(.)/$1\b$1/g;
- $self->SUPER::cmd_head1 ($text);
-}
-
-# Make level two headings bold, overriding any existing formatting.
-sub cmd_head2 {
- my ($self, $text, $line) = @_;
- $text =~ s/\s+$//;
- $text = $self->strip_format ($self->interpolate ($text, $line));
- $text =~ s/(.)/$1\b$1/g;
- $self->SUPER::cmd_head2 ($text);
-}
-
-# Make level three headings underscored, overriding any existing formatting.
-sub cmd_head3 {
- my ($self, $text, $line) = @_;
- $text =~ s/\s+$//;
- $text = $self->strip_format ($self->interpolate ($text, $line));
- $text =~ s/(.)/_\b$1/g;
- $self->SUPER::cmd_head3 ($text);
-}
-
-# Level four headings look like level three headings.
-sub cmd_head4 {
- my ($self, $text, $line) = @_;
- $text =~ s/\s+$//;
- $text = $self->strip_format ($self->interpolate ($text, $line));
- $text =~ s/(.)/_\b$1/g;
- $self->SUPER::cmd_head4 ($text);
-}
-
-# The common code for handling all headers. We have to override to avoid
-# interpolating twice and because we don't want to honor alt.
-sub heading {
- my ($self, $text, $line, $indent, $marker) = @_;
- $self->item ("\n\n") if defined $$self{ITEM};
- $text .= "\n" if $$self{loose};
- my $margin = ' ' x ($$self{margin} + $indent);
- $self->output ($margin . $text . "\n");
-}
-
-# Fix the various formatting codes.
-sub seq_b { local $_ = strip_format (@_); s/(.)/$1\b$1/g; $_ }
-sub seq_f { local $_ = strip_format (@_); s/(.)/_\b$1/g; $_ }
-sub seq_i { local $_ = strip_format (@_); s/(.)/_\b$1/g; $_ }
-
-# Output any included code in bold.
-sub output_code {
- my ($self, $code) = @_;
- $code =~ s/(.)/$1\b$1/g;
- $self->output ($code);
-}
-
-# We unfortunately have to override the wrapping code here, since the normal
-# wrapping code gets really confused by all the backspaces.
-sub wrap {
- my $self = shift;
- local $_ = shift;
- my $output = '';
- my $spaces = ' ' x $$self{MARGIN};
- my $width = $$self{width} - $$self{MARGIN};
- while (length > $width) {
- # This regex represents a single character, that's possibly underlined
- # or in bold (in which case, it's three characters; the character, a
- # backspace, and a character). Use [^\n] rather than . to protect
- # against odd settings of $*.
- my $char = '(?:[^\n][\b])?[^\n]';
- if (s/^((?>$char){0,$width})(?:\Z|\s+)//) {
- $output .= $spaces . $1 . "\n";
- } else {
- last;
- }
- }
- $output .= $spaces . $_;
- $output =~ s/\s+$/\n\n/;
- $output;
-}
-
-##############################################################################
-# Utility functions
-##############################################################################
-
-# Strip all of the formatting from a provided string, returning the stripped
-# version.
-sub strip_format {
- my ($self, $text) = @_;
- $text =~ s/(.)[\b]\1/$1/g;
- $text =~ s/_[\b]//g;
- return $text;
-}
-
-##############################################################################
-# Module return value and documentation
-##############################################################################
-
-1;
-__END__
-
-=head1 NAME
-
-Pod::Text::Overstrike - Convert POD data to formatted overstrike text
-
-=head1 SYNOPSIS
-
- use Pod::Text::Overstrike;
- my $parser = Pod::Text::Overstrike->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::Overstrike is a simple subclass of Pod::Text that highlights
-output text using overstrike sequences, in a manner similar to nroff.
-Characters in bold text are overstruck (character, backspace, character) and
-characters in underlined text are converted to overstruck underscores
-(underscore, backspace, character). This format was originally designed for
-hardcopy terminals and/or lineprinters, yet is readable on softcopy (CRT)
-terminals.
-
-Overstruck text is best viewed by page-at-a-time programs that take
-advantage of the terminal's B<stand-out> and I<underline> capabilities, such
-as the less program on Unix.
-
-Apart from the overstrike, it in all ways functions like Pod::Text. See
-L<Pod::Text> for details and available options.
-
-=head1 BUGS
-
-Currently, the outermost formatting instruction wins, so for example
-underlined text inside a region of bold text is displayed as simply bold.
-There may be some better approach possible.
-
-=head1 SEE ALSO
-
-L<Pod::Text>, L<Pod::Parser>
-
-The current version of this module is always available from its web site at
-L<http://www.eyrie.org/~eagle/software/podlators/>. It is also part of the
-Perl core distribution as of 5.6.0.
-
-=head1 AUTHOR
-
-Joe Smith <Joe.Smith@inwap.com>, using the framework created by Russ Allbery
-<rra@stanford.edu>.
-
-=head1 COPYRIGHT AND LICENSE
-
-Copyright 2000 by Joe Smith <Joe.Smith@inwap.com>.
-Copyright 2001 by Russ Allbery <rra@stanford.edu>.
-
-This program is free software; you may redistribute it and/or modify it
-under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Pod/Text/Termcap.pm b/Master/tlpkg/tlperl/lib/Pod/Text/Termcap.pm
deleted file mode 100644
index 02a7fb9842a..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Text/Termcap.pm
+++ /dev/null
@@ -1,180 +0,0 @@
-# Pod::Text::Termcap -- Convert POD data to ASCII text with format escapes.
-# $Id: Termcap.pm,v 1.11 2003/07/09 21:52:30 eagle Exp $
-#
-# Copyright 1999, 2001, 2002 by Russ Allbery <rra@stanford.edu>
-#
-# This program is free software; you may redistribute it and/or modify it
-# under the same terms as Perl itself.
-#
-# 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);
-
-# 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.11;
-
-
-##############################################################################
-# Overrides
-##############################################################################
-
-# In the initialization method, grab our terminal characteristics as well as
-# do all the stuff we normally do.
-sub initialize {
- my $self = shift;
- my ($ospeed, $term, $termios);
-
- # $ENV{HOME} is usually not set on Windows. The default Term::Cap path
- # may not work on Solaris.
- my $home = exists $ENV{HOME} ? "$ENV{HOME}/.termcap:" : '';
- $ENV{TERMPATH} = $home . '/etc/termcap:/usr/share/misc/termcap'
- . ':/usr/share/lib/termcap';
-
- # Fall back on a hard-coded terminal speed if POSIX::Termios isn't
- # available (such as on VMS).
- eval { $termios = POSIX::Termios->new };
- if ($@) {
- $ospeed = 9600;
- } else {
- $termios->getattr;
- $ospeed = $termios->getospeed || 9600;
- }
-
- # Fall back on the ANSI escape sequences if Term::Cap doesn't work.
- eval { $term = Tgetent Term::Cap { TERM => undef, OSPEED => $ospeed } };
- $$self{BOLD} = $$term{_md} || "\e[1m";
- $$self{UNDL} = $$term{_us} || "\e[4m";
- $$self{NORM} = $$term{_me} || "\e[m";
-
- unless (defined $$self{width}) {
- $$self{width} = $ENV{COLUMNS} || $$term{_co} || 80;
- $$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}" }
-
-# Output any included code in bold.
-sub output_code {
- my ($self, $code) = @_;
- $self->output ($$self{BOLD} . $code . $$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::Termcap - 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 NOTES
-
-This module uses Term::Cap to retrieve the formatting escape sequences for
-the current terminal, and falls back on the ECMA-48 (the same in this
-regard as ANSI X3.64 and ISO 6429, the escape codes also used by DEC VT100
-terminals) if the bold, underline, and reset codes aren't set in the
-termcap information.
-
-=head1 SEE ALSO
-
-L<Pod::Text>, L<Pod::Parser>, L<Term::Cap>
-
-The current version of this module is always available from its web site at
-L<http://www.eyrie.org/~eagle/software/podlators/>. It is also part of the
-Perl core distribution as of 5.6.0.
-
-=head1 AUTHOR
-
-Russ Allbery <rra@stanford.edu>.
-
-=head1 COPYRIGHT AND LICENSE
-
-Copyright 1999, 2001, 2002 by Russ Allbery <rra@stanford.edu>.
-
-This program is free software; you may redistribute it and/or modify it
-under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Pod/Usage.pm b/Master/tlpkg/tlperl/lib/Pod/Usage.pm
deleted file mode 100644
index c298e941f21..00000000000
--- a/Master/tlpkg/tlperl/lib/Pod/Usage.pm
+++ /dev/null
@@ -1,659 +0,0 @@
-#############################################################################
-# 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.33; ## 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 );
-
- pod2usage( -verbose => 2,
- -noperldoc => 1 )
-
-=head1 ARGUMENTS
-
-B<pod2usage> should be given either a single argument, or a list of
-arguments corresponding to an associative array (a "hash"). When a single
-argument is given, it should correspond to exactly one of the following:
-
-=over 4
-
-=item *
-
-A string containing the text of a message to print I<before> printing
-the usage message
-
-=item *
-
-A numeric value corresponding to the desired exit status
-
-=item *
-
-A reference to a hash
-
-=back
-
-If more than one argument is given then the entire argument list is
-assumed to be a hash. If a hash is supplied (either as a reference or
-as a list) it should contain one or more elements with the following
-keys:
-
-=over 4
-
-=item C<-message>
-
-=item C<-msg>
-
-The text of a message to print immediately prior to printing the
-program's usage message.
-
-=item C<-exitval>
-
-The desired exit status to pass to the B<exit()> function.
-This should be an integer, or else the string "NOEXIT" to
-indicate that control should simply be returned without
-terminating the invoking process.
-
-=item C<-verbose>
-
-The desired level of "verboseness" to use when printing the usage
-message. If the corresponding value is 0, then only the "SYNOPSIS"
-section of the pod documentation is printed. If the corresponding value
-is 1, then the "SYNOPSIS" section, along with any section entitled
-"OPTIONS", "ARGUMENTS", or "OPTIONS AND ARGUMENTS" is printed. If the
-corresponding value is 2 or more then the entire manpage is printed.
-
-The special verbosity level 99 requires to also specify the -section
-parameter; then these sections are extracted (see L<Pod::Select>)
-and printed.
-
-=item C<-section>
-
-A string representing a selection list for sections to be printed
-when -verbose is set to 99, e.g. C<"NAME|SYNOPSIS|DESCRIPTION|VERSION">.
-
-=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).
-
-=item C<-noperldoc>
-
-By default, Pod::Usage will call L<perldoc> when -verbose >= 2 is
-specified. This does not work well e.g. if the script was packed
-with L<PAR>. The -noperldoc option suppresses the external call to
-L<perldoc> and uses the simple text formatter (L<Pod::Text>) to
-output the POD.
-
-=back
-
-=head1 DESCRIPTION
-
-B<pod2usage> will print a usage message for the invoking script (using
-its embedded pod documentation) and then exit the script with the
-desired exit status. The usage message printed may have any one of three
-levels of "verboseness": If the verbose level is 0, then only a synopsis
-is printed. If the verbose level is 1, then the synopsis is printed
-along with a description (if present) of the command line options and
-arguments. If the verbose level is 2, then the entire manual page is
-printed.
-
-Unless they are explicitly specified, the default values for the exit
-status, verbose level, and output stream to use are determined as
-follows:
-
-=over 4
-
-=item *
-
-If neither the exit status nor the verbose level is specified, then the
-default is to use an exit status of 2 with a verbose level of 0.
-
-=item *
-
-If an exit status I<is> specified but the verbose level is I<not>, then the
-verbose level will default to 1 if the exit status is less than 2 and
-will default to 0 otherwise.
-
-=item *
-
-If an exit status is I<not> specified but verbose level I<is> given, then
-the exit status will default to 2 if the verbose level is 0 and will
-default to 1 otherwise.
-
-=item *
-
-If the exit status used is less than 2, then output is printed on
-C<STDOUT>. Otherwise output is printed on C<STDERR>.
-
-=back
-
-Although the above may seem a bit confusing at first, it generally does
-"the right thing" in most situations. This determination of the default
-values to use is based upon the following typical Unix conventions:
-
-=over 4
-
-=item *
-
-An exit status of 0 implies "success". For example, B<diff(1)> exits
-with a status of 0 if the two files have the same contents.
-
-=item *
-
-An exit status of 1 implies possibly abnormal, but non-defective, program
-termination. For example, B<grep(1)> exits with a status of 1 if
-it did I<not> find a matching line for the given regular expression.
-
-=item *
-
-An exit status of 2 or more implies a fatal error. For example, B<ls(1)>
-exits with a status of 2 if you specify an illegal (unknown) option on
-the command line.
-
-=item *
-
-Usage messages issued as a result of bad command-line syntax should go
-to C<STDERR>. However, usage messages issued due to an explicit request
-to print usage (like specifying B<-help> on the command line) should go
-to C<STDOUT>, just in case the user wants to pipe the output to a pager
-(such as B<more(1)>).
-
-=item *
-
-If program usage has been explicitly requested by the user, it is often
-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");
-
-In the pathological case that a script is called via a relative path
-I<and> the script itself changes the current working directory
-(see L<perlfunc/chdir>) I<before> calling pod2usage, Pod::Usage will
-fail even on robust platforms. Don't do that.
-
-=head1 AUTHOR
-
-Please report bugs using L<http://rt.cpan.org>.
-
-Brad Appleton E<lt>bradapp@enteract.comE<gt>
-
-Based on code for B<Pod::Text::pod2text()> 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 Config;
-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 (!defined $_) {
- $_ = "";
- }
- elsif (ref $_) {
- ## User passed a ref to a hash
- %opts = %{$_} if (ref($_) eq 'HASH');
- }
- elsif (/^[-+]?\d+$/) {
- ## User passed in the exit value to use
- $opts{"-exitval"} = $_;
- }
- else {
- ## User passed in a message to print before issuing usage.
- $_ and $opts{"-message"} = $_;
- }
-
- ## Need this for backward compatibility since we formerly used
- ## options that were all uppercase words rather than ones that
- ## looked like Unix command-line options.
- ## to be uppercase keywords)
- %opts = map {
- my $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"} = (lc($opts{"-exitval"}) eq "noexit" ||
- $opts{"-exitval"} < 2);
- }
-
- ## Default the output file
- $opts{"-output"} = (lc($opts{"-exitval"}) eq "noexit" ||
- $opts{"-exitval"} < 2) ? \*STDOUT : \*STDERR
- unless (defined $opts{"-output"});
- ## Default the input file
- $opts{"-input"} = $0 unless (defined $opts{"-input"});
-
- ## Look up input file in path if it doesnt exist.
- unless ((ref $opts{"-input"}) || (-e $opts{"-input"})) {
- my ($dirname, $basename) = ('', $opts{"-input"});
- my $pathsep = ($^O =~ /^(?:dos|os2|MSWin32)$/) ? ";"
- : (($^O eq 'MacOS' || $^O eq 'VMS') ? ',' : ":");
- 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\s*');
- }
- elsif ($opts{"-verbose"} == 1) {
- my $opt_re = '(?i)' .
- '(?:OPTIONS|ARGUMENTS)' .
- '(?:\s*(?:AND|\/)\s*(?:OPTIONS|ARGUMENTS))?';
- $parser->select( 'SYNOPSIS', $opt_re, "DESCRIPTION/$opt_re" );
- }
- elsif ($opts{"-verbose"} == 99) {
- $parser->select( $opts{"-sections"} );
- $opts{"-verbose"} = 1;
- }
-
- ## Now translate the pod document and then exit with the desired status
- if ( !$opts{"-noperldoc"}
- and $opts{"-verbose"} >= 2
- and !ref($opts{"-input"})
- and $opts{"-output"} == \*STDOUT )
- {
- ## spit out the entire PODs. Might as well invoke perldoc
- my $progpath = File::Spec->catfile($Config{scriptdir}, "perldoc");
- system($progpath, $opts{"-input"});
- }
- else {
- $parser->parse_from_file($opts{"-input"}, $opts{"-output"});
- }
-
- exit($opts{"-exitval"}) unless (lc($opts{"-exitval"}) eq 'noexit');
-}
-
-##---------------------------------------------------------------------------
-
-##-------------------------------
-## Method definitions begin here
-##-------------------------------
-
-sub new {
- my $this = shift;
- my $class = ref($this) || $this;
- my %params = @_;
- my $self = {%params};
- bless $self, $class;
- if ($self->can('initialize')) {
- $self->initialize();
- } else {
- $self = $self->SUPER::new();
- %$self = (%$self, %params);
- }
- return $self;
-}
-
-sub select {
- my ($self, @res) = @_;
- if ($ISA[0]->can('select')) {
- $self->SUPER::select(@_);
- } else {
- $self->{USAGE_SELECT} = \@res;
- }
-}
-
-# Override Pod::Text->seq_i to return just "arg", not "*arg*".
-sub seq_i { return $_[1] }
-
-# This overrides the Pod::Text method to do something very akin to what
-# Pod::Select did as well as the work done below by preprocess_paragraph.
-# Note that the below is very, very specific to Pod::Text.
-sub _handle_element_end {
- my ($self, $element) = @_;
- if ($element eq 'head1') {
- $$self{USAGE_HEAD1} = $$self{PENDING}[-1][1];
- $$self{PENDING}[-1][1] =~ s/^\s*SYNOPSIS\s*$/USAGE/;
- } elsif ($element eq 'head2') {
- $$self{USAGE_HEAD2} = $$self{PENDING}[-1][1];
- }
- if ($element eq 'head1' || $element eq 'head2') {
- $$self{USAGE_SKIPPING} = 1;
- my $heading = $$self{USAGE_HEAD1};
- $heading .= '/' . $$self{USAGE_HEAD2} if defined $$self{USAGE_HEAD2};
- for (@{ $$self{USAGE_SELECT} }) {
- if ($heading =~ /^$_\s*$/) {
- $$self{USAGE_SKIPPING} = 0;
- last;
- }
- }
-
- # Try to do some lowercasing instead of all-caps in headings, and use
- # a colon to end all headings.
- local $_ = $$self{PENDING}[-1][1];
- s{([A-Z])([A-Z]+)}{((length($2) > 2) ? $1 : lc($1)) . lc($2)}ge;
- s/\s*$/:/ unless (/:\s*$/);
- $_ .= "\n";
- $$self{PENDING}[-1][1] = $_;
- }
- if ($$self{USAGE_SKIPPING}) {
- pop @{ $$self{PENDING} };
- } else {
- $self->SUPER::_handle_element_end($element);
- }
-}
-
-sub start_document {
- my $self = shift;
- $self->SUPER::start_document();
- my $msg = $self->{USAGE_OPTIONS}->{-message} or return 1;
- my $out_fh = $self->output_fh();
- print $out_fh "$msg\n";
-}
-
-sub begin_pod {
- my $self = shift;
- $self->SUPER::begin_pod(); ## Have to call superclass
- my $msg = $self->{USAGE_OPTIONS}->{-message} or return 1;
- my $out_fh = $self->output_handle();
- print $out_fh "$msg\n";
-}
-
-sub preprocess_paragraph {
- my $self = shift;
- local $_ = shift;
- my $line = shift;
- ## See if this is a heading and we arent printing the entire manpage.
- if (($self->{USAGE_OPTIONS}->{-verbose} < 2) && /^=head/) {
- ## Change the title of the SYNOPSIS section to USAGE
- s/^=head1\s+SYNOPSIS\s*$/=head1 USAGE/;
- ## Try to do some lowercasing instead of all-caps in headings
- s{([A-Z])([A-Z]+)}{((length($2) > 2) ? $1 : lc($1)) . lc($2)}ge;
- ## Use a colon to end all headings
- s/\s*$/:/ unless (/:\s*$/);
- $_ .= "\n";
- }
- return $self->SUPER::preprocess_paragraph($_);
-}
-
-1; # keep require happy
diff --git a/Master/tlpkg/tlperl/lib/Safe.pm b/Master/tlpkg/tlperl/lib/Safe.pm
deleted file mode 100644
index e2a608023ca..00000000000
--- a/Master/tlpkg/tlperl/lib/Safe.pm
+++ /dev/null
@@ -1,576 +0,0 @@
-package Safe;
-
-use 5.003_11;
-use strict;
-
-$Safe::VERSION = "2.12";
-
-# *** Don't declare any lexicals above this point ***
-#
-# This function should return a closure which contains an eval that can't
-# see any lexicals in scope (apart from __ExPr__ which is unavoidable)
-
-sub lexless_anon_sub {
- # $_[0] is package;
- # $_[1] is strict flag;
- my $__ExPr__ = $_[2]; # must be a lexical to create the closure that
- # can be used to pass the value into the safe
- # world
-
- # Create anon sub ref in root of compartment.
- # Uses a closure (on $__ExPr__) to pass in the code to be executed.
- # (eval on one line to keep line numbers as expected by caller)
- eval sprintf
- 'package %s; %s strict; sub { @_=(); eval q[my $__ExPr__;] . $__ExPr__; }',
- $_[0], $_[1] ? 'use' : 'no';
-}
-
-use Carp;
-use Carp::Heavy;
-
-use Opcode 1.01, qw(
- opset opset_to_ops opmask_add
- empty_opset full_opset invert_opset verify_opset
- opdesc opcodes opmask define_optag opset_to_hex
-);
-
-*ops_to_opset = \&opset; # Temporary alias for old Penguins
-
-
-my $default_root = 0;
-my $default_share = ['*_']; #, '*main::'];
-
-sub new {
- my($class, $root, $mask) = @_;
- my $obj = {};
- bless $obj, $class;
-
- if (defined($root)) {
- croak "Can't use \"$root\" as root name"
- if $root =~ /^main\b/ or $root !~ /^\w[:\w]*$/;
- $obj->{Root} = $root;
- $obj->{Erase} = 0;
- }
- else {
- $obj->{Root} = "Safe::Root".$default_root++;
- $obj->{Erase} = 1;
- }
-
- # use permit/deny methods instead till interface issues resolved
- # XXX perhaps new Safe 'Root', mask => $mask, foo => bar, ...;
- croak "Mask parameter to new no longer supported" if defined $mask;
- $obj->permit_only(':default');
-
- # We must share $_ and @_ with the compartment or else ops such
- # as split, length and so on won't default to $_ properly, nor
- # will passing argument to subroutines work (via @_). In fact,
- # for reasons I don't completely understand, we need to share
- # the whole glob *_ rather than $_ and @_ separately, otherwise
- # @_ in non default packages within the compartment don't work.
- $obj->share_from('main', $default_share);
- Opcode::_safe_pkg_prep($obj->{Root}) if($Opcode::VERSION > 1.04);
- return $obj;
-}
-
-sub DESTROY {
- my $obj = shift;
- $obj->erase('DESTROY') if $obj->{Erase};
-}
-
-sub erase {
- my ($obj, $action) = @_;
- my $pkg = $obj->root();
- my ($stem, $leaf);
-
- no strict 'refs';
- $pkg = "main::$pkg\::"; # expand to full symbol table name
- ($stem, $leaf) = $pkg =~ m/(.*::)(\w+::)$/;
-
- # The 'my $foo' is needed! Without it you get an
- # 'Attempt to free unreferenced scalar' warning!
- my $stem_symtab = *{$stem}{HASH};
-
- #warn "erase($pkg) stem=$stem, leaf=$leaf";
- #warn " stem_symtab hash ".scalar(%$stem_symtab)."\n";
- # ", join(', ', %$stem_symtab),"\n";
-
-# delete $stem_symtab->{$leaf};
-
- my $leaf_glob = $stem_symtab->{$leaf};
- my $leaf_symtab = *{$leaf_glob}{HASH};
-# warn " leaf_symtab ", join(', ', %$leaf_symtab),"\n";
- %$leaf_symtab = ();
- #delete $leaf_symtab->{'__ANON__'};
- #delete $leaf_symtab->{'foo'};
- #delete $leaf_symtab->{'main::'};
-# my $foo = undef ${"$stem\::"}{"$leaf\::"};
-
- if ($action and $action eq 'DESTROY') {
- delete $stem_symtab->{$leaf};
- } else {
- $obj->share_from('main', $default_share);
- }
- 1;
-}
-
-
-sub reinit {
- my $obj= shift;
- $obj->erase;
- $obj->share_redo;
-}
-
-sub root {
- my $obj = shift;
- croak("Safe root method now read-only") if @_;
- return $obj->{Root};
-}
-
-
-sub mask {
- my $obj = shift;
- return $obj->{Mask} unless @_;
- $obj->deny_only(@_);
-}
-
-# v1 compatibility methods
-sub trap { shift->deny(@_) }
-sub untrap { shift->permit(@_) }
-
-sub deny {
- my $obj = shift;
- $obj->{Mask} |= opset(@_);
-}
-sub deny_only {
- my $obj = shift;
- $obj->{Mask} = opset(@_);
-}
-
-sub permit {
- my $obj = shift;
- # XXX needs testing
- $obj->{Mask} &= invert_opset opset(@_);
-}
-sub permit_only {
- my $obj = shift;
- $obj->{Mask} = invert_opset opset(@_);
-}
-
-
-sub dump_mask {
- my $obj = shift;
- print opset_to_hex($obj->{Mask}),"\n";
-}
-
-
-
-sub share {
- my($obj, @vars) = @_;
- $obj->share_from(scalar(caller), \@vars);
-}
-
-sub share_from {
- my $obj = shift;
- my $pkg = shift;
- my $vars = shift;
- my $no_record = shift || 0;
- my $root = $obj->root();
- croak("vars not an array ref") unless ref $vars eq 'ARRAY';
- no strict 'refs';
- # Check that 'from' package actually exists
- croak("Package \"$pkg\" does not exist")
- unless keys %{"$pkg\::"};
- my $arg;
- foreach $arg (@$vars) {
- # catch some $safe->share($var) errors:
- croak("'$arg' not a valid symbol table name")
- unless $arg =~ /^[\$\@%*&]?\w[\w:]*$/
- or $arg =~ /^\$\W$/;
- my ($var, $type);
- $type = $1 if ($var = $arg) =~ s/^(\W)//;
- # warn "share_from $pkg $type $var";
- *{$root."::$var"} = (!$type) ? \&{$pkg."::$var"}
- : ($type eq '&') ? \&{$pkg."::$var"}
- : ($type eq '$') ? \${$pkg."::$var"}
- : ($type eq '@') ? \@{$pkg."::$var"}
- : ($type eq '%') ? \%{$pkg."::$var"}
- : ($type eq '*') ? *{$pkg."::$var"}
- : croak(qq(Can't share "$type$var" of unknown type));
- }
- $obj->share_record($pkg, $vars) unless $no_record or !$vars;
-}
-
-sub share_record {
- my $obj = shift;
- my $pkg = shift;
- my $vars = shift;
- my $shares = \%{$obj->{Shares} ||= {}};
- # Record shares using keys of $obj->{Shares}. See reinit.
- @{$shares}{@$vars} = ($pkg) x @$vars if @$vars;
-}
-sub share_redo {
- my $obj = shift;
- my $shares = \%{$obj->{Shares} ||= {}};
- my($var, $pkg);
- while(($var, $pkg) = each %$shares) {
- # warn "share_redo $pkg\:: $var";
- $obj->share_from($pkg, [ $var ], 1);
- }
-}
-sub share_forget {
- delete shift->{Shares};
-}
-
-sub varglob {
- my ($obj, $var) = @_;
- no strict 'refs';
- return *{$obj->root()."::$var"};
-}
-
-
-sub reval {
- my ($obj, $expr, $strict) = @_;
- my $root = $obj->{Root};
-
- my $evalsub = lexless_anon_sub($root,$strict, $expr);
- return Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub);
-}
-
-sub rdo {
- my ($obj, $file) = @_;
- my $root = $obj->{Root};
-
- my $evalsub = eval
- sprintf('package %s; sub { @_ = (); do $file }', $root);
- return Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub);
-}
-
-
-1;
-
-__END__
-
-=head1 NAME
-
-Safe - Compile and execute code in restricted compartments
-
-=head1 SYNOPSIS
-
- use Safe;
-
- $compartment = new Safe;
-
- $compartment->permit(qw(time sort :browse));
-
- $result = $compartment->reval($unsafe_code);
-
-=head1 DESCRIPTION
-
-The Safe extension module allows the creation of compartments
-in which perl code can be evaluated. Each compartment has
-
-=over 8
-
-=item a new namespace
-
-The "root" of the namespace (i.e. "main::") is changed to a
-different package and code evaluated in the compartment cannot
-refer to variables outside this namespace, even with run-time
-glob lookups and other tricks.
-
-Code which is compiled outside the compartment can choose to place
-variables into (or I<share> variables with) the compartment's namespace
-and only that data will be visible to code evaluated in the
-compartment.
-
-By default, the only variables shared with compartments are the
-"underscore" variables $_ and @_ (and, technically, the less frequently
-used %_, the _ filehandle and so on). This is because otherwise perl
-operators which default to $_ will not work and neither will the
-assignment of arguments to @_ on subroutine entry.
-
-=item an operator mask
-
-Each compartment has an associated "operator mask". Recall that
-perl code is compiled into an internal format before execution.
-Evaluating perl code (e.g. via "eval" or "do 'file'") causes
-the code to be compiled into an internal format and then,
-provided there was no error in the compilation, executed.
-Code evaluated in a compartment compiles subject to the
-compartment's operator mask. Attempting to evaluate code in a
-compartment which contains a masked operator will cause the
-compilation to fail with an error. The code will not be executed.
-
-The default operator mask for a newly created compartment is
-the ':default' optag.
-
-It is important that you read the Opcode(3) module documentation
-for more information, especially for detailed definitions of opnames,
-optags and opsets.
-
-Since it is only at the compilation stage that the operator mask
-applies, controlled access to potentially unsafe operations can
-be achieved by having a handle to a wrapper subroutine (written
-outside the compartment) placed into the compartment. For example,
-
- $cpt = new Safe;
- sub wrapper {
- # vet arguments and perform potentially unsafe operations
- }
- $cpt->share('&wrapper');
-
-=back
-
-
-=head1 WARNING
-
-The authors make B<no warranty>, implied or otherwise, about the
-suitability of this software for safety or security purposes.
-
-The authors shall not in any case be liable for special, incidental,
-consequential, indirect or other similar damages arising from the use
-of this software.
-
-Your mileage will vary. If in any doubt B<do not use it>.
-
-
-=head2 RECENT CHANGES
-
-The interface to the Safe module has changed quite dramatically since
-version 1 (as supplied with Perl5.002). Study these pages carefully if
-you have code written to use Safe version 1 because you will need to
-makes changes.
-
-
-=head2 Methods in class Safe
-
-To create a new compartment, use
-
- $cpt = new Safe;
-
-Optional argument is (NAMESPACE), where NAMESPACE is the root namespace
-to use for the compartment (defaults to "Safe::Root0", incremented for
-each new compartment).
-
-Note that version 1.00 of the Safe module supported a second optional
-parameter, MASK. That functionality has been withdrawn pending deeper
-consideration. Use the permit and deny methods described below.
-
-The following methods can then be used on the compartment
-object returned by the above constructor. The object argument
-is implicit in each case.
-
-
-=over 8
-
-=item permit (OP, ...)
-
-Permit the listed operators to be used when compiling code in the
-compartment (in I<addition> to any operators already permitted).
-
-You can list opcodes by names, or use a tag name; see
-L<Opcode/"Predefined Opcode Tags">.
-
-=item permit_only (OP, ...)
-
-Permit I<only> the listed operators to be used when compiling code in
-the compartment (I<no> other operators are permitted).
-
-=item deny (OP, ...)
-
-Deny the listed operators from being used when compiling code in the
-compartment (other operators may still be permitted).
-
-=item deny_only (OP, ...)
-
-Deny I<only> the listed operators from being used when compiling code
-in the compartment (I<all> other operators will be permitted).
-
-=item trap (OP, ...)
-
-=item untrap (OP, ...)
-
-The trap and untrap methods are synonyms for deny and permit
-respectfully.
-
-=item share (NAME, ...)
-
-This shares the variable(s) in the argument list with the compartment.
-This is almost identical to exporting variables using the L<Exporter>
-module.
-
-Each NAME must be the B<name> of a non-lexical variable, typically
-with the leading type identifier included. A bareword is treated as a
-function name.
-
-Examples of legal names are '$foo' for a scalar, '@foo' for an
-array, '%foo' for a hash, '&foo' or 'foo' for a subroutine and '*foo'
-for a glob (i.e. all symbol table entries associated with "foo",
-including scalar, array, hash, sub and filehandle).
-
-Each NAME is assumed to be in the calling package. See share_from
-for an alternative method (which share uses).
-
-=item share_from (PACKAGE, ARRAYREF)
-
-This method is similar to share() but allows you to explicitly name the
-package that symbols should be shared from. The symbol names (including
-type characters) are supplied as an array reference.
-
- $safe->share_from('main', [ '$foo', '%bar', 'func' ]);
-
-
-=item varglob (VARNAME)
-
-This returns a glob reference for the symbol table entry of VARNAME in
-the package of the compartment. VARNAME must be the B<name> of a
-variable without any leading type marker. For example,
-
- $cpt = new Safe 'Root';
- $Root::foo = "Hello world";
- # Equivalent version which doesn't need to know $cpt's package name:
- ${$cpt->varglob('foo')} = "Hello world";
-
-
-=item reval (STRING)
-
-This evaluates STRING as perl code inside the compartment.
-
-The code can only see the compartment's namespace (as returned by the
-B<root> method). The compartment's root package appears to be the
-C<main::> package to the code inside the compartment.
-
-Any attempt by the code in STRING to use an operator which is not permitted
-by the compartment will cause an error (at run-time of the main program
-but at compile-time for the code in STRING). The error is of the form
-"'%s' trapped by operation mask...".
-
-If an operation is trapped in this way, then the code in STRING will
-not be executed. If such a trapped operation occurs or any other
-compile-time or return error, then $@ is set to the error message, just
-as with an eval().
-
-If there is no error, then the method returns the value of the last
-expression evaluated, or a return statement may be used, just as with
-subroutines and B<eval()>. The context (list or scalar) is determined
-by the caller as usual.
-
-This behaviour differs from the beta distribution of the Safe extension
-where earlier versions of perl made it hard to mimic the return
-behaviour of the eval() command and the context was always scalar.
-
-Some points to note:
-
-If the entereval op is permitted then the code can use eval "..." to
-'hide' code which might use denied ops. This is not a major problem
-since when the code tries to execute the eval it will fail because the
-opmask is still in effect. However this technique would allow clever,
-and possibly harmful, code to 'probe' the boundaries of what is
-possible.
-
-Any string eval which is executed by code executing in a compartment,
-or by code called from code executing in a compartment, will be eval'd
-in the namespace of the compartment. This is potentially a serious
-problem.
-
-Consider a function foo() in package pkg compiled outside a compartment
-but shared with it. Assume the compartment has a root package called
-'Root'. If foo() contains an eval statement like eval '$foo = 1' then,
-normally, $pkg::foo will be set to 1. If foo() is called from the
-compartment (by whatever means) then instead of setting $pkg::foo, the
-eval will actually set $Root::pkg::foo.
-
-This can easily be demonstrated by using a module, such as the Socket
-module, which uses eval "..." as part of an AUTOLOAD function. You can
-'use' the module outside the compartment and share an (autoloaded)
-function with the compartment. If an autoload is triggered by code in
-the compartment, or by any code anywhere that is called by any means
-from the compartment, then the eval in the Socket module's AUTOLOAD
-function happens in the namespace of the compartment. Any variables
-created or used by the eval'd code are now under the control of
-the code in the compartment.
-
-A similar effect applies to I<all> runtime symbol lookups in code
-called from a compartment but not compiled within it.
-
-
-
-=item rdo (FILENAME)
-
-This evaluates the contents of file FILENAME inside the compartment.
-See above documentation on the B<reval> method for further details.
-
-=item root (NAMESPACE)
-
-This method returns the name of the package that is the root of the
-compartment's namespace.
-
-Note that this behaviour differs from version 1.00 of the Safe module
-where the root module could be used to change the namespace. That
-functionality has been withdrawn pending deeper consideration.
-
-=item mask (MASK)
-
-This is a get-or-set method for the compartment's operator mask.
-
-With no MASK argument present, it returns the current operator mask of
-the compartment.
-
-With the MASK argument present, it sets the operator mask for the
-compartment (equivalent to calling the deny_only method).
-
-=back
-
-
-=head2 Some Safety Issues
-
-This section is currently just an outline of some of the things code in
-a compartment might do (intentionally or unintentionally) which can
-have an effect outside the compartment.
-
-=over 8
-
-=item Memory
-
-Consuming all (or nearly all) available memory.
-
-=item CPU
-
-Causing infinite loops etc.
-
-=item Snooping
-
-Copying private information out of your system. Even something as
-simple as your user name is of value to others. Much useful information
-could be gleaned from your environment variables for example.
-
-=item Signals
-
-Causing signals (especially SIGFPE and SIGALARM) to affect your process.
-
-Setting up a signal handler will need to be carefully considered
-and controlled. What mask is in effect when a signal handler
-gets called? If a user can get an imported function to get an
-exception and call the user's signal handler, does that user's
-restricted mask get re-instated before the handler is called?
-Does an imported handler get called with its original mask or
-the user's one?
-
-=item State Changes
-
-Ops such as chdir obviously effect the process as a whole and not just
-the code in the compartment. Ops such as rand and srand have a similar
-but more subtle effect.
-
-=back
-
-=head2 AUTHOR
-
-Originally designed and implemented by Malcolm Beattie,
-mbeattie@sable.ox.ac.uk.
-
-Reworked to use the Opcode module and other changes added by Tim Bunce
-E<lt>F<Tim.Bunce@ig.co.uk>E<gt>.
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Scalar/Util.pm b/Master/tlpkg/tlperl/lib/Scalar/Util.pm
deleted file mode 100644
index 4ae525a17c0..00000000000
--- a/Master/tlpkg/tlperl/lib/Scalar/Util.pm
+++ /dev/null
@@ -1,147 +0,0 @@
-# Scalar::Util.pm
-#
-# Copyright (c) 1997-2005 Graham Barr <gbarr@pobox.com>. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-
-package Scalar::Util;
-
-use strict;
-use vars qw(@ISA @EXPORT_OK $VERSION);
-require Exporter;
-require List::Util; # List::Util loads the XS
-
-@ISA = qw(Exporter);
-@EXPORT_OK = qw(blessed dualvar reftype weaken isweak tainted readonly openhandle refaddr isvstring looks_like_number set_prototype);
-$VERSION = "1.18";
-$VERSION = eval $VERSION;
-
-sub export_fail {
- if (grep { /^(weaken|isweak)$/ } @_ ) {
- require Carp;
- Carp::croak("Weak references are not implemented in the version of perl");
- }
- if (grep { /^(isvstring)$/ } @_ ) {
- require Carp;
- Carp::croak("Vstrings are not implemented in the version of perl");
- }
- if (grep { /^(dualvar|set_prototype)$/ } @_ ) {
- require Carp;
- Carp::croak("$1 is only avaliable with the XS version");
- }
-
- @_;
-}
-
-sub openhandle ($) {
- my $fh = shift;
- my $rt = reftype($fh) || '';
-
- return defined(fileno($fh)) ? $fh : undef
- if $rt eq 'IO';
-
- if (reftype(\$fh) eq 'GLOB') { # handle openhandle(*DATA)
- $fh = \(my $tmp=$fh);
- }
- elsif ($rt ne 'GLOB') {
- return undef;
- }
-
- (tied(*$fh) or defined(fileno($fh)))
- ? $fh : undef;
-}
-
-eval <<'ESQ' unless defined &dualvar;
-
-use vars qw(@EXPORT_FAIL);
-push @EXPORT_FAIL, qw(weaken isweak dualvar isvstring set_prototype);
-
-# The code beyond here is only used if the XS is not installed
-
-# Hope nobody defines a sub by this name
-sub UNIVERSAL::a_sub_not_likely_to_be_here { ref($_[0]) }
-
-sub blessed ($) {
- local($@, $SIG{__DIE__}, $SIG{__WARN__});
- length(ref($_[0]))
- ? eval { $_[0]->a_sub_not_likely_to_be_here }
- : undef
-}
-
-sub refaddr($) {
- my $pkg = ref($_[0]) or return undef;
- if (blessed($_[0])) {
- bless $_[0], 'Scalar::Util::Fake';
- }
- else {
- $pkg = undef;
- }
- "$_[0]" =~ /0x(\w+)/;
- my $i = do { local $^W; hex $1 };
- bless $_[0], $pkg if defined $pkg;
- $i;
-}
-
-sub reftype ($) {
- local($@, $SIG{__DIE__}, $SIG{__WARN__});
- my $r = shift;
- my $t;
-
- length($t = ref($r)) or return undef;
-
- # This eval will fail if the reference is not blessed
- eval { $r->a_sub_not_likely_to_be_here; 1 }
- ? do {
- $t = eval {
- # we have a GLOB or an IO. Stringify a GLOB gives it's name
- my $q = *$r;
- $q =~ /^\*/ ? "GLOB" : "IO";
- }
- or do {
- # OK, if we don't have a GLOB what parts of
- # a glob will it populate.
- # NOTE: A glob always has a SCALAR
- local *glob = $r;
- defined *glob{ARRAY} && "ARRAY"
- or defined *glob{HASH} && "HASH"
- or defined *glob{CODE} && "CODE"
- or length(ref(${$r})) ? "REF" : "SCALAR";
- }
- }
- : $t
-}
-
-sub tainted {
- local($@, $SIG{__DIE__}, $SIG{__WARN__});
- local $^W = 0;
- eval { kill 0 * $_[0] };
- $@ =~ /^Insecure/;
-}
-
-sub readonly {
- return 0 if tied($_[0]) || (ref(\($_[0])) ne "SCALAR");
-
- local($@, $SIG{__DIE__}, $SIG{__WARN__});
- my $tmp = $_[0];
-
- !eval { $_[0] = $tmp; 1 };
-}
-
-sub looks_like_number {
- local $_ = shift;
-
- # checks from perlfaq4
- return 0 if !defined($_) or ref($_);
- return 1 if (/^[+-]?\d+$/); # is a +/- integer
- return 1 if (/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/); # a C float
- return 1 if ($] >= 5.008 and /^(Inf(inity)?|NaN)$/i) or ($] >= 5.006001 and /^Inf$/i);
-
- 0;
-}
-
-ESQ
-
-1;
-
-__END__
-
diff --git a/Master/tlpkg/tlperl/lib/SelectSaver.pm b/Master/tlpkg/tlperl/lib/SelectSaver.pm
deleted file mode 100644
index 1207b88a4a2..00000000000
--- a/Master/tlpkg/tlperl/lib/SelectSaver.pm
+++ /dev/null
@@ -1,54 +0,0 @@
-package SelectSaver;
-
-our $VERSION = '1.01';
-
-=head1 NAME
-
-SelectSaver - save and restore selected file handle
-
-=head1 SYNOPSIS
-
- use SelectSaver;
-
- {
- my $saver = new SelectSaver(FILEHANDLE);
- # FILEHANDLE is selected
- }
- # previous handle is selected
-
- {
- my $saver = new SelectSaver;
- # new handle may be selected, or not
- }
- # previous handle is selected
-
-=head1 DESCRIPTION
-
-A C<SelectSaver> object contains a reference to the file handle that
-was selected when it was created. If its C<new> method gets an extra
-parameter, then that parameter is selected; otherwise, the selected
-file handle remains unchanged.
-
-When a C<SelectSaver> is destroyed, it re-selects the file handle
-that was selected when it was created.
-
-=cut
-
-require 5.000;
-use Carp;
-use Symbol;
-
-sub new {
- @_ >= 1 && @_ <= 2 or croak 'usage: new SelectSaver [FILEHANDLE]';
- my $fh = select;
- my $self = bless \$fh, $_[0];
- select qualify($_[1], caller) if @_ > 1;
- $self;
-}
-
-sub DESTROY {
- my $self = $_[0];
- select $$self;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Symbol.pm b/Master/tlpkg/tlperl/lib/Symbol.pm
deleted file mode 100644
index 3bb5d9240c1..00000000000
--- a/Master/tlpkg/tlperl/lib/Symbol.pm
+++ /dev/null
@@ -1,170 +0,0 @@
-package Symbol;
-
-=head1 NAME
-
-Symbol - manipulate Perl symbols and their names
-
-=head1 SYNOPSIS
-
- use Symbol;
-
- $sym = gensym;
- open($sym, "filename");
- $_ = <$sym>;
- # etc.
-
- ungensym $sym; # no effect
-
- # replace *FOO{IO} handle but not $FOO, %FOO, etc.
- *FOO = geniosym;
-
- print qualify("x"), "\n"; # "Test::x"
- print qualify("x", "FOO"), "\n" # "FOO::x"
- print qualify("BAR::x"), "\n"; # "BAR::x"
- print qualify("BAR::x", "FOO"), "\n"; # "BAR::x"
- print qualify("STDOUT", "FOO"), "\n"; # "main::STDOUT" (global)
- print qualify(\*x), "\n"; # returns \*x
- print qualify(\*x, "FOO"), "\n"; # returns \*x
-
- use strict refs;
- print { qualify_to_ref $fh } "foo!\n";
- $ref = qualify_to_ref $name, $pkg;
-
- use Symbol qw(delete_package);
- delete_package('Foo::Bar');
- print "deleted\n" unless exists $Foo::{'Bar::'};
-
-=head1 DESCRIPTION
-
-C<Symbol::gensym> creates an anonymous glob and returns a reference
-to it. Such a glob reference can be used as a file or directory
-handle.
-
-For backward compatibility with older implementations that didn't
-support anonymous globs, C<Symbol::ungensym> is also provided.
-But it doesn't do anything.
-
-C<Symbol::geniosym> creates an anonymous IO handle. This can be
-assigned into an existing glob without affecting the non-IO portions
-of the glob.
-
-C<Symbol::qualify> turns unqualified symbol names into qualified
-variable names (e.g. "myvar" -E<gt> "MyPackage::myvar"). If it is given a
-second parameter, C<qualify> uses it as the default package;
-otherwise, it uses the package of its caller. Regardless, global
-variable names (e.g. "STDOUT", "ENV", "SIG") are always qualified with
-"main::".
-
-Qualification applies only to symbol names (strings). References are
-left unchanged under the assumption that they are glob references,
-which are qualified by their nature.
-
-C<Symbol::qualify_to_ref> is just like C<Symbol::qualify> except that it
-returns a glob ref rather than a symbol name, so you can use the result
-even if C<use strict 'refs'> is in effect.
-
-C<Symbol::delete_package> wipes out a whole package namespace. Note
-this routine is not exported by default--you may want to import it
-explicitly.
-
-=head1 BUGS
-
-C<Symbol::delete_package> is a bit too powerful. It undefines every symbol that
-lives in the specified package. Since perl, for performance reasons, does not
-perform a symbol table lookup each time a function is called or a global
-variable is accessed, some code that has already been loaded and that makes use
-of symbols in package C<Foo> may stop working after you delete C<Foo>, even if
-you reload the C<Foo> module afterwards.
-
-=cut
-
-BEGIN { require 5.005; }
-
-require Exporter;
-@ISA = qw(Exporter);
-@EXPORT = qw(gensym ungensym qualify qualify_to_ref);
-@EXPORT_OK = qw(delete_package geniosym);
-
-$VERSION = '1.06';
-
-my $genpkg = "Symbol::";
-my $genseq = 0;
-
-my %global = map {$_ => 1} qw(ARGV ARGVOUT ENV INC SIG STDERR STDIN STDOUT);
-
-#
-# Note that we never _copy_ the glob; we just make a ref to it.
-# If we did copy it, then SVf_FAKE would be set on the copy, and
-# glob-specific behaviors (e.g. C<*$ref = \&func>) wouldn't work.
-#
-sub gensym () {
- my $name = "GEN" . $genseq++;
- my $ref = \*{$genpkg . $name};
- delete $$genpkg{$name};
- $ref;
-}
-
-sub geniosym () {
- my $sym = gensym();
- # force the IO slot to be filled
- select(select $sym);
- *$sym{IO};
-}
-
-sub ungensym ($) {}
-
-sub qualify ($;$) {
- my ($name) = @_;
- if (!ref($name) && index($name, '::') == -1 && index($name, "'") == -1) {
- my $pkg;
- # Global names: special character, "^xyz", or other.
- if ($name =~ /^(([^a-z])|(\^[a-z_]+))\z/i || $global{$name}) {
- # RGS 2001-11-05 : translate leading ^X to control-char
- $name =~ s/^\^([a-z_])/'qq(\c'.$1.')'/eei;
- $pkg = "main";
- }
- else {
- $pkg = (@_ > 1) ? $_[1] : caller;
- }
- $name = $pkg . "::" . $name;
- }
- $name;
-}
-
-sub qualify_to_ref ($;$) {
- return \*{ qualify $_[0], @_ > 1 ? $_[1] : caller };
-}
-
-#
-# of Safe.pm lineage
-#
-sub delete_package ($) {
- my $pkg = shift;
-
- # expand to full symbol table name if needed
-
- unless ($pkg =~ /^main::.*::$/) {
- $pkg = "main$pkg" if $pkg =~ /^::/;
- $pkg = "main::$pkg" unless $pkg =~ /^main::/;
- $pkg .= '::' unless $pkg =~ /::$/;
- }
-
- my($stem, $leaf) = $pkg =~ m/(.*::)(\w+::)$/;
- my $stem_symtab = *{$stem}{HASH};
- return unless defined $stem_symtab and exists $stem_symtab->{$leaf};
-
-
- # free all the symbols in the package
-
- my $leaf_symtab = *{$stem_symtab->{$leaf}}{HASH};
- foreach my $name (keys %$leaf_symtab) {
- undef *{$pkg . $name};
- }
-
- # delete the symbol table
-
- %$leaf_symtab = ();
- delete $stem_symtab->{$leaf};
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Term/ANSIColor.pm b/Master/tlpkg/tlperl/lib/Term/ANSIColor.pm
deleted file mode 100644
index 9320fa06b23..00000000000
--- a/Master/tlpkg/tlperl/lib/Term/ANSIColor.pm
+++ /dev/null
@@ -1,472 +0,0 @@
-# Term::ANSIColor -- Color screen output using ANSI escape sequences.
-# $Id: ANSIColor.pm,v 1.10 2005/08/21 18:31:58 eagle Exp $
-#
-# Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2005
-# by Russ Allbery <rra@stanford.edu> and Zenin
-#
-# This program is free software; you may redistribute it and/or modify it
-# under the same terms as Perl itself.
-#
-# Ah, September, when the sysadmins turn colors and fall off the trees....
-# -- Dave Van Domelen
-
-##############################################################################
-# Modules and declarations
-##############################################################################
-
-package Term::ANSIColor;
-require 5.001;
-
-use strict;
-use vars qw($AUTOLOAD $AUTORESET $EACHLINE @ISA @EXPORT @EXPORT_OK
- %EXPORT_TAGS $VERSION %attributes %attributes_r);
-
-use Exporter ();
-@ISA = qw(Exporter);
-@EXPORT = qw(color colored);
-@EXPORT_OK = qw(uncolor);
-%EXPORT_TAGS = (constants => [qw(CLEAR RESET BOLD DARK 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');
-
-# 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.
-$VERSION = '1.10';
-
-##############################################################################
-# Internal data structures
-##############################################################################
-
-%attributes = ('clear' => 0,
- 'reset' => 0,
- 'bold' => 1,
- 'dark' => 2,
- 'underline' => 4,
- 'underscore' => 4,
- 'blink' => 5,
- 'reverse' => 7,
- 'concealed' => 8,
-
- 'black' => 30, 'on_black' => 40,
- 'red' => 31, 'on_red' => 41,
- 'green' => 32, 'on_green' => 42,
- 'yellow' => 33, 'on_yellow' => 43,
- 'blue' => 34, 'on_blue' => 44,
- 'magenta' => 35, 'on_magenta' => 45,
- 'cyan' => 36, 'on_cyan' => 46,
- 'white' => 37, 'on_white' => 47);
-
-# Reverse lookup. Alphabetically first name for a sequence is preferred.
-for (reverse sort keys %attributes) {
- $attributes_r{$attributes{$_}} = $_;
-}
-
-##############################################################################
-# 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.
-#
-# If the environment variable ANSI_COLORS_DISABLED is set, turn all of the
-# generated subs into pass-through functions that don't add any escape
-# sequences. This is to make it easier to write scripts that also work on
-# systems without any ANSI support, like Windows consoles.
-sub AUTOLOAD {
- my $enable_colors = !defined $ENV{ANSI_COLORS_DISABLED};
- my $sub;
- ($sub = $AUTOLOAD) =~ s/^.*:://;
- my $attr = $attributes{lc $sub};
- if ($sub =~ /^[A-Z_]+$/ && defined $attr) {
- $attr = $enable_colors ? "\e[" . $attr . 'm' : '';
- eval qq {
- sub $AUTOLOAD {
- if (\$AUTORESET && \@_) {
- '$attr' . "\@_" . "\e[0m";
- } else {
- ('$attr' . "\@_");
- }
- }
- };
- goto &$AUTOLOAD;
- } else {
- require Carp;
- Carp::croak ("undefined subroutine &$AUTOLOAD called");
- }
-}
-
-##############################################################################
-# Implementation (attribute string form)
-##############################################################################
-
-# Return the escape code for a given set of color attributes.
-sub color {
- return '' if defined $ENV{ANSI_COLORS_DISABLED};
- my @codes = map { split } @_;
- my $attribute = '';
- foreach (@codes) {
- $_ = lc $_;
- unless (defined $attributes{$_}) {
- require Carp;
- Carp::croak ("Invalid attribute name $_");
- }
- $attribute .= $attributes{$_} . ';';
- }
- chop $attribute;
- ($attribute ne '') ? "\e[${attribute}m" : undef;
-}
-
-# Return a list of named color attributes for a given set of escape codes.
-# Escape sequences can be given with or without enclosing "\e[" and "m". The
-# empty escape sequence '' or "\e[m" gives an empty list of attrs.
-sub uncolor {
- my (@nums, @result);
- for (@_) {
- my $escape = $_;
- $escape =~ s/^\e\[//;
- $escape =~ s/m$//;
- unless ($escape =~ /^((?:\d+;)*\d*)$/) {
- require Carp;
- Carp::croak ("Bad escape sequence $_");
- }
- push (@nums, split (/;/, $1));
- }
- for (@nums) {
- $_ += 0; # Strip leading zeroes
- my $name = $attributes_r{$_};
- if (!defined $name) {
- require Carp;
- Carp::croak ("No name for escape sequence $_" );
- }
- push (@result, $name);
- }
- @result;
-}
-
-# Given a string and a set of attributes, returns the string surrounded by
-# escape codes to set those attributes and then clear them at the end of the
-# string. The attributes can be given either as an array ref as the first
-# argument or as a list as the second and subsequent arguments. If $EACHLINE
-# is set, insert a reset before each occurrence of the string $EACHLINE and
-# the starting attribute code after the string $EACHLINE, so that no attribute
-# crosses line delimiters (this is often desirable if the output is to be
-# piped to a pager or some other program).
-sub colored {
- my ($string, @codes);
- if (ref $_[0]) {
- @codes = @{+shift};
- $string = join ('', @_);
- } else {
- $string = shift;
- @codes = @_;
- }
- return $string if defined $ENV{ANSI_COLORS_DISABLED};
- if (defined $EACHLINE) {
- my $attr = color (@codes);
- join '',
- map { $_ ne $EACHLINE ? $attr . $_ . "\e[0m" : $_ }
- grep { length ($_) > 0 }
- split (/(\Q$EACHLINE\E)/, $string);
- } else {
- color (@codes) . $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";
- print colored ['yellow on_magenta'], "Yellow on magenta.\n";
-
- use Term::ANSIColor qw(uncolor);
- print uncolor '01;31', "\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. It also offers the utility function uncolor(),
-which has to be explicitly imported to be used (see L<SYNOPSIS>).
-
-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).
-
-uncolor() performs the opposite translation, turning escape sequences
-into a list of strings.
-
-The recognized attributes (all of which should be fairly intuitive) are
-clear, reset, dark, 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 not all attributes are supported by all terminal types, and some
-terminals may not support any of these sequences. Dark, blink, and
-concealed in particular are frequently not implemented.
-
-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.
-Alternately, you can pass a reference to an array as the first argument, and
-then the contents of that array will be taken as attributes and color codes
-and the remainder of the arguments as text to colorize.
-
-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, DARK, 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, 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 two subroutines are exported into your namespace, versus
-twenty-two 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
-subroutines that you may not even use that often, or risk a silly bug by
-mistyping an attribute. Your choice, TMTOWTDI after all.
-
-=head1 DIAGNOSTICS
-
-=over 4
-
-=item Bad escape sequence %s
-
-(F) You passed an invalid ANSI escape sequence to uncolor().
-
-=item Bareword "%s" not allowed while "strict subs" in use
-
-(F) 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).
-
-=item Invalid attribute name %s
-
-(F) You passed an invalid attribute name to either color() or colored().
-
-=item Name "%s" used only once: possible typo
-
-(W) 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
-
-(F) 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 No name for escape sequence %s
-
-(F) The ANSI escape sequence passed to uncolor() contains escapes which
-aren't recognized and can't be translated to names.
-
-=back
-
-=head1 ENVIRONMENT
-
-=over 4
-
-=item ANSI_COLORS_DISABLED
-
-If this environment variable is set, all of the functions defined by this
-module (color(), colored(), and all of the constants not previously used in
-the program) will not output any escape sequences and instead will just
-return the empty string or pass through the original text as appropriate.
-This is intended to support easy use of scripts using this module on
-platforms that don't support ANSI escape sequences.
-
-For it to have its proper effect, this environment variable must be set
-before any color constants are used in the program.
-
-=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 NOTES
-
-The codes generated by this module are standard terminal control codes,
-complying with ECMA-48 and ISO 6429 (generally referred to as "ANSI color"
-for the color codes). The non-color control codes (bold, dark, italic,
-underline, and reverse) are part of the earlier ANSI X3.64 standard for
-control sequences for video terminals and peripherals.
-
-Note that not all displays are ISO 6429-compliant, or even X3.64-compliant
-(or are even attempting to be so). This module will not work as expected on
-displays that do not honor these escape sequences, such as cmd.exe, 4nt.exe,
-and command.com under either Windows NT or Windows 2000. They may just be
-ignored, or they may display as an ESC character followed by some apparent
-garbage.
-
-Jean Delvare provided the following table of different common terminal
-emulators and their support for the various attributes and others have helped
-me flesh it out:
-
- clear bold dark under blink reverse conceal
- ------------------------------------------------------------------------
- xterm yes yes no yes bold yes yes
- linux yes yes yes bold yes yes no
- rxvt yes yes no yes bold/black yes no
- dtterm yes yes yes yes reverse yes yes
- teraterm yes reverse no yes rev/red yes no
- aixterm kinda normal no yes no yes yes
- PuTTY yes color no yes no yes no
- Windows yes no no no no yes no
- Cygwin SSH yes yes no color color color yes
- Mac Terminal yes yes no yes yes yes yes
-
-Windows is Windows telnet, Cygwin SSH is the OpenSSH implementation under
-Cygwin on Windows NT, and Mac Terminal is the Terminal application in Mac OS
-X. Where the entry is other than yes or no, that emulator displays the
-given attribute as something else instead. Note that on an aixterm, clear
-doesn't reset colors; you have to explicitly set the colors back to what you
-want. More entries in this table are welcome.
-
-Note that codes 3 (italic), 6 (rapid blink), and 9 (strikethrough) are
-specified in ANSI X3.64 and ECMA-048 but are not commonly supported by most
-displays and emulators and therefore aren't supported by this module at the
-present time. ECMA-048 also specifies a large number of other attributes,
-including a sequence of attributes for font changes, Fraktur characters,
-double-underlining, framing, circling, and overlining. As none of these
-attributes are widely supported or useful, they also aren't currently
-supported by this module.
-
-=head1 SEE ALSO
-
-ECMA-048 is available on-line (at least at the time of this writing) at
-L<http://www.ecma-international.org/publications/standards/ECMA-048.HTM>.
-
-ISO 6429 is available from ISO for a charge; the author of this module does
-not own a copy of it. Since the source material for ISO 6429 was ECMA-048
-and the latter is available for free, there seems little reason to obtain
-the ISO standard.
-
-The current version of this module is always available from its web site at
-L<http://www.eyrie.org/~eagle/software/ansicolor/>. It is also part of the
-Perl core distribution as of 5.6.0.
-
-=head1 AUTHORS
-
-Original idea (using constants) by Zenin, reimplemented using subs by Russ
-Allbery <rra@stanford.edu>, and then combined with the original idea by Russ
-with input from Zenin. Russ Allbery now maintains this module.
-
-=head1 COPYRIGHT AND LICENSE
-
-Copyright 1996, 1997, 1998, 2000, 2001, 2002 Russ Allbery <rra@stanford.edu>
-and Zenin. This program is free software; you may redistribute it and/or
-modify it under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Term/Cap.pm b/Master/tlpkg/tlperl/lib/Term/Cap.pm
deleted file mode 100644
index b71c51ceba4..00000000000
--- a/Master/tlpkg/tlperl/lib/Term/Cap.pm
+++ /dev/null
@@ -1,669 +0,0 @@
-package Term::Cap;
-
-# Since the debugger uses Term::ReadLine which uses Term::Cap, we want
-# to load as few modules as possible. This includes Carp.pm.
-sub carp {
- require Carp;
- goto &Carp::carp;
-}
-
-sub croak {
- require Carp;
- goto &Carp::croak;
-}
-
-use strict;
-
-use vars qw($VERSION $VMS_TERMCAP);
-use vars qw($termpat $state $first $entry);
-
-$VERSION = '1.09';
-
-# Version undef: Thu Dec 14 20:02:42 CST 1995 by sanders@bsdi.com
-# Version 1.00: Thu Nov 30 23:34:29 EST 2000 by schwern@pobox.com
-# [PATCH] $VERSION crusade, strict, tests, etc... all over lib/
-# Version 1.01: Wed May 23 00:00:00 CST 2001 by d-lewart@uiuc.edu
-# Avoid warnings in Tgetent and Tputs
-# Version 1.02: Sat Nov 17 13:50:39 GMT 2001 by jns@gellyfish.com
-# Altered layout of the POD
-# Added Test::More to PREREQ_PM in Makefile.PL
-# Fixed no argument Tgetent()
-# Version 1.03: Wed Nov 28 10:09:38 GMT 2001
-# VMS Support from Charles Lane <lane@DUPHY4.Physics.Drexel.Edu>
-# Version 1.04: Thu Nov 29 16:22:03 GMT 2001
-# Fixed warnings in test
-# Version 1.05: Mon Dec 3 15:33:49 GMT 2001
-# Don't try to fall back on infocmp if it's not there. From chromatic.
-# Version 1.06: Thu Dec 6 18:43:22 GMT 2001
-# Preload the default VMS termcap from Charles Lane
-# Don't carp at setting OSPEED unless warnings are on.
-# Version 1.07: Wed Jan 2 21:35:09 GMT 2002
-# Sanity check on infocmp output from Norton Allen
-# Repaired INSTALLDIRS thanks to Michael Schwern
-# Version 1.08: Sat Sep 28 11:33:15 BST 2002
-# Late loading of 'Carp' as per Michael Schwern
-# Version 1.09: Tue Apr 20 12:06:51 BST 2004
-# Merged in changes from and to Core
-# Core (Fri Aug 30 14:15:55 CEST 2002):
-# Cope with comments lines from 'infocmp' from Brendan O'Dea
-# Allow for EBCDIC in Tgoto magic test.
-
-# TODO:
-# support Berkeley DB termcaps
-# should probably be a .xs module
-# force $FH into callers package?
-# keep $FH in object at Tgetent time?
-
-=head1 NAME
-
-Term::Cap - Perl termcap interface
-
-=head1 SYNOPSIS
-
- require Term::Cap;
- $terminal = Tgetent Term::Cap { TERM => undef, OSPEED => $ospeed };
- $terminal->Trequire(qw/ce ku kd/);
- $terminal->Tgoto('cm', $col, $row, $FH);
- $terminal->Tputs('dl', $count, $FH);
- $terminal->Tpad($string, $count, $FH);
-
-=head1 DESCRIPTION
-
-These are low-level functions to extract and use capabilities from
-a terminal capability (termcap) database.
-
-More information on the terminal capabilities will be found in the
-termcap manpage on most Unix-like systems.
-
-=head2 METHODS
-
-=over 4
-
-The output strings for B<Tputs> are cached for counts of 1 for performance.
-B<Tgoto> and B<Tpad> do not cache. C<$self-E<gt>{_xx}> is the raw termcap
-data and C<$self-E<gt>{xx}> is the cached version.
-
- print $terminal->Tpad($self->{_xx}, 1);
-
-B<Tgoto>, B<Tputs>, and B<Tpad> return the string and will also
-output the string to $FH if specified.
-
-
-=cut
-
-# Preload the default VMS termcap.
-# If a different termcap is required then the text of one can be supplied
-# in $Term::Cap::VMS_TERMCAP before Tgetent is called.
-
-if ( $^O eq 'VMS') {
- chomp (my @entry = <DATA>);
- $VMS_TERMCAP = join '', @entry;
-}
-
-# Returns a list of termcap files to check.
-
-sub termcap_path { ## private
- my @termcap_path;
- # $TERMCAP, if it's a filespec
- push(@termcap_path, $ENV{TERMCAP})
- if ((exists $ENV{TERMCAP}) &&
- (($^O eq 'os2' || $^O eq 'MSWin32' || $^O eq 'dos')
- ? $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}))
- }
- else {
- # Defaults
- push(@termcap_path,
- $ENV{'HOME'} . '/.termcap',
- '/etc/termcap',
- '/usr/share/misc/termcap',
- );
- }
-
- # return the list of those termcaps that exist
- return grep(-f, @termcap_path);
-}
-
-=item B<Tgetent>
-
-Returns a blessed object reference which the user can
-then use to send the control strings to the terminal using B<Tputs>
-and B<Tgoto>.
-
-The function extracts the entry of the specified terminal
-type I<TERM> (defaults to the environment variable I<TERM>) from the
-database.
-
-It will look in the environment for a I<TERMCAP> variable. If
-found, and the value does not begin with a slash, and the terminal
-type name is the same as the environment string I<TERM>, the
-I<TERMCAP> string is used instead of reading a termcap file. If
-it does begin with a slash, the string is used as a path name of
-the termcap file to search. If I<TERMCAP> does not begin with a
-slash and name is different from I<TERM>, B<Tgetent> searches the
-files F<$HOME/.termcap>, F</etc/termcap>, and F</usr/share/misc/termcap>,
-in that order, unless the environment variable I<TERMPATH> exists,
-in which case it specifies a list of file pathnames (separated by
-spaces or colons) to be searched B<instead>. Whenever multiple
-files are searched and a tc field occurs in the requested entry,
-the entry it names must be found in the same file or one of the
-succeeding files. If there is a C<:tc=...:> in the I<TERMCAP>
-environment variable string it will continue the search in the
-files as above.
-
-The extracted termcap entry is available in the object
-as C<$self-E<gt>{TERMCAP}>.
-
-It takes a hash reference as an argument with two optional keys:
-
-=over 2
-
-=item OSPEED
-
-The terminal output bit rate (often mistakenly called the baud rate)
-for this terminal - if not set a warning will be generated
-and it will be defaulted to 9600. I<OSPEED> can be be specified as
-either a POSIX termios/SYSV termio speeds (where 9600 equals 9600) or
-an old DSD-style speed ( where 13 equals 9600).
-
-
-=item TERM
-
-The terminal type whose termcap entry will be used - if not supplied it will
-default to $ENV{TERM}: if that is not set then B<Tgetent> will croak.
-
-=back
-
-It calls C<croak> on failure.
-
-=cut
-
-sub Tgetent { ## public -- static method
- my $class = shift;
- my ($self) = @_;
-
- $self = {} unless defined $self;
- bless $self, $class;
-
- my($term,$cap,$search,$field,$max,$tmp_term,$TERMCAP);
- local($termpat,$state,$first,$entry); # used inside eval
- local $_;
-
- # Compute PADDING factor from OSPEED (to be used by Tpad)
- if (! $self->{OSPEED}) {
- if ( $^W ) {
- carp "OSPEED was not set, defaulting to 9600";
- }
- $self->{OSPEED} = 9600;
- }
- if ($self->{OSPEED} < 16) {
- # delays for old style speeds
- my @pad = (0,200,133.3,90.9,74.3,66.7,50,33.3,16.7,8.3,5.5,4.1,2,1,.5,.2);
- $self->{PADDING} = $pad[$self->{OSPEED}];
- }
- else {
- $self->{PADDING} = 10000 / $self->{OSPEED};
- }
-
- $self->{TERM} = ($self->{TERM} || $ENV{TERM} || croak "TERM not set");
- $term = $self->{TERM}; # $term is the term type we are looking for
-
- # $tmp_term is always the next term (possibly :tc=...:) we are looking for
- $tmp_term = $self->{TERM};
- # protect any pattern metacharacters in $tmp_term
- $termpat = $tmp_term; $termpat =~ s/(\W)/\\$1/g;
-
- my $foo = (exists $ENV{TERMCAP} ? $ENV{TERMCAP} : '');
-
- # $entry is the extracted termcap entry
- if (($foo !~ m:^/:s) && ($foo =~ m/(^|\|)${termpat}[:|]/s)) {
- $entry = $foo;
- }
-
- my @termcap_path = termcap_path();
-
- unless (@termcap_path || $entry)
- {
- # last resort--fake up a termcap from terminfo
- local $ENV{TERM} = $term;
-
- if ( $^O eq 'VMS' ) {
- $entry = $VMS_TERMCAP;
- }
- else {
- if ( grep { -x "$_/infocmp" } split /:/, $ENV{PATH} ) {
- eval
- {
- my $tmp = `infocmp -C 2>/dev/null`;
- $tmp =~ s/^#.*\n//gm; # remove comments
- if (( $tmp !~ m%^/%s ) && ( $tmp =~ /(^|\|)${termpat}[:|]/s)) {
- $entry = $tmp;
- }
- };
- }
- }
- }
-
- croak "Can't find a valid termcap file" unless @termcap_path || $entry;
-
- $state = 1; # 0 == finished
- # 1 == next file
- # 2 == search again
-
- $first = 0; # first entry (keeps term name)
-
- $max = 32; # max :tc=...:'s
-
- if ($entry) {
- # ok, we're starting with $TERMCAP
- $first++; # we're the first entry
- # do we need to continue?
- if ($entry =~ s/:tc=([^:]+):/:/) {
- $tmp_term = $1;
- # protect any pattern metacharacters in $tmp_term
- $termpat = $tmp_term; $termpat =~ s/(\W)/\\$1/g;
- }
- else {
- $state = 0; # we're already finished
- }
- }
-
- # This is eval'ed inside the while loop for each file
- $search = q{
- while (<TERMCAP>) {
- next if /^\\t/ || /^#/;
- if ($_ =~ m/(^|\\|)${termpat}[:|]/o) {
- chomp;
- s/^[^:]*:// if $first++;
- $state = 0;
- while ($_ =~ s/\\\\$//) {
- defined(my $x = <TERMCAP>) or last;
- $_ .= $x; chomp;
- }
- last;
- }
- }
- defined $entry or $entry = '';
- $entry .= $_ if $_;
- };
-
- while ($state != 0) {
- if ($state == 1) {
- # get the next TERMCAP
- $TERMCAP = shift @termcap_path
- || croak "failed termcap lookup on $tmp_term";
- }
- else {
- # do the same file again
- # prevent endless recursion
- $max-- || croak "failed termcap loop at $tmp_term";
- $state = 1; # ok, maybe do a new file next time
- }
-
- open(TERMCAP,"< $TERMCAP\0") || croak "open $TERMCAP: $!";
- eval $search;
- die $@ if $@;
- close TERMCAP;
-
- # If :tc=...: found then search this file again
- $entry =~ s/:tc=([^:]+):/:/ && ($tmp_term = $1, $state = 2);
- # protect any pattern metacharacters in $tmp_term
- $termpat = $tmp_term; $termpat =~ s/(\W)/\\$1/g;
- }
-
- croak "Can't find $term" if $entry eq '';
- $entry =~ s/:+\s*:+/:/g; # cleanup $entry
- $entry =~ s/:+/:/g; # cleanup $entry
- $self->{TERMCAP} = $entry; # save it
- # print STDERR "DEBUG: $entry = ", $entry, "\n";
-
- # Precompile $entry into the object
- $entry =~ s/^[^:]*://;
- foreach $field (split(/:[\s:\\]*/,$entry)) {
- if (defined $field && $field =~ /^(\w\w)$/) {
- $self->{'_' . $field} = 1 unless defined $self->{'_' . $1};
- # print STDERR "DEBUG: flag $1\n";
- }
- elsif (defined $field && $field =~ /^(\w\w)\@/) {
- $self->{'_' . $1} = "";
- # print STDERR "DEBUG: unset $1\n";
- }
- elsif (defined $field && $field =~ /^(\w\w)#(.*)/) {
- $self->{'_' . $1} = $2 unless defined $self->{'_' . $1};
- # print STDERR "DEBUG: numeric $1 = $2\n";
- }
- elsif (defined $field && $field =~ /^(\w\w)=(.*)/) {
- # print STDERR "DEBUG: string $1 = $2\n";
- next if defined $self->{'_' . ($cap = $1)};
- $_ = $2;
- s/\\E/\033/g;
- s/\\(\d\d\d)/pack('c',oct($1) & 0177)/eg;
- s/\\n/\n/g;
- s/\\r/\r/g;
- s/\\t/\t/g;
- s/\\b/\b/g;
- s/\\f/\f/g;
- s/\\\^/\377/g;
- s/\^\?/\177/g;
- s/\^(.)/pack('c',ord($1) & 31)/eg;
- s/\\(.)/$1/g;
- s/\377/^/g;
- $self->{'_' . $cap} = $_;
- }
- # else { carp "junk in $term ignored: $field"; }
- }
- $self->{'_pc'} = "\0" unless defined $self->{'_pc'};
- $self->{'_bc'} = "\b" unless defined $self->{'_bc'};
- $self;
-}
-
-# $terminal->Tpad($string, $cnt, $FH);
-
-=item B<Tpad>
-
-Outputs a literal string with appropriate padding for the current terminal.
-
-It takes three arguments:
-
-=over 2
-
-=item B<$string>
-
-The literal string to be output. If it starts with a number and an optional
-'*' then the padding will be increased by an amount relative to this number,
-if the '*' is present then this amount will me multiplied by $cnt. This part
-of $string is removed before output/
-
-=item B<$cnt>
-
-Will be used to modify the padding applied to string as described above.
-
-=item B<$FH>
-
-An optional filehandle (or IO::Handle ) that output will be printed to.
-
-=back
-
-The padded $string is returned.
-
-=cut
-
-sub Tpad { ## public
- my $self = shift;
- my($string, $cnt, $FH) = @_;
- my($decr, $ms);
-
- if (defined $string && $string =~ /(^[\d.]+)(\*?)(.*)$/) {
- $ms = $1;
- $ms *= $cnt if $2;
- $string = $3;
- $decr = $self->{PADDING};
- if ($decr > .1) {
- $ms += $decr / 2;
- $string .= $self->{'_pc'} x ($ms / $decr);
- }
- }
- print $FH $string if $FH;
- $string;
-}
-
-# $terminal->Tputs($cap, $cnt, $FH);
-
-=item B<Tputs>
-
-Output the string for the given capability padded as appropriate without
-any parameter substitution.
-
-It takes three arguments:
-
-=over 2
-
-=item B<$cap>
-
-The capability whose string is to be output.
-
-=item B<$cnt>
-
-A count passed to Tpad to modify the padding applied to the output string.
-If $cnt is zero or one then the resulting string will be cached.
-
-=item B<$FH>
-
-An optional filehandle (or IO::Handle ) that output will be printed to.
-
-=back
-
-The appropriate string for the capability will be returned.
-
-=cut
-
-sub Tputs { ## public
- my $self = shift;
- my($cap, $cnt, $FH) = @_;
- my $string;
-
- $cnt = 0 unless $cnt;
-
- if ($cnt > 1) {
- $string = Tpad($self, $self->{'_' . $cap}, $cnt);
- } else {
- # cache result because Tpad can be slow
- unless (exists $self->{$cap}) {
- $self->{$cap} = exists $self->{"_$cap"} ?
- Tpad($self, $self->{"_$cap"}, 1) : undef;
- }
- $string = $self->{$cap};
- }
- print $FH $string if $FH;
- $string;
-}
-
-# $terminal->Tgoto($cap, $col, $row, $FH);
-
-=item B<Tgoto>
-
-B<Tgoto> decodes a cursor addressing string with the given parameters.
-
-There are four arguments:
-
-=over 2
-
-=item B<$cap>
-
-The name of the capability to be output.
-
-=item B<$col>
-
-The first value to be substituted in the output string ( usually the column
-in a cursor addressing capability )
-
-=item B<$row>
-
-The second value to be substituted in the output string (usually the row
-in cursor addressing capabilities)
-
-=item B<$FH>
-
-An optional filehandle (or IO::Handle ) to which the output string will be
-printed.
-
-=back
-
-Substitutions are made with $col and $row in the output string with the
-following sprintf() line formats:
-
- %% output `%'
- %d output value as in printf %d
- %2 output value as in printf %2d
- %3 output value as in printf %3d
- %. output value as in printf %c
- %+x add x to value, then do %.
-
- %>xy if value > x then add y, no output
- %r reverse order of two parameters, no output
- %i increment by one, no output
- %B BCD (16*(value/10)) + (value%10), no output
-
- %n exclusive-or all parameters with 0140 (Datamedia 2500)
- %D Reverse coding (value - 2*(value%16)), no output (Delta Data)
-
-The output string will be returned.
-
-=cut
-
-sub Tgoto { ## public
- my $self = shift;
- my($cap, $code, $tmp, $FH) = @_;
- my $string = $self->{'_' . $cap};
- my $result = '';
- my $after = '';
- my $online = 0;
- my @tmp = ($tmp,$code);
- my $cnt = $code;
-
- while ($string =~ /^([^%]*)%(.)(.*)/) {
- $result .= $1;
- $code = $2;
- $string = $3;
- if ($code eq 'd') {
- $result .= sprintf("%d",shift(@tmp));
- }
- elsif ($code eq '.') {
- $tmp = shift(@tmp);
- if ($tmp == 0 || $tmp == 4 || $tmp == 10) {
- if ($online) {
- ++$tmp, $after .= $self->{'_up'} if $self->{'_up'};
- }
- else {
- ++$tmp, $after .= $self->{'_bc'};
- }
- }
- $result .= sprintf("%c",$tmp);
- $online = !$online;
- }
- elsif ($code eq '+') {
- $result .= sprintf("%c",shift(@tmp)+ord($string));
- $string = substr($string,1,99);
- $online = !$online;
- }
- elsif ($code eq 'r') {
- ($code,$tmp) = @tmp;
- @tmp = ($tmp,$code);
- $online = !$online;
- }
- elsif ($code eq '>') {
- ($code,$tmp,$string) = unpack("CCa99",$string);
- if ($tmp[$[] > $code) {
- $tmp[$[] += $tmp;
- }
- }
- elsif ($code eq '2') {
- $result .= sprintf("%02d",shift(@tmp));
- $online = !$online;
- }
- elsif ($code eq '3') {
- $result .= sprintf("%03d",shift(@tmp));
- $online = !$online;
- }
- elsif ($code eq 'i') {
- ($code,$tmp) = @tmp;
- @tmp = ($code+1,$tmp+1);
- }
- else {
- return "OOPS";
- }
- }
- $string = Tpad($self, $result . $string . $after, $cnt);
- print $FH $string if $FH;
- $string;
-}
-
-# $terminal->Trequire(qw/ce ku kd/);
-
-=item B<Trequire>
-
-Takes a list of capabilities as an argument and will croak if one is not
-found.
-
-=cut
-
-sub Trequire { ## public
- my $self = shift;
- my($cap,@undefined);
- foreach $cap (@_) {
- push(@undefined, $cap)
- unless defined $self->{'_' . $cap} && $self->{'_' . $cap};
- }
- croak "Terminal does not support: (@undefined)" if @undefined;
-}
-
-=back
-
-=head1 EXAMPLES
-
- use Term::Cap;
-
- # Get terminal output speed
- require POSIX;
- my $termios = new POSIX::Termios;
- $termios->getattr;
- my $ospeed = $termios->getospeed;
-
- # Old-style ioctl code to get ospeed:
- # require 'ioctl.pl';
- # ioctl(TTY,$TIOCGETP,$sgtty);
- # ($ispeed,$ospeed) = unpack('cc',$sgtty);
-
- # allocate and initialize a terminal structure
- $terminal = Tgetent Term::Cap { TERM => undef, OSPEED => $ospeed };
-
- # require certain capabilities to be available
- $terminal->Trequire(qw/ce ku kd/);
-
- # Output Routines, if $FH is undefined these just return the string
-
- # Tgoto does the % expansion stuff with the given args
- $terminal->Tgoto('cm', $col, $row, $FH);
-
- # Tputs doesn't do any % expansion.
- $terminal->Tputs('dl', $count = 1, $FH);
-
-=head1 COPYRIGHT AND LICENSE
-
-Please see the README file in distribution.
-
-=head1 AUTHOR
-
-This module is part of the core Perl distribution and is also maintained
-for CPAN by Jonathan Stowe <jns@gellyfish.com>.
-
-=head1 SEE ALSO
-
-termcap(5)
-
-=cut
-
-# Below is a default entry for systems where there are terminals but no
-# termcap
-1;
-__DATA__
-vt220|vt200|DEC VT220 in vt100 emulation mode:
-am:mi:xn:xo:
-co#80:li#24:
-RA=\E[?7l:SA=\E[?7h:
-ac=kkllmmjjnnwwqquuttvvxx:ae=\E(B:al=\E[L:as=\E(0:
-bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:
-cr=^M:cs=\E[%i%d;%dr:dc=\E[P:dl=\E[M:do=\E[B:
-ei=\E[4l:ho=\E[H:im=\E[4h:
-is=\E[1;24r\E[24;1H:
-nd=\E[C:
-kd=\E[B::kl=\E[D:kr=\E[C:ku=\E[A:le=^H:
-mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:
-kb=\0177:
-r2=\E>\E[24;1H\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E=:rc=\E8:
-sc=\E7:se=\E[27m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:
-ue=\E[24m:up=\E[A:us=\E[4m:ve=\E[?25h:vi=\E[?25l:
-
diff --git a/Master/tlpkg/tlperl/lib/Term/Complete.pm b/Master/tlpkg/tlperl/lib/Term/Complete.pm
deleted file mode 100644
index 601e4956430..00000000000
--- a/Master/tlpkg/tlperl/lib/Term/Complete.pm
+++ /dev/null
@@ -1,188 +0,0 @@
-package Term::Complete;
-require 5.000;
-require Exporter;
-
-use strict;
-our @ISA = qw(Exporter);
-our @EXPORT = qw(Complete);
-our $VERSION = '1.402';
-
-# @(#)complete.pl,v1.2 (me@anywhere.EBay.Sun.COM) 09/23/91
-
-=head1 NAME
-
-Term::Complete - Perl word completion module
-
-=head1 SYNOPSIS
-
- $input = Complete('prompt_string', \@completion_list);
- $input = Complete('prompt_string', @completion_list);
-
-=head1 DESCRIPTION
-
-This routine provides word completion on the list of words in
-the array (or array ref).
-
-The tty driver is put into raw mode and restored using an operating
-system specific command, in UNIX-like environments C<stty>.
-
-The following command characters are defined:
-
-=over 4
-
-=item E<lt>tabE<gt>
-
-Attempts word completion.
-Cannot be changed.
-
-=item ^D
-
-Prints completion list.
-Defined by I<$Term::Complete::complete>.
-
-=item ^U
-
-Erases the current input.
-Defined by I<$Term::Complete::kill>.
-
-=item E<lt>delE<gt>, E<lt>bsE<gt>
-
-Erases one character.
-Defined by I<$Term::Complete::erase1> and I<$Term::Complete::erase2>.
-
-=back
-
-=head1 DIAGNOSTICS
-
-Bell sounds when word completion fails.
-
-=head1 BUGS
-
-The completion character E<lt>tabE<gt> cannot be changed.
-
-=head1 AUTHOR
-
-Wayne Thompson
-
-=cut
-
-our($complete, $kill, $erase1, $erase2, $tty_raw_noecho, $tty_restore, $stty, $tty_safe_restore);
-our($tty_saved_state) = '';
-CONFIG: {
- $complete = "\004";
- $kill = "\025";
- $erase1 = "\177";
- $erase2 = "\010";
- foreach my $s (qw(/bin/stty /usr/bin/stty)) {
- if (-x $s) {
- $tty_raw_noecho = "$s raw -echo";
- $tty_restore = "$s -raw echo";
- $tty_safe_restore = $tty_restore;
- $stty = $s;
- last;
- }
- }
-}
-
-sub Complete {
- my($prompt, @cmp_lst, $cmp, $test, $l, @match);
- my ($return, $r) = ("", 0);
-
- $return = "";
- $r = 0;
-
- $prompt = shift;
- if (ref $_[0] || $_[0] =~ /^\*/) {
- @cmp_lst = sort @{$_[0]};
- }
- else {
- @cmp_lst = sort(@_);
- }
-
- # Attempt to save the current stty state, to be restored later
- if (defined $stty && defined $tty_saved_state && $tty_saved_state eq '') {
- $tty_saved_state = qx($stty -g 2>/dev/null);
- if ($?) {
- # stty -g not supported
- $tty_saved_state = undef;
- }
- else {
- $tty_saved_state =~ s/\s+$//g;
- $tty_restore = qq($stty "$tty_saved_state" 2>/dev/null);
- }
- }
- system $tty_raw_noecho if defined $tty_raw_noecho;
- LOOP: {
- local $_;
- print($prompt, $return);
- while (($_ = getc(STDIN)) ne "\r") {
- CASE: {
- # (TAB) attempt completion
- $_ eq "\t" && do {
- @match = grep(/^\Q$return/, @cmp_lst);
- unless ($#match < 0) {
- $l = length($test = shift(@match));
- foreach $cmp (@match) {
- until (substr($cmp, 0, $l) eq substr($test, 0, $l)) {
- $l--;
- }
- }
- print("\a");
- print($test = substr($test, $r, $l - $r));
- $r = length($return .= $test);
- }
- last CASE;
- };
-
- # (^D) completion list
- $_ eq $complete && do {
- print(join("\r\n", '', grep(/^\Q$return/, @cmp_lst)), "\r\n");
- redo LOOP;
- };
-
- # (^U) kill
- $_ eq $kill && do {
- if ($r) {
- $r = 0;
- $return = "";
- print("\r\n");
- redo LOOP;
- }
- last CASE;
- };
-
- # (DEL) || (BS) erase
- ($_ eq $erase1 || $_ eq $erase2) && do {
- if($r) {
- print("\b \b");
- chop($return);
- $r--;
- }
- last CASE;
- };
-
- # printable char
- ord >= 32 && do {
- $return .= $_;
- $r++;
- print;
- last CASE;
- };
- }
- }
- }
-
- # system $tty_restore if defined $tty_restore;
- if (defined $tty_saved_state && defined $tty_restore && defined $tty_safe_restore)
- {
- system $tty_restore;
- if ($?) {
- # tty_restore caused error
- system $tty_safe_restore;
- }
- }
- print("\n");
- $return;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Term/ReadLine.pm b/Master/tlpkg/tlperl/lib/Term/ReadLine.pm
deleted file mode 100644
index 48eb9911a6f..00000000000
--- a/Master/tlpkg/tlperl/lib/Term/ReadLine.pm
+++ /dev/null
@@ -1,399 +0,0 @@
-=head1 NAME
-
-Term::ReadLine - Perl interface to various C<readline> packages.
-If no real package is found, substitutes stubs instead of basic functions.
-
-=head1 SYNOPSIS
-
- use Term::ReadLine;
- my $term = new Term::ReadLine 'Simple Perl calc';
- my $prompt = "Enter your arithmetic expression: ";
- my $OUT = $term->OUT || \*STDOUT;
- while ( defined ($_ = $term->readline($prompt)) ) {
- my $res = eval($_);
- warn $@ if $@;
- print $OUT $res, "\n" unless $@;
- $term->addhistory($_) if /\S/;
- }
-
-=head1 DESCRIPTION
-
-This package is just a front end to some other packages. It's a stub to
-set up a common interface to the various ReadLine implementations found on
-CPAN (under the C<Term::ReadLine::*> namespace).
-
-=head1 Minimal set of supported functions
-
-All the supported functions should be called as methods, i.e., either as
-
- $term = new Term::ReadLine 'name';
-
-or as
-
- $term->addhistory('row');
-
-where $term is a return value of Term::ReadLine-E<gt>new().
-
-=over 12
-
-=item C<ReadLine>
-
-returns the actual package that executes the commands. Among possible
-values are C<Term::ReadLine::Gnu>, C<Term::ReadLine::Perl>,
-C<Term::ReadLine::Stub>.
-
-=item C<new>
-
-returns the handle for subsequent calls to following
-functions. Argument is the name of the application. Optionally can be
-followed by two arguments for C<IN> and C<OUT> filehandles. These
-arguments should be globs.
-
-=item C<readline>
-
-gets an input line, I<possibly> with actual C<readline>
-support. Trailing newline is removed. Returns C<undef> on C<EOF>.
-
-=item C<addhistory>
-
-adds the line to the history of input, from where it can be used if
-the actual C<readline> is present.
-
-=item C<IN>, C<OUT>
-
-return the filehandles for input and output or C<undef> if C<readline>
-input and output cannot be used for Perl.
-
-=item C<MinLine>
-
-If argument is specified, it is an advice on minimal size of line to
-be included into history. C<undef> means do not include anything into
-history. Returns the old value.
-
-=item C<findConsole>
-
-returns an array with two strings that give most appropriate names for
-files for input and output using conventions C<"E<lt>$in">, C<"E<gt>out">.
-
-=item Attribs
-
-returns a reference to a hash which describes internal configuration
-of the package. Names of keys in this hash conform to standard
-conventions with the leading C<rl_> stripped.
-
-=item C<Features>
-
-Returns a reference to a hash with keys being features present in
-current implementation. Several optional features are used in the
-minimal interface: C<appname> should be present if the first argument
-to C<new> is recognized, and C<minline> should be present if
-C<MinLine> method is not dummy. C<autohistory> should be present if
-lines are put into history automatically (maybe subject to
-C<MinLine>), and C<addhistory> if C<addhistory> method is not dummy.
-
-If C<Features> method reports a feature C<attribs> as present, the
-method C<Attribs> is not dummy.
-
-=back
-
-=head1 Additional supported functions
-
-Actually C<Term::ReadLine> can use some other package, that will
-support a richer set of commands.
-
-All these commands are callable via method interface and have names
-which conform to standard conventions with the leading C<rl_> stripped.
-
-The stub package included with the perl distribution allows some
-additional methods:
-
-=over 12
-
-=item C<tkRunning>
-
-makes Tk event loop run when waiting for user input (i.e., during
-C<readline> method).
-
-=item C<ornaments>
-
-makes the command line stand out by using termcap data. The argument
-to C<ornaments> should be 0, 1, or a string of a form
-C<"aa,bb,cc,dd">. Four components of this string should be names of
-I<terminal capacities>, first two will be issued to make the prompt
-standout, last two to make the input line standout.
-
-=item C<newTTY>
-
-takes two arguments which are input filehandle and output filehandle.
-Switches to use these filehandles.
-
-=back
-
-One can check whether the currently loaded ReadLine package supports
-these methods by checking for corresponding C<Features>.
-
-=head1 EXPORTS
-
-None
-
-=head1 ENVIRONMENT
-
-The environment variable C<PERL_RL> governs which ReadLine clone is
-loaded. If the value is false, a dummy interface is used. If the value
-is true, it should be tail of the name of the package to use, such as
-C<Perl> or C<Gnu>.
-
-As a special case, if the value of this variable is space-separated,
-the tail might be used to disable the ornaments by setting the tail to
-be C<o=0> or C<ornaments=0>. The head should be as described above, say
-
-If the variable is not set, or if the head of space-separated list is
-empty, the best available package is loaded.
-
- export "PERL_RL=Perl o=0" # Use Perl ReadLine without ornaments
- export "PERL_RL= o=0" # Use best available ReadLine without ornaments
-
-(Note that processing of C<PERL_RL> for ornaments is in the discretion of the
-particular used C<Term::ReadLine::*> package).
-
-=head1 CAVEATS
-
-It seems that using Term::ReadLine from Emacs minibuffer doesn't work
-quite right and one will get an error message like
-
- Cannot open /dev/tty for read at ...
-
-One possible workaround for this is to explicitly open /dev/tty like this
-
- open (FH, "/dev/tty" )
- or eval 'sub Term::ReadLine::findConsole { ("&STDIN", "&STDERR") }';
- die $@ if $@;
- close (FH);
-
-or you can try using the 4-argument form of Term::ReadLine->new().
-
-=cut
-
-use strict;
-
-package Term::ReadLine::Stub;
-our @ISA = qw'Term::ReadLine::Tk Term::ReadLine::TermCap';
-
-$DB::emacs = $DB::emacs; # To peacify -w
-our @rl_term_set;
-*rl_term_set = \@Term::ReadLine::TermCap::rl_term_set;
-
-sub PERL_UNICODE_STDIN () { 0x0001 }
-
-sub ReadLine {'Term::ReadLine::Stub'}
-sub readline {
- my $self = shift;
- my ($in,$out,$str) = @$self;
- my $prompt = shift;
- print $out $rl_term_set[0], $prompt, $rl_term_set[1], $rl_term_set[2];
- $self->register_Tk
- if not $Term::ReadLine::registered and $Term::ReadLine::toloop
- and defined &Tk::DoOneEvent;
- #$str = scalar <$in>;
- $str = $self->get_line;
- $str =~ s/^\s*\Q$prompt\E// if ($^O eq 'MacOS');
- utf8::upgrade($str)
- if (${^UNICODE} & PERL_UNICODE_STDIN || defined ${^ENCODING}) &&
- utf8::valid($str);
- print $out $rl_term_set[3];
- # bug in 5.000: chomping empty string creats length -1:
- chomp $str if defined $str;
- $str;
-}
-sub addhistory {}
-
-sub findConsole {
- my $console;
-
- if ($^O eq 'MacOS') {
- $console = "Dev:Console";
- } elsif (-e "/dev/tty") {
- $console = "/dev/tty";
- } elsif (-e "con" or $^O eq 'MSWin32') {
- $console = "con";
- } else {
- $console = "sys\$command";
- }
-
- if (($^O eq 'amigaos') || ($^O eq 'beos') || ($^O eq 'epoc')) {
- $console = undef;
- }
- elsif ($^O eq 'os2') {
- if ($DB::emacs) {
- $console = undef;
- } else {
- $console = "/dev/con";
- }
- }
-
- my $consoleOUT = $console;
- $console = "&STDIN" unless defined $console;
- if (!defined $consoleOUT) {
- $consoleOUT = defined fileno(STDERR) ? "&STDERR" : "&STDOUT";
- }
- ($console,$consoleOUT);
-}
-
-sub new {
- die "method new called with wrong number of arguments"
- unless @_==2 or @_==4;
- #local (*FIN, *FOUT);
- my ($FIN, $FOUT, $ret);
- if (@_==2) {
- my($console, $consoleOUT) = $_[0]->findConsole;
-
- open(FIN, "<$console");
- open(FOUT,">$consoleOUT");
- #OUT->autoflush(1); # Conflicts with debugger?
- my $sel = select(FOUT);
- $| = 1; # for DB::OUT
- select($sel);
- $ret = bless [\*FIN, \*FOUT];
- } else { # Filehandles supplied
- $FIN = $_[2]; $FOUT = $_[3];
- #OUT->autoflush(1); # Conflicts with debugger?
- my $sel = select($FOUT);
- $| = 1; # for DB::OUT
- select($sel);
- $ret = bless [$FIN, $FOUT];
- }
- if ($ret->Features->{ornaments}
- and not ($ENV{PERL_RL} and $ENV{PERL_RL} =~ /\bo\w*=0/)) {
- local $Term::ReadLine::termcap_nowarn = 1;
- $ret->ornaments(1);
- }
- return $ret;
-}
-
-sub newTTY {
- my ($self, $in, $out) = @_;
- $self->[0] = $in;
- $self->[1] = $out;
- my $sel = select($out);
- $| = 1; # for DB::OUT
- select($sel);
-}
-
-sub IN { shift->[0] }
-sub OUT { shift->[1] }
-sub MinLine { undef }
-sub Attribs { {} }
-
-my %features = (tkRunning => 1, ornaments => 1, 'newTTY' => 1);
-sub Features { \%features }
-
-package Term::ReadLine; # So late to allow the above code be defined?
-
-our $VERSION = '1.02';
-
-my ($which) = exists $ENV{PERL_RL} ? split /\s+/, $ENV{PERL_RL} : undef;
-if ($which) {
- if ($which =~ /\bgnu\b/i){
- eval "use Term::ReadLine::Gnu;";
- } elsif ($which =~ /\bperl\b/i) {
- eval "use Term::ReadLine::Perl;";
- } else {
- eval "use Term::ReadLine::$which;";
- }
-} elsif (defined $which and $which ne '') { # Defined but false
- # Do nothing fancy
-} else {
- eval "use Term::ReadLine::Gnu; 1" or eval "use Term::ReadLine::Perl; 1";
-}
-
-#require FileHandle;
-
-# To make possible switch off RL in debugger: (Not needed, work done
-# in debugger).
-our @ISA;
-if (defined &Term::ReadLine::Gnu::readline) {
- @ISA = qw(Term::ReadLine::Gnu Term::ReadLine::Stub);
-} elsif (defined &Term::ReadLine::Perl::readline) {
- @ISA = qw(Term::ReadLine::Perl Term::ReadLine::Stub);
-} elsif (defined $which && defined &{"Term::ReadLine::$which\::readline"}) {
- @ISA = "Term::ReadLine::$which";
-} else {
- @ISA = qw(Term::ReadLine::Stub);
-}
-
-package Term::ReadLine::TermCap;
-
-# Prompt-start, prompt-end, command-line-start, command-line-end
-# -- zero-width beautifies to emit around prompt and the command line.
-our @rl_term_set = ("","","","");
-# string encoded:
-our $rl_term_set = ',,,';
-
-our $terminal;
-sub LoadTermCap {
- return if defined $terminal;
-
- require Term::Cap;
- $terminal = Tgetent Term::Cap ({OSPEED => 9600}); # Avoid warning.
-}
-
-sub ornaments {
- shift;
- return $rl_term_set unless @_;
- $rl_term_set = shift;
- $rl_term_set ||= ',,,';
- $rl_term_set = 'us,ue,md,me' if $rl_term_set eq '1';
- my @ts = split /,/, $rl_term_set, 4;
- eval { LoadTermCap };
- unless (defined $terminal) {
- warn("Cannot find termcap: $@\n") unless $Term::ReadLine::termcap_nowarn;
- $rl_term_set = ',,,';
- return;
- }
- @rl_term_set = map {$_ ? $terminal->Tputs($_,1) || '' : ''} @ts;
- return $rl_term_set;
-}
-
-
-package Term::ReadLine::Tk;
-
-our($count_handle, $count_DoOne, $count_loop);
-$count_handle = $count_DoOne = $count_loop = 0;
-
-our($giveup);
-sub handle {$giveup = 1; $count_handle++}
-
-sub Tk_loop {
- # Tk->tkwait('variable',\$giveup); # needs Widget
- $count_DoOne++, Tk::DoOneEvent(0) until $giveup;
- $count_loop++;
- $giveup = 0;
-}
-
-sub register_Tk {
- my $self = shift;
- $Term::ReadLine::registered++
- or Tk->fileevent($self->IN,'readable',\&handle);
-}
-
-sub tkRunning {
- $Term::ReadLine::toloop = $_[1] if @_ > 1;
- $Term::ReadLine::toloop;
-}
-
-sub get_c {
- my $self = shift;
- $self->Tk_loop if $Term::ReadLine::toloop && defined &Tk::DoOneEvent;
- return getc $self->IN;
-}
-
-sub get_line {
- my $self = shift;
- $self->Tk_loop if $Term::ReadLine::toloop && defined &Tk::DoOneEvent;
- my $in = $self->IN;
- local ($/) = "\n";
- return scalar <$in>;
-}
-
-1;
-
diff --git a/Master/tlpkg/tlperl/lib/Text/Abbrev.pm b/Master/tlpkg/tlperl/lib/Text/Abbrev.pm
deleted file mode 100644
index c6be63bcc60..00000000000
--- a/Master/tlpkg/tlperl/lib/Text/Abbrev.pm
+++ /dev/null
@@ -1,84 +0,0 @@
-package Text::Abbrev;
-require 5.005; # Probably works on earlier versions too.
-require Exporter;
-
-our $VERSION = '1.01';
-
-=head1 NAME
-
-abbrev - create an abbreviation table from a list
-
-=head1 SYNOPSIS
-
- use Text::Abbrev;
- abbrev $hashref, LIST
-
-
-=head1 DESCRIPTION
-
-Stores all unambiguous truncations of each element of LIST
-as keys in the associative array referenced by C<$hashref>.
-The values are the original list elements.
-
-=head1 EXAMPLE
-
- $hashref = abbrev qw(list edit send abort gripe);
-
- %hash = abbrev qw(list edit send abort gripe);
-
- abbrev $hashref, qw(list edit send abort gripe);
-
- abbrev(*hash, qw(list edit send abort gripe));
-
-=cut
-
-@ISA = qw(Exporter);
-@EXPORT = qw(abbrev);
-
-# Usage:
-# abbrev \%foo, LIST;
-# ...
-# $long = $foo{$short};
-
-sub abbrev {
- my ($word, $hashref, $glob, %table, $returnvoid);
-
- @_ or return; # So we don't autovivify onto @_ and trigger warning
- if (ref($_[0])) { # hash reference preferably
- $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;
- }
- }
- }
- # Non-abbreviations always get entered, even if they aren't unique
- foreach $word (@_) {
- $hashref->{$word} = $word;
- }
- return if $returnvoid;
- if (wantarray) {
- %{$hashref};
- } else {
- $hashref;
- }
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Text/Balanced.pm b/Master/tlpkg/tlperl/lib/Text/Balanced.pm
deleted file mode 100644
index 820ae255a71..00000000000
--- a/Master/tlpkg/tlperl/lib/Text/Balanced.pm
+++ /dev/null
@@ -1,2302 +0,0 @@
-# EXTRACT VARIOUSLY DELIMITED TEXT SEQUENCES FROM STRINGS.
-# FOR FULL DOCUMENTATION SEE Balanced.pod
-
-use 5.005;
-use strict;
-
-package Text::Balanced;
-
-use Exporter;
-use SelfLoader;
-use vars qw { $VERSION @ISA %EXPORT_TAGS };
-
-$VERSION = '1.95';
-@ISA = qw ( Exporter );
-
-%EXPORT_TAGS = ( ALL => [ qw(
- &extract_delimited
- &extract_bracketed
- &extract_quotelike
- &extract_codeblock
- &extract_variable
- &extract_tagged
- &extract_multiple
-
- &gen_delimited_pat
- &gen_extract_tagged
-
- &delimited_pat
- ) ] );
-
-Exporter::export_ok_tags('ALL');
-
-# PROTOTYPES
-
-sub _match_bracketed($$$$$$);
-sub _match_variable($$);
-sub _match_codeblock($$$$$$$);
-sub _match_quotelike($$$$);
-
-# HANDLE RETURN VALUES IN VARIOUS CONTEXTS
-
-sub _failmsg {
- my ($message, $pos) = @_;
- $@ = bless { error=>$message, pos=>$pos }, "Text::Balanced::ErrorMsg";
-}
-
-sub _fail
-{
- my ($wantarray, $textref, $message, $pos) = @_;
- _failmsg $message, $pos if $message;
- return ("",$$textref,"") if $wantarray;
- return undef;
-}
-
-sub _succeed
-{
- $@ = undef;
- my ($wantarray,$textref) = splice @_, 0, 2;
- my ($extrapos, $extralen) = @_>18 ? splice(@_, -2, 2) : (0,0);
- my ($startlen) = $_[5];
- my $remainderpos = $_[2];
- if ($wantarray)
- {
- my @res;
- while (my ($from, $len) = splice @_, 0, 2)
- {
- push @res, substr($$textref,$from,$len);
- }
- if ($extralen) { # CORRECT FILLET
- my $extra = substr($res[0], $extrapos-$startlen, $extralen, "\n");
- $res[1] = "$extra$res[1]";
- eval { substr($$textref,$remainderpos,0) = $extra;
- substr($$textref,$extrapos,$extralen,"\n")} ;
- #REARRANGE HERE DOC AND FILLET IF POSSIBLE
- pos($$textref) = $remainderpos-$extralen+1; # RESET \G
- }
- else {
- pos($$textref) = $remainderpos; # RESET \G
- }
- return @res;
- }
- else
- {
- my $match = substr($$textref,$_[0],$_[1]);
- substr($match,$extrapos-$_[0]-$startlen,$extralen,"") if $extralen;
- my $extra = $extralen
- ? substr($$textref, $extrapos, $extralen)."\n" : "";
- eval {substr($$textref,$_[4],$_[1]+$_[5])=$extra} ; #CHOP OUT PREFIX & MATCH, IF POSSIBLE
- pos($$textref) = $_[4]; # RESET \G
- return $match;
- }
-}
-
-# BUILD A PATTERN MATCHING A SIMPLE DELIMITED STRING
-
-sub gen_delimited_pat($;$) # ($delimiters;$escapes)
-{
- my ($dels, $escs) = @_;
- return "" unless $dels =~ /\S/;
- $escs = '\\' unless $escs;
- $escs .= substr($escs,-1) x (length($dels)-length($escs));
- my @pat = ();
- my $i;
- for ($i=0; $i<length $dels; $i++)
- {
- my $del = quotemeta substr($dels,$i,1);
- my $esc = quotemeta substr($escs,$i,1);
- if ($del eq $esc)
- {
- push @pat, "$del(?:[^$del]*(?:(?:$del$del)[^$del]*)*)$del";
- }
- else
- {
- push @pat, "$del(?:[^$esc$del]*(?:$esc.[^$esc$del]*)*)$del";
- }
- }
- my $pat = join '|', @pat;
- return "(?:$pat)";
-}
-
-*delimited_pat = \&gen_delimited_pat;
-
-
-# THE EXTRACTION FUNCTIONS
-
-sub extract_delimited (;$$$$)
-{
- my $textref = defined $_[0] ? \$_[0] : \$_;
- my $wantarray = wantarray;
- my $del = defined $_[1] ? $_[1] : qq{\'\"\`};
- my $pre = defined $_[2] ? $_[2] : '\s*';
- my $esc = defined $_[3] ? $_[3] : qq{\\};
- my $pat = gen_delimited_pat($del, $esc);
- my $startpos = pos $$textref || 0;
- return _fail($wantarray, $textref, "Not a delimited pattern", 0)
- unless $$textref =~ m/\G($pre)($pat)/gc;
- my $prelen = length($1);
- my $matchpos = $startpos+$prelen;
- my $endpos = pos $$textref;
- return _succeed $wantarray, $textref,
- $matchpos, $endpos-$matchpos, # MATCH
- $endpos, length($$textref)-$endpos, # REMAINDER
- $startpos, $prelen; # PREFIX
-}
-
-sub extract_bracketed (;$$$)
-{
- my $textref = defined $_[0] ? \$_[0] : \$_;
- my $ldel = defined $_[1] ? $_[1] : '{([<';
- my $pre = defined $_[2] ? $_[2] : '\s*';
- my $wantarray = wantarray;
- my $qdel = "";
- my $quotelike;
- $ldel =~ s/'//g and $qdel .= q{'};
- $ldel =~ s/"//g and $qdel .= q{"};
- $ldel =~ s/`//g and $qdel .= q{`};
- $ldel =~ s/q//g and $quotelike = 1;
- $ldel =~ tr/[](){}<>\0-\377/[[(({{<</ds;
- my $rdel = $ldel;
- unless ($rdel =~ tr/[({</])}>/)
- {
- return _fail $wantarray, $textref,
- "Did not find a suitable bracket in delimiter: \"$_[1]\"",
- 0;
- }
- my $posbug = pos;
- $ldel = join('|', map { quotemeta $_ } split('', $ldel));
- $rdel = join('|', map { quotemeta $_ } split('', $rdel));
- pos = $posbug;
-
- my $startpos = pos $$textref || 0;
- my @match = _match_bracketed($textref,$pre, $ldel, $qdel, $quotelike, $rdel);
-
- return _fail ($wantarray, $textref) unless @match;
-
- return _succeed ( $wantarray, $textref,
- $match[2], $match[5]+2, # MATCH
- @match[8,9], # REMAINDER
- @match[0,1], # PREFIX
- );
-}
-
-sub _match_bracketed($$$$$$) # $textref, $pre, $ldel, $qdel, $quotelike, $rdel
-{
- my ($textref, $pre, $ldel, $qdel, $quotelike, $rdel) = @_;
- my ($startpos, $ldelpos, $endpos) = (pos $$textref = pos $$textref||0);
- unless ($$textref =~ m/\G$pre/gc)
- {
- _failmsg "Did not find prefix: /$pre/", $startpos;
- return;
- }
-
- $ldelpos = pos $$textref;
-
- unless ($$textref =~ m/\G($ldel)/gc)
- {
- _failmsg "Did not find opening bracket after prefix: \"$pre\"",
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
-
- my @nesting = ( $1 );
- my $textlen = length $$textref;
- while (pos $$textref < $textlen)
- {
- next if $$textref =~ m/\G\\./gcs;
-
- if ($$textref =~ m/\G($ldel)/gc)
- {
- push @nesting, $1;
- }
- elsif ($$textref =~ m/\G($rdel)/gc)
- {
- my ($found, $brackettype) = ($1, $1);
- if ($#nesting < 0)
- {
- _failmsg "Unmatched closing bracket: \"$found\"",
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
- my $expected = pop(@nesting);
- $expected =~ tr/({[</)}]>/;
- if ($expected ne $brackettype)
- {
- _failmsg qq{Mismatched closing bracket: expected "$expected" but found "$found"},
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
- last if $#nesting < 0;
- }
- elsif ($qdel && $$textref =~ m/\G([$qdel])/gc)
- {
- $$textref =~ m/\G[^\\$1]*(?:\\.[^\\$1]*)*(\Q$1\E)/gsc and next;
- _failmsg "Unmatched embedded quote ($1)",
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
- elsif ($quotelike && _match_quotelike($textref,"",1,0))
- {
- next;
- }
-
- else { $$textref =~ m/\G(?:[a-zA-Z0-9]+|.)/gcs }
- }
- if ($#nesting>=0)
- {
- _failmsg "Unmatched opening bracket(s): "
- . join("..",@nesting)."..",
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
-
- $endpos = pos $$textref;
-
- return (
- $startpos, $ldelpos-$startpos, # PREFIX
- $ldelpos, 1, # OPENING BRACKET
- $ldelpos+1, $endpos-$ldelpos-2, # CONTENTS
- $endpos-1, 1, # CLOSING BRACKET
- $endpos, length($$textref)-$endpos, # REMAINDER
- );
-}
-
-sub revbracket($)
-{
- my $brack = reverse $_[0];
- $brack =~ tr/[({</])}>/;
- return $brack;
-}
-
-my $XMLNAME = q{[a-zA-Z_:][a-zA-Z0-9_:.-]*};
-
-sub extract_tagged (;$$$$$) # ($text, $opentag, $closetag, $pre, \%options)
-{
- my $textref = defined $_[0] ? \$_[0] : \$_;
- my $ldel = $_[1];
- my $rdel = $_[2];
- my $pre = defined $_[3] ? $_[3] : '\s*';
- my %options = defined $_[4] ? %{$_[4]} : ();
- my $omode = defined $options{fail} ? $options{fail} : '';
- my $bad = ref($options{reject}) eq 'ARRAY' ? join('|', @{$options{reject}})
- : defined($options{reject}) ? $options{reject}
- : ''
- ;
- my $ignore = ref($options{ignore}) eq 'ARRAY' ? join('|', @{$options{ignore}})
- : defined($options{ignore}) ? $options{ignore}
- : ''
- ;
-
- if (!defined $ldel) { $ldel = '<\w+(?:' . gen_delimited_pat(q{'"}) . '|[^>])*>'; }
- $@ = undef;
-
- my @match = _match_tagged($textref, $pre, $ldel, $rdel, $omode, $bad, $ignore);
-
- return _fail(wantarray, $textref) unless @match;
- return _succeed wantarray, $textref,
- $match[2], $match[3]+$match[5]+$match[7], # MATCH
- @match[8..9,0..1,2..7]; # REM, PRE, BITS
-}
-
-sub _match_tagged # ($$$$$$$)
-{
- my ($textref, $pre, $ldel, $rdel, $omode, $bad, $ignore) = @_;
- my $rdelspec;
-
- my ($startpos, $opentagpos, $textpos, $parapos, $closetagpos, $endpos) = ( pos($$textref) = pos($$textref)||0 );
-
- unless ($$textref =~ m/\G($pre)/gc)
- {
- _failmsg "Did not find prefix: /$pre/", pos $$textref;
- goto failed;
- }
-
- $opentagpos = pos($$textref);
-
- unless ($$textref =~ m/\G$ldel/gc)
- {
- _failmsg "Did not find opening tag: /$ldel/", pos $$textref;
- goto failed;
- }
-
- $textpos = pos($$textref);
-
- if (!defined $rdel)
- {
- $rdelspec = $&;
- unless ($rdelspec =~ s/\A([[(<{]+)($XMLNAME).*/ quotemeta "$1\/$2". revbracket($1) /oes)
- {
- _failmsg "Unable to construct closing tag to match: $rdel",
- pos $$textref;
- goto failed;
- }
- }
- else
- {
- $rdelspec = eval "qq{$rdel}" || do {
- my $del;
- for (qw,~ ! ^ & * ) _ + - = } ] : " ; ' > . ? / | ',)
- { next if $rdel =~ /\Q$_/; $del = $_; last }
- unless ($del) {
- use Carp;
- croak "Can't interpolate right delimiter $rdel"
- }
- eval "qq$del$rdel$del";
- };
- }
-
- while (pos($$textref) < length($$textref))
- {
- next if $$textref =~ m/\G\\./gc;
-
- if ($$textref =~ m/\G(\n[ \t]*\n)/gc )
- {
- $parapos = pos($$textref) - length($1)
- unless defined $parapos;
- }
- elsif ($$textref =~ m/\G($rdelspec)/gc )
- {
- $closetagpos = pos($$textref)-length($1);
- goto matched;
- }
- elsif ($ignore && $$textref =~ m/\G(?:$ignore)/gc)
- {
- next;
- }
- elsif ($bad && $$textref =~ m/\G($bad)/gcs)
- {
- pos($$textref) -= length($1); # CUT OFF WHATEVER CAUSED THE SHORTNESS
- goto short if ($omode eq 'PARA' || $omode eq 'MAX');
- _failmsg "Found invalid nested tag: $1", pos $$textref;
- goto failed;
- }
- elsif ($$textref =~ m/\G($ldel)/gc)
- {
- my $tag = $1;
- pos($$textref) -= length($tag); # REWIND TO NESTED TAG
- unless (_match_tagged(@_)) # MATCH NESTED TAG
- {
- goto short if $omode eq 'PARA' || $omode eq 'MAX';
- _failmsg "Found unbalanced nested tag: $tag",
- pos $$textref;
- goto failed;
- }
- }
- else { $$textref =~ m/./gcs }
- }
-
-short:
- $closetagpos = pos($$textref);
- goto matched if $omode eq 'MAX';
- goto failed unless $omode eq 'PARA';
-
- if (defined $parapos) { pos($$textref) = $parapos }
- else { $parapos = pos($$textref) }
-
- return (
- $startpos, $opentagpos-$startpos, # PREFIX
- $opentagpos, $textpos-$opentagpos, # OPENING TAG
- $textpos, $parapos-$textpos, # TEXT
- $parapos, 0, # NO CLOSING TAG
- $parapos, length($$textref)-$parapos, # REMAINDER
- );
-
-matched:
- $endpos = pos($$textref);
- return (
- $startpos, $opentagpos-$startpos, # PREFIX
- $opentagpos, $textpos-$opentagpos, # OPENING TAG
- $textpos, $closetagpos-$textpos, # TEXT
- $closetagpos, $endpos-$closetagpos, # CLOSING TAG
- $endpos, length($$textref)-$endpos, # REMAINDER
- );
-
-failed:
- _failmsg "Did not find closing tag", pos $$textref unless $@;
- pos($$textref) = $startpos;
- return;
-}
-
-sub extract_variable (;$$)
-{
- my $textref = defined $_[0] ? \$_[0] : \$_;
- return ("","","") unless defined $$textref;
- my $pre = defined $_[1] ? $_[1] : '\s*';
-
- my @match = _match_variable($textref,$pre);
-
- return _fail wantarray, $textref unless @match;
-
- return _succeed wantarray, $textref,
- @match[2..3,4..5,0..1]; # MATCH, REMAINDER, PREFIX
-}
-
-sub _match_variable($$)
-{
-# $#
-# $^
-# $$
- my ($textref, $pre) = @_;
- my $startpos = pos($$textref) = pos($$textref)||0;
- unless ($$textref =~ m/\G($pre)/gc)
- {
- _failmsg "Did not find prefix: /$pre/", pos $$textref;
- return;
- }
- my $varpos = pos($$textref);
- unless ($$textref =~ m{\G\$\s*(?!::)(\d+|[][&`'+*./|,";%=~:?!\@<>()-]|\^[a-z]?)}gci)
- {
- unless ($$textref =~ m/\G((\$#?|[*\@\%]|\\&)+)/gc)
- {
- _failmsg "Did not find leading dereferencer", pos $$textref;
- pos $$textref = $startpos;
- return;
- }
- my $deref = $1;
-
- unless ($$textref =~ m/\G\s*(?:::|')?(?:[_a-z]\w*(?:::|'))*[_a-z]\w*/gci
- or _match_codeblock($textref, "", '\{', '\}', '\{', '\}', 0)
- or $deref eq '$#' or $deref eq '$$' )
- {
- _failmsg "Bad identifier after dereferencer", pos $$textref;
- pos $$textref = $startpos;
- return;
- }
- }
-
- while (1)
- {
- next if $$textref =~ m/\G\s*(?:->)?\s*[{]\w+[}]/gc;
- next if _match_codeblock($textref,
- qr/\s*->\s*(?:[_a-zA-Z]\w+\s*)?/,
- qr/[({[]/, qr/[)}\]]/,
- qr/[({[]/, qr/[)}\]]/, 0);
- next if _match_codeblock($textref,
- qr/\s*/, qr/[{[]/, qr/[}\]]/,
- qr/[{[]/, qr/[}\]]/, 0);
- next if _match_variable($textref,'\s*->\s*');
- next if $$textref =~ m/\G\s*->\s*\w+(?![{([])/gc;
- last;
- }
-
- my $endpos = pos($$textref);
- return ($startpos, $varpos-$startpos,
- $varpos, $endpos-$varpos,
- $endpos, length($$textref)-$endpos
- );
-}
-
-sub extract_codeblock (;$$$$$)
-{
- my $textref = defined $_[0] ? \$_[0] : \$_;
- my $wantarray = wantarray;
- my $ldel_inner = defined $_[1] ? $_[1] : '{';
- my $pre = defined $_[2] ? $_[2] : '\s*';
- my $ldel_outer = defined $_[3] ? $_[3] : $ldel_inner;
- my $rd = $_[4];
- my $rdel_inner = $ldel_inner;
- my $rdel_outer = $ldel_outer;
- my $posbug = pos;
- for ($ldel_inner, $ldel_outer) { tr/[]()<>{}\0-\377/[[((<<{{/ds }
- for ($rdel_inner, $rdel_outer) { tr/[]()<>{}\0-\377/]]))>>}}/ds }
- for ($ldel_inner, $ldel_outer, $rdel_inner, $rdel_outer)
- {
- $_ = '('.join('|',map { quotemeta $_ } split('',$_)).')'
- }
- pos = $posbug;
-
- my @match = _match_codeblock($textref, $pre,
- $ldel_outer, $rdel_outer,
- $ldel_inner, $rdel_inner,
- $rd);
- return _fail($wantarray, $textref) unless @match;
- return _succeed($wantarray, $textref,
- @match[2..3,4..5,0..1] # MATCH, REMAINDER, PREFIX
- );
-
-}
-
-sub _match_codeblock($$$$$$$)
-{
- my ($textref, $pre, $ldel_outer, $rdel_outer, $ldel_inner, $rdel_inner, $rd) = @_;
- my $startpos = pos($$textref) = pos($$textref) || 0;
- unless ($$textref =~ m/\G($pre)/gc)
- {
- _failmsg qq{Did not match prefix /$pre/ at"} .
- substr($$textref,pos($$textref),20) .
- q{..."},
- pos $$textref;
- return;
- }
- my $codepos = pos($$textref);
- unless ($$textref =~ m/\G($ldel_outer)/gc) # OUTERMOST DELIMITER
- {
- _failmsg qq{Did not find expected opening bracket at "} .
- substr($$textref,pos($$textref),20) .
- q{..."},
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
- my $closing = $1;
- $closing =~ tr/([<{/)]>}/;
- my $matched;
- my $patvalid = 1;
- while (pos($$textref) < length($$textref))
- {
- $matched = '';
- if ($rd && $$textref =~ m#\G(\Q(?)\E|\Q(s?)\E|\Q(s)\E)#gc)
- {
- $patvalid = 0;
- next;
- }
-
- if ($$textref =~ m/\G\s*#.*/gc)
- {
- next;
- }
-
- if ($$textref =~ m/\G\s*($rdel_outer)/gc)
- {
- unless ($matched = ($closing && $1 eq $closing) )
- {
- next if $1 eq '>'; # MIGHT BE A "LESS THAN"
- _failmsg q{Mismatched closing bracket at "} .
- substr($$textref,pos($$textref),20) .
- qq{...". Expected '$closing'},
- pos $$textref;
- }
- last;
- }
-
- if (_match_variable($textref,'\s*') ||
- _match_quotelike($textref,'\s*',$patvalid,$patvalid) )
- {
- $patvalid = 0;
- next;
- }
-
-
- # NEED TO COVER MANY MORE CASES HERE!!!
- if ($$textref =~ m#\G\s*(?!$ldel_inner)
- ( [-+*x/%^&|.]=?
- | [!=]~
- | =(?!>)
- | (\*\*|&&|\|\||<<|>>)=?
- | split|grep|map|return
- | [([]
- )#gcx)
- {
- $patvalid = 1;
- next;
- }
-
- if ( _match_codeblock($textref, '\s*', $ldel_inner, $rdel_inner, $ldel_inner, $rdel_inner, $rd) )
- {
- $patvalid = 1;
- next;
- }
-
- if ($$textref =~ m/\G\s*$ldel_outer/gc)
- {
- _failmsg q{Improperly nested codeblock at "} .
- substr($$textref,pos($$textref),20) .
- q{..."},
- pos $$textref;
- last;
- }
-
- $patvalid = 0;
- $$textref =~ m/\G\s*(\w+|[-=>]>|.|\Z)/gc;
- }
- continue { $@ = undef }
-
- unless ($matched)
- {
- _failmsg 'No match found for opening bracket', pos $$textref
- unless $@;
- return;
- }
-
- my $endpos = pos($$textref);
- return ( $startpos, $codepos-$startpos,
- $codepos, $endpos-$codepos,
- $endpos, length($$textref)-$endpos,
- );
-}
-
-
-my %mods = (
- 'none' => '[cgimsox]*',
- 'm' => '[cgimsox]*',
- 's' => '[cegimsox]*',
- 'tr' => '[cds]*',
- 'y' => '[cds]*',
- 'qq' => '',
- 'qx' => '',
- 'qw' => '',
- 'qr' => '[imsx]*',
- 'q' => '',
- );
-
-sub extract_quotelike (;$$)
-{
- my $textref = $_[0] ? \$_[0] : \$_;
- my $wantarray = wantarray;
- my $pre = defined $_[1] ? $_[1] : '\s*';
-
- my @match = _match_quotelike($textref,$pre,1,0);
- return _fail($wantarray, $textref) unless @match;
- return _succeed($wantarray, $textref,
- $match[2], $match[18]-$match[2], # MATCH
- @match[18,19], # REMAINDER
- @match[0,1], # PREFIX
- @match[2..17], # THE BITS
- @match[20,21], # ANY FILLET?
- );
-};
-
-sub _match_quotelike($$$$) # ($textref, $prepat, $allow_raw_match)
-{
- my ($textref, $pre, $rawmatch, $qmark) = @_;
-
- my ($textlen,$startpos,
- $oppos,
- $preld1pos,$ld1pos,$str1pos,$rd1pos,
- $preld2pos,$ld2pos,$str2pos,$rd2pos,
- $modpos) = ( length($$textref), pos($$textref) = pos($$textref) || 0 );
-
- unless ($$textref =~ m/\G($pre)/gc)
- {
- _failmsg qq{Did not find prefix /$pre/ at "} .
- substr($$textref, pos($$textref), 20) .
- q{..."},
- pos $$textref;
- return;
- }
- $oppos = pos($$textref);
-
- my $initial = substr($$textref,$oppos,1);
-
- if ($initial && $initial =~ m|^[\"\'\`]|
- || $rawmatch && $initial =~ m|^/|
- || $qmark && $initial =~ m|^\?|)
- {
- unless ($$textref =~ m/ \Q$initial\E [^\\$initial]* (\\.[^\\$initial]*)* \Q$initial\E /gcsx)
- {
- _failmsg qq{Did not find closing delimiter to match '$initial' at "} .
- substr($$textref, $oppos, 20) .
- q{..."},
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
- $modpos= pos($$textref);
- $rd1pos = $modpos-1;
-
- if ($initial eq '/' || $initial eq '?')
- {
- $$textref =~ m/\G$mods{none}/gc
- }
-
- my $endpos = pos($$textref);
- return (
- $startpos, $oppos-$startpos, # PREFIX
- $oppos, 0, # NO OPERATOR
- $oppos, 1, # LEFT DEL
- $oppos+1, $rd1pos-$oppos-1, # STR/PAT
- $rd1pos, 1, # RIGHT DEL
- $modpos, 0, # NO 2ND LDEL
- $modpos, 0, # NO 2ND STR
- $modpos, 0, # NO 2ND RDEL
- $modpos, $endpos-$modpos, # MODIFIERS
- $endpos, $textlen-$endpos, # REMAINDER
- );
- }
-
- unless ($$textref =~ m{\G(\b(?:m|s|qq|qx|qw|q|qr|tr|y)\b(?=\s*\S)|<<)}gc)
- {
- _failmsg q{No quotelike operator found after prefix at "} .
- substr($$textref, pos($$textref), 20) .
- q{..."},
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
-
- my $op = $1;
- $preld1pos = pos($$textref);
- if ($op eq '<<') {
- $ld1pos = pos($$textref);
- my $label;
- if ($$textref =~ m{\G([A-Za-z_]\w*)}gc) {
- $label = $1;
- }
- elsif ($$textref =~ m{ \G ' ([^'\\]* (?:\\.[^'\\]*)*) '
- | \G " ([^"\\]* (?:\\.[^"\\]*)*) "
- | \G ` ([^`\\]* (?:\\.[^`\\]*)*) `
- }gcsx) {
- $label = $+;
- }
- else {
- $label = "";
- }
- my $extrapos = pos($$textref);
- $$textref =~ m{.*\n}gc;
- $str1pos = pos($$textref);
- unless ($$textref =~ m{.*?\n(?=$label\n)}gc) {
- _failmsg qq{Missing here doc terminator ('$label') after "} .
- substr($$textref, $startpos, 20) .
- q{..."},
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
- $rd1pos = pos($$textref);
- $$textref =~ m{$label\n}gc;
- $ld2pos = pos($$textref);
- return (
- $startpos, $oppos-$startpos, # PREFIX
- $oppos, length($op), # OPERATOR
- $ld1pos, $extrapos-$ld1pos, # LEFT DEL
- $str1pos, $rd1pos-$str1pos, # STR/PAT
- $rd1pos, $ld2pos-$rd1pos, # RIGHT DEL
- $ld2pos, 0, # NO 2ND LDEL
- $ld2pos, 0, # NO 2ND STR
- $ld2pos, 0, # NO 2ND RDEL
- $ld2pos, 0, # NO MODIFIERS
- $ld2pos, $textlen-$ld2pos, # REMAINDER
- $extrapos, $str1pos-$extrapos, # FILLETED BIT
- );
- }
-
- $$textref =~ m/\G\s*/gc;
- $ld1pos = pos($$textref);
- $str1pos = $ld1pos+1;
-
- unless ($$textref =~ m/\G(\S)/gc) # SHOULD USE LOOKAHEAD
- {
- _failmsg "No block delimiter found after quotelike $op",
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
- pos($$textref) = $ld1pos; # HAVE TO DO THIS BECAUSE LOOKAHEAD BROKEN
- my ($ldel1, $rdel1) = ("\Q$1","\Q$1");
- if ($ldel1 =~ /[[(<{]/)
- {
- $rdel1 =~ tr/[({</])}>/;
- _match_bracketed($textref,"",$ldel1,"","",$rdel1)
- || do { pos $$textref = $startpos; return };
- }
- else
- {
- $$textref =~ /$ldel1[^\\$ldel1]*(\\.[^\\$ldel1]*)*$ldel1/gcs
- || do { pos $$textref = $startpos; return };
- }
- $ld2pos = $rd1pos = pos($$textref)-1;
-
- my $second_arg = $op =~ /s|tr|y/ ? 1 : 0;
- if ($second_arg)
- {
- my ($ldel2, $rdel2);
- if ($ldel1 =~ /[[(<{]/)
- {
- unless ($$textref =~ /\G\s*(\S)/gc) # SHOULD USE LOOKAHEAD
- {
- _failmsg "Missing second block for quotelike $op",
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
- $ldel2 = $rdel2 = "\Q$1";
- $rdel2 =~ tr/[({</])}>/;
- }
- else
- {
- $ldel2 = $rdel2 = $ldel1;
- }
- $str2pos = $ld2pos+1;
-
- if ($ldel2 =~ /[[(<{]/)
- {
- pos($$textref)--; # OVERCOME BROKEN LOOKAHEAD
- _match_bracketed($textref,"",$ldel2,"","",$rdel2)
- || do { pos $$textref = $startpos; return };
- }
- else
- {
- $$textref =~ /[^\\$ldel2]*(\\.[^\\$ldel2]*)*$ldel2/gcs
- || do { pos $$textref = $startpos; return };
- }
- $rd2pos = pos($$textref)-1;
- }
- else
- {
- $ld2pos = $str2pos = $rd2pos = $rd1pos;
- }
-
- $modpos = pos $$textref;
-
- $$textref =~ m/\G($mods{$op})/gc;
- my $endpos = pos $$textref;
-
- return (
- $startpos, $oppos-$startpos, # PREFIX
- $oppos, length($op), # OPERATOR
- $ld1pos, 1, # LEFT DEL
- $str1pos, $rd1pos-$str1pos, # STR/PAT
- $rd1pos, 1, # RIGHT DEL
- $ld2pos, $second_arg, # 2ND LDEL (MAYBE)
- $str2pos, $rd2pos-$str2pos, # 2ND STR (MAYBE)
- $rd2pos, $second_arg, # 2ND RDEL (MAYBE)
- $modpos, $endpos-$modpos, # MODIFIERS
- $endpos, $textlen-$endpos, # REMAINDER
- );
-}
-
-my $def_func =
-[
- sub { extract_variable($_[0], '') },
- sub { extract_quotelike($_[0],'') },
- sub { extract_codeblock($_[0],'{}','') },
-];
-
-sub extract_multiple (;$$$$) # ($text, $functions_ref, $max_fields, $ignoreunknown)
-{
- my $textref = defined($_[0]) ? \$_[0] : \$_;
- my $posbug = pos;
- my ($lastpos, $firstpos);
- my @fields = ();
-
- #for ($$textref)
- {
- my @func = defined $_[1] ? @{$_[1]} : @{$def_func};
- my $max = defined $_[2] && $_[2]>0 ? $_[2] : 1_000_000_000;
- my $igunk = $_[3];
-
- pos $$textref ||= 0;
-
- unless (wantarray)
- {
- use Carp;
- carp "extract_multiple reset maximal count to 1 in scalar context"
- if $^W && defined($_[2]) && $max > 1;
- $max = 1
- }
-
- my $unkpos;
- my $func;
- my $class;
-
- my @class;
- foreach $func ( @func )
- {
- if (ref($func) eq 'HASH')
- {
- push @class, (keys %$func)[0];
- $func = (values %$func)[0];
- }
- else
- {
- push @class, undef;
- }
- }
-
- FIELD: while (pos($$textref) < length($$textref))
- {
- my ($field, $rem);
- my @bits;
- foreach my $i ( 0..$#func )
- {
- my $pref;
- $func = $func[$i];
- $class = $class[$i];
- $lastpos = pos $$textref;
- if (ref($func) eq 'CODE')
- { ($field,$rem,$pref) = @bits = $func->($$textref);
- # print "[$field|$rem]" if $field;
- }
- elsif (ref($func) eq 'Text::Balanced::Extractor')
- { @bits = $field = $func->extract($$textref) }
- elsif( $$textref =~ m/\G$func/gc )
- { @bits = $field = defined($1) ? $1 : $& }
- $pref ||= "";
- if (defined($field) && length($field))
- {
- if (!$igunk) {
- $unkpos = pos $$textref
- if length($pref) && !defined($unkpos);
- if (defined $unkpos)
- {
- push @fields, substr($$textref, $unkpos, $lastpos-$unkpos).$pref;
- $firstpos = $unkpos unless defined $firstpos;
- undef $unkpos;
- last FIELD if @fields == $max;
- }
- }
- push @fields, $class
- ? bless (\$field, $class)
- : $field;
- $firstpos = $lastpos unless defined $firstpos;
- $lastpos = pos $$textref;
- last FIELD if @fields == $max;
- next FIELD;
- }
- }
- if ($$textref =~ /\G(.)/gcs)
- {
- $unkpos = pos($$textref)-1
- unless $igunk || defined $unkpos;
- }
- }
-
- if (defined $unkpos)
- {
- push @fields, substr($$textref, $unkpos);
- $firstpos = $unkpos unless defined $firstpos;
- $lastpos = length $$textref;
- }
- last;
- }
-
- pos $$textref = $lastpos;
- return @fields if wantarray;
-
- $firstpos ||= 0;
- eval { substr($$textref,$firstpos,$lastpos-$firstpos)="";
- pos $$textref = $firstpos };
- return $fields[0];
-}
-
-
-sub gen_extract_tagged # ($opentag, $closetag, $pre, \%options)
-{
- my $ldel = $_[0];
- my $rdel = $_[1];
- my $pre = defined $_[2] ? $_[2] : '\s*';
- my %options = defined $_[3] ? %{$_[3]} : ();
- my $omode = defined $options{fail} ? $options{fail} : '';
- my $bad = ref($options{reject}) eq 'ARRAY' ? join('|', @{$options{reject}})
- : defined($options{reject}) ? $options{reject}
- : ''
- ;
- my $ignore = ref($options{ignore}) eq 'ARRAY' ? join('|', @{$options{ignore}})
- : defined($options{ignore}) ? $options{ignore}
- : ''
- ;
-
- if (!defined $ldel) { $ldel = '<\w+(?:' . gen_delimited_pat(q{'"}) . '|[^>])*>'; }
-
- my $posbug = pos;
- for ($ldel, $pre, $bad, $ignore) { $_ = qr/$_/ if $_ }
- pos = $posbug;
-
- my $closure = sub
- {
- my $textref = defined $_[0] ? \$_[0] : \$_;
- my @match = Text::Balanced::_match_tagged($textref, $pre, $ldel, $rdel, $omode, $bad, $ignore);
-
- return _fail(wantarray, $textref) unless @match;
- return _succeed wantarray, $textref,
- $match[2], $match[3]+$match[5]+$match[7], # MATCH
- @match[8..9,0..1,2..7]; # REM, PRE, BITS
- };
-
- bless $closure, 'Text::Balanced::Extractor';
-}
-
-package Text::Balanced::Extractor;
-
-sub extract($$) # ($self, $text)
-{
- &{$_[0]}($_[1]);
-}
-
-package Text::Balanced::ErrorMsg;
-
-use overload '""' => sub { "$_[0]->{error}, detected at offset $_[0]->{pos}" };
-
-1;
-
-__END__
-
-=head1 NAME
-
-Text::Balanced - Extract delimited text sequences from strings.
-
-
-=head1 SYNOPSIS
-
- use Text::Balanced qw (
- extract_delimited
- extract_bracketed
- extract_quotelike
- extract_codeblock
- extract_variable
- extract_tagged
- extract_multiple
-
- gen_delimited_pat
- gen_extract_tagged
- );
-
- # Extract the initial substring of $text that is delimited by
- # two (unescaped) instances of the first character in $delim.
-
- ($extracted, $remainder) = extract_delimited($text,$delim);
-
-
- # Extract the initial substring of $text that is bracketed
- # with a delimiter(s) specified by $delim (where the string
- # in $delim contains one or more of '(){}[]<>').
-
- ($extracted, $remainder) = extract_bracketed($text,$delim);
-
-
- # Extract the initial substring of $text that is bounded by
- # an XML tag.
-
- ($extracted, $remainder) = extract_tagged($text);
-
-
- # Extract the initial substring of $text that is bounded by
- # a C<BEGIN>...C<END> pair. Don't allow nested C<BEGIN> tags
-
- ($extracted, $remainder) =
- extract_tagged($text,"BEGIN","END",undef,{bad=>["BEGIN"]});
-
-
- # Extract the initial substring of $text that represents a
- # Perl "quote or quote-like operation"
-
- ($extracted, $remainder) = extract_quotelike($text);
-
-
- # Extract the initial substring of $text that represents a block
- # of Perl code, bracketed by any of character(s) specified by $delim
- # (where the string $delim contains one or more of '(){}[]<>').
-
- ($extracted, $remainder) = extract_codeblock($text,$delim);
-
-
- # Extract the initial substrings of $text that would be extracted by
- # one or more sequential applications of the specified functions
- # or regular expressions
-
- @extracted = extract_multiple($text,
- [ \&extract_bracketed,
- \&extract_quotelike,
- \&some_other_extractor_sub,
- qr/[xyz]*/,
- 'literal',
- ]);
-
-# Create a string representing an optimized pattern (a la Friedl)
-# that matches a substring delimited by any of the specified characters
-# (in this case: any type of quote or a slash)
-
- $patstring = gen_delimited_pat(q{'"`/});
-
-
-# Generate a reference to an anonymous sub that is just like extract_tagged
-# but pre-compiled and optimized for a specific pair of tags, and consequently
-# much faster (i.e. 3 times faster). It uses qr// for better performance on
-# repeated calls, so it only works under Perl 5.005 or later.
-
- $extract_head = gen_extract_tagged('<HEAD>','</HEAD>');
-
- ($extracted, $remainder) = $extract_head->($text);
-
-
-=head1 DESCRIPTION
-
-The various C<extract_...> subroutines may be used to
-extract a delimited substring, possibly after skipping a
-specified prefix string. By default, that prefix is
-optional whitespace (C</\s*/>), but you can change it to whatever
-you wish (see below).
-
-The substring to be extracted must appear at the
-current C<pos> location of the string's variable
-(or at index zero, if no C<pos> position is defined).
-In other words, the C<extract_...> subroutines I<don't>
-extract the first occurance of a substring anywhere
-in a string (like an unanchored regex would). Rather,
-they extract an occurance of the substring appearing
-immediately at the current matching position in the
-string (like a C<\G>-anchored regex would).
-
-
-
-=head2 General behaviour in list contexts
-
-In a list context, all the subroutines return a list, the first three
-elements of which are always:
-
-=over 4
-
-=item [0]
-
-The extracted string, including the specified delimiters.
-If the extraction fails an empty string is returned.
-
-=item [1]
-
-The remainder of the input string (i.e. the characters after the
-extracted string). On failure, the entire string is returned.
-
-=item [2]
-
-The skipped prefix (i.e. the characters before the extracted string).
-On failure, the empty string is returned.
-
-=back
-
-Note that in a list context, the contents of the original input text (the first
-argument) are not modified in any way.
-
-However, if the input text was passed in a variable, that variable's
-C<pos> value is updated to point at the first character after the
-extracted text. That means that in a list context the various
-subroutines can be used much like regular expressions. For example:
-
- while ( $next = (extract_quotelike($text))[0] )
- {
- # process next quote-like (in $next)
- }
-
-
-=head2 General behaviour in scalar and void contexts
-
-In a scalar context, the extracted string is returned, having first been
-removed from the input text. Thus, the following code also processes
-each quote-like operation, but actually removes them from $text:
-
- while ( $next = extract_quotelike($text) )
- {
- # process next quote-like (in $next)
- }
-
-Note that if the input text is a read-only string (i.e. a literal),
-no attempt is made to remove the extracted text.
-
-In a void context the behaviour of the extraction subroutines is
-exactly the same as in a scalar context, except (of course) that the
-extracted substring is not returned.
-
-=head2 A note about prefixes
-
-Prefix patterns are matched without any trailing modifiers (C</gimsox> etc.)
-This can bite you if you're expecting a prefix specification like
-'.*?(?=<H1>)' to skip everything up to the first <H1> tag. Such a prefix
-pattern will only succeed if the <H1> tag is on the current line, since
-. normally doesn't match newlines.
-
-To overcome this limitation, you need to turn on /s matching within
-the prefix pattern, using the C<(?s)> directive: '(?s).*?(?=<H1>)'
-
-
-=head2 C<extract_delimited>
-
-The C<extract_delimited> function formalizes the common idiom
-of extracting a single-character-delimited substring from the start of
-a string. For example, to extract a single-quote delimited string, the
-following code is typically used:
-
- ($remainder = $text) =~ s/\A('(\\.|[^'])*')//s;
- $extracted = $1;
-
-but with C<extract_delimited> it can be simplified to:
-
- ($extracted,$remainder) = extract_delimited($text, "'");
-
-C<extract_delimited> takes up to four scalars (the input text, the
-delimiters, a prefix pattern to be skipped, and any escape characters)
-and extracts the initial substring of the text that
-is appropriately delimited. If the delimiter string has multiple
-characters, the first one encountered in the text is taken to delimit
-the substring.
-The third argument specifies a prefix pattern that is to be skipped
-(but must be present!) before the substring is extracted.
-The final argument specifies the escape character to be used for each
-delimiter.
-
-All arguments are optional. If the escape characters are not specified,
-every delimiter is escaped with a backslash (C<\>).
-If the prefix is not specified, the
-pattern C<'\s*'> - optional whitespace - is used. If the delimiter set
-is also not specified, the set C</["'`]/> is used. If the text to be processed
-is not specified either, C<$_> is used.
-
-In list context, C<extract_delimited> returns a array of three
-elements, the extracted substring (I<including the surrounding
-delimiters>), the remainder of the text, and the skipped prefix (if
-any). If a suitable delimited substring is not found, the first
-element of the array is the empty string, the second is the complete
-original text, and the prefix returned in the third element is an
-empty string.
-
-In a scalar context, just the extracted substring is returned. In
-a void context, the extracted substring (and any prefix) are simply
-removed from the beginning of the first argument.
-
-Examples:
-
- # Remove a single-quoted substring from the very beginning of $text:
-
- $substring = extract_delimited($text, "'", '');
-
- # Remove a single-quoted Pascalish substring (i.e. one in which
- # doubling the quote character escapes it) from the very
- # beginning of $text:
-
- $substring = extract_delimited($text, "'", '', "'");
-
- # Extract a single- or double- quoted substring from the
- # beginning of $text, optionally after some whitespace
- # (note the list context to protect $text from modification):
-
- ($substring) = extract_delimited $text, q{"'};
-
-
- # Delete the substring delimited by the first '/' in $text:
-
- $text = join '', (extract_delimited($text,'/','[^/]*')[2,1];
-
-Note that this last example is I<not> the same as deleting the first
-quote-like pattern. For instance, if C<$text> contained the string:
-
- "if ('./cmd' =~ m/$UNIXCMD/s) { $cmd = $1; }"
-
-then after the deletion it would contain:
-
- "if ('.$UNIXCMD/s) { $cmd = $1; }"
-
-not:
-
- "if ('./cmd' =~ ms) { $cmd = $1; }"
-
-
-See L<"extract_quotelike"> for a (partial) solution to this problem.
-
-
-=head2 C<extract_bracketed>
-
-Like C<"extract_delimited">, the C<extract_bracketed> function takes
-up to three optional scalar arguments: a string to extract from, a delimiter
-specifier, and a prefix pattern. As before, a missing prefix defaults to
-optional whitespace and a missing text defaults to C<$_>. However, a missing
-delimiter specifier defaults to C<'{}()[]E<lt>E<gt>'> (see below).
-
-C<extract_bracketed> extracts a balanced-bracket-delimited
-substring (using any one (or more) of the user-specified delimiter
-brackets: '(..)', '{..}', '[..]', or '<..>'). Optionally it will also
-respect quoted unbalanced brackets (see below).
-
-A "delimiter bracket" is a bracket in list of delimiters passed as
-C<extract_bracketed>'s second argument. Delimiter brackets are
-specified by giving either the left or right (or both!) versions
-of the required bracket(s). Note that the order in which
-two or more delimiter brackets are specified is not significant.
-
-A "balanced-bracket-delimited substring" is a substring bounded by
-matched brackets, such that any other (left or right) delimiter
-bracket I<within> the substring is also matched by an opposite
-(right or left) delimiter bracket I<at the same level of nesting>. Any
-type of bracket not in the delimiter list is treated as an ordinary
-character.
-
-In other words, each type of bracket specified as a delimiter must be
-balanced and correctly nested within the substring, and any other kind of
-("non-delimiter") bracket in the substring is ignored.
-
-For example, given the string:
-
- $text = "{ an '[irregularly :-(] {} parenthesized >:-)' string }";
-
-then a call to C<extract_bracketed> in a list context:
-
- @result = extract_bracketed( $text, '{}' );
-
-would return:
-
- ( "{ an '[irregularly :-(] {} parenthesized >:-)' string }" , "" , "" )
-
-since both sets of C<'{..}'> brackets are properly nested and evenly balanced.
-(In a scalar context just the first element of the array would be returned. In
-a void context, C<$text> would be replaced by an empty string.)
-
-Likewise the call in:
-
- @result = extract_bracketed( $text, '{[' );
-
-would return the same result, since all sets of both types of specified
-delimiter brackets are correctly nested and balanced.
-
-However, the call in:
-
- @result = extract_bracketed( $text, '{([<' );
-
-would fail, returning:
-
- ( undef , "{ an '[irregularly :-(] {} parenthesized >:-)' string }" );
-
-because the embedded pairs of C<'(..)'>s and C<'[..]'>s are "cross-nested" and
-the embedded C<'E<gt>'> is unbalanced. (In a scalar context, this call would
-return an empty string. In a void context, C<$text> would be unchanged.)
-
-Note that the embedded single-quotes in the string don't help in this
-case, since they have not been specified as acceptable delimiters and are
-therefore treated as non-delimiter characters (and ignored).
-
-However, if a particular species of quote character is included in the
-delimiter specification, then that type of quote will be correctly handled.
-for example, if C<$text> is:
-
- $text = '<A HREF=">>>>">link</A>';
-
-then
-
- @result = extract_bracketed( $text, '<">' );
-
-returns:
-
- ( '<A HREF=">>>>">', 'link</A>', "" )
-
-as expected. Without the specification of C<"> as an embedded quoter:
-
- @result = extract_bracketed( $text, '<>' );
-
-the result would be:
-
- ( '<A HREF=">', '>>>">link</A>', "" )
-
-In addition to the quote delimiters C<'>, C<">, and C<`>, full Perl quote-like
-quoting (i.e. q{string}, qq{string}, etc) can be specified by including the
-letter 'q' as a delimiter. Hence:
-
- @result = extract_bracketed( $text, '<q>' );
-
-would correctly match something like this:
-
- $text = '<leftop: conj /and/ conj>';
-
-See also: C<"extract_quotelike"> and C<"extract_codeblock">.
-
-
-=head2 C<extract_variable>
-
-C<extract_variable> extracts any valid Perl variable or
-variable-involved expression, including scalars, arrays, hashes, array
-accesses, hash look-ups, method calls through objects, subroutine calles
-through subroutine references, etc.
-
-The subroutine takes up to two optional arguments:
-
-=over 4
-
-=item 1.
-
-A string to be processed (C<$_> if the string is omitted or C<undef>)
-
-=item 2.
-
-A string specifying a pattern to be matched as a prefix (which is to be
-skipped). If omitted, optional whitespace is skipped.
-
-=back
-
-On success in a list context, an array of 3 elements is returned. The
-elements are:
-
-=over 4
-
-=item [0]
-
-the extracted variable, or variablish expression
-
-=item [1]
-
-the remainder of the input text,
-
-=item [2]
-
-the prefix substring (if any),
-
-=back
-
-On failure, all of these values (except the remaining text) are C<undef>.
-
-In a scalar context, C<extract_variable> returns just the complete
-substring that matched a variablish expression. C<undef> is returned on
-failure. In addition, the original input text has the returned substring
-(and any prefix) removed from it.
-
-In a void context, the input text just has the matched substring (and
-any specified prefix) removed.
-
-
-=head2 C<extract_tagged>
-
-C<extract_tagged> extracts and segments text between (balanced)
-specified tags.
-
-The subroutine takes up to five optional arguments:
-
-=over 4
-
-=item 1.
-
-A string to be processed (C<$_> if the string is omitted or C<undef>)
-
-=item 2.
-
-A string specifying a pattern to be matched as the opening tag.
-If the pattern string is omitted (or C<undef>) then a pattern
-that matches any standard XML tag is used.
-
-=item 3.
-
-A string specifying a pattern to be matched at the closing tag.
-If the pattern string is omitted (or C<undef>) then the closing
-tag is constructed by inserting a C</> after any leading bracket
-characters in the actual opening tag that was matched (I<not> the pattern
-that matched the tag). For example, if the opening tag pattern
-is specified as C<'{{\w+}}'> and actually matched the opening tag
-C<"{{DATA}}">, then the constructed closing tag would be C<"{{/DATA}}">.
-
-=item 4.
-
-A string specifying a pattern to be matched as a prefix (which is to be
-skipped). If omitted, optional whitespace is skipped.
-
-=item 5.
-
-A hash reference containing various parsing options (see below)
-
-=back
-
-The various options that can be specified are:
-
-=over 4
-
-=item C<reject =E<gt> $listref>
-
-The list reference contains one or more strings specifying patterns
-that must I<not> appear within the tagged text.
-
-For example, to extract
-an HTML link (which should not contain nested links) use:
-
- extract_tagged($text, '<A>', '</A>', undef, {reject => ['<A>']} );
-
-=item C<ignore =E<gt> $listref>
-
-The list reference contains one or more strings specifying patterns
-that are I<not> be be treated as nested tags within the tagged text
-(even if they would match the start tag pattern).
-
-For example, to extract an arbitrary XML tag, but ignore "empty" elements:
-
- extract_tagged($text, undef, undef, undef, {ignore => ['<[^>]*/>']} );
-
-(also see L<"gen_delimited_pat"> below).
-
-
-=item C<fail =E<gt> $str>
-
-The C<fail> option indicates the action to be taken if a matching end
-tag is not encountered (i.e. before the end of the string or some
-C<reject> pattern matches). By default, a failure to match a closing
-tag causes C<extract_tagged> to immediately fail.
-
-However, if the string value associated with <reject> is "MAX", then
-C<extract_tagged> returns the complete text up to the point of failure.
-If the string is "PARA", C<extract_tagged> returns only the first paragraph
-after the tag (up to the first line that is either empty or contains
-only whitespace characters).
-If the string is "", the the default behaviour (i.e. failure) is reinstated.
-
-For example, suppose the start tag "/para" introduces a paragraph, which then
-continues until the next "/endpara" tag or until another "/para" tag is
-encountered:
-
- $text = "/para line 1\n\nline 3\n/para line 4";
-
- extract_tagged($text, '/para', '/endpara', undef,
- {reject => '/para', fail => MAX );
-
- # EXTRACTED: "/para line 1\n\nline 3\n"
-
-Suppose instead, that if no matching "/endpara" tag is found, the "/para"
-tag refers only to the immediately following paragraph:
-
- $text = "/para line 1\n\nline 3\n/para line 4";
-
- extract_tagged($text, '/para', '/endpara', undef,
- {reject => '/para', fail => MAX );
-
- # EXTRACTED: "/para line 1\n"
-
-Note that the specified C<fail> behaviour applies to nested tags as well.
-
-=back
-
-On success in a list context, an array of 6 elements is returned. The elements are:
-
-=over 4
-
-=item [0]
-
-the extracted tagged substring (including the outermost tags),
-
-=item [1]
-
-the remainder of the input text,
-
-=item [2]
-
-the prefix substring (if any),
-
-=item [3]
-
-the opening tag
-
-=item [4]
-
-the text between the opening and closing tags
-
-=item [5]
-
-the closing tag (or "" if no closing tag was found)
-
-=back
-
-On failure, all of these values (except the remaining text) are C<undef>.
-
-In a scalar context, C<extract_tagged> returns just the complete
-substring that matched a tagged text (including the start and end
-tags). C<undef> is returned on failure. In addition, the original input
-text has the returned substring (and any prefix) removed from it.
-
-In a void context, the input text just has the matched substring (and
-any specified prefix) removed.
-
-
-=head2 C<gen_extract_tagged>
-
-(Note: This subroutine is only available under Perl5.005)
-
-C<gen_extract_tagged> generates a new anonymous subroutine which
-extracts text between (balanced) specified tags. In other words,
-it generates a function identical in function to C<extract_tagged>.
-
-The difference between C<extract_tagged> and the anonymous
-subroutines generated by
-C<gen_extract_tagged>, is that those generated subroutines:
-
-=over 4
-
-=item *
-
-do not have to reparse tag specification or parsing options every time
-they are called (whereas C<extract_tagged> has to effectively rebuild
-its tag parser on every call);
-
-=item *
-
-make use of the new qr// construct to pre-compile the regexes they use
-(whereas C<extract_tagged> uses standard string variable interpolation
-to create tag-matching patterns).
-
-=back
-
-The subroutine takes up to four optional arguments (the same set as
-C<extract_tagged> except for the string to be processed). It returns
-a reference to a subroutine which in turn takes a single argument (the text to
-be extracted from).
-
-In other words, the implementation of C<extract_tagged> is exactly
-equivalent to:
-
- sub extract_tagged
- {
- my $text = shift;
- $extractor = gen_extract_tagged(@_);
- return $extractor->($text);
- }
-
-(although C<extract_tagged> is not currently implemented that way, in order
-to preserve pre-5.005 compatibility).
-
-Using C<gen_extract_tagged> to create extraction functions for specific tags
-is a good idea if those functions are going to be called more than once, since
-their performance is typically twice as good as the more general-purpose
-C<extract_tagged>.
-
-
-=head2 C<extract_quotelike>
-
-C<extract_quotelike> attempts to recognize, extract, and segment any
-one of the various Perl quotes and quotelike operators (see
-L<perlop(3)>) Nested backslashed delimiters, embedded balanced bracket
-delimiters (for the quotelike operators), and trailing modifiers are
-all caught. For example, in:
-
- extract_quotelike 'q # an octothorpe: \# (not the end of the q!) #'
-
- extract_quotelike ' "You said, \"Use sed\"." '
-
- extract_quotelike ' s{([A-Z]{1,8}\.[A-Z]{3})} /\L$1\E/; '
-
- extract_quotelike ' tr/\\\/\\\\/\\\//ds; '
-
-the full Perl quotelike operations are all extracted correctly.
-
-Note too that, when using the /x modifier on a regex, any comment
-containing the current pattern delimiter will cause the regex to be
-immediately terminated. In other words:
-
- 'm /
- (?i) # CASE INSENSITIVE
- [a-z_] # LEADING ALPHABETIC/UNDERSCORE
- [a-z0-9]* # FOLLOWED BY ANY NUMBER OF ALPHANUMERICS
- /x'
-
-will be extracted as if it were:
-
- 'm /
- (?i) # CASE INSENSITIVE
- [a-z_] # LEADING ALPHABETIC/'
-
-This behaviour is identical to that of the actual compiler.
-
-C<extract_quotelike> takes two arguments: the text to be processed and
-a prefix to be matched at the very beginning of the text. If no prefix
-is specified, optional whitespace is the default. If no text is given,
-C<$_> is used.
-
-In a list context, an array of 11 elements is returned. The elements are:
-
-=over 4
-
-=item [0]
-
-the extracted quotelike substring (including trailing modifiers),
-
-=item [1]
-
-the remainder of the input text,
-
-=item [2]
-
-the prefix substring (if any),
-
-=item [3]
-
-the name of the quotelike operator (if any),
-
-=item [4]
-
-the left delimiter of the first block of the operation,
-
-=item [5]
-
-the text of the first block of the operation
-(that is, the contents of
-a quote, the regex of a match or substitution or the target list of a
-translation),
-
-=item [6]
-
-the right delimiter of the first block of the operation,
-
-=item [7]
-
-the left delimiter of the second block of the operation
-(that is, if it is a C<s>, C<tr>, or C<y>),
-
-=item [8]
-
-the text of the second block of the operation
-(that is, the replacement of a substitution or the translation list
-of a translation),
-
-=item [9]
-
-the right delimiter of the second block of the operation (if any),
-
-=item [10]
-
-the trailing modifiers on the operation (if any).
-
-=back
-
-For each of the fields marked "(if any)" the default value on success is
-an empty string.
-On failure, all of these values (except the remaining text) are C<undef>.
-
-
-In a scalar context, C<extract_quotelike> returns just the complete substring
-that matched a quotelike operation (or C<undef> on failure). In a scalar or
-void context, the input text has the same substring (and any specified
-prefix) removed.
-
-Examples:
-
- # Remove the first quotelike literal that appears in text
-
- $quotelike = extract_quotelike($text,'.*?');
-
- # Replace one or more leading whitespace-separated quotelike
- # literals in $_ with "<QLL>"
-
- do { $_ = join '<QLL>', (extract_quotelike)[2,1] } until $@;
-
-
- # Isolate the search pattern in a quotelike operation from $text
-
- ($op,$pat) = (extract_quotelike $text)[3,5];
- if ($op =~ /[ms]/)
- {
- print "search pattern: $pat\n";
- }
- else
- {
- print "$op is not a pattern matching operation\n";
- }
-
-
-=head2 C<extract_quotelike> and "here documents"
-
-C<extract_quotelike> can successfully extract "here documents" from an input
-string, but with an important caveat in list contexts.
-
-Unlike other types of quote-like literals, a here document is rarely
-a contiguous substring. For example, a typical piece of code using
-here document might look like this:
-
- <<'EOMSG' || die;
- This is the message.
- EOMSG
- exit;
-
-Given this as an input string in a scalar context, C<extract_quotelike>
-would correctly return the string "<<'EOMSG'\nThis is the message.\nEOMSG",
-leaving the string " || die;\nexit;" in the original variable. In other words,
-the two separate pieces of the here document are successfully extracted and
-concatenated.
-
-In a list context, C<extract_quotelike> would return the list
-
-=over 4
-
-=item [0]
-
-"<<'EOMSG'\nThis is the message.\nEOMSG\n" (i.e. the full extracted here document,
-including fore and aft delimiters),
-
-=item [1]
-
-" || die;\nexit;" (i.e. the remainder of the input text, concatenated),
-
-=item [2]
-
-"" (i.e. the prefix substring -- trivial in this case),
-
-=item [3]
-
-"<<" (i.e. the "name" of the quotelike operator)
-
-=item [4]
-
-"'EOMSG'" (i.e. the left delimiter of the here document, including any quotes),
-
-=item [5]
-
-"This is the message.\n" (i.e. the text of the here document),
-
-=item [6]
-
-"EOMSG" (i.e. the right delimiter of the here document),
-
-=item [7..10]
-
-"" (a here document has no second left delimiter, second text, second right
-delimiter, or trailing modifiers).
-
-=back
-
-However, the matching position of the input variable would be set to
-"exit;" (i.e. I<after> the closing delimiter of the here document),
-which would cause the earlier " || die;\nexit;" to be skipped in any
-sequence of code fragment extractions.
-
-To avoid this problem, when it encounters a here document whilst
-extracting from a modifiable string, C<extract_quotelike> silently
-rearranges the string to an equivalent piece of Perl:
-
- <<'EOMSG'
- This is the message.
- EOMSG
- || die;
- exit;
-
-in which the here document I<is> contiguous. It still leaves the
-matching position after the here document, but now the rest of the line
-on which the here document starts is not skipped.
-
-To prevent <extract_quotelike> from mucking about with the input in this way
-(this is the only case where a list-context C<extract_quotelike> does so),
-you can pass the input variable as an interpolated literal:
-
- $quotelike = extract_quotelike("$var");
-
-
-=head2 C<extract_codeblock>
-
-C<extract_codeblock> attempts to recognize and extract a balanced
-bracket delimited substring that may contain unbalanced brackets
-inside Perl quotes or quotelike operations. That is, C<extract_codeblock>
-is like a combination of C<"extract_bracketed"> and
-C<"extract_quotelike">.
-
-C<extract_codeblock> takes the same initial three parameters as C<extract_bracketed>:
-a text to process, a set of delimiter brackets to look for, and a prefix to
-match first. It also takes an optional fourth parameter, which allows the
-outermost delimiter brackets to be specified separately (see below).
-
-Omitting the first argument (input text) means process C<$_> instead.
-Omitting the second argument (delimiter brackets) indicates that only C<'{'> is to be used.
-Omitting the third argument (prefix argument) implies optional whitespace at the start.
-Omitting the fourth argument (outermost delimiter brackets) indicates that the
-value of the second argument is to be used for the outermost delimiters.
-
-Once the prefix an dthe outermost opening delimiter bracket have been
-recognized, code blocks are extracted by stepping through the input text and
-trying the following alternatives in sequence:
-
-=over 4
-
-=item 1.
-
-Try and match a closing delimiter bracket. If the bracket was the same
-species as the last opening bracket, return the substring to that
-point. If the bracket was mismatched, return an error.
-
-=item 2.
-
-Try to match a quote or quotelike operator. If found, call
-C<extract_quotelike> to eat it. If C<extract_quotelike> fails, return
-the error it returned. Otherwise go back to step 1.
-
-=item 3.
-
-Try to match an opening delimiter bracket. If found, call
-C<extract_codeblock> recursively to eat the embedded block. If the
-recursive call fails, return an error. Otherwise, go back to step 1.
-
-=item 4.
-
-Unconditionally match a bareword or any other single character, and
-then go back to step 1.
-
-=back
-
-
-Examples:
-
- # Find a while loop in the text
-
- if ($text =~ s/.*?while\s*\{/{/)
- {
- $loop = "while " . extract_codeblock($text);
- }
-
- # Remove the first round-bracketed list (which may include
- # round- or curly-bracketed code blocks or quotelike operators)
-
- extract_codeblock $text, "(){}", '[^(]*';
-
-
-The ability to specify a different outermost delimiter bracket is useful
-in some circumstances. For example, in the Parse::RecDescent module,
-parser actions which are to be performed only on a successful parse
-are specified using a C<E<lt>defer:...E<gt>> directive. For example:
-
- sentence: subject verb object
- <defer: {$::theVerb = $item{verb}} >
-
-Parse::RecDescent uses C<extract_codeblock($text, '{}E<lt>E<gt>')> to extract the code
-within the C<E<lt>defer:...E<gt>> directive, but there's a problem.
-
-A deferred action like this:
-
- <defer: {if ($count>10) {$count--}} >
-
-will be incorrectly parsed as:
-
- <defer: {if ($count>
-
-because the "less than" operator is interpreted as a closing delimiter.
-
-But, by extracting the directive using
-S<C<extract_codeblock($text, '{}', undef, 'E<lt>E<gt>')>>
-the '>' character is only treated as a delimited at the outermost
-level of the code block, so the directive is parsed correctly.
-
-=head2 C<extract_multiple>
-
-The C<extract_multiple> subroutine takes a string to be processed and a
-list of extractors (subroutines or regular expressions) to apply to that string.
-
-In an array context C<extract_multiple> returns an array of substrings
-of the original string, as extracted by the specified extractors.
-In a scalar context, C<extract_multiple> returns the first
-substring successfully extracted from the original string. In both
-scalar and void contexts the original string has the first successfully
-extracted substring removed from it. In all contexts
-C<extract_multiple> starts at the current C<pos> of the string, and
-sets that C<pos> appropriately after it matches.
-
-Hence, the aim of of a call to C<extract_multiple> in a list context
-is to split the processed string into as many non-overlapping fields as
-possible, by repeatedly applying each of the specified extractors
-to the remainder of the string. Thus C<extract_multiple> is
-a generalized form of Perl's C<split> subroutine.
-
-The subroutine takes up to four optional arguments:
-
-=over 4
-
-=item 1.
-
-A string to be processed (C<$_> if the string is omitted or C<undef>)
-
-=item 2.
-
-A reference to a list of subroutine references and/or qr// objects and/or
-literal strings and/or hash references, specifying the extractors
-to be used to split the string. If this argument is omitted (or
-C<undef>) the list:
-
- [
- sub { extract_variable($_[0], '') },
- sub { extract_quotelike($_[0],'') },
- sub { extract_codeblock($_[0],'{}','') },
- ]
-
-is used.
-
-
-=item 3.
-
-An number specifying the maximum number of fields to return. If this
-argument is omitted (or C<undef>), split continues as long as possible.
-
-If the third argument is I<N>, then extraction continues until I<N> fields
-have been successfully extracted, or until the string has been completely
-processed.
-
-Note that in scalar and void contexts the value of this argument is
-automatically reset to 1 (under C<-w>, a warning is issued if the argument
-has to be reset).
-
-=item 4.
-
-A value indicating whether unmatched substrings (see below) within the
-text should be skipped or returned as fields. If the value is true,
-such substrings are skipped. Otherwise, they are returned.
-
-=back
-
-The extraction process works by applying each extractor in
-sequence to the text string.
-
-If the extractor is a subroutine it is called in a list context and is
-expected to return a list of a single element, namely the extracted
-text. It may optionally also return two further arguments: a string
-representing the text left after extraction (like $' for a pattern
-match), and a string representing any prefix skipped before the
-extraction (like $` in a pattern match). Note that this is designed
-to facilitate the use of other Text::Balanced subroutines with
-C<extract_multiple>. Note too that the value returned by an extractor
-subroutine need not bear any relationship to the corresponding substring
-of the original text (see examples below).
-
-If the extractor is a precompiled regular expression or a string,
-it is matched against the text in a scalar context with a leading
-'\G' and the gc modifiers enabled. The extracted value is either
-$1 if that variable is defined after the match, or else the
-complete match (i.e. $&).
-
-If the extractor is a hash reference, it must contain exactly one element.
-The value of that element is one of the
-above extractor types (subroutine reference, regular expression, or string).
-The key of that element is the name of a class into which the successful
-return value of the extractor will be blessed.
-
-If an extractor returns a defined value, that value is immediately
-treated as the next extracted field and pushed onto the list of fields.
-If the extractor was specified in a hash reference, the field is also
-blessed into the appropriate class,
-
-If the extractor fails to match (in the case of a regex extractor), or returns an empty list or an undefined value (in the case of a subroutine extractor), it is
-assumed to have failed to extract.
-If none of the extractor subroutines succeeds, then one
-character is extracted from the start of the text and the extraction
-subroutines reapplied. Characters which are thus removed are accumulated and
-eventually become the next field (unless the fourth argument is true, in which
-case they are disgarded).
-
-For example, the following extracts substrings that are valid Perl variables:
-
- @fields = extract_multiple($text,
- [ sub { extract_variable($_[0]) } ],
- undef, 1);
-
-This example separates a text into fields which are quote delimited,
-curly bracketed, and anything else. The delimited and bracketed
-parts are also blessed to identify them (the "anything else" is unblessed):
-
- @fields = extract_multiple($text,
- [
- { Delim => sub { extract_delimited($_[0],q{'"}) } },
- { Brack => sub { extract_bracketed($_[0],'{}') } },
- ]);
-
-This call extracts the next single substring that is a valid Perl quotelike
-operator (and removes it from $text):
-
- $quotelike = extract_multiple($text,
- [
- sub { extract_quotelike($_[0]) },
- ], undef, 1);
-
-Finally, here is yet another way to do comma-separated value parsing:
-
- @fields = extract_multiple($csv_text,
- [
- sub { extract_delimited($_[0],q{'"}) },
- qr/([^,]+)(.*)/,
- ],
- undef,1);
-
-The list in the second argument means:
-I<"Try and extract a ' or " delimited string, otherwise extract anything up to a comma...">.
-The undef third argument means:
-I<"...as many times as possible...">,
-and the true value in the fourth argument means
-I<"...discarding anything else that appears (i.e. the commas)">.
-
-If you wanted the commas preserved as separate fields (i.e. like split
-does if your split pattern has capturing parentheses), you would
-just make the last parameter undefined (or remove it).
-
-
-=head2 C<gen_delimited_pat>
-
-The C<gen_delimited_pat> subroutine takes a single (string) argument and
- > builds a Friedl-style optimized regex that matches a string delimited
-by any one of the characters in the single argument. For example:
-
- gen_delimited_pat(q{'"})
-
-returns the regex:
-
- (?:\"(?:\\\"|(?!\").)*\"|\'(?:\\\'|(?!\').)*\')
-
-Note that the specified delimiters are automatically quotemeta'd.
-
-A typical use of C<gen_delimited_pat> would be to build special purpose tags
-for C<extract_tagged>. For example, to properly ignore "empty" XML elements
-(which might contain quoted strings):
-
- my $empty_tag = '<(' . gen_delimited_pat(q{'"}) . '|.)+/>';
-
- extract_tagged($text, undef, undef, undef, {ignore => [$empty_tag]} );
-
-
-C<gen_delimited_pat> may also be called with an optional second argument,
-which specifies the "escape" character(s) to be used for each delimiter.
-For example to match a Pascal-style string (where ' is the delimiter
-and '' is a literal ' within the string):
-
- gen_delimited_pat(q{'},q{'});
-
-Different escape characters can be specified for different delimiters.
-For example, to specify that '/' is the escape for single quotes
-and '%' is the escape for double quotes:
-
- gen_delimited_pat(q{'"},q{/%});
-
-If more delimiters than escape chars are specified, the last escape char
-is used for the remaining delimiters.
-If no escape char is specified for a given specified delimiter, '\' is used.
-
-Note that
-C<gen_delimited_pat> was previously called
-C<delimited_pat>. That name may still be used, but is now deprecated.
-
-
-=head1 DIAGNOSTICS
-
-In a list context, all the functions return C<(undef,$original_text)>
-on failure. In a scalar context, failure is indicated by returning C<undef>
-(in this case the input text is not modified in any way).
-
-In addition, on failure in I<any> context, the C<$@> variable is set.
-Accessing C<$@-E<gt>{error}> returns one of the error diagnostics listed
-below.
-Accessing C<$@-E<gt>{pos}> returns the offset into the original string at
-which the error was detected (although not necessarily where it occurred!)
-Printing C<$@> directly produces the error message, with the offset appended.
-On success, the C<$@> variable is guaranteed to be C<undef>.
-
-The available diagnostics are:
-
-=over 4
-
-=item C<Did not find a suitable bracket: "%s">
-
-The delimiter provided to C<extract_bracketed> was not one of
-C<'()[]E<lt>E<gt>{}'>.
-
-=item C<Did not find prefix: /%s/>
-
-A non-optional prefix was specified but wasn't found at the start of the text.
-
-=item C<Did not find opening bracket after prefix: "%s">
-
-C<extract_bracketed> or C<extract_codeblock> was expecting a
-particular kind of bracket at the start of the text, and didn't find it.
-
-=item C<No quotelike operator found after prefix: "%s">
-
-C<extract_quotelike> didn't find one of the quotelike operators C<q>,
-C<qq>, C<qw>, C<qx>, C<s>, C<tr> or C<y> at the start of the substring
-it was extracting.
-
-=item C<Unmatched closing bracket: "%c">
-
-C<extract_bracketed>, C<extract_quotelike> or C<extract_codeblock> encountered
-a closing bracket where none was expected.
-
-=item C<Unmatched opening bracket(s): "%s">
-
-C<extract_bracketed>, C<extract_quotelike> or C<extract_codeblock> ran
-out of characters in the text before closing one or more levels of nested
-brackets.
-
-=item C<Unmatched embedded quote (%s)>
-
-C<extract_bracketed> attempted to match an embedded quoted substring, but
-failed to find a closing quote to match it.
-
-=item C<Did not find closing delimiter to match '%s'>
-
-C<extract_quotelike> was unable to find a closing delimiter to match the
-one that opened the quote-like operation.
-
-=item C<Mismatched closing bracket: expected "%c" but found "%s">
-
-C<extract_bracketed>, C<extract_quotelike> or C<extract_codeblock> found
-a valid bracket delimiter, but it was the wrong species. This usually
-indicates a nesting error, but may indicate incorrect quoting or escaping.
-
-=item C<No block delimiter found after quotelike "%s">
-
-C<extract_quotelike> or C<extract_codeblock> found one of the
-quotelike operators C<q>, C<qq>, C<qw>, C<qx>, C<s>, C<tr> or C<y>
-without a suitable block after it.
-
-=item C<Did not find leading dereferencer>
-
-C<extract_variable> was expecting one of '$', '@', or '%' at the start of
-a variable, but didn't find any of them.
-
-=item C<Bad identifier after dereferencer>
-
-C<extract_variable> found a '$', '@', or '%' indicating a variable, but that
-character was not followed by a legal Perl identifier.
-
-=item C<Did not find expected opening bracket at %s>
-
-C<extract_codeblock> failed to find any of the outermost opening brackets
-that were specified.
-
-=item C<Improperly nested codeblock at %s>
-
-A nested code block was found that started with a delimiter that was specified
-as being only to be used as an outermost bracket.
-
-=item C<Missing second block for quotelike "%s">
-
-C<extract_codeblock> or C<extract_quotelike> found one of the
-quotelike operators C<s>, C<tr> or C<y> followed by only one block.
-
-=item C<No match found for opening bracket>
-
-C<extract_codeblock> failed to find a closing bracket to match the outermost
-opening bracket.
-
-=item C<Did not find opening tag: /%s/>
-
-C<extract_tagged> did not find a suitable opening tag (after any specified
-prefix was removed).
-
-=item C<Unable to construct closing tag to match: /%s/>
-
-C<extract_tagged> matched the specified opening tag and tried to
-modify the matched text to produce a matching closing tag (because
-none was specified). It failed to generate the closing tag, almost
-certainly because the opening tag did not start with a
-bracket of some kind.
-
-=item C<Found invalid nested tag: %s>
-
-C<extract_tagged> found a nested tag that appeared in the "reject" list
-(and the failure mode was not "MAX" or "PARA").
-
-=item C<Found unbalanced nested tag: %s>
-
-C<extract_tagged> found a nested opening tag that was not matched by a
-corresponding nested closing tag (and the failure mode was not "MAX" or "PARA").
-
-=item C<Did not find closing tag>
-
-C<extract_tagged> reached the end of the text without finding a closing tag
-to match the original opening tag (and the failure mode was not
-"MAX" or "PARA").
-
-
-
-
-=back
-
-
-=head1 AUTHOR
-
-Damian Conway (damian@conway.org)
-
-
-=head1 BUGS AND IRRITATIONS
-
-There are undoubtedly serious bugs lurking somewhere in this code, if
-only because parts of it give the impression of understanding a great deal
-more about Perl than they really do.
-
-Bug reports and other feedback are most welcome.
-
-
-=head1 COPYRIGHT
-
- Copyright (c) 1997-2001, Damian Conway. All Rights Reserved.
- This module is free software. It may be used, redistributed
- and/or modified under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/Text/ParseWords.pm b/Master/tlpkg/tlperl/lib/Text/ParseWords.pm
deleted file mode 100644
index 2f6812ade80..00000000000
--- a/Master/tlpkg/tlperl/lib/Text/ParseWords.pm
+++ /dev/null
@@ -1,263 +0,0 @@
-package Text::ParseWords;
-
-use vars qw($VERSION @ISA @EXPORT $PERL_SINGLE_QUOTE);
-$VERSION = "3.24";
-
-require 5.000;
-
-use Exporter;
-@ISA = qw(Exporter);
-@EXPORT = qw(shellwords quotewords nested_quotewords parse_line);
-@EXPORT_OK = qw(old_shellwords);
-
-
-sub shellwords {
- my(@lines) = @_;
- $lines[$#lines] =~ s/\s+$//;
- return(quotewords('\s+', 0, @lines));
-}
-
-
-
-sub quotewords {
- my($delim, $keep, @lines) = @_;
- my($line, @words, @allwords);
-
- foreach $line (@lines) {
- @words = parse_line($delim, $keep, $line);
- return() unless (@words || !length($line));
- push(@allwords, @words);
- }
- return(@allwords);
-}
-
-
-
-sub nested_quotewords {
- my($delim, $keep, @lines) = @_;
- my($i, @allwords);
-
- for ($i = 0; $i < @lines; $i++) {
- @{$allwords[$i]} = parse_line($delim, $keep, $lines[$i]);
- return() unless (@{$allwords[$i]} || !length($lines[$i]));
- }
- return(@allwords);
-}
-
-
-
-sub parse_line {
- my($delimiter, $keep, $line) = @_;
- my($word, @pieces);
-
- no warnings 'uninitialized'; # we will be testing undef strings
-
- while (length($line)) {
- $line =~ s/^(["']) # a $quote
- ((?:\\.|(?!\1)[^\\])*) # and $quoted text
- \1 # followed by the same quote
- | # --OR--
- ^((?:\\.|[^\\"'])*?) # an $unquoted text
- (\Z(?!\n)|(?-x:$delimiter)|(?!^)(?=["']))
- # plus EOL, delimiter, or quote
- //xs or return; # extended layout
- my($quote, $quoted, $unquoted, $delim) = ($1, $2, $3, $4);
- return() unless( defined($quote) || length($unquoted) || length($delim));
-
- if ($keep) {
- $quoted = "$quote$quoted$quote";
- }
- else {
- $unquoted =~ s/\\(.)/$1/sg;
- if (defined $quote) {
- $quoted =~ s/\\(.)/$1/sg if ($quote eq '"');
- $quoted =~ s/\\([\\'])/$1/g if ( $PERL_SINGLE_QUOTE && $quote eq "'");
- }
- }
- $word .= substr($line, 0, 0); # leave results tainted
- $word .= defined $quote ? $quoted : $unquoted;
-
- if (length($delim)) {
- push(@pieces, $word);
- push(@pieces, $delim) if ($keep eq 'delimiters');
- undef $word;
- }
- if (!length($line)) {
- push(@pieces, $word);
- }
- }
- return(@pieces);
-}
-
-
-
-sub old_shellwords {
-
- # Usage:
- # use ParseWords;
- # @words = old_shellwords($line);
- # or
- # @words = old_shellwords(@lines);
- # or
- # @words = old_shellwords(); # defaults to $_ (and clobbers it)
-
- no warnings 'uninitialized'; # we will be testing undef strings
- local *_ = \join('', @_) if @_;
- my (@words, $snippet);
-
- s/\A\s+//;
- while ($_ ne '') {
- my $field = substr($_, 0, 0); # leave results tainted
- for (;;) {
- if (s/\A"(([^"\\]|\\.)*)"//s) {
- ($snippet = $1) =~ s#\\(.)#$1#sg;
- }
- elsif (/\A"/) {
- require Carp;
- Carp::carp("Unmatched double quote: $_");
- return();
- }
- elsif (s/\A'(([^'\\]|\\.)*)'//s) {
- ($snippet = $1) =~ s#\\(.)#$1#sg;
- }
- elsif (/\A'/) {
- require Carp;
- Carp::carp("Unmatched single quote: $_");
- return();
- }
- elsif (s/\A\\(.)//s) {
- $snippet = $1;
- }
- elsif (s/\A([^\s\\'"]+)//) {
- $snippet = $1;
- }
- else {
- s/\A\s+//;
- last;
- }
- $field .= $snippet;
- }
- push(@words, $field);
- }
- return @words;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Text::ParseWords - parse text into an array of tokens or array of arrays
-
-=head1 SYNOPSIS
-
- use Text::ParseWords;
- @lists = &nested_quotewords($delim, $keep, @lines);
- @words = &quotewords($delim, $keep, @lines);
- @words = &shellwords(@lines);
- @words = &parse_line($delim, $keep, $line);
- @words = &old_shellwords(@lines); # DEPRECATED!
-
-=head1 DESCRIPTION
-
-The &nested_quotewords() and &quotewords() functions accept a delimiter
-(which can be a regular expression)
-and a list of lines and then breaks those lines up into a list of
-words ignoring delimiters that appear inside quotes. &quotewords()
-returns all of the tokens in a single long list, while &nested_quotewords()
-returns a list of token lists corresponding to the elements of @lines.
-&parse_line() does tokenizing on a single string. The &*quotewords()
-functions simply call &parse_line(), so if you're only splitting
-one line you can call &parse_line() directly and save a function
-call.
-
-The $keep argument is a boolean flag. If true, then the tokens are
-split on the specified delimiter, but all other characters (quotes,
-backslashes, etc.) are kept in the tokens. If $keep is false then the
-&*quotewords() functions remove all quotes and backslashes that are
-not themselves backslash-escaped or inside of single quotes (i.e.,
-&quotewords() tries to interpret these characters just like the Bourne
-shell). NB: these semantics are significantly different from the
-original version of this module shipped with Perl 5.000 through 5.004.
-As an additional feature, $keep may be the keyword "delimiters" which
-causes the functions to preserve the delimiters in each string as
-tokens in the token lists, in addition to preserving quote and
-backslash characters.
-
-&shellwords() is written as a special case of &quotewords(), and it
-does token parsing with whitespace as a delimiter-- similar to most
-Unix shells.
-
-=head1 EXAMPLES
-
-The sample program:
-
- use Text::ParseWords;
- @words = &quotewords('\s+', 0, q{this is "a test" of\ quotewords \"for you});
- $i = 0;
- foreach (@words) {
- print "$i: <$_>\n";
- $i++;
- }
-
-produces:
-
- 0: <this>
- 1: <is>
- 2: <a test>
- 3: <of quotewords>
- 4: <"for>
- 5: <you>
-
-demonstrating:
-
-=over 4
-
-=item 0
-
-a simple word
-
-=item 1
-
-multiple spaces are skipped because of our $delim
-
-=item 2
-
-use of quotes to include a space in a word
-
-=item 3
-
-use of a backslash to include a space in a word
-
-=item 4
-
-use of a backslash to remove the special meaning of a double-quote
-
-=item 5
-
-another simple word (note the lack of effect of the
-backslashed double-quote)
-
-=back
-
-Replacing C<&quotewords('\s+', 0, q{this is...})>
-with C<&shellwords(q{this is...})>
-is a simpler way to accomplish the same thing.
-
-=head1 AUTHORS
-
-Maintainer is Hal Pomeranz <pomeranz@netcom.com>, 1994-1997 (Original
-author unknown). Much of the code for &parse_line() (including the
-primary regexp) from Joerk Behrends <jbehrends@multimediaproduzenten.de>.
-
-Examples section another documentation provided by John Heidemann
-<johnh@ISI.EDU>
-
-Bug reports, patches, and nagging provided by lots of folks-- thanks
-everybody! Special thanks to Michael Schwern <schwern@envirolink.org>
-for assuring me that a &nested_quotewords() would be useful, and to
-Jeff Friedl <jfriedl@yahoo-inc.com> for telling me not to worry about
-error-checking (sort of-- you had to be there).
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Text/Soundex.pm b/Master/tlpkg/tlperl/lib/Text/Soundex.pm
deleted file mode 100644
index 64a9e6507d5..00000000000
--- a/Master/tlpkg/tlperl/lib/Text/Soundex.pm
+++ /dev/null
@@ -1,150 +0,0 @@
-package Text::Soundex;
-require 5.000;
-require Exporter;
-
-@ISA = qw(Exporter);
-@EXPORT = qw(&soundex $soundex_nocode);
-
-$VERSION = '1.01';
-
-# $Id: soundex.pl,v 1.2 1994/03/24 00:30:27 mike Exp $
-#
-# Implementation of soundex algorithm as described by Knuth in volume
-# 3 of The Art of Computer Programming, with ideas stolen from Ian
-# Phillipps <ian@pipex.net>.
-#
-# Mike Stok <Mike.Stok@meiko.concord.ma.us>, 2 March 1994.
-#
-# Knuth's test cases are:
-#
-# Euler, Ellery -> E460
-# Gauss, Ghosh -> G200
-# Hilbert, Heilbronn -> H416
-# Knuth, Kant -> K530
-# Lloyd, Ladd -> L300
-# Lukasiewicz, Lissajous -> L222
-#
-# $Log: soundex.pl,v $
-# Revision 1.2 1994/03/24 00:30:27 mike
-# Subtle bug (any excuse :-) spotted by Rich Pinder <rpinder@hsc.usc.edu>
-# in the way I handles leasing characters which were different but had
-# the same soundex code. This showed up comparing it with Oracle's
-# soundex output.
-#
-# Revision 1.1 1994/03/02 13:01:30 mike
-# Initial revision
-#
-#
-##############################################################################
-
-# $soundex_nocode is used to indicate a string doesn't have a soundex
-# code, I like undef other people may want to set it to 'Z000'.
-
-$soundex_nocode = undef;
-
-sub soundex
-{
- local (@s, $f, $fc, $_) = @_;
-
- push @s, '' unless @s; # handle no args as a single empty string
-
- foreach (@s)
- {
- $_ = uc $_;
- tr/A-Z//cd;
-
- if ($_ eq '')
- {
- $_ = $soundex_nocode;
- }
- else
- {
- ($f) = /^(.)/;
- tr/AEHIOUWYBFPVCGJKQSXZDTLMNR/00000000111122222222334556/;
- ($fc) = /^(.)/;
- s/^$fc+//;
- tr///cs;
- tr/0//d;
- $_ = $f . $_ . '000';
- s/^(.{4}).*/$1/;
- }
- }
-
- wantarray ? @s : shift @s;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Text::Soundex - Implementation of the Soundex Algorithm as Described by Knuth
-
-=head1 SYNOPSIS
-
- use Text::Soundex;
-
- $code = soundex $string; # get soundex code for a string
- @codes = soundex @list; # get list of codes for list of strings
-
- # set value to be returned for strings without soundex code
-
- $soundex_nocode = 'Z000';
-
-=head1 DESCRIPTION
-
-This module implements the soundex algorithm as described by Donald Knuth
-in Volume 3 of B<The Art of Computer Programming>. The algorithm is
-intended to hash words (in particular surnames) into a small space using a
-simple model which approximates the sound of the word when spoken by an English
-speaker. Each word is reduced to a four character string, the first
-character being an upper case letter and the remaining three being digits.
-
-If there is no soundex code representation for a string then the value of
-C<$soundex_nocode> is returned. This is initially set to C<undef>, but
-many people seem to prefer an I<unlikely> value like C<Z000>
-(how unlikely this is depends on the data set being dealt with.) Any value
-can be assigned to C<$soundex_nocode>.
-
-In scalar context C<soundex> returns the soundex code of its first
-argument, and in list context a list is returned in which each element is the
-soundex code for the corresponding argument passed to C<soundex> e.g.
-
- @codes = soundex qw(Mike Stok);
-
-leaves C<@codes> containing C<('M200', 'S320')>.
-
-=head1 EXAMPLES
-
-Knuth's examples of various names and the soundex codes they map to
-are listed below:
-
- Euler, Ellery -> E460
- Gauss, Ghosh -> G200
- Hilbert, Heilbronn -> H416
- Knuth, Kant -> K530
- Lloyd, Ladd -> L300
- Lukasiewicz, Lissajous -> L222
-
-so:
-
- $code = soundex 'Knuth'; # $code contains 'K530'
- @list = soundex qw(Lloyd Gauss); # @list contains 'L300', 'G200'
-
-=head1 LIMITATIONS
-
-As the soundex algorithm was originally used a B<long> time ago in the US
-it considers only the English alphabet and pronunciation.
-
-As it is mapping a large space (arbitrary length strings) onto a small
-space (single letter plus 3 digits) no inference can be made about the
-similarity of two strings which end up with the same soundex code. For
-example, both C<Hilbert> and C<Heilbronn> end up with a soundex code
-of C<H416>.
-
-=head1 AUTHOR
-
-This code was implemented by Mike Stok (C<stok@cybercom.net>) from the
-description given by Knuth. Ian Phillipps (C<ian@pipex.net>) and Rich Pinder
-(C<rpinder@hsc.usc.edu>) supplied ideas and spotted mistakes.
diff --git a/Master/tlpkg/tlperl/lib/Text/Tabs.pm b/Master/tlpkg/tlperl/lib/Text/Tabs.pm
deleted file mode 100644
index 36107fcfe3e..00000000000
--- a/Master/tlpkg/tlperl/lib/Text/Tabs.pm
+++ /dev/null
@@ -1,121 +0,0 @@
-
-package Text::Tabs;
-
-require Exporter;
-
-@ISA = (Exporter);
-@EXPORT = qw(expand unexpand $tabstop);
-
-use vars qw($VERSION $tabstop $debug);
-$VERSION = 2005.0824;
-
-use strict;
-
-BEGIN {
- $tabstop = 8;
- $debug = 0;
-}
-
-sub expand {
- my @l;
- my $pad;
- for ( @_ ) {
- my $s = '';
- for (split(/^/m, $_, -1)) {
- my $offs = 0;
- s{\t}{
- $pad = $tabstop - (pos() + $offs) % $tabstop;
- $offs += $pad - 1;
- " " x $pad;
- }eg;
- $s .= $_;
- }
- push(@l, $s);
- }
- return @l if wantarray;
- return $l[0];
-}
-
-sub unexpand
-{
- my (@l) = @_;
- my @e;
- my $x;
- my $line;
- my @lines;
- my $lastbit;
- for $x (@l) {
- @lines = split("\n", $x, -1);
- for $line (@lines) {
- $line = expand($line);
- @e = split(/(.{$tabstop})/,$line,-1);
- $lastbit = pop(@e);
- $lastbit = '' unless defined $lastbit;
- $lastbit = "\t"
- if $lastbit eq " "x$tabstop;
- for $_ (@e) {
- if ($debug) {
- my $x = $_;
- $x =~ s/\t/^I\t/gs;
- print "sub on '$x'\n";
- }
- s/ +$/\t/;
- }
- $line = join('',@e, $lastbit);
- }
- $x = join("\n", @lines);
- }
- return @l if wantarray;
- return $l[0];
-}
-
-1;
-__END__
-
-sub expand
-{
- my (@l) = @_;
- for $_ (@l) {
- 1 while s/(^|\n)([^\t\n]*)(\t+)/
- $1. $2 . (" " x
- ($tabstop * length($3)
- - (length($2) % $tabstop)))
- /sex;
- }
- return @l if wantarray;
- return $l[0];
-}
-
-
-=head1 NAME
-
-Text::Tabs -- expand and unexpand tabs per the unix expand(1) and unexpand(1)
-
-=head1 SYNOPSIS
-
- use Text::Tabs;
-
- $tabstop = 4;
- @lines_without_tabs = expand(@lines_with_tabs);
- @lines_with_tabs = unexpand(@lines_without_tabs);
-
-=head1 DESCRIPTION
-
-Text::Tabs does about what the unix utilities expand(1) and unexpand(1)
-do. Given a line with tabs in it, expand will replace the tabs with
-the appropriate number of spaces. Given a line with or without tabs in
-it, unexpand will add tabs when it can save bytes by doing so. Invisible
-compression with plain ascii!
-
-=head1 BUGS
-
-expand doesn't handle newlines very quickly -- do not feed it an
-entire document in one string. Instead feed it an array of lines.
-
-=head1 LICENSE
-
-Copyright (C) 1996-2002,2005 David Muir Sharnoff.
-Copyright (C) 2005 Aristotle Pagaltzis
-This module may be modified, used, copied, and redistributed at your own risk.
-Publicly redistributed modified versions must use a different name.
-
diff --git a/Master/tlpkg/tlperl/lib/Text/Wrap.pm b/Master/tlpkg/tlperl/lib/Text/Wrap.pm
deleted file mode 100644
index d364cfc1195..00000000000
--- a/Master/tlpkg/tlperl/lib/Text/Wrap.pm
+++ /dev/null
@@ -1,223 +0,0 @@
-package Text::Wrap;
-
-require Exporter;
-
-@ISA = qw(Exporter);
-@EXPORT = qw(wrap fill);
-@EXPORT_OK = qw($columns $break $huge);
-
-$VERSION = 2005.0824_01;
-
-use vars qw($VERSION $columns $debug $break $huge $unexpand $tabstop
- $separator $separator2);
-use strict;
-
-BEGIN {
- $columns = 76; # <= screen width
- $debug = 0;
- $break = '\s';
- $huge = 'wrap'; # alternatively: 'die' or 'overflow'
- $unexpand = 1;
- $tabstop = 8;
- $separator = "\n";
- $separator2 = undef;
-}
-
-use Text::Tabs qw(expand unexpand);
-
-sub wrap
-{
- my ($ip, $xp, @t) = @_;
-
- local($Text::Tabs::tabstop) = $tabstop;
- my $r = "";
- my $tail = pop(@t);
- my $t = expand(join("", (map { /\s+\z/ ? ( $_ ) : ($_, ' ') } @t), $tail));
- my $lead = $ip;
- my $ll = $columns - length(expand($ip)) - 1;
- $ll = 0 if $ll < 0;
- my $nll = $columns - length(expand($xp)) - 1;
- my $nl = "";
- my $remainder = "";
-
- use re 'taint';
-
- pos($t) = 0;
- while ($t !~ /\G\s*\Z/gc) {
- if ($t =~ /\G([^\n]{0,$ll})($break|\n*\z)/xmgc) {
- $r .= $unexpand
- ? unexpand($nl . $lead . $1)
- : $nl . $lead . $1;
- $remainder = $2;
- } elsif ($huge eq 'wrap' && $t =~ /\G([^\n]{$ll})/gc) {
- $r .= $unexpand
- ? unexpand($nl . $lead . $1)
- : $nl . $lead . $1;
- $remainder = defined($separator2) ? $separator2 : $separator;
- } elsif ($huge eq 'overflow' && $t =~ /\G([^\n]*?)($break|\z)/xmgc) {
- $r .= $unexpand
- ? unexpand($nl . $lead . $1)
- : $nl . $lead . $1;
- $remainder = $2;
- } elsif ($huge eq 'die') {
- die "couldn't wrap '$t'";
- } else {
- die "This shouldn't happen";
- }
-
- $lead = $xp;
- $ll = $nll;
- $nl = defined($separator2)
- ? ($remainder eq "\n"
- ? "\n"
- : $separator2)
- : $separator;
- }
- $r .= $remainder;
-
- print "-----------$r---------\n" if $debug;
-
- print "Finish up with '$lead'\n" if $debug;
-
- $r .= $lead . substr($t, pos($t), length($t)-pos($t))
- if pos($t) ne length($t);
-
- print "-----------$r---------\n" if $debug;;
-
- return $r;
-}
-
-sub fill
-{
- my ($ip, $xp, @raw) = @_;
- my @para;
- my $pp;
-
- for $pp (split(/\n\s+/, join("\n",@raw))) {
- $pp =~ s/\s+/ /g;
- my $x = wrap($ip, $xp, $pp);
- push(@para, $x);
- }
-
- # if paragraph_indent is the same as line_indent,
- # separate paragraphs with blank lines
-
- my $ps = ($ip eq $xp) ? "\n\n" : "\n";
- return join ($ps, @para);
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Text::Wrap - line wrapping to form simple paragraphs
-
-=head1 SYNOPSIS
-
-B<Example 1>
-
- use Text::Wrap
-
- $initial_tab = "\t"; # Tab before first line
- $subsequent_tab = ""; # All other lines flush left
-
- print wrap($initial_tab, $subsequent_tab, @text);
- print fill($initial_tab, $subsequent_tab, @text);
-
- $lines = wrap($initial_tab, $subsequent_tab, @text);
-
- @paragraphs = fill($initial_tab, $subsequent_tab, @text);
-
-B<Example 2>
-
- use Text::Wrap qw(wrap $columns $huge);
-
- $columns = 132; # Wrap at 132 characters
- $huge = 'die';
- $huge = 'wrap';
- $huge = 'overflow';
-
-B<Example 3>
-
- use Text::Wrap
-
- $Text::Wrap::columns = 72;
- print wrap('', '', @text);
-
-=head1 DESCRIPTION
-
-C<Text::Wrap::wrap()> is a very simple paragraph formatter. It formats a
-single paragraph at a time by breaking lines at word boundries.
-Indentation is controlled for the first line (C<$initial_tab>) and
-all subsequent lines (C<$subsequent_tab>) independently. Please note:
-C<$initial_tab> and C<$subsequent_tab> are the literal strings that will
-be used: it is unlikley you would want to pass in a number.
-
-Text::Wrap::fill() is a simple multi-paragraph formatter. It formats
-each paragraph separately and then joins them together when it's done. It
-will destroy any whitespace in the original text. It breaks text into
-paragraphs by looking for whitespace after a newline. In other respects
-it acts like wrap().
-
-=head1 OVERRIDES
-
-C<Text::Wrap::wrap()> has a number of variables that control its behavior.
-Because other modules might be using C<Text::Wrap::wrap()> it is suggested
-that you leave these variables alone! If you can't do that, then
-use C<local($Text::Wrap::VARIABLE) = YOURVALUE> when you change the
-values so that the original value is restored. This C<local()> trick
-will not work if you import the variable into your own namespace.
-
-Lines are wrapped at C<$Text::Wrap::columns> columns. C<$Text::Wrap::columns>
-should be set to the full width of your output device. In fact,
-every resulting line will have length of no more than C<$columns - 1>.
-
-It is possible to control which characters terminate words by
-modifying C<$Text::Wrap::break>. Set this to a string such as
-C<'[\s:]'> (to break before spaces or colons) or a pre-compiled regexp
-such as C<qr/[\s']/> (to break before spaces or apostrophes). The
-default is simply C<'\s'>; that is, words are terminated by spaces.
-(This means, among other things, that trailing punctuation such as
-full stops or commas stay with the word they are "attached" to.)
-
-Beginner note: In example 2, above C<$columns> is imported into
-the local namespace, and set locally. In example 3,
-C<$Text::Wrap::columns> is set in its own namespace without importing it.
-
-C<Text::Wrap::wrap()> starts its work by expanding all the tabs in its
-input into spaces. The last thing it does it to turn spaces back
-into tabs. If you do not want tabs in your results, set
-C<$Text::Wrap::unexpand> to a false value. Likewise if you do not
-want to use 8-character tabstops, set C<$Text::Wrap::tabstop> to
-the number of characters you do want for your tabstops.
-
-If you want to separate your lines with something other than C<\n>
-then set C<$Text::Wrap::separator> to your preference. This replaces
-all newlines with C<$Text::Wrap::separator>. If you just to preserve
-existing newlines but add new breaks with something else, set
-C<$Text::Wrap::separator2> instead.
-
-When words that are longer than C<$columns> are encountered, they
-are broken up. C<wrap()> adds a C<"\n"> at column C<$columns>.
-This behavior can be overridden by setting C<$huge> to
-'die' or to 'overflow'. When set to 'die', large words will cause
-C<die()> to be called. When set to 'overflow', large words will be
-left intact.
-
-Historical notes: 'die' used to be the default value of
-C<$huge>. Now, 'wrap' is the default value.
-
-=head1 EXAMPLE
-
- print wrap("\t","","This is a bit of text that forms
- a normal book-style paragraph");
-
-=head1 LICENSE
-
-David Muir Sharnoff <muir@idiom.com> with help from Tim Pierce and
-many many others. Copyright (C) 1996-2002 David Muir Sharnoff.
-This module may be modified, used, copied, and redistributed at
-your own risk. Publicly redistributed modified versions must use
-a different name.
-
diff --git a/Master/tlpkg/tlperl/lib/Tie/Array.pm b/Master/tlpkg/tlperl/lib/Tie/Array.pm
deleted file mode 100644
index af8f51e9f51..00000000000
--- a/Master/tlpkg/tlperl/lib/Tie/Array.pm
+++ /dev/null
@@ -1,287 +0,0 @@
-package Tie::Array;
-
-use 5.006_001;
-use strict;
-use Carp;
-our $VERSION = '1.03';
-
-# Pod documentation after __END__ below.
-
-sub DESTROY { }
-sub EXTEND { }
-sub UNSHIFT { scalar shift->SPLICE(0,0,@_) }
-sub SHIFT { shift->SPLICE(0,1) }
-sub CLEAR { shift->STORESIZE(0) }
-
-sub PUSH
-{
- my $obj = shift;
- my $i = $obj->FETCHSIZE;
- $obj->STORE($i++, shift) while (@_);
-}
-
-sub POP
-{
- my $obj = shift;
- my $newsize = $obj->FETCHSIZE - 1;
- my $val;
- if ($newsize >= 0)
- {
- $val = $obj->FETCH($newsize);
- $obj->STORESIZE($newsize);
- }
- $val;
-}
-
-sub SPLICE {
- my $obj = shift;
- my $sz = $obj->FETCHSIZE;
- my $off = (@_) ? shift : 0;
- $off += $sz if ($off < 0);
- my $len = (@_) ? shift : $sz - $off;
- $len += $sz - $off if $len < 0;
- my @result;
- for (my $i = 0; $i < $len; $i++) {
- push(@result,$obj->FETCH($off+$i));
- }
- $off = $sz if $off > $sz;
- $len -= $off + $len - $sz if $off + $len > $sz;
- if (@_ > $len) {
- # Move items up to make room
- my $d = @_ - $len;
- my $e = $off+$len;
- $obj->EXTEND($sz+$d);
- for (my $i=$sz-1; $i >= $e; $i--) {
- my $val = $obj->FETCH($i);
- $obj->STORE($i+$d,$val);
- }
- }
- elsif (@_ < $len) {
- # Move items down to close the gap
- my $d = $len - @_;
- my $e = $off+$len;
- for (my $i=$off+$len; $i < $sz; $i++) {
- my $val = $obj->FETCH($i);
- $obj->STORE($i-$d,$val);
- }
- $obj->STORESIZE($sz-$d);
- }
- for (my $i=0; $i < @_; $i++) {
- $obj->STORE($off+$i,$_[$i]);
- }
- return wantarray ? @result : pop @result;
-}
-
-sub EXISTS {
- my $pkg = ref $_[0];
- croak "$pkg doesn't define an EXISTS method";
-}
-
-sub DELETE {
- my $pkg = ref $_[0];
- croak "$pkg doesn't define a DELETE method";
-}
-
-package Tie::StdArray;
-use vars qw(@ISA);
-@ISA = 'Tie::Array';
-
-sub TIEARRAY { bless [], $_[0] }
-sub FETCHSIZE { scalar @{$_[0]} }
-sub STORESIZE { $#{$_[0]} = $_[1]-1 }
-sub STORE { $_[0]->[$_[1]] = $_[2] }
-sub FETCH { $_[0]->[$_[1]] }
-sub CLEAR { @{$_[0]} = () }
-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
-{
- my $ob = shift;
- my $sz = $ob->FETCHSIZE;
- my $off = @_ ? shift : 0;
- $off += $sz if $off < 0;
- my $len = @_ ? shift : $sz-$off;
- return splice(@$ob,$off,$len,@_);
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Tie::Array - base class for tied arrays
-
-=head1 SYNOPSIS
-
- package Tie::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 { ... }
- sub POP { ... }
- sub SHIFT { ... }
- sub UNSHIFT { ... }
- sub SPLICE { ... }
- sub EXTEND { ... }
- sub DESTROY { ... }
-
- package Tie::NewStdArray;
- use Tie::Array;
-
- @ISA = ('Tie::StdArray');
-
- # all methods provided by default
-
- package main;
-
- $object = tie @somearray,Tie::NewArray;
- $object = tie @somearray,Tie::StdArray;
- $object = tie @somearray,Tie::NewStdArray;
-
-
-
-=head1 DESCRIPTION
-
-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<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
-which are implemented as blessed references to an "inner" perl array.
-It inherits from B<Tie::Array>, and should cause tied arrays to behave exactly
-like standard arrays, allowing for selective overloading of methods.
-
-For developers wishing to write their own tied arrays, the required methods
-are briefly defined below. See the L<perltie> section for more detailed
-descriptive, as well as example code:
-
-=over 4
-
-=item TIEARRAY classname, LIST
-
-The class method is invoked by the command C<tie @array, classname>. Associates
-an array instance with the specified class. C<LIST> would represent
-additional arguments (along the lines of L<AnyDBM_File> and compatriots) needed
-to complete the association. The method should return an object of a class which
-provides the methods below.
-
-=item STORE this, index, value
-
-Store datum I<value> into I<index> for the tied array associated with
-object I<this>. If this makes the array larger then
-class's mapping of C<undef> should be returned for new positions.
-
-=item FETCH this, index
-
-Retrieve the datum in I<index> for the tied array associated with
-object I<this>.
-
-=item FETCHSIZE this
-
-Returns the total number of items in the tied array associated with
-object I<this>. (Equivalent to C<scalar(@array)>).
-
-=item STORESIZE this, count
-
-Sets the total number of items in the tied array associated with
-object I<this> to be I<count>. If this makes the array larger then
-class's mapping of C<undef> should be returned for new positions.
-If the array becomes smaller then entries beyond count should be
-deleted.
-
-=item EXTEND this, count
-
-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
-object I<this>.
-
-=item DESTROY this
-
-Normal object destructor method.
-
-=item PUSH this, LIST
-
-Append elements of LIST to the array.
-
-=item POP this
-
-Remove last element of the array and return it.
-
-=item SHIFT this
-
-Remove the first element of the array (shifting other elements down)
-and return it.
-
-=item UNSHIFT this, LIST
-
-Insert LIST elements at the beginning of the array, moving existing elements
-up to make room.
-
-=item SPLICE this, offset, length, LIST
-
-Perform the equivalent of C<splice> on the array.
-
-I<offset> is optional and defaults to zero, negative values count back
-from the end of the array.
-
-I<length> is optional and defaults to rest of the array.
-
-I<LIST> may be empty.
-
-Returns a list of the original I<length> elements at I<offset>.
-
-=back
-
-=head1 CAVEATS
-
-There is no support at present for tied @ISA. There is a potential conflict
-between magic entries needed to notice setting of @ISA, and those needed to
-implement 'tie'.
-
-Very little consideration has been given to the behaviour of tied arrays
-when C<$[> is not default value of zero.
-
-=head1 AUTHOR
-
-Nick Ing-Simmons E<lt>nik@tiuk.ti.comE<gt>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Tie/File.pm b/Master/tlpkg/tlperl/lib/Tie/File.pm
deleted file mode 100644
index a1f40afe199..00000000000
--- a/Master/tlpkg/tlperl/lib/Tie/File.pm
+++ /dev/null
@@ -1,2632 +0,0 @@
-
-package Tie::File;
-require 5.005;
-use Carp ':DEFAULT', 'confess';
-use POSIX 'SEEK_SET';
-use Fcntl 'O_CREAT', 'O_RDWR', 'LOCK_EX', 'LOCK_SH', 'O_WRONLY', 'O_RDONLY';
-sub O_ACCMODE () { O_RDONLY | O_RDWR | O_WRONLY }
-
-
-$VERSION = "0.97";
-my $DEFAULT_MEMORY_SIZE = 1<<21; # 2 megabytes
-my $DEFAULT_AUTODEFER_THRESHHOLD = 3; # 3 records
-my $DEFAULT_AUTODEFER_FILELEN_THRESHHOLD = 65536; # 16 disk blocksful
-
-my %good_opt = map {$_ => 1, "-$_" => 1}
- qw(memory dw_size mode recsep discipline
- autodefer autochomp autodefer_threshhold concurrent);
-
-sub TIEARRAY {
- if (@_ % 2 != 0) {
- croak "usage: tie \@array, $_[0], filename, [option => value]...";
- }
- my ($pack, $file, %opts) = @_;
-
- # transform '-foo' keys into 'foo' keys
- for my $key (keys %opts) {
- unless ($good_opt{$key}) {
- croak("$pack: Unrecognized option '$key'\n");
- }
- my $okey = $key;
- if ($key =~ s/^-+//) {
- $opts{$key} = delete $opts{$okey};
- }
- }
-
- if ($opts{concurrent}) {
- croak("$pack: concurrent access not supported yet\n");
- }
-
- unless (defined $opts{memory}) {
- # default is the larger of the default cache size and the
- # deferred-write buffer size (if specified)
- $opts{memory} = $DEFAULT_MEMORY_SIZE;
- $opts{memory} = $opts{dw_size}
- if defined $opts{dw_size} && $opts{dw_size} > $DEFAULT_MEMORY_SIZE;
- # Dora Winifred Read
- }
- $opts{dw_size} = $opts{memory} unless defined $opts{dw_size};
- if ($opts{dw_size} > $opts{memory}) {
- croak("$pack: dw_size may not be larger than total memory allocation\n");
- }
- # are we in deferred-write mode?
- $opts{defer} = 0 unless defined $opts{defer};
- $opts{deferred} = {}; # no records are presently deferred
- $opts{deferred_s} = 0; # count of total bytes in ->{deferred}
- $opts{deferred_max} = -1; # empty
-
- # What's a good way to arrange that this class can be overridden?
- $opts{cache} = Tie::File::Cache->new($opts{memory});
-
- # autodeferment is enabled by default
- $opts{autodefer} = 1 unless defined $opts{autodefer};
- $opts{autodeferring} = 0; # but is not initially active
- $opts{ad_history} = [];
- $opts{autodefer_threshhold} = $DEFAULT_AUTODEFER_THRESHHOLD
- unless defined $opts{autodefer_threshhold};
- $opts{autodefer_filelen_threshhold} = $DEFAULT_AUTODEFER_FILELEN_THRESHHOLD
- unless defined $opts{autodefer_filelen_threshhold};
-
- $opts{offsets} = [0];
- $opts{filename} = $file;
- unless (defined $opts{recsep}) {
- $opts{recsep} = _default_recsep();
- }
- $opts{recseplen} = length($opts{recsep});
- if ($opts{recseplen} == 0) {
- croak "Empty record separator not supported by $pack";
- }
-
- $opts{autochomp} = 1 unless defined $opts{autochomp};
-
- $opts{mode} = O_CREAT|O_RDWR unless defined $opts{mode};
- $opts{rdonly} = (($opts{mode} & O_ACCMODE) == O_RDONLY);
- $opts{sawlastrec} = undef;
-
- my $fh;
-
- if (UNIVERSAL::isa($file, 'GLOB')) {
- # We use 1 here on the theory that some systems
- # may not indicate failure if we use 0.
- # MSWin32 does not indicate failure with 0, but I don't know if
- # it will indicate failure with 1 or not.
- unless (seek $file, 1, SEEK_SET) {
- croak "$pack: your filehandle does not appear to be seekable";
- }
- seek $file, 0, SEEK_SET # put it back
- $fh = $file; # setting binmode is the user's problem
- } elsif (ref $file) {
- croak "usage: tie \@array, $pack, filename, [option => value]...";
- } else {
- # $fh = \do { local *FH }; # XXX this is buggy
- if ($] < 5.006) {
- # perl 5.005 and earlier don't autovivify filehandles
- require Symbol;
- $fh = Symbol::gensym();
- }
- sysopen $fh, $file, $opts{mode}, 0666 or return;
- binmode $fh;
- ++$opts{ourfh};
- }
- { my $ofh = select $fh; $| = 1; select $ofh } # autoflush on write
- if (defined $opts{discipline} && $] >= 5.006) {
- # This avoids a compile-time warning under 5.005
- eval 'binmode($fh, $opts{discipline})';
- croak $@ if $@ =~ /unknown discipline/i;
- die if $@;
- }
- $opts{fh} = $fh;
-
- bless \%opts => $pack;
-}
-
-sub FETCH {
- my ($self, $n) = @_;
- my $rec;
-
- # check the defer buffer
- $rec = $self->{deferred}{$n} if exists $self->{deferred}{$n};
- $rec = $self->_fetch($n) unless defined $rec;
-
- # inlined _chomp1
- substr($rec, - $self->{recseplen}) = ""
- if defined $rec && $self->{autochomp};
- $rec;
-}
-
-# Chomp many records in-place; return nothing useful
-sub _chomp {
- my $self = shift;
- return unless $self->{autochomp};
- if ($self->{autochomp}) {
- for (@_) {
- next unless defined;
- substr($_, - $self->{recseplen}) = "";
- }
- }
-}
-
-# Chomp one record in-place; return modified record
-sub _chomp1 {
- my ($self, $rec) = @_;
- return $rec unless $self->{autochomp};
- return unless defined $rec;
- substr($rec, - $self->{recseplen}) = "";
- $rec;
-}
-
-sub _fetch {
- my ($self, $n) = @_;
-
- # check the record cache
- { my $cached = $self->{cache}->lookup($n);
- return $cached if defined $cached;
- }
-
- if ($#{$self->{offsets}} < $n) {
- return if $self->{eof}; # request for record beyond end of file
- my $o = $self->_fill_offsets_to($n);
- # If it's still undefined, there is no such record, so return 'undef'
- return unless defined $o;
- }
-
- my $fh = $self->{FH};
- $self->_seek($n); # we can do this now that offsets is populated
- my $rec = $self->_read_record;
-
-# If we happen to have just read the first record, check to see if
-# the length of the record matches what 'tell' says. If not, Tie::File
-# won't work, and should drop dead.
-#
-# if ($n == 0 && defined($rec) && tell($self->{fh}) != length($rec)) {
-# if (defined $self->{discipline}) {
-# croak "I/O discipline $self->{discipline} not supported";
-# } else {
-# croak "File encoding not supported";
-# }
-# }
-
- $self->{cache}->insert($n, $rec) if defined $rec && not $self->{flushing};
- $rec;
-}
-
-sub STORE {
- my ($self, $n, $rec) = @_;
- die "STORE called from _check_integrity!" if $DIAGNOSTIC;
-
- $self->_fixrecs($rec);
-
- if ($self->{autodefer}) {
- $self->_annotate_ad_history($n);
- }
-
- return $self->_store_deferred($n, $rec) if $self->_is_deferring;
-
-
- # We need this to decide whether the new record will fit
- # It incidentally populates the offsets table
- # Note we have to do this before we alter the cache
- # 20020324 Wait, but this DOES alter the cache. TODO BUG?
- my $oldrec = $self->_fetch($n);
-
- if (not defined $oldrec) {
- # We're storing a record beyond the end of the file
- $self->_extend_file_to($n+1);
- $oldrec = $self->{recsep};
- }
-# return if $oldrec eq $rec; # don't bother
- my $len_diff = length($rec) - length($oldrec);
-
- # length($oldrec) here is not consistent with text mode TODO XXX BUG
- $self->_mtwrite($rec, $self->{offsets}[$n], length($oldrec));
- $self->_oadjust([$n, 1, $rec]);
- $self->{cache}->update($n, $rec);
-}
-
-sub _store_deferred {
- my ($self, $n, $rec) = @_;
- $self->{cache}->remove($n);
- my $old_deferred = $self->{deferred}{$n};
-
- if (defined $self->{deferred_max} && $n > $self->{deferred_max}) {
- $self->{deferred_max} = $n;
- }
- $self->{deferred}{$n} = $rec;
-
- my $len_diff = length($rec);
- $len_diff -= length($old_deferred) if defined $old_deferred;
- $self->{deferred_s} += $len_diff;
- $self->{cache}->adj_limit(-$len_diff);
- if ($self->{deferred_s} > $self->{dw_size}) {
- $self->_flush;
- } elsif ($self->_cache_too_full) {
- $self->_cache_flush;
- }
-}
-
-# Remove a single record from the deferred-write buffer without writing it
-# The record need not be present
-sub _delete_deferred {
- my ($self, $n) = @_;
- my $rec = delete $self->{deferred}{$n};
- return unless defined $rec;
-
- if (defined $self->{deferred_max}
- && $n == $self->{deferred_max}) {
- undef $self->{deferred_max};
- }
-
- $self->{deferred_s} -= length $rec;
- $self->{cache}->adj_limit(length $rec);
-}
-
-sub FETCHSIZE {
- my $self = shift;
- my $n = $self->{eof} ? $#{$self->{offsets}} : $self->_fill_offsets;
-
- my $top_deferred = $self->_defer_max;
- $n = $top_deferred+1 if defined $top_deferred && $n < $top_deferred+1;
- $n;
-}
-
-sub STORESIZE {
- my ($self, $len) = @_;
-
- if ($self->{autodefer}) {
- $self->_annotate_ad_history('STORESIZE');
- }
-
- my $olen = $self->FETCHSIZE;
- return if $len == $olen; # Woo-hoo!
-
- # file gets longer
- if ($len > $olen) {
- if ($self->_is_deferring) {
- for ($olen .. $len-1) {
- $self->_store_deferred($_, $self->{recsep});
- }
- } else {
- $self->_extend_file_to($len);
- }
- return;
- }
-
- # file gets shorter
- if ($self->_is_deferring) {
- # TODO maybe replace this with map-plus-assignment?
- for (grep $_ >= $len, keys %{$self->{deferred}}) {
- $self->_delete_deferred($_);
- }
- $self->{deferred_max} = $len-1;
- }
-
- $self->_seek($len);
- $self->_chop_file;
- $#{$self->{offsets}} = $len;
-# $self->{offsets}[0] = 0; # in case we just chopped this
-
- $self->{cache}->remove(grep $_ >= $len, $self->{cache}->ckeys);
-}
-
-### OPTIMIZE ME
-### It should not be necessary to do FETCHSIZE
-### Just seek to the end of the file.
-sub PUSH {
- my $self = shift;
- $self->SPLICE($self->FETCHSIZE, scalar(@_), @_);
-
- # No need to return:
- # $self->FETCHSIZE; # because av.c takes care of this for me
-}
-
-sub POP {
- my $self = shift;
- my $size = $self->FETCHSIZE;
- return if $size == 0;
-# print STDERR "# POPPITY POP POP POP\n";
- scalar $self->SPLICE($size-1, 1);
-}
-
-sub SHIFT {
- my $self = shift;
- scalar $self->SPLICE(0, 1);
-}
-
-sub UNSHIFT {
- my $self = shift;
- $self->SPLICE(0, 0, @_);
- # $self->FETCHSIZE; # av.c takes care of this for me
-}
-
-sub CLEAR {
- my $self = shift;
-
- if ($self->{autodefer}) {
- $self->_annotate_ad_history('CLEAR');
- }
-
- $self->_seekb(0);
- $self->_chop_file;
- $self->{cache}->set_limit($self->{memory});
- $self->{cache}->empty;
- @{$self->{offsets}} = (0);
- %{$self->{deferred}}= ();
- $self->{deferred_s} = 0;
- $self->{deferred_max} = -1;
-}
-
-sub EXTEND {
- my ($self, $n) = @_;
-
- # No need to pre-extend anything in this case
- return if $self->_is_deferring;
-
- $self->_fill_offsets_to($n);
- $self->_extend_file_to($n);
-}
-
-sub DELETE {
- my ($self, $n) = @_;
-
- if ($self->{autodefer}) {
- $self->_annotate_ad_history('DELETE');
- }
-
- my $lastrec = $self->FETCHSIZE-1;
- my $rec = $self->FETCH($n);
- $self->_delete_deferred($n) if $self->_is_deferring;
- if ($n == $lastrec) {
- $self->_seek($n);
- $self->_chop_file;
- $#{$self->{offsets}}--;
- $self->{cache}->remove($n);
- # perhaps in this case I should also remove trailing null records?
- # 20020316
- # Note that delete @a[-3..-1] deletes the records in the wrong order,
- # so we only chop the very last one out of the file. We could repair this
- # by tracking deleted records inside the object.
- } elsif ($n < $lastrec) {
- $self->STORE($n, "");
- }
- $rec;
-}
-
-sub EXISTS {
- my ($self, $n) = @_;
- return 1 if exists $self->{deferred}{$n};
- $n < $self->FETCHSIZE;
-}
-
-sub SPLICE {
- my $self = shift;
-
- if ($self->{autodefer}) {
- $self->_annotate_ad_history('SPLICE');
- }
-
- $self->_flush if $self->_is_deferring; # move this up?
- if (wantarray) {
- $self->_chomp(my @a = $self->_splice(@_));
- @a;
- } else {
- $self->_chomp1(scalar $self->_splice(@_));
- }
-}
-
-sub DESTROY {
- my $self = shift;
- $self->flush if $self->_is_deferring;
- $self->{cache}->delink if defined $self->{cache}; # break circular link
- if ($self->{fh} and $self->{ourfh}) {
- delete $self->{ourfh};
- close delete $self->{fh};
- }
-}
-
-sub _splice {
- my ($self, $pos, $nrecs, @data) = @_;
- my @result;
-
- $pos = 0 unless defined $pos;
-
- # Deal with negative and other out-of-range positions
- # Also set default for $nrecs
- {
- my $oldsize = $self->FETCHSIZE;
- $nrecs = $oldsize unless defined $nrecs;
- my $oldpos = $pos;
-
- if ($pos < 0) {
- $pos += $oldsize;
- if ($pos < 0) {
- croak "Modification of non-creatable array value attempted, subscript $oldpos";
- }
- }
-
- if ($pos > $oldsize) {
- return unless @data;
- $pos = $oldsize; # This is what perl does for normal arrays
- }
-
- # The manual is very unclear here
- if ($nrecs < 0) {
- $nrecs = $oldsize - $pos + $nrecs;
- $nrecs = 0 if $nrecs < 0;
- }
-
- # nrecs is too big---it really means "until the end"
- # 20030507
- if ($nrecs + $pos > $oldsize) {
- $nrecs = $oldsize - $pos;
- }
- }
-
- $self->_fixrecs(@data);
- my $data = join '', @data;
- my $datalen = length $data;
- my $oldlen = 0;
-
- # compute length of data being removed
- for ($pos .. $pos+$nrecs-1) {
- last unless defined $self->_fill_offsets_to($_);
- my $rec = $self->_fetch($_);
- last unless defined $rec;
- push @result, $rec;
-
- # Why don't we just use length($rec) here?
- # Because that record might have come from the cache. _splice
- # might have been called to flush out the deferred-write records,
- # and in this case length($rec) is the length of the record to be
- # *written*, not the length of the actual record in the file. But
- # the offsets are still true. 20020322
- $oldlen += $self->{offsets}[$_+1] - $self->{offsets}[$_]
- if defined $self->{offsets}[$_+1];
- }
- $self->_fill_offsets_to($pos+$nrecs);
-
- # Modify the file
- $self->_mtwrite($data, $self->{offsets}[$pos], $oldlen);
- # Adjust the offsets table
- $self->_oadjust([$pos, $nrecs, @data]);
-
- { # Take this read cache stuff out into a separate function
- # You made a half-attempt to put it into _oadjust.
- # Finish something like that up eventually.
- # STORE also needs to do something similarish
-
- # update the read cache, part 1
- # modified records
- for ($pos .. $pos+$nrecs-1) {
- my $new = $data[$_-$pos];
- if (defined $new) {
- $self->{cache}->update($_, $new);
- } else {
- $self->{cache}->remove($_);
- }
- }
-
- # update the read cache, part 2
- # moved records - records past the site of the change
- # need to be renumbered
- # Maybe merge this with the previous block?
- {
- my @oldkeys = grep $_ >= $pos + $nrecs, $self->{cache}->ckeys;
- my @newkeys = map $_-$nrecs+@data, @oldkeys;
- $self->{cache}->rekey(\@oldkeys, \@newkeys);
- }
-
- # Now there might be too much data in the cache, if we spliced out
- # some short records and spliced in some long ones. If so, flush
- # the cache.
- $self->_cache_flush;
- }
-
- # Yes, the return value of 'splice' *is* actually this complicated
- wantarray ? @result : @result ? $result[-1] : undef;
-}
-
-
-# write data into the file
-# $data is the data to be written.
-# it should be written at position $pos, and should overwrite
-# exactly $len of the following bytes.
-# Note that if length($data) > $len, the subsequent bytes will have to
-# be moved up, and if length($data) < $len, they will have to
-# be moved down
-sub _twrite {
- my ($self, $data, $pos, $len) = @_;
-
- unless (defined $pos) {
- die "\$pos was undefined in _twrite";
- }
-
- my $len_diff = length($data) - $len;
-
- if ($len_diff == 0) { # Woo-hoo!
- my $fh = $self->{fh};
- $self->_seekb($pos);
- $self->_write_record($data);
- return; # well, that was easy.
- }
-
- # the two records are of different lengths
- # our strategy here: rewrite the tail of the file,
- # reading ahead one buffer at a time
- # $bufsize is required to be at least as large as the data we're overwriting
- my $bufsize = _bufsize($len_diff);
- my ($writepos, $readpos) = ($pos, $pos+$len);
- my $next_block;
- my $more_data;
-
- # Seems like there ought to be a way to avoid the repeated code
- # and the special case here. The read(1) is also a little weird.
- # Think about this.
- do {
- $self->_seekb($readpos);
- my $br = read $self->{fh}, $next_block, $bufsize;
- $more_data = read $self->{fh}, my($dummy), 1;
- $self->_seekb($writepos);
- $self->_write_record($data);
- $readpos += $br;
- $writepos += length $data;
- $data = $next_block;
- } while $more_data;
- $self->_seekb($writepos);
- $self->_write_record($next_block);
-
- # There might be leftover data at the end of the file
- $self->_chop_file if $len_diff < 0;
-}
-
-# _iwrite(D, S, E)
-# Insert text D at position S.
-# Let C = E-S-|D|. If C < 0; die.
-# Data in [S,S+C) is copied to [S+D,S+D+C) = [S+D,E).
-# Data in [S+C = E-D, E) is returned. Data in [E, oo) is untouched.
-#
-# In a later version, don't read the entire intervening area into
-# memory at once; do the copying block by block.
-sub _iwrite {
- my $self = shift;
- my ($D, $s, $e) = @_;
- my $d = length $D;
- my $c = $e-$s-$d;
- local *FH = $self->{fh};
- confess "Not enough space to insert $d bytes between $s and $e"
- if $c < 0;
- confess "[$s,$e) is an invalid insertion range" if $e < $s;
-
- $self->_seekb($s);
- read FH, my $buf, $e-$s;
-
- $D .= substr($buf, 0, $c, "");
-
- $self->_seekb($s);
- $self->_write_record($D);
-
- return $buf;
-}
-
-# Like _twrite, but the data-pos-len triple may be repeated; you may
-# write several chunks. All the writing will be done in
-# one pass. Chunks SHALL be in ascending order and SHALL NOT overlap.
-sub _mtwrite {
- my $self = shift;
- my $unwritten = "";
- my $delta = 0;
-
- @_ % 3 == 0
- or die "Arguments to _mtwrite did not come in groups of three";
-
- while (@_) {
- my ($data, $pos, $len) = splice @_, 0, 3;
- my $end = $pos + $len; # The OLD end of the segment to be replaced
- $data = $unwritten . $data;
- $delta -= length($unwritten);
- $unwritten = "";
- $pos += $delta; # This is where the data goes now
- my $dlen = length $data;
- $self->_seekb($pos);
- if ($len >= $dlen) { # the data will fit
- $self->_write_record($data);
- $delta += ($dlen - $len); # everything following moves down by this much
- $data = ""; # All the data in the buffer has been written
- } else { # won't fit
- my $writable = substr($data, 0, $len - $delta, "");
- $self->_write_record($writable);
- $delta += ($dlen - $len); # everything following moves down by this much
- }
-
- # At this point we've written some but maybe not all of the data.
- # There might be a gap to close up, or $data might still contain a
- # bunch of unwritten data that didn't fit.
- my $ndlen = length $data;
- if ($delta == 0) {
- $self->_write_record($data);
- } elsif ($delta < 0) {
- # upcopy (close up gap)
- if (@_) {
- $self->_upcopy($end, $end + $delta, $_[1] - $end);
- } else {
- $self->_upcopy($end, $end + $delta);
- }
- } else {
- # downcopy (insert data that didn't fit; replace this data in memory
- # with _later_ data that doesn't fit)
- if (@_) {
- $unwritten = $self->_downcopy($data, $end, $_[1] - $end);
- } else {
- # Make the file longer to accomodate the last segment that doesn'
- $unwritten = $self->_downcopy($data, $end);
- }
- }
- }
-}
-
-# Copy block of data of length $len from position $spos to position $dpos
-# $dpos must be <= $spos
-#
-# If $len is undefined, go all the way to the end of the file
-# and then truncate it ($spos - $dpos bytes will be removed)
-sub _upcopy {
- my $blocksize = 8192;
- my ($self, $spos, $dpos, $len) = @_;
- if ($dpos > $spos) {
- die "source ($spos) was upstream of destination ($dpos) in _upcopy";
- } elsif ($dpos == $spos) {
- return;
- }
-
- while (! defined ($len) || $len > 0) {
- my $readsize = ! defined($len) ? $blocksize
- : $len > $blocksize ? $blocksize
- : $len;
-
- my $fh = $self->{fh};
- $self->_seekb($spos);
- my $bytes_read = read $fh, my($data), $readsize;
- $self->_seekb($dpos);
- if ($data eq "") {
- $self->_chop_file;
- last;
- }
- $self->_write_record($data);
- $spos += $bytes_read;
- $dpos += $bytes_read;
- $len -= $bytes_read if defined $len;
- }
-}
-
-# Write $data into a block of length $len at position $pos,
-# moving everything in the block forwards to make room.
-# Instead of writing the last length($data) bytes from the block
-# (because there isn't room for them any longer) return them.
-#
-# Undefined $len means 'until the end of the file'
-sub _downcopy {
- my $blocksize = 8192;
- my ($self, $data, $pos, $len) = @_;
- my $fh = $self->{fh};
-
- while (! defined $len || $len > 0) {
- my $readsize = ! defined($len) ? $blocksize
- : $len > $blocksize? $blocksize : $len;
- $self->_seekb($pos);
- read $fh, my($old), $readsize;
- my $last_read_was_short = length($old) < $readsize;
- $data .= $old;
- my $writable;
- if ($last_read_was_short) {
- # If last read was short, then $data now contains the entire rest
- # of the file, so there's no need to write only one block of it
- $writable = $data;
- $data = "";
- } else {
- $writable = substr($data, 0, $readsize, "");
- }
- last if $writable eq "";
- $self->_seekb($pos);
- $self->_write_record($writable);
- last if $last_read_was_short && $data eq "";
- $len -= $readsize if defined $len;
- $pos += $readsize;
- }
- return $data;
-}
-
-# Adjust the object data structures following an '_mtwrite'
-# Arguments are
-# [$pos, $nrecs, @length] items
-# indicating that $nrecs records were removed at $recpos (a record offset)
-# and replaced with records of length @length...
-# Arguments guarantee that $recpos is strictly increasing.
-# No return value
-sub _oadjust {
- my $self = shift;
- my $delta = 0;
- my $delta_recs = 0;
- my $prev_end = -1;
- my %newkeys;
-
- for (@_) {
- my ($pos, $nrecs, @data) = @$_;
- $pos += $delta_recs;
-
- # Adjust the offsets of the records after the previous batch up
- # to the first new one of this batch
- for my $i ($prev_end+2 .. $pos - 1) {
- $self->{offsets}[$i] += $delta;
- $newkey{$i} = $i + $delta_recs;
- }
-
- $prev_end = $pos + @data - 1; # last record moved on this pass
-
- # Remove the offsets for the removed records;
- # replace with the offsets for the inserted records
- my @newoff = ($self->{offsets}[$pos] + $delta);
- for my $i (0 .. $#data) {
- my $newlen = length $data[$i];
- push @newoff, $newoff[$i] + $newlen;
- $delta += $newlen;
- }
-
- for my $i ($pos .. $pos+$nrecs-1) {
- last if $i+1 > $#{$self->{offsets}};
- my $oldlen = $self->{offsets}[$i+1] - $self->{offsets}[$i];
- $delta -= $oldlen;
- }
-
-# # also this data has changed, so update it in the cache
-# for (0 .. $#data) {
-# $self->{cache}->update($pos + $_, $data[$_]);
-# }
-# if ($delta_recs) {
-# my @oldkeys = grep $_ >= $pos + @data, $self->{cache}->ckeys;
-# my @newkeys = map $_ + $delta_recs, @oldkeys;
-# $self->{cache}->rekey(\@oldkeys, \@newkeys);
-# }
-
- # replace old offsets with new
- splice @{$self->{offsets}}, $pos, $nrecs+1, @newoff;
- # What if we just spliced out the end of the offsets table?
- # shouldn't we clear $self->{eof}? Test for this XXX BUG TODO
-
- $delta_recs += @data - $nrecs; # net change in total number of records
- }
-
- # The trailing records at the very end of the file
- if ($delta) {
- for my $i ($prev_end+2 .. $#{$self->{offsets}}) {
- $self->{offsets}[$i] += $delta;
- }
- }
-
- # If we scrubbed out all known offsets, regenerate the trivial table
- # that knows that the file does indeed start at 0.
- $self->{offsets}[0] = 0 unless @{$self->{offsets}};
- # If the file got longer, the offsets table is no longer complete
- # $self->{eof} = 0 if $delta_recs > 0;
-
- # Now there might be too much data in the cache, if we spliced out
- # some short records and spliced in some long ones. If so, flush
- # the cache.
- $self->_cache_flush;
-}
-
-# If a record does not already end with the appropriate terminator
-# string, append one.
-sub _fixrecs {
- my $self = shift;
- for (@_) {
- $_ = "" unless defined $_;
- $_ .= $self->{recsep}
- unless substr($_, - $self->{recseplen}) eq $self->{recsep};
- }
-}
-
-
-################################################################
-#
-# Basic read, write, and seek
-#
-
-# seek to the beginning of record #$n
-# Assumes that the offsets table is already correctly populated
-#
-# Note that $n=-1 has a special meaning here: It means the start of
-# the last known record; this may or may not be the very last record
-# in the file, depending on whether the offsets table is fully populated.
-#
-sub _seek {
- my ($self, $n) = @_;
- my $o = $self->{offsets}[$n];
- defined($o)
- or confess("logic error: undefined offset for record $n");
- seek $self->{fh}, $o, SEEK_SET
- or confess "Couldn't seek filehandle: $!"; # "Should never happen."
-}
-
-# seek to byte $b in the file
-sub _seekb {
- my ($self, $b) = @_;
- seek $self->{fh}, $b, SEEK_SET
- or die "Couldn't seek filehandle: $!"; # "Should never happen."
-}
-
-# populate the offsets table up to the beginning of record $n
-# return the offset of record $n
-sub _fill_offsets_to {
- my ($self, $n) = @_;
-
- return $self->{offsets}[$n] if $self->{eof};
-
- my $fh = $self->{fh};
- local *OFF = $self->{offsets};
- my $rec;
-
- until ($#OFF >= $n) {
- $self->_seek(-1); # tricky -- see comment at _seek
- $rec = $self->_read_record;
- if (defined $rec) {
- push @OFF, int(tell $fh); # Tels says that int() saves memory here
- } else {
- $self->{eof} = 1;
- return; # It turns out there is no such record
- }
- }
-
- # we have now read all the records up to record n-1,
- # so we can return the offset of record n
- $OFF[$n];
-}
-
-sub _fill_offsets {
- my ($self) = @_;
-
- my $fh = $self->{fh};
- local *OFF = $self->{offsets};
-
- $self->_seek(-1); # tricky -- see comment at _seek
-
- # Tels says that inlining read_record() would make this loop
- # five times faster. 20030508
- while ( defined $self->_read_record()) {
- # int() saves us memory here
- push @OFF, int(tell $fh);
- }
-
- $self->{eof} = 1;
- $#OFF;
-}
-
-# assumes that $rec is already suitably terminated
-sub _write_record {
- my ($self, $rec) = @_;
- my $fh = $self->{fh};
- local $\ = "";
- print $fh $rec
- or die "Couldn't write record: $!"; # "Should never happen."
-# $self->{_written} += length($rec);
-}
-
-sub _read_record {
- my $self = shift;
- my $rec;
- { local $/ = $self->{recsep};
- my $fh = $self->{fh};
- $rec = <$fh>;
- }
- return unless defined $rec;
- if (substr($rec, -$self->{recseplen}) ne $self->{recsep}) {
- # improperly terminated final record --- quietly fix it.
-# my $ac = substr($rec, -$self->{recseplen});
-# $ac =~ s/\n/\\n/g;
- $self->{sawlastrec} = 1;
- unless ($self->{rdonly}) {
- local $\ = "";
- my $fh = $self->{fh};
- print $fh $self->{recsep};
- }
- $rec .= $self->{recsep};
- }
-# $self->{_read} += length($rec) if defined $rec;
- $rec;
-}
-
-sub _rw_stats {
- my $self = shift;
- @{$self}{'_read', '_written'};
-}
-
-################################################################
-#
-# Read cache management
-
-sub _cache_flush {
- my ($self) = @_;
- $self->{cache}->reduce_size_to($self->{memory} - $self->{deferred_s});
-}
-
-sub _cache_too_full {
- my $self = shift;
- $self->{cache}->bytes + $self->{deferred_s} >= $self->{memory};
-}
-
-################################################################
-#
-# File custodial services
-#
-
-
-# We have read to the end of the file and have the offsets table
-# entirely populated. Now we need to write a new record beyond
-# the end of the file. We prepare for this by writing
-# empty records into the file up to the position we want
-#
-# assumes that the offsets table already contains the offset of record $n,
-# if it exists, and extends to the end of the file if not.
-sub _extend_file_to {
- my ($self, $n) = @_;
- $self->_seek(-1); # position after the end of the last record
- my $pos = $self->{offsets}[-1];
-
- # the offsets table has one entry more than the total number of records
- my $extras = $n - $#{$self->{offsets}};
-
- # Todo : just use $self->{recsep} x $extras here?
- while ($extras-- > 0) {
- $self->_write_record($self->{recsep});
- push @{$self->{offsets}}, int(tell $self->{fh});
- }
-}
-
-# Truncate the file at the current position
-sub _chop_file {
- my $self = shift;
- truncate $self->{fh}, tell($self->{fh});
-}
-
-
-# compute the size of a buffer suitable for moving
-# all the data in a file forward $n bytes
-# ($n may be negative)
-# The result should be at least $n.
-sub _bufsize {
- my $n = shift;
- return 8192 if $n <= 0;
- my $b = $n & ~8191;
- $b += 8192 if $n & 8191;
- $b;
-}
-
-################################################################
-#
-# Miscellaneous public methods
-#
-
-# Lock the file
-sub flock {
- my ($self, $op) = @_;
- unless (@_ <= 3) {
- my $pack = ref $self;
- croak "Usage: $pack\->flock([OPERATION])";
- }
- my $fh = $self->{fh};
- $op = LOCK_EX unless defined $op;
- my $locked = flock $fh, $op;
-
- if ($locked && ($op & (LOCK_EX | LOCK_SH))) {
- # If you're locking the file, then presumably it's because
- # there might have been a write access by another process.
- # In that case, the read cache contents and the offsets table
- # might be invalid, so discard them. 20030508
- $self->{offsets} = [0];
- $self->{cache}->empty;
- }
-
- $locked;
-}
-
-# Get/set autochomp option
-sub autochomp {
- my $self = shift;
- if (@_) {
- my $old = $self->{autochomp};
- $self->{autochomp} = shift;
- $old;
- } else {
- $self->{autochomp};
- }
-}
-
-# Get offset table entries; returns offset of nth record
-sub offset {
- my ($self, $n) = @_;
-
- if ($#{$self->{offsets}} < $n) {
- return if $self->{eof}; # request for record beyond the end of file
- my $o = $self->_fill_offsets_to($n);
- # If it's still undefined, there is no such record, so return 'undef'
- return unless defined $o;
- }
-
- $self->{offsets}[$n];
-}
-
-sub discard_offsets {
- my $self = shift;
- $self->{offsets} = [0];
-}
-
-################################################################
-#
-# Matters related to deferred writing
-#
-
-# Defer writes
-sub defer {
- my $self = shift;
- $self->_stop_autodeferring;
- @{$self->{ad_history}} = ();
- $self->{defer} = 1;
-}
-
-# Flush deferred writes
-#
-# This could be better optimized to write the file in one pass, instead
-# of one pass per block of records. But that will require modifications
-# to _twrite, so I should have a good _twrite test suite first.
-sub flush {
- my $self = shift;
-
- $self->_flush;
- $self->{defer} = 0;
-}
-
-sub _old_flush {
- my $self = shift;
- my @writable = sort {$a<=>$b} (keys %{$self->{deferred}});
-
- while (@writable) {
- # gather all consecutive records from the front of @writable
- my $first_rec = shift @writable;
- my $last_rec = $first_rec+1;
- ++$last_rec, shift @writable while @writable && $last_rec == $writable[0];
- --$last_rec;
- $self->_fill_offsets_to($last_rec);
- $self->_extend_file_to($last_rec);
- $self->_splice($first_rec, $last_rec-$first_rec+1,
- @{$self->{deferred}}{$first_rec .. $last_rec});
- }
-
- $self->_discard; # clear out defered-write-cache
-}
-
-sub _flush {
- my $self = shift;
- my @writable = sort {$a<=>$b} (keys %{$self->{deferred}});
- my @args;
- my @adjust;
-
- while (@writable) {
- # gather all consecutive records from the front of @writable
- my $first_rec = shift @writable;
- my $last_rec = $first_rec+1;
- ++$last_rec, shift @writable while @writable && $last_rec == $writable[0];
- --$last_rec;
- my $end = $self->_fill_offsets_to($last_rec+1);
- if (not defined $end) {
- $self->_extend_file_to($last_rec);
- $end = $self->{offsets}[$last_rec];
- }
- my ($start) = $self->{offsets}[$first_rec];
- push @args,
- join("", @{$self->{deferred}}{$first_rec .. $last_rec}), # data
- $start, # position
- $end-$start; # length
- push @adjust, [$first_rec, # starting at this position...
- $last_rec-$first_rec+1, # this many records...
- # are replaced with these...
- @{$self->{deferred}}{$first_rec .. $last_rec},
- ];
- }
-
- $self->_mtwrite(@args); # write multiple record groups
- $self->_discard; # clear out defered-write-cache
- $self->_oadjust(@adjust);
-}
-
-# Discard deferred writes and disable future deferred writes
-sub discard {
- my $self = shift;
- $self->_discard;
- $self->{defer} = 0;
-}
-
-# Discard deferred writes, but retain old deferred writing mode
-sub _discard {
- my $self = shift;
- %{$self->{deferred}} = ();
- $self->{deferred_s} = 0;
- $self->{deferred_max} = -1;
- $self->{cache}->set_limit($self->{memory});
-}
-
-# Deferred writing is enabled, either explicitly ($self->{defer})
-# or automatically ($self->{autodeferring})
-sub _is_deferring {
- my $self = shift;
- $self->{defer} || $self->{autodeferring};
-}
-
-# The largest record number of any deferred record
-sub _defer_max {
- my $self = shift;
- return $self->{deferred_max} if defined $self->{deferred_max};
- my $max = -1;
- for my $key (keys %{$self->{deferred}}) {
- $max = $key if $key > $max;
- }
- $self->{deferred_max} = $max;
- $max;
-}
-
-################################################################
-#
-# Matters related to autodeferment
-#
-
-# Get/set autodefer option
-sub autodefer {
- my $self = shift;
- if (@_) {
- my $old = $self->{autodefer};
- $self->{autodefer} = shift;
- if ($old) {
- $self->_stop_autodeferring;
- @{$self->{ad_history}} = ();
- }
- $old;
- } else {
- $self->{autodefer};
- }
-}
-
-# The user is trying to store record #$n Record that in the history,
-# and then enable (or disable) autodeferment if that seems useful.
-# Note that it's OK for $n to be a non-number, as long as the function
-# is prepared to deal with that. Nobody else looks at the ad_history.
-#
-# Now, what does the ad_history mean, and what is this function doing?
-# Essentially, the idea is to enable autodeferring when we see that the
-# user has made three consecutive STORE calls to three consecutive records.
-# ("Three" is actually ->{autodefer_threshhold}.)
-# A STORE call for record #$n inserts $n into the autodefer history,
-# and if the history contains three consecutive records, we enable
-# autodeferment. An ad_history of [X, Y] means that the most recent
-# STOREs were for records X, X+1, ..., Y, in that order.
-#
-# Inserting a nonconsecutive number erases the history and starts over.
-#
-# Performing a special operation like SPLICE erases the history.
-#
-# There's one special case: CLEAR means that CLEAR was just called.
-# In this case, we prime the history with [-2, -1] so that if the next
-# write is for record 0, autodeferring goes on immediately. This is for
-# the common special case of "@a = (...)".
-#
-sub _annotate_ad_history {
- my ($self, $n) = @_;
- return unless $self->{autodefer}; # feature is disabled
- return if $self->{defer}; # already in explicit defer mode
- return unless $self->{offsets}[-1] >= $self->{autodefer_filelen_threshhold};
-
- local *H = $self->{ad_history};
- if ($n eq 'CLEAR') {
- @H = (-2, -1); # prime the history with fake records
- $self->_stop_autodeferring;
- } elsif ($n =~ /^\d+$/) {
- if (@H == 0) {
- @H = ($n, $n);
- } else { # @H == 2
- if ($H[1] == $n-1) { # another consecutive record
- $H[1]++;
- if ($H[1] - $H[0] + 1 >= $self->{autodefer_threshhold}) {
- $self->{autodeferring} = 1;
- }
- } else { # nonconsecutive- erase and start over
- @H = ($n, $n);
- $self->_stop_autodeferring;
- }
- }
- } else { # SPLICE or STORESIZE or some such
- @H = ();
- $self->_stop_autodeferring;
- }
-}
-
-# If autodeferring was enabled, cut it out and discard the history
-sub _stop_autodeferring {
- my $self = shift;
- if ($self->{autodeferring}) {
- $self->_flush;
- }
- $self->{autodeferring} = 0;
-}
-
-################################################################
-
-
-# This is NOT a method. It is here for two reasons:
-# 1. To factor a fairly complicated block out of the constructor
-# 2. To provide access for the test suite, which need to be sure
-# files are being written properly.
-sub _default_recsep {
- my $recsep = $/;
- if ($^O eq 'MSWin32') { # Dos too?
- # Windows users expect files to be terminated with \r\n
- # But $/ is set to \n instead
- # Note that this also transforms \n\n into \r\n\r\n.
- # That is a feature.
- $recsep =~ s/\n/\r\n/g;
- }
- $recsep;
-}
-
-# Utility function for _check_integrity
-sub _ci_warn {
- my $msg = shift;
- $msg =~ s/\n/\\n/g;
- $msg =~ s/\r/\\r/g;
- print "# $msg\n";
-}
-
-# Given a file, make sure the cache is consistent with the
-# file contents and the internal data structures are consistent with
-# each other. Returns true if everything checks out, false if not
-#
-# The $file argument is no longer used. It is retained for compatibility
-# with the existing test suite.
-sub _check_integrity {
- my ($self, $file, $warn) = @_;
- my $rsl = $self->{recseplen};
- my $rs = $self->{recsep};
- my $good = 1;
- local *_; # local $_ does not work here
- local $DIAGNOSTIC = 1;
-
- if (not defined $rs) {
- _ci_warn("recsep is undef!");
- $good = 0;
- } elsif ($rs eq "") {
- _ci_warn("recsep is empty!");
- $good = 0;
- } elsif ($rsl != length $rs) {
- my $ln = length $rs;
- _ci_warn("recsep <$rs> has length $ln, should be $rsl");
- $good = 0;
- }
-
- if (not defined $self->{offsets}[0]) {
- _ci_warn("offset 0 is missing!");
- $good = 0;
-
- } elsif ($self->{offsets}[0] != 0) {
- _ci_warn("rec 0: offset <$self->{offsets}[0]> s/b 0!");
- $good = 0;
- }
-
- my $cached = 0;
- {
- local *F = $self->{fh};
- seek F, 0, SEEK_SET;
- local $. = 0;
- local $/ = $rs;
-
- while (<F>) {
- my $n = $. - 1;
- my $cached = $self->{cache}->_produce($n);
- my $offset = $self->{offsets}[$.];
- my $ao = tell F;
- if (defined $offset && $offset != $ao) {
- _ci_warn("rec $n: offset <$offset> actual <$ao>");
- $good = 0;
- }
- if (defined $cached && $_ ne $cached && ! $self->{deferred}{$n}) {
- $good = 0;
- _ci_warn("rec $n: cached <$cached> actual <$_>");
- }
- if (defined $cached && substr($cached, -$rsl) ne $rs) {
- $good = 0;
- _ci_warn("rec $n in the cache is missing the record separator");
- }
- if (! defined $offset && $self->{eof}) {
- $good = 0;
- _ci_warn("The offset table was marked complete, but it is missing element $.");
- }
- }
- if (@{$self->{offsets}} > $.+1) {
- $good = 0;
- my $n = @{$self->{offsets}};
- _ci_warn("The offset table has $n items, but the file has only $.");
- }
-
- my $deferring = $self->_is_deferring;
- for my $n ($self->{cache}->ckeys) {
- my $r = $self->{cache}->_produce($n);
- $cached += length($r);
- next if $n+1 <= $.; # checked this already
- _ci_warn("spurious caching of record $n");
- $good = 0;
- }
- my $b = $self->{cache}->bytes;
- if ($cached != $b) {
- _ci_warn("cache size is $b, should be $cached");
- $good = 0;
- }
- }
-
- # That cache has its own set of tests
- $good = 0 unless $self->{cache}->_check_integrity;
-
- # Now let's check the deferbuffer
- # Unless deferred writing is enabled, it should be empty
- if (! $self->_is_deferring && %{$self->{deferred}}) {
- _ci_warn("deferred writing disabled, but deferbuffer nonempty");
- $good = 0;
- }
-
- # Any record in the deferbuffer should *not* be present in the readcache
- my $deferred_s = 0;
- while (my ($n, $r) = each %{$self->{deferred}}) {
- $deferred_s += length($r);
- if (defined $self->{cache}->_produce($n)) {
- _ci_warn("record $n is in the deferbuffer *and* the readcache");
- $good = 0;
- }
- if (substr($r, -$rsl) ne $rs) {
- _ci_warn("rec $n in the deferbuffer is missing the record separator");
- $good = 0;
- }
- }
-
- # Total size of deferbuffer should match internal total
- if ($deferred_s != $self->{deferred_s}) {
- _ci_warn("buffer size is $self->{deferred_s}, should be $deferred_s");
- $good = 0;
- }
-
- # Total size of deferbuffer should not exceed the specified limit
- if ($deferred_s > $self->{dw_size}) {
- _ci_warn("buffer size is $self->{deferred_s} which exceeds the limit of $self->{dw_size}");
- $good = 0;
- }
-
- # Total size of cached data should not exceed the specified limit
- if ($deferred_s + $cached > $self->{memory}) {
- my $total = $deferred_s + $cached;
- _ci_warn("total stored data size is $total which exceeds the limit of $self->{memory}");
- $good = 0;
- }
-
- # Stuff related to autodeferment
- if (!$self->{autodefer} && @{$self->{ad_history}}) {
- _ci_warn("autodefer is disabled, but ad_history is nonempty");
- $good = 0;
- }
- if ($self->{autodeferring} && $self->{defer}) {
- _ci_warn("both autodeferring and explicit deferring are active");
- $good = 0;
- }
- if (@{$self->{ad_history}} == 0) {
- # That's OK, no additional tests required
- } elsif (@{$self->{ad_history}} == 2) {
- my @non_number = grep !/^-?\d+$/, @{$self->{ad_history}};
- if (@non_number) {
- my $msg;
- { local $" = ')(';
- $msg = "ad_history contains non-numbers (@{$self->{ad_history}})";
- }
- _ci_warn($msg);
- $good = 0;
- } elsif ($self->{ad_history}[1] < $self->{ad_history}[0]) {
- _ci_warn("ad_history has nonsensical values @{$self->{ad_history}}");
- $good = 0;
- }
- } else {
- _ci_warn("ad_history has bad length <@{$self->{ad_history}}>");
- $good = 0;
- }
-
- $good;
-}
-
-################################################################
-#
-# Tie::File::Cache
-#
-# Read cache
-
-package Tie::File::Cache;
-$Tie::File::Cache::VERSION = $Tie::File::VERSION;
-use Carp ':DEFAULT', 'confess';
-
-sub HEAP () { 0 }
-sub HASH () { 1 }
-sub MAX () { 2 }
-sub BYTES() { 3 }
-#sub STAT () { 4 } # Array with request statistics for each record
-#sub MISS () { 5 } # Total number of cache misses
-#sub REQ () { 6 } # Total number of cache requests
-use strict 'vars';
-
-sub new {
- my ($pack, $max) = @_;
- local *_;
- croak "missing argument to ->new" unless defined $max;
- my $self = [];
- bless $self => $pack;
- @$self = (Tie::File::Heap->new($self), {}, $max, 0);
- $self;
-}
-
-sub adj_limit {
- my ($self, $n) = @_;
- $self->[MAX] += $n;
-}
-
-sub set_limit {
- my ($self, $n) = @_;
- $self->[MAX] = $n;
-}
-
-# For internal use only
-# Will be called by the heap structure to notify us that a certain
-# piece of data has moved from one heap element to another.
-# $k is the hash key of the item
-# $n is the new index into the heap at which it is stored
-# If $n is undefined, the item has been removed from the heap.
-sub _heap_move {
- my ($self, $k, $n) = @_;
- if (defined $n) {
- $self->[HASH]{$k} = $n;
- } else {
- delete $self->[HASH]{$k};
- }
-}
-
-sub insert {
- my ($self, $key, $val) = @_;
- local *_;
- croak "missing argument to ->insert" unless defined $key;
- unless (defined $self->[MAX]) {
- confess "undefined max" ;
- }
- confess "undefined val" unless defined $val;
- return if length($val) > $self->[MAX];
-
-# if ($self->[STAT]) {
-# $self->[STAT][$key] = 1;
-# return;
-# }
-
- my $oldnode = $self->[HASH]{$key};
- if (defined $oldnode) {
- my $oldval = $self->[HEAP]->set_val($oldnode, $val);
- $self->[BYTES] -= length($oldval);
- } else {
- $self->[HEAP]->insert($key, $val);
- }
- $self->[BYTES] += length($val);
- $self->flush if $self->[BYTES] > $self->[MAX];
-}
-
-sub expire {
- my $self = shift;
- my $old_data = $self->[HEAP]->popheap;
- return unless defined $old_data;
- $self->[BYTES] -= length $old_data;
- $old_data;
-}
-
-sub remove {
- my ($self, @keys) = @_;
- my @result;
-
-# if ($self->[STAT]) {
-# for my $key (@keys) {
-# $self->[STAT][$key] = 0;
-# }
-# return;
-# }
-
- for my $key (@keys) {
- next unless exists $self->[HASH]{$key};
- my $old_data = $self->[HEAP]->remove($self->[HASH]{$key});
- $self->[BYTES] -= length $old_data;
- push @result, $old_data;
- }
- @result;
-}
-
-sub lookup {
- my ($self, $key) = @_;
- local *_;
- croak "missing argument to ->lookup" unless defined $key;
-
-# if ($self->[STAT]) {
-# $self->[MISS]++ if $self->[STAT][$key]++ == 0;
-# $self->[REQ]++;
-# my $hit_rate = 1 - $self->[MISS] / $self->[REQ];
-# # Do some testing to determine this threshhold
-# $#$self = STAT - 1 if $hit_rate > 0.20;
-# }
-
- if (exists $self->[HASH]{$key}) {
- $self->[HEAP]->lookup($self->[HASH]{$key});
- } else {
- return;
- }
-}
-
-# For internal use only
-sub _produce {
- my ($self, $key) = @_;
- my $loc = $self->[HASH]{$key};
- return unless defined $loc;
- $self->[HEAP][$loc][2];
-}
-
-# For internal use only
-sub _promote {
- my ($self, $key) = @_;
- $self->[HEAP]->promote($self->[HASH]{$key});
-}
-
-sub empty {
- my ($self) = @_;
- %{$self->[HASH]} = ();
- $self->[BYTES] = 0;
- $self->[HEAP]->empty;
-# @{$self->[STAT]} = ();
-# $self->[MISS] = 0;
-# $self->[REQ] = 0;
-}
-
-sub is_empty {
- my ($self) = @_;
- keys %{$self->[HASH]} == 0;
-}
-
-sub update {
- my ($self, $key, $val) = @_;
- local *_;
- croak "missing argument to ->update" unless defined $key;
- if (length($val) > $self->[MAX]) {
- my ($oldval) = $self->remove($key);
- $self->[BYTES] -= length($oldval) if defined $oldval;
- } elsif (exists $self->[HASH]{$key}) {
- my $oldval = $self->[HEAP]->set_val($self->[HASH]{$key}, $val);
- $self->[BYTES] += length($val);
- $self->[BYTES] -= length($oldval) if defined $oldval;
- } else {
- $self->[HEAP]->insert($key, $val);
- $self->[BYTES] += length($val);
- }
- $self->flush;
-}
-
-sub rekey {
- my ($self, $okeys, $nkeys) = @_;
- local *_;
- my %map;
- @map{@$okeys} = @$nkeys;
- croak "missing argument to ->rekey" unless defined $nkeys;
- croak "length mismatch in ->rekey arguments" unless @$nkeys == @$okeys;
- my %adjusted; # map new keys to heap indices
- # You should be able to cut this to one loop TODO XXX
- for (0 .. $#$okeys) {
- $adjusted{$nkeys->[$_]} = delete $self->[HASH]{$okeys->[$_]};
- }
- while (my ($nk, $ix) = each %adjusted) {
- # @{$self->[HASH]}{keys %adjusted} = values %adjusted;
- $self->[HEAP]->rekey($ix, $nk);
- $self->[HASH]{$nk} = $ix;
- }
-}
-
-sub ckeys {
- my $self = shift;
- my @a = keys %{$self->[HASH]};
- @a;
-}
-
-# Return total amount of cached data
-sub bytes {
- my $self = shift;
- $self->[BYTES];
-}
-
-# Expire oldest item from cache until cache size is smaller than $max
-sub reduce_size_to {
- my ($self, $max) = @_;
- until ($self->[BYTES] <= $max) {
- # Note that Tie::File::Cache::expire has been inlined here
- my $old_data = $self->[HEAP]->popheap;
- return unless defined $old_data;
- $self->[BYTES] -= length $old_data;
- }
-}
-
-# Why not just $self->reduce_size_to($self->[MAX])?
-# Try this when things stabilize TODO XXX
-# If the cache is too full, expire the oldest records
-sub flush {
- my $self = shift;
- $self->reduce_size_to($self->[MAX]) if $self->[BYTES] > $self->[MAX];
-}
-
-# For internal use only
-sub _produce_lru {
- my $self = shift;
- $self->[HEAP]->expire_order;
-}
-
-BEGIN { *_ci_warn = \&Tie::File::_ci_warn }
-
-sub _check_integrity { # For CACHE
- my $self = shift;
- my $good = 1;
-
- # Test HEAP
- $self->[HEAP]->_check_integrity or $good = 0;
-
- # Test HASH
- my $bytes = 0;
- for my $k (keys %{$self->[HASH]}) {
- if ($k ne '0' && $k !~ /^[1-9][0-9]*$/) {
- $good = 0;
- _ci_warn "Cache hash key <$k> is non-numeric";
- }
-
- my $h = $self->[HASH]{$k};
- if (! defined $h) {
- $good = 0;
- _ci_warn "Heap index number for key $k is undefined";
- } elsif ($h == 0) {
- $good = 0;
- _ci_warn "Heap index number for key $k is zero";
- } else {
- my $j = $self->[HEAP][$h];
- if (! defined $j) {
- $good = 0;
- _ci_warn "Heap contents key $k (=> $h) are undefined";
- } else {
- $bytes += length($j->[2]);
- if ($k ne $j->[1]) {
- $good = 0;
- _ci_warn "Heap contents key $k (=> $h) is $j->[1], should be $k";
- }
- }
- }
- }
-
- # Test BYTES
- if ($bytes != $self->[BYTES]) {
- $good = 0;
- _ci_warn "Total data in cache is $bytes, expected $self->[BYTES]";
- }
-
- # Test MAX
- if ($bytes > $self->[MAX]) {
- $good = 0;
- _ci_warn "Total data in cache is $bytes, exceeds maximum $self->[MAX]";
- }
-
- return $good;
-}
-
-sub delink {
- my $self = shift;
- $self->[HEAP] = undef; # Bye bye heap
-}
-
-################################################################
-#
-# Tie::File::Heap
-#
-# Heap data structure for use by cache LRU routines
-
-package Tie::File::Heap;
-use Carp ':DEFAULT', 'confess';
-$Tie::File::Heap::VERSION = $Tie::File::Cache::VERSION;
-sub SEQ () { 0 };
-sub KEY () { 1 };
-sub DAT () { 2 };
-
-sub new {
- my ($pack, $cache) = @_;
- die "$pack: Parent cache object $cache does not support _heap_move method"
- unless eval { $cache->can('_heap_move') };
- my $self = [[0,$cache,0]];
- bless $self => $pack;
-}
-
-# Allocate a new sequence number, larger than all previously allocated numbers
-sub _nseq {
- my $self = shift;
- $self->[0][0]++;
-}
-
-sub _cache {
- my $self = shift;
- $self->[0][1];
-}
-
-sub _nelts {
- my $self = shift;
- $self->[0][2];
-}
-
-sub _nelts_inc {
- my $self = shift;
- ++$self->[0][2];
-}
-
-sub _nelts_dec {
- my $self = shift;
- --$self->[0][2];
-}
-
-sub is_empty {
- my $self = shift;
- $self->_nelts == 0;
-}
-
-sub empty {
- my $self = shift;
- $#$self = 0;
- $self->[0][2] = 0;
- $self->[0][0] = 0; # might as well reset the sequence numbers
-}
-
-# notify the parent cache object that we moved something
-sub _heap_move {
- my $self = shift;
- $self->_cache->_heap_move(@_);
-}
-
-# Insert a piece of data into the heap with the indicated sequence number.
-# The item with the smallest sequence number is always at the top.
-# If no sequence number is specified, allocate a new one and insert the
-# item at the bottom.
-sub insert {
- my ($self, $key, $data, $seq) = @_;
- $seq = $self->_nseq unless defined $seq;
- $self->_insert_new([$seq, $key, $data]);
-}
-
-# Insert a new, fresh item at the bottom of the heap
-sub _insert_new {
- my ($self, $item) = @_;
- my $i = @$self;
- $i = int($i/2) until defined $self->[$i/2];
- $self->[$i] = $item;
- $self->[0][1]->_heap_move($self->[$i][KEY], $i);
- $self->_nelts_inc;
-}
-
-# Insert [$data, $seq] pair at or below item $i in the heap.
-# If $i is omitted, default to 1 (the top element.)
-sub _insert {
- my ($self, $item, $i) = @_;
-# $self->_check_loc($i) if defined $i;
- $i = 1 unless defined $i;
- until (! defined $self->[$i]) {
- if ($self->[$i][SEQ] > $item->[SEQ]) { # inserted item is older
- ($self->[$i], $item) = ($item, $self->[$i]);
- $self->[0][1]->_heap_move($self->[$i][KEY], $i);
- }
- # If either is undefined, go that way. Otherwise, choose at random
- my $dir;
- $dir = 0 if !defined $self->[2*$i];
- $dir = 1 if !defined $self->[2*$i+1];
- $dir = int(rand(2)) unless defined $dir;
- $i = 2*$i + $dir;
- }
- $self->[$i] = $item;
- $self->[0][1]->_heap_move($self->[$i][KEY], $i);
- $self->_nelts_inc;
-}
-
-# Remove the item at node $i from the heap, moving child items upwards.
-# The item with the smallest sequence number is always at the top.
-# Moving items upwards maintains this condition.
-# Return the removed item. Return undef if there was no item at node $i.
-sub remove {
- my ($self, $i) = @_;
- $i = 1 unless defined $i;
- my $top = $self->[$i];
- return unless defined $top;
- while (1) {
- my $ii;
- my ($L, $R) = (2*$i, 2*$i+1);
-
- # If either is undefined, go the other way.
- # Otherwise, go towards the smallest.
- last unless defined $self->[$L] || defined $self->[$R];
- $ii = $R if not defined $self->[$L];
- $ii = $L if not defined $self->[$R];
- unless (defined $ii) {
- $ii = $self->[$L][SEQ] < $self->[$R][SEQ] ? $L : $R;
- }
-
- $self->[$i] = $self->[$ii]; # Promote child to fill vacated spot
- $self->[0][1]->_heap_move($self->[$i][KEY], $i);
- $i = $ii; # Fill new vacated spot
- }
- $self->[0][1]->_heap_move($top->[KEY], undef);
- undef $self->[$i];
- $self->_nelts_dec;
- return $top->[DAT];
-}
-
-sub popheap {
- my $self = shift;
- $self->remove(1);
-}
-
-# set the sequence number of the indicated item to a higher number
-# than any other item in the heap, and bubble the item down to the
-# bottom.
-sub promote {
- my ($self, $n) = @_;
-# $self->_check_loc($n);
- $self->[$n][SEQ] = $self->_nseq;
- my $i = $n;
- while (1) {
- my ($L, $R) = (2*$i, 2*$i+1);
- my $dir;
- last unless defined $self->[$L] || defined $self->[$R];
- $dir = $R unless defined $self->[$L];
- $dir = $L unless defined $self->[$R];
- unless (defined $dir) {
- $dir = $self->[$L][SEQ] < $self->[$R][SEQ] ? $L : $R;
- }
- @{$self}[$i, $dir] = @{$self}[$dir, $i];
- for ($i, $dir) {
- $self->[0][1]->_heap_move($self->[$_][KEY], $_) if defined $self->[$_];
- }
- $i = $dir;
- }
-}
-
-# Return item $n from the heap, promoting its LRU status
-sub lookup {
- my ($self, $n) = @_;
-# $self->_check_loc($n);
- my $val = $self->[$n];
- $self->promote($n);
- $val->[DAT];
-}
-
-
-# Assign a new value for node $n, promoting it to the bottom of the heap
-sub set_val {
- my ($self, $n, $val) = @_;
-# $self->_check_loc($n);
- my $oval = $self->[$n][DAT];
- $self->[$n][DAT] = $val;
- $self->promote($n);
- return $oval;
-}
-
-# The hask key has changed for an item;
-# alter the heap's record of the hash key
-sub rekey {
- my ($self, $n, $new_key) = @_;
-# $self->_check_loc($n);
- $self->[$n][KEY] = $new_key;
-}
-
-sub _check_loc {
- my ($self, $n) = @_;
- unless (1 || defined $self->[$n]) {
- confess "_check_loc($n) failed";
- }
-}
-
-BEGIN { *_ci_warn = \&Tie::File::_ci_warn }
-
-sub _check_integrity {
- my $self = shift;
- my $good = 1;
- my %seq;
-
- unless (eval {$self->[0][1]->isa("Tie::File::Cache")}) {
- _ci_warn "Element 0 of heap corrupt";
- $good = 0;
- }
- $good = 0 unless $self->_satisfies_heap_condition(1);
- for my $i (2 .. $#{$self}) {
- my $p = int($i/2); # index of parent node
- if (defined $self->[$i] && ! defined $self->[$p]) {
- _ci_warn "Element $i of heap defined, but parent $p isn't";
- $good = 0;
- }
-
- if (defined $self->[$i]) {
- if ($seq{$self->[$i][SEQ]}) {
- my $seq = $self->[$i][SEQ];
- _ci_warn "Nodes $i and $seq{$seq} both have SEQ=$seq";
- $good = 0;
- } else {
- $seq{$self->[$i][SEQ]} = $i;
- }
- }
- }
-
- return $good;
-}
-
-sub _satisfies_heap_condition {
- my $self = shift;
- my $n = shift || 1;
- my $good = 1;
- for (0, 1) {
- my $c = $n*2 + $_;
- next unless defined $self->[$c];
- if ($self->[$n][SEQ] >= $self->[$c]) {
- _ci_warn "Node $n of heap does not predate node $c";
- $good = 0 ;
- }
- $good = 0 unless $self->_satisfies_heap_condition($c);
- }
- return $good;
-}
-
-# Return a list of all the values, sorted by expiration order
-sub expire_order {
- my $self = shift;
- my @nodes = sort {$a->[SEQ] <=> $b->[SEQ]} $self->_nodes;
- map { $_->[KEY] } @nodes;
-}
-
-sub _nodes {
- my $self = shift;
- my $i = shift || 1;
- return unless defined $self->[$i];
- ($self->[$i], $self->_nodes($i*2), $self->_nodes($i*2+1));
-}
-
-"Cogito, ergo sum."; # don't forget to return a true value from the file
-
-__END__
-
-=head1 NAME
-
-Tie::File - Access the lines of a disk file via a Perl array
-
-=head1 SYNOPSIS
-
- # This file documents Tie::File version 0.97
- use Tie::File;
-
- tie @array, 'Tie::File', filename or die ...;
-
- $array[13] = 'blah'; # line 13 of the file is now 'blah'
- print $array[42]; # display line 42 of the file
-
- $n_recs = @array; # how many records are in the file?
- $#array -= 2; # chop two records off the end
-
-
- for (@array) {
- s/PERL/Perl/g; # Replace PERL with Perl everywhere in the file
- }
-
- # These are just like regular push, pop, unshift, shift, and splice
- # Except that they modify the file in the way you would expect
-
- push @array, new recs...;
- my $r1 = pop @array;
- unshift @array, new recs...;
- my $r2 = shift @array;
- @old_recs = splice @array, 3, 7, new recs...;
-
- untie @array; # all finished
-
-
-=head1 DESCRIPTION
-
-C<Tie::File> represents a regular text file as a Perl array. Each
-element in the array corresponds to a record in the file. The first
-line of the file is element 0 of the array; the second line is element
-1, and so on.
-
-The file is I<not> loaded into memory, so this will work even for
-gigantic files.
-
-Changes to the array are reflected in the file immediately.
-
-Lazy people and beginners may now stop reading the manual.
-
-=head2 C<recsep>
-
-What is a 'record'? By default, the meaning is the same as for the
-C<E<lt>...E<gt>> operator: It's a string terminated by C<$/>, which is
-probably C<"\n">. (Minor exception: on DOS and Win32 systems, a
-'record' is a string terminated by C<"\r\n">.) You may change the
-definition of "record" by supplying the C<recsep> option in the C<tie>
-call:
-
- tie @array, 'Tie::File', $file, recsep => 'es';
-
-This says that records are delimited by the string C<es>. If the file
-contained the following data:
-
- Curse these pesky flies!\n
-
-then the C<@array> would appear to have four elements:
-
- "Curse th"
- "e p"
- "ky fli"
- "!\n"
-
-An undefined value is not permitted as a record separator. Perl's
-special "paragraph mode" semantics (E<agrave> la C<$/ = "">) are not
-emulated.
-
-Records read from the tied array do not have the record separator
-string on the end; this is to allow
-
- $array[17] .= "extra";
-
-to work as expected.
-
-(See L<"autochomp">, below.) Records stored into the array will have
-the record separator string appended before they are written to the
-file, if they don't have one already. For example, if the record
-separator string is C<"\n">, then the following two lines do exactly
-the same thing:
-
- $array[17] = "Cherry pie";
- $array[17] = "Cherry pie\n";
-
-The result is that the contents of line 17 of the file will be
-replaced with "Cherry pie"; a newline character will separate line 17
-from line 18. This means that this code will do nothing:
-
- chomp $array[17];
-
-Because the C<chomp>ed value will have the separator reattached when
-it is written back to the file. There is no way to create a file
-whose trailing record separator string is missing.
-
-Inserting records that I<contain> the record separator string is not
-supported by this module. It will probably produce a reasonable
-result, but what this result will be may change in a future version.
-Use 'splice' to insert records or to replace one record with several.
-
-=head2 C<autochomp>
-
-Normally, array elements have the record separator removed, so that if
-the file contains the text
-
- Gold
- Frankincense
- Myrrh
-
-the tied array will appear to contain C<("Gold", "Frankincense",
-"Myrrh")>. If you set C<autochomp> to a false value, the record
-separator will not be removed. If the file above was tied with
-
- tie @gifts, "Tie::File", $gifts, autochomp => 0;
-
-then the array C<@gifts> would appear to contain C<("Gold\n",
-"Frankincense\n", "Myrrh\n")>, or (on Win32 systems) C<("Gold\r\n",
-"Frankincense\r\n", "Myrrh\r\n")>.
-
-=head2 C<mode>
-
-Normally, the specified file will be opened for read and write access,
-and will be created if it does not exist. (That is, the flags
-C<O_RDWR | O_CREAT> are supplied in the C<open> call.) If you want to
-change this, you may supply alternative flags in the C<mode> option.
-See L<Fcntl> for a listing of available flags.
-For example:
-
- # open the file if it exists, but fail if it does not exist
- use Fcntl 'O_RDWR';
- tie @array, 'Tie::File', $file, mode => O_RDWR;
-
- # create the file if it does not exist
- use Fcntl 'O_RDWR', 'O_CREAT';
- tie @array, 'Tie::File', $file, mode => O_RDWR | O_CREAT;
-
- # open an existing file in read-only mode
- use Fcntl 'O_RDONLY';
- tie @array, 'Tie::File', $file, mode => O_RDONLY;
-
-Opening the data file in write-only or append mode is not supported.
-
-=head2 C<memory>
-
-This is an upper limit on the amount of memory that C<Tie::File> will
-consume at any time while managing the file. This is used for two
-things: managing the I<read cache> and managing the I<deferred write
-buffer>.
-
-Records read in from the file are cached, to avoid having to re-read
-them repeatedly. If you read the same record twice, the first time it
-will be stored in memory, and the second time it will be fetched from
-the I<read cache>. The amount of data in the read cache will not
-exceed the value you specified for C<memory>. If C<Tie::File> wants
-to cache a new record, but the read cache is full, it will make room
-by expiring the least-recently visited records from the read cache.
-
-The default memory limit is 2Mib. You can adjust the maximum read
-cache size by supplying the C<memory> option. The argument is the
-desired cache size, in bytes.
-
- # I have a lot of memory, so use a large cache to speed up access
- tie @array, 'Tie::File', $file, memory => 20_000_000;
-
-Setting the memory limit to 0 will inhibit caching; records will be
-fetched from disk every time you examine them.
-
-The C<memory> value is not an absolute or exact limit on the memory
-used. C<Tie::File> objects contains some structures besides the read
-cache and the deferred write buffer, whose sizes are not charged
-against C<memory>.
-
-The cache itself consumes about 310 bytes per cached record, so if
-your file has many short records, you may want to decrease the cache
-memory limit, or else the cache overhead may exceed the size of the
-cached data.
-
-
-=head2 C<dw_size>
-
-(This is an advanced feature. Skip this section on first reading.)
-
-If you use deferred writing (See L<"Deferred Writing">, below) then
-data you write into the array will not be written directly to the
-file; instead, it will be saved in the I<deferred write buffer> to be
-written out later. Data in the deferred write buffer is also charged
-against the memory limit you set with the C<memory> option.
-
-You may set the C<dw_size> option to limit the amount of data that can
-be saved in the deferred write buffer. This limit may not exceed the
-total memory limit. For example, if you set C<dw_size> to 1000 and
-C<memory> to 2500, that means that no more than 1000 bytes of deferred
-writes will be saved up. The space available for the read cache will
-vary, but it will always be at least 1500 bytes (if the deferred write
-buffer is full) and it could grow as large as 2500 bytes (if the
-deferred write buffer is empty.)
-
-If you don't specify a C<dw_size>, it defaults to the entire memory
-limit.
-
-=head2 Option Format
-
-C<-mode> is a synonym for C<mode>. C<-recsep> is a synonym for
-C<recsep>. C<-memory> is a synonym for C<memory>. You get the
-idea.
-
-=head1 Public Methods
-
-The C<tie> call returns an object, say C<$o>. You may call
-
- $rec = $o->FETCH($n);
- $o->STORE($n, $rec);
-
-to fetch or store the record at line C<$n>, respectively; similarly
-the other tied array methods. (See L<perltie> for details.) You may
-also call the following methods on this object:
-
-=head2 C<flock>
-
- $o->flock(MODE)
-
-will lock the tied file. C<MODE> has the same meaning as the second
-argument to the Perl built-in C<flock> function; for example
-C<LOCK_SH> or C<LOCK_EX | LOCK_NB>. (These constants are provided by
-the C<use Fcntl ':flock'> declaration.)
-
-C<MODE> is optional; the default is C<LOCK_EX>.
-
-C<Tie::File> maintains an internal table of the byte offset of each
-record it has seen in the file.
-
-When you use C<flock> to lock the file, C<Tie::File> assumes that the
-read cache is no longer trustworthy, because another process might
-have modified the file since the last time it was read. Therefore, a
-successful call to C<flock> discards the contents of the read cache
-and the internal record offset table.
-
-C<Tie::File> promises that the following sequence of operations will
-be safe:
-
- my $o = tie @array, "Tie::File", $filename;
- $o->flock;
-
-In particular, C<Tie::File> will I<not> read or write the file during
-the C<tie> call. (Exception: Using C<mode =E<gt> O_TRUNC> will, of
-course, erase the file during the C<tie> call. If you want to do this
-safely, then open the file without C<O_TRUNC>, lock the file, and use
-C<@array = ()>.)
-
-The best way to unlock a file is to discard the object and untie the
-array. It is probably unsafe to unlock the file without also untying
-it, because if you do, changes may remain unwritten inside the object.
-That is why there is no shortcut for unlocking. If you really want to
-unlock the file prematurely, you know what to do; if you don't know
-what to do, then don't do it.
-
-All the usual warnings about file locking apply here. In particular,
-note that file locking in Perl is B<advisory>, which means that
-holding a lock will not prevent anyone else from reading, writing, or
-erasing the file; it only prevents them from getting another lock at
-the same time. Locks are analogous to green traffic lights: If you
-have a green light, that does not prevent the idiot coming the other
-way from plowing into you sideways; it merely guarantees to you that
-the idiot does not also have a green light at the same time.
-
-=head2 C<autochomp>
-
- my $old_value = $o->autochomp(0); # disable autochomp option
- my $old_value = $o->autochomp(1); # enable autochomp option
-
- my $ac = $o->autochomp(); # recover current value
-
-See L<"autochomp">, above.
-
-=head2 C<defer>, C<flush>, C<discard>, and C<autodefer>
-
-See L<"Deferred Writing">, below.
-
-=head2 C<offset>
-
- $off = $o->offset($n);
-
-This method returns the byte offset of the start of the C<$n>th record
-in the file. If there is no such record, it returns an undefined
-value.
-
-=head1 Tying to an already-opened filehandle
-
-If C<$fh> is a filehandle, such as is returned by C<IO::File> or one
-of the other C<IO> modules, you may use:
-
- tie @array, 'Tie::File', $fh, ...;
-
-Similarly if you opened that handle C<FH> with regular C<open> or
-C<sysopen>, you may use:
-
- tie @array, 'Tie::File', \*FH, ...;
-
-Handles that were opened write-only won't work. Handles that were
-opened read-only will work as long as you don't try to modify the
-array. Handles must be attached to seekable sources of data---that
-means no pipes or sockets. If C<Tie::File> can detect that you
-supplied a non-seekable handle, the C<tie> call will throw an
-exception. (On Unix systems, it can detect this.)
-
-Note that Tie::File will only close any filehandles that it opened
-internally. If you passed it a filehandle as above, you "own" the
-filehandle, and are responsible for closing it after you have untied
-the @array.
-
-=head1 Deferred Writing
-
-(This is an advanced feature. Skip this section on first reading.)
-
-Normally, modifying a C<Tie::File> array writes to the underlying file
-immediately. Every assignment like C<$a[3] = ...> rewrites as much of
-the file as is necessary; typically, everything from line 3 through
-the end will need to be rewritten. This is the simplest and most
-transparent behavior. Performance even for large files is reasonably
-good.
-
-However, under some circumstances, this behavior may be excessively
-slow. For example, suppose you have a million-record file, and you
-want to do:
-
- for (@FILE) {
- $_ = "> $_";
- }
-
-The first time through the loop, you will rewrite the entire file,
-from line 0 through the end. The second time through the loop, you
-will rewrite the entire file from line 1 through the end. The third
-time through the loop, you will rewrite the entire file from line 2 to
-the end. And so on.
-
-If the performance in such cases is unacceptable, you may defer the
-actual writing, and then have it done all at once. The following loop
-will perform much better for large files:
-
- (tied @a)->defer;
- for (@a) {
- $_ = "> $_";
- }
- (tied @a)->flush;
-
-If C<Tie::File>'s memory limit is large enough, all the writing will
-done in memory. Then, when you call C<-E<gt>flush>, the entire file
-will be rewritten in a single pass.
-
-(Actually, the preceding discussion is something of a fib. You don't
-need to enable deferred writing to get good performance for this
-common case, because C<Tie::File> will do it for you automatically
-unless you specifically tell it not to. See L<"autodeferring">,
-below.)
-
-Calling C<-E<gt>flush> returns the array to immediate-write mode. If
-you wish to discard the deferred writes, you may call C<-E<gt>discard>
-instead of C<-E<gt>flush>. Note that in some cases, some of the data
-will have been written already, and it will be too late for
-C<-E<gt>discard> to discard all the changes. Support for
-C<-E<gt>discard> may be withdrawn in a future version of C<Tie::File>.
-
-Deferred writes are cached in memory up to the limit specified by the
-C<dw_size> option (see above). If the deferred-write buffer is full
-and you try to write still more deferred data, the buffer will be
-flushed. All buffered data will be written immediately, the buffer
-will be emptied, and the now-empty space will be used for future
-deferred writes.
-
-If the deferred-write buffer isn't yet full, but the total size of the
-buffer and the read cache would exceed the C<memory> limit, the oldest
-records will be expired from the read cache until the total size is
-under the limit.
-
-C<push>, C<pop>, C<shift>, C<unshift>, and C<splice> cannot be
-deferred. When you perform one of these operations, any deferred data
-is written to the file and the operation is performed immediately.
-This may change in a future version.
-
-If you resize the array with deferred writing enabled, the file will
-be resized immediately, but deferred records will not be written.
-This has a surprising consequence: C<@a = (...)> erases the file
-immediately, but the writing of the actual data is deferred. This
-might be a bug. If it is a bug, it will be fixed in a future version.
-
-=head2 Autodeferring
-
-C<Tie::File> tries to guess when deferred writing might be helpful,
-and to turn it on and off automatically.
-
- for (@a) {
- $_ = "> $_";
- }
-
-In this example, only the first two assignments will be done
-immediately; after this, all the changes to the file will be deferred
-up to the user-specified memory limit.
-
-You should usually be able to ignore this and just use the module
-without thinking about deferring. However, special applications may
-require fine control over which writes are deferred, or may require
-that all writes be immediate. To disable the autodeferment feature,
-use
-
- (tied @o)->autodefer(0);
-
-or
-
- tie @array, 'Tie::File', $file, autodefer => 0;
-
-
-Similarly, C<-E<gt>autodefer(1)> re-enables autodeferment, and
-C<-E<gt>autodefer()> recovers the current value of the autodefer setting.
-
-
-=head1 CONCURRENT ACCESS TO FILES
-
-Caching and deferred writing are inappropriate if you want the same
-file to be accessed simultaneously from more than one process. Other
-optimizations performed internally by this module are also
-incompatible with concurrent access. A future version of this module will
-support a C<concurrent =E<gt> 1> option that enables safe concurrent access.
-
-Previous versions of this documentation suggested using C<memory
-=E<gt> 0> for safe concurrent access. This was mistaken. Tie::File
-will not support safe concurrent access before version 0.98.
-
-=head1 CAVEATS
-
-(That's Latin for 'warnings'.)
-
-=over 4
-
-=item *
-
-Reasonable effort was made to make this module efficient. Nevertheless,
-changing the size of a record in the middle of a large file will
-always be fairly slow, because everything after the new record must be
-moved.
-
-=item *
-
-The behavior of tied arrays is not precisely the same as for regular
-arrays. For example:
-
- # This DOES print "How unusual!"
- undef $a[10]; print "How unusual!\n" if defined $a[10];
-
-C<undef>-ing a C<Tie::File> array element just blanks out the
-corresponding record in the file. When you read it back again, you'll
-get the empty string, so the supposedly-C<undef>'ed value will be
-defined. Similarly, if you have C<autochomp> disabled, then
-
- # This DOES print "How unusual!" if 'autochomp' is disabled
- undef $a[10];
- print "How unusual!\n" if $a[10];
-
-Because when C<autochomp> is disabled, C<$a[10]> will read back as
-C<"\n"> (or whatever the record separator string is.)
-
-There are other minor differences, particularly regarding C<exists>
-and C<delete>, but in general, the correspondence is extremely close.
-
-=item *
-
-I have supposed that since this module is concerned with file I/O,
-almost all normal use of it will be heavily I/O bound. This means
-that the time to maintain complicated data structures inside the
-module will be dominated by the time to actually perform the I/O.
-When there was an opportunity to spend CPU time to avoid doing I/O, I
-usually tried to take it.
-
-=item *
-
-You might be tempted to think that deferred writing is like
-transactions, with C<flush> as C<commit> and C<discard> as
-C<rollback>, but it isn't, so don't.
-
-=item *
-
-There is a large memory overhead for each record offset and for each
-cache entry: about 310 bytes per cached data record, and about 21 bytes per offset table entry.
-
-The per-record overhead will limit the maximum number of records you
-can access per file. Note that I<accessing> the length of the array
-via C<$x = scalar @tied_file> accesses B<all> records and stores their
-offsets. The same for C<foreach (@tied_file)>, even if you exit the
-loop early.
-
-=back
-
-=head1 SUBCLASSING
-
-This version promises absolutely nothing about the internals, which
-may change without notice. A future version of the module will have a
-well-defined and stable subclassing API.
-
-=head1 WHAT ABOUT C<DB_File>?
-
-People sometimes point out that L<DB_File> will do something similar,
-and ask why C<Tie::File> module is necessary.
-
-There are a number of reasons that you might prefer C<Tie::File>.
-A list is available at C<http://perl.plover.com/TieFile/why-not-DB_File>.
-
-=head1 AUTHOR
-
-Mark Jason Dominus
-
-To contact the author, send email to: C<mjd-perl-tiefile+@plover.com>
-
-To receive an announcement whenever a new version of this module is
-released, send a blank email message to
-C<mjd-perl-tiefile-subscribe@plover.com>.
-
-The most recent version of this module, including documentation and
-any news of importance, will be available at
-
- http://perl.plover.com/TieFile/
-
-
-=head1 LICENSE
-
-C<Tie::File> version 0.97 is copyright (C) 2003 Mark Jason Dominus.
-
-This library is free software; you may redistribute it and/or modify
-it under the same terms as Perl itself.
-
-These terms are your choice of any of (1) the Perl Artistic Licence,
-or (2) version 2 of the GNU General Public License as published by the
-Free Software Foundation, or (3) any later version of the GNU General
-Public License.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this library program; it should be in the file C<COPYING>.
-If not, write to the Free Software Foundation, Inc., 59 Temple Place,
-Suite 330, Boston, MA 02111 USA
-
-For licensing inquiries, contact the author at:
-
- Mark Jason Dominus
- 255 S. Warnock St.
- Philadelphia, PA 19107
-
-=head1 WARRANTY
-
-C<Tie::File> version 0.97 comes with ABSOLUTELY NO WARRANTY.
-For details, see the license.
-
-=head1 THANKS
-
-Gigantic thanks to Jarkko Hietaniemi, for agreeing to put this in the
-core when I hadn't written it yet, and for generally being helpful,
-supportive, and competent. (Usually the rule is "choose any one.")
-Also big thanks to Abhijit Menon-Sen for all of the same things.
-
-Special thanks to Craig Berry and Peter Prymmer (for VMS portability
-help), Randy Kobes (for Win32 portability help), Clinton Pierce and
-Autrijus Tang (for heroic eleventh-hour Win32 testing above and beyond
-the call of duty), Michael G Schwern (for testing advice), and the
-rest of the CPAN testers (for testing generally).
-
-Special thanks to Tels for suggesting several speed and memory
-optimizations.
-
-Additional thanks to:
-Edward Avis /
-Mattia Barbon /
-Tom Christiansen /
-Gerrit Haase /
-Gurusamy Sarathy /
-Jarkko Hietaniemi (again) /
-Nikola Knezevic /
-John Kominetz /
-Nick Ing-Simmons /
-Tassilo von Parseval /
-H. Dieter Pearcey /
-Slaven Rezic /
-Eric Roode /
-Peter Scott /
-Peter Somu /
-Autrijus Tang (again) /
-Tels (again) /
-Juerd Waalboer
-
-=head1 TODO
-
-More tests. (Stuff I didn't think of yet.)
-
-Paragraph mode?
-
-Fixed-length mode. Leave-blanks mode.
-
-Maybe an autolocking mode?
-
-For many common uses of the module, the read cache is a liability.
-For example, a program that inserts a single record, or that scans the
-file once, will have a cache hit rate of zero. This suggests a major
-optimization: The cache should be initially disabled. Here's a hybrid
-approach: Initially, the cache is disabled, but the cache code
-maintains statistics about how high the hit rate would be *if* it were
-enabled. When it sees the hit rate get high enough, it enables
-itself. The STAT comments in this code are the beginning of an
-implementation of this.
-
-Record locking with fcntl()? Then the module might support an undo
-log and get real transactions. What a tour de force that would be.
-
-Keeping track of the highest cached record. This would allow reads-in-a-row
-to skip the cache lookup faster (if reading from 1..N with empty cache at
-start, the last cached value will be always N-1).
-
-More tests.
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Tie/Handle.pm b/Master/tlpkg/tlperl/lib/Tie/Handle.pm
deleted file mode 100644
index d8747f12af1..00000000000
--- a/Master/tlpkg/tlperl/lib/Tie/Handle.pm
+++ /dev/null
@@ -1,234 +0,0 @@
-package Tie::Handle;
-
-use 5.006_001;
-our $VERSION = '4.1';
-
-=head1 NAME
-
-Tie::Handle, Tie::StdHandle - base class definitions for tied handles
-
-=head1 SYNOPSIS
-
- package NewHandle;
- require Tie::Handle;
-
- @ISA = qw(Tie::Handle);
-
- sub READ { ... } # Provide a needed method
- sub TIEHANDLE { ... } # Overrides inherited method
-
-
- package main;
-
- tie *FH, 'NewHandle';
-
-=head1 DESCRIPTION
-
-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<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
-has sample code as well:
-
-=over 4
-
-=item TIEHANDLE classname, LIST
-
-The method invoked by the command C<tie *glob, classname>. Associates a new
-glob instance with the specified class. C<LIST> would represent additional
-arguments (along the lines of L<AnyDBM_File> and compatriots) needed to
-complete the association.
-
-=item WRITE this, scalar, length, offset
-
-Write I<length> bytes of data from I<scalar> starting at I<offset>.
-
-=item PRINT this, LIST
-
-Print the values in I<LIST>
-
-=item PRINTF this, format, LIST
-
-Print the values in I<LIST> using I<format>
-
-=item READ this, scalar, length, offset
-
-Read I<length> bytes of data into I<scalar> starting at I<offset>.
-
-=item READLINE this
-
-Read a single line
-
-=item GETC this
-
-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>.
-This is rarely needed, as Perl manages its memory quite well. But the
-option exists, should a class wish to perform specific actions upon the
-destruction of an instance.
-
-=back
-
-=head1 MORE INFORMATION
-
-The L<perltie> section contains an example of tying handles.
-
-=head1 COMPATIBILITY
-
-This version of Tie::Handle is neither related to nor compatible with
-the Tie::Handle (3.0) module available on CPAN. It was due to an
-accident that two modules with the same name appeared. The namespace
-clash has been cleared in favor of this module that comes with the
-perl core in September 2000 and accordingly the version number has
-been bumped up to 4.0.
-
-=cut
-
-use Carp;
-use warnings::register;
-
-sub new {
- my $pkg = shift;
- $pkg->TIEHANDLE(@_);
-}
-
-# "Grandfather" the new, a la Tie::Hash
-
-sub TIEHANDLE {
- my $pkg = shift;
- if (defined &{"{$pkg}::new"}) {
- warnings::warnif("WARNING: calling ${pkg}->new since ${pkg}->TIEHANDLE is missing");
- $pkg->new(@_);
- }
- else {
- croak "$pkg doesn't define a TIEHANDLE method";
- }
-}
-
-sub PRINT {
- my $self = shift;
- if($self->can('WRITE') != \&WRITE) {
- my $buf = join(defined $, ? $, : "",@_);
- $buf .= $\ if defined $\;
- $self->WRITE($buf,length($buf),0);
- }
- else {
- croak ref($self)," doesn't define a PRINT method";
- }
-}
-
-sub PRINTF {
- my $self = shift;
-
- if($self->can('WRITE') != \&WRITE) {
- my $buf = sprintf(shift,@_);
- $self->WRITE($buf,length($buf),0);
- }
- else {
- croak ref($self)," doesn't define a PRINTF method";
- }
-}
-
-sub READLINE {
- my $pkg = ref $_[0];
- croak "$pkg doesn't define a READLINE method";
-}
-
-sub GETC {
- my $self = shift;
-
- if($self->can('READ') != \&READ) {
- my $buf;
- $self->READ($buf,1);
- return $buf;
- }
- else {
- croak ref($self)," doesn't define a GETC method";
- }
-}
-
-sub READ {
- my $pkg = ref $_[0];
- croak "$pkg doesn't define a READ method";
-}
-
-sub WRITE {
- my $pkg = ref $_[0];
- croak "$pkg doesn't define a WRITE method";
-}
-
-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);
- @_ == 2 ? open($_[0], $_[1]) : open($_[0], $_[1], $_[2]);
-}
-
-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/Master/tlpkg/tlperl/lib/Tie/Hash.pm b/Master/tlpkg/tlperl/lib/Tie/Hash.pm
deleted file mode 100644
index a838915482b..00000000000
--- a/Master/tlpkg/tlperl/lib/Tie/Hash.pm
+++ /dev/null
@@ -1,257 +0,0 @@
-package Tie::Hash;
-
-our $VERSION = '1.02';
-
-=head1 NAME
-
-Tie::Hash, Tie::StdHash, Tie::ExtraHash - base class definitions for tied hashes
-
-=head1 SYNOPSIS
-
- package NewHash;
- require Tie::Hash;
-
- @ISA = (Tie::Hash);
-
- sub DELETE { ... } # Provides needed method
- sub CLEAR { ... } # Overrides inherited method
-
-
- package NewStdHash;
- require Tie::Hash;
-
- @ISA = (Tie::StdHash);
-
- # All methods provided by default, define only those needing overrides
- # Accessors access the storage in %{$_[0]};
- # TIEHASH should return a reference to the actual storage
- sub DELETE { ... }
-
- package NewExtraHash;
- require Tie::Hash;
-
- @ISA = (Tie::ExtraHash);
-
- # All methods provided by default, define only those needing overrides
- # Accessors access the storage in %{$_[0][0]};
- # TIEHASH should return an array reference with the first element being
- # the reference to the actual storage
- sub DELETE {
- $_[0][1]->('del', $_[0][0], $_[1]); # Call the report writer
- delete $_[0][0]->{$_[1]}; # $_[0]->SUPER::DELETE($_[1])
- }
-
-
- package main;
-
- tie %new_hash, 'NewHash';
- tie %new_std_hash, 'NewStdHash';
- tie %new_extra_hash, 'NewExtraHash',
- sub {warn "Doing \U$_[1]\E of $_[2].\n"};
-
-=head1 DESCRIPTION
-
-This module provides some skeletal methods for hash-tying classes. See
-L<perltie> for a list of the functions required in order to tie a hash
-to a package. The basic B<Tie::Hash> package provides a C<new> method, as well
-as methods C<TIEHASH>, C<EXISTS> and C<CLEAR>. The B<Tie::StdHash> and
-B<Tie::ExtraHash> packages
-provide most methods for hashes described in L<perltie> (the exceptions
-are C<UNTIE> and C<DESTROY>). They cause tied hashes to behave exactly like standard hashes,
-and allow for selective overwriting of methods. B<Tie::Hash> grandfathers the
-C<new> method: it is used if C<TIEHASH> is not defined
-in the case a class forgets to include a C<TIEHASH> method.
-
-For developers wishing to write their own tied hashes, the required methods
-are briefly defined below. See the L<perltie> section for more detailed
-descriptive, as well as example code:
-
-=over 4
-
-=item TIEHASH classname, LIST
-
-The method invoked by the command C<tie %hash, classname>. Associates a new
-hash instance with the specified class. C<LIST> would represent additional
-arguments (along the lines of L<AnyDBM_File> and compatriots) needed to
-complete the association.
-
-=item STORE this, key, value
-
-Store datum I<value> into I<key> for the tied hash I<this>.
-
-=item FETCH this, key
-
-Retrieve the datum in I<key> for the tied hash I<this>.
-
-=item FIRSTKEY this
-
-Return the first key in the hash.
-
-=item NEXTKEY this, lastkey
-
-Return the next key in the hash.
-
-=item EXISTS this, key
-
-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>.
-
-=item CLEAR this
-
-Clear all values from the tied hash I<this>.
-
-=item SCALAR this
-
-Returns what evaluating the hash in scalar context yields.
-
-B<Tie::Hash> does not implement this method (but B<Tie::StdHash>
-and B<Tie::ExtraHash> do).
-
-=back
-
-=head1 Inheriting from B<Tie::StdHash>
-
-The accessor methods assume that the actual storage for the data in the tied
-hash is in the hash referenced by C<tied(%tiedhash)>. Thus overwritten
-C<TIEHASH> method should return a hash reference, and the remaining methods
-should operate on the hash referenced by the first argument:
-
- package ReportHash;
- our @ISA = 'Tie::StdHash';
-
- sub TIEHASH {
- my $storage = bless {}, shift;
- warn "New ReportHash created, stored in $storage.\n";
- $storage
- }
- sub STORE {
- warn "Storing data with key $_[1] at $_[0].\n";
- $_[0]{$_[1]} = $_[2]
- }
-
-
-=head1 Inheriting from B<Tie::ExtraHash>
-
-The accessor methods assume that the actual storage for the data in the tied
-hash is in the hash referenced by C<(tied(%tiedhash))-E<gt>[0]>. Thus overwritten
-C<TIEHASH> method should return an array reference with the first
-element being a hash reference, and the remaining methods should operate on the
-hash C<< %{ $_[0]->[0] } >>:
-
- package ReportHash;
- our @ISA = 'Tie::ExtraHash';
-
- sub TIEHASH {
- my $class = shift;
- my $storage = bless [{}, @_], $class;
- warn "New ReportHash created, stored in $storage.\n";
- $storage;
- }
- sub STORE {
- warn "Storing data with key $_[1] at $_[0].\n";
- $_[0][0]{$_[1]} = $_[2]
- }
-
-The default C<TIEHASH> method stores "extra" arguments to tie() starting
-from offset 1 in the array referenced by C<tied(%tiedhash)>; this is the
-same storage algorithm as in TIEHASH subroutine above. Hence, a typical
-package inheriting from B<Tie::ExtraHash> does not need to overwrite this
-method.
-
-=head1 C<SCALAR>, C<UNTIE> and C<DESTROY>
-
-The methods C<UNTIE> and C<DESTROY> are not defined in B<Tie::Hash>,
-B<Tie::StdHash>, or B<Tie::ExtraHash>. Tied hashes do not require
-presence of these methods, but if defined, the methods will be called in
-proper time, see L<perltie>.
-
-C<SCALAR> is only defined in B<Tie::StdHash> and B<Tie::ExtraHash>.
-
-If needed, these methods should be defined by the package inheriting from
-B<Tie::Hash>, B<Tie::StdHash>, or B<Tie::ExtraHash>. See L<pertie/"SCALAR">
-to find out what happens when C<SCALAR> does not exist.
-
-=head1 MORE INFORMATION
-
-The packages relating to various DBM-related implementations (F<DB_File>,
-F<NDBM_File>, etc.) show examples of general tied hashes, as does the
-L<Config> module. While these do not utilize B<Tie::Hash>, they serve as
-good working examples.
-
-=cut
-
-use Carp;
-use warnings::register;
-
-sub new {
- my $pkg = shift;
- $pkg->TIEHASH(@_);
-}
-
-# Grandfather "new"
-
-sub TIEHASH {
- my $pkg = shift;
- if (defined &{"${pkg}::new"}) {
- warnings::warnif("WARNING: calling ${pkg}->new since ${pkg}->TIEHASH is missing");
- $pkg->new(@_);
- }
- else {
- croak "$pkg doesn't define a TIEHASH method";
- }
-}
-
-sub EXISTS {
- my $pkg = ref $_[0];
- croak "$pkg doesn't define an EXISTS method";
-}
-
-sub CLEAR {
- my $self = shift;
- my $key = $self->FIRSTKEY(@_);
- my @keys;
-
- while (defined $key) {
- push @keys, $key;
- $key = $self->NEXTKEY(@_, $key);
- }
- foreach $key (@keys) {
- $self->DELETE(@_, $key);
- }
-}
-
-# The Tie::StdHash package implements standard perl hash behaviour.
-# It exists to act as a base class for classes which only wish to
-# alter some parts of their behaviour.
-
-package Tie::StdHash;
-# @ISA = qw(Tie::Hash); # would inherit new() only
-
-sub TIEHASH { bless {}, $_[0] }
-sub STORE { $_[0]->{$_[1]} = $_[2] }
-sub FETCH { $_[0]->{$_[1]} }
-sub FIRSTKEY { my $a = scalar keys %{$_[0]}; each %{$_[0]} }
-sub NEXTKEY { each %{$_[0]} }
-sub EXISTS { exists $_[0]->{$_[1]} }
-sub DELETE { delete $_[0]->{$_[1]} }
-sub CLEAR { %{$_[0]} = () }
-sub SCALAR { scalar %{$_[0]} }
-
-package Tie::ExtraHash;
-
-sub TIEHASH { my $p = shift; bless [{}, @_], $p }
-sub STORE { $_[0][0]{$_[1]} = $_[2] }
-sub FETCH { $_[0][0]{$_[1]} }
-sub FIRSTKEY { my $a = scalar keys %{$_[0][0]}; each %{$_[0][0]} }
-sub NEXTKEY { each %{$_[0][0]} }
-sub EXISTS { exists $_[0][0]->{$_[1]} }
-sub DELETE { delete $_[0][0]->{$_[1]} }
-sub CLEAR { %{$_[0][0]} = () }
-sub SCALAR { scalar %{$_[0][0]} }
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tie/Memoize.pm b/Master/tlpkg/tlperl/lib/Tie/Memoize.pm
deleted file mode 100644
index 2793a04590d..00000000000
--- a/Master/tlpkg/tlperl/lib/Tie/Memoize.pm
+++ /dev/null
@@ -1,128 +0,0 @@
-use strict;
-package Tie::Memoize;
-use Tie::Hash;
-our @ISA = 'Tie::ExtraHash';
-our $VERSION = '1.0';
-
-our $exists_token = \undef;
-
-sub croak {require Carp; goto &Carp::croak}
-
-# Format: [0: STORAGE, 1: EXISTS-CACHE, 2: FETCH_function;
-# 3: EXISTS_function, 4: DATA, 5: EXISTS_different ]
-
-sub FETCH {
- my ($h,$key) = ($_[0][0], $_[1]);
- my $res = $h->{$key};
- return $res if defined $res; # Shortcut if accessible
- return $res if exists $h->{$key}; # Accessible, but undef
- my $cache = $_[0][1]{$key};
- return if defined $cache and not $cache; # Known to not exist
- my @res = $_[0][2]->($key, $_[0][4]); # Autoload
- $_[0][1]{$key} = 0, return unless @res; # Cache non-existence
- delete $_[0][1]{$key}; # Clear existence cache, not needed any more
- $_[0][0]{$key} = $res[0]; # Store data and return
-}
-
-sub EXISTS {
- my ($a,$key) = (shift, shift);
- return 1 if exists $a->[0]{$key}; # Have data
- my $cache = $a->[1]{$key};
- return $cache if defined $cache; # Existence cache
- my @res = $a->[3]($key,$a->[4]);
- $_[0][1]{$key} = 0, return unless @res; # Cache non-existence
- # Now we know it exists
- return ($_[0][1]{$key} = 1) if $a->[5]; # Only existence reported
- # Now know the value
- $_[0][0]{$key} = $res[0]; # Store data
- return 1
-}
-
-sub TIEHASH {
- croak 'syntax: tie %hash, \'Tie::AutoLoad\', \&fetch_subr' if @_ < 2;
- croak 'syntax: tie %hash, \'Tie::AutoLoad\', \&fetch_subr, $data, \&exists_subr, \%data_cache, \%existence_cache' if @_ > 6;
- push @_, undef if @_ < 3; # Data
- push @_, $_[1] if @_ < 4; # exists
- push @_, {} while @_ < 6; # initial value and caches
- bless [ @_[4,5,1,3,2], $_[1] ne $_[3]], $_[0]
-}
-
-1;
-
-=head1 NAME
-
-Tie::Memoize - add data to hash when needed
-
-=head1 SYNOPSIS
-
- require Tie::Memoize;
- tie %hash, 'Tie::Memoize',
- \&fetch, # The rest is optional
- $DATA, \&exists,
- {%ini_value}, {%ini_existence};
-
-=head1 DESCRIPTION
-
-This package allows a tied hash to autoload its values on the first access,
-and to use the cached value on the following accesses.
-
-Only read-accesses (via fetching the value or C<exists>) result in calls to
-the functions; the modify-accesses are performed as on a normal hash.
-
-The required arguments during C<tie> are the hash, the package, and
-the reference to the C<FETCH>ing function. The optional arguments are
-an arbitrary scalar $data, the reference to the C<EXISTS> function,
-and initial values of the hash and of the existence cache.
-
-Both the C<FETCH>ing function and the C<EXISTS> functions have the
-same signature: the arguments are C<$key, $data>; $data is the same
-value as given as argument during tie()ing. Both functions should
-return an empty list if the value does not exist. If C<EXISTS>
-function is different from the C<FETCH>ing function, it should return
-a TRUE value on success. The C<FETCH>ing function should return the
-intended value if the key is valid.
-
-=head1 Inheriting from B<Tie::Memoize>
-
-The structure of the tied() data is an array reference with elements
-
- 0: cache of known values
- 1: cache of known existence of keys
- 2: FETCH function
- 3: EXISTS function
- 4: $data
-
-The rest is for internal usage of this package. In particular, if
-TIEHASH is overwritten, it should call SUPER::TIEHASH.
-
-=head1 EXAMPLE
-
- sub slurp {
- my ($key, $dir) = shift;
- open my $h, '<', "$dir/$key" or return;
- local $/; <$h> # slurp it all
- }
- sub exists { my ($key, $dir) = shift; return -f "$dir/$key" }
-
- tie %hash, 'Tie::Memoize', \&slurp, $directory, \&exists,
- { fake_file1 => $content1, fake_file2 => $content2 },
- { pretend_does_not_exists => 0, known_to_exist => 1 };
-
-This example treats the slightly modified contents of $directory as a
-hash. The modifications are that the keys F<fake_file1> and
-F<fake_file2> fetch values $content1 and $content2, and
-F<pretend_does_not_exists> will never be accessed. Additionally, the
-existence of F<known_to_exist> is never checked (so if it does not
-exists when its content is needed, the user of %hash may be confused).
-
-=head1 BUGS
-
-FIRSTKEY and NEXTKEY methods go through the keys which were already read,
-not all the possible keys of the hash.
-
-=head1 AUTHOR
-
-Ilya Zakharevich L<mailto:perl-module-hash-memoize@ilyaz.org>.
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Tie/RefHash.pm b/Master/tlpkg/tlperl/lib/Tie/RefHash.pm
deleted file mode 100644
index cfcdd5b5a10..00000000000
--- a/Master/tlpkg/tlperl/lib/Tie/RefHash.pm
+++ /dev/null
@@ -1,170 +0,0 @@
-package Tie::RefHash;
-
-our $VERSION = 1.32;
-
-=head1 NAME
-
-Tie::RefHash - use references as hash keys
-
-=head1 SYNOPSIS
-
- require 5.004;
- use Tie::RefHash;
- tie HASHVARIABLE, 'Tie::RefHash', LIST;
- tie HASHVARIABLE, 'Tie::RefHash::Nestable', LIST;
-
- untie HASHVARIABLE;
-
-=head1 DESCRIPTION
-
-This module provides the ability to use references as hash keys if you
-first C<tie> the hash variable to this module. Normally, only the
-keys of the tied hash itself are preserved as references; to use
-references as keys in hashes-of-hashes, use Tie::RefHash::Nestable,
-included as part of Tie::RefHash.
-
-It is implemented using the standard perl TIEHASH interface. Please
-see the C<tie> entry in perlfunc(1) and perltie(1) for more information.
-
-The Nestable version works by looking for hash references being stored
-and converting them to tied hashes so that they too can have
-references as keys. This will happen without warning whenever you
-store a reference to one of your own hashes in the tied hash.
-
-=head1 EXAMPLE
-
- use Tie::RefHash;
- tie %h, 'Tie::RefHash';
- $a = [];
- $b = {};
- $c = \*main;
- $d = \"gunk";
- $e = sub { 'foo' };
- %h = ($a => 1, $b => 2, $c => 3, $d => 4, $e => 5);
- $a->[0] = 'foo';
- $b->{foo} = 'bar';
- for (keys %h) {
- print ref($_), "\n";
- }
-
- tie %h, 'Tie::RefHash::Nestable';
- $h{$a}->{$b} = 1;
- for (keys %h, keys %{$h{$a}}) {
- print ref($_), "\n";
- }
-
-=head1 AUTHOR
-
-Gurusamy Sarathy gsar@activestate.com
-
-'Nestable' by Ed Avis ed@membled.com
-
-=head1 VERSION
-
-Version 1.32
-
-=head1 SEE ALSO
-
-perl(1), perlfunc(1), perltie(1)
-
-=cut
-
-use Tie::Hash;
-use vars '@ISA';
-@ISA = qw(Tie::Hash);
-use strict;
-
-require overload; # to support objects with overloaded ""
-
-sub TIEHASH {
- my $c = shift;
- my $s = [];
- bless $s, $c;
- while (@_) {
- $s->STORE(shift, shift);
- }
- return $s;
-}
-
-sub FETCH {
- my($s, $k) = @_;
- if (ref $k) {
- my $kstr = overload::StrVal($k);
- if (defined $s->[0]{$kstr}) {
- $s->[0]{$kstr}[1];
- }
- else {
- undef;
- }
- }
- else {
- $s->[1]{$k};
- }
-}
-
-sub STORE {
- my($s, $k, $v) = @_;
- if (ref $k) {
- $s->[0]{overload::StrVal($k)} = [$k, $v];
- }
- else {
- $s->[1]{$k} = $v;
- }
- $v;
-}
-
-sub DELETE {
- my($s, $k) = @_;
- (ref $k)
- ? (delete($s->[0]{overload::StrVal($k)}) || [])->[1]
- : delete($s->[1]{$k});
-}
-
-sub EXISTS {
- my($s, $k) = @_;
- (ref $k) ? exists($s->[0]{overload::StrVal($k)}) : exists($s->[1]{$k});
-}
-
-sub FIRSTKEY {
- my $s = shift;
- keys %{$s->[0]}; # reset iterator
- keys %{$s->[1]}; # reset iterator
- $s->[2] = 0; # flag for iteration, see NEXTKEY
- $s->NEXTKEY;
-}
-
-sub NEXTKEY {
- my $s = shift;
- my ($k, $v);
- if (!$s->[2]) {
- if (($k, $v) = each %{$s->[0]}) {
- return $v->[0];
- }
- else {
- $s->[2] = 1;
- }
- }
- return each %{$s->[1]};
-}
-
-sub CLEAR {
- my $s = shift;
- $s->[2] = 0;
- %{$s->[0]} = ();
- %{$s->[1]} = ();
-}
-
-package Tie::RefHash::Nestable;
-use vars '@ISA';
-@ISA = 'Tie::RefHash';
-
-sub STORE {
- my($s, $k, $v) = @_;
- if (ref($v) eq 'HASH' and not tied %$v) {
- my @elems = %$v;
- tie %$v, ref($s), @elems;
- }
- $s->SUPER::STORE($k, $v);
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tie/Scalar.pm b/Master/tlpkg/tlperl/lib/Tie/Scalar.pm
deleted file mode 100644
index c23c12187a8..00000000000
--- a/Master/tlpkg/tlperl/lib/Tie/Scalar.pm
+++ /dev/null
@@ -1,140 +0,0 @@
-package Tie::Scalar;
-
-our $VERSION = '1.00';
-
-=head1 NAME
-
-Tie::Scalar, Tie::StdScalar - base class definitions for tied scalars
-
-=head1 SYNOPSIS
-
- 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';
-
-=head1 DESCRIPTION
-
-This module provides some skeletal methods for scalar-tying classes. See
-L<perltie> for a list of the functions required in tying a scalar to a
-package. The basic B<Tie::Scalar> package provides a C<new> method, as well
-as methods C<TIESCALAR>, C<FETCH> and C<STORE>. The B<Tie::StdScalar>
-package provides all the methods specified in L<perltie>. It inherits from
-B<Tie::Scalar> and causes scalars tied to it to behave exactly like the
-built-in scalars, allowing for selective overloading of methods. The C<new>
-method is provided as a means of grandfathering, for classes that forget to
-provide their own C<TIESCALAR> method.
-
-For developers wishing to write their own tied-scalar classes, the methods
-are summarized below. The L<perltie> section not only documents these, but
-has sample code as well:
-
-=over 4
-
-=item TIESCALAR classname, LIST
-
-The method invoked by the command C<tie $scalar, classname>. Associates a new
-scalar instance with the specified class. C<LIST> would represent additional
-arguments (along the lines of L<AnyDBM_File> and compatriots) needed to
-complete the association.
-
-=item FETCH this
-
-Retrieve the value of the tied scalar referenced by I<this>.
-
-=item STORE this, value
-
-Store data I<value> in the tied scalar referenced by I<this>.
-
-=item DESTROY this
-
-Free the storage associated with the tied scalar referenced by I<this>.
-This is rarely needed, as Perl manages its memory quite well. But the
-option exists, should a class wish to perform specific actions upon the
-destruction of an instance.
-
-=back
-
-=head1 MORE INFORMATION
-
-The L<perltie> section uses a good example of tying scalars by associating
-process IDs with priority.
-
-=cut
-
-use Carp;
-use warnings::register;
-
-sub new {
- my $pkg = shift;
- $pkg->TIESCALAR(@_);
-}
-
-# "Grandfather" the new, a la Tie::Hash
-
-sub TIESCALAR {
- my $pkg = shift;
- if ($pkg->can('new') and $pkg ne __PACKAGE__) {
- warnings::warnif("WARNING: calling ${pkg}->new since ${pkg}->TIESCALAR is missing");
- $pkg->new(@_);
- }
- else {
- croak "$pkg doesn't define a TIESCALAR method";
- }
-}
-
-sub FETCH {
- my $pkg = ref $_[0];
- croak "$pkg doesn't define a FETCH method";
-}
-
-sub STORE {
- my $pkg = ref $_[0];
- croak "$pkg doesn't define a STORE method";
-}
-
-#
-# The Tie::StdScalar package provides scalars that behave exactly like
-# Perl's built-in scalars. Good base to inherit from, if you're only going to
-# tweak a small bit.
-#
-package Tie::StdScalar;
-@ISA = (Tie::Scalar);
-
-sub TIESCALAR {
- my $class = shift;
- my $instance = shift || undef;
- return bless \$instance => $class;
-}
-
-sub FETCH {
- return ${$_[0]};
-}
-
-sub STORE {
- ${$_[0]} = $_[1];
-}
-
-sub DESTROY {
- undef ${$_[0]};
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tie/SubstrHash.pm b/Master/tlpkg/tlperl/lib/Tie/SubstrHash.pm
deleted file mode 100644
index 476dd686787..00000000000
--- a/Master/tlpkg/tlperl/lib/Tie/SubstrHash.pm
+++ /dev/null
@@ -1,215 +0,0 @@
-package Tie::SubstrHash;
-
-our $VERSION = '1.00';
-
-=head1 NAME
-
-Tie::SubstrHash - Fixed-table-size, fixed-key-length hashing
-
-=head1 SYNOPSIS
-
- require Tie::SubstrHash;
-
- tie %myhash, 'Tie::SubstrHash', $key_len, $value_len, $table_size;
-
-=head1 DESCRIPTION
-
-The B<Tie::SubstrHash> package provides a hash-table-like interface to
-an array of determinate size, with constant key size and record size.
-
-Upon tying a new hash to this package, the developer must specify the
-size of the keys that will be used, the size of the value fields that the
-keys will index, and the size of the overall table (in terms of key-value
-pairs, not size in hard memory). I<These values will not change for the
-duration of the tied hash>. The newly-allocated hash table may now have
-data stored and retrieved. Efforts to store more than C<$table_size>
-elements will result in a fatal error, as will efforts to store a value
-not exactly C<$value_len> characters in length, or reference through a
-key not exactly C<$key_len> characters in length. While these constraints
-may seem excessive, the result is a hash table using much less internal
-memory than an equivalent freely-allocated hash table.
-
-=head1 CAVEATS
-
-Because the current implementation uses the table and key sizes for the
-hashing algorithm, there is no means by which to dynamically change the
-value of any of the initialization parameters.
-
-The hash does not support exists().
-
-=cut
-
-use Carp;
-
-sub TIEHASH {
- my $pack = shift;
- my ($klen, $vlen, $tsize) = @_;
- my $rlen = 1 + $klen + $vlen;
- $tsize = [$tsize,
- findgteprime($tsize * 1.1)]; # Allow 10% empty.
- local $self = bless ["\0", $klen, $vlen, $tsize, $rlen, 0, -1];
- $$self[0] x= $rlen * $tsize->[1];
- $self;
-}
-
-sub CLEAR {
- local($self) = @_;
- $$self[0] = "\0" x ($$self[4] * $$self[3]->[1]);
- $$self[5] = 0;
- $$self[6] = -1;
-}
-
-sub FETCH {
- local($self,$key) = @_;
- local($klen, $vlen, $tsize, $rlen) = @$self[1..4];
- &hashkey;
- for (;;) {
- $offset = $hash * $rlen;
- $record = substr($$self[0], $offset, $rlen);
- if (ord($record) == 0) {
- return undef;
- }
- elsif (ord($record) == 1) {
- }
- elsif (substr($record, 1, $klen) eq $key) {
- return substr($record, 1+$klen, $vlen);
- }
- &rehash;
- }
-}
-
-sub STORE {
- local($self,$key,$val) = @_;
- local($klen, $vlen, $tsize, $rlen) = @$self[1..4];
- croak("Table is full ($tsize->[0] elements)") if $$self[5] > $tsize->[0];
- croak(qq/Value "$val" is not $vlen characters long/)
- if length($val) != $vlen;
- my $writeoffset;
-
- &hashkey;
- for (;;) {
- $offset = $hash * $rlen;
- $record = substr($$self[0], $offset, $rlen);
- if (ord($record) == 0) {
- $record = "\2". $key . $val;
- die "panic" unless length($record) == $rlen;
- $writeoffset = $offset unless defined $writeoffset;
- substr($$self[0], $writeoffset, $rlen) = $record;
- ++$$self[5];
- return;
- }
- elsif (ord($record) == 1) {
- $writeoffset = $offset unless defined $writeoffset;
- }
- elsif (substr($record, 1, $klen) eq $key) {
- $record = "\2". $key . $val;
- die "panic" unless length($record) == $rlen;
- substr($$self[0], $offset, $rlen) = $record;
- return;
- }
- &rehash;
- }
-}
-
-sub DELETE {
- local($self,$key) = @_;
- local($klen, $vlen, $tsize, $rlen) = @$self[1..4];
- &hashkey;
- for (;;) {
- $offset = $hash * $rlen;
- $record = substr($$self[0], $offset, $rlen);
- if (ord($record) == 0) {
- return undef;
- }
- elsif (ord($record) == 1) {
- }
- elsif (substr($record, 1, $klen) eq $key) {
- substr($$self[0], $offset, 1) = "\1";
- return substr($record, 1+$klen, $vlen);
- --$$self[5];
- }
- &rehash;
- }
-}
-
-sub FIRSTKEY {
- local($self) = @_;
- $$self[6] = -1;
- &NEXTKEY;
-}
-
-sub NEXTKEY {
- local($self) = @_;
- local($klen, $vlen, $tsize, $rlen, $entries, $iterix) = @$self[1..6];
- for (++$iterix; $iterix < $tsize->[1]; ++$iterix) {
- next unless substr($$self[0], $iterix * $rlen, 1) eq "\2";
- $$self[6] = $iterix;
- return substr($$self[0], $iterix * $rlen + 1, $klen);
- }
- $$self[6] = -1;
- undef;
-}
-
-sub EXISTS {
- croak "Tie::SubstrHash does not support exists()";
-}
-
-sub hashkey {
- croak(qq/Key "$key" is not $klen characters long/)
- if length($key) != $klen;
- $hash = 2;
- for (unpack('C*', $key)) {
- $hash = $hash * 33 + $_;
- &_hashwrap if $hash >= 1e13;
- }
- &_hashwrap if $hash >= $tsize->[1];
- $hash = 1 unless $hash;
- $hashbase = $hash;
-}
-
-sub _hashwrap {
- $hash -= int($hash / $tsize->[1]) * $tsize->[1];
-}
-
-sub rehash {
- $hash += $hashbase;
- $hash -= $tsize->[1] if $hash >= $tsize->[1];
-}
-
-# using POSIX::ceil() would be too heavy, and not all platforms have it.
-sub ceil {
- my $num = shift;
- $num = int($num + 1) unless $num == int $num;
- return $num;
-}
-
-# See:
-#
-# http://www-groups.dcs.st-andrews.ac.uk/~history/HistTopics/Prime_numbers.html
-#
-
-sub findgteprime { # find the smallest prime integer greater than or equal to
- use integer;
-
- my $num = ceil(shift);
- return 2 if $num <= 2;
-
- $num++ unless $num % 2;
- my $i;
- my $sqrtnum = int sqrt $num;
- my $sqrtnumsquared = $sqrtnum * $sqrtnum;
-
- NUM:
- for (;; $num += 2) {
- if ($sqrtnumsquared < $num) {
- $sqrtnum++;
- $sqrtnumsquared = $sqrtnum * $sqrtnum;
- }
- for ($i = 3; $i <= $sqrtnum; $i += 2) {
- next NUM unless $num % $i;
- }
- return $num;
- }
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tie/Watch.pm b/Master/tlpkg/tlperl/lib/Tie/Watch.pm
deleted file mode 100644
index 48f46acd2b0..00000000000
--- a/Master/tlpkg/tlperl/lib/Tie/Watch.pm
+++ /dev/null
@@ -1,560 +0,0 @@
-$Tie::Watch::VERSION = '1.2';
-
-package Tie::Watch;
-
-=head1 NAME
-
- Tie::Watch - place watchpoints on Perl variables.
-
-=head1 SYNOPSIS
-
- use Tie::Watch;
-
- $watch = Tie::Watch->new(
- -variable => \$frog,
- -debug => 1,
- -shadow => 0,
- -fetch => [\&fetch, 'arg1', 'arg2', ..., 'argn'],
- -store => \&store,
- -destroy => sub {print "Final value=$frog.\n"},
- }
- %vinfo = $watch->Info;
- $args = $watch->Args(-fetch);
- $val = $watch->Fetch;
- print "val=", $watch->Say($val), ".\n";
- $watch->Store('Hello');
- $watch->Unwatch;
-
-=head1 DESCRIPTION
-
-This class module binds one or more subroutines of your devising to a
-Perl variable. All variables can have B<FETCH>, B<STORE> and
-B<DESTROY> callbacks. Additionally, arrays can define B<CLEAR>,
-B<DELETE>, B<EXISTS>, B<EXTEND>, B<FETCHSIZE>, B<POP>, B<PUSH>,
-B<SHIFT>, B<SPLICE>, B<STORESIZE> and B<UNSHIFT> callbacks, and hashes
-can define B<CLEAR>, B<DELETE>, B<EXISTS>, B<FIRSTKEY> and B<NEXTKEY>
-callbacks. If these term are unfamiliar to you, I I<really> suggest
-you read L<perltie>.
-
-With Tie::Watch you can:
-
- . alter a variable's value
- . prevent a variable's value from being changed
- . invoke a Perl/Tk callback when a variable changes
- . trace references to a variable
-
-Callback format is patterned after the Perl/Tk scheme: supply either a
-code reference, or, supply an array reference and pass the callback
-code reference in the first element of the array, followed by callback
-arguments. (See examples in the Synopsis, above.)
-
-Tie::Watch provides default callbacks for any that you fail to
-specify. Other than negatively impacting performance, they perform
-the standard action that you'd expect, so the variable behaves
-"normally". Once you override a default callback, perhaps to insert
-debug code like print statements, your callback normally finishes by
-calling the underlying (overridden) method. But you don't have to!
-
-To map a tied method name to a default callback name simply lowercase
-the tied method name and uppercase its first character. So FETCH
-becomes Fetch, NEXTKEY becomes Nextkey, etcetera.
-
-Here are two callbacks for a scalar. The B<FETCH> (read) callback does
-nothing other than illustrate the fact that it returns the value to
-assign the variable. The B<STORE> (write) callback uppercases the
-variable and returns it. In all cases the callback I<must> return the
-correct read or write value - typically, it does this by invoking the
-underlying method.
-
- my $fetch_scalar = sub {
- my($self) = @_;
- $self->Fetch;
- };
-
- my $store_scalar = sub {
- my($self, $new_val) = @_;
- $self->Store(uc $new_val);
- };
-
-Here are B<FETCH> and B<STORE> callbacks for either an array or hash.
-They do essentially the same thing as the scalar callbacks, but
-provide a little more information.
-
- my $fetch = sub {
- my($self, $key) = @_;
- my $val = $self->Fetch($key);
- print "In fetch callback, key=$key, val=", $self->Say($val);
- my $args = $self->Args(-fetch);
- print ", args=('", join("', '", @$args), "')" if $args;
- print ".\n";
- $val;
- };
-
- my $store = sub {
- my($self, $key, $new_val) = @_;
- my $val = $self->Fetch($key);
- $new_val = uc $new_val;
- $self->Store($key, $new_val);
- print "In store callback, key=$key, val=", $self->Say($val),
- ", new_val=", $self->Say($new_val);
- my $args = $self->Args(-store);
- print ", args=('", join("', '", @$args), "')" if $args;
- print ".\n";
- $new_val;
- };
-
-In all cases, the first parameter is a reference to the Watch object,
-used to invoke the following class methods.
-
-=head1 METHODS
-
-=over 4
-
-=item $watch = Tie::Watch->new(-options => values);
-
-The watchpoint constructor method that accepts option/value pairs to
-create and configure the Watch object. The only required option is
-B<-variable>.
-
-B<-variable> is a I<reference> to a scalar, array or hash variable.
-
-B<-debug> (default 0) is 1 to activate debug print statements internal
-to Tie::Watch.
-
-B<-shadow> (default 1) is 0 to disable array and hash shadowing. To
-prevent infinite recursion Tie::Watch maintains parallel variables for
-arrays and hashes. When the watchpoint is created the parallel shadow
-variable is initialized with the watched variable's contents, and when
-the watchpoint is deleted the shadow variable is copied to the original
-variable. Thus, changes made during the watch process are not lost.
-Shadowing is on my default. If you disable shadowing any changes made
-to an array or hash are lost when the watchpoint is deleted.
-
-Specify any of the following relevant callback parameters, in the
-format described above: B<-fetch>, B<-store>, B<-destroy>.
-Additionally for arrays: B<-clear>, B<-extend>, B<-fetchsize>,
-B<-pop>, B<-push>, B<-shift>, B<-splice>, B<-storesize> and
-B<-unshift>. Additionally for hashes: B<-clear>, B<-delete>,
-B<-exists>, B<-firstkey> and B<-nextkey>.
-
-=item $args = $watch->Args(-fetch);
-
-Returns a reference to a list of arguments for the specified callback,
-or undefined if none.
-
-=item $watch->Fetch(); $watch->Fetch($key);
-
-Returns a variable's current value. $key is required for an array or
-hash.
-
-=item %vinfo = $watch->Info();
-
-Returns a hash detailing the internals of the Watch object, with these
-keys:
-
- %vinfo = {
- -variable => SCALAR(0x200737f8)
- -debug => '0'
- -shadow => '1'
- -value => 'HELLO SCALAR'
- -destroy => ARRAY(0x200f86cc)
- -fetch => ARRAY(0x200f8558)
- -store => ARRAY(0x200f85a0)
- -legible => above data formatted as a list of string, for printing
- }
-
-For array and hash Watch objects, the B<-value> key is replaced with a
-B<-ptr> key which is a reference to the parallel array or hash.
-Additionally, for an array or hash, there are key/value pairs for
-all the variable specific callbacks.
-
-=item $watch->Say($val);
-
-Used mainly for debugging, it returns $val in quotes if required, or
-the string "undefined" for undefined values.
-
-=item $watch->Store($new_val); $watch->Store($key, $new_val);
-
-Store a variable's new value. $key is required for an array or hash.
-
-=item $watch->Unwatch();
-
-Stop watching the variable.
-
-=back
-
-=head1 EFFICIENCY CONSIDERATIONS
-
-If you can live using the class methods provided, please do so. You
-can meddle with the object hash directly and improved watch
-performance, at the risk of your code breaking in the future.
-
-=head1 AUTHOR
-
-Stephen O. Lidie
-
-=head1 HISTORY
-
- lusol@Lehigh.EDU, LUCC, 96/05/30
- . Original version 0.92 release, based on the Trace module from Hans Mulder,
- and ideas from Tim Bunce.
-
- lusol@Lehigh.EDU, LUCC, 96/12/25
- . Version 0.96, release two inner references detected by Perl 5.004.
-
- lusol@Lehigh.EDU, LUCC, 97/01/11
- . Version 0.97, fix Makefile.PL and MANIFEST (thanks Andreas Koenig).
- Make sure test.pl doesn't fail if Tk isn't installed.
-
- Stephen.O.Lidie@Lehigh.EDU, Lehigh University Computing Center, 97/10/03
- . Version 0.98, implement -shadow option for arrays and hashes.
-
- Stephen.O.Lidie@Lehigh.EDU, Lehigh University Computing Center, 98/02/11
- . Version 0.99, finally, with Perl 5.004_57, we can completely watch arrays.
- With tied array support this module is essentially complete, so its been
- optimized for speed at the expense of clarity - sorry about that. The
- Delete() method has been renamed Unwatch() because it conflicts with the
- builtin delete().
-
- Stephen.O.Lidie@Lehigh.EDU, Lehigh University Computing Center, 99/04/04
- . Version 1.0, for Perl 5.005_03, update Makefile.PL for ActiveState, and
- add two examples (one for Perl/Tk).
-
- sol0@lehigh.edu, Lehigh University Computing Center, 2003/06/07
- . Version 1.1, for Perl 5.8, can trace a reference now, patch from Slaven
- Rezic.
-
- sol0@lehigh.edu, Lehigh University Computing Center, 2005/05/17
- . Version 1.2, for Perl 5.8, per Rob Seegel's suggestion, support array
- DELETE and EXISTS.
-
-=head1 COPYRIGHT
-
-Copyright (C) 1996 - 2005 Stephen O. Lidie. All rights reserved.
-
-This program is free software; you can redistribute it and/or modify it under
-the same terms as Perl itself.
-
-=cut
-
-use 5.004_57;;
-use Carp;
-use strict;
-use subs qw/normalize_callbacks/;
-use vars qw/@array_callbacks @hash_callbacks @scalar_callbacks/;
-
-@array_callbacks = qw/-clear -delete -destroy -exists -extend -fetch
- -fetchsize -pop -push -shift -splice -store
- -storesize -unshift/;
-@hash_callbacks = qw/-clear -delete -destroy -exists -fetch -firstkey
- -nextkey -store/;
-@scalar_callbacks = qw/-destroy -fetch -store/;
-
-sub new {
-
- # Watch constructor. The *real* constructor is Tie::Watch->base_watch(),
- # invoked by methods in other Watch packages, depending upon the variable's
- # type. Here we supply defaulted parameter values and then verify them,
- # normalize all callbacks and bind the variable to the appropriate package.
-
- my($class, %args) = @_;
- my $version = $Tie::Watch::VERSION;
- my (%arg_defaults) = (-debug => 0, -shadow => 1);
- my $variable = $args{-variable};
- croak "Tie::Watch::new(): -variable is required." if not defined $variable;
-
- my($type, $watch_obj) = (ref $variable, undef);
- if ($type =~ /(SCALAR|REF)/) {
- @arg_defaults{@scalar_callbacks} = (
- [\&Tie::Watch::Scalar::Destroy], [\&Tie::Watch::Scalar::Fetch],
- [\&Tie::Watch::Scalar::Store]);
- } elsif ($type =~ /ARRAY/) {
- @arg_defaults{@array_callbacks} = (
- [\&Tie::Watch::Array::Clear], [\&Tie::Watch::Array::Delete],
- [\&Tie::Watch::Array::Destroy], [\&Tie::Watch::Array::Exists],
- [\&Tie::Watch::Array::Extend], [\&Tie::Watch::Array::Fetch],
- [\&Tie::Watch::Array::Fetchsize], [\&Tie::Watch::Array::Pop],
- [\&Tie::Watch::Array::Push], [\&Tie::Watch::Array::Shift],
- [\&Tie::Watch::Array::Splice], [\&Tie::Watch::Array::Store],
- [\&Tie::Watch::Array::Storesize], [\&Tie::Watch::Array::Unshift]);
- } elsif ($type =~ /HASH/) {
- @arg_defaults{@hash_callbacks} = (
- [\&Tie::Watch::Hash::Clear], [\&Tie::Watch::Hash::Delete],
- [\&Tie::Watch::Hash::Destroy], [\&Tie::Watch::Hash::Exists],
- [\&Tie::Watch::Hash::Fetch], [\&Tie::Watch::Hash::Firstkey],
- [\&Tie::Watch::Hash::Nextkey], [\&Tie::Watch::Hash::Store]);
- } else {
- croak "Tie::Watch::new() - not a variable reference.";
- }
- my(@margs, %ahsh, $args, @args);
- @margs = grep ! defined $args{$_}, keys %arg_defaults;
- %ahsh = %args; # argument hash
- @ahsh{@margs} = @arg_defaults{@margs}; # fill in missing values
- normalize_callbacks \%ahsh;
-
- if ($type =~ /(SCALAR|REF)/) {
- $watch_obj = tie $$variable, 'Tie::Watch::Scalar', %ahsh;
- } elsif ($type =~ /ARRAY/) {
- $watch_obj = tie @$variable, 'Tie::Watch::Array', %ahsh;
- } elsif ($type =~ /HASH/) {
- $watch_obj = tie %$variable, 'Tie::Watch::Hash', %ahsh;
- }
- $watch_obj;
-
-} # end new, Watch constructor
-
-sub Args {
-
- # Return a reference to a list of callback arguments, or undef if none.
- #
- # $_[0] = self
- # $_[1] = callback type
-
- defined $_[0]->{$_[1]}->[1] ? [@{$_[0]->{$_[1]}}[1 .. $#{$_[0]->{$_[1]}}]]
- : undef;
-
-} # end Args
-
-sub Info {
-
- # Info() method subclassed by other Watch modules.
- #
- # $_[0] = self
- # @_[1 .. $#_] = optional callback types
-
- my(%vinfo, @results);
- my(@info) = (qw/-variable -debug -shadow/);
- push @info, @_[1 .. $#_] if scalar @_ >= 2;
- foreach my $type (@info) {
- push @results, sprintf('%-10s: ', substr $type, 1) .
- $_[0]->Say($_[0]->{$type});
- $vinfo{$type} = $_[0]->{$type};
- }
- $vinfo{-legible} = [@results];
- %vinfo;
-
-} # end Info
-
-sub Say {
-
- # For debugging, mainly.
- #
- # $_[0] = self
- # $_[1] = value
-
- defined $_[1] ? (ref($_[1]) ne '' ? $_[1] : "'$_[1]'") : "undefined";
-
-} # end Say
-
-sub Unwatch {
-
- # Stop watching a variable by releasing the last reference and untieing it.
- # Update the original variable with its shadow, if appropriate.
- #
- # $_[0] = self
-
- my $variable = $_[0]->{-variable};
- my $type = ref $variable;
- my $copy = $_[0]->{-ptr} if $type !~ /(SCALAR|REF)/;
- my $shadow = $_[0]->{-shadow};
- undef $_[0];
- if ($type =~ /(SCALAR|REF)/) {
- untie $$variable;
- } elsif ($type =~ /ARRAY/) {
- untie @$variable;
- @$variable = @$copy if $shadow;
- } elsif ($type =~ /HASH/) {
- untie %$variable;
- %$variable = %$copy if $shadow;
- } else {
- croak "Tie::Watch::Delete() - not a variable reference.";
- }
-
-} # end Unwatch
-
-# Watch private methods.
-
-sub base_watch {
-
- # Watch base class constructor invoked by other Watch modules.
-
- my($class, %args) = @_;
- my $watch_obj = {%args};
- $watch_obj;
-
-} # end base_watch
-
-sub callback {
-
- # Execute a Watch callback, either the default or user specified.
- # Note that the arguments are those supplied by the tied method,
- # not those (if any) specified by the user when the watch object
- # was instantiated. This is for performance reasons, and why the
- # Args() method exists.
- #
- # $_[0] = self
- # $_[1] = callback type
- # $_[2] through $#_ = tied arguments
-
- &{$_[0]->{$_[1]}->[0]} ($_[0], @_[2 .. $#_]);
-
-} # end callback
-
-sub normalize_callbacks {
-
- # Ensure all callbacks are normalized in [\&code, @args] format.
-
- my($args_ref) = @_;
- my($cb, $ref);
- foreach my $arg (keys %$args_ref) {
- next if $arg =~ /variable|debug|shadow/;
- $cb = $args_ref->{$arg};
- $ref = ref $cb;
- if ($ref =~ /CODE/) {
- $args_ref->{$arg} = [$cb];
- } elsif ($ref !~ /ARRAY/) {
- croak "Tie::Watch: malformed callback $arg=$cb.";
- }
- }
-
-} # end normalize_callbacks
-
-###############################################################################
-
-package Tie::Watch::Scalar;
-
-use Carp;
-@Tie::Watch::Scalar::ISA = qw/Tie::Watch/;
-
-sub TIESCALAR {
-
- my($class, %args) = @_;
- my $variable = $args{-variable};
- my $watch_obj = Tie::Watch->base_watch(%args);
- $watch_obj->{-value} = $$variable;
- print "WatchScalar new: $variable created, \@_=", join(',', @_), "!\n"
- if $watch_obj->{-debug};
- bless $watch_obj, $class;
-
-} # end TIESCALAR
-
-sub Info {$_[0]->SUPER::Info('-value', @Tie::Watch::scalar_callbacks)}
-
-# Default scalar callbacks.
-
-sub Destroy {undef %{$_[0]}}
-sub Fetch {$_[0]->{-value}}
-sub Store {$_[0]->{-value} = $_[1]}
-
-# Scalar access methods.
-
-sub DESTROY {$_[0]->callback('-destroy')}
-sub FETCH {$_[0]->callback('-fetch')}
-sub STORE {$_[0]->callback('-store', $_[1])}
-
-###############################################################################
-
-package Tie::Watch::Array;
-
-use Carp;
-@Tie::Watch::Array::ISA = qw/Tie::Watch/;
-
-sub TIEARRAY {
-
- my($class, %args) = @_;
- my($variable, $shadow) = @args{-variable, -shadow};
- my @copy = @$variable if $shadow; # make a private copy of user's array
- $args{-ptr} = $shadow ? \@copy : [];
- my $watch_obj = Tie::Watch->base_watch(%args);
- print "WatchArray new: $variable created, \@_=", join(',', @_), "!\n"
- if $watch_obj->{-debug};
- bless $watch_obj, $class;
-
-} # end TIEARRAY
-
-sub Info {$_[0]->SUPER::Info('-ptr', @Tie::Watch::array_callbacks)}
-
-# Default array callbacks.
-
-sub Clear {$_[0]->{-ptr} = ()}
-sub Delete {delete $_[0]->{-ptr}->[$_[1]]}
-sub Destroy {undef %{$_[0]}}
-sub Exists {exists $_[0]->{-ptr}->[$_[1]]}
-sub Extend {}
-sub Fetch {$_[0]->{-ptr}->[$_[1]]}
-sub Fetchsize {scalar @{$_[0]->{-ptr}}}
-sub Pop {pop @{$_[0]->{-ptr}}}
-sub Push {push @{$_[0]->{-ptr}}, @_[1 .. $#_]}
-sub Shift {shift @{$_[0]->{-ptr}}}
-sub Splice {
- my $n = scalar @_; # splice() is wierd!
- return splice @{$_[0]->{-ptr}}, $_[1] if $n == 2;
- return splice @{$_[0]->{-ptr}}, $_[1], $_[2] if $n == 3;
- return splice @{$_[0]->{-ptr}}, $_[1], $_[2], @_[3 .. $#_] if $n >= 4;
-}
-sub Store {$_[0]->{-ptr}->[$_[1]] = $_[2]}
-sub Storesize {$#{$_[0]->{-ptr}} = $_[1] - 1}
-sub Unshift {unshift @{$_[0]->{-ptr}}, @_[1 .. $#_]}
-
-# Array access methods.
-
-sub CLEAR {$_[0]->callback('-clear')}
-sub DELETE {$_[0]->callback('-delete', $_[1])}
-sub DESTROY {$_[0]->callback('-destroy')}
-sub EXISTS {$_[0]->callback('-exists', $_[1])}
-sub EXTEND {$_[0]->callback('-extend', $_[1])}
-sub FETCH {$_[0]->callback('-fetch', $_[1])}
-sub FETCHSIZE {$_[0]->callback('-fetchsize')}
-sub POP {$_[0]->callback('-pop')}
-sub PUSH {$_[0]->callback('-push', @_[1 .. $#_])}
-sub SHIFT {$_[0]->callback('-shift')}
-sub SPLICE {$_[0]->callback('-splice', @_[1 .. $#_])}
-sub STORE {$_[0]->callback('-store', $_[1], $_[2])}
-sub STORESIZE {$_[0]->callback('-storesize', $_[1])}
-sub UNSHIFT {$_[0]->callback('-unshift', @_[1 .. $#_])}
-
-###############################################################################
-
-package Tie::Watch::Hash;
-
-use Carp;
-@Tie::Watch::Hash::ISA = qw/Tie::Watch/;
-
-sub TIEHASH {
-
- my($class, %args) = @_;
- my($variable, $shadow) = @args{-variable, -shadow};
- my %copy = %$variable if $shadow; # make a private copy of user's hash
- $args{-ptr} = $shadow ? \%copy : {};
- my $watch_obj = Tie::Watch->base_watch(%args);
- print "WatchHash new: $variable created, \@_=", join(',', @_), "!\n"
- if $watch_obj->{-debug};
- bless $watch_obj, $class;
-
-} # end TIEHASH
-
-sub Info {$_[0]->SUPER::Info('-ptr', @Tie::Watch::hash_callbacks)}
-
-# Default hash callbacks.
-
-sub Clear {$_[0]->{-ptr} = ()}
-sub Delete {delete $_[0]->{-ptr}->{$_[1]}}
-sub Destroy {undef %{$_[0]}}
-sub Exists {exists $_[0]->{-ptr}->{$_[1]}}
-sub Fetch {$_[0]->{-ptr}->{$_[1]}}
-sub Firstkey {my $c = keys %{$_[0]->{-ptr}}; each %{$_[0]->{-ptr}}}
-sub Nextkey {each %{$_[0]->{-ptr}}}
-sub Store {$_[0]->{-ptr}->{$_[1]} = $_[2]}
-
-# Hash access methods.
-
-sub CLEAR {$_[0]->callback('-clear')}
-sub DELETE {$_[0]->callback('-delete', $_[1])}
-sub DESTROY {$_[0]->callback('-destroy')}
-sub EXISTS {$_[0]->callback('-exists', $_[1])}
-sub FETCH {$_[0]->callback('-fetch', $_[1])}
-sub FIRSTKEY {$_[0]->callback('-firstkey')}
-sub NEXTKEY {$_[0]->callback('-nextkey')}
-sub STORE {$_[0]->callback('-store', $_[1], $_[2])}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Time/HiRes.pm b/Master/tlpkg/tlperl/lib/Time/HiRes.pm
deleted file mode 100644
index 964e4385dfc..00000000000
--- a/Master/tlpkg/tlperl/lib/Time/HiRes.pm
+++ /dev/null
@@ -1,500 +0,0 @@
-package Time::HiRes;
-
-use strict;
-use vars qw($VERSION $XS_VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD);
-
-require Exporter;
-require DynaLoader;
-
-@ISA = qw(Exporter DynaLoader);
-
-@EXPORT = qw( );
-@EXPORT_OK = qw (usleep sleep ualarm alarm gettimeofday time tv_interval
- getitimer setitimer nanosleep clock_gettime clock_getres
- clock clock_nanosleep
- CLOCK_HIGHRES CLOCK_MONOTONIC CLOCK_PROCESS_CPUTIME_ID
- CLOCK_REALTIME CLOCK_SOFTTIME CLOCK_THREAD_CPUTIME_ID
- CLOCK_TIMEOFDAY CLOCKS_PER_SEC
- ITIMER_REAL ITIMER_VIRTUAL ITIMER_PROF ITIMER_REALPROF
- TIMER_ABSTIME
- d_usleep d_ualarm d_gettimeofday d_getitimer d_setitimer
- d_nanosleep d_clock_gettime d_clock_getres
- d_clock d_clock_nanosleep);
-
-$VERSION = '1.86';
-$XS_VERSION = $VERSION;
-$VERSION = eval $VERSION;
-
-sub AUTOLOAD {
- my $constname;
- ($constname = $AUTOLOAD) =~ s/.*:://;
- # print "AUTOLOAD: constname = $constname ($AUTOLOAD)\n";
- die "&Time::HiRes::constant not defined" if $constname eq 'constant';
- my ($error, $val) = constant($constname);
- # print "AUTOLOAD: error = $error, val = $val\n";
- if ($error) {
- my (undef,$file,$line) = caller;
- die "$error at $file line $line.\n";
- }
- {
- no strict 'refs';
- *$AUTOLOAD = sub { $val };
- }
- goto &$AUTOLOAD;
-}
-
-sub import {
- my $this = shift;
- for my $i (@_) {
- if (($i eq 'clock_getres' && !&d_clock_getres) ||
- ($i eq 'clock_gettime' && !&d_clock_gettime) ||
- ($i eq 'clock_nanosleep' && !&d_clock_nanosleep) ||
- ($i eq 'clock' && !&d_clock) ||
- ($i eq 'nanosleep' && !&d_nanosleep) ||
- ($i eq 'usleep' && !&d_usleep) ||
- ($i eq 'ualarm' && !&d_ualarm)) {
- require Carp;
- Carp::croak("Time::HiRes::$i(): unimplemented in this platform");
- }
- }
- Time::HiRes->export_to_level(1, $this, @_);
-}
-
-bootstrap Time::HiRes;
-
-# Preloaded methods go here.
-
-sub tv_interval {
- # probably could have been done in C
- my ($a, $b) = @_;
- $b = [gettimeofday()] unless defined($b);
- (${$b}[0] - ${$a}[0]) + ((${$b}[1] - ${$a}[1]) / 1_000_000);
-}
-
-# Autoload methods go after =cut, and are processed by the autosplit program.
-
-1;
-__END__
-
-=head1 NAME
-
-Time::HiRes - High resolution alarm, sleep, gettimeofday, interval timers
-
-=head1 SYNOPSIS
-
- use Time::HiRes qw( usleep ualarm gettimeofday tv_interval nanosleep
- clock_gettime clock_getres clock_nanosleep clock );
-
- usleep ($microseconds);
- nanosleep ($nanoseconds);
-
- ualarm ($microseconds);
- ualarm ($microseconds, $interval_microseconds);
-
- $t0 = [gettimeofday];
- ($seconds, $microseconds) = gettimeofday;
-
- $elapsed = tv_interval ( $t0, [$seconds, $microseconds]);
- $elapsed = tv_interval ( $t0, [gettimeofday]);
- $elapsed = tv_interval ( $t0 );
-
- use Time::HiRes qw ( time alarm sleep );
-
- $now_fractions = time;
- sleep ($floating_seconds);
- alarm ($floating_seconds);
- alarm ($floating_seconds, $floating_interval);
-
- use Time::HiRes qw( setitimer getitimer
- ITIMER_REAL ITIMER_VIRTUAL ITIMER_PROF ITIMER_REALPROF );
-
- setitimer ($which, $floating_seconds, $floating_interval );
- getitimer ($which);
-
- $realtime = clock_gettime(CLOCK_REALTIME);
- $resolution = clock_getres(CLOCK_REALTIME);
-
- clock_nanosleep(CLOCK_REALTIME, 1.5);
- clock_nanosleep(CLOCK_REALTIME, time() + 10, TIMER_ABSTIME);
-
- my $ticktock = clock();
-
-=head1 DESCRIPTION
-
-The C<Time::HiRes> module implements a Perl interface to the
-C<usleep>, C<nanosleep>, C<ualarm>, C<gettimeofday>, and
-C<setitimer>/C<getitimer> system calls, in other words, high
-resolution time and timers. See the L</EXAMPLES> section below and the
-test scripts for usage; see your system documentation for the
-description of the underlying C<nanosleep> or C<usleep>, C<ualarm>,
-C<gettimeofday>, and C<setitimer>/C<getitimer> calls.
-
-If your system lacks C<gettimeofday()> or an emulation of it you don't
-get C<gettimeofday()> or the one-argument form of C<tv_interval()>.
-If your system lacks all of C<nanosleep()>, C<usleep()>,
-C<select()>, and C<poll>, you don't get C<Time::HiRes::usleep()>,
-C<Time::HiRes::nanosleep()>, or C<Time::HiRes::sleep()>.
-If your system lacks both C<ualarm()> and C<setitimer()> you don't get
-C<Time::HiRes::ualarm()> or C<Time::HiRes::alarm()>.
-
-If you try to import an unimplemented function in the C<use> statement
-it will fail at compile time.
-
-If your subsecond sleeping is implemented with C<nanosleep()> instead
-of C<usleep()>, you can mix subsecond sleeping with signals since
-C<nanosleep()> does not use signals. This, however, is not portable,
-and you should first check for the truth value of
-C<&Time::HiRes::d_nanosleep> to see whether you have nanosleep, and
-then carefully read your C<nanosleep()> C API documentation for any
-peculiarities.
-
-If you are using C<nanosleep> for something else than mixing sleeping
-with signals, give some thought to whether Perl is the tool you should
-be using for work requiring nanosecond accuracies.
-
-The following functions can be imported from this module.
-No functions are exported by default.
-
-=over 4
-
-=item gettimeofday ()
-
-In array context returns a two-element array with the seconds and
-microseconds since the epoch. In scalar context returns floating
-seconds like C<Time::HiRes::time()> (see below).
-
-=item usleep ( $useconds )
-
-Sleeps for the number of microseconds (millionths of a second)
-specified. Returns the number of microseconds actually slept. Can
-sleep for more than one second, unlike the C<usleep> system call. Can
-also sleep for zero seconds, which often works like a I<thread yield>.
-See also C<Time::HiRes::usleep()>, C<Time::HiRes::sleep()>, and
-C<Time::HiRes::clock_nanosleep()>.
-
-Do not expect usleep() to be exact down to one microsecond.
-
-=item nanosleep ( $nanoseconds )
-
-Sleeps for the number of nanoseconds (1e9ths of a second) specified.
-Returns the number of nanoseconds actually slept (accurate only to
-microseconds, the nearest thousand of them). Can sleep for more than
-one second. Can also sleep for zero seconds, which often works like a
-I<thread yield>. See also C<Time::HiRes::sleep()>,
-C<Time::HiRes::usleep()>, and C<Time::HiRes::clock_nanosleep()>.
-
-Do not expect nanosleep() to be exact down to one nanosecond.
-Getting even accuracy of one thousand nanoseconds is good.
-
-=item ualarm ( $useconds [, $interval_useconds ] )
-
-Issues a C<ualarm> call; the C<$interval_useconds> is optional and
-will be zero if unspecified, resulting in C<alarm>-like behaviour.
-
-Note that the interaction between alarms and sleeps is unspecified.
-
-=item tv_interval
-
-tv_interval ( $ref_to_gettimeofday [, $ref_to_later_gettimeofday] )
-
-Returns the floating seconds between the two times, which should have
-been returned by C<gettimeofday()>. If the second argument is omitted,
-then the current time is used.
-
-=item time ()
-
-Returns a floating seconds since the epoch. This function can be
-imported, resulting in a nice drop-in replacement for the C<time>
-provided with core Perl; see the L</EXAMPLES> below.
-
-B<NOTE 1>: This higher resolution timer can return values either less
-or more than the core C<time()>, depending on whether your platform
-rounds the higher resolution timer values up, down, or to the nearest second
-to get the core C<time()>, but naturally the difference should be never
-more than half a second. See also L</clock_getres>, if available
-in your system.
-
-B<NOTE 2>: Since Sunday, September 9th, 2001 at 01:46:40 AM GMT, when
-the C<time()> seconds since epoch rolled over to 1_000_000_000, the
-default floating point format of Perl and the seconds since epoch have
-conspired to produce an apparent bug: if you print the value of
-C<Time::HiRes::time()> you seem to be getting only five decimals, not
-six as promised (microseconds). Not to worry, the microseconds are
-there (assuming your platform supports such granularity in the first
-place). What is going on is that the default floating point format of
-Perl only outputs 15 digits. In this case that means ten digits
-before the decimal separator and five after. To see the microseconds
-you can use either C<printf>/C<sprintf> with C<"%.6f">, or the
-C<gettimeofday()> function in list context, which will give you the
-seconds and microseconds as two separate values.
-
-=item sleep ( $floating_seconds )
-
-Sleeps for the specified amount of seconds. Returns the number of
-seconds actually slept (a floating point value). This function can
-be imported, resulting in a nice drop-in replacement for the C<sleep>
-provided with perl, see the L</EXAMPLES> below.
-
-Note that the interaction between alarms and sleeps is unspecified.
-
-=item alarm ( $floating_seconds [, $interval_floating_seconds ] )
-
-The C<SIGALRM> signal is sent after the specified number of seconds.
-Implemented using C<ualarm()>. The C<$interval_floating_seconds> argument
-is optional and will be zero if unspecified, resulting in C<alarm()>-like
-behaviour. This function can be imported, resulting in a nice drop-in
-replacement for the C<alarm> provided with perl, see the L</EXAMPLES> below.
-
-B<NOTE 1>: With some combinations of operating systems and Perl
-releases C<SIGALRM> restarts C<select()>, instead of interrupting it.
-This means that an C<alarm()> followed by a C<select()> may together
-take the sum of the times specified for the the C<alarm()> and the
-C<select()>, not just the time of the C<alarm()>.
-
-Note that the interaction between alarms and sleeps is unspecified.
-
-=item setitimer ( $which, $floating_seconds [, $interval_floating_seconds ] )
-
-Start up an interval timer: after a certain time, a signal arrives,
-and more signals may keep arriving at certain intervals. To disable
-an "itimer", use C<$floating_seconds> of zero. If the
-C<$interval_floating_seconds> is set to zero (or unspecified), the
-timer is disabled B<after> the next delivered signal.
-
-Use of interval timers may interfere with C<alarm()>, C<sleep()>,
-and C<usleep()>. In standard-speak the "interaction is unspecified",
-which means that I<anything> may happen: it may work, it may not.
-
-In scalar context, the remaining time in the timer is returned.
-
-In list context, both the remaining time and the interval are returned.
-
-There are usually three or four interval timers available: the
-C<$which> can be C<ITIMER_REAL>, C<ITIMER_VIRTUAL>, C<ITIMER_PROF>, or
-C<ITIMER_REALPROF>. Note that which ones are available depends: true
-UNIX platforms usually have the first three, but (for example) Win32
-and Cygwin have only C<ITIMER_REAL>, and only Solaris seems to have
-C<ITIMER_REALPROF> (which is used to profile multithreaded programs).
-
-C<ITIMER_REAL> results in C<alarm()>-like behaviour. Time is counted in
-I<real time>; that is, wallclock time. C<SIGALRM> is delivered when
-the timer expires.
-
-C<ITIMER_VIRTUAL> counts time in (process) I<virtual time>; that is,
-only when the process is running. In multiprocessor/user/CPU systems
-this may be more or less than real or wallclock time. (This time is
-also known as the I<user time>.) C<SIGVTALRM> is delivered when the
-timer expires.
-
-C<ITIMER_PROF> counts time when either the process virtual time or when
-the operating system is running on behalf of the process (such as I/O).
-(This time is also known as the I<system time>.) (The sum of user
-time and system time is known as the I<CPU time>.) C<SIGPROF> is
-delivered when the timer expires. C<SIGPROF> can interrupt system calls.
-
-The semantics of interval timers for multithreaded programs are
-system-specific, and some systems may support additional interval
-timers. See your C<setitimer()> documentation.
-
-=item getitimer ( $which )
-
-Return the remaining time in the interval timer specified by C<$which>.
-
-In scalar context, the remaining time is returned.
-
-In list context, both the remaining time and the interval are returned.
-The interval is always what you put in using C<setitimer()>.
-
-=item clock_gettime ( $which )
-
-Return as seconds the current value of the POSIX high resolution timer
-specified by C<$which>. All implementations that support POSIX high
-resolution timers are supposed to support at least the C<$which> value
-of C<CLOCK_REALTIME>, which is supposed to return results close to the
-results of C<gettimeofday>, or the number of seconds since 00:00:00:00
-January 1, 1970 Greenwich Mean Time (GMT). Do not assume that
-CLOCK_REALTIME is zero, it might be one, or something else.
-Another potentially useful (but not available everywhere) value is
-C<CLOCK_MONOTONIC>, which guarantees a monotonically increasing time
-value (unlike time(), which can be adjusted). See your system
-documentation for other possibly supported values.
-
-=item clock_getres ( $which )
-
-Return as seconds the resolution of the POSIX high resolution timer
-specified by C<$which>. All implementations that support POSIX high
-resolution timers are supposed to support at least the C<$which> value
-of C<CLOCK_REALTIME>, see L</clock_gettime>.
-
-=item clock_nanosleep ( $which, $seconds, $flags = 0)
-
-Sleeps for the number of seconds (1e9ths of a second) specified.
-Returns the number of seconds actually slept. The $which is the
-"clock id", as with clock_gettime() and clock_getres(). The flags
-default to zero but C<TIMER_ABSTIME> can specified (must be exported
-explicitly) which means that C<$nanoseconds> is not a time interval
-(as is the default) but instead an absolute time. Can sleep for more
-than one second. Can also sleep for zero seconds, which often works
-like a I<thread yield>. See also C<Time::HiRes::sleep()>,
-C<Time::HiRes::usleep()>, and C<Time::HiRes::nanosleep()>.
-
-Do not expect clock_nanosleep() to be exact down to one nanosecond.
-Getting even accuracy of one thousand nanoseconds is good.
-
-=item clock()
-
-Return as seconds the I<process time> (user + system time) spent by
-the process since the first call to clock() (the definition is B<not>
-"since the start of the process", though if you are lucky these times
-may be quite close to each other, depending on the system). What this
-means is that you probably need to store the result of your first call
-to clock(), and subtract that value from the following results of clock().
-
-The time returned also includes the process times of the terminated
-child processes for which wait() has been executed. This value is
-somewhat like the second value returned by the times() of core Perl,
-but not necessarily identical. Note that due to backward
-compatibility limitations the returned value may wrap around at about
-2147 seconds or at about 36 minutes.
-
-=back
-
-=head1 EXAMPLES
-
- use Time::HiRes qw(usleep ualarm gettimeofday tv_interval);
-
- $microseconds = 750_000;
- usleep($microseconds);
-
- # signal alarm in 2.5s & every .1s thereafter
- ualarm(2_500_000, 100_000);
-
- # get seconds and microseconds since the epoch
- ($s, $usec) = gettimeofday();
-
- # measure elapsed time
- # (could also do by subtracting 2 gettimeofday return values)
- $t0 = [gettimeofday];
- # do bunch of stuff here
- $t1 = [gettimeofday];
- # do more stuff here
- $t0_t1 = tv_interval $t0, $t1;
-
- $elapsed = tv_interval ($t0, [gettimeofday]);
- $elapsed = tv_interval ($t0); # equivalent code
-
- #
- # replacements for time, alarm and sleep that know about
- # floating seconds
- #
- use Time::HiRes;
- $now_fractions = Time::HiRes::time;
- Time::HiRes::sleep (2.5);
- Time::HiRes::alarm (10.6666666);
-
- use Time::HiRes qw ( time alarm sleep );
- $now_fractions = time;
- sleep (2.5);
- alarm (10.6666666);
-
- # Arm an interval timer to go off first at 10 seconds and
- # after that every 2.5 seconds, in process virtual time
-
- use Time::HiRes qw ( setitimer ITIMER_VIRTUAL time );
-
- $SIG{VTALRM} = sub { print time, "\n" };
- setitimer(ITIMER_VIRTUAL, 10, 2.5);
-
- use Time::HiRes qw( clock_gettime clock_getres CLOCK_REALTIME );
- # Read the POSIX high resolution timer.
- my $high = clock_getres(CLOCK_REALTIME);
- # But how accurate we can be, really?
- my $reso = clock_getres(CLOCK_REALTIME);
-
- use Time::HiRes qw( clock_nanosleep TIMER_ABSTIME );
- clock_nanosleep(CLOCK_REALTIME, 1e6);
- clock_nanosleep(CLOCK_REALTIME, 2e9, TIMER_ABSTIME);
-
- use Time::HiRes qw( clock );
- my $clock0 = clock();
- ... # Do something.
- my $clock1 = clock();
- my $clockd = $clock1 - $clock0;
-
-=head1 C API
-
-In addition to the perl API described above, a C API is available for
-extension writers. The following C functions are available in the
-modglobal hash:
-
- name C prototype
- --------------- ----------------------
- Time::NVtime double (*)()
- Time::U2time void (*)(pTHX_ UV ret[2])
-
-Both functions return equivalent information (like C<gettimeofday>)
-but with different representations. The names C<NVtime> and C<U2time>
-were selected mainly because they are operating system independent.
-(C<gettimeofday> is Unix-centric, though some platforms like Win32 and
-VMS have emulations for it.)
-
-Here is an example of using C<NVtime> from C:
-
- double (*myNVtime)(); /* Returns -1 on failure. */
- SV **svp = hv_fetch(PL_modglobal, "Time::NVtime", 12, 0);
- if (!svp) croak("Time::HiRes is required");
- if (!SvIOK(*svp)) croak("Time::NVtime isn't a function pointer");
- myNVtime = INT2PTR(double(*)(), SvIV(*svp));
- printf("The current time is: %f\n", (*myNVtime)());
-
-=head1 DIAGNOSTICS
-
-=head2 negative time not invented yet
-
-You tried to use a negative time argument.
-
-=head2 internal error: useconds < 0 (unsigned ... signed ...)
-
-Something went horribly wrong-- the number of microseconds that cannot
-become negative just became negative. Maybe your compiler is broken?
-
-=head1 CAVEATS
-
-Notice that the core C<time()> maybe rounding rather than truncating.
-What this means is that the core C<time()> may be reporting the time
-as one second later than C<gettimeofday()> and C<Time::HiRes::time()>.
-
-Adjusting the system clock (either manually or by services like ntp)
-may cause problems, especially for long running programs that assume
-a monotonously increasing time (note that all platforms do not adjust
-time as gracefully as UNIX ntp does). For example in Win32 (and derived
-platforms like Cygwin and MinGW) the Time::HiRes::time() may temporarily
-drift off from the system clock (and the original time()) by up to 0.5
-seconds. Time::HiRes will notice this eventually and recalibrate.
-Note that since Time::HiRes 1.77 the clock_gettime(CLOCK_MONOTONIC)
-might help in this (in case your system supports CLOCK_MONOTONIC).
-
-=head1 SEE ALSO
-
-Perl modules L<BSD::Resource>, L<Time::TAI64>.
-
-Your system documentation for C<clock_gettime>, C<clock_settime>,
-C<gettimeofday>, C<getitimer>, C<setitimer>, C<ualarm>.
-
-=head1 AUTHORS
-
-D. Wegscheid <wegscd@whirlpool.com>
-R. Schertler <roderick@argon.org>
-J. Hietaniemi <jhi@iki.fi>
-G. Aas <gisle@aas.no>
-
-=head1 COPYRIGHT AND LICENSE
-
-Copyright (c) 1996-2002 Douglas E. Wegscheid. All rights reserved.
-
-Copyright (c) 2002, 2003, 2004, 2005 Jarkko Hietaniemi. All rights reserved.
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Time/Local.pm b/Master/tlpkg/tlperl/lib/Time/Local.pm
deleted file mode 100644
index 912f17d0310..00000000000
--- a/Master/tlpkg/tlperl/lib/Time/Local.pm
+++ /dev/null
@@ -1,366 +0,0 @@
-package Time::Local;
-
-require Exporter;
-use Carp;
-use Config;
-use strict;
-use integer;
-
-use vars qw( $VERSION @ISA @EXPORT @EXPORT_OK );
-$VERSION = '1.11';
-$VERSION = eval $VERSION;
-@ISA = qw( Exporter );
-@EXPORT = qw( timegm timelocal );
-@EXPORT_OK = qw( timegm_nocheck timelocal_nocheck );
-
-my @MonthDays = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
-
-# Determine breakpoint for rolling century
-my $ThisYear = (localtime())[5];
-my $Breakpoint = ($ThisYear + 50) % 100;
-my $NextCentury = $ThisYear - $ThisYear % 100;
- $NextCentury += 100 if $Breakpoint < 50;
-my $Century = $NextCentury - 100;
-my $SecOff = 0;
-
-my (%Options, %Cheat, %Min, %Max);
-my ($MinInt, $MaxInt);
-
-if ($^O eq 'MacOS') {
- # time_t is unsigned...
- $MaxInt = (1 << (8 * $Config{intsize})) - 1;
- $MinInt = 0;
-} else {
- $MaxInt = ((1 << (8 * $Config{intsize} - 2))-1)*2 + 1;
- $MinInt = -$MaxInt - 1;
-
- # On Win32 (and others?) time_t appears to be signed, but negative
- # epochs still don't work. - XXX - this is experimental
- $MinInt = 0
- unless defined ((localtime(-1))[0]);
-}
-
-$Max{Day} = ($MaxInt >> 1) / 43200;
-$Min{Day} = $MinInt ? -($Max{Day} + 1) : 0;
-
-$Max{Sec} = $MaxInt - 86400 * $Max{Day};
-$Min{Sec} = $MinInt - 86400 * $Min{Day};
-
-# Determine the EPOC day for this machine
-my $Epoc = 0;
-if ($^O eq 'vos') {
-# work around posix-977 -- VOS doesn't handle dates in
-# the range 1970-1980.
- $Epoc = _daygm((0, 0, 0, 1, 0, 70, 4, 0));
-}
-elsif ($^O eq 'MacOS') {
- no integer;
-
- # MacOS time() is seconds since 1 Jan 1904, localtime
- # so we need to calculate an offset to apply later
- $Epoc = 693901;
- $SecOff = timelocal(localtime(0)) - timelocal(gmtime(0));
- $Epoc += _daygm(gmtime(0));
-}
-else {
- $Epoc = _daygm(gmtime(0));
-}
-
-%Cheat=(); # clear the cache as epoc has changed
-
-sub _daygm {
- $_[3] + ($Cheat{pack("ss",@_[4,5])} ||= do {
- my $month = ($_[4] + 10) % 12;
- my $year = $_[5] + 1900 - $month/10;
- 365*$year + $year/4 - $year/100 + $year/400 + ($month*306 + 5)/10 - $Epoc
- });
-}
-
-
-sub _timegm {
- my $sec = $SecOff + $_[0] + 60 * $_[1] + 3600 * $_[2];
-
- no integer;
-
- $sec + 86400 * &_daygm;
-}
-
-
-sub _zoneadjust {
- my ($day, $sec, $time) = @_;
-
- $sec = $sec + _timegm(localtime($time)) - $time;
- if ($sec >= 86400) { $day++; $sec -= 86400; }
- if ($sec < 0) { $day--; $sec += 86400; }
-
- ($day, $sec);
-}
-
-
-sub timegm {
- my ($sec,$min,$hour,$mday,$month,$year) = @_;
-
- if ($year >= 1000) {
- $year -= 1900;
- }
- elsif ($year < 100 and $year >= 0) {
- $year += ($year > $Breakpoint) ? $Century : $NextCentury;
- }
-
- unless ($Options{no_range_check}) {
- if (abs($year) >= 0x7fff) {
- $year += 1900;
- croak "Cannot handle date ($sec, $min, $hour, $mday, $month, *$year*)";
- }
-
- croak "Month '$month' out of range 0..11" if $month > 11 or $month < 0;
-
- my $md = $MonthDays[$month];
-# ++$md if $month == 1 and $year % 4 == 0 and
-# ($year % 100 != 0 or ($year + 1900) % 400 == 0);
- ++$md unless $month != 1 or $year % 4 or !($year % 400);
-
- croak "Day '$mday' out of range 1..$md" if $mday > $md or $mday < 1;
- croak "Hour '$hour' out of range 0..23" if $hour > 23 or $hour < 0;
- croak "Minute '$min' out of range 0..59" if $min > 59 or $min < 0;
- croak "Second '$sec' out of range 0..59" if $sec > 59 or $sec < 0;
- }
-
- my $days = _daygm(undef, undef, undef, $mday, $month, $year);
- my $xsec = $sec + $SecOff + 60*$min + 3600*$hour;
-
- unless ($Options{no_range_check}
- or ($days > $Min{Day} or $days == $Min{Day} and $xsec >= $Min{Sec})
- and ($days < $Max{Day} or $days == $Max{Day} and $xsec <= $Max{Sec}))
- {
- warn "Day too small - $days > $Min{Day}\n" if $days < $Min{Day};
- warn "Day too big - $days > $Max{Day}\n" if $days > $Max{Day};
- warn "Sec too small - $days < $Min{Sec}\n" if $days < $Min{Sec};
- warn "Sec too big - $days > $Max{Sec}\n" if $days > $Max{Sec};
- $year += 1900;
- croak "Cannot handle date ($sec, $min, $hour, $mday, $month, $year)";
- }
-
- no integer;
-
- $xsec + 86400 * $days;
-}
-
-
-sub timegm_nocheck {
- local $Options{no_range_check} = 1;
- &timegm;
-}
-
-
-sub timelocal {
- # Adjust Max/Min allowed times to fit local time zone and call timegm
- local ($Max{Day}, $Max{Sec}) = _zoneadjust($Max{Day}, $Max{Sec}, $MaxInt);
- local ($Min{Day}, $Min{Sec}) = _zoneadjust($Min{Day}, $Min{Sec}, $MinInt);
- my $ref_t = &timegm;
-
- # Calculate first guess with a one-day delta to avoid localtime overflow
- my $delta = ($_[5] < 100)? 86400 : -86400;
- my $loc_t = _timegm(localtime( $ref_t + $delta )) - $delta;
-
- # Is there a timezone offset from GMT or are we done
- my $zone_off = $ref_t - $loc_t
- or return $loc_t;
-
- # This hack is needed to always pick the first matching time
- # during a DST change when time would otherwise be ambiguous
- $zone_off -= 3600 if ($delta > 0 && $ref_t >= 3600);
-
- # Adjust for timezone
- $loc_t = $ref_t + $zone_off;
-
- # Are we close to a DST change or are we done
- my $dst_off = $ref_t - _timegm(localtime($loc_t))
- or return $loc_t;
-
- # Adjust for DST change
- $loc_t += $dst_off;
-
- return $loc_t if $dst_off >= 0;
-
- # for a negative offset from GMT, and if the original date
- # was a non-extent gap in a forward DST jump, we should
- # now have the wrong answer - undo the DST adjust;
-
- my ($s,$m,$h) = localtime($loc_t);
- $loc_t -= $dst_off if $s != $_[0] || $m != $_[1] || $h != $_[2];
-
- $loc_t;
-}
-
-
-sub timelocal_nocheck {
- local $Options{no_range_check} = 1;
- &timelocal;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Time::Local - efficiently compute time from local and GMT time
-
-=head1 SYNOPSIS
-
- $time = timelocal($sec,$min,$hour,$mday,$mon,$year);
- $time = timegm($sec,$min,$hour,$mday,$mon,$year);
-
-=head1 DESCRIPTION
-
-These routines are the inverse of built-in perl functions localtime()
-and gmtime(). They accept a date as a six-element array, and return
-the corresponding time(2) value in seconds since the system epoch
-(Midnight, January 1, 1970 GMT on Unix, for example). This value can
-be positive or negative, though POSIX only requires support for
-positive values, so dates before the system's epoch may not work on
-all operating systems.
-
-It is worth drawing particular attention to the expected ranges for
-the values provided. The value for the day of the month is the actual day
-(ie 1..31), while the month is the number of months since January (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, $hour, $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, 1964 would indicate the year
-Martin Luther King won the Nobel prize, not the year 3864.
-
-=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.
-
-=head2 Ambiguous Local Times (DST)
-
-Because of DST changes, there are many time zones where the same local
-time occurs for two different GMT times on the same day. For example,
-in the "Europe/Paris" time zone, the local time of 2001-10-28 02:30:00
-can represent either 2001-10-28 00:30:00 GMT, B<or> 2001-10-28
-01:30:00 GMT.
-
-When given an ambiguous local time, the timelocal() function should
-always return the epoch for the I<earlier> of the two possible GMT
-times.
-
-=head2 Non-Existent Local Times (DST)
-
-When a DST change causes a locale clock to skip one hour forward,
-there will be an hour's worth of local times that don't exist. Again,
-for the "Europe/Paris" time zone, the local clock jumped from
-2001-03-25 01:59:59 to 2001-03-25 03:00:00.
-
-If the timelocal() function is given a non-existent local time, it
-will simply return an epoch value for the time one hour later.
-
-=head2 Negative Epoch Values
-
-Negative epoch (time_t) values are not officially supported by the
-POSIX standards, so this module's tests do not test them. On some
-systems, they are known not to work. These include MacOS (pre-OSX)
-and Win32.
-
-On systems which do support negative epoch values, this module should
-be able to cope with dates before the start of the epoch, down the
-minimum value of time_t for the system.
-
-=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
-are calculated using a mathematical formula. Unlike other algorithms
-that do multiple calls to gmtime().
-
-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.
-
-=head1 BUGS
-
-The whole scheme for interpreting two-digit years can be considered a bug.
-
-=head1 SUPPORT
-
-Support for this module is provided via the datetime@perl.org
-email list. See http://lists.perl.org/ for more details.
-
-Please submit bugs using the RT system at rt.cpan.org, or as a last
-resort, to the datetime@perl.org list.
-
-=head1 AUTHOR
-
-This module is based on a Perl 4 library, timelocal.pl, that was
-included with Perl 4.036, and was most likely written by Tom
-Christiansen.
-
-The current version was written by Graham Barr.
-
-It is now being maintained separately from the Perl core by Dave
-Rolsky, <autarch@urth.org>.
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Time/gmtime.pm b/Master/tlpkg/tlperl/lib/Time/gmtime.pm
deleted file mode 100644
index 4e1359b36d9..00000000000
--- a/Master/tlpkg/tlperl/lib/Time/gmtime.pm
+++ /dev/null
@@ -1,90 +0,0 @@
-package Time::gmtime;
-use strict;
-use 5.006_001;
-
-use Time::tm;
-
-our(@ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $VERSION);
-BEGIN {
- use Exporter ();
- @ISA = qw(Exporter Time::tm);
- @EXPORT = qw(gmtime gmctime);
- @EXPORT_OK = qw(
- $tm_sec $tm_min $tm_hour $tm_mday
- $tm_mon $tm_year $tm_wday $tm_yday
- $tm_isdst
- );
- %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
- $VERSION = 1.02;
-}
-use vars @EXPORT_OK;
-
-sub populate (@) {
- return unless @_;
- my $tmob = Time::tm->new();
- @$tmob = (
- $tm_sec, $tm_min, $tm_hour, $tm_mday,
- $tm_mon, $tm_year, $tm_wday, $tm_yday,
- $tm_isdst )
- = @_;
- return $tmob;
-}
-
-sub gmtime (;$) { populate CORE::gmtime(@_ ? shift : time)}
-sub gmctime (;$) { scalar CORE::gmtime(@_ ? shift : time)}
-
-1;
-__END__
-
-=head1 NAME
-
-Time::gmtime - by-name interface to Perl's built-in gmtime() function
-
-=head1 SYNOPSIS
-
- use Time::gmtime;
- $gm = gmtime();
- printf "The day in Greenwich is %s\n",
- (qw(Sun Mon Tue Wed Thu Fri Sat Sun))[ gm->wday() ];
-
- use Time::gmtime w(:FIELDS;
- printf "The day in Greenwich is %s\n",
- (qw(Sun Mon Tue Wed Thu Fri Sat Sun))[ gm_wday() ];
-
- $now = gmctime();
-
- use Time::gmtime;
- use File::stat;
- $date_string = gmctime(stat($file)->mtime);
-
-=head1 DESCRIPTION
-
-This module's default exports override the core gmtime() function,
-replacing it with a version that returns "Time::tm" objects.
-This object has methods that return the similarly named structure field
-name from the C's tm structure from F<time.h>; namely sec, min, hour,
-mday, mon, year, wday, yday, and isdst.
-
-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<tm_> in front their method names. Thus,
-C<$tm_obj-E<gt>mday()> corresponds to $tm_mday if you import the fields.
-
-The gmctime() function provides a way of getting at the
-scalar sense of the original CORE::gmtime() function.
-
-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.
-
-=head1 NOTE
-
-While this class is currently implemented using the Class::Struct
-module to build a struct-like class, you shouldn't rely upon this.
-
-=head1 AUTHOR
-
-Tom Christiansen
diff --git a/Master/tlpkg/tlperl/lib/Time/localtime.pm b/Master/tlpkg/tlperl/lib/Time/localtime.pm
deleted file mode 100644
index c3d9fb36085..00000000000
--- a/Master/tlpkg/tlperl/lib/Time/localtime.pm
+++ /dev/null
@@ -1,86 +0,0 @@
-package Time::localtime;
-use strict;
-use 5.006_001;
-
-use Time::tm;
-
-our(@ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $VERSION);
-BEGIN {
- use Exporter ();
- @ISA = qw(Exporter Time::tm);
- @EXPORT = qw(localtime ctime);
- @EXPORT_OK = qw(
- $tm_sec $tm_min $tm_hour $tm_mday
- $tm_mon $tm_year $tm_wday $tm_yday
- $tm_isdst
- );
- %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
- $VERSION = 1.02;
-}
-use vars @EXPORT_OK;
-
-sub populate (@) {
- return unless @_;
- my $tmob = Time::tm->new();
- @$tmob = (
- $tm_sec, $tm_min, $tm_hour, $tm_mday,
- $tm_mon, $tm_year, $tm_wday, $tm_yday,
- $tm_isdst )
- = @_;
- return $tmob;
-}
-
-sub localtime (;$) { populate CORE::localtime(@_ ? shift : time)}
-sub ctime (;$) { scalar CORE::localtime(@_ ? shift : time) }
-
-1;
-
-__END__
-
-=head1 NAME
-
-Time::localtime - by-name interface to Perl's built-in localtime() function
-
-=head1 SYNOPSIS
-
- use Time::localtime;
- printf "Year is %d\n", localtime->year() + 1900;
-
- $now = ctime();
-
- use Time::localtime;
- use File::stat;
- $date_string = ctime(stat($file)->mtime);
-
-=head1 DESCRIPTION
-
-This module's default exports override the core localtime() function,
-replacing it with a version that returns "Time::tm" objects.
-This object has methods that return the similarly named structure field
-name from the C's tm structure from F<time.h>; namely sec, min, hour,
-mday, mon, year, wday, yday, and isdst.
-
-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<tm_> in front their method names.
-Thus, C<$tm_obj-E<gt>mday()> corresponds to $tm_mday if you import
-the fields.
-
-The ctime() function provides a way of getting at the
-scalar sense of the original CORE::localtime() function.
-
-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.
-
-=head1 NOTE
-
-While this class is currently implemented using the Class::Struct
-module to build a struct-like class, you shouldn't rely upon this.
-
-=head1 AUTHOR
-
-Tom Christiansen
diff --git a/Master/tlpkg/tlperl/lib/Time/tm.pm b/Master/tlpkg/tlperl/lib/Time/tm.pm
deleted file mode 100644
index 2c308ebb411..00000000000
--- a/Master/tlpkg/tlperl/lib/Time/tm.pm
+++ /dev/null
@@ -1,33 +0,0 @@
-package Time::tm;
-use strict;
-
-our $VERSION = '1.00';
-
-use Class::Struct qw(struct);
-struct('Time::tm' => [
- map { $_ => '$' } qw{ sec min hour mday mon year wday yday isdst }
-]);
-
-1;
-__END__
-
-=head1 NAME
-
-Time::tm - internal object used by Time::gmtime and Time::localtime
-
-=head1 SYNOPSIS
-
-Don't use this module directly.
-
-=head1 DESCRIPTION
-
-This module is used internally as a base class by Time::localtime And
-Time::gmtime functions. It creates a Time::tm struct object which is
-addressable just like's C's tm structure from F<time.h>; namely with sec,
-min, hour, mday, mon, year, wday, yday, and isdst.
-
-This class is an internal interface only.
-
-=head1 AUTHOR
-
-Tom Christiansen
diff --git a/Master/tlpkg/tlperl/lib/Tk.pm b/Master/tlpkg/tlperl/lib/Tk.pm
deleted file mode 100644
index deb453172eb..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk.pm
+++ /dev/null
@@ -1,821 +0,0 @@
-#
-# Copyright (c) 1992-1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-# Copyright (c) 1995-2004 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-
-# modify it under the same terms as Perl itself, subject
-# to additional disclaimer in Tk/license.terms due to partial
-# derivation from Tk8.0 sources.
-#
-package Tk;
-require 5.007;
-use Tk::Event ();
-use AutoLoader qw(AUTOLOAD);
-use DynaLoader;
-use Cwd();
-use base qw(Exporter DynaLoader);
-
-*fileevent = \&Tk::Event::IO::fileevent;
-
-use Encode;
-$Tk::encodeStopOnError = Encode::FB_QUIET();
-$Tk::encodeFallback = Encode::FB_PERLQQ(); # Encode::FB_DEFAULT();
-
-our %font_encoding = ('jis0208' => 'jis0208-raw',
- 'jis0212' => 'jis0212-raw',
- 'ksc5601' => 'ksc5601-raw',
- 'gb2312' => 'gb2312-raw',
- 'unicode' => 'ucs-2le',
- );
-
-BEGIN {
- if($^O eq 'cygwin')
- {
- require Tk::Config;
- $Tk::platform = $Tk::Config::win_arch;
- $Tk::platform = 'unix' if $Tk::platform eq 'x';
- }
- else
- {
- $Tk::platform = ($^O eq 'MSWin32') ? $^O : 'unix';
- }
-};
-
-$Tk::tearoff = 1 if ($Tk::platform eq 'unix');
-
-
-@EXPORT = qw(Exists Ev exit MainLoop DoOneEvent tkinit);
-@EXPORT_OK = qw(NoOp after *widget *event lsearch catch $XS_VERSION
- DONT_WAIT WINDOW_EVENTS FILE_EVENTS TIMER_EVENTS
- IDLE_EVENTS ALL_EVENTS
- NORMAL_BG ACTIVE_BG SELECT_BG
- SELECT_FG TROUGH INDICATOR DISABLED BLACK WHITE);
-%EXPORT_TAGS = (eventtypes => [qw(DONT_WAIT WINDOW_EVENTS FILE_EVENTS
- TIMER_EVENTS IDLE_EVENTS ALL_EVENTS)],
- variables => [qw(*widget *event)],
- colors => [qw(NORMAL_BG ACTIVE_BG SELECT_BG SELECT_FG
- TROUGH INDICATOR DISABLED BLACK WHITE)],
- );
-
-use strict;
-use Carp;
-
-# Record author's perforce depot record
-$Tk::CHANGE = q$Change: 3279 $;
-
-# $tk_version and $tk_patchLevel are reset by pTk when a mainwindow
-# is created, $VERSION is checked by bootstrap
-$Tk::version = '8.4';
-$Tk::patchLevel = '8.4';
-$Tk::VERSION = '804.027';
-$Tk::XS_VERSION = $Tk::VERSION;
-$Tk::strictMotif = 0;
-
-
-{($Tk::library) = __FILE__ =~ /^(.*)\.pm$/;}
-$Tk::library = Tk->findINC('.') unless (defined($Tk::library) && -d $Tk::library);
-
-$Tk::widget = undef;
-$Tk::event = undef;
-
-use vars qw($inMainLoop);
-
-bootstrap Tk;
-
-my $boot_time = timeofday();
-
-# This is a workround for Solaris X11 locale handling
-Preload(DynaLoader::dl_findfile('-L/usr/openwin/lib','-lX11'))
- if (NeedPreload() && -d '/usr/openwin/lib');
-
-use Tk::Submethods ('option' => [qw(add get clear readfile)],
- 'clipboard' => [qw(clear append)]
- );
-
-#
-# Next few routines are here as perl code as doing caller()
-# in XS code is very complicated - so instead C code calls BackTrace
-#
-sub _backTrace
-{
- my $w = shift;
- my $i = 1;
- my ($pack,$file,$line,$sub) = caller($i++);
- while (1)
- {
- my $loc = "at $file line $line";
- ($pack,$file,$line,$sub) = caller($i++);
- last unless defined($sub);
- return 1 if $sub eq '(eval)';
- $w->AddErrorInfo("$sub $loc");
- }
- return 0;
-}
-
-sub BackTrace
-{
- my $w = shift;
- return unless (@_ || $@);
- my $mess = (@_) ? shift : "$@";
- die "$mess\n" if $w->_backTrace;
- # if we get here we are not in an eval so report now
- $w->Fail($mess);
- $w->idletasks;
- die "$mess\n";
-}
-
-#
-# This is a $SIG{__DIE__} handler which does not change the $@
-# string in the way 'croak' does, but rather add to Tk's ErrorInfo.
-# It stops at 1st enclosing eval on assumption that the eval
-# is part of Tk call process and will add its own context to ErrorInfo
-# and then pass on the error.
-#
-sub __DIE__
-{
- my $mess = shift;
- my $w = $Tk::widget;
- # Note that if a __DIE__ handler returns it re-dies up the chain.
- return unless defined($w) && Exists($w);
- # This special message is for exit() as an exception see pTkCallback.c
- return if $mess =~/^_TK_EXIT_\(\d+\)/;
- return if $w->_backTrace;
- # Not in an eval - should not happen
-}
-
-sub XEvent::xy { shift->Info('xy') }
-
-sub XEvent::AUTOLOAD
-{
- my ($meth) = $XEvent::AUTOLOAD =~ /(\w)$/;
- no strict 'refs';
- *{$XEvent::AUTOLOAD} = sub { shift->Info($meth) };
- goto &$XEvent::AUTOLOAD;
-}
-
-sub NoOp { }
-
-sub Ev
-{
- if (@_ == 1)
- {
- my $arg = $_[0];
- return bless (((ref $arg) ? $arg : \$arg), 'Tk::Ev');
- }
- else
- {
- return bless [@_],'Tk::Ev';
- }
-}
-
-sub InitClass
-{
- my ($package,$parent) = @_;
- croak "Unexpected type of parent $parent" unless(ref $parent);
- croak "$parent is not a widget" unless($parent->IsWidget);
- my $mw = $parent->MainWindow;
- my $hash = $mw->TkHash('_ClassInit_');
- unless (exists $hash->{$package})
- {
- $package->Install($mw);
- $hash->{$package} = $package->ClassInit($mw);
- }
-}
-
-require Tk::Widget;
-require Tk::Image;
-require Tk::MainWindow;
-
-sub Exists
-{my $w = shift;
- return defined($w) && ref($w) && $w->IsWidget && $w->exists;
-}
-
-sub Time_So_Far
-{
- return timeofday() - $boot_time;
-}
-
-# Selection* are not autoloaded as names are too long.
-
-sub SelectionOwn
-{my $widget = shift;
- selection('own',(@_,$widget));
-}
-
-sub SelectionOwner
-{
- selection('own','-displayof',@_);
-}
-
-sub SelectionClear
-{
- selection('clear','-displayof',@_);
-}
-
-sub SelectionExists
-{
- selection('exists','-displayof',@_);
-}
-
-sub SelectionHandle
-{my $widget = shift;
- my $command = pop;
- selection('handle',@_,$widget,$command);
-}
-
-sub SplitString
-{
- local $_ = shift;
- my (@arr, $tmp);
- while (/\{([^{}]*)\}|((?:[^\s\\]|\\.)+)/gs) {
- if (defined $1) { push @arr, $1 }
- else { $tmp = $2 ; $tmp =~ s/\\([\s\\])/$1/g; push @arr, $tmp }
- }
- # carp '('.join(',',@arr).")";
- return @arr;
-}
-
-sub Methods
-{
- my ($package) = caller;
- no strict 'refs';
- foreach my $meth (@_)
- {
- my $name = $meth;
- *{$package."::$meth"} = sub { shift->WidgetMethod($name,@_) };
- }
-}
-
-my %dialog = ( tk_chooseColor => 'ColorDialog',
- tk_messageBox => 'MessageBox',
- tk_getOpenFile => 'FDialog',
- tk_getSaveFile => 'FDialog',
- tk_chooseDirectory => 'FDialog'
-# Slaven claims NI-S's version above does not work
-# and provides this
-# tk_chooseDirectory => 'DirDialog'
- );
-
-foreach my $dialog (keys %dialog)
- {
- no strict 'refs';
- unless (defined &$dialog)
- {
- my $kind = $dialog;
- my $code = \&{"Tk::$dialog{$dialog}"};
- *$dialog = sub { &$code($kind,@_) };
- }
- }
-
-sub MessageBox {
- my ($kind,%args) = @_;
- require Tk::Dialog;
- my $parent = delete $args{'-parent'};
- my $args = \%args;
-
- $args->{-bitmap} = delete $args->{-icon} if defined $args->{-icon};
- $args->{-text} = delete $args->{-message} if defined $args->{-message};
- $args->{-type} = 'OK' unless defined $args->{-type};
-
- my $type;
- if (defined($type = delete $args->{-type})) {
- delete $args->{-type};
- my @buttons = grep($_,map(ucfirst($_),
- split(/(abort|retry|ignore|yes|no|cancel|ok)/,
- lc($type))));
- $args->{-buttons} = [@buttons];
- $args->{-default_button} = ucfirst(delete $args->{-default}) if
- defined $args->{-default};
- if (not defined $args->{-default_button} and scalar(@buttons) == 1) {
- $args->{-default_button} = $buttons[0];
- }
- my $md = $parent->Dialog(%$args);
- my $an = $md->Show;
- $md->destroy;
- return $an;
- }
-} # end messageBox
-
-sub messageBox
-{
- my ($widget,%args) = @_;
- # remove in a later version:
- if (exists $args{'-text'})
- {
- warn "The -text option is deprecated. Please use -message instead";
- if (!exists $args{'-message'})
- {
- $args{'-message'} = delete $args{'-text'};
- }
- }
- $args{'-type'} = (exists $args{'-type'}) ? lc($args{'-type'}) : 'ok';
- $args{'-default'} = lc($args{'-default'}) if (exists $args{'-default'});
- ucfirst tk_messageBox(-parent => $widget, %args);
-}
-
-sub getOpenFile
-{
- tk_getOpenFile(-parent => shift,@_);
-}
-
-sub getSaveFile
-{
- tk_getSaveFile(-parent => shift,@_);
-}
-
-sub chooseColor
-{
- tk_chooseColor(-parent => shift,@_);
-}
-
-sub chooseDirectory
-{
- tk_chooseDirectory(-parent => shift,@_);
-}
-
-sub DialogWrapper
-{
- my ($method,$kind,%args) = @_;
- my $created = 0;
- my $w = delete $args{'-parent'};
- if (defined $w)
- {
- $args{'-popover'} = $w;
- }
- else
- {
- $w = MainWindow->new;
- $w->withdraw;
- $created = 1;
- }
- my $mw = $w->toplevel;
- my $fs = $mw->{$kind};
- unless (defined $fs)
- {
- $mw->{$kind} = $fs = $mw->$method(%args);
- }
- else
- {
- $fs->configure(%args);
- }
- my $val = $fs->Show;
- $w->destroy if $created;
- return $val;
-}
-
-sub ColorDialog
-{
- require Tk::ColorEditor;
- DialogWrapper('ColorDialog',@_);
-}
-
-sub FDialog
-{
- require Tk::FBox;
- my $cmd = shift;
- if ($cmd =~ /Save/)
- {
- push @_, -type => 'save';
- }
- elsif ($cmd =~ /Directory/)
- {
- push @_, -type => 'dir';
- }
- DialogWrapper('FBox', $cmd, @_);
-}
-
-sub DirDialog
-{
- require Tk::DirTree;
- DialogWrapper('DirTreeDialog',@_);
-}
-
-*MotifFDialog = \&FDialog;
-
-*CORE::GLOBAL::exit = \&exit;
-
-sub MainLoop
-{
- unless ($inMainLoop)
- {
- local $inMainLoop = 1;
- while (Tk::MainWindow->Count)
- {
- DoOneEvent(0);
- }
- }
-}
-
-sub tkinit { return MainWindow->new(@_) }
-
-# a wrapper on eval which turns off user $SIG{__DIE__}
-sub catch (&)
-{
- my $sub = shift;
- eval {local $SIG{'__DIE__'}; &$sub };
-}
-
-my $Home;
-
-sub TranslateFileName
-{
- local $_ = shift;
- unless (defined $Home)
- {
- $Home = $ENV{'HOME'} || (defined $ENV{'HOMEDRIVE'} && defined $ENV{'HOMEPATH'} ? $ENV{'HOMEDRIVE'}.$ENV{'HOMEPATH'} : "");
- $Home =~ s#\\#/#g;
- $Home .= '/' unless $Home =~ m#/$#;
- }
- s#~/#$Home#g;
- # warn $_;
- return $_;
-}
-
-sub findINC
-{
- my $file = join('/',@_);
- my $dir;
- $file =~ s,::,/,g;
- foreach $dir (@INC)
- {
- my $path;
- return $path if (-e ($path = "$dir/$file"));
- }
- return undef;
-}
-
-sub idletasks
-{
- shift->update('idletasks');
-}
-
-sub backtrace
-{
- my ($self,$msg,$i) = @_;
- $i = 1 if @_ < 3;
- while (1)
- {
- my ($pack,$file,$line,$sub) = caller($i++);
- last unless defined($sub);
- $msg .= "\n $sub at $file line $line";
- }
- return "$msg\n";
-}
-
-sub die_with_trace
-{
- my ($self,$msg) = @_;
- die $self->backtrace($msg,1);
-}
-
-
-
-1;
-
-__END__
-
-sub Error
-{my $w = shift;
- my $error = shift;
- if (Exists($w))
- {
- my $grab = $w->grab('current');
- $grab->Unbusy if (defined $grab);
- }
- chomp($error);
- warn "Tk::Error: $error\n " . join("\n ",@_)."\n";
-}
-
-sub CancelRepeat
-{
- my $w = shift->MainWindow;
- my $id = delete $w->{_afterId_};
- $w->after('cancel',$id) if (defined $id);
-}
-
-sub RepeatId
-{
- my ($w,$id) = @_;
- $w = $w->MainWindow;
- $w->CancelRepeat;
- $w->{_afterId_} = $id;
-}
-
-
-
-#----------------------------------------------------------------------------
-# focus.tcl --
-#
-# This file defines several procedures for managing the input
-# focus.
-#
-# @(#) focus.tcl 1.6 94/12/19 17:06:46
-#
-# Copyright (c) 1994 Sun Microsystems, Inc.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-
-sub FocusChildren { shift->children }
-
-#
-# focusNext --
-# This procedure is invoked to move the input focus to the next window
-# after a given one. "Next" is defined in terms of the window
-# stacking order, with all the windows underneath a given top-level
-# (no matter how deeply nested in the hierarchy) considered except
-# for frames and toplevels.
-#
-# Arguments:
-# w - Name of a window: the procedure will set the focus
-# to the next window after this one in the traversal
-# order.
-sub focusNext
-{
- my $w = shift;
- my $cur = $w;
- while (1)
- {
- # Descend to just before the first child of the current widget.
- my $parent = $cur;
- my @children = $cur->FocusChildren();
- my $i = -1;
- # Look for the next sibling that isn't a top-level.
- while (1)
- {
- $i += 1;
- if ($i < @children)
- {
- $cur = $children[$i];
- next if ($cur->toplevel == $cur);
- last
- }
- # No more siblings, so go to the current widget's parent.
- # If it's a top-level, break out of the loop, otherwise
- # look for its next sibling.
- $cur = $parent;
- last if ($cur->toplevel() == $cur);
- $parent = $parent->parent();
- @children = $parent->FocusChildren();
- $i = lsearch(\@children,$cur);
- }
- if ($cur == $w || $cur->FocusOK)
- {
- $cur->tabFocus;
- return;
- }
- }
-}
-# focusPrev --
-# This procedure is invoked to move the input focus to the previous
-# window before a given one. "Previous" is defined in terms of the
-# window stacking order, with all the windows underneath a given
-# top-level (no matter how deeply nested in the hierarchy) considered.
-#
-# Arguments:
-# w - Name of a window: the procedure will set the focus
-# to the previous window before this one in the traversal
-# order.
-sub focusPrev
-{
- my $w = shift;
- my $cur = $w;
- my @children;
- my $i;
- my $parent;
- while (1)
- {
- # Collect information about the current window's position
- # among its siblings. Also, if the window is a top-level,
- # then reposition to just after the last child of the window.
- if ($cur->toplevel() == $cur)
- {
- $parent = $cur;
- @children = $cur->FocusChildren();
- $i = @children;
- }
- else
- {
- $parent = $cur->parent();
- @children = $parent->FocusChildren();
- $i = lsearch(\@children,$cur);
- }
- # Go to the previous sibling, then descend to its last descendant
- # (highest in stacking order. While doing this, ignore top-levels
- # and their descendants. When we run out of descendants, go up
- # one level to the parent.
- while ($i > 0)
- {
- $i--;
- $cur = $children[$i];
- next if ($cur->toplevel() == $cur);
- $parent = $cur;
- @children = $parent->FocusChildren();
- $i = @children;
- }
- $cur = $parent;
- if ($cur == $w || $cur->FocusOK)
- {
- $cur->tabFocus;
- return;
- }
- }
-
-}
-
-sub FocusOK
-{
- my $w = shift;
- my $value;
- catch { $value = $w->cget('-takefocus') };
- if (!$@ && defined($value))
- {
- return 0 if ($value eq '0');
- return $w->viewable if ($value eq '1');
- if ($value)
- {
- $value = $w->$value();
- return $value if (defined $value);
- }
- }
- if (!$w->viewable)
- {
- return 0;
- }
- catch { $value = $w->cget('-state') } ;
- if (!$@ && defined($value) && $value eq 'disabled')
- {
- return 0;
- }
- $value = grep(/Key|Focus/,$w->Tk::bind(),$w->Tk::bind(ref($w)));
- return $value;
-}
-
-
-# focusFollowsMouse
-#
-# If this procedure is invoked, Tk will enter "focus-follows-mouse"
-# mode, where the focus is always on whatever window contains the
-# mouse. If this procedure isn't invoked, then the user typically
-# has to click on a window to give it the focus.
-#
-# Arguments:
-# None.
-
-sub EnterFocus
-{
- my $w = shift;
- return unless $w;
- my $Ev = $w->XEvent;
- my $d = $Ev->d;
- $w->Tk::focus() if ($d eq 'NotifyAncestor' || $d eq 'NotifyNonlinear' || $d eq 'NotifyInferior');
-}
-
-sub tabFocus
-{
- shift->Tk::focus;
-}
-
-sub focusFollowsMouse
-{
- my $widget = shift;
- $widget->bind('all','<Enter>','EnterFocus');
-}
-
-# tkTraverseToMenu --
-# This procedure implements keyboard traversal of menus. Given an
-# ASCII character "char", it looks for a menubutton with that character
-# underlined. If one is found, it posts the menubutton's menu
-#
-# Arguments:
-# w - Window in which the key was typed (selects
-# a toplevel window).
-# char - Character that selects a menu. The case
-# is ignored. If an empty string, nothing
-# happens.
-sub TraverseToMenu
-{
- my $w = shift;
- my $char = shift;
- return unless(defined $char && $char ne '');
- $w = $w->toplevel->FindMenu($char);
-}
-# tkFirstMenu --
-# This procedure traverses to the first menubutton in the toplevel
-# for a given window, and posts that menubutton's menu.
-#
-# Arguments:
-# w - Name of a window. Selects which toplevel
-# to search for menubuttons.
-sub FirstMenu
-{
- my $w = shift;
- $w = $w->toplevel->FindMenu('');
-}
-
-# These wrappers don't use method syntax so need to live
-# in same package as raw Tk routines are newXS'ed into.
-
-sub Selection
-{my $widget = shift;
- my $cmd = shift;
- croak 'Use SelectionOwn/SelectionOwner' if ($cmd eq 'own');
- croak "Use Selection\u$cmd()";
-}
-
-# If we have sub Clipboard in Tk then use base qw(Tk::Clipboard ....)
-# calls it when it does its eval "require $base"
-#sub Clipboard
-#{my $w = shift;
-# my $cmd = shift;
-# croak "Use clipboard\u$cmd()";
-#}
-
-sub Receive
-{
- my $w = shift;
- warn 'Receive(' . join(',',@_) .')';
- die 'Tk rejects send(' . join(',',@_) .")\n";
-}
-
-sub break
-{
- die "_TK_BREAK_\n";
-}
-
-sub updateWidgets
-{
- my ($w) = @_;
- while ($w->DoOneEvent(DONT_WAIT|IDLE_EVENTS|WINDOW_EVENTS))
- {
- }
- $w;
-}
-
-sub ImageNames
-{
- image('names');
-}
-
-sub ImageTypes
-{
- image('types');
-}
-
-sub interps
-{
- my $w = shift;
- return $w->winfo('interps','-displayof');
-}
-
-sub lsearch
-{my $ar = shift;
- my $x = shift;
- my $i;
- for ($i = 0; $i < scalar @$ar; $i++)
- {
- return $i if ($$ar[$i] eq $x);
- }
- return -1;
-}
-
-
-sub getEncoding
-{
- my ($class,$name) = @_;
- eval { require Encode };
- if ($@)
- {
- require Tk::DummyEncode;
- return Tk::DummyEncode->getEncoding($name);
- }
- $name = $Tk::font_encoding{$name} if exists $Tk::font_encoding{$name};
- my $enc = Encode::find_encoding($name);
-
- unless ($enc)
- {
- $enc = Encode::find_encoding($name) if ($name =~ s/[-_]\d+$//)
- }
-# if ($enc)
-# {
-# print STDERR "Lookup '$name' => ".$enc->name."\n";
-# }
-# else
-# {
-# print STDERR "Failed '$name'\n";
-# }
- unless ($enc)
- {
- if ($name eq 'X11ControlChars')
- {
- require Tk::DummyEncode;
- $Encode::encoding{$name} = $enc = Tk::DummyEncode->getEncoding($name);
- }
- }
- return $enc;
-}
-
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Adjuster.pm b/Master/tlpkg/tlperl/lib/Tk/Adjuster.pm
deleted file mode 100644
index 382ec6db6f9..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Adjuster.pm
+++ /dev/null
@@ -1,436 +0,0 @@
-package Tk::Adjuster;
-
-use vars qw($VERSION);
-$VERSION = '4.007'; # $Id: //depot/Tkutf8/Tk/Adjuster.pm#7 $
-
-use base qw(Tk::Frame);
-
-# We cannot do this :
-
-# Construct Tk::Widget 'packAdjust';
-
-# because if managed object is Derived (e.g. a Scrolled) then our 'new'
-# will be delegated and hierachy gets turned inside-out
-# So packAdjust is autoloaded in Widget.pm
-
-
-Construct Tk::Widget qw(Adjuster);
-
-{package Tk::Adjuster::Item;
-
-use strict;
-use base qw(Tk::Frame);
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $mw->bind($class,'<1>',['BDown', 1]);
- $mw->bind($class,'<Shift-1>',['BDown', 0]);
- $mw->bind($class,'<B1-Motion>',['Motion',1]);
- $mw->bind($class,'<Shift-B1-Motion>',['Motion',0]);
- $mw->bind($class,'<ButtonRelease-1>',['Motion',0]);
- return $class;
-}
-
-sub BDown
-{
- my($w, $delay_mask) = @_;
- $w->{'start_x'} = $w->XEvent->x;
- $w->{'start_y'} = $w->XEvent->y;
- my $adj = $w->Parent;
- delete $adj->{'lin_info'};
- my $delay = $delay_mask && $adj->cget('-delay');
- if ($delay)
- {
- $adj->vert ? $adj->delta_width_bar(0) : $adj->delta_height_bar(0);
- }
-}
-
-sub Motion
-{
- my($w, $delay_mask) = @_;
- my $ev = $w->XEvent;
- my $adj = $w->Parent;
-
- my $delay = $delay_mask && $adj->cget('-delay');
- if ($adj->vert)
- {
- my $dx = $ev->x - $w->{'start_x'};
- $delay ? $adj->delta_width_bar($dx) : $adj->delta_width($dx);
- }
- else
- {
- my $dy = $ev->y - $w->{'start_y'};
- $delay ? $adj->delta_height_bar($dy) : $adj->delta_height($dy);
- }
-}
-
-}
-
-
-
-sub packAfter
-{
- my ($w,$s,%args) = @_;
- my $side = $args{'-side'} ? $args{'-side'} : 'top';
- $w->configure(-side => $side, -widget => $s);
- $w->packed($s, %args);
-}
-
-sub packForget
-{
- my ($w,$forget_slave) = @_;
- $w->Tk::Widget::packForget;
- $w->slave->packForget if $forget_slave;
-}
-
-# Called by Tk::Widget::packAdjust. It was here before packAfter was added
-sub packed
-{
- my ($w,$s,%args) = @_;
- delete $args{'-before'};
- delete $args{'-in'};
- $args{'-expand'} = 0;
- $args{'-after'} = $s;
- $args{'-fill'} = (($w->vert) ? 'y' : 'x');
- $w->pack(%args);
-}
-
-sub gridded
-{
- my ($w,$s,%args) = @_;
- # delete $args{'-before'};
- # $args{'-expand'} = 0;
- # $args{'-after'} = $s;
- # $args{'-fill'} = (($w->vert) ? 'y' : 'x');
- $w->grid(%args);
-}
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $mw->bind($class,'<Configure>','SizeChange');
- $mw->bind($class,'<Unmap>','Restore');
- $mw->bind($class,'<Map>','Mapped');
- return $class;
-}
-
-sub SizeChange
-{
- my $w = shift;
- # reqwidth/height of Adjuster is stored here. If it is partially pushed out
- # of the window, then $w->width/height returns that of the visible part.
- if ($w->vert)
- {
- my $sx = ($w->Width - $w->{'sep'}->Width)/2;
- $w->{'but'}->place('-x' => 0, '-y' => $w->Height-18);
- $w->{'sep'}->place('-x' => $sx, '-y' => 0, -relheight => 1);
- $w->configure(-width => $w->{'but'}->ReqWidth);
- $w->{'reqwidth'} = $w->reqwidth;
- }
- else
- {
- my $sy = ($w->Height - $w->{'sep'}->Height)/2;
- $w->{'but'}->place('-x' => $w->Width-18, '-y' => 0);
- $w->{'sep'}->place('-x' => 0, '-y' => $sy, -relwidth => 1);
- $w->configure(-height => $w->{'but'}->ReqHeight);
- $w->{'reqheight'} = $w->reqheight;
- }
- # Turn off geometry propagation in the slave. Do only if necessary, as this
- # causes repacking.
- my $s = $w->slave;
- $s->packPropagate('0') if $s->packSlaves && $s->packPropagate();
- $s->gridPropagate('0') if $s->gridSlaves && $s->gridPropagate();
-}
-
-sub Mapped
-{
- my $w = shift;
- $w->idletasks;
- my $m = $w->manager;
- if ($m =~ /^(?:pack|grid)$/)
- {
- my %info = $w->$m('info');
- my $master = $info{'-in'};
- $master->$m('propagate',0);
- $w->{'master'} = $master;
- }
- $w->slave_expand_off;
-}
-
-sub Populate
-{
- my ($w,$args) = @_;
- $w->SUPER::Populate($args);
- $w->{'sep'} = Tk::Adjuster::Item->new($w,-bd => 1, -relief => 'sunken');
- $w->{'but'} = Tk::Adjuster::Item->new($w,-bd => 1, -width => 8, -height => 8, -relief => 'raised');
-
- # Need to explicitly set frame width to 0 for Win32
- my $l = $w->{'lin'} = $w->toplevel->Frame(-bd => 0);
-
- my $cs = $w->ConfigSpecs(-widget => ['PASSIVE','widget','Widget',$w->Parent],
- -side => ['METHOD','side','Side','top'],
- -delay => ['PASSIVE','delay','Delay', 1],
- -background => [['SELF',$w->{'sep'},$w->{'but'}],'background','Background',undef],
- -foreground => [Tk::Configure->new($w->{'lin'},'-background'),'foreground','Foreground','black'],
- -restore => ['PASSIVE','restore', 'Restore', 1],
- );
- $w->_OnDestroy(qw(sep but lin master));
-}
-
-sub side
-{
- my ($w,$val) = @_;
- if (@_ > 1)
- {
- $w->{'side'} = $val;
- my $cursor;
- if ($w->vert)
- {
- $cursor = 'sb_h_double_arrow';
- $w->{'sep'}->configure(-width => 2, -height => 10000);
- }
- else
- {
- $cursor = 'sb_v_double_arrow';
- $w->{'sep'}->configure(-height => 2, -width => 10000);
- }
- my $x;
- foreach $x ($w->{'sep'},$w->{'but'})
- {
- $x->configure(-cursor => $cursor);
- }
- }
- return $w->{'side'};
-}
-
-sub slave
-{
- my $w = shift;
- my $s = $w->cget('-widget');
- return $s;
-}
-
-sub vert
-{
- my $w = shift;
- my $side = $w->cget('-side');
- return 1 if $side eq 'left';
- return -1 if $side eq 'right';
- return 0;
-}
-
-# If the Adjuster gets unmapped, it attempts to restore itself. If its
-# slave is mapped, then it reduces the size of the slave so that there is
-# then room in the master for the Adjuster widget.
-sub Restore
-{
- my $w = shift;
- return if ! $w->toplevel->IsMapped ||
- ! $w->slave->IsMapped ||
- ! $w->cget('-restore');
- $w->vert ? $w->delta_width(0) : $w->delta_height(0);
-}
-
-sub delta_width_bar
-{
- my ($w,$dx) = @_;
- my $l = $w->{'lin'};
- my $r = $w->{'sep'};
- my $t = $w->toplevel;
- my $m = $w->{'master'};
- my $s = $w->slave;
- my ($min_rootx, $max_rootx, $t_border);
- if (! $w->{'lin_info'})
- {
- my $m_border = $m->cget('-bd') + $m->cget('-highlightthickness');
- $t_border = $t->cget('-bd') + $t->cget('-highlightthickness');
- if ($w->cget('-side') eq 'right')
- {
- $min_rootx = $m->rootx + $m_border;
- $max_rootx = $s->rootx + $s->width - 1;
- }
- else
- {
- $min_rootx = $s->rootx;
- $max_rootx = $m->rootx + $m->width - $m_border - 1;
- }
- $w->{'lin_info'} = [$min_rootx, $max_rootx, $t_border];
- }
- else
- {
- ($min_rootx, $max_rootx, $t_border) = @{$w->{'lin_info'}};
- }
- $l->configure(-width => 1, -height => $w->height) unless $l->IsMapped;
-
- my $new_rootx = $w->rootx + $w->{'reqwidth'}/2 + $dx;
- $new_rootx = $min_rootx if $new_rootx < $min_rootx;
- $new_rootx = $max_rootx if $new_rootx > $max_rootx;
- my $placex = $new_rootx - $t->rootx - $t_border;
- my $placey = $w->rooty - $t->rooty - $t_border;
- $l->place(-in => $t, -anchor => 'n', '-x' => $placex, '-y' => $placey);
- my $this = $w->containing($new_rootx, $w->rooty + 1);
- $l->raise($this) if $this && $this ne $t;
-}
-
-sub delta_width
-{
- my ($w,$dx) = @_;
- my $l = $w->{'lin'};
- $l->placeForget;
- my $s = $w->slave;
- if ($s)
- {
- my $m = $w->{'master'};
- my $m_border = $m->cget('-bd') + $m->cget('-highlightthickness');
- my $w_width = $w->{'reqwidth'};
- my $m_width = $m->width;
- my $s_width = $s->width;
- my $max_width = $m_width - $w_width;
- my $max_s_width;
- if ($w->cget('-side') eq 'right')
- {
- $dx = -$dx;
- $max_s_width = $max_width -
- ($m->rootx + $m_width - ($s->rootx+$s_width)) - $m_border;
- }
- else
- {
- $max_s_width = $max_width - ($s->rootx - $m->rootx) - $m_border;
- }
- my $new_width = $s_width+$dx;
- $new_width = $max_s_width if $new_width > $max_s_width;
- $new_width = 0 if $new_width < 0;
- $s->GeometryRequest($new_width, $s->height);
- }
-}
-
-sub delta_height_bar
-{
- my ($w,$dy) = @_;
- my $l = $w->{'lin'};
- my $r = $w->{'sep'};
- my $t = $w->toplevel;
- my $m = $w->{'master'};
- my $s = $w->slave;
- my ($min_rooty, $max_rooty, $t_border);
- if (! $w->{'lin_info'})
- {
- my $m_border = $m->cget('-bd') + $m->cget('-highlightthickness');
- $t_border = $t->cget('-bd') + $t->cget('-highlightthickness');
- if ($w->cget('-side') eq 'bottom')
- {
- $min_rooty = $m->rooty + $m_border;
- $max_rooty = $s->rooty + $s->height - 1;
- }
- else
- {
- $min_rooty = $s->rooty;
- $max_rooty = $m->rooty + $m->height - $m_border - 1;
- }
- $w->{'lin_info'} = [$min_rooty, $max_rooty, $t_border];
- }
- else
- {
- ($min_rooty, $max_rooty, $t_border) = @{$w->{'lin_info'}};
- }
- $l->configure(-height => 1, -width => $w->width) unless $l->IsMapped;
-
- my $new_rooty = $w->rooty + $w->{'reqheight'}/2 + $dy;
- $new_rooty = $min_rooty if $new_rooty < $min_rooty;
- $new_rooty = $max_rooty if $new_rooty > $max_rooty;
- my $placey = $new_rooty - $t->rooty - $t_border;
- my $placex = $w->rootx - $t->rootx - $t_border;
- $l->place(-in => $t, -anchor => 'w', '-x' => $placex, '-y' => $placey);
- my $this = $w->containing($w->rootx + 1, $new_rooty);
- $l->raise($this) if $this && $this ne $t;
-}
-
-sub delta_height
-{
- my ($w,$dy) = @_;
- my $l = $w->{'lin'};
- $l->placeForget;
- my $s = $w->slave;
- if ($s)
- {
- my $m = $w->{'master'};
- my $m_border = $m->cget('-bd') + $m->cget('-highlightthickness');
- my $w_height = $w->{'reqheight'};
- my $m_height = $m->height;
- my $s_height = $s->height;
- my $max_height = $m_height - $w_height;
- my $max_s_height;
- if ($w->cget('-side') eq 'bottom')
- {
- $dy = -$dy;
- $max_s_height = $max_height -
- ($m->rooty + $m_height - ($s->rooty+$s_height)) - $m_border;
- }
- else
- {
- $max_s_height = $max_height - ($s->rooty - $m->rooty) - $m_border;
- }
- my $new_height = $s_height+$dy;
-
- $new_height = $max_s_height if $new_height > $max_s_height;
- $new_height = 0 if $new_height < 0;
- $s->GeometryRequest($s->width, $new_height);
- }
-}
-
-# Turn off expansion in the slave.
-# This is done only if necessary, as calls to pack/gridConfigure cause
-# repacking.
-# Before call to pack/gridConfigure, the reqwidth/reqheight is set to the
-# current width/height. This is because the geometry managers use
-# the requested values, not the actual, to calculate the new geometry.
-sub slave_expand_off
-{
- my $w = shift;
- my $s = $w->slave;
- return if ! $s;
-
- my $manager = $s->manager;
- if ($manager eq 'pack')
- {
- my %info = $s->packInfo;
- my $expand = $info{'-expand'};
- if ($expand)
- {
- $s->GeometryRequest($s->width, $s->height);
- $s->packConfigure(-expand => 0);
- }
- }
- elsif ($manager eq 'grid')
- {
- my %info = $s->gridInfo;
- my $master = $info{'-in'};
- if ($w->vert)
- {
- my $col = $info{'-column'};
- my $expand = $master->gridColumnconfigure($col, '-weight');
- if ($expand)
- {
- $s->GeometryRequest($s->width, $s->height);
- $master->gridColumnconfigure($col, -weight => 0);
- }
- }
- else
- {
- my $row = $info{'-row'};
- my $expand = $master->gridRowconfigure($row, '-weight');
- if ($expand)
- {
- $s->GeometryRequest($s->width, $s->height);
- $master->gridRowconfigure($row, -weight => 0);
- }
- }
- }
-}
-
-1;
-
-__END__
-
-=cut #' emacs hilighting...
diff --git a/Master/tlpkg/tlperl/lib/Tk/After.pm b/Master/tlpkg/tlperl/lib/Tk/After.pm
deleted file mode 100644
index 85a0e406ee5..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/After.pm
+++ /dev/null
@@ -1,104 +0,0 @@
-# Copyright (c) 1995-2004 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-package Tk::After;
-use Carp;
-
-use vars qw($VERSION);
-$VERSION = '4.007'; # $Id: //depot/Tkutf8/Tk/After.pm#11 $
-
-sub _cancelAll
-{
- my $w = shift;
- my $h = delete $w->{_After_};
- foreach my $obj (values %$h)
- {
- # carp "Auto cancel ".$obj->[1]." for ".$obj->[0]->PathName;
- $obj->cancel;
- bless $obj,"Tk::After::Cancelled";
- }
-}
-
-sub Tk::After::Cancelled::once { }
-sub Tk::After::Cancelled::repeat { }
-
-sub submit
-{
- my $obj = shift;
- my $w = $obj->[0];
- my $id = $obj->[1];
- my $t = $obj->[2];
- my $method = $obj->[3];
- delete($w->{_After_}{$id}) if (defined $id);
- $id = $w->Tk::after($t,[$method => $obj]);
- unless (exists $w->{_After_})
- {
- $w->{_After_} = {};
- $w->OnDestroy([\&_cancelAll, $w]);
- }
- $w->{_After_}{$id} = $obj;
- $obj->[1] = $id;
- return $obj;
-}
-
-sub DESTROY
-{
- my $obj = shift;
- $obj->cancel;
- undef $obj->[0];
- undef $obj->[4];
-}
-
-sub new
-{
- my ($class,$w,$t,$method,@cb) = @_;
- my $cb = (@cb == 1) ? shift(@cb) : [@cb];
- my $obj = bless [$w,undef,$t,$method,Tk::Callback->new($cb)],$class;
- return $obj->submit;
-}
-
-sub cancel
-{
- my $obj = shift;
- my $id = $obj->[1];
- my $w = $obj->[0];
- if ($id)
- {
- $w->Tk::after('cancel'=> $id) if Tk::Exists($w);
- delete $w->{_After_}{$id} if exists $w->{_After_};
- $obj->[1] = undef;
- }
- return $obj;
-}
-
-sub repeat
-{
- my $obj = shift;
- $obj->submit;
- local $Tk::widget = $obj->[0];
- $obj->[4]->Call;
-}
-
-sub once
-{
- my $obj = shift;
- my $w = $obj->[0];
- my $id = $obj->[1];
- delete $w->{_After_}{$id};
- local $Tk::widget = $w;
- $obj->[4]->Call;
-}
-
-sub time {
- my $obj = shift;
- my $delay = shift;
- if (defined $delay) {
- $obj->cancel if $delay == 0;
- $obj->[2] = $delay;
- }
- $obj->[2];
-}
-
-1;
-__END__
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Animation.pm b/Master/tlpkg/tlperl/lib/Tk/Animation.pm
deleted file mode 100644
index 428f3f1f48f..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Animation.pm
+++ /dev/null
@@ -1,178 +0,0 @@
-package Tk::Animation;
-
-use vars qw($VERSION);
-$VERSION = '4.006'; # $Id: //depot/Tkutf8/Tk/Animation.pm#8 $
-
-use Tk::Photo;
-use base qw(Tk::Photo);
-
-Construct Tk::Widget 'Animation';
-
-sub MainWindow
-{
- return shift->{'_MainWIndow_'};
-}
-
-sub add_frame
-{
- my $obj = shift;
- $obj->{'_frames_'} = [] unless exists $obj->{'_frames_'};
- push(@{$obj->{'_frames_'}},@_);
-}
-
-sub new
-{
- my ($class,$widget,%args) = @_;
- my $obj = $class->SUPER::new($widget,%args);
- $obj->{'_MainWIndow_'} = $widget->MainWindow;
- if ($args{'-format'} eq 'gif')
- {
- my @images;
- local $@;
- while (1)
- {
- my $index = @images;
- $args{'-format'} = "gif -index $index";
- my $img;
- eval {local $SIG{'__DIE__'}; $img = $class->SUPER::new($widget,%args) };
- last if $@;
- push(@images,$img);
- }
- if (@images > 1)
- {
- $obj->add_frame(@images);
- $obj->{'_frame_index_'} = 0;
- }
- }
- $obj->set_image( 0 );
- $obj->{_delta_} = 1;
- $obj->{_blank_} = 0;
- return $obj;
-}
-
-sub fast_forward {
-
- my( $self, $delta) = @_;
-
- $self->{_delta_} = $delta;
- if( not exists $self->{_playing_} ) {
- my $playing = exists $self->{'_NextId_'};
- $self->{_playing_} = $playing;
- $self->resume_animation if not $playing;
- } else {
- my $playing = delete $self->{_playing_};
- $self->pause_animation if not $playing;
- }
-
-} # end fast_forward
-
-*fast_reverse = \&fast_forward;
-
-sub frame_count {
- my $frames = shift->{'_frames_'};
- return -1 unless $frames;
- return @$frames;
-}
-
-sub blank {
- my( $self, $blank ) = @_;
- $blank = 1 if not defined $blank;
- $self->{_blank_} = $blank;
- $blank;
-}
-
-sub set_image
-{
- my ($obj,$index) = @_;
- my $frames = $obj->{'_frames_'};
- return unless $frames && @$frames;
- $index = 0 unless $index < @$frames;
- $obj->blank if $obj->{_blank_}; # helps some make others worse
- $obj->copy($frames->[$index]);
- $obj->{'_frame_index_'} = $index;
-}
-
-sub next_image
-{
- my ($obj, $delta) = @_;
- $delta = $obj->{_delta_} unless $delta;
- my $frames = $obj->{'_frames_'};
- return unless $frames && @$frames;
- $obj->set_image((($obj->{'_frame_index_'} || 0) + $delta) % @$frames);
-}
-
-sub prev_image { shift->next_image( -1 ) }
-
-sub pause_animation {
- my $self = shift;
- my $id = delete $self->{'_NextId_'};
- Tk::catch { $id->cancel } if $id;
-}
-
-sub resume_animation {
- my( $self, $period ) = @_;
- if( not defined $self->{'_period_'} ) {
- $self->{'_period_'} = defined( $period ) ? $period : 100;
- }
- $period = $self->{'_period_'};
- my $w = $self->MainWindow;
- $self->{'_NextId_'} = $w->repeat( $period => [ $self => 'next_image' ] );
-}
-
-sub start_animation
-{
- my ($obj,$period) = @_;
- $period ||= 100;
- my $frames = $obj->{'_frames_'};
- return unless $frames && @$frames;
- my $w = $obj->MainWindow;
- $obj->stop_animation;
- $obj->{'_period_'} = $period;
- $obj->{'_NextId_'} = $w->repeat($period,[$obj,'next_image']);
-}
-
-sub stop_animation
-{
- my ($obj) = @_;
- my $id = delete $obj->{'_NextId_'};
- Tk::catch { $id->cancel } if $id;
- $obj->set_image(0);
-}
-
-1;
-__END__
-
-=cut
-
-#
-# This almost works for changing the animation on the fly
-# but does not resize things correctly
-#
-
-sub gif_sequence
-{
- my ($obj,%args) = @_;
- my $widget = $obj->MainWindow;
- my @images;
- local $@;
- while (1)
- {
- my $index = @images;
- $args{'-format'} = "gif -index $index";
- my $img;
- eval
- {local $SIG{'__DIE__'};
- my $img = $widget->Photo(%args);
- push(@images,$img);
- };
- last if $@;
- }
- if (@images)
- {
- delete $obj->{'_frames_'};
- $obj->add_frame(@images);
- $obj->configure(-width => 0, -height => 0);
- $obj->set_frame(0);
- }
-}
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Balloon.pm b/Master/tlpkg/tlperl/lib/Tk/Balloon.pm
deleted file mode 100644
index 2ee0f6c3bce..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Balloon.pm
+++ /dev/null
@@ -1,621 +0,0 @@
-#
-# The help widget that provides both "balloon" and "status bar"
-# types of help messages.
-#
-# This is a patched version of Balloon 3.037 - it adds support
-# for different orientations of the balloon widget, depending
-# on wether there's enough space for it. The little arrow now
-# should always point directly to the client.
-# Added by Gerhard Petrowitsch (gerhard.petrowitsch@philips.com)
-#
-# Nov 1, 2003 - Jack Dunnigan
-# Added support for more than one screen in single logical
-# screen mode (i.e. xinerama, dual monitors)
-
-package Tk::Balloon;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #10 $ =~ /\D(\d+)\s*$/;
-
-use Tk qw(Ev Exists);
-use Carp;
-require Tk::Toplevel;
-
-Tk::Widget->Construct('Balloon');
-use base qw(Tk::Toplevel);
-
-# use UNIVERSAL; avoid the UNIVERSAL.pm file subs are XS in perl core
-
-use strict;
-
-my @balloons;
-my $button_up = 0;
-my %arrows = ( TL => 'R0lGODlhBgAGAJEAANnZ2QAAAP///////yH5BAEAAAAALAAAAAAGAAYAAAINjA0HAEdwLCwMKIQfBQA7',
- TR => 'R0lGODlhBgAGAJEAANnZ2QAAAP///////yH5BAEAAAAALAAAAAAGAAYAAAIRBGMDwAEQkgAIAAoCABEEuwAAOw==',
- BR => 'R0lGODlhBgAGAJEAANnZ2QAAAP///////yH5BAEAAAAALAAAAAAGAAYAAAIPDOHHhYVRAIgIAEISQLELADs=',
- BL => 'R0lGODlhBgAGAJEAANnZ2QAAAP///////yH5BAEAAAAALAAAAAAGAAYAAAIPhB1xAUFALCIMKAaAWQAVADs=',
- NO => 'R0lGODlhAQABAJEAANnZ2f///////////yH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='
- );
-
-
-sub ClassInit {
- my ($class, $mw) = @_;
- $mw->bind('all', '<Motion>', ['Tk::Balloon::Motion', Ev('X'), Ev('Y'), Ev('s')]);
- $mw->bind('all', '<Leave>', ['Tk::Balloon::Motion', Ev('X'), Ev('Y'), Ev('s')]);
- $mw->bind('all', '<Button>', 'Tk::Balloon::ButtonDown');
- $mw->bind('all', '<ButtonRelease>', 'Tk::Balloon::ButtonUp');
- return $class;
-}
-
-sub Populate {
- my ($w, $args) = @_;
-
- $w->SUPER::Populate($args);
-
- $w->overrideredirect(1);
- $w->withdraw;
- # Only the container frame's background should be black... makes it
- # look better.
- $w->configure(-background => 'black');
-
- # the balloon arrows
- $w->{img_tl} = $w->Photo(-data => $arrows{TL}, -format => 'gif');
- $w->{img_tr} = $w->Photo(-data => $arrows{TR}, -format => 'gif');
- $w->{img_bl} = $w->Photo(-data => $arrows{BL}, -format => 'gif');
- $w->{img_br} = $w->Photo(-data => $arrows{BR}, -format => 'gif');
- $w->{img_no} = $w->Photo(-data => $arrows{NO}, -format => 'gif');
- $w->OnDestroy([$w, '_destroyed']);
-
- $w->{'pointer'} = $w->Label(-bd=>0, -relief=>'flat',-image=>$w->{img_no});
-
- # the balloon message
- # We give the Label a big borderwidth
- # ..enough to slide a 6x6 gif image along the border including some space
-
- my $ml = $w->Label(-bd => 0,
- -padx => 10,
- -pady => 3,
- -justify => 'left',
- -relief=>'flat');
- $w->Advertise('message' => $ml);
-
- $ml->pack(
- -side => 'top',
- -anchor => 'nw',
- -expand => 1,
- -fill => 'both',
- -padx => 0,
- -pady => 0);
-
- # append to global list of balloons
- push(@balloons, $w);
- $w->{'popped'} = 0;
- $w->{'buttonDown'} = 0;
- $w->{'menu_index'} = 'none';
- $w->{'menu_index_over'} = 'none';
- $w->{'canvas_tag'} = '';
- $w->{'canvas_tag_over'} = '';
- $w->{'current_screen'} = 0;
-
- $w->ConfigSpecs(-installcolormap => ['PASSIVE', 'installColormap', 'InstallColormap', 0],
- -initwait => ['PASSIVE', 'initWait', 'InitWait', 350],
- -state => ['PASSIVE', 'state', 'State', 'both'],
- -statusbar => ['PASSIVE', 'statusBar', 'StatusBar', undef],
- -statusmsg => ['PASSIVE', 'statusMsg', 'StatusMsg', ''],
- -balloonmsg => ['PASSIVE', 'balloonMsg', 'BalloonMsg', ''],
- -balloonposition => ['PASSIVE', 'balloonPosition', 'BalloonPosition', 'widget'],
- -postcommand => ['CALLBACK', 'postCommand', 'PostCommand', undef],
- -cancelcommand => ['CALLBACK', 'cancelCommand', 'CancelCommand', undef],
- -motioncommand => ['CALLBACK', 'motionCommand', 'MotionCommand', undef],
- -background => ['DESCENDANTS', 'background', 'Background', '#C0C080'],
- -foreground => ['DESCENDANTS', 'foreground', 'Foreground', undef],
- -font => [$ml, 'font', 'Font', '-*-helvetica-medium-r-normal--*-120-*-*-*-*-*-*'],
- -borderwidth => ['SELF', 'borderWidth', 'BorderWidth', 1],
- -numscreens=>['PASSIVE', 'numScreens','NumScreens',1],
- );
-}
-
-# attach a client to the balloon
-sub attach {
- my ($w, $client, %args) = @_;
- foreach my $key (grep(/command$/,keys %args))
- {
- $args{$key} = Tk::Callback->new($args{$key});
- }
- my $msg = delete $args{-msg};
- $args{-balloonmsg} = $msg unless exists $args{-balloonmsg};
- $args{-statusmsg} = $msg unless exists $args{-statusmsg};
- $w->{'clients'}{$client} = \%args;
- $client->OnDestroy([$w, 'detach', $client]);
-}
-
-# detach a client from the balloon.
-sub detach {
- my ($w, $client) = @_;
- if (Exists($w))
- {
- $w->Deactivate if ($client->IS($w->{'client'}));
- }
- delete $w->{'clients'}{$client};
-}
-
-sub GetOption
-{
- my ($w,$opt,$client) = @_;
- $client = $w->{'client'} unless defined $client;
- if (defined $client)
- {
- my $info = $w->{'clients'}{$client};
- return $info->{$opt} if exists $info->{$opt};
- }
- return $w->cget($opt);
-}
-
-sub Motion {
- my ($ewin, $x, $y, $s) = @_;
-
- return if not defined $ewin;
-
- # Find which window we are over
- my $over = $ewin->Containing($x, $y);
-
- return if &grabBad($ewin, $over);
-
- foreach my $w (@balloons) {
- # if cursor has moved over the balloon -- ignore
- next if defined $over and $over->toplevel eq $w;
-
- # find the client window that matches
- my $client = $over;
- while (defined $client) {
- last if (exists $w->{'clients'}{$client});
- $client = $client->Parent;
- }
- if (defined $client) {
- # popping up disabled -- ignore
- my $state = $w->GetOption(-state => $client);
- next if $state eq 'none';
- # Check if a button was recently released:
- my $deactivate = 0;
- if ($button_up) {
- $deactivate = 1;
- $button_up = 0;
- }
- # Deactivate it if the motioncommand says to:
- my $command = $w->GetOption(-motioncommand => $client);
- $deactivate = $command->Call($client, $x, $y) if defined $command;
- if ($deactivate)
- {
- $w->Deactivate;
- }
- else
- {
- # warn "deact: $client $w->{'client'}";
- $w->Deactivate unless $client->IS($w->{'client'});
- my $msg = $client->BalloonInfo($w,$x,$y,'-statusmsg','-balloonmsg');
- if (defined($msg))
- {
- my $delay = delete $w->{'delay'};
- $delay->cancel if defined $delay;
- my $initwait = $w->GetOption(-initwait => $client);
- $w->{'delay'} = $client->after($initwait, sub {$w->SwitchToClient($client);});
- $w->{'client'} = $client;
- }
- }
- } else {
- # cursor is at a position covered by a non client
- # pop down the balloon if it is up or scheduled.
- $w->Deactivate;
- }
- }
-}
-
-sub ButtonDown {
- my ($ewin) = @_;
-
- foreach my $w (@balloons) {
- $w->Deactivate;
- }
-}
-
-sub ButtonUp {
- $button_up = 1;
-}
-
-# switch the balloon to a new client
-sub SwitchToClient {
- my ($w, $client) = @_;
- return unless Exists($w);
- return unless Exists($client);
- return unless $client->IS($w->{'client'});
- return if &grabBad($w, $client);
- my $command = $w->GetOption(-postcommand => $client);
- if (defined $command) {
- # Execute the user's command and return if it returns false:
- my $pos = $command->Call($client);
- return if not $pos;
- if ($pos =~ /^(\d+),(\d+)$/) {
- # Save the returned position so the Popup method can use it:
- $w->{'clients'}{$client}{'postposition'} = [$1, $2];
- }
- }
- my $state = $w->GetOption(-state => $client);
- $w->Popup if ($state =~ /both|balloon/);
- $w->SetStatus if ($state =~ /both|status/);
- $w->{'popped'} = 1;
- $w->{'delay'} = $w->repeat(200, ['Verify', $w, $client]);
-}
-
-sub grabBad {
-
- my ($w, $client) = @_;
-
- return 0 unless Exists($client);
- my $g = $w->grabCurrent;
- return 0 unless defined $g;
- return 0 if $g->isa('Tk::Menu');
- return 0 if $g eq $client;
-
- # The grab is OK if $client is a decendant of $g. Use the internal Tcl/Tk
- # pathname (yes, it's cheating, but it's legal).
-
- return 0 if $g == $w->MainWindow;
- my $wp = $w->PathName;
- my $gp = $g->PathName;
- return 0 if $wp =~ /^$gp/;
- return 1; # bad grab
-
-} # end grabBad
-
-
-sub Subclient
-{
- my ($w,$data) = @_;
- if (defined($w->{'subclient'}) && (!defined($data) || $w->{'subclient'} ne $data))
- {
- $w->Deactivate;
- }
- $w->{'subclient'} = $data;
-}
-
-sub Verify {
- my $w = shift;
- my $client = shift;
- my ($X,$Y) = (@_) ? @_ : ($w->pointerxy);
- my $over = $w->Containing($X,$Y);
- return if not defined $over or ($over->toplevel eq $w);
- my $deactivate = # DELETE? or move it to the isa-Menu section?:
- # ($over ne $client) or
- not $client->IS($w->{'client'})
-# or (!$client->isa('Tk::Menu') && $w->grabCurrent);
-# or $w->grabbad($client);
- or &grabBad($w, $client);
- if ($deactivate)
- {
- $w->Deactivate;
- }
- else
- {
- $client->BalloonInfo($w,$X,$Y,'-statusmsg','-balloonmsg');
- }
-}
-
-sub Deactivate {
- my ($w) = @_;
- my $delay = delete $w->{'delay'};
- $delay->cancel if defined $delay;
- if ($w->{'popped'}) {
- my $client = $w->{'client'};
- my $command = $w->GetOption(-cancelcommand => $client);
- if (defined $command) {
- # Execute the user's command and return if it returns false:
- return if not $command->Call($client);
- }
- $w->withdraw;
- $w->ClearStatus;
- $w->{'popped'} = 0;
- $w->{'menu_index'} = 'none';
- $w->{'canvas_tag'} = '';
- }
- $w->{'client'} = undef;
- $w->{'subclient'} = undef;
- $w->{'location'} = undef;
-}
-
-sub Popup {
- my ($w) = @_;
- if ($w->cget(-installcolormap)) {
- $w->colormapwindows($w->winfo('toplevel'))
- }
- my $client = $w->{'client'};
- return if not defined $client or not exists $w->{'clients'}{$client};
- my $msg = $client->BalloonInfo($w, $w->pointerxy,'-balloonmsg');
- # Dereference it if it looks like a scalar reference:
- $msg = $$msg if UNIVERSAL::isa($msg, 'SCALAR');
-
- $w->Subwidget('message')->configure(-text => $msg);
- $w->idletasks;
-
- return unless Exists($w);
- return unless Exists($client);
- return if $msg eq ''; # Don't popup empty balloons.
-
- my ($x, $y);
- my $pos = $w->GetOption(-balloonposition => $client);
- my $postpos = delete $w->{'clients'}{$client}{'postposition'};
- if (defined $postpos) {
- # The postcommand must have returned a position for the balloon - I will use that:
- ($x,$y) = @{$postpos};
- } elsif ($pos eq 'mouse') {
- ($x,$y)=$client->pointerxy; # We adjust the position later
- } elsif ($pos eq 'widget') {
- $x = int($client->rootx + $client->width/2);
- $y = int($client->rooty + int ($client->height/1.3));
- } else {
- croak "'$pos' is not a valid position for the balloon - it must be one of: 'widget', 'mouse'.";
- }
-
- $w->idletasks;
-
- # Explanation of following code. [JD]
- # PREMISE: We want to ensure that the balloon is always "on screen".
- # To do this we use calculate the size of the
- # toplevel before it is mapped. Then we adjust it's position with respect to the
- # mouse cursor or widget. Balloons are usually shown below and to the right of the target.
- # From extensive KDE experience using Xinerama, and from using dual monitors on WinXP..
- # the balloon will extend across two monitors in single logical screen mode (SLS).
- # This is an undesirable characteristic indeed. Trying to read a disjointed balloon
- # across monitors is not fun.
- #
- # The intent of the following code is to fix this problem. We do this by avoiding
- # placement of any part of the balloon over,say, the "half screenwidth" mark (for two
- # monitors in SLS mode) or "thirds of screenwidth" mark (for 3 monitors) and so on...
- # i.e. In SLS mode these *WILL BE* separate screens and as such, should be considered hard
- # boundaries to be avoided.
- #
- # The only drawback of this code, is I know of no way to actually determine this on a
- # user by user basis. This means that the developer or administrator will have to know
- # the hardware (monitor) setup for which the application is designed.
- #
- # This code uses Gerhard's GIF images but changes *how* the image gets shown. Instead
- # of creating four separate labels, we configure only ONE label with the proper image.
- # Then using the place geometry manager, this image/label can be "slid" along the
- # appropriate side of the toplevel so that it always points directly at the target widget.
- #
- # Here we go..
-
- my ($width, $height) = ($w->reqwidth, $w->reqheight);
- my ($sw, $sh) = ($w->screenwidth, $w->screenheight);
- my $numscreen = $w->cget(-numscreens);
- my $deltax = $sw/$numscreen;
- my $leftedge;
- my $rightedge;
- my $count = 0;
- for (my $i=0; $i<$sw; $i+=$deltax){
- $leftedge = $i;
- $rightedge = $i + $deltax;
- if ($x >= $leftedge && $x < $rightedge ){
- last;
- }
- $count++;
- }
-
- # Force another look at balloon location because mouse has switched
- # virtual screens.
- $w->{'location'} = undef unless ( $count == $w->{'current_screen'} );
- $w->{'current_screen'} = $count;
-
- my $xx=undef;
- my $yy=undef; # to hold final toplevel placement
- my $slideOffsetX = 0;
- my $slideOffsetY = 0;
- my $cornerOffset = 5; #default - keep corner away from pointer
- my $testtop = $y - $height - $cornerOffset;
- my $testbottom = $y + $height + (2*$cornerOffset);
- my $testright = $x + $width + (2*$cornerOffset);
- my $testleft = $x - $width - $cornerOffset;
- my $vert='bottom'; #default
- my $horiz='right'; #default
-
-
- if ( defined $w->{'location'} ){
- # Once balloon is activated, **don't** change the location of the balloon.
- # It is annoying to have it jump from one location to another.
- ( $w->{'location'}=~/top/ ) ? ( $vert = 'top' ) : ( $vert = 'bottom' );
- ( $w->{'location'}=~/left/ ) ? ( $horiz = 'left' ) : ( $horiz = 'right' );
-
- if ($vert eq 'top' && $testtop < 0) {
- $yy = 0;
- $slideOffsetY = $testtop;
- }
- elsif ($vert eq 'bottom' && $testbottom > $sh) {
- $slideOffsetY = $testbottom - $sh;
- }
-
- if ($horiz eq 'left' && $testleft < $leftedge) {
- $xx = $leftedge;
- }
- elsif ($horiz eq 'right' && $testright > $rightedge) {
- $slideOffsetX = $testright - $rightedge;
- }
- }
- else {
- #Test balloon positions in the vertical
- if ($testbottom > $sh) {
- #Then offscreen to bottom, check top
- if ($testtop >= 0) {
- $vert = 'top';
- }
- elsif ($y > $sh/2) {
- #still offscreen to top but there is more room above then below
- $vert = 'top';
- $yy=0;
- $slideOffsetY = $testtop;
- }
- if ($vert eq 'bottom'){
- #Calculate Yoffset to fit entire balloon onto screen
- $slideOffsetY = $testbottom - $sh;
- }
- }
- #Test balloon positions in the horizontal
-
- if ($testright > $rightedge) {
- #The offscreen, check left
- if ($testleft >= $leftedge) {
- $horiz = 'left';
- }
- elsif ($x > ($leftedge+$deltax) ) {
- #still offscreen to left but there is more room to left than right
- $horiz = 'left';
- $xx=0;
- $slideOffsetX = $testleft;
- }
- if ($horiz eq 'right'){
- #Calculate Xoffset to fit entire balloon onto screen
- $slideOffsetX = $testright - $rightedge;
- }
- }
- }
-
- $w->{'location'} = $vert.$horiz unless (defined $w->{'location'});
-
- if ($w->{'location'} eq 'bottomright') {
- if ( $slideOffsetX or $slideOffsetY ) {
- $w->{'pointer'}->configure(-image => $w->{img_no});
- }
- else {
- $w->{'pointer'}->configure(-image => $w->{img_tl});
- }
-
- $w->{'pointer'}->place(
- -in=>$w,
-# -relx=>0, -x=>$slideOffsetX + 2,
-# -rely=>0, -y=>$slideOffsetY + 2,
- -relx=>0, -x=>2,
- -rely=>0, -y=>2,
- -bordermode=>'outside',
- -anchor=>'nw');
-
- $xx=$x-$slideOffsetX+(2*$cornerOffset) unless (defined $xx);
- $yy=$y-$slideOffsetY+(2*$cornerOffset) unless (defined $yy);
-
- }
- elsif ($w->{'location'} eq 'bottomleft') {
- if ( $slideOffsetX or $slideOffsetY ) {
- $w->{'pointer'}->configure(-image => $w->{img_no});
- }
- else {
- $w->{'pointer'}->configure(-image => $w->{img_tr});
- }
-
- $w->{'pointer'}->place(-in=>$w,
-# -relx=>1, -x=>$slideOffsetX - 2,
-# -rely=>0, -y=>$slideOffsetY + 2,
- -relx=>1, -x=>-2,
- -rely=>0, -y=>2,
- -bordermode=>'outside',
- -anchor=>'ne');
-
- $xx=$x-$width-$slideOffsetX-$cornerOffset unless (defined $xx);
- $yy=$y-$slideOffsetY+(2*$cornerOffset) unless (defined $yy);
-
- }
- elsif ($w->{'location'} eq 'topright') {
- if ( $slideOffsetX or $slideOffsetY ) {
- $w->{'pointer'}->configure(-image => $w->{img_no});
- }
- else {
- $w->{'pointer'}->configure(-image => $w->{img_bl});
- }
-
- $w->{'pointer'}->place(-in=>$w,
-# -relx=>0, -x=>$slideOffsetX + 2,
-# -rely=>1, -y=>$slideOffsetY - 2,
- -relx=>0, -x=>2,
- -rely=>1, -y=>-2,
- -bordermode=>'outside',
- -anchor=>'sw');
-
- $xx=$x-$slideOffsetX+$cornerOffset unless (defined $xx);
- $yy=$y-$height-$slideOffsetY-$cornerOffset unless (defined $yy);
- }
- elsif ($w->{'location'} eq 'topleft') {
- if ( $slideOffsetX or $slideOffsetY ) {
- $w->{'pointer'}->configure(-image => $w->{img_no});
- }
- else {
- $w->{'pointer'}->configure(-image => $w->{img_br});
- }
-
- $w->{'pointer'}->place(-in=>$w,
-# -relx=>1, -x=>$slideOffsetX - 2,
-# -rely=>1, -y=>$slideOffsetY - 2,
- -relx=>1, -x=>-2,
- -rely=>1, -y=>-2,
- -bordermode=>'outside',
- -anchor=>'se');
-
- $xx=$x-$width-$slideOffsetX-$cornerOffset unless (defined $xx);
- $yy=$y-$height-$slideOffsetY-$cornerOffset unless (defined $yy);
- }
-
- $w->{'pointer'}->raise;
- $xx = int($xx);
- $yy = int($yy);
- $w->geometry("+$xx+$yy");
- $w->deiconify();
- $w->raise;
-}
-
-sub SetStatus {
- my ($w) = @_;
- my $client = $w->{'client'};
- my $s = $w->GetOption(-statusbar => $client);
- if (defined $s and $s->winfo('exists')) {
- my $vref = $s->cget(-textvariable);
- return if not defined $client or not exists $w->{'clients'}{$client};
- my $msg = $client->BalloonInfo($w, $w->pointerxy,'-statusmsg');
- # Dereference it if it looks like a scalar reference:
- $msg = $$msg if UNIVERSAL::isa($msg, 'SCALAR');
- if (not defined $vref) {
- eval { $s->configure(-text => $msg); };
- } else {
- $$vref = $msg;
- }
- }
-}
-
-sub ClearStatus {
- my ($w) = @_;
- my $client = $w->{'client'};
- my $s = $w->GetOption(-statusbar => $client);
- if (defined $s and $s->winfo('exists')) {
- my $vref = $s->cget(-textvariable);
- if (defined $vref) {
- $$vref = '';
- } else {
- eval { $s->configure(-text => ''); }
- }
- }
-}
-
-sub _destroyed {
- my ($w) = @_;
- # This is called when widget is destroyed (no matter how!)
- # via the ->OnDestroy hook set in Populate.
- # remove ourselves from the list of baloons.
- @balloons = grep($w != $_, @balloons);
-
- # FIXME: If @balloons is now empty perhaps remove the 'all' bindings
- # to reduce overhead until another balloon is created?
-
- # Delete the images
- for (qw(no tl tr bl br)) {
- my $img = delete $w->{"img_$_"};
- $img->delete if defined $img;
- }
-}
-
-1;
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Bitmap.pm b/Master/tlpkg/tlperl/lib/Tk/Bitmap.pm
deleted file mode 100644
index d081a393804..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Bitmap.pm
+++ /dev/null
@@ -1,10 +0,0 @@
-package Tk::Bitmap;
-require Tk;
-require Tk::Image;
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/Bitmap.pm#4 $
-use base qw(Tk::Image);
-Construct Tk::Image 'Bitmap';
-sub Tk_image { 'bitmap' }
-1;
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Tk/BrowseEntry.pm b/Master/tlpkg/tlperl/lib/Tk/BrowseEntry.pm
deleted file mode 100644
index 5c4b6b782c2..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/BrowseEntry.pm
+++ /dev/null
@@ -1,510 +0,0 @@
-#
-# BrowseEntry is a stripped down version of ComboBox.tcl from Tix4.0
-#
-# Some additions by Slaven Rezic <slaven@rezic.de> to make the widget
-# look like the Windows' Combobox. There are also additional options.
-#
-
-package Tk::BrowseEntry;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #13 $ =~ /\D(\d+)\s*$/;
-
-use Tk qw(Ev);
-use Carp;
-use strict;
-
-use base qw(Tk::Frame);
-Construct Tk::Widget 'BrowseEntry';
-
-require Tk::LabEntry;
-
-sub LabEntryWidget { "LabEntry" }
-sub ButtonWidget { "Button" }
-sub ListboxWidget { "Listbox" }
-
-sub Populate {
- my ($w, $args) = @_;
-
- $w->Tk::Frame::Populate($args);
-
- # entry widget and arrow button
- my $lpack = delete $args->{-labelPack};
- if (not defined $lpack) {
- $lpack = [-side => 'left', -anchor => 'e'];
- }
- $w->{_BE_Style} = delete $args->{-style} || $Tk::platform;
- my $LabEntry = $w->LabEntryWidget;
- my $Listbox = $w->ListboxWidget;
- my $Button = $w->ButtonWidget;
- # XXX should this be retained?
-# if (defined $args->{-state} and $args->{-state} eq 'readonly') { # XXX works only at construction time
-# $LabEntry = "NoSelLabEntry";
-# require Tk::NoSelLabEntry;
-# }
- my $e;
- my $var = "";
- my @LabEntry_args = (-textvariable => \$var);
- if (exists $args->{-label}) {
- $e = $w->$LabEntry(-labelPack => $lpack,
- -label => delete $args->{-label},
- @LabEntry_args,
- );
- } else {
- $e = $w->$LabEntry(@LabEntry_args);
- }
- my $b = $w->$Button(-bitmap => '@' . Tk->findINC($w->{_BE_Style} eq 'MSWin32' ? 'arrowdownwin.xbm' : 'cbxarrow.xbm'));
- $w->Advertise('entry' => $e);
- $w->Advertise('arrow' => $b);
-
- # Pack the button to align vertically with the entry widget
- my @anch;
- my $edge = {@$lpack}->{-side};
- push(@anch,-anchor => 's') if ($edge && $edge eq 'top');
- push(@anch,-anchor => 'n') if ($edge && $edge eq 'bottom');
- $b->pack(-side => 'right', -padx => 1, @anch);
-
- $e->pack(-side => 'right', -fill => 'x', -expand => 1); #XXX, -padx => 1);
-
- # popup shell for listbox with values.
- my $c = $w->Toplevel(-bd => 2,
- -relief => ($w->{_BE_Style} eq 'MSWin32'
- ? "solid" : "raised"));
- $c->overrideredirect(1);
- $c->withdraw;
- my $sl = $c->Scrolled( $Listbox, qw/-selectmode browse -scrollbars oe/ );
- if ($w->{_BE_Style} eq 'MSWin32' and $Tk::platform eq 'MSWin32') {
- $sl->configure(-bg => 'SystemWindow', -relief => "flat");
- }
- $w->Advertise('choices' => $c);
- $w->Advertise('slistbox' => $sl);
- $sl->pack(-expand => 1, -fill => 'both');
-
- $sl->Subwidget("scrolled")->bind("<Motion>",sub {
- return unless ($w->{_BE_Style} eq 'MSWin32');
- my $e = $_[0]->XEvent;
- my $y = $e->y;
- my $inx = $sl->nearest($y);
- if (defined $inx) {
- $sl->selectionClear(0, "end");
- $sl->selectionSet($inx);
- }
- });
-
- # other initializations
- $w->SetBindings;
- $w->{'_BE_popped'} = 0;
- $w->Delegates(get => $sl, DEFAULT => $e);
- $w->ConfigSpecs(
- -font => [qw/DESCENDANTS font Font/],
- -listwidth => [qw/PASSIVE listWidth ListWidth/, undef],
- -listheight => [{-height => $sl}, qw/listHeight ListHeight/, undef],
- -listcmd => [qw/CALLBACK listCmd ListCmd/, undef],
- -autolistwidth => [qw/PASSIVE autoListWidth AutoListWidth/, undef],
- -autolimitheight => [qw/PASSIVE autoLimitHeight AutoLimitHeight 0/],
- -browsecmd => [qw/CALLBACK browseCmd BrowseCmd/, undef],
- -browse2cmd => [qw/CALLBACK browse2Cmd Browse2Cmd/, undef],
- -choices => [qw/METHOD choices Choices/, undef],
- -state => [qw/METHOD state State normal/],
- -arrowimage => [ {-image => $b}, qw/arrowImage ArrowImage/, undef],
- -variable => [ {'-textvariable' => $e} ],
- -colorstate => [qw/PASSIVE colorState ColorState/, undef],
- -command => '-browsecmd',
- -options => '-choices',
- -label => [qw/PASSIVE label Label/, undef],
- -labelPack => [qw/PASSIVE labelPack LabelPack/, undef],
- #-background => [$e, qw/background Background/, undef],
- #-foreground => [$e, qw/foreground Foreground/, undef],
- -buttontakefocus => [{-takefocus => $b}, 'buttonTakefocus',
- 'ButtonTakefocus', 1],
- DEFAULT => [$e] );
-}
-
-sub SetBindings {
- my ($w) = @_;
-
- my $e = $w->Subwidget('entry');
- my $b = $w->Subwidget('arrow');
-
- # set bind tags
- $w->bindtags([$w, 'Tk::BrowseEntry', $w->toplevel, 'all']);
- # as we don't bind $e here leave its tags alone ...
- # $e->bindtags([$e, ref($e), $e->toplevel, 'all']);
-
- # bindings for the button and entry
- $b->bind('<1>',[$w,'BtnDown']);
- $b->toplevel->bind('<ButtonRelease-1>',[$w,'ButtonHack']);
- $b->bind('<space>',[$w,'space']);
-
- # bindings for listbox
- my $sl = $w->Subwidget('slistbox');
- my $l = $sl->Subwidget('listbox');
- $l->bind('<ButtonRelease-1>',[$w,'ListboxRelease',Ev('x'),Ev('y')]);
- $l->bind('<Escape>' => [$w,'LbClose']);
- $l->bind('<Return>' => [$w,'Return',$l]);
-
- # allow click outside the popped up listbox to pop it down.
- $w->bind('<1>','BtnDown');
-}
-
-sub space
-{
- my $w = shift;
- $w->BtnDown;
- $w->{'_BE_savefocus'} = $w->focusCurrent;
- $w->Subwidget('slistbox')->focus;
-}
-
-
-sub ListboxRelease
-{
- my ($w,$x,$y) = @_;
- $w->ButtonHack;
- $w->LbChoose($x, $y);
-}
-
-sub Return
-{
- my ($w,$l) = @_;
- my($x, $y) = $l->bbox($l->curselection);
- $w->LbChoose($x, $y)
-}
-
-
-sub BtnDown {
- my ($w) = @_;
- return if $w->cget( '-state' ) eq 'disabled';
-
- if ($w->{'_BE_popped'}) {
- $w->Popdown;
- $w->{'_BE_buttonHack'} = 0;
- } else {
- $w->PopupChoices;
- $w->{'_BE_buttonHack'} = 1;
- }
-}
-
-sub PopupChoices {
- my ($w) = @_;
-
- if (!$w->{'_BE_popped'}) {
- $w->Callback(-listcmd => $w);
- my $e = $w->Subwidget('entry');
- my $c = $w->Subwidget('choices');
- my $s = $w->Subwidget('slistbox');
- my $a = $w->Subwidget('arrow');
- my $y1 = ($w->{_BE_Style} eq 'MSWin32'
- ? $a->rooty + $a->height
- : $e->rooty + $e->height + 3
- );
- my $bd = $c->cget(-bd) + $c->cget(-highlightthickness);
- # using the real listbox reqheight rather than the
- # container frame one, which does not change after resizing the
- # listbox
- my $ht = $s->Subwidget("scrolled")->reqheight + 2 * $bd;
- my $x1 = ($w->{_BE_Style} eq 'MSWin32'
- ? $e->Subwidget("entry")->rootx
- : $e->rootx
- );
- my ($width, $x2);
- if (defined $w->cget(-listwidth)) {
- $width = $w->cget(-listwidth);
- $x2 = $x1 + $width;
- } else {
- $x2 = $a->rootx + $a->width;
- $width = $x2 - $x1;
- }
- my $rw = $c->reqwidth;
- if ($rw < $width) {
- $rw = $width
- } else {
- if ($rw > $width * 3) {
- $rw = $width * 3;
- }
- if ($rw > $w->vrootwidth) {
- $rw = $w->vrootwidth;
- }
- }
- $width = $rw;
-
- # if listbox is too far right, pull it back to the left
- #
- if ($x2 > $w->vrootwidth) {
- $x1 = $w->vrootwidth - $width;
- }
-
- # if listbox is too far left, pull it back to the right
- #
- if ($x1 < 0) {
- $x1 = 0;
- }
-
- # if listbox is below bottom of screen, pull it up.
- # check the Win32 taskbar, if possible
- my $rootheight;
- if ($Tk::platform eq 'MSWin32' and $^O eq 'MSWin32') {
- eval {
- require Win32Util; # XXX should not use a non-CPAN widget
- $rootheight = (Win32Util::screen_region($w))[3];
- };
- }
- if (!defined $rootheight) {
- $rootheight = $w->vrootheight;
- }
-
- my $y2 = $y1 + $ht;
- if ($y2 > $rootheight) {
- $y1 = $y1 - $ht - ($e->height - 5);
- }
- $c->geometry(sprintf('%dx%d+%d+%d', $rw, $ht, $x1, $y1));
- $c->deiconify;
- $c->raise;
- $e->focus;
- $w->{'_BE_popped'} = 1;
-
- # highlight current selection
- my $current_sel = $e->get;
- if (defined $current_sel) {
- my $i = 0;
- foreach my $str ($s->get(0, "end")) {
- if ($str eq $current_sel) {
- $s->selectionClear(0, "end");
- $s->selectionSet($i);
- last;
- }
- $i++;
- }
- }
-
- $c->configure(-cursor => 'arrow');
- $w->{'_BE_grabinfo'} = $w->grabSave;
- $w->grabGlobal;
- }
-}
-
-# choose value from listbox if appropriate
-sub LbChoose {
- my ($w, $x, $y) = @_;
- my $l = $w->Subwidget('slistbox')->Subwidget('listbox');
- if ((($x < 0) || ($x > $l->Width)) ||
- (($y < 0) || ($y > $l->Height))) {
- # mouse was clicked outside the listbox... close the listbox
- $w->LbClose;
- } else {
- # select appropriate entry and close the listbox
- $w->LbCopySelection;
- $w->Callback(-browsecmd, $w, $w->Subwidget('entry')->get());
- $w->Callback(-browse2cmd => $w, $w->LbIndex);
- }
-}
-
-# close the listbox after clearing selection
-sub LbClose {
- my ($w) = @_;
- my $l = $w->Subwidget('slistbox')->Subwidget('listbox');
- $l->selection('clear', 0, 'end');
- $w->Popdown;
-}
-
-# copy the selection to the entry and close listbox
-sub LbCopySelection {
- my ($w) = @_;
- my $index = $w->LbIndex;
- if (defined $index) {
- $w->{'_BE_curIndex'} = $index;
- my $l = $w->Subwidget('slistbox')->Subwidget('listbox');
- my $var_ref = $w->cget( '-textvariable' );
- $$var_ref = $l->get($index);
- if ($w->{'_BE_popped'}) {
- $w->Popdown;
- }
- }
- $w->Popdown;
-}
-
-sub LbIndex {
- my ($w, $flag) = @_;
- my ($sel) = $w->Subwidget('slistbox')->Subwidget('listbox')->curselection;
- if (defined $sel) {
- return int($sel);
- } else {
- if (defined $flag && ($flag eq 'emptyOK')) {
- return undef;
- } else {
- return 0;
- }
- }
-}
-
-# pop down the listbox
-sub Popdown {
- my ($w) = @_;
- if ($w->{'_BE_savefocus'} && Tk::Exists($w->{'_BE_savefocus'})) {
- $w->{'_BE_savefocus'}->focus;
- delete $w->{'_BE_savefocus'};
- }
- if ($w->{'_BE_popped'}) {
- my $c = $w->Subwidget('choices');
- $c->withdraw;
- $w->grabRelease;
- if (ref $w->{'_BE_grabinfo'} eq 'CODE') {
- $w->{'_BE_grabinfo'}->();
- delete $w->{'_BE_grabinfo'};
- }
- $w->{'_BE_popped'} = 0;
- }
-}
-
-# This hack is to prevent the ugliness of the arrow being depressed.
-#
-sub ButtonHack {
- my ($w) = @_;
- my $b = $w->Subwidget('arrow');
- if ($w->{'_BE_buttonHack'}) {
- $b->butUp;
- }
-}
-
-sub choices
-{
- my ($w,$choices) = @_;
- if (@_ > 1)
- {
- $w->delete( qw/0 end/ );
- my %hash;
- my $var = $w->cget('-textvariable');
- my $old = $$var;
- foreach my $val (@$choices)
- {
- $w->insert( 'end', $val);
- $hash{$val} = 1;
- }
- $old = $choices->[0]
- if defined $old && not exists $hash{$old} && defined $choices->[0];
- $$var = $old;
- }
- else
- {
- return( $w->get( qw/0 end/ ) );
- }
-}
-
-sub _set_edit_state {
- my( $w, $state ) = @_;
-
- my $entry = $w->Subwidget( 'entry' );
- my $button = $w->Subwidget( 'arrow' );
-
- if ($w->cget( '-colorstate' )) {
- my $color;
- if( $state eq 'normal' ) { # Editable
- $color = 'gray95';
- } else { # Not Editable
- $color = $w->cget( -background ) || 'lightgray';
- }
- $entry->Subwidget( 'entry' )->configure( -background => $color );
- }
-
- if( $state eq 'readonly' ) {
- $entry->configure( -state => 'disabled' );
- $button->configure( -state => 'normal' );
- if ($w->{_BE_Style} eq 'MSWin32') {
- $entry->bind('<1>',[$w,'BtnDown']);
- $w->{_BE_OriginalCursor} = $entry->cget( -cursor );
- $entry->configure( -cursor => 'left_ptr' );
- }
- } else {
- $entry->configure( -state => $state );
- if (exists $w->{_BE_OriginalCursor}) {
- $entry->configure(-cursor => delete $w->{_BE_OriginalCursor});
- }
- $button->configure( -state => $state );
- if ($w->{_BE_Style} eq 'MSWin32') {
- $entry->bind('<1>',['Button1',Tk::Ev('x')]);
- }
- }
-}
-
-sub state {
- my $w = shift;
- unless( @_ ) {
- return( $w->{Configure}{-state} );
- } else {
- my $state = shift;
- $w->{Configure}{-state} = $state;
- $w->_set_edit_state( $state );
- }
-}
-
-sub _max {
- my $max = shift;
- foreach my $val (@_) {
- $max = $val if $max < $val;
- }
- return( $max );
-}
-
-sub shrinkwrap {
- my( $w, $size ) = @_;
-
- unless( defined $size ) {
- $size = _max( map( length, $w->get( qw/0 end/ ) ) ) || 0;;
- }
-
- my $lb = $w->Subwidget( 'slistbox' )->Subwidget( 'listbox' );
- $w->configure( -width => $size );
- $lb->configure( -width => $size );
-}
-
-sub limitheight {
- my $w = shift;
- my $choices_number = shift || $w->Subwidget('slistbox')->index("end");
- $choices_number = 10 if $choices_number > 10;
- $w->configure(-listheight => $choices_number) if ($choices_number > 0);
-}
-
-sub insert {
- my $w = shift;
- $w->Subwidget("slistbox")->insert(@_);
- if ($w->cget(-autolimitheight)) {
- $w->limitheight;
- }
- if ($w->cget(-autolistwidth)) {
- $w->updateListWidth(@_[1..$#_]);
- }
-}
-
-sub delete {
- my $w = shift;
- $w->Subwidget("slistbox")->delete(@_);
- if ($w->cget(-autolimitheight)) {
- $w->limitheight;
- }
- if ($w->cget(-autolistwidth)) {
- $w->updateListWidth();
- }
-}
-
-sub updateListWidth {
- my $w = shift;
- my @ins = @_;
- if (!@ins) {
- @ins = $w->get(0, "end");
- }
-
- my $max_width = 0;
- foreach my $ins (@ins) {
- my $new_width = $w->fontMeasure($w->cget(-font), $ins);
- if ($new_width > $max_width) {
- $max_width = $new_width;
- }
- }
- if ($max_width > 20) { # be sane
- $w->configure(-listwidth => $max_width + 32); # XXX for scrollbar
- }
-}
-
-1;
-
-__END__
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Button.pm b/Master/tlpkg/tlperl/lib/Tk/Button.pm
deleted file mode 100644
index efa597dee14..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Button.pm
+++ /dev/null
@@ -1,148 +0,0 @@
-package Tk::Button;
-# Conversion from Tk4.0 button.tcl competed.
-#
-# Copyright (c) 1992-1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-# Copyright (c) 1995-2003 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-
-use vars qw($VERSION);
-$VERSION = '4.008'; # $Id: //depot/Tkutf8/Tk/Button.pm#8 $
-
-# modify it under the same terms as Perl itself, subject
-# to additional disclaimer in license.terms due to partial
-# derivation from Tk4.0 sources.
-
-use strict;
-
-require Tk::Widget;
-use base qw(Tk::Widget);
-
-use vars qw($buttonWindow $relief);
-
-Tk::Methods('deselect','flash','invoke','select','toggle');
-
-sub Tk_cmd { \&Tk::button }
-
-Construct Tk::Widget 'Button';
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $mw->bind($class,'<Enter>', 'Enter');
- $mw->bind($class,'<Leave>', 'Leave');
- $mw->bind($class,'<1>', 'butDown');
- $mw->bind($class,'<ButtonRelease-1>', 'butUp');
- $mw->bind($class,'<space>', 'Invoke');
- $mw->bind($class,'<Return>', 'Invoke');
- return $class;
-}
-
-# tkButtonEnter --
-# The procedure below is invoked when the mouse pointer enters a
-# button widget. It records the button we're in and changes the
-# state of the button to active unless the button is disabled.
-#
-# Arguments:
-# w - The name of the widget.
-
-sub Enter
-{
- my $w = shift;
- my $E = shift;
- if ($w->cget('-state') ne 'disabled')
- {
- $w->configure('-state' => 'active');
- $w->configure('-state' => 'active', '-relief' => 'sunken') if (defined($buttonWindow) && $w == $buttonWindow)
- }
- $Tk::window = $w;
-}
-
-# tkButtonLeave --
-# The procedure below is invoked when the mouse pointer leaves a
-# button widget. It changes the state of the button back to
-# inactive. If we're leaving the button window with a mouse button
-# pressed (tkPriv(buttonWindow) == $w), restore the relief of the
-# button too.
-#
-# Arguments:
-# w - The name of the widget.
-sub Leave
-{
- my $w = shift;
- $w->configure('-state'=>'normal') if ($w->cget('-state') ne 'disabled');
- $w->configure('-relief' => $relief) if (defined($buttonWindow) && $w == $buttonWindow);
- undef $Tk::window;
-}
-
-# tkButtonDown --
-# The procedure below is invoked when the mouse button is pressed in
-# a button widget. It records the fact that the mouse is in the button,
-# saves the button's relief so it can be restored later, and changes
-# the relief to sunken.
-#
-# Arguments:
-# w - The name of the widget.
-sub butDown
-{
- my $w = shift;
- $relief = $w->cget('-relief');
- if ($w->cget('-state') ne 'disabled')
- {
- $buttonWindow = $w;
- $w->configure('-relief' => 'sunken')
- }
-}
-
-# tkButtonUp --
-# The procedure below is invoked when the mouse button is released
-# in a button widget. It restores the button's relief and invokes
-# the command as long as the mouse hasn't left the button.
-#
-# Arguments:
-# w - The name of the widget.
-sub butUp
-{
- my $w = shift;
- if (defined($buttonWindow) && $buttonWindow == $w)
- {
- undef $buttonWindow;
- $w->configure('-relief' => $relief);
- if ($w->IS($Tk::window) && $w->cget('-state') ne 'disabled')
- {
- $w->invoke;
- }
- }
-}
-
-# tkButtonInvoke --
-# The procedure below is called when a button is invoked through
-# the keyboard. It simulate a press of the button via the mouse.
-#
-# Arguments:
-# w - The name of the widget.
-sub Invoke
-{
- my $w = shift;
- if ($w->cget('-state') ne 'disabled')
- {
- my $oldRelief = $w->cget('-relief');
- my $oldState = $w->cget('-state');
- $w->configure('-state' => 'active', '-relief' => 'sunken');
- $w->idletasks;
- $w->after(100);
- $w->configure('-state' => $oldState, '-relief' => $oldRelief);
- $w->invoke;
- }
-}
-
-
-
-1;
-
-__END__
-
-
-
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Camel.xpm b/Master/tlpkg/tlperl/lib/Tk/Camel.xpm
deleted file mode 100644
index ba33c0149ec..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Camel.xpm
+++ /dev/null
@@ -1,41 +0,0 @@
-/* XPM */
-static char *Camel[] = {
-/* width height num_colors chars_per_pixel */
-" 32 32 2 1",
-/* colors */
-". c #ffffff",
-"# c #7f7f00",
-/* pixels */
-"................................",
-"................................",
-"...................###..........",
-".......####......######.........",
-"....####.##.....########........",
-"....########....#########.......",
-"......######..###########.......",
-"......#####..#############......",
-".....######.##############......",
-".....######.###############.....",
-".....######################.....",
-".....#######################....",
-".....#######################....",
-"......#######################...",
-".......####################.#...",
-"........###################.#...",
-"........###############.###.#...",
-"............#######.###.###.#...",
-"............###.###.##...##.....",
-"............###.###..#...##.....",
-"............##.####..#....#.....",
-"............##.###...#....#.....",
-"............##.##...#.....#.....",
-"............#...#...#.....#.....",
-"............#....#..#.....#.....",
-"............#.....#.#.....#.....",
-"............#.....###.....#.....",
-"...........##....##.#....#......",
-"...........#..............#.....",
-".........###.............#......"
-"................................",
-"................................",
-};
diff --git a/Master/tlpkg/tlperl/lib/Tk/Canvas.pm b/Master/tlpkg/tlperl/lib/Tk/Canvas.pm
deleted file mode 100644
index 210bc30bfc2..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Canvas.pm
+++ /dev/null
@@ -1,1436 +0,0 @@
-package Tk::Canvas;
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #12 $ =~ /\D(\d+)\s*$/;
-
-use Tk qw($XS_VERSION);
-
-use base qw(Tk::Widget);
-Construct Tk::Widget 'Canvas';
-
-bootstrap Tk::Canvas;
-
-sub Tk_cmd { \&Tk::canvas }
-
-Tk::Methods('addtag','bbox','bind','canvasx','canvasy','coords','create',
- 'dchars','delete','dtag','find','focus','gettags','icursor',
- 'index','insert','itemcget','itemconfigure','lower','move',
- 'postscript','raise','scale','scan','select','type','xview','yview');
-
-use Tk::Submethods ( 'create' => [qw(arc bitmap grid group image line oval
- polygon rectangle text window)],
- 'scan' => [qw(mark dragto)],
- 'select' => [qw(from clear item to)],
- 'xview' => [qw(moveto scroll)],
- 'yview' => [qw(moveto scroll)],
- );
-
-*CanvasBind = \&Tk::bind;
-*CanvasFocus = \&Tk::focus;
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $mw->XYscrollBind($class);
- return $class;
-}
-
-sub BalloonInfo
-{
- my ($canvas,$balloon,$X,$Y,@opt) = @_;
- my @tags = ($canvas->find('withtag', 'current'),$canvas->gettags('current'));
- foreach my $opt (@opt)
- {
- my $info = $balloon->GetOption($opt,$canvas);
- if ($opt =~ /^-(statusmsg|balloonmsg)$/ && UNIVERSAL::isa($info,'HASH'))
- {
- $balloon->Subclient($tags[0]);
- foreach my $tag (@tags)
- {
- return $info->{$tag} if exists $info->{$tag};
- }
- return '';
- }
- return $info;
- }
-}
-
-sub get_corners
-{
- my $c = shift;
- my(@xview) = $c->xview;
- my(@yview) = $c->yview;
- my(@scrollregion) = @{$c->cget(-scrollregion)};
- return (
- $xview[0] * ($scrollregion[2]-$scrollregion[0]) + $scrollregion[0],
- $yview[0] * ($scrollregion[3]-$scrollregion[1]) + $scrollregion[1],
- $xview[1] * ($scrollregion[2]-$scrollregion[0]) + $scrollregion[0],
- $yview[1] * ($scrollregion[3]-$scrollregion[1]) + $scrollregion[1],
- );
-}
-
-# List of adobe glyph names. Converted from glyphlist.txt, downloaded
-# from Adobe
-
-$Tk::psglyphs = {qw(
- 0020 space
- 0021 exclam
- 0022 quotedbl
- 0023 numbersign
- 0024 dollar
- 0025 percent
- 0026 ampersand
- 0027 quotesingle
- 0028 parenleft
- 0029 parenright
- 002A asterisk
- 002B plus
- 002C comma
- 002D hyphen
- 002E period
- 002F slash
- 0030 zero
- 0031 one
- 0032 two
- 0033 three
- 0034 four
- 0035 five
- 0036 six
- 0037 seven
- 0038 eight
- 0039 nine
- 003A colon
- 003B semicolon
- 003C less
- 003D equal
- 003E greater
- 003F question
- 0040 at
- 0041 A
- 0042 B
- 0043 C
- 0044 D
- 0045 E
- 0046 F
- 0047 G
- 0048 H
- 0049 I
- 004A J
- 004B K
- 004C L
- 004D M
- 004E N
- 004F O
- 0050 P
- 0051 Q
- 0052 R
- 0053 S
- 0054 T
- 0055 U
- 0056 V
- 0057 W
- 0058 X
- 0059 Y
- 005A Z
- 005B bracketleft
- 005C backslash
- 005D bracketright
- 005E asciicircum
- 005F underscore
- 0060 grave
- 0061 a
- 0062 b
- 0063 c
- 0064 d
- 0065 e
- 0066 f
- 0067 g
- 0068 h
- 0069 i
- 006A j
- 006B k
- 006C l
- 006D m
- 006E n
- 006F o
- 0070 p
- 0071 q
- 0072 r
- 0073 s
- 0074 t
- 0075 u
- 0076 v
- 0077 w
- 0078 x
- 0079 y
- 007A z
- 007B braceleft
- 007C bar
- 007D braceright
- 007E asciitilde
- 00A0 space
- 00A1 exclamdown
- 00A2 cent
- 00A3 sterling
- 00A4 currency
- 00A5 yen
- 00A6 brokenbar
- 00A7 section
- 00A8 dieresis
- 00A9 copyright
- 00AA ordfeminine
- 00AB guillemotleft
- 00AC logicalnot
- 00AD hyphen
- 00AE registered
- 00AF macron
- 00B0 degree
- 00B1 plusminus
- 00B2 twosuperior
- 00B3 threesuperior
- 00B4 acute
- 00B5 mu
- 00B6 paragraph
- 00B7 periodcentered
- 00B8 cedilla
- 00B9 onesuperior
- 00BA ordmasculine
- 00BB guillemotright
- 00BC onequarter
- 00BD onehalf
- 00BE threequarters
- 00BF questiondown
- 00C0 Agrave
- 00C1 Aacute
- 00C2 Acircumflex
- 00C3 Atilde
- 00C4 Adieresis
- 00C5 Aring
- 00C6 AE
- 00C7 Ccedilla
- 00C8 Egrave
- 00C9 Eacute
- 00CA Ecircumflex
- 00CB Edieresis
- 00CC Igrave
- 00CD Iacute
- 00CE Icircumflex
- 00CF Idieresis
- 00D0 Eth
- 00D1 Ntilde
- 00D2 Ograve
- 00D3 Oacute
- 00D4 Ocircumflex
- 00D5 Otilde
- 00D6 Odieresis
- 00D7 multiply
- 00D8 Oslash
- 00D9 Ugrave
- 00DA Uacute
- 00DB Ucircumflex
- 00DC Udieresis
- 00DD Yacute
- 00DE Thorn
- 00DF germandbls
- 00E0 agrave
- 00E1 aacute
- 00E2 acircumflex
- 00E3 atilde
- 00E4 adieresis
- 00E5 aring
- 00E6 ae
- 00E7 ccedilla
- 00E8 egrave
- 00E9 eacute
- 00EA ecircumflex
- 00EB edieresis
- 00EC igrave
- 00ED iacute
- 00EE icircumflex
- 00EF idieresis
- 00F0 eth
- 00F1 ntilde
- 00F2 ograve
- 00F3 oacute
- 00F4 ocircumflex
- 00F5 otilde
- 00F6 odieresis
- 00F7 divide
- 00F8 oslash
- 00F9 ugrave
- 00FA uacute
- 00FB ucircumflex
- 00FC udieresis
- 00FD yacute
- 00FE thorn
- 00FF ydieresis
- 0100 Amacron
- 0101 amacron
- 0102 Abreve
- 0103 abreve
- 0104 Aogonek
- 0105 aogonek
- 0106 Cacute
- 0107 cacute
- 0108 Ccircumflex
- 0109 ccircumflex
- 010A Cdotaccent
- 010B cdotaccent
- 010C Ccaron
- 010D ccaron
- 010E Dcaron
- 010F dcaron
- 0110 Dcroat
- 0111 dcroat
- 0112 Emacron
- 0113 emacron
- 0114 Ebreve
- 0115 ebreve
- 0116 Edotaccent
- 0117 edotaccent
- 0118 Eogonek
- 0119 eogonek
- 011A Ecaron
- 011B ecaron
- 011C Gcircumflex
- 011D gcircumflex
- 011E Gbreve
- 011F gbreve
- 0120 Gdotaccent
- 0121 gdotaccent
- 0122 Gcommaaccent
- 0123 gcommaaccent
- 0124 Hcircumflex
- 0125 hcircumflex
- 0126 Hbar
- 0127 hbar
- 0128 Itilde
- 0129 itilde
- 012A Imacron
- 012B imacron
- 012C Ibreve
- 012D ibreve
- 012E Iogonek
- 012F iogonek
- 0130 Idotaccent
- 0131 dotlessi
- 0132 IJ
- 0133 ij
- 0134 Jcircumflex
- 0135 jcircumflex
- 0136 Kcommaaccent
- 0137 kcommaaccent
- 0138 kgreenlandic
- 0139 Lacute
- 013A lacute
- 013B Lcommaaccent
- 013C lcommaaccent
- 013D Lcaron
- 013E lcaron
- 013F Ldot
- 0140 ldot
- 0141 Lslash
- 0142 lslash
- 0143 Nacute
- 0144 nacute
- 0145 Ncommaaccent
- 0146 ncommaaccent
- 0147 Ncaron
- 0148 ncaron
- 0149 napostrophe
- 014A Eng
- 014B eng
- 014C Omacron
- 014D omacron
- 014E Obreve
- 014F obreve
- 0150 Ohungarumlaut
- 0151 ohungarumlaut
- 0152 OE
- 0153 oe
- 0154 Racute
- 0155 racute
- 0156 Rcommaaccent
- 0157 rcommaaccent
- 0158 Rcaron
- 0159 rcaron
- 015A Sacute
- 015B sacute
- 015C Scircumflex
- 015D scircumflex
- 015E Scedilla
- 015F scedilla
- 0160 Scaron
- 0161 scaron
- 0162 Tcommaaccent
- 0163 tcommaaccent
- 0164 Tcaron
- 0165 tcaron
- 0166 Tbar
- 0167 tbar
- 0168 Utilde
- 0169 utilde
- 016A Umacron
- 016B umacron
- 016C Ubreve
- 016D ubreve
- 016E Uring
- 016F uring
- 0170 Uhungarumlaut
- 0171 uhungarumlaut
- 0172 Uogonek
- 0173 uogonek
- 0174 Wcircumflex
- 0175 wcircumflex
- 0176 Ycircumflex
- 0177 ycircumflex
- 0178 Ydieresis
- 0179 Zacute
- 017A zacute
- 017B Zdotaccent
- 017C zdotaccent
- 017D Zcaron
- 017E zcaron
- 017F longs
- 0192 florin
- 01A0 Ohorn
- 01A1 ohorn
- 01AF Uhorn
- 01B0 uhorn
- 01E6 Gcaron
- 01E7 gcaron
- 01FA Aringacute
- 01FB aringacute
- 01FC AEacute
- 01FD aeacute
- 01FE Oslashacute
- 01FF oslashacute
- 0218 Scommaaccent
- 0219 scommaaccent
- 021A Tcommaaccent
- 021B tcommaaccent
- 02BC afii57929
- 02BD afii64937
- 02C6 circumflex
- 02C7 caron
- 02C9 macron
- 02D8 breve
- 02D9 dotaccent
- 02DA ring
- 02DB ogonek
- 02DC tilde
- 02DD hungarumlaut
- 0300 gravecomb
- 0301 acutecomb
- 0303 tildecomb
- 0309 hookabovecomb
- 0323 dotbelowcomb
- 0384 tonos
- 0385 dieresistonos
- 0386 Alphatonos
- 0387 anoteleia
- 0388 Epsilontonos
- 0389 Etatonos
- 038A Iotatonos
- 038C Omicrontonos
- 038E Upsilontonos
- 038F Omegatonos
- 0390 iotadieresistonos
- 0391 Alpha
- 0392 Beta
- 0393 Gamma
- 0394 Delta
- 0395 Epsilon
- 0396 Zeta
- 0397 Eta
- 0398 Theta
- 0399 Iota
- 039A Kappa
- 039B Lambda
- 039C Mu
- 039D Nu
- 039E Xi
- 039F Omicron
- 03A0 Pi
- 03A1 Rho
- 03A3 Sigma
- 03A4 Tau
- 03A5 Upsilon
- 03A6 Phi
- 03A7 Chi
- 03A8 Psi
- 03A9 Omega
- 03AA Iotadieresis
- 03AB Upsilondieresis
- 03AC alphatonos
- 03AD epsilontonos
- 03AE etatonos
- 03AF iotatonos
- 03B0 upsilondieresistonos
- 03B1 alpha
- 03B2 beta
- 03B3 gamma
- 03B4 delta
- 03B5 epsilon
- 03B6 zeta
- 03B7 eta
- 03B8 theta
- 03B9 iota
- 03BA kappa
- 03BB lambda
- 03BC mu
- 03BD nu
- 03BE xi
- 03BF omicron
- 03C0 pi
- 03C1 rho
- 03C2 sigma1
- 03C3 sigma
- 03C4 tau
- 03C5 upsilon
- 03C6 phi
- 03C7 chi
- 03C8 psi
- 03C9 omega
- 03CA iotadieresis
- 03CB upsilondieresis
- 03CC omicrontonos
- 03CD upsilontonos
- 03CE omegatonos
- 03D1 theta1
- 03D2 Upsilon1
- 03D5 phi1
- 03D6 omega1
- 0401 afii10023
- 0402 afii10051
- 0403 afii10052
- 0404 afii10053
- 0405 afii10054
- 0406 afii10055
- 0407 afii10056
- 0408 afii10057
- 0409 afii10058
- 040A afii10059
- 040B afii10060
- 040C afii10061
- 040E afii10062
- 040F afii10145
- 0410 afii10017
- 0411 afii10018
- 0412 afii10019
- 0413 afii10020
- 0414 afii10021
- 0415 afii10022
- 0416 afii10024
- 0417 afii10025
- 0418 afii10026
- 0419 afii10027
- 041A afii10028
- 041B afii10029
- 041C afii10030
- 041D afii10031
- 041E afii10032
- 041F afii10033
- 0420 afii10034
- 0421 afii10035
- 0422 afii10036
- 0423 afii10037
- 0424 afii10038
- 0425 afii10039
- 0426 afii10040
- 0427 afii10041
- 0428 afii10042
- 0429 afii10043
- 042A afii10044
- 042B afii10045
- 042C afii10046
- 042D afii10047
- 042E afii10048
- 042F afii10049
- 0430 afii10065
- 0431 afii10066
- 0432 afii10067
- 0433 afii10068
- 0434 afii10069
- 0435 afii10070
- 0436 afii10072
- 0437 afii10073
- 0438 afii10074
- 0439 afii10075
- 043A afii10076
- 043B afii10077
- 043C afii10078
- 043D afii10079
- 043E afii10080
- 043F afii10081
- 0440 afii10082
- 0441 afii10083
- 0442 afii10084
- 0443 afii10085
- 0444 afii10086
- 0445 afii10087
- 0446 afii10088
- 0447 afii10089
- 0448 afii10090
- 0449 afii10091
- 044A afii10092
- 044B afii10093
- 044C afii10094
- 044D afii10095
- 044E afii10096
- 044F afii10097
- 0451 afii10071
- 0452 afii10099
- 0453 afii10100
- 0454 afii10101
- 0455 afii10102
- 0456 afii10103
- 0457 afii10104
- 0458 afii10105
- 0459 afii10106
- 045A afii10107
- 045B afii10108
- 045C afii10109
- 045E afii10110
- 045F afii10193
- 0462 afii10146
- 0463 afii10194
- 0472 afii10147
- 0473 afii10195
- 0474 afii10148
- 0475 afii10196
- 0490 afii10050
- 0491 afii10098
- 04D9 afii10846
- 05B0 afii57799
- 05B1 afii57801
- 05B2 afii57800
- 05B3 afii57802
- 05B4 afii57793
- 05B5 afii57794
- 05B6 afii57795
- 05B7 afii57798
- 05B8 afii57797
- 05B9 afii57806
- 05BB afii57796
- 05BC afii57807
- 05BD afii57839
- 05BE afii57645
- 05BF afii57841
- 05C0 afii57842
- 05C1 afii57804
- 05C2 afii57803
- 05C3 afii57658
- 05D0 afii57664
- 05D1 afii57665
- 05D2 afii57666
- 05D3 afii57667
- 05D4 afii57668
- 05D5 afii57669
- 05D6 afii57670
- 05D7 afii57671
- 05D8 afii57672
- 05D9 afii57673
- 05DA afii57674
- 05DB afii57675
- 05DC afii57676
- 05DD afii57677
- 05DE afii57678
- 05DF afii57679
- 05E0 afii57680
- 05E1 afii57681
- 05E2 afii57682
- 05E3 afii57683
- 05E4 afii57684
- 05E5 afii57685
- 05E6 afii57686
- 05E7 afii57687
- 05E8 afii57688
- 05E9 afii57689
- 05EA afii57690
- 05F0 afii57716
- 05F1 afii57717
- 05F2 afii57718
- 060C afii57388
- 061B afii57403
- 061F afii57407
- 0621 afii57409
- 0622 afii57410
- 0623 afii57411
- 0624 afii57412
- 0625 afii57413
- 0626 afii57414
- 0627 afii57415
- 0628 afii57416
- 0629 afii57417
- 062A afii57418
- 062B afii57419
- 062C afii57420
- 062D afii57421
- 062E afii57422
- 062F afii57423
- 0630 afii57424
- 0631 afii57425
- 0632 afii57426
- 0633 afii57427
- 0634 afii57428
- 0635 afii57429
- 0636 afii57430
- 0637 afii57431
- 0638 afii57432
- 0639 afii57433
- 063A afii57434
- 0640 afii57440
- 0641 afii57441
- 0642 afii57442
- 0643 afii57443
- 0644 afii57444
- 0645 afii57445
- 0646 afii57446
- 0647 afii57470
- 0648 afii57448
- 0649 afii57449
- 064A afii57450
- 064B afii57451
- 064C afii57452
- 064D afii57453
- 064E afii57454
- 064F afii57455
- 0650 afii57456
- 0651 afii57457
- 0652 afii57458
- 0660 afii57392
- 0661 afii57393
- 0662 afii57394
- 0663 afii57395
- 0664 afii57396
- 0665 afii57397
- 0666 afii57398
- 0667 afii57399
- 0668 afii57400
- 0669 afii57401
- 066A afii57381
- 066D afii63167
- 0679 afii57511
- 067E afii57506
- 0686 afii57507
- 0688 afii57512
- 0691 afii57513
- 0698 afii57508
- 06A4 afii57505
- 06AF afii57509
- 06BA afii57514
- 06D2 afii57519
- 06D5 afii57534
- 1E80 Wgrave
- 1E81 wgrave
- 1E82 Wacute
- 1E83 wacute
- 1E84 Wdieresis
- 1E85 wdieresis
- 1EF2 Ygrave
- 1EF3 ygrave
- 200C afii61664
- 200D afii301
- 200E afii299
- 200F afii300
- 2012 figuredash
- 2013 endash
- 2014 emdash
- 2015 afii00208
- 2017 underscoredbl
- 2018 quoteleft
- 2019 quoteright
- 201A quotesinglbase
- 201B quotereversed
- 201C quotedblleft
- 201D quotedblright
- 201E quotedblbase
- 2020 dagger
- 2021 daggerdbl
- 2022 bullet
- 2024 onedotenleader
- 2025 twodotenleader
- 2026 ellipsis
- 202C afii61573
- 202D afii61574
- 202E afii61575
- 2030 perthousand
- 2032 minute
- 2033 second
- 2039 guilsinglleft
- 203A guilsinglright
- 203C exclamdbl
- 2044 fraction
- 2070 zerosuperior
- 2074 foursuperior
- 2075 fivesuperior
- 2076 sixsuperior
- 2077 sevensuperior
- 2078 eightsuperior
- 2079 ninesuperior
- 207D parenleftsuperior
- 207E parenrightsuperior
- 207F nsuperior
- 2080 zeroinferior
- 2081 oneinferior
- 2082 twoinferior
- 2083 threeinferior
- 2084 fourinferior
- 2085 fiveinferior
- 2086 sixinferior
- 2087 seveninferior
- 2088 eightinferior
- 2089 nineinferior
- 208D parenleftinferior
- 208E parenrightinferior
- 20A1 colonmonetary
- 20A3 franc
- 20A4 lira
- 20A7 peseta
- 20AA afii57636
- 20AB dong
- 20AC Euro
- 2105 afii61248
- 2111 Ifraktur
- 2113 afii61289
- 2116 afii61352
- 2118 weierstrass
- 211C Rfraktur
- 211E prescription
- 2122 trademark
- 2126 Omega
- 212E estimated
- 2135 aleph
- 2153 onethird
- 2154 twothirds
- 215B oneeighth
- 215C threeeighths
- 215D fiveeighths
- 215E seveneighths
- 2190 arrowleft
- 2191 arrowup
- 2192 arrowright
- 2193 arrowdown
- 2194 arrowboth
- 2195 arrowupdn
- 21A8 arrowupdnbse
- 21B5 carriagereturn
- 21D0 arrowdblleft
- 21D1 arrowdblup
- 21D2 arrowdblright
- 21D3 arrowdbldown
- 21D4 arrowdblboth
- 2200 universal
- 2202 partialdiff
- 2203 existential
- 2205 emptyset
- 2206 Delta
- 2207 gradient
- 2208 element
- 2209 notelement
- 220B suchthat
- 220F product
- 2211 summation
- 2212 minus
- 2215 fraction
- 2217 asteriskmath
- 2219 periodcentered
- 221A radical
- 221D proportional
- 221E infinity
- 221F orthogonal
- 2220 angle
- 2227 logicaland
- 2228 logicalor
- 2229 intersection
- 222A union
- 222B integral
- 2234 therefore
- 223C similar
- 2245 congruent
- 2248 approxequal
- 2260 notequal
- 2261 equivalence
- 2264 lessequal
- 2265 greaterequal
- 2282 propersubset
- 2283 propersuperset
- 2284 notsubset
- 2286 reflexsubset
- 2287 reflexsuperset
- 2295 circleplus
- 2297 circlemultiply
- 22A5 perpendicular
- 22C5 dotmath
- 2302 house
- 2310 revlogicalnot
- 2320 integraltp
- 2321 integralbt
- 2329 angleleft
- 232A angleright
- 2500 SF100000
- 2502 SF110000
- 250C SF010000
- 2510 SF030000
- 2514 SF020000
- 2518 SF040000
- 251C SF080000
- 2524 SF090000
- 252C SF060000
- 2534 SF070000
- 253C SF050000
- 2550 SF430000
- 2551 SF240000
- 2552 SF510000
- 2553 SF520000
- 2554 SF390000
- 2555 SF220000
- 2556 SF210000
- 2557 SF250000
- 2558 SF500000
- 2559 SF490000
- 255A SF380000
- 255B SF280000
- 255C SF270000
- 255D SF260000
- 255E SF360000
- 255F SF370000
- 2560 SF420000
- 2561 SF190000
- 2562 SF200000
- 2563 SF230000
- 2564 SF470000
- 2565 SF480000
- 2566 SF410000
- 2567 SF450000
- 2568 SF460000
- 2569 SF400000
- 256A SF540000
- 256B SF530000
- 256C SF440000
- 2580 upblock
- 2584 dnblock
- 2588 block
- 258C lfblock
- 2590 rtblock
- 2591 ltshade
- 2592 shade
- 2593 dkshade
- 25A0 filledbox
- 25A1 H22073
- 25AA H18543
- 25AB H18551
- 25AC filledrect
- 25B2 triagup
- 25BA triagrt
- 25BC triagdn
- 25C4 triaglf
- 25CA lozenge
- 25CB circle
- 25CF H18533
- 25D8 invbullet
- 25D9 invcircle
- 25E6 openbullet
- 263A smileface
- 263B invsmileface
- 263C sun
- 2640 female
- 2642 male
- 2660 spade
- 2663 club
- 2665 heart
- 2666 diamond
- 266A musicalnote
- 266B musicalnotedbl
- F6BE dotlessj
- F6BF LL
- F6C0 ll
- F6C1 Scedilla
- F6C2 scedilla
- F6C3 commaaccent
- F6C4 afii10063
- F6C5 afii10064
- F6C6 afii10192
- F6C7 afii10831
- F6C8 afii10832
- F6C9 Acute
- F6CA Caron
- F6CB Dieresis
- F6CC DieresisAcute
- F6CD DieresisGrave
- F6CE Grave
- F6CF Hungarumlaut
- F6D0 Macron
- F6D1 cyrBreve
- F6D2 cyrFlex
- F6D3 dblGrave
- F6D4 cyrbreve
- F6D5 cyrflex
- F6D6 dblgrave
- F6D7 dieresisacute
- F6D8 dieresisgrave
- F6D9 copyrightserif
- F6DA registerserif
- F6DB trademarkserif
- F6DC onefitted
- F6DD rupiah
- F6DE threequartersemdash
- F6DF centinferior
- F6E0 centsuperior
- F6E1 commainferior
- F6E2 commasuperior
- F6E3 dollarinferior
- F6E4 dollarsuperior
- F6E5 hypheninferior
- F6E6 hyphensuperior
- F6E7 periodinferior
- F6E8 periodsuperior
- F6E9 asuperior
- F6EA bsuperior
- F6EB dsuperior
- F6EC esuperior
- F6ED isuperior
- F6EE lsuperior
- F6EF msuperior
- F6F0 osuperior
- F6F1 rsuperior
- F6F2 ssuperior
- F6F3 tsuperior
- F6F4 Brevesmall
- F6F5 Caronsmall
- F6F6 Circumflexsmall
- F6F7 Dotaccentsmall
- F6F8 Hungarumlautsmall
- F6F9 Lslashsmall
- F6FA OEsmall
- F6FB Ogoneksmall
- F6FC Ringsmall
- F6FD Scaronsmall
- F6FE Tildesmall
- F6FF Zcaronsmall
- F721 exclamsmall
- F724 dollaroldstyle
- F726 ampersandsmall
- F730 zerooldstyle
- F731 oneoldstyle
- F732 twooldstyle
- F733 threeoldstyle
- F734 fouroldstyle
- F735 fiveoldstyle
- F736 sixoldstyle
- F737 sevenoldstyle
- F738 eightoldstyle
- F739 nineoldstyle
- F73F questionsmall
- F760 Gravesmall
- F761 Asmall
- F762 Bsmall
- F763 Csmall
- F764 Dsmall
- F765 Esmall
- F766 Fsmall
- F767 Gsmall
- F768 Hsmall
- F769 Ismall
- F76A Jsmall
- F76B Ksmall
- F76C Lsmall
- F76D Msmall
- F76E Nsmall
- F76F Osmall
- F770 Psmall
- F771 Qsmall
- F772 Rsmall
- F773 Ssmall
- F774 Tsmall
- F775 Usmall
- F776 Vsmall
- F777 Wsmall
- F778 Xsmall
- F779 Ysmall
- F77A Zsmall
- F7A1 exclamdownsmall
- F7A2 centoldstyle
- F7A8 Dieresissmall
- F7AF Macronsmall
- F7B4 Acutesmall
- F7B8 Cedillasmall
- F7BF questiondownsmall
- F7E0 Agravesmall
- F7E1 Aacutesmall
- F7E2 Acircumflexsmall
- F7E3 Atildesmall
- F7E4 Adieresissmall
- F7E5 Aringsmall
- F7E6 AEsmall
- F7E7 Ccedillasmall
- F7E8 Egravesmall
- F7E9 Eacutesmall
- F7EA Ecircumflexsmall
- F7EB Edieresissmall
- F7EC Igravesmall
- F7ED Iacutesmall
- F7EE Icircumflexsmall
- F7EF Idieresissmall
- F7F0 Ethsmall
- F7F1 Ntildesmall
- F7F2 Ogravesmall
- F7F3 Oacutesmall
- F7F4 Ocircumflexsmall
- F7F5 Otildesmall
- F7F6 Odieresissmall
- F7F8 Oslashsmall
- F7F9 Ugravesmall
- F7FA Uacutesmall
- F7FB Ucircumflexsmall
- F7FC Udieresissmall
- F7FD Yacutesmall
- F7FE Thornsmall
- F7FF Ydieresissmall
- F8E5 radicalex
- F8E6 arrowvertex
- F8E7 arrowhorizex
- F8E8 registersans
- F8E9 copyrightsans
- F8EA trademarksans
- F8EB parenlefttp
- F8EC parenleftex
- F8ED parenleftbt
- F8EE bracketlefttp
- F8EF bracketleftex
- F8F0 bracketleftbt
- F8F1 bracelefttp
- F8F2 braceleftmid
- F8F3 braceleftbt
- F8F4 braceex
- F8F5 integralex
- F8F6 parenrighttp
- F8F7 parenrightex
- F8F8 parenrightbt
- F8F9 bracketrighttp
- F8FA bracketrightex
- F8FB bracketrightbt
- F8FC bracerighttp
- F8FD bracerightmid
- F8FE bracerightbt
- FB00 ff
- FB01 fi
- FB02 fl
- FB03 ffi
- FB04 ffl
- FB1F afii57705
- FB2A afii57694
- FB2B afii57695
- FB35 afii57723
- FB4B afii57700
-)};
-
-
-sub CreatePostscriptEncoding
-{
- my ($encoding) = @_;
- my $result = "/CurrentEncoding \[\n";
- for (my $i = 0; $i < 256; $i += 8)
- {
- for (my $j = 0; $j < 8; $j++)
- {
- my $ch;
- Tk::catch { $ch = $encoding->decode(chr($i+$j),1) };
- if ($@)
- {
- $result .= '/space';
- }
- else
- {
- my $hexcode = sprintf("%04X",ord($ch));
- $result .= '/'.((exists $Tk::psglyphs->{$hexcode}) ? $Tk::psglyphs->{$hexcode} : 'space');
- }
- }
- $result .= "\n";
- }
- $result .= "\] def\n";
- return $result;
-}
-
-# precalculate entire prolog when this file is loaded
-# (to speed things up)
-$Tk::ps_preamable = "%%BeginProlog\n".
- CreatePostscriptEncoding(Tk::SystemEncoding()). <<'END';
-50 dict begin
-% This is a standard prolog for Postscript generated by Tk's canvas
-% widget.
-% RCS: @(#) $Id: //depot/Tkutf8/Canvas/Canvas.pm#12 $
-
-% The definitions below just define all of the variables used in
-% any of the procedures here. This is needed for obscure reasons
-% explained on p. 716 of the Postscript manual (Section H.2.7,
-% "Initializing Variables," in the section on Encapsulated Postscript).
-
-/baseline 0 def
-/stipimage 0 def
-/height 0 def
-/justify 0 def
-/lineLength 0 def
-/spacing 0 def
-/stipple 0 def
-/strings 0 def
-/xoffset 0 def
-/yoffset 0 def
-/tmpstip null def
-
-
-/cstringshow {
- {
- dup type /stringtype eq
- { show } { glyphshow }
- ifelse
- }
- forall
-} bind def
-
-
-
-/cstringwidth {
- 0 exch 0 exch
- {
- dup type /stringtype eq
- { stringwidth } {
- currentfont /Encoding get exch 1 exch put (\001) stringwidth
- }
- ifelse
- exch 3 1 roll add 3 1 roll add exch
- }
- forall
-} bind def
-
-% font ISOEncode font
-% This procedure changes the encoding of a font from the default
-% Postscript encoding to current system encoding. It's typically invoked just
-% before invoking "setfont". The body of this procedure comes from
-% Section 5.6.1 of the Postscript book.
-
-/ISOEncode {
- dup length dict begin
- {1 index /FID ne {def} {pop pop} ifelse} forall
- /Encoding CurrentEncoding def
- currentdict
- end
-
- % I'm not sure why it's necessary to use "definefont" on this new
- % font, but it seems to be important; just use the name "Temporary"
- % for the font.
-
- /Temporary exch definefont
-} bind def
-
-% StrokeClip
-%
-% This procedure converts the current path into a clip area under
-% the assumption of stroking. It's a bit tricky because some Postscript
-% interpreters get errors during strokepath for dashed lines. If
-% this happens then turn off dashes and try again.
-
-/StrokeClip {
- {strokepath} stopped {
- (This Postscript printer gets limitcheck overflows when) =
- (stippling dashed lines; lines will be printed solid instead.) =
- [] 0 setdash strokepath} if
- clip
-} bind def
-
-% desiredSize EvenPixels closestSize
-%
-% The procedure below is used for stippling. Given the optimal size
-% of a dot in a stipple pattern in the current user coordinate system,
-% compute the closest size that is an exact multiple of the device's
-% pixel size. This allows stipple patterns to be displayed without
-% aliasing effects.
-
-/EvenPixels {
- % Compute exact number of device pixels per stipple dot.
- dup 0 matrix currentmatrix dtransform
- dup mul exch dup mul add sqrt
-
- % Round to an integer, make sure the number is at least 1, and compute
- % user coord distance corresponding to this.
- dup round dup 1 lt {pop 1} if
- exch div mul
-} bind def
-
-% width height string StippleFill --
-%
-% Given a path already set up and a clipping region generated from
-% it, this procedure will fill the clipping region with a stipple
-% pattern. "String" contains a proper image description of the
-% stipple pattern and "width" and "height" give its dimensions. Each
-% stipple dot is assumed to be about one unit across in the current
-% user coordinate system. This procedure trashes the graphics state.
-
-/StippleFill {
- % The following code is needed to work around a NeWSprint bug.
-
- /tmpstip 1 index def
-
- % Change the scaling so that one user unit in user coordinates
- % corresponds to the size of one stipple dot.
- 1 EvenPixels dup scale
-
- % Compute the bounding box occupied by the path (which is now
- % the clipping region), and round the lower coordinates down
- % to the nearest starting point for the stipple pattern. Be
- % careful about negative numbers, since the rounding works
- % differently on them.
-
- pathbbox
- 4 2 roll
- 5 index div dup 0 lt {1 sub} if cvi 5 index mul 4 1 roll
- 6 index div dup 0 lt {1 sub} if cvi 6 index mul 3 2 roll
-
- % Stack now: width height string y1 y2 x1 x2
- % Below is a doubly-nested for loop to iterate across this area
- % in units of the stipple pattern size, going up columns then
- % across rows, blasting out a stipple-pattern-sized rectangle at
- % each position
-
- 6 index exch {
- 2 index 5 index 3 index {
- % Stack now: width height string y1 y2 x y
-
- gsave
- 1 index exch translate
- 5 index 5 index true matrix tmpstip imagemask
- grestore
- } for
- pop
- } for
- pop pop pop pop pop
-} bind def
-
-% -- AdjustColor --
-% Given a color value already set for output by the caller, adjusts
-% that value to a grayscale or mono value if requested by the CL
-% variable.
-
-/AdjustColor {
- CL 2 lt {
- currentgray
- CL 0 eq {
- .5 lt {0} {1} ifelse
- } if
- setgray
- } if
-} bind def
-
-% x y strings spacing xoffset yoffset justify stipple DrawText --
-% This procedure does all of the real work of drawing text. The
-% color and font must already have been set by the caller, and the
-% following arguments must be on the stack:
-%
-% x, y - Coordinates at which to draw text.
-% strings - An array of strings, one for each line of the text item,
-% in order from top to bottom.
-% spacing - Spacing between lines.
-% xoffset - Horizontal offset for text bbox relative to x and y: 0 for
-% nw/w/sw anchor, -0.5 for n/center/s, and -1.0 for ne/e/se.
-% yoffset - Vertical offset for text bbox relative to x and y: 0 for
-% nw/n/ne anchor, +0.5 for w/center/e, and +1.0 for sw/s/se.
-% justify - 0 for left justification, 0.5 for center, 1 for right justify.
-% stipple - Boolean value indicating whether or not text is to be
-% drawn in stippled fashion. If text is stippled,
-% procedure StippleText must have been defined to call
-% StippleFill in the right way.
-%
-% Also, when this procedure is invoked, the color and font must already
-% have been set for the text.
-
-/DrawText {
- /stipple exch def
- /justify exch def
- /yoffset exch def
- /xoffset exch def
- /spacing exch def
- /strings exch def
-
- % First scan through all of the text to find the widest line.
-
- /lineLength 0 def
- strings {
- cstringwidth pop
- dup lineLength gt {/lineLength exch def} {pop} ifelse
- newpath
- } forall
-
- % Compute the baseline offset and the actual font height.
-
- 0 0 moveto (TXygqPZ) false charpath
- pathbbox dup /baseline exch def
- exch pop exch sub /height exch def pop
- newpath
-
- % Translate coordinates first so that the origin is at the upper-left
- % corner of the text's bounding box. Remember that x and y for
- % positioning are still on the stack.
-
- translate
- lineLength xoffset mul
- strings length 1 sub spacing mul height add yoffset mul translate
-
- % Now use the baseline and justification information to translate so
- % that the origin is at the baseline and positioning point for the
- % first line of text.
-
- justify lineLength mul baseline neg translate
-
- % Iterate over each of the lines to output it. For each line,
- % compute its width again so it can be properly justified, then
- % display it.
-
- strings {
- dup cstringwidth pop
- justify neg mul 0 moveto
- stipple {
-
-
- % The text is stippled, so turn it into a path and print
- % by calling StippledText, which in turn calls StippleFill.
- % Unfortunately, many Postscript interpreters will get
- % overflow errors if we try to do the whole string at
- % once, so do it a character at a time.
-
- gsave
- /char (X) def
- {
- dup type /stringtype eq {
- % This segment is a string.
- {
- char 0 3 -1 roll put
- currentpoint
- gsave
- char true charpath clip StippleText
- grestore
- char stringwidth translate
- moveto
- } forall
- } {
- % This segment is glyph name
- % Temporary override
- currentfont /Encoding get exch 1 exch put
- currentpoint
- gsave (\001) true charpath clip StippleText
- grestore
- (\001) stringwidth translate
- moveto
- } ifelse
- } forall
- grestore
- } {cstringshow} ifelse
- 0 spacing neg translate
- } forall
-} bind def
-
-%%EndProlog
-END
-
-1;
-__END__
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Checkbutton.pm b/Master/tlpkg/tlperl/lib/Tk/Checkbutton.pm
deleted file mode 100644
index 491d8cd2444..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Checkbutton.pm
+++ /dev/null
@@ -1,42 +0,0 @@
-package Tk::Checkbutton;
-# Conversion from Tk4.0 button.tcl competed.
-# Copyright (c) 1992-1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-# Copyright (c) 1995-2003 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-
-
-use vars qw($VERSION);
-$VERSION = '4.006'; # $Id: //depot/Tkutf8/Tk/Checkbutton.pm#6 $
-
-# modify it under the same terms as Perl itself, subject
-# to additional disclaimer in license.terms due to partial
-# derivation from Tk4.0 sources.
-
-require Tk::Widget;
-require Tk::Button;
-
-use base qw(Tk::Button);
-
-Construct Tk::Widget 'Checkbutton';
-
-sub Tk_cmd { \&Tk::checkbutton }
-
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $mw->bind($class,'<Enter>', 'Enter');
- $mw->bind($class,'<Leave>', 'Leave');
- $mw->bind($class,'<1>', 'Invoke');
- $mw->bind($class,'<space>', 'Invoke');
- return $class;
-}
-
-sub Invoke
-{
- my $w = shift;
- $w->invoke() unless($w->cget('-state') eq 'disabled');
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/Clipboard.pm b/Master/tlpkg/tlperl/lib/Tk/Clipboard.pm
deleted file mode 100644
index b0eb0ea2b07..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Clipboard.pm
+++ /dev/null
@@ -1,122 +0,0 @@
-# Copyright (c) 1995-2003 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-package Tk::Clipboard;
-use strict;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #8 $ =~ /\D(\d+)\s*$/;
-
-use AutoLoader qw(AUTOLOAD);
-use Tk qw(catch);
-
-sub clipEvents
-{
- return qw[Copy Cut Paste];
-}
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- foreach my $op ($class->clipEvents)
- {
- $mw->Tk::bind($class,"<<$op>>","clipboard$op");
- }
- return $class;
-}
-
-sub clipboardSet
-{
- my $w = shift;
- $w->clipboardClear;
- $w->clipboardAppend(@_);
-}
-
-sub clipboardCopy
-{
- my $w = shift;
- my $val = $w->getSelected;
- if (defined $val)
- {
- $w->clipboardSet('--',$val);
- }
- return $val;
-}
-
-sub clipboardCut
-{
- my $w = shift;
- my $val = $w->clipboardCopy;
- if (defined $val)
- {
- $w->deleteSelected;
- }
- return $val;
-}
-
-sub clipboardGet
-{
- my $w = shift;
- $w->SelectionGet('-selection','CLIPBOARD',@_);
-}
-
-sub clipboardPaste
-{
- my $w = shift;
- local $@;
- catch
- {
-## Different from Tcl/Tk version:
-# if ($w->windowingsystem eq 'x11')
-# {
-# catch
-# {
-# $w->deleteSelected;
-# };
-# }
- $w->insert("insert", $w->clipboardGet);
- $w->SeeInsert if $w->can('SeeInsert');
- };
-}
-
-sub clipboardOperations
-{
- my @class = ();
- my $mw = shift;
- if (ref $mw)
- {
- $mw = $mw->DelegateFor('bind');
- }
- else
- {
- push(@class,$mw);
- $mw = shift;
- }
- while (@_)
- {
- my $op = shift;
- $mw->Tk::bind(@class,"<<$op>>","clipboard$op");
- }
-}
-
-# These methods work for Entry and Text
-# and can be overridden where they don't work
-
-sub deleteSelected
-{
- my $w = shift;
- catch { $w->delete('sel.first','sel.last') };
-}
-
-
-1;
-__END__
-
-sub getSelected
-{
- my $w = shift;
- my $val = Tk::catch { $w->get('sel.first','sel.last') };
- return $val;
-}
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/CmdLine.pm b/Master/tlpkg/tlperl/lib/Tk/CmdLine.pm
deleted file mode 100644
index 2e821e826ae..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/CmdLine.pm
+++ /dev/null
@@ -1,954 +0,0 @@
-package Tk::CmdLine; # -*-Perl-*-
-
-#/----------------------------------------------------------------------------//
-#/ Module: Tk/CmdLine.pm
-#/
-#/ Purpose:
-#/
-#/ Process standard X11 command line options and set initial resources.
-#/
-#/ Author: ???? Date: ????
-#/
-#/ History: SEE POD
-#/----------------------------------------------------------------------------//
-
-use vars qw($VERSION);
-$VERSION = '4.006'; # $Id: //depot/Tkutf8/Tk/CmdLine.pm#6 $
-
-use 5.004;
-
-use strict;
-
-use Config;
-
-my $OBJECT = undef; # define the current object
-
-#/----------------------------------------------------------------------------//
-#/ Constructor
-#/ Returns the object reference.
-#/----------------------------------------------------------------------------//
-
-sub new # Tk::CmdLine::new()
-{
- my $this = shift(@_);
- my $class = ref($this) || $this;
-
- my $name = 'pTk';
- $name = $1 if (($0 =~ m/(?:^|[\/\\])([\w-]+)(?:\.\w+)?$/) && ($1 ne '-e'));
-
- my $self = {
- name => $name,
- config => { -name => $name },
- options => {},
- methods => {},
- command => [],
- synchronous => 0,
- iconic => 0,
- motif => ($Tk::strictMotif || 0),
- resources => {} };
-
- return bless($self, $class);
-}
-
-#/----------------------------------------------------------------------------//
-#/ Process the arguments in a given array or in @ARGV.
-#/ Returns the object reference.
-#/----------------------------------------------------------------------------//
-
-sub Argument_ # Tk::CmdLine::Argument_($flag) # private method
-{
- my $self = shift(@_);
- my $flag = shift(@_);
- unless ($self->{offset} < @{$self->{argv}})
- {
- die 'Usage: ', $self->{name}, ' ... ', $flag, " <argument> ...\n";
- }
- return splice(@{$self->{argv}}, $self->{offset}, 1);
-}
-
-sub Config_ # Tk::CmdLine::Config_($flag, $name) # private method
-{
- my $self = shift(@_);
- my ($flag, $name) = @_;
- my $val = $self->Argument_($flag);
- push(@{$self->{command}}, $flag, $val);
- $self->{config}->{"-$name"} = $val;
-}
-
-sub Flag_ # Tk::CmdLine::Flag_($flag, $name) # private method
-{
- my $self = shift(@_);
- my ($flag, $name) = @_;
- push(@{$self->{command}}, $flag);
- $self->{$name} = 1;
-}
-
-sub Option_ # Tk::CmdLine::Option_($flag, $name) # private method
-{
- my $self = shift(@_);
- my ($flag, $name) = @_;
- my $val = $self->Argument_($flag);
- push(@{$self->{command}}, $flag, $val);
- $self->{options}->{"*$name"} = $val;
-}
-
-sub Method_ # Tk::CmdLine::Method_($flag, $name) # private method
-{
- my $self = shift(@_);
- my ($flag, $name) = @_;
- my $val = $self->Argument_($flag);
- push(@{$self->{command}}, $flag, $val);
- $self->{methods}->{$name} = $val;
-}
-
-sub Resource_ # Tk::CmdLine::Resource_($flag, $name) # private method
-{
- my $self = shift(@_);
- my ($flag, $name) = @_;
- my $val = $self->Argument_($flag);
- if ($val =~ /^([^!:\s]+)*\s*:\s*(.*)$/)
- {
- push(@{$self->{command}}, $flag, $val);
- $self->{options}->{$1} = $2;
- }
-}
-
-my %Method = (
- background => 'Option_',
- bg => 'background', # alias
- class => 'Config_',
- display => 'screen', # alias
- fg => 'foreground', # alias
- fn => 'font', # alias
- font => 'Option_',
- foreground => 'Option_',
- geometry => 'Method_',
- iconic => 'Flag_',
- iconposition => 'Method_',
- motif => 'Flag_',
- name => 'Config_',
- screen => 'Config_',
- synchronous => 'Flag_',
- title => 'Config_',
- xrm => 'Resource_'
-);
-
-sub SetArguments # Tk::CmdLine::SetArguments([@argument])
-{
- my $self = (@_ # define the object as necessary
- ? ((ref($_[0]) eq __PACKAGE__)
- ? shift(@_)
- : (($_[0] eq __PACKAGE__) ? shift(@_) : 1) && ($OBJECT ||= __PACKAGE__->new()))
- : ($OBJECT ||= __PACKAGE__->new()));
- $OBJECT = $self; # update the current object
- $self->{argv} = (@_ ? [ @_ ] : \@ARGV);
- $self->{offset} = 0; # its existence will denote that this method has been called
-
- my @option = ();
-
- while ($self->{offset} < @{$self->{argv}})
- {
- last if ($self->{argv}->[$self->{offset}] eq '--');
- unless (
- (($self->{argv}->[$self->{offset}] =~ /^-{1,2}(\w+)$/) && (@option = $1)) ||
- (($self->{argv}->[$self->{offset}] =~ /^--(\w+)=(.*)$/) && (@option = ($1, $2))))
- {
- ++$self->{offset};
- next;
- }
-
- next if (!exists($Method{$option[0]}) && ++$self->{offset});
-
- $option[0] = $Method{$option[0]} if exists($Method{$Method{$option[0]}});
-
- my $method = $Method{$option[0]};
-
- if (@option > 1) # replace --<option>=<value> with <value>
- {
- $self->{argv}->[$self->{offset}] = $option[1];
- }
- else # remove the argument
- {
- splice(@{$self->{argv}}, $self->{offset}, 1);
- }
-
- $self->$method(('-' . $option[0]), $option[0]);
- }
-
- $self->{config}->{-class} ||= ucfirst($self->{config}->{-name});
-
- delete($self->{argv}); # no longer needed
-
- return $self;
-}
-
-use vars qw(&process); *process = \&SetArguments; # alias to keep old code happy
-
-#/----------------------------------------------------------------------------//
-#/ Get a list of the arguments that have been processed by SetArguments().
-#/ Returns an array.
-#/----------------------------------------------------------------------------//
-
-sub GetArguments # Tk::CmdLine::GetArguments()
-{
- my $self = (@_ # define the object as necessary
- ? ((ref($_[0]) eq __PACKAGE__)
- ? shift(@_)
- : (($_[0] eq __PACKAGE__) ? shift(@_) : 1) && ($OBJECT ||= __PACKAGE__->new()))
- : ($OBJECT ||= __PACKAGE__->new()));
- $OBJECT = $self; # update the current object
-
- $self->SetArguments() unless exists($self->{offset}); # set arguments if not yet done
-
- return @{$self->{command}};
-}
-
-#/----------------------------------------------------------------------------//
-#/ Get the value of a configuration option (default: -class).
-#/ Returns the option value.
-#/----------------------------------------------------------------------------//
-
-sub cget # Tk::CmdLine::cget([$option])
-{
- my $self = (@_ # define the object as necessary
- ? ((ref($_[0]) eq __PACKAGE__)
- ? shift(@_)
- : (($_[0] eq __PACKAGE__) ? shift(@_) : 1) && ($OBJECT ||= __PACKAGE__->new()))
- : ($OBJECT ||= __PACKAGE__->new()));
- $OBJECT = $self; # update the current object
- my $option = shift(@_) || '-class';
-
- $self->SetArguments() unless exists($self->{offset}); # set arguments if not yet done
-
- return (exists($self->{config}->{$option}) ? $self->{config}->{$option} : undef);
-}
-
-#/----------------------------------------------------------------------------//
-
-sub CreateArgs # Tk::CmdLine::CreateArgs()
-{
- my $self = (@_ # define the object as necessary
- ? ((ref($_[0]) eq __PACKAGE__)
- ? shift(@_)
- : (($_[0] eq __PACKAGE__) ? shift(@_) : 1) && ($OBJECT ||= __PACKAGE__->new()))
- : ($OBJECT ||= __PACKAGE__->new()));
- $OBJECT = $self; # update the current object
-
- $self->SetArguments() unless exists($self->{offset}); # set arguments if not yet done
-
- return $self->{config};
-}
-
-#/----------------------------------------------------------------------------//
-
-sub Tk::MainWindow::apply_command_line
-{
- my $mw = shift(@_);
-
- my $self = ($OBJECT ||= __PACKAGE__->new());
-
- $self->SetArguments() unless exists($self->{offset}); # set arguments if not yet done
-
- foreach my $priority (keys(%{$self->{resources}}))
- {
- foreach my $resource (@{$self->{resources}->{$priority}})
- {
- $mw->optionAdd(@{$resource}, $priority);
- }
- }
-
- foreach my $key (keys(%{$self->{options}}))
- {
- $mw->optionAdd($key => $self->{options}->{$key}, 'interactive');
- }
-
- foreach my $key (keys(%{$self->{methods}}))
- {
- $mw->$key($self->{methods}->{$key});
- }
-
- if ($self->{methods}->{geometry})
- {
- if ($self->{methods}->{geometry} =~ /[+-]\d+[+-]\d+/)
- {
- $mw->positionfrom('user');
- }
- if ($self->{methods}->{geometry} =~ /\d+x\d+/)
- {
- $mw->sizefrom('user');
- }
- delete $self->{methods}->{geometry}; # XXX needed?
- }
-
- $mw->Synchronize() if $self->{synchronous};
-
- if ($self->{iconic})
- {
- $mw->iconify();
- $self->{iconic} = 0;
- }
-
- $Tk::strictMotif = ($self->{motif} || 0);
-
- # Both these are needed to reliably save state
- # but 'hostname' is tricky to do portably.
- # $mw->client(hostname());
- $mw->protocol('WM_SAVE_YOURSELF' => ['WMSaveYourself',$mw]);
- $mw->command([ $self->{name}, @{$self->{command}} ]);
-}
-
-#/----------------------------------------------------------------------------//
-#/ Set the initial resources.
-#/ Returns the object reference.
-#/----------------------------------------------------------------------------//
-
-sub SetResources # Tk::CmdLine::SetResources((\@resource | $resource) [, $priority])
-{
- my $self = (@_ # define the object as necessary
- ? ((ref($_[0]) eq __PACKAGE__)
- ? shift(@_)
- : (($_[0] eq __PACKAGE__) ? shift(@_) : 1) && ($OBJECT ||= __PACKAGE__->new()))
- : ($OBJECT ||= __PACKAGE__->new()));
- $OBJECT = $self; # update the current object
-
- $self->SetArguments() unless exists($self->{offset}); # set arguments if not yet done
- return $self unless @_;
-
- my $data = shift(@_);
- my $priority = shift(@_) || 'userDefault';
-
- $self->{resources}->{$priority} = [] unless exists($self->{resources}->{$priority});
-
- foreach my $resource ((ref($data) eq 'ARRAY') ? @{$data} : $data)
- {
- if (ref($resource) eq 'ARRAY') # resources in [ <pattern>, <value> ] format
- {
- push(@{$self->{resources}->{$priority}}, [ @{$resource} ])
- if (@{$resource} == 2);
- }
- else # resources in resource file format
- {
- push(@{$self->{resources}->{$priority}}, [ $1, $2 ])
- if ($resource =~ /^([^!:\s]+)*\s*:\s*(.*)$/);
- }
- }
-
- return $self;
-}
-
-#/----------------------------------------------------------------------------//
-#/ Load initial resources from one or more files (default: $XFILESEARCHPATH with
-#/ priority 'startupFile' and $XUSERFILESEARCHPATH with priority 'userDefault').
-#/ Returns the object reference.
-#/----------------------------------------------------------------------------//
-
-sub LoadResources # Tk::CmdLine::LoadResources([%options])
-{
- my $self = (@_ # define the object as necessary
- ? ((ref($_[0]) eq __PACKAGE__)
- ? shift(@_)
- : (($_[0] eq __PACKAGE__) ? shift(@_) : 1) && ($OBJECT ||= __PACKAGE__->new()))
- : ($OBJECT ||= __PACKAGE__->new()));
- $OBJECT = $self; # update the current object
-
- $self->SetArguments() unless exists($self->{offset}); # set arguments if not yet done
-
- my %options = @_;
-
- my @file = ();
- my $echo = (exists($options{-echo})
- ? (defined($options{-echo}) ? $options{-echo} : \*STDOUT) : undef);
-
- unless (%options && (exists($options{-file}) || exists($options{-symbol})))
- {
- @file = (
- { -symbol => 'XFILESEARCHPATH', -priority => 'startupFile' },
- { -symbol => 'XUSERFILESEARCHPATH', -priority => 'userDefault' } );
- }
- else
- {
- @file = { %options };
- }
-
- my $delimiter = (($^O eq 'MSWin32') ? ';' : ':');
-
- foreach my $file (@file)
- {
- my $fileSpec = $file->{-spec} = undef;
- if (exists($file->{-symbol}))
- {
- my $xpath = undef;
- if ($file->{-symbol} eq 'XUSERFILESEARCHPATH')
- {
- $file->{-priority} ||= 'userDefault';
- foreach my $symbol (qw(XUSERFILESEARCHPATH XAPPLRESDIR HOME))
- {
- last if (exists($ENV{$symbol}) && ($xpath = $ENV{$symbol}));
- }
- next unless defined($xpath);
- }
- else
- {
- $file->{-priority} ||= (($file->{-symbol} eq 'XFILESEARCHPATH')
- ? 'startupFile' : 'userDefault');
- next unless (
- exists($ENV{$file->{-symbol}}) && ($xpath = $ENV{$file->{-symbol}}));
- }
-
- unless (exists($self->{translation}))
- {
- $self->{translation} = {
- '%l' => '', # ignored
- '%C' => '', # ignored
- '%S' => '', # ignored
- '%L' => ($ENV{LANG} || 'C'), # language
- '%T' => 'app-defaults', # type
- '%N' => $self->{config}->{-class} # filename
- };
- }
-
- my @postfix = map({ $_ . '/' . $self->{config}->{-class} }
- ('/' . $self->{translation}->{'%L'}), '');
-
- ITEM: foreach $fileSpec (split($Config{path_sep}, $xpath))
- {
- if ($fileSpec =~ s/(%[A-Za-z])/$self->{translation}->{$1}/g) # File Pattern
- {
- if (defined($echo) && ($file->{-symbol} ne 'XFILESEARCHPATH'))
- {
- print $echo 'Checking ', $fileSpec, "\n";
- }
- next unless ((-f $fileSpec) && (-r _) && (-s _));
- $file->{-spec} = $fileSpec;
- last;
- }
- else # Directory - Check for <Directory>/$LANG/<Class>, <Directory>/<CLASS>
- {
- foreach my $postfix (@postfix)
- {
- my $fileSpec2 = $fileSpec . $postfix;
- if (defined($echo) && ($file->{-symbol} ne 'XFILESEARCHPATH'))
- {
- print $echo 'Checking ', $fileSpec2, "\n";
- }
- next unless ((-f $fileSpec2) && (-r _) && (-s _));
- $file->{-spec} = $fileSpec2;
- last ITEM;
- }
- }
- }
- }
- elsif (exists($file->{-file}) && ($fileSpec = $file->{-file}))
- {
- print $echo 'Checking ', $fileSpec, "\n" if defined($echo);
- next unless ((-f $fileSpec) && (-r _) && (-s _));
- $file->{-spec} = $fileSpec;
- }
- }
-
- foreach my $file (@file)
- {
- next unless defined($file->{-spec});
- local *SPEC;
- next unless open(SPEC,$file->{-spec});
- print $echo ' Loading ', $file->{-spec}, "\n" if defined($echo);
-
- my $resource = undef;
- my @resource = ();
- my $continuation = 0;
-
- while (defined(my $line = <SPEC>))
- {
- chomp($line);
- next if ($line =~ /^\s*$/); # skip blank lines
- next if ($line =~ /^\s*!/); # skip comments
- $continuation = ($line =~ s/\s*\\$/ /); # search for trailing backslash
- unless (defined($resource)) # it is the first line
- {
- $resource = $line;
- }
- else # it is a continuation line
- {
- $line =~ s/^\s*//; # remove leading whitespace
- $resource .= $line;
- }
- next if $continuation;
- push(@resource, [ $1, $2 ]) if ($resource =~ /^([^:\s]+)*\s*:\s*(.*)$/);
- $resource = undef;
- }
-
- close(SPEC);
-
- if (defined($resource)) # special case - EOF after line with trailing backslash
- {
- push(@resource, [ $1, $2 ]) if ($resource =~ /^([^:\s]+)*\s*:\s*(.*)$/);
- }
-
- $self->SetResources(\@resource, $file->{-priority}) if @resource;
- }
-
- return $self;
-}
-
-#/----------------------------------------------------------------------------//
-
-1;
-
-__END__
-
-=cut
-
-=head1 NAME
-
-Tk::CmdLine - Process standard X11 command line options and set initial resources
-
-=for pm Tk/CmdLine.pm
-
-=for category Creating and Configuring Widgets
-
-=head1 SYNOPSIS
-
- Tk::CmdLine::SetArguments([@argument]);
-
- my $value = Tk::CmdLine::cget([$option]);
-
- Tk::CmdLine::SetResources((\@resource | $resource) [, $priority]);
-
- Tk::CmdLine::LoadResources(
- [ -symbol => $symbol ]
- [ -file => $fileSpec ]
- [ -priority => $priority ]
- [ -echo => $fileHandle ] );
-
-=head1 DESCRIPTION
-
-Process standard X11 command line options and set initial resources.
-
-The X11R5 man page for X11 says: "Most X programs attempt to use the same names
-for command line options and arguments. All applications written with the
-X Toolkit Intrinsics automatically accept the following options: ...".
-This module processes these command line options for perl/Tk applications
-using the C<SetArguments>() function.
-
-This module can optionally be used to load initial resources explicitly via
-function C<SetResources>(), or from specified files (default: the standard X11
-application-specific resource files) via function C<LoadResources>().
-
-=head2 Command Line Options
-
-=over 4
-
-=item B<-background> I<Color> | B<-bg> I<Color>
-
-Specifies the color to be used for the window background.
-
-=item B<-class> I<Class>
-
-Specifies the class under which resources for the application should be found.
-This option is useful in shell aliases to distinguish between invocations
-of an application, without resorting to creating links to alter the executable
-file name.
-
-=item B<-display> I<Display> | B<-screen> I<Display>
-
-Specifies the name of the X server to be used.
-
-=item B<-font> I<Font> | B<-fn> I<Font>
-
-Specifies the font to be used for displaying text.
-
-=item B<-foreground> I<Color> | B<-fg> I<Color>
-
-Specifies the color to be used for text or graphics.
-
-=item B<-geometry> I<Geometry>
-
-Specifies the initial size and location of the I<first>
-L<MainWindow|Tk::MainWindow>.
-
-=item B<-iconic>
-
-Indicates that the user would prefer that the application's windows initially
-not be visible as if the windows had been immediately iconified by the user.
-Window managers may choose not to honor the application's request.
-
-=item B<-motif>
-
-Specifies that the application should adhere as closely as possible to Motif
-look-and-feel standards. For example, active elements such as buttons and
-scrollbar sliders will not change color when the pointer passes over them.
-
-=item B<-name> I<Name>
-
-Specifies the name under which resources for the application should be found.
-This option is useful in shell aliases to distinguish between invocations
-of an application, without resorting to creating links to alter the executable
-file name.
-
-=item B<-synchronous>
-
-Indicates that requests to the X server should be sent synchronously, instead of
-asynchronously. Since Xlib normally buffers requests to the server, errors do
-do not necessarily get reported immediately after they occur. This option turns
-off the buffering so that the application can be debugged. It should never
-be used with a working program.
-
-=item B<-title> I<TitleString>
-
-This option specifies the title to be used for this window. This information is
-sometimes used by a window manager to provide some sort of header identifying
-the window.
-
-=item B<-xrm> I<ResourceString>
-
-Specifies a resource pattern and value to override any defaults. It is also
-very useful for setting resources that do not have explicit command line
-arguments.
-
-The I<ResourceString> is of the form E<lt>I<pattern>E<gt>:E<lt>I<value>E<gt>,
-that is (the first) ':' is used to determine which part is pattern and which
-part is value. The (E<lt>I<pattern>E<gt>, E<lt>I<value>E<gt>) pair is entered
-into the options database with B<optionAdd> (for each
-L<MainWindow|Tk::MainWindow> configured), with I<interactive> priority.
-
-=back
-
-=head2 Initial Resources
-
-There are several mechanism for initializing the resource database to be used
-by an X11 application. Resources may be defined in a $C<HOME>/.Xdefaults file,
-a system application defaults file (e.g.
-/usr/lib/X11/app-defaults/E<lt>B<CLASS>E<gt>),
-or a user application defaults file (e.g. $C<HOME>/E<lt>B<CLASS>E<gt>).
-The Tk::CmdLine functionality for setting initial resources concerns itself
-with the latter two.
-
-Resource files contain data lines of the form
-E<lt>I<pattern>E<gt>:E<lt>I<value>E<gt>.
-They may also contain blank lines and comment lines (denoted
-by a ! character as the first non-blank character). Refer to L<option|Tk::option>
-for a description of E<lt>I<pattern>E<gt>:E<lt>I<value>E<gt>.
-
-=over 4
-
-=item System Application Defaults Files
-
-System application defaults files may be specified via environment variable
-$C<XFILESEARCHPATH> which, if set, contains a list of file patterns
-(joined using the OS-dependent path delimiter, e.g. colon on B<UNIX>).
-
-=item User Application Defaults Files
-
-User application defaults files may be specified via environment variables
-$C<XUSERFILESEARCHPATH>, $C<XAPPLRESDIR> or $C<HOME>.
-
-=back
-
-=head1 METHODS
-
-=over 4
-
-=item B<SetArguments> - Tk::CmdLine::SetArguments([@argument])
-
-Extract the X11 options contained in a specified array (@ARGV by default).
-
- Tk::CmdLine::SetArguments([@argument])
-
-The X11 options may be specified using a single dash I<-> as per the X11
-convention, or using two dashes I<--> as per the POSIX standard (e.g.
-B<-geometry> I<100x100>, B<-geometry> I<100x100> or B<-geometry=>I<100x100>).
-The options may be interspersed with other options or arguments.
-A I<--> by itself terminates option processing.
-
-By default, command line options are extracted from @ARGV the first time
-a MainWindow is created. The Tk::MainWindow constructor indirectly invokes
-C<SetArguments>() to do this.
-
-=item B<GetArguments> - Tk::CmdLine::GetArguments()
-
-Get a list of the X11 options that have been processed by C<SetArguments>().
-(C<GetArguments>() first invokes C<SetArguments>() if it has not already been invoked.)
-
-=item B<cget> - Tk::CmdLine::cget([$option])
-
-Get the value of a configuration option specified via C<SetArguments>().
-(C<cget>() first invokes C<SetArguments>() if it has not already been invoked.)
-
- Tk::CmdLine::cget([$option])
-
-The valid options are: B<-class>, B<-name>, B<-screen> and B<-title>.
-If no option is specified, B<-class> is implied.
-
-A typical use of C<cget>() might be to obtain the application class in order
-to define the name of a resource file to be loaded in via C<LoadResources>().
-
- my $class = Tk::CmdLine::cget(); # process command line and return class
-
-=item B<SetResources> - Tk::CmdLine::SetResources((\@resource | $resource) [, $priority])
-
-Set the initial resources.
-
- Tk::CmdLine::SetResources((\@resource | $resource) [, $priority])
-
-A single resource may be specified using a string of the form
-'E<lt>I<pattern>E<gt>:E<lt>I<value>E<gt>'. Multiple resources may be specified
-by passing an array reference whose elements are either strings of the above
-form, and/or anonymous arrays of the form [ E<lt>I<pattern>E<gt>,
-E<lt>I<value>E<gt> ]. The optional second argument specifies the priority,
-as defined in L<option|Tk::option>, to be associated with the resources
-(default: I<userDefault>).
-
-Note that C<SetResources>() first invokes C<SetArguments>() if it has not already
-been invoked.
-
-=item B<LoadResources> - Tk::CmdLine::LoadResources([%options])
-
-Load initial resources from one or more files.
-
- Tk::CmdLine::LoadResources(
- [ -symbol => $symbol ]
- [ -file => $fileSpec ]
- [ -priority => $priority ]
- [ -echo => $fileHandle ] );
-
-[ B<-symbol> =E<gt> $symbol ] specifies the name of an environment variable
-that, if set, defines a list of one or more directories and/or file patterns
-(joined using the OS-dependent path delimiter, e.g. colon on B<UNIX>).
-$C<XUSERFILESEARCHPATH> is a special case.
-If $C<XUSERFILESEARCHPATH> is not set, $C<XAPPLRESDIR> is checked instead.
-If $C<XAPPLRESDIR> is not set, $C<HOME> is checked instead.
-
-An item is identified as a file pattern if it contains one or more /%[A-Za-z]/
-patterns. Only patterns B<%L>, B<%T> and B<%N> are currently recognized. All
-others are replaced with the null string. Pattern B<%L> is translated into
-$C<LANG>. Pattern B<%T> is translated into I<app-defaults>. Pattern B<%N> is
-translated into the application class name.
-
-Each file pattern, after substitutions are applied, is assumed to define a
-FileSpec to be examined.
-
-When a directory is specified, FileSpecs
-E<lt>B<DIRECTORY>E<gt>/E<lt>B<LANG>E<gt>/E<lt>B<CLASS>E<gt>
-and E<lt>B<DIRECTORY>E<gt>/E<lt>B<CLASS>E<gt> are defined, in that order.
-
-[ B<-file> =E<gt> $fileSpec ] specifies a resource file to be loaded in.
-The file is silently skipped if if does not exist, or if it is not readable.
-
-[ B<-priority> =E<gt> $priority ] specifies the priority, as defined in
-L<option|Tk::option>, to be associated with the resources
-(default: I<userDefault>).
-
-[ B<-echo> =E<gt> $fileHandle ] may be used to specify that a line should be
-printed to the corresponding FileHandle (default: \*STDOUT) everytime a file
-is examined / loaded.
-
-If no B<-symbol> or B<-file> options are specified, C<LoadResources>()
-processes symbol $C<XFILESEARCHPATH> with priority I<startupFile> and
-$C<XUSERFILESEARCHPATH> with priority I<userDefault>.
-(Note that $C<XFILESEARCHPATH> and $C<XUSERFILESEARCHPATH> are supposed to
-contain only patterns. $C<XAPPLRESDIR> and $C<HOME> are supposed to be a single
-directory. C<LoadResources>() does not check/care whether this is the case.)
-
-For each set of FileSpecs, C<LoadResources>() examines each FileSpec to
-determine if the file exists and is readable. The first file that meets this
-criteria is read in and C<SetResources>() is invoked.
-
-Note that C<LoadResources>() first invokes C<SetArguments>() if it has not already
-been invoked.
-
-=back
-
-=head1 NOTES
-
-This module is an object-oriented module whose methods can be invoked as object
-methods, class methods or regular functions. This is accomplished via an
-internally-maintained object reference which is created as necessary, and which
-always points to the last object used. C<SetArguments>(), C<SetResources>() and
-C<LoadResources>() return the object reference.
-
-=head1 EXAMPLES
-
-=over
-
-=item 1
-
-@ARGV is processed by Tk::CmdLine at MainWindow creation.
-
- use Tk;
-
- # <Process @ARGV - ignoring all X11-specific options>
-
- my $mw = MainWindow->new();
-
- MainLoop();
-
-=item 2
-
-@ARGV is processed by Tk::CmdLine before MainWindow creation.
-An @ARGV of (--geometry=100x100 -opt1 a b c -bg red)
-is equal to (-opt1 a b c) after C<SetArguments>() is invoked.
-
- use Tk;
-
- Tk::CmdLine::SetArguments(); # Tk::CmdLine->SetArguments() works too
-
- # <Process @ARGV - not worrying about X11-specific options>
-
- my $mw = MainWindow->new();
-
- MainLoop();
-
-=item 3
-
-Just like 2) except that default arguments are loaded first.
-
- use Tk;
-
- Tk::CmdLine::SetArguments(qw(-name test -iconic));
- Tk::CmdLine::SetArguments();
-
- # <Process @ARGV - not worrying about X11-specific options>
-
- my $mw = MainWindow->new();
-
- MainLoop();
-
-=item 4
-
-@ARGV is processed by Tk::CmdLine before MainWindow creation.
-Standard resource files are loaded in before MainWindow creation.
-
- use Tk;
-
- Tk::CmdLine::SetArguments();
-
- # <Process @ARGV - not worrying about X11-specific options>
-
- Tk::CmdLine::LoadResources();
-
- my $mw = MainWindow->new();
-
- MainLoop();
-
-=item 5
-
-@ARGV is processed by Tk::CmdLine before MainWindow creation.
-Standard resource files are loaded in before MainWindow creation
-using non-default priorities.
-
- use Tk;
-
- Tk::CmdLine::SetArguments();
-
- # <Process @ARGV - not worrying about X11-specific options>
-
- Tk::CmdLine::LoadResources(-echo => \*STDOUT,
- -priority => 65, -symbol => 'XFILESEARCHPATH' );
- Tk::CmdLine::LoadResources(-echo => \*STDOUT,
- -priority => 75, -symbol => 'XUSERFILESEARCHPATH' );
-
- my $mw = MainWindow->new();
-
- MainLoop();
-
-=item 6
-
-@ARGV is processed by Tk::CmdLine before MainWindow creation.
-Standard resource files are loaded in before MainWindow creation.
-Individual resources are also loaded in before MainWindow creation.
-
- use Tk;
-
- Tk::CmdLine::SetArguments();
-
- # <Process @ARGV - not worrying about X11-specific options>
-
- Tk::CmdLine::LoadResources();
-
- Tk::CmdLine::SetResources( # set a single resource
- '*Button*background: red',
- 'widgetDefault' );
-
- Tk::CmdLine::SetResources( # set multiple resources
- [ '*Button*background: red', '*Button*foreground: blue' ],
- 'widgetDefault' );
-
- my $mw = MainWindow->new();
-
- MainLoop();
-
-=back
-
-=head1 ENVIRONMENT
-
-=over 4
-
-=item B<HOME> (optional)
-
-Home directory which may contain user application defaults files as
-$C<HOME>/$C<LANG>/E<lt>B<CLASS>E<gt> or $C<HOME>/E<lt>B<CLASS>E<gt>.
-
-=item B<LANG> (optional)
-
-The current language (default: I<C>).
-
-=item B<XFILESEARCHPATH> (optional)
-
-List of FileSpec patterns
-(joined using the OS-dependent path delimiter, e.g. colon on B<UNIX>)
-used in defining system application defaults files.
-
-=item B<XUSERFILESEARCHPATH> (optional)
-
-List of FileSpec patterns
-(joined using the OS-dependent path delimiter, e.g. colon on B<UNIX>)
-used in defining user application defaults files.
-
-=item B<XAPPLRESDIR> (optional)
-
-Directory containing user application defaults files as
-$C<XAPPLRESDIR>/$C<LANG>/E<lt>B<CLASS>E<gt> or
-$C<XAPPLRESDIR>/E<lt>B<CLASS>E<gt>.
-
-=back
-
-=head1 SEE ALSO
-
-L<MainWindow|Tk::MainWindow>
-L<option|Tk::option>
-
-=head1 HISTORY
-
-=over 4
-
-=item *
-
-1999.03.04 Ben Pavon E<lt>ben.pavon@hsc.hac.comE<gt>
-
-Rewritten as an object-oriented module.
-
-Allow one to process command line options in a specified array (@ARGV by default).
-Eliminate restrictions on the format and location of the options within the array
-(previously the X11 options could not be specified in POSIX format and had to be
-at the beginning of the array).
-
-Added the C<SetResources>() and C<LoadResources>() functions to allow the definition
-of resources prior to MainWindow creation.
-
-=item *
-
-2000.08.31 Ben Pavon E<lt>ben.pavon@hsc.hac.comE<gt>
-
-Added the C<GetArguments>() method which returns the list of arguments that
-have been processed by C<SetArguments>().
-
-Modified C<LoadResources>() to split the symbols using the OS-dependent
-path delimiter defined in the B<Config> module.
-
-Modified C<LoadResources>() to eliminate a warning message when processing
-patterns B<%l>, B<%C>, B<%S>.
-
-=back
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/ColorEdit.xpm b/Master/tlpkg/tlperl/lib/Tk/ColorEdit.xpm
deleted file mode 100644
index ef3474cd869..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/ColorEdit.xpm
+++ /dev/null
@@ -1,58 +0,0 @@
-/* XPM */
-static char * ColorEditor_xpm[] = {
-"48 48 6 1",
-" c #0000FFFF0000",
-". c #FFFFFFFF0000",
-"X c #FFFF00000000",
-"o c #000000000000",
-"O c #0000FFFFFFFF",
-"+ c #00000000FFFF",
-" . . ......X..XXXXXXXXXXXXXXXX",
-" . .X.X. X...XX.XXXXXXXXXXX",
-" . . . ... ...XXXXXXXXXXXXXX",
-" . . .. .....XX.XXXXXXXXXXXX",
-" . .X.X...XXX..XXXXXXXXXXXX",
-" .. . ....X...X.XXXXXXXXX",
-" .. ..X.. . ..X..XXXXXXXX",
-" .... ..X.X..X.XXXXXXX",
-" ... .X. X...X...XX.XXX",
-" . .. ... XX...XXXX..XXXX",
-" ooo o ooo. . .. .X...X..X.XXXXX",
-" oo oo oo. . . . .......X.X.XX",
-" oo o oo . . .. ........XX.XXXX",
-" oo ooo oo ooo Xooo.oo..... X XX.X",
-" oo o oo oo o oo ooo o.. . X...X X",
-" oo oo oo oo oo oo .oo . X.X.....XX ",
-"O oo o oo oo oo oo oo oo. ... X..... .",
-"O O oo oo oo o oo ooo o. oo . ... .X..X",
-"O OOOooooO ooo ooo ooo oo ... ....... X ",
-" O OOO . . .. ... ..",
-"OOO OOOO OO O . .... . . .. .",
-" + O O O O .. .. . .",
-" O OOO OO . .. .... ",
-"OOOOO O OO . .. . ... ",
-"+OOOO OOOO OO O ... .. ..",
-" O+OO OO O . ",
-"OOOOOOOOoooooooOOOO ooo oo .... ",
-"OO++ OOO ooO OoOO oo oo oo .. ",
-"+OOOOOOOOooOOOo O O oo oo .",
-"++OOO +oo+oOO O oo oo ooo ooooo ooo ooo oo. ",
-"+OO O OOoooooO O o ooo oo oo o oo ooo o ",
-"++++ O OooOOoO Ooo Ooo oo oo oo oo oo ",
-"+++OOOO ooOOOoOOooOOooO oo oo oo oo oo ",
-"++++++ Ooo OOoOOooOooo ooo ooo o oo o oo ",
-"+++O+++oooooooOOOooOoooOooo ooo Oooo oo ",
-"++++++++O++OOOO O OOOOOOO ",
-"++O++++O+O+OOOOOOO O O OOOOOO O ",
-"+++O+++OOO+OO OOOO O OO O O O ",
-"++++++++O++O OO OO OO OOO OO O O ",
-"+++++++++++++ OOOOOO OOOO OO OO ",
-"+++++++++++++O+ +O OOOO OOO OOO OOO ",
-"++++++++++++++ OOOOO O OOOOOOOOOO ",
-"+++++++++++++ ++ OO +O OOOOO O O O ",
-"+++++++++++++++O+++O+O+O OOOOOOOOOO O ",
-"+++++++++++++O++++O++ O OOO O OOO OO ",
-"++++++++++++++++O+++O+O+OOOO OOOO O OO ",
-"+++++++++++++++++++O+++ +++O OOOOOO OO O ",
-"++++++++++++++++++++++ +++ O OOOOOOOOO "};
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/ColorEditor.pm b/Master/tlpkg/tlperl/lib/Tk/ColorEditor.pm
deleted file mode 100644
index e84b0077410..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/ColorEditor.pm
+++ /dev/null
@@ -1,761 +0,0 @@
-package Tk::ColorSelect;
-use strict;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #8 $ =~ /\D(\d+)\s*$/;
-
-use Tk qw(Ev);
-
-require Tk::Frame;
-
-use base qw(Tk::Frame);
-Construct Tk::Widget 'ColorSelect';
-
-sub Populate
-{
- my ($middle,$args) = @_;
- my($i, @a);
- require Tk::Config;
- my(@xlibpath) = map { s/^-L//; "$_/X11/rgb.txt" }
- split /\s+/, $Tk::Config::xlib;
- foreach $i (@xlibpath,
- '/usr/local/lib/X11/rgb.txt', '/usr/lib/X11/rgb.txt',
- '/usr/X11R6/lib/X11/rgb.txt',
- '/usr/local/X11R5/lib/X11/rgb.txt', '/X11/R5/lib/X11/rgb.txt',
- '/X11/R4/lib/rgb/rgb.txt', '/usr/openwin/lib/X11/rgb.txt') {
- local *FOO;
- next if ! open FOO, $i;
- my $middle_left = $middle->Frame;
- $middle_left->pack(
- -side => 'left',
- -padx => '0.25c',
- -pady => '0.25c',
- );
- my $names = $middle->Listbox(
- -width => 20,
- -height => 12,
- -relief => 'sunken',
- -borderwidth => 2,
- -exportselection => 0,
- );
-
- $names->bind('<Double-1>' => [$middle,'color',Ev(['getSelected'])]);
-
- my $scroll = $middle->Scrollbar(
- -orient => 'vertical',
- -command => ['yview', $names],
- -relief => 'sunken',
- -borderwidth => 2,
- );
- $names->configure(-yscrollcommand => ['set',$scroll]);
- $names->pack(-in => $middle_left, -side => 'left');
- $scroll->pack(-in => $middle_left, -side => 'right', -fill => 'y');
-
- while(<FOO>) {
- chomp;
- next if /^!/;
- my @a = split;
- my $color = join(' ', @a[3 .. $#a]);
- my $hex;
- eval { $hex = $middle->Hex($color); };
- if ($@) {
- #print STDERR "unknown color: '$color'\n";
- if ($@ =~ /unknown color name "/) {
- next;
- } else {
- chomp $@;
- die $@;
- }
- }
- if (!exists($Tk::ColorEditor::names{$hex}) ||
- length($Tk::ColorEditor::names{$hex}) > length($color)) {
- $Tk::ColorEditor::names{$hex} = $color;
- $names->insert('end', $color);
- }
- }
- close FOO;
- last;
- }
-
- # Create the three scales for editing the color, and the entry for typing
- # in a color value.
-
- my $middle_middle = $middle->Frame;
- $middle_middle->pack(-side => 'left', -expand => 1, -fill => 'y');
- my $mcm1 = $middle_middle->Optionmenu(-variable => \$middle->{'color_space'},
- -command => [ $middle, 'color_space'],
- -relief => 'raised',
- -options => [ ['HSB color space' => 'hsb'],
- ['RGB color space' => 'rgb'],
- ['CMY color space' => 'cmy']]);
- $mcm1->pack(-side => 'top', -fill => 'x');
-
- my(@middle_middle, @label, @scale);
- $middle_middle[0] = $middle_middle->Frame;
- $middle_middle[1] = $middle_middle->Frame;
- $middle_middle[2] = $middle_middle->Frame;
- $middle_middle[3] = $middle_middle->Frame;
- $middle_middle[0]->pack(-side => 'top', -expand => 1);
- $middle_middle[1]->pack(-side => 'top', -expand => 1);
- $middle_middle[2]->pack(-side => 'top', -expand => 1);
- $middle_middle[3]->pack(-side => 'top', -expand => 1, -fill => 'x');
- $middle->{'Labels'} = ['zero','one','two'];
- foreach $i (0..2) {
- $label[$i] = $middle->Label(-textvariable => \$middle->{'Labels'}[$i]);
- $scale[$i] = $middle->Scale(
- -from => 0,
- -to => 1000,
- '-length' => '6c',
- -orient => 'horizontal',
- -command => [\&scale_changed, $middle],
- );
- $scale[$i]->pack(
- -in => $middle_middle[$i],
- -side => 'top',
- -anchor => 'w',
- );
- $label[$i]->pack(
- -in => $middle_middle[$i],
- -side => 'top',
- -anchor => 'w',
- );
- }
- my $nameLabel = $middle->Label(-text => 'Name:');
- $middle->{'Entry'} = '';
- my $name = $middle->Entry(
- -relief => 'sunken',
- -borderwidth => 2,
- -textvariable => \$middle->{'Entry'},
- -width => 10,
-# For some reason giving this font causes problems at end of t/create.t
-# -font => '-*-Courier-Medium-R-Normal--*-120-*-*-*-*-*-*'
- );
-
- $nameLabel->pack(-in => $middle_middle[3], -side => 'left');
- $name->pack(
- -in => $middle_middle[3],
- -side => 'right',
- -expand => 1,
- -fill => 'x',
- );
- $name->bind('<Return>' => [ $middle, 'color', Ev(['get'])]);
-
- # Create the color display swatch on the right side of the window.
-
- my $middle_right = $middle->Frame;
- $middle_right->pack(
- -side => 'left',
- -pady => '.25c',
- -padx => '.25c',
- -anchor => 's',
- );
- my $swatch = $middle->Canvas(
- -width => '2.5c',
- -height => '5c',
- );
- my $swatch_item = $swatch->create('oval', '.5c', '.3c', '2.26c', '4.76c');
-
- my $value = $middle->Label(
- -textvariable => \$middle->{'color'},
- -width => 13,
- -font => '-*-Courier-Medium-R-Normal--*-120-*-*-*-*-*-*'
- );
-
- $swatch->pack(
- -in => $middle_right,
- -side => 'top',
- -expand => 1,
- -fill => 'both',
- );
- $value->pack(-in => $middle_right, -side => 'bottom', -pady => '.25c');
-
- $middle->ConfigSpecs(
- '-color_space' => ['METHOD', undef, undef, 'hsb'],
- '-initialcolor' => '-color',
- '-color' => ['METHOD', 'background', 'Background',
- $middle->cget('-background')]
- );
-
- $middle->{'swatch'} = $swatch;
- $middle->{'swatch_item'} = $swatch_item;
- $middle->{'scale'} = [@scale];
- $middle->{'red'} = 0;
- $middle->{'blue'} = 0;
- $middle->{'green'} = 0;
-
-}
-
-sub Hex
-{
- my $w = shift;
- my @rgb = (@_ == 3) ? @_ : $w->rgb(@_);
- sprintf('#%04x%04x%04x',@rgb)
-}
-
-sub color_space {
-
- my($objref, $space) = @_;
-
- if (@_ > 1)
- {
- my %Labels = ( 'rgb' => [qw(Red Green Blue)],
- 'cmy' => [qw(Cyan Magenta Yellow)],
- 'hsb' => [qw(Hue Saturation Brightness)] );
-
- # The procedure below is invoked when a new color space is selected. It
- # changes the labels on the scales and re-loads the scales with the
- # appropriate values for the current color in the new color space
-
- $space = 'hsb' unless (exists $Labels{$space});
- my $i;
- for $i (0..2)
- {
- $objref->{'Labels'}[$i] = $Labels{$space}->[$i];
- }
- $objref->{'color_space'} = $space;
- $objref->afterIdle(['set_scales',$objref]) unless ($objref->{'pending'}++);
- }
- return $objref->{'color_space'};
-} # color_space
-
-sub hsvToRgb {
-
- # The procedure below converts an HSB value to RGB. It takes hue,
- # saturation, and value components (floating-point, 0-1.0) as arguments,
- # and returns a list containing RGB components (integers, 0-65535) as
- # result. The code here is a copy of the code on page 616 of
- # "Fundamentals of Interactive Computer Graphics" by Foley and Van Dam.
-
- my($hue, $sat, $value) = @_;
- my($v, $i, $f, $p, $q, $t);
-
- $v = int(65535 * $value);
- return ($v, $v, $v) if $sat == 0;
- $hue *= 6;
- $hue = 0 if $hue >= 6;
- $i = int($hue);
- $f = $hue - $i;
- $p = int(65535 * $value * (1 - $sat));
- $q = int(65535 * $value * (1 - ($sat * $f)));
- $t = int(65535 * $value * (1 - ($sat * (1 - $f))));
- return ($v, $t, $p) if $i == 0;
- return ($q, $v, $p) if $i == 1;
- return ($p, $v, $t) if $i == 2;
- return ($p, $q, $v) if $i == 3;
- return ($t, $p, $v) if $i == 4;
- return ($v, $p, $q) if $i == 5;
-
-} # end hsvToRgb
-
-sub color
-{
- my ($objref,$name) = @_;
- if (@_ > 1 && defined($name) && length($name))
- {
- if ($name eq 'cancel') {
- $objref->{color} = undef;
- return;
- }
- my ($format, $shift);
- my ($red, $green, $blue);
-
- if ($name !~ /^#/)
- {
- ($red, $green, $blue) = $objref->{'swatch'}->rgb($name);
- }
- else
- {
- my $len = length $name;
- if($len == 4) { $format = '#(.)(.)(.)'; $shift = 12; }
- elsif($len == 7) { $format = '#(..)(..)(..)'; $shift = 8; }
- elsif($len == 10) { $format = '#(...)(...)(...)'; $shift = 4; }
- elsif($len == 13) { $format = '#(....)(....)(....)'; $shift = 0; }
- else {
- $objref->BackTrace(
- "ColorEditor error: syntax error in color name \"$name\"");
- return;
- }
- ($red,$green,$blue) = $name =~ /$format/;
- # Looks like a call for 'pack' or similar rather than eval
- eval "\$red = 0x$red; \$green = 0x$green; \$blue = 0x$blue;";
- $red = $red << $shift;
- $green = $green << $shift;
- $blue = $blue << $shift;
- }
- $objref->{'red'} = $red;
- $objref->{'blue'} = $blue;
- $objref->{'green'} = $green;
- my $hex = sprintf('#%04x%04x%04x', $red, $green, $blue);
- $objref->{'color'} = $hex;
- $objref->{'Entry'} = $name;
- $objref->afterIdle(['set_scales',$objref]) unless ($objref->{'pending'}++);
- $objref->{'swatch'}->itemconfigure($objref->{'swatch_item'},
- -fill => $objref->{'color'});
- }
- return $objref->{'color'};
-}
-
-sub rgbToHsv {
-
- # The procedure below converts an RGB value to HSB. It takes red, green,
- # and blue components (0-65535) as arguments, and returns a list
- # containing HSB components (floating-point, 0-1) as result. The code
- # here is a copy of the code on page 615 of "Fundamentals of Interactive
- # Computer Graphics" by Foley and Van Dam.
-
- my($red, $green, $blue) = @_;
- my($max, $min, $sat, $range, $hue, $rc, $gc, $bc);
-
- $max = ($red > $green) ? (($blue > $red) ? $blue : $red) :
- (($blue > $green) ? $blue : $green);
- $min = ($red < $green) ? (($blue < $red) ? $blue : $red) :
- (($blue < $green) ? $blue : $green);
- $range = $max - $min;
- if ($max == 0) {
- $sat = 0;
- } else {
- $sat = $range / $max;
- }
- if ($sat == 0) {
- $hue = 0;
- } else {
- $rc = ($max - $red) / $range;
- $gc = ($max - $green) / $range;
- $bc = ($max - $blue) / $range;
- $hue = ($max == $red)?(0.166667*($bc - $gc)):
- (($max == $green)?(0.166667*(2 + $rc - $bc)):
- (0.166667*(4 + $gc - $rc)));
- }
- $hue += 1 if $hue < 0;
- return ($hue, $sat, $max/65535);
-
-} # end rgbToHsv
-
-sub scale_changed {
-
- # The procedure below is invoked when one of the scales is adjusted. It
- # propagates color information from the current scale readings to
- # everywhere else that it is used.
-
- my($objref) = @_;
-
- return if $objref->{'updating'};
- my ($red, $green, $blue);
-
- if($objref->{'color_space'} eq 'rgb') {
- $red = int($objref->{'scale'}->[0]->get * 65.535 + 0.5);
- $green = int($objref->{'scale'}->[1]->get * 65.535 + 0.5);
- $blue = int($objref->{'scale'}->[2]->get * 65.535 + 0.5);
- } elsif($objref->{'color_space'} eq 'cmy') {
- $red = int(65535 - $objref->{'scale'}->[0]->get * 65.535 + 0.5);
- $green = int(65535 - $objref->{'scale'}->[1]->get * 65.535 + 0.5);
- $blue = int(65535 - $objref->{'scale'}->[2]->get * 65.535 + 0.5);
- } else {
- ($red, $green, $blue) = hsvToRgb($objref->{'scale'}->[0]->get/1000.0,
- $objref->{'scale'}->[1]->get/1000.0,
- $objref->{'scale'}->[2]->get/1000.0);
- }
- $objref->{'red'} = $red;
- $objref->{'blue'} = $blue;
- $objref->{'green'} = $green;
- $objref->color(sprintf('#%04x%04x%04x', $red, $green, $blue));
- $objref->idletasks;
-
-} # end scale_changed
-
-sub set_scales {
-
- my($objref) = @_;
- $objref->{'pending'} = 0;
- $objref->{'updating'} = 1;
-
- # The procedure below is invoked to update the scales from the current red,
- # green, and blue intensities. It's invoked after a change in the color
- # space and after a named color value has been loaded.
-
- my($red, $blue, $green) = ($objref->{'red'}, $objref->{'blue'},
- $objref->{'green'});
-
- if($objref->{'color_space'} eq 'rgb') {
- $objref->{'scale'}->[0]->set(int($red / 65.535 + 0.5));
- $objref->{'scale'}->[1]->set(int($green / 65.535 + 0.5));
- $objref->{'scale'}->[2]->set(int($blue / 65.535 + 0.5));
- } elsif($objref->{'color_space'} eq 'cmy') {
- $objref->{'scale'}->[0]->set(int((65535 - $red) / 65.535 + 0.5));
- $objref->{'scale'}->[1]->set(int((65535 - $green) / 65.535 + 0.5));
- $objref->{'scale'}->[2]->set(int((65535 - $blue) / 65.535 + 0.5));
- } else {
- my ($s1, $s2, $s3) = rgbToHsv($red, $green, $blue);
- $objref->{'scale'}->[0]->set(int($s1 * 1000.0 + 0.5));
- $objref->{'scale'}->[1]->set(int($s2 * 1000.0 + 0.5));
- $objref->{'scale'}->[2]->set(int($s3 * 1000.0 + 0.5));
- }
- $objref->{'updating'} = 0;
-
-} # end set_scales
-
-package Tk::ColorDialog;
-require Tk::Toplevel;
-use base qw(Tk::Toplevel);
-
-Construct Tk::Widget 'ColorDialog';
-
-sub Accept
-{
- my $cw = shift;
- $cw->withdraw;
- $cw->{'done'} = 1;
-}
-
-sub Cancel
-{
- my $cw = shift;
-# $cw->configure(-color => undef);
- $cw->configure(-color => 'cancel');
- $cw->Accept;
-}
-
-sub Populate
-{
- my ($cw,$args) = @_;
- $cw->SUPER::Populate($args);
- $cw->protocol('WM_DELETE_WINDOW' => [ 'Cancel' => $cw ]);
- $cw->transient($cw->Parent->toplevel);
- $cw->withdraw;
- my $sel = $cw->ColorSelect;
- my $accept = $cw->Button(-text => 'Accept', -command => ['Accept', $cw]);
- my $cancel = $cw->Button(-text => 'Cancel', -command => ['Cancel', $cw]);
- Tk::grid($sel);
- Tk::grid($accept,$cancel);
- $cw->ConfigSpecs(DEFAULT => [$sel]);
-}
-
-sub Show
-{
- my $cw = shift;
- $cw->configure(@_) if @_;
- $cw->Popup();
- $cw->waitVariable(\$cw->{'done'});
- $cw->withdraw;
- return $cw->cget('-color');
-}
-
-package Tk::ColorEditor;
-
-use vars qw($VERSION $SET_PALETTE);
-$VERSION = sprintf '4.%03d', q$Revision: #8 $ =~ /\D(\d+)\s*$/;
-
-use Tk qw(lsearch Ev);
-use Tk::Toplevel;
-use base qw(Tk::Toplevel);
-use Tk::widgets qw(Pixmap);
-Construct Tk::Widget 'ColorEditor';
-
-%Tk::ColorEditor::names = ();
-
-
-use Tk::Dialog;
-use Tk::Pretty;
-
-BEGIN { $SET_PALETTE = 'Set Palette' };
-
-use subs qw(color_space hsvToRgb rgbToHsv);
-
-# ColorEditor public methods.
-
-sub add_menu_item
-{
- my $objref = shift;
- my $value;
- foreach $value (@_)
- {
- if ($value eq 'SEP')
- {
- $objref->{'mcm2'}->separator;
- }
- else
- {
- $objref->{'mcm2'}->command( -label => $value,
- -command => [ 'configure', $objref, '-highlight' => $value ] );
- push @{$objref->{'highlight_list'}}, $value;
- }
- }
-}
-
-sub set_title
-{
- my ($w) = @_;
- my $t = $w->{Configure}{'-title'} || '' ;
- my $h = $w->{Configure}{'-highlight'} || '';
- $w->SUPER::title("$t $h Color Editor");
-}
-
-sub highlight
-{
- my ($w,$h) = @_;
- if (@_ > 1)
- {
- $w->{'update'}->configure( -text => "Apply $h Color" );
- my $state = ($h eq 'background') ? 'normal' : 'disabled';
- $w->{'palette'}->entryconfigure( $SET_PALETTE, -state => $state);
- $w->{'highlight'} = $h;
- $w->configure(-color => $w->Palette->{$h});
- $w->set_title;
- }
- return $w->{'highlight'};
-}
-
-sub title
-{
- my ($w,$val) = @_;
- $w->set_title if (@_ > 1);
- return $w->{Configure}{'-title'};
-}
-
-sub delete_menu_item
-{
- my $objref = shift;
- my $value;
- foreach $value (@_)
- {
- $objref->{'mcm2'}->delete($value);
- my $list_ord = $value =~ /\d+/ ? $value : lsearch($objref->{'highlight_list'}, $value);
- splice(@{$objref->{'highlight_list'}}, $list_ord, 1) if $list_ord != -1;
- }
-}
-
-sub delete_widgets {
-
- # Remove widgets from consideration by the color configurator.
- # $widgets_ref points to widgets previously added via `configure'.
-
- my($objref, $widgets_ref) = @_;
-
- my($i, $found, $r1, $r2, @wl) = (0, 0, 0, 0, @{$objref->cget(-widgets)});
- foreach $r1 (@{$widgets_ref}) {
- $i = -1;
- $found = 0;
- foreach $r2 (@wl) {
- $i++;
- next if $r1 != $r2;
- $found = 1;
- last;
- }
- splice(@wl, $i, 1) if $found;
- }
- $objref->configure(-widgets => [@wl]);
-
-} # end delete_widgets
-
-sub ApplyDefault
-{
- my($objref) = @_;
- my $cb = $objref->cget('-command');
- my $h;
- foreach $h (@{$objref->{'highlight_list'}})
- {
- next if $h =~ /TEAR_SEP|SEP/;
- $cb->Call($h);
- die unless (defined $cb);
- }
-}
-
-sub Populate
-{
-
- # ColorEditor constructor.
-
- my($cw, $args) = @_;
-
- $cw->SUPER::Populate($args);
- $cw->withdraw;
-
- my $color_space = 'hsb'; # rgb, cmy, hsb
- my(@highlight_list) = qw(
- TEAR_SEP
- foreground background SEP
- activeForeground activeBackground SEP
- highlightColor highlightBackground SEP
- selectForeground selectBackground SEP
- disabledForeground insertBackground selectColor troughColor
- );
-
- # Create the Usage Dialog;
-
- my $usage = $cw->Dialog( '-title' => 'ColorEditor Usage',
- -justify => 'left',
- -wraplength => '6i',
- -text => "The Colors menu allows you to:\n\nSelect a color attribute such as \"background\" that you wish to colorize. Click on \"Apply\" to update that single color attribute.\n\nSelect one of three color spaces. All color spaces display a color value as a hexadecimal number under the oval color swatch that can be directly supplied on widget commands.\n\nApply Tk's default color scheme to the application. Useful if you've made a mess of things and want to start over!\n\nChange the application's color palette. Make sure \"background\" is selected as the color attribute, find a pleasing background color to apply to all current and future application widgets, then select \"Set Palette\".",
- );
-
- # Create the menu bar at the top of the window for the File, Colors
- # and Help menubuttons.
-
- my $m0 = $cw->Frame(-relief => 'raised', -borderwidth => 2);
- $m0->pack(-side => 'top', -fill => 'x');
- my $mf = $m0->Menubutton(
- -text => 'File',
- -underline => 0,
- -bd => 1,
- -relief => 'raised',
- );
- $mf->pack(-side => 'left');
- my $close_command = [sub {shift->withdraw}, $cw];
- $mf->command(
- -label => 'Close',
- -underline => 0,
- -command => $close_command,
- -accelerator => 'Ctrl-w',
- );
- $cw->bind('<Control-Key-w>' => $close_command);
- $cw->protocol(WM_DELETE_WINDOW => $close_command);
-
- my $mc = $m0->Menubutton(
- -text => 'Colors',
- -underline => 0,
- -bd => 1,
- -relief => 'raised',
- );
- $mc->pack(-side => 'left');
- my $color_attributes = 'Color Attributes';
- $mc->cascade(-label => $color_attributes, -underline => 6);
- $mc->separator;
-
- $mc->command(
- -label => 'Apply Default Colors',
- -underline => 6,
- -command => ['ApplyDefault',$cw]
- );
- $mc->separator;
- $mc->command(
- -label => $SET_PALETTE,
- -underline => 0,
- -command => sub { $cw->setPalette($cw->cget('-color'))}
- );
-
- my $m1 = $mc->cget(-menu);
-
- my $mcm2 = $m1->Menu;
- $m1->entryconfigure($color_attributes, -menu => $mcm2);
- my $mh = $m0->Menubutton(
- -text => 'Help',
- -underline => 0,
- -bd => 1,
- -relief => 'raised',
- );
- $mh->pack(-side => 'right');
- $mh->command(
- -label => 'Usage',
- -underline => 0,
- -command => [sub {shift->Show}, $usage],
- );
-
- # Create the Apply button.
-
- my $bot = $cw->Frame(-relief => 'raised', -bd => 2);
- $bot->pack(-side => 'bottom', -fill =>'x');
- my $update = $bot->Button(
- -command => [
- sub {
- my ($objref) = @_;
- $objref->Callback(-command => ($objref->{'highlight'}, $objref->cget('-color')));
- $cw->{'done'} = 1;
- }, $cw,
- ],
- );
- $update->pack(-pady => 1, -padx => '0.25c');
-
- # Create the listbox that holds all of the color names in rgb.txt, if an
- # rgb.txt file can be found.
-
- my $middle = $cw->ColorSelect(-relief => 'raised', -borderwidth => 2);
- $middle->pack(-side => 'top', -fill => 'both');
- # Create the status window.
-
- my $status = $cw->Toplevel;
- $status->withdraw;
- $status->geometry('+0+0');
- my $status_l = $status->Label(-width => 50, -anchor => 'w');
- $status_l->pack(-side => 'top');
-
- $cw->{'highlight_list'} = [@highlight_list];
- $cw->{'mcm2'} = $mcm2;
-
- foreach (@highlight_list)
- {
- next if /^TEAR_SEP$/;
- $cw->add_menu_item($_);
- }
-
- $cw->{'updating'} = 0;
- $cw->{'pending'} = 0;
- $cw->{'Status'} = $status;
- $cw->{'Status_l'} = $status_l;
- $cw->{'update'} = $update;
- $cw->{'gwt_depth'} = 0;
- $cw->{'palette'} = $mc;
-
- my $pixmap = $cw->Pixmap('-file' => Tk->findINC('ColorEdit.xpm'));
- $cw->Icon(-image => $pixmap);
-
- $cw->ConfigSpecs(
- DEFAULT => [$middle],
- -widgets => ['PASSIVE', undef, undef,
- [$cw->parent->Descendants]],
- -display_status => ['PASSIVE', undef, undef, 0],
- '-title' => ['METHOD', undef, undef, ''],
- -command => ['CALLBACK', undef, undef, ['set_colors',$cw]],
- '-highlight' => ['METHOD', undef, undef, 'background'],
- -cursor => ['DESCENDANTS', 'cursor', 'Cursor', 'left_ptr'],
- );
-
-} # end Populate, ColorEditor constructor
-
-sub Show {
-
- my($objref, @args) = @_;
-
- Tk::ColorDialog::Show(@_);
-
-} # end show
-
-# ColorEditor default configurator procedure - can be redefined by the
-# application.
-
-sub set_colors {
-
- # Configure all the widgets in $widgets for attribute $type and color
- # $color. If $color is undef then reset all colors
- # to the Tk defaults.
-
- my($objref, $type, $color) = @_;
- my $display = $objref->cget('-display_status');
-
- $objref->{'Status'}->title("Configure $type");
- $objref->{'Status'}->deiconify if $display;
- my $widget;
- my $reset = !defined($color);
-
- foreach $widget (@{$objref->cget('-widgets')}) {
- if ($display) {
- $objref->{'Status_l'}->configure(
- -text => 'WIDGET: ' . $widget->PathName
- );
- $objref->update;
- }
- eval {local $SIG{'__DIE__'}; $color = ($widget->configure("-\L${type}"))[3]} if $reset;
- eval {local $SIG{'__DIE__'}; $widget->configure("-\L${type}" => $color)};
- }
-
- $objref->{'Status'}->withdraw if $display;
-
-} # end set_colors
-
-# ColorEditor private methods.
-
-1;
-
-__END__
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Compound.pm b/Master/tlpkg/tlperl/lib/Tk/Compound.pm
deleted file mode 100644
index 9f1ccd64487..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Compound.pm
+++ /dev/null
@@ -1,40 +0,0 @@
-package Tk::Compound;
-require Tk;
-import Tk qw($XS_VERSION);
-require Tk::Image;
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/Compound/Compound.pm#4 $
-
-use base qw(Tk::Image);
-
-Construct Tk::Image 'Compound';
-
-bootstrap Tk::Compound;
-
-sub Tk_image { 'compound' }
-
-Tk::Methods('add');
-
-sub new
-{
- my $package = shift;
- my $widget = shift;
- my $leaf = $package->Tk_image;
- $package->InitClass($widget);
- my $obj = $widget->image(create => $leaf,@_,-window => $widget);
- return bless($obj,$package);
-}
-
-BEGIN
- {
- foreach my $type (qw(line text image bitmap space))
- {
- my $meth = ucfirst($type);
- no strict qw 'refs';
- *{$meth} = sub { shift->add($type,@_) };
- }
- }
-
-1;
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Tk/Config.pm b/Master/tlpkg/tlperl/lib/Tk/Config.pm
deleted file mode 100644
index 8346d9ede9a..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Config.pm
+++ /dev/null
@@ -1,12 +0,0 @@
-package Tk::Config;
-require Exporter;
-use base qw(Exporter);
-$VERSION = '804.027';
-$inc = '-I$(TKDIR)/pTk/mTk/xlib';
-$define = '';
-$xlib = '';
-$xinc = '';
-$gccopt = ' -Wall -Wno-implicit-int -Wno-comment -Wno-unused -D__USE_FIXED_PROTOTYPES__';
-$win_arch = 'MSWin32';
-@EXPORT = qw($VERSION $inc $define $xlib $xinc $gccopt $win_arch);
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/Configure.pm b/Master/tlpkg/tlperl/lib/Tk/Configure.pm
deleted file mode 100644
index 26252ae4958..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Configure.pm
+++ /dev/null
@@ -1,69 +0,0 @@
-package Tk::Configure;
-use vars qw($VERSION);
-$VERSION = '4.008'; # $Id: //depot/Tkutf8/Tk/Configure.pm#8 $
-
-use Carp;
-use Tk::Pretty;
-
-
-# Class that handles cget/configure for options that
-# need translating from public form
-# e.g. $cw->configure(-label => 'fred')
-# into $cw->subwiget('label')->configure(-text => 'fred')
-# Should probably do something clever with regexp's here
-
-
-sub new
-{
- my ($class,@args) = @_;
- unshift(@args,'configure','cget') if (@args < 3);
- return bless \@args,$class;
-}
-
-sub cget
-{
- croak('Wrong number of args to cget') unless (@_ == 2);
- my ($alias,$key) = @_;
- my ($set,$get,$widget,@args) = @$alias;
- $widget->$get(@args);
-}
-
-sub configure
-{
- my $alias = shift;
- shift if (@_);
- my ($set,$get,$widget,@args) = @$alias;
- if (wantarray)
- {
- my @results;
- eval { @results = $widget->$set(@args,@_) };
- croak($@) if $@;
- return @results;
- }
- else
- {
- my $results;
- eval { $results = $widget->$set(@args,@_) };
- croak($@) if $@;
- return $results;
- }
-}
-
-*TIESCALAR = \&new;
-*TIEHASH = \&new;
-
-sub FETCH
-{
- my $alias = shift;
- my ($set,$get,$widget,@args) = @$alias;
- return $widget->$get(@args,@_);
-}
-
-sub STORE
-{
- my $alias = shift;
- my ($set,$get,$widget,@args) = @$alias;
- $widget->$set(@args,@_);
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/Credits b/Master/tlpkg/tlperl/lib/Tk/Credits
deleted file mode 100644
index 3ea9be43b7d..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Credits
+++ /dev/null
@@ -1,7 +0,0 @@
-The two Camel/X 'logo' GIFs were produced by :
-
-Grafix, Sussex, UK, +44-1293-886725
-
-For a very reasonable fee. We have rights to distribute them.
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Derived.pm b/Master/tlpkg/tlperl/lib/Tk/Derived.pm
deleted file mode 100644
index c31c205d2fb..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Derived.pm
+++ /dev/null
@@ -1,512 +0,0 @@
-# Copyright (c) 1995-2003 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-package Tk::Derived;
-require Tk::Widget;
-require Tk::Configure;
-use strict;
-use Carp;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #10 $ =~ /\D(\d+)\s*$/;
-
-$Tk::Derived::Debug = 0;
-
-my $ENHANCED_CONFIGSPECS = 0; # disable for now
-
-use Tk qw(NORMAL_BG BLACK);
-
-sub Subwidget
-{
- my $cw = shift;
- my @result = ();
- if (exists $cw->{SubWidget})
- {
- if (@_)
- {
- foreach my $name (@_)
- {
- push(@result,$cw->{SubWidget}{$name}) if (exists $cw->{SubWidget}{$name});
- }
- }
- else
- {
- @result = values %{$cw->{SubWidget}};
- }
- }
- return (wantarray) ? @result : $result[0];
-}
-
-sub _makelist
-{
- my $widget = shift;
- my (@specs) = (ref $widget && ref $widget eq 'ARRAY') ? (@$widget) : ($widget);
- return @specs;
-}
-
-sub Subconfigure
-{
- # This finds the widget or widgets to to which to apply a particular
- # configure option
- my ($cw,$opt) = @_;
- my $config = $cw->ConfigSpecs;
- my $widget;
- my @subwidget = ();
- my @arg = ();
- if (defined $opt)
- {
- $widget = $config->{$opt};
- unless (defined $widget)
- {
- $widget = ($opt =~ /^-(.*)$/) ? $config->{$1} : $config->{-$opt};
- }
- # Handle alias entries
- if (defined($widget) && !ref($widget))
- {
- $opt = $widget;
- $widget = $config->{$widget};
- }
- push(@arg,$opt) unless ($opt eq 'DEFAULT');
- }
- $widget = $config->{DEFAULT} unless (defined $widget);
- if (defined $widget)
- {
- $cw->BackTrace("Invalid ConfigSpecs $widget") unless (ref($widget) && (ref $widget eq 'ARRAY'));
- $widget = $widget->[0];
- }
- else
- {
- $widget = 'SELF';
- }
- foreach $widget (_makelist($widget))
- {
- $widget = 'SELF' if (ref($widget) && $widget == $cw);
- if (ref $widget)
- {
- my $ref = ref $widget;
- if ($ref eq 'ARRAY')
- {
- $widget = Tk::Configure->new(@$widget);
- push(@subwidget,$widget)
- }
- elsif ($ref eq 'HASH')
- {
- foreach my $key (%$widget)
- {
- foreach my $sw (_makelist($widget->{$key}))
- {
- push(@subwidget,Tk::Configure->new($sw,$key));
- }
- }
- }
- else
- {
- push(@subwidget,$widget)
- }
- }
- elsif ($widget eq 'ADVERTISED')
- {
- push(@subwidget,$cw->Subwidget)
- }
- elsif ($widget eq 'DESCENDANTS')
- {
- push(@subwidget,$cw->Descendants)
- }
- elsif ($widget eq 'CHILDREN')
- {
- push(@subwidget,$cw->children)
- }
- elsif ($widget eq 'METHOD')
- {
- my ($method) = ($opt =~ /^-?(.*)$/);
- push(@subwidget,Tk::Configure->new($method,$method,$cw))
- }
- elsif ($widget eq 'SETMETHOD')
- {
- my ($method) = ($opt =~ /^-?(.*)$/);
- push(@subwidget,Tk::Configure->new($method,'_cget',$cw,@arg))
- }
- elsif ($widget eq 'SELF')
- {
- push(@subwidget,Tk::Configure->new('Tk::configure', 'Tk::cget', $cw,@arg))
- }
- elsif ($widget eq 'PASSIVE')
- {
- push(@subwidget,Tk::Configure->new('_configure','_cget',$cw,@arg))
- }
- elsif ($widget eq 'CALLBACK')
- {
- push(@subwidget,Tk::Configure->new('_callback','_cget',$cw,@arg))
- }
- else
- {
- push(@subwidget,$cw->Subwidget($widget));
- }
- }
- $cw->BackTrace("No delegate subwidget '$widget' for $opt") unless (@subwidget);
- return (wantarray) ? @subwidget : $subwidget[0];
-}
-
-sub _cget
-{
- my ($cw,$opt) = @_;
- $cw->BackTrace('Wrong number of args to cget') unless (@_ == 2);
- return $cw->{Configure}{$opt}
-}
-
-sub _configure
-{
- my ($cw,$opt,$val) = @_;
- $cw->BackTrace('Wrong number of args to configure') unless (@_ == 3);
- $cw->{Configure}{$opt} = $val;
-}
-
-sub _callback
-{
- my ($cw,$opt,$val) = @_;
- $cw->BackTrace('Wrong number of args to configure') unless (@_ == 3);
- $val = Tk::Callback->new($val) if defined($val) && ref($val);
- $cw->{Configure}{$opt} = $val;
-}
-
-sub cget
-{my ($cw,$opt) = @_;
- my @result;
- local $SIG{'__DIE__'};
- foreach my $sw ($cw->Subconfigure($opt))
- {
- if (wantarray)
- {
- eval { @result = $sw->cget($opt) };
- }
- else
- {
- eval { $result[0] = $sw->cget($opt) };
- }
- last unless $@;
- }
- return wantarray ? @result : $result[0];
-}
-
-sub Configured
-{
- # Called whenever a derived widget is re-configured
- my ($cw,$args,$changed) = @_;
- if (@_ > 1)
- {
- $cw->afterIdle(['ConfigChanged',$cw,$changed]) if (%$changed);
- }
- return exists $cw->{'Configure'};
-}
-
-sub configure
-{
- # The default composite widget configuration method uses hash stored
- # in the widget's hash to map configuration options
- # onto subwidgets.
- #
- my @results = ();
- my $cw = shift;
- if (@_ <= 1)
- {
- # Enquiry cases
- my $spec = $cw->ConfigSpecs;
- if (@_)
- {
- # Return info on the nominated option
- my $opt = $_[0];
- my $info = $spec->{$opt};
- unless (defined $info)
- {
- $info = ($opt =~ /^-(.*)$/) ? $spec->{$1} : $spec->{-$opt};
- }
- if (defined $info)
- {
- if (ref $info)
- {
- # If the default slot is undef then ask subwidgets in turn
- # for their default value until one accepts it.
- if ($ENHANCED_CONFIGSPECS && !defined($info->[3]))
- {local $SIG{'__DIE__'};
- my @def;
- foreach my $sw ($cw->Subconfigure($opt))
- {
- eval { @def = $sw->configure($opt) };
- last unless $@;
- }
- $info->[3] = $def[3];
- $info->[1] = $def[1] unless defined $info->[1];
- $info->[2] = $def[2] unless defined $info->[2];
- }
- push(@results,$opt,$info->[1],$info->[2],$info->[3],$cw->cget($opt));
- }
- else
- {
- # Real (core) Tk widgets return db name rather than option name
- # for aliases so recurse to get that ...
- my @real = $cw->configure($info);
- push(@results,$opt,$real[1]);
- }
- }
- else
- {
- push(@results,$cw->Subconfigure($opt)->configure($opt));
- }
- }
- else
- {
- my $opt;
- my %results;
- if (exists $spec->{'DEFAULT'})
- {
- foreach $opt ($cw->Subconfigure('DEFAULT')->configure)
- {
- $results{$opt->[0]} = $opt;
- }
- }
- foreach $opt (keys %$spec)
- {
- $results{$opt} = [$cw->configure($opt)] if ($opt ne 'DEFAULT');
- }
- foreach $opt (sort keys %results)
- {
- push(@results,$results{$opt});
- }
- }
- }
- else
- {
- my (%args) = @_;
- my %changed = ();
- my ($opt,$val);
- my $config = $cw->TkHash('Configure');
-
- while (($opt,$val) = each %args)
- {
- my $var = \$config->{$opt};
- my $old = $$var;
- $$var = $val;
- my $accepted = 0;
- my $error = "No widget handles $opt";
- foreach my $subwidget ($cw->Subconfigure($opt))
- {
- next unless (defined $subwidget);
- eval {local $SIG{'__DIE__'}; $subwidget->configure($opt => $val) };
- if ($@)
- {
- my $val2 = (defined $val) ? $val : 'undef';
- $error = "Can't set $opt to `$val2' for $cw: " . $@;
- undef $@;
- }
- else
- {
- $accepted = 1;
- }
- }
- $cw->BackTrace($error) unless ($accepted);
- $val = $$var;
- $changed{$opt} = $val if (!defined $old || !defined $val || "$old" ne "$val");
- }
- $cw->Configured(\%args,\%changed);
- }
- return (wantarray) ? @results : \@results;
-}
-
-sub ConfigDefault
-{
- my ($cw,$args) = @_;
-
- $cw->BackTrace('Bad args') unless (defined $args && ref $args eq 'HASH');
-
- my $specs = $cw->ConfigSpecs;
- # Should we enforce a Delagates(DEFAULT => ) as well ?
- $specs->{'DEFAULT'} = ['SELF'] unless (exists $specs->{'DEFAULT'});
-
- #
- # This is a pain with Text or Entry as core widget, they don't
- # inherit SELF's cursor. So comment it out for Tk402.001
- #
- # $specs->{'-cursor'} = ['SELF',undef,undef,undef] unless (exists $specs->{'-cursor'});
-
- # Now some hacks that cause colours to propogate down a composite widget
- # tree - really needs more thought, other options adding such as active
- # colours too and maybe fonts
-
- my $child = ($cw->children)[0]; # 1st child window (if any)
-
- unless (exists($specs->{'-background'}))
- {
- Tk::catch { $cw->Tk::cget('-background') };
- my (@bg) = $@ ? ('PASSIVE') : ('SELF');
- push(@bg,'CHILDREN') if $child;
- $specs->{'-background'} = [\@bg,'background','Background',NORMAL_BG];
- }
- unless (exists($specs->{'-foreground'}))
- {
- Tk::catch { $cw->Tk::cget('-foreground') };
- my (@fg) = $@ ? ('PASSIVE') : ('SELF');
- push(@fg,'CHILDREN') if $child;
- $specs->{'-foreground'} = [\@fg,'foreground','Foreground',BLACK];
- }
- $cw->ConfigAlias(-fg => '-foreground', -bg => '-background');
-
- # Pre-scan args for aliases - this avoids defaulting
- # options specified via alias
- foreach my $opt (keys %$args)
- {
- my $info = $specs->{$opt};
- if (defined($info) && !ref($info))
- {
- $args->{$info} = delete $args->{$opt};
- }
- }
-
- # Now walk %$specs supplying defaults for all the options
- # which have a defined default value, potentially looking up .Xdefaults database
- # options for the name/class of the 'frame'
-
- foreach my $opt (keys %$specs)
- {
- if ($opt ne 'DEFAULT')
- {
- unless (exists $args->{$opt})
- {
- my $info = $specs->{$opt};
- if (ref $info)
- {
- # Not an alias
- if ($ENHANCED_CONFIGSPECS && !defined $info->[3])
- {
- # configure inquire to fill in default slot from subwidget
- $cw->configure($opt);
- }
- if (defined $info->[3])
- {
- if (defined $info->[1] && defined $info->[2])
- {
- # Should we do this on the Subconfigure widget instead?
- # to match *Entry.Background
- my $db = $cw->optionGet($info->[1],$info->[2]);
- $info->[3] = $db if (defined $db);
- }
- $args->{$opt} = $info->[3];
- }
- }
- }
- }
- }
-}
-
-sub ConfigSpecs
-{
- my $cw = shift;
- my $specs = $cw->TkHash('ConfigSpecs');
- while (@_)
- {
- my $key = shift;
- my $val = shift;
- $specs->{$key} = $val;
- }
- return $specs;
-}
-
-sub _alias
-{
- my ($specs,$opt,$main) = @_;
- if (exists($specs->{$opt}))
- {
- unless (exists $specs->{$main})
- {
- my $targ = $specs->{$opt};
- if (ref($targ))
- {
- # opt is a real option
- $specs->{$main} = $opt
- }
- else
- {
- # opt is itself an alias
- # make main point to same place
- $specs->{$main} = $targ unless $targ eq $main;
- }
- }
- return 1;
- }
- return 0;
-}
-
-sub ConfigAlias
-{
- my $cw = shift;
- my $specs = $cw->ConfigSpecs;
- while (@_ >= 2)
- {
- my $opt = shift;
- my $main = shift;
- unless (_alias($specs,$opt,$main) || _alias($specs,$main,$opt))
- {
- $cw->BackTrace("Neither $opt nor $main exist");
- }
- }
- $cw->BackTrace('Odd number of args to ConfigAlias') if (@_);
-}
-
-sub Delegate
-{
- my ($cw,$method,@args) = @_;
- my $widget = $cw->DelegateFor($method);
- if ($widget == $cw)
- {
- $method = "Tk::Widget::$method"
- }
- my @result;
- if (wantarray)
- {
- @result = $widget->$method(@args);
- }
- else
- {
- $result[0] = $widget->$method(@args);
- }
- return (wantarray) ? @result : $result[0];
-}
-
-sub InitObject
-{
- my ($cw,$args) = @_;
- $cw->Populate($args);
- $cw->ConfigDefault($args);
-}
-
-sub ConfigChanged
-{
- my ($cw,$args) = @_;
-}
-
-sub Advertise
-{
- my ($cw,$name,$widget) = @_;
- confess 'No name' unless (defined $name);
- croak 'No widget' unless (defined $widget);
- my $hash = $cw->TkHash('SubWidget');
- $hash->{$name} = $widget; # advertise it
- return $widget;
-}
-
-sub Component
-{
- my ($cw,$kind,$name,%args) = @_;
- $args{'Name'} = "\l$name" if (defined $name && !exists $args{'Name'});
- # my $pack = delete $args{'-pack'};
- my $delegate = delete $args{'-delegate'};
- my $w = $cw->$kind(%args); # Create it
- # $w->pack(@$pack) if (defined $pack);
- $cw->Advertise($name,$w) if (defined $name);
- $cw->Delegates(map(($_ => $w),@$delegate)) if (defined $delegate);
- return $w; # and return it
-}
-
-1;
-__END__
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Dialog.pm b/Master/tlpkg/tlperl/lib/Tk/Dialog.pm
deleted file mode 100644
index 8173f4a5acc..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Dialog.pm
+++ /dev/null
@@ -1,70 +0,0 @@
-package Tk::Dialog;
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/Dialog.pm#4 $
-
-# Dialog - a translation of `tk_dialog' from Tcl/Tk to TkPerl (based on
-# John Stoffel's idea).
-#
-# Stephen O. Lidie, Lehigh University Computing Center. 94/12/27
-# lusol@Lehigh.EDU
-
-# Documentation after __END__
-
-use Carp;
-use strict;
-use base qw(Tk::DialogBox);
-
-Construct Tk::Widget 'Dialog';
-
-sub Populate
-{
-
- # Dialog object constructor. Uses `new' method from base class
- # to create object container then creates the dialog toplevel.
-
- my($cw, $args) = @_;
-
- $cw->SUPER::Populate($args);
-
- my ($w_bitmap,$w_but,$pad1,$pad2);
-
- # Create the Toplevel window and divide it into top and bottom parts.
-
- my (@pl) = (-side => 'top', -fill => 'both');
-
- ($pad1, $pad2) =
- ([-padx => '3m', -pady => '3m'], [-padx => '3m', -pady => '2m']);
-
-
- $cw->iconname('Dialog');
-
- my $w_top = $cw->Subwidget('top');
-
- # Fill the top part with the bitmap and message.
-
- @pl = (-side => 'left');
-
- $w_bitmap = $w_top->Label(Name => 'bitmap');
- $w_bitmap->pack(@pl, @$pad1);
-
- my $w_msg = $w_top->Label( -wraplength => '3i', -justify => 'left' );
-
- $w_msg->pack(-side => 'right', -expand => 1, -fill => 'both', @$pad1);
-
- $cw->Advertise(message => $w_msg);
- $cw->Advertise(bitmap => $w_bitmap );
-
- $cw->ConfigSpecs( -image => ['bitmap',undef,undef,undef],
- -bitmap => ['bitmap',undef,undef,undef],
- -font => ['message','font','Font', '-*-Times-Medium-R-Normal--*-180-*-*-*-*-*-*'],
- DEFAULT => ['message',undef,undef,undef]
- );
-}
-
-1;
-
-__END__
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/DialogBox.pm b/Master/tlpkg/tlperl/lib/Tk/DialogBox.pm
deleted file mode 100644
index 13335404e15..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/DialogBox.pm
+++ /dev/null
@@ -1,135 +0,0 @@
-#
-# DialogBox is similar to Dialog except that it allows any widget
-# in the top frame. Widgets can be added with the add method. Currently
-# there exists no way of deleting a widget once it has been added.
-
-package Tk::DialogBox;
-
-use strict;
-use Carp;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #13 $ =~ /\D(\d+)\s*$/;
-
-use base qw(Tk::Toplevel);
-
-Tk::Widget->Construct('DialogBox');
-
-sub Populate {
- my ($cw, $args) = @_;
-
- $cw->SUPER::Populate($args);
- my $buttons = delete $args->{'-buttons'};
- $buttons = ['OK'] unless defined $buttons;
- my $default_button = delete $args->{'-default_button'};
- $default_button = $buttons->[0] unless defined $default_button;
-
- $cw->{'selected_button'} = '';
- $cw->transient($cw->Parent->toplevel);
- $cw->withdraw;
- if (@$buttons == 1) {
- $cw->protocol('WM_DELETE_WINDOW' => sub { $cw->{'default_button'}->invoke });
- } else {
- $cw->protocol('WM_DELETE_WINDOW' => sub {});
- }
-
- # create the two frames
- my $top = $cw->Component('Frame', 'top');
- $top->configure(-relief => 'raised', -bd => 1) unless $Tk::platform eq 'MSWin32';
- my $bot = $cw->Component('Frame', 'bottom');
- $bot->configure(-relief => 'raised', -bd => 1) unless $Tk::platform eq 'MSWin32';
- $bot->pack(qw/-side bottom -fill both -ipady 3 -ipadx 3/);
- $top->pack(qw/-side top -fill both -ipady 3 -ipadx 3 -expand 1/);
-
- # create a row of buttons in the bottom.
- my $bl; # foreach my $var: perl > 5.003_08
- foreach $bl (@$buttons)
- {
- my $b = $bot->Button(-text => $bl, -command => sub { $cw->{'selected_button'} = "$bl" } );
- $b->bind('<Return>' => [ $b, 'Invoke']);
- $cw->Advertise("B_$bl" => $b);
- if ($Tk::platform eq 'MSWin32')
- {
- $b->configure(-width => 10, -pady => 0);
- }
- if ($bl eq $default_button) {
- if ($Tk::platform eq 'MSWin32') {
- $b->pack(-side => 'left', -expand => 1, -padx => 1, -pady => 1);
- } else {
- my $db = $bot->Frame(-relief => 'sunken', -bd => 1);
- $b->raise($db);
- $b->pack(-in => $db, -padx => '2', -pady => '2');
- $db->pack(-side => 'left', -expand => 1, -padx => 1, -pady => 1);
- }
- $cw->{'default_button'} = $b;
- $cw->bind('<Return>' => [ $b, 'Invoke']);
- } else {
- $b->pack(-side => 'left', -expand => 1, -padx => 1, -pady => 1);
- }
- }
- $cw->ConfigSpecs(-command => ['CALLBACK', undef, undef, undef ],
- -foreground => ['DESCENDANTS', 'foreground','Foreground', 'black'],
- -background => ['DESCENDANTS', 'background','Background', undef],
- -focus => ['PASSIVE', undef, undef, undef],
- -showcommand => ['CALLBACK', undef, undef, undef],
- );
- $cw->Delegates('Construct',$top);
-}
-
-sub add {
- my ($cw, $wnam, @args) = @_;
- my $w = $cw->Subwidget('top')->$wnam(@args);
- $cw->Advertise("\L$wnam" => $w);
- return $w;
-}
-
-sub Wait
-{
- my $cw = shift;
- $cw->Callback(-showcommand => $cw);
- $cw->waitVariable(\$cw->{'selected_button'});
- $cw->grabRelease;
- $cw->withdraw;
- $cw->Callback(-command => $cw->{'selected_button'});
-}
-
-sub Show {
-
- croak 'DialogBox: "Show" method requires at least 1 argument'
- if scalar @_ < 1;
- my $cw = shift;
- my ($grab) = @_;
- my $old_focus = $cw->focusSave;
- my $old_grab = $cw->grabSave;
-
- shift if defined $grab && length $grab && ($grab =~ /global/);
- $cw->Popup(@_);
-
- Tk::catch {
- if (defined $grab && length $grab && ($grab =~ /global/)) {
- $cw->grabGlobal;
- } else {
- $cw->grab;
- }
- };
- if (my $focusw = $cw->cget(-focus)) {
- $focusw->focus;
- } elsif (defined $cw->{'default_button'}) {
- $cw->{'default_button'}->focus;
- } else {
- $cw->focus;
- }
- $cw->Wait;
- &$old_focus;
- &$old_grab;
- return $cw->{'selected_button'};
-}
-
-sub Exit
-{
- my $cw = shift;
- #kill the dialogbox, by faking a 'DONE'
- $cw->{'selected_button'} = $cw->{'default_button'}->cget(-text);
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/DirTree.pm b/Master/tlpkg/tlperl/lib/Tk/DirTree.pm
deleted file mode 100644
index b2d996a94d0..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/DirTree.pm
+++ /dev/null
@@ -1,252 +0,0 @@
-package Tk::DirTree;
-# DirTree -- TixDirTree widget
-#
-# Derived from DirTree.tcl in Tix 4.1
-#
-# Chris Dean <ctdean@cogit.com>
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #14 $ =~ /\D(\d+)\s*$/;
-
-use Tk;
-use Tk::Derived;
-use Tk::Tree;
-use Cwd;
-use DirHandle;
-
-use base qw(Tk::Derived Tk::Tree);
-use strict;
-
-Construct Tk::Widget 'DirTree';
-
-
-sub Populate {
- my( $cw, $args ) = @_;
-
- $cw->SUPER::Populate( $args );
-
- $cw->ConfigSpecs(
- -dircmd => [qw/CALLBACK dirCmd DirCmd DirCmd/],
- -showhidden => [qw/PASSIVE showHidden ShowHidden 0/],
- -image => [qw/PASSIVE image Image folder/],
- -directory => [qw/SETMETHOD directory Directory ./],
- -value => '-directory' );
-
- $cw->configure( -separator => '/', -itemtype => 'imagetext' );
-}
-
-sub DirCmd {
- my( $w, $dir, $showhidden ) = @_;
- $dir .= "/" if $dir =~ /^[a-z]:$/i and $^O eq 'MSWin32';
- my $h = DirHandle->new( $dir ) or return();
- my @names = grep( $_ ne '.' && $_ ne '..', $h->read );
- @names = grep( ! /^[.]/, @names ) unless $showhidden;
- return( @names );
-}
-
-*dircmd = \&DirCmd;
-
-sub fullpath
-{
- my ($path) = @_;
- my $cwd = getcwd();
- if (CORE::chdir($path))
- {
- $path = getcwd();
- CORE::chdir($cwd) || die "Cannot cd back to $cwd:$!";
- }
- else
- {
- warn "Cannot cd to $path:$!"
- }
- return $path;
-}
-
-sub directory
-{
- my ($w,$key,$val) = @_;
- # We need a value for -image, so its being undefined
- # is probably caused by order of handling config defaults
- # so defer it.
- $w->afterIdle([$w, 'set_dir' => $val]);
-}
-
-sub set_dir {
- my( $w, $val ) = @_;
- my $fulldir = fullpath( $val );
-
- my $parent = '/';
- if ($^O eq 'MSWin32')
- {
- if ($fulldir =~ s/^([a-z]:)//i)
- {
- $parent = $1;
- }
- }
- $w->add_to_tree( $parent, $parent) unless $w->infoExists($parent);
-
- my @dirs = ($parent);
- foreach my $name (split( /[\/\\]/, $fulldir )) {
- next unless length $name;
- push @dirs, $name;
- my $dir = join( '/', @dirs );
- $dir =~ s|^//|/|;
- $w->add_to_tree( $dir, $name, $parent )
- unless $w->infoExists( $dir );
- $parent = $dir;
- }
-
- $w->OpenCmd( $parent );
- $w->setmode( $parent, 'close' );
-}
-*chdir = \&set_dir;
-
-
-sub OpenCmd {
- my( $w, $dir ) = @_;
-
- my $parent = $dir;
- $dir = '' if $dir eq '/';
- foreach my $name ($w->dirnames( $parent )) {
- next if ($name eq '.' || $name eq '..');
- my $subdir = "$dir/$name";
- next unless -d $subdir;
- if( $w->infoExists( $subdir ) ) {
- $w->show( -entry => $subdir );
- } else {
- $w->add_to_tree( $subdir, $name, $parent );
- }
- }
-}
-
-*opencmd = \&OpenCmd;
-
-sub add_to_tree {
- my( $w, $dir, $name, $parent ) = @_;
-
- my $image = $w->cget('-image');
- if ( !UNIVERSAL::isa($image, 'Tk::Image') ) {
- $image = $w->Getimage( $image );
- }
- my $mode = 'none';
- $mode = 'open' if $w->has_subdir( $dir );
-
- my @args = (-image => $image, -text => $name);
- if( $parent ) { # Add in alphabetical order.
- foreach my $sib ($w->infoChildren( $parent )) {
- if( $sib gt $dir ) {
- push @args, (-before => $sib);
- last;
- }
- }
- }
-
- $w->add( $dir, @args );
- $w->setmode( $dir, $mode );
-}
-
-sub has_subdir {
- my( $w, $dir ) = @_;
- foreach my $name ($w->dirnames( $dir )) {
- next if ($name eq '.' || $name eq '..');
- next if ($name =~ /^\.+$/);
- return( 1 ) if -d "$dir/$name";
- }
- return( 0 );
-}
-
-sub dirnames {
- my( $w, $dir ) = @_;
- my @names = $w->Callback( '-dircmd', $dir, $w->cget( '-showhidden' ) );
- return( @names );
-}
-
-{
- package Tk::DirTreeDialog;
- use base qw(Tk::Toplevel);
- Construct Tk::Widget 'DirTreeDialog';
-
- sub Populate {
- my($w, $args) = @_;
- $w->{curr_dir} = $args->{-initialdir};
- if (!defined $w->{curr_dir}) {
- require Cwd;
- $w->{curr_dir} = Cwd::cwd();
- }
- if (defined $args->{-mustexist}) {
- die "-mustexist is not yet implemented";
- }
- my $title = $args->{-title} || "Choose directory:";
- delete $args->{-popover};
-
- $w->title($title);
- $w->{ok} = 0; # flag: "1" means OK, "-1" means cancelled
-
- # Create Frame widget before the DirTree widget, so it's always visible
- # if the window gets resized.
- my $f = $w->Frame->pack(-fill => "x", -side => "bottom");
-
- my $d;
- $d = $f->Scrolled('DirTree',
- -scrollbars => 'osoe',
- -width => 35,
- -height => 20,
- -selectmode => 'browse',
- -exportselection => 1,
- -browsecmd => sub {
- $w->{curr_dir} = shift;
- if ($^O ne 'MSWin32') {
- $w->{curr_dir} =~ s|^//|/|; # bugfix
- }
- },
-
- # With this version of -command a double-click will
- # select the directory
- -command => sub { $w->{ok} = 1 },
-
- # With this version of -command a double-click will
- # open a directory. Selection is only possible with
- # the Ok button.
- #-command => sub { $d->opencmd($_[0]) },
- )->pack(-fill => "both", -expand => 1);
- # Set the initial directory
- exists &Tk::DirTree::chdir ? $d->chdir($w->{curr_dir}) : $d->set_dir($w->{curr_dir});
-
- $f->Button(-text => 'Ok',
- -command => sub { $w->{ok} = 1 })->pack(-side => 'left');
- $f->Button(-text => 'Cancel',
- -command => sub { $w->{ok} = -1 })->pack(-side => 'left');
- $w->OnDestroy(sub { $w->{ok} = -1 });
- }
-
- sub Show {
- my $w = shift;
- my $old_focus = $w->focusSave;
- my $old_grab = $w->grabSave;
- Tk::catch {
- $w->grab;
- };
- $w->waitVariable(\$w->{ok});
- my $ret = $w->{ok} == 1 ? $w->{curr_dir} : undef;
- $w->grabRelease if Tk::Exists($w);
- &$old_focus;
- &$old_grab;
- $w->destroy if Tk::Exists($w);
- $ret;
- }
-}
-
-1;
-
-__END__
-
-# Copyright (c) 1996, Expert Interface Technologies
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# The file man.macros and some of the macros used by this file are
-# copyrighted: (c) 1990 The Regents of the University of California.
-# (c) 1994-1995 Sun Microsystems, Inc.
-# The license terms of the Tcl/Tk distrobution are in the file
-# license.tcl.
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Dirlist.pm b/Master/tlpkg/tlperl/lib/Tk/Dirlist.pm
deleted file mode 100644
index f16ce021f41..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Dirlist.pm
+++ /dev/null
@@ -1,113 +0,0 @@
-package Tk::Dirlist;
-require Tk::Derived;
-require Tk::HList;
-require DirHandle;
-use Cwd;
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/Dirlist.pm#5 $
-
-use base qw(Tk::Derived Tk::HList);
-use strict;
-Construct Tk::Widget 'Dirlist';
-
-sub getimage
-{
- my ($w,$key) = @_;
- unless (exists $w->{$key})
- {
- $w->{$key} = $w->Pixmap(-id => $key);
- unless ($w->{$key})
- {
- $w->{$key} = $w->Bitmap($key);
- }
- }
- return $w->{$key};
-}
-
-
-sub Populate
-{
- my ($cw,$args) = @_;
- $cw->configure(-separator => '/', -itemtype => 'imagetext');
- $cw->ConfigSpecs(-directory => ['SETMETHOD','directory','Directory','.']);
-}
-
-sub fullpath
-{
- my ($path) = @_;
- my $cwd = getcwd;
- if (chdir($path))
- {
- $path = getcwd;
- chdir($cwd);
- }
- else
- {
- warn "Cannot cd to $path:$!"
- }
-# print "$path\n";
- return $path;
-}
-
-sub AddDir
-{
- my ($w,$dir) = @_;
- my $path = '';
- my $prefix = '';
- my $first = 0;
- my $name;
- foreach $name (split m#/#,$dir)
- {
- $first++;
- if ($name eq '')
- {
- next unless ($first == 1);
- $path = '/';
- $name = '/';
- }
- else
- {
- $path .= $prefix;
- $path .= $name;
- $prefix = '/';
- }
- unless ($w->info('exists' => $path))
- {
-# print "Add $path\n";
- $w->add($path,-image => $w->getimage('folder'), -text => $name);
- }
- }
-}
-
-sub choose_image
-{
- my ($w,$path) = @_;
- return 'folder' if (-d $path);
- return 'srcfile' if ($path =~ /\.[ch]$/);
- return 'textfile' if (-T $path);
- return 'file';
-}
-
-
-sub directory
-{
- my ($w,$key,$val) = @_;
- my $h = DirHandle->new($val);
- $w->AddDir($val = fullpath($val));
- my $f;
- $w->entryconfigure($val,-image => $w->getimage('act_fold'));
- foreach $f (sort $h->read)
- {
- next if ($f =~ /^\.+$/);
- my $path = "$val/$f";
- unless ($w->info('exists' => $path))
- {
- my $image = $w->getimage($w->choose_image($path));
- $w->add($path,-image => $image, -text => $f);
- }
- }
- $h->close;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/DragDrop.pm b/Master/tlpkg/tlperl/lib/Tk/DragDrop.pm
deleted file mode 100644
index bdc54f74367..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/DragDrop.pm
+++ /dev/null
@@ -1,332 +0,0 @@
-package Tk::DragDrop;
-require Tk::DragDrop::Common;
-require Tk::Toplevel;
-require Tk::Label;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #14 $ =~ /\D(\d+)\s*$/;
-
-use base qw(Tk::DragDrop::Common Tk::Toplevel);
-
-# This is a little tricky, ISA says 'Toplevel' but we
-# define a Tk_cmd to actually build a 'Label', then
-# use wmRelease in Populate to make it a toplevel.
-
-my $useWmRelease = Tk::Wm->can('release'); # ($^O ne 'MSWin32');
-
-sub Tk_cmd { ($useWmRelease) ? \&Tk::label : \&Tk::toplevel }
-
-Construct Tk::Widget 'DragDrop';
-
-use strict;
-use vars qw(%type @types);
-use Carp;
-
-
-# There is a snag with having a token window and moving to
-# exactly where cursor is - the cursor is "inside" the token
-# window - hence it is not "inside" the dropsite window
-# so we offset X,Y by OFFSET pixels.
-sub OFFSET () {3}
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $mw->bind($class,'<Map>','Mapped');
- $mw->bind($class,'<Any-KeyPress>','Done');
- $mw->bind($class,'<Any-ButtonRelease>','Drop');
- $mw->bind($class,'<Any-Motion>','Drag');
- return $class;
-}
-
-sub Populate
-{
- my ($token,$args) = @_;
- my $parent = $token->parent;
- if ($useWmRelease)
- {
- $token->wmRelease;
- $token->ConfigSpecs(-text => ['SELF','text','Text',$parent->class]);
- }
- else
- {
- my $lab = $token->Label->pack(-expand => 1, -fill => 'both');
- bless $lab,ref($token);
- $lab->bindtags([ref($token), $lab, $token, 'all']);
- $token->ConfigSpecs(-text => [$lab,'text','Text',$parent->class],
- DEFAULT => [$lab]);
- }
- $token->withdraw;
- $token->overrideredirect(1);
- $token->ConfigSpecs(-sitetypes => ['METHOD','siteTypes','SiteTypes',undef],
- -startcommand => ['CALLBACK',undef,undef,undef],
- -endcommand => ['CALLBACK',undef,undef,undef],
- -predropcommand => ['CALLBACK',undef,undef,undef],
- -postdropcommand => ['CALLBACK',undef,undef,undef],
- -delta => ['PASSIVE','delta','Delta',10],
- -cursor => ['SELF','cursor','Cursor','hand2'],
- -handlers => ['SETMETHOD','handlers','Handlers',[[[$token,'SendText']]]],
- -selection => ['SETMETHOD','selection','Selection','XdndSelection'],
- -event => ['SETMETHOD','event','Event','<B1-Motion>']
- );
- $token->{InstallHandlers} = 0;
- $args->{-borderwidth} = 3;
- $args->{-relief} = 'flat';
- $args->{-takefocus} = 1;
-}
-
-sub sitetypes
-{
- my ($w,$val) = @_;
- confess "Not a widget $w" unless (ref $w);
- my $var = \$w->{Configure}{'-sitetypes'};
- if (@_ > 1)
- {
- if (defined $val)
- {
- $val = [$val] unless (ref $val);
- my $type;
- foreach $type (@$val)
- {
- Tk::DragDrop->import($type);
- }
- }
- $$var = $val;
- }
- return (defined $$var) ? $$var : \@types;
-}
-
-sub SendText
-{
- my ($w,$offset,$max) = @_;
- my $s = substr($w->cget('-text'),$offset);
- $s = substr($s,0,$max) if (length($s) > $max);
- return $s;
-}
-
-sub handlers
-{
- my ($token,$opt,$value) = @_;
- $token->{InstallHandlers} = (defined($value) && @$value);
- $token->{'handlers'} = $value;
-}
-
-sub selection
-{
- my ($token,$opt,$value) = @_;
- my $handlers = $token->{'handlers'};
- $token->{InstallHandlers} = (defined($handlers) && @$handlers);
-}
-
-sub event
-{
- my ($w,$opt,$value) = @_;
- # delete old bindings
- $w->parent->Tk::bind($value,[$w,'StartDrag']);
-}
-
-#
-
-sub FindSite
-{
- my ($token,$X,$Y,$e) = @_;
- my $site;
- my $types = $token->sitetypes;
- if (defined $types && @$types)
- {
- foreach my $type (@$types)
- {
- my $class = $type{$type};
- last if (defined($class) && ($site = $class->FindSite($token,$X,$Y)));
- }
- }
- else
- {
- warn 'No sitetypes';
- }
- my $new = $site || 'undef';
- my $over = $token->{'Over'};
- if ($over)
- {
- if (!$over->Match($site))
- {
- $over->Leave($token,$e);
- delete $token->{'Over'};
- }
- }
- if ($site)
- {
- unless ($token->{'Over'})
- {
- $site->Enter($token,$e);
- $token->{'Over'} = $site;
- }
- $site->Motion($token,$e) if (defined $site)
- }
- return $site;
-}
-
-sub Mapped
-{
- my ($token) = @_;
- my $e = $token->parent->XEvent;
- $token = $token->toplevel;
- $token->grabGlobal;
- $token->focus;
- if (defined $e)
- {
- my $X = $e->X;
- my $Y = $e->Y;
- $token->MoveToplevelWindow($X+OFFSET,$Y+OFFSET);
- $token->NewDrag;
- $token->FindSite($X,$Y,$e);
- }
-}
-
-sub NewDrag
-{
- my ($token) = @_;
- my $types = $token->sitetypes;
- if (defined $types && @$types)
- {
- my $type;
- foreach $type (@$types)
- {
- my $class = $type{$type};
- if (defined $class)
- {
- $class->NewDrag($token);
- }
- }
- }
-}
-
-sub Drag
-{
- my $token = shift;
- my $e = $token->XEvent;
- my $X = $e->X;
- my $Y = $e->Y;
- $token = $token->toplevel;
- $token->MoveToplevelWindow($X+OFFSET,$Y+OFFSET);
- $token->FindSite($X,$Y,$e);
-}
-
-sub Done
-{
- my $token = shift;
- my $e = $token->XEvent;
- $token = $token->toplevel;
- my $over = delete $token->{'Over'};
- $over->Leave($token,$e) if (defined $over);
- my $w = $token->parent;
- eval {local $SIG{__DIE__}; $token->grabRelease };
- $token->withdraw;
- delete $w->{'Dragging'};
- $w->update;
-}
-
-sub AcceptDrop
-{
- my ($token) = @_;
- $token->configure(-relief => 'sunken');
- $token->{'Accepted'} = 1;
-}
-
-sub RejectDrop
-{
- my ($token) = @_;
- $token->configure(-relief => 'flat');
- $token->{'Accepted'} = 0;
-}
-
-sub HandleLoose
-{
- my ($w,$seln) = @_;
- return '';
-}
-
-sub InstallHandlers
-{
- my ($token,$seln) = @_;
- my $w = $token->parent;
- $token->configure('-selection' => $seln) if $seln;
- $seln = $token->cget('-selection');
- if ($token->{InstallHandlers})
- {
- foreach my $h (@{$token->cget('-handlers')})
- {
- $w->SelectionHandle('-selection' => $seln,@$h);
- }
- $token->{InstallHandlers} = 0;
- }
- if (!$w->IS($w->SelectionOwner('-selection'=>$seln)))
- {
- $w->SelectionOwn('-selection' => $seln, -command => [\&HandleLoose,$w,$seln]);
- }
-}
-
-sub Drop
-{
- my $ewin = shift;
- my $e = $ewin->XEvent;
- my $token = $ewin->toplevel;
- my $site = $token->FindSite($e->X,$e->Y,$e);
- Tk::catch { $token->grabRelease };
- if (defined $site)
- {
- my $seln = $token->cget('-selection');
- unless ($token->Callback(-predropcommand => $seln, $site))
- {
-# XXX This is ugly if the user restarts a drag within the 2000 ms:
-# my $id = $token->after(2000,[$token,'Done']);
- my $w = $token->parent;
- $token->InstallHandlers;
- $site->Drop($token,$seln,$e);
- $token->Callback(-postdropcommand => $seln);
- $token->Done;
- }
- }
- else
- {
- $token->Done;
- }
- $token->Callback('-endcommand');
-}
-
-sub StartDrag
-{
- my $token = shift;
- my $w = $token->parent;
- unless ($w->{'Dragging'})
- {
- my $e = $w->XEvent;
- my $X = $e->X;
- my $Y = $e->Y;
- my $was = $token->{'XY'};
- if ($was)
- {
- my $dx = $was->[0] - $X;
- my $dy = $was->[1] - $Y;
- if (sqrt($dx*$dx+$dy*$dy) > $token->cget('-delta'))
- {
- unless ($token->Callback('-startcommand',$token,$e))
- {
- delete $token->{'XY'};
- $w->{'Dragging'} = $token;
- $token->MoveToplevelWindow($X+OFFSET,$Y+OFFSET);
- $token->raise;
- $token->deiconify;
- $token->FindSite($X,$Y,$e);
- }
- }
- }
- else
- {
- $token->{'XY'} = [$X,$Y];
- }
- }
-}
-
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/DragDrop/Common.pm b/Master/tlpkg/tlperl/lib/Tk/DragDrop/Common.pm
deleted file mode 100644
index 2f7a33d4fb4..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/DragDrop/Common.pm
+++ /dev/null
@@ -1,59 +0,0 @@
-package Tk::DragDrop::Common;
-
-use strict;
-use Carp;
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/DragDrop/DragDrop/Common.pm#4 $
-
-sub Type
-{
- my ($base,$name,$class) = @_;
- no strict 'refs';
- my $hash = \%{"${base}::type"};
- my $array = \@{"${base}::types"};
- unless (exists $hash->{$name})
- {
- push(@$array,$name);
- $class = (caller(0))[0] unless (@_ > 2);
- $hash->{$name} = $class;
- # confess "Strange class $class for $base/$name" unless ($class =~ /^Tk/);
- # print "$base $name is ",$class,"\n";
- }
-}
-
-sub import
-{
- my $class = shift;
- no strict 'refs';
- my $types = \%{"${class}::type"};
- while (@_)
- {
- my $type = shift;
- unless (exists $types->{$type})
- {
- if ($type eq 'Local')
- {
- $class->Type($type,$class);
- }
- else
- {
- my ($kind) = $class =~ /([A-Z][a-z]+)$/;
- my $file = Tk->findINC("DragDrop/${type}${kind}.pm");
- if (defined $file)
- {
- # print "Loading $file\n";
- require $file;
- }
- else
- {
- croak "Cannot find ${type}${kind}";
- }
- }
- }
- }
-}
-
-1;
-__END__
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/DragDrop/LocalDrop.pm b/Master/tlpkg/tlperl/lib/Tk/DragDrop/LocalDrop.pm
deleted file mode 100644
index 0f5028ae64c..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/DragDrop/LocalDrop.pm
+++ /dev/null
@@ -1,61 +0,0 @@
-package Tk::DragDrop::Local;
-use strict;
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/DragDrop/DragDrop/LocalDrop.pm#4 $
-
-use base qw(Tk::DragDrop::Rect);
-require Tk::DragDrop;
-
-my @toplevels;
-
-Tk::DragDrop->Type('Local');
-
-sub XY
-{
- my ($site,$event) = @_;
- return ($event->X - $site->X,$event->Y - $site->Y);
-}
-
-sub Apply
-{
- my $site = shift;
- my $name = shift;
- my $cb = $site->{$name};
- if ($cb)
- {
- my $event = shift;
- $cb->Call(@_,$site->XY($event));
- }
-}
-
-sub Drop
-{
- my ($site,$token,$seln,$event) = @_;
- $site->Apply(-dropcommand => $event, $seln);
- $site->Apply(-entercommand => $event, 0);
- $token->Done;
-}
-
-sub Enter
-{
- my ($site,$token,$event) = @_;
- $token->AcceptDrop;
- $site->Apply(-entercommand => $event, 1);
-}
-
-sub Leave
-{
- my ($site,$token,$event) = @_;
- $token->RejectDrop;
- $site->Apply(-entercommand => $event, 0);
-}
-
-sub Motion
-{
- my ($site,$token,$event) = @_;
- $site->Apply(-motioncommand => $event);
-}
-
-1;
-
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Tk/DragDrop/Rect.pm b/Master/tlpkg/tlperl/lib/Tk/DragDrop/Rect.pm
deleted file mode 100644
index 04cfa8772f2..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/DragDrop/Rect.pm
+++ /dev/null
@@ -1,110 +0,0 @@
-package Tk::DragDrop::Rect;
-use strict;
-use Carp;
-
-# Proxy class which represents sites to the dropping side
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #11 $ =~ /\D(\d+)\s*$/;
-
-# Some default methods when called site side
-# XIDs and viewable-ness from widget
-
-# XID of ancestor
-sub ancestor { ${shift->widget->toplevel->WindowId} }
-
-# XID of site window
-sub win { ${shift->widget->WindowId} }
-
-# Is site window mapped
-sub viewable { shift->widget->viewable }
-
-sub Over
-{
- my ($site,$X,$Y) = @_;
-
- my $x = $site->X;
- my $y = $site->Y;
- my $w = $site->width;
- my $h = $site->height;
- my $val = ($X >= $x && $X < ($x + $w) && $Y >= $y && $Y < ($y + $h));
-
- return 0 unless $val;
-
- my $widget = $site->widget;
-
- # Now XTranslateCoords from root window to site window's
- # ancestor. Ancestors final descendant should be the site window.
- # Like $win->containing but avoids a problem that dropper's "token"
- # window may be the toplevel (child of root) that contains X,Y
- # so if that is in another application ->containing does not
- # give us a window.
- my $id = $site->ancestor;
- while (1)
- {
- my $cid = $widget->PointToWindow($X,$Y,$id);
- last unless $cid;
- $id = $cid;
- }
- return ($id == $site->win);
-}
-
-sub FindSite
-{
- my ($class,$widget,$X,$Y) = @_;
- foreach my $site ($class->SiteList($widget))
- {
- return $site if ($site->viewable && $site->Over($X,$Y));
- }
- return undef;
-}
-
-sub NewDrag
-{
- my ($class,$widget) = @_;
-}
-
-sub Match
-{
- my ($site,$other) = @_;
- return 0 unless (defined $other);
- return 1 if ($site == $other);
- return 0 unless (ref($site) eq ref($other));
- for ("$site")
- {
- if (/ARRAY/)
- {
- my $i;
- return 0 unless (@$site == @$other);
- for ($i = 0; $i < @$site; $i++)
- {
- return 0 unless ($site->[$i] == $other->[$i]);
- }
- return 1;
- }
- elsif (/SCALAR/)
- {
- return $site == $other;
- }
- elsif (/HASH/)
- {
- my $key;
- foreach $key (keys %$site)
- {
- return 0 unless exists $other->{$key};
- return 0 unless ($other->{$key} eq $site->{$key});
- }
- foreach $key (keys %$other)
- {
- return 0 unless exists $site->{$key};
- return 0 unless ($other->{$key} eq $site->{$key});
- }
- return 1;
- }
- return 0;
- }
- return 0;
-}
-
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/DragDrop/SunConst.pm b/Master/tlpkg/tlperl/lib/Tk/DragDrop/SunConst.pm
deleted file mode 100644
index 66325466e68..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/DragDrop/SunConst.pm
+++ /dev/null
@@ -1,34 +0,0 @@
-package Tk::DragDrop::SunConst;
-require Exporter;
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/DragDrop/DragDrop/SunConst.pm#4 $
-
-use base qw(Exporter);
-
-@EXPORT = qw(_enter _leave _motion
- ENTERLEAVE MOTION DEFAULT_SITE
- MOVE_FLAG ACK_FLAG TRANSIENT_FLAG FORWARDED_FLAG
- );
-
-# Event types
-sub _enter () {7};
-sub _leave () {8};
-sub _motion () {6};
-
-# Site flags
-
-sub ENTERLEAVE () {1<<0}
-sub MOTION () {1<<1}
-sub DEFAULT_SITE () {1<<2}
-
-# Trigger flags
-sub MOVE_FLAG () {1<<0}
-sub ACK_FLAG () {1<<1}
-sub TRANSIENT_FLAG () {1<<2}
-sub FORWARDED_FLAG () {1<<3}
-
-1;
-
-__END__
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/DragDrop/SunDrop.pm b/Master/tlpkg/tlperl/lib/Tk/DragDrop/SunDrop.pm
deleted file mode 100644
index 422a08196ea..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/DragDrop/SunDrop.pm
+++ /dev/null
@@ -1,200 +0,0 @@
-package Tk::DragDrop::SunDrop;
-require Tk::DragDrop::Rect;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #5 $ =~ /\D(\d+)\s*$/;
-
-use base qw(Tk::DragDrop::Rect);
-use strict;
-use Tk::DragDrop::SunConst;
-
-Tk::DragDrop->Type('Sun');
-
-BEGIN
- {
- # Define the Rect API as members of the array
- my @fields = qw(name win X Y width height flags ancestor widget);
- my $i = 0;
- no strict 'refs';
- for ($i=0; $i < @fields; $i++)
- {
- my $j = $i;
- *{"$fields[$i]"} = sub { shift->[$j] };
- }
- }
-
-
-sub Preview
-{
- my ($site,$token,$e,$kind,$flags) = (@_);
- $token->BackTrace('No flags') unless defined $flags;
- my $sflags = $site->flags;
- return if ($kind == _motion && !($sflags & MOTION));
- return if ($kind != _motion && !($sflags & ENTERLEAVE));
- my $data = pack('LLSSLL',$kind,$e->t,$e->X,$e->Y,$site->name,$flags);
- $token->SendClientMessage('_SUN_DRAGDROP_PREVIEW',$site->win,32,$data);
-}
-
-sub Enter
-{
- my ($site,$token,$e) = @_;
- $token->AcceptDrop;
- $site->Preview($token,$e,_enter,0);
-}
-
-sub Leave
-{
- my ($site,$token,$e) = @_;
- $token->RejectDrop;
- $site->Preview($token,$e,_leave,0);
-}
-
-sub Motion
-{
- my ($site,$token,$e) = @_;
- $site->Preview($token,$e,_motion,0);
-}
-
-sub HandleDone
-{
- my ($token,$seln,$offset,$max) = @_;
- $token->Done;
- return '';
-}
-
-sub HandleAck
-{
- my ($w,$seln,$offset,$max) = @_;
- return '';
-}
-
-sub HandleItem
-{
- my ($w,$seln,$offset,$max) = @_;
- return undef;
-}
-
-sub HandleCount
-{
- my ($w,$seln,$offset,$max) = @_;
- return 1;
-}
-
-sub Drop
-{
- my ($site,$token,$seln,$e) = @_;
- my $w = $token->parent;
- $w->SelectionHandle('-selection'=>$seln,'-type'=>'_SUN_DRAGDROP_ACK',[\&HandleAck,$token,$seln]);
- $w->SelectionHandle('-selection'=>$seln,'-type'=>'_SUN_DRAGDROP_DONE',[\&HandleDone,$token,$seln]);
- my $atom = $w->InternAtom($seln);
- my $flags = ACK_FLAG | TRANSIENT_FLAG;
- my $data = pack('LLSSLL',$atom,$e->t,$e->X,$e->Y,$site->name,$flags);
- $w->SendClientMessage('_SUN_DRAGDROP_TRIGGER',$site->win,32,$data);
-}
-
-sub FindSite
-{
- my ($class,$token,$X,$Y) = @_;
- $token->{'SunDD'} = [] unless exists $token->{'SunDD'};
- my $site = $class->SUPER::FindSite($token,$X,$Y);
- if (!defined $site)
- {
- my $id = $token->PointToWindow($X,$Y);
- while ($id)
- {
- my @prop;
- Tk::catch { @prop = $token->property('get','_SUN_DRAGDROP_INTEREST', $id) };
- if (!$@ && shift(@prop) eq '_SUN_DRAGDROP_INTEREST' && shift(@prop) == 0)
- {
- # This is a "toplevel" which has some sites associated with it.
- my ($bx,$by) = $token->WindowXY($id);
- $token->{'SunDDSeen'} = {} unless exists $token->{'SunDDSeen'};
- return $site if $token->{'SunDDSeen'}{$id};
- $token->{'SunDDSeen'}{$id} = 1;
- my $sites = $token->{'SunDD'};
- my $count = shift(@prop);
- while (@prop && $count-- > 0)
- {
- my ($xid,$sn,$flags,$kind,$n) = splice(@prop,0,5);
- if ($kind != 0)
- {
- warn "Don't understand site type $kind";
- last;
- }
- while (@prop >= 4 && $n-- > 0)
- {
- my ($x,$y,$w,$h) = splice(@prop,0,4);
- push(@$sites,bless [$sn,$xid,$x+$bx,$y+$by,$w,$h,$flags,$id,$token],$class);
- }
- }
- return $class->SUPER::FindSite($token,$X,$Y);
- }
- $id = $token->PointToWindow($X,$Y,$id)
- }
- }
- return $site;
-}
-
-my $busy = 0;
-
-sub NewDrag
-{
- my ($class,$token) = @_;
- delete $token->{'SunDD'} unless $busy;
- delete $token->{'SunDDSeen'};
-}
-
-sub SiteList
-{
- my ($class,$token) = @_;
- return @{$token->{'SunDD'}};
-}
-
-1;
-__END__
-
-# this code is obsolete now that we look at properties ourselves
-# which means we don't need dropsite manager running
-# On Sun's running OpenLook the window manager or dropsite mananger
-# watches for and caches site info in a special selection
-# This code got sites from that
-#
-
-sub SiteList
-{
- my ($class,$token) = @_;
- unless (1 || $busy || exists $token->{'SunDD'})
- {
- Carp::confess('Already doing it!') if ($busy++);
- my @data = ();
- my @sites = ();
- my $mw = $token->MainWindow;
- $token->{'SunDD'} = \@sites;
- Tk::catch {
- @data = $mw->SelectionGet( '-selection'=>'_SUN_DRAGDROP_DSDM', '_SUN_DRAGDROP_SITE_RECTS');
- };
- if ($@)
- {
- $token->configure('-cursor'=>'hand2');
- $token->grab(-global);
- }
- else
- {
- while (@data)
- {
- my $version = shift(@data);
- if ($version != 0)
- {
- warn "Unexpected site version $version";
- last;
- }
- push(@sites,bless [splice(@data,0,7)],$class);
- }
- }
- $busy--;
- }
- return @{$token->{'SunDD'}};
-}
-
-1;
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/DragDrop/SunSite.pm b/Master/tlpkg/tlperl/lib/Tk/DragDrop/SunSite.pm
deleted file mode 100644
index ab3f4f9793b..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/DragDrop/SunSite.pm
+++ /dev/null
@@ -1,107 +0,0 @@
-package Tk::DragDrop::SunSite;
-require Tk::DropSite;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #6 $ =~ /\D(\d+)\s*$/;
-
-use Tk::DragDrop::SunConst;
-use base qw(Tk::DropSite);
-use strict;
-
-Tk::DropSite->Type('Sun');
-
-sub SunDrop
-{
- my ($w,$site) = @_;
- my $e = $w->XEvent;
- my ($seln,$t,$x,$y,$id,$flags) = unpack('LLSSLL',$e->A);
- $w->MakeAtom($seln);
- if ($flags & &ACK_FLAG)
- {
- Tk::catch { $w->SelectionGet('-selection'=>$seln,'_SUN_DRAGDROP_ACK') };
- }
- my @targ = $w->SelectionGet(-selection => $seln,'TARGETS');
- $site->Apply(-dropcommand => $x, $y, $seln, SunDrop => \@targ);
- if ($flags & &TRANSIENT_FLAG)
- {
- Tk::catch { $w->SelectionGet('-selection'=>$seln,'_SUN_DRAGDROP_DONE') };
- }
- $w->configure('-relief' => $w->{'_DND_RELIEF_'}) if (defined $w->{'_DND_RELIEF_'});
- $site->Apply(-entercommand => $x, $y, 0);
-}
-
-sub SunPreview
-{
- my ($w,$site) = @_;
- my $event = $w->XEvent;
- my ($kind,$t,$x,$y,$id,$flags) = unpack('LLSSLL',$event->A);
- $x -= $site->X;
- $y -= $site->Y;
- if ($kind == _enter)
- {
- $site->Callback(-entercommand => 1, $x, $y);
- }
- elsif ($kind == _leave)
- {
- $site->Callback(-entercommand => 0, $x, $y);
- }
- elsif ($kind == _motion)
- {
- $site->Callback(-motioncommand => $x, $y);
- }
-}
-
-sub InitSite
-{
- my ($class,$site) = @_;
- my $w = $site->widget;
- $w->BindClientMessage('_SUN_DRAGDROP_TRIGGER',[\&SunDrop,$site]);
- $w->BindClientMessage('_SUN_DRAGDROP_PREVIEW',[\&SunPreview,$site]);
-}
-
-sub NoteSites
-{
- my ($class,$t,$sites) = @_;
- my $count = @$sites;
- my @data = (0,0);
- my ($wrapper,$offset) = $t->wrapper;
- if ($t->viewable)
- {
- my $s;
- my $i = 0;
- my @win;
- my $bx = $t->rootx;
- my $by = $t->rooty - $offset;
- $t->MakeWindowExist;
- foreach $s (@$sites)
- {
- my $w = $s->widget;
- if ($w->viewable)
- {
- $w->MakeWindowExist;
- $data[1]++;
- push(@data,${$w->WindowId}); # XID
- push(@data,$i++); # Our 'tag'
- push(@data,ENTERLEAVE|MOTION); # Flags
- push(@data,0); # Kind is 'rect'
- push(@data,1); # Number of rects
- push(@data,$s->X-$bx,$s->Y-$by,$s->width,$s->height); # The rect
- }
- }
- }
- if ($data[1])
- {
- $t->property('set',
- '_SUN_DRAGDROP_INTEREST', # name
- '_SUN_DRAGDROP_INTEREST', # type
- 32, # format
- \@data,$wrapper); # the data
- }
- else
- {
- $t->property('delete','_SUN_DRAGDROP_INTEREST',$wrapper);
- }
-}
-
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/DragDrop/Win32Drop.pm b/Master/tlpkg/tlperl/lib/Tk/DragDrop/Win32Drop.pm
deleted file mode 100644
index 08a4656ecce..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/DragDrop/Win32Drop.pm
+++ /dev/null
@@ -1,8 +0,0 @@
-package Tk::DragDrop::Win32Drop;
-# Dummy placeholder for symetry
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/DragDrop/Win32Site/Win32Drop.pm#4 $
-
-use Tk ();
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/DragDrop/Win32Site.pm b/Master/tlpkg/tlperl/lib/Tk/DragDrop/Win32Site.pm
deleted file mode 100644
index f45d06bc92b..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/DragDrop/Win32Site.pm
+++ /dev/null
@@ -1,50 +0,0 @@
-package Tk::DragDrop::Win32Site;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #8 $ =~ /\D(\d+)\s*$/;
-
-use Tk qw($XS_VERSION);
-require DynaLoader;
-require Tk::DropSite;
-
-use base qw(Tk::DropSite DynaLoader);
-
-bootstrap Tk::DragDrop::Win32Site;
-
-use strict;
-
-Tk::DropSite->Type('Win32');
-
-sub WM_DROPFILES () {563}
-
-sub InitSite
-{
- my ($class,$site) = @_;
- my $w = $site->widget;
- $w->BindClientMessage(WM_DROPFILES,[\&Win32Drop,$site]);
- DragAcceptFiles($w,1);
-}
-
-sub Win32Drop
-{
- # print join(',',@_),"\n";
- my ($w,$site,$msg,$wParam,$lParam) = @_;
- my ($x,$y,@files) = DropInfo($wParam);
- my $cb = $site->{'-dropcommand'};
- $site->Apply(-entercommand => $x, $y, 1);
- if ($cb)
- {
- foreach my $file (@files)
- {
- # print "$file @ $x,$y\n";
- $w->clipboardClear;
- $w->clipboardAppend('--',$file);
- $cb->Call('CLIPBOARD',Win32Drop => ['STRING'],$x,$y);
- }
- }
- $site->Apply(-entercommand => $x, $y, 0);
- return 0;
-}
-
-1;
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Tk/DragDrop/XDNDDrop.pm b/Master/tlpkg/tlperl/lib/Tk/DragDrop/XDNDDrop.pm
deleted file mode 100644
index 7376c8d69c5..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/DragDrop/XDNDDrop.pm
+++ /dev/null
@@ -1,145 +0,0 @@
-package Tk::DragDrop::XDNDDrop;
-use strict;
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #6 $ =~ /\D(\d+)\s*$/;
-use base qw(Tk::DragDrop::Rect);
-
-sub XDND_PROTOCOL_VERSION () { 4 }
-
-Tk::DragDrop->Type('XDND');
-
-sub NewDrag
-{
- my ($class,$token) = @_;
- $token->{$class} = {};
-}
-
-sub new
-{
- my ($class,$token,$id,@prop) = @_;
- my $ver = $token->InternAtom(shift(@prop));
- # warn "XDND version $ver ".join(' ',@prop)."\n";
- $ver = XDND_PROTOCOL_VERSION if $ver > XDND_PROTOCOL_VERSION;
- my $site = bless { id => $id, token => $token, ver => $ver, state => 0, accept => \@prop}, $class;
- my $w = $token->parent;
- $w->BindClientMessage('XdndStatus',[$site => 'XdndStatus']);
- $w->BindClientMessage('XdndFinished',[$site => 'XdndFinished']);
- return $site;
-}
-
-sub Drop
-{
- my ($site,$token,$seln,$e) = @_;
- my $w = $token->parent;
- my $data = pack('LLLLL',oct($w->id),0,$e->t,0,0);
- $w->SendClientMessage('XdndDrop',$site->{id},32,$data);
-}
-
-sub FindSite
-{
- my ($class,$token,$X,$Y) = @_;
- my $id = $token->PointToWindow($X,$Y);
- while ($id)
- {
- my @prop;
- Tk::catch { @prop = $token->property('get','XdndAware', $id) };
- if (!$@ && shift(@prop) eq 'ATOM')
- {
- my $hash = $token->{$class};
- my $site = $hash->{$id};
- if (!defined $site)
- {
- $site = $class->new($token,$id,@prop);
- $hash->{$id} = $site;
- }
- return $site;
- }
- $id = $token->PointToWindow($X,$Y,$id)
- }
- return undef;
-}
-
-sub Enter
-{
- my ($site,$token,$e) = @_;
- my $w = $token->parent;
- $token->InstallHandlers('XdndSelection');
- my $seln = $token->cget('-selection');
- my @targets = grep(!/^(TARGETS|MULTIPLE|TIMESTAMP)$/,reverse($token->SelectionGet('-selection'=> 'XdndSelection','TARGETS')));
- # print join(' ',@targets),"\n";
- my $flags = ($site->{ver} << 24);
- my @atarg = map($token->InternAtom($_),@targets);
- my $ntarg = @atarg;
- if ($ntarg > 3)
- {
- $flags |= 1;
- $w->property('set','XdndTypeList','ATOM',32,\@atarg);
- splice(@atarg,3);
- }
- else
- {
- splice(@atarg,$ntarg,(0 x 3 - $ntarg));
- }
- unshift(@atarg,oct($w->id),$flags);
- # print join(' ',map(sprintf("%08X",$_),@atarg)),"\n";
- my $data = pack('LLLLL',@atarg);
- $w->SendClientMessage('XdndEnter',$site->{id},32,$data);
-}
-
-sub Leave
-{
- my ($site,$token,$e) = @_;
- my $w = $token->parent;
- my $data = pack('LLLLL',oct($w->id), 0, 0, 0, 0);
- $w->SendClientMessage('XdndLeave',$site->{id},32,$data);
-}
-
-sub Motion
-{
- my ($site,$token,$e) = @_;
- my $X = $e->X;
- my $Y = $e->Y;
- my $w = $token->parent;
- my $action = $token->InternAtom($site->{'action'} || 'XdndActionCopy');
- my @atarg = (oct($w->id),0,($X << 16) | $Y, $e->t, $action);
- # print join(' ',map(sprintf("%08X",$_),@atarg)),"\n";
- my $data = pack('LLLLL',@atarg);
- $w->SendClientMessage('XdndPosition',$site->{id},32,$data);
-}
-
-sub XdndFinished
-{
- my ($site) = @_;
- my $token = $site->{token};
- # printf "XdndFinished $site\n",
- $token->Done;
-}
-
-sub XdndStatus
-{
- my ($site) = @_;
- my $token = $site->{token};
- my $w = $token->parent;
- my $event = $w->XEvent;
- my ($tid,$flags,$xy,$wh,$action) = unpack('LLLLL',$event->A);
- $action = $w->GetAtomName($action) if $action;
- $site->{flags} = $flags;
- $site->{'X'} = $xy >> 16;
- $site->{'Y'} = $xy & 0xFFFF;
- $site->{'width'} = $wh >> 16;
- $site->{'height'} = $wh & 0xFFFF;
- #printf "XdndStatus $site targ=%x flags=%08X x=%d y=%d w=%d h=%d a=%s\n",
- # $tid,$flags,$xy >> 16, $xy & 0xFFFF, $wh >> 16, $wh & 0xFFFF,$action;
- if ($flags & 1)
- {
- $token->AcceptDrop;
- }
- else
- {
- $token->RejectDrop;
- }
-}
-
-
-1;
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Tk/DragDrop/XDNDSite.pm b/Master/tlpkg/tlperl/lib/Tk/DragDrop/XDNDSite.pm
deleted file mode 100644
index 4ac75d63c40..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/DragDrop/XDNDSite.pm
+++ /dev/null
@@ -1,159 +0,0 @@
-package Tk::DragDrop::XDNDSite;
-use strict;
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #6 $ =~ /\D(\d+)\s*$/;
-use base qw(Tk::DropSite);
-
-sub XDND_PROTOCOL_VERSION () { 4 }
-
-Tk::DropSite->Type('XDND');
-
-sub InitSite
-{my ($class,$site) = @_;
- my $w = $site->widget;
-}
-
-sub XdndEnter
-{
- my ($t,$sites) = @_;
- my $event = $t->XEvent;
- my ($src,$flags,@types) = unpack('LLLLL',$event->A);
- my $ver = ($flags >> 24) & 0xFF;
- if ($flags & 1)
- {
- my @prop;
- Tk::catch { @prop = $t->property('get','XdndTypeList',$src) };
- @types = @prop if (!$@ && shift(@prop) eq 'ATOM');
- }
- else
- {
- $t->MakeAtom(@types);
- }
- # print "XdndEnter $src $ver @types\n";
- $t->{"XDND$src"} = { ver => $ver, types => \@types };
-}
-
-sub XdndLeave
-{
- my ($t,$sites) = @_;
- my $event = $t->XEvent;
- my ($src,$flags,@types) = unpack('LLLLL',$event->A);
- # print "XdndLeave $src\n";
- my $info = $t->{"XDND$src"};
- if ($info)
- {
- my $over = $info->{site};
- if ($over)
- {
- my $X = $info->{X};
- my $Y = $info->{Y};
- $over->Apply(-entercommand => $X, $Y, 0)
- }
- }
- delete $t->{"XDND$src"};
-}
-
-sub XdndPosition
-{
- my ($t,$sites) = @_;
- my $event = $t->XEvent;
- my ($src,$flags,$xy,$time,$action) = unpack('LLLLL',$event->A);
- $t->MakeAtom($action);
- my $X = $xy >> 16;
- my $Y = $xy & 0xFFFF;
- my $info = $t->{"XDND$src"};
- $info->{X} = $X;
- $info->{Y} = $Y;
- $info->{action} = $action;
- $info->{t} = $time;
- my ($id) = $t->wrapper;
- my $sxy = 0;
- my $swh = 0;
- my $sflags = 0;
- my $saction = 0;
- my $over = $info->{site};
- foreach my $site (@$sites)
- {
- if ($site->Over($X,$Y))
- {
- $sxy = ($site->X << 16) | $site->Y;
- $swh = ($site->width << 16) | $site->height;
- $saction = $action;
- $sflags |= 1;
- if ($over)
- {
- if ($over == $site)
- {
- $site->Apply(-motioncommand => $X, $Y);
- }
- else
- {
- $over->Apply(-entercommand => $X, $Y, 0);
- $site->Apply(-entercommand => $X, $Y, 1);
- }
- }
- else
- {
- $site->Apply(-entercommand => $X, $Y, 1);
- }
- $info->{site} = $site;
- last;
- }
- }
- unless ($sflags & 1)
- {
- if ($over)
- {
- $over->Apply(-entercommand => $X, $Y, 0)
- }
- delete $info->{site};
- }
- my $data = pack('LLLLL',$id,$sflags,$sxy,$swh,$action);
- $t->SendClientMessage('XdndStatus',$src,32,$data);
-}
-
-sub XdndDrop
-{
- my ($t,$sites) = @_;
- my $event = $t->XEvent;
- my ($src,$flags,$time,$res1,$res2) = unpack('LLLLL',$event->A);
- my $info = $t->{"XDND$src"};
- my $sflags = 0;
- my $action = 0;
- if ($info)
- {
- $info->{t} = $time;
- my $site = $info->{'site'};
- if ($site)
- {
- my $X = $info->{'X'};
- my $Y = $info->{'Y'};
- $action = $info->{action};
- $site->Apply(-dropcommand => $X, $Y, 'XdndSelection',$action,$info->{types});
- $site->Apply(-entercommand => $X, $Y, 0);
- }
- }
- my ($id) = $t->wrapper;
- my $data = pack('LLLLL',$id,$sflags,$action,0,0);
- $t->SendClientMessage('XdndFinished',$src,32,$data);
-}
-
-sub NoteSites
-{my ($class,$t,$sites) = @_;
- my ($wrapper) = $t->wrapper;
- if (@$sites)
- {
- $t->BindClientMessage('XdndLeave',[\&XdndLeave,$sites]);
- $t->BindClientMessage('XdndEnter',[\&XdndEnter,$sites]);
- $t->BindClientMessage('XdndPosition',[\&XdndPosition,$sites]);
- $t->BindClientMessage('XdndDrop',[\&XdndDrop,$sites]);
- $t->property('set','XdndAware','ATOM',32,[XDND_PROTOCOL_VERSION],$wrapper);
- }
- else
- {
- $t->property('delete','XdndAware',$wrapper);
- }
-}
-
-1;
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Tk/DropSite.pm b/Master/tlpkg/tlperl/lib/Tk/DropSite.pm
deleted file mode 100644
index 3519c108384..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/DropSite.pm
+++ /dev/null
@@ -1,257 +0,0 @@
-package Tk::DropSite;
-require Tk::DragDrop::Common;
-require Tk::DragDrop::Rect;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #7 $ =~ /\D(\d+)\s*$/;
-
-use base qw(Tk::DragDrop::Common Tk::DragDrop::Rect);
-
-Construct Tk::Widget 'DropSite';
-
-use strict;
-use vars qw(%type @types);
-
-Tk::DragDrop->Tk::DragDrop::Common::Type('Local');
-
-my @toplevels;
-
-BEGIN
-{
- # Are these really methods of Tk::DragDrop::Rect ?
- no strict 'refs';
- foreach my $name (qw(x y X Y width height widget))
- {
- my $key = $name;
- *{"$key"} = sub { shift->{$key} };
- }
-}
-
-# Dropping side API - really only here for Local drops
-# inheritance is a mess right now.
-
-sub NewDrag
-{
- my ($class,$token) = @_;
- # No need to clear cached sites we see live data
-}
-
-sub SiteList
-{
- # this should be inheritable - so that receive side of XDND can re-use it.
- my ($class,$widget) = @_;
- my $t;
- my @list;
- foreach $t (@toplevels)
- {
- my $sites = $t->{'DropSites'};
- if ($sites)
- {
- $sites = $sites->{'Local'};
- push(@list,@{$sites}) if ($sites);
- }
- }
- return @list;
-}
-
-sub Apply
-{
- my $site = shift;
- my $name = shift;
- my $cb = $site->{$name};
- if ($cb)
- {
- my $X = shift;
- my $Y = shift;
- $cb->Call(@_,$X - $site->X, $Y - $site->Y);
- }
-}
-
-sub Drop
-{
- my ($site,$token,$seln,$event) = @_;
- my $X = $event->X;
- my $Y = $event->Y;
- my @targ = $token->SelectionGet(-selection => $seln,'TARGETS');
- $site->Apply(-dropcommand => $X, $Y, $seln,'LocalDrop',\@targ);
- $site->Apply(-entercommand => $X, $Y, 0);
- $token->Done;
-}
-
-sub Enter
-{
- my ($site,$token,$event) = @_;
- $token->AcceptDrop;
- $site->Apply(-entercommand => $event->X, $event->Y, 1);
-}
-
-sub Leave
-{
- my ($site,$token,$event) = @_;
- $token->RejectDrop;
- $site->Apply(-entercommand => $event->X, $event->Y, 0);
-}
-
-sub Motion
-{
- my ($site,$token,$event) = @_;
- $site->Apply(-motioncommand => $event->X, $event->Y);
-}
-
-# This is receive side API.
-
-sub NoteSites
-{
- my ($class,$t,$sites) = @_;
- unless (grep($_ == $t,@toplevels))
- {
- $Tk::DragDrop::types{'Local'} = $class if (@$sites);
- push(@toplevels,$t);
- $t->OnDestroy(sub { @toplevels = grep($_ != $t,@toplevels) });
- }
-}
-
-sub UpdateDropSites
-{
- my ($t) = @_;
- $t->{'DropUpdate'} = 0;
- foreach my $type (@types)
- {
- my $sites = $t->{'DropSites'}->{$type};
- if ($sites && @$sites)
- {
- my $class = $type{$type};
- $class->NoteSites($t,$sites);
- }
- }
-}
-
-sub QueueDropSiteUpdate
-{
- my $obj = shift;
- my $class = ref($obj);
- my $t = $obj->widget->toplevel;
- unless ($t->{'DropUpdate'})
- {
- $t->{'DropUpdate'} = 1;
- $t->afterIdle(sub { UpdateDropSites($t) });
- }
-}
-
-sub delete
-{
- my ($obj) = @_;
- my $w = $obj->widget;
- $w->bindtags([grep($_ ne $obj,$w->bindtags)]);
- my $t = $w->toplevel;
- foreach my $type (@{$obj->{'-droptypes'}})
- {
- my $a = $t->{'DropSites'}->{$type};
- @$a = grep($_ ne $obj,@$a);
- }
- $obj->QueueDropSiteUpdate;
-}
-
-sub DropSiteUpdate
-{
- # Note size of widget and arrange to update properties etc.
- my $obj = shift;
- my $w = $obj->widget;
- $obj->{'x'} = $w->X;
- $obj->{'y'} = $w->Y;
- $obj->{'X'} = $w->rootx;
- $obj->{'Y'} = $w->rooty;
- $obj->{'width'} = $w->Width;
- $obj->{'height'} = $w->Height;
- $obj->QueueDropSiteUpdate;
-}
-
-sub TopSiteUpdate
-{
- my ($t) = @_;
- foreach my $type (@types)
- {
- my $sites = $t->{'DropSites'}->{$type};
- if ($sites && @$sites)
- {
- my $site;
- foreach $site (@$sites)
- {
- $site->DropSiteUpdate;
- }
- }
- }
-}
-
-sub Callback
-{
- my $obj = shift;
- my $key = shift;
- my $cb = $obj->{$key};
- $cb->Call(@_) if (defined $cb);
-}
-
-sub InitSite
-{
- my ($class,$site) = @_;
- # Tk::DragDrop->Type('Local');
-}
-
-sub new
-{
- my ($class,$w,%args) = @_;
- my $t = $w->toplevel;
- $args{'widget'} = $w;
- if (exists $args{'-droptypes'})
- {
- # Convert single type to array-of-one
- $args{'-droptypes'} = [$args{'-droptypes'}] unless (ref $args{'-droptypes'});
- }
- else
- {
- # Default to all known types.
- $args{'-droptypes'} = \@types;
- }
- my ($key,$val);
- while (($key,$val) = each %args)
- {
- if ($key =~ /command$/)
- {
- $val = Tk::Callback->new($val);
- $args{$key} = $val;
- }
- }
- my $obj = bless \%args,$class;
- unless (exists $t->{'DropSites'})
- {
- $t->{'DropSites'} = {};
- $t->{'DropUpdate'} = 0;
- }
- my $type;
- foreach $type (@{$args{'-droptypes'}})
- {
- Tk::DropSite->import($type) unless (exists $type{$type});
- my $class = $type{$type};
- $class->InitSite($obj);
- # Should this be indexed by type or class ?
- unless (exists $t->{'DropSites'}->{$type})
- {
- $t->{'DropSites'}->{$type} = [];
- }
- push(@{$t->{'DropSites'}->{$type}},$obj);
- }
- $w->OnDestroy([$obj,'delete']);
- $obj->DropSiteUpdate;
- $w->bindtags([$w->bindtags,$obj]);
- $w->Tk::bind($obj,'<Map>',[$obj,'DropSiteUpdate']);
- $w->Tk::bind($obj,'<Unmap>',[$obj,'DropSiteUpdate']);
- $w->Tk::bind($obj,'<Configure>',[$obj,'DropSiteUpdate']);
- $t->Tk::bind($class,'<Configure>',[\&TopSiteUpdate,$t]);
- unless (grep($_ eq $class,$t->bindtags))
- {
- $t->bindtags([$t->bindtags,$class]);
- }
- return $obj;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/DummyEncode.pm b/Master/tlpkg/tlperl/lib/Tk/DummyEncode.pm
deleted file mode 100644
index 5ead808405d..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/DummyEncode.pm
+++ /dev/null
@@ -1,46 +0,0 @@
-package Tk::DummyEncode;
-
-use vars qw($VERSION);
-$VERSION = '4.007'; # $Id: //depot/Tkutf8/Tk/DummyEncode.pm#7 $
-
-sub getEncoding
-{
- my ($class,$name) = @_;
- return undef unless ($name =~ /(iso8859-1|X11ControlChars)/);
- my $pkg = $name;
- $pkg =~ s/\W+/_/g;
- return bless {Name => $name},$class.'::'.$pkg;
-}
-
-package Tk::DummyEncode::iso8859_1;
-sub encode
-{
- my ($obj,$uni,$chk) = @_;
- $_[1] = '' if $chk;
- return $uni;
-}
-
-sub decode
-{
- my ($obj,$byt,$chk) = @_;
- $_[1]
-= '' if $chk;
- return $byt;
-}
-
-package Tk::DummyEncode::X11ControlChars;
-sub encode
-{
- my ($obj,$uni,$chk) = @_;
- my $str = '';
- foreach my $ch (split(//,$uni))
- {
- $str .= sprintf("\\x{%x}",ord($ch));
- }
- $_[1] = '' if $chk;
- return $str;
-}
-
-1;
-
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Tk/English.pm b/Master/tlpkg/tlperl/lib/Tk/English.pm
deleted file mode 100644
index de640376580..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/English.pm
+++ /dev/null
@@ -1,307 +0,0 @@
-package Tk::English;
-
-require Exporter;
-
-use vars qw($VERSION);
-$VERSION = '4.006'; # $Id: //depot/Tkutf8/Tk/English.pm#6 $
-
-use base qw(Exporter);
-
-# This file is generated automatically by pTk/makeenglish from Tk distribution.
-
-
-@EXPORT = qw(
- &ABOVE &ACTIVATE &ACTIVE &ADD &ADDTAG &ADJUST &AFTER &ALL &ANCHOR &APPEND
- &APPLY &ARROW1 &ARROW2 &ASCII &ASPECT &AUTO &BASELINE &BBOX &BEFORE &BELOW
- &BEVEL &BIND &BITMAP &BLANK &BOTH &BOTTOM &BUTT &CANVASX &CANVASY &CAPTURE
- &CASCADE &CENTER &CGET &CHAR &CHARS &CHECKBUTTON &CHILDREN &CLEAR &CLIENT
- &CLONE &CLOSEST &COLOR &COLORMAPWINDOWS &COLUMN &COLUMNCONFIGURE &COMMAND
- &COMPARE &CONFIGURE &COORDS &COPY &CREATE &CURRENT &CURSELECTION &DATA
- &DCHARS &DEACTIVATE &DEBUG &DECORATIONS &DECREASING &DEFAULT &DEICONIFY
- &DELETE &DELTA &DESELECT &DLINEINFO &DOWN &DRAGSITE &DRAGTO &DROPSITE &DTAG
- &DUMP &ENCLOSED &END &ENTRY &ENTRYCGET &ENTRYCONFIGURE &EVAL &EXISTS &EXPAND
- &FILL &FILLX &FILLY &FIND &FIRST &FLASH &FLAT &FOCUS &FOCUSMODEL &FOCUSNEXT
- &FOCUSPREV &FORGET &FRACTION &FRAME &FROM &GENERATE &GEOMETRY &GEOMETRYINFO
- &GET &GETTAGS &GRAVITY &GRAY &GRID &GROOVE &GROUP &HANDLE &HEAD &HEIGHT
- &HIDDEN &HIDE &HORIZONTAL &ICONBITMAP &ICONIFY &ICONMASK &ICONNAME
- &ICONPOSITION &ICONWINDOW &ICURSOR &IDENTIFY &IDLETASKS &IGNORE &IMAGE
- &INCLUDES &INCREASING &INDEX &INFO &INSERT &INSIDE &INTEGER &INTERACTIVE
- &INVOKE &ISMWMRUNNING &ITEM &ITEMCGET &ITEMCONFIGURE &LAST &LEFT &LINE
- &LINECONFIGURE &LINEEND &LINES &LINESTART &LIST &LOCATION &LOWER &MARK &MAX
- &MAXSIZE &MENUBAR &MINSIZE &MITER &MONOCHROME &MOVE &MOVETO &NAMES &NEAREST
- &NEW &NEXT &NEXTRANGE &NONE &NORMAL &NOW &OFFSPRINGS &OUTSIDE &OVERLAPPING
- &OVERRIDEREDIRECT &OWN &PADX &PADY &PAGECGET &PAGECONFIGURE &PAGES &PARENT
- &PASSIVE &POSITION &POSITIONFROM &POST &POSTCASCADE &POSTSCRIPT &PRESENT
- &PREV &PREVIOUS &PREVRANGE &PROGRAM &PROJECTING &PROPAGATE &PROTOCOL &PUT
- &RADIOBUTTON &RAISE &RAISED &RANGE &RANGES &READ &READFILE &REAL &RECORD
- &REDITHER &REFCOUNT &RELEASE &REMOVE &RESIZABLE &RIDGE &RIGHT &ROOT &ROUND
- &ROW &ROWCONFIGURE &ROWS &SAVEUNDER &SCALE &SCAN &SCROLL &SEARCH &SEE
- &SELECT &SELECTION &SEPARATOR &SET &SHOW &SIBLINGS &SIZE &SIZEFROM &SLAVES
- &SLIDER &SOLID &SPACE &STATE &STATUS &SUNKEN &TAG &TAIL &TEAROFF &TEXT
- &TITLE &TO &TOGGLE &TOP &TRACING &TRANSIENT &TRANSIENTFOR &TYPE &TYPES
- &UNITS &UNPACK &UNPOST &UNSET &UP &USER &VARIABLE &VERTICAL &VISIBILITY
- &WIDTH &WINDOW &WITHDRAW &WITHTAG &WORDEND &WORDSTART &WRITE &XVIEW
- &YPOSITION &YVIEW
-);
-sub ABOVE () { 'above' }
-sub ACTIVATE () { 'activate' }
-sub ACTIVE () { 'active' }
-sub ADD () { 'add' }
-sub ADDTAG () { 'addtag' }
-sub ADJUST () { 'adjust' }
-sub AFTER () { 'after' }
-sub ALL () { 'all' }
-sub ANCHOR () { 'anchor' }
-sub APPEND () { 'append' }
-sub APPLY () { 'apply' }
-sub ARROW1 () { 'arrow1' }
-sub ARROW2 () { 'arrow2' }
-sub ASCII () { 'ascii' }
-sub ASPECT () { 'aspect' }
-sub AUTO () { 'auto' }
-sub BASELINE () { 'baseline' }
-sub BBOX () { 'bbox' }
-sub BEFORE () { 'before' }
-sub BELOW () { 'below' }
-sub BEVEL () { 'bevel' }
-sub BIND () { 'bind' }
-sub BITMAP () { 'bitmap' }
-sub BLANK () { 'blank' }
-sub BOTH () { 'both' }
-sub BOTTOM () { 'bottom' }
-sub BUTT () { 'butt' }
-sub CANVASX () { 'canvasx' }
-sub CANVASY () { 'canvasy' }
-sub CAPTURE () { 'capture' }
-sub CASCADE () { 'cascade' }
-sub CENTER () { 'center' }
-sub CGET () { 'cget' }
-sub CHAR () { 'char' }
-sub CHARS () { 'chars' }
-sub CHECKBUTTON () { 'checkbutton' }
-sub CHILDREN () { 'children' }
-sub CLEAR () { 'clear' }
-sub CLIENT () { 'client' }
-sub CLONE () { 'clone' }
-sub CLOSEST () { 'closest' }
-sub COLOR () { 'color' }
-sub COLORMAPWINDOWS () { 'colormapwindows' }
-sub COLUMN () { 'column' }
-sub COLUMNCONFIGURE () { 'columnconfigure' }
-sub COMMAND () { 'command' }
-sub COMPARE () { 'compare' }
-sub CONFIGURE () { 'configure' }
-sub COORDS () { 'coords' }
-sub COPY () { 'copy' }
-sub CREATE () { 'create' }
-sub CURRENT () { 'current' }
-sub CURSELECTION () { 'curselection' }
-sub DATA () { 'data' }
-sub DCHARS () { 'dchars' }
-sub DEACTIVATE () { 'deactivate' }
-sub DEBUG () { 'debug' }
-sub DECORATIONS () { 'decorations' }
-sub DECREASING () { 'decreasing' }
-sub DEFAULT () { 'default' }
-sub DEICONIFY () { 'deiconify' }
-sub DELETE () { 'delete' }
-sub DELTA () { 'delta' }
-sub DESELECT () { 'deselect' }
-sub DLINEINFO () { 'dlineinfo' }
-sub DOWN () { 'down' }
-sub DRAGSITE () { 'dragsite' }
-sub DRAGTO () { 'dragto' }
-sub DROPSITE () { 'dropsite' }
-sub DTAG () { 'dtag' }
-sub DUMP () { 'dump' }
-sub ENCLOSED () { 'enclosed' }
-sub END () { 'end' }
-sub ENTRY () { 'entry' }
-sub ENTRYCGET () { 'entrycget' }
-sub ENTRYCONFIGURE () { 'entryconfigure' }
-sub EVAL () { 'eval' }
-sub EXISTS () { 'exists' }
-sub EXPAND () { 'expand' }
-sub FILL () { 'fill' }
-sub FILLX () { 'fillx' }
-sub FILLY () { 'filly' }
-sub FIND () { 'find' }
-sub FIRST () { 'first' }
-sub FLASH () { 'flash' }
-sub FLAT () { 'flat' }
-sub FOCUS () { 'focus' }
-sub FOCUSMODEL () { 'focusmodel' }
-sub FOCUSNEXT () { 'focusnext' }
-sub FOCUSPREV () { 'focusprev' }
-sub FORGET () { 'forget' }
-sub FRACTION () { 'fraction' }
-sub FRAME () { 'frame' }
-sub FROM () { 'from' }
-sub GENERATE () { 'generate' }
-sub GEOMETRY () { 'geometry' }
-sub GEOMETRYINFO () { 'geometryinfo' }
-sub GET () { 'get' }
-sub GETTAGS () { 'gettags' }
-sub GRAVITY () { 'gravity' }
-sub GRAY () { 'gray' }
-sub GRID () { 'grid' }
-sub GROOVE () { 'groove' }
-sub GROUP () { 'group' }
-sub HANDLE () { 'handle' }
-sub HEAD () { 'head' }
-sub HEIGHT () { 'height' }
-sub HIDDEN () { 'hidden' }
-sub HIDE () { 'hide' }
-sub HORIZONTAL () { 'horizontal' }
-sub ICONBITMAP () { 'iconbitmap' }
-sub ICONIFY () { 'iconify' }
-sub ICONMASK () { 'iconmask' }
-sub ICONNAME () { 'iconname' }
-sub ICONPOSITION () { 'iconposition' }
-sub ICONWINDOW () { 'iconwindow' }
-sub ICURSOR () { 'icursor' }
-sub IDENTIFY () { 'identify' }
-sub IDLETASKS () { 'idletasks' }
-sub IGNORE () { 'ignore' }
-sub IMAGE () { 'image' }
-sub INCLUDES () { 'includes' }
-sub INCREASING () { 'increasing' }
-sub INDEX () { 'index' }
-sub INFO () { 'info' }
-sub INSERT () { 'insert' }
-sub INSIDE () { 'inside' }
-sub INTEGER () { 'integer' }
-sub INTERACTIVE () { 'interactive' }
-sub INVOKE () { 'invoke' }
-sub ISMWMRUNNING () { 'ismwmrunning' }
-sub ITEM () { 'item' }
-sub ITEMCGET () { 'itemcget' }
-sub ITEMCONFIGURE () { 'itemconfigure' }
-sub LAST () { 'last' }
-sub LEFT () { 'left' }
-sub LINE () { 'line' }
-sub LINECONFIGURE () { 'lineconfigure' }
-sub LINEEND () { 'lineend' }
-sub LINES () { 'lines' }
-sub LINESTART () { 'linestart' }
-sub LIST () { 'list' }
-sub LOCATION () { 'location' }
-sub LOWER () { 'lower' }
-sub MARK () { 'mark' }
-sub MAX () { 'max' }
-sub MAXSIZE () { 'maxsize' }
-sub MENUBAR () { 'menubar' }
-sub MINSIZE () { 'minsize' }
-sub MITER () { 'miter' }
-sub MONOCHROME () { 'monochrome' }
-sub MOVE () { 'move' }
-sub MOVETO () { 'moveto' }
-sub NAMES () { 'names' }
-sub NEAREST () { 'nearest' }
-sub NEW () { 'new' }
-sub NEXT () { 'next' }
-sub NEXTRANGE () { 'nextrange' }
-sub NONE () { 'none' }
-sub NORMAL () { 'normal' }
-sub NOW () { 'now' }
-sub OFFSPRINGS () { 'offsprings' }
-sub OUTSIDE () { 'outside' }
-sub OVERLAPPING () { 'overlapping' }
-sub OVERRIDEREDIRECT () { 'overrideredirect' }
-sub OWN () { 'own' }
-sub PADX () { 'padx' }
-sub PADY () { 'pady' }
-sub PAGECGET () { 'pagecget' }
-sub PAGECONFIGURE () { 'pageconfigure' }
-sub PAGES () { 'pages' }
-sub PARENT () { 'parent' }
-sub PASSIVE () { 'passive' }
-sub POSITION () { 'position' }
-sub POSITIONFROM () { 'positionfrom' }
-sub POST () { 'post' }
-sub POSTCASCADE () { 'postcascade' }
-sub POSTSCRIPT () { 'postscript' }
-sub PRESENT () { 'present' }
-sub PREV () { 'prev' }
-sub PREVIOUS () { 'previous' }
-sub PREVRANGE () { 'prevrange' }
-sub PROGRAM () { 'program' }
-sub PROJECTING () { 'projecting' }
-sub PROPAGATE () { 'propagate' }
-sub PROTOCOL () { 'protocol' }
-sub PUT () { 'put' }
-sub RADIOBUTTON () { 'radiobutton' }
-sub RAISE () { 'raise' }
-sub RAISED () { 'raised' }
-sub RANGE () { 'range' }
-sub RANGES () { 'ranges' }
-sub READ () { 'read' }
-sub READFILE () { 'readfile' }
-sub REAL () { 'real' }
-sub RECORD () { 'record' }
-sub REDITHER () { 'redither' }
-sub REFCOUNT () { 'refcount' }
-sub RELEASE () { 'release' }
-sub REMOVE () { 'remove' }
-sub RESIZABLE () { 'resizable' }
-sub RIDGE () { 'ridge' }
-sub RIGHT () { 'right' }
-sub ROOT () { 'root' }
-sub ROUND () { 'round' }
-sub ROW () { 'row' }
-sub ROWCONFIGURE () { 'rowconfigure' }
-sub ROWS () { 'rows' }
-sub SCALE () { 'scale' }
-sub SCAN () { 'scan' }
-sub SCROLL () { 'scroll' }
-sub SEARCH () { 'search' }
-sub SEE () { 'see' }
-sub SELECT () { 'select' }
-sub SELECTION () { 'selection' }
-sub SEPARATOR () { 'separator' }
-sub SET () { 'set' }
-sub SHOW () { 'show' }
-sub SIBLINGS () { 'siblings' }
-sub SIZE () { 'size' }
-sub SIZEFROM () { 'sizefrom' }
-sub SLAVES () { 'slaves' }
-sub SLIDER () { 'slider' }
-sub SOLID () { 'solid' }
-sub SPACE () { 'space' }
-sub STATE () { 'state' }
-sub STATUS () { 'status' }
-sub SUNKEN () { 'sunken' }
-sub TAG () { 'tag' }
-sub TAIL () { 'tail' }
-sub TEAROFF () { 'tearoff' }
-sub TEXT () { 'text' }
-sub TITLE () { 'title' }
-sub TO () { 'to' }
-sub TOGGLE () { 'toggle' }
-sub TOP () { 'top' }
-sub TRACING () { 'tracing' }
-sub TRANSIENT () { 'transient' }
-sub TRANSIENTFOR () { 'transientfor' }
-sub TYPE () { 'type' }
-sub TYPES () { 'types' }
-sub UNITS () { 'units' }
-sub UNPACK () { 'unpack' }
-sub UNPOST () { 'unpost' }
-sub UNSET () { 'unset' }
-sub UP () { 'up' }
-sub USER () { 'user' }
-sub VARIABLE () { 'variable' }
-sub VERTICAL () { 'vertical' }
-sub VISIBILITY () { 'visibility' }
-sub WIDTH () { 'width' }
-sub WINDOW () { 'window' }
-sub WITHDRAW () { 'withdraw' }
-sub WITHTAG () { 'withtag' }
-sub WORDEND () { 'wordend' }
-sub WORDSTART () { 'wordstart' }
-sub WRITE () { 'write' }
-sub XVIEW () { 'xview' }
-sub YPOSITION () { 'yposition' }
-sub YVIEW () { 'yview' }
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/Entry.pm b/Master/tlpkg/tlperl/lib/Tk/Entry.pm
deleted file mode 100644
index 51b3f0c6767..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Entry.pm
+++ /dev/null
@@ -1,615 +0,0 @@
-package Tk::Entry;
-
-# Converted from entry.tcl --
-#
-# This file defines the default bindings for Tk entry widgets.
-#
-# @(#) entry.tcl 1.22 94/12/17 16:05:14
-#
-# Copyright (c) 1992-1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-# Copyright (c) 1995-2003 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-
-use vars qw($VERSION);
-use strict;
-$VERSION = sprintf '4.%03d',q$Revision: #17 $ =~ /#(\d+)/;
-
-# modify it under the same terms as Perl itself, subject
-# to additional disclaimer in license.terms due to partial
-# derivation from Tk4.0 sources.
-
-use Tk::Widget ();
-use Tk::Clipboard ();
-use base qw(Tk::Clipboard Tk::Widget);
-
-import Tk qw(Ev $XS_VERSION);
-
-Construct Tk::Widget 'Entry';
-
-bootstrap Tk::Entry;
-
-sub Tk_cmd { \&Tk::entry }
-
-Tk::Methods('bbox','delete','get','icursor','index','insert','scan',
- 'selection','validate','xview');
-
-use Tk::Submethods ( 'selection' => [qw(clear range adjust present to from)],
- 'xview' => [qw(moveto scroll)],
- );
-
-sub wordstart
-{my ($w,$pos) = @_;
- my $string = $w->get;
- $pos = $w->index('insert')-1 unless(defined $pos);
- $string = substr($string,0,$pos);
- $string =~ s/\S*$//;
- length $string;
-}
-
-sub wordend
-{my ($w,$pos) = @_;
- my $string = $w->get;
- my $anc = length $string;
- $pos = $w->index('insert') unless(defined $pos);
- $string = substr($string,$pos);
- $string =~ s/^(?:((?=\s)\s*|(?=\S)\S*))//x;
- $anc - length($string);
-}
-
-sub deltainsert
-{
- my ($w,$d) = @_;
- return $w->index('insert')+$d;
-}
-
-#
-# Bind --
-# This procedure is invoked the first time the mouse enters an
-# entry widget or an entry widget receives the input focus. It creates
-# all of the class bindings for entries.
-#
-# Arguments:
-# event - Indicates which event caused the procedure to be invoked
-# (Enter or FocusIn). It is used so that we can carry out
-# the functions of that event in addition to setting up
-# bindings.
-sub ClassInit
-{
- my ($class,$mw) = @_;
-
- $class->SUPER::ClassInit($mw);
-
- # <<Cut>>, <<Copy>> and <<Paste>> defined in Tk::Clipboard
- $mw->bind($class,'<<Clear>>' => sub {
- my $w = shift;
- $w->delete("sel.first", "sel.last");
- });
- $mw->bind($class,'<<PasteSelection>>' => [sub {
- my($w, $x) = @_;
- # XXX logic in Tcl/Tk version screwed up?
- if (!$Tk::strictMotif && !$Tk::mouseMoved) {
- $w->Paste($x);
- }
- }, Ev('x')]);
-
- # Standard Motif bindings:
- # The <Escape> binding is different from the Tcl/Tk version:
- $mw->bind($class,'<Escape>','selectionClear');
-
- $mw->bind($class,'<1>',['Button1',Ev('x'),Ev('y')]);
- $mw->bind($class,'<ButtonRelease-1>',['Button1Release',Ev('x'),Ev('y')]);
- $mw->bind($class,'<B1-Motion>',['Motion',Ev('x'),Ev('y')]);
-
- $mw->bind($class,'<Double-1>',['MouseSelect',Ev('x'),'word','sel.first']);
- $mw->bind($class,'<Double-Shift-1>',['MouseSelect',Ev('x'),'word']);
- $mw->bind($class,'<Triple-1>',['MouseSelect',Ev('x'),'line',0]);
- $mw->bind($class,'<Triple-Shift-1>',['MouseSelect',Ev('x'),'line']);
-
- $mw->bind($class,'<Shift-1>','Shift_1');
-
-
- $mw->bind($class,'<B1-Leave>',['AutoScan',Ev('x')]);
- $mw->bind($class,'<B1-Enter>','CancelRepeat');
- $mw->bind($class,'<Control-1>','Control_1');
- $mw->bind($class,'<Left>', ['SetCursor',Ev('deltainsert',-1)]);
- $mw->bind($class,'<Right>',['SetCursor',Ev('deltainsert',1)]);
- $mw->bind($class,'<Shift-Left>',['KeySelect',Ev('deltainsert',-1)]);
- $mw->bind($class,'<Shift-Right>',['KeySelect',Ev('deltainsert',1)]);
- $mw->bind($class,'<Control-Left>',['SetCursor',Ev(['wordstart'])]);
- $mw->bind($class,'<Control-Right>',['SetCursor',Ev(['wordend'])]);
- $mw->bind($class,'<Shift-Control-Left>',['KeySelect',Ev(['wordstart'])]);
- $mw->bind($class,'<Shift-Control-Right>',['KeySelect',Ev(['wordend'])]);
- $mw->bind($class,'<Home>',['SetCursor',0]);
- $mw->bind($class,'<Shift-Home>',['KeySelect',0]);
- $mw->bind($class,'<End>',['SetCursor','end']);
- $mw->bind($class,'<Shift-End>',['KeySelect','end']);
- $mw->bind($class,'<Delete>','Delete');
-
- $mw->bind($class,'<BackSpace>','Backspace');
-
- $mw->bind($class,'<Control-space>',['selectionFrom','insert']);
- $mw->bind($class,'<Select>',['selectionFrom','insert']);
- $mw->bind($class,'<Control-Shift-space>',['selectionAdjust','insert']);
- $mw->bind($class,'<Shift-Select>',['selectionAdjust','insert']);
-
- $mw->bind($class,'<Control-slash>',['selectionRange',0,'end']);
- $mw->bind($class,'<Control-backslash>','selectionClear');
-
- # $class->clipboardOperations($mw,qw[Copy Cut Paste]);
-
- $mw->bind($class,'<KeyPress>', ['Insert',Ev('A')]);
-
- # Ignore all Alt, Meta, and Control keypresses unless explicitly bound.
- # Otherwise, if a widget binding for one of these is defined, the
- # <KeyPress> class binding will also fire and insert the character,
- # which is wrong. Ditto for Return, and Tab.
-
- $mw->bind($class,'<Alt-KeyPress>' ,'NoOp');
- $mw->bind($class,'<Meta-KeyPress>' ,'NoOp');
- $mw->bind($class,'<Control-KeyPress>' ,'NoOp');
- $mw->bind($class,'<Return>' ,'NoOp');
- $mw->bind($class,'<KP_Enter>' ,'NoOp');
- $mw->bind($class,'<Tab>' ,'NoOp');
- if ($mw->windowingsystem =~ /^(?:classic|aqua)$/)
- {
- $mw->bind($class,'<Command-KeyPress>', 'NoOp');
- }
-
- # On Windows, paste is done using Shift-Insert. Shift-Insert already
- # generates the <<Paste>> event, so we don't need to do anything here.
- if ($Tk::platform ne 'MSWin32')
- {
- $mw->bind($class,'<Insert>','InsertSelection');
- }
-
- if (!$Tk::strictMotif)
- {
- # Additional emacs-like bindings:
- $mw->bind($class,'<Control-a>',['SetCursor',0]);
- $mw->bind($class,'<Control-b>',['SetCursor',Ev('deltainsert',-1)]);
- $mw->bind($class,'<Control-d>',['delete','insert']);
- $mw->bind($class,'<Control-e>',['SetCursor','end']);
- $mw->bind($class,'<Control-f>',['SetCursor',Ev('deltainsert',1)]);
- $mw->bind($class,'<Control-h>','Backspace');
- $mw->bind($class,'<Control-k>',['delete','insert','end']);
-
- $mw->bind($class,'<Control-t>','Transpose');
-
- # XXX The original Tcl/Tk bindings use NextWord/PreviousWord instead
- $mw->bind($class,'<Meta-b>',['SetCursor',Ev(['wordstart'])]);
- $mw->bind($class,'<Meta-d>',['delete','insert',Ev(['wordend'])]);
- $mw->bind($class,'<Meta-f>',['SetCursor',Ev(['wordend'])]);
- $mw->bind($class,'<Meta-BackSpace>',['delete',Ev(['wordstart']),'insert']);
- $mw->bind($class,'<Meta-Delete>',['delete',Ev(['wordstart']),'insert']);
-
- # A few additional bindings from John Ousterhout.
-# XXX conflicts with <<Copy>>: $mw->bind($class,'<Control-w>',['delete',Ev(['wordstart']),'insert']);
- $mw->bind($class,'<2>','Button_2');
- $mw->bind($class,'<B2-Motion>','B2_Motion');
-# XXX superseded by <<PasteSelection>>: $mw->bind($class,'<ButtonRelease-2>','ButtonRelease_2');
- }
- return $class;
-}
-
-
-sub Shift_1
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $Tk::selectMode = 'char';
- $w->selectionAdjust('@' . $Ev->x)
-}
-
-
-sub Control_1
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->icursor('@' . $Ev->x)
-}
-
-
-sub Delete
-{
- my $w = shift;
- if ($w->selectionPresent)
- {
- $w->deleteSelected
- }
- else
- {
- $w->delete('insert')
- }
-}
-
-
-sub InsertSelection
-{
- my $w = shift;
- eval {local $SIG{__DIE__}; $w->Insert($w->GetSelection)}
-}
-
-
-# Original is ::tk::EntryScanMark
-sub Button_2
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->scan('mark',$Ev->x);
- $Tk::x = $Ev->x;
- $Tk::y = $Ev->y;
- $Tk::mouseMoved = 0
-}
-
-
-# Original is ::tk::EntryScanDrag
-sub B2_Motion
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- # Make sure these exist, as some weird situations can trigger the
- # motion binding without the initial press. [Tcl/Tk Bug #220269]
- if (!defined $Tk::x) { $Tk::x = $Ev->x }
- if (abs(($Ev->x-$Tk::x)) > 2)
- {
- $Tk::mouseMoved = 1
- }
- $w->scan('dragto',$Ev->x)
-}
-
-
-# XXX Not needed anymore
-sub ButtonRelease_2
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- if (!$Tk::mouseMoved)
- {
- eval
- {local $SIG{__DIE__};
- $w->insert('insert',$w->SelectionGet);
- $w->SeeInsert;
- }
- }
-}
-
-sub Button1Release
-{
- shift->CancelRepeat;
-}
-
-# ::tk::EntryClosestGap --
-# Given x and y coordinates, this procedure finds the closest boundary
-# between characters to the given coordinates and returns the index
-# of the character just after the boundary.
-#
-# Arguments:
-# w - The entry window.
-# x - X-coordinate within the window.
-sub ClosestGap
-{
- my($w, $x) = @_;
- my $pos = $w->index('@'.$x);
- my @bbox = $w->bbox($pos);
- if ($x - $bbox[0] < $bbox[2] / 2)
- {
- return $pos;
- }
- $pos + 1;
-}
-
-# Button1 --
-# This procedure is invoked to handle button-1 presses in entry
-# widgets. It moves the insertion cursor, sets the selection anchor,
-# and claims the input focus.
-#
-# Arguments:
-# w - The entry window in which the button was pressed.
-# x - The x-coordinate of the button press.
-sub Button1
-{
- my $w = shift;
- my $x = shift;
- $Tk::selectMode = 'char';
- $Tk::mouseMoved = 0;
- $Tk::pressX = $x;
- $w->icursor($w->ClosestGap($x));
- $w->selectionFrom('insert');
- $w->selectionClear;
- if ($w->cget('-state') ne 'disabled')
- {
- $w->focus()
- }
-}
-
-sub Motion
-{
- my ($w,$x,$y) = @_;
- $Tk::x = $x; # XXX ?
- $w->MouseSelect($x);
-}
-
-# MouseSelect --
-# This procedure is invoked when dragging out a selection with
-# the mouse. Depending on the selection mode (character, word,
-# line) it selects in different-sized units. This procedure
-# ignores mouse motions initially until the mouse has moved from
-# one character to another or until there have been multiple clicks.
-#
-# Arguments:
-# w - The entry window in which the button was pressed.
-# x - The x-coordinate of the mouse.
-sub MouseSelect
-{
-
- my $w = shift;
- my $x = shift;
- return if UNIVERSAL::isa($w, 'Tk::Spinbox') and $w->{_element} ne 'entry';
- $Tk::selectMode = shift if (@_);
- my $cur = $w->index($w->ClosestGap($x));
- return unless defined $cur;
- my $anchor = $w->index('anchor');
- return unless defined $anchor;
- $Tk::pressX ||= $x; # XXX Better use "if !defined $Tk::pressX"?
- if (($cur != $anchor) || (abs($Tk::pressX - $x) >= 3))
- {
- $Tk::mouseMoved = 1
- }
- my $mode = $Tk::selectMode;
- return unless $mode;
- if ($mode eq 'char')
- {
- # The Tcl version uses selectionRange here XXX
- if ($Tk::mouseMoved)
- {
- if ($cur < $anchor)
- {
- $w->selectionTo($cur)
- }
- else
- {
- $w->selectionTo($cur+1)
- }
- }
- }
- elsif ($mode eq 'word')
- {
- # The Tcl version uses tcl_wordBreakBefore/After here XXX
- if ($cur < $w->index('anchor'))
- {
- $w->selectionRange($w->wordstart($cur),$w->wordend($anchor-1))
- }
- else
- {
- $w->selectionRange($w->wordstart($anchor),$w->wordend($cur))
- }
- }
- elsif ($mode eq 'line')
- {
- $w->selectionRange(0,'end')
- }
- if (@_)
- {
- my $ipos = shift;
- eval {local $SIG{__DIE__}; $w->icursor($ipos) };
- }
- $w->idletasks;
-}
-# ::tk::EntryPaste --
-# This procedure sets the insertion cursor to the current mouse position,
-# pastes the selection there, and sets the focus to the window.
-#
-# Arguments:
-# w - The entry window.
-# x - X position of the mouse.
-sub Paste
-{
- my($w, $x) = @_;
- $w->icursor($w->ClosestGap($x));
- eval { local $SIG{__DIE__};
- $w->insert("insert", $w->GetSelection);
- $w->SeeInsert; # Perl/Tk extension
- };
- if ($w->cget(-state) ne 'disabled')
- {
- $w->focus;
- }
-}
-# AutoScan --
-# This procedure is invoked when the mouse leaves an entry window
-# with button 1 down. It scrolls the window left or right,
-# depending on where the mouse is, and reschedules itself as an
-# 'after' command so that the window continues to scroll until the
-# mouse moves back into the window or the mouse button is released.
-#
-# Arguments:
-# w - The entry window.
-# x - The x-coordinate of the mouse when it left the window.
-sub AutoScan
-{
- my $w = shift;
- my $x = shift;
- return if !Tk::Exists($w);
- if ($x >= $w->width)
- {
- $w->xview('scroll',2,'units')
- }
- elsif ($x < 0)
- {
- $w->xview('scroll',-2,'units')
- }
- else
- {
- return;
- }
- $w->MouseSelect($x);
- $w->RepeatId($w->after(50,['AutoScan',$w,$x]))
-}
-# KeySelect
-# This procedure is invoked when stroking out selections using the
-# keyboard. It moves the cursor to a new position, then extends
-# the selection to that position.
-#
-# Arguments:
-# w - The entry window.
-# new - A new position for the insertion cursor (the cursor hasn't
-# actually been moved to this position yet).
-sub KeySelect
-{
- my $w = shift;
- my $new = shift;
- if (!$w->selectionPresent)
- {
- $w->selectionFrom('insert');
- $w->selectionTo($new)
- }
- else
- {
- $w->selectionAdjust($new)
- }
- $w->icursor($new);
- $w->SeeInsert;
-}
-# Insert --
-# Insert a string into an entry at the point of the insertion cursor.
-# If there is a selection in the entry, and it covers the point of the
-# insertion cursor, then delete the selection before inserting.
-#
-# Arguments:
-# w - The entry window in which to insert the string
-# s - The string to insert (usually just a single character)
-sub Insert
-{
- my $w = shift;
- my $s = shift;
- return unless (defined $s && $s ne '');
- eval
- {local $SIG{__DIE__};
- my $insert = $w->index('insert');
- if ($w->index('sel.first') <= $insert && $w->index('sel.last') >= $insert)
- {
- $w->deleteSelected
- }
- };
- $w->insert('insert',$s);
- $w->SeeInsert
-}
-# Backspace --
-# Backspace over the character just before the insertion cursor.
-#
-# Arguments:
-# w - The entry window in which to backspace.
-sub Backspace
-{
- my $w = shift;
- if ($w->selectionPresent)
- {
- $w->deleteSelected
- }
- else
- {
- my $x = $w->index('insert')-1;
- $w->delete($x) if ($x >= 0);
- # XXX Missing repositioning part from Tcl/Tk source
- }
-}
-# SeeInsert
-# Make sure that the insertion cursor is visible in the entry window.
-# If not, adjust the view so that it is.
-#
-# Arguments:
-# w - The entry window.
-sub SeeInsert
-{
- my $w = shift;
- my $c = $w->index('insert');
-#
-# Probably a bug in your version of tcl/tk (I've not this problem
-# when I test Entry in the widget demo for tcl/tk)
-# index('\@0') give always 0. Consequence :
-# if you make <Control-E> or <Control-F> view is adapted
-# but with <Control-A> or <Control-B> view is not adapted
-#
- my $left = $w->index('@0');
- if ($left > $c)
- {
- $w->xview($c);
- return;
- }
- my $x = $w->width;
- while ($w->index('@' . $x) <= $c && $left < $c)
- {
- $left += 1;
- $w->xview($left)
- }
-}
-# SetCursor
-# Move the insertion cursor to a given position in an entry. Also
-# clears the selection, if there is one in the entry, and makes sure
-# that the insertion cursor is visible.
-#
-# Arguments:
-# w - The entry window.
-# pos - The desired new position for the cursor in the window.
-sub SetCursor
-{
- my $w = shift;
- my $pos = shift;
- $w->icursor($pos);
- $w->selectionClear;
- $w->SeeInsert;
-}
-# Transpose
-# This procedure implements the 'transpose' function for entry widgets.
-# It tranposes the characters on either side of the insertion cursor,
-# unless the cursor is at the end of the line. In this case it
-# transposes the two characters to the left of the cursor. In either
-# case, the cursor ends up to the right of the transposed characters.
-#
-# Arguments:
-# w - The entry window.
-sub Transpose
-{
- my $w = shift;
- my $i = $w->index('insert');
- $i++ if ($i < $w->index('end'));
- my $first = $i-2;
- return if ($first < 0);
- my $str = $w->get;
- my $new = substr($str,$i-1,1) . substr($str,$first,1);
- $w->delete($first,$i);
- $w->insert('insert',$new);
- $w->SeeInsert;
-}
-
-sub tabFocus
-{
- my $w = shift;
- $w->selectionRange(0,'end');
- $w->icursor('end');
- $w->SUPER::tabFocus;
-}
-
-# ::tk::EntryGetSelection --
-#
-# Returns the selected text of the entry with respect to the -show option.
-#
-# Arguments:
-# w - The entry window from which the text to get
-sub getSelected
-{
- my $w = shift;
- return undef unless $w->selectionPresent;
- my $str = $w->get;
- my $show = $w->cget('-show');
- $str = $show x length($str) if (defined $show);
- my $s = $w->index('sel.first');
- my $e = $w->index('sel.last');
- return substr($str,$s,$e-$s);
-}
-
-
-1;
-
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Tk/ErrorDialog.pm b/Master/tlpkg/tlperl/lib/Tk/ErrorDialog.pm
deleted file mode 100644
index 19377eaeca4..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/ErrorDialog.pm
+++ /dev/null
@@ -1,125 +0,0 @@
-package Tk::ErrorDialog;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #7 $ =~ /\D(\d+)\s*$/;
-
-use Tk ();
-require Tk::Dialog;
-use base qw(Tk::Toplevel);
-
-
-# ErrorDialog - a translation of bgerror() from Tcl/Tk to Perl/Tk.
-#
-# Currently TkPerl background errors are sent to stdout/stderr; use this
-# module if you want them in a window. You can also "roll your own" by
-# supplying the routine Tk::Error.
-
-use strict;
-
-Construct Tk::Widget 'ErrorDialog';
-
-my %options = ( -buttons => ['OK', 'Skip Messages', 'Stack trace'],
- -bitmap => 'error'
- );
-my $ED_OBJECT;
-
-sub import
-{
- my $class = shift;
- while (@_)
- {
- my $key = shift;
- my $val = shift;
- $options{$key} = $val;
- }
-}
-
-sub Populate {
-
- # ErrorDialog constructor. Uses `new' method from base class
- # to create object container then creates the dialog toplevel and the
- # traceback toplevel.
-
- my($cw, $args) = @_;
-
- my $dr = $cw->Dialog(
- -title => 'Error in '.$cw->MainWindow->name,
- -text => 'on-the-fly-text',
- -bitmap => $options{'-bitmap'},
- -buttons => $options{'-buttons'},
- );
- $cw->minsize(1, 1);
- $cw->title('Stack Trace for Error');
- $cw->iconname('Stack Trace');
- my $t_ok = $cw->Button(
- -text => 'OK',
- -command => [
- sub {
- shift->withdraw;
- }, $cw,
- ]
- );
- my $t_text = $cw->Text(
- -relief => 'sunken',
- -bd => 2,
- -setgrid => 'true',
- -width => 60,
- -height => 20,
- );
- my $t_scroll = $cw->Scrollbar(
- -relief => 'sunken',
- -command => ['yview', $t_text],
- );
- $t_text->configure(-yscrollcommand => ['set', $t_scroll]);
- $t_ok->pack(-side => 'bottom', -padx => '3m', -pady => '2m');
- $t_scroll->pack(-side => 'right', -fill => 'y');
- $t_text->pack(-side => 'left', -expand => 'yes', -fill => 'both');
- $cw->withdraw;
-
- $cw->Advertise(error_dialog => $dr); # advertise dialog widget
- $cw->Advertise(text => $t_text); # advertise text widget
- $cw->ConfigSpecs(-cleanupcode => [PASSIVE => undef, undef, undef],
- -appendtraceback => [ PASSIVE => undef, undef, 1 ]);
- $ED_OBJECT = $cw;
- $cw->protocol('WM_DELETE_WINDOW' => sub {$cw->withdraw});
- return $cw;
-
-} # end Populate
-
-sub Tk::Error {
-
- # Post a dialog box with the error message and give the user a chance
- # to see a more detailed stack trace.
-
- my($w, $error, @msgs) = @_;
-
- my $grab = $w->grab('current');
- $grab->Unbusy if (defined $grab);
-
- $w->ErrorDialog if not defined $ED_OBJECT;
-
- my($d, $t) = ($ED_OBJECT->Subwidget('error_dialog'), $ED_OBJECT->Subwidget('text'));
-# chop $error;
- $d->configure(-text => "Error: $error");
- $d->bell;
- my $ans = $d->Show;
-
- $t->delete('0.0', 'end') if not $ED_OBJECT->{'-appendtraceback'};
- $t->insert('end', "\n");
- $t->mark('set', 'ltb', 'end');
- $t->insert('end', "--- Begin Traceback ---\n$error\n");
- my $msg;
- for $msg (@msgs) {
- $t->insert('end', "$msg\n");
- }
- $t->yview('ltb');
-
- $ED_OBJECT->deiconify if ($ans =~ /trace/i);
-
- my $c = $ED_OBJECT->{Configure}{'-cleanupcode'};
- &$c if defined $c; # execute any cleanup code if it was defined
- $w->break if ($ans =~ /skip/i);
-
-} # end Tk::Error
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/Event.pm b/Master/tlpkg/tlperl/lib/Tk/Event.pm
deleted file mode 100644
index cecd57c54ae..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Event.pm
+++ /dev/null
@@ -1,13 +0,0 @@
-package Tk::Event;
-use vars qw($VERSION $XS_VERSION @EXPORT_OK);
-END { CleanupGlue() }
-$VERSION = sprintf '4.%03d', q$Revision: #15 $ =~ /\D(\d+)\s*$/;
-$XS_VERSION = '804.027';
-use base qw(Exporter);
-use XSLoader;
-@EXPORT_OK = qw($XS_VERSION DONT_WAIT WINDOW_EVENTS FILE_EVENTS
- TIMER_EVENTS IDLE_EVENTS ALL_EVENTS);
-XSLoader::load 'Tk::Event',$XS_VERSION;
-require Tk::Event::IO;
-1;
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Tk/Event/IO.pm b/Master/tlpkg/tlperl/lib/Tk/Event/IO.pm
deleted file mode 100644
index 10b47e246ff..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Event/IO.pm
+++ /dev/null
@@ -1,132 +0,0 @@
-package Tk::Event::IO;
-use strict;
-use Carp;
-
-use vars qw($VERSION @EXPORT_OK);
-$VERSION = sprintf '4.%03d', q$Revision: #8 $ =~ /\D(\d+)\s*$/;
-
-use base qw(Exporter);
-use Symbol ();
-
-@EXPORT_OK = qw(READABLE WRITABLE);
-
-sub PrintArgs
-{
- my $func = (caller(1))[3];
- print "$func(",join(',',@_),")\n";
-}
-
-sub PRINT
-{
- my $obj = shift;
- $obj->wait(WRITABLE);
- my $h = $obj->handle;
- return print $h @_;
-}
-
-sub PRINTF
-{
- my $obj = shift;
- $obj->wait(WRITABLE);
- my $h = $obj->handle;
- return printf $h @_;
-}
-
-sub WRITE
-{
- my $obj = $_[0];
- $obj->wait(WRITABLE);
- return syswrite($obj->handle,$_[1],$_[2]);
-}
-
-my $depth = 0;
-sub READLINE
-{
- my $obj = shift;
- $obj->wait(READABLE);
- my $h = $obj->handle;
- my $w = <$h>;
- return $w;
-}
-
-sub READ
-{
- my $obj = $_[0];
- $obj->wait(READABLE);
- my $h = $obj->handle;
- return sysread($h,$_[1],$_[2],defined $_[3] ? $_[3] : 0);
-}
-
-sub GETC
-{
- my $obj = $_[0];
- $obj->wait(READABLE);
- my $h = $obj->handle;
- return getc($h);
-}
-
-sub CLOSE
-{
- my $obj = shift;
- $obj->unwatch;
- my $h = $obj->handle;
- return close($h);
-}
-
-sub EOF
-{
- my $obj = shift;
- my $h = $obj->handle;
- return eof($h);
-}
-
-sub FILENO
-{
- my $obj = shift;
- my $h = $obj->handle;
- return fileno($h);
-}
-
-sub imode
-{
- my $mode = shift;
- my $imode = ${{'readable' => READABLE(),
- 'writable' => WRITABLE()}}{$mode};
- croak("Invalid handler type '$mode'") unless (defined $imode);
- return $imode;
-}
-
-sub fileevent
-{
- my ($widget,$file,$mode,$cb) = @_;
- my $imode = imode($mode);
- unless (ref $file)
- {
- no strict 'refs';
- $file = Symbol::qualify($file,(caller)[0]);
- $file = \*{$file};
- }
- my $obj = tied(*$file);
- unless ($obj && $obj->isa('Tk::Event::IO'))
- {
- $obj = tie *$file,'Tk::Event::IO', $file;
- }
- if (@_ == 3)
- {
- # query return the handler
- return $obj->handler($imode);
- }
- else
- {
- # set the handler
- my $h = $obj->handler($imode,$cb);
- undef $obj; # Prevent warnings about untie with ref to object
- unless ($h)
- {
- untie *$file;
- }
- }
-}
-
-1;
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Tk/FBox.pm b/Master/tlpkg/tlperl/lib/Tk/FBox.pm
deleted file mode 100644
index fed7501aea4..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/FBox.pm
+++ /dev/null
@@ -1,1043 +0,0 @@
-# -*- perl -*-
-#
-# tkfbox.tcl --
-#
-# Implements the "TK" standard file selection dialog box. This
-# dialog box is used on the Unix platforms whenever the tk_strictMotif
-# flag is not set.
-#
-# The "TK" standard file selection dialog box is similar to the
-# file selection dialog box on Win95(TM). The user can navigate
-# the directories by clicking on the folder icons or by
-# selecting the "Directory" option menu. The user can select
-# files by clicking on the file icons or by entering a filename
-# in the "Filename:" entry.
-#
-# Copyright (c) 1994-1996 Sun Microsystems, Inc.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# Translated to perl/Tk by Slaven Rezic <slaven@rezic.de>.
-#
-
-#----------------------------------------------------------------------
-#
-# F I L E D I A L O G
-#
-#----------------------------------------------------------------------
-# tkFDialog --
-#
-# Implements the TK file selection dialog. This dialog is used when
-# the tk_strictMotif flag is set to false. This procedure shouldn't
-# be called directly. Call tk_getOpenFile or tk_getSaveFile instead.
-#
-
-package Tk::FBox;
-require Tk::Toplevel;
-
-use strict;
-use vars qw($VERSION $updirImage $folderImage $fileImage);
-
-$VERSION = sprintf '4.%03d', q$Revision: #18 $ =~ /\D(\d+)\s*$/;
-
-use base qw(Tk::Toplevel);
-
-Construct Tk::Widget 'FBox';
-
-sub import {
- if (defined $_[1] and $_[1] eq 'as_default') {
- local $^W = 0;
- package Tk;
- if ($Tk::VERSION < 804) {
- *FDialog = \&Tk::FBox::FDialog;
- *MotifFDialog = \&Tk::FBox::FDialog;
- } else {
- *tk_getOpenFile = sub {
- Tk::FBox::FDialog("tk_getOpenFile", @_);
- };
- *tk_getSaveFile = sub {
- Tk::FBox::FDialog("tk_getSaveFile", @_);
- };
- }
- }
-}
-
-# Note that -sortcmd is experimental and the interface is likely to change.
-# Using -sortcmd is really strange :-(
-# $top->getOpenFile(-sortcmd => sub { package Tk::FBox; uc $b cmp uc $a});
-# or, un-perlish, but useable (now activated in code):
-# $top->getOpenFile(-sortcmd => sub { uc $_[1] cmp uc $_[0]});
-
-sub Populate {
- my($w, $args) = @_;
-
- require Tk::IconList;
- require File::Basename;
- require Cwd;
-
- $w->SUPER::Populate($args);
-
- # f1: the frame with the directory option menu
- my $f1 = $w->Frame;
- my $lab = $f1->Label(-text => 'Directory:', -underline => 0);
- $w->{'dirMenu'} = my $dirMenu =
- $f1->Optionmenu(-variable => \$w->{'selectPath'},
- -textvariable => \$w->{'selectPath'},
- -command => ['SetPath', $w]);
- my $upBtn = $f1->Button;
- if (!defined $updirImage->{$w->MainWindow}) {
- $updirImage->{$w->MainWindow} = $w->Bitmap(-data => <<EOF);
-#define updir_width 28
-#define updir_height 16
-static char updir_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x40, 0x20, 0x00, 0x00,
- 0x20, 0x40, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x01, 0x10, 0x00, 0x00, 0x01,
- 0x10, 0x02, 0x00, 0x01, 0x10, 0x07, 0x00, 0x01, 0x90, 0x0f, 0x00, 0x01,
- 0x10, 0x02, 0x00, 0x01, 0x10, 0x02, 0x00, 0x01, 0x10, 0x02, 0x00, 0x01,
- 0x10, 0xfe, 0x07, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01,
- 0xf0, 0xff, 0xff, 0x01};
-EOF
- }
- $upBtn->configure(-image => $updirImage->{$w->MainWindow});
- $dirMenu->configure(-takefocus => 1, -highlightthickness => 2);
- $upBtn->pack(-side => 'right', -padx => 4, -fill => 'both');
- $lab->pack(-side => 'left', -padx => 4, -fill => 'both');
- $dirMenu->pack(-expand => 'yes', -fill => 'both', -padx => 4);
-
- $w->{'icons'} = my $icons =
- $w->IconList(-command => ['OkCmd', $w, 'iconlist'],
- );
- $icons->bind('<<ListboxSelect>>' => [$w, 'ListBrowse']);
-
- # f2: the frame with the OK button and the "file name" field
- my $f2 = $w->Frame(-bd => 0);
-#XXX File name => File names if multiple
- my $f2_lab = $f2->Label(-text => 'File name:', -anchor => 'e',
- -width => 14, -underline => 5, -pady => 0);
- $w->{'ent'} = my $ent = $f2->Entry;
-
- # The font to use for the icons. The default Canvas font on Unix
- # is just deviant.
-# $w->{'icons'}{'font'} = $ent->cget(-font);
- $w->{'icons'}->configure(-font => $ent->cget(-font));
-
- # f3: the frame with the cancel button and the file types field
- my $f3 = $w->Frame(-bd => 0);
-
- # The "File of types:" label needs to be grayed-out when
- # -filetypes are not specified. The label widget does not support
- # grayed-out text on monochrome displays. Therefore, we have to
- # use a button widget to emulate a label widget (by setting its
- # bindtags)
- $w->{'typeMenuLab'} = my $typeMenuLab = $f3->Button
- (-text => 'Files of type:',
- -anchor => 'e',
- -width => 14,
- -underline => 9,
- -bd => $f2_lab->cget(-bd),
- -highlightthickness => $f2_lab->cget(-highlightthickness),
- -relief => $f2_lab->cget(-relief),
- -padx => $f2_lab->cget(-padx),
- -pady => $f2_lab->cget(-pady),
- -takefocus => 0,
- );
- $typeMenuLab->bindtags([$typeMenuLab, 'Label',
- $typeMenuLab->toplevel, 'all']);
- $w->{'typeMenuBtn'} = my $typeMenuBtn =
- $f3->Menubutton(-indicatoron => 1, -tearoff => 0);
- $typeMenuBtn->configure(-takefocus => 1,
- -highlightthickness => 2,
- -relief => 'raised',
- -bd => 2,
- -anchor => 'w',
- );
-
- # the okBtn is created after the typeMenu so that the keyboard traversal
- # is in the right order
- $w->{'okBtn'} = my $okBtn = $f2->Button
- (-text => 'OK',
- -underline => 0,
- -width => 6,
- -default => 'active',
- -pady => 3,
- );
- my $cancelBtn = $f3->Button
- (-text => 'Cancel',
- -underline => 0,
- -width => 6,
- -default => 'normal',
- -pady => 3,
- );
-
- # pack the widgets in f2 and f3
- $okBtn->pack(-side => 'right', -padx => 4, -anchor => 'e');
- $f2_lab->pack(-side => 'left', -padx => 4);
- $ent->pack(-expand => 'yes', -fill => 'x', -padx => 2, -pady => 0);
- $cancelBtn->pack(-side => 'right', -padx => 4, -anchor => 'w');
- $typeMenuLab->pack(-side => 'left', -padx => 4);
- $typeMenuBtn->pack(-expand => 'yes', -fill => 'x', -side => 'right');
-
- # Pack all the frames together. We are done with widget construction.
- $f1->pack(-side => 'top', -fill => 'x', -pady => 4);
- $f3->pack(-side => 'bottom', -fill => 'x');
- $f2->pack(-side => 'bottom', -fill => 'x');
- $icons->pack(-expand => 'yes', -fill => 'both', -padx => 4, -pady => 1);
-
- # Set up the event handlers
- $ent->bind('<Return>',[$w,'ActivateEnt']);
- $upBtn->configure(-command => ['UpDirCmd', $w]);
- $okBtn->configure(-command => ['OkCmd', $w]);
- $cancelBtn->configure(-command, ['CancelCmd', $w]);
-
- $w->bind('<Alt-d>',[$dirMenu,'focus']);
- $w->bind('<Alt-t>',sub {
- if ($typeMenuBtn->cget(-state) eq 'normal') {
- $typeMenuBtn->focus;
- } });
- $w->bind('<Alt-n>',[$ent,'focus']);
- $w->bind('<KeyPress-Escape>',[$cancelBtn,'invoke']);
- $w->bind('<Alt-c>',[$cancelBtn,'invoke']);
- $w->bind('<Alt-o>',['InvokeBtn','Open']);
- $w->bind('<Alt-s>',['InvokeBtn','Save']);
- $w->protocol('WM_DELETE_WINDOW', ['CancelCmd', $w]);
- $w->OnDestroy(['CancelCmd', $w]);
-
- # Build the focus group for all the entries
- $w->FG_Create;
- $w->FG_BindIn($ent, ['EntFocusIn', $w]);
- $w->FG_BindOut($ent, ['EntFocusOut', $w]);
-
- $w->SetPath(_cwd());
-
- $w->ConfigSpecs(-defaultextension => ['PASSIVE', undef, undef, undef],
- -filetypes => ['PASSIVE', undef, undef, undef],
- -initialdir => ['PASSIVE', undef, undef, undef],
- -initialfile => ['PASSIVE', undef, undef, undef],
-# -sortcmd => ['PASSIVE', undef, undef, sub { lc($a) cmp lc($b) }],
- -sortcmd => ['PASSIVE', undef, undef, sub { lc($_[0]) cmp lc($_[1]) }],
- -title => ['PASSIVE', undef, undef, undef],
- -type => ['PASSIVE', undef, undef, 'open'],
- -filter => ['PASSIVE', undef, undef, '*'],
- -force => ['PASSIVE', undef, undef, 0],
- -multiple => ['PASSIVE', undef, undef, 0],
- 'DEFAULT' => [$icons],
- );
- # So-far-failed attempt to break reference loops ...
- $w->_OnDestroy(qw(dirMenu icons typeMenuLab typeMenuBtn okBtn ent updateId));
- $w;
-}
-
-# -initialdir fix with ResolveFile
-sub Show {
- my $w = shift;
-
- $w->configure(@_);
-
- # Dialog boxes should be transient with respect to their parent,
- # so that they will always stay on top of their parent window. However,
- # some window managers will create the window as withdrawn if the parent
- # window is withdrawn or iconified. Combined with the grab we put on the
- # window, this can hang the entire application. Therefore we only make
- # the dialog transient if the parent is viewable.
-
- if (Tk::Exists($w->Parent) && $w->Parent->viewable) {
- $w->transient($w->Parent);
- }
-
- # set the default directory and selection according to the -initial
- # settings
- {
- my $initialdir = $w->cget(-initialdir);
- if (defined $initialdir) {
- my ($flag, $path, $file) = ResolveFile($initialdir, 'junk');
- if ($flag eq 'OK' or $flag eq 'FILE') {
- $w->{'selectPath'} = $path;
- } else {
- $w->Error("\"$initialdir\" is not a valid directory");
- }
- }
- $w->{'selectFile'} = $w->cget(-initialfile);
- }
-
- # Set -multiple to a one or zero value (not other boolean types
- # like "yes") so we can use it in tests more easily.
- if ($w->cget('-type') ne 'open') {
- $w->configure(-multiple => 0);
- } else {
- $w->configure(-multiple => !!$w->cget('-multiple'));
- }
- $w->{'icons'}->configure(-multiple => $w->cget('-multiple'));
-
- # Initialize the file types menu
- my $typeMenuBtn = $w->{'typeMenuBtn'};
- my $typeMenuLab = $w->{'typeMenuLab'};
- if (defined $w->cget('-filetypes')) {
- my(@filetypes) = GetFileTypes($w->cget('-filetypes'));
- my $typeMenu = $typeMenuBtn->cget(-menu);
- $typeMenu->delete(0, 'end');
- foreach my $ft (@filetypes) {
- my $title = $ft->[0];
- my $filter = join(' ', @{ $ft->[1] });
- $typeMenuBtn->command
- (-label => $title,
- -command => ['SetFilter', $w, $title, $filter],
- );
- }
- $w->SetFilter($filetypes[0]->[0], join(' ', @{ $filetypes[0]->[1] }));
- $typeMenuBtn->configure(-state => 'normal');
- $typeMenuLab->configure(-state => 'normal');
- } else {
-#XXX $w->configure(-filter => '*');
- $typeMenuBtn->configure(-state => 'disabled',
- -takefocus => 0);
- $typeMenuLab->configure(-state => 'disabled');
- }
- $w->UpdateWhenIdle;
-
- {
- my $title = $w->cget(-title);
- if (!defined $title) {
- my $type = $w->cget(-type);
- $title = ($type eq 'dir') ? 'Choose Directory'
- : ($type eq 'save') ? 'Save As' : 'Open';
- }
- $w->title($title);
- }
-
- # Withdraw the window, then update all the geometry information
- # so we know how big it wants to be, then center the window in the
- # display and de-iconify it.
- $w->withdraw;
- $w->idletasks;
- if (0)
- {
- #XXX use Tk::Wm::Popup? or Tk::PlaceWindow?
- my $x = int($w->screenwidth / 2 - $w->reqwidth / 2 - $w->parent->vrootx);
- my $y = int($w->screenheight / 2 - $w->reqheight / 2 - $w->parent->vrooty);
- $w->geometry("+$x+$y");
- $w->deiconify;
- }
- else
- {
- $w->Popup;
- }
-
- # Set a grab and claim the focus too.
-#XXX use Tk::setFocusGrab when it's available
- my $oldFocus = $w->focusCurrent;
- my $oldGrab = $w->grabCurrent;
- my $grabStatus = $oldGrab->grabStatus if ($oldGrab);
- $w->grab;
- my $ent = $w->{'ent'};
- $ent->focus;
- $ent->delete(0, 'end');
- if (defined $w->{'selectFile'} && $w->{'selectFile'} ne '') {
- $ent->insert(0, $w->{'selectFile'});
- $ent->selectionRange(0,'end');
- $ent->icursor('end');
- }
-
- # 8. Wait for the user to respond, then restore the focus and
- # return the index of the selected button. Restore the focus
- # before deleting the window, since otherwise the window manager
- # may take the focus away so we can't redirect it. Finally,
- # restore any grab that was in effect.
- $w->waitVariable(\$w->{'selectFilePath'});
- eval {
- $oldFocus->focus if $oldFocus;
- };
- if (Tk::Exists($w)) { # widget still exists
- $w->grabRelease;
- $w->withdraw;
- }
- if (Tk::Exists($oldGrab) && $oldGrab->viewable) {
- if ($grabStatus eq 'global') {
- $oldGrab->grabGlobal;
- } else {
- $oldGrab->grab;
- }
- }
- return $w->{'selectFilePath'};
-}
-
-# tkFDialog_UpdateWhenIdle --
-#
-# Creates an idle event handler which updates the dialog in idle
-# time. This is important because loading the directory may take a long
-# time and we don't want to load the same directory for multiple times
-# due to multiple concurrent events.
-#
-sub UpdateWhenIdle {
- my $w = shift;
- if (exists $w->{'updateId'}) {
- return;
- } else {
- $w->{'updateId'} = $w->after('idle', [$w, 'Update']);
- }
-}
-
-# tkFDialog_Update --
-#
-# Loads the files and directories into the IconList widget. Also
-# sets up the directory option menu for quick access to parent
-# directories.
-#
-sub Update {
- my $w = shift;
- my $dataName = $w->name;
-
- # This proc may be called within an idle handler. Make sure that the
- # window has not been destroyed before this proc is called
- if (!Tk::Exists($w) || $w->class ne 'FBox') {
- return;
- } else {
- delete $w->{'updateId'};
- }
- unless (defined $folderImage->{$w->MainWindow}) {
- require Tk::Pixmap;
- $folderImage->{$w->MainWindow} = $w->Pixmap(-file => Tk->findINC('folder.xpm'));
- $fileImage->{$w->MainWindow} = $w->Pixmap(-file => Tk->findINC('file.xpm'));
- }
- my $folder = $folderImage->{$w->MainWindow};
- my $file = $fileImage->{$w->MainWindow};
- my $appPWD = _cwd();
- if (!ext_chdir($w->{'selectPath'})) {
- # We cannot change directory to $data(selectPath). $data(selectPath)
- # should have been checked before tkFDialog_Update is called, so
- # we normally won't come to here. Anyways, give an error and abort
- # action.
- $w->messageBox(-type => 'OK',
- -message => 'Cannot change to the directory "' .
- $w->{'selectPath'} . "\".\nPermission denied.",
- -icon => 'warning',
- );
- ext_chdir($appPWD);
- return;
- }
-
- # Turn on the busy cursor. BUG?? We haven't disabled X events, though,
- # so the user may still click and cause havoc ...
- my $ent = $w->{'ent'};
- my $entCursor = $ent->cget(-cursor);
- my $dlgCursor = $w->cget(-cursor);
- $ent->configure(-cursor => 'watch');
- $w->configure(-cursor => 'watch');
- $w->idletasks;
- my $icons = $w->{'icons'};
- $icons->DeleteAll;
-
- # Make the dir & file list
- my $cwd = _cwd();
- local *FDIR;
- if (opendir(FDIR, $cwd)) {
- my @files;
-# my $sortcmd = $w->cget(-sortcmd);
- my $sortcmd = sub { $w->cget(-sortcmd)->($a,$b) };
- my $flt = $w->cget(-filter);
- my $fltcb;
- if (ref $flt eq 'CODE') {
- $fltcb = $flt;
- } else {
- $flt = _rx_to_glob($flt);
- }
- my $type_dir = $w->cget(-type) eq 'dir';
- foreach my $f (sort $sortcmd readdir(FDIR)) {
- next if $f eq '.' or $f eq '..';
- next if $type_dir && ! -d "$cwd/$f"; # XXX use File::Spec?
- if ($fltcb) {
- next if !$fltcb->($w, $f, $cwd);
- } else {
- next if -f $f && $f !~ m!$flt!;
- }
- if (-d $f) {
- $icons->Add($folder, $f);
- } else {
- push @files, $f;
- }
- }
- closedir(FDIR);
- $icons->Add($file, @files);
- }
-
- $icons->Arrange;
-
- # Update the Directory: option menu
- my @list;
- my $dir = '';
- foreach my $subdir (TclFileSplit($w->{'selectPath'})) {
- $dir = TclFileJoin($dir, $subdir);
- push @list, $dir;
- }
- my $dirMenu = $w->{'dirMenu'};
- $dirMenu->configure(-options => \@list);
-
- # Restore the PWD to the application's PWD
- ext_chdir($appPWD);
-
- # Restore the Save label
- if ($w->cget(-type) eq 'save') {
- $w->{'okBtn'}->configure(-text => 'Save');
- }
-
- # turn off the busy cursor.
- $ent->configure(-cursor => $entCursor);
- $w->configure(-cursor => $dlgCursor);
-}
-
-# tkFDialog_SetPathSilently --
-#
-# Sets data(selectPath) without invoking the trace procedure
-#
-sub SetPathSilently {
- my($w, $path) = @_;
-
- $w->{'selectPath'} = $path;
-}
-
-# This proc gets called whenever data(selectPath) is set
-#
-sub SetPath {
- my $w = shift;
- $w->{'selectPath'} = $_[0] if @_;
- $w->UpdateWhenIdle;
-}
-
-# This proc gets called whenever data(filter) is set
-#
-#XXX here's much more code in the tcl version ... check it out
-sub SetFilter {
- my($w, $title, $filter) = @_;
- $w->configure(-filter => $filter);
- $w->{'typeMenuBtn'}->configure(-text => $title,
- -indicatoron => 1);
- $w->{'icons'}->Subwidget('sbar')->set(0.0, 0.0);
- $w->UpdateWhenIdle;
-}
-
-# tkFDialogResolveFile --
-#
-# Interpret the user's text input in a file selection dialog.
-# Performs:
-#
-# (1) ~ substitution
-# (2) resolve all instances of . and ..
-# (3) check for non-existent files/directories
-# (4) check for chdir permissions
-#
-# Arguments:
-# context: the current directory you are in
-# text: the text entered by the user
-# defaultext: the default extension to add to files with no extension
-#
-# Return value:
-# [list $flag $directory $file]
-#
-# flag = OK : valid input
-# = PATTERN : valid directory/pattern
-# = PATH : the directory does not exist
-# = FILE : the directory exists but the file doesn't
-# exist
-# = CHDIR : Cannot change to the directory
-# = ERROR : Invalid entry
-#
-# directory : valid only if flag = OK or PATTERN or FILE
-# file : valid only if flag = OK or PATTERN
-#
-# directory may not be the same as context, because text may contain
-# a subdirectory name
-#
-sub ResolveFile {
- my($context, $text, $defaultext) = @_;
- my $appPWD = _cwd();
- my $path = JoinFile($context, $text);
- # If the file has no extension, append the default. Be careful not
- # to do this for directories, otherwise typing a dirname in the box
- # will give back "dirname.extension" instead of trying to change dir.
- if (!-d $path && $path !~ /\..+$/ && defined $defaultext) {
- $path = "$path$defaultext";
- }
- # Cannot just test for existance here as non-existing files are
- # not an error for getSaveFile type dialogs.
- # return ('ERROR', $path, "") if (!-e $path);
- my($directory, $file, $flag);
- if (-e $path) {
- if (-d $path) {
- if (!ext_chdir($path)) {
- return ('CHDIR', $path, '');
- }
- $directory = _cwd();
- $file = '';
- $flag = 'OK';
- ext_chdir($appPWD);
- } else {
- my $dirname = File::Basename::dirname($path);
- if (!ext_chdir($dirname)) {
- return ('CHDIR', $dirname, '');
- }
- $directory = _cwd();
- $file = File::Basename::basename($path);
- $flag = 'OK';
- ext_chdir($appPWD);
- }
- } else {
- my $dirname = File::Basename::dirname($path);
- if (-e $dirname) {
- if (!ext_chdir($dirname)) {
- return ('CHDIR', $dirname, '');
- }
- $directory = _cwd();
- $file = File::Basename::basename($path);
- if ($file =~ /[*?]/) {
- $flag = 'PATTERN';
- } else {
- $flag = 'FILE';
- }
- ext_chdir($appPWD);
- } else {
- $directory = $dirname;
- $file = File::Basename::basename($path);
- $flag = 'PATH';
- }
- }
- return ($flag,$directory,$file);
-}
-
-# Gets called when the entry box gets keyboard focus. We clear the selection
-# from the icon list . This way the user can be certain that the input in the
-# entry box is the selection.
-#
-sub EntFocusIn {
- my $w = shift;
- my $ent = $w->{'ent'};
- if ($ent->get ne '') {
- $ent->selectionRange(0, 'end');
- $ent->icursor('end');
- } else {
- $ent->selectionClear;
- }
-#XXX is this missing in the tcl version, too??? $w->{'icons'}->Selection('clear');
- my $okBtn = $w->{'okBtn'};
- if ($w->cget(-type) ne 'save') {
- $okBtn->configure(-text => 'Open');
- } else {
- $okBtn->configure(-text => 'Save');
- }
-}
-
-sub EntFocusOut {
- my $w = shift;
- $w->{'ent'}->selectionClear;
-}
-
-# Gets called when user presses Return in the "File name" entry.
-#
-sub ActivateEnt {
- my $w = shift;
- my $ent = $w->{'ent'};
- my $text = $ent->get;
- if ($w->cget(-multiple)) {
- # For the multiple case we have to be careful to get the file
- # names as a true list, watching out for a single file with a
- # space in the name. Thus we query the IconList directly.
-
- $w->{'selectFile'} = [];
- for my $item ($w->{'icons'}->Curselection) {
- $w->VerifyFileName($w->{'icons'}->Get($item));
- }
- } else {
- $w->VerifyFileName($text);
- }
-}
-
-# Verification procedure
-#
-sub VerifyFileName {
- my($w, $text) = @_;
-#XXX leave this here?
-# $text =~ s/^\s+//;
-# $text =~ s/\s+$//;
- my($flag, $path, $file) = ResolveFile($w->{'selectPath'}, $text,
- $w->cget(-defaultextension));
- my $ent = $w->{'ent'};
- if ($flag eq 'OK') {
- if ($file eq '') {
- # user has entered an existing (sub)directory
- $w->SetPath($path);
- $ent->delete(0, 'end');
- } else {
- $w->SetPathSilently($path);
- if ($w->cget(-multiple)) {
- push @{ $w->{'selectFile'} }, $file;
- } else {
- $w->{'selectFile'} = $file;
- }
- $w->Done;
- }
- } elsif ($flag eq 'PATTERN') {
- $w->SetPath($path);
- $w->configure(-filter => $file);
- } elsif ($flag eq 'FILE') {
- if ($w->cget(-type) eq 'open') {
- $w->messageBox(-icon => 'warning',
- -type => 'OK',
- -message => 'File "' . TclFileJoin($path, $file)
- . '" does not exist.');
- $ent->selectionRange(0, 'end');
- $ent->icursor('end');
- } elsif ($w->cget(-type) eq 'save') {
- $w->SetPathSilently($path);
- if ($w->cget(-multiple)) {
- push @{ $w->{'selectFile'} }, $file;
- } else {
- $w->{'selectFile'} = $file;
- }
- $w->Done;
- }
- } elsif ($flag eq 'PATH') {
- $w->messageBox(-icon => 'warning',
- -type => 'OK',
- -message => "Directory \'$path\' does not exist.");
- $ent->selectionRange(0, 'end');
- $ent->icursor('end');
- } elsif ($flag eq 'CHDIR') {
- $w->messageBox(-type => 'OK',
- -message => "Cannot change to the directory \"$path\".\nPermission denied.",
- -icon => 'warning');
- $ent->selectionRange(0, 'end');
- $ent->icursor('end');
- } elsif ($flag eq 'ERROR') {
- $w->messageBox(-type => 'OK',
- -message => "Invalid file name \"$path\".",
- -icon => 'warning');
- $ent->selectionRange(0, 'end');
- $ent->icursor('end');
- }
-}
-
-# Gets called when user presses the Alt-s or Alt-o keys.
-#
-sub InvokeBtn {
- my($w, $key) = @_;
- my $okBtn = $w->{'okBtn'};
- $okBtn->invoke if ($okBtn->cget(-text) eq $key);
-}
-
-# Gets called when user presses the "parent directory" button
-#
-sub UpDirCmd {
- my $w = shift;
- $w->SetPath(File::Basename::dirname($w->{'selectPath'}))
- unless ($w->{'selectPath'} eq '/');
-}
-
-# Join a file name to a path name. The "file join" command will break
-# if the filename begins with ~
-sub JoinFile {
- my($path, $file) = @_;
- if ($file =~ /^~/ && -e "$path/$file") {
- TclFileJoin($path, "./$file");
- } else {
- TclFileJoin($path, $file);
- }
-}
-
-# XXX replace with File::Spec when perl/Tk depends on 5.005
-sub TclFileJoin {
- my $path = '';
- foreach (@_) {
- if (m|^/|) {
- $path = $_;
- }
- elsif (m|^[a-z]:/|i) { # DOS-ish
- $path = $_;
- } elsif ($_ eq '~') {
- $path = _get_homedir();
- } elsif (m|^~/(.*)|) {
- $path = _get_homedir() . "/" . $1;
- } elsif (m|^~([^/]+)(.*)|) {
- my($user, $p) = ($1, $2);
- my $dir = _get_homedir($user);
- if (!defined $dir) {
- $path = "~$user$p";
- } else {
- $path = $dir . $p;
- }
- } elsif ($path eq '/' or $path eq '') {
- $path .= $_;
- } else {
- $path .= "/$_";
- }
- }
- $path;
-}
-
-sub TclFileSplit {
- my $path = shift;
- my @comp;
- $path =~ s|/+|/|g; # strip multiple slashes
- if ($path =~ m|^/|) {
- push @comp, '/';
- $path = substr($path, 1);
- }
- push @comp, split /\//, $path;
- @comp;
-}
-
-# Gets called when user presses the "OK" button
-#
-sub OkCmd {
- my $w = shift;
- my $from = shift || "button";
-
- my $filenames = [];
- for my $item ($w->{'icons'}->Curselection) {
- push @$filenames, $w->{'icons'}->Get($item);
- }
-
- my $filename = $filenames->[0];
- if ($w->cget('-type') eq 'dir' && $from ne "iconlist") {
- my $file = $filename eq '' ? $w->{'selectPath'} : JoinFile($w->{'selectPath'}, $filename);
- $w->Done($file);
- } elsif ((@$filenames && !$w->cget('-multiple')) ||
- ($w->cget('-multiple') && @$filenames == 1)) {
- my $file = JoinFile($w->{'selectPath'}, $filename);
- if (-d $file) {
- $w->ListInvoke($filename);
- return;
- }
- }
-
- $w->ActivateEnt;
-}
-
-# Gets called when user presses the "Cancel" button
-#
-sub CancelCmd {
- my $w = shift;
- undef $w->{'selectFilePath'};
-}
-
-# Gets called when user browses the IconList widget (dragging mouse, arrow
-# keys, etc)
-#
-sub ListBrowse {
- my($w) = @_;
-
- my $text = [];
- for my $item ($w->{'icons'}->Curselection) {
- push @$text, $w->{'icons'}->Get($item);
- }
- return if @$text == 0;
- my $isDir;
- if (@$text > 1) {
- my $newtext = [];
- for my $file (@$text) {
- my $fullfile = JoinFile($w->{'selectPath'}, $file);
- if (!-d $fullfile) {
- push @$newtext, $file;
- }
- }
- $text = $newtext;
- $isDir = 0;
- } else {
- my $file = JoinFile($w->{'selectPath'}, $text->[0]);
- $isDir = -d $file;
- }
- my $ent = $w->{'ent'};
- my $okBtn = $w->{'okBtn'};
- if (!$isDir) {
- $ent->delete(qw(0 end));
- $ent->insert(0, "@$text"); # XXX quote!
-
- if ($w->cget('-type') ne 'save') {
- $okBtn->configure(-text => 'Open');
- } else {
- $okBtn->configure(-text => 'Save');
- }
- } else {
- $okBtn->configure(-text => 'Open');
- }
-}
-
-# Gets called when user invokes the IconList widget (double-click,
-# Return key, etc)
-#
-sub ListInvoke {
- my($w, @filenames) = @_;
- return if !@filenames;
- my $file = JoinFile($w->{'selectPath'}, $filenames[0]);
- if (-d $file) {
- my $appPWD = _cwd();
- if (!ext_chdir($file)) {
- $w->messageBox(-type => 'OK',
- -message => "Cannot change to the directory \"$file\".\nPermission denied.",
- -icon => 'warning');
- } else {
- ext_chdir($appPWD);
- $w->SetPath($file);
- }
- } else {
- if ($w->cget('-multiple')) {
- $w->{'selectFile'} = [@filenames];
- } else {
- $w->{'selectFile'} = $file;
- }
- $w->Done;
- }
-}
-
-# tkFDialog_Done --
-#
-# Gets called when user has input a valid filename. Pops up a
-# dialog box to confirm selection when necessary. Sets the
-# tkPriv(selectFilePath) variable, which will break the "tkwait"
-# loop in tkFDialog and return the selected filename to the
-# script that calls tk_getOpenFile or tk_getSaveFile
-#
-sub Done {
- my $w = shift;
- my $selectFilePath = (@_) ? shift : '';
- if ($selectFilePath eq '') {
- if ($w->cget('-multiple')) {
- $selectFilePath = [];
- for my $f (@{ $w->{'selectFile'} }) {
- push @$selectFilePath, JoinFile($w->{'selectPath'}, $f);
- }
- } else {
- $selectFilePath = JoinFile($w->{'selectPath'},
- $w->{'selectFile'});
- }
- if ($w->cget(-type) eq 'save' and
- -e $selectFilePath and
- !$w->cget(-force)) {
- my $reply = $w->messageBox
- (-icon => 'warning',
- -type => 'YesNo',
- -message => "File \"$selectFilePath\" already exists.\nDo you want to overwrite it?");
- return unless (lc($reply) eq 'yes');
- }
- }
- $w->{'selectFilePath'} = ($selectFilePath ne '' ? $selectFilePath : undef);
-}
-
-sub FDialog {
- my $cmd = shift;
- if ($cmd =~ /Save/) {
- push @_, -type => 'save';
- } elsif ($cmd =~ /Directory/) {
- push @_, -type => 'dir';
- }
- Tk::DialogWrapper('FBox', $cmd, @_);
-}
-
-# tkFDGetFileTypes --
-#
-# Process the string given by the -filetypes option of the file
-# dialogs. Similar to the C function TkGetFileFilters() on the Mac
-# and Windows platform.
-#
-sub GetFileTypes {
- my $in = shift;
- my %fileTypes;
- foreach my $t (@$in) {
- if (@$t < 2 || @$t > 3) {
- require Carp;
- Carp::croak("bad file type \"$t\", should be \"typeName [extension ?extensions ...?] ?[macType ?macTypes ...?]?\"");
- }
- push @{ $fileTypes{$t->[0]} }, (ref $t->[1] eq 'ARRAY'
- ? @{ $t->[1] }
- : $t->[1]);
- }
-
- my @types;
- my %hasDoneType;
- my %hasGotExt;
- foreach my $t (@$in) {
- my $label = $t->[0];
- my @exts;
-
- next if (exists $hasDoneType{$label});
-
- my $name = "$label (";
- my $sep = '';
- foreach my $ext (@{ $fileTypes{$label} }) {
- next if ($ext eq '');
- $ext =~ s/^\./*./;
- if (!exists $hasGotExt{$label}->{$ext}) {
- $name .= "$sep$ext";
- push @exts, $ext;
- $hasGotExt{$label}->{$ext}++;
- }
- $sep = ',';
- }
- $name .= ')';
- push @types, [$name, \@exts];
-
- $hasDoneType{$label}++;
- }
-
- return @types;
-}
-
-# ext_chdir --
-#
-# Change directory with tilde substitution
-#
-sub ext_chdir {
- my $dir = shift;
- if ($dir eq '~') {
- chdir _get_homedir();
- } elsif ($dir =~ m|^~/(.*)|) {
- chdir _get_homedir() . "/" . $1;
- } elsif ($dir =~ m|^~([^/]+(.*))|) {
- chdir _get_homedir($1) . $2;
- } else {
- chdir $dir;
- }
-}
-
-# _get_homedir --
-#
-# Get home directory of the current user
-#
-sub _get_homedir {
- my($user) = @_;
- if (!defined $user) {
- eval {
- local $SIG{__DIE__};
- (getpwuid($<))[7];
- } || $ENV{HOME} || undef; # chdir undef changes to home directory, too
- } else {
- eval {
- local $SIG{__DIE__};
- (getpwnam($user))[7];
- };
- }
-}
-
-sub _cwd {
- #Cwd::cwd();
- Cwd::fastcwd(); # this is taint-safe
-}
-
-sub _untaint {
- my $s = shift;
- $s =~ /^(.*)$/;
- $1;
-}
-
-sub _rx_to_glob {
- my $arg = shift;
- $arg = join('|', split(' ', $arg));
- $arg =~ s!([\.\+])!\\$1!g;
- $arg =~ s!\*!.*!g;
- $arg = "^" . $arg . "\$";
- if ($] >= 5.005) {
- $arg = qr/$arg/;
- }
- $arg;
-}
-
-1;
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/FileSelect.pm b/Master/tlpkg/tlperl/lib/Tk/FileSelect.pm
deleted file mode 100644
index d2070049d82..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/FileSelect.pm
+++ /dev/null
@@ -1,578 +0,0 @@
-package Tk::FileSelect;
-
-use vars qw($VERSION @EXPORT_OK);
-$VERSION = sprintf '4.%03d', q$Revision: #15 $ =~ /\D(\d+)\s*$/;
-@EXPORT_OK = qw(glob_to_re);
-
-use Tk qw(Ev);
-use strict;
-use Carp;
-use base qw(Tk::Toplevel);
-use Tk::widgets qw(LabEntry Button Frame Listbox Scrollbar);
-use File::Basename;
-
-Construct Tk::Widget 'FileSelect';
-
-use vars qw(%error_text);
-%error_text = (
- '-r' => 'is not readable by effective uid/gid',
- '-w' => 'is not writeable by effective uid/gid',
- '-x' => 'is not executable by effective uid/gid',
- '-R' => 'is not readable by real uid/gid',
- '-W' => 'is not writeable by real uid/gid',
- '-X' => 'is not executable by real uid/gid',
- '-o' => 'is not owned by effective uid/gid',
- '-O' => 'is not owned by real uid/gid',
- '-e' => 'does not exist',
- '-z' => 'is not of size zero',
- '-s' => 'does not exists or is of size zero',
- '-f' => 'is not a file',
- '-d' => 'is not a directory',
- '-l' => 'is not a link',
- '-S' => 'is not a socket',
- '-p' => 'is not a named pipe',
- '-b' => 'is not a block special file',
- '-c' => 'is not a character special file',
- '-u' => 'is not setuid',
- '-g' => 'is not setgid',
- '-k' => 'is not sticky',
- '-t' => 'is not a terminal file',
- '-T' => 'is not a text file',
- '-B' => 'is not a binary file',
- '-M' => 'has no modification date/time',
- '-A' => 'has no access date/time',
- '-C' => 'has no inode change date/time',
- );
-
-# Documentation after __END__
-
-sub import {
- if (defined $_[1] and $_[1] eq 'as_default') {
- local $^W = 0;
- package Tk;
- if ($Tk::VERSION < 804) {
- *FDialog = \&Tk::FileSelect::FDialog;
- *MotifFDialog = \&Tk::FileSelect::FDialog;
- } else {
- *tk_getOpenFile = sub {
- Tk::FileSelect::FDialog("tk_getOpenFile", @_);
- };
- *tk_getSaveFile = sub {
- Tk::FileSelect::FDialog("tk_getSaveFile", @_);
- };
- }
- }
-}
-
-sub Cancel
-{
- my ($cw) = @_;
- $cw->{Selected} = undef;
- $cw->withdraw unless $cw->cget('-transient');
-}
-
-sub Accept {
-
- # Accept the file or directory name if possible.
-
- my ($cw) = @_;
-
- my($path, $so) = ($cw->cget('-directory'), $cw->SelectionOwner);
- my $leaf = undef;
- my $leaves;
-
- if (defined $so and
- $so == $cw->Subwidget('dir_list')->Subwidget('listbox')) {
- $leaves = [$cw->Subwidget('dir_list')->getSelected];
- $leaves = [$cw->Subwidget('dir_entry')->get] if !scalar(@$leaves);
- } else {
- $leaves = [$cw->Subwidget('file_list')->getSelected];
- $leaves = [$cw->Subwidget('file_entry')->get] if !scalar(@$leaves);
- }
-
- foreach $leaf (@$leaves)
- {
- if (defined $leaf and $leaf ne '') {
- if (!$cw->cget('-create') || -e "$path/$leaf")
- {
- foreach (@{$cw->cget('-verify')}) {
- my $r = ref $_;
- if (defined $r and $r eq 'ARRAY') {
- #local $_ = $leaf; # use strict var problem here
- return if not &{$_->[0]}($cw, $path, $leaf, @{$_}[1..$#{$_}]);
- } else {
- my $s = eval "$_ '$path/$leaf'";
- print $@ if $@;
- if (not $s) {
- my $err;
- if (substr($_,0,1) eq '!')
- {
- my $t = substr($_,1);
- if (exists $error_text{$t})
- {
- $err = $error_text{$t};
- $err =~ s/\b(?:no|not) //;
- }
- }
- $err = $error_text{$_} unless defined $err;
- $err = "failed '$_' test" unless defined $err;
- $cw->Error("'$leaf' $err.");
- return;
- }
- }
- } # forend
- }
- else
- {
- unless (-w $path)
- {
- $cw->Error("Cannot write to $path");
- return;
- }
- }
- $leaf = $path . '/' . $leaf;
- } else {
- $leaf = undef;
- }
- }
- if (scalar(@$leaves))
- {
- my $sm = $cw->Subwidget('file_list')->cget(-selectmode);
- $cw->{Selected} = $leaves;
- my $command = $cw->cget('-command');
- $command->Call(@{$cw->{Selected}}) if defined $command;
- }
-
-} # end Accept
-
-sub Accept_dir
-{
- my ($cw,$new) = @_;
- my $dir = $cw->cget('-directory');
- $cw->configure(-directory => "$dir/$new");
-}
-
-sub Populate {
-
- my ($w, $args) = @_;
-
- require Tk::Listbox;
- require Tk::Button;
- require Tk::Dialog;
- require Tk::Toplevel;
- require Tk::LabEntry;
- require Cwd;
-
- $w->SUPER::Populate($args);
- $w->protocol('WM_DELETE_WINDOW' => ['Cancel', $w ]);
-
- $w->{'reread'} = 0;
- $w->withdraw;
-
- # Create directory/filter entry, place at the top.
- my $e = $w->Component(
- LabEntry => 'dir_entry',
- -textvariable => \$w->{DirectoryString},
- -labelVariable => \$w->{Configure}{-dirlabel},
- );
- $e->pack(-side => 'top', -expand => 0, -fill => 'x');
- $e->bind('<Return>' => [$w => 'validateDir', Ev(['get'])]);
-
- # Create file entry, place at the bottom.
- $e = $w->Component(
- LabEntry => 'file_entry',
- -textvariable => \$w->{Configure}{-initialfile},
- -labelVariable => \$w->{Configure}{-filelabel},
- );
- $e->pack(-side => 'bottom', -expand => 0, -fill => 'x');
- $e->bind('<Return>' => [$w => 'validateFile', Ev(['get'])]);
- $e->bind('<FocusIn>' => [$w => 'SelectionClear']);
-
- # Create directory scrollbox, place at the left-middle.
- my $b = $w->Component(
- ScrlListbox => 'dir_list',
- -labelVariable => \$w->{Configure}{-dirlistlabel},
- -scrollbars => 'se',
- );
- $b->pack(-side => 'left', -expand => 1, -fill => 'both');
- $b->bind('<Double-Button-1>' => [$w => 'Accept_dir', Ev(['getSelected'])]);
-
- # Add a label.
-
- my $f = $w->Frame();
- $f->pack(-side => 'right', -fill => 'y', -expand => 0);
- $b = $f->Button('-textvariable' => \$w->{'Configure'}{'-acceptlabel'},
- -command => [ 'Accept', $w ],
- );
- $b->pack(-side => 'top', -fill => 'x', -expand => 1);
- $b = $f->Button('-textvariable' => \$w->{'Configure'}{'-cancellabel'},
- -command => [ 'Cancel', $w ],
- );
- $b->pack(-side => 'top', -fill => 'x', -expand => 1);
- $b = $f->Button('-textvariable' => \$w->{'Configure'}{'-resetlabel'},
- -command => [$w => 'configure','-directory','.'],
- );
- $b->pack(-side => 'top', -fill => 'x', -expand => 1);
- $b = $f->Button('-textvariable' => \$w->{'Configure'}{'-homelabel'},
- -command => [$w => 'configure','-directory',$ENV{'HOME'}],
- );
- $b->pack(-side => 'top', -fill => 'x', -expand => 1);
-
- # Create file scrollbox, place at the right-middle.
-
- $b = $w->Component(
- ScrlListbox => 'file_list',
- -labelVariable => \$w->{Configure}{-filelistlabel},
- -scrollbars => 'se',
- );
- $b->pack(-side => 'right', -expand => 1, -fill => 'both');
- $b->bind('<Double-1>' => [$w => 'Accept']);
-
- # Create -very dialog.
-
- my $v = $w->Component(
- Dialog => 'dialog',
- -title => 'Verify Error',
- -bitmap => 'error',
- -buttons => ['Dismiss'],
- );
-
- $w->ConfigSpecs(
- -width => [ ['file_list','dir_list'], undef, undef, 14 ],
- -height => [ ['file_list','dir_list'], undef, undef, 14 ],
- -directory => [ 'METHOD', undef, undef, '.' ],
- -initialdir => '-directory',
- -filelabel => [ 'PASSIVE', 'fileLabel', 'FileLabel', 'File' ],
- -initialfile => [ 'PASSIVE', undef, undef, '' ],
- -filelistlabel => [ 'PASSIVE', undef, undef, 'Files' ],
- -filter => [ 'METHOD', undef, undef, undef ],
- -defaultextension => [ 'METHOD', undef, undef, undef ],
- -regexp => [ 'METHOD', undef, undef, undef ],
- -dirlistlabel => [ 'PASSIVE', undef, undef, 'Directories'],
- -dirlabel => [ 'PASSIVE', undef, undef, 'Directory'],
- '-accept' => [ 'CALLBACK',undef,undef, undef ],
- -command => [ 'CALLBACK',undef,undef, undef ],
- -transient => [ 'PASSIVE', undef, undef, 1 ],
- -verify => [ 'PASSIVE', undef, undef, ['!-d'] ],
- -create => [ 'PASSIVE', undef, undef, 0 ],
- -acceptlabel => [ 'PASSIVE', undef, undef, 'Accept'],
- -cancellabel => [ 'PASSIVE', undef, undef, 'Cancel'],
- -resetlabel => [ 'PASSIVE', undef, undef, 'Reset'],
- -homelabel => [ 'PASSIVE', undef, undef, 'Home'],
- DEFAULT => [ 'file_list' ],
- );
- $w->Delegates(DEFAULT => 'file_list');
-
- return $w;
-
-} # end Populate
-
-sub translate
- {
- my ($bs,$ch) = @_;
- return "\\$ch" if (length $bs);
- return '.*' if ($ch eq '*');
- return '.' if ($ch eq '?');
- return "\\." if ($ch eq '.');
- return "\\/" if ($ch eq '/');
- return "\\\\" if ($ch eq '\\');
- return $ch;
-}
-
-sub glob_to_re
-{
- my $regex = shift;
- $regex =~ s/(\\?)(.)/&translate($1,$2)/ge;
- return sub { shift =~ /^${regex}$/ };
-}
-
-sub filter
-{
- my ($cw,$val) = @_;
- my $var = \$cw->{Configure}{'-filter'};
- if (@_ > 1 || !defined($$var))
- {
- $val = '*' unless defined $val;
- $$var = $val;
- $cw->{'match'} = glob_to_re($val) unless defined $cw->{'match'};
- unless ($cw->{'reread'}++)
- {
- $cw->Busy;
- $cw->afterIdle(['reread',$cw,$cw->cget('-directory')])
- }
- }
- return $$var;
-}
-
-sub regexp
-{
- my ($cw,$val) = @_;
- my $var = \$cw->{Configure}{'-regexp'};
- if (@_ > 1)
- {
- $$var = $val;
- $cw->{'match'} = (defined $val) ? sub { shift =~ m|^${val}$| } : sub { 1 };
- unless ($cw->{'reread'}++)
- {
- $cw->Busy;
- $cw->afterIdle(['reread',$cw])
- }
- }
- return $$var;
-}
-
-sub defaultextension
-{
- my ($cw,$val) = @_;
- if (@_ > 1)
- {
- $val = '' unless defined $val;
- $val = ".$val" if ($val !~ /^\./);
- $cw->filter("*$val");
- }
- else
- {
- $val = $cw->filter;
- my ($ext) = $val =~ /(\.[^\.]*)$/;
- return $ext;
- }
-}
-
-sub directory
-{
- my ($cw,$dir) = @_;
- my $var = \$cw->{Configure}{'-directory'};
- if (@_ > 1 && defined $dir)
- {
- if (substr($dir,0,1) eq '~')
- {
- if (substr($dir,1,1) eq '/')
- {
- $dir = (defined $ENV{'HOME'} ? $ENV{'HOME'} : '') . substr($dir,1);
- }
- else
- {my ($uid,$rest) = ($dir =~ m#^~([^/]+)(/.*$)#);
- $dir = (getpwnam($uid))[7] . $rest;
- }
- }
- my $revert_dir = sub
- {
- my $message = shift;
- $$var = $cw->{OldDirectory};
- $cw->messageBox(-message => $message, -icon => 'error');
- if (!defined $$var)
- {
- # OldDirectory was never set, so force reread...
- $$var = $cw->{OldDirectory} = Cwd::getcwd(); # XXX maybe use check like code below...
- unless ($cw->{'reread'}++)
- {
- $cw->Busy;
- $cw->afterIdle(['reread',$cw])
- }
- }
- $$var;
- };
- $dir =~ s#([^/\\])[\\/]+$#$1#;
- if (-d $dir)
- {
- unless (Tk::tainting())
- {
- my $pwd = Cwd::getcwd();
- if (chdir( (defined($dir) ? $dir : '') ) )
- {
- my $new = Cwd::getcwd();
- if ($new)
- {
- $dir = $new;
- }
- else
- {
- return $revert_dir->("Cannot getcwd in '$dir'");
- }
- if (!chdir($pwd))
- {
- return $revert_dir->("Cannot change directory to $pwd:\n$!");
- }
- $$var = $dir;
- }
- else
- {
- return $revert_dir->("Cannot change directory to $dir:\n$!");
- }
- $$var = $cw->{OldDirectory} = $dir;
- }
- unless ($cw->{'reread'}++)
- {
- $cw->Busy;
- $cw->afterIdle(['reread',$cw])
- }
- }
- }
- return $$var;
-}
-
-sub reread
-{
- my ($w) = @_;
- my $dir = $w->cget('-directory');
- if (defined $dir)
- {
- if (!defined $w->cget('-filter') or $w->cget('-filter') eq '')
- {
- $w->configure('-filter', '*');
- }
- my $dl = $w->Subwidget('dir_list');
- $dl->delete(0, 'end');
- $dl->selectionClear(0,'end');
- my $fl = $w->Subwidget('file_list');
- $fl->delete(0, 'end');
- local *DIR;
- if (opendir(DIR, $dir))
- {
- my $file = $w->cget('-initialfile');
- my $seen = 0;
- my $accept = $w->cget('-accept');
- foreach my $f (sort(readdir(DIR)))
- {
- next if ($f eq '.');
- my $path = "$dir/$f";
- if (-d $path)
- {
- $dl->insert('end', $f);
- }
- else
- {
- if (&{$w->{match}}($f))
- {
- if (!defined($accept) || $accept->Call($path))
- {
- $seen = $fl->index('end') if ($file && $f eq $file);
- $fl->insert('end', $f)
- }
- }
- }
- }
- closedir(DIR);
- if ($seen)
- {
- $fl->selectionSet($seen);
- $fl->see($seen);
- }
- else
- {
- $w->configure(-initialfile => undef) unless $w->cget('-create');
- }
- }
- $w->{DirectoryString} = $dir . ($dir ne '/' ? '/' : '') . $w->cget('-filter');
- }
- $w->{'reread'} = 0;
- $w->Unbusy if $w->{'Busy'};
-}
-
-sub validateDir
-{
- my ($cw,$name) = @_;
- my ($leaf,$base) = fileparse($name);
- if ($leaf =~ /[*?]/)
- {
- $cw->configure('-directory' => $base,'-filter' => $leaf);
- }
- else
- {
- $cw->configure('-directory' => $name);
- }
-}
-
-sub validateFile
-{
- my ($cw,$name) = @_;
- my $i = 0;
- my $n = $cw->index('end');
- # See if it is an existing file
- for ($i= 0; $i < $n; $i++)
- {
- my $f = $cw->get($i);
- if ($f eq $name)
- {
- $cw->selection('set',$i);
- $cw->Accept;
- }
- }
- # otherwise allow if -create is set, directory is writable
- # and it passes filter and accept criteria
- if ($cw->cget('-create'))
- {
- my $path = $cw->cget('-directory');
- if (-w $path)
- {
- if (&{$cw->{match}}($name))
- {
- my $accept = $cw->cget('-accept');
- my $full = "$path/$name";
- if (!defined($accept) || $accept->Call($full))
- {
- $cw->{Selected} = [$full];
- $cw->Callback(-command => @{$cw->{Selected}});
- }
- else
- {
- $cw->Error("$name is not 'acceptable'");
- }
- }
- else
- {
- $cw->Error("$name does not match '".$cw->cget('-filter').'\'');
- }
- }
- else
- {
- $cw->Error("Directory '$path' is not writable");
- return;
- }
- }
-}
-
-sub Error
-{
- my $cw = shift;
- my $msg = shift;
- my $dlg = $cw->Subwidget('dialog');
- $dlg->configure(-text => $msg);
- $dlg->Show;
-}
-
-sub Show
-{
- my ($cw,@args) = @_;
- if ($cw->cget('-transient')) {
- $cw->Popup(@args);
- $cw->focus;
- $cw->waitVariable(\$cw->{Selected});
- $cw->withdraw;
- return defined($cw->{Selected})
- ? (wantarray) ? @{$cw->{Selected}} : $cw->{Selected}[0]
- : undef;
- } else {
- $cw->Popup(@args);
- }
-}
-
-sub FDialog
-{
- my($cmd, %args) = @_;
- if ($cmd =~ /Save/)
- {
- $args{-create} = 1;
- $args{-verify} = [qw(!-d -w)];
- }
- delete $args{-filetypes};
- delete $args{-force};
- Tk::DialogWrapper('FileSelect',$cmd, %args);
-}
-
-1;
-
-__END__
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/FloatEntry.pm b/Master/tlpkg/tlperl/lib/Tk/FloatEntry.pm
deleted file mode 100644
index eb6465dbe61..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/FloatEntry.pm
+++ /dev/null
@@ -1,109 +0,0 @@
-# Tranlation of FloatEnt.tcl in Tix4.1
-
-# TODO/IDEA:
-# o extract a widget (SimpleEntry?) without post/unpost methods
-# and derive FloatEntry fron this widget.
-
-package Tk::FloatEntry;
-use strict;
-
-BEGIN
- {
- use vars '$DEBUG';
- $DEBUG = (defined($ENV{USER}) and $ENV{USER} eq 'achx') ? 1 : 0;
- print STDERR "tixGrid: debug = $DEBUG\n" if $DEBUG;
- }
-
-require Tk;
-require Tk::Widget;
-require Tk::Derived;
-require Tk::Entry;
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/TixGrid/FloatEntry.pm#4 $
-
-use base qw(Tk::Derived Tk::Entry);
-
-Construct Tk::Widget 'FloatEntry';
-
-sub ClassInit
- {
- my ($class, $mw) = @_;
- $class->SUPER::ClassInit($mw);
- $mw->bind($class, '<Return>', 'invoke');
- $mw->bind($class, '<FocusIn>', 'FocusIn');
- $class;
- }
-
-sub Populate
- {
- my ($e, $args) = @_;
- $e->ConfigSpecs(
- -value => ['METHOD', 'value', 'Value', undef],
- -highlightthickness => [$e, 'highlightThickness', 'HighlightThickness', 0 ],
- -command => ['CALLBACK', 'command', 'Command', undef],
- );
- print "FloatEntry Init: $e\n" if $DEBUG;
- $e;
- }
-
-## option method
-
-sub value
- {
- my $e = shift;
- unless (@_)
- {
- return $e->get
- }
- $e->delete(0,'end');
- $e->insert(0,$_[0]);
- $e->selection('from', 0);
- $e->selection('to', 'end');
-
- }
-
-## public methods
-
-sub invoke
- {
- my ($e) = @_;
- $e->Callback('-command', $e->get);
- }
-
-sub post
- {
- my ($e, $x, $y, $dx, $dy) = @_;
-
- $dx = $e->reqwidth unless defined $dx;
- $dy = $e->reqheight unless defined $dy;
-
- $e->place('-x'=>$x, '-y'=>$y, -width=>$dx, -height=>$dy, -bordermode=>'ignore');
- $e->raise;
- $e->focus;
- }
-
-sub unpost
- {
- my ($e) = @_;
- $e->place('forget');
- }
-
-## bindings
-
-sub FocusIn
- {
- my ($e) = @_;
-
- # FIX: xxx only if entry has not already focus
- {
- $e->focus;
- $e->selection('from', 0);
- $e->selection('to', 'end');
- $e->icursor('end');
- }
- }
-
-1;
-__END__
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Font.pm b/Master/tlpkg/tlperl/lib/Tk/Font.pm
deleted file mode 100644
index bb1b52cc7c5..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Font.pm
+++ /dev/null
@@ -1,163 +0,0 @@
-package Tk::Font;
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/Font.pm#4 $
-require Tk::Widget;
-use strict;
-use Carp;
-use overload '""' => 'as_string';
-sub as_string { return ${$_[0]} }
-
-*MainWindow = \&Tk::Widget::MainWindow;
-
-foreach my $key (qw(actual metrics measure configure))
- {
- no strict 'refs';
- *{$key} = sub { shift->Tk::font($key,@_) };
- }
-
-Construct Tk::Widget 'Font';
-
-my @xfield = qw(foundry family weight slant swidth adstyle pixel
- point xres yres space avgwidth registry encoding);
-my @tkfield = qw(family size weight slant underline overstrike);
-my %tkfield = map { $_ => "-$_" } @tkfield;
-
-sub _xonly { my $old = '*'; return $old }
-
-sub Pixel
-{
- my $me = shift;
- my $old = $me->configure('-size');
- $old = '*' if ($old > 0);
- if (@_)
- {
- $me->configure(-size => -$_[0]);
- }
- return $old;
-}
-
-sub Point
-{
- my $me = shift;
- my $old = 10*$me->configure('-size');
- $old = '*' if ($old < 0);
- if (@_)
- {
- $me->configure(-size => int($_[0]/10));
- }
- return $old;
-}
-
-foreach my $f (@tkfield,@xfield)
- {
- no strict 'refs';
- my $sub = "\u$f";
- unless (defined &{$sub})
- {
- my $key = $tkfield{$f};
- if (defined $key)
- {
- *{$sub} = sub { shift->configure($key,@_) };
- }
- else
- {
- *{$sub} = \&_xonly;
- }
- }
- }
-
-sub new
-{
- my $pkg = shift;
- my $w = shift;
- my $me;
- if (scalar(@_) == 1)
- {
- $me = $w->Tk::font('create',@_);
- }
- else
- {
- croak 'Odd number of args' if @_ & 1;
- my %attr;
- while (@_)
- {
- my $k = shift;
- my $v = shift;
- my $t = (substr($k,0,1) eq '-') ? $k : $tkfield{$k};
- if (defined $t)
- {
- $attr{$t} = $v;
- }
- elsif ($k eq 'point')
- {
- $attr{'-size'} = -int($v/10+0.5);
- }
- elsif ($k eq 'pixel')
- {
- $attr{'-size'} = -$v;
- }
- else
- {
- carp "$k ignored" if $^W;
- }
- }
- $me = $w->Tk::font('create',%attr);
- }
- return bless $me,$pkg;
-}
-
-sub Pattern
-{
- my $me = shift;
- my @str;
- foreach my $f (@xfield)
- {
- my $meth = "\u$f";
- my $str = $me->$meth();
- if ($f eq 'family')
- {
- $str =~ s/(?:Times\s+New\s+Roman|New York)/Times/i;
- $str =~ s/(?:Courier\s+New|Monaco)/Courier/i;
- $str =~ s/(?:Arial|Geneva)/Helvetica/i;
- }
- elsif ($f eq 'slant')
- {
- $str = substr($str,0,1);
- }
- elsif ($f eq 'weight')
- {
- $str = 'medium' if ($str eq 'normal');
- }
- push(@str,$str);
- }
- return join('-', '', @str);
-}
-
-sub Name
-{
- my $me = shift;
- return $$me if (!wantarray || ($^O eq 'MSWin32'));
- my $max = shift || 128;
- my $w = $me->MainWindow;
- my $d = $w->Display;
- return $d->XListFonts($me->Pattern,$max);
-}
-
-sub Clone
-{
- my $me = shift;
- return ref($me)->new($me,$me->actual,@_);
-}
-
-sub ascent
-{
- return shift->metrics('-ascent');
-}
-
-sub descent
-{
- return shift->metrics('-descent');
-}
-
-1;
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Frame.pm b/Master/tlpkg/tlperl/lib/Tk/Frame.pm
deleted file mode 100644
index a5716cdf9bd..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Frame.pm
+++ /dev/null
@@ -1,378 +0,0 @@
-# Copyright (c) 1995-2003 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-package Tk::Frame;
-require Tk::Widget;
-require Tk::Derived;
-use AutoLoader;
-use strict qw(vars);
-use Carp;
-
-use base qw(Tk::Derived Tk::Widget);
-
-Construct Tk::Widget 'Frame';
-
-use vars qw($VERSION);
-$VERSION = '4.010'; # $Id: //depot/Tkutf8/Tk/Frame.pm#10 $
-
-sub Tk_cmd { \&Tk::frame }
-
-sub CreateOptions
-{
- return (shift->SUPER::CreateOptions,'-colormap','-visual','-container')
-}
-
-sub Default
-{
- my ($cw,$name,$widget) = @_;
- confess 'No name' unless (defined $name);
- croak 'No widget' unless (defined $widget);
- $cw->Delegates(DEFAULT => $widget);
- $cw->ConfigSpecs(DEFAULT => [$widget]);
- $widget->pack('-expand' => 1, -fill => 'both') unless ($widget->manager); # Suspect
- $cw->Advertise($name,$widget);
-}
-
-sub ConfigDelegate
-{
- my ($cw,$name,@skip) = @_;
- my $sw = $cw->Subwidget($name);
- my $sc;
- my %skip = ();
- foreach $sc (@skip)
- {
- $skip{$sc} = 1;
- }
- foreach $sc ($sw->configure)
- {
- my (@info) = @$sc;
- next if (@info == 2);
- my $option = $info[0];
- unless ($skip{$option})
- {
- $option =~ s/^-(.*)/-$name\u$1/;
- $info[0] = Tk::Configure->new($sw,$info[0]);
- pop(@info);
- $cw->ConfigSpecs($option => \@info);
- }
- }
-}
-
-sub bind
-{my ($cw,@args) = @_;
- $cw->Delegate('bind',@args);
-}
-
-sub menu
-{my ($cw,@args) = @_;
- $cw->Delegate('menu',@args);
-}
-
-sub focus
-{my ($cw,@args) = @_;
- $cw->Delegate('focus',@args);
-}
-
-#sub bindtags
-#{my ($cw,@args) = @_;
-# $cw->Delegate('bindtags',@args);
-#}
-
-sub selection
-{my ($cw,@args) = @_;
- $cw->Delegate('selection',@args);
-}
-
-sub autoLabel { 1 }
-
-sub Populate
-{
- my ($cw,$args) = @_;
- if ($cw->autoLabel)
- {
- $cw->ConfigSpecs('-labelPack' => [ 'METHOD', undef, undef, undef]);
- $cw->ConfigSpecs('-labelVariable' => [ 'METHOD', undef, undef, undef]);
- $cw->ConfigSpecs('-label' => [ 'METHOD', undef, undef, undef]);
- $cw->labelPack([]) if grep /^-label\w+/, keys %$args;
- }
-}
-
-sub Menubar
-{
- my $frame = shift;
- my $menu = $frame->cget('-menu');
- if (defined $menu)
- {
- $menu->configure(@_) if @_;
- }
- else
- {
- $menu = $frame->Menu(-type => 'menubar',@_);
- $frame->configure('-menu' => $menu);
- }
- $frame->Advertise('menubar' => $menu);
- return $menu;
-}
-
-1;
-
-__END__
-
-sub labelPack
-{
- my ($cw,$val) = @_;
- my $w = $cw->Subwidget('label');
- my @result = ();
- if (@_ > 1)
- {
- if (defined($w) && !defined($val))
- {
- $w->packForget;
- }
- elsif (defined($val) && !defined ($w))
- {
- require Tk::Label;
- $w = Tk::Label->new($cw,-textvariable => $cw->labelVariable);
- $cw->Advertise('label' => $w);
- $cw->ConfigDelegate('label',qw(-text -textvariable));
- }
- if (defined($val) && defined($w))
- {
- my %pack = @$val;
- unless (exists $pack{-side})
- {
- $pack{-side} = 'top' unless (exists $pack{-side});
- }
- unless (exists $pack{-fill})
- {
- $pack{-fill} = 'x' if ($pack{-side} =~ /(top|bottom)/);
- $pack{-fill} = 'y' if ($pack{-side} =~ /(left|right)/);
- }
- unless (exists($pack{'-before'}) || exists($pack{'-after'}))
- {
- my $before = ($cw->packSlaves)[0];
- $pack{'-before'} = $before if (defined $before);
- }
- $w->pack(%pack);
- }
- }
- @result = $w->packInfo if (defined $w);
- return (wantarray) ? @result : \@result;
-}
-
-sub labelVariable
-{
- my ($cw,$val) = @_;
- my $var = \$cw->{Configure}{'-labelVariable'};
- if (@_ > 1 && defined $val)
- {
- $$var = $val;
- $$val = '' unless (defined $$val);
- my $w = $cw->Subwidget('label');
- unless (defined $w)
- {
- $cw->labelPack([]);
- $w = $cw->Subwidget('label');
- }
- $w->configure(-textvariable => $val);
- }
- return $$var;
-}
-
-sub label
-{
- my ($cw,$val) = @_;
- my $var = $cw->cget('-labelVariable');
- if (@_ > 1 && defined $val)
- {
- if (!defined $var)
- {
- $var = \$cw->{Configure}{'-label'};
- $cw->labelVariable($var);
- }
- $$var = $val;
- }
- return (defined $var) ? $$var : undef;;
-}
-
-sub queuePack
-{
- my ($cw) = @_;
- unless ($cw->{'pack_pending'})
- {
- $cw->{'pack_pending'} = 1;
- $cw->afterIdle([$cw,'packscrollbars']);
- }
-}
-
-sub sbset
-{
- my ($cw,$sb,$ref,@args) = @_;
- $sb->set(@args);
- $cw->queuePack if (@args == 2 && $sb->Needed != $$ref);
-}
-
-sub freeze_on_map
-{
- my ($w) = @_;
- unless ($w->Tk::bind('Freeze','<Map>'))
- {
- $w->Tk::bind('Freeze','<Map>',['packPropagate' => 0])
- }
- $w->AddBindTag('Freeze');
-}
-
-sub AddScrollbars
-{
- require Tk::Scrollbar;
- my ($cw,$w) = @_;
- my $def = '';
- my ($x,$y) = ('','');
- my $s = 0;
- my $c;
- $cw->freeze_on_map;
- foreach $c ($w->configure)
- {
- my $opt = $c->[0];
- if ($opt eq '-yscrollcommand')
- {
- my $slice = Tk::Frame->new($cw,Name => 'ysbslice');
- my $ysb = Tk::Scrollbar->new($slice,-orient => 'vertical', -command => [ 'yview', $w ]);
- my $size = $ysb->cget('-width');
- my $corner = Tk::Frame->new($slice,Name=>'corner','-relief' => 'raised',
- '-width' => $size, '-height' => $size);
- $ysb->pack(-side => 'left', -fill => 'y');
- $cw->Advertise('yscrollbar' => $ysb);
- $cw->Advertise('corner' => $corner);
- $cw->Advertise('ysbslice' => $slice);
- $corner->{'before'} = $ysb->PathName;
- $slice->{'before'} = $w->PathName;
- $y = 'w';
- $s = 1;
- }
- elsif ($opt eq '-xscrollcommand')
- {
- my $xsb = Tk::Scrollbar->new($cw,-orient => 'horizontal', -command => [ 'xview', $w ]);
- $cw->Advertise('xscrollbar' => $xsb);
- $xsb->{'before'} = $w->PathName;
- $x = 's';
- $s = 1;
- }
- }
- if ($s)
- {
- $cw->Advertise('scrolled' => $w);
- $cw->ConfigSpecs('-scrollbars' => ['METHOD','scrollbars','Scrollbars',$x.$y]);
- }
-}
-
-sub packscrollbars
-{
- my ($cw) = @_;
- my $opt = $cw->cget('-scrollbars');
- my $slice = $cw->Subwidget('ysbslice');
- my $xsb = $cw->Subwidget('xscrollbar');
- my $corner = $cw->Subwidget('corner');
- my $w = $cw->Subwidget('scrolled');
- my $xside = (($opt =~ /n/) ? 'top' : 'bottom');
- my $havex = 0;
- my $havey = 0;
- $opt =~ s/r//;
- $cw->{'pack_pending'} = 0;
- if (defined $slice)
- {
- my $reqy;
- my $ysb = $cw->Subwidget('yscrollbar');
- if ($opt =~ /(o)?[we]/ && (($reqy = !defined($1)) || $ysb->Needed))
- {
- my $yside = (($opt =~ /w/) ? 'left' : 'right');
- $slice->pack(-side => $yside, -fill => 'y',-before => $slice->{'before'});
- $havey = 1;
- if ($reqy)
- {
- $w->configure(-yscrollcommand => ['set', $ysb]);
- }
- else
- {
- $w->configure(-yscrollcommand => ['sbset', $cw, $ysb, \$cw->{'packysb'}]);
- }
- }
- else
- {
- $w->configure(-yscrollcommand => undef) unless $opt =~ s/[we]//;
- $slice->packForget;
- }
- $cw->{'packysb'} = $havey;
- }
- if (defined $xsb)
- {
- my $reqx;
- if ($opt =~ /(o)?[ns]/ && (($reqx = !defined($1)) || $xsb->Needed))
- {
- $xsb->pack(-side => $xside, -fill => 'x',-before => $xsb->{'before'});
- $havex = 1;
- if ($reqx)
- {
- $w->configure(-xscrollcommand => ['set', $xsb]);
- }
- else
- {
- $w->configure(-xscrollcommand => ['sbset', $cw, $xsb, \$cw->{'packxsb'}]);
- }
- }
- else
- {
- $w->configure(-xscrollcommand => undef) unless $opt =~ s/[ns]//;
- $xsb->packForget;
- }
- $cw->{'packxsb'} = $havex;
- }
- if (defined $corner)
- {
- if ($havex && $havey && defined $corner->{'before'})
- {
- my $anchor = $opt;
- $anchor =~ s/o//g;
- $corner->configure(-height => $xsb->ReqHeight);
- $corner->pack(-before => $corner->{'before'}, -side => $xside,
- -anchor => $anchor, -fill => 'x');
- }
- else
- {
- $corner->packForget;
- }
- }
-}
-
-sub scrollbars
-{
- my ($cw,$opt) = @_;
- my $var = \$cw->{'-scrollbars'};
- if (@_ > 1)
- {
- my $old = $$var;
- if (!defined $old || $old ne $opt)
- {
- $$var = $opt;
- $cw->queuePack;
- }
- }
- return $$var;
-}
-
-sub FindMenu
-{
- my ($w,$char) = @_;
- my $child;
- my $match;
- foreach $child ($w->children)
- {
- next unless (ref $child);
- $match = $child->FindMenu($char);
- return $match if (defined $match);
- }
- return undef;
-}
-
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/HList.pm b/Master/tlpkg/tlperl/lib/Tk/HList.pm
deleted file mode 100644
index 02792208243..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/HList.pm
+++ /dev/null
@@ -1,680 +0,0 @@
-package Tk::HList;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #14 $ =~ /\D(\d+)\s*$/;
-
-use Tk qw(Ev $XS_VERSION);
-
-use base qw(Tk::Widget);
-
-Construct Tk::Widget 'HList';
-sub Tk::Widget::ScrlHList { shift->Scrolled('HList'=>@_) }
-
-bootstrap Tk::HList;
-
-sub Tk_cmd { \&Tk::hlist }
-
-sub CreateArgs
-{
- my ($package,$parent,$args) = @_;
- my @result = $package->SUPER::CreateArgs($parent,$args);
- my $columns = delete $args->{-columns};
- push(@result, '-columns' => $columns) if (defined $columns);
- return @result;
-}
-
-Tk::Methods qw(add addchild anchor column
- delete dragsite dropsite entrycget
- entryconfigure geometryinfo indicator header hide item info
- nearest see select selection show xview yview);
-
-use Tk::Submethods ( 'delete' => [qw(all entry offsprings siblings)],
- 'header' => [qw(configure cget create delete exists size)],
- 'indicator' => [qw(configure cget create delete exists size)],
- 'info' => [qw(anchor bbox children data dragsite
- dropsite exists hidden item next parent prev
- selection)],
- 'item' => [qw(configure cget create delete exists)],
- 'selection' => [qw(clear get includes set)],
- 'anchor' => [qw(clear set)],
- 'column' => [qw(width)],
- 'hide' => [qw(entry)],
- );
-
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
-
- $mw->bind($class,'<ButtonPress-1>',[ 'Button1' ] );
- $mw->bind($class,'<Shift-ButtonPress-1>',[ 'ShiftButton1' ] );
- $mw->bind($class,'<Control-ButtonRelease-1>','Control_ButtonRelease_1');
- $mw->bind($class,'<ButtonRelease-1>','ButtonRelease_1');
- $mw->bind($class,'<Double-ButtonRelease-1>','NoOp');
- $mw->bind($class,'<B1-Motion>',[ 'Button1Motion' ] );
- $mw->bind($class,'<B1-Leave>',[ 'AutoScan' ] );
-
- $mw->bind($class,'<Double-ButtonPress-1>',['Double1']);
-
- $mw->bind($class,'<Control-B1-Motion>','Control_B1_Motion');
- $mw->bind($class,'<Control-ButtonPress-1>',['CtrlButton1']);
- $mw->bind($class,'<Control-Double-ButtonPress-1>',['CtrlButton1']);
-
- $mw->bind($class,'<B1-Enter>','B1_Enter');
-
- $mw->bind($class,'<Up>',['UpDown', 'prev']);
- $mw->bind($class,'<Down>',['UpDown', 'next']);
-
- $mw->bind($class,'<Shift-Up>',['ShiftUpDown', 'prev']);
- $mw->bind($class,'<Shift-Down>',['ShiftUpDown', 'next']);
-
- $mw->bind($class,'<Left>', ['LeftRight', 'left']);
- $mw->bind($class,'<Right>',['LeftRight', 'right']);
-
- $mw->PriorNextBind($class);
- $mw->MouseWheelBind($class);
-
- $mw->bind($class,'<Return>', ['KeyboardActivate']);
- $mw->bind($class,'<space>', ['KeyboardBrowse']);
- $mw->bind($class,'<Home>', ['KeyboardHome']);
- $mw->bind($class,'<End>', ['KeyboardEnd']);
-
- $mw->YMouseWheelBind($class);
- $mw->XMouseWheelBind($class);
-
- return $class;
-}
-
-sub Control_ButtonRelease_1
-{
-}
-
-sub ButtonRelease_1
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->CancelRepeat
- if($w->cget('-selectmode') ne 'dragdrop');
- $w->ButtonRelease1($Ev);
-}
-
-sub Control_B1_Motion
-{
-}
-
-sub B1_Enter
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->CancelRepeat
- if($w->cget('-selectmode') ne 'dragdrop');
-}
-
-sub Button1
-{
- my $w = shift;
- my $Ev = $w->XEvent;
-
- delete $w->{'shiftanchor'};
- delete $w->{tixindicator};
-
- $w->focus() if($w->cget('-takefocus'));
-
- my $mode = $w->cget('-selectmode');
-
- if ($mode eq 'dragdrop')
- {
- # $w->Send_WaitDrag($Ev->y);
- return;
- }
-
- my $ent = $w->GetNearest($Ev->y, 1);
-
- if (!defined($ent) || !length($ent))
- {
- $w->selectionClear;
- $w->anchorClear;
- return;
- }
-
- my @info = $w->info('item',$Ev->x, $Ev->y);
- if (@info)
- {
- die 'Assert' unless $info[0] eq $ent;
- }
- else
- {
- @info = $ent;
- }
-
- if (defined($info[1]) && $info[1] eq 'indicator')
- {
- $w->{tixindicator} = $ent;
- $w->Callback(-indicatorcmd => $ent, '<Arm>');
- }
- else
- {
- my $browse = 0;
-
- if ($mode eq 'single')
- {
- $w->anchorSet($ent);
- }
- elsif ($mode eq 'browse')
- {
- $w->anchorSet($ent);
- $w->selectionClear;
- $w->selectionSet($ent);
- $browse = 1;
- }
- elsif ($mode eq 'multiple')
- {
- $w->selectionClear;
- $w->anchorSet($ent);
- $w->selectionSet($ent);
- $browse = 1;
- }
- elsif ($mode eq 'extended')
- {
- $w->anchorSet($ent);
- $w->selectionClear;
- $w->selectionSet($ent);
- $browse = 1;
- }
-
- if ($browse)
- {
- $w->Callback(-browsecmd => @info);
- }
- }
-}
-
-sub ShiftButton1
-{
- my $w = shift;
- my $Ev = $w->XEvent;
-
- my $to = $w->GetNearest($Ev->y, 1);
-
- delete $w->{'shiftanchor'};
- delete $w->{tixindicator};
-
- return unless (defined($to) and length($to));
-
- my $mode = $w->cget('-selectmode');
-
- if($mode eq 'extended' or $mode eq 'multiple')
- {
- my $from = $w->info('anchor');
- if(defined $from)
- {
- $w->selectionClear;
- $w->selectionSet($from, $to);
- }
- else
- {
- $w->anchorSet($to);
- $w->selectionClear;
- $w->selectionSet($to);
- }
- }
-}
-
-sub GetNearest
-{
- my ($w,$y,$undefafterend) = @_;
- my $ent = $w->nearest($y);
- if (defined $ent)
- {
- if ($undefafterend)
- {
- my $borderwidth = $w->cget('-borderwidth');
- my $highlightthickness = $w->cget('-highlightthickness');
- my $bottomy = ($w->infoBbox($ent))[3];
- $bottomy += $borderwidth + $highlightthickness;
- if ($w->header('exist', 0))
- {
- $bottomy += $w->header('height');
- }
- if ($y > $bottomy)
- {
- #print "$y > $bottomy\n";
- return undef;
- }
- }
- my $state = $w->entrycget($ent, '-state');
- return $ent if (!defined($state) || $state ne 'disabled');
- }
- return undef;
-}
-
-sub ButtonRelease1
-{
- my ($w, $Ev) = @_;
-
- delete $w->{'shiftanchor'};
-
- my $mode = $w->cget('-selectmode');
-
- if($mode eq 'dragdrop')
- {
-# $w->Send_DoneDrag();
- return;
- }
-
- my ($x, $y) = ($Ev->x, $Ev->y);
- my $ent = $w->GetNearest($y, 1);
-
- if (!defined($ent) and $mode eq 'single')
- {
- my $ent = $w->info('selection');
- if (defined $ent)
- {
- $w->anchorSet($ent);
- }
- }
- return unless (defined($ent) and length($ent));
-
- if (exists $w->{tixindicator})
- {
- return unless delete($w->{tixindicator}) eq $ent;
- my @info = $w->info('item',$Ev->x, $Ev->y);
- if(defined($info[1]) && $info[1] eq 'indicator')
- {
- $w->Callback(-indicatorcmd => $ent, '<Activate>');
- }
- else
- {
- $w->Callback(-indicatorcmd => $ent, '<Disarm>');
- }
- return;
- }
-
- if($mode eq 'single' || $mode eq 'browse')
- {
- $w->anchorSet($ent);
- $w->selectionClear;
- $w->selectionSet($ent);
-
- }
- elsif($mode eq 'multiple')
- {
- $w->selectionSet($ent);
- }
- elsif($mode eq 'extended')
- {
- $w->selectionSet($ent);
- }
-
- $w->Callback(-browsecmd =>$ent);
-}
-
-sub Button1Motion
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- return unless defined $Ev;
-
- delete $w->{'shiftanchor'};
-
- my $mode = $w->cget('-selectmode');
-
- if ($mode eq 'dragdrop')
- {
-# $w->Send_StartDrag();
- return;
- }
-
- my $ent;
- if (defined $w->info('anchor'))
- {
- $ent = $w->GetNearest($Ev->y);
- }
- else
- {
- $ent = $w->GetNearest($Ev->y, 1);
- }
- return unless (defined($ent) and length($ent));
-
- if(exists $w->{tixindicator})
- {
- my $event_type = $w->{tixindicator} eq $ent ? '<Arm>' : '<Disarm>';
- $w->Callback(-indicatorcmd => $w->{tixindicator}, $event_type );
- return;
- }
-
- if ($mode eq 'single')
- {
- $w->anchorSet($ent);
- }
- elsif ($mode eq 'multiple' || $mode eq 'extended')
- {
- my $from = $w->info('anchor');
- if(defined $from)
- {
- $w->selectionClear;
- $w->selectionSet($from, $ent);
- }
- else
- {
- $w->anchorSet($ent);
- $w->selectionClear;
- $w->selectionSet($ent);
- }
- }
-
- if ($mode ne 'single')
- {
- $w->Callback(-browsecmd =>$ent);
- }
-}
-
-sub Double1
-{
- my $w = shift;
- my $Ev = $w->XEvent;
-
- delete $w->{'shiftanchor'};
-
- my $ent = $w->GetNearest($Ev->y, 1);
-
- return unless (defined($ent) and length($ent));
-
- $w->anchorSet($ent)
- unless(defined $w->info('anchor'));
-
- $w->selectionSet($ent);
-
- $w->Callback(-command => $ent);
-}
-
-sub CtrlButton1
-{
- my $w = shift;
- my $Ev = $w->XEvent;
-
- delete $w->{'shiftanchor'};
-
- my $ent = $w->GetNearest($Ev->y, 1);
-
- return unless (defined($ent) and length($ent));
-
- my $mode = $w->cget('-selectmode');
-
- if($mode eq 'extended')
- {
- $w->anchorSet($ent) unless( defined $w->info('anchor') );
-
- if($w->select('includes', $ent))
- {
- $w->select('clear', $ent);
- }
- else
- {
- $w->selectionSet($ent);
- }
- $w->Callback(-browsecmd =>$ent);
- }
-}
-
-sub UpDown
-{
- my $w = shift;
- my $spec = shift;
-
- my $done = 0;
- my $anchor = $w->info('anchor');
-
- delete $w->{'shiftanchor'};
-
- unless( defined $anchor )
- {
- $anchor = ($w->info('children'))[0] || '';
-
- return unless (defined($anchor) and length($anchor));
-
- if($w->entrycget($anchor, '-state') ne 'disabled')
- {
- # That's a good anchor
- $done = 1;
- }
- else
- {
- # We search for the first non-disabled entry (downward)
- $spec = 'next';
- }
- }
-
- my $ent = $anchor;
-
- # Find the prev/next non-disabled entry
- #
- while(!$done)
- {
- $ent = $w->info($spec, $ent);
- last unless( defined $ent );
- next if( $w->entrycget($ent, '-state') eq 'disabled' );
- next if( $w->info('hidden', $ent) );
- last;
- }
-
- unless( defined $ent )
- {
- $w->yview('scroll', $spec eq 'prev' ? -1 : 1, 'unit');
- return;
- }
-
- $w->anchorSet($ent);
- $w->see($ent);
-
- if($w->cget('-selectmode') ne 'single')
- {
- $w->selectionClear;
- $w->selection('set', $ent);
- $w->Callback(-browsecmd =>$ent);
- }
-}
-
-sub ShiftUpDown
-{
- my $w = shift;
- my $spec = shift;
-
- my $mode = $w->cget('-selectmode');
-
- return $w->UpDown($spec)
- if($mode eq 'single' || $mode eq 'browse');
-
- my $anchor = $w->info('anchor');
-
- return $w->UpDown($spec) unless (defined($anchor) and length($anchor));
-
- my $done = 0;
-
- $w->{'shiftanchor'} = $anchor unless( $w->{'shiftanchor'} );
-
- my $ent = $w->{'shiftanchor'};
-
- while( !$done )
- {
- $ent = $w->info($spec, $ent);
- last unless( defined $ent );
- next if( $w->entrycget($ent, '-state') eq 'disabled' );
- next if( $w->info('hidden', $ent) );
- last;
- }
-
- unless( $ent )
- {
- $w->yview('scroll', $spec eq 'prev' ? -1 : 1, 'unit');
- return;
- }
-
- $w->selectionClear;
- $w->selection('set', $anchor, $ent);
- $w->see($ent);
-
- $w->{'shiftanchor'} = $ent;
-
- $w->Callback(-browsecmd =>$ent);
-}
-
-sub LeftRight
-{
- my $w = shift;
- my $spec = shift;
-
- delete $w->{'shiftanchor'};
-
- my $anchor = $w->info('anchor');
-
- unless(defined $anchor)
- {
- $anchor = ($w->info('children'))[0] || '';
- }
-
- my $done = 0;
- my $ent = $anchor;
-
- while(!$done)
- {
- my $e = $ent;
-
- if($spec eq 'left')
- {
- $ent = $w->info('parent', $e);
-
- $ent = $w->info('prev', $e)
- unless(defined $ent && $w->entrycget($ent, '-state') ne 'disabled')
- }
- else
- {
- $ent = ($w->info('children', $e))[0];
-
- $ent = $w->info('next', $e)
- unless(defined $ent && $w->entrycget($ent, '-state') ne 'disabled')
- }
-
- last unless( defined $ent );
- last if($w->entrycget($ent, '-state') ne 'disabled');
- }
-
- unless( defined $ent )
- {
- $w->xview('scroll', $spec eq 'left' ? -1 : 1, 'unit');
- return;
- }
-
- $w->anchorSet($ent);
- $w->see($ent);
-
- if($w->cget('-selectmode') ne 'single')
- {
- $w->selectionClear;
- $w->selectionSet($ent);
-
- $w->Callback(-browsecmd =>$ent);
- }
-}
-
-sub KeyboardHome
-{
- my $w = shift;
- $w->yview('moveto' => 0);
- $w->xview('moveto' => 0);
-}
-
-sub KeyboardEnd
-{
- my $w = shift;
- $w->yview('moveto' => 1);
- $w->xview('moveto' => 0);
-}
-
-sub KeyboardActivate
-{
- my $w = shift;
-
- my $anchor = $w->info('anchor');
-
- return unless (defined($anchor) and length($anchor));
-
- if($w->cget('-selectmode'))
- {
- $w->selectionClear;
- $w->selectionSet($anchor);
- }
-
- $w->Callback(-command => $anchor);
-}
-
-sub KeyboardBrowse
-{
- my $w = shift;
-
- my $anchor = $w->info('anchor');
-
- return unless (defined($anchor) and length($anchor));
-
- if ($w->indicatorExists($anchor))
- {
- $w->Callback(-indicatorcmd => $anchor);
- }
-
- if($w->cget('-selectmode'))
- {
- $w->selectionClear;
- $w->selectionSet($anchor);
- }
- $w->Callback(-browsecmd =>$anchor);
-}
-
-sub AutoScan
-{
- my ($w,$x,$y) = @_;
-
- return if ($w->cget('-selectmode') eq 'dragdrop');
- if (@_ < 3)
- {
- my $Ev = $w->XEvent;
- return unless defined $Ev;
- $y = $Ev->y;
- $x = $Ev->x;
- }
-
- if($y >= $w->height)
- {
- $w->yview('scroll', 1, 'units');
- }
- elsif($y < 0)
- {
- $w->yview('scroll', -1, 'units');
- }
- elsif($x >= $w->width)
- {
- $w->xview('scroll', 2, 'units');
- }
- elsif($x < 0)
- {
- $w->xview('scroll', -2, 'units');
- }
- else
- {
- return;
- }
- $w->RepeatId($w->SUPER::after(50,[ AutoScan => $w, $x, $y ]));
- $w->Button1Motion;
-}
-
-sub children
-{
- # Tix has core-tk window(s) which are not a widget(s)
- # the generic code returns these as an "undef"
- my $w = shift;
- my @info = grep(defined($_),$w->winfo('children'));
- @info;
-}
-
-1;
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/IO.pm b/Master/tlpkg/tlperl/lib/Tk/IO.pm
deleted file mode 100644
index 771e9f7103a..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/IO.pm
+++ /dev/null
@@ -1,182 +0,0 @@
-package Tk::IO;
-use strict;
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/IO/IO.pm#4 $
-
-require 5.002;
-use Tk::Event qw($XS_VERSION);
-
-use Carp;
-use base qw(DynaLoader IO::Handle);
-
-bootstrap Tk::IO;
-
-my %fh2obj;
-my %obj2fh;
-
-sub new
-{
- my ($package,%args) = @_;
- # Do whatever IO::Handle does
- my $fh = $package->SUPER::new;
- %{*$fh} = (); # The hash is used for configure options
- ${*$fh} = ''; # The scalar is used as the 'readable' buffer
- @{*$fh} = (); # The array
- $fh->configure(%args);
- return $fh;
-}
-
-sub pending
-{
- my $fh = shift;
- return ${*$fh};
-}
-
-sub cget
-{
- my ($fh,$key) = @_;
- return ${*$fh}{$key};
-}
-
-sub configure
-{
- my ($fh,%args) = @_;
- my $key;
- foreach $key (keys %args)
- {
- my $val = $args{$key};
- $val = Tk::Callback->new($val) if ($key =~ /command$/);
- ${*$fh}{$key} = $val;
- }
-}
-
-sub killpg
-{
- my ($fh,$sig) = @_;
- my $pid = $fh->pid;
- croak 'No child' unless (defined $pid);
- kill($sig,-$pid);
-}
-
-sub kill
-{
- my ($fh,$sig) = @_;
- my $pid = $fh->pid;
- croak 'No child' unless (defined $pid);
- kill($sig,$pid) || croak "Cannot kill($sig,$pid):$!";
-}
-
-sub readable
-{
- my $fh = shift;
- my $count = sysread($fh,${*$fh},1,length(${*$fh}));
- if ($count < 0)
- {
- if (exists ${*$fh}{-errorcommand})
- {
- ${*$fh}{-errorcommand}->Call($!);
- }
- else
- {
- warn "Cannot read $fh:$!";
- $fh->close;
- }
- }
- elsif ($count)
- {
- if (exists ${*$fh}{-linecommand})
- {
- my $eol = index(${*$fh},"\n");
- if ($eol >= 0)
- {
- my $line = substr(${*$fh},0,++$eol);
- substr(${*$fh},0,$eol) = '';
- ${*$fh}{-linecommand}->Call($line);
- }
- }
- }
- else
- {
- $fh->close;
- }
-}
-
-sub pid
-{
- my $fh = shift;
- return ${*$fh}{-pid};
-}
-
-sub command
-{
- my $fh = shift;
- my $cmd = ${*$fh}{'-exec'};
- return (wantarray) ? @$cmd : $cmd;
-}
-
-sub exec
-{
- my $fh = shift;
- my $pid = open($fh,'-|');
- if ($pid)
- {
- ${*$fh} = '' unless (defined ${*$fh});
- ${*$fh}{'-exec'} = [@_];
- ${*$fh}{'-pid'} = $pid;
- if (exists ${*$fh}{-linecommand})
- {
- my $w = ${*$fh}{-widget};
- $w = 'Tk' unless (defined $w);
- $w->fileevent($fh,'readable',[$fh,'readable']);
- ${*$fh}{_readable} = $w;
- }
- else
- {
- croak Tk::Pretty::Pretty(\%{*$fh});
- }
- return $pid;
- }
- else
- {
- # make STDERR same as STDOUT here
- setpgrp;
- exec(@_) || die 'Cannot exec ',join(' ',@_),":$!";
- }
-}
-
-sub wait
-{
- my $fh = shift;
- my $code;
- my $ch = delete ${*$fh}{-childcommand};
- ${*$fh}{-childcommand} = Tk::Callback->new(sub { $code = shift });
- Tk::Event::DoOneEvent(0) until (defined $code);
- if (defined $ch)
- {
- ${*$fh}{-childcommand} = $ch;
- $ch->Call($code,$fh)
- }
- return $code;
-}
-
-sub close
-{
- my $fh = shift;
- my $code;
- if (defined fileno($fh))
- {
- my $w = delete ${*$fh}{_readable};
- $w->fileevent($fh,'readable','') if (defined $w);
- $code = close($fh);
- if (exists ${*$fh}{-childcommand})
- {
- ${*$fh}{-childcommand}->Call($?,$fh);
- }
- }
- return $code;
-}
-
-1;
-__END__
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/IconList.pm b/Master/tlpkg/tlperl/lib/Tk/IconList.pm
deleted file mode 100644
index 1972809ea2a..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/IconList.pm
+++ /dev/null
@@ -1,712 +0,0 @@
-# -*- perl -*-
-#
-# tkfbox.tcl --
-#
-# Implements the "TK" standard file selection dialog box. This
-# dialog box is used on the Unix platforms whenever the tk_strictMotif
-# flag is not set.
-#
-# The "TK" standard file selection dialog box is similar to the
-# file selection dialog box on Win95(TM). The user can navigate
-# the directories by clicking on the folder icons or by
-# selectinf the "Directory" option menu. The user can select
-# files by clicking on the file icons or by entering a filename
-# in the "Filename:" entry.
-#
-# Copyright (c) 1994-1996 Sun Microsystems, Inc.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# Translated to perk/Tk and modified by Slaven Rezic <slaven@rezic.de>.
-#
-
-#----------------------------------------------------------------------
-#
-# I C O N L I S T
-#
-# This is a pseudo-widget that implements the icon list inside the
-# tkFDialog dialog box.
-#
-#----------------------------------------------------------------------
-# tkIconList --
-#
-# Creates an IconList widget.
-#
-
-package Tk::IconList;
-require Tk::Frame;
-
-use vars qw($VERSION);
-$VERSION = '4.007'; # $Id: //depot/Tkutf8/Tk/IconList.pm#7 $
-
-use Tk qw(Ev);
-use strict;
-use Carp;
-
-use base 'Tk::Frame';
-
-Construct Tk::Widget 'IconList';
-
-# tkIconList_Create --
-#
-# Creates an IconList widget by assembling a canvas widget and a
-# scrollbar widget. Sets all the bindings necessary for the IconList's
-# operations.
-#
-sub Populate {
- my($w, $args) = @_;
- $w->SUPER::Populate($args);
-
- my $sbar = $w->Component('Scrollbar' => 'sbar',
- -orient => 'horizontal',
- -highlightthickness => 0,
- -takefocus => 0,
- );
- # make sure that the size does not exceed handhelds' dimensions
- my($sw,$sh) = ($w->screenwidth, $w->screenheight);
- my $canvas = $w->Component('Canvas' => 'canvas',
- -bd => 2,
- -relief => 'sunken',
- -width => ($sw > 420 ? 400 : $sw-20),
- -height => ($sh > 160 ? 120 : $sh-40),
- -takefocus => 1,
- );
- $sbar->pack(-side => 'bottom', -fill => 'x', -padx => 2);
- $canvas->pack(-expand => 'yes', -fill => 'both');
- $sbar->configure(-command => ['xview', $canvas]);
- $canvas->configure(-xscrollcommand => ['set', $sbar]);
-
- # Initializes the max icon/text width and height and other variables
- $w->{'maxIW'} = 1;
- $w->{'maxIH'} = 1;
- $w->{'maxTW'} = 1;
- $w->{'maxTH'} = 1;
- $w->{'numItems'} = 0;
-#XXX curItem never used delete $w->{'curItem'};
- $w->{'noScroll'} = 1;
- $w->{'selection'} = [];
- $w->{'index,anchor'} = '';
-
- # Creates the event bindings.
- $canvas->Tk::bind('<Configure>', sub { $w->Arrange } );
- $canvas->Tk::bind('<1>', [$w,'Btn1',Ev('x'),Ev('y')]);
- $canvas->Tk::bind('<B1-Motion>', [$w,'Motion1',Ev('x'),Ev('y')]);
- $canvas->Tk::bind('<Control-B1-Motion>', 'NoOp');
- $canvas->Tk::bind('<Shift-B1-Motion>', 'NoOp');
- $canvas->Tk::bind('<Control-1>', [$w,'CtrlBtn1',Ev('x'),Ev('y')]);
- $canvas->Tk::bind('<Shift-1>', [$w,'ShiftBtn1',Ev('x'),Ev('y')]);
- $canvas->Tk::bind('<Double-ButtonRelease-1>', [$w,'Double1',Ev('x'),Ev('y')]);
- $canvas->Tk::bind('<Control-Double-ButtonRelease-1>', 'NoOp');
- $canvas->Tk::bind('<Shift-Double-ButtonRelease-1>', 'NoOp');
- $canvas->Tk::bind('<ButtonRelease-1>', [$w,'CancelRepeat']);
- $canvas->Tk::bind('<B1-Leave>', [$w,'Leave1',Ev('x'),Ev('y')]);
- $canvas->Tk::bind('<B1-Enter>', [$w,'CancelRepeat']);
- $canvas->Tk::bind('<Up>', [$w,'UpDown', -1]);
- $canvas->Tk::bind('<Down>', [$w,'UpDown', 1]);
- $canvas->Tk::bind('<Left>', [$w,'LeftRight',-1]);
- $canvas->Tk::bind('<Right>', [$w,'LeftRight', 1]);
- $canvas->Tk::bind('<Return>', [$w,'ReturnKey']);
- $canvas->Tk::bind('<KeyPress>', [$w,'KeyPress',Ev('A')]);
- $canvas->Tk::bind('<Control-KeyPress>', 'NoOp');
- $canvas->Tk::bind('<Alt-KeyPress>', 'NoOp');
- $canvas->Tk::bind('<Meta-KeyPress>', 'NoOp');
-#XXX bad....
-# $canvas->Tk::bind('<FocusIn>', sub { $w->FocusIn });
-# $canvas->Tk::bind('<FocusOut>', sub { $w->FocusOut });
-
- # additional bindings not in tkfbox.tcl
- $canvas->Tk::bind('<2>',['scan','mark',Ev('x'),Ev('y')]);
- $canvas->Tk::bind('<B2-Motion>',['scan','dragto',Ev('x'),Ev('y')]);
- # Remove the standard Canvas bindings
- $canvas->bindtags([$canvas, $canvas->toplevel, 'all']);
- # ... and define some again
- $canvas->Tk::bind('<Home>', ['xview','moveto',0]);
- $canvas->Tk::bind('<End>', ['xview','moveto',1]);
-
- $w->ConfigSpecs(-browsecmd =>
- ['METHOD', 'browseCommand', 'BrowseCommand', undef],
- -command =>
- ['CALLBACK', 'command', 'Command', undef],
- -font =>
- ['PASSIVE', 'font', 'Font', undef],
- -foreground =>
- ['PASSIVE', 'foreground', 'Foreground', undef],
- -fg => '-foreground',
- -multiple =>
- ['PASSIVE', 'multiple', 'Multiple', 0],
- -selectmode =>
- ['PASSIVE', 'selectMode', 'SelectMode', 'browse'],
- -selectbackground =>
- ['PASSIVE', 'selectBackground', 'Foreground', '#a0a0ff'],
- );
-
- $w;
-}
-
-# compatibility for old -browsecmd options
-sub browsecmd {
- my $w = shift;
- if (@_) {
- $w->{Configure}{'-browsecmd'} = $_[0];
- $w->bind('<<ListboxSelect>>' => $_[0]);
- }
- $w->{Configure}{'-browsecmd'};
-}
-
-sub Index {
- my($w, $i) = @_;
- if (!$w->{'list'}) { $w->{'list'} = [] }
- if ($i =~ /^-?[0-9]+$/) {
- if ($i < 0) {
- $i = 0;
- }
- if ($i > @{ $w->{'list'} }) {
- $i = @{ $w->{'list'} } - 1;
- }
- return $i;
- } elsif ($i eq 'active') {
- return $w->{'index,active'};
- } elsif ($i eq 'anchor') {
- return $w->{'index,anchor'};
- } elsif ($i eq 'end') {
- return @{ $w->{'list'} };
- } elsif ($i =~ /@(-?[0-9]+),(-?[0-9]+)/) {
- my($x, $y) = ($1, $2);
- my $canvas = $w->Subwidget('canvas');
- my $item = $canvas->find('closest', $x, $y);
- if (defined $item) {
- return $canvas->itemcget($item, '-tags')->[1];
- } else {
- return "";
- }
- } else {
- croak "Unrecognized Index parameter `$i', use active, anchor, end, \@x,y, or x";
- }
-}
-
-sub Selection {
- my($w, $op, @args) = @_;
- if ($op eq 'anchor') {
- if (@args == 1) {
- $w->{'index,anchor'} = $w->Index($args[0]);
- } else {
- return $w->{'index,anchor'};
- }
- } elsif ($op eq 'clear') {
- my($first, $last);
- if (@args == 2) {
- ($first, $last) = @args;
- } elsif (@args == 1) {
- $first = $last = $args[0];
- } else {
- croak "wrong # args: should be Selection('clear', first, ?last?)"
- }
- $first = $w->Index($first);
- $last = $w->Index($last);
- if ($first > $last) {
- ($first, $last) = ($last, $first);
- }
- my $ind = 0;
- for my $item (@{ $w->{'selection'} }) {
- if ($item >= $first) {
- $first = $ind;
- last;
- }
- $ind++; # XXX seems to be missing in the Tcl version
- }
- $ind = @{ $w->{'selection'} } - 1;
- for(; $ind >= 0; $ind--) {
- my $item = $w->{'selection'}->[$ind];
- if ($item <= $last) {
- $last = $ind;
- last;
- }
- }
- if ($first > $last) {
- return;
- }
- splice @{ $w->{'selection'} }, $first, $last-$first+1;
- $w->event('generate', '<<ListboxSelect>>');
- $w->DrawSelection;
- } elsif ($op eq 'includes') {
- my $index;
- for (@{ $w->{'selection'} }) {
- if ($args[0] eq $_) {
- return 1;
- }
- }
- return 0;
- } elsif ($op eq 'set') {
- my($first, $last);
- if (@args == 2) {
- ($first, $last) = @args;
- } elsif (@args == 1) {
- $first = $last = $args[0];
- } else {
- croak "wrong # args: should be Selection('set', first, ?last?)";
- }
-
- $first = $w->Index($first);
- $last = $w->Index($last);
- if ($first > $last) {
- ($first, $last) = ($last, $first);
- }
- for(my $i = $first; $i <= $last; $i++) {
- push @{ $w->{'selection'} }, $i;
- }
- # lsort -integer -unique
- my %sel = map { ($_ => 1) } @{ $w->{'selection'} };
- @{ $w->{'selection'} } = sort { $a <=> $b } keys %sel;
- $w->event('generate', '<<ListboxSelect>>');
- $w->DrawSelection;
- } else {
- croak "Unrecognized Selection parameter `$op', use anchor, clear, includes, or set";
- }
-}
-
-# XXX why lower case 's' here and upper in DrawSelection?
-sub Curselection {
- my $w = shift;
- @{ $w->{'selection'} };
-}
-
-sub DrawSelection {
- my $w = shift;
- my $canvas = $w->Subwidget('canvas');
- $canvas->delete('selection');
- my $selBg = $w->cget('-selectbackground');
- for my $item (@{ $w->{'selection'} }) {
- my $rTag = $w->{'list'}->[$item][2];
- my($iTag, $tTag, $text, $serial) = @{ $w->{'itemList'}{$rTag} };
- my @bbox = $canvas->bbox($tTag);
- # XXX don't hardcode colors
- $canvas->createRectangle
- (@bbox, -fill => $selBg, -outline => $selBg, -tags => 'selection');
- }
- $canvas->lower('selection');
-}
-
-# Returns the selected item
-#
-sub Get {
- my($w, $item) = @_;
- my $rTag = $w->{'list'}->[$item][2];
- my($iTag, $tTag, $text, $serial) = @{ $w->{'itemList'}{$rTag} };
- $text;
-}
-
-
-# tkIconList_AutoScan --
-#
-# This procedure is invoked when the mouse leaves an entry window
-# with button 1 down. It scrolls the window up, down, left, or
-# right, depending on where the mouse left the window, and reschedules
-# itself as an "after" command so that the window continues to scroll until
-# the mouse moves back into the window or the mouse button is released.
-#
-# Arguments:
-# w - The IconList window.
-#
-sub AutoScan {
- my $w = shift;
- return unless ($w->exists);
- return if ($w->{'noScroll'});
- my($x, $y);
- $x = $Tk::x;
- $y = $Tk::y;
- my $canvas = $w->Subwidget('canvas');
- if ($x >= $canvas->width) {
- $canvas->xview('scroll', 1, 'units');
- } elsif ($x < 0) {
- $canvas->xview('scroll', -1, 'units');
- } elsif ($y >= $canvas->height) {
- # do nothing
- } elsif ($y < 0) {
- # do nothing
- } else {
- return;
- }
- $w->Motion1($x, $y);
- $w->RepeatId($w->after(50, ['AutoScan', $w]));
-}
-
-# Deletes all the items inside the canvas subwidget and reset the IconList's
-# state.
-#
-sub DeleteAll {
- my $w = shift;
- my $canvas = $w->Subwidget('canvas');
- $canvas->delete('all');
- delete $w->{'selected'};
- delete $w->{'rect'};
- delete $w->{'list'};
- delete $w->{'itemList'};
- $w->{'maxIW'} = 1;
- $w->{'maxIH'} = 1;
- $w->{'maxTW'} = 1;
- $w->{'maxTH'} = 1;
- $w->{'numItems'} = 0;
-#XXX curItem never used delete $w->{'curItem'};
- $w->{'noScroll'} = 1;
- $w->{'selection'} = [];
- $w->{'index,anchor'} = '';
- $w->Subwidget('sbar')->set(0.0, 1.0);
- $canvas->xview('moveto', 0);
-}
-
-# Adds an icon into the IconList with the designated image and items
-#
-sub Add {
- my($w, $image, @items) = @_;
- my $canvas = $w->Subwidget('canvas');
- my $font = $w->cget(-font);
- my $fg = $w->cget(-foreground);
- foreach my $text (@items) {
- my $iTag = $canvas->createImage
- (0, 0, -image => $image, -anchor => 'nw',
- -tags => ['icon', $w->{numItems}, 'item'.$w->{numItems}],
- );
- my $tTag = $canvas->createText
- (0, 0, -text => $text, -anchor => 'nw',
- (defined $fg ? (-fill => $fg) : ()),
- (defined $font ? (-font => $font) : ()),
- -tags => ['text', $w->{numItems}, 'item'.$w->{numItems}],
- );
- my $rTag = $canvas->createRectangle
- (0, 0, 0, 0,
- -fill => undef,
- -outline => undef,
- -tags => ['rect', $w->{numItems}, 'item'.$w->{numItems}],
- );
- my(@b) = $canvas->bbox($iTag);
- my $iW = $b[2] - $b[0];
- my $iH = $b[3] - $b[1];
- $w->{'maxIW'} = $iW if ($w->{'maxIW'} < $iW);
- $w->{'maxIH'} = $iH if ($w->{'maxIH'} < $iH);
- @b = $canvas->bbox($tTag);
- my $tW = $b[2] - $b[0];
- my $tH = $b[3] - $b[1];
- $w->{'maxTW'} = $tW if ($w->{'maxTW'} < $tW);
- $w->{'maxTH'} = $tH if ($w->{'maxTH'} < $tH);
- push @{ $w->{'list'} }, [$iTag, $tTag, $rTag, $iW, $iH, $tW, $tH,
- $w->{'numItems'}];
- $w->{'itemList'}{$rTag} = [$iTag, $tTag, $text, $w->{'numItems'}];
- $w->{'textList'}{$w->{'numItems'}} = lc($text);
- ++$w->{'numItems'};
- }
-}
-
-# Places the icons in a column-major arrangement.
-#
-sub Arrange {
- my $w = shift;
- my $canvas = $w->Subwidget('canvas');
- my $sbar = $w->Subwidget('sbar');
- unless (exists $w->{'list'}) {
- if (defined $canvas && Tk::Exists($canvas)) {
- $w->{'noScroll'} = 1;
- $sbar->configure(-command => sub { });
- }
- return;
- }
-
- my $W = $canvas->width;
- my $H = $canvas->height;
- my $pad = $canvas->cget(-highlightthickness) + $canvas->cget(-bd);
- $pad = 2 if ($pad < 2);
- $W -= $pad*2;
- $H -= $pad*2;
- my $dx = $w->{'maxIW'} + $w->{'maxTW'} + 8;
- my $dy;
- if ($w->{'maxTH'} > $w->{'maxIH'}) {
- $dy = $w->{'maxTH'};
- } else {
- $dy = $w->{'maxIH'};
- }
- $dy += 2;
- my $shift = $w->{'maxIW'} + 4;
- my $x = $pad * 2;
- my $y = $pad;
- my $usedColumn = 0;
- foreach my $sublist (@{ $w->{'list'} }) {
- $usedColumn = 1;
- my($iTag, $tTag, $rTag, $iW, $iH, $tW, $tH) = @$sublist;
- my $i_dy = ($dy - $iH) / 2;
- my $t_dy = ($dy - $tH) / 2;
- $canvas->coords($iTag, $x, $y + $i_dy);
- $canvas->coords($tTag, $x + $shift, $y + $t_dy);
- $canvas->coords($rTag, $x, $y, $x + $dx, $y + $dy);
- $y += $dy;
- if ($y + $dy > $H) {
- $y = $pad;
- $x += $dx;
- $usedColumn = 0;
- }
- }
- my $sW;
- if ($usedColumn) {
- $sW = $x + $dx;
- } else {
- $sW = $x;
- }
- if ($sW < $W) {
- $canvas->configure(-scrollregion => [$pad, $pad, $sW, $H]);
- $sbar->configure(-command => sub { });
- $canvas->xview(moveto => 0);
- $w->{'noScroll'} = 1;
- } else {
- $canvas->configure(-scrollregion => [$pad, $pad, $sW, $H]);
- $sbar->configure(-command => ['xview', $canvas]);
- $w->{'noScroll'} = 0;
- }
- $w->{'itemsPerColumn'} = int(($H - $pad) / $dy);
- $w->{'itemsPerColumn'} = 1 if ($w->{'itemsPerColumn'} < 1);
-#XXX $w->Select($w->{'list'}[$w->{'curItem'}][2], 0)
-# if (exists $w->{'curItem'});
- $w->DrawSelection; # missing in Tcl XXX
-}
-
-# Gets called when the user invokes the IconList (usually by double-clicking
-# or pressing the Return key).
-#
-sub Invoke {
- my $w = shift;
- $w->Callback(-command => $w->{'selected'}) if (@{ $w->{'selection'} });
-}
-
-# tkIconList_See --
-#
-# If the item is not (completely) visible, scroll the canvas so that
-# it becomes visible.
-sub See {
- my($w, $rTag) = @_;
- return if ($w->{'noScroll'});
- return if ($rTag < 0 || $rTag >= @{ $w->{'list'} });
- my $canvas = $w->Subwidget('canvas');
- my(@sRegion) = @{ $canvas->cget('-scrollregion') };
- return unless (@sRegion);
- my(@bbox) = $canvas->bbox('item'.$rTag);
- my $pad = $canvas->cget(-highlightthickness) + $canvas->cget(-bd);
- my $x1 = $bbox[0];
- my $x2 = $bbox[2];
- $x1 -= $pad * 2;
- $x2 -= $pad;
- my $cW = $canvas->width - $pad * 2;
- my $scrollW = $sRegion[2] - $sRegion[0] + 1;
- my $dispX = int(($canvas->xview)[0] * $scrollW);
- my $oldDispX = $dispX;
- # check if out of the right edge
- $dispX = $x2 - $cW if ($x2 - $dispX >= $cW);
- # check if out of the left edge
- $dispX = $x1 if ($x1 - $dispX < 0);
- if ($oldDispX != $dispX) {
- my $fraction = $dispX / $scrollW;
- $canvas->xview('moveto', $fraction);
- }
-}
-
-sub Btn1 {
- my($w, $x, $y) = @_;
-
- my $canvas = $w->Subwidget('canvas');
- $canvas->CanvasFocus;
- $x = int($canvas->canvasx($x));
- $y = int($canvas->canvasy($y));
- my $i = $w->Index('@'.$x.','.$y);
- return if ($i eq '');
- $w->Selection('clear', 0, 'end');
- $w->Selection('set', $i);
- $w->Selection('anchor', $i);
-}
-
-sub CtrlBtn1 {
- my($w, $x, $y) = @_;
-
- if ($w->cget(-multiple)) {
- my $canvas = $w->Subwidget('canvas');
- $canvas->CanvasFocus;
- my $x = int($canvas->canvasx($x));
- my $y = int($canvas->canvasy($y));
- my $i = $w->Index('@'.$x.','.$y);
- return if ($i eq '');
- if ($w->Selection('includes', $i)) {
- $w->Selection('clear', $i);
- } else {
- $w->Selection('set', $i);
- $w->Selection('anchor', $i);
- }
- }
-}
-
-sub ShiftBtn1 {
- my($w, $x, $y) = @_;
-
- if ($w->cget(-multiple)) {
- my $canvas = $w->Subwidget('canvas');
- $canvas->CanvasFocus;
- my $x = int($canvas->canvasx($x));
- my $y = int($canvas->canvasy($y));
- my $i = $w->Index('@'.$x.','.$y);
- return if ($i eq '');
- my $a = $w->Index('anchor');
- if ($a eq '') {
- $a = $i;
- }
- $w->Selection('clear', 0, 'end');
- $w->Selection('set', $a, $i);
- }
-}
-
-# Gets called on button-1 motions
-#
-sub Motion1 {
- my($w, $x, $y) = @_;
- $Tk::x = $x;
- $Tk::y = $y;
- my $canvas = $w->Subwidget('canvas');
- $canvas->CanvasFocus;
- $x = int($canvas->canvasx($x));
- $y = int($canvas->canvasy($y));
- my $i = $w->Index('@'.$x.','.$y);
- return if ($i eq '');
- $w->Selection('clear', 0, 'end');
- $w->Selection('set', $i);
-}
-
-sub Double1 {
- my($w, $x, $y) = @_;
- $w->Invoke if (@{ $w->{'selection'} });
-}
-
-sub ReturnKey {
- my $w = shift;
- $w->Invoke;
-}
-
-sub Leave1 {
- my($w, $x, $y) = @_;
- $Tk::x = $x;
- $Tk::y = $y;
- $w->AutoScan;
-}
-
-sub FocusIn {
- my $w = shift;
- return unless (exists $w->{'list'});
- if (@{ $w->{'selection'} }) {
- $w->DrawSelection;
- }
-}
-
-sub FocusOut {
- my $w = shift;
- $w->Selection('clear', 0, 'end');
-}
-
-# tkIconList_UpDown --
-#
-# Moves the active element up or down by one element
-#
-# Arguments:
-# w - The IconList widget.
-# amount - +1 to move down one item, -1 to move back one item.
-#
-sub UpDown {
- my($w, $amount) = @_;
- return unless (exists $w->{'list'});
- my $i;
- my(@curr) = $w->Curselection;
- if (!@curr) {
- $i = 0;
- } else {
- $i = $w->Index('anchor');
- return if ($i eq '');
- $i += $amount;
- }
- $w->Selection('clear', 0, 'end');
- $w->Selection('set', $i);
- $w->Selection('anchor', $i);
- $w->See($i);
-}
-
-# tkIconList_LeftRight --
-#
-# Moves the active element left or right by one column
-#
-# Arguments:
-# w - The IconList widget.
-# amount - +1 to move right one column, -1 to move left one column.
-#
-sub LeftRight {
- my($w, $amount) = @_;
- return unless (exists $w->{'list'});
- my $i;
- my(@curr) = $w->Curselection;
- if (!@curr) {
- $i = 0;
- } else {
- $i = $w->Index('anchor');
- return if ($i eq '');
- $i += $amount*$w->{'itemsPerColumn'};
- }
- $w->Selection('clear', 0, 'end');
- $w->Selection('set', $i);
- $w->Selection('anchor', $i);
- $w->See($i);
-}
-
-#----------------------------------------------------------------------
-# Accelerator key bindings
-#----------------------------------------------------------------------
-# tkIconList_KeyPress --
-#
-# Gets called when user enters an arbitrary key in the listbox.
-#
-sub KeyPress {
- my($w, $key) = @_;
- $w->{'_ILAccel'} .= $key;
- $w->Goto($w->{'_ILAccel'});
- eval {
- $w->afterCancel($w->{'_ILAccel_afterid'});
- };
- $w->{'_ILAccel_afterid'} = $w->after(500, ['Reset', $w]);
-}
-
-sub Goto {
- my($w, $text) = @_;
- return unless (exists $w->{'list'});
- return if (not defined $text or $text eq '');
-#XXX curItem never used my $start = (!exists $w->{'curItem'} ? 0 : $w->{'curItem'});
- my $start = 0;
- $text = lc($text);
- my $theIndex = -1;
- my $less = 0;
- my $len = length($text);
- my $i = $start;
- # Search forward until we find a filename whose prefix is an exact match
- # with $text
- while (1) {
- my $sub = substr($w->{'textList'}{$i}, 0, $len);
- if ($text eq $sub) {
- $theIndex = $i;
- last;
- }
- ++$i;
- $i = 0 if ($i == $w->{'numItems'});
- last if ($i == $start);
- }
- if ($theIndex > -1) {
- $w->Selection(qw(clear 0 end));
- $w->Selection('set', $theIndex);
- $w->Selection('anchor', $theIndex);
- $w->See($theIndex);
- }
-}
-
-sub Reset {
- my $w = shift;
- undef $w->{'_ILAccel'};
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/Image.pm b/Master/tlpkg/tlperl/lib/Tk/Image.pm
deleted file mode 100644
index 0f41c387fc2..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Image.pm
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright (c) 1995-2003 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-package Tk::Image;
-
-# This module does for images what Tk::Widget does for widgets:
-# provides a base class for them to inherit from.
-require DynaLoader;
-
-use base qw(DynaLoader Tk); # but are they ?
-
-use vars qw($VERSION);
-$VERSION = '4.011'; # $Id: //depot/Tkutf8/Tk/Image.pm#11 $
-
-sub new
-{
- my $package = shift;
- my $widget = shift;
- $package->InitClass($widget);
- my $leaf = $package->Tk_image;
- my $obj = $widget->Tk::image('create',$leaf,@_);
- $obj = $widget->_object($obj) unless (ref $obj);
- return bless $obj,$package;
-}
-
-sub Install
-{
- # Dynamically loaded image types can install standard images here
- my ($class,$mw) = @_;
-}
-
-sub ClassInit
-{
- # Carry out class bindings (or whatever)
- my ($package,$mw) = @_;
- return $package;
-}
-
-require Tk::Submethods;
-
-Direct Tk::Submethods ('image' => [qw(delete width height type)]);
-
-sub Tk::Widget::imageNames
-{
- my $w = shift;
- $w->image('names',@_);
-}
-
-sub Tk::Widget::imageTypes
-{
- my $w = shift;
- map("\u$_",$w->image('types',@_));
-}
-
-sub Construct
-{
- my ($base,$name) = @_;
- my $class = (caller(0))[0];
-
- # Hack for broken ->isa in perl5.6.0
- delete ${"$class\::"}{'::ISA::CACHE::'} if $] == 5.006;
-
- *{"Tk::Widget::$name"} = sub { $class->new(@_) };
-}
-
-# This is here to prevent AUTOLOAD trying to find it.
-sub DESTROY
-{
- my $i = shift;
- # maybe do image delete ???
-}
-
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/ItemStyle.pm b/Master/tlpkg/tlperl/lib/Tk/ItemStyle.pm
deleted file mode 100644
index 85c6c11a76c..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/ItemStyle.pm
+++ /dev/null
@@ -1,38 +0,0 @@
-package Tk::ItemStyle;
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/ItemStyle.pm#4 $
-
-require Tk;
-use base qw(Tk);
-require Tk::Widget;
-Construct Tk::Widget 'ItemStyle';
-
-Tk::Methods ('delete');
-
-sub new
-{
- my $package = shift;
- my $widget = shift;
- my $type = shift;
- my %args = @_;
- $args{'-refwindow'} = $widget unless exists $args{'-refwindow'};
- $package->InitClass($widget);
- my $obj = $widget->itemstyle($type, %args);
- return bless $obj,$package;
-}
-
-sub Install
-{
- # Dynamically loaded image types can install standard images here
- my ($class,$mw) = @_;
-}
-
-sub ClassInit
-{
- # Carry out class bindings (or whatever)
- my ($package,$mw) = @_;
- return $package;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/JPEG.pm b/Master/tlpkg/tlperl/lib/Tk/JPEG.pm
deleted file mode 100644
index 9e0ef771f77..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/JPEG.pm
+++ /dev/null
@@ -1,50 +0,0 @@
-package Tk::JPEG;
-require DynaLoader;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #2$ =~ /\D(\d+)\s*$/;
-use Tk 800.015;
-require Tk::Image;
-require Tk::Photo;
-require DynaLoader;
-
-use vars qw($VERSION $XS_VERSION);
-
-@ISA = qw(DynaLoader);
-
-$XS_VERSION = $Tk::VERSION;
-bootstrap Tk::JPEG;
-
-1;
-
-__END__
-
-=head1 NAME
-
-Tk::JPEG - JPEG loader for Tk::Photo
-
-=head1 SYNOPSIS
-
- use Tk;
- use Tk::JPEG;
-
- my $image = $widget->Photo('-format' => 'jpeg', -file => 'something.jpg');
-
-
-=head1 DESCRIPTION
-
-This is an extension for Tk800.015 and later which supplies
-JPEG format loader for Photo image type.
-
-This version also works with Tk804 series.
-
-JPEG access is via release 5 of the The Independent JPEG Group's (IJG)
-free JPEG software.
-
-=head1 AUTHOR
-
-Nick Ing-Simmons E<lt>nick@ing-simmons.netE<gt>
-
-=cut
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/LabEntry.pm b/Master/tlpkg/tlperl/lib/Tk/LabEntry.pm
deleted file mode 100644
index 64cb392fa8c..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/LabEntry.pm
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright (c) 1995-2003 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-
-package Tk::LabEntry;
-
-use vars qw($VERSION);
-$VERSION = '4.006'; # $Id: //depot/Tkutf8/Tk/LabEntry.pm#6 $
-
-use base qw(Tk::Frame);
-use Tk::widgets qw(Frame Label Entry);
-
-Construct Tk::Widget 'LabEntry';
-
-sub Populate
-{
- require Tk::Entry;
- # LabeledEntry constructor.
- #
- my($cw, $args) = @_;
- $cw->SUPER::Populate($args);
- # Advertised subwidgets: entry.
- my $e = $cw->Entry();
- $e->pack('-expand' => 1, '-fill' => 'both');
- $cw->Advertise('entry' => $e );
- $cw->ConfigSpecs(DEFAULT => [$e]);
- $cw->Delegates(DEFAULT => $e);
- $cw->AddScrollbars($e) if (exists $args->{-scrollbars});
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/LabFrame.pm b/Master/tlpkg/tlperl/lib/Tk/LabFrame.pm
deleted file mode 100644
index 6fcab1acc56..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/LabFrame.pm
+++ /dev/null
@@ -1,138 +0,0 @@
-#
-# Labeled frame. Derives from Tk::Frame, but intercepts the labeling
-# part.
-
-package Tk::LabFrame;
-
-use vars qw($VERSION);
-$VERSION = '4.010'; # $Id: //depot/Tkutf8/Tixish/LabFrame.pm#11 $
-
-use Tk;
-use base qw(Tk::Frame);
-Tk::Widget->Construct('LabFrame');
-
-sub autoLabel { 0 }
-
-sub Populate {
- my ($cw, $args) = @_;
-
- $cw->{m_geoMgr} = "";
-
- my $border = $cw->Component(
- Frame => 'border',
- -relief => 'groove',
- -bd => 2,
- );
-
- my $pad = $border->Frame;
- $cw->Advertise(pad => $pad);
-
- my $frame = $border->Frame;
- $cw->Advertise(frame => $frame);
-
- my $label = $cw->Component(Label => 'label');
-
- $cw->SUPER::Populate($args);
-
- $cw->Delegates(DEFAULT => $frame);
- $cw->ConfigSpecs(
- -background => [[qw/SELF ADVERTISED/],
- qw/background Background/],
- -borderwidth => [$border, qw/borderWidth Border 2/],
- -font => [$label, qw/font Font/],
- -foreground => [$label, qw/foreground Foreground black/],
- -label => [{-text => $label}, qw/label Label/],
- -labelside => [qw/METHOD labelSide LabelSide acrosstop/],
- -labelvariable => [{-textvariable => $label}],
- -relief => [$border, qw/relief Relief groove/],
- DEFAULT => [$frame]
- );
- return $cw;
-}
-
-use Tk::Submethods(
- form => [qw/check forget grid info slaves/],
- grid => [qw/bbox columnconfigure configure forget info location
- propagate rowconfigure remove size slaves/],
- pack => [qw/forget info propagate slaves/],
- place => [qw/forget info slaves/]
-);
-
-sub labelside {
- my ($cw, $side) = @_;
- return $cw->{Configure}{-labelside} unless $side;
-
- my $border = $cw->Subwidget('border');
- my $pad = $cw->Subwidget('pad');
- my $frame = $cw->Subwidget('frame');
- my $label = $cw->Subwidget('label');
-
- ## packForget/formForget as appropriate
- foreach ($border, $label, $pad, $frame) {
- $_->formForget if $cw->{m_geoMgr} eq "form";
- $_->packForget if ($cw->{m_geoMgr} eq "pack" && $_->ismapped);
- }
-
- if ($side eq "acrosstop") {
-
- my $y = $label->reqheight / 2;
- my $ph = $y - ($border->cget(-bd));
- $ph = 0 if $ph < 0;
-
- $label->form(qw/-top 0 -left 4 -padx 6 -pady 2/);
- $border->form(-top => $y,
- qw/-bottom -1 -left 0 -right -1 -padx 2 -pady 2/);
- $pad->form(-bottom => $ph,
- qw/-top 0 -left 0 -right -1/);
- $frame->form(-top => $pad,
- qw/-bottom -1 -left 0 -right -1 -fill both/);
- $cw->{m_geoMgr} = "form";
-
- } else {
-
- $label->pack(-side => $side);
- $frame->pack(-expand => 1, -fill => 'both');
- $border->pack(-side => $side, -expand => 1, -fill => 'both');
- $cw->{m_geoMgr} = "pack";
- }
-}
-
-sub form {
- my $cw = shift;
- $cw = $cw->Subwidget('frame')
- if (@_ && $_[0] =~ /^(?:slaves)$/);
- $cw->SUPER::form(@_);
-}
-
-sub grid {
- my $cw = shift;
- $cw = $cw->Subwidget('frame') if (@_ && $_[0] =~
- /^(?:bbox
- |columnconfigure
- |location
- |propagate
- |rowconfigure
- |size
- |slaves)
- $/x);
- $cw->SUPER::grid(@_);
-}
-
-
-sub pack {
- my $cw = shift;
- $cw = $cw->Subwidget('frame')
- if (@_ && $_[0] =~ /^(?:propagate|slaves)$/);
- $cw->SUPER::pack(@_);
-}
-
-sub place {
- my $cw = shift;
- $cw = $cw->Subwidget('frame')
- if (@_ && $_[0] =~ /^(?:slaves)$/);
- $cw->SUPER::place(@_);
-}
-
-1;
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/LabRadio.pm b/Master/tlpkg/tlperl/lib/Tk/LabRadio.pm
deleted file mode 100644
index 69e07b12f01..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/LabRadio.pm
+++ /dev/null
@@ -1,63 +0,0 @@
-# Class LabeledRadiobutton
-
-package Tk::LabRadiobutton;
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/LabRadio.pm#4 $
-
-require Tk::Frame;
-use base qw(Tk::Frame);
-
-Construct Tk::Widget 'LabRadiobutton';
-
-
-# Although there is no fundamental reason why -radiobuttons
-# should be fixed at create time converting to METHOD form
-# is extra work an this can serve as an example of CreateArgs
-# checking.
-
-sub CreateArgs
-{
- my ($package,$parent,$args) = @_;
- $parent->BackTrace("Must specify -radiobuttons for $package")
- unless (defined $args->{'-radiobuttons'});
- return $package->SUPER::CreateArgs($parent,$args);
-}
-
-sub Populate
-{
- require Tk::Radiobutton;
-
- my ($cw,$args) = @_;
- $cw->SUPER::Populate($args);
-
- # LabeledRadiobutton(s) constructor.
- #
- # Advertised subwidgets: the name(s) of your radiobutton(s).
-
-
-
- my (@widgets) = ();
-
- my $rl;
- foreach $rl (@{$args->{'-radiobuttons'}})
- {
- my $r = $cw->Component( Radiobutton => $rl,
- -text => $rl,
- -value => $rl );
- $r->pack(-side => 'left', -expand => 1, -fill => 'both');
- push(@widgets,$r);
- $cw->{Configure}{-value} = $rl;
- }
-
- $cw->BackTrace('No buttons') unless (@widgets);
-
- $cw->ConfigSpecs('-variable' => [ \@widgets, undef, undef, \$cw->{Configure}{-value} ],
- '-radiobuttons' => [ 'PASSIVE', undef, undef, undef ],
- '-value' => [ 'PASSIVE', undef, undef, $cw->{Configure}{-value} ],
- 'DEFAULT' => [ \@widgets ]
- );
-}
-
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/Label.pm b/Master/tlpkg/tlperl/lib/Tk/Label.pm
deleted file mode 100644
index ebea1741c2f..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Label.pm
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (c) 1995-2003 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-
-package Tk::Label;
-require Tk;
-
-
-use vars qw($VERSION);
-$VERSION = '4.006'; # $Id: //depot/Tkutf8/Tk/Label.pm#6 $
-
-use base qw(Tk::Widget);
-
-Construct Tk::Widget 'Label';
-
-sub Tk_cmd { \&Tk::label }
-
-1;
-
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Labelframe.pm b/Master/tlpkg/tlperl/lib/Tk/Labelframe.pm
deleted file mode 100644
index 14c577b5e35..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Labelframe.pm
+++ /dev/null
@@ -1,16 +0,0 @@
-package Tk::Labelframe;
-use strict;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #2 $ =~ /#(\d+)/;
-
-# New widget which is a kind of Frame with a label ...
-
-use base qw(Tk::Frame);
-
-Construct Tk::Widget 'Labelframe';
-
-sub Tk_cmd { \&Tk::labelframe }
-
-1;
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Tk/Listbox.pm b/Master/tlpkg/tlperl/lib/Tk/Listbox.pm
deleted file mode 100644
index 249a8eed7f4..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Listbox.pm
+++ /dev/null
@@ -1,910 +0,0 @@
-# Converted from listbox.tcl --
-#
-# This file defines the default bindings for Tk listbox widgets.
-#
-# @(#) listbox.tcl 1.7 94/12/17 16:05:18
-#
-# Copyright (c) 1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-
-# Modifications from standard Listbox.pm
-# --------------------------------------
-# 27-JAN-2001 Alasdair Allan
-# Modified for local use by adding tied scalar and arrays
-# Implemented TIESCALAR, TIEARRAY, FETCH, FETCHSIZE, STORE, CLEAR & EXTEND
-# 31-JAN-2001 Alasdair Allan
-# Made changes suggested by Tim Jenness
-# 03-FEB-2001 Alasdair Allan
-# Modified STORE for tied scalars to clear and select elements
-# 06-FEB-2001 Alasdair Allan
-# Added POD documentation for tied listbox
-# 13-FEB-2001 Alasdair Allan
-# Implemented EXISTS, DELETE, PUSH, POP, SHIFT & UNSHIFT for tied arrays
-# 14-FEB-2001 Alasdair Allan
-# Implemented SPLICE for tied arrays, all tied functionality in place
-# 16-FEB-2001 Alasdair Allan
-# Tweak to STORE interface for tied scalars
-# 23-FEB-2001 Alasdair Allan
-# Added flag to FETCH for tied scalars, modified to return hashes
-# 24-FEB-2001 Alasdair Allan
-# Updated Pod documentation
-#
-
-package Tk::Listbox;
-
-use vars qw($VERSION @Selection $Prev);
-use strict;
-$VERSION = sprintf '4.%03d', q$Revision: #14 $ =~ /\D(\d+)\s*$/;
-
-use Tk qw(Ev $XS_VERSION);
-use Tk::Clipboard ();
-use AutoLoader;
-
-use base qw(Tk::Clipboard Tk::Widget);
-
-Construct Tk::Widget 'Listbox';
-
-bootstrap Tk::Listbox;
-
-sub Tk_cmd { \&Tk::listbox }
-
-Tk::Methods('activate','bbox','curselection','delete','get','index',
- 'insert','itemcget','itemconfigure','nearest','scan','see',
- 'selection','size','xview','yview');
-
-use Tk::Submethods ( 'selection' => [qw(anchor clear includes set)],
- 'scan' => [qw(mark dragto)],
- 'xview' => [qw(moveto scroll)],
- 'yview' => [qw(moveto scroll)],
- );
-
-*Getselected = \&getSelected;
-
-sub clipEvents
-{
- return qw[Copy];
-}
-
-sub BalloonInfo
-{
- my ($listbox,$balloon,$X,$Y,@opt) = @_;
- my $e = $listbox->XEvent;
- return if !$e;
- my $index = $listbox->index('@' . $e->x . ',' . $e->y);
- foreach my $opt (@opt)
- {
- my $info = $balloon->GetOption($opt,$listbox);
- if ($opt =~ /^-(statusmsg|balloonmsg)$/ && UNIVERSAL::isa($info,'ARRAY'))
- {
- $balloon->Subclient($index);
- if (defined $info->[$index])
- {
- return $info->[$index];
- }
- return '';
- }
- return $info;
- }
-}
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $class->SUPER::ClassInit($mw);
- # Standard Motif bindings:
- $mw->bind($class,'<1>',[sub {
- my $w = shift;
- if (Tk::Exists($w)) {
- $w->BeginSelect(@_);
- }
- }, Ev('index',Ev('@'))]);
- $mw->bind($class, '<Double-1>' => \&Tk::NoOp);
- $mw->bind($class,'<B1-Motion>',['Motion',Ev('index',Ev('@'))]);
- $mw->bind($class,'<ButtonRelease-1>','ButtonRelease_1');
- ;
- $mw->bind($class,'<Shift-1>',['BeginExtend',Ev('index',Ev('@'))]);
- $mw->bind($class,'<Control-1>',['BeginToggle',Ev('index',Ev('@'))]);
-
- $mw->bind($class,'<B1-Leave>',['AutoScan',Ev('x'),Ev('y')]);
- $mw->bind($class,'<B1-Enter>','CancelRepeat');
- $mw->bind($class,'<Up>',['UpDown',-1]);
- $mw->bind($class,'<Shift-Up>',['ExtendUpDown',-1]);
- $mw->bind($class,'<Down>',['UpDown',1]);
- $mw->bind($class,'<Shift-Down>',['ExtendUpDown',1]);
-
- $mw->XscrollBind($class);
- $mw->bind($class,'<Prior>', sub {
- my $w = shift;
- $w->yview('scroll',-1,'pages');
- $w->activate('@0,0');
- });
- $mw->bind($class,'<Next>', sub {
- my $w = shift;
- $w->yview('scroll',1,'pages');
- $w->activate('@0,0');
- });
- $mw->bind($class,'<Control-Prior>', ['xview', 'scroll', -1, 'pages']);
- $mw->bind($class,'<Control-Next>', ['xview', 'scroll', 1, 'pages']);
- # <Home> and <End> defined in XscrollBind
- $mw->bind($class,'<Control-Home>','Cntrl_Home');
- ;
- $mw->bind($class,'<Shift-Control-Home>',['DataExtend',0]);
- $mw->bind($class,'<Control-End>','Cntrl_End');
- ;
- $mw->bind($class,'<Shift-Control-End>',['DataExtend','end']);
- # XXX What about <<Copy>>? Already handled in Tk::Clipboard?
- # $class->clipboardOperations($mw,'Copy');
- $mw->bind($class,'<space>',['BeginSelect',Ev('index','active')]);
- $mw->bind($class,'<Select>',['BeginSelect',Ev('index','active')]);
- $mw->bind($class,'<Control-Shift-space>',['BeginExtend',Ev('index','active')]);
- $mw->bind($class,'<Shift-Select>',['BeginExtend',Ev('index','active')]);
- $mw->bind($class,'<Escape>','Cancel');
- $mw->bind($class,'<Control-slash>','SelectAll');
- $mw->bind($class,'<Control-backslash>','Cntrl_backslash');
- ;
- # Additional Tk bindings that aren't part of the Motif look and feel:
- $mw->bind($class,'<2>',['scan','mark',Ev('x'),Ev('y')]);
- $mw->bind($class,'<B2-Motion>',['scan','dragto',Ev('x'),Ev('y')]);
-
- $mw->MouseWheelBind($class); # XXX Both needed?
- $mw->YMouseWheelBind($class);
- return $class;
-}
-
-1;
-__END__
-
-sub TIEARRAY {
- my ( $class, $obj, %options ) = @_;
- return bless {
- OBJECT => \$obj,
- OPTION => \%options }, $class;
-}
-
-
-
-sub TIESCALAR {
- my ( $class, $obj, %options ) = @_;
- return bless {
- OBJECT => \$obj,
- OPTION => \%options }, $class;
-}
-
-# FETCH
-# -----
-# Return either the full contents or only the selected items in the
-# box depending on whether we tied it to an array or scalar respectively
-sub FETCH {
- my $class = shift;
-
- my $self = ${$class->{OBJECT}};
- my %options = %{$class->{OPTION}} if defined $class->{OPTION};;
-
- # Define the return variable
- my $result;
-
- # Check whether we are have a tied array or scalar quantity
- if ( @_ ) {
- my $i = shift;
- # The Tk:: Listbox has been tied to an array, we are returning
- # an array list of the current items in the Listbox
- $result = $self->get($i);
- } else {
- # The Tk::Listbox has been tied to a scalar, we are returning a
- # reference to an array or hash containing the currently selected items
- my ( @array, %hash );
-
- if ( defined $options{ReturnType} ) {
-
- # THREE-WAY SWITCH
- if ( $options{ReturnType} eq "index" ) {
- $result = [$self->curselection];
- } elsif ( $options{ReturnType} eq "element" ) {
- foreach my $selection ( $self->curselection ) {
- push(@array,$self->get($selection)); }
- $result = \@array;
- } elsif ( $options{ReturnType} eq "both" ) {
- foreach my $selection ( $self->curselection ) {
- %hash = ( %hash, $selection => $self->get($selection)); }
- $result = \%hash;
- }
- } else {
- # return elements (default)
- foreach my $selection ( $self->curselection ) {
- push(@array,$self->get($selection)); }
- $result = \@array;
- }
- }
- return $result;
-}
-
-# FETCHSIZE
-# ---------
-# Return the number of elements in the Listbox when tied to an array
-sub FETCHSIZE {
- my $class = shift;
- return ${$class->{OBJECT}}->size();
-}
-
-# STORE
-# -----
-# If tied to an array we will modify the Listbox contents, while if tied
-# to a scalar we will select and clear elements.
-sub STORE {
-
- if ( scalar(@_) == 2 ) {
- # we have a tied scalar
- my ( $class, $selected ) = @_;
- my $self = ${$class->{OBJECT}};
- my %options = %{$class->{OPTION}} if defined $class->{OPTION};;
-
- # clear currently selected elements
- $self->selectionClear(0,'end');
-
- # set selected elements
- if ( defined $options{ReturnType} ) {
-
- # THREE-WAY SWITCH
- if ( $options{ReturnType} eq "index" ) {
- for ( my $i=0; $i < scalar(@$selected) ; $i++ ) {
- for ( my $j=0; $j < $self->size() ; $j++ ) {
- if( $j == $$selected[$i] ) {
- $self->selectionSet($j); last; }
- }
- }
- } elsif ( $options{ReturnType} eq "element" ) {
- for ( my $k=0; $k < scalar(@$selected) ; $k++ ) {
- for ( my $l=0; $l < $self->size() ; $l++ ) {
- if( $self->get($l) eq $$selected[$k] ) {
- $self->selectionSet($l); last; }
- }
- }
- } elsif ( $options{ReturnType} eq "both" ) {
- foreach my $key ( keys %$selected ) {
- $self->selectionSet($key)
- if $$selected{$key} eq $self->get($key);
- }
- }
- } else {
- # return elements (default)
- for ( my $k=0; $k < scalar(@$selected) ; $k++ ) {
- for ( my $l=0; $l < $self->size() ; $l++ ) {
- if( $self->get($l) eq $$selected[$k] ) {
- $self->selectionSet($l); last; }
- }
- }
- }
-
- } else {
- # we have a tied array
- my ( $class, $index, $value ) = @_;
- my $self = ${$class->{OBJECT}};
-
- # check size of current contents list
- my $sizeof = $self->size();
-
- if ( $index <= $sizeof ) {
- # Change a current listbox entry
- $self->delete($index);
- $self->insert($index, $value);
- } else {
- # Add a new value
- if ( defined $index ) {
- $self->insert($index, $value);
- } else {
- $self->insert("end", $value);
- }
- }
- }
-}
-
-# CLEAR
-# -----
-# Empty the Listbox of contents if tied to an array
-sub CLEAR {
- my $class = shift;
- ${$class->{OBJECT}}->delete(0, 'end');
-}
-
-# EXTEND
-# ------
-# Do nothing and be happy about it
-sub EXTEND { }
-
-# PUSH
-# ----
-# Append elements onto the Listbox contents
-sub PUSH {
- my ( $class, @list ) = @_;
- ${$class->{OBJECT}}->insert('end', @list);
-}
-
-# POP
-# ---
-# Remove last element of the array and return it
-sub POP {
- my $class = shift;
-
- my $value = ${$class->{OBJECT}}->get('end');
- ${$class->{OBJECT}}->delete('end');
- return $value;
-}
-
-# SHIFT
-# -----
-# Removes the first element and returns it
-sub SHIFT {
- my $class = shift;
-
- my $value = ${$class->{OBJECT}}->get(0);
- ${$class->{OBJECT}}->delete(0);
- return $value
-}
-
-# UNSHIFT
-# -------
-# Insert elements at the beginning of the Listbox
-sub UNSHIFT {
- my ( $class, @list ) = @_;
- ${$class->{OBJECT}}->insert(0, @list);
-}
-
-# DELETE
-# ------
-# Delete element at specified index
-sub DELETE {
- my ( $class, @list ) = @_;
-
- my $value = ${$class->{OBJECT}}->get(@list);
- ${$class->{OBJECT}}->delete(@list);
- return $value;
-}
-
-# EXISTS
-# ------
-# Returns true if the index exist, and undef if not
-sub EXISTS {
- my ( $class, $index ) = @_;
- return undef unless ${$class->{OBJECT}}->get($index);
-}
-
-# SPLICE
-# ------
-# Performs equivalent of splice on the listbox contents
-sub SPLICE {
- my $class = shift;
-
- my $self = ${$class->{OBJECT}};
-
- # check for arguments
- my @elements;
- if ( scalar(@_) == 0 ) {
- # none
- @elements = $self->get(0,'end');
- $self->delete(0,'end');
- return wantarray ? @elements : $elements[scalar(@elements)-1];;
-
- } elsif ( scalar(@_) == 1 ) {
- # $offset
- my ( $offset ) = @_;
- if ( $offset < 0 ) {
- my $start = $self->size() + $offset;
- if ( $start > 0 ) {
- @elements = $self->get($start,'end');
- $self->delete($start,'end');
- return wantarray ? @elements : $elements[scalar(@elements)-1];
- } else {
- return undef;
- }
- } else {
- @elements = $self->get($offset,'end');
- $self->delete($offset,'end');
- return wantarray ? @elements : $elements[scalar(@elements)-1];
- }
-
- } elsif ( scalar(@_) == 2 ) {
- # $offset and $length
- my ( $offset, $length ) = @_;
- if ( $offset < 0 ) {
- my $start = $self->size() + $offset;
- my $end = $self->size() + $offset + $length - 1;
- if ( $start > 0 ) {
- @elements = $self->get($start,$end);
- $self->delete($start,$end);
- return wantarray ? @elements : $elements[scalar(@elements)-1];
- } else {
- return undef;
- }
- } else {
- @elements = $self->get($offset,$offset+$length-1);
- $self->delete($offset,$offset+$length-1);
- return wantarray ? @elements : $elements[scalar(@elements)-1];
- }
-
- } else {
- # $offset, $length and @list
- my ( $offset, $length, @list ) = @_;
- if ( $offset < 0 ) {
- my $start = $self->size() + $offset;
- my $end = $self->size() + $offset + $length - 1;
- if ( $start > 0 ) {
- @elements = $self->get($start,$end);
- $self->delete($start,$end);
- $self->insert($start,@list);
- return wantarray ? @elements : $elements[scalar(@elements)-1];
- } else {
- return undef;
- }
- } else {
- @elements = $self->get($offset,$offset+$length-1);
- $self->delete($offset,$offset+$length-1);
- $self->insert($offset,@list);
- return wantarray ? @elements : $elements[scalar(@elements)-1];
- }
- }
-}
-
-# ----
-
-#
-# Bind --
-# This procedure is invoked the first time the mouse enters a listbox
-# widget or a listbox widget receives the input focus. It creates
-# all of the class bindings for listboxes.
-#
-# Arguments:
-# event - Indicates which event caused the procedure to be invoked
-# (Enter or FocusIn). It is used so that we can carry out
-# the functions of that event in addition to setting up
-# bindings.
-
-sub xyIndex
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- return $w->index($Ev->xy);
-}
-
-sub ButtonRelease_1
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->CancelRepeat;
- $w->activate($Ev->xy);
-}
-
-
-sub Cntrl_Home
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->activate(0);
- $w->see(0);
- $w->selectionClear(0,'end');
- $w->selectionSet(0);
- $w->eventGenerate("<<ListboxSelect>>");
-}
-
-
-sub Cntrl_End
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->activate('end');
- $w->see('end');
- $w->selectionClear(0,'end');
- $w->selectionSet('end');
- $w->eventGenerate("<<ListboxSelect>>");
-}
-
-
-sub Cntrl_backslash
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- if ($w->cget('-selectmode') ne 'browse')
- {
- $w->selectionClear(0,'end');
- $w->eventGenerate("<<ListboxSelect>>");
- }
-}
-
-# BeginSelect --
-#
-# This procedure is typically invoked on button-1 presses. It begins
-# the process of making a selection in the listbox. Its exact behavior
-# depends on the selection mode currently in effect for the listbox;
-# see the Motif documentation for details.
-#
-# Arguments:
-# w - The listbox widget.
-# el - The element for the selection operation (typically the
-# one under the pointer). Must be in numerical form.
-sub BeginSelect
-{
- my $w = shift;
- my $el = shift;
- if ($w->cget('-selectmode') eq 'multiple')
- {
- if ($w->selectionIncludes($el))
- {
- $w->selectionClear($el)
- }
- else
- {
- $w->selectionSet($el)
- }
- }
- else
- {
- $w->selectionClear(0,'end');
- $w->selectionSet($el);
- $w->selectionAnchor($el);
- @Selection = ();
- $Prev = $el
- }
- $w->focus if ($w->cget('-takefocus'));
- $w->eventGenerate("<<ListboxSelect>>");
-}
-# Motion --
-#
-# This procedure is called to process mouse motion events while
-# button 1 is down. It may move or extend the selection, depending
-# on the listbox's selection mode.
-#
-# Arguments:
-# w - The listbox widget.
-# el - The element under the pointer (must be a number).
-sub Motion
-{
- my $w = shift;
- my $el = shift;
- if (defined($Prev) && $el == $Prev)
- {
- return;
- }
- my $anchor = $w->index('anchor');
- my $mode = $w->cget('-selectmode');
- if ($mode eq 'browse')
- {
- $w->selectionClear(0,'end');
- $w->selectionSet($el);
- $Prev = $el;
- $w->eventGenerate("<<ListboxSelect>>");
- }
- elsif ($mode eq 'extended')
- {
- my $i = $Prev;
- if (!defined $i || $i eq '')
- {
- $i = $el;
- $w->selectionSet($el);
- }
- if ($w->selectionIncludes('anchor'))
- {
- $w->selectionClear($i,$el);
- $w->selectionSet('anchor',$el)
- }
- else
- {
- $w->selectionClear($i,$el);
- $w->selectionClear('anchor',$el)
- }
- if (!@Selection)
- {
- @Selection = $w->curselection;
- }
- while ($i < $el && $i < $anchor)
- {
- if (Tk::lsearch(\@Selection,$i) >= 0)
- {
- $w->selectionSet($i)
- }
- $i++
- }
- while ($i > $el && $i > $anchor)
- {
- if (Tk::lsearch(\@Selection,$i) >= 0)
- {
- $w->selectionSet($i)
- }
- $i--
- }
- $Prev = $el;
- $w->eventGenerate("<<ListboxSelect>>");
- }
-}
-# BeginExtend --
-#
-# This procedure is typically invoked on shift-button-1 presses. It
-# begins the process of extending a selection in the listbox. Its
-# exact behavior depends on the selection mode currently in effect
-# for the listbox; see the Motif documentation for details.
-#
-# Arguments:
-# w - The listbox widget.
-# el - The element for the selection operation (typically the
-# one under the pointer). Must be in numerical form.
-sub BeginExtend
-{
- my $w = shift;
- my $el = shift;
- if ($w->cget('-selectmode') eq 'extended' && $w->selectionIncludes('anchor'))
- {
- $w->Motion($el)
- }
- else
- {
- # No selection yet; simulate the begin-select operation.
- $w->BeginSelect($el);
- }
-}
-# BeginToggle --
-#
-# This procedure is typically invoked on control-button-1 presses. It
-# begins the process of toggling a selection in the listbox. Its
-# exact behavior depends on the selection mode currently in effect
-# for the listbox; see the Motif documentation for details.
-#
-# Arguments:
-# w - The listbox widget.
-# el - The element for the selection operation (typically the
-# one under the pointer). Must be in numerical form.
-sub BeginToggle
-{
- my $w = shift;
- my $el = shift;
- if ($w->cget('-selectmode') eq 'extended')
- {
- @Selection = $w->curselection();
- $Prev = $el;
- $w->selectionAnchor($el);
- if ($w->selectionIncludes($el))
- {
- $w->selectionClear($el)
- }
- else
- {
- $w->selectionSet($el)
- }
- $w->eventGenerate("<<ListboxSelect>>");
- }
-}
-# AutoScan --
-# This procedure is invoked when the mouse leaves an entry window
-# with button 1 down. It scrolls the window up, down, left, or
-# right, depending on where the mouse left the window, and reschedules
-# itself as an "after" command so that the window continues to scroll until
-# the mouse moves back into the window or the mouse button is released.
-#
-# Arguments:
-# w - The entry window.
-# x - The x-coordinate of the mouse when it left the window.
-# y - The y-coordinate of the mouse when it left the window.
-sub AutoScan
-{
- my $w = shift;
- return if !Tk::Exists($w);
- my $x = shift;
- my $y = shift;
- if ($y >= $w->height)
- {
- $w->yview('scroll',1,'units')
- }
- elsif ($y < 0)
- {
- $w->yview('scroll',-1,'units')
- }
- elsif ($x >= $w->width)
- {
- $w->xview('scroll',2,'units')
- }
- elsif ($x < 0)
- {
- $w->xview('scroll',-2,'units')
- }
- else
- {
- return;
- }
- $w->Motion($w->index("@" . $x . ',' . $y));
- $w->RepeatId($w->after(50,'AutoScan',$w,$x,$y));
-}
-# UpDown --
-#
-# Moves the location cursor (active element) up or down by one element,
-# and changes the selection if we're in browse or extended selection
-# mode.
-#
-# Arguments:
-# w - The listbox widget.
-# amount - +1 to move down one item, -1 to move back one item.
-sub UpDown
-{
- my $w = shift;
- my $amount = shift;
- $w->activate($w->index('active')+$amount);
- $w->see('active');
- my $mode = $w->cget('-selectmode');
- if ($mode eq 'browse')
- {
- $w->selectionClear(0,'end');
- $w->selectionSet('active');
- $w->eventGenerate("<<ListboxSelect>>");
- }
- elsif ($mode eq 'extended')
- {
- $w->selectionClear(0,'end');
- $w->selectionSet('active');
- $w->selectionAnchor('active');
- $Prev = $w->index('active');
- @Selection = ();
- $w->eventGenerate("<<ListboxSelect>>");
- }
-}
-# ExtendUpDown --
-#
-# Does nothing unless we're in extended selection mode; in this
-# case it moves the location cursor (active element) up or down by
-# one element, and extends the selection to that point.
-#
-# Arguments:
-# w - The listbox widget.
-# amount - +1 to move down one item, -1 to move back one item.
-sub ExtendUpDown
-{
- my $w = shift;
- my $amount = shift;
- if ($w->cget('-selectmode') ne 'extended')
- {
- return;
- }
- my $active = $w->index('active');
- if (!@Selection)
- {
- $w->selectionSet($active);
- @Selection = $w->curselection;
- }
- $w->activate($active + $amount);
- $w->see('active');
- $w->Motion($w->index('active'))
-}
-# DataExtend
-#
-# This procedure is called for key-presses such as Shift-KEndData.
-# If the selection mode isn't multiple or extend then it does nothing.
-# Otherwise it moves the active element to el and, if we're in
-# extended mode, extends the selection to that point.
-#
-# Arguments:
-# w - The listbox widget.
-# el - An integer element number.
-sub DataExtend
-{
- my $w = shift;
- my $el = shift;
- my $mode = $w->cget('-selectmode');
- if ($mode eq 'extended')
- {
- $w->activate($el);
- $w->see($el);
- if ($w->selectionIncludes('anchor'))
- {
- $w->Motion($el)
- }
- }
- elsif ($mode eq 'multiple')
- {
- $w->activate($el);
- $w->see($el)
- }
-}
-# Cancel
-#
-# This procedure is invoked to cancel an extended selection in
-# progress. If there is an extended selection in progress, it
-# restores all of the items between the active one and the anchor
-# to their previous selection state.
-#
-# Arguments:
-# w - The listbox widget.
-sub Cancel
-{
- my $w = shift;
- if ($w->cget('-selectmode') ne 'extended' || !defined $Prev)
- {
- return;
- }
- my $first = $w->index('anchor');
- my $last = $Prev;
- if ($first > $last)
- {
- ($first, $last) = ($last, $first);
- }
- $w->selectionClear($first,$last);
- while ($first <= $last)
- {
- if (Tk::lsearch(\@Selection,$first) >= 0)
- {
- $w->selectionSet($first)
- }
- $first++
- }
- $w->eventGenerate("<<ListboxSelect>>");
-}
-# SelectAll
-#
-# This procedure is invoked to handle the "select all" operation.
-# For single and browse mode, it just selects the active element.
-# Otherwise it selects everything in the widget.
-#
-# Arguments:
-# w - The listbox widget.
-sub SelectAll
-{
- my $w = shift;
- my $mode = $w->cget('-selectmode');
- if ($mode eq 'single' || $mode eq 'browse')
- {
- $w->selectionClear(0,'end');
- $w->selectionSet('active')
- }
- else
- {
- $w->selectionSet(0,'end')
- }
- $w->eventGenerate("<<ListboxSelect>>");
-}
-
-# Perl/Tk extensions:
-sub SetList
-{
- my $w = shift;
- $w->delete(0,'end');
- $w->insert('end',@_);
-}
-
-sub deleteSelected
-{
- my $w = shift;
- my $i;
- foreach $i (reverse $w->curselection)
- {
- $w->delete($i);
- }
-}
-
-sub clipboardPaste
-{
- my $w = shift;
- my $index = $w->index('active') || $w->index($w->XEvent->xy);
- my $str;
- eval {local $SIG{__DIE__}; $str = $w->clipboardGet };
- return if $@;
- foreach (split("\n",$str))
- {
- $w->insert($index++,$_);
- }
-}
-
-sub getSelected
-{
- my ($w) = @_;
- my $i;
- my (@result) = ();
- foreach $i ($w->curselection)
- {
- push(@result,$w->get($i));
- }
- return (wantarray) ? @result : $result[0];
-}
-
-
-
-1;
-__END__
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/MMtry.pm b/Master/tlpkg/tlperl/lib/Tk/MMtry.pm
deleted file mode 100644
index 3ef2f8868ab..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/MMtry.pm
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright (c) 1995-2003 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-package Tk::MMtry;
-use Config;
-require Exporter;
-
-use vars qw($VERSION @EXPORT);
-$VERSION = sprintf '4.%03d', q$Revision: #9 $ =~ /\D(\d+)\s*$/;
-
-use base qw(Exporter);
-@EXPORT = qw(try_compile try_run);
-use strict;
-use File::Basename;
-use File::Spec;
-
-my $stderr_too = ($^O eq 'MSWin32') ? '' : '2>&1';
-
-sub try_compile
-{
- my ($file,$inc,$lib) = @_;
- $inc = [] unless $inc;
- $lib = [] unless $lib;
- my $out = basename($file,'.c').$Config{'exe_ext'};
- warn "Test Compiling $file\n";
- my $msgs = `$Config{'cc'} -o $out $Config{'ccflags'} @$inc $file @$lib $stderr_too`;
- my $ok = ($? == 0);
-# warn $msgs if $msgs;
- unlink($out) if (-f $out);
- return $ok;
-}
-
-sub try_run
-{
- my ($file,$inc,$lib) = @_;
- $inc = [] unless $inc;
- $lib = [] unless $lib;
- my $out = basename($file,'.c').$Config{'exe_ext'};
- warn "Test Compile/Run $file\n";
- my $msgs = `$Config{'cc'} -o $out $Config{'ccflags'} @$inc $file @$lib $stderr_too`;
- my $ok = ($? == 0);
-# warn "$Config{'cc'} -o $out $Config{'ccflags'} @$inc $file @$lib:\n$msgs" if $msgs;
- if ($ok)
- {
- my $path = File::Spec->rel2abs($out);
- $msgs = `$path $stderr_too`;
- $ok = ($? == 0);
-# warn "$path:$msgs" if $msgs;
- }
- unlink($out) if (-f $out);
- return $ok;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/MMutil.pm b/Master/tlpkg/tlperl/lib/Tk/MMutil.pm
deleted file mode 100644
index 84f3aa862f5..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/MMutil.pm
+++ /dev/null
@@ -1,600 +0,0 @@
-# Copyright (c) 1995-2003 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-package Tk::MMutil;
-use ExtUtils::MakeMaker;
-use Cwd;
-use Config;
-use Carp;
-use File::Basename;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #21 $ =~ /\D(\d+)\s*$/;
-
-# warn __FILE__." $VERSION\n";
-
-use Tk::MakeDepend;
-
-use Tk::Config qw(!$VERSION);
-use vars qw($IsWin32);
-
-*IsWin32 = \$main::IsWin32;
-$IsWin32 = ($^O eq 'MSWin32' || $Config{'ccflags'} =~ /-D_?WIN32_?/)
- unless defined $IsWin32;
-
-@MYEXPORT = qw(pasthru perldepend cflags const_config constants installbin c_o xs_o makefile manifypods);
-
-sub arch_prune
-{
- my $hash = shift;
- foreach (keys %$hash)
- {
- if ($win_arch eq 'x')
- {
- delete $hash->{$_} if /Win[A-Z0-9]/ or /OS2/ or /ImgUtil/ or /^x/;
- }
- elsif ($win_arch eq 'open32')
- {
- delete $hash->{$_} if /Unix|Mwm/ and not /tclUnix/;
- delete $hash->{$_} if /winMain|dllMain/;
- }
- elsif ($win_arch eq 'pm')
- {
- delete $hash->{$_}
- if /Unix|Mwm/ and not
- /tclUnix|Unix(3d|Button|Dialog|Color|Embed|Focus|Font|Menu|Scrlbr|Send|Int\.|Scale)/;
- delete $hash->{$_} if /os2Main|dllMain|tkOS2Dll|^x(colors\.c|gc\.)/;
- delete $hash->{$_} if /ImgUtil|tkWin[A-Z0-9]/ and not /OS2/;
- }
- elsif ($win_arch eq 'MSWin32')
- {
- delete $hash->{$_} if /Mwm/ and not /tclUnix/;
- delete $hash->{$_} if /winMain|dllMain/;
- # delete $hash->{$_} if /^Xrm/;
- }
- }
-}
-
-sub mTk_postamble
-{
- my ($self) = @_;
- my $dep = "config :: \$(C_FILES) \$(H_FILES)\n\t$self->{NOECHO}\$(NOOP)\n";
- my $mTk = $self->{'MTK'};
- $dep .= "# Begin Munging dependencies\n";
- foreach my $file (sort keys %$mTk)
- {
- $dep .= "$file : ".$mTk->{$file}." \$(TKDIR)/pTk/Tcl-pTk\n";
- $dep .= "\t\$(PERL) \$(TKDIR)/pTk/Tcl-pTk ".$mTk->{$file}." $file\n";
- }
- $dep .= "# End Munging dependencies\n\n";
- return $dep;
-}
-
-sub mTk_CHO
-{
- my $self = shift;
- my $mTk = shift;
- my $exc = shift;
- my %c;
- my %h;
- foreach (@{$self->{H}}) { $h{$_} = 1 }
- foreach (@{$self->{C}}) { $c{$_} = 1 }
- foreach (keys %$mTk)
- {
- if (/\.c$/)
- {
- $c{$_} = 1;
- }
- elsif (/\.h$/)
- {
- $h{$_} = 1;
- }
- }
- foreach (keys %$exc)
- {
- if (/\.c$/)
- {
- delete $c{$_};
- }
- elsif (/\.h$/)
- {
- delete $h{$_};
- }
- }
- while (@_)
- {
- my $name = shift;
- cluck("No $name") unless (exists $c{$name});
- delete $c{$name}
- }
- arch_prune(\%h);
- arch_prune(\%c);
- $self->{'H'} = [sort keys %h];
- $self->{'C'} = [sort keys %c];
- my(@o_files) = @{$self->{C}};
- $self->{O_FILES} = [grep s/\.c(pp|xx|c)?$/$self->{OBJ_EXT}/i, @o_files] ;
- $self->{'MTK'} = $mTk;
- my $tk = installed_tk();
- my $perl = $self->{'PERL'};
- if ($IsWin32 && !-f $perl && -f "$perl.exe")
- {
- print "perl=$perl X=$^X\n";
- $perl = "$perl.exe";
- $self->{'PERL'} = $perl;
- }
- foreach my $file (sort keys %$mTk)
- {
- unless (-f $file && -M $file < -M $mTk->{$file})
- {
- warn "Extracting $file\n";
- system($perl,"$tk/pTk/Tcl-pTk",$mTk->{$file},$file);
- }
- }
-}
-
-my %visited;
-
-sub abspath
-{
- my $dir = shift;
- my $here = getcwd() || die "Cannot get current directory:$!";
- if (chdir($dir))
- {
- $dir = getcwd();
- chdir($here) || die "Cannot cd back to $here:$!";
- }
- return $dir;
-}
-
-sub relpath
-{
- my ($path,$dir) = @_;
- unless (defined $dir)
- {
- $dir = (-d $path) ? $path : dirname($path);
- }
- if (defined $dir and -d $dir)
- {
- if ($path =~ m#^\Q$dir\E([/\\]?.*)$#)
- {
- my $base = $1;
- my $here = getcwd;
- if ($here =~ m#^\Q$dir\E([/\\]?.*)#)
- {
- my $depth = reverse($1);
- if ($depth)
- {
- $depth =~ s,[^/\\]+,..,g;
- }
- else
- {
- $depth = '.' ;
- }
- $depth =~ s,[/\\]+$,,;
- $base =~ s,^[/\\]+,,;
- $depth .= "/$base" if ($base);
- if (-e $depth)
- {
- # print "$path is $depth from $here\n";
- return $depth;
- }
- else
- {
- warn "Cannot find $depth\n";
- }
- }
- else
- {
- unless(exists $visited{$here})
- {
- $visited{$here} = 1;
- warn "$here does not start with $dir\n";
- warn "i.e. building outside Tk itself\n";
- }
- }
- }
- else
- {
- die "'$path' not under '$dir'\n";
- }
- }
- else
- {
- die "Cannot get directory for $path\n";
- }
- return $path;
-}
-
-use strict;
-
-sub upgrade_pic
-{
- my $flags = '';
- die 'upgrade_pic is obsolete';
- return $flags;
-}
-
-sub pasthru
-{
- my $self = shift;
- my $str = $self->MM::pasthru;
- if ($str =~ s/^\s+INC=.*\n//m)
- {
- $str = "# - Do NOT pasthru INC for Tk - it is computed by subdir\n$str"
- }
- if ($str =~ s/\bLIB="\$\(LIB\)"//)
- {
- $str = qq[# - Drop LIB="\$(LIB)" - not used\n$str];
- }
- $str = "#Tk::MMutil pasthru\n$str";
- return $str;
-}
-
-sub perldepend
-{
- my $self = shift;
- my $str = $self->MM::perldepend;
- my $name;
- my %c;
- foreach my $file (@{$self->{'C'}})
- {
- $c{$file} = 1;
- }
- foreach my $file (keys %{$self->{'XS'}})
- {
- $c{$file} = 1;
- delete $c{$self->{'XS'}{$file}};
- }
- my @files = grep(-f $_,sort(keys %c));
- if (@files)
- {
- my $tk = installed_tk();
- my @inc = split(/\s+/,$self->{'INC'});
- my @def = split(/\s+/,$self->{'DEFINE'});
- push(@def,qw(-DWIN32 -D__WIN32__)) if ($IsWin32);
- if ($^O eq 'cygwin')
- {
- push(@def,qw(-D__CYGWIN__));
- if ($win_arch eq 'MSWin32')
- {
- push(@def,qw(-D__WIN32__)) unless $self->{'DEFINE'} =~ /-D__WIN32__/;
- push(@def,qw(-DWIN32)) if $self->{'NAME'} eq 'Tk::pTk';
- }
- elsif ($win_arch eq 'x')
- {
- push(@def,qw(-U_WIN32));
- }
- }
- foreach (@inc)
- {
- s/\$\(TKDIR\)/$tk/g;
- warn "Odd:$_" if /\$\(/;
- }
- $str .= Tk::MakeDepend::command_line(@inc,@def,@files) unless ($ENV{'TKNOMAKEDEPEND'});
- }
- return $str;
-}
-
-sub const_config
-{
- my $self = shift;
- my $name;
- foreach $name (grep /(%|\.(old|bak|q4|orig|rej))$/,keys %{$self->{PM}})
- {
- delete $self->{PM}->{$name};
- }
- my $flags = $self->{'CCCDLFLAGS'};
- $flags =~ s/(-[fK]?\s*)pic\b/${1}PIC/;
- $self->{'CCCDLFLAGS'} = $flags;
- if ($^O eq 'MSWin32' && $Config{'ccflags'} =~ /-DPERL_OBJECT/)
- {
- $self->{'LDFLAGS'} =~ s/-(debug|pdb:\w+)\s+//g;
- $self->{'LDDLFLAGS'} =~ s/-(debug|pdb:\w+)\s+//g;
- }
- elsif ($^O eq 'darwin' )
- {
- $self->{'LDDLFLAGS'} =~ s/-flat_namespace//;
- $self->{'LDDLFLAGS'} =~ s/-undefined\s+suppress//;
- if ( -e "$Config{'archlib'}/CORE/$Config{'libperl'}" ) {
- $self->{'LDDLFLAGS'} .= " -L\${PERL_ARCHLIB}/CORE -lperl ";
- }
- elsif ( -e "/System/Library/Perl/darwin/CORE/libperl.dylib" ) {
- $self->{'LDDLFLAGS'} .= " -L/System/Library/Perl/darwin/CORE -lperl ";
- }
- else {
- warn "Can't find libperl.dylib";
- }
- $self->{'LDFLAGS'} =~ s/-flat_namespace//;
- $self->{'LDFLAGS'} =~ s/-undefined\s+suppress//;
- } elsif ($^O =~ /(openbsd)/i)
- {
- # -Bforcearchive is bad news for Tk - we don't want all of libpTk.a in all .so-s.
- $self->{'LDDLFLAGS'} =~ s/-Bforcearchive\s*//g;
- }
- return $self->MM::const_config;
-}
-
-sub constants
-{
- my $self = shift;
- local $_ = $self->MM::constants;
- s/(\.SUFFIXES)/$1:\n$1/;
- $_ .= "\nGCCOPT = $Tk::Config::gccopt\n";
- if ($IsWin32)
- {
- }
- $_;
-}
-
-sub cflags
-{
- my $self = shift;
- local $_ = $self->MM::cflags;
- if (0 && $IsWin32)
- {
- if ($Config::Config{cc} =~ /^bcc/i) {
- # s/(CCFLAGS\s*=)/$1/;
- }
- else {
- s/(CCFLAGS\s*=)/$1 \$(cflags) \$(cvarsdll)/;
- s/(OPTIMIZE\s*=).*/$1 \$(cdebug)/;
- }
- }
- $_;
-}
-
-sub c_o
-{
- my $self = shift;
- local $_ = $self->MM::c_o;
- s/\$\(DEFINE\)/\$(DEFINE) \$(GCCOPT)/g;
- $_;
-}
-
-sub xs_o
-{
- my $self = shift;
- local $_ = $self->MM::xs_o;
- s/\$\(DEFINE\)/\$(DEFINE) \$(GCCOPT)/g;
- $_;
-}
-
-sub manifypods
-{
- my $self = shift;
- # Maybe always call UNIX version - we HTMLize them later
- local $_ = $self->MM::manifypods;
- if ($] >= 5.00565)
- {
- s/(POD2MAN_EXE.*pod2man.*)/$1 --center "perl\/Tk Documentation" --release "Tk\$(VERSION)"/;
- }
- elsif ($] >= 5.003)
- {
- s/(POD2MAN_EXE.*pod2man.*)/$1 -center "perl\/Tk Documentation" -release "Tk\$(VERSION)"/;
- }
- else
- {
- s/(POD2MAN_EXE.*pod2man.*)/$1 -center \\"perl\/Tk Documentation\\" -release \\"Tk\$(VERSION)\\"/;
- }
- s/\bpod::/Tk::/mg;
- s/\bpTk:://mg;
- $_;
-}
-
-sub findINC
-{
- my $file = shift;
- my $dir;
- foreach $dir (@INC)
- {
- my $try = "$dir/$file";
- return $try if (-f $try);
- }
- die "Cannot find $file in \@INC\n";
-}
-
-
-sub makefile
-{
- my $self = shift;
- my $str = $self->MM::makefile;
- my $mm = findINC('Tk/MMutil.pm');
- my $cf = findINC('Tk/Config.pm');
- $str =~ s/(\$\(CONFIGDEP\))/$1 $cf $mm/;
- $str =~ s/\$\(OBJECT\)\s*:.*\n//;
- return $str;
-}
-
-sub installed_tk
-{
- my $tk;
- my $dir;
- foreach $dir (@INC)
- {
- if (-f "$dir/tkGlue.h")
- {
- $tk = relpath($dir);
- last;
- }
- my $try = "$dir/Tk";
- if (-f "$try/tkGlue.h")
- {
- $tk = relpath($try,$dir);
- last;
- }
- }
- die "Cannot find perl/Tk include files\n" unless (defined $tk);
- $tk =~ s,^(\./)+,,;
- return $tk;
-}
-
-sub installbin
-{
- my ($self) = @_;
- my $str = $self->MM::installbin;
- my $prog = 'perl'; # $self->{'MAP_TARGET'} || 'perl';
- my $inc = findINC('Tk/MMutil.pm');
- $inc =~ s,/Tk/MMutil.pm$,,;
- $inc = relpath($inc);
- $str =~ s/^\tcp\s/\t\$(PERL) -I$inc -MTk::install -e installbin $prog /mg;
- return $str;
-}
-
-sub findpTk
-{
- my $ptk;
- my $dir;
- foreach $dir (map(abspath($_),@_),@INC)
- {
- my $try = "$dir/pTk";
- if (-d $try && (-f "$try/Lang.h" || -f "$try/libpTk\$(LIB_EXT)"))
- {
- $ptk = relpath($try,$dir);
- last;
- }
- }
- confess "Cannot locate pTk\n" unless (defined $ptk);
- return $ptk;
-}
-
-sub find_subdir
-{
- my %dir;
- opendir(DIR,'.') || die "Cannot opendir:$!";
- foreach my $dir (readdir(DIR))
- {
- next if $dir =~ /^\.\.?$/;
- next if -l $dir;
- next unless -d $dir;
- if (-f "$dir/Makefile.PL")
- {
- my $exc = ($win_arch eq 'x') ? 'Unix' : 'Win';
- if (-f "$dir/Not${exc}.exc")
- {
- warn "Skip $dir on $win_arch\n"
- }
- else
- {
- $dir{$dir} = 1
- }
- }
- }
- closedir(DIR);
- return \%dir;
-}
-
-sub TkExtMakefile
-{
- my (%att) = @_;
- if ($Config{'ccflags'} =~ /-DPERL_OBJECT/)
- {
- $att{'CAPI'} = 'TRUE' unless exists $att{'CAPI'};
- }
- unless (exists $att{'DIR'})
- {
- my $dir = find_subdir();
- $att{'DIR'} = [sort(keys %$dir)];
- }
- unless (exists $att{'NAME'})
- {
- my $dir = getcwd;
- my ($pack) = $dir =~ m#/([^/]+)$#;
- if (defined $pack)
- {
- $att{NAME} = 'Tk::'.$pack;
- }
- else
- {
- warn "No Name and cannot deduce from '$dir'";
- }
- }
- my $tk = installed_tk();
- $att{'macro'} = {} unless (exists $att{'macro'});
- $att{'macro'}{'TKDIR'} = $tk;
- my @opt = ('VERSION' => $Tk::Config::VERSION,
- 'XS_VERSION' => $Tk::Config::VERSION);
- push(@opt,'clean' => {} ) unless (exists $att{'clean'});
- $att{'clean'}->{FILES} = '' unless (exists $att{'clean'}->{FILES});
- $att{'clean'}->{FILES} .= ' *.bak';
- unless (exists($att{'linkext'}) && $att{linkext}{LINKTYPE} eq '')
- {
- my $ptk = findpTk($tk);
- my @tm = (findINC('Tk/typemap'));
- unshift(@tm,@{$att{'TYPEMAPS'}}) if (exists $att{'TYPEMAPS'});
- $att{'TYPEMAPS'} = \@tm;
- my $i = delete ($att{'INC'});
- $i = (defined $i) ? "$i $inc" : $inc;
- if (delete $att{'dynamic_ptk'})
- {
- push(@opt,
- 'MYEXTLIB' => "$ptk/libpTk\$(LIB_EXT)",
-# 'dynamic_lib' => { INST_DYNAMIC_DEP => "$ptk/libpTk\$(LIB_EXT)" }
- );
- }
- # Several loadable widgets use things from -lm
- # if platform does not have a shared -lm need to link against it
- if ($Config{libs} =~/-lm\b/)
- {
- my $libs = $att{'LIBS'}->[0];
- $att{'LIBS'}->[0] = "$libs -lm" unless $libs =~ /-lm\b/;
- }
- if ($IsWin32 && $Config{'cc'} =~ /^bcc/)
- {
- # Borland compiler is very dumb at finding files
- $i = "-I$tk $i";
- $i = "-I$ptk $i";
- }
- if ($IsWin32 && $Config{'cc'} =~ /^gcc/i)
- {
- my $base = $Config{'libpth'};
- $base =~ s#lib$#i386-mingw32/lib#;
- my $extra = "-L$base -lcomdlg32 -lgdi32";
- my $libs = $att{'LIBS'}->[0];
- $att{'LIBS'}->[0] = "$extra $libs";
- }
- if ($^O eq 'cygwin')
- {
- # NOTE: use gcc -shared instead of dllwrap (ld2),
- # dllwrap tries to resolve all symbols, even those
- # that are brought in from libraries like libpTk.a
- push(@opt,'LD' => 'gcc -shared');
- if ($win_arch eq 'MSWin32')
- {
- my $extra = "-L/lib/w32api -lcomdlg32 -lgdi32";
- my $libs = $att{'LIBS'}->[0];
- $att{'LIBS'}->[0] = "$extra $libs";
- $att{'DEFINE'} .= ' -D__WIN32__ -D_WIN32';
- $att{'DEFINE'} .= ' -DWIN32' if($att{'NAME'} eq 'Tk::pTk');
- }
- elsif ($win_arch eq 'x')
- {
- $att{'DEFINE'} .= ' -U_WIN32';
- }
- }
- if (delete $att{'ptk_include'})
- {
- $i = "-I$ptk $i" unless ($ptk eq '.');
- }
- else
- {
- $i = "-I$tk $i" unless ($tk eq '.');
- }
- push(@opt,'DEFINE' => $define, 'INC' => $i);
- }
- WriteMakefile(@opt, %att);
-}
-
-sub import
-{
- no strict 'refs';
- my $class = shift;
- my @list = (@_) ? @_ : @{"${class}::MYEXPORT"};
- my $name;
- foreach $name (@list)
- {
- *{"MY::$name"} = \&{"$name"};
- }
-}
-
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/MainWindow.pm b/Master/tlpkg/tlperl/lib/Tk/MainWindow.pm
deleted file mode 100644
index 5384ccb560b..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/MainWindow.pm
+++ /dev/null
@@ -1,213 +0,0 @@
-# Copyright (c) 1995-2003 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-package Tk::MainWindow;
-use base qw(Tk::Toplevel);
-BEGIN { @MainWindow::ISA = 'Tk::MainWindow' }
-
-use strict;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #12 $ =~ /\D(\d+)\s*$/;
-
-use Tk::CmdLine;
-use Tk qw(catch);
-require Tk::Toplevel;
-
-use Carp;
-
-$| = 1;
-
-my $pid = $$;
-
-my %Windows = ();
-
-sub CreateArgs
-{
- my ($class,$args) = @_;
- my $cmd = Tk::CmdLine->CreateArgs();
- my $key;
- foreach $key (keys %$cmd)
- {
- $args->{$key} = $cmd->{$key} unless exists $args->{$key};
- }
- my %result = $class->SUPER::CreateArgs(undef,$args);
- my $name = delete($args->{'-name'});
- unless (Tk::tainting)
- {
- $ENV{'DISPLAY'} = ':0' unless (exists $ENV{'DISPLAY'});
- $result{'-screen'} = $ENV{'DISPLAY'} unless exists $result{'-screen'};
- }
- return (-name => "\l$name",%result);
-}
-
-sub new
-{
- my $package = shift;
- if (@_ > 0 && $_[0] =~ /:\d+(\.\d+)?$/)
- {
- carp "Usage $package->new(-screen => '$_[0]' ...)" if $^W;
- unshift(@_,'-screen');
- }
- croak('Odd number of args'."$package->new(" . join(',',@_) .')') if @_ % 2;
- my %args = @_;
-
- my $top = eval { bless Create($package->CreateArgs(\%args)), $package };
- croak($@ . "$package->new(" . join(',',@_) .')') if ($@);
- $top->apply_command_line;
- $top->InitBindings;
- $top->SetBindtags;
- $top->InitObject(\%args);
- eval { $top->configure(%args) };
- croak "$@" if ($@);
- if (($top->positionfrom||'') ne 'user' and ($top->sizefrom||'') ne 'user') {
- my $geometry = $top->optionGet(qw(geometry Geometry));
- if ($geometry) {
- $top->geometry($geometry);
- }
- }
- $Windows{$top} = $top;
- return $top;
-}
-
-sub _Destroyed
-{
- my $top = shift;
- $top->SUPER::_Destroyed;
- delete $Windows{$top};
-}
-
-sub InitBindings
-{
- my $mw = shift;
- $mw->bind('all','<Tab>','focusNext');
- # <<LeftTab>> is named <<PrevWindow>> in Tcl/Tk
- $mw->eventAdd(qw[<<LeftTab>> <Shift-Tab>]);
- # This is needed for XFree86 systems
- catch { $mw->eventAdd(qw[<<LeftTab>> <ISO_Left_Tab>]) };
- # This seems to be correct on *some* HP systems.
- catch { $mw->eventAdd(qw[<<LeftTab>> <hpBackTab>]) };
- $mw->bind('all','<<LeftTab>>','focusPrev');
- if ($mw->windowingsystem eq 'x11')
- {
- $mw->eventAdd(qw[<<Cut>> <Control-Key-x> <Key-F20> <Meta-Key-w>]);
- $mw->eventAdd(qw[<<Copy>> <Control-Key-c> <Key-F16> <Control-Key-w>]);
- $mw->eventAdd(qw[<<Paste>> <Control-Key-v> <Key-F18> <Control-Key-y>]);
- $mw->eventAdd(qw[<<PasteSelection>> <ButtonRelease-2>]);
- $mw->eventAdd(qw[<<Undo>> <Control-Key-z> <Key-Undo> <Key-F14>
- <Control-Key-underscore>]);
- $mw->eventAdd(qw[<<Redo>> <Control-Key-y> <Shift-Key-Undo> <Key-F12> <Shift-Key-F14>]);
- }
- elsif ($mw->windowingsystem eq 'win32')
- {
- $mw->eventAdd(qw[<<Cut>> <Control-Key-x> <Shift-Key-Delete>]);
- $mw->eventAdd(qw[<<Copy>> <Control-Key-c> <Control-Key-Insert>]);
- $mw->eventAdd(qw[<<Paste>> <Control-Key-v> <Shift-Key-Insert>]);
- $mw->eventAdd(qw[<<Undo>> <Control-Key-z>]);
- $mw->eventAdd(qw[<<Redo>> <Control-Key-y>]);
- }
- elsif ($mw->windowingsystem eq 'aqua')
- {
- $mw->eventAdd(qw[<<Cut>> <Command-Key-x> <Key-F2>]);
- $mw->eventAdd(qw[<<Copy>> <Command-Key-c> <Key-F3>]);
- $mw->eventAdd(qw[<<Paste>> <Command-Key-v> <Key-F4>]);
- $mw->eventAdd(qw[<<PasteSelection>> <ButtonRelease-2>]);
- $mw->eventAdd(qw[<<Clear>> <Clear>]);
- $mw->eventAdd(qw[<<Undo>> <Command-Key-z>]);
- $mw->eventAdd(qw[<<Redo>> <Command-Key-y>]);
- }
- elsif ($mw->windowingsystem eq 'classic')
- {
- $mw->eventAdd(qw[<<Cut>> <Control-Key-x> <Key-F2>]);
- $mw->eventAdd(qw[<<Copy>> <Control-Key-c> <Key-F3>]);
- $mw->eventAdd(qw[<<Paste>> <Control-Key-v> <Key-F4>]);
- $mw->eventAdd(qw[<<PasteSelection>> <ButtonRelease-2>]);
- $mw->eventAdd(qw[<<Clear>> <Clear>]);
- $mw->eventAdd(qw[<<Undo>> <Control-Key-z> <Key-F1>]);
- $mw->eventAdd(qw[<<Redo>> <Control-Key-Z>]);
- }
-
- # FIXME - Should these move to Menubutton ?
- my $c = ($Tk::platform eq 'unix') ? 'all' : 'Tk::Menubutton';
- $mw->bind($c,'<Alt-KeyPress>',['TraverseToMenu',Tk::Ev('K')]);
- $mw->bind($c,'<F10>','FirstMenu');
-}
-
-sub Existing
-{
- my @Windows;
- foreach my $name (keys %Windows)
- {
- my $obj = $Windows{$name};
- if (Tk::Exists($obj))
- {
- push(@Windows,$obj);
- }
- else
- {
- delete $Windows{$name};
- }
- }
- return @Windows;
-}
-
-END
-{
- if (Tk::IsParentProcess())
- {
- foreach my $top (values %Windows)
- {
- if ($top->IsWidget)
- {
- # Tk data structuctures are still in place
- # this can occur if non-callback perl code did a 'die'.
- # It will also handle some cases of non-Tk 'exit' being called
- # Destroy this mainwindow and hence is descendants ...
- $top->destroy;
- }
- }
- }
-}
-
-sub CmdLine { return shift->command }
-
-sub WMSaveYourself
-{
- my $mw = shift;
- my @args = @{$mw->command};
-# warn 'preWMSaveYourself:'.join(' ',@args)."\n";
- @args = ($0) unless (@args);
- my $i = 1;
- while ($i < @args)
- {
- if ($args[$i] eq '-iconic')
- {
- splice(@args,$i,1);
- }
- elsif ($args[$i] =~ /^-(geometry|iconposition)$/)
- {
- splice(@args,$i,2);
- }
- }
-
- my @ip = $mw->wm('iconposition');
-# print 'ip ',join(',',@ip),"\n";
- my $icon = $mw->iconwindow;
- if (defined($icon))
- {
- @ip = $icon->geometry =~ /\d+x\d+([+-]\d+)([+-]\d+)/;
- }
- splice(@args,1,0,'-iconposition' => join(',',@ip)) if (@ip == 2);
-
- splice(@args,1,0,'-iconic') if ($mw->state() eq 'iconic');
-
- splice(@args,1,0,'-geometry' => $mw->geometry);
-# warn 'postWMSaveYourself:'.join(' ',@args)."\n";
- $mw->command([@args]);
-}
-
-1;
-
-__END__
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Tk/MakeDepend.pm b/Master/tlpkg/tlperl/lib/Tk/MakeDepend.pm
deleted file mode 100644
index bfb7b43ccbc..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/MakeDepend.pm
+++ /dev/null
@@ -1,292 +0,0 @@
-package Tk::MakeDepend;
-use strict;
-use vars qw(%define);
-use Config;
-
-my @include;
-
-use Carp;
-
-$SIG{__DIE__} = \&Carp::confess;
-
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #13 $ =~ /\D(\d+)\s*$/;
-
-sub scan_file;
-
-sub do_include
-{
- my ($inc,$dep,@include) = @_;
- foreach my $dir (@include)
- {
- my $path = "$dir/$inc";
- if (-f $path)
- {
- scan_file($path,$dep) unless exists $dep->{$path};
- return;
- }
- }
- warn "Cannot find '$inc' assume made\n";
- $dep->{$inc} = 1;
-}
-
-sub remove_comment
-{
- s#^\s*/\*.*?\*/\s*##g;
-}
-
-
-sub term
-{
- remove_comment();
- return !term() if s/^\s*!//;
- return exists($define{$1}) if s/^\s*defined\s*\(([_A-Za-z][_\w]*)\s*\)//;
- return exists($define{$1}) if s/^\s*defined\s*([_A-Za-z][_\w]*)//;
- return eval "$1" if s/^\s*(0x[0-9a-f]+)//i;
- return $1 if s/^\s*(\d+)//;
- return $define{$1} || 0 if s/^\s*([_A-Za-z][_\w]*)//;
- if (s/^\s*\(//)
- {
- my $val = expression(0);
- warn "Missing ')'\n" unless s/^\s*\)//;
- return $val;
- }
- warn "Invalid term:$_";
- return undef;
-}
-
-my %pri = ( '&&' => 4,
- '||' => 3,
- '>=' => 2, '<=' => 2, '<' => 2, '>' => 2,
- '==' => 1, '!=' => 1 );
-
-sub expression
-{
- my $pri = shift;
- # printf STDERR "%d# expr . $_\n";
- my $invert = 0;
- my $lhs = term() || 0;
- remove_comment();
- while (/^\s*(&&|\|\||>=?|<=?|==|!=)/)
- {
- my $op = $1;
- last unless ($pri{$op} >= $pri);
- s/^\s*\Q$op\E//;
- # printf STDERR "%d# $lhs $op . $_\n";
- my $rhs = expression($pri{$op}) || 0;
- my $e = "$lhs $op $rhs";
- $lhs = eval "$e" || 0;
- die "'$e' $@" if $@;
- remove_comment();
- }
- return $lhs;
-}
-
-sub do_if
-{
- my ($key,$expr) = @_;
- chomp($expr);
- if ($key eq 'ifdef' || $key eq 'ifndef')
- {
- if ($expr =~ /^\s*(\w+)/)
- {
- my $val = exists $define{$1};
- $val = !$val if ($key eq 'ifndef');
-# printf STDERR "%d from $key $expr\n",$val;
- return $val;
- }
- }
- else
- {
- local $_ = $expr;
- my $val = expression(0) != 0;
- warn "trailing: $_" if /\S/;
- #printf STDERR "%d from $key $expr\n",$val;
- return $val;
- }
-}
-
-sub scan_file
-{
- no strict 'refs';
- my ($file,$dep) = @_;
- open($file,"<$file") || die "Cannot open $file:$!";
- local $_;
- my ($srcdir) = $file =~ m#^(.*)[\\/][^\\/]*$#;
- $srcdir = '.' unless defined $srcdir;
- my $live = 1;
- $dep->{$file} = 1;
- my @stack;
- while (<$file>)
- {
- $_ .= <$file> while (s/\\\n/ /);
- if (/^\s*#\s*(\w+)\s*(.*?)\s*$/)
- {
- my $ol = $live;
- my $key = $1;
- my $rest = $2;
- if ($key =~ /^if(.*)$/)
- {
- push(@stack,$live);
- $live &&= do_if($key,$rest);
- }
- elsif ($key eq 'elif')
- {
- $live = ($live) ? 0 : $stack[-1];
- $live &&= do_if('if',$rest);
- }
- elsif ($key eq 'else')
- {
- $live = ($live) ? 0 : $stack[-1];
- }
- elsif ($key eq 'endif')
- {
- if (@stack)
- {
- $live = pop(@stack);
- }
- else
- {
- die "$file:$.: Mismatched #endif\n";
- }
- }
- elsif ($live)
- {
- if ($key eq 'include')
- {
- do_include($1,$dep,$srcdir,@include) if $rest =~ /^"(.*)"/;
- }
- elsif ($key eq 'define')
- {
- if ($rest =~ /^\s*([_A-Za-z][\w_]*)\s*(.*)$/)
- {
- my $sym = $1;
- my $val = $2 || 1;
- $val =~ s#\s*/\*.*?\*/\s*# #g;
- $define{$sym} = $val;
- }
- else
- {
- warn "ignore '$key $rest'\n";
- }
- }
- elsif ($key eq 'undef')
- {
- if ($rest =~ /^\s*([_A-Za-z][\w_]*)/)
- {
- delete $define{$1};
- }
- }
- elsif ($key =~ /^(line|pragma)$/)
- {
-
- }
- else
- {
- warn "ignore '$key $rest'\n";
- }
- }
- # printf STDERR "$file:$.: %d $key $rest\n",$live if ($ol != $live);
- }
- else
- {
- # print if $live;
- }
- }
- close($file);
- if (@stack)
- {
- warn "$file:$.: unclosed #if\n";
- }
-}
-
-sub command_line
-{
- @include = ();
- local %define = ('__STDC__' => 1 );
- my $data = '';
- my @files;
- while (@_ && $_[-1] !~ /^-/)
- {
- unshift(@files,pop(@_));
- }
- my $flags = $Config{ccflags};
- $flags =~ s/^\s+|\s+$//g;
- my @opt = (@_, split(/\s+/,$flags));
- while (@opt)
- {
- local $_ = shift(@opt);
- if (/^-I(.*)$/)
- {
- push @include,$1;
- }
- elsif (/^-D([^=]+)(?:=(.*))?$/)
- {
- $define{$1} = $2 || 1;
- }
- elsif (/^-U(.*)$/)
- {
- delete $define{$1};
- }
- elsif (/^(-.*)$/)
- {
- # Some option
- if ($opt[0] !~ /^-/)
- {
- # next arg does not start with '-' assume it
- # belongs to this option and discard it silently
- shift(@opt);
- }
- }
- else
- {
- # We got confused
- warn "Ignoring $1\n";
- }
- }
- # force /usr/include to be last element of @include
- push @include, $Config{'usrinc'}
- if (defined $Config{'usrinc'} and $Config{'usrinc'} ne '');
- # warn "Include:@include\n";
- while (@files)
- {
- local $_ = shift(@files);
- unless (/^(.*)\.[^\.]+$/)
- {
- warn "Skip $_";
- next;
- }
- local %define = %define;
- my $base = $1;
- my $file = $_;
- my %dep;
- warn "Finding dependencies for $file\n";
- scan_file($_,\%dep);
- my $str = "\n$base\$(OBJ_EXT) : $base.c";
- delete $dep{$file};
- my @dep = (sort(keys %dep));
- while (@dep)
- {
- my $dep = shift(@dep);
- $dep =~ s#^\./##;
- if (length($str)+length($dep) > 70)
- {
- $data .= "$str \\\n";
- $str = ' ';
- }
- else
- {
- $str .= ' ';
- }
- $str .= $dep;
- }
- $data .= "$str\n";
- }
- return $data;
-}
-
-1;
-__END__
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Menu.pm b/Master/tlpkg/tlperl/lib/Tk/Menu.pm
deleted file mode 100644
index 91e9aceed61..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Menu.pm
+++ /dev/null
@@ -1,1145 +0,0 @@
-# Converted from menu.tcl --
-#
-# This file defines the default bindings for Tk menus and menubuttons.
-# It also implements keyboard traversal of menus and implements a few
-# other utility procedures related to menus.
-#
-# @(#) menu.tcl 1.34 94/12/19 17:09:09
-#
-# Copyright (c) 1992-1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-
-package Tk::Menu;
-require Tk;
-require Tk::Widget;
-require Tk::Wm;
-require Tk::Derived;
-require Tk::Menu::Item;
-
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #21 $ =~ /\D(\d+)\s*$/;
-
-use strict;
-
-use base qw(Tk::Wm Tk::Derived Tk::Widget);
-
-Construct Tk::Widget 'Menu';
-
-sub Tk_cmd { \&Tk::_menu }
-
-Tk::Methods('activate','add','clone','delete','entrycget','entryconfigure',
- 'index','insert','invoke','post','postcascade','type',
- 'unpost','yposition');
-
-import Tk qw(Ev);
-
-sub CreateArgs
-{
- my ($package,$parent,$args) = @_;
- # Remove from hash %$args any configure-like
- # options which only apply at create time (e.g. -class for Frame)
- # return these as a list of -key => value pairs
- my @result = ();
- my $opt;
- foreach $opt (qw(-type -screen -visual -colormap))
- {
- my $val = delete $args->{$opt};
- push(@result, $opt => $val) if (defined $val);
- }
- return @result;
-}
-
-sub InitObject
-{
- my ($menu,$args) = @_;
- my $menuitems = delete $args->{-menuitems};
- $menu->SUPER::InitObject($args);
- $menu->ConfigSpecs(-foreground => ['SELF']);
- if (defined $menuitems)
- {
- # If any other args do configure now
- if (%$args)
- {
- $menu->configure(%$args);
- %$args = ();
- }
- $menu->AddItems(@$menuitems)
- }
-}
-
-sub AddItems
-{
- my $menu = shift;
- ITEM:
- while (@_)
- {
- my $item = shift;
- if (!ref($item))
- {
- $menu->separator; # A separator
- }
- else
- {
- my ($kind,$name,%minfo) = ( @$item );
- my $invoke = delete $minfo{'-invoke'};
- if (defined $name)
- {
- $minfo{-label} = $name unless defined($minfo{-label});
- $menu->$kind(%minfo);
- }
- else
- {
- $menu->BackTrace("Don't recognize " . join(' ',@$item));
- }
- } # A non-separator
- }
-}
-
-#
-#-------------------------------------------------------------------------
-# Elements of tkPriv that are used in this file:
-#
-# cursor - Saves the -cursor option for the posted menubutton.
-# focus - Saves the focus during a menu selection operation.
-# Focus gets restored here when the menu is unposted.
-# inMenubutton - The name of the menubutton widget containing
-# the mouse, or an empty string if the mouse is
-# not over any menubutton.
-# popup - If a menu has been popped up via tk_popup, this
-# gives the name of the menu. Otherwise this
-# value is empty.
-# postedMb - Name of the menubutton whose menu is currently
-# posted, or an empty string if nothing is posted
-# A grab is set on this widget.
-# relief - Used to save the original relief of the current
-# menubutton.
-# window - When the mouse is over a menu, this holds the
-# name of the menu; it's cleared when the mouse
-# leaves the menu.
-#-------------------------------------------------------------------------
-#-------------------------------------------------------------------------
-# Overall note:
-# This file is tricky because there are four different ways that menus
-# can be used:
-#
-# 1. As a pulldown from a menubutton. This is the most common usage.
-# In this style, the variable tkPriv(postedMb) identifies the posted
-# menubutton.
-# 2. As a torn-off menu copied from some other menu. In this style
-# tkPriv(postedMb) is empty, and the top-level menu is no
-# override-redirect.
-# 3. As an option menu, triggered from an option menubutton. In thi
-# style tkPriv(postedMb) identifies the posted menubutton.
-# 4. As a popup menu. In this style tkPriv(postedMb) is empty and
-# the top-level menu is override-redirect.
-#
-# The various binding procedures use the state described above to
-# distinguish the various cases and take different actions in each
-# case.
-#-------------------------------------------------------------------------
-# Bind --
-# This procedure is invoked the first time the mouse enters a menubutton
-# widget or a menubutton widget receives the input focus. It creates
-# all of the class bindings for both menubuttons and menus.
-#
-# Arguments:
-# w - The widget that was just entered or just received
-# the input focus.
-# event - Indicates which event caused the procedure to be invoked
-# (Enter or FocusIn). It is used so that we can carry out
-# the functions of that event in addition to setting up
-# bindings.
-sub ClassInit
-{
- my ($class,$mw) = @_;
- # Must set focus when mouse enters a menu, in order to allow
- # mixed-mode processing using both the mouse and the keyboard.
- $mw->bind($class,'<FocusIn>', 'NoOp');
- $mw->bind($class,'<Enter>', 'Enter');
- $mw->bind($class,'<Leave>', ['Leave',Ev('X'),Ev('Y'),Ev('s')]);
- $mw->bind($class,'<Motion>', ['Motion',Ev('x'),Ev('y'),Ev('s')]);
- $mw->bind($class,'<ButtonPress>','ButtonDown');
- $mw->bind($class,'<ButtonRelease>',['Invoke',1]);
- $mw->bind($class,'<space>',['Invoke',0]);
- $mw->bind($class,'<Return>',['Invoke',0]);
- $mw->bind($class,'<Escape>','Escape');
- $mw->bind($class,'<Left>','LeftArrow');
- $mw->bind($class,'<Right>','RightArrow');
- $mw->bind($class,'<Up>','UpArrow');
- $mw->bind($class,'<Down>','DownArrow');
- $mw->bind($class,'<KeyPress>', ['TraverseWithinMenu',Ev('K')]);
- $mw->bind($class,'<Alt-KeyPress>', ['TraverseWithinMenu',Ev('K')]);
- return $class;
-}
-
-sub UpArrow
-{
- my $menu = shift;
- if ($menu->cget('-type') eq 'menubar')
- {
- $menu->NextMenu('left');
- }
- else
- {
- $menu->NextEntry(-1);
- }
-}
-
-sub DownArrow
-{
- my $menu = shift;
- if ($menu->cget('-type') eq 'menubar')
- {
- $menu->NextMenu('right');
- }
- else
- {
- $menu->NextEntry(1);
- }
-}
-
-sub LeftArrow
-{
- my $menu = shift;
- if ($menu->cget('-type') eq 'menubar')
- {
- $menu->NextEntry(-1);
- }
- else
- {
- $menu->NextMenu('left');
- }
-}
-
-sub RightArrow
-{
- my $menu = shift;
- if ($menu->cget('-type') eq 'menubar')
- {
- $menu->NextEntry(1);
- }
- else
- {
- $menu->NextMenu('right');
- }
-}
-
-
-
-# Unpost --
-# This procedure unposts a given menu, plus all of its ancestors up
-# to (and including) a menubutton, if any. It also restores various
-# values to what they were before the menu was posted, and releases
-# a grab if there's a menubutton involved. Special notes:
-# 1. It's important to unpost all menus before releasing the grab, so
-# that any Enter-Leave events (e.g. from menu back to main
-# application) have mode NotifyGrab.
-# 2. Be sure to enclose various groups of commands in "catch" so that
-# the procedure will complete even if the menubutton or the menu
-# or the grab window has been deleted.
-#
-# Arguments:
-# menu - Name of a menu to unpost. Ignored if there
-# is a posted menubutton.
-sub Unpost
-{
- my $menu = shift;
- my $mb = $Tk::postedMb;
-
- # Restore focus right away (otherwise X will take focus away when
- # the menu is unmapped and under some window managers (e.g. olvwm)
- # we'll lose the focus completely).
-
- eval {local $SIG{__DIE__}; $Tk::focus->focus() } if (defined $Tk::focus);
- undef $Tk::focus;
-
- # Unpost menu(s) and restore some stuff that's dependent on
- # what was posted.
- eval {local $SIG{__DIE__};
- if (defined $mb)
- {
- $menu = $mb->cget('-menu');
- $menu->unpost();
- $Tk::postedMb = undef;
- $mb->configure('-cursor',$Tk::cursor);
- $mb->configure('-relief',$Tk::relief)
- }
- elsif (defined $Tk::popup)
- {
- $Tk::popup->unpost();
- my $grab = $Tk::popup->grabCurrent;
- $grab->grabRelease if (defined $grab);
-
- undef $Tk::popup;
- }
- elsif (defined $menu && ref $menu &&
- $menu->cget('-type') ne 'menubar' &&
- $menu->cget('-type') ne 'tearoff'
- )
- {
- # We're in a cascaded sub-menu from a torn-off menu or popup.
- # Unpost all the menus up to the toplevel one (but not
- # including the top-level torn-off one) and deactivate the
- # top-level torn off menu if there is one.
- while (1)
- {
- my $parent = $menu->parent;
- last if (!$parent->IsMenu || !$parent->ismapped);
- $parent->postcascade('none');
- $parent->GenerateMenuSelect;
- $parent->activate('none');
- my $type = $parent->cget('-type');
- last if ($type eq 'menubar' || $type eq 'tearoff');
- $menu = $parent
- }
- $menu->unpost() if ($menu->cget('-type') ne 'menubar');
- }
- };
- warn "$@" if ($@);
- if ($Tk::tearoff || $Tk::menubar)
- {
- # Release grab, if any.
- if (defined $menu && ref $menu)
- {
- my $grab = $menu->grabCurrent;
- $grab->grabRelease if (defined $grab);
- }
- RestoreOldGrab();
- if ($Tk::menubar)
- {
- $Tk::menubar->configure(-cursor => $Tk::cursor);
- undef $Tk::menubar;
- }
- if ($Tk::platform ne 'unix')
- {
- undef $Tk::tearoff;
- }
- }
-}
-
-sub RestoreOldGrab
-{
- if (defined $Tk::oldGrab)
- {
- eval
- {
- local $SIG{__DIE__};
- if ($Tk::grabStatus eq 'global')
- {
- $Tk::oldGrab->grabGlobal;
- }
- else
- {
- $Tk::oldGrab->grab;
- }
- };
- undef $Tk::oldGrab;
- }
-}
-
-sub typeIS
-{my $w = shift;
- my $type = $w->type(shift);
- return defined $type && $type eq shift;
-}
-
-# Motion --
-# This procedure is called to handle mouse motion events for menus.
-# It does two things. First, it resets the active element in the
-# menu, if the mouse is over the menu. Second, if a mouse button
-# is down, it posts and unposts cascade entries to match the mouse
-# position.
-#
-# Arguments:
-# menu - The menu window.
-# y - The y position of the mouse.
-# state - Modifier state (tells whether buttons are down).
-sub Motion
-{
- my $menu = shift;
- my $x = shift;
- my $y = shift;
- my $state = shift;
- my $t = $menu->cget('-type');
-
- if ($menu->IS($Tk::window))
- {
- if ($menu->cget('-type') eq 'menubar')
- {
-# if (defined($Tk::focus) && $Tk::focus != $menu)
- {
- $menu->activate("\@$x,$y");
- $menu->GenerateMenuSelect;
- }
- }
- else
- {
- $menu->activate("\@$x,$y");
- $menu->GenerateMenuSelect;
- }
- }
- if (($state & 0x1f00) != 0)
- {
- $menu->postcascade('active')
- }
-}
-# ButtonDown --
-# Handles button presses in menus. There are a couple of tricky things
-# here:
-# 1. Change the posted cascade entry (if any) to match the mouse position.
-# 2. If there is a posted menubutton, must grab to the menubutton so
-# that it can track mouse motions over other menubuttons and change
-# the posted menu.
-# 3. If there's no posted menubutton (e.g. because we're a torn-off menu
-# or one of its descendants) must grab to the top-level menu so that
-# we can track mouse motions across the entire menu hierarchy.
-
-#
-# Arguments:
-# menu - The menu window.
-sub ButtonDown
-{
- my $menu = shift;
- $menu->postcascade('active');
- if (defined $Tk::postedMb)
- {
- $Tk::postedMb->grabGlobal
- }
- else
- {
- while ($menu->cget('-type') eq 'normal'
- && $menu->parent->IsMenu
- && $menu->parent->ismapped
- )
- {
- $menu = $menu->parent;
- }
-
- if (!defined $Tk::menuBar)
- {
- $Tk::menuBar = $menu;
- $Tk::cursor = $menu->cget('-cursor');
- $menu->configure(-cursor => 'arrow');
- }
-
- # Don't update grab information if the grab window isn't changing.
- # Otherwise, we'll get an error when we unpost the menus and
- # restore the grab, since the old grab window will not be viewable
- # anymore.
-
- $menu->SaveGrabInfo unless ($menu->IS($menu->grabCurrent));
-
- # Must re-grab even if the grab window hasn't changed, in order
- # to release the implicit grab from the button press.
-
- $menu->grabGlobal if ($Tk::platform eq 'unix');
- }
-}
-
-sub Enter
-{
- my $w = shift;
- my $ev = $w->XEvent;
- $Tk::window = $w;
- if ($w->cget('-type') eq 'tearoff')
- {
- if ($ev->m ne 'NotifyUngrab')
- {
- $w->SetFocus if ($Tk::platform eq 'unix');
- }
- }
- $w->Motion($ev->x, $ev->y, $ev->s);
-}
-
-# Leave --
-# This procedure is invoked to handle Leave events for a menu. It
-# deactivates everything unless the active element is a cascade element
-# and the mouse is now over the submenu.
-#
-# Arguments:
-# menu - The menu window.
-# rootx, rooty - Root coordinates of mouse.
-# state - Modifier state.
-sub Leave
-{
- my $menu = shift;
- my $rootx = shift;
- my $rooty = shift;
- my $state = shift;
- undef $Tk::window;
- return if ($menu->index('active') eq 'none');
- if ($menu->typeIS('active','cascade'))
- {
- my $c = $menu->Containing($rootx,$rooty);
- return if (defined $c && $menu->entrycget('active','-menu')->IS($c));
- }
- $menu->activate('none');
- $menu->GenerateMenuSelect;
-}
-
-# Invoke --
-# This procedure is invoked when button 1 is released over a menu.
-# It invokes the appropriate menu action and unposts the menu if
-# it came from a menubutton.
-#
-# Arguments:
-# w - Name of the menu widget.
-sub Invoke
-{
- my $w = shift;
- my $release = shift;
-
- if ($release && !defined($Tk::window))
- {
- # Mouse was pressed over a menu without a menu button, then
- # dragged off the menu (possibly with a cascade posted) and
- # released. Unpost everything and quit.
-
- $w->postcascade('none');
- $w->activate('none');
- $w->eventGenerate('<<MenuSelect>>');
- $w->Unpost;
- return;
- }
-
- my $type = $w->type('active');
- if ($w->typeIS('active','cascade'))
- {
- $w->postcascade('active');
- my $menu = $w->entrycget('active','-menu');
- $menu->FirstEntry() if (defined $menu);
- }
- elsif ($w->typeIS('active','tearoff'))
- {
- $w->Unpost();
- $w->tearOffMenu();
- }
- elsif ($w->typeIS('active','menubar'))
- {
- $w->postcascade('none');
- $w->activate('none');
- $w->eventGenerate('<<MenuSelect>>');
- $w->Unpost;
- }
- else
- {
- $w->Unpost();
- $w->invoke('active')
- }
-}
-# Escape --
-# This procedure is invoked for the Cancel (or Escape) key. It unposts
-# the given menu and, if it is the top-level menu for a menu button,
-# unposts the menu button as well.
-#
-# Arguments:
-# menu - Name of the menu window.
-sub Escape
-{
- my $menu = shift;
- my $parent = $menu->parent;
- if (!$parent->IsMenu)
- {
- $menu->Unpost()
- }
- elsif ($parent->cget('-type') eq 'menubar')
- {
- $menu->Unpost;
- RestoreOldGrab();
- }
- else
- {
- $menu->NextMenu(-1)
- }
-}
-# LeftRight --
-# This procedure is invoked to handle "left" and "right" traversal
-# motions in menus. It traverses to the next menu in a menu bar,
-# or into or out of a cascaded menu.
-#
-# Arguments:
-# menu - The menu that received the keyboard
-# event.
-# direction - Direction in which to move: "left" or "right"
-sub NextMenu
-{
- my $menu = shift;
- my $direction = shift;
- # First handle traversals into and out of cascaded menus.
- my $count;
- if ($direction eq 'right')
- {
- $count = 1;
- if ($menu->typeIS('active','cascade'))
- {
- $menu->postcascade('active');
- my $m2 = $menu->entrycget('active','-menu');
- $m2->FirstEntry if (defined $m2);
- return;
- }
- else
- {
- my $parent = $menu->parent;
- while ($parent->PathName ne '.')
- {
- if ($parent->IsMenu && $parent->cget('-type') eq 'menubar')
- {
- $parent->SetFocus;
- $parent->NextEntry(1);
- return;
- }
- $parent = $parent->parent;
- }
- }
- }
- else
- {
- $count = -1;
- my $m2 = $menu->parent;
- if ($m2->IsMenu)
- {
- if ($m2->cget('-type') ne 'menubar')
- {
- $menu->activate('none');
- $menu->GenerateMenuSelect;
- $m2->SetFocus;
- # This code unposts any posted submenu in the parent.
- my $tmp = $m2->index('active');
- $m2->activate('none');
- $m2->activate($tmp);
- return;
- }
- }
- }
- # Can't traverse into or out of a cascaded menu. Go to the next
- # or previous menubutton, if that makes sense.
-
- my $m2 = $menu->parent;
- if ($m2->IsMenu)
- {
- if ($m2->cget('-type') eq 'menubar')
- {
- $m2->SetFocus;
- $m2->NextEntry(-1);
- return;
- }
- }
-
- my $w = $Tk::postedMb;
- return unless defined $w;
- my @buttons = $w->parent->children;
- my $length = @buttons;
- my $i = Tk::lsearch(\@buttons,$w)+$count;
- my $mb;
- while (1)
- {
- while ($i < 0)
- {
- $i += $length
- }
- while ($i >= $length)
- {
- $i += -$length
- }
- $mb = $buttons[$i];
- last if ($mb->IsMenubutton && $mb->cget('-state') ne 'disabled'
- && defined($mb->cget('-menu'))
- && $mb->cget('-menu')->index('last') ne 'none'
- );
- return if ($mb == $w);
- $i += $count
- }
- $mb->PostFirst();
-}
-# NextEntry --
-# Activate the next higher or lower entry in the posted menu,
-# wrapping around at the ends. Disabled entries are skipped.
-#
-# Arguments:
-# menu - Menu window that received the keystroke.
-# count - 1 means go to the next lower entry,
-# -1 means go to the next higher entry.
-sub NextEntry
-{
- my $menu = shift;
- my $count = shift;
- if ($menu->index('last') eq 'none')
- {
- return;
- }
- my $length = $menu->index('last')+1;
- my $quitAfter = $length;
- my $active = $menu->index('active');
- my $i = ($active eq 'none') ? 0 : $active+$count;
- while (1)
- {
- return if ($quitAfter <= 0);
- while ($i < 0)
- {
- $i += $length
- }
- while ($i >= $length)
- {
- $i += -$length
- }
- my $state = eval {local $SIG{__DIE__}; $menu->entrycget($i,'-state') };
- last if (defined($state) && $state ne 'disabled');
- return if ($i == $active);
- $i += $count;
- $quitAfter -= 1;
- }
- $menu->activate($i);
- $menu->GenerateMenuSelect;
- if ($menu->cget('-type') eq 'menubar' && $menu->type($i) eq 'cascade')
- {
- my $cascade = $menu->entrycget($i, '-menu');
- $menu->postcascade($i);
- $cascade->FirstEntry if (defined $cascade);
- }
-}
-
-
-# tkTraverseWithinMenu
-# This procedure implements keyboard traversal within a menu. It
-# searches for an entry in the menu that has "char" underlined. If
-# such an entry is found, it is invoked and the menu is unposted.
-#
-# Arguments:
-# w - The name of the menu widget.
-# char - The character to look for; case is
-# ignored. If the string is empty then
-# nothing happens.
-sub TraverseWithinMenu
-{
- my $w = shift;
- my $char = shift;
- return unless (defined $char);
- $char = "\L$char";
- my $last = $w->index('last');
- return if ($last eq 'none');
- for (my $i = 0;$i <= $last;$i += 1)
- {
- my $label = eval {local $SIG{__DIE__}; $w->entrycget($i,'-label') };
- next unless defined($label);
- my $ul = $w->entrycget($i,'-underline');
- if (defined $ul && $ul >= 0)
- {
- $label = substr("\L$label",$ul,1);
- if (defined($label) && $label eq $char)
- {
- if ($w->type($i) eq 'cascade')
- {
- $w->postcascade($i);
- $w->activate($i);
- my $m2 = $w->entrycget($i,'-menu');
- $m2->FirstEntry if (defined $m2);
- }
- else
- {
- $w->Unpost();
- $w->invoke($i);
- }
- return;
- }
- }
- }
-}
-
-sub FindMenu
-{
- my ($menu,$char) = @_;
- if ($menu->cget('-type') eq 'menubar')
- {
- if (!defined($char) || $char eq '')
- {
- $menu->FirstEntry;
- }
- else
- {
- $menu->TraverseWithinMenu($char);
- }
- return $menu;
- }
- return undef;
-}
-
-
-# FirstEntry --
-# Given a menu, this procedure finds the first entry that isn't
-# disabled or a tear-off or separator, and activates that entry.
-# However, if there is already an active entry in the menu (e.g.,
-# because of a previous call to tkPostOverPoint) then the active
-# entry isn't changed. This procedure also sets the input focus
-# to the menu.
-#
-# Arguments:
-# menu - Name of the menu window (possibly empty).
-sub FirstEntry
-{
- my $menu = shift;
- return if (!defined($menu) || $menu eq '' || !ref($menu));
- $menu->SetFocus;
- return if ($menu->index('active') ne 'none');
- my $last = $menu->index('last');
- return if ($last eq 'none');
- for (my $i = 0;$i <= $last;$i += 1)
- {
- my $state = eval {local $SIG{__DIE__}; $menu->entrycget($i,'-state') };
- if (defined $state && $state ne 'disabled' && !$menu->typeIS($i,'tearoff'))
- {
- $menu->activate($i);
- $menu->GenerateMenuSelect;
- if ($menu->type($i) eq 'cascade')
- {
- my $cascade = $menu->entrycget($i,'-menu');
- if (defined $cascade)
- {
- $menu->postcascade($i);
- $cascade->FirstEntry;
- }
- }
- return;
- }
- }
-}
-
-# FindName --
-# Given a menu and a text string, return the index of the menu entry
-# that displays the string as its label. If there is no such entry,
-# return an empty string. This procedure is tricky because some names
-# like "active" have a special meaning in menu commands, so we can't
-# always use the "index" widget command.
-#
-# Arguments:
-# menu - Name of the menu widget.
-# s - String to look for.
-sub FindName
-{
- my $menu = shift;
- my $s = shift;
- my $i = undef;
- if ($s !~ /^active$|^last$|^none$|^[0-9]|^@/)
- {
- $i = eval {local $SIG{__DIE__}; $menu->index($s) };
- return $i;
- }
- my $last = $menu->index('last');
- return if ($last eq 'none');
- for ($i = 0;$i <= $last;$i += 1)
- {
- my $label = eval {local $SIG{__DIE__}; $menu->entrycget($i,'-label') };
- return $i if (defined $label && $label eq $s);
- }
- return undef;
-}
-# PostOverPoint --
-# This procedure posts a given menu such that a given entry in the
-# menu is centered over a given point in the root window. It also
-# activates the given entry.
-#
-# Arguments:
-# menu - Menu to post.
-# x, y - Root coordinates of point.
-# entry - Index of entry within menu to center over (x,y).
-# If omitted or specified as {}, then the menu's
-# upper-left corner goes at (x,y).
-sub PostOverPoint
-{
- my $menu = shift;
- my $x = shift;
- my $y = shift;
- my $entry = shift;
- if (defined $entry)
- {
- if ($entry == $menu->index('last'))
- {
- $y -= ($menu->yposition($entry)+$menu->height)/2;
- }
- else
- {
- $y -= ($menu->yposition($entry)+$menu->yposition($entry+1))/2;
- }
- $x -= $menu->reqwidth/2;
- }
- $menu->post($x,$y);
- if (defined($entry) && $menu->entrycget($entry,'-state') ne 'disabled')
- {
- $menu->activate($entry);
- $menu->GenerateMenuSelect;
- }
-}
-# tk_popup --
-# This procedure pops up a menu and sets things up for traversing
-# the menu and its submenus.
-#
-# Arguments:
-# menu - Name of the menu to be popped up.
-# x, y - Root coordinates at which to pop up the
-# menu.
-# entry - Index of a menu entry to center over (x,y).
-# If omitted or specified as {}, then menu's
-# upper-left corner goes at (x,y).
-sub Post
-{
- my $menu = shift;
- return unless (defined $menu);
- my $x = shift;
- my $y = shift;
- my $entry = shift;
- Unpost(undef) if (defined($Tk::popup) || defined($Tk::postedMb));
- $menu->PostOverPoint($x,$y,$entry);
- $menu->grabGlobal;
- $Tk::popup = $menu;
- $Tk::focus = $menu->focusCurrent;
- $menu->focus();
-}
-
-sub SetFocus
-{
- my $menu = shift;
- $Tk::focus = $menu->focusCurrent if (!defined($Tk::focus));
- $menu->focus;
-}
-
-sub GenerateMenuSelect
-{
- my $menu = shift;
- $Tk::activeMenu = $menu;
- $Tk::activeItem = $menu->index('active');
- $menu->eventGenerate('<<MenuSelect>>'); # FIXME
-}
-
-# Converted from tearoff.tcl --
-#
-# This file contains procedures that implement tear-off menus.
-#
-# @(#) tearoff.tcl 1.3 94/12/17 16:05:25
-#
-# Copyright (c) 1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# tkTearoffMenu --
-# Given the name of a menu, this procedure creates a torn-off menu
-# that is identical to the given menu (including nested submenus).
-# The new torn-off menu exists as a toplevel window managed by the
-# window manager. The return value is the name of the new menu.
-#
-# Arguments:
-# w - The menu to be torn-off (duplicated).
-sub tearOffMenu
-{
- my $w = shift;
- my $x = (@_) ? shift : 0;
- my $y = (@_) ? shift : 0;
-
- $x = $w->rootx if $x == 0;
- $y = $w->rooty if $y == 0;
-
- # Find a unique name to use for the torn-off menu. Find the first
- # ancestor of w that is a toplevel but not a menu, and use this as
- # the parent of the new menu. This guarantees that the torn off
- # menu will be on the same screen as the original menu. By making
- # it a child of the ancestor, rather than a child of the menu, it
- # can continue to live even if the menu is deleted; it will go
- # away when the toplevel goes away.
-
- my $parent = $w->parent;
- while ($parent->toplevel != $parent || $parent->IsMenu)
- {
- $parent = $parent->parent;
- }
- my $menu = $w->clone($parent->PathName,'tearoff');
-
- # Pick a title for the new menu by looking at the parent of the
- # original: if the parent is a menu, then use the text of the active
- # entry. If it's a menubutton then use its text.
- my $title = $w->cget('-title');
- # print ref($w),' ',$w->PathName," $w\n";
- unless (defined $title && length($title))
- {
- $parent = $w->parent;
- if ($parent)
- {
- if ($parent->IsMenubutton)
- {
- $title = $parent->cget('-text');
- }
- elsif ($parent->IsMenu)
- {
- $title = $parent->entrycget('active','-label');
- }
- }
- }
- $menu->title($title) if (defined $title && length($title));
- $menu->post($x,$y);
- # Set tkPriv(focus) on entry: otherwise the focus will get lost
- # after keyboard invocation of a sub-menu (it will stay on the
- # submenu).
-
-
- # This seems to conflict with <Enter> class binding above
- # if this fires before the class binding the wrong thing
- # will get saved in $Tk::focus
- # $menu->bind('<Enter>','EnterFocus');
- $menu->Callback('-tearoffcommand');
- return $menu;
-}
-
-# tkMenuDup --
-# Given a menu (hierarchy), create a duplicate menu (hierarchy)
-# in a given window.
-#
-# Arguments:
-# src - Source window. Must be a menu. It and its
-# menu descendants will be duplicated at path.
-# path - Name to use for topmost menu in duplicate
-# hierarchy.
-
-sub tkMenuDup
-{
- my ($src,$path,$type) = @_;
- my ($pname,$name) = $path =~ /^(.*)\.([^\.]*)$/;
- ($name) = $src->PathName =~ /^.*\.([^\.]*)$/ unless $name;
- my $parent = ($pname) ? $src->Widget($pname) : $src->MainWindow;
- my %args = (Name => $name, -type => $type);
- foreach my $option ($src->configure())
- {
- next if (@$option == 2);
- $args{$$option[0]} = $$option[4] unless exists $args{$$option[0]};
- }
- my $dst = ref($src)->new($parent,%args);
- # print "MenuDup $src $path $name $type ->",$dst->PathName,"\n";
- $_[1] = $dst;
- if ($type eq 'tearoff')
- {
- $dst->transient($parent->toplevel);
- }
- my $last = $src->index('last');
- if ($last ne 'none')
- {
- for (my $i = $src->cget('-tearoff'); $i <= $last; $i++)
- {
- my $type = $src->type($i);
- if (defined $type)
- {
- my @args = ();
- foreach my $option ($src->entryconfigure($i))
- {
- next if (@$option == 2);
- push(@args,$$option[0],$$option[4]) if (defined $$option[4]);
- }
- $dst->add($type,@args);
- }
- }
- }
- # Duplicate the binding tags and bindings from the source menu.
- my @bindtags = $src->bindtags;
- $path = $src->PathName;
- foreach (@bindtags)
- {
- $_ = $dst if ($_ eq $path);
- }
- $dst->bindtags([@bindtags]);
- foreach my $event ($src->bind)
- {
- my $cb = $src->bind($event);
-# print "$event => $cb\n";
- $dst->bind($event,$cb->Substitute($src,$dst));
- }
- return $dst;
-}
-
-
-
-# Some convenience methods
-
-sub separator { require Tk::Menu::Item; shift->Separator(@_); }
-sub cascade { require Tk::Menu::Item; shift->Cascade(@_); }
-sub checkbutton { require Tk::Menu::Item; shift->Checkbutton(@_); }
-sub radiobutton { require Tk::Menu::Item; shift->Radiobutton(@_); }
-
-sub command
-{
- my ($menu,%args) = @_;
- require Tk::Menu::Item;
- if (exists $args{-button})
- {
- # Backward compatible stuff from 'Menubar'
- my $button = delete $args{-button};
- $button = ['Misc', -underline => 0 ] unless (defined $button);
- my @bargs = ();
- ($button,@bargs) = @$button if (ref($button) && ref $button eq 'ARRAY');
- $menu = $menu->Menubutton(-label => $button, @bargs);
- }
- $menu->Command(%args);
-}
-
-sub Menubutton
-{
- my ($menu,%args) = @_;
- my $name = delete($args{'-text'}) || $args{'-label'};;
- $args{'-label'} = $name if (defined $name);
- my $items = delete $args{'-menuitems'};
- foreach my $opt (qw(-pack -after -before -side -padx -ipadx -pady -ipady -fill))
- {
- delete $args{$opt};
- }
- if (defined($name) && !defined($args{-underline}))
- {
- my $underline = ($name =~ s/^(.*)~/$1/) ? length($1): undef;
- if (defined($underline) && ($underline >= 0))
- {
- $args{-underline} = $underline;
- $args{-label} = $name;
- }
- }
- my $hash = $menu->TkHash('MenuButtons');
- my $mb = $hash->{$name};
- if (defined $mb)
- {
- delete $args{'-tearoff'}; # too late!
- $mb->configure(%args) if %args;
- }
- else
- {
- $mb = $menu->cascade(%args);
- $hash->{$name} = $mb;
- }
- $mb->menu->AddItems(@$items) if defined($items) && @$items;
- return $mb;
-}
-
-sub BalloonInfo
-{
- my ($menu,$balloon,$X,$Y,@opt) = @_;
- my $i = $menu->index('active');
- if ($i eq 'none')
- {
- my $y = $Y - $menu->rooty;
- $i = $menu->index("\@$y");
- }
- foreach my $opt (@opt)
- {
- my $info = $balloon->GetOption($opt,$menu);
- if ($opt =~ /^-(statusmsg|balloonmsg)$/ && UNIVERSAL::isa($info,'ARRAY'))
- {
- $balloon->Subclient($i);
- return '' if $i eq 'none';
- return ${$info}[$i] || '';
- }
- return $info;
- }
-}
-
-1;
-
-__END__
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Menu/Item.pm b/Master/tlpkg/tlperl/lib/Tk/Menu/Item.pm
deleted file mode 100644
index 403052ef5bd..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Menu/Item.pm
+++ /dev/null
@@ -1,180 +0,0 @@
-package Tk::Menu::Item;
-
-require Tk::Menu;
-
-use Carp;
-use strict;
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/Menu/Item.pm#4 $
-
-sub PreInit
-{
- # Dummy (virtual) method
- my ($class,$menu,$minfo) = @_;
-}
-
-sub new
-{
- my ($class,$menu,%minfo) = @_;
- my $kind = $class->kind;
- my $name = $minfo{'-label'};
- if (defined $kind)
- {
- my $invoke = delete $minfo{'-invoke'};
- if (defined $name)
- {
- # Use ~ in name/label to set -underline
- if (defined($minfo{-label}) && !defined($minfo{-underline}))
- {
- my $cleanlabel = $minfo{-label};
- my $underline = ($cleanlabel =~ s/^(.*)~/$1/) ? length($1): undef;
- if (defined($underline) && ($underline >= 0))
- {
- $minfo{-underline} = $underline;
- $name = $cleanlabel if ($minfo{-label} eq $name);
- $minfo{-label} = $cleanlabel;
- }
- }
- }
- else
- {
- $name = $minfo{'-bitmap'} || $minfo{'-image'};
- croak('No -label') unless defined($name);
- $minfo{'-label'} = $name;
- }
- $class->PreInit($menu,\%minfo);
- $menu->add($kind,%minfo);
- $menu->invoke('last') if ($invoke);
- }
- else
- {
- $menu->add('separator');
- }
- return bless [$menu,$name],$class;
-}
-
-sub configure
-{
- my $obj = shift;
- my ($menu,$name) = @$obj;
- my %args = @_;
- $obj->[1] = $args{'-label'} if exists $args{'-label'};
- $menu->entryconfigure($name,@_);
-}
-
-sub cget
-{
- my $obj = shift;
- my ($menu,$name) = @$obj;
- $menu->entrycget($name,@_);
-}
-
-sub parentMenu
-{
- my $obj = shift;
- return $obj->[0];
-}
-
-# Default "kind" is a command
-sub kind { return 'command' }
-
-# Now the derived packages
-
-package Tk::Menu::Separator;
-use base qw(Tk::Menu::Item);
-Construct Tk::Menu 'Separator';
-sub kind { return undef }
-
-package Tk::Menu::Button;
-use base qw(Tk::Menu::Item);
-Construct Tk::Menu 'Button';
-Construct Tk::Menu 'Command';
-
-#package Tk::Menu::Command;
-#use base qw(Tk::Menu::Button);
-#Construct Tk::Menu 'Command';
-
-package Tk::Menu::Cascade;
-use base qw(Tk::Menu::Item);
-Construct Tk::Menu 'Cascade';
-sub kind { return 'cascade' }
-use Carp;
-
-sub PreInit
-{
- my ($class,$menu,$minfo) = @_;
- my $tearoff = delete $minfo->{-tearoff};
- my $items = delete $minfo->{-menuitems};
- my $widgetvar = delete $minfo->{-menuvar};
- my $command = delete $minfo->{-postcommand};
- my $name = delete $minfo->{'Name'};
- $name = $minfo->{'-label'} unless defined $name;
- my @args = ();
- push(@args, '-tearoff' => $tearoff) if (defined $tearoff);
- push(@args, '-menuitems' => $items) if (defined $items);
- push(@args, '-postcommand' => $command) if (defined $command);
- my $submenu = $minfo->{'-menu'};
- unless (defined $submenu)
- {
- $minfo->{'-menu'} = $submenu = $menu->Menu(Name => $name, @args);
- }
- $$widgetvar = $submenu if (defined($widgetvar) && ref($widgetvar));
-}
-
-sub menu
-{
- my ($self,%args) = @_;
- my $w = $self->parentMenu;
- my $menu = $self->cget('-menu');
- if (!defined $menu)
- {
- require Tk::Menu;
- $w->ColorOptions(\%args);
- my $name = $self->cget('-label');
- warn "Had to (re-)reate menu for $name";
- $menu = $w->Menu(Name => $name, %args);
- $self->configure('-menu'=>$menu);
- }
- else
- {
- $menu->configure(%args) if %args;
- }
- return $menu;
-}
-
-# Some convenience methods
-
-sub separator { shift->menu->Separator(@_); }
-sub command { shift->menu->Command(@_); }
-sub cascade { shift->menu->Cascade(@_); }
-sub checkbutton { shift->menu->Checkbutton(@_); }
-sub radiobutton { shift->menu->Radiobutton(@_); }
-
-sub pack
-{
- my $w = shift;
- if ($^W)
- {
- require Carp;
- Carp::carp("Cannot 'pack' $w - done automatically")
- }
-}
-
-package Tk::Menu::Checkbutton;
-use base qw(Tk::Menu::Item);
-Construct Tk::Menu 'Checkbutton';
-sub kind { return 'checkbutton' }
-
-package Tk::Menu::Radiobutton;
-use base qw(Tk::Menu::Item);
-Construct Tk::Menu 'Radiobutton';
-sub kind { return 'radiobutton' }
-
-package Tk::Menu::Item;
-
-1;
-__END__
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Menubar.pm b/Master/tlpkg/tlperl/lib/Tk/Menubar.pm
deleted file mode 100644
index 54b745130bf..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Menubar.pm
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (c) 1995-2003 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-package Tk::Menubar;
-use strict;
-
-use vars qw($VERSION);
-$VERSION = '4.006'; # $Id: //depot/Tkutf8/Tk/Menubar.pm#6 $
-
-use Tk::Frame;
-use Tk::Menu;
-# use Carp;
-# carp "Tk::Menubar is obsolete" if $^W;
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/Menubutton.pm b/Master/tlpkg/tlperl/lib/Tk/Menubutton.pm
deleted file mode 100644
index 59456b2dea2..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Menubutton.pm
+++ /dev/null
@@ -1,398 +0,0 @@
-# Converted from menu.tcl --
-#
-# This file defines the default bindings for Tk menus and menubuttons.
-# It also implements keyboard traversal of menus and implements a few
-# other utility procedures related to menus.
-#
-# @(#) menu.tcl 1.34 94/12/19 17:09:09
-#
-# Copyright (c) 1992-1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-
-
-package Tk::Menubutton;
-require Tk;
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/Menubutton/Menubutton.pm#4 $
-
-use base qw(Tk::Widget);
-
-Construct Tk::Widget 'Menubutton';
-
-import Tk qw(&Ev $XS_VERSION);
-
-bootstrap Tk::Menubutton;
-
-sub Tk_cmd { \&Tk::menubutton }
-
-sub InitObject
-{
- my ($mb,$args) = @_;
- my $menuitems = delete $args->{-menuitems};
- my $tearoff = delete $args->{-tearoff};
- $mb->SUPER::InitObject($args);
- if ((defined($menuitems) || defined($tearoff)) && %$args)
- {
- $mb->configure(%$args);
- %$args = ();
- }
- $mb->menu(-tearoff => $tearoff) if (defined $tearoff);
- $mb->AddItems(@$menuitems) if (defined $menuitems)
-}
-
-
-#
-#-------------------------------------------------------------------------
-# Elements of tkPriv that are used in this file:
-#
-# cursor - Saves the -cursor option for the posted menubutton.
-# focus - Saves the focus during a menu selection operation.
-# Focus gets restored here when the menu is unposted.
-# inMenubutton - The name of the menubutton widget containing
-# the mouse, or an empty string if the mouse is
-# not over any menubutton.
-# popup - If a menu has been popped up via tk_popup, this
-# gives the name of the menu. Otherwise this
-# value is empty.
-# postedMb - Name of the menubutton whose menu is currently
-# posted, or an empty string if nothing is posted
-# A grab is set on this widget.
-# relief - Used to save the original relief of the current
-# menubutton.
-# window - When the mouse is over a menu, this holds the
-# name of the menu; it's cleared when the mouse
-# leaves the menu.
-#-------------------------------------------------------------------------
-#-------------------------------------------------------------------------
-# Overall note:
-# This file is tricky because there are four different ways that menus
-# can be used:
-#
-# 1. As a pulldown from a menubutton. This is the most common usage.
-# In this style, the variable tkPriv(postedMb) identifies the posted
-# menubutton.
-# 2. As a torn-off menu copied from some other menu. In this style
-# tkPriv(postedMb) is empty, and the top-level menu is no
-# override-redirect.
-# 3. As an option menu, triggered from an option menubutton. In thi
-# style tkPriv(postedMb) identifies the posted menubutton.
-# 4. As a popup menu. In this style tkPriv(postedMb) is empty and
-# the top-level menu is override-redirect.
-#
-# The various binding procedures use the state described above to
-# distinguish the various cases and take different actions in each
-# case.
-#-------------------------------------------------------------------------
-# Menu::Bind --
-# This procedure is invoked the first time the mouse enters a menubutton
-# widget or a menubutton widget receives the input focus. It creates
-# all of the class bindings for both menubuttons and menus.
-#
-# Arguments:
-# w - The widget that was just entered or just received
-# the input focus.
-# event - Indicates which event caused the procedure to be invoked
-# (Enter or FocusIn). It is used so that we can carry out
-# the functions of that event in addition to setting up
-# bindings.
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $mw->bind($class,'<FocusIn>','NoOp');
- $mw->bind($class,'<Enter>','Enter');
- $mw->bind($class,'<Leave>','Leave');
- $mw->bind($class,'<1>','ButtonDown');
- $mw->bind($class,'<Motion>',['Motion','up',Ev('X'),Ev('Y')]);
- $mw->bind($class,'<B1-Motion>',['Motion','down',Ev('X'),Ev('Y')]);
- $mw->bind($class,'<ButtonRelease-1>','ButtonUp');
- $mw->bind($class,'<space>','PostFirst');
- $mw->bind($class,'<Return>','PostFirst');
- return $class;
-}
-
-sub ButtonDown
-{my $w = shift;
- my $Ev = $w->XEvent;
- $Tk::inMenubutton->Post($Ev->X,$Ev->Y) if (defined $Tk::inMenubutton);
-}
-
-sub PostFirst
-{
- my $w = shift;
- my $menu = $w->cget('-menu');
- $w->Post();
- $menu->FirstEntry() if (defined $menu);
-}
-
-
-# Enter --
-# This procedure is invoked when the mouse enters a menubutton
-# widget. It activates the widget unless it is disabled. Note:
-# this procedure is only invoked when mouse button 1 is *not* down.
-# The procedure B1Enter is invoked if the button is down.
-#
-# Arguments:
-# w - The name of the widget.
-sub Enter
-{
- my $w = shift;
- $Tk::inMenubutton->Leave if (defined $Tk::inMenubutton);
- $Tk::inMenubutton = $w;
- if ($w->cget('-state') ne 'disabled')
- {
- $w->configure('-state','active')
- }
-}
-
-sub Leave
-{
- my $w = shift;
- $Tk::inMenubutton = undef;
- return unless Tk::Exists($w);
- if ($w->cget('-state') eq 'active')
- {
- $w->configure('-state','normal')
- }
-}
-# Post --
-# Given a menubutton, this procedure does all the work of posting
-# its associated menu and unposting any other menu that is currently
-# posted.
-#
-# Arguments:
-# w - The name of the menubutton widget whose menu
-# is to be posted.
-# x, y - Root coordinates of cursor, used for positioning
-# option menus. If not specified, then the center
-# of the menubutton is used for an option menu.
-sub Post
-{
- my $w = shift;
- my $x = shift;
- my $y = shift;
- return if ($w->cget('-state') eq 'disabled');
- return if (defined $Tk::postedMb && $w == $Tk::postedMb);
- my $menu = $w->cget('-menu');
- return unless (defined($menu) && $menu->index('last') ne 'none');
-
- my $tearoff = $Tk::platform eq 'unix' || $menu->cget('-type') eq 'tearoff';
-
- my $wpath = $w->PathName;
- my $mpath = $menu->PathName;
- unless (index($mpath,"$wpath.") == 0)
- {
- die "Cannot post $mpath : not a descendant of $wpath";
- }
-
- my $cur = $Tk::postedMb;
- if (defined $cur)
- {
- Tk::Menu->Unpost(undef); # fixme
- }
- $Tk::cursor = $w->cget('-cursor');
- $Tk::relief = $w->cget('-relief');
- $w->configure('-cursor','arrow');
- $w->configure('-relief','raised');
- $Tk::postedMb = $w;
- $Tk::focus = $w->focusCurrent;
- $menu->activate('none');
- $menu->GenerateMenuSelect;
- # If this looks like an option menubutton then post the menu so
- # that the current entry is on top of the mouse. Otherwise post
- # the menu just below the menubutton, as for a pull-down.
-
- eval
- {local $SIG{'__DIE__'};
- my $dir = $w->cget('-direction');
- if ($dir eq 'above')
- {
- $menu->post($w->rootx, $w->rooty - $menu->ReqHeight);
- }
- elsif ($dir eq 'below')
- {
- $menu->post($w->rootx, $w->rooty + $w->Height);
- }
- elsif ($dir eq 'left')
- {
- my $x = $w->rootx - $menu->ReqWidth;
- my $y = int((2*$w->rooty + $w->Height) / 2);
- if ($w->cget('-indicatoron') == 1 && defined($w->cget('-textvariable')))
- {
- $menu->PostOverPoint($x,$y,$menu->FindName($w->cget('-text')))
- }
- else
- {
- $menu->post($x,$y);
- }
- }
- elsif ($dir eq 'right')
- {
- my $x = $w->rootx + $w->Width;
- my $y = int((2*$w->rooty + $w->Height) / 2);
- if ($w->cget('-indicatoron') == 1 && defined($w->cget('-textvariable')))
- {
- $menu->PostOverPoint($x,$y,$menu->FindName($w->cget('-text')))
- }
- else
- {
- $menu->post($x,$y);
- }
- }
- else
- {
- if ($w->cget('-indicatoron') == 1 && defined($w->cget('-textvariable')))
- {
- if (!defined($y))
- {
- $x = $w->rootx+$w->width/2;
- $y = $w->rooty+$w->height/2
- }
- $menu->PostOverPoint($x,$y,$menu->FindName($w->cget('-text')))
- }
- else
- {
- $menu->post($w->rootx,$w->rooty+$w->height);
- }
- }
- };
- if ($@)
- {
- Tk::Menu->Unpost;
- die $@
- }
-
- $Tk::tearoff = $tearoff;
- if ($tearoff)
- {
- $menu->focus;
- $w->SaveGrabInfo;
- $w->grabGlobal;
- }
-}
-# Motion --
-# This procedure handles mouse motion events inside menubuttons, and
-# also outside menubuttons when a menubutton has a grab (e.g. when a
-# menu selection operation is in progress).
-#
-# Arguments:
-# w - The name of the menubutton widget.
-# upDown - "down" means button 1 is pressed, "up" means
-# it isn't.
-# rootx, rooty - Coordinates of mouse, in (virtual?) root window.
-sub Motion
-{
- my $w = shift;
- my $upDown = shift;
- my $rootx = shift;
- my $rooty = shift;
- return if (defined($Tk::inMenubutton) && $Tk::inMenubutton == $w);
- my $new = $w->Containing($rootx,$rooty);
- if (defined($Tk::inMenubutton))
- {
- if (!defined($new) || ($new != $Tk::inMenubutton && $w->toplevel != $new->toplevel))
- {
- $Tk::inMenubutton->Leave();
- }
- }
- if (defined($new) && $new->IsMenubutton && $new->cget('-indicatoron') == 0 &&
- $w->cget('-indicatoron') == 0)
- {
- if ($upDown eq 'down')
- {
- $new->Post($rootx,$rooty);
- }
- else
- {
- $new->Enter();
- }
- }
-}
-# ButtonUp --
-# This procedure is invoked to handle button 1 releases for menubuttons.
-# If the release happens inside the menubutton then leave its menu
-# posted with element 0 activated. Otherwise, unpost the menu.
-#
-# Arguments:
-# w - The name of the menubutton widget.
-
-sub ButtonUp {
- my $w = shift;
-
- my $tearoff = $Tk::platform eq 'unix' || (defined($w->cget('-menu')) &&
- $w->cget('-menu')->cget('-type') eq 'tearoff');
- if ($tearoff && (defined($Tk::postedMb) && $Tk::postedMb == $w)
- && (defined($Tk::inMenubutton) && $Tk::inMenubutton == $w)) {
- $Tk::postedMb->cget(-menu)->FirstEntry();
- } else {
- Tk::Menu->Unpost(undef);
- }
-} # end ButtonUp
-
-# Some convenience methods
-
-sub menu
-{
- my ($w,%args) = @_;
- my $menu = $w->cget('-menu');
- if (!defined $menu)
- {
- require Tk::Menu;
- $w->ColorOptions(\%args) if ($Tk::platform eq 'unix');
- $menu = $w->Menu(%args);
- $w->configure('-menu'=>$menu);
- }
- else
- {
- $menu->configure(%args);
- }
- return $menu;
-}
-
-sub separator { require Tk::Menu::Item; shift->menu->Separator(@_); }
-sub command { require Tk::Menu::Item; shift->menu->Command(@_); }
-sub cascade { require Tk::Menu::Item; shift->menu->Cascade(@_); }
-sub checkbutton { require Tk::Menu::Item; shift->menu->Checkbutton(@_); }
-sub radiobutton { require Tk::Menu::Item; shift->menu->Radiobutton(@_); }
-
-sub AddItems
-{
- shift->menu->AddItems(@_);
-}
-
-sub entryconfigure
-{
- shift->menu->entryconfigure(@_);
-}
-
-sub entrycget
-{
- shift->menu->entrycget(@_);
-}
-
-sub FindMenu
-{
- my $child = shift;
- my $char = shift;
- my $ul = $child->cget('-underline');
- if (defined $ul && $ul >= 0 && $child->cget('-state') ne 'disabled')
- {
- my $char2 = $child->cget('-text');
- $char2 = substr("\L$char2",$ul,1) if (defined $char2);
- if (!defined($char) || $char eq '' || (defined($char2) && "\l$char" eq $char2))
- {
- $child->PostFirst;
- return $child;
- }
- }
- return undef;
-}
-
-1;
-
-__END__
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Message.pm b/Master/tlpkg/tlperl/lib/Tk/Message.pm
deleted file mode 100644
index 63b0f170097..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Message.pm
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright (c) 1995-2003 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-package Tk::Message;
-use strict;
-
-use vars qw($VERSION);
-$VERSION = '4.006'; # $Id: //depot/Tkutf8/Tk/Message.pm#6 $
-
-require Tk::Widget;
-
-use base qw(Tk::Widget);
-
-Construct Tk::Widget 'Message';
-
-sub Tk_cmd { \&Tk::message }
-
-1;
-__END__
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/NBFrame.pm b/Master/tlpkg/tlperl/lib/Tk/NBFrame.pm
deleted file mode 100644
index 0e45251f852..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/NBFrame.pm
+++ /dev/null
@@ -1,20 +0,0 @@
-package Tk::NBFrame;
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/NBFrame/NBFrame.pm#4 $
-
-use Tk qw($XS_VERSION);
-
-use base qw(Tk::Widget);
-
-Construct Tk::Widget 'NBFrame';
-
-bootstrap Tk::NBFrame;
-
-sub Tk_cmd { \&Tk::nbframe }
-
-Tk::Methods qw(activate add delete focus info geometryinfo identify
- move pagecget pageconfigure);
-
-1;
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/NoteBook.pm b/Master/tlpkg/tlperl/lib/Tk/NoteBook.pm
deleted file mode 100644
index 64db87a80d3..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/NoteBook.pm
+++ /dev/null
@@ -1,452 +0,0 @@
-package Tk::NoteBook;
-#
-# Implementation of NoteBook widget.
-# Derived from NoteBook.tcl in Tix 4.0
-
-# Contributed by Rajappa Iyer <rsi@earthling.net>
-# Hacked by Nick for 'menu' traversal.
-# Restructured by Nick
-
-use vars qw($VERSION);
-
-$VERSION = sprintf '4.%03d', q$Revision: #9 $ =~ /\D(\d+)\s*$/;
-require Tk::NBFrame;
-
-use base qw(Tk::Derived Tk::NBFrame);
-Tk::Widget->Construct('NoteBook');
-use strict;
-
-use Tk qw(Ev);
-
-use Carp;
-require Tk::Frame;
-
-sub TraverseToNoteBook;
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- # class binding does not work right due to extra level of
- # widget hierachy
- $mw->bind($class,'<ButtonPress-1>', ['MouseDown',Ev('x'),Ev('y')]);
- $mw->bind($class,'<ButtonRelease-1>', ['MouseUp',Ev('x'),Ev('y')]);
-
- $mw->bind($class,'<B1-Motion>', ['MouseDown',Ev('x'),Ev('y')]);
- $mw->bind($class,'<Left>', ['FocusNext','prev']);
- $mw->bind($class,'<Right>', ['FocusNext','next']);
-
- $mw->bind($class,'<Return>', 'SetFocusByKey');
- $mw->bind($class,'<space>', 'SetFocusByKey');
- return $class;
-}
-
-sub raised
-{
- return shift->{'topchild'};
-}
-
-sub Populate
-{
- my ($w, $args) = @_;
-
- $w->SUPER::Populate($args);
- $w->{'pad-x1'} = undef;
- $w->{'pad-x2'} = undef;
- $w->{'pad-y1'} = undef;
- $w->{'pad-y2'} = undef;
-
- $w->{'windows'} = [];
- $w->{'nWindows'} = 0;
- $w->{'minH'} = 1;
- $w->{'minW'} = 1;
-
- $w->{'counter'} = 0;
- $w->{'resize'} = 0;
-
- $w->ConfigSpecs(-ipadx => ['PASSIVE', 'ipadX', 'Pad', 0],
- -ipady => ['PASSIVE', 'ipadY', 'Pad', 0],
- -takefocus => ['SELF', 'takeFocus', 'TakeFocus', 0],
- -dynamicgeometry => ['PASSIVE', 'dynamicGeometry', 'DynamicGeometry', 0]);
-
- # SetBindings
- $w->bind('<Configure>','MasterGeomProc');
-
- $args->{-slave} = 1;
- $args->{-takefocus} = 1;
- $args->{-relief} = 'raised';
-
- $w->QueueResize;
-}
-
-
-#---------------------------
-# Public methods
-#---------------------------
-
-sub page_widget
-{
- my $w = shift;
- $w->{'_pages_'} = {} unless exists $w->{'_pages_'};
- my $h = $w->{'_pages_'};
- if (@_)
- {
- my $name = shift;
- if (@_)
- {
- my $cw = shift;
- if (defined $cw)
- {
- $h->{$name} = $cw;
- }
- else
- {
- return delete $h->{$name};
- }
- }
- return $h->{$name};
- }
- else
- {
- return (values %$h);
- }
-}
-
-sub add
-{
- my ($w, $child, %args) = @_;
-
- croak("$child already exists") if defined $w->page_widget($child);
-
- my $f = Tk::Frame->new($w,Name => $child,-relief => 'raised');
-
- my $ccmd = delete $args{-createcmd};
- my $rcmd = delete $args{-raisecmd};
- $f->{-createcmd} = Tk::Callback->new($ccmd) if (defined $ccmd);
- $f->{-raisecmd} = Tk::Callback->new($rcmd) if (defined $rcmd);
-
- # manage our geometry
- $w->ManageGeometry($f);
- # create default bindings
- $f->bind('<Configure>',[$w,'ClientGeomProc','-configure', $f]);
- $f->bind('<Destroy>', [$w,'delete',$child,1]);
- $w->page_widget($child,$f);
- $w->{'nWindows'}++;
- push(@{$w->{'windows'}}, $child);
- $w->SUPER::add($child,%args);
- return $f;
-}
-
-sub raise
-{
- my ($w, $child) = @_;
- return unless defined $child;
- if ($w->pagecget($child, -state) eq 'normal')
- {
- $w->activate($child);
- $w->focus($child);
- my $childw = $w->page_widget($child);
- if ($childw)
- {
- if (defined $childw->{-createcmd})
- {
- $childw->{-createcmd}->Call($childw);
- delete $childw->{-createcmd};
- }
- # hide the original visible window
- my $oldtop = $w->{'topchild'};
- if (defined($oldtop) && ($oldtop ne $child))
- {
- $w->page_widget($oldtop)->UnmapWindow;
- }
- $w->{'topchild'} = $child;
- my $myW = $w->Width;
- my $myH = $w->Height;
-
- if (!defined $w->{'pad-x1'}) {
- $w->InitTabSize;
- }
-
- my $cW = $myW - $w->{'pad-x1'} - $w->{'pad-x2'} - 2 * (defined $w->{-ipadx} ? $w->{-ipadx} : 0);
- my $cH = $myH - $w->{'pad-y1'} - $w->{'pad-y2'} - 2 * (defined $w->{-ipady} ? $w->{-ipady} : 0);
- my $cX = $w->{'pad-x1'} + (defined $w->{-ipadx} ? $w->{-ipadx} : 0);
- my $cY = $w->{'pad-y1'} + (defined $w->{-ipady} ? $w->{-ipady} : 0);
-
- if ($cW > 0 && $cH > 0)
- {
- $childw->MoveResizeWindow($cX, $cY, $cW, $cH);
- $childw->MapWindow;
- $childw->raise;
- }
- if ((not defined $oldtop) || ($oldtop ne $child))
- {
- if (defined $childw->{-raisecmd})
- {
- $childw->{-raisecmd}->Call($childw);
- }
- }
- }
- }
-}
-
-sub pageconfigure
-{
- my ($w, $child, %args) = @_;
- my $childw = $w->page_widget($child);
- if (defined $childw)
- {
- my $ccmd = delete $args{-createcmd};
- my $rcmd = delete $args{-raisecmd};
- $childw->{-createcmd} = Tk::Callback->new($ccmd) if (defined $ccmd);
- $childw->{-raisecmd} = Tk::Callback->new($rcmd) if (defined $rcmd);
- $w->SUPER::pageconfigure($child, %args) if (keys %args);
- }
-}
-
-sub pages {
- my ($w) = @_;
- return @{$w->{'windows'}};
-}
-
-sub pagecget
-{
- my ($w, $child, $opt) = @_;
- my $childw = $w->page_widget($child);
- if (defined $childw)
- {
- return $childw->{-createcmd} if ($opt =~ /-createcmd/);
- return $childw->{-raisecmd} if ($opt =~ /-raisecmd/);
- return $w->SUPER::pagecget($child, $opt);
- }
- else
- {
- carp "page $child does not exist";
- }
-}
-
-sub delete
-{
- my ($w, $child, $destroy) = @_;
- my $childw = $w->page_widget($child,undef);
- if (defined $childw)
- {
- $childw->bind('<Destroy>', undef);
- $childw->destroy;
- @{$w->{'windows'}} = grep($_ !~ /$child/, @{$w->{'windows'}});
- $w->{'nWindows'}--;
- $w->SUPER::delete($child);
- # see if the child to be deleted was the top child
- if ((defined $w->{'topchild'}) && ($w->{'topchild'} eq $child))
- {
- delete $w->{'topchild'};
- if ( @{$w->{'windows'}})
- {
- $w->raise($w->{'windows'}[0]);
- }
- }
- }
- else
- {
- carp "page $child does not exist" unless $destroy;
- }
-}
-
-#---------------------------------------
-# Private methods
-#---------------------------------------
-
-sub MouseDown {
- my ($w, $x, $y) = @_;
- my $name = $w->identify($x, $y);
- $w->focus($name);
- $w->{'down'} = $name;
-}
-
-sub MouseUp {
- my ($w, $x, $y) = @_;
- my $name = $w->identify($x, $y);
- if ((defined $name) && (defined $w->{'down'}) &&
- ($name eq $w->{'down'}) &&
- ($w->pagecget($name, -state) eq 'normal')) {
- $w->raise($name);
- } else {
- $w->focus($name);
- }
-}
-
-sub FocusNext {
- my ($w, $dir) = @_;
- my $name;
-
- if (not defined $w->info('focus')) {
- $name = $w->info('active');
- $w->focus($name);
- } else {
- $name = $w->info('focus' . $dir);
- $w->focus($name);
- }
-}
-
-sub SetFocusByKey {
- my ($w) = @_;
-
- my $name = $w->info('focus');
- if (defined $name) {
- if ($w->pagecget($name, -state) eq 'normal') {
- $w->raise($name);
- $w->activate($name);
- }
- }
-}
-
-sub NoteBookFind {
- my ($w, $char) = @_;
-
- my $page;
- foreach $page (@{$w->{'windows'}}) {
- my $i = $w->pagecget($page, -underline);
- my $c = substr($page, $i, 1);
- if ($char =~ /$c/) {
- if ($w->pagecget($page, -state) ne 'disabled') {
- return $page;
- }
- }
- }
- return undef;
-}
-
-# This is called by TraveseToMenu when an <Alt-Keypress> occurs
-# See the code in Tk.pm
-sub FindMenu {
- my ($w, $char) = @_;
-
- my $page;
- foreach $page (@{$w->{'windows'}}) {
- my $i = $w->pagecget($page, -underline);
- my $l = $w->pagecget($page, -label);
- next if (not defined $l);
- my $c = substr($l, $i, 1);
- if ($char =~ /$c/i) {
- if ($w->pagecget($page, -state) ne 'disabled') {
- $w->raise($page);
- return $w;
- }
- }
- }
- return undef;
-}
-
-
-sub MasterGeomProc
-{
- my ($w) = @_;
- if (Tk::Exists($w))
- {
- $w->{'resize'} = 0 unless (defined $w->{'resize'});
- $w->QueueResize;
- }
-}
-
-sub SlaveGeometryRequest
-{
- my $w = shift;
- if (Tk::Exists($w))
- {
- $w->QueueResize;
- }
-}
-
-sub LostSlave {
- my ($w, $s) = @_;
- $s->UnmapWindow;
-}
-
-sub ClientGeomProc
-{
- my ($w, $flag, $client) = @_;
- $w->QueueResize if (Tk::Exists($w));
- if ($flag =~ /-lostslave/)
- {
- carp "Geometry Management Error: Another geometry manager has taken control of $client. This error is usually caused because a widget has been created in the wrong frame: it should have been created inside $client instead of $w";
- }
-}
-
-sub QueueResize
-{
- my $w = shift;
- $w->afterIdle(['Resize', $w]) unless ($w->{'resize'}++);
-}
-
-sub Resize {
-
- my ($w) = @_;
-
- return unless Tk::Exists($w) && $w->{'nWindows'} && $w->{'resize'};
-
- $w->InitTabSize;
-
- $w->{'resize'} = 0;
- my $reqW = $w->{-width} || 0;
- my $reqH = $w->{-height} || 0;
-
- if ($reqW * $reqH == 0)
- {
- if ((not defined $w->{-dynamicgeometry}) ||
- ($w->{-dynamicgeometry} == 0)) {
- $reqW = 1;
- $reqH = 1;
-
- my $childw;
- foreach $childw ($w->page_widget)
- {
- my $cW = $childw->ReqWidth;
- my $cH = $childw->ReqHeight;
- $reqW = $cW if ($reqW < $cW);
- $reqH = $cH if ($reqH < $cH);
- }
- } else {
- if (defined $w->{'topchild'}) {
- my $topw = $w->page_widget($w->{'topchild'});
- $reqW = $topw->ReqWidth;
- $reqH = $topw->ReqHeight;
- } else {
- $reqW = 1;
- $reqH = 1;
- }
- }
- $reqW += $w->{'pad-x1'} + $w->{'pad-x2'} + 2 * (defined $w->{-ipadx} ? $w->{-ipadx} : 0);
- $reqH += $w->{'pad-y1'} + $w->{'pad-y2'} + 2 * (defined $w->{-ipady} ? $w->{-ipady} : 0);
- $reqW = ($reqW > $w->{'minW'}) ? $reqW : $w->{'minW'};
- $reqH = ($reqH > $w->{'minH'}) ? $reqH : $w->{'minH'};
- }
- if (($w->ReqWidth != $reqW) ||
- ($w->ReqHeight != $reqH)) {
- $w->{'counter'} = 0 if (not defined $w->{'counter'});
- if ($w->{'counter'} < 50) {
- $w->{'counter'}++;
- $w->GeometryRequest($reqW, $reqH);
- $w->afterIdle([$w,'Resize']);
- $w->{'resize'} = 1;
- return;
- }
- }
- $w->{'counter'} = 0;
- $w->raise($w->{'topchild'} || ${$w->{'windows'}}[0]);
- $w->{'resize'} = 0;
-}
-
-sub InitTabSize {
- my ($w) = @_;
- my ($tW, $tH) = $w->geometryinfo;
- $w->{'pad-x1'} = 2;
- $w->{'pad-x2'} = 2;
- $w->{'pad-y1'} = $tH + (defined $w->{'-ipadx'} ? $w->{'-ipadx'} : 0) + 1;
- $w->{'pad-y2'} = 2;
- $w->{'minW'} = $tW;
- $w->{'minH'} = $tH;
-}
-
-1;
-
-__END__
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Tk/Optionmenu.pm b/Master/tlpkg/tlperl/lib/Tk/Optionmenu.pm
deleted file mode 100644
index 7c0e81766db..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Optionmenu.pm
+++ /dev/null
@@ -1,130 +0,0 @@
-# Copyright (c) 1995-2003 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-package Tk::Optionmenu;
-require Tk::Menubutton;
-require Tk::Menu;
-use Carp;
-
-use vars qw($VERSION);
-$VERSION = '4.013'; # $Id: //depot/Tkutf8/Tk/Optionmenu.pm#13 $
-
-use base qw(Tk::Derived Tk::Menubutton);
-
-use strict;
-
-Construct Tk::Widget 'Optionmenu';
-
-sub Populate
-{
- my ($w,$args) = @_;
- $w->SUPER::Populate($args);
- $args->{-indicatoron} = 1;
- my $menu = $w->menu(-tearoff => 0);
-
- # Should we allow -menubackground etc. as in -label* of Frame ?
-
- $w->ConfigSpecs(-command => ['CALLBACK',undef,undef,undef],
- -options => ['METHOD', undef, undef, undef],
- -variable=> ['PASSIVE', undef, undef, undef],
- -font => [['SELF',$menu], undef, undef, undef],
- -foreground => [['SELF', 'CHILDREN'], undef, undef, undef],
-
- -takefocus => [ qw/SELF takefocus Takefocus 1/ ],
- -highlightthickness => [ qw/SELF highlightThickness HighlightThickness 1/ ],
- -relief => [ qw/SELF relief Relief raised/ ],
-
- );
-
- # configure -variable and -command now so that when -options
- # is set by main-line configure they are there to be set/called.
-
- my $tvar = delete $args->{-textvariable};
- my $vvar = delete $args->{-variable};
- if (!defined($vvar))
- {
- if (defined $tvar)
- {
- $vvar = $tvar;
- }
- else
- {
- my $new;
- $vvar = \$new;
- }
- }
- $tvar = $vvar if (!defined($tvar));
- $w->configure(-textvariable => $tvar, -variable => $vvar);
- $w->configure(-command => $vvar) if ($vvar = delete $args->{-command});
-}
-
-sub setOption
-{
- my ($w, $label, $val) = @_;
- my $tvar = $w->cget(-textvariable);
- my $vvar = $w->cget(-variable);
- if (@_ == 2)
- {
- $val = $label;
- }
- $$tvar = $label if $tvar;
- $$vvar = $val if $vvar;
- $w->Callback(-command => $val);
-}
-
-sub addOptions
-{
- my $w = shift;
- my $menu = $w->menu;
- my $tvar = $w->cget(-textvariable);
- my $vvar = $w->cget(-variable);
- my $oldt = $$tvar;
- my $width = $w->cget('-width');
- my %hash;
- my $first;
- while (@_)
- {
- my $val = shift;
- my $label = $val;
- if (ref $val)
- {
- if ($vvar == $tvar)
- {
- my $new = $label;
- $w->configure(-textvariable => ($tvar = \$new));
- }
- ($label, $val) = @$val;
- }
- my $len = length($label);
- $width = $len if (!defined($width) || $len > $width);
- $menu->command(-label => $label, -command => [ $w , 'setOption', $label, $val ]);
- $hash{$label} = $val;
- $first = $label unless defined $first;
- }
- if (!defined($oldt) || !exists($hash{$oldt}))
- {
- $w->setOption($first, $hash{$first}) if defined $first;
- }
- $w->configure('-width' => $width);
-}
-
-sub options
-{
- my ($w,$opts) = @_;
- if (@_ > 1)
- {
- $w->menu->delete(0,'end');
- $w->addOptions(@$opts);
- }
- else
- {
- return $w->_cget('-options');
- }
-}
-
-1;
-
-__END__
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/PNG.pm b/Master/tlpkg/tlperl/lib/Tk/PNG.pm
deleted file mode 100644
index 1ecb4001d17..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/PNG.pm
+++ /dev/null
@@ -1,43 +0,0 @@
-package Tk::PNG;
-require DynaLoader;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #3 $ =~ /\D(\d+)\s*$/;
-
-use Tk 800.005;
-require Tk::Image;
-require Tk::Photo;
-
-use base qw(DynaLoader);
-
-bootstrap Tk::PNG $Tk::VERSION;
-
-1;
-
-__END__
-
-=head1 NAME
-
-Tk::PNG - PNG loader for Tk::Photo
-
-=head1 SYNOPSIS
-
- use Tk;
- use Tk::PNG;
-
- my $image = $widget->Photo('-format' => 'png', -file => 'something.png');
-
-
-=head1 DESCRIPTION
-
-This is an extension for Tk800.* which supplies
-PNG format loader for Photo image type.
-
-
-=head1 AUTHOR
-
-Nick Ing-Simmons E<lt>nick@ing-simmons.netE<gt>
-
-=cut
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Pane.pm b/Master/tlpkg/tlperl/lib/Tk/Pane.pm
deleted file mode 100644
index 36c5203a42d..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Pane.pm
+++ /dev/null
@@ -1,544 +0,0 @@
-# Tk::Pane.pm
-#
-# Copyright (c) 1997-1998 Graham Barr <gbarr@pobox.com>. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-
-package Tk::Pane;
-
-use vars qw($VERSION);
-$VERSION = '4.007'; # $Id: //depot/Tkutf8/Tk/Pane.pm#7 $
-
-use Tk;
-use Tk::Widget;
-use Tk::Derived;
-use Tk::Frame;
-
-use strict;
-
-use base qw(Tk::Derived Tk::Frame);
-
-Construct Tk::Widget 'Pane';
-
-use Tk::Submethods(
- grid => [qw/bbox columnconfigure location propagate rowconfigure size slaves/],
- pack => [qw/propagate slaves/]
-);
-
-sub ClassInit {
- my ($class,$mw) = @_;
- $mw->bind($class,'<Configure>',['QueueLayout',4]);
- $mw->bind($class,'<FocusIn>', 'NoOp');
- return $class;
-}
-
-sub Populate {
- my $pan = shift;
-
- my $frame = $pan->Component(Frame => "frame");
-
- $pan->afterIdle(['Manage',$pan,$frame]);
- $pan->afterIdle(['QueueLayout',$pan,1]);
-
- $pan->Delegates(
- DEFAULT => $frame,
- # FIXME
- # These are a hack to avoid an existing bug in Tk::Widget::DelegateFor
- # which has been reported and should be fixed in the next Tk release
- see => $pan,
- xview => $pan,
- yview => $pan,
- );
-
- $pan->ConfigSpecs(
- DEFAULT => [$frame],
- -sticky => [PASSIVE => undef, undef, undef],
- -gridded => [PASSIVE => undef, undef, undef],
- -xscrollcommand => [CALLBACK => undef, undef, undef],
- -yscrollcommand => [CALLBACK => undef, undef, undef],
- );
-
-
- $pan;
-}
-
-
-sub grid {
- my $w = shift;
- $w = $w->Subwidget('frame')
- if (@_ && $_[0] =~ /^(?: bbox
- |columnconfigure
- |location
- |propagate
- |rowconfigure
- |size
- |slaves)$/x);
- $w->SUPER::grid(@_);
-}
-
-sub slave {
- my $w = shift;
- $w->Subwidget('frame');
-}
-
-sub pack {
- my $w = shift;
- $w = $w->Subwidget('frame')
- if (@_ && $_[0] =~ /^(?:propagate|slaves)$/x);
- $w->SUPER::pack(@_);
-}
-
-sub QueueLayout {
- shift if ref $_[1];
- my($m,$why) = @_;
- $m->afterIdle(['Layout',$m]) unless ($m->{LayoutPending});
- $m->{LayoutPending} |= $why;
-}
-
-sub AdjustXY {
- my($w,$Wref,$X,$st,$scrl,$getx) = @_;
- my $W = $$Wref;
-
- if($w >= $W) {
- my $v = 0;
- if($getx) {
- $v |= 1 if $st =~ /[Ww]/;
- $v |= 2 if $st =~ /[Ee]/;
- }
- else {
- $v |= 1 if $st =~ /[Nn]/;
- $v |= 2 if $st =~ /[Ss]/;
- }
-
- if($v == 0) {
- $X = int(($w - $W) / 2);
- }
- elsif($v == 1) {
- $X = 0;
- }
- elsif($v == 2) {
- $X = int($w - $W);
- }
- else {
- $X = 0;
- $$Wref = $w;
- }
- $scrl->Call(0,1)
- if $scrl;
- }
- elsif($scrl) {
- $X = 0
- if $X > 0;
- $X = $w - $W
- if(($X + $W) < $w);
- $scrl->Call(-$X / $W,(-$X + $w) / $W);
- }
- else {
- $X = 0;
- $$Wref = $w;
- }
-
- return $X;
-}
-
-sub Layout {
- my $pan = shift;
- my $why = $pan->{LayoutPending};
-
- my $slv = $pan->Subwidget('frame');
-
- return unless $slv;
-
- my $H = $slv->ReqHeight;
- my $W = $slv->ReqWidth;
- my $X = $slv->x;
- my $Y = $slv->y;
- my $w = $pan->width;
- my $h = $pan->height;
- my $yscrl = $pan->{Configure}{'-yscrollcommand'};
- my $xscrl = $pan->{Configure}{'-xscrollcommand'};
-
- $yscrl = undef
- if(defined($yscrl) && UNIVERSAL::isa($yscrl, 'SCALAR') && !defined($$yscrl));
- $xscrl = undef
- if(defined($xscrl) && UNIVERSAL::isa($xscrl, 'SCALAR') && !defined($$xscrl));
-
- if($why & 1) {
- $h = $pan->{Configure}{'-height'} || 0
- unless($h > 1);
- $w = $pan->{Configure}{'-width'} || 0
- unless($w > 1);
-
- $h = $H
- unless($h > 1 || defined($yscrl));
- $w = $W
- unless($w > 1 || defined($xscrl));
-
- $w = 100 if $w <= 1;
- $h = 100 if $h <= 1;
-
- $pan->GeometryRequest($w,$h);
- }
-
- my $st = $pan->{Configure}{'-sticky'} || '';
-
- $pan->{LayoutPending} = 0;
-
- $slv->MoveResizeWindow(
- AdjustXY($w,\$W,$X,$st,$xscrl,1),
- AdjustXY($h,\$H,$Y,$st,$yscrl,0),
- $W,$H
- );
-}
-
-sub SlaveGeometryRequest {
- my ($m,$s) = @_;
- $m->QueueLayout(1);
-}
-
-sub LostSlave {
- my($m,$s) = @_;
- $m->{Slave} = undef;
-}
-
-sub Manage {
- my $m = shift;
- my $s = shift;
-
- $m->{Slave} = $s;
- $m->ManageGeometry($s);
- $s->MapWindow;
- $m->QueueLayout(2);
-}
-
-sub xview {
- my $pan = shift;
-
- unless(@_) {
- my $scrl = $pan->{Configure}{'-xscrollcommand'};
- return (0,1) unless $scrl;
- my $slv = $pan->Subwidget('frame');
- my $sw = $slv->ReqWidth;
- my $ldx = $pan->rootx - $slv->rootx;
- my $rdx = $ldx + $pan->width;
- $ldx = $ldx <= 0 ? 0 : $ldx / $sw;
- $rdx = $rdx >= $sw ? 1 : $rdx / $sw;
- return( $ldx , $rdx);
- }
- elsif(@_ == 1) {
- my $widget = shift;
- my $slv = $pan->Subwidget('frame');
- xyview(1,$pan,
- moveto => ($widget->rootx - $slv->rootx) / $slv->ReqWidth);
- }
- else {
- xyview(1,$pan,@_);
- }
-}
-
-sub yview {
- my $pan = shift;
-
- unless(@_) {
- my $scrl = $pan->{Configure}{'-yscrollcommand'};
- return (0,1) unless $scrl;
- my $slv = $pan->Subwidget('frame');
- my $sh = $slv->ReqHeight;
- my $tdy = $pan->rooty - $slv->rooty;
- my $bdy = $tdy + $pan->height;
- $tdy = $tdy <= 0 ? 0 : $tdy / $sh;
- $bdy = $bdy >= $sh ? 1 : $bdy / $sh;
- return( $tdy, $bdy);
- }
- elsif(@_ == 1) {
- my $widget = shift;
- my $slv = $pan->Subwidget('frame');
- xyview(0,$pan,
- moveto => ($widget->rooty - $slv->rooty) / $slv->ReqHeight);
- }
- else {
- xyview(0,$pan,@_);
- }
-}
-
-sub xyview {
- my($horz,$pan,$cmd,$val,$mul) = @_;
- my $slv = $pan->Subwidget('frame');
- return unless $slv;
-
- my($XY,$WH,$wh,$scrl,@a);
-
- if($horz) {
- $XY = $slv->x;
- $WH = $slv->ReqWidth;
- $wh = $pan->width;
- $scrl = $pan->{Configure}{'-xscrollcommand'};
- }
- else {
- $XY = $slv->y;
- $WH = $slv->ReqHeight;
- $wh = $pan->height;
- $scrl = $pan->{Configure}{'-yscrollcommand'};
- }
-
- $scrl = undef
- if(UNIVERSAL::isa($scrl, 'SCALAR') && !defined($$scrl));
-
- if($WH < $wh) {
- $scrl->Call(0,1);
- return;
- }
-
- if($cmd eq 'scroll') {
- my $dxy = 0;
-
- my $gridded = $pan->{Configure}{'-gridded'} || '';
- my $do_gridded = ($gridded eq 'both'
- || (!$horz == ($gridded ne 'x'))) ? 1 : 0;
-
- if($do_gridded && $mul eq 'pages') {
- my $ch = ($slv->children)[0];
- if(defined($ch) && $ch->manager eq 'grid') {
- @a = $horz
- ? (1-$XY,int($slv->width / 2))
- : (int($slv->height / 2),1-$XY);
- my $rc = ($slv->gridLocation(@a))[$horz ? 0 : 1];
- my $mrc = ($slv->gridSize)[$horz ? 0 : 1];
- $rc += $val;
- $rc = 0 if $rc < 0;
- $rc = $mrc if $rc > $mrc;
- my $gsl;
- while($rc >= 0 && $rc < $mrc) {
- $gsl = ($slv->gridSlaves(-row => $rc))[0];
- last
- if defined $gsl;
- $rc += $val;
- }
- if(defined $gsl) {
- @a = $horz ? ($rc,0) : (0,$rc);
- $XY = 0 - ($slv->gridBbox(@a))[$horz ? 0 : 1];
- }
- else {
- $XY = $val > 0 ? $wh - $WH : 0;
- }
- $dxy = $val; $val = 0;
- }
- }
- $dxy = $mul eq 'pages' ? ($horz ? $pan->width : $pan->height) : 10
- unless $dxy;
- $XY -= $dxy * $val;
- }
- elsif($cmd eq 'moveto') {
- $XY = -int($WH * $val);
- }
-
- $XY = $wh - $WH
- if($XY < ($wh - $WH));
- $XY = 0
- if $XY > 0;
-
- @a = $horz
- ? ( $XY, $slv->y)
- : ($slv->x, $XY);
-
- $slv->MoveWindow(@a);
-
- $scrl->Call(-$XY / $WH,(-$XY + $wh) / $WH);
-}
-
-sub see {
- my $pan = shift;
- my $widget = shift;
- my %opt = @_;
- my $slv = $pan->Subwidget('frame');
-
- my $anchor = defined $opt{'-anchor'} ? $opt{'-anchor'} : "";
-
- if($pan->{Configure}{'-yscrollcommand'}) {
- my $yanchor = lc(($anchor =~ /([NnSs]?)/)[0] || "");
- my $pty = $pan->rooty;
- my $ph = $pan->height;
- my $pby = $pty + $ph;
- my $ty = $widget->rooty;
- my $wh = $widget->height;
- my $by = $ty + $wh;
- my $h = $slv->ReqHeight;
-
- if($yanchor eq 'n' || ($yanchor ne 's' && ($wh >= $h || $ty < $pty))) {
- my $y = $ty - $slv->rooty;
- $pan->yview(moveto => $y / $h);
- }
- elsif($yanchor eq 's' || $by > $pby) {
- my $y = $by - $ph - $slv->rooty;
- $pan->yview(moveto => $y / $h);
- }
- }
-
- if($pan->{Configure}{'-xscrollcommand'}) {
- my $xanchor = lc(($anchor =~ /([WwEe]?)/)[0] || "");
- my $ptx = $pan->rootx;
- my $pw = $pan->width;
- my $pbx = $ptx + $pw;
- my $tx = $widget->rootx;
- my $ww = $widget->width;
- my $bx = $tx + $ww;
- my $w = $slv->ReqWidth;
-
- if($xanchor eq 'w' || ( $xanchor ne 'e' && ($ww >= $w || $tx < $ptx))) {
- my $x = $tx - $slv->rootx;
- $pan->xview(moveto => $x / $w);
- }
- elsif($xanchor eq 'e' || $bx > $pbx) {
- my $x = $bx - $pw - $slv->rootx;
- $pan->xview(moveto => $x / $w);
- }
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Tk::Pane - A window panner
-
-=for category Derived Widgets
-
-=head1 SYNOPSIS
-
- use Tk::Pane;
-
- $pane = $mw->Scrolled(Pane, Name => 'fred',
- -scrollbars => 'soe',
- -sticky => 'we',
- -gridded => 'y'
- );
-
- $pane->Frame;
-
- $pane->pack;
-
-=head1 DESCRIPTION
-
-B<Tk::Pane> provides a scrollable frame widget. Once created it can be
-treated as a frame, except it is scrollable.
-
-=head1 OPTIONS
-
-=over 4
-
-=item B<-gridded> =E<gt> I<direction>
-
-Specifies if the top and left edges of the pane should snap to a
-grid column. This option is only useful if the widgets in the pane
-are managed by the I<grid> geometry manager. Possible values are
-B<x>, B<y> and B<xy>.
-
-=item B<-sticky> =E<gt> I<style>
-
-If Pane is larger than its requested dimensions, this option may be used to
-position (or stretch) the slave within its cavity. I<Style> is a string that
-contains zero or more of the characters n, s, e or w. The string can optionally
-contains spaces or commas, but they are ignored. Each letter refers to a side
-(north, south, east, or west) that the slave will "stick" to. If both n and s
-(or e and w) are specified, the slave will be stretched to fill the entire
-height (or width) of its cavity.
-
-=back
-
-=head1 METHODS
-
-=over 4
-
-=item I<$pane>-E<gt>B<see>(I<$widget> ?,I<options>?)
-
-Adjusts the view so that I<$widget> is visable. Aditional parameters in
-I<options-value> pairs can be passed, each I<option-value> pair must be
-one of the following
-
-=over 8
-
-=item B<-anchor> =E<gt> I<anchor>
-
-Specifies how to make the widget visable. If not given then as much of
-the widget as possible is made visable.
-
-Possible values are B<n>, B<s>, B<w>, B<e>, B<nw>, B<ne>, B<sw> and B<se>.
-This will cause an edge on the widget to be aligned with the corresponding
-edge on the pane. for example B<nw> will cause the top left of the widget
-to be placed at the top left of the pane. B<s> will cause the bottom of the
-widget to be placed at the bottom of the pane, and as much of the widget
-as possible made visable in the x direction.
-
-=back
-
-=item I<$pane>-E<gt>B<xview>
-
-Returns a list containing two elements, both of which are real fractions
-between 0 and 1. The first element gives the position of the left of the
-window, relative to the Pane as a whole (0.5 means it is halfway through the
-Pane, for example). The second element gives the position of the right of the
-window, relative to the Pane as a whole.
-
-=item I<$pane>-E<gt>B<xview>(I<$widget>)
-
-Adjusts the view in the window so that I<widget> is displayed at the left of
-the window.
-
-=item I<$pane>-E<gt>B<xview>(B<moveto> =E<gt> I<fraction>)
-
-Adjusts the view in the window so that I<fraction> of the total width of the
-Pane is off-screen to the left. fraction must be a fraction between 0 and 1.
-
-=item I<$pane>-E<gt>B<xview>(B<scroll> =E<gt> I<number>, I<what>)
-
-This command shifts the view in the window left or right according to I<number>
-and I<what>. I<Number> must be an integer. I<What> must be either B<units> or
-B<pages> or an abbreviation of one of these. If I<what> is B<units>, the view
-adjusts left or right by I<number>*10 screen units on the display; if it is
-B<pages> then the view adjusts by number screenfuls. If number is negative then
-widgets farther to the left become visible; if it is positive then widgets
-farther to the right become visible.
-
-=item I<$pane>-E<gt>B<yview>
-
-Returns a list containing two elements, both of which are real fractions
-between 0 and 1. The first element gives the position of the top of the
-window, relative to the Pane as a whole (0.5 means it is halfway through the
-Pane, for example). The second element gives the position of the bottom of the
-window, relative to the Pane as a whole.
-
-=item I<$pane>-E<gt>B<yview>(I<$widget>)
-
-Adjusts the view in the window so that I<widget> is displayed at the top of the
-window.
-
-=item I<$pane>-E<gt>B<yview>(B<moveto> =E<gt> I<fraction>)
-
-Adjusts the view in the window so that I<fraction> of the total width of the
-Pane is off-screen to the top. fraction must be a fraction between 0 and 1.
-
-=item I<$pane>-E<gt>B<yview>(B<scroll> =E<gt> I<number>, I<what>)
-
-This command shifts the view in the window up or down according to I<number>
-and I<what>. I<Number> must be an integer. I<What> must be either B<units> or
-B<pages> or an abbreviation of one of these. If I<what> is B<units>, the view
-adjusts up or down by I<number>*10 screen units on the display; if it is
-B<pages> then the view adjusts by number screenfuls. If number is negative then
-widgets farther up become visible; if it is positive then widgets farther down
-become visible.
-
-=back
-
-=head1 AUTHOR
-
-Graham Barr E<lt>F<gbarr@pobox.com>E<gt>
-
-=head1 COPYRIGHT
-
-Copyright (c) 1997-1998 Graham Barr. All rights reserved.
-This program is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Tk/Panedwindow.pm b/Master/tlpkg/tlperl/lib/Tk/Panedwindow.pm
deleted file mode 100644
index d984b648897..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Panedwindow.pm
+++ /dev/null
@@ -1,221 +0,0 @@
-package Tk::Panedwindow;
-use strict;
-
-use vars qw/$VERSION/;
-$VERSION = sprintf '4.%03d', q$Revision: #3 $ =~ /#(\d+)/;
-
-# A Panedwindow widget (similar to Adjuster).
-
-use Tk qw/Ev/;
-use base qw/Tk::Widget/;
-
-Construct Tk::Widget 'Panedwindow';
-
-sub Tk_cmd { \&Tk::panedwindow }
-
-Tk::Methods('add', 'forget', 'identify', 'proxy', 'sash', 'panes');
-
-use Tk::Submethods (
- 'proxy' => [qw/coord forget place/],
- 'sash' => [qw/coord mark place/],
-);
-
-sub ClassInit {
-
- my ($class,$mw) = @_;
-
- $class->SUPER::ClassInit($mw);
-
- $mw->bind($class, '<Button-1>' => ['MarkSash' => Ev('x'), Ev('y'), 1]);
- $mw->bind($class, '<Button-2>' => ['MarkSash' => Ev('x'), Ev('y'), 0]);
- $mw->bind($class, '<B1-Motion>' => ['DragSash' => Ev('x'), Ev('y'), 1]);
- $mw->bind($class, '<B2-Motion>' => ['DragSash' => Ev('x'), Ev('y'), 0]);
- $mw->bind($class, '<ButtonRelease-1>' => ['ReleaseSash' => 1]);
- $mw->bind($class, '<ButtonRelease-2>' => ['ReleaseSash' => 0]);
- $mw->bind($class, '<Motion>' => ['Motion' => Ev('x'), Ev('y')]);
- $mw->bind($class, '<Leave>' => ['Leave']);
-
- return $class;
-
-} # end ClassInit
-
-sub MarkSash {
-
- # MarkSash
- #
- # Handle marking the correct sash for possible dragging
- #
- # Arguments:
- # w the widget
- # x widget local x coord
- # y widget local y coord
- # proxy whether this should be a proxy sash
- # Results:
- # None
-
- my ($w, $x, $y, $proxy) = @_;
-
- my @what = $w->identify($x, $y);
- if ( @what == 2 ) {
- my ($index, $which) = @what[0 .. 1];
- if (not $Tk::strictMotif or $which eq 'handle') {
- $w->sashMark($index, $x, $y) if not $proxy;
- $w->{_sash} = $index;
- my ($sx, $sy) = $w->sashCoord($index);
- $w->{_dx} = $sx - $x;
- $w->{_dy} = $sy - $y;
- }
- }
-
-} # end MarkSash
-
-sub DragSash {
-
- # DragSash
- #
- # Handle dragging of the correct sash
- #
- # Arguments:
- # w the widget
- # x widget local x coord
- # y widget local y coord
- # proxy whether this should be a proxy sash
- # Results:
- # Moves sash
-
- my ($w, $x, $y, $proxy) = @_;
-
- if ( exists $w->{_sash} ) {
- if ($proxy) {
- $w->proxyPlace($x + $w->{_dx}, $y + $w->{_dy});
- } else {
- $w->sashPlace($w->{_sash}, $x + $w->{_dx}, $y + $w->{_dy});
- }
- }
-
-} # end DragSash
-
-sub ReleaseSash {
-
- # ReleaseSash
- #
- # Handle releasing of the sash
- #
- # Arguments:
- # w the widget
- # proxy whether this should be a proxy sash
- # Results:
- # Returns ...
-
- my ($w, $proxy) = @_;
-
- if ( exists $w->{_sash} ) {
- if ($proxy) {
- my ($x, $y) = $w->proxyCoord;
- $w->sashPlace($w->{_sash}, $x, $y);
- $w->proxyForget;
- }
- delete $w->{'_sash', '_dx', '_dy'};
- }
-
-} # end ReleaseSash
-
-sub Motion {
-
- # Motion
- #
- # Handle motion on the widget. This is used to change the cursor
- # when the user moves over the sash area.
- #
- # Arguments:
- # w the widget
- # x widget local x coord
- # y widget local y coord
- # Results:
- # May change the cursor. Sets up a timer to verify that we are still
- # over the widget.
-
- my ($w, $x, $y) = @_;
-
- my @id = $w->identify($x, $y);
- if ( (@id == 2) and
- (not $Tk::strictMotif or $id[1] eq 'handle') ) {
- if ( not exists $w->{_panecursor} ) {
- $w->{_panecursor} = $w->cget(-cursor);
- if ( not defined $w->cget(-sashcursor) ) {
- if ( $w->cget(-orient) eq 'horizontal' ) {
- $w->configure(-cursor => 'sb_h_double_arrow');
- } else {
- $w->configure(-cursor => 'sb_v_double_arrow');
- }
- } else {
- $w->configure(-cursor => $w->cget(-sashcursor));
- }
- if ( exists $w->{_pwAfterId} ) {
- $w->afterCancel($w->{_pwAfterId});
- }
- $w->{_pwAfterId} = $w->after(150 => ['Cursor' => $w]);
- }
- return
- }
- if ( exists $w->{_panecursor} ) {
- $w->configure(-cursor => $w->{_panecursor});
- delete $w->{_panecursor};
- }
-
-} # end Motion
-
-sub Cursor {
-
- # Cursor
- #
- # Handles returning the normal cursor when we are no longer over the
- # sash area. This needs to be done this way, because the panedwindow
- # won't see Leave events when the mouse moves from the sash to a
- # paned child, although the child does receive an Enter event.
- #
- # Arguments:
- # w the widget
- # Results:
- # May restore the default cursor, or schedule a timer to do it.
-
- my ($w) = @_;
-
- if ( exists $w->{_panecursor} ) {
- if ( $w->containing($w->pointerx, $w->pointery) == $w ) {
- $w->{_pwAfterId} = $w->after(150 => ['Cursor' => $w]);
- } else {
- $w->configure(-cursor => $w->{_panecursor});
- delete $w->{_panecursor};
- if ( exists $w->{_pwAfterId} ) {
- $w->afterCancel($w->{_pwAfterId});
- delete $w->{_pwAfterId};
- }
- }
- }
-
-} # end Cursor
-
-sub Leave {
-
- # Leave
- #
- # Return to default cursor when leaving the pw widget.
- #
- # Arguments:
- # w the widget
- # Results:
- # Restores the default cursor
-
- my ($w) = @_;
-
- if ( exists $w->{_panecursor} ) {
- $w->configure(-cursor => $w->{_panecursor});
- delete $w->{_panecursor};
- }
-
-} # end Leave
-
-
-1;
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Tk/Photo.pm b/Master/tlpkg/tlperl/lib/Tk/Photo.pm
deleted file mode 100644
index a596dc4d78b..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Photo.pm
+++ /dev/null
@@ -1,22 +0,0 @@
-package Tk::Photo;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', 4+q$Revision: #4 $ =~ /\D(\d+)\s*$/;
-
-use Tk qw($XS_VERSION);
-
-use base qw(Tk::Image);
-
-Construct Tk::Image 'Photo';
-
-sub Tk_image { 'photo' }
-
-Tk::Methods('blank','copy','data','formats','get','put','read',
- 'redither','transparency','write');
-
-use Tk::Submethods (
- 'transparency' => [qw/get set/],
-);
-
-1;
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Tk/Pixmap.pm b/Master/tlpkg/tlperl/lib/Tk/Pixmap.pm
deleted file mode 100644
index 3fbc3179b56..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Pixmap.pm
+++ /dev/null
@@ -1,19 +0,0 @@
-package Tk::Pixmap;
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/TixPixmap/Pixmap.pm#4 $
-
-use Tk qw($XS_VERSION);
-
-use Tk::Image ();
-
-use base qw(Tk::Image);
-
-Construct Tk::Image 'Pixmap';
-
-bootstrap Tk::Pixmap;
-
-sub Tk_image { 'pixmap' }
-
-1;
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Pretty.pm b/Master/tlpkg/tlperl/lib/Tk/Pretty.pm
deleted file mode 100644
index 7e442a4bcbc..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Pretty.pm
+++ /dev/null
@@ -1,93 +0,0 @@
-# Copyright (c) 1995-2003 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-package Tk::Pretty;
-require Exporter;
-
-use vars qw($VERSION @EXPORT);
-$VERSION = '4.006'; # $Id: //depot/Tkutf8/Tk/Pretty.pm#6 $
-
-use base qw(Exporter);
-
-@EXPORT = qw(Pretty PrintArgs);
-
-sub pretty_list
-{
- join(',',map(&Pretty($_),@_));
-}
-
-sub Pretty
-{
- return pretty_list(@_) if (@_ > 1);
- my $obj = shift;
- return 'undef' unless defined($obj);
- my $type = "$obj";
- return $type if ($type =~ /=HASH/ && exists($obj->{"_Tcl_CmdInfo_\0"}));
- my $result = '';
- if (ref $obj)
- {
- my $class;
- if ($type =~ /^([^=]+)=(.*)$/)
- {
- $class = $1;
- $type = $2;
- $result .= 'bless(';
- }
- if ($type =~ /^ARRAY/)
- {
- $result .= '[';
- $result .= pretty_list(@$obj);
- $result .= ']';
- }
- elsif ($type =~ /^HASH/)
- {
- $result .= '{';
- if (%$obj)
- {
- my ($key, $value);
- while (($key,$value) = each %$obj)
- {
- $result .= $key . '=>' . Pretty($value) . ',';
- }
- chop($result);
- }
- $result .= '}';
- }
- elsif ($type =~ /^REF/)
- {
- $result .= "\\" . Pretty($$obj);
- }
- elsif ($type =~ /^SCALAR/)
- {
- $result .= Pretty($$obj);
- }
- else
- {
- $result .= $type;
- }
- $result .= ",$class)" if (defined $class);
- }
- else
- {
- if ($obj =~ /^-?[0-9]+(.[0-9]*(e[+-][0-9]+)?)?$/ ||
- $obj =~ /^[A-Z_][A-Za-z_0-9]*$/ ||
- $obj =~ /^[a-z_][A-Za-z_0-9]*[A-Z_][A-Za-z_0-9]*$/
- )
- {
- $result .= $obj;
- }
- else
- {
- $result .= "'" . $obj . "'";
- }
- }
- return $result;
-}
-
-sub PrintArgs
-{
- my $name = (caller(1))[3];
- print "$name(",Pretty(@_),")\n";
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/ProgressBar.pm b/Master/tlpkg/tlperl/lib/Tk/ProgressBar.pm
deleted file mode 100644
index 206d843ea13..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/ProgressBar.pm
+++ /dev/null
@@ -1,498 +0,0 @@
-package Tk::ProgressBar;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #10 $ =~ /\D(\d+)\s*$/;
-
-use Tk;
-use Tk::Canvas;
-use Tk::Trace;
-use Carp;
-use strict;
-
-use base qw(Tk::Derived Tk::Canvas);
-
-Construct Tk::Widget 'ProgressBar';
-
-sub ClassInit {
- my ($class,$mw) = @_;
-
- $class->SUPER::ClassInit($mw);
-
- $mw->bind($class,'<Configure>', ['_layoutRequest',1]);
-}
-
-
-sub Populate {
- my($c,$args) = @_;
-
- $c->ConfigSpecs(
- -width => [PASSIVE => undef, undef, 0],
- '-length' => [PASSIVE => undef, undef, 0],
- -from => [PASSIVE => undef, undef, 0],
- -to => [PASSIVE => undef, undef, 100],
- -blocks => [PASSIVE => undef, undef, 10],
- -padx => [PASSIVE => 'padX', 'Pad', 0],
- -pady => [PASSIVE => 'padY', 'Pad', 0],
- -gap => [PASSIVE => undef, undef, 1],
- -colors => [PASSIVE => undef, undef, undef],
- -relief => [SELF => 'relief', 'Relief', 'sunken'],
- -value => [METHOD => undef, undef, undef],
- -variable => [METHOD => undef, undef, undef],
- -anchor => [METHOD => 'anchor', 'Anchor', 'w'],
- -resolution
- => [PASSIVE => undef, undef, 1.0],
- -highlightthickness
- => [SELF => 'highlightThickness','HighlightThickness',0],
- -troughcolor
- => [PASSIVE => 'troughColor', 'Background', 'grey55'],
- );
- _layoutRequest($c,1);
- $c->OnDestroy(['Destroyed' => $c]);
-}
-
-sub anchor {
- my $c = shift;
- my $var = \$c->{Configure}{'-anchor'};
- my $old = $$var;
-
- if(@_) {
- my $new = shift;
- croak "bad anchor position \"$new\": must be n, s, w or e"
- unless $new =~ /^[news]$/;
- $$var = $new;
- }
-
- $old;
-}
-
-sub _layoutRequest {
- my $c = shift;
- my $why = shift;
- $c->afterIdle(['_arrange',$c]) unless $c->{'layout_pending'};
- $c->{'layout_pending'} |= $why;
-}
-
-sub _arrange {
- my $c = shift;
- my $why = $c->{'layout_pending'};
-
- $c->{'layout_pending'} = 0;
-
- my $w = $c->Width;
- my $h = $c->Height;
- my $bw = $c->cget('-borderwidth') + $c->cget('-highlightthickness');
- my $x = abs(int($c->{Configure}{'-padx'})) + $bw;
- my $y = abs(int($c->{Configure}{'-pady'})) + $bw;
- my $value = $c->value;
- my $from = $c->{Configure}{'-from'};
- my $to = $c->{Configure}{'-to'};
- my $horz = $c->{Configure}{'-anchor'} =~ /[ew]/i ? 1 : 0;
- my $dir = $c->{Configure}{'-anchor'} =~ /[se]/i ? -1 : 1;
-
- my($minv,$maxv) = $from < $to ? ($from,$to) : ($to,$from);
-
- if($w == 1 && $h == 1) {
- my $bw = $c->cget('-borderwidth');
- my $defw = 10 + $y*2 + $bw *2;
- my $defl = ($maxv - $minv) + $x*2 + $bw*2;
-
- $h = $c->pixels($c->{Configure}{'-length'}) || $defl;
- $w = $c->pixels($c->{Configure}{'-width'}) || $defw;
-
- ($w,$h) = ($h,$w) if $horz;
- $c->GeometryRequest($w,$h);
- $c->parent->update;
- $c->update;
-
- $w = $c->Width;
- $h = $c->Height;
- }
-
- $w -= $x*2;
- $h -= $y*2;
-
- my $length = $horz ? $w : $h;
- my $width = $horz ? $h : $w;
-
- my $blocks = int($c->{Configure}{'-blocks'});
- my $gap = int($c->{Configure}{'-gap'});
-
- $blocks = 1 if $blocks < 1;
-
- my $gwidth = $gap * ( $blocks - 1);
- my $bwidth = ($length - $gwidth) / $blocks;
-
- if($bwidth < 3 || $blocks <= 1 || $gap <= 0) {
- $blocks = 1;
- $bwidth = $length;
- $gap = 0;
- }
-
- if($why & 1) {
- my $colors = $c->{Configure}{'-colors'} || [];
- my $bdir = $from < $to ? $dir : 0 - $dir;
-
- $c->delete($c->find('all'));
-
- $c->createRectangle(0,0,$w+$x*2,$h+$y*2,
- -fill => $c->{Configure}{'-troughcolor'},
- -width => 0,
- -outline => undef);
-
- $c->{'cover'} = $c->createRectangle($x,$y,$w,$h,
- -fill => $c->{Configure}{'-troughcolor'},
- -width => 0,
- -outline => undef);
-
- my($x0,$y0,$x1,$y1);
-
- if($horz) {
- if($bdir > 0) {
- ($x0,$y0) = ($x - $gap,$y);
- }
- else {
- ($x0,$y0) = ($length + $x + $gap,$y);
- }
- ($x1,$y1) = ($x0,$y0 + $width);
- }
- else {
- if($bdir > 0) {
- ($x0,$y0) = ($x,$y - $gap);
- }
- else {
- ($x0,$y0) = ($x,$length + $y + $gap);
- }
- ($x1,$y1) = ($x0 + $width,$y0);
- }
-
- my $blks = $blocks;
- my $dval = ($maxv - $minv) / $blocks;
- my $color = $c->cget('-foreground');
- my $pos = 0;
- my $val = $minv;
-
- while($val < $maxv) {
- my($bw,$nval);
-
- while(($pos < @$colors) && $colors->[$pos] <= $val) {
- $color = $colors->[$pos+1];
- $pos += 2;
- }
-
- if($blocks == 1) {
- $nval = defined($colors->[$pos])
- ? $colors->[$pos] : $maxv;
- $bw = (($nval - $val) / ($maxv - $minv)) * $length;
- }
- else {
- $bw = $bwidth;
- $nval = $val + $dval if($blocks > 1);
- }
-
- if($horz) {
- if($bdir > 0) {
- $x0 = $x1 + $gap;
- $x1 = $x0 + $bw;
- }
- else {
- $x1 = $x0 - $gap;
- $x0 = $x1 - $bw;
- }
- }
- else {
- if($bdir > 0) {
- $y0 = $y1 + $gap;
- $y1 = $y0 + $bw;
- }
- else {
- $y1 = $y0 - $gap;
- $y0 = $y1 - $bw;
- }
- }
-
- $c->createRectangle($x0,$y0,$x1,$y1,
- -fill => $color,
- -width => 0,
- -outline => undef
- );
- $val = $nval;
- }
- }
-
- my $cover = $c->{'cover'};
- my $ddir = $from > $to ? 1 : -1;
-
- if(($value <=> $to) == (0-$ddir)) {
- $c->lower($cover);
- }
- elsif(($value <=> $from) == $ddir) {
- $c->raise($cover);
- my $x1 = $horz ? $x + $length : $x + $width;
- my $y1 = $horz ? $y + $width : $y + $length;
- $c->coords($cover,$x,$y,$x1,$y1);
- }
- else {
- my $step;
- $value = int($value / $step) * $step
- if(defined($step = $c->{Configure}{'-resolution'}) && $step > 0);
-
- $maxv = $minv+1
- if $minv == $maxv;
-
- my $range = $maxv - $minv;
- my $bval = $range / $blocks;
- my $offset = abs($value - $from);
- my $ioff = int($offset / $bval);
- my $start = $ioff * ($bwidth + $gap);
- $start += ($offset - ($ioff * $bval)) / $bval * $bwidth;
-
- my($x0,$x1,$y0,$y1);
-
- if($horz) {
- $y0 = $y;
- $y1 = $y + $h;
- if($dir > 0) {
- $x0 = $x + $start;
- $x1 = $x + $w;
- }
- else {
- $x0 = $x;
- $x1 = $w + $x - $start;
- }
- }
- else {
- $x0 = $x;
- $x1 = $x + $w;
- if($dir > 0) {
- $y0 = $y + $start;
- $y1 = $y + $h;
- }
- else {
- $y0 = $y;
- $y1 = $h + $y - $start;
- }
- }
-
-
- $c->raise($cover);
- $c->coords($cover,$x0,$y0,$x1,$y1);
- }
-}
-
-sub value {
- my $c = shift;
- my $val = defined($c->{'-variable'})
- ? $c->{'-variable'}
- : \$c->{'-value'};
- my $old = defined($$val) ? $$val : $c->{Configure}{'-from'};
-
- if(@_) {
- my $value = shift;
- $$val = defined($value) ? $value : $c->{Configure}{'-from'};
- _layoutRequest($c,2);
- }
-
- $old;
-}
-
-sub variable {
- my $c = shift;
- my $oldvarref = $c->{'-variable'};
- my $oldval = $$oldvarref if $oldvarref;
- if(@_) {
- my $varref = shift;
- if ($oldvarref)
- {
- $c->traceVdelete($oldvarref);
- }
- $c->{'-variable'} = $varref;
- $c->traceVariable($varref, 'w', sub { $c->value($_[1]) });
- $$varref = $oldval;
- _layoutRequest($c,2);
- }
- $oldval;
-}
-
-sub Destroyed
-{
- my $c = shift;
- my $var = delete $c->{'-variable'};
- $c->traceVdelete($var);
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Tk::ProgressBar - A graphical progress bar
-
-=for category Derived Widgets
-
-=head1 SYNOPSIS
-
- use Tk::ProgressBar;
-
- $progress = $parent->ProgressBar(
- -width => 200,
- -length => 20,
- -anchor => 's',
- -from => 0,
- -to => 100,
- -blocks => 10,
- -colors => [0, 'green', 50, 'yellow' , 80, 'red'],
- -variable => \$percent_done
- );
-
- $progress->value($position);
-
-=head1 DESCRIPTION
-
-B<Tk::ProgressBar> provides a widget which will show a graphical representation
-of a value, given maximum and minimum reference values.
-
-=head1 STANDARD OPTIONS
-
-The following standard widget options are supported:
-
-=over 4
-
-=item B<-borderwidth>
-
-=item B<-highlightthickness>
-
-Defaults to 0.
-
-=item B<-padx>
-
-Defaults to 0.
-
-=item B<-pady>
-
-Defaults to 0.
-
-=item B<-relief>
-
-Defaults to C<sunken>
-
-=item B<-troughcolor>
-
-The color to be used for the background (trough) of the progress bar.
-Default is to use grey55.
-
-=back
-
-=head1 WIDGET-SPECIFIC OPTIONS
-
-=over 4
-
-=item B<-anchor>
-
-This can be used to position the start point of the bar. Default
-is 'w' (horizontal bar starting from the left). A vertical bar can be
-configured by using either 's' or 'n'.
-
-=item B<-blocks>
-
-This controls the number of blocks to be used to construct the progress
-bar. The default is to break the bar into 10 blocks.
-
-=item B<-colors>
-
-Controls the colors to be used for different positions of the progress bar.
-The colors should be supplied as a reference to an array containing pairs
-of positions and colors.
-
- -colors => [ 0, 'green', 50, 'red' ]
-
-means that for the range 0 to 50 the progress bar should be green
-and for higher values it should be red.
-
-
-=item B<-from>
-
-This sets the lower limit of the progress bar. If the bar is set to a
-value below the lower limt no bar will be displayed. Defaults to 0.
-See the C<-to> description for more information.
-
-=item B<-gap>
-
-This is the spacing (in pixels) between each block. Defaults to 1.
-Use 0 to get a continuous bar.
-
-
-=item B<-length>
-
-Specifies the desired long dimension of the ProgressBar in screen
-units (i.e. any of the forms acceptable to Tk_GetPixels). For vertical
-ProgressBars this is the ProgressBars height; for horizontal scales it
-is the ProgressBars width. The default length is calculated from the
-values of C<-padx>, C<-borderwidth>, C<-highlightthickness> and the
-difference between C<-from> and C<-to>.
-
-
-=item B<-resolution>
-
-A real value specifying the resolution for the scale. If this value is greater
-than zero then the scale's value will always be rounded to an even multiple of
-this value, as will tick marks and the endpoints of the scale. If the value is
-less than zero then no rounding occurs. Defaults to 1 (i.e., the value will be
-integral).
-
-=item B<-to>
-
-This sets the upper limit of the progress bar. If a value is specified
-(for example, using the C<value> method) that lies above this value the
-full progress bar will be displayed. Defaults to 100.
-
-
-
-=item B<-variable>
-
-Specifies the reference to a scalar variable to link to the ProgressBar.
-Whenever the value of the variable changes, the ProgressBar will upate
-to reflect this value. (See also the B<value> method below.)
-
-=item B<-value>
-
-The can be used to set the current position of the progress bar
-when used in conjunction with the standard C<configure>. It is
-usually recommended to use the B<value> method instead.
-
-
-=item B<-width>
-
-Specifies the desired narrow dimension of the ProgressBar in screen
-units (i.e. any of the forms acceptable to Tk_GetPixels). For
-vertical ProgressBars this is the ProgressBars width; for horizontal
-bars this is the ProgressBars height. The default width is derived
-from the values of C<-borderwidth> and C<-pady> and C<-highlightthickness>.
-
-=back
-
-=head1 WIDGET METHODS
-
-=over 4
-
-=item I<$ProgressBar>-E<gt>B<value>(?I<value>?)
-
-If I<value> is omitted, returns the current value of the ProgressBar. If
-I<value> is given, the value of the ProgressBar is set. If I<$value> is
-given but undefined the value of the option B<-from> is used.
-
-=back
-
-
-=head1 AUTHOR
-
-Graham Barr E<lt>F<gbarr@pobox.com>E<gt>
-
-=head1 COPYRIGHT
-
-Copyright (c) 1997-1998 Graham Barr. All rights reserved.
-This program is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-
-=cut
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/README.Adjust b/Master/tlpkg/tlperl/lib/Tk/README.Adjust
deleted file mode 100644
index 8c3eba45717..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/README.Adjust
+++ /dev/null
@@ -1,77 +0,0 @@
-Subject: Adjuster
-Date: Wed, 16 Dec 1998 22:23:23 +0100
-From: Stephen Kun <stephen.kun@is.gaertner.de>
-To: Nick Ing-Simmons <nick@ni-s.u-net.com>
-
-
-
-
-3. How do I find out whether slave is a pack or grid master or if it is not a
-master (for setting packPropagate(0))
-Currently I set both on the slave.
-
-4. In setting position of drag bar, I do a lot of calcs for each motion event.
-Some could be done one for first, then used again for subsequent calls, eg:
-borderwidth of master, etc.
-I've now partially done this and store them on the widget.
-
-5. Do I need XSync and idletasks calls in Adjuster.pm?
-XSync causes a bug. idletasks doesn't make any difference in practice, from
-what I can see. I've commented both out.
-Bug when using XSync:
- Run pack_adj_4r
- Shorten whole window from right so that left window edge crosses leftmost
- adjuster. Buttons on other adjusters disappear
-
-6. Sometimes the effect given by the Restore method, is undesirable. Eg.
-for multi-columns. Then when you expand say the 1st column, the size of the
-col at the end gets reduced to 0 width when the Adjuster forces itself in.
-Then when you reduce the size of the first column again, the end col is still
-0 width.
-Better would be:
-a) put the restore functionality on a flag OR
-b) when a col is reduced because of a Restore, it saves previous width of
-its slave, and attempts to restore it when the space becomes availabe. (Sounds
-impracticable.)
-I've implemented a) with default ON. In the documentation I'll recommend the
-default for the 1st Adjuster, then OFF for the remaining.
-
-8. What about a packAdjustForget? Given that Adjuster doesn't work well for
-grid anyway, and doesn't consider other managers, that wouldn't be too bad.
-I'm not going to do this, but someone mentioned it a while ago. I can
-see me probably wanting it too at some point.
-Are you for the idea?
-
-10. Grid doesn't work well with Adjuster, didn't before either. I think
-this has to do with grid, rather than adjuster. You get the same effect
-if you grid a row of widgets, then reduce the width of the window.
-Bugs demonstrated by grid_adj_4l:
-a) there's never an Unmap event for the adjuster.
-b) after adjusting, widgets protrude into border on right.
-c) grid('Propagate', 0) on MainWindow has no effect - window shrinks/grows
- when widgets are adjusted
-d) widgets shuffle to correct position on startup
-I don't recommend use of grid with Adjust!
-
-11. Have taken out __END__ temporarily for testing
-Will put it back before publishing on the mailing list.
-
-12. Why do the adjusters in my testcases come out grey? That's not the
-default background.
-
-13. Could packAdjust return ($adj, $w). Could then do:
- my $canv = $top->Canvas()->packAdjust();
-OR
- my ($adj, $canv) = $top->Canvas()->packAdjust();
-Latter is good if you want to configure or unpack adjuster later.
-I realise this is very Kludgy, but there's no other way to get the
-Adjuster from packAdjust.
-I suppose the workaround of creating the Adjuster yourself is OK. When
-you do it by hand though, there's more chance of making mistakes, eg
-forgetting the -side (which defaults then to 'top') which would cause havoc.
-What's your opinion.
-
-14. Run the script adj_button_bug: You can't reduce size of button.
-Button can be expanded, but as soon as focus enters button, it springs back
-to its original size. Why?
-It's not important though.
diff --git a/Master/tlpkg/tlperl/lib/Tk/ROText.pm b/Master/tlpkg/tlperl/lib/Tk/ROText.pm
deleted file mode 100644
index cc5634f5475..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/ROText.pm
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (c) 1995-2003 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-package Tk::ROText;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #10 $ =~ /\D(\d+)\s*$/;
-
-use Tk::Text;
-use base qw(Tk::Derived Tk::Text);
-
-Construct Tk::Widget 'ROText';
-
-sub clipEvents
-{
- return qw[Copy];
-}
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- my $val = $class->bindRdOnly($mw);
- my $cb = $mw->bind($class,'<Next>');
- $mw->bind($class,'<space>',$cb) if (defined $cb);
- $cb = $mw->bind($class,'<Prior>');
- $mw->bind($class,'<BackSpace>',$cb) if (defined $cb);
- $class->clipboardOperations($mw,'Copy');
- return $val;
-}
-
-sub Populate {
- my($self,$args) = @_;
- $self->SUPER::Populate($args);
- my $m = $self->menu->entrycget($self->menu->index('Search'), '-menu');
- $m->delete($m->index('Replace'));
-}
-
-sub Tk::Widget::ScrlROText { shift->Scrolled('ROText' => @_) }
-
-1;
-
-__END__
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Radiobutton.pm b/Master/tlpkg/tlperl/lib/Tk/Radiobutton.pm
deleted file mode 100644
index d09d41b4208..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Radiobutton.pm
+++ /dev/null
@@ -1,45 +0,0 @@
-# Conversion from Tk4.0 button.tcl competed.
-# Copyright (c) 1992-1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-# Copyright (c) 1995-2003 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-
-package Tk::Radiobutton;
-
-use vars qw($VERSION);
-$VERSION = '4.006'; # $Id: //depot/Tkutf8/Tk/Radiobutton.pm#6 $
-
-# modify it under the same terms as Perl itself, subject
-# to additional disclaimer in license.terms due to partial
-# derivation from Tk4.0 sources.
-
-require Tk::Button;
-
-
-use base qw(Tk::Button);
-Construct Tk::Widget 'Radiobutton';
-
-sub Tk_cmd { \&Tk::radiobutton }
-
-sub CreateOptions
-{
- return (shift->SUPER::CreateOptions,'-variable');
-}
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $mw->bind($class,'<Enter>', 'Enter');
- $mw->bind($class,'<Leave>', 'Leave');
- $mw->bind($class,'<1>', 'Invoke');
- $mw->bind($class,'<space>', 'Invoke');
- return $class;
-}
-
-sub Invoke
-{
- my $w = shift;
- $w->invoke() unless($w->cget('-state') eq 'disabled');
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/Region.pm b/Master/tlpkg/tlperl/lib/Tk/Region.pm
deleted file mode 100644
index 3e02bd2ff49..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Region.pm
+++ /dev/null
@@ -1,182 +0,0 @@
-package Tk::Region;
-
-# Ideas in progress do not document ...
-
-use strict;
-
-use vars qw($VERSION);
-$VERSION = '4.006'; # $Id: //depot/Tkutf8/Tk/Region.pm#6 $
-
-use Tk::Widget ();
-
-Construct Tk::Widget 'Region';
-
-my %index = (-widget => 1, '-x' => 2, '-y' => 3, -width => 4, -height => 5);
-
-sub _attr
-{
- my ($obj,$key,$val) = @_;
- if (@_ > 2)
- {
- $obj->{$key} = $val;
- }
- return $obj->{$key}
-}
-
-foreach my $name (qw(widget x y width height))
- {
- my $key = "-$name";
- no strict 'refs';
- *{$name} = sub { shift->_attr($key,@_) };
- }
-
-sub new
-{
- my $class = shift;
- my $widget = shift;
- my $obj = bless [\%index,$widget,0,0,0,0],$class;
- $obj->configure(@_);
-}
-
-sub cfgDefault
-{
- my ($class,$key) = @_;
- return undef;
-}
-
-sub cfgName
-{
- my ($class,$key) = @_;
- $key =~ s/^-//;
- return lcfirst($key);
-}
-
-sub cfgClass
-{
- return ucfirst(shift->cfgName(@_));
-}
-
-sub configure
-{
- my $obj = shift;
- my @results;
- if (@_ > 1)
- {
- while (@_)
- {
- my $key = shift;
- my $val = shift;
- if (exists $obj->{$key})
- {
- $obj->{$key} = $val;
- }
- else
- {
- my ($meth) = $key =~ /^-(\w+)$/;
- croak("Invalid option $key") unless $obj->can($meth);
- $obj->$meth($val);
- }
- }
- }
- elsif (@_ == 1)
- {
- my $key = shift;
- my $value = $obj->cget($key);
- push(@results,$key,$obj->cfgName($key),$obj->cfgClass($key),$obj->cfgDefault($key),$value);
- }
- else
- {
- foreach my $key (sort keys %$obj)
- {
- push(@results,scalar($obj->configure($key)))
- }
- }
- return wantarray ? @results : \@results;
-}
-
-sub cget
-{
- my $obj = shift;
- my $key = shift;
- return $obj->{$key} if exists $obj->{$key};
- my ($meth) = $key =~ /^-(\w+)$/;
- croak("Invalid option $key") unless $obj->can($meth);
- return $obj->$meth();
-}
-
-sub bbox
-{
- my $obj = shift;
- my @results;
- if (@_)
- {
- my $ref = (@_ == 1) ? shift : \@_;
- my ($x1,$y1,$x2,$y2) = (ref $ref) ? @$ref : split(/\s+/,$ref);
- ($x2,$x1) = ($x1,$x2) if ($x2 < $x1);
- ($y2,$y1) = ($y1,$y2) if ($y2 < $y1);
- $obj->width($x2-$x1);
- $obj->height($y2-$y1);
- $obj->x($x1);
- $obj->y($y1);
- }
- else
- {
- my $x = $obj->x;
- my $y = $obj->x;
- push(@results,$x,$y,$x+$obj->width,$y+$obj->height);
- }
- return wantarray ? @results : \@results;
-}
-
-sub rootx
-{
- my $obj = shift;
- if (@_)
- {
- my $x = shift;
- $obj->x($x-$obj->widget->rootx);
- }
- return $obj->widget->rootx + $obj->{'-x'}
-}
-
-sub rooty
-{
- my $obj = shift;
- if (@_)
- {
- my $y = shift;
- $obj->y($y-$obj->widget->rootx);
- }
- return $obj->widget->rooty + $obj->{'-y'}
-}
-
-sub rootxy
-{
- my $obj = shift;
- if (@_)
- {
- $obj->rootx(shift);
- $obj->rooty(shift);
- }
- my @results = ($obj->rootx,$obj->rooty);
- return wantarray ? @results : \@results;
-}
-
-sub rootbbox
-{
- my $obj = shift;
- my ($x1,$y1) = $obj->rootxy;
- my $x2 = $x1+$obj->width;
- my $y2 = $y1+$obj->height;
- my @results = ($x1,$y1,$x2,$y2);
- return wantarray ? @results : \@results;
-}
-
-
-*Width = \&width;
-*Height = \&height;
-*X = \&rootx;
-*Y = \&rooty;
-
-1;
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Tk/Reindex.pm b/Master/tlpkg/tlperl/lib/Tk/Reindex.pm
deleted file mode 100644
index 05e8e1fc1fc..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Reindex.pm
+++ /dev/null
@@ -1,225 +0,0 @@
-package Tk::Reindex;
-
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/TextList/Reindex.pm#4 $
-
-use Tk;
-use base qw(Tk::Derived);
-
-
-sub Populate
-{
- my ($w, $args) = @_;
-
- $w->_callbase('Populate',$args);
-
- $w->ConfigSpecs(-linestart => ["PASSIVE", "lineStart", "LineStart", 0],
- -toindexcmd => ["CALLBACK", "toIndexCmd", "ToIndexCmd" , [\&to_index,$w]],
- -fromindexcmd => ["CALLBACK", "fromIndexCmd","FromIndexCmd", [\&from_index,$w]]);
-}
-
-sub import
-{
- my($module,$base)=@_;
- my $pkg=(caller)[0];
-
- no strict 'refs';
- *{"${pkg}::_reindexbase"}=sub{$base};
-}
-
-sub _callbase
-{
- my($w,$sub)=(shift,shift);
- my $supersub=$w->_reindexbase()."::$sub";
- $w->$supersub(@_);
-}
-
-BEGIN
-{
- # list of subroutines and index argument number (-1 as first element means return value)
- my %subs=('bbox' => [0],
- 'compare' => [0,2],
- 'delete' => [0,1],
- 'dlineinfo' => [0],
- 'dump' => \&_find_dump_index,
- 'get' => [0,1],
- 'index' => [-1,0],
- 'insert' => [0],
- 'mark' => \&_find_mark_index,
- 'search' => \&_find_search_index,
- 'see' => [0],
- 'tag' => \&_find_tag_index,
- 'window' => [1],
- 'image' => [1],
- );
-
- foreach my $sub (keys %subs)
- {
- my $args=$subs{$sub};
- my $argsub=ref $args eq 'CODE'?$args:sub{$args};
- my $newsub=sub
- {
- my($w)=shift;
- my(@iargs)=grep($_<=$#_,@{$argsub->(@_)});
- my $iret=shift @iargs if @iargs && $iargs[0]==-1;
- my(@args)=@_;
- @args[@iargs]=$w->Callback(-toindexcmd,@args[@iargs]);
- my(@ret)=$w->_callbase($sub,@args);
- @ret=$w->Callback(-fromindexcmd,@ret) if $iret;
- wantarray?@ret:$ret[0];
- };
- no strict 'refs';
- *{$sub}=$newsub;
- }
-}
-
-sub to_index
-{
- my $w=shift;
- my $offset=$w->cget(-linestart)+1;
- my(@args)=@_;
- foreach (@args)
- {
- s/^\d+(?=\.)/$&+$offset/e;
- }
- @args;
-}
-
-sub from_index
-{
- my $w=shift;
- my $offset=$w->cget(-linestart)+1;
- my(@args)=@_;
- foreach (@args)
- {
- s/^\d+(?=\.)/$&-$offset/e
- }
- @args;
-}
-
-sub _find_dump_index
-{
- my $idx=_count_options(@_);
- [$idx,$idx+1];
-}
-
-sub _find_search_index
-{
- my $idx=_count_options(@_);
- [$idx+1,$idx+2];
-}
-
-sub _count_options
-{
- my $idx=0;
- while($_[$idx]=~/^-/g)
- {
- $idx++;
- $idx++ if $' eq 'count' or $' eq 'command';
- last if $' eq '-';
- }
- $idx;
-}
-
-sub _find_tag_index
-{
- return [1] if $_[0] eq 'names';
- return [2,3] if $_[0]=~/^(add|remove|nextrange|prevrange)$/;
- return [-1] if $_[0] eq 'ranges';
- return [];
-}
-
-sub _find_mark_index
-{
- return [2] if $_[0] eq 'set';
- return [1] if $_[0] eq 'next' or $_[0] eq 'previous';
- return [];
-}
-
-1;
-
-=head1 NAME
-
-Tk::Reindex - change the base index of Text-like widgets
-
-=for category Derived Widgets
-
-=head1 SYNOPSIS
-
- use Tk::ReindexedText;
- $t1=$w->ReindexedText(-linestart => 2);
-
- use Tk::ReindexedROText;
- $t2=$w->ReindexedROText(-linestart => 0);
-
-=head1 DESCRIPTION
-
-Creates a new widget class based on B<Text>-like widgets that can
-redefine the line number base (normally B<Text> widgets start line
-numbers at 1), or possibly other manipulations on indexes.
-
-=head1 STANDARD OPTIONS
-
-The newly-defined widget takes all the same options as the base
-widget, which defaults to B<Text>.
-
-=head1 WIDGET-SPECIFIC OPTIONS
-
-=item Name: B<lineStart>
-
-=item Class: B<LineStart>
-
-=item Switch: B<-linestart>
-
-Sets the line number of the first line in the B<Text> widget. The
-default B<-toindexcmd> and B<-fromindexcmd> use this configuration
-option.
-
--item Name: B<toIndexCmd> B<fromIndexCmd>
-
--item Class: B<ToIndexCmd> B<FromIndexCmd>
-
--item Switch: B<-toindexcmd> B<-fromindexcmd>
-
-These two options specify callbacks that are called with a list of
-indexes and are responsible for translating them to/from indexes that
-the base B<Text> widget can understand. The callback is passed the
-widget followed by a list of indexes, and should return a list of
-translated indexes. B<-toindexcmd> should translate from 'user'
-indexes to 'native' B<Text>-compatible indexes, and B<-fromindexcmd>
-should translate from 'native' indexes to 'user' indexes.
-
-The default callbacks simply add/subtract the offset given by the
-B<-linestart> option for all indexes in 'line.character' format.
-
-It would probably be prudent to make these functions inverses of each
-other.
-
-=head1 CLASS METHODS
-
-=item import
-
-To make new Reindex widgets, this function should be called via B<use>
-with the name of the Text-like base class that you are extending with
-"Reindex" capability. 'use base(Tk::Reindex Tk::nameofbasewidget)'
-should also be specified for that widget.
-
-=head1 BUGS
-
-I've used the word "indexes" instead of "indices" throughout the
-documentation.
-
-All the built-in perl code for widget bindings & methods will use the
-new 'user' indexes. Which means all this index manipulation might
-might break code that is trying to parse/manipulate indexes. Or even
-assume that '1.0' is the beginning index. B<Tk::Text::Contents> comes
-to mind.
-
-=head1 AUTHOR
-
-Andrew Allen <ada@fc.hp.com>
-
-This code may be distributed under the same conditions as Perl.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Tk/ReindexedROText.pm b/Master/tlpkg/tlperl/lib/Tk/ReindexedROText.pm
deleted file mode 100644
index 8c293f5fa61..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/ReindexedROText.pm
+++ /dev/null
@@ -1,13 +0,0 @@
-use strict;
-package Tk::ReindexedROText;
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/TextList/ReindexedROText.pm#4 $
-
-use Tk::Reindex qw(Tk::ROText);
-use base qw(Tk::Reindex Tk::ROText);
-Construct Tk::Widget 'ReindexedROText';
-
-1;
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/ReindexedText.pm b/Master/tlpkg/tlperl/lib/Tk/ReindexedText.pm
deleted file mode 100644
index c16a6fe7fd7..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/ReindexedText.pm
+++ /dev/null
@@ -1,13 +0,0 @@
-use strict;
-package Tk::ReindexedText;
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/TextList/ReindexedText.pm#4 $
-
-use Tk::Reindex qw(Tk::Text);
-use base qw(Tk::Reindex Tk::Text);
-Construct Tk::Widget 'ReindexedText';
-
-1;
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Scale.pm b/Master/tlpkg/tlperl/lib/Tk/Scale.pm
deleted file mode 100644
index 57c7bb11aa1..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Scale.pm
+++ /dev/null
@@ -1,278 +0,0 @@
-# Converted from scale.tcl --
-#
-# This file defines the default bindings for Tk scale widgets.
-#
-# @(#) scale.tcl 1.3 94/12/17 16:05:23
-#
-# Copyright (c) 1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-
-package Tk::Scale;
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/Scale/Scale.pm#4 $
-
-use Tk qw($XS_VERSION);
-use AutoLoader;
-
-use base qw(Tk::Widget);
-
-Construct Tk::Widget 'Scale';
-
-bootstrap Tk::Scale;
-
-sub Tk_cmd { \&Tk::scale }
-
-Tk::Methods('coords','get','identify','set');
-
-
-import Tk qw(Ev);
-
-#
-# Bind --
-# This procedure below invoked the first time the mouse enters a
-# scale widget or a scale widget receives the input focus. It creates
-# all of the class bindings for scales.
-#
-# Arguments:
-# event - Indicates which event caused the procedure to be invoked
-# (Enter or FocusIn). It is used so that we can carry out
-# the functions of that event in addition to setting up
-# bindings.
-sub ClassInit
-{
- my ($class,$mw) = @_;
-
- $mw->bind($class,'<Enter>',['Enter',Ev('x'),Ev('y')]);
- $mw->bind($class,'<Motion>',['Activate',Ev('x'),Ev('y')]);
- $mw->bind($class,'<Leave>','Leave');
-
- $mw->bind($class,'<1>',['ButtonDown',Ev('x'),Ev('y')]);
- $mw->bind($class,'<B1-Motion>',['Drag',Ev('x'),Ev('y')]);
- $mw->bind($class,'<B1-Leave>','NoOp');
- $mw->bind($class,'<B1-Enter>','NoOp');
- $mw->bind($class,'<ButtonRelease-1>',['ButtonUp',Ev('x'),Ev('y')]);
-
- $mw->bind($class,'<2>',['ButtonDown',Ev('x'),Ev('y')]);
- $mw->bind($class,'<B2-Motion>',['Drag',Ev('x'),Ev('y')]);
- $mw->bind($class,'<B2-Leave>','NoOp');
- $mw->bind($class,'<B2-Enter>','NoOp');
- $mw->bind($class,'<ButtonRelease-2>',['ButtonUp',Ev('x'),Ev('y')]);
-
- $mw->bind($class,'<Control-1>',['ControlPress',Ev('x'),Ev('y')]);
-
- $mw->bind($class,'<Up>',['Increment','up','little','noRepeat']);
- $mw->bind($class,'<Down>',['Increment','down','little','noRepeat']);
- $mw->bind($class,'<Left>',['Increment','up','little','noRepeat']);
- $mw->bind($class,'<Right>',['Increment','down','little','noRepeat']);
-
- $mw->bind($class,'<Control-Up>',['Increment','up','big','noRepeat']);
- $mw->bind($class,'<Control-Down>',['Increment','down','big','noRepeat']);
- $mw->bind($class,'<Control-Left>',['Increment','up','big','noRepeat']);
- $mw->bind($class,'<Control-Right>',['Increment','down','big','noRepeat']);
-
- $mw->bind($class,'<Home>',['set',Ev('cget','-from')]);
- $mw->bind($class,'<End>',['set',Ev('cget','-to')]);
- return $class;
-}
-
-1;
-
-__END__
-
-# Activate --
-# This procedure is invoked to check a given x-y position in the
-# scale and activate the slider if the x-y position falls within
-# the slider.
-#
-# Arguments:
-# w - The scale widget.
-# x, y - Mouse coordinates.
-sub Activate
-{
- my $w = shift;
- my $x = shift;
- my $y = shift;
- return if ($w->cget('-state') eq 'disabled');
- my $ident = $w->identify($x,$y);
- if (defined($ident) && $ident eq 'slider')
- {
- $w->configure(-state => 'active')
- }
- else
- {
- $w->configure(-state => 'normal')
- }
-}
-
-sub Leave
-{
- my ($w) = @_;
- $w->configure('-activebackground',$w->{'activeBg'}) if ($Tk::strictMotif);
- $w->configure('-state','normal') if ($w->cget('-state') eq 'active');
-}
-
-sub Enter
-{
- my ($w,$x,$y) = @_;
- if ($Tk::strictMotif)
- {
- $w->{'activeBg'} = $w->cget('-activebackground');
- $w->configure('-activebackground',$w->cget('-background'));
- }
- $w->Activate($x,$y);
-}
-
-sub ButtonUp
-{
- my ($w,$x,$y) = @_;
- $w->CancelRepeat();
- $w->EndDrag();
- $w->Activate($x,$y)
-}
-
-
-# ButtonDown --
-# This procedure is invoked when a button is pressed in a scale. It
-# takes different actions depending on where the button was pressed.
-#
-# Arguments:
-# w - The scale widget.
-# x, y - Mouse coordinates of button press.
-sub ButtonDown
-{
- my $w = shift;
- my $x = shift;
- my $y = shift;
- $Tk::dragging = 0;
- $el = $w->identify($x,$y);
- return unless ($el);
- if ($el eq 'trough1')
- {
- $w->Increment('up','little','initial')
- }
- elsif ($el eq 'trough2')
- {
- $w->Increment('down','little','initial')
- }
- elsif ($el eq 'slider')
- {
- $Tk::dragging = 1;
- my @coords = $w->coords();
- $Tk::deltaX = $x-$coords[0];
- $Tk::deltaY = $y-$coords[1];
- }
-}
-# Drag --
-# This procedure is called when the mouse is dragged with
-# mouse button 1 down. If the drag started inside the slider
-# (i.e. the scale is active) then the scale's value is adjusted
-# to reflect the mouse's position.
-#
-# Arguments:
-# w - The scale widget.
-# x, y - Mouse coordinates.
-sub Drag
-{
- my $w = shift;
- my $x = shift;
- my $y = shift;
- if (!$Tk::dragging)
- {
- return;
- }
- $w->set($w->get($x-$Tk::deltaX,$y-$Tk::deltaY))
-}
-# EndDrag --
-# This procedure is called to end an interactive drag of the
-# slider. It just marks the drag as over.
-# Arguments:
-# w - The scale widget.
-sub EndDrag
-{
- my $w = shift;
- if (!$Tk::dragging)
- {
- return;
- }
- $Tk::dragging = 0;
-}
-# Increment --
-# This procedure is invoked to increment the value of a scale and
-# to set up auto-repeating of the action if that is desired. The
-# way the value is incremented depends on the "dir" and "big"
-# arguments.
-#
-# Arguments:
-# w - The scale widget.
-# dir - "up" means move value towards -from, "down" means
-# move towards -to.
-# big - Size of increments: "big" or "little".
-# repeat - Whether and how to auto-repeat the action: "noRepeat"
-# means don't auto-repeat, "initial" means this is the
-# first action in an auto-repeat sequence, and "again"
-# means this is the second repetition or later.
-sub Increment
-{
- my $w = shift;
- my $dir = shift;
- my $big = shift;
- my $repeat = shift;
- my $inc;
- if ($big eq 'big')
- {
- $inc = $w->cget('-bigincrement');
- if ($inc == 0)
- {
- $inc = abs(($w->cget('-to')-$w->cget('-from')))/10.0
- }
- if ($inc < $w->cget('-resolution'))
- {
- $inc = $w->cget('-resolution')
- }
- }
- else
- {
- $inc = $w->cget('-resolution')
- }
- if (($w->cget('-from') > $w->cget('-to')) ^ ($dir eq 'up'))
- {
- $inc = -$inc
- }
- $w->set($w->get()+$inc);
- if ($repeat eq 'again')
- {
- $w->RepeatId($w->after($w->cget('-repeatinterval'),'Increment',$w,$dir,$big,'again'));
- }
- elsif ($repeat eq 'initial')
- {
- $w->RepeatId($w->after($w->cget('-repeatdelay'),'Increment',$w,$dir,$big,'again'));
- }
-}
-# ControlPress --
-# This procedure handles button presses that are made with the Control
-# key down. Depending on the mouse position, it adjusts the scale
-# value to one end of the range or the other.
-#
-# Arguments:
-# w - The scale widget.
-# x, y - Mouse coordinates where the button was pressed.
-sub ControlPress
-{
- my ($w,$x,$y) = @_;
- my $el = $w->identify($x,$y);
- return unless ($el);
- if ($el eq 'trough1')
- {
- $w->set($w->cget('-from'))
- }
- elsif ($el eq 'trough2')
- {
- $w->set($w->cget('-to'))
- }
-}
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Scrollbar.pm b/Master/tlpkg/tlperl/lib/Tk/Scrollbar.pm
deleted file mode 100644
index 6b416e04b30..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Scrollbar.pm
+++ /dev/null
@@ -1,429 +0,0 @@
-# Conversion from Tk4.0 scrollbar.tcl competed.
-package Tk::Scrollbar;
-
-use vars qw($VERSION);
-$VERSION = '4.010'; # $Id: //depot/Tkutf8/Scrollbar/Scrollbar.pm#10 $
-
-use Tk qw($XS_VERSION Ev);
-use AutoLoader;
-
-use base qw(Tk::Widget);
-
-#use strict;
-#use vars qw($pressX $pressY @initValues $initPos $activeBg);
-
-Construct Tk::Widget 'Scrollbar';
-
-bootstrap Tk::Scrollbar;
-
-sub Tk_cmd { \&Tk::scrollbar }
-
-Tk::Methods('activate','delta','fraction','get','identify','set');
-
-sub Needed
-{
- my ($sb) = @_;
- my @val = $sb->get;
- return 1 unless (@val == 2);
- return 1 if $val[0] != 0.0;
- return 1 if $val[1] != 1.0;
- return 0;
-}
-
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $mw->bind($class, '<Enter>', 'Enter');
- $mw->bind($class, '<Motion>', 'Motion');
- $mw->bind($class, '<Leave>', 'Leave');
-
- $mw->bind($class, '<1>', 'ButtonDown');
- $mw->bind($class, '<B1-Motion>', ['Drag', Ev('x'), Ev('y')]);
- $mw->bind($class, '<ButtonRelease-1>', 'ButtonUp');
- $mw->bind($class, '<B1-Leave>', 'NoOp'); # prevent generic <Leave>
- $mw->bind($class, '<B1-Enter>', 'NoOp'); # prevent generic <Enter>
- $mw->bind($class, '<Control-1>', 'ScrlTopBottom');
-
- $mw->bind($class, '<2>', 'ButtonDown');
- $mw->bind($class, '<B2-Motion>', ['Drag', Ev('x'), Ev('y')]);
- $mw->bind($class, '<ButtonRelease-2>', 'ButtonUp');
- $mw->bind($class, '<B2-Leave>', 'NoOp'); # prevent generic <Leave>
- $mw->bind($class, '<B2-Enter>', 'NoOp'); # prevent generic <Enter>
- $mw->bind($class, '<Control-2>', 'ScrlTopBottom');
-
- $mw->bind($class, '<Up>', ['ScrlByUnits','v',-1]);
- $mw->bind($class, '<Down>', ['ScrlByUnits','v', 1]);
- $mw->bind($class, '<Control-Up>', ['ScrlByPages','v',-1]);
- $mw->bind($class, '<Control-Down>', ['ScrlByPages','v', 1]);
-
- $mw->bind($class, '<Left>', ['ScrlByUnits','h',-1]);
- $mw->bind($class, '<Right>', ['ScrlByUnits','h', 1]);
- $mw->bind($class, '<Control-Left>', ['ScrlByPages','h',-1]);
- $mw->bind($class, '<Control-Right>', ['ScrlByPages','h', 1]);
-
- $mw->bind($class, '<Prior>', ['ScrlByPages','hv',-1]);
- $mw->bind($class, '<Next>', ['ScrlByPages','hv', 1]);
-
- # X11 mousewheel - honour for horizontal too.
- $mw->bind($class, '<4>', ['ScrlByUnits','hv',-5]);
- $mw->bind($class, '<5>', ['ScrlByUnits','hv', 5]);
-
- $mw->bind($class, '<Home>', ['ScrlToPos', 0]);
- $mw->bind($class, '<End>', ['ScrlToPos', 1]);
-
- $mw->bind($class, '<4>', ['ScrlByUnits','v',-3]);
- $mw->bind($class, '<5>', ['ScrlByUnits','v', 3]);
-
- return $class;
-
-}
-
-1;
-
-__END__
-
-sub Enter
-{
- my $w = shift;
- my $e = $w->XEvent;
- if ($Tk::strictMotif)
- {
- my $bg = $w->cget('-background');
- $activeBg = $w->cget('-activebackground');
- $w->configure('-activebackground' => $bg);
- }
- $w->activate($w->identify($e->x,$e->y));
-}
-
-sub Leave
-{
- my $w = shift;
- if ($Tk::strictMotif)
- {
- $w->configure('-activebackground' => $activeBg) if (defined $activeBg) ;
- }
- $w->activate('');
-}
-
-sub Motion
-{
- my $w = shift;
- my $e = $w->XEvent;
- $w->activate($w->identify($e->x,$e->y));
-}
-
-# tkScrollButtonDown --
-# This procedure is invoked when a button is pressed in a scrollbar.
-# It changes the way the scrollbar is displayed and takes actions
-# depending on where the mouse is.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - Mouse coordinates.
-
-sub ButtonDown
-{my $w = shift;
- my $e = $w->XEvent;
- my $element = $w->identify($e->x,$e->y);
- $w->configure('-activerelief' => 'sunken');
- if ($e->b == 1 and
- (defined($element) && $element eq 'slider'))
- {
- $w->StartDrag($e->x,$e->y);
- }
- elsif ($e->b == 2 and
- (defined($element) && $element =~ /^(trough[12]|slider)$/o))
- {
- my $pos = $w->fraction($e->x, $e->y);
- my($head, $tail) = $w->get;
- my $len = $tail - $head;
-
- $head = $pos - $len/2;
- $tail = $pos + $len/2;
- if ($head < 0) {
- $head = 0;
- $tail = $len;
- }
- elsif ($tail > 1) {
- $head = 1 - $len;
- $tail = 1;
- }
- $w->ScrlToPos($head);
- $w->set($head, $tail);
-
- $w->StartDrag($e->x,$e->y);
- }
- else
- {
- $w->Select($element,'initial');
- }
-}
-
-# tkScrollButtonUp --
-# This procedure is invoked when a button is released in a scrollbar.
-# It cancels scans and auto-repeats that were in progress, and restores
-# the way the active element is displayed.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - Mouse coordinates.
-
-sub ButtonUp
-{my $w = shift;
- my $e = $w->XEvent;
- $w->CancelRepeat;
- $w->configure('-activerelief' => 'raised');
- $w->EndDrag($e->x,$e->y);
- $w->activate($w->identify($e->x,$e->y));
-}
-
-# tkScrollSelect --
-# This procedure is invoked when button 1 is pressed over the scrollbar.
-# It invokes one of several scrolling actions depending on where in
-# the scrollbar the button was pressed.
-#
-# Arguments:
-# w - The scrollbar widget.
-# element - The element of the scrollbar that was selected, such
-# as "arrow1" or "trough2". Shouldn't be "slider".
-# repeat - Whether and how to auto-repeat the action: "noRepeat"
-# means don't auto-repeat, "initial" means this is the
-# first action in an auto-repeat sequence, and "again"
-# means this is the second repetition or later.
-
-sub Select
-{
- my $w = shift;
- my $element = shift;
- my $repeat = shift;
- return unless defined ($element);
- if ($element eq 'arrow1')
- {
- $w->ScrlByUnits('hv',-1);
- }
- elsif ($element eq 'trough1')
- {
- $w->ScrlByPages('hv',-1);
- }
- elsif ($element eq 'trough2')
- {
- $w->ScrlByPages('hv', 1);
- }
- elsif ($element eq 'arrow2')
- {
- $w->ScrlByUnits('hv', 1);
- }
- else
- {
- return;
- }
-
- if ($repeat eq 'again')
- {
- $w->RepeatId($w->after($w->cget('-repeatinterval'),['Select',$w,$element,'again']));
- }
- elsif ($repeat eq 'initial')
- {
- $w->RepeatId($w->after($w->cget('-repeatdelay'),['Select',$w,$element,'again']));
- }
-}
-
-# tkScrollStartDrag --
-# This procedure is called to initiate a drag of the slider. It just
-# remembers the starting position of the slider.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - The mouse position at the start of the drag operation.
-
-sub StartDrag
-{
- my($w,$x,$y) = @_;
- return unless (defined ($w->cget('-command')));
- $pressX = $x;
- $pressY = $y;
- @initValues = $w->get;
- my $iv0 = $initValues[0];
- if (@initValues == 2)
- {
- $initPos = $iv0;
- }
- elsif ($iv0 == 0)
- {
- $initPos = 0;
- }
- else
- {
- $initPos = $initValues[2]/$initValues[0];
- }
-}
-
-# tkScrollDrag --
-# This procedure is called for each mouse motion even when the slider
-# is being dragged. It notifies the associated widget if we're not
-# jump scrolling, and it just updates the scrollbar if we are jump
-# scrolling.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - The current mouse position.
-
-sub Drag
-{
- my($w,$x,$y) = @_;
- return if !defined $initPos;
- my $delta = $w->delta($x-$pressX, $y-$pressY);
- if ($w->cget('-jump'))
- {
- if (@initValues == 2)
- {
- $w->set($initValues[0]+$delta, $initValues[1]+$delta);
- }
- else
- {
- $delta = sprintf "%d", $delta * $initValues[0]; # round()
- $initValues[2] += $delta;
- $initValues[3] += $delta;
- $w->set(@initValues[2,3]);
- }
- }
- else
- {
- $w->ScrlToPos($initPos+$delta);
- }
-}
-
-# tkScrollEndDrag --
-# This procedure is called to end an interactive drag of the slider.
-# It scrolls the window if we're in jump mode, otherwise it does nothing.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - The mouse position at the end of the drag operation.
-
-sub EndDrag
-{
- my($w,$x,$y) = @_;
- return if (!defined $initPos);
- if ($w->cget('-jump'))
- {
- my $delta = $w->delta($x-$pressX, $y-$pressY);
- $w->ScrlToPos($initPos+$delta);
- }
- undef $initPos;
-}
-
-# tkScrlByUnits --
-# This procedure tells the scrollbar's associated widget to scroll up
-# or down by a given number of units. It notifies the associated widget
-# in different ways for old and new command syntaxes.
-#
-# Arguments:
-# w - The scrollbar widget.
-# orient - Which kinds of scrollbars this applies to: "h" for
-# horizontal, "v" for vertical, "hv" for both.
-# amount - How many units to scroll: typically 1 or -1.
-
-sub ScrlByUnits
-{my $w = shift;
- my $orient = shift;
- my $amount = shift;
- my $cmd = $w->cget('-command');
- return unless (defined $cmd);
- return if (index($orient,substr($w->cget('-orient'),0,1)) < 0);
- my @info = $w->get;
- if (@info == 2)
- {
- $cmd->Call('scroll',$amount,'units');
- }
- else
- {
- $cmd->Call($info[2]+$amount);
- }
-}
-
-# tkScrlByPages --
-# This procedure tells the scrollbar's associated widget to scroll up
-# or down by a given number of screenfuls. It notifies the associated
-# widget in different ways for old and new command syntaxes.
-#
-# Arguments:
-# w - The scrollbar widget.
-# orient - Which kinds of scrollbars this applies to: "h" for
-# horizontal, "v" for vertical, "hv" for both.
-# amount - How many screens to scroll: typically 1 or -1.
-
-sub ScrlByPages
-{
- my $w = shift;
- my $orient = shift;
- my $amount = shift;
- my $cmd = $w->cget('-command');
- return unless (defined $cmd);
- return if (index($orient,substr($w->cget('-orient'),0,1)) < 0);
- my @info = $w->get;
- if (@info == 2)
- {
- $cmd->Call('scroll',$amount,'pages');
- }
- else
- {
- $cmd->Call($info[2]+$amount*($info[1]-1));
- }
-}
-
-# tkScrlToPos --
-# This procedure tells the scrollbar's associated widget to scroll to
-# a particular location, given by a fraction between 0 and 1. It notifies
-# the associated widget in different ways for old and new command syntaxes.
-#
-# Arguments:
-# w - The scrollbar widget.
-# pos - A fraction between 0 and 1 indicating a desired position
-# in the document.
-
-sub ScrlToPos
-{
- my $w = shift;
- my $pos = shift;
- my $cmd = $w->cget('-command');
- return unless (defined $cmd);
- my @info = $w->get;
- if (@info == 2)
- {
- $cmd->Call('moveto',$pos);
- }
- else
- {
- $cmd->Call(int($info[0]*$pos));
- }
-}
-
-# tkScrlTopBottom
-# Scroll to the top or bottom of the document, depending on the mouse
-# position.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - Mouse coordinates within the widget.
-
-sub ScrlTopBottom
-{
- my $w = shift;
- my $e = $w->XEvent;
- my $element = $w->identify($e->x,$e->y);
- return unless ($element);
- if ($element =~ /1$/)
- {
- $w->ScrlToPos(0);
- }
- elsif ($element =~ /2$/)
- {
- $w->ScrlToPos(1);
- }
-}
-
-
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Spinbox.pm b/Master/tlpkg/tlperl/lib/Tk/Spinbox.pm
deleted file mode 100644
index 673a1e181ce..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Spinbox.pm
+++ /dev/null
@@ -1,115 +0,0 @@
-package Tk::Spinbox;
-use strict;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d',q$Revision: #6 $ =~ /#(\d+)/;
-
-use base 'Tk::Entry';
-
-sub Tk_cmd { \&Tk::spinbox }
-
-# Also inherits Entry's methods
-Tk::Methods( "identify", "invoke", "set" );
-use Tk::Submethods ( 'selection' => ["element"] );
-
-Construct Tk::Widget 'Spinbox';
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
-
- $class->SUPER::ClassInit($mw);
-
- $mw->bind($class, '<Up>', [invoke => 'buttonup']);
- $mw->bind($class, '<4>', [invoke => 'buttonup']);
- $mw->bind($class, '<Down>',[invoke => 'buttondown']);
- $mw->bind($class, '<5>', [invoke => 'buttondown']);
-
- return $class;
-}
-
-sub Invoke
-{
- my ($w,$elem) = @_;
- unless ($w->{_outside})
- {
- $w->invoke($elem);
- $w->{_repeated}++;
- }
- my $delay = $w->cget('-repeatinterval');
- if ($delay > 0)
- {
- $w->RepeatId($w->after($delay,[Invoke => $w,$elem]));
- }
-}
-
-sub Button1
-{
- my ($w,$x,$y) = @_;
- my $elem = $w->identify($x,$y);
- $w->{_element} = $elem || 'entry';
- if ($w->{_element} eq 'entry')
- {
- $w->SUPER::Button1($x,$y);
- }
- elsif ($w->cget('-state') ne 'disabled')
- {
- $w->selectionElement($elem);
- $w->{_repeated} = 0;
- $w->{_outside} = 0;
- $w->{_relief} = $w->cget("-${elem}relief");
- $w->CancelRepeat;
- my $delay = $w->cget('-repeatdelay');
- $w->RepeatId($w->after($delay,[Invoke => $w,$elem])) if $delay > 0;
- }
-}
-
-sub Motion
-{
- my ($w,$x,$y) = @_;
- my $elem = $w->identify($x,$y);
- $w->{_element} = $elem || 'entry' unless $w->{_element};
- if ($w->{_element} eq 'entry')
- {
- $w->SUPER::Motion($x,$y);
- }
- else
- {
- if (!defined($elem) || $elem ne $w->{_element})
- {
- # Moved outside the button
- unless ($w->{_outside})
- {
- $w->{_outside} = 1;
- $w->selectionElement('none');
- }
- }
- elsif ($w->{_outside})
- {
- # Moved back over the button
- $w->selectionElement($elem);
- $w->{_outside} = 0;
- }
- }
-}
-
-sub Button1Release
-{
- my ($w,$x,$y) = @_;
- $w->SUPER::Button1Release($x,$y);
- my $elem = $w->{_element};
- if (defined($elem) && $elem ne 'entry')
- {
- my $repeated = $w->{_repeated};
- if (defined($repeated) && !$repeated)
- {
- $w->invoke($elem);
- }
- my $relief = delete $w->{_relief};
- $w->configure("-${elem}relief",$relief) if $relief
- }
- $w->selectionElement('none');
-}
-
-1;
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Tk/Stats.pm b/Master/tlpkg/tlperl/lib/Tk/Stats.pm
deleted file mode 100644
index 39bedfb1a47..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Stats.pm
+++ /dev/null
@@ -1,26 +0,0 @@
-package Tk::Stats;
-
-($lu,$ls) = times;
-
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/Stats.pm#4 $
-
-sub stats
- {
- my ($u,$s) = times;
- my $du = $u-$lu;
- my $ds = $s-$ls;
- $ls = $s;
- $lu = $u;
- print sprintf(' dt=%4.2f du=%4.2f ds=%4.2f',$du+$ds,$du,$ds);
- print sprintf(' t=%4.2f u=%4.2f s=%4.2f',$u+$s,$u,$s);
- print ' ',shift,"\n";
- }
-
-sub import
-{
- stats($_[1]);
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/Submethods.pm b/Master/tlpkg/tlperl/lib/Tk/Submethods.pm
deleted file mode 100644
index a2b8e3bd186..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Submethods.pm
+++ /dev/null
@@ -1,46 +0,0 @@
-package Tk::Submethods;
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/Submethods.pm#4 $
-
-sub import
-{
- my $class = shift;
- no strict 'refs';
- my $package = caller(0);
- while (@_)
- {
- my $fn = shift;
- my $sm = shift;
- foreach my $sub (@{$sm})
- {
- my ($suffix) = $sub =~ /(\w+)$/;
- my $pfn = $package.'::'.$fn;
- *{$pfn."\u$suffix"} = sub { shift->$pfn($sub,@_) };
- }
- }
-}
-
-sub Direct
-{
- my $class = shift;
- no strict 'refs';
- my $package = caller(0);
- while (@_)
- {
- my $fn = shift;
- my $sm = shift;
- my $sub;
- foreach $sub (@{$sm})
- {
- # eval "sub ${package}::${sub} { shift->$fn('$sub',\@_) }";
- *{$package.'::'.$sub} = sub { shift->$fn($sub,@_) };
- }
- }
-}
-
-1;
-
-__END__
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Tk/TList.pm b/Master/tlpkg/tlperl/lib/Tk/TList.pm
deleted file mode 100644
index 65ce18796bb..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/TList.pm
+++ /dev/null
@@ -1,416 +0,0 @@
-package Tk::TList;
-
-use vars qw($VERSION);
-$VERSION = '4.006'; # $Id: //depot/Tkutf8/TList/TList.pm#6 $
-
-use Tk qw(Ev $XS_VERSION);
-
-use base qw(Tk::Widget);
-
-use strict;
-
-Construct Tk::Widget 'TList';
-
-bootstrap Tk::TList;
-
-sub Tk_cmd { \&Tk::tlist }
-
-Tk::Methods qw(insert index anchor delete dragsite dropsite entrycget
- entryconfigure info nearest see selection xview yview);
-
-use Tk::Submethods ( 'delete' => [qw(all entry offsprings siblings)],
- 'info' => [qw(anchor dragsite dropsite selection)],
- 'selection' => [qw(clear get includes set)],
- 'anchor' => [qw(clear set)],
- 'dragsite' => [qw(clear set)],
- 'dropsite' => [qw(clear set)],
- );
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
-
- $mw->bind($class,'<ButtonPress-1>',[ 'Button1' ] );
- $mw->bind($class,'<Shift-ButtonPress-1>',[ 'ShiftButton1' ] );
- $mw->bind($class,'<Control-ButtonRelease-1>','Control_ButtonRelease_1');
- $mw->bind($class,'<ButtonRelease-1>','ButtonRelease_1');
- $mw->bind($class,'<B1-Motion>',[ 'Button1Motion' ] );
- $mw->bind($class,'<B1-Leave>',[ 'AutoScan' ] );
-
- $mw->bind($class,'<Double-ButtonPress-1>',['Double1']);
-
- $mw->bind($class,'<Control-B1-Motion>','Control_B1_Motion');
- $mw->bind($class,'<Control-ButtonPress-1>',['CtrlButton1']);
- $mw->bind($class,'<Control-Double-ButtonPress-1>',['CtrlButton1']);
-
- $mw->bind($class,'<B1-Enter>','B1_Enter');
-
- $mw->bind($class,'<Up>', ['DirKey', 'up']);
- $mw->bind($class,'<Down>',['DirKey', 'down']);
-
- $mw->bind($class,'<Left>', ['DirKey', 'left']);
- $mw->bind($class,'<Right>',['DirKey', 'right']);
-
- $mw->bind($class,'<Prior>','Prior');
- $mw->bind($class,'<Next>','Next');
-
- $mw->bind($class,'<Return>', ['KeyboardActivate']);
- $mw->bind($class,'<space>', ['KeyboardBrowse']);
-
- return $class;
-}
-
-sub Control_ButtonRelease_1
-{
-}
-
-
-sub ButtonRelease_1
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->CancelRepeat
- if($w->cget('-selectmode') ne 'dragdrop');
- $w->ButtonRelease1($Ev);
-}
-
-
-sub Control_B1_Motion
-{
-}
-
-
-sub B1_Enter
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->CancelRepeat
- if($w->cget('-selectmode') ne 'dragdrop');
-}
-
-
-sub Prior
-{
-shift->yview('scroll', -1, 'pages')
-}
-
-
-sub Next
-{
-shift->yview('scroll', 1, 'pages')
-}
-
-
-sub Button1
-{
- my $w = shift;
- my $Ev = $w->XEvent;
-
- delete $w->{'shiftanchor'};
-
- $w->focus()
- if($w->cget('-takefocus'));
-
- my $mode = $w->cget('-selectmode');
-
- if ($mode eq 'dragdrop')
- {
- # $w->Send_WaitDrag($Ev->y);
- return;
- }
-
- my $ent = $w->GetNearest($Ev->x, $Ev->y);
-
- return unless defined $ent;
-
- my $browse = 0;
-
- if($mode eq 'single')
- {
- $w->anchor('set', $ent);
- }
- elsif($mode eq 'browse')
- {
- $w->anchor('set', $ent);
- $w->selection('clear' );
- $w->selection('set', $ent);
- $browse = 1;
- }
- elsif($mode eq 'multiple')
- {
- $w->selection('clear');
- $w->anchor('set', $ent);
- $w->selection('set', $ent);
- $browse = 1;
- }
- elsif($mode eq 'extended')
- {
- $w->anchor('set', $ent);
- $w->selection('clear');
- $w->selection('set', $ent);
- $browse = 1;
- }
-
- $w->Callback(-browsecmd => $ent) if ($browse);
-}
-
-sub ShiftButton1
-{
- my $w = shift;
- my $Ev = $w->XEvent;
-
- my $to = $w->GetNearest($Ev->x,$Ev->y);
-
- delete $w->{'shiftanchor'};
-
- return unless defined $to;
-
- my $mode = $w->cget('-selectmode');
-
- if ($mode eq 'extended')
- {
- my $from = $w->info('anchor');
- if (defined $from)
- {
- $w->selection('clear');
- $w->selection('set', $from, $to);
- }
- else
- {
- $w->anchor('set', $to);
- $w->selection('clear');
- $w->selection('set', $to);
- }
- }
-}
-
-sub GetNearest
-{
- my ($w,$x,$y) = @_;
- my $ent = $w->nearest($x,$y);
- if (defined $ent)
- {
- my $state = $w->entrycget($ent, '-state');
- return $ent if (!defined($state) || $state ne 'disabled');
- }
- return undef;
-}
-
-sub ButtonRelease1
-{
- my ($w, $Ev) = @_;
-
- delete $w->{'shiftanchor'};
-
- my $mode = $w->cget('-selectmode');
-
- if($mode eq 'dragdrop')
- {
-# $w->Send_DoneDrag();
- return;
- }
-
- my ($x, $y) = ($Ev->x, $Ev->y);
- my $ent = $w->GetNearest($x,$y);
-
- return unless defined $ent;
-
- if($x < 0 || $y < 0 || $x > $w->width || $y > $w->height)
- {
- $w->selection('clear');
-
- return if($mode eq 'single' || $mode eq 'browse')
-
- }
- else
- {
- if($mode eq 'single' || $mode eq 'browse')
- {
- $w->anchor('set', $ent);
- $w->selection('clear');
- $w->selection('set', $ent);
-
- }
- elsif($mode eq 'multiple')
- {
- $w->selection('set', $ent);
- }
- elsif($mode eq 'extended')
- {
- $w->selection('set', $ent);
- }
- }
-
- $w->Callback(-browsecmd =>$ent);
-}
-
-sub Button1Motion
-{
- my $w = shift;
- my $Ev = $w->XEvent;
-
- delete $w->{'shiftanchor'};
-
- my $mode = $w->cget('-selectmode');
-
- if ($mode eq 'dragdrop')
- {
-# $w->Send_StartDrag();
- return;
- }
-
- my $ent = $w->GetNearest($Ev->x,$Ev->y);
-
- return unless defined $ent;
-
- if($mode eq 'single')
- {
- $w->anchor('set', $ent);
- }
- elsif($mode eq 'multiple' || $mode eq 'extended')
- {
- my $from = $w->info('anchor');
- if (defined $from)
- {
- $w->selection('clear');
- $w->selection('set', $from, $ent);
- }
- else
- {
- $w->anchor('set', $ent);
- $w->selection('clear');
- $w->selection('set', $ent);
- }
- }
-
- if($mode ne 'single')
- {
- $w->Callback(-browsecmd =>$ent);
- }
-}
-
-sub Double1
-{
- my $w = shift;
- my $Ev = $w->XEvent;
-
- delete $w->{'shiftanchor'};
-
- my $ent = $w->GetNearest($Ev->x,$Ev->y);
-
- return unless defined $ent;
-
- $w->anchor('set', $ent) unless defined($w->info('anchor'));
-
- $w->selection('set', $ent);
- $w->Callback(-command => $ent);
-}
-
-sub CtrlButton1
-{
- my $w = shift;
- my $Ev = $w->XEvent;
-
- delete $w->{'shiftanchor'};
-
- my $ent = $w->GetNearest($Ev->x,$Ev->y);
-
- return unless defined $ent;
-
- my $mode = $w->cget('-selectmode');
-
- if($mode eq 'extended')
- {
- $w->anchor('set', $ent) unless defined( $w->info('anchor') );
-
- if($w->selection('includes', $ent))
- {
- $w->selection('clear', $ent);
- }
- else
- {
- $w->selection('set', $ent);
- }
- $w->Callback(-browsecmd =>$ent);
- }
-}
-
-sub DirKey
-{
- my ($w,$dir) = @_;
- my $anchor = $w->info('anchor');
-
- my $new = (defined $anchor) ? $w->info($dir,$anchor) : 0;
-
- $w->anchorSet($new);
- $w->see($new);
-}
-
-sub KeyboardActivate
-{
- my $w = shift;
-
- my $anchor = $w->info('anchor');
-
- return unless defined $anchor;
-
- if($w->cget('-selectmode'))
- {
- $w->selection('clear');
- $w->selection('set', $anchor);
- }
- $w->Callback(-command => $anchor);
-}
-
-sub KeyboardBrowse
-{
- my $w = shift;
-
- my $anchor = $w->info('anchor');
-
- return unless defined $anchor;
-
- if($w->cget('-selectmode'))
- {
- $w->selection('clear');
- $w->selection('set', $anchor);
- }
- $w->Callback(-browsecmd =>$anchor);
-}
-
-sub AutoScan
-{
- my $w = shift;
-
- return if($w->cget('-selectmode') eq 'dragdrop');
-
- my $Ev = $w->XEvent;
- my $y = $Ev->y;
- my $x = $Ev->x;
-
- if($y >= $w->height)
- {
- $w->yview('scroll', 1, 'units');
- }
- elsif($y < 0)
- {
- $w->yview('scroll', -1, 'units');
- }
- elsif($x >= $w->width)
- {
- $w->xview('scroll', 2, 'units');
- }
- elsif($x < 0)
- {
- $w->xview('scroll', -2, 'units');
- }
- else
- {
- return;
- }
- $w->RepeatId($w->after(50,[AutoScan => $w]));
- $w->Button1Motion;
-}
-
-1;
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Table.pm b/Master/tlpkg/tlperl/lib/Tk/Table.pm
deleted file mode 100644
index 8fa9e5af4a9..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Table.pm
+++ /dev/null
@@ -1,598 +0,0 @@
-# Copyright (c) 1995-2003 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-package Tk::Table;
-use strict;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #12 $ =~ /\D(\d+)\s*$/;
-
-use Tk::Pretty;
-use AutoLoader;
-use base qw(Tk::Frame);
-
-Construct Tk::Widget 'Table';
-
-# Constants for QueueLayout flags
-sub _SlaveSize () { 1 } # Slave has asked for change of width or height
-sub _SlaveChange () { 2 } # We lost or gained a slave
-sub _ViewChange () { 4 } # xview or yview called
-sub _ConfigEvent () { 8 } # Table has changed size
-sub _ScrollBars () { 32 } # Scrollabrs came or went
-sub _RowColCount () { 16 } # rows or columns configured
-
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $mw->bind($class,'<Configure>',['QueueLayout',_ConfigEvent]);
- $mw->bind($class,'<FocusIn>', 'NoOp');
- $mw->XYscrollBind($class);
- return $class;
-}
-
-sub _view
-{
- my ($t,$s,$page,$a,$op,$num,$type) = @_;
- if ($op eq 'moveto')
- {
- $$s = int(@$a*$num);
- }
- else
- {
- $num *= ($page/2) if ($type eq 'pages');
- $$s += $num;
- }
- $$s = 0 if ($$s < 0);
- $t->QueueLayout(_ViewChange);
-}
-
-sub xview
-{
- my $t = shift;
- $t->_view(\$t->{Left},$t->cget('-columns'),$t->{Width},@_);
-}
-
-sub yview
-{
- my $t = shift;
- $t->_view(\$t->{Top},$t->cget('-rows'),$t->{Height},@_);
-}
-
-sub FocusChildren
-{
- my $t = shift;
- return () if ($t->cget('-takefocus'));
- return $t->SUPER::FocusChildren;
-}
-
-sub Populate
-{
- my ($t,$args) = @_;
- $t->SUPER::Populate($args);
- $t->ConfigSpecs('-scrollbars' => [METHOD => 'scrollbars','Scrollbars','nw'],
- '-takefocus' => [SELF => 'takeFocus','TakeFocus',1],
- '-rows' => [METHOD => 'rows','Rows',10],
- '-fixedrows' => [METHOD => 'fixedRows','FixedRows',0],
- '-columns' => [METHOD => 'columns','Columns',10],
- '-fixedcolumns' => [METHOD => 'fixedColumn','FixedColumns',0],
- '-highlightthickness' => [SELF => 'highlightThickness','HighlightThickness',2]
- );
- $t->_init;
-}
-
-sub sizeN
-{
- my ($n,$a) = @_;
- my $max = 0;
- my $i = 0;
- my $sum = 0;
- while ($i < @$a && $i < $n)
- {
- my $n = $a->[$i++];
- $a->[$i-1] = $n = 0 unless (defined $n);
- $sum += $n;
- }
- $max = $sum if ($sum > $max);
- while ($i < @$a)
- {
- $sum = $sum-$a->[$i-$n]+$a->[$i];
- $max = $sum if ($sum > $max);
- $i++;
- }
- return $max;
-}
-
-sub total
-{
- my ($a) = @_;
- my $total = 0;
- my $x;
- foreach $x (@{$a})
- {
- $total += $x;
- }
- return $total;
-}
-
-sub constrain
-{
- my ($sb,$a,$pixels,$fixed) = @_;
- my $n = $$sb+$fixed;
- my $total = 0;
- my $i;
- $n = @$a if ($n > @$a);
- $n = $fixed if ($n < $fixed);
- for ($i= 0; $i < $fixed; $i++)
- {
- (defined($a->[$i])) && ($total += $a->[$i]);
- }
- for ($i=$n; $total < $pixels && $i < @$a; $i++)
- {
- $a->[$i] ||= 0;
- $total += $a->[$i];
- }
- while ($n > $fixed)
- {
- if (($total += $a->[--$n]) > $pixels)
- {
- $n++;
- last;
- }
- }
- $$sb = $n-$fixed;
-}
-
-sub Layout
-{
- my ($t) = @_;
- return unless Tk::Exists($t);
- my $rows = @{$t->{Row}};
- my $bw = $t->cget(-highlightthickness);
- my $frows = $t->cget(-fixedrows);
- my $fcols = $t->cget(-fixedcolumns);
- my $sb = $t->cget(-scrollbars);
- my $H = $t->Height;
- my $W = $t->Width;
- my $tadj = $bw;
- my $badj = $bw;
- my $ladj = $bw;
- my $radj = $bw;
- my @xs = ($W,0,0,0);
- my @ys = (0,$H,0,0);
- my $xsb;
- my $ysb;
-
- my $why = $t->{LayoutPending};
- $t->{LayoutPending} = 0;
-
- if ($sb =~ /[ns]/)
- {
- $t->{xsb} = $t->Scrollbar(-orient => 'horizontal', -command => ['xview' => $t]) unless (defined $t->{xsb});
- $xsb = $t->{xsb};
- $xs[3] = $xsb->ReqHeight;
- if ($sb =~ /n/)
- {
- $xs[1] = $tadj;
- $tadj += $xs[3];
- }
- else
- {
- $badj += $xs[3];
- $xs[1] = $H-$badj;
- }
- }
- else
- {
- $t->{xsb}->UnmapWindow if (defined $t->{xsb});
- }
-
- if ($sb =~ /[ew]/)
- {
- $t->{ysb} = $t->Scrollbar(-orient => 'vertical', -command => ['yview' => $t]) unless (defined $t->{ysb});
- $ysb = $t->{ysb};
- $ys[2] = $ysb->ReqWidth;
- if ($sb =~ /w/)
- {
- $ys[0] = $ladj;
- $ladj += $ys[2];
- }
- else
- {
- $radj += $ys[2];
- $ys[0] = $W-$radj;
- }
- }
- else
- {
- $t->{ysb}->UnmapWindow if (defined $t->{ysb});
- }
-
- constrain(\$t->{Top}, $t->{Height},$H-($tadj+$badj),$frows);
- constrain(\$t->{Left},$t->{Width}, $W-($ladj+$radj),$fcols);
-
- my $top = $t->{Top}+$frows;
- my $left = $t->{Left}+$fcols;
-
- if ($why & (_ScrollBars|_RowColCount|_SlaveSize))
- {
- # Width and/or Height of element or
- # number of rows and/or columns or
- # scrollbar presence has changed
- my $w = sizeN($t->cget('-columns'),$t->{Width})+$radj+$ladj;
- my $h = sizeN($t->cget('-rows'),$t->{Height})+$tadj+$badj;
- $t->GeometryRequest($w,$h);
- }
-
- if ($rows)
- {
- my $cols = @{$t->{Width}};
- my $yhwm = $top-$frows;
- my $xhwm = $left-$fcols;
- my $y = $tadj;
- my $r;
- for ($r = 0; $r < $rows; $r++)
- {
- my $h = $t->{Height}[$r];
- next unless defined $h;
- if (($r < $top && $r >= $frows) || ($y+$h > $H-$badj))
- {
- if (defined $t->{Row}[$r])
- {
- my $c;
- for ($c = 0; $c < @{$t->{Row}[$r]}; $c++)
- {
- my $s = $t->{Row}[$r][$c];
- if (defined $s)
- {
- $s->UnmapWindow;
- if ($why & 1)
- {
- my $w = $t->{Width}[$c];
- $s->ResizeWindow($w,$h);
- }
- }
- }
- }
- }
- else
- {
- my $hwm = $left-$fcols;
- my $sh = 0;
- my $x = $ladj;
- my $c;
- $ys[1] = $y if ($y < $ys[1] && $r >= $frows);
- for ($c = 0; $c <$cols; $c++)
- {
- my $s = $t->{Row}[$r][$c];
- my $w = $t->{Width}[$c];
- if (($c < $left && $c >= $fcols) || ($x+$w > $W-$radj) )
- {
- if (defined $s)
- {
- $s->UnmapWindow;
- $s->ResizeWindow($w,$h) if ($why & 1);
- }
- }
- else
- {
- $xs[0] = $x if ($x < $xs[0] && $c >= $fcols);
- if (defined $s)
- {
- if ($why & 1)
- {
- $s->MoveResizeWindow($x,$y,$w,$h);
- }
- else
- {
- $s->MoveWindow($x,$y);
- }
- $s->MapWindow;
- }
- $x += $w;
- if ($c >= $fcols)
- {
- $hwm++;
- $sh += $w
- }
- }
- }
- $xhwm = $hwm if ($hwm > $xhwm);
- $xs[2] = $sh if ($sh > $xs[2]);
- $y += $h;
- if ($r >= $frows)
- {
- $ys[3] += $h;
- $yhwm++;
- }
- }
- }
- $t->{Bottom} = $yhwm;
- $t->{Right} = $xhwm;
- if (defined $xsb && $xs[2] > 0)
- {
- $xsb->MoveResizeWindow(@xs);
- $cols -= $fcols;
- if ($cols > 0)
- {
- $xsb->set($t->{Left}/$cols,$t->{Right}/$cols);
- $xsb->MapWindow;
- }
- }
- if (defined $ysb && $ys[3] > 0)
- {
- $ysb->MoveResizeWindow(@ys);
- $rows -= $frows;
- if ($rows > 0)
- {
- $ysb->set($t->{Top}/$rows,$t->{Bottom}/$rows);
- $ysb->MapWindow;
- }
- }
- }
-}
-
-sub QueueLayout
-{
- my ($m,$why) = @_;
- $m->afterIdle(['Layout',$m]) unless ($m->{LayoutPending});
- $m->{LayoutPending} |= $why;
-}
-
-sub SlaveGeometryRequest
-{
- my ($m,$s) = @_;
- my ($row,$col) = @{$m->{Slave}{$s->PathName}};
- my $sw = $s->ReqWidth;
- my $sh = $s->ReqHeight;
- my $sz = 0;
- if ($sw > $m->{Width}[$col])
- {
- $m->{Width}[$col] = $sw;
- $m->QueueLayout(_SlaveSize);
- $sz++;
- }
- if ( (not defined ($m->{Height}[$row])) or $sh > $m->{Height}[$row])
- {
- $m->{Height}[$row] = $sh;
- $m->QueueLayout(_SlaveSize);
- $sz++;
- }
- if (!$sz)
- {
- $s->ResizeWindow($m->{Width}[$col],$m->{Height}[$row]);
- }
-}
-
-sub get
-{
- my ($t,$row,$col) = @_;
- return $t->{Row}[$row][$col];
-}
-
-sub LostSlave
-{
- my ($t,$s) = @_;
- my $info = delete $t->{Slave}{$s->PathName};
- if (defined $info)
- {
- my ($row,$col) = @$info;
- $t->{Row}[$row][$col] = undef;
- $s->UnmapWindow;
- }
- else
- {
- $t->BackTrace('Cannot find' . $s->PathName);
- }
- $t->QueueLayout(_SlaveChange);
-}
-
-sub clear {
- my $self = shift;
- my $rows = $self->cget(-rows);
- my $cols = $self->cget(-columns);
- foreach my $r (1 .. $rows) {
- foreach my $c (1 .. $cols) {
- my $old = $self->get( $r, $c );
- next unless $old;
- $self->LostSlave($old);
- $old->destroy;
- }
- }
- $self->_init;
- $self->QueueLayout(_SlaveSize);
-}
-
-sub _init {
- my $self = shift;
- $self->{'Width'} = [];
- $self->{'Height'} = [];
- $self->{'Row'} = [];
- $self->{'Slave'} = {};
- $self->{'Top'} = 0;
- $self->{'Left'} = 0;
- $self->{'Bottom'} = 0;
- $self->{'Right'} = 0;
- $self->{LayoutPending} = 0;
-}
-
-sub put
-{
- my ($t,$row,$col,$w) = @_;
- $w = $t->Label(-text => $w) unless (ref $w);
- $t->ManageGeometry($w);
- unless (defined $t->{Row}[$row])
- {
- $t->{Row}[$row] = [];
- $t->{Height}[$row] = 0;
- }
- unless (defined $t->{Width}[$col])
- {
- $t->{Width}[$col] = 0;
- }
- my $old = $t->{Row}[$row][$col];
- if (defined $old)
- {
- $old->UnmanageGeometry;
- $t->LostSlave($old);
- }
- $t->{Row}[$row][$col] = $w;
- $t->{Slave}{$w->PathName} = [$row,$col];
- $t->SlaveGeometryRequest($w);
- $t->QueueLayout(_SlaveChange);
- return $old;
-}
-
-#
-# configure methods
-#
-
-sub scrollbars
-{
- my ($t,$v) = @_;
- if (@_ > 1)
- {
- $t->_configure(-scrollbars => $v);
- $t->QueueLayout(_ScrollBars);
- }
- return $t->_cget('-scrollbars');
-}
-
-sub rows
-{
- my ($t,$r) = @_;
- if (@_ > 1)
- {
- $t->_configure(-rows => $r);
- if ($t->{Row} && @{$t->{Row}} > $r)
- {
- for my $y ($r .. $#{$t->{Row}})
- {
- for my $s (@{$t->{Row}[$y]})
- {
- $s->destroy if $s;
- }
- }
- splice @{ $t->{Row} }, $r;
- }
- $t->QueueLayout(_RowColCount);
- }
- return $t->_cget('-rows');
-}
-
-sub fixedrows
-{
- my ($t,$r) = @_;
- if (@_ > 1)
- {
- $t->_configure(-fixedrows => $r);
- $t->QueueLayout(_RowColCount);
- }
- return $t->_cget('-fixedrows');
-}
-
-sub columns
-{
- my ($t,$r) = @_;
- if (@_ > 1)
- {
- $t->_configure(-columns => $r);
- if ($t->{Row})
- {
- for my $row (@{$t->{Row}})
- {
- for my $s (@$row[$r .. $#$row])
- {
- $s->destroy if $s;
- }
- { # FIXME? - Steve was getting warnings :
- # splice() offset past end of array
- local $^W = 0;
- splice @$row, $r;
- }
- }
- }
- $t->QueueLayout(_RowColCount);
- }
- return $t->_cget('-columns');
-}
-
-sub fixedcolumns
-{
- my ($t,$r) = @_;
- if (@_ > 1)
- {
- $t->_configure(-fixedcolumns => $r);
- $t->QueueLayout(_RowColCount);
- }
- return $t->_cget('-fixedcolumns');
-}
-
-1;
-__END__
-sub Create
-{
- my $t = shift;
- my $r = shift;
- my $c = shift;
- my $kind = shift;
- $t->put($r,$c,$t->$kind(@_));
-}
-
-sub totalColumns
-{
- scalar @{shift->{'Width'}};
-}
-
-sub totalRows
-{
- scalar @{shift->{'Height'}};
-}
-
-sub Posn
-{
- my ($t,$s) = @_;
- my $info = $t->{Slave}{$s->PathName};
- return (wantarray) ? @$info : $info;
-}
-
-sub see
-{
- my $t = shift;
- my ($row,$col) = (@_ == 2) ? @_ : @{$t->{Slave}{$_[0]->PathName}};
- my $see = 1;
- if (($row -= $t->cget('-fixedrows')) >= 0)
- {
- if ($row < $t->{Top})
- {
- $t->{Top} = $row;
- $t->QueueLayout(_ViewChange);
- $see = 0;
- }
- elsif ($row >= $t->{Bottom})
- {
- $t->{Top} += ($row - $t->{Bottom}+1);
- $t->QueueLayout(_ViewChange);
- $see = 0;
- }
- }
- if (($col -= $t->cget('-fixedcolumns')) >= 0)
- {
- if ($col < $t->{Left})
- {
- $t->{Left} = $col;
- $t->QueueLayout(_ViewChange);
- $see = 0;
- }
- elsif ($col >= $t->{Right})
- {
- $t->{Left} += ($col - $t->{Right}+1);
- $t->QueueLayout(_ViewChange);
- $see = 0;
- }
- }
- return $see;
-}
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Text.pm b/Master/tlpkg/tlperl/lib/Tk/Text.pm
deleted file mode 100644
index fe0aa0bf4c1..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Text.pm
+++ /dev/null
@@ -1,1653 +0,0 @@
-# text.tcl --
-#
-# This file defines the default bindings for Tk text widgets.
-#
-# @(#) text.tcl 1.18 94/12/17 16:05:26
-#
-# Copyright (c) 1992-1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-# perl/Tk version:
-# Copyright (c) 1995-2004 Nick Ing-Simmons
-# Copyright (c) 1999 Greg London
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-package Tk::Text;
-use AutoLoader;
-use Carp;
-use strict;
-
-use Text::Tabs;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #24 $ =~ /\D(\d+)\s*$/;
-
-use Tk qw(Ev $XS_VERSION);
-use base qw(Tk::Clipboard Tk::Widget);
-
-Construct Tk::Widget 'Text';
-
-bootstrap Tk::Text;
-
-sub Tk_cmd { \&Tk::text }
-
-sub Tk::Widget::ScrlText { shift->Scrolled('Text' => @_) }
-
-Tk::Methods('bbox','compare','debug','delete','dlineinfo','dump','edit',
- 'get','image','index','insert','mark','scan','search',
- 'see','tag','window','xview','yview');
-
-use Tk::Submethods ( 'mark' => [qw(gravity names next previous set unset)],
- 'scan' => [qw(mark dragto)],
- 'tag' => [qw(add bind cget configure delete lower
- names nextrange prevrange raise ranges remove)],
- 'window' => [qw(cget configure create names)],
- 'image' => [qw(cget configure create names)],
- 'xview' => [qw(moveto scroll)],
- 'yview' => [qw(moveto scroll)],
- 'edit' => [qw(modified redo reset separator undo)],
- );
-
-sub Tag;
-sub Tags;
-
-sub bindRdOnly
-{
-
- my ($class,$mw) = @_;
-
- # Standard Motif bindings:
- $mw->bind($class,'<Meta-B1-Motion>','NoOp');
- $mw->bind($class,'<Meta-1>','NoOp');
- $mw->bind($class,'<Alt-KeyPress>','NoOp');
- $mw->bind($class,'<Escape>','unselectAll');
-
- $mw->bind($class,'<1>',['Button1',Ev('x'),Ev('y')]);
- $mw->bind($class,'<B1-Motion>','B1_Motion' ) ;
- $mw->bind($class,'<B1-Leave>','B1_Leave' ) ;
- $mw->bind($class,'<B1-Enter>','CancelRepeat');
- $mw->bind($class,'<ButtonRelease-1>','CancelRepeat');
- $mw->bind($class,'<Control-1>',['markSet','insert',Ev('@')]);
-
- $mw->bind($class,'<Double-1>','selectWord' ) ;
- $mw->bind($class,'<Triple-1>','selectLine' ) ;
- $mw->bind($class,'<Shift-1>','adjustSelect' ) ;
- $mw->bind($class,'<Double-Shift-1>',['SelectTo',Ev('@'),'word']);
- $mw->bind($class,'<Triple-Shift-1>',['SelectTo',Ev('@'),'line']);
-
- $mw->bind($class,'<Left>',['SetCursor',Ev('index','insert-1c')]);
- $mw->bind($class,'<Shift-Left>',['KeySelect',Ev('index','insert-1c')]);
- $mw->bind($class,'<Control-Left>',['SetCursor',Ev('index','insert-1c wordstart')]);
- $mw->bind($class,'<Shift-Control-Left>',['KeySelect',Ev('index','insert-1c wordstart')]);
-
- $mw->bind($class,'<Right>',['SetCursor',Ev('index','insert+1c')]);
- $mw->bind($class,'<Shift-Right>',['KeySelect',Ev('index','insert+1c')]);
- $mw->bind($class,'<Control-Right>',['SetCursor',Ev('index','insert+1c wordend')]);
- $mw->bind($class,'<Shift-Control-Right>',['KeySelect',Ev('index','insert wordend')]);
-
- $mw->bind($class,'<Up>',['SetCursor',Ev('UpDownLine',-1)]);
- $mw->bind($class,'<Shift-Up>',['KeySelect',Ev('UpDownLine',-1)]);
- $mw->bind($class,'<Control-Up>',['SetCursor',Ev('PrevPara','insert')]);
- $mw->bind($class,'<Shift-Control-Up>',['KeySelect',Ev('PrevPara','insert')]);
-
- $mw->bind($class,'<Down>',['SetCursor',Ev('UpDownLine',1)]);
- $mw->bind($class,'<Shift-Down>',['KeySelect',Ev('UpDownLine',1)]);
- $mw->bind($class,'<Control-Down>',['SetCursor',Ev('NextPara','insert')]);
- $mw->bind($class,'<Shift-Control-Down>',['KeySelect',Ev('NextPara','insert')]);
-
- $mw->bind($class,'<Home>',['SetCursor','insert linestart']);
- $mw->bind($class,'<Shift-Home>',['KeySelect','insert linestart']);
- $mw->bind($class,'<Control-Home>',['SetCursor','1.0']);
- $mw->bind($class,'<Control-Shift-Home>',['KeySelect','1.0']);
-
- $mw->bind($class,'<End>',['SetCursor','insert lineend']);
- $mw->bind($class,'<Shift-End>',['KeySelect','insert lineend']);
- $mw->bind($class,'<Control-End>',['SetCursor','end-1char']);
- $mw->bind($class,'<Control-Shift-End>',['KeySelect','end-1char']);
-
- $mw->bind($class,'<Prior>',['SetCursor',Ev('ScrollPages',-1)]);
- $mw->bind($class,'<Shift-Prior>',['KeySelect',Ev('ScrollPages',-1)]);
- $mw->bind($class,'<Control-Prior>',['xview','scroll',-1,'page']);
-
- $mw->bind($class,'<Next>',['SetCursor',Ev('ScrollPages',1)]);
- $mw->bind($class,'<Shift-Next>',['KeySelect',Ev('ScrollPages',1)]);
- $mw->bind($class,'<Control-Next>',['xview','scroll',1,'page']);
-
- $mw->bind($class,'<Shift-Tab>', 'NoOp'); # Needed only to keep <Tab> binding from triggering; does not have to actually do anything.
- $mw->bind($class,'<Control-Tab>','focusNext');
- $mw->bind($class,'<Control-Shift-Tab>','focusPrev');
-
- $mw->bind($class,'<Control-space>',['markSet','anchor','insert']);
- $mw->bind($class,'<Select>',['markSet','anchor','insert']);
- $mw->bind($class,'<Control-Shift-space>',['SelectTo','insert','char']);
- $mw->bind($class,'<Shift-Select>',['SelectTo','insert','char']);
- $mw->bind($class,'<Control-slash>','selectAll');
- $mw->bind($class,'<Control-backslash>','unselectAll');
-
- if (!$Tk::strictMotif)
- {
- $mw->bind($class,'<Control-a>', ['SetCursor','insert linestart']);
- $mw->bind($class,'<Control-b>', ['SetCursor','insert-1c']);
- $mw->bind($class,'<Control-e>', ['SetCursor','insert lineend']);
- $mw->bind($class,'<Control-f>', ['SetCursor','insert+1c']);
- $mw->bind($class,'<Meta-b>', ['SetCursor','insert-1c wordstart']);
- $mw->bind($class,'<Meta-f>', ['SetCursor','insert wordend']);
- $mw->bind($class,'<Meta-less>', ['SetCursor','1.0']);
- $mw->bind($class,'<Meta-greater>', ['SetCursor','end-1c']);
-
- $mw->bind($class,'<Control-n>', ['SetCursor',Ev('UpDownLine',1)]);
- $mw->bind($class,'<Control-p>', ['SetCursor',Ev('UpDownLine',-1)]);
-
- $mw->bind($class,'<2>',['Button2',Ev('x'),Ev('y')]);
- $mw->bind($class,'<B2-Motion>',['Motion2',Ev('x'),Ev('y')]);
- }
- $mw->bind($class,'<Destroy>','Destroy');
- $mw->bind($class, '<3>', ['PostPopupMenu', Ev('X'), Ev('Y')] );
- $mw->YMouseWheelBind($class);
- $mw->XMouseWheelBind($class);
-
- $mw->MouseWheelBind($class);
-
- return $class;
-}
-
-sub selectAll
-{
- my ($w) = @_;
- $w->tagAdd('sel','1.0','end');
-}
-
-sub unselectAll
-{
- my ($w) = @_;
- $w->tagRemove('sel','1.0','end');
-}
-
-sub adjustSelect
-{
- my ($w) = @_;
- my $Ev = $w->XEvent;
- $w->ResetAnchor($Ev->xy);
- $w->SelectTo($Ev->xy,'char')
-}
-
-sub selectLine
-{
- my ($w) = @_;
- my $Ev = $w->XEvent;
- $w->SelectTo($Ev->xy,'line');
- Tk::catch { $w->markSet('insert','sel.first') };
-}
-
-sub selectWord
-{
- my ($w) = @_;
- my $Ev = $w->XEvent;
- $w->SelectTo($Ev->xy,'word');
- Tk::catch { $w->markSet('insert','sel.first') }
-}
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $class->SUPER::ClassInit($mw);
-
- $class->bindRdOnly($mw);
-
- $mw->bind($class,'<Tab>', 'insertTab');
- $mw->bind($class,'<Control-i>', ['Insert',"\t"]);
- $mw->bind($class,'<Return>', ['Insert',"\n"]);
- $mw->bind($class,'<Delete>','Delete');
- $mw->bind($class,'<BackSpace>','Backspace');
- $mw->bind($class,'<Insert>', \&ToggleInsertMode ) ;
- $mw->bind($class,'<KeyPress>',['InsertKeypress',Ev('A')]);
-
- $mw->bind($class,'<F1>', 'clipboardColumnCopy');
- $mw->bind($class,'<F2>', 'clipboardColumnCut');
- $mw->bind($class,'<F3>', 'clipboardColumnPaste');
-
- # Additional emacs-like bindings:
-
- if (!$Tk::strictMotif)
- {
- $mw->bind($class,'<Control-d>',['delete','insert']);
- $mw->bind($class,'<Control-k>','deleteToEndofLine') ;
- $mw->bind($class,'<Control-o>','openLine');
- $mw->bind($class,'<Control-t>','Transpose');
- $mw->bind($class,'<Meta-d>',['delete','insert','insert wordend']);
- $mw->bind($class,'<Meta-BackSpace>',['delete','insert-1c wordstart','insert']);
-
- # A few additional bindings of my own.
- $mw->bind($class,'<Control-h>','deleteBefore');
- $mw->bind($class,'<ButtonRelease-2>','ButtonRelease2');
- }
-#JD# $Tk::prevPos = undef;
- return $class;
-}
-
-sub insertTab
-{
- my ($w) = @_;
- $w->Insert("\t");
- $w->focus;
- $w->break
-}
-
-sub deleteToEndofLine
-{
- my ($w) = @_;
- if ($w->compare('insert','==','insert lineend'))
- {
- $w->delete('insert')
- }
- else
- {
- $w->delete('insert','insert lineend')
- }
-}
-
-sub openLine
-{
- my ($w) = @_;
- $w->insert('insert',"\n");
- $w->markSet('insert','insert-1c')
-}
-
-sub Button2
-{
- my ($w,$x,$y) = @_;
- $w->scan('mark',$x,$y);
- $Tk::x = $x;
- $Tk::y = $y;
- $Tk::mouseMoved = 0;
-}
-
-sub Motion2
-{
- my ($w,$x,$y) = @_;
- $Tk::mouseMoved = 1 if ($x != $Tk::x || $y != $Tk::y);
- $w->scan('dragto',$x,$y) if ($Tk::mouseMoved);
-}
-
-sub ButtonRelease2
-{
- my ($w) = @_;
- my $Ev = $w->XEvent;
- if (!$Tk::mouseMoved)
- {
- Tk::catch { $w->insert($Ev->xy,$w->SelectionGet) }
- }
-}
-
-sub InsertSelection
-{
- my ($w) = @_;
- Tk::catch { $w->Insert($w->SelectionGet) }
-}
-
-sub Backspace
-{
- my ($w) = @_;
- my $sel = Tk::catch { $w->tag('nextrange','sel','1.0','end') };
- if (defined $sel)
- {
- $w->delete('sel.first','sel.last');
- return;
- }
- $w->deleteBefore;
-}
-
-sub deleteBefore
-{
- my ($w) = @_;
- if ($w->compare('insert','!=','1.0'))
- {
- $w->delete('insert-1c');
- $w->see('insert')
- }
-}
-
-sub Delete
-{
- my ($w) = @_;
- my $sel = Tk::catch { $w->tag('nextrange','sel','1.0','end') };
- if (defined $sel)
- {
- $w->delete('sel.first','sel.last')
- }
- else
- {
- $w->delete('insert');
- $w->see('insert')
- }
-}
-
-# Button1 --
-# This procedure is invoked to handle button-1 presses in text
-# widgets. It moves the insertion cursor, sets the selection anchor,
-# and claims the input focus.
-#
-# Arguments:
-# w - The text window in which the button was pressed.
-# x - The x-coordinate of the button press.
-# y - The x-coordinate of the button press.
-sub Button1
-{
- my ($w,$x,$y) = @_;
- $Tk::selectMode = 'char';
- $Tk::mouseMoved = 0;
- $w->SetCursor('@'.$x.','.$y);
- $w->markSet('anchor','insert');
- $w->focus() if ($w->cget('-state') eq 'normal');
-}
-
-sub B1_Motion
-{
- my ($w) = @_;
- return unless defined $Tk::mouseMoved;
- my $Ev = $w->XEvent;
- $Tk::x = $Ev->x;
- $Tk::y = $Ev->y;
- $w->SelectTo($Ev->xy)
-}
-
-sub B1_Leave
-{
- my ($w) = @_;
- my $Ev = $w->XEvent;
- $Tk::x = $Ev->x;
- $Tk::y = $Ev->y;
- $w->AutoScan;
-}
-
-# SelectTo --
-# This procedure is invoked to extend the selection, typically when
-# dragging it with the mouse. Depending on the selection mode (character,
-# word, line) it selects in different-sized units. This procedure
-# ignores mouse motions initially until the mouse has moved from
-# one character to another or until there have been multiple clicks.
-#
-# Arguments:
-# w - The text window in which the button was pressed.
-# index - Index of character at which the mouse button was pressed.
-sub SelectTo
-{
- my ($w, $index, $mode)= @_;
- $Tk::selectMode = $mode if defined ($mode);
- my $cur = $w->index($index);
- my $anchor = Tk::catch { $w->index('anchor') };
- if (!defined $anchor)
- {
- $w->markSet('anchor',$anchor = $cur);
- $Tk::mouseMoved = 0;
- }
- elsif ($w->compare($cur,'!=',$anchor))
- {
- $Tk::mouseMoved = 1;
- }
- $Tk::selectMode = 'char' unless (defined $Tk::selectMode);
- $mode = $Tk::selectMode;
- my ($first,$last);
- if ($mode eq 'char')
- {
- if ($w->compare($cur,'<','anchor'))
- {
- $first = $cur;
- $last = 'anchor';
- }
- else
- {
- $first = 'anchor';
- $last = $cur
- }
- }
- elsif ($mode eq 'word')
- {
- if ($w->compare($cur,'<','anchor'))
- {
- $first = $w->index("$cur wordstart");
- $last = $w->index('anchor - 1c wordend')
- }
- else
- {
- $first = $w->index('anchor wordstart');
- $last = $w->index("$cur wordend")
- }
- }
- elsif ($mode eq 'line')
- {
- if ($w->compare($cur,'<','anchor'))
- {
- $first = $w->index("$cur linestart");
- $last = $w->index('anchor - 1c lineend + 1c')
- }
- else
- {
- $first = $w->index('anchor linestart');
- $last = $w->index("$cur lineend + 1c")
- }
- }
- if ($Tk::mouseMoved || $Tk::selectMode ne 'char')
- {
- $w->tagRemove('sel','1.0',$first);
- $w->tagAdd('sel',$first,$last);
- $w->tagRemove('sel',$last,'end');
- $w->idletasks;
- }
-}
-# AutoScan --
-# This procedure is invoked when the mouse leaves a text window
-# with button 1 down. It scrolls the window up, down, left, or right,
-# depending on where the mouse is (this information was saved in
-# tkPriv(x) and tkPriv(y)), and reschedules itself as an 'after'
-# command so that the window continues to scroll until the mouse
-# moves back into the window or the mouse button is released.
-#
-# Arguments:
-# w - The text window.
-sub AutoScan
-{
- my ($w) = @_;
- if ($Tk::y >= $w->height)
- {
- $w->yview('scroll',2,'units')
- }
- elsif ($Tk::y < 0)
- {
- $w->yview('scroll',-2,'units')
- }
- elsif ($Tk::x >= $w->width)
- {
- $w->xview('scroll',2,'units')
- }
- elsif ($Tk::x < 0)
- {
- $w->xview('scroll',-2,'units')
- }
- else
- {
- return;
- }
- $w->SelectTo('@' . $Tk::x . ','. $Tk::y);
- $w->RepeatId($w->after(50,['AutoScan',$w]));
-}
-# SetCursor
-# Move the insertion cursor to a given position in a text. Also
-# clears the selection, if there is one in the text, and makes sure
-# that the insertion cursor is visible.
-#
-# Arguments:
-# w - The text window.
-# pos - The desired new position for the cursor in the window.
-sub SetCursor
-{
- my ($w,$pos) = @_;
- $pos = 'end - 1 chars' if $w->compare($pos,'==','end');
- $w->markSet('insert',$pos);
- $w->unselectAll;
- $w->see('insert');
-}
-# KeySelect
-# This procedure is invoked when stroking out selections using the
-# keyboard. It moves the cursor to a new position, then extends
-# the selection to that position.
-#
-# Arguments:
-# w - The text window.
-# new - A new position for the insertion cursor (the cursor has not
-# actually been moved to this position yet).
-sub KeySelect
-{
- my ($w,$new) = @_;
- my ($first,$last);
- if (!defined $w->tag('ranges','sel'))
- {
- # No selection yet
- $w->markSet('anchor','insert');
- if ($w->compare($new,'<','insert'))
- {
- $w->tagAdd('sel',$new,'insert')
- }
- else
- {
- $w->tagAdd('sel','insert',$new)
- }
- }
- else
- {
- # Selection exists
- if ($w->compare($new,'<','anchor'))
- {
- $first = $new;
- $last = 'anchor'
- }
- else
- {
- $first = 'anchor';
- $last = $new
- }
- $w->tagRemove('sel','1.0',$first);
- $w->tagAdd('sel',$first,$last);
- $w->tagRemove('sel',$last,'end')
- }
- $w->markSet('insert',$new);
- $w->see('insert');
- $w->idletasks;
-}
-# ResetAnchor --
-# Set the selection anchor to whichever end is farthest from the
-# index argument. One special trick: if the selection has two or
-# fewer characters, just leave the anchor where it is. In this
-# case it does not matter which point gets chosen for the anchor,
-# and for the things like Shift-Left and Shift-Right this produces
-# better behavior when the cursor moves back and forth across the
-# anchor.
-#
-# Arguments:
-# w - The text widget.
-# index - Position at which mouse button was pressed, which determines
-# which end of selection should be used as anchor point.
-sub ResetAnchor
-{
- my ($w,$index) = @_;
- if (!defined $w->tag('ranges','sel'))
- {
- $w->markSet('anchor',$index);
- return;
- }
- my $a = $w->index($index);
- my $b = $w->index('sel.first');
- my $c = $w->index('sel.last');
- if ($w->compare($a,'<',$b))
- {
- $w->markSet('anchor','sel.last');
- return;
- }
- if ($w->compare($a,'>',$c))
- {
- $w->markSet('anchor','sel.first');
- return;
- }
- my ($lineA,$chA) = split(/\./,$a);
- my ($lineB,$chB) = split(/\./,$b);
- my ($lineC,$chC) = split(/\./,$c);
- if ($lineB < $lineC+2)
- {
- my $total = length($w->get($b,$c));
- if ($total <= 2)
- {
- return;
- }
- if (length($w->get($b,$a)) < $total/2)
- {
- $w->markSet('anchor','sel.last')
- }
- else
- {
- $w->markSet('anchor','sel.first')
- }
- return;
- }
- if ($lineA-$lineB < $lineC-$lineA)
- {
- $w->markSet('anchor','sel.last')
- }
- else
- {
- $w->markSet('anchor','sel.first')
- }
-}
-
-########################################################################
-sub markExists
-{
- my ($w, $markname)=@_;
- my $mark_exists=0;
- my @markNames_list = $w->markNames;
- foreach my $mark (@markNames_list)
- { if ($markname eq $mark) {$mark_exists=1;last;} }
- return $mark_exists;
-}
-
-########################################################################
-sub OverstrikeMode
-{
- my ($w,$mode) = @_;
-
- $w->{'OVERSTRIKE_MODE'} =0 unless exists($w->{'OVERSTRIKE_MODE'});
-
- $w->{'OVERSTRIKE_MODE'}=$mode if (@_ > 1);
-
- return $w->{'OVERSTRIKE_MODE'};
-}
-
-########################################################################
-# pressed the <Insert> key, just above 'Del' key.
-# this toggles between insert mode and overstrike mode.
-sub ToggleInsertMode
-{
- my ($w)=@_;
- $w->OverstrikeMode(!$w->OverstrikeMode);
-}
-
-########################################################################
-sub InsertKeypress
-{
- my ($w,$char)=@_;
- return unless length($char);
- if ($w->OverstrikeMode)
- {
- my $current=$w->get('insert');
- $w->delete('insert') unless($current eq "\n");
- }
- $w->Insert($char);
-}
-
-########################################################################
-sub GotoLineNumber
-{
- my ($w,$line_number) = @_;
- $line_number=~ s/^\s+|\s+$//g;
- return if $line_number =~ m/\D/;
- my ($last_line,$junk) = split(/\./, $w->index('end'));
- if ($line_number > $last_line) {$line_number = $last_line; }
- $w->{'LAST_GOTO_LINE'} = $line_number;
- $w->markSet('insert', $line_number.'.0');
- $w->see('insert');
-}
-
-########################################################################
-sub GotoLineNumberPopUp
-{
- my ($w)=@_;
- my $popup = $w->{'GOTO_LINE_NUMBER_POPUP'};
-
- unless (defined($w->{'LAST_GOTO_LINE'}))
- {
- my ($line,$col) = split(/\./, $w->index('insert'));
- $w->{'LAST_GOTO_LINE'} = $line;
- }
-
- ## if anything is selected when bring up the pop-up, put it in entry window.
- my $selected;
- eval { $selected = $w->SelectionGet(-selection => "PRIMARY"); };
- unless ($@)
- {
- if (defined($selected) and length($selected))
- {
- unless ($selected =~ /\D/)
- {
- $w->{'LAST_GOTO_LINE'} = $selected;
- }
- }
- }
- unless (defined($popup))
- {
- require Tk::DialogBox;
- $popup = $w->DialogBox(-buttons => [qw[Ok Cancel]],-title => "Goto Line Number", -popover => $w,
- -command => sub { $w->GotoLineNumber($w->{'LAST_GOTO_LINE'}) if $_[0] eq 'Ok'});
- $w->{'GOTO_LINE_NUMBER_POPUP'}=$popup;
- $popup->resizable('no','no');
- my $frame = $popup->Frame->pack(-fill => 'x');
- $frame->Label(-text=>'Enter line number: ')->pack(-side => 'left');
- my $entry = $frame->Entry(-background=>'white', -width=>25,
- -textvariable => \$w->{'LAST_GOTO_LINE'})->pack(-side =>'left',-fill => 'x');
- $popup->Advertise(entry => $entry);
- }
- $popup->Popup;
- $popup->Subwidget('entry')->focus;
- $popup->Wait;
-}
-
-########################################################################
-
-sub getSelected
-{
- shift->GetTextTaggedWith('sel');
-}
-
-sub deleteSelected
-{
- shift->DeleteTextTaggedWith('sel');
-}
-
-sub GetTextTaggedWith
-{
- my ($w,$tag) = @_;
-
- my @ranges = $w->tagRanges($tag);
- my $range_total = @ranges;
- my $return_text='';
-
- # if nothing selected, then ignore
- if ($range_total == 0) {return $return_text;}
-
- # for every range-pair, get selected text
- while(@ranges)
- {
- my $first = shift(@ranges);
- my $last = shift(@ranges);
- my $text = $w->get($first , $last);
- if(defined($text))
- {$return_text = $return_text . $text;}
- # if there is more tagged text, separate with an end of line character
- if(@ranges)
- {$return_text = $return_text . "\n";}
- }
- return $return_text;
-}
-
-########################################################################
-sub DeleteTextTaggedWith
-{
- my ($w,$tag) = @_;
- my @ranges = $w->tagRanges($tag);
- my $range_total = @ranges;
-
- # if nothing tagged with that tag, then ignore
- if ($range_total == 0) {return;}
-
- # insert marks where selections are located
- # marks will move with text even as text is inserted and deleted
- # in a previous selection.
- for (my $i=0; $i<$range_total; $i++)
- { $w->markSet('mark_tag_'.$i => $ranges[$i]); }
-
- # for every selected mark pair, insert new text and delete old text
- for (my $i=0; $i<$range_total; $i=$i+2)
- {
- my $first = $w->index('mark_tag_'.$i);
- my $last = $w->index('mark_tag_'.($i+1));
-
- my $text = $w->delete($first , $last);
- }
-
- # delete the marks
- for (my $i=0; $i<$range_total; $i++)
- { $w->markUnset('mark_tag_'.$i); }
-}
-
-
-########################################################################
-sub FindAll
-{
- my ($w,$mode, $case, $pattern ) = @_;
- ### 'sel' tags accumulate, need to remove any previous existing
- $w->unselectAll;
-
- my $match_length=0;
- my $start_index;
- my $end_index = '1.0';
-
- while(defined($end_index))
- {
- if ($case eq '-nocase')
- {
- $start_index = $w->search(
- $mode,
- $case,
- -count => \$match_length,
- "--",
- $pattern ,
- $end_index,
- 'end');
- }
- else
- {
- $start_index = $w->search(
- $mode,
- -count => \$match_length,
- "--",
- $pattern ,
- $end_index,
- 'end');
- }
-
- unless(defined($start_index) && $start_index) {last;}
-
- my ($line,$col) = split(/\./, $start_index);
- $col = $col + $match_length;
- $end_index = $line.'.'.$col;
- $w->tagAdd('sel', $start_index, $end_index);
- }
-}
-
-########################################################################
-# get current selected text and search for the next occurrence
-sub FindSelectionNext
-{
- my ($w) = @_;
- my $selected;
- eval {$selected = $w->SelectionGet(-selection => "PRIMARY"); };
- return if($@);
- return unless (defined($selected) and length($selected));
-
- $w->FindNext('-forward', '-exact', '-case', $selected);
-}
-
-########################################################################
-# get current selected text and search for the previous occurrence
-sub FindSelectionPrevious
-{
- my ($w) = @_;
- my $selected;
- eval {$selected = $w->SelectionGet(-selection => "PRIMARY"); };
- return if($@);
- return unless (defined($selected) and length($selected));
-
- $w->FindNext('-backward', '-exact', '-case', $selected);
-}
-
-
-
-########################################################################
-sub FindNext
-{
- my ($w,$direction, $mode, $case, $pattern ) = @_;
-
- ## if searching forward, start search at end of selected block
- ## if backward, start search from start of selected block.
- ## dont want search to find currently selected text.
- ## tag 'sel' may not be defined, use eval loop to trap error
- eval {
- if ($direction eq '-forward')
- {
- $w->markSet('insert', 'sel.last');
- $w->markSet('current', 'sel.last');
- }
- else
- {
- $w->markSet('insert', 'sel.first');
- $w->markSet('current', 'sel.first');
- }
- };
-
- my $saved_index=$w->index('insert');
-
- # remove any previous existing tags
- $w->unselectAll;
-
- my $match_length=0;
- my $start_index;
-
- if ($case eq '-nocase')
- {
- $start_index = $w->search(
- $direction,
- $mode,
- $case,
- -count => \$match_length,
- "--",
- $pattern ,
- 'insert');
- }
- else
- {
- $start_index = $w->search(
- $direction,
- $mode,
- -count => \$match_length,
- "--",
- $pattern ,
- 'insert');
- }
-
- unless(defined($start_index)) { return 0; }
- if(length($start_index) == 0) { return 0; }
-
- my ($line,$col) = split(/\./, $start_index);
- $col = $col + $match_length;
- my $end_index = $line.'.'.$col;
- $w->tagAdd('sel', $start_index, $end_index);
-
- $w->see($start_index);
-
- if ($direction eq '-forward')
- {
- $w->markSet('insert', $end_index);
- $w->markSet('current', $end_index);
- }
- else
- {
- $w->markSet('insert', $start_index);
- $w->markSet('current', $start_index);
- }
-
- my $compared_index = $w->index('insert');
-
- my $ret_val;
- if ($compared_index eq $saved_index)
- {$ret_val=0;}
- else
- {$ret_val=1;}
- return $ret_val;
-}
-
-########################################################################
-sub FindAndReplaceAll
-{
- my ($w,$mode, $case, $find, $replace ) = @_;
- $w->markSet('insert', '1.0');
- $w->unselectAll;
- while($w->FindNext('-forward', $mode, $case, $find))
- {
- $w->ReplaceSelectionsWith($replace);
- }
-}
-
-########################################################################
-sub ReplaceSelectionsWith
-{
- my ($w,$new_text ) = @_;
-
- my @ranges = $w->tagRanges('sel');
- my $range_total = @ranges;
-
- # if nothing selected, then ignore
- if ($range_total == 0) {return};
-
- # insert marks where selections are located
- # marks will move with text even as text is inserted and deleted
- # in a previous selection.
- for (my $i=0; $i<$range_total; $i++)
- {$w->markSet('mark_sel_'.$i => $ranges[$i]); }
-
- # for every selected mark pair, insert new text and delete old text
- my ($first, $last);
- for (my $i=0; $i<$range_total; $i=$i+2)
- {
- $first = $w->index('mark_sel_'.$i);
- $last = $w->index('mark_sel_'.($i+1));
-
- ##########################################################################
- # eventually, want to be able to get selected text,
- # support regular expression matching, determine replace_text
- # $replace_text = $selected_text=~m/$new_text/ (or whatever would work)
- # will have to pass in mode and case flags.
- # this would allow a regular expression search and replace to be performed
- # example, look for "line (\d+):" and replace with "$1 >" or similar
- ##########################################################################
-
- $w->insert($last, $new_text);
- $w->delete($first, $last);
-
- }
- ############################################################
- # set the insert cursor to the end of the last insertion mark
- $w->markSet('insert',$w->index('mark_sel_'.($range_total-1)));
-
- # delete the marks
- for (my $i=0; $i<$range_total; $i++)
- { $w->markUnset('mark_sel_'.$i); }
-}
-########################################################################
-sub FindAndReplacePopUp
-{
- my ($w)=@_;
- $w->findandreplacepopup(0);
-}
-
-########################################################################
-sub FindPopUp
-{
- my ($w)=@_;
- $w->findandreplacepopup(1);
-}
-
-########################################################################
-
-sub findandreplacepopup
-{
- my ($w,$find_only)=@_;
-
- my $pop = $w->Toplevel;
- $pop->transient($w->toplevel);
- if ($find_only)
- { $pop->title("Find"); }
- else
- { $pop->title("Find and/or Replace"); }
- my $frame = $pop->Frame->pack(-anchor=>'nw');
-
- $frame->Label(-text=>"Direction:")
- ->grid(-row=> 1, -column=>1, -padx=> 20, -sticky => 'nw');
- my $direction = '-forward';
- $frame->Radiobutton(
- -variable => \$direction,
- -text => 'forward',-value => '-forward' )
- ->grid(-row=> 2, -column=>1, -padx=> 20, -sticky => 'nw');
- $frame->Radiobutton(
- -variable => \$direction,
- -text => 'backward',-value => '-backward' )
- ->grid(-row=> 3, -column=>1, -padx=> 20, -sticky => 'nw');
-
- $frame->Label(-text=>"Mode:")
- ->grid(-row=> 1, -column=>2, -padx=> 20, -sticky => 'nw');
- my $mode = '-exact';
- $frame->Radiobutton(
- -variable => \$mode, -text => 'exact',-value => '-exact' )
- ->grid(-row=> 2, -column=>2, -padx=> 20, -sticky => 'nw');
- $frame->Radiobutton(
- -variable => \$mode, -text => 'regexp',-value => '-regexp' )
- ->grid(-row=> 3, -column=>2, -padx=> 20, -sticky => 'nw');
-
- $frame->Label(-text=>"Case:")
- ->grid(-row=> 1, -column=>3, -padx=> 20, -sticky => 'nw');
- my $case = '-case';
- $frame->Radiobutton(
- -variable => \$case, -text => 'case',-value => '-case' )
- ->grid(-row=> 2, -column=>3, -padx=> 20, -sticky => 'nw');
- $frame->Radiobutton(
- -variable => \$case, -text => 'nocase',-value => '-nocase' )
- ->grid(-row=> 3, -column=>3, -padx=> 20, -sticky => 'nw');
-
- ######################################################
- my $find_entry = $pop->Entry(-width=>25);
- $find_entry->focus;
-
- my $donext = sub {$w->FindNext ($direction,$mode,$case,$find_entry->get())};
-
- $find_entry -> pack(-anchor=>'nw', '-expand' => 'yes' , -fill => 'x'); # autosizing
-
- ###### if any $w text is selected, put it in the find entry
- ###### could be more than one text block selected, get first selection
- my @ranges = $w->tagRanges('sel');
- if (@ranges)
- {
- my $first = shift(@ranges);
- my $last = shift(@ranges);
-
- # limit to one line
- my ($first_line, $first_col) = split(/\./,$first);
- my ($last_line, $last_col) = split(/\./,$last);
- unless($first_line == $last_line)
- {$last = $first. ' lineend';}
-
- $find_entry->insert('insert', $w->get($first , $last));
- }
- else
- {
- my $selected;
- eval {$selected=$w->SelectionGet(-selection => "PRIMARY"); };
- if($@) {}
- elsif (defined($selected))
- {$find_entry->insert('insert', $selected);}
- }
-
- $find_entry->icursor(0);
-
- my ($replace_entry,$button_replace,$button_replace_all);
- unless ($find_only)
- {
- $replace_entry = $pop->Entry(-width=>25);
-
- $replace_entry -> pack(-anchor=>'nw', '-expand' => 'yes' , -fill => 'x');
- }
-
-
- my $button_find = $pop->Button(-text=>'Find', -command => $donext, -default => 'active')
- -> pack(-side => 'left');
-
- my $button_find_all = $pop->Button(-text=>'Find All',
- -command => sub {$w->FindAll($mode,$case,$find_entry->get());} )
- ->pack(-side => 'left');
-
- unless ($find_only)
- {
- $button_replace = $pop->Button(-text=>'Replace', -default => 'normal',
- -command => sub {$w->ReplaceSelectionsWith($replace_entry->get());} )
- -> pack(-side =>'left');
- $button_replace_all = $pop->Button(-text=>'Replace All',
- -command => sub {$w->FindAndReplaceAll
- ($mode,$case,$find_entry->get(),$replace_entry->get());} )
- ->pack(-side => 'left');
- }
-
-
- my $button_cancel = $pop->Button(-text=>'Cancel',
- -command => sub {$pop->destroy()} )
- ->pack(-side => 'left');
-
- $find_entry->bind("<Return>" => [$button_find, 'invoke']);
- $find_entry->bind("<Escape>" => [$button_cancel, 'invoke']);
-
- $find_entry->bind("<Return>" => [$button_find, 'invoke']);
- $find_entry->bind("<Escape>" => [$button_cancel, 'invoke']);
-
- $pop->resizable('yes','no');
- return $pop;
-}
-
-# paste clipboard into current location
-sub clipboardPaste
-{
- my ($w) = @_;
- local $@;
- Tk::catch { $w->Insert($w->clipboardGet) };
-}
-
-########################################################################
-# Insert --
-# Insert a string into a text at the point of the insertion cursor.
-# If there is a selection in the text, and it covers the point of the
-# insertion cursor, then delete the selection before inserting.
-#
-# Arguments:
-# w - The text window in which to insert the string
-# string - The string to insert (usually just a single character)
-sub Insert
-{
- my ($w,$string) = @_;
- return unless (defined $string && $string ne '');
- #figure out if cursor is inside a selection
- my @ranges = $w->tagRanges('sel');
- if (@ranges)
- {
- while (@ranges)
- {
- my ($first,$last) = splice(@ranges,0,2);
- if ($w->compare($first,'<=','insert') && $w->compare($last,'>=','insert'))
- {
- $w->ReplaceSelectionsWith($string);
- return;
- }
- }
- }
- # paste it at the current cursor location
- $w->insert('insert',$string);
- $w->see('insert');
-}
-
-# UpDownLine --
-# Returns the index of the character one *display* line above or below the
-# insertion cursor. There are two tricky things here. First,
-# we want to maintain the original column across repeated operations,
-# even though some lines that will get passed through do not have
-# enough characters to cover the original column. Second, do not
-# try to scroll past the beginning or end of the text.
-#
-# This may have some weirdness associated with a proportional font. Ie.
-# the insertion cursor will zigzag up or down according to the width of
-# the character at destination.
-#
-# Arguments:
-# w - The text window in which the cursor is to move.
-# n - The number of lines to move: -1 for up one line,
-# +1 for down one line.
-sub UpDownLine
-{
-my ($w,$n) = @_;
-$w->see('insert');
-my $i = $w->index('insert');
-
-my ($line,$char) = split(/\./,$i);
-
-my $testX; #used to check the "new" position
-my $testY; #used to check the "new" position
-
-(my $bx, my $by, my $bw, my $bh) = $w->bbox($i);
-(my $lx, my $ly, my $lw, my $lh) = $w->dlineinfo($i);
-
-if ( ($n == -1) and ($by <= $bh) )
- {
- #On first display line.. so scroll up and recalculate..
- $w->yview('scroll', -1, 'units');
- unless (($w->yview)[0]) {
- #first line of entire text - keep same position.
- return $i;
- }
- ($bx, $by, $bw, $bh) = $w->bbox($i);
- ($lx, $ly, $lw, $lh) = $w->dlineinfo($i);
- }
-elsif ( ($n == 1) and
- ($ly + $lh) > ( $w->height - 2*$w->cget(-bd) - 2*$w->cget(-highlightthickness) ) )
- {
- #On last display line.. so scroll down and recalculate..
- $w->yview('scroll', 1, 'units');
- ($bx, $by, $bw, $bh) = $w->bbox($i);
- ($lx, $ly, $lw, $lh) = $w->dlineinfo($i);
- }
-
-# Calculate the vertical position of the next display line
-my $Yoffset = 0;
-$Yoffset = $by - $ly + 1 if ($n== -1);
-$Yoffset = $ly + $lh + 1 - $by if ($n == 1);
-$Yoffset*=$n;
-$testY = $by + $Yoffset;
-
-# Save the original 'x' position of the insert cursor if:
-# 1. This is the first time through -- or --
-# 2. The insert cursor position has changed from the previous
-# time the up or down key was pressed -- or --
-# 3. The cursor has reached the beginning or end of the widget.
-
-if (not defined $w->{'origx'} or ($w->{'lastindex'} != $i) )
- {
- $w->{'origx'} = $bx;
- }
-
-# Try to keep the same column if possible
-$testX = $w->{'origx'};
-
-# Get the coordinates of the possible new position
-my $testindex = $w->index('@'.$testX.','.$testY );
-$w->see($testindex);
-my ($nx,$ny,$nw,$nh) = $w->bbox($testindex);
-
-# Which side of the character should we position the cursor -
-# mainly for a proportional font
-if ($testX > $nx+$nw/2)
- {
- $testX = $nx+$nw+1;
- }
-
-my $newindex = $w->index('@'.$testX.','.$testY );
-
-if ( $w->compare($newindex,'==','end - 1 char') and ($ny == $ly ) )
- {
- # Then we are trying to the 'end' of the text from
- # the same display line - don't do that
- return $i;
- }
-
-$w->{'lastindex'} = $newindex;
-$w->see($newindex);
-return $newindex;
-}
-
-# PrevPara --
-# Returns the index of the beginning of the paragraph just before a given
-# position in the text (the beginning of a paragraph is the first non-blank
-# character after a blank line).
-#
-# Arguments:
-# w - The text window in which the cursor is to move.
-# pos - Position at which to start search.
-sub PrevPara
-{
- my ($w,$pos) = @_;
- $pos = $w->index("$pos linestart");
- while (1)
- {
- if ($w->get("$pos - 1 line") eq "\n" && $w->get($pos) ne "\n" || $pos eq '1.0' )
- {
- my $string = $w->get($pos,"$pos lineend");
- if ($string =~ /^(\s)+/)
- {
- my $off = length($1);
- $pos = $w->index("$pos + $off chars")
- }
- if ($w->compare($pos,'!=','insert') || $pos eq '1.0')
- {
- return $pos;
- }
- }
- $pos = $w->index("$pos - 1 line")
- }
-}
-# NextPara --
-# Returns the index of the beginning of the paragraph just after a given
-# position in the text (the beginning of a paragraph is the first non-blank
-# character after a blank line).
-#
-# Arguments:
-# w - The text window in which the cursor is to move.
-# start - Position at which to start search.
-sub NextPara
-{
- my ($w,$start) = @_;
- my $pos = $w->index("$start linestart + 1 line");
- while ($w->get($pos) ne "\n")
- {
- if ($w->compare($pos,'==','end'))
- {
- return $w->index('end - 1c');
- }
- $pos = $w->index("$pos + 1 line")
- }
- while ($w->get($pos) eq "\n" )
- {
- $pos = $w->index("$pos + 1 line");
- if ($w->compare($pos,'==','end'))
- {
- return $w->index('end - 1c');
- }
- }
- my $string = $w->get($pos,"$pos lineend");
- if ($string =~ /^(\s+)/)
- {
- my $off = length($1);
- return $w->index("$pos + $off chars");
- }
- return $pos;
-}
-# ScrollPages --
-# This is a utility procedure used in bindings for moving up and down
-# pages and possibly extending the selection along the way. It scrolls
-# the view in the widget by the number of pages, and it returns the
-# index of the character that is at the same position in the new view
-# as the insertion cursor used to be in the old view.
-#
-# Arguments:
-# w - The text window in which the cursor is to move.
-# count - Number of pages forward to scroll; may be negative
-# to scroll backwards.
-sub ScrollPages
-{
- my ($w,$count) = @_;
- my @bbox = $w->bbox('insert');
- $w->yview('scroll',$count,'pages');
- if (!@bbox)
- {
- return $w->index('@' . int($w->height/2) . ',' . 0);
- }
- my $x = int($bbox[0]+$bbox[2]/2);
- my $y = int($bbox[1]+$bbox[3]/2);
- return $w->index('@' . $x . ',' . $y);
-}
-
-sub Contents
-{
- my $w = shift;
- if (@_)
- {
- $w->delete('1.0','end');
- $w->insert('end',shift) while (@_);
- }
- else
- {
- return $w->get('1.0','end');
- }
-}
-
-sub Destroy
-{
- my ($w) = @_;
- delete $w->{_Tags_};
-}
-
-sub Transpose
-{
- my ($w) = @_;
- my $pos = 'insert';
- $pos = $w->index("$pos + 1 char") if ($w->compare($pos,'!=',"$pos lineend"));
- return if ($w->compare("$pos - 1 char",'==','1.0'));
- my $new = $w->get("$pos - 1 char").$w->get("$pos - 2 char");
- $w->delete("$pos - 2 char",$pos);
- $w->insert('insert',$new);
- $w->see('insert');
-}
-
-sub Tag
-{
- my $w = shift;
- my $name = shift;
- Carp::confess('No args') unless (ref $w and defined $name);
- $w->{_Tags_} = {} unless (exists $w->{_Tags_});
- unless (exists $w->{_Tags_}{$name})
- {
- require Tk::Text::Tag;
- $w->{_Tags_}{$name} = 'Tk::Text::Tag'->new($w,$name);
- }
- $w->{_Tags_}{$name}->configure(@_) if (@_);
- return $w->{_Tags_}{$name};
-}
-
-sub Tags
-{
- my ($w,$name) = @_;
- my @result = ();
- foreach $name ($w->tagNames(@_))
- {
- push(@result,$w->Tag($name));
- }
- return @result;
-}
-
-sub TIEHANDLE
-{
- my ($class,$obj) = @_;
- return $obj;
-}
-
-sub PRINT
-{
- my $w = shift;
- # Find out whether 'end' is displayed at the moment
- # Retrieve the position of the bottom of the window as
- # a fraction of the entire contents of the Text widget
- my $yview = ($w->yview)[1];
-
- # If $yview is 1.0 this means that 'end' is visible in the window
- my $update = 0;
- $update = 1 if $yview == 1.0;
-
- # Loop over all input strings
- while (@_)
- {
- $w->insert('end',shift);
- }
- # Move the window to see the end of the text if required
- $w->see('end') if $update;
-}
-
-sub PRINTF
-{
- my $w = shift;
- $w->PRINT(sprintf(shift,@_));
-}
-
-sub WhatLineNumberPopUp
-{
- my ($w)=@_;
- my ($line,$col) = split(/\./,$w->index('insert'));
- $w->messageBox(-type => 'Ok', -title => "What Line Number",
- -message => "The cursor is on line $line (column is $col)");
-}
-
-sub MenuLabels
-{
- return qw[~File ~Edit ~Search ~View];
-}
-
-sub SearchMenuItems
-{
- my ($w) = @_;
- return [
- ['command'=>'~Find', -command => [$w => 'FindPopUp']],
- ['command'=>'Find ~Next', -command => [$w => 'FindSelectionNext']],
- ['command'=>'Find ~Previous', -command => [$w => 'FindSelectionPrevious']],
- ['command'=>'~Replace', -command => [$w => 'FindAndReplacePopUp']]
- ];
-}
-
-sub EditMenuItems
-{
- my ($w) = @_;
- my @items = ();
- foreach my $op ($w->clipEvents)
- {
- push(@items,['command' => "~$op", -command => [ $w => "clipboard$op"]]);
- }
- push(@items,
- '-',
- ['command'=>'Select All', -command => [$w => 'selectAll']],
- ['command'=>'Unselect All', -command => [$w => 'unselectAll']],
- );
- return \@items;
-}
-
-sub ViewMenuItems
-{
- my ($w) = @_;
- my $v;
- tie $v,'Tk::Configure',$w,'-wrap';
- return [
- ['command'=>'Goto ~Line...', -command => [$w => 'GotoLineNumberPopUp']],
- ['command'=>'~Which Line?', -command => [$w => 'WhatLineNumberPopUp']],
- ['cascade'=> 'Wrap', -tearoff => 0, -menuitems => [
- [radiobutton => 'Word', -variable => \$v, -value => 'word'],
- [radiobutton => 'Character', -variable => \$v, -value => 'char'],
- [radiobutton => 'None', -variable => \$v, -value => 'none'],
- ]],
- ];
-}
-
-########################################################################
-sub clipboardColumnCopy
-{
- my ($w) = @_;
- $w->Column_Copy_or_Cut(0);
-}
-
-sub clipboardColumnCut
-{
- my ($w) = @_;
- $w->Column_Copy_or_Cut(1);
-}
-
-########################################################################
-sub Column_Copy_or_Cut
-{
- my ($w, $cut) = @_;
- my @ranges = $w->tagRanges('sel');
- my $range_total = @ranges;
- # this only makes sense if there is one selected block
- unless ($range_total==2)
- {
- $w->bell;
- return;
- }
-
- my $selection_start_index = shift(@ranges);
- my $selection_end_index = shift(@ranges);
-
- my ($start_line, $start_column) = split(/\./, $selection_start_index);
- my ($end_line, $end_column) = split(/\./, $selection_end_index);
-
- # correct indices for tabs
- my $string;
- $string = $w->get($start_line.'.0', $start_line.'.0 lineend');
- $string = substr($string, 0, $start_column);
- $string = expand($string);
- my $tab_start_column = length($string);
-
- $string = $w->get($end_line.'.0', $end_line.'.0 lineend');
- $string = substr($string, 0, $end_column);
- $string = expand($string);
- my $tab_end_column = length($string);
-
- my $length = $tab_end_column - $tab_start_column;
-
- $selection_start_index = $start_line . '.' . $tab_start_column;
- $selection_end_index = $end_line . '.' . $tab_end_column;
-
- # clear the clipboard
- $w->clipboardClear;
- my ($clipstring, $startstring, $endstring);
- my $padded_string = ' 'x$tab_end_column;
- for(my $line = $start_line; $line <= $end_line; $line++)
- {
- $string = $w->get($line.'.0', $line.'.0 lineend');
- $string = expand($string) . $padded_string;
- $clipstring = substr($string, $tab_start_column, $length);
- #$clipstring = unexpand($clipstring);
- $w->clipboardAppend($clipstring."\n");
-
- if ($cut)
- {
- $startstring = substr($string, 0, $tab_start_column);
- $startstring = unexpand($startstring);
- $start_column = length($startstring);
-
- $endstring = substr($string, 0, $tab_end_column );
- $endstring = unexpand($endstring);
- $end_column = length($endstring);
-
- $w->delete($line.'.'.$start_column, $line.'.'.$end_column);
- }
- }
-}
-
-########################################################################
-
-sub clipboardColumnPaste
-{
- my ($w) = @_;
- my @ranges = $w->tagRanges('sel');
- my $range_total = @ranges;
- if ($range_total)
- {
- warn " there cannot be any selections during clipboardColumnPaste. \n";
- $w->bell;
- return;
- }
-
- my $clipboard_text;
- eval
- {
- $clipboard_text = $w->SelectionGet(-selection => "CLIPBOARD");
- };
-
- return unless (defined($clipboard_text));
- return unless (length($clipboard_text));
- my $string;
-
- my $current_index = $w->index('insert');
- my ($current_line, $current_column) = split(/\./,$current_index);
- $string = $w->get($current_line.'.0', $current_line.'.'.$current_column);
- $string = expand($string);
- $current_column = length($string);
-
- my @clipboard_lines = split(/\n/,$clipboard_text);
- my $length;
- my $end_index;
- my ($delete_start_column, $delete_end_column, $insert_column_index);
- foreach my $line (@clipboard_lines)
- {
- if ($w->OverstrikeMode)
- {
- #figure out start and end indexes to delete, compensating for tabs.
- $string = $w->get($current_line.'.0', $current_line.'.0 lineend');
- $string = expand($string);
- $string = substr($string, 0, $current_column);
- $string = unexpand($string);
- $delete_start_column = length($string);
-
- $string = $w->get($current_line.'.0', $current_line.'.0 lineend');
- $string = expand($string);
- $string = substr($string, 0, $current_column + length($line));
- chomp($string); # dont delete a "\n" on end of line.
- $string = unexpand($string);
- $delete_end_column = length($string);
-
-
-
- $w->delete(
- $current_line.'.'.$delete_start_column ,
- $current_line.'.'.$delete_end_column
- );
- }
-
- $string = $w->get($current_line.'.0', $current_line.'.0 lineend');
- $string = expand($string);
- $string = substr($string, 0, $current_column);
- $string = unexpand($string);
- $insert_column_index = length($string);
-
- $w->insert($current_line.'.'.$insert_column_index, unexpand($line));
- $current_line++;
- }
-
-}
-
-# Backward compatibility
-sub GetMenu
-{
- carp((caller(0))[3]." is deprecated") if $^W;
- shift->menu
-}
-
-1;
-__END__
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Text/Tag.pm b/Master/tlpkg/tlperl/lib/Tk/Text/Tag.pm
deleted file mode 100644
index 827278eb88c..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Text/Tag.pm
+++ /dev/null
@@ -1,46 +0,0 @@
-package Tk::Text::Tag;
-require Tk::Text;
-
-use overload '""' => \&name;
-
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/Text/Text/Tag.pm#4 $
-
-sub _apply
-{
- my $self = shift;
- my $meth = shift;
- $self->widget->tag($meth => $self->name,@_);
-}
-
-sub name
-{
- return shift->[0];
-}
-
-sub widget
-{
- return shift->[1];
-}
-
-BEGIN
-{
- my $meth;
- foreach $meth (qw(cget configure bind add))
- {
- *{$meth} = sub { shift->_apply($meth,@_) }
- }
-}
-
-sub new
-{
- my $class = shift;
- my $widget = shift;
- my $name = shift;
- my $obj = bless [$name,$widget],$class;
- $obj->configure(@_) if (@_);
- return $obj;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/TextEdit.pm b/Master/tlpkg/tlperl/lib/Tk/TextEdit.pm
deleted file mode 100644
index e1ff20b6149..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/TextEdit.pm
+++ /dev/null
@@ -1,509 +0,0 @@
-# Copyright (c) 1999 Greg Bartels. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-
-# Special thanks to Nick Ing-Simmons for pushing a lot of
-# my text edit functionality into Text.pm and TextUndo.pm
-# otherwise, this module would have been monstrous.
-
-# Andy Worhal had it wrong, its "fifteen megabytes of fame"
-# -Greg Bartels
-
-package Tk::TextEdit;
-
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/TextEdit.pm#4 $
-
-use Tk qw (Ev);
-use AutoLoader;
-
-use Text::Tabs;
-
-use base qw(Tk::TextUndo);
-
-Construct Tk::Widget 'TextEdit';
-
-#######################################################################
-#######################################################################
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $class->SUPER::ClassInit($mw);
-
- $mw->bind($class,'<F5>', 'IndentSelectedLines');
- $mw->bind($class,'<F6>', 'UnindentSelectedLines');
-
- $mw->bind($class,'<F7>', 'CommentSelectedLines');
- $mw->bind($class,'<F8>', 'UncommentSelectedLines');
-
- return $class;
-}
-
-# 8 horizontal pixels in the "space" character in default font.
-my $tab_multiplier = 8;
-
-sub debug_code_f1
-{
- my $w=shift;
-}
-
-sub debug_code_f2
-{
- my $w=shift;
-}
-
-#######################################################################
-#######################################################################
-sub InitObject
-{
- my ($w) = @_;
- $w->SUPER::InitObject;
-
- $w->{'INDENT_STRING'} = "\t"; # Greg mode=>"\t", Nick mode=>" "
- $w->{'LINE_COMMENT_STRING'} = "#"; # assuming perl comments
-
- my %pair_descriptor_hash =
- (
- 'PARENS' => [ 'multiline', '(', ')', "[()]" ],
- 'CURLIES' => [ 'multiline', '{', '}', "[{}]" ],
- 'BRACES' => [ 'multiline', '[', ']', "[][]" ],
- 'DOUBLEQUOTE' => [ 'singleline', "\"","\"" ],
- 'SINGLEQUOTE' => [ 'singleline', "'","'" ],
- );
-
- $w->{'HIGHLIGHT_PAIR_DESCRIPTOR_HASH_REF'}=\%pair_descriptor_hash;
-
- $w->tagConfigure
- ('CURSOR_HIGHLIGHT_PARENS', -foreground=>'white', -background=>'violet');
- $w->tagConfigure
- ('CURSOR_HIGHLIGHT_CURLIES', -foreground=>'white', -background=>'blue');
- $w->tagConfigure
- ('CURSOR_HIGHLIGHT_BRACES', -foreground=>'white', -background=>'purple');
- $w->tagConfigure
- ('CURSOR_HIGHLIGHT_DOUBLEQUOTE', -foreground=>'black', -background=>'green');
- $w->tagConfigure
- ('CURSOR_HIGHLIGHT_SINGLEQUOTE', -foreground=>'black', -background=>'grey');
-
- $w->tagConfigure('BLOCK_HIGHLIGHT_PARENS', -background=>'red');
- $w->tagConfigure('BLOCK_HIGHLIGHT_CURLIES', -background=>'orange');
- $w->tagConfigure('BLOCK_HIGHLIGHT_BRACES', -background=>'red');
- $w->tagConfigure('BLOCK_HIGHLIGHT_DOUBLEQUOTE', -background=>'red');
- $w->tagConfigure('BLOCK_HIGHLIGHT_SINGLEQUOTE', -background=>'red');
-
- $w->tagRaise('BLOCK_HIGHLIGHT_PARENS','CURSOR_HIGHLIGHT_PARENS');
- $w->tagRaise('BLOCK_HIGHLIGHT_CURLIES','CURSOR_HIGHLIGHT_CURLIES');
- $w->tagRaise('BLOCK_HIGHLIGHT_BRACES','CURSOR_HIGHLIGHT_BRACES');
- $w->tagRaise('BLOCK_HIGHLIGHT_DOUBLEQUOTE','CURSOR_HIGHLIGHT_DOUBLEQUOTE');
- $w->tagRaise('BLOCK_HIGHLIGHT_SINGLEQUOTE','CURSOR_HIGHLIGHT_SINGLEQUOTE');
-
- $w->{'UPDATE_WIDGET_PERIOD'}=300; # how much time between each call.
- $w->{'WINDOW_PLUS_AND_MINUS_VALUE'}=80;
- $w->SetGUICallbackIndex(0);
- $w->schedule_next_callback;
-
-}
-
-#######################################################################
-
-sub cancel_current_gui_callback_and_restart_from_beginning
-{
- my ($w)=@_;
- if(defined($w->{'UPDATE_WIDGET_AFTER_REFERENCE'}))
- {$w->{'UPDATE_WIDGET_AFTER_REFERENCE'}->cancel();}
- $w->SetGUICallbackIndex(0);
-
- $w->schedule_next_callback;
-}
-
-sub schedule_next_callback
-{
- my ($w)=@_;
- return if $w->NoMoreGUICallbacksToCall; #stops infinite recursive call.
- $w->{'UPDATE_WIDGET_AFTER_REFERENCE'} = $w->after
- ($w->{'UPDATE_WIDGET_PERIOD'},
- sub
- {
- $w->CallNextGUICallback;
- $w->schedule_next_callback;
- }
- );
-
-}
-
-
-#######################################################################
-# use these methods to pass the TextEdit widget an anonymous array
-# of code references.
-# any time the widget changes that requires the display to be updated,
-# then these code references will be scheduled in sequence for calling.
-# splitting them up allows them to be prioritized by order,
-# and prevents the widget from "freezing" too long if they were
-# one large callback. scheduling them apart allows the widget time
-# to respond to user inputs.
-#######################################################################
-sub SetGUICallbacks
-{
- my ($w,$callback_array_ref) = @_;
- $w->{GUI_CALLBACK_ARRAY_REF}=$callback_array_ref;
- $w->SetGUICallbackIndex(0);
-}
-
-sub GetGUICallbacks
-{
- return shift->{GUI_CALLBACK_ARRAY_REF};
-}
-
-sub SetGUICallbackIndex
-{
- my ($w, $val)=@_;
- $w->{GUI_CALLBACK_ARRAY_INDEX}=$val;
-}
-
-sub GetGUICallbackIndex
-{
- return shift->{GUI_CALLBACK_ARRAY_INDEX};
-}
-
-sub IncrementGUICallbackIndex
-{
- shift->{GUI_CALLBACK_ARRAY_INDEX} += 1;
-}
-
-sub NoMoreGUICallbacksToCall
-{
- my ($w) = @_;
- return 0 unless defined ($w->{GUI_CALLBACK_ARRAY_REF});
- return 0 unless defined ($w->{GUI_CALLBACK_ARRAY_INDEX});
- my $arr_ref = $w->{GUI_CALLBACK_ARRAY_REF};
- my $arr_ind = $w->{GUI_CALLBACK_ARRAY_INDEX};
- return $arr_ind >= @$arr_ref;
-}
-
-sub CallNextGUICallback
-{
- my ($w) = @_;
- return if $w->NoMoreGUICallbacksToCall;
- my $arr_ref = $w->{GUI_CALLBACK_ARRAY_REF};
- my $arr_ind = $w->{GUI_CALLBACK_ARRAY_INDEX};
- &{$arr_ref->[$arr_ind]};
- $w->IncrementGUICallbackIndex;
-}
-
-
-#######################################################################
-#######################################################################
-
-sub insert
-{
- my $w = shift;
- $w->SUPER::insert(@_);
- $w->cancel_current_gui_callback_and_restart_from_beginning;
-}
-
-sub delete
-{
- my $w = shift;
- $w->SUPER::delete(@_);
- $w->cancel_current_gui_callback_and_restart_from_beginning;
-}
-
-sub SetCursor
-{
- my $w = shift;
- $w->SUPER::SetCursor(@_);
- $w->cancel_current_gui_callback_and_restart_from_beginning;
-}
-
-sub OverstrikeMode
-{
- my ($w,$mode) = @_;
- if (defined($mode))
- {
- $w->SUPER::OverstrikeMode($mode);
- $w->cancel_current_gui_callback_and_restart_from_beginning;
- }
- return $w->SUPER::OverstrikeMode;
-}
-
-
-#######################################################################
-# use yview on scrollbar to get fractional coordinates.
-# scale this by the total length of the text to find the
-# approximate start line of widget and end line of widget.
-#######################################################################
-sub GetScreenWindowCoordinates
-{
- my $w = shift;
- my ($top_frac, $bot_frac) = $w->yview;
- my $end_index = $w->index('end');
- my ($lines,$columns) = split (/\./,$end_index);
- my $window = $w->{'WINDOW_PLUS_AND_MINUS_VALUE'};
- my $top_line = int(($top_frac * $lines) - $window);
- $top_line = 0 if ($top_line < 0);
- my $bot_line = int(($bot_frac * $lines) + $window);
- $bot_line = $lines if ($bot_line > $lines);
- my $top_index = $top_line . '.0';
- my $bot_index = $bot_line . '.0';
-
- $_[0] = $top_index;
- $_[1] = $bot_index;
-}
-
-########################################################################
-# take two indices as inputs.
-# if they are on the same line or same column (accounting for tabs)
-# then return 1
-# else return 0
-# (assume indices passed in are in line.column format)
-########################################################################
-sub IndicesLookGood
-{
- my ($w, $start, $end, $singleline) = @_;
-
- return 0 unless ( (defined($start)) and (defined($end)));
-
- my ($start_line, $start_column) = split (/\./,$start);
- my ($end_line, $end_column) = split (/\./,$end);
-
- ##########################
- # good if on the same line
- ##########################
- return 1 if ($start_line == $end_line);
-
- ##########################
- # if not on same line and its a singleline, its bad
- ##########################
- return 0 if $singleline;
-
-
- # get both lines, convert the tabs to spaces, and get the new column.
- # see if they line up or not.
- my $string;
- $string = $w->get($start_line.'.0', $start_line.'.0 lineend');
- $string = substr($string, 0, $start_column+1);
- $string = expand($string);
- $start_column = length($string);
-
- $string = $w->get($end_line.'.0', $end_line.'.0 lineend');
- $string = substr($string, 0, $end_column +1);
- $string = expand($string);
- $end_column = length($string);
-
- ##########################
- # good if on the same column (adjusting for tabs)
- ##########################
- return 1 if ($start_column == $end_column);
-
- # otherwise its bad
- return 0;
-}
-
-########################################################################
-# if searching backward, count paranthesis until find a start parenthesis
-# which does not have a forward match.
-#
-# (<= search backward will return this index
-# ()
-# START X HERE
-# ( ( ) () )
-# )<== search forward will return this index
-#
-# if searching forward, count paranthesis until find a end parenthesis
-# which does not have a rearward match.
-########################################################################
-sub searchForBaseCharacterInPair
-{
- my
- (
- $w, $top_index, $searchfromindex, $bot_index,
- $direction, $startchar, $endchar, $charpair
- )=@_;
- my ($plus_one_char, $search_end_index, $index_offset, $done_index);
- if ($direction eq '-forward')
- {
- $plus_one_char = $endchar;
- $search_end_index = $bot_index;
- $index_offset = ' +1c';
- $done_index = $w->index('end');
- }
- else
- {
- $plus_one_char = $startchar;
- $search_end_index = $top_index;
- $index_offset = '';
- $done_index = '1.0';
- }
-
- my $at_done_index = 0;
- my $count = 0;
- my $char;
- while(1)
- {
- $searchfromindex = $w->search
- ($direction, '-regexp', $charpair, $searchfromindex, $search_end_index );
-
- last unless(defined($searchfromindex));
- $char = $w->get($searchfromindex, $w->index($searchfromindex.' +1c'));
- if ($char eq $plus_one_char)
- {$count += 1;}
- else
- {$count -= 1;}
- last if ($count==1);
- # boundary condition exists when first char in widget is the match char
- # need to be able to determine if search tried to go past index '1.0'
- # if so, set index to undef and return.
- if ( $at_done_index )
- {
- $searchfromindex = undef;
- last;
- }
- $at_done_index = 1 if ($searchfromindex eq $done_index);
- $searchfromindex=$w->index($searchfromindex . $index_offset);
- }
- return $searchfromindex;
-}
-
-########################################################################
-# highlight a character pair that most closely brackets the cursor.
-# allows you to pick and choose which ones you want to do.
-########################################################################
-
-sub HighlightParenthesisAroundCursor
-{
- my ($w)=@_;
- $w->HighlightSinglePairBracketingCursor
- ( '(', ')', '[()]', 'CURSOR_HIGHLIGHT_PARENS','BLOCK_HIGHLIGHT_PARENS',0);
-}
-
-sub HighlightCurlyBracesAroundCursor
-{
- my ($w)=@_;
- $w->HighlightSinglePairBracketingCursor
- ( '{', '}', '[{}]', 'CURSOR_HIGHLIGHT_CURLIES','BLOCK_HIGHLIGHT_CURLIES',0);
-}
-
-sub HighlightBracesAroundCursor
-{
- my ($w)=@_;
- $w->HighlightSinglePairBracketingCursor
- ( '[', ']','[][]', 'CURSOR_HIGHLIGHT_BRACES','BLOCK_HIGHLIGHT_BRACES',0);
-}
-
-sub HighlightDoubleQuotesAroundCursor
-{
- my ($w)=@_;
- $w->HighlightSinglePairBracketingCursor
- ( "\"", "\"", "\"", 'CURSOR_HIGHLIGHT_DOUBLEQUOTE','BLOCK_HIGHLIGHT_DOUBLEQUOTE',1);
-}
-
-sub HighlightSingleQuotesAroundCursor
-{
- my ($w)=@_;
- $w->HighlightSinglePairBracketingCursor
- ( "'", "'", "'", 'CURSOR_HIGHLIGHT_SINGLEQUOTE','BLOCK_HIGHLIGHT_SINGLEQUOTE',1);
-}
-
-########################################################################
-# highlight all the character pairs that most closely bracket the cursor.
-########################################################################
-sub HighlightAllPairsBracketingCursor
-{
- my ($w)=@_;
- $w->HighlightParenthesisAroundCursor;
- $w->HighlightCurlyBracesAroundCursor;
- $w->HighlightBracesAroundCursor;
- $w->HighlightDoubleQuotesAroundCursor;
- $w->HighlightSingleQuotesAroundCursor;
-}
-
-########################################################################
-# search for a pair of matching characters that bracket the
-# cursor and tag them with the given tagname.
-# startchar might be '['
-# endchar would then be ']'
-# tagname is a name of a tag, which has already been
-# configured to highlight however the user wants them to behave.
-# error tagname is the tag to highlight the chars with if there
-# is a problem of some kind.
-# singleline indicates whether the character pairs must occur
-# on a single line. quotation marks are single line characters usually.
-########################################################################
-sub HighlightSinglePairBracketingCursor
-{
- my
- (
- $w, $startchar, $endchar, $charpair,
- $good_tagname, $bad_tagname, $single_line
- ) = @_;
- $single_line=0 unless defined($single_line);
- $w->tagRemove($good_tagname, '1.0','end');
- $w->tagRemove($bad_tagname, '1.0','end');
- my $top_index; my $bot_index;
- my $cursor = $w->index('insert');
- if ($single_line)
- {
- $top_index = $w->index($cursor.' linestart');
- $bot_index = $w->index($cursor.' lineend');
- }
- else
- {
- $w->GetScreenWindowCoordinates($top_index, $bot_index);
- }
-
- # search backward for the startchar
- # $top_index, $searchfromindex, $bot_index,
- # $direction, $startchar, $endchar, $charpair
-
- my $startindex = $w->searchForBaseCharacterInPair
- (
- $top_index, $cursor, $bot_index,
- '-backward', $startchar, $endchar, $charpair
- );
-
- # search forward for the endchar
- my $endindex = $w->searchForBaseCharacterInPair
- (
- $top_index, $cursor, $bot_index,
- '-forward', $startchar, $endchar, $charpair
- );
- return unless ((defined $startindex) and (defined $endindex));
-
- my $final_tag = $bad_tagname;
- if ($w->IndicesLookGood( $startindex, $endindex, $single_line))
- {
- $final_tag = $good_tagname;
- }
-
- $w->tagAdd($final_tag, $startindex, $w->index($startindex.'+1c') );
- $w->tagAdd($final_tag, $endindex, $w->index( $endindex.'+1c') );
-}
-
-####################################################################
-sub IndentSelectedLines
-{
- my($w)=@_;
- $w->insertStringAtStartOfSelectedLines($w->{'INDENT_STRING'});
-}
-
-sub UnindentSelectedLines
-{
- my($w)=@_;
- $w->deleteStringAtStartOfSelectedLines($w->{'INDENT_STRING'});
-}
-
-sub CommentSelectedLines
-{
- my($w)=@_;
- $w->insertStringAtStartOfSelectedLines($w->{'LINE_COMMENT_STRING'});
-}
-
-sub UncommentSelectedLines
-{
- my($w)=@_;
- $w->deleteStringAtStartOfSelectedLines($w->{'LINE_COMMENT_STRING'});
-}
-
-
-1;
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Tk/TextList.pm b/Master/tlpkg/tlperl/lib/Tk/TextList.pm
deleted file mode 100644
index 77a48fdf8ce..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/TextList.pm
+++ /dev/null
@@ -1,985 +0,0 @@
-# Copyright (c) 1999 Greg London. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-
-# code for bindings taken from Listbox.pm
-
-# comments specifying method functionality taken from
-# "Perl/Tk Pocket Reference" by Stephen Lidie.
-
-#######################################################################
-# this module uses a text module as its base class to create a list box.
-# this will allow list box functionality to also have all the functionality
-# of the Text widget.
-#
-# note that most methods use an element number to indicate which
-# element in the list to work on.
-# the exception to this is the tag and mark methods which
-# are dual natured. These methods may accept either the
-# normal element number, or they will also take a element.char index,
-# which would be useful for applying tags to part of a line in the list.
-#
-#######################################################################
-
-package Tk::TextList;
-
-use strict;
-use vars qw($VERSION);
-$VERSION = '4.005'; # $Id: //depot/Tkutf8/TextList/TextList.pm#5 $
-
-#XXXdel: use Tk::Reindex qw(Tk::ROText); #XXXdel: ReindexedROText);
-
-use base qw(Tk::Derived Tk::ReindexedROText );
-
-use Tk qw (Ev);
-
-#XXX del: use base qw(Tk::ReindexedROText);
-
-Construct Tk::Widget 'TextList';
-
-#######################################################################
-# the following line causes Populate to get called
-# @ISA = qw(Tk::Derived ... );
-#######################################################################
-sub Populate
-{
- my ($w,$args)=@_;
- my $option=delete $args->{'-selectmode'};
- $w->SUPER::Populate($args);
- $w->ConfigSpecs( -selectmode => ['PASSIVE','selectMode','SelectMode','browse'],
- -takefocus => ['PASSIVE','takeFocus','TakeFocus',1],
- -spacing3 => ['SELF', undef, undef, 3],
- -insertwidth => ['SELF', undef, undef, 0],
- );
-
-}
-
-#######################################################################
-#######################################################################
-sub ClassInit
-{
- my ($class,$mw) = @_;
-
- # Standard Motif bindings:
- $mw->bind($class,'<1>',['BeginSelect',Ev('index',Ev('@'))]);
- $mw->bind($class,'<B1-Motion>',['Motion',Ev('index',Ev('@'))]);
- $mw->bind($class,'<ButtonRelease-1>','ButtonRelease_1');
-
- $mw->bind($class,'<Shift-1>',['BeginExtend',Ev('index',Ev('@'))]);
- $mw->bind($class,'<Control-1>',['BeginToggle',Ev('index',Ev('@'))]);
-
- $mw->bind($class,'<B1-Leave>',['AutoScan',Ev('x'),Ev('y')]);
- $mw->bind($class,'<B1-Enter>','CancelRepeat');
- $mw->bind($class,'<Up>',['UpDown',-1]);
- $mw->bind($class,'<Shift-Up>',['ExtendUpDown',-1]);
- $mw->bind($class,'<Down>',['UpDown',1]);
- $mw->bind($class,'<Shift-Down>',['ExtendUpDown',1]);
-
- $mw->XscrollBind($class);
- $mw->PriorNextBind($class);
-
- $mw->bind($class,'<Control-Home>','Cntrl_Home');
-
- $mw->bind($class,'<Shift-Control-Home>',['DataExtend',0]);
- $mw->bind($class,'<Control-End>','Cntrl_End');
-
- $mw->bind($class,'<Shift-Control-End>',['DataExtend','end']);
- $class->clipboardOperations($mw,'Copy');
- $mw->bind($class,'<space>',['BeginSelect',Ev('index','active')]);
- $mw->bind($class,'<Select>',['BeginSelect',Ev('index','active')]);
- $mw->bind($class,'<Control-Shift-space>',['BeginExtend',Ev('index','active')]);
- $mw->bind($class,'<Shift-Select>',['BeginExtend',Ev('index','active')]);
- $mw->bind($class,'<Escape>','Cancel');
- $mw->bind($class,'<Control-slash>','SelectAll');
- $mw->bind($class,'<Control-backslash>','Cntrl_backslash');
- ;
- # Additional Tk bindings that aren't part of the Motif look and feel:
- $mw->bind($class,'<2>',['scan','mark',Ev('x'),Ev('y')]);
- $mw->bind($class,'<B2-Motion>',['scan','dragto',Ev('x'),Ev('y')]);
-
- $mw->bind($class,'<FocusIn>' , ['tagConfigure','_ACTIVE_TAG', -underline=>1]);
- $mw->bind($class,'<FocusOut>', ['tagConfigure','_ACTIVE_TAG', -underline=>0]);
-
- return $class;
-}
-
-#######################################################################
-# set the active element to index
-# "active" is a text "mark" which underlines the marked text.
-#######################################################################
-sub activate
-{
- my($w,$element)=@_;
- $element= $w->index($element).'.0';
- $w->SUPER::tag('remove', '_ACTIVE_TAG', '1.0','end');
- $w->SUPER::tag('add', '_ACTIVE_TAG',
- $element.' linestart', $element.' lineend');
- $w->SUPER::mark('set', 'active', $element);
-}
-
-
-#######################################################################
-# bbox returns a list (x,y,width,height) giving an approximate
-# bounding box of character given by index
-#######################################################################
-sub bbox
-{
- my($w,$element)=@_;
- $element=$w->index($element).'.0' unless ($element=~/./);
- return $w->SUPER::bbox($element);
-}
-
-#######################################################################
-# returns a list of indices of all elements currently selected
-#######################################################################
-sub curselection
-{
- my ($w)=@_;
- my @ranges = $w->SUPER::tag('ranges', 'sel');
- my @selection_list;
- while (@ranges)
- {
- my ($first,$firstcol) = split(/\./,shift(@ranges));
- my ($last,$lastcol) = split(/\./,shift(@ranges));
-
- #########################################################################
- # if previous selection ended on the same line that this selection starts,
- # then fiddle the numbers so that this line number isnt included twice.
- #########################################################################
- if (defined($selection_list[-1]) and ($first == $selection_list[-1]))
- {
- $first++; # count this selection starting from the next line.
- }
-
- if ($lastcol==0)
- {
- $last-=1;
- }
-
- #########################################################################
- # if incrementing $first causes it to be greater than $last,
- # then do nothing,
- # else add (first .. last) to list
- #########################################################################
- unless ($first>$last)
- {
- push(@selection_list, $first .. $last);
- }
- }
- return @selection_list;
-}
-
-
-#######################################################################
-# deletes range of elements from element1 to element2
-# defaults to element1
-#######################################################################
-sub delete
-{
- my ($w, $element1, $element2)=@_;
- $element1=$w->index($element1);
- $element2=$element1 unless(defined($element2));
- $element2=$w->index($element2);
- $w->SUPER::delete($element1.'.0' , $element2.'.0 lineend');
-}
-
-#######################################################################
-# deletes range of characters from index1 to index2
-# defaults to index1+1c
-# index is line.char notation.
-#######################################################################
-sub deleteChar
-{
- my ($w, $index1, $index2)=@_;
- $index1=$w->index($index1);
- $index2=$index1.' +1c' unless(defined($index2));
- $index2=$w->index($index2);
- $w->SUPER::delete($index1, $index2);
-}
-
-#######################################################################
-# returns as a list contents of elements from $element1 to $element2
-# defaults to element1.
-#######################################################################
-sub get
-{
- my ($w, $element1, $element2)=@_;
- $element1=$w->index($element1);
- $element2=$element1 unless(defined($element2));
- $element2=$w->index($element2);
- my @getlist;
- for(my $i=$element1; $i<=$element2; $i++)
- {
- push(@getlist, $w->SUPER::get($i.'.0 linestart', $i.'.0 lineend'));
- }
-
- return @getlist;
-}
-
-#######################################################################
-# return text between index1 and index2 which are line.char notation.
-# return value is a single string. index2 defaults to index1+1c
-# index is line.char notation.
-######################################################################
-sub getChar
-{
- my $w=shift;
- return $w->SUPER::get(@_);
-}
-
-#######################################################################
-# returns index in number notation
-# this method returns an element number, ie the 5th element.
-#######################################################################
-sub index
-{
- my ($w,$element)=@_;
- return undef unless(defined($element));
- $element .= '.0' unless $element=~/\D/;
- $element = $w->SUPER::index($element);
- my($line,$col)=split(/\./,$element);
- return $line;
-}
-
-#######################################################################
-# returns index in line.char notation
-# this method returns an index specific to a character within an element
-#######################################################################
-sub indexChar
-{
- my $w=shift;
- return $w->SUPER::index(@_);
-}
-
-
-#######################################################################
-# inserts specified elements just before element at index
-#######################################################################
-sub insert
-{
- my $w=shift;
- my $element=shift;
- $element=$w->index($element);
- my $item;
- while (@_)
- {
- $item = shift(@_);
- $item .= "\n";
- $w->SUPER::insert($element++.'.0', $item);
- }
-}
-
-#######################################################################
-# inserts string just before character at index.
-# index is line.char notation.
-#######################################################################
-sub insertChar
-{
- my $w=shift;
- $w->SUPER::insert(@_);
-}
-
-
-
-#######################################################################
-# returns index of element nearest to y-coordinate
-#
-# currently not defined
-#######################################################################
-#sub nearest
-#{
-# return undef;
-#}
-
-#######################################################################
-# Sets the selection anchor to element at index
-#######################################################################
-sub selectionAnchor
-{
- my ($w, $element)=@_;
- $element=$w->index($element);
- $w->SUPER::mark('set', 'anchor', $element.'.0');
-}
-
-#######################################################################
-# deselects elements between index1 and index2, inclusive
-#######################################################################
-sub selectionClear
-{
- my ($w, $element1, $element2)=@_;
- $element1=$w->index($element1);
- $element2=$element1 unless(defined($element2));
- $element2=$w->index($element2);
- $w->SUPER::tag('remove', 'sel', $element1.'.0', $element2.'.0 lineend +1c');
-}
-
-#######################################################################
-# returns 1 if element at index is selected, 0 otherwise.
-#######################################################################
-sub selectionIncludes
-{
- my ($w, $element)=@_;
- $element=$w->index($element);
- my @list = $w->curselection;
- my $line;
- foreach $line (@list)
- {
- if ($line == $element) {return 1;}
- }
- return 0;
-}
-
-#######################################################################
-# adds all elements between element1 and element2 inclusive to selection
-#######################################################################
-sub selectionSet
-{
- my ($w, $element1, $element2)=@_;
- $element1=$w->index($element1);
- $element2=$element1 unless(defined($element2));
- $element2=$w->index($element2);
- $w->SUPER::tag('add', 'sel', $element1.'.0', $element2.'.0 lineend +1c');
-}
-
-#######################################################################
-# for ->selection(option,args) calling convention
-#######################################################################
-sub selection
-{
-# my ($w,$sub)=(shift,"selection".ucfirst(shift));
-# no strict 'refs';
-# # can't use $w->$sub, since it might call overridden method-- bleh
-# &($sub)($w,@_);
-}
-
-
-#######################################################################
-# adjusts the view in window so element at index is completely visible
-#######################################################################
-sub see
-{
- my ($w, $element)=@_;
- $element=$w->index($element);
- $w->SUPER::see($element.'.0');
-}
-
-#######################################################################
-# returns number of elements in listbox
-#######################################################################
-sub size
-{
- my ($w)=@_;
- my $element = $w->index('end');
- # theres a weird thing with the 'end' mark sometimes being on a line
- # with text, and sometimes being on a line all by itself
- my ($text) = $w->get($element);
- if (length($text) == 0)
- {$element -= 1;}
- return $element;
-}
-
-
-
-#######################################################################
-# add a tag based on element numbers
-#######################################################################
-sub tagAdd
-{
- my ($w, $tagName, $element1, $element2)=@_;
- $element1=$w->index($element1);
- $element1.='.0';
-
- $element2=$element1.' lineend' unless(defined($element2));
- $element2=$w->index($element2);
- $element2.='.0 lineend +1c';
-
- $w->SUPER::tag('add', $tagName, $element1, $element2);
-}
-
-#######################################################################
-# add a tag based on line.char indexes
-#######################################################################
-sub tagAddChar
-{
- my $w=shift;
- $w->SUPER::tag('add',@_);
-}
-
-
-#######################################################################
-# remove a tag based on element numbers
-#######################################################################
-sub tagRemove
-{
- my ($w, $tagName, $element1, $element2)=@_;
- $element1=$w->index($element1);
- $element1.='.0';
-
- $element2=$element1.' lineend' unless(defined($element2));
- $element2=$w->index($element2);
- $element2.='.0 lineend +1c';
-
- $w->SUPER::tag('remove', 'sel', $element1, $element2);
-}
-
-#######################################################################
-# remove a tag based on line.char indexes
-#######################################################################
-sub tagRemoveChar
-{
- my $w=shift;
- $w->SUPER::tag('remove', @_);
-}
-
-
-
-
-#######################################################################
-# perform tagNextRange based on element numbers
-#######################################################################
-sub tagNextRange
-{
- my ($w, $tagName, $element1, $element2)=@_;
- $element1=$w->index($element1);
- $element1.='.0';
-
- $element2=$element1 unless(defined($element2));
- $element2=$w->index($element2);
- $element2.='.0 lineend +1c';
-
- my $index = $w->SUPER::tag('nextrange', 'sel', $element1, $element2);
- my ($line,$col)=split(/\./,$index);
- return $line;
-}
-
-#######################################################################
-# perform tagNextRange based on line.char indexes
-#######################################################################
-sub tagNextRangeChar
-{
- my $w=shift;
- $w->SUPER::tag('nextrange', @_);
-}
-
-#######################################################################
-# perform tagPrevRange based on element numbers
-#######################################################################
-sub tagPrevRange
-{
- my ($w, $tagName, $element1, $element2)=@_;
- $element1=$w->index($element1);
- $element1.='.0';
-
- $element2=$element1 unless(defined($element2));
- $element2=$w->index($element2);
- $element2.='.0 lineend +1c';
-
- my $index = $w->SUPER::tag('prevrange', 'sel', $element1, $element2);
- my ($line,$col)=split(/\./,$index);
- return $line;
-}
-
-#######################################################################
-# perform tagPrevRange based on line.char indexes
-#######################################################################
-sub tagPrevRangeChar
-{
- my $w=shift;
- $w->SUPER::tag('prevrange', @_);
-}
-
-
-
-#######################################################################
-# perform markSet based on element numbers
-#######################################################################
-sub markSet
-{
- my ($w,$mark,$element1)=@_;
- $element1=$w->index($element1);
- $element1.='.0';
- $w->SUPER::mark('set', $element1,$mark);
-}
-
-#######################################################################
-# perform markSet based on line.char indexes
-#######################################################################
-sub markSetChar
-{
- my $w=shift;
- $w->SUPER::mark('set', @_);
-}
-
-#######################################################################
-# perform markNext based on element numbers
-#######################################################################
-sub markNext
-{
- my ($w,$element1)=@_;
- $element1=$w->index($element1);
- $element1.='.0';
- return $w->SUPER::mark('next', $element1);
-}
-
-#######################################################################
-# perform markNext based on line.char indexes
-#######################################################################
-sub markNextChar
-{
- my $w=shift;
- $w->SUPER::mark('next', @_);
-}
-
-
-#######################################################################
-# perform markPrevious based on element numbers
-#######################################################################
-sub markPrevious
-{
- my ($w,$element1)=@_;
- $element1=$w->index($element1);
- $element1.='.0';
- return $w->SUPER::mark('previous', $element1);
-}
-
-#######################################################################
-# perform markPrevious based on line.char indexes
-#######################################################################
-sub markPreviousChar
-{
- my $w=shift;
- $w->SUPER::mark('previous', @_);
-}
-
-
-
-
-sub ButtonRelease_1
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->CancelRepeat;
- $w->activate($Ev->xy);
-}
-
-
-sub Cntrl_Home
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->activate(0);
- $w->see(0);
- $w->selectionClear(0,'end');
- $w->selectionSet(0)
-}
-
-
-sub Cntrl_End
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->activate('end');
- $w->see('end');
- $w->selectionClear(0,'end');
- $w->selectionSet('end')
-}
-
-
-sub Cntrl_backslash
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- if ($w->cget('-selectmode') ne 'browse')
- {
- $w->selectionClear(0,'end');
- }
-}
-
-# BeginSelect --
-#
-# This procedure is typically invoked on button-1 presses. It begins
-# the process of making a selection in the listbox. Its exact behavior
-# depends on the selection mode currently in effect for the listbox;
-# see the Motif documentation for details.
-#
-# Arguments:
-# w - The listbox widget.
-# el - The element for the selection operation (typically the
-# one under the pointer). Must be in numerical form.
-sub BeginSelect
-{
- my $w = shift;
- my $el = shift;
- if ($w->cget('-selectmode') eq 'multiple')
- {
- if ($w->selectionIncludes($el))
- {
- $w->selectionClear($el)
- }
- else
- {
- $w->selectionSet($el)
- }
- }
- else
- {
- $w->selectionClear(0,'end');
- $w->selectionSet($el);
- $w->selectionAnchor($el);
- my @list = ();
- $w->{'SELECTION_LIST_REF'} = \@list;
- $w->{'PREVIOUS_ELEMENT'} = $el
- }
- $w->focus if ($w->cget('-takefocus'));
-}
-# Motion --
-#
-# This procedure is called to process mouse motion events while
-# button 1 is down. It may move or extend the selection, depending
-# on the listbox's selection mode.
-#
-# Arguments:
-# w - The listbox widget.
-# el - The element under the pointer (must be a number).
-sub Motion
-{
- my $w = shift;
- my $el = shift;
- if (defined($w->{'PREVIOUS_ELEMENT'}) && $el == $w->{'PREVIOUS_ELEMENT'})
- {
- return;
- }
-
- # if no selections, select current
- if($w->curselection==0)
- {
- $w->activate($el);
- $w->selectionSet($el);
- $w->selectionAnchor($el);
- $w->{'PREVIOUS_ELEMENT'}=$el;
- return;
- }
-
- my $anchor = $w->index('anchor');
- my $mode = $w->cget('-selectmode');
- if ($mode eq 'browse')
- {
- $w->selectionClear(0,'end');
- $w->selectionSet($el);
- $w->{'PREVIOUS_ELEMENT'} = $el;
- }
- elsif ($mode eq 'extended')
- {
- my $i = $w->{'PREVIOUS_ELEMENT'};
- if ($w->selectionIncludes('anchor'))
- {
- $w->selectionClear($i,$el);
- $w->selectionSet('anchor',$el)
- }
- else
- {
- $w->selectionClear($i,$el);
- $w->selectionClear('anchor',$el)
- }
- while ($i < $el && $i < $anchor)
- {
- if (Tk::lsearch($w->{'SELECTION_LIST_REF'},$i) >= 0)
- {
- $w->selectionSet($i)
- }
- $i += 1
- }
- while ($i > $el && $i > $anchor)
- {
- if (Tk::lsearch($w->{'SELECTION_LIST_REF'},$i) >= 0)
- {
- $w->selectionSet($i)
- }
- $i += -1
- }
- $w->{'PREVIOUS_ELEMENT'} = $el
- }
-}
-# BeginExtend --
-#
-# This procedure is typically invoked on shift-button-1 presses. It
-# begins the process of extending a selection in the listbox. Its
-# exact behavior depends on the selection mode currently in effect
-# for the listbox; see the Motif documentation for details.
-#
-# Arguments:
-# w - The listbox widget.
-# el - The element for the selection operation (typically the
-# one under the pointer). Must be in numerical form.
-sub BeginExtend
-{
- my $w = shift;
- my $el = shift;
-
- # if no selections, select current
- if($w->curselection==0)
- {
- $w->activate($el);
- $w->selectionSet($el);
- $w->selectionAnchor($el);
- $w->{'PREVIOUS_ELEMENT'}=$el;
- return;
- }
-
- if ($w->cget('-selectmode') eq 'extended' && $w->selectionIncludes('anchor'))
- {
- $w->Motion($el)
- }
-}
-# BeginToggle --
-#
-# This procedure is typically invoked on control-button-1 presses. It
-# begins the process of toggling a selection in the listbox. Its
-# exact behavior depends on the selection mode currently in effect
-# for the listbox; see the Motif documentation for details.
-#
-# Arguments:
-# w - The listbox widget.
-# el - The element for the selection operation (typically the
-# one under the pointer). Must be in numerical form.
-sub BeginToggle
-{
- my $w = shift;
- my $el = shift;
- if ($w->cget('-selectmode') eq 'extended')
- {
- my @list = $w->curselection();
- $w->{'SELECTION_LIST_REF'} = \@list;
- $w->{'PREVIOUS_ELEMENT'} = $el;
- $w->selectionAnchor($el);
- if ($w->selectionIncludes($el))
- {
- $w->selectionClear($el)
- }
- else
- {
- $w->selectionSet($el)
- }
- }
-}
-# AutoScan --
-# This procedure is invoked when the mouse leaves an entry window
-# with button 1 down. It scrolls the window up, down, left, or
-# right, depending on where the mouse left the window, and reschedules
-# itself as an "after" command so that the window continues to scroll until
-# the mouse moves back into the window or the mouse button is released.
-#
-# Arguments:
-# w - The entry window.
-# x - The x-coordinate of the mouse when it left the window.
-# y - The y-coordinate of the mouse when it left the window.
-sub AutoScan
-{
- my $w = shift;
- my $x = shift;
- my $y = shift;
- if ($y >= $w->height)
- {
- $w->yview('scroll',1,'units')
- }
- elsif ($y < 0)
- {
- $w->yview('scroll',-1,'units')
- }
- elsif ($x >= $w->width)
- {
- $w->xview('scroll',2,'units')
- }
- elsif ($x < 0)
- {
- $w->xview('scroll',-2,'units')
- }
- else
- {
- return;
- }
- $w->Motion($w->index("@" . $x . ',' . $y));
- $w->RepeatId($w->after(50,'AutoScan',$w,$x,$y));
-}
-# UpDown --
-#
-# Moves the location cursor (active element) up or down by one element,
-# and changes the selection if we're in browse or extended selection
-# mode.
-#
-# Arguments:
-# w - The listbox widget.
-# amount - +1 to move down one item, -1 to move back one item.
-sub UpDown
-{
- my $w = shift;
- my $amount = shift;
- $w->activate($w->index('active')+$amount);
- $w->see('active');
- my $selectmode = $w->cget('-selectmode');
- if ($selectmode eq 'browse')
- {
- $w->selectionClear(0,'end');
- $w->selectionSet('active')
- }
- elsif ($selectmode eq 'extended')
- {
- $w->selectionClear(0,'end');
- $w->selectionSet('active');
- $w->selectionAnchor('active');
- $w->{'PREVIOUS_ELEMENT'} = $w->index('active');
- my @list = ();
- $w->{'SELECTION_LIST_REF'}=\@list;
- }
-}
-# ExtendUpDown --
-#
-# Does nothing unless we're in extended selection mode; in this
-# case it moves the location cursor (active element) up or down by
-# one element, and extends the selection to that point.
-#
-# Arguments:
-# w - The listbox widget.
-# amount - +1 to move down one item, -1 to move back one item.
-sub ExtendUpDown
-{
- my $w = shift;
- my $amount = shift;
- if ($w->cget('-selectmode') ne 'extended')
- {
- return;
- }
- $w->activate($w->index('active')+$amount);
- $w->see('active');
- $w->Motion($w->index('active'))
-}
-# DataExtend
-#
-# This procedure is called for key-presses such as Shift-KEndData.
-# If the selection mode isn't multiple or extend then it does nothing.
-# Otherwise it moves the active element to el and, if we're in
-# extended mode, extends the selection to that point.
-#
-# Arguments:
-# w - The listbox widget.
-# el - An integer element number.
-sub DataExtend
-{
- my $w = shift;
- my $el = shift;
- my $mode = $w->cget('-selectmode');
- if ($mode eq 'extended')
- {
- $w->activate($el);
- $w->see($el);
- if ($w->selectionIncludes('anchor'))
- {
- $w->Motion($el)
- }
- }
- elsif ($mode eq 'multiple')
- {
- $w->activate($el);
- $w->see($el)
- }
-}
-# Cancel
-#
-# This procedure is invoked to cancel an extended selection in
-# progress. If there is an extended selection in progress, it
-# restores all of the items between the active one and the anchor
-# to their previous selection state.
-#
-# Arguments:
-# w - The listbox widget.
-sub Cancel
-{
- my $w = shift;
- if ($w->cget('-selectmode') ne 'extended' || !defined $w->{'PREVIOUS_ELEMENT'})
- {
- return;
- }
- my $first = $w->index('anchor');
- my $last = $w->{'PREVIOUS_ELEMENT'};
- if ($first > $last)
- {
- ($first,$last)=($last,$first);
- }
- $w->selectionClear($first,$last);
- while ($first <= $last)
- {
- if (Tk::lsearch($w->{'SELECTION_LIST_REF'},$first) >= 0)
- {
- $w->selectionSet($first)
- }
- $first += 1
- }
-}
-# SelectAll
-#
-# This procedure is invoked to handle the "select all" operation.
-# For single and browse mode, it just selects the active element.
-# Otherwise it selects everything in the widget.
-#
-# Arguments:
-# w - The listbox widget.
-sub SelectAll
-{
- my $w = shift;
- my $mode = $w->cget('-selectmode');
- if ($mode eq 'single' || $mode eq 'browse')
- {
- $w->selectionClear(0,'end');
- $w->selectionSet('active')
- }
- else
- {
- $w->selectionSet(0,'end')
- }
-}
-
-sub SetList
-{
- my $w = shift;
- $w->delete(0,'end');
- $w->insert('end',@_);
-}
-
-sub deleteSelected
-{
- my $w = shift;
- my $i;
- foreach $i (reverse $w->curselection)
- {
- $w->delete($i);
- }
-}
-
-sub clipboardPaste
-{
- my $w = shift;
- my $element = $w->index('active') || $w->index($w->XEvent->xy);
- my $str;
- eval {local $SIG{__DIE__}; $str = $w->clipboardGet };
- return if $@;
- foreach (split("\n",$str))
- {
- $w->insert($element++,$_);
- }
-}
-
-sub getSelected
-{
- my ($w) = @_;
- my $i;
- my (@result) = ();
- foreach $i ($w->curselection)
- {
- push(@result,$w->get($i));
- }
- return (wantarray) ? @result : $result[0];
-}
-
-
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/TextUndo.pm b/Master/tlpkg/tlperl/lib/Tk/TextUndo.pm
deleted file mode 100644
index 066e4027a3a..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/TextUndo.pm
+++ /dev/null
@@ -1,1022 +0,0 @@
-# Copyright (c) 1995-2004 Nick Ing-Simmons.
-# Copyright (c) 1999 Greg London.
-# All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-package Tk::TextUndo;
-
-use vars qw($VERSION $DoDebug);
-$VERSION = '4.013'; # $Id: //depot/Tkutf8/Tk/TextUndo.pm#15 $
-$DoDebug = 0;
-
-use Tk qw (Ev);
-use AutoLoader;
-
-use Tk::Text ();
-use base qw(Tk::Text);
-
-Construct Tk::Widget 'TextUndo';
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $mw->bind($class,'<<Undo>>','undo');
- $mw->bind($class,'<<Redo>>','redo');
-
- return $class->SUPER::ClassInit($mw);
-}
-
-
-####################################################################
-# methods for manipulating the undo and redo stacks.
-# no one should directly access the stacks except for these methods.
-# everyone else must access the stacks through these methods.
-####################################################################
-sub ResetUndo
-{
- my ($w) = @_;
- delete $w->{UNDO};
- delete $w->{REDO};
-}
-
-sub PushUndo
-{
- my $w = shift;
- $w->{UNDO} = [] unless (exists $w->{UNDO});
- push(@{$w->{UNDO}},@_);
-}
-
-sub PushRedo
-{
- my $w = shift;
- $w->{REDO} = [] unless (exists $w->{REDO});
- push(@{$w->{REDO}},@_);
-}
-
-sub PopUndo
-{
- my ($w) = @_;
- return pop(@{$w->{UNDO}}) if defined $w->{UNDO};
- return undef;
-}
-
-sub PopRedo
-{
- my ($w) = @_;
- return pop(@{$w->{REDO}}) if defined $w->{REDO};
- return undef;
-}
-
-sub ShiftRedo
-{
- my ($w) = @_;
- return shift(@{$w->{REDO}}) if defined $w->{REDO};
- return undef;
-}
-
-sub numberChanges
-{
- my ($w) = @_;
- return 0 unless (exists $w->{'UNDO'}) and (defined($w->{'UNDO'}));
- return scalar(@{$w->{'UNDO'}});
-}
-
-sub SizeRedo
-{
- my ($w) = @_;
- return 0 unless exists $w->{'REDO'};
- return scalar(@{$w->{'REDO'}});
-}
-
-sub getUndoAtIndex
-{
- my ($w,$index) = @_;
- return undef unless (exists $w->{UNDO});
- return $w->{UNDO}[$index];
-}
-
-sub getRedoAtIndex
-{
- my ($w,$index) = @_;
- return undef unless (exists $w->{REDO});
- return $w->{REDO}[$index];
-}
-
-####################################################################
-# type "hello there"
-# hello there_
-# hit UNDO
-# hello_
-# type "out"
-# hello out_
-# pressing REDO should not do anything
-# pressing UNDO should make "out" disappear.
-# pressing UNDO should make "there" reappear.
-# pressing UNDO should make "there" disappear.
-# pressing UNDO should make "hello" disappear.
-#
-# if there is anything in REDO stack and
-# the OperationMode is normal, (i.e. not in the middle of an ->undo or ->redo)
-# then before performing the current operation
-# take the REDO stack, and put it on UNDO stack
-# such that UNDO/REDO keystrokes will still make logical sense.
-#
-# call this method at the beginning of any overloaded method
-# which adds operations to the undo or redo stacks.
-# it will perform all the magic needed to handle the redo stack.
-####################################################################
-sub CheckForRedoShuffle
-{
- my ($w) = @_;
- my $size_redo = $w->SizeRedo;
- return unless $size_redo && ($w->OperationMode eq 'normal');
- # local $DoDebug = 1;
-
- # we are about to 'do' something new, but have something in REDO stack.
- # The REDOs may conflict with new ops, but we want to preserve them.
- # So convert them to UNDOs - effectively do them and their inverses
- # so net effect on the widget is no-change.
-
- $w->dump_array('StartShuffle');
-
- $w->OperationMode('REDO_MAGIC');
- $w->MarkSelectionsSavePositions;
-
- my @pvtundo;
-
- # go through REDO array from end downto 0, i.e. pseudo pop
- # then pretend we did 'redo' get inverse, and push into UNDO array
- # and 'do' the op.
- for (my $i=$size_redo-1; $i>=0 ; $i--)
- {
- my ($op,@args) = @{$w->getRedoAtIndex($i)};
- my $op_undo = $op .'_UNDO';
- # save the inverse of the op on the UNDO array
- # do this before the re-doing the op - after a 'delete' we cannot see
- # text we deleted!
- my $undo = $w->$op_undo(@args);
- $w->PushUndo($undo);
- # We must 'do' the operation now so if this is an insert
- # the text and tags are available for inspection in delete_UNDO, and
- # indices reflect changes.
- $w->$op(@args);
- # Save the undo that will reverse what we just did - it is
- # on the undo stack but will be tricky to find
- push(@pvtundo,$undo);
- }
-
- # Now shift each item off REDO array until empty
- # push each item onto UNDO array - this reverses the order
- # and we are not altering buffer so we cannot look in the
- # buffer to compute inverses - which is why we saved them above
-
- while ($w->SizeRedo)
- {
- my $ref = $w->ShiftRedo;
- $w->PushUndo($ref);
- }
-
- # Finally undo whatever we did to compensate for doing it
- # and get buffer back to state it was before we started.
- while (@pvtundo)
- {
- my ($op,@args) = @{pop(@pvtundo)};
- $w->$op(@args);
- }
-
- $w->RestoreSelectionsMarkedSaved;
- $w->OperationMode('normal');
- $w->dump_array('EndShuffle');
-}
-
-# sets/returns undo/redo/normal operation mode
-sub OperationMode
-{
- my ($w,$mode) = @_;
- $w->{'OPERATION_MODE'} = $mode if (@_ > 1);
- $w->{'OPERATION_MODE'} = 'normal' unless exists($w->{'OPERATION_MODE'});
- return $w->{'OPERATION_MODE'};
-}
-
-####################################################################
-# dump the undo and redo stacks to the screen.
-# used for debug purposes.
-sub dump_array
-{
- return unless $DoDebug;
- my ($w,$why) = @_;
- print "At $why:\n";
- foreach my $key ('UNDO','REDO')
- {
- if (defined($w->{$key}))
- {
- print " $key array is:\n";
- my $array = $w->{$key};
- foreach my $ref (@$array)
- {
- my @items;
- foreach my $item (@$ref)
- {
- my $loc = $item;
- $loc =~ tr/\n/\^/;
- push(@items,$loc);
- }
- print " [",join(',',@items),"]\n";
- }
- }
- }
- print "\n";
-}
-
-
-############################################################
-############################################################
-# these are a group of methods used to indicate the start and end of
-# several operations that are to be undo/redo 'ed in a single step.
-#
-# in other words, "glob" a bunch of operations together.
-#
-# for example, a search and replace should be undone with a single
-# keystroke, rather than one keypress undoes the insert and another
-# undoes the delete.
-# all other methods should access the count via these methods.
-# no other method should directly access the {GLOB_COUNT} value directly
-#############################################################
-#############################################################
-
-sub AddOperation
-{
- my ($w,@operation) = @_;
- my $mode = $w->OperationMode;
-
- if ($mode eq 'normal')
- {$w->PushUndo([@operation]);}
- elsif ($mode eq 'undo')
- {$w->PushRedo([@operation]);}
- elsif ($mode eq 'redo')
- {$w->PushUndo([@operation]);}
- else
- {die "invalid destination '$mode', must be one of 'normal', 'undo' or 'redo'";}
-}
-
-sub addGlobStart # add it to end of undo list
-{
- my ($w, $who) = @_;
- unless (defined($who)) {$who = (caller(1))[3];}
- $w->CheckForRedoShuffle;
- $w->dump_array('Start'.$who);
- $w->AddOperation('GlobStart', $who) ;
-}
-
-sub addGlobEnd # add it to end of undo list
-{
- my ($w, $who) = @_;
- unless (defined($who)) {$who = (caller(1))[3];}
- my $topundo = $w->getUndoAtIndex(-1);
- if ($topundo->[0] eq 'GlobStart')
- {
- $w->PopUndo;
- }
- else
- {
- my $nxtundo = $w->getUndoAtIndex(-2);
- if ($nxtundo->[0] eq 'GlobStart')
- {
- $w->PopUndo;
- $w->PopUndo;
- $w->PushUndo($topundo);
- }
- else
- {
- $w->AddOperation('GlobEnd', $who);
- }
- }
- $w->dump_array('End'.$who);
-}
-
-sub GlobStart
-{
- my ($w, $who) = @_;
- unless (defined($w->{GLOB_COUNT})) {$w->{GLOB_COUNT}=0;}
- if ($w->OperationMode eq 'normal')
- {
- $w->PushUndo($w->GlobStart_UNDO($who));
- }
- $w->{GLOB_COUNT} = $w->{GLOB_COUNT} + 1;
-}
-
-sub GlobStart_UNDO
-{
- my ($w, $who) = @_;
- $who = 'GlobEnd_UNDO' unless defined($who);
- return ['GlobEnd',$who];
-}
-
-sub GlobEnd
-{
- my ($w, $who) = @_;
- unless (defined($w->{GLOB_COUNT})) {$w->{GLOB_COUNT}=0;}
- if ($w->OperationMode eq 'normal')
- {
- $w->PushUndo($w->GlobStart_UNDO($who));
- }
- $w->{GLOB_COUNT} = $w->{GLOB_COUNT} - 1;
-}
-
-sub GlobEnd_UNDO
-{
- my ($w, $who) = @_;
- $who = 'GlobStart_UNDO' unless defined($who);
- return ['GlobStart',$who];
-}
-
-sub GlobCount
-{
- my ($w,$count) = @_;
- unless ( exists($w->{'GLOB_COUNT'}) and defined($w->{'GLOB_COUNT'}) )
- {
- $w->{'GLOB_COUNT'}=0;
- }
- if (defined($count))
- {
- $w->{'GLOB_COUNT'}=$count;
- }
- return $w->{'GLOB_COUNT'};
-}
-
-####################################################################
-# two methods should be used by applications to access undo and redo
-# capability, namely, $w->undo; and $w->redo; methods.
-# these methods undo and redo the last operation, respectively.
-####################################################################
-sub undo
-{
- my ($w) = @_;
- $w->dump_array('Start'.'undo');
- unless ($w->numberChanges) {$w->bell; return;} # beep and return if empty
- $w->GlobCount(0); #initialize to zero
- $w->OperationMode('undo');
- do
- {
- my ($op,@args) = @{$w->PopUndo}; # get undo operation, convert ref to array
- my $undo_op = $op .'_UNDO';
- $w->PushRedo($w->$undo_op(@args)); # find out how to undo it
- $w->$op(@args); # do the operation
- } while($w->GlobCount and $w->numberChanges);
- $w->OperationMode('normal');
- $w->dump_array('End'.'undo');
-}
-
-sub redo
-{
- my ($w) = @_;
- unless ($w->SizeRedo) {$w->bell; return;} # beep and return if empty
- $w->OperationMode('redo');
- $w->GlobCount(0); #initialize to zero
- do
- {
- my ($op,@args) = @{$w->PopRedo}; # get op from redo stack, convert to list
- my $undo_op = $op .'_UNDO';
- $w->PushUndo($w->$undo_op(@args)); # figure out how to undo operation
- $w->$op(@args); # do the operation
- } while($w->GlobCount and $w->SizeRedo);
- $w->OperationMode('normal');
-}
-
-
-############################################################
-# override low level subroutines so that they work with UNDO/REDO capability.
-# every overridden subroutine must also have a corresponding *_UNDO subroutine.
-# the *_UNDO method takes the same parameters in and returns an array reference
-# which is how to undo itself.
-# note that the *_UNDO must receive absolute indexes.
-# ->insert receives 'markname' as the starting index.
-# ->insert must convert 'markname' using $absindex=$w->index('markname')
-# and pass $absindex to ->insert_UNDO.
-############################################################
-
-sub insert
-{
- my $w = shift;
- $w->markSet('insert', $w->index(shift) );
- while(@_)
- {
- my $index1 = $w->index('insert');
- my $string = shift;
- my $taglist_ref = shift if @_;
-
- if ($w->OperationMode eq 'normal')
- {
- $w->CheckForRedoShuffle;
- $w->PushUndo($w->insert_UNDO($index1,$string,$taglist_ref));
- }
- $w->markSet('notepos' => $index1);
- $w->SUPER::insert($index1,$string,$taglist_ref);
- $w->markSet('insert', $w->index('notepos'));
- }
-}
-
-sub insert_UNDO
-{
- my $w = shift;
- my $index = shift;
- my $string = '';
- # This possible call: ->insert (index, string, tag, string, tag...);
- # if more than one string, keep reading strings in (discarding tags)
- # until all strings are read in and $string contains entire text inserted.
- while (@_)
- {
- $string .= shift;
- my $tags = shift if (@_);
- }
- # calculate index
- # possible things to insert:
- # carriage return
- # single character (not CR)
- # single line of characters (not ending in CR)
- # single line of characters ending with a CR
- # multi-line characters. last line does not end with CR
- # multi-line characters, last line does end with CR.
- my ($line,$col) = split(/\./,$index);
- if ($string =~ /\n(.*)$/)
- {
- $line += $string =~ tr/\n/\n/;
- $col = length($1);
- }
- else
- {
- $col += length($string);
- }
- return ['delete', $index, $line.'.'.$col];
-}
-
-sub delete
-{
- my ($w, $start, $stop) = @_;
- unless(defined($stop))
- { $stop = $start .'+1c'; }
- my $index1 = $w->index($start);
- my $index2 = $w->index($stop);
- if ($w->OperationMode eq 'normal')
- {
- $w->CheckForRedoShuffle;
- $w->PushUndo($w->delete_UNDO($index1,$index2));
- }
- $w->SUPER::delete($index1,$index2);
- # why call SetCursor - it has side effects
- # which cause a whole slew if save/restore hassles ?
- $w->SetCursor($index1);
-}
-
-sub delete_UNDO
-{
- my ($w, $index1, $index2) = @_;
- my %tags;
- my @result = ( 'insert' => $index1 );
- my $str = '';
-
- ###############################################################
- # get tags in range and return them in a format that
- # can be inserted.
- # $text->insert('1.0', $string1, [tag1,tag2], $string2, [tag2, tag3]);
- # note, have to break tags up into sequential order
- # in reference to _all_ tags.
- ###############################################################
-
- $w->dump('-text','-tag', -command => sub {
- my ($kind,$value,$posn) = @_;
- if ($kind eq 'text')
- {
- $str .= $value;
- }
- else
- {
- push(@result,$str,[keys %tags]) if (length $str);
- $str = '';
- if ($kind eq 'tagon')
- {
- $tags{$value} = 1;
- }
- elsif ($kind eq 'tagoff')
- {
- delete $tags{$value};
- }
- }
- }, $index1, $index2);
- push(@result,$str,[keys %tags]) if (length $str);
- return \@result;
-}
-
-############################################################
-# override subroutines which are collections of low level
-# routines executed in sequence.
-# wrap a globstart and globend around the SUPER:: version of routine.
-############################################################
-
-sub ReplaceSelectionsWith
-{
- my $w = shift;
- $w->addGlobStart;
- $w->SUPER::ReplaceSelectionsWith(@_);
- $w->addGlobEnd;
-}
-
-sub FindAndReplaceAll
-{
- my $w = shift;
- $w->addGlobStart;
- $w->SUPER::FindAndReplaceAll(@_);
- $w->addGlobEnd;
-}
-
-sub clipboardCut
-{
- my $w = shift;
- $w->addGlobStart;
- $w->SUPER::clipboardCut(@_);
- $w->addGlobEnd;
-}
-
-sub clipboardPaste
-{
- my $w = shift;
- $w->addGlobStart;
- $w->SUPER::clipboardPaste(@_);
- $w->addGlobEnd;
-}
-
-sub clipboardColumnCut
-{
- my $w = shift;
- $w->addGlobStart;
- $w->SUPER::clipboardColumnCut(@_);
- $w->addGlobEnd;
-}
-
-sub clipboardColumnPaste
-{
- my $w = shift;
- $w->addGlobStart;
- $w->SUPER::clipboardColumnPaste(@_);
- $w->addGlobEnd;
-}
-
-# Greg: this method is more tightly coupled to the base class
-# than I would prefer, but I know of no other way to do it.
-
-sub Insert
-{
- my ($w,$char)=@_;
- return if $char eq '';
- $w->addGlobStart;
- $w->SUPER::Insert($char);
- $w->addGlobEnd;
- $w->see('insert');
-}
-
-
-sub InsertKeypress
-{
- my ($w,$char)=@_;
- return if $char eq '';
- if ($char =~ /^\S$/ and !$w->OverstrikeMode and !$w->tagRanges('sel'))
- {
- my $index = $w->index('insert');
- my $undo_item = $w->getUndoAtIndex(-1);
- if (defined($undo_item) &&
- ($undo_item->[0] eq 'delete') &&
- ($undo_item->[2] == $index)
- )
- {
- $w->SUPER::insert($index,$char);
- $undo_item->[2] = $w->index('insert');
- return;
- }
- }
- $w->addGlobStart;
- $w->SUPER::InsertKeypress($char);
- $w->addGlobEnd;
-}
-
-############################################################
-sub TextUndoFileProgress
-{
- my ($w,$action,$filename,$count,$val,$total) = @_;
- return unless(defined($filename) and defined($count));
-
- my $popup = $w->{'FILE_PROGRESS_POP_UP'};
- unless (defined($popup))
- {
- $w->update;
- $popup = $w->Toplevel(-title => "File Progress",-popover => $w);
- $popup->transient($w->toplevel);
- $popup->withdraw;
- $popup->resizable('no','no');
- $popup->Label(-textvariable => \$popup->{ACTION})->pack;
- $popup->Label(-textvariable => \$popup->{FILENAME})->pack;
- $popup->Label(-textvariable => \$popup->{COUNT})->pack;
- my $f = $popup->Frame(-height => 10, -border => 2, -relief => 'sunken')->pack(-fill => 'x');
- my $i = $f->Frame(-background => 'blue', -relief => 'raised', -border => 2);
- $w->{'FILE_PROGRESS_POP_UP'} = $popup;
- $popup->{PROGBAR} = $i;
- }
- $popup->{ACTION} = $action;
- $popup->{COUNT} = "lines: $count";
- $popup->{FILENAME} = "Filename: $filename";
- if (defined($val) && defined($total) && $total != 0)
- {
- $popup->{PROGBAR}->place('-x' => 0, '-y' => 0, -relheight => 1, -relwidth => $val/$total);
- }
- else
- {
- $popup->{PROGBAR}->placeForget;
- }
-
- $popup->idletasks;
- unless ($popup->viewable)
- {
- $w->idletasks;
- $w->toplevel->deiconify unless $w->viewable;
- $popup->Popup;
- }
- $popup->update;
- return $popup;
-}
-
-sub FileName
-{
- my ($w,$filename) = @_;
- if (@_ > 1)
- {
- $w->{'FILENAME'}=$filename;
- }
- return $w->{'FILENAME'};
-}
-
-sub PerlIO_layers
-{
- my ($w,$layers) = @_;
- $w->{PERLIO_LAYERS} = $layers if @_ > 1;
- return $w->{PERLIO_LAYERS} || '' ;
-}
-
-sub ConfirmDiscard
-{
- my ($w)=@_;
- if ($w->numberChanges)
- {
- my $ans = $w->messageBox(-icon => 'warning',
- -type => 'YesNoCancel', -default => 'Yes',
- -message =>
-"The text has been modified without being saved.
-Save edits?");
- return 0 if $ans eq 'Cancel';
- return 0 if ($ans eq 'Yes' && !$w->Save);
- }
- return 1;
-}
-
-################################################################################
-# if the file has been modified since being saved, a pop up window will be
-# created, asking the user to confirm whether or not to exit.
-# this allows the user to return to the application and save the file.
-# the code would look something like this:
-#
-# if ($w->user_wants_to_exit)
-# {$w->ConfirmExit;}
-#
-# it is also possible to trap attempts to delete the main window.
-# this allows the ->ConfirmExit method to be called when the main window
-# is attempted to be deleted.
-#
-# $mw->protocol('WM_DELETE_WINDOW'=>
-# sub{$w->ConfirmExit;});
-#
-# finally, it might be desirable to trap Control-C signals at the
-# application level so that ->ConfirmExit is also called.
-#
-# $SIG{INT}= sub{$w->ConfirmExit;};
-#
-################################################################################
-
-sub ConfirmExit
-{
- my ($w) = @_;
- $w->toplevel->destroy if $w->ConfirmDiscard;
-}
-
-sub Save
-{
- my ($w,$filename) = @_;
- $filename = $w->FileName unless defined $filename;
- return $w->FileSaveAsPopup unless defined $filename;
- my $layers = $w->PerlIO_layers;
- if (open(my $file,">$layers",$filename))
- {
- my $status;
- my $count=0;
- my $index = '1.0';
- my $progress;
- my ($lines) = $w->index('end - 1 chars') =~ /^(\d+)\./;
- while ($w->compare($index,'<','end'))
- {
-# my $end = $w->index("$index + 1024 chars");
- my $end = $w->index("$index lineend +1c");
- print $file $w->get($index,$end);
- $index = $end;
- if (($count++%1000) == 0)
- {
- $progress = $w->TextUndoFileProgress (Saving => $filename,$count,$count,$lines);
- }
- }
- $progress->withdraw if defined $progress;
- if (close($file))
- {
- $w->ResetUndo;
- $w->FileName($filename);
- return 1;
- }
- }
- else
- {
- $w->BackTrace("Cannot open $filename:$!");
- }
- return 0;
-}
-
-sub Load
-{
- my ($w,$filename) = @_;
- $filename = $w->FileName unless (defined($filename));
- return 0 unless defined $filename;
- my $layers = $w->PerlIO_layers;
- if (open(my $file,"<$layers",$filename))
- {
- $w->MainWindow->Busy;
- $w->EmptyDocument;
- my $count=1;
- my $progress;
- while (<$file>)
- {
- $w->SUPER::insert('end',$_);
- if (($count++%1000) == 0)
- {
- $progress = $w->TextUndoFileProgress (Loading => $filename,
- $count,tell($file),-s $filename);
- }
- }
- close($file);
- $progress->withdraw if defined $progress;
- $w->markSet('insert' => '1.0');
- $w->FileName($filename);
- $w->MainWindow->Unbusy;
- }
- else
- {
- $w->BackTrace("Cannot open $filename:$!");
- }
-}
-
-sub IncludeFile
-{
- my ($w,$filename) = @_;
- unless (defined($filename))
- {$w->BackTrace("filename not specified"); return;}
- my $layers = $w->PerlIO_layers;
- if (open(my $file,"<$layers",$filename))
- {
- $w->Busy;
- my $count=1;
- $w->addGlobStart;
- my $progress;
- while (<$file>)
- {
- $w->insert('insert',$_);
- if (($count++%1000) == 0)
- {
- $progress = $w->TextUndoFileProgress(Including => $filename,
- $count,tell($file),-s $filename);
- }
- }
- $progress->withdraw if defined $progress;
- $w->addGlobEnd;
- close($file);
- $w->Unbusy;
- }
- else
- {
- $w->BackTrace("Cannot open $filename:$!");
- }
-}
-
-# clear document without pushing it into UNDO array, (use SUPER::delete)
-# (using plain delete(1.0,end) on a really big document fills up the undo array)
-# and then clear the Undo and Redo stacks.
-sub EmptyDocument
-{
- my ($w) = @_;
- $w->SUPER::delete('1.0','end');
- $w->ResetUndo;
- $w->FileName(undef);
-}
-
-sub ConfirmEmptyDocument
-{
- my ($w)=@_;
- $w->EmptyDocument if $w->ConfirmDiscard;
-}
-
-sub FileMenuItems
-{
- my ($w) = @_;
- return [
- ["command"=>'~Open', -command => [$w => 'FileLoadPopup']],
- ["command"=>'~Save', -command => [$w => 'Save' ]],
- ["command"=>'Save ~As', -command => [$w => 'FileSaveAsPopup']],
- ["command"=>'~Include', -command => [$w => 'IncludeFilePopup']],
- ["command"=>'~Clear', -command => [$w => 'ConfirmEmptyDocument']],
- "-",@{$w->SUPER::FileMenuItems}
- ]
-}
-
-sub EditMenuItems
-{
- my ($w) = @_;
-
- return [
- ["command"=>'Undo', -command => [$w => 'undo']],
- ["command"=>'Redo', -command => [$w => 'redo']],
- "-",@{$w->SUPER::EditMenuItems}
- ];
-}
-
-sub CreateFileSelect
-{
- my $w = shift;
- my $k = shift;
- my $name = $w->FileName;
- my @types = (['All Files', '*']);
- my $dir = undef;
- if (defined $name)
- {
- require File::Basename;
- my $sfx;
- ($name,$dir,$sfx) = File::Basename::fileparse($name,'\..*');
- #
- # it should never happen where we have a file suffix and
- # no file name... but fileparse() screws this up with dotfiles.
- #
- if (length($sfx) && !length($name)) { ($name, $sfx) = ($sfx, $name) }
-
- if (defined($sfx) && length($sfx))
- {
- unshift(@types,['Similar Files',[$sfx]]);
- $name .= $sfx;
- }
- }
- return $w->$k(-initialdir => $dir, -initialfile => $name,
- -filetypes => \@types, @_);
-}
-
-sub FileLoadPopup
-{
- my ($w)=@_;
- my $name = $w->CreateFileSelect('getOpenFile',-title => 'File Load');
- return $w->Load($name) if defined($name) and length($name);
- return 0;
-}
-
-sub IncludeFilePopup
-{
- my ($w)=@_;
- my $name = $w->CreateFileSelect('getOpenFile',-title => 'File Include');
- return $w->IncludeFile($name) if defined($name) and length($name);
- return 0;
-}
-
-sub FileSaveAsPopup
-{
- my ($w)=@_;
- my $name = $w->CreateFileSelect('getSaveFile',-title => 'File Save As');
- return $w->Save($name) if defined($name) and length($name);
- return 0;
-}
-
-
-sub MarkSelectionsSavePositions
-{
- my ($w)=@_;
- $w->markSet('MarkInsertSavePosition','insert');
- my @ranges = $w->tagRanges('sel');
- my $i = 0;
- while (@ranges)
- {
- my ($start,$end) = splice(@ranges,0,2);
- $w->markSet( 'MarkSelectionsSavePositions_'.++$i, $start);
- $w->markSet( 'MarkSelectionsSavePositions_'.++$i, $end);
- $w->tagRemove('sel',$start,$end);
- }
-}
-
-sub RestoreSelectionsMarkedSaved
-{
- my ($w)=@_;
- my $i = 1;
- my %mark_hash;
- foreach my $mark ($w->markNames)
- {
- $mark_hash{$mark}=1;
- }
- while(1)
- {
- my $markstart = 'MarkSelectionsSavePositions_'.$i++;
- last unless(exists($mark_hash{$markstart}));
- my $indexstart = $w->index($markstart);
- my $markend = 'MarkSelectionsSavePositions_'.$i++;
- last unless(exists($mark_hash{$markend}));
- my $indexend = $w->index($markend);
- $w->tagAdd('sel',$indexstart, $indexend);
- $w->markUnset($markstart, $markend);
- }
- $w->markSet('insert','MarkInsertSavePosition');
-}
-
-####################################################################
-# selected lines may be discontinous sequence.
-sub GetMarkedSelectedLineNumbers
-{
- my ($w) = @_;
-
- my $i = 1;
- my %mark_hash;
- my @ranges;
- foreach my $mark ($w->markNames)
- {
- $mark_hash{$mark}=1;
- }
-
- while(1)
- {
- my $markstart = 'MarkSelectionsSavePositions_'.$i++;
- last unless(exists($mark_hash{$markstart}));
- my $indexstart = $w->index($markstart);
- my $markend = 'MarkSelectionsSavePositions_'.$i++;
- last unless(exists($mark_hash{$markend}));
- my $indexend = $w->index($markend);
-
- push(@ranges, $indexstart, $indexend);
- }
-
- my @selection_list;
- while (@ranges)
- {
- my ($first) = split(/\./,shift(@ranges));
- my ($last) = split(/\./,shift(@ranges));
- # if previous selection ended on the same line that this selection starts,
- # then fiddle the numbers so that this line number isnt included twice.
- if (defined($selection_list[-1]) and ($first == $selection_list[-1]))
- {
- # if this selection ends on the same line its starts, then skip this sel
- next if ($first == $last);
- $first++; # count this selection starting from the next line.
- }
- push(@selection_list, $first .. $last);
- }
- return @selection_list;
-}
-
-sub insertStringAtStartOfSelectedLines
-{
- my ($w,$insert_string)=@_;
- $w->addGlobStart;
- $w->MarkSelectionsSavePositions;
- foreach my $line ($w->GetMarkedSelectedLineNumbers)
- {
- $w->insert($line.'.0', $insert_string);
- }
- $w->RestoreSelectionsMarkedSaved;
- $w->addGlobEnd;
-}
-
-sub deleteStringAtStartOfSelectedLines
-{
- my ($w,$insert_string)=@_;
- $w->addGlobStart;
- $w->MarkSelectionsSavePositions;
- my $length = length($insert_string);
- foreach my $line ($w->GetMarkedSelectedLineNumbers)
- {
- my $start = $line.'.0';
- my $end = $line.'.'.$length;
- my $current_text = $w->get($start, $end);
- next unless ($current_text eq $insert_string);
- $w->delete($start, $end);
- }
- $w->RestoreSelectionsMarkedSaved;
- $w->addGlobEnd;
-}
-
-
-1;
-__END__
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Tiler.pm b/Master/tlpkg/tlperl/lib/Tk/Tiler.pm
deleted file mode 100644
index 1256612f801..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Tiler.pm
+++ /dev/null
@@ -1,203 +0,0 @@
-# Copyright (c) 1995-2004 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-# An example of a geometry manager "widget" in perl
-package Tk::Tiler;
-require Tk;
-require Tk::Frame;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #12 $ =~ /\D(\d+)\s*$/;
-
-use base qw(Tk::Frame);
-
-Construct Tk::Widget 'Tiler';
-sub Tk::Widget::ScrlTiler { shift->Scrolled('Tiler' => @_) }
-
-use Tk::Pretty;
-
-sub FocusChildren
-{
- return (wantarray) ? () : 0;
-}
-
-sub Populate
-{
- my ($obj,$args) = @_;
- $obj->SUPER::Populate($args);
- $obj->{Slaves} = [];
- $obj->{LayoutPending} = 0;
- $obj->{Start} = 0;
- $obj->{Sw} = 0;
- $obj->{Sh} = 0;
- $obj->ConfigSpecs('-takefocus' => ['SELF', 'takeFocus','TakeFocus',1],
- '-highlightthickness' => ['SELF', 'highlightThickness','HighlightThickness',2],
- '-yscrollcommand' => ['CALLBACK',undef,undef,undef],
- '-columns' => ['PASSIVE','columns','Columns',5],
- '-rows' => ['PASSIVE','rows','Rows',10]
- );
- return $obj;
-}
-
-sub change_size
-{
- my ($w) = shift;
- my $r = $w->cget('-rows');
- my $c = $w->cget('-columns');
- my $bw = $w->cget(-highlightthickness);
- if (defined $r && defined $c)
- {
- $w->GeometryRequest($c*$w->{Sw}+2*$bw,$r*$w->{Sh}+2*$bw);
- }
-}
-
-sub Layout
-{
- my $m = shift;
- my $bw = $m->cget(-highlightthickness);
- my $why = $m->{LayoutPending};
- $m->{LayoutPending} = 0;
- my $W = $m->Width;
- my $H = $m->Height;
- my $w = $m->{Sw} || 1; # max width of slave
- my $h = $m->{Sh} || 1; # max height of slave
- my $x = $bw;
- my $y = $bw;
- my $start = 0;
- # Set size and position of slaves
- my $rows = $m->{Rows} = int(($H-2*$bw)/$h) || 1;
- my $cols = $m->{Cols} = int(($W-2*$bw)/$w) || 1;
- my $need = $m->{Need} = int( (@{$m->{Slaves}}+$cols-1)/$cols );
- $m->{Start} = ($need - $rows) if ($m->{Start} + $rows > $need);
-
- $m->{Start} = 0 if ($m->{Start} < 0);
- my $row = 0;
- my @posn = ();
- my $s;
- foreach $s (@{$m->{Slaves}})
- {
- if ($row < $m->{Start})
- {
- $s->UnmapWindow;
- $x += $w;
- if ($x+$w+$bw > $W)
- {
- $x = $bw;
- $row++;
- }
- }
- elsif ($y+$h+$bw > $H)
- {
- $s->UnmapWindow;
- $s->ResizeWindow($w,$h) if ($why & 1);
- }
- else
- {
- push(@posn,[$s,$x,$y]);
- $x += $w;
- if ($x+$w+$bw > $W)
- {
- $x = $bw;
- $y += $h;
- $row++;
- }
- }
- $s->ResizeWindow($w,$h) if ($why & 1);
- }
- $row++ if ($x > $bw);
- if (defined $m->{Prev} && $m->{Prev} > $m->{Start})
- {
- @posn = reverse(@posn);
- }
- while (@posn)
- {
- my $posn = shift(@posn);
- my ($s,$x,$y) = (@$posn);
- $s->MoveWindow($x,$y);
- $s->MapWindow;
- }
- $m->{Prev} = $m->{Start};
- $m->Callback(-yscrollcommand => $m->{Start}/$need,$row/$need) if $need;
-}
-
-sub QueueLayout
-{
- my ($m,$why) = @_;
- $m->afterIdle(['Layout',$m]) unless ($m->{LayoutPending});
- $m->{LayoutPending} |= $why;
-}
-
-sub SlaveGeometryRequest
-{
- my ($m,$s) = @_;
- my $sw = $s->ReqWidth;
- my $sh = $s->ReqHeight;
- my $sz = 0;
- if ($sw > $m->{Sw})
- {
- $m->{Sw} = $sw;
- $m->QueueLayout(1);
- $sz++;
- }
- if ($sh > $m->{Sh})
- {
- $m->{Sh} = $sh;
- $m->QueueLayout(1);
- $sz++;
- }
- $m->change_size if ($sz);
-}
-
-sub LostSlave
-{
- my ($m,$s) = @_;
- @{$m->{Slaves}} = grep($_ != $s,@{$m->{Slaves}});
- $m->QueueLayout(2);
-}
-
-sub Manage
-{
- my $m = shift;
- my $s;
- foreach $s (@_)
- {
- $m->ManageGeometry($s);
- push(@{$m->{Slaves}},$s);
- $m->SlaveGeometryRequest($s);
- }
- $m->QueueLayout(2 | 1);
-}
-
-sub moveto
- {
- my ($m,$frac) = (@_);
- $m->{Start} = int($m->{Need} * $frac);
- $m->QueueLayout(4);
- }
-
-sub scroll
- {
- my ($m,$delta,$type) = @_;
- $delta *= $m->{Rows}/2 if ($type eq 'pages');
- $m->{Start} += $delta;
- $m->QueueLayout(4);
- }
-
-sub yview { my $w = shift; my $c = shift; $w->$c(@_) }
-
-sub FocusIn
-{
- my ($w) = @_;
-# print 'Focus ',$w->PathName,"\n";
-}
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $mw->bind($class,'<Configure>',['QueueLayout',8]);
- $mw->bind($class,'<FocusIn>', 'NoOp');
- $mw->YscrollBind($class);
- return $class;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/TixGrid.pm b/Master/tlpkg/tlperl/lib/Tk/TixGrid.pm
deleted file mode 100644
index 2dd238095f3..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/TixGrid.pm
+++ /dev/null
@@ -1,1597 +0,0 @@
-
-# TODO:
-#
-# o How to get into state 's0' 'b0' so cursor keys start
-# working (compare with Tk/Widget XYscrollBind
-# o the options -browsecmd and -command callback are not
-# not implemented (as in Tix)
-# o privateData 'state' used only once (check again Grid.tcl)
-# o FloatEntry 'sometimes not activeted immediately on selection
-# o check also Leave Binding. Looks like entry does get unpost'ed
-
-package Tk::TixGrid;
-
-BEGIN
- {
- use vars '$DEBUG';
- $DEBUG = (defined($ENV{USER}) and $ENV{USER} eq 'ach') ? 1 : 0;
- print STDERR "tixGrid: debug = $DEBUG\n" if $DEBUG;
- }
-
-use strict;
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #9 $ =~ /\D(\d+)\s*$/;
-
-use Tk qw(Ev $XS_VERSION);
-use Tk::Widget;
-use Carp;
-
-# carp "\n".__PACKAGE__.' is deprecated' unless defined($Test::ntest);
-
-use base 'Tk::Widget';
-
-Construct Tk::Widget 'TixGrid';
-
-bootstrap Tk::TixGrid;
-
-sub Tk_cmd { \&Tk::tixGrid }
-
-sub Tk::Widget::SrclTixGrid { shift->Scrolled('TixGrid' => @_) }
-
-Tk::Methods qw(anchor bdtype delete entrycget entryconfigure format index
- move set size unset xview yview
- dragsite dropsite geometryinfo info
- nearest see selection sort );
-
-use Tk::Submethods
- (
- 'anchor' => [ qw(get set) ],
- 'delete' => [ qw(column row) ],
- 'info' => [ qw(bbox exists anchor) ],
- 'move' => [ qw(column row) ],
- 'selection' => [ qw(adjust clear includes set) ],
- 'size' => [ qw(column row) ],
- 'format' => [ qw(grid border) ],
- );
-
-# edit subcommand is special. It justs invokes tcl code:
-#
-# edit set x y -> tixGrid:EditCell $w, x, y
-# edit apply -> tixGrid:EditApply
-
-# xxx Create an edit sub?
-# sub edit { .... }
-
-sub editSet
- {
- die "wrong args. Should be \$w->editSet(x,y)\n" unless @_ == 3;
- my ($w, $x, $y) = @_;
- $w->EditCell($x, $y);
- }
-
-sub editApply
- {
- die "wrong args. Should be \$w->editApply()\n" unless @_ == 1;
- my ($w) = @_;
- $w->EditApply()
- }
-
-
-####################################################
-##
-## For button 2 scrolling. So TixGrid has 'standard'
-## standard scrolling interface
-##
-
-#sub scanMark
-# {
-# die "wrong # args: \$w->scanMark(x,y)\n" unless @_ == 3;
-# my ($w) = @_;
-# $w->{__scanMarkXY__} = [ @_[1,2] ];
-# return "";
-# }
-#
-#sub scanDragto
-# {
-# die "wrong # args: \$w->scanDragto(x,y)\n" unless @_ == 3;
-# my ($w, $x, $y) = @_;
-# my ($ox, $oy) = @{ $w->{__scanMarkXY__} };
-#
-# #...
-#
-# return "";
-# }
-
-### end button 2 scrolling stuff ####################
-
-
-# Grid.tcl --
-#
-# This file defines the default bindings for Tix Grid widgets.
-#
-# Copyright (c) 1996, Expert Interface Technologies
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# Bindings translated to perl/Tk by Achim Bohnet <ach@mpe.mpg.de>
-
-sub ClassInit
- {
- my ($class, $mw) = @_;
- $class->SUPER::ClassInit($mw);
-
- $mw->XYscrollBind($class);
-
- ##
- ## Button bindings
- ##
-
- $mw->bind($class, '<ButtonPress-1>', ['Button_1', Ev('x'), Ev('y')]);
- $mw->bind($class, '<Shift-ButtonPress-1>', ['Shift_Button_1', Ev('x'), Ev('y')]);
- $mw->bind($class, '<Control-ButtonPress-1>',['Control_Button_1', Ev('x'), Ev('y')]);
- $mw->bind($class, '<ButtonRelease-1>', ['ButtonRelease_1', Ev('x'), Ev('y')]);
- $mw->bind($class, '<Double-ButtonPress-1>', ['Double_1', Ev('x'), Ev('y')]);
- $mw->bind($class, '<B1-Motion>','Button_Motion');
- $mw->bind($class, '<Control-B1-Motion>','Control_Button_Motion');
- $mw->bind($class, '<B1-Leave>','Button_Leave');
- $mw->bind($class, '<Double-ButtonPress-1>', ['Double_1', Ev('x'), Ev('y')]);
- $mw->bind($class, '<B1-Enter>', ['B1_Enter', Ev('x'), Ev('y')]);
- $mw->bind($class, '<Control-B1-Leave>','Control_Button_Leave');
- $mw->bind($class, '<Control-B1-Enter>', ['Control_B1_Enter', Ev('x'), Ev('y')]);
-
- ##
- ## Keyboard bindings
- ##
-
- $mw->bind($class, '<Up>', ['DirKey', 'up' ]);
- $mw->bind($class, '<Down>', ['DirKey', 'down' ]);
- $mw->bind($class, '<Left>', ['DirKey', 'left' ]);
- $mw->bind($class, '<Right>', ['DirKey', 'right' ]);
-
- $mw->PriorNextBind($class);
-
- $mw->bind($class, '<Return>', 'Return');
- $mw->bind($class, '<space>', 'Space' );
-
- return $class;
- }
-
-#----------------------------------------------------------------------
-#
-#
-# Mouse bindings
-#
-#
-#----------------------------------------------------------------------
-
-sub Button_1
- {
- my $w = shift;
-
- return if $w->cget('-state') eq 'disabled';
- $w->SetFocus;
- $w->ChgState(@_,
- [
- '0'=>'1',
- ]
- );
- }
-
-sub Shift_Button_1
- {
- my $w = shift;
-
- return if $w->cget('-state') eq 'disabled';
- $w->SetFocus;
-
-# $w->ChgState(@_,
-# [
-# ]
-# );
- }
-
-sub Control_Button_1
- {
- my $w = shift;
-
- return if $w->cget('-state') eq 'disabled';
- $w->SetFocus;
-
- $w->ChgState(@_,
- [
- 's0' => 's1',
- 'b0' => 'b1',
- 'm0' => 'm1',
- 'e0' => 'e10',
- ]
- );
- }
-
-sub ButtonRelease_1
- {
- shift->ChgState(@_,
- [
- '2' => '5',
- '4' => '3',
- ]
- );
- }
-
-sub B1_Motion
- {
- shift->ChgState(@_,
- [
- '2' => '4',
- '4' => '4',
- ]
- );
- }
-
-
-sub Control_B1_Motion
- {
- shift->ChgState(@_,
- [
- 's2' => 's4',
- 's4' => 's4',
- 'b2' => 'b4',
- 'b4' => 'b4',
- 'm2' => 'm4',
- 'm5' => 'm4',
- ]
- );
- }
-
-
-sub Double_1
- {
- shift->ChgState(@_,
- [
- 's0' => 's7',
- 'b0' => 'b7',
- ]
- );
- }
-
-
-sub B1_Leave
- {
- shift->ChgState(@_,
- [
- 's2' => 's5',
- 's4' => 's5',
- 'b2' => 'b5',
- 'b4' => 'b5',
- 'm2' => 'm8',
- 'm5' => 'm8',
- 'e2' => 'e8',
- 'e5' => 'e8',
- ]
- );
- }
-
-
-sub B1_Enter
- {
- shift->ChgState(@_,
- [
- 's5' => 's4',
- 's6' => 's4',
- 'b5' => 'b4',
- 'b6' => 'b4',
- 'm8' => 'm4',
- 'm9' => 'm4',
- 'e8' => 'e4',
- 'e9' => 'e4',
- ]
- );
- }
-
-
-sub Control_B1_Leave
- {
- shift->ChgState(@_,
- [
- 's2' => 's5',
- 's4' => 's5',
- 'b2' => 'b5',
- 'b4' => 'b5',
- 'm2' => 'm8',
- 'm5' => 'm8',
- ]
- );
- }
-
-
-sub Control_B1_Enter
- {
- shift->ChgState(@_,
- [
- 's5' => 's4',
- 's6' => 's4',
- 'b5' => 'b4',
- 'b6' => 'b4',
- 'm8' => 'm4',
- 'm9' => 'm4',
- ]
- );
- }
-
-
-sub AutoScan
- {
- shift->ChgState(@_,
- [
- 's5' => 's9',
- 's6' => 's9',
- 'b5' => 'b9',
- 'b6' => 'b9',
- 'm8' => 'm9',
- 'm9' => 'm9',
- 'e8' => 'm9',
- 'e9' => 'm9',
- ]
- );
- }
-
-#----------------------------------------------------------------------
-#
-#
-# Key bindings
-#
-#
-#----------------------------------------------------------------------
-
-sub DirKey
- {
- my ($w, $key) = @_;
-
- return if $w->cget('-state') eq 'disabled';
-
-print STDERR "$w->DirKey($key)\n" if $DEBUG;
- $w->ChgState($key,
- [
- 's0' => 's8',
- 'b0' => 'b8',
- ]
- );
- }
-
-
-sub Return
- {
- my ($w) = @_;
-
- return if $w->cget('-state') eq 'disabled';
-
- $w->ChgState(
- [
- 's0' => 's9',
- 'b0' => 'b9',
- ]
- );
- }
-
-
-sub Space
- {
- my ($w) = @_;
-
- return if $w->cget('-state') eq 'disabled';
-
- $w->ChgState(
- [
- 's0' => 's10',
- 'b0' => 'b10',
- ]
- );
- }
-
-
-#----------------------------------------------------------------------
-#
-# STATE MANIPULATION
-#
-#
-#----------------------------------------------------------------------
-
-sub GetState
- {
- my ($w) = @_;
- my $data = $w->privateData();
- $data->{state} = 0 unless exists $data->{state};
- return $data->{state};
-}
-
-sub Button_Motion
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $Tk::x = $Ev->x;
- $Tk::y = $Ev->y;
- $Tk::X = $Ev->X;
- $Tk::Y = $Ev->Y;
- $w->B1_Motion($Tk::x, $Tk::y);
-}
-
-
-sub Control_Button_Motion
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $Tk::x = $Ev->x;
- $Tk::y = $Ev->y;
- $Tk::X = $Ev->X;
- $Tk::Y = $Ev->Y;
- $w->Control_B1_Motion($Tk::x, $Tk::y);
-}
-
-
-sub Button_Leave
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $Tk::x = $Ev->x;
- $Tk::y = $Ev->y;
- $Tk::X = $Ev->X;
- $Tk::Y = $Ev->Y;
- $w->B1_Leave();
-}
-
-
-sub Control_Button_Leave
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $Tk::x = $Ev->x;
- $Tk::y = $Ev->y;
- $Tk::X = $Ev->X;
- $Tk::Y = $Ev->Y;
- $w->Control_B1_Leave();
-}
-
-
-sub SetState
- {
- my ($w, $state) = @_;
- $w->privateData()->{state} = $state;
- }
-
-sub GoState
- {
- my ($w, $state) = (shift, shift);
- print STDERR 'Gostate: ', $w->GetState, " --> $state, " if $DEBUG;
- $w->SetState($state);
- my $method = "GoState_$state";
-
- print STDERR 'args=(', join(',',@_), ')'.
- "\t(",$w->cget('-selectmode').
- ',',$w->cget('-selectunit').")\n" if $DEBUG;
-
- if (0)
- {
- $@ = '';
- %@ = (); # Workaround to prevent spurious loss of $@
- eval { $w->$method(@_) };
- print STDERR "Error Gostate: '$state': ", $@ if $@;
- return undef;
- }
-
- $w->$method(@_);
- return undef
- }
-
-##
-## ChgState is a fancy case statement
-##
-
-sub ChgState
- {
- my $w = shift;
- my $map = pop;
- print STDERR 'ChgState(', join(',',@_,'['), join(',',@$map,),']) ' if $DEBUG;
- my $state = $w->GetState;
-
- my ($match, $to);
- while (@$map)
- {
- $match = shift @$map;
- $to = shift @$map;
- if ($match eq $state)
- {
- print STDERR "$state --> $to \n" if $DEBUG;
- $w->GoState($to, @_);
- return;
- }
- }
- print STDERR "*no* chg for $state\n" if $DEBUG;
- }
-
-
-#----------------------------------------------------------------------
-# SELECTION ROUTINES
-#----------------------------------------------------------------------
-
-#proc tixGrid:SelectSingle {w ent} {
-# $w selection set [lindex $ent 0] [lindex $ent 1]
-# tixGrid:CallBrowseCmd $w $ent
-#}
-
-sub SelectSingle
- {
- my ($w, $n1, $n2) = @_;
- $w->selection('set', $n1, $n2);
- $w->Callback('-browsecmd' => $n1, $n2);
- }
-
-#----------------------------------------------------------------------
-# SINGLE SELECTION
-#----------------------------------------------------------------------
-
-sub GoState_0
- {
- my ($w) = @_;
- my $list = $w->privateData()->{list};
- return unless defined $list;
-
- foreach my $cmd (@$list)
- {
- # XXX should do more something like $w->Callback'('__pending_cmds__');
- eval $cmd; # XXX why in tcl in global context (binding?)
- }
- undef(@$list); # XXX should really delete? Maybe on needed in TCL
- }
-
-# XXXX how to translate global context
-# what does unset
-#proc tixGrid:GoState-0 {w} {
-# set list $w:_list
-# global $list
-#
-# if [info exists $list] {
-# foreach cmd [set $list] {
-# uplevel #0 $cmd
-# }
-# if [info exists $list] {
-# unset $list
-# }
-# }
-#}
-
-sub GoState_1
- {
- my ($w, $x, $y) = @_;
-
- my @ent = $w->mynearest($x,$y);
- if (@ent)
- {
- $w->SetAnchor(@ent);
- }
- $w->CheckEdit;
- $w->selection('clear', 0, 0, 'max', 'max');
-
- if ($w->cget('-selectmode') ne 'single')
- {
- $w->SelectSingle(@ent);
- }
- $w->GoState(2);
- }
-
-sub GoState_2
- {
- my ($w) = @_;
- }
-
-sub GoState_3
- {
- my ($w, $x, $y) = @_;
-
- my @ent = $w->mynearest($x,$y);
- if (@ent)
- {
- $w->SelectSingle(@ent);
- }
- $w->GoState(0);
-
- }
-
-sub GoState_4
- {
- my ($w, $x, $y) = @_;
-
- my (@ent) = $w->mynearest($x,$y);
- my $mode = $w->cget('-selectmode');
-
- if ($mode eq 'single')
- {
- $w->SetAnchor(@ent);
- }
- elsif ($mode eq 'browse')
- {
- $w->SetAnchor(@ent);
- $w->selection('clear', 0, 0, 'max', 'max');
- $w->SelectSingle(@ent);
- }
- elsif ($mode eq 'multiple' ||
- $mode eq 'extended')
- {
- my (@anchor) = $w->anchor('get');
- $w->selection('adjust', @anchor[0,1], @ent[0,1]);
- }
- }
-
-sub GoState_5
- {
- my ($w, $x, $y) = @_;
-
- my @ent = $w->mynearest($x,$y);
- if (@ent)
- {
- $w->SelectSingle(@ent);
- $w->SetEdit(@ent);
- }
- $w->GoState(0);
-
- }
-
-##############################################
-# BUG xxx
-# return scalar instead of errors
-
-sub mynearest { shift->split_s2a('nearest', @_); }
-sub myanchorGet { shift->split_s2a('anchor', 'get', @_); }
-
-sub split_s2a
- {
- my $w = shift;
- my $method = shift;
- my @ent = $w->$method(@_);
- if (@ent == 1)
- {
-my $tmp = $ent[0];
- @ent = split(/ /, $ent[0]) if @ent == 1;
-print STDERR join('|',"$method splitted '$tmp' =>",@ent,"\n") if $DEBUG;
- }
- else
- {
-#print STDERR join("|","$method splitted is okay :",@ent,"\n") if $DEBUG;
- }
- return @ent;
- }
-
-##############################################
-
-
-sub GoState_s5
- {
- shift->StartScan();
- }
-
-
-sub GoState_s6
- {
- shift->DoScan();
- }
-
-
-sub GoState_s7
- {
- my ($w, $x, $y) = @_;
-
- my @ent = $w->mynearest($x, $y);
- if (@ent)
- {
- $w->selection('clear');
- $w->selection('set', @ent);
- $w->Callback('-command' => @ent);
- }
- $w->GoState('s0');
- }
-
-
-sub GoState_s8
- {
- my ($w, $key) = @_;
-
- ## BUGS ....
- ## - anchor is bad, only bbox, exists8
- ## - looks like anchor is 1-dim: set anchor 0
- ## - method see unknown (even when defined with Tk::Method)
-
- my (@anchor) = $w->info('anchor');
- if (@anchor)
- {
- @anchor = ();
- }
- else
- {
- @anchor = $w->info($key, @anchor);
- }
-
- $w->anchor('set', @anchor);
- $w->see(@anchor);
-
- $w->GoState('s0');
- }
-
-#proc tixGrid:GoState-s8 {w key} {
-# set anchor [$w info anchor]
-#
-# if {$anchor == ""} {
-# set anchor 0
-# } else {
-# set anchor [$w info $key $anchor]
-# }
-#
-# $w anchor set $anchor
-# $w see $anchor
-# tixGrid:GoState s0 $w
-#}
-
-
-sub GoState_s9
- {
- my ($w, $key) = @_;
-
-#print STDERR "GoState_s9 is not implemented\n";
-
- my (@anchor) = $w->info('anchor');
- unless (@anchor)
- {
- @anchor = ();
- $w->anchor('set', @anchor);
- $w->see(@anchor);
- }
-
- unless ($w->info('anchor'))
- {
- # ! may not have any elements
- #
- $w->Callback('-command' => $w->info('anchor'));
- $w->selection('clear');
- $w->selection('set', @anchor);
- }
-
- $w->GoState('s0');
- }
-
-
-sub GoState_s10
- {
- my ($w, $key) = @_;
-
- my (@anchor) = $w->info('anchor');
- if (@anchor)
- {
- @anchor = ();
- $w->anchor('set', @anchor);
- $w->see(@anchor);
- }
-
- unless ($w->info('anchor'))
- {
- # ! may not have any elements
- #
- $w->Callback('-browsecmd' => $w->info('anchor'));
- $w->selection('clear');
- $w->selection('set', @anchor);
- }
-
- $w->GoState('s0');
- }
-
-
-#----------------------------------------------------------------------
-# BROWSE SELECTION
-#----------------------------------------------------------------------
-
-sub GoState_b0
- {
- my ($w) = @_;
- }
-
-sub GoState_b1
- {
- my ($w, $x, $y) = @_;
-
- my (@ent) = $w->mynearest($x, $y);
- if (@ent)
- {
- $w->anchor('set', @ent);
- $w->selection('clear');
- $w->selection('set', @ent);
- $w->Callback('-browsecmd' => @ent);
- }
-
- $w->GoState('b2');
- }
-
-sub GoState_b2
- {
- my ($w) = @_;
- }
-
-sub GoState_b3
- {
- my ($w) = @_;
-
- my (@ent) = $w->info('anchor');
- if (@ent)
- {
- $w->selection('clear');
- $w->selection('set', @ent);
- $w->selection('set', @ent);
- $w->Callback('-browsecmd' => @ent);
- }
-
- $w->GoState('b0');
- }
-
-
-sub GoState_b4
- {
- my ($w, $x, $y) = @_;
-
- my (@ent) = $w->mynearest($x, $y);
- if (@ent)
- {
- $w->anchor('set', @ent);
- $w->selection('clear');
- $w->selection('set', @ent);
- $w->Callback('-browsecmd' => @ent);
- }
- }
-
-
-sub GoState_b5 { shift->StartScan(); }
-
-
-sub GoState_b6 { shift->DoScan(); }
-
-
-sub GoState_b7
- {
- my ($w, $x, $y) = @_;
-
- my (@ent) = $w->mynearest($x, $y);
- if (@ent)
- {
- $w->selection('clear');
- $w->selection('set', @ent);
- $w->Callback('-command' => @ent);
- }
- $w->GoState('b0');
- }
-
-
-sub GoState_b8
- {
- my ($w, $key) = @_;
-
- my (@anchor) = $w->info('anchor');
- if (@anchor)
- {
- @anchor = $w->info('key', @anchor);
- }
- else
- {
- @anchor = (0,0); # ?????
- }
-
- $w->anchor('set', @anchor);
- $w->selection('clear');
- $w->selection('set', @anchor);
- $w->see(@anchor);
-
- $w->Callback('-browsecmd' => @anchor);
- $w->GoState('b0');
- }
-
-
-sub GoState_b9
- {
- my ($w) = @_;
-
- my (@anchor) = $w->info('anchor');
- unless (@anchor)
- {
- @anchor = (0,0);
- $w->anchor('set', @anchor);
- $w->see(@anchor);
- }
-
- if ($w->info('anchor'))
- {
- # ! may not have any elements
- #
- $w->Callback('-command' => $w->info('anchor'));
- $w->selection('clear');
- $w->selection('set', @anchor);
- }
-
- $w->GoState('b0');
- }
-
-
-sub GoState_b10
- {
- my ($w) = @_;
-
- my (@anchor) = $w->info('anchor');
- unless (@anchor)
- {
- @anchor = (0,0);
- $w->anchor('set', @anchor);
- $w->see(@anchor);
- }
-
- if ($w->info('anchor'))
- {
- # ! may not have any elements
- #
- $w->Callback('-browsecmd' => $w->info('anchor'));
- $w->selection('clear');
- $w->selection('set', @anchor);
- }
-
- $w->GoState('b0');
- }
-
-#----------------------------------------------------------------------
-# MULTIPLE SELECTION
-#----------------------------------------------------------------------
-
-
-sub GoState_m0
- {
- my ($w) = @_;
- }
-
-sub GoState_m1
- {
- my ($w, $x, $y) = @_;
-
- my (@ent) = $w->mynearest($x,$y);
- if (@ent)
- {
- $w->anchor('set', @ent);
- $w->selection('clear');
- $w->selection('set', @ent);
- $w->Callback('-browsecmd' => @ent);
- }
-
- $w->GoState('m2');
- }
-
-sub GoState_m2
- {
- my ($w) = @_;
- }
-
-sub GoState_m3
- {
- my ($w) = @_;
-
- my (@ent) = $w->info('anchor');
- if (@ent)
- {
- $w->Callback('-browsecmd' => @ent);
- }
-
- $w->GoState('m0');
- }
-
-
-sub GoState_m4
- {
- my ($w, $x, $y) = @_;
-
- my (@from) = $w->info('anchor');
- my (@to) = $w->mynearest($x, $y);
- if (@to)
- {
- $w->selection('clear');
- $w->selection('set', @from, @to);
- $w->Callback('-browsecmd' => @to);
- }
- $w->GoState('m5');
- }
-
-sub GoState_m5
- {
- my ($w) = @_;
- }
-
-sub GoState_m6
- {
- my ($w, $x, $y) = @_;
-
- my (@ent) = $w->mynearest($x, $y);
- if (@ent)
- {
- $w->Callback('-browsecmd' => @ent);
- }
- $w->GoState('m0');
- }
-
-sub GoState_m7
- {
- my ($w, $x, $y) = @_;
-
- my (@from) = $w->info('anchor');
- my (@to) = $w->mynearest($x, $y);
- unless (@from)
- {
- @from = @to;
- $w->anchor('set', @from);
- }
- if (@to)
- {
- $w->selection('clear');
- $w->selection('set', @from, @to);
- $w->Callback('-browsecmd' => @to);
- }
- $w->GoState('m5');
- }
-
-
-sub GoState_m8 { shift->StartScan() }
-
-
-sub GoState_m9 { shift->DoScan() }
-
-
-sub GoState_xm7
- {
- my ($w, $x, $y) = @_;
-
- my (@ent) = $w->mynearest($x, $y);
- if (@ent)
- {
- $w->selection('clear');
- $w->selection('set', @ent);
- $w->Callback('-browsecmd' => @ent);
- }
- $w->GoState('m0');
- }
-
-#----------------------------------------------------------------------
-# EXTENDED SELECTION
-#----------------------------------------------------------------------
-
-sub GoState_e0
- {
- my ($w) = @_;
- }
-
-sub GoState_e1
- {
- my ($w, $x, $y) = @_;
- my (@ent) = $w->mynearest($x, $y);
- if (@ent)
- {
- $w->anchor('set', @ent);
- $w->selection('clear');
- $w->selection('set', @ent);
- $w->Callback('-browsecmd' => @ent);
- }
- $w->GoState('e2');
- }
-
-
-sub GoState_e2
- {
- my ($w) = @_;
- }
-
-sub GoState_e3
- {
- my ($w) = @_;
-
- my (@ent) = $w->info('anchor');
- if (@ent)
- {
- $w->Callback('-browsecmd' => @ent);
- }
- $w->GoState('e0');
- }
-
-sub GoState_e4
- {
- my ($w, $x, $y) = @_;
-
- my (@from) = $w->info('anchor');
- my (@to) = $w->mynearest($x, $y);
- if (@to)
- {
- $w->selection('clear');
- $w->selection('set', @from, @to);
- $w->Callback('-browsecmd' => @to);
- }
- $w->GoState('e5');
- }
-
-sub GoState_e5
- {
- my ($w) = @_;
- }
-
-sub GoState_e6
- {
- my ($w, $x, $y) = @_;
-
- my (@ent) = $w->mynearest($x, $y);
- if (@ent)
- {
- $w->Callback('-browsecmd' => @ent);
- }
- $w->GoState('e0');
- }
-
-sub GoState_e7
- {
- my ($w, $x, $y) = @_;
-
- my (@from) = $w->info('anchor');
- my (@to) = $w->mynearest($x, $y);
- unless (@from)
- {
- @from = @to;
- $w->anchor('set', @from);
- }
- if (@to)
- {
- $w->selection('clear');
- $w->selection('set', @from, @to);
- $w->Callback('-browsecmd' => @to);
- }
- $w->GoState('e5');
- }
-
-sub GoState_e8 { shift->StartScan(); }
-
-sub GoState_e9 { shift->DoScan(); }
-
-sub GoState_e10
- {
- my ($w, $x, $y) = @_;
-
- my (@ent) = $w->mynearest($x, $y);
- if (@ent)
- {
- if ($w->info('anchor'))
- {
- $w->anchor('set', @ent);
- }
- if ($w->selection('includes', @ent))
- {
- $w->selection('clear', @ent);
- }
- else
- {
- $w->selection('set', @ent);
- }
- $w->Callback('-browsecmd' => @ent);
- }
- $w->GoState('e2');
- }
-
-sub GoState_xe7
- {
- my ($w, $x, $y) = @_;
-
- my (@ent) = $w->mynearest($x, $y);
- if (@ent)
- {
- $w->selection('clear');
- $w->selection('set', @ent);
- $w->Callback('-command' => @ent);
- }
- $w->GoState('e0');
- }
-
-
-#----------------------------------------------------------------------
-# HODGE PODGE
-#----------------------------------------------------------------------
-
-sub GoState_12
- {
- my ($w, $x, $y) = @_;
-
- $w->CancelRepeat; # xxx will not work
- $w->GoState(5, $x, $y);
- }
-#proc tixGrid:GoState-12 {w x y} {
-# tkCancelRepeat
-# tixGrid:GoState 5 $w $x $y
-#}
-
-sub GoState_13
- {
- # FIX: a) $ent or @ent, b) 13 is never called!!? same in Grid.tcl
- my ($w, @ent, @oldEnt) = @_;
-
- my $data = $w->MainWindow->privateData('Tix');
- $data->{indicator} = \@ent;
- $data->{oldEntry} = \@oldEnt;
- $w->IndicatorCmd('<Arm>', @ent);
- }
-# set tkPriv(tix,oldEnt) $oldEnt
-# tixGrid:IndicatorCmd $w <Arm> $ent
-#}
-
-sub GoState_14
- {
- my ($w, $x, $y) = @_;
-
- my $data = $w->MainWindow->privateData('Tix');
- if ($w->InsideArmedIndicator($x, $y))
- {
- $w->anchor('set', @{ $data->{indicator} });
- $w->selection('clear');
- $w->selection('set', @{ $data->{indicator} });
- $w->IndicatorCmd('<Activate>', @{ $data->{indicator} });
- }
- else
- {
- $w->IndicatorCmd('<Disarm>', @{ $data->{indicator} });
- }
- delete($data->{indicator});
- $w->GoState(0);
- }
-
-sub GoState_16
- {
- my ($w, @ent) = @_;
-
- return unless (@ent);
- if ($w->cget('-selectmode') ne 'single')
- {
- $w->Select(@ent);
- $w->Browse(@ent);
- }
- }
-
-sub GoState_18
- {
- my ($w) = @_;
-
- $w->CancelRepeat; ## xxx
- $w->GoState(6, $Tk::x, $Tk::y);
- }
-
-sub GoState_20
- {
- my ($w, $x, $y) = @_;
-
- my $data = $w->MainWindow->privateData('Tix');
- if ($w->InsideArmedIndicator($x, $y))
- {
- $w->IndicatorCmd('<Arm>', $data->{'indicator'});
- }
- else
- {
- $w->GoState(21, $x, $y);
- }
- }
-
-sub GoState_21
- {
- my ($w, $x, $y) = @_;
-
- my $data = $w->MainWindow->privateData('Tix');
- unless ($w->InsideArmedIndicator($x, $y))
- {
- $w->IndicatorCmd('<Disarm>', $data->{'indicator'});
- }
- else
- {
- $w->GoState(20, $x, $y);
- }
- }
-
-sub GoState_22
- {
- my ($w) = @_;
- my $data = $w->MainWindow->privateData('Tix');
- if (@{ $data->{oldEntry} })
- {
- $w->anchor('set', @{ $data->{oldEntry} });
- }
- else
- {
- $w->anchor('clear');
- }
- $w->GoState(0);
- }
-
-
-#----------------------------------------------------------------------
-# callback actions
-#----------------------------------------------------------------------
-
-sub SetAnchor
- {
- my ($w, @ent) = @_;
-
- if (@ent)
- {
- $w->anchor('set', @ent);
-# $w->see(@ent);
- }
- }
-
-# xxx check @ent of @$ent
-sub Select
- {
- my ($w, @ent) = @_;
- $w->selection('clear');
- $w->selection('set', @ent)
- }
-
-# xxx check new After handling
-sub StartScan
- {
- my ($w) = @_;
- $Tk::afterId = $w->after(50, [AutoScan, $w]);
- }
-
-sub DoScan
- {
- my ($w) = @_;
- my $x = $Tk::x;
- my $y = $Tk::y;
- my $X = $Tk::X;
- my $Y = $Tk::Y;
-
- my $out = 0;
- if ($y >= $w->height)
- {
- $w->yview('scroll', 1, 'units');
- $out = 1;
- }
- if ($y < 0)
- {
- $w->yview('scroll', -1, 'units');
- $out = 1;
- }
- if ($x >= $w->width)
- {
- $w->xview('scroll', 2, 'units');
- $out = 1;
- }
- if ($x < 0)
- {
- $w->xview('scroll', -2, 'units');
- $out = 1;
- }
- if ($out)
- {
- $Tk::afterId = $w->after(50, ['AutoScan', $w]);
- }
- }
-
-
-#proc tixGrid:CallBrowseCmd {w ent} {
-# return
-#
-# set browsecmd [$w cget -browsecmd]
-# if {$browsecmd != ""} {
-# set bind(specs) {%V}
-# set bind(%V) $ent
-#
-# tixEvalCmdBinding $w $browsecmd bind $ent
-# }
-#}
-
-#proc tixGrid:CallCommand {w ent} {
-# set command [$w cget -command]
-# if {$command != ""} {
-# set bind(specs) {%V}
-# set bind(%V) $ent
-#
-# tixEvalCmdBinding $w $command bind $ent
-# }
-#}
-
-# tixGrid:EditCell --
-#
-# This command is called when "$w edit set $x $y" is called. It causes
-# an SetEdit call when the grid's state is 0.
-#
-
-sub EditCell
- {
- my ($w, $x, $y) = @_;
- my $list = $w->privateData()->{'list'};
- if ($w->GetState == 0)
- {
- $w->SetEdit($x, $y); # xxx really correct ? once 2, once 4 args?
- }
- else
- {
- push(@$list, [ $w, 'SetEdit', $x, $y]);
- }
- }
-#proc tixGrid:EditCell {w x y} {
-# set list $w:_list
-# global $list
-#
-# case [tixGrid:GetState $w] {
-# {0} {
-# tixGrid:SetEdit $w [list $x $y]
-# }
-# default {
-# lappend $list [list tixGrid:SetEdit $w [list $x $y]]
-# }
-# }
-#}
-
-
-# tixGrid:EditApply --
-#
-# This command is called when "$w edit apply $x $y" is called. It causes
-# an CheckEdit call when the grid's state is 0.
-#
-
-sub EditApply
- {
- my ($w) = @_;
- my $list = $w->privateData()->{'list'};
- if ($w->GetState eq 0)
- {
- $w->CheckEdit; # xxx really correct ? once 2, once 4 args?
- }
- else
- {
- push(@$list, $w->CheckEdit);
- }
- }
-#proc tixGrid:EditApply {w} {
-# set list $w:_list
-# global $list
-#
-# case [tixGrid:GetState $w] {
-# {0} {
-# tixGrid:CheckEdit $w
-# }
-# default {
-# lappend $list [list tixGrid:CheckEdit $w]
-# }
-# }
-#}
-
-# tixGrid:CheckEdit --
-#
-# This procedure is called when the user sets the focus on a cell.
-# If another cell is being edited, apply the changes of that cell.
-#
-
-sub CheckEdit
- {
- my ($w) = @_;
- my $edit = $w->privateData->{editentry};
- if (Tk::Exists($edit))
- {
- # If it -command is not empty, it is being used for another cell.
- # Invoke it so that the other cell can be updated.
- #
- if (defined $edit->cget('-command'))
- {
- $edit->invoke; # xxx no args??
- }
- }
- }
-
-sub SetFocus
- {
- my ($w) = @_;
- if ($w->cget('-takefocus'))
- {
-$w->focus;
-# # xxx translation of if ![string match $w.* [focus -displayof $w]] {
-# my $hasfocus = $w->focus(-displayof => $w)->pathname;
-# my $pathname = $w->pathname;
-# if ($hasfocus =~ /\Q$pathname\E.*/)
-# {
-# $w->focus
-# }
- }
- }
-
-
-# tixGrid:SetEdit --
-#
-# Puts a floatentry on top of an editable entry.
-#
-
-sub SetEdit
- {
- my ($w, $px, $py) = @_;
-
- $w->CheckEdit;
-
- my $efc = $w->cget('-editnotifycmd');
- return unless ( defined($efc) && length($efc) );
-
- unless ($w->Callback('-editnotifycmd' => $px, $py))
- {
- print STDERR "editnotifycmd not defined or returned false\n";
- return;
- }
-
- my $oldvalue;
- if ($w->info('exists', $px, $py))
- {
- # if entry doesn't support -text option. Can't edit it.
- #
- # If the application wants to force editing of an entry, it could
- # delete or replace the entry in the editnotifyCmd procedure.
- #
- Tk::catch { $oldvalue = $w->entrycget($px, $py, '-text'); };
- if ($@)
- {
- return;
- }
- }
- else
- {
- $oldvalue = '';
- }
-
- my @bbox = $w->info('bbox', $px, $py);
-
- my $edit = $w->privateData()->{__EDIT__};
- unless (Tk::Exists($edit))
- {
- require Tk::FloatEntry;
- $edit = $w->FloatEntry();
- $w->privateData()->{__EDIT__} = $edit;
- }
- $edit->configure(-command=>[\&DoneEdit, $w, $px, $py]);
- $edit->post(@bbox);
- $edit->configure(-value=>$oldvalue);
-}
-
-
-sub DoneEdit
- {
- my ($w, $x, $y, @args) = @_;
-
- my $edit = $w->privateData()->{__EDIT__};
- $edit->configure(-command=>undef);
- $edit->unpost;
-
- # FIX xxx
- # set value [tixEvent value]
- my $value = $edit->get;
- if ($w->info('exists', $x, $y))
- {
- Tk::catch { $w->entryconfigure($x, $y, -text=>$value) };
- if ($@)
- {
- return
- }
- }
- elsif ( length($value) )
- {
- # This needs to be catch'ed because the default itemtype may
- # not support the -text option
- #
- Tk::catch { $w->set($x,$y,-text $value); };
- if ($@)
- {
- return;
- }
- }
- else
- {
- return;
- }
- $w->Callback('-editdonecmd' => $x, $y);
- }
-
-1;
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Tk/Tk.xbm b/Master/tlpkg/tlperl/lib/Tk/Tk.xbm
deleted file mode 100644
index 136d4793037..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Tk.xbm
+++ /dev/null
@@ -1,44 +0,0 @@
-#define Tk.xbm_width 61
-#define Tk.xbm_height 61
-static unsigned char Tk.xbm_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0xf8, 0x0e, 0x00, 0x00,
- 0x00, 0xe0, 0x1e, 0x00, 0xbe, 0x3e, 0x00, 0x00, 0x00, 0xfb, 0x1e, 0x00,
- 0xfe, 0x7f, 0x00, 0x00, 0x80, 0xdf, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x00,
- 0x80, 0xe0, 0x3d, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x47, 0x7f, 0x80,
- 0xff, 0xfd, 0x01, 0x00, 0x00, 0x7f, 0x3e, 0xc0, 0xff, 0xf1, 0x01, 0x00,
- 0x00, 0x30, 0x7f, 0xf0, 0xfe, 0xb3, 0x03, 0x00, 0x00, 0xf8, 0x3e, 0x7c,
- 0xff, 0xcf, 0x07, 0x00, 0x00, 0x78, 0x37, 0xfc, 0x7b, 0xc3, 0x07, 0x00,
- 0x00, 0xfc, 0x3d, 0xfe, 0x3c, 0x25, 0x0e, 0x00, 0x00, 0xfc, 0x3e, 0x5f,
- 0x18, 0x41, 0x0b, 0x00, 0x00, 0x5c, 0x3f, 0x5f, 0xf0, 0x59, 0x1b, 0x00,
- 0x00, 0xdc, 0x9f, 0x3f, 0xe8, 0xbe, 0x17, 0x00, 0x00, 0xbc, 0x9f, 0x2f,
- 0xa8, 0x5b, 0x15, 0x00, 0x00, 0xdc, 0xdf, 0x25, 0x48, 0x7a, 0x34, 0x00,
- 0x00, 0x7c, 0xce, 0x1f, 0x20, 0x2c, 0x36, 0x00, 0x00, 0x7c, 0xa7, 0x1f,
- 0xcc, 0x09, 0xf0, 0x00, 0x00, 0xfc, 0xae, 0x1f, 0x49, 0x05, 0xf6, 0x00,
- 0x00, 0xfc, 0xac, 0x3f, 0xf8, 0x11, 0xf6, 0x00, 0x00, 0xf8, 0x8d, 0x3f,
- 0x8e, 0x0e, 0xd6, 0x01, 0x00, 0xf8, 0x9c, 0x7e, 0xd7, 0x5b, 0xff, 0x03,
- 0x00, 0x70, 0x83, 0x5f, 0xcf, 0xfd, 0xbf, 0x01, 0x00, 0xe0, 0xc3, 0x3b,
- 0xc7, 0xff, 0x3f, 0x03, 0x00, 0xe0, 0xcf, 0xbf, 0xe3, 0xff, 0x97, 0x03,
- 0x00, 0x80, 0xfb, 0x7f, 0xfb, 0xff, 0x17, 0x01, 0x00, 0x80, 0xef, 0xff,
- 0xb3, 0x6f, 0x17, 0x03, 0x00, 0x00, 0xff, 0xff, 0xdf, 0x3f, 0x17, 0x03,
- 0x00, 0x00, 0x88, 0xff, 0xbf, 0x3f, 0x1b, 0x03, 0x00, 0x00, 0x00, 0x7b,
- 0x3d, 0x1f, 0x9f, 0x01, 0x00, 0x00, 0x80, 0x1f, 0x7f, 0x1f, 0x9e, 0x00,
- 0x00, 0x00, 0x80, 0x1f, 0x3f, 0x0f, 0x1e, 0x00, 0x00, 0x00, 0x80, 0x1f,
- 0x1f, 0x0f, 0x1e, 0x00, 0x00, 0x00, 0x80, 0x1f, 0x1f, 0x0e, 0x1e, 0x00,
- 0x00, 0xfe, 0x81, 0x8f, 0x1f, 0x0f, 0x1c, 0x00, 0x00, 0x98, 0x81, 0xc7,
- 0x1f, 0x0e, 0x18, 0x00, 0x00, 0x98, 0x01, 0xc7, 0x0f, 0x0a, 0x18, 0x00,
- 0xfc, 0x98, 0x99, 0xc7, 0x07, 0x0e, 0x18, 0x00, 0x8c, 0x99, 0x8d, 0xc7,
- 0x02, 0x0e, 0x18, 0x00, 0x8c, 0x99, 0x07, 0xc3, 0x03, 0x03, 0x18, 0x00,
- 0x8c, 0x99, 0x07, 0xc7, 0x01, 0x03, 0x28, 0x00, 0x8c, 0x99, 0x0d, 0x03,
- 0x03, 0x01, 0x08, 0x00, 0xfc, 0x98, 0x19, 0x03, 0x86, 0x01, 0x18, 0x00,
- 0x0c, 0x00, 0x00, 0x03, 0xc4, 0x01, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x03,
- 0x88, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x03, 0x90, 0x00, 0x18, 0x00,
- 0x00, 0x00, 0x00, 0x01, 0x30, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, 0x01,
- 0xf0, 0x01, 0x08, 0x00, 0x00, 0x00, 0x80, 0x01, 0xf8, 0x01, 0x18, 0x00,
- 0x00, 0x00, 0xc0, 0x01, 0x9e, 0x03, 0x04, 0x00, 0x00, 0x00, 0xc0, 0x01,
- 0xb3, 0x01, 0x04, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x01, 0x18, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xdc, 0x00,
- 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/Master/tlpkg/tlperl/lib/Tk/Tk.xpm b/Master/tlpkg/tlperl/lib/Tk/Tk.xpm
deleted file mode 100644
index 7880a637f39..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Tk.xpm
+++ /dev/null
@@ -1,41 +0,0 @@
-/* XPM */
-static char *Tk[] = {
-/* width height num_colors chars_per_pixel */
-" 32 32 2 1",
-/* colors */
-"# c #008080",
-"a c #ff0000",
-/* pixels */
-"################################",
-"################################",
-"################################",
-"################################",
-"################################",
-"################################",
-"##########aaaaaaaa##############",
-"#######aaaaaaaaaaaa#######aa####",
-"#####aaaaaaaaaaaaaa######aaa####",
-"####aaaaaaaaaaaaaaaa####aaaa####",
-"####aaaaaaa######aa####aaaa#####",
-"###aaaa#########aaa###aaaa######",
-"###aaaa#########aa###aaaa#######",
-"######aa#######aa####aaa########",
-"##############aaa###aaaa########",
-"#############aaa###aaaa##aaa####",
-"#############aa####aaa#aaaaa####",
-"############aaa###aaa#aaaaaa####",
-"###########aaa####aa#aa#aaa#####",
-"###########aaa###aa#aa#aaa######",
-"##########aaa####aaaaaaaa#aa####",
-"##########aaa####aaaaaaa##aa####",
-"#########aaaa####aaaaaaaaaa#####",
-"#########aaa#####aa##aaaaa######",
-"#########aaa##########aa########",
-"################################",
-"################################",
-"################################",
-"################################",
-"################################",
-"################################",
-"################################"
-};
diff --git a/Master/tlpkg/tlperl/lib/Tk/TkXSUB.def b/Master/tlpkg/tlperl/lib/Tk/TkXSUB.def
deleted file mode 100644
index 8f60974226e..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/TkXSUB.def
+++ /dev/null
@@ -1,62 +0,0 @@
-MkXSUB("Tk::bind", XS_Tk_bind, XStoBind, Tk_BindObjCmd)
-MkXSUB("Tk::pack", XS_Tk_pack, XStoAfterSub, Tk_PackObjCmd)
-MkXSUB("Tk::grid", XS_Tk_grid, XStoGrid, Tk_GridObjCmd)
-MkXSUB("Tk::place", XS_Tk_place, XStoAfterSub, Tk_PlaceObjCmd)
-MkXSUB("Tk::form", XS_Tk_form, XStoAfterSub, Tix_FormCmd)
-MkXSUB("Tk::itemstyle", XS_Tk_itemstyle, XStoTclCmd, Tix_ItemStyleCmd)
-MkXSUB("Tk::winfo", XS_Tk_winfo, XStoSubCmd, Tk_WinfoObjCmd)
-MkXSUB("Tk::font", XS_Tk_font, XStoFont, Tk_FontObjCmd)
-MkXSUB("Tk::wm", XS_Tk_wm, XStoAfterSub, Tk_WmObjCmd)
-MkXSUB("Tk::grab", XS_Tk_grab, XStoSubCmd, Tk_GrabObjCmd)
-MkXSUB("Tk::focus", XS_Tk_focus, XStoSubCmd, Tk_FocusObjCmd)
-MkXSUB("Tk::event", XS_Tk_event, XStoEvent, Tk_EventObjCmd)
-MkXSUB("Tk::property", XS_Tk_property, XStoSubCmd, Tk_PropertyCmd)
-MkXSUB("Tk::clipboard", XS_Tk_clipboard, XStoDisplayof, Tk_ClipboardObjCmd)
-MkXSUB("Tk::bell", XS_Tk_bell, XStoDisplayof, Tk_BellObjCmd)
-MkXSUB("Tk::bindtags", XS_Tk_bindtags, XStoTk, Tk_BindtagsObjCmd)
-MkXSUB("Tk::destroy", XS_Tk_destroy, XStoTk, Tk_DestroyObjCmd)
-MkXSUB("Tk::raise", XS_Tk_raise, XStoTk, Tk_RaiseObjCmd)
-MkXSUB("Tk::lower", XS_Tk_lower, XStoTk, Tk_LowerObjCmd)
-MkXSUB("Tk::option", XS_Tk_option, XStoOption, Tk_OptionObjCmd)
-MkXSUB("Tk::image", XS_Tk_image, XStoImage, Tk_ImageObjCmd)
-MkXSUB("Tk::selection", XS_Tk_selection, XStoTk, Tk_SelectionObjCmd)
-
-#if defined(__WIN32__) || defined(MAC_TCL)
-MkXSUB("Tk::tk_chooseColor", XS_Tk_tk_chooseColor, XStoTk, Tk_ChooseColorObjCmd)
-MkXSUB("Tk::tk_chooseDirectory", XS_Tk_tk_chooseDirectory, XStoTk, Tk_ChooseDirectoryObjCmd)
-MkXSUB("Tk::tk_getOpenFile", XS_Tk_tk_getOpenFile, XStoTk, Tk_GetOpenFileObjCmd)
-MkXSUB("Tk::tk_getSaveFile", XS_Tk_tk_getSaveFile, XStoTk, Tk_GetSaveFileObjCmd)
-#endif
-#if defined(__WIN32__)
-MkXSUB("Tk::tk_messageBox", XS_Tk_tk_messageBox, XStoTk, Tk_MessageBoxObjCmd)
-#endif
-
-MkXSUB("Tk::tk", XS_Tk_tk, XStoTclCmd, Tk_TkObjCmd)
-
-#if 0
-MkXSUB("Tk::exit", XS_Tk_exit, XStoNoWindow, Tcl_ExitCmd)
-MkXSUB("Tk::fileevent", XS_Tk_fileevent, XStoNoWindow, Tcl_FileeventCmd)
-#endif
-MkXSUB("Tk::after", XS_Tk_after, XStoNoWindow, Tcl_AfterObjCmd)
-#ifndef WIN32
-MkXSUB("Tk::send", XS_Tk_send, XStoTclCmd, Tk_SendCmd)
-#endif
-
-MkXSUB("Tk::button", XS_Tk_button, XStoTclCmdNull, Tk_ButtonObjCmd)
-MkXSUB("Tk::checkbutton", XS_Tk_checkbutton, XStoTclCmdNull, Tk_CheckbuttonObjCmd)
-MkXSUB("Tk::label", XS_Tk_label, XStoTclCmdNull, Tk_LabelObjCmd)
-MkXSUB("Tk::radiobutton", XS_Tk_radiobutton, XStoTclCmdNull, Tk_RadiobuttonObjCmd)
-MkXSUB("Tk::_menu", XS_Tk__menu, XStoTclCmdNull, 0)
-
-MkXSUB("Tk::message", XS_Tk_message, XStoTclCmd, Tk_MessageObjCmd)
-MkXSUB("Tk::frame", XS_Tk_frame, XStoTclCmd, Tk_FrameObjCmd)
-MkXSUB("Tk::labelframe", XS_Tk_labelframe, XStoTclCmd, Tk_LabelframeObjCmd)
-MkXSUB("Tk::panedwindow", XS_Tk_panedwindow, XStoTclCmd, Tk_PanedWindowObjCmd)
-MkXSUB("Tk::toplevel", XS_Tk_toplevel, XStoTclCmd, Tk_ToplevelObjCmd)
-MkXSUB("Tk::update", XS_Tk_update, XStoTclCmd, Tk_UpdateObjCmd)
-MkXSUB("Tk::tkwait", XS_Tk_tkwait, XStoTclCmd, Tk_TkwaitObjCmd)
-MkXSUB("Tk::configure", XS_Tk_configure, XStoWidget, newSVpv("configure",0))
-MkXSUB("Tk::cget", XS_Tk_cget, XStoWidget, newSVpv("cget",0))
-
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Toplevel.pm b/Master/tlpkg/tlperl/lib/Tk/Toplevel.pm
deleted file mode 100644
index 7bcd156d475..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Toplevel.pm
+++ /dev/null
@@ -1,211 +0,0 @@
-# Copyright (c) 1995-2003 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-package Tk::Toplevel;
-use AutoLoader;
-
-use vars qw($VERSION);
-$VERSION = '4.006'; # $Id: //depot/Tkutf8/Tk/Toplevel.pm#6 $
-
-use base qw(Tk::Wm Tk::Frame);
-
-Construct Tk::Widget 'Toplevel';
-
-sub Tk_cmd { \&Tk::toplevel }
-
-sub CreateOptions
-{
- return (shift->SUPER::CreateOptions,'-screen','-use')
-}
-
-sub Populate
-{
- my ($cw,$arg) = @_;
- $cw->SUPER::Populate($arg);
- $cw->ConfigSpecs('-title',['METHOD',undef,undef,$cw->class]);
-}
-
-sub Icon
-{
- my ($top,%args) = @_;
- my $icon = $top->iconwindow;
- my $state = $top->state;
- if ($state ne 'withdrawn')
- {
- $top->withdraw;
- $top->update; # Let attributes propogate
- }
- unless (defined $icon)
- {
- $icon = Tk::Toplevel->new($top,'-borderwidth' => 0,'-class'=>'Icon');
- $icon->withdraw;
- # Fake Populate
- my $lab = $icon->Component('Label' => 'icon');
- $lab->pack('-expand'=>1,'-fill' => 'both');
- $icon->ConfigSpecs(DEFAULT => ['DESCENDANTS']);
- # Now do tail of InitObject
- $icon->ConfigDefault(\%args);
- # And configure that new would have done
- $top->iconwindow($icon);
- $top->update;
- $lab->DisableButtonEvents;
- $lab->update;
- }
- $top->iconimage($args{'-image'}) if (exists $args{'-image'});
- $icon->configure(%args);
- $icon->idletasks; # Let size request propogate
- $icon->geometry($icon->ReqWidth . 'x' . $icon->ReqHeight);
- $icon->update; # Let attributes propogate
- $top->deiconify if ($state eq 'normal');
- $top->iconify if ($state eq 'iconic');
-}
-
-sub menu
-{
- my $w = shift;
- my $menu;
- $menu = $w->cget('-menu');
- unless (defined $menu)
- {
- $w->configure(-menu => ($menu = $w->SUPER::menu))
- }
- $menu->configure(@_) if @_;
- return $menu;
-}
-
-
-1;
-__END__
-
-#----------------------------------------------------------------------
-#
-# Focus Group
-#
-# Focus groups are used to handle the user's focusing actions inside a
-# toplevel.
-#
-# One example of using focus groups is: when the user focuses on an
-# entry, the text in the entry is highlighted and the cursor is put to
-# the end of the text. When the user changes focus to another widget,
-# the text in the previously focused entry is validated.
-#
-
-#----------------------------------------------------------------------
-# tkFocusGroup_Create --
-#
-# Create a focus group. All the widgets in a focus group must be
-# within the same focus toplevel. Each toplevel can have only
-# one focus group, which is identified by the name of the
-# toplevel widget.
-#
-sub FG_Create {
- my $t = shift;
- unless (exists $t->{'_fg'}) {
- $t->{'_fg'} = 1;
- $t->bind('<FocusIn>', sub {
- my $w = shift;
- my $Ev = $w->XEvent;
- $t->FG_In($w, $Ev->d);
- }
- );
- $t->bind('<FocusOut>', sub {
- my $w = shift;
- my $Ev = $w->XEvent;
- $t->FG_Out($w, $Ev->d);
- }
- );
- $t->bind('<Destroy>', sub {
- my $w = shift;
- my $Ev = $w->XEvent;
- $t->FG_Destroy($w);
- }
- );
- # <Destroy> is not sufficient to break loops if never mapped.
- $t->OnDestroy([$t,'FG_Destroy']);
- }
-}
-
-# tkFocusGroup_BindIn --
-#
-# Add a widget into the "FocusIn" list of the focus group. The $cmd will be
-# called when the widget is focused on by the user.
-#
-sub FG_BindIn {
- my($t, $w, $cmd) = @_;
- $t->Error("focus group \"$t\" doesn't exist") unless (exists $t->{'_fg'});
- $t->{'_FocusIn'}{$w} = Tk::Callback->new($cmd);
-}
-
-# tkFocusGroup_BindOut --
-#
-# Add a widget into the "FocusOut" list of the focus group. The
-# $cmd will be called when the widget loses the focus (User
-# types Tab or click on another widget).
-#
-sub FG_BindOut {
- my($t, $w, $cmd) = @_;
- $t->Error("focus group \"$t\" doesn't exist") unless (exists $t->{'_fg'});
- $t->{'_FocusOut'}{$w} = Tk::Callback->new($cmd);
-}
-
-# tkFocusGroup_Destroy --
-#
-# Cleans up when members of the focus group is deleted, or when the
-# toplevel itself gets deleted.
-#
-sub FG_Destroy {
- my($t, $w) = @_;
- if (!defined($w) || $t == $w) {
- delete $t->{'_fg'};
- delete $t->{'_focus'};
- delete $t->{'_FocusOut'};
- delete $t->{'_FocusIn'};
- } else {
- if (exists $t->{'_focus'}) {
- delete $t->{'_focus'} if ($t->{'_focus'} == $w);
- }
- delete $t->{'_FocusIn'}{$w};
- delete $t->{'_FocusOut'}{$w};
- }
-}
-
-# tkFocusGroup_In --
-#
-# Handles the <FocusIn> event. Calls the FocusIn command for the newly
-# focused widget in the focus group.
-#
-sub FG_In {
- my($t, $w, $detail) = @_;
- if (defined $t->{'_focus'} and $t->{'_focus'} eq $w) {
- # This is already in focus
- return;
- } else {
- $t->{'_focus'} = $w;
- $t->{'_FocusIn'}{$w}->Call if exists $t->{'_FocusIn'}{$w};
- }
-}
-
-# tkFocusGroup_Out --
-#
-# Handles the <FocusOut> event. Checks if this is really a lose
-# focus event, not one generated by the mouse moving out of the
-# toplevel window. Calls the FocusOut command for the widget
-# who loses its focus.
-#
-sub FG_Out {
- my($t, $w, $detail) = @_;
- if ($detail ne 'NotifyNonlinear' and $detail ne 'NotifyNonlinearVirtual') {
- # This is caused by mouse moving out of the window
- return;
- }
- unless (exists $t->{'_FocusOut'}{$w}) {
- return;
- } else {
- $t->{'_FocusOut'}{$w}->Call;
- delete $t->{'_focus'};
- }
-}
-
-1;
-
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Tk/Trace.pm b/Master/tlpkg/tlperl/lib/Tk/Trace.pm
deleted file mode 100644
index 1e38e79a065..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Trace.pm
+++ /dev/null
@@ -1,405 +0,0 @@
-package Tk::Trace;
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #7 $ =~ /\D(\d+)\s*$/;
-
-use Carp;
-use Tie::Watch;
-use strict;
-
-# The %TRACE hash is indexed by stringified variable reference. Each hash
-# bucket contains an array reference having two elements:
-#
-# ->[0] = a reference to the variable's Tie::Watch object
-# ->[1] = a hash reference with these keys: -fetch, -store, -destroy
-# ->{key} = [ active flag, [ callback list ] ]
-# where each callback is a normalized callback array reference
-#
-# Thus, each trace type (r w u ) may have multiple traces.
-
-my %TRACE; # watchpoints indexed by stringified ref
-
-my %OP = ( # trace to Tie::Watch operation map
- r => '-fetch',
- w => '-store',
- u => '-destroy',
-);
-
-sub fetch {
-
- # fetch() wraps the user's callback with necessary tie() bookkeeping
- # and invokes the callback with the proper arguments. It expects:
- #
- # $_[0] = Tie::Watch object
- # $_[1] = undef for a scalar, an index/key for an array/hash
- #
- # The user's callback is passed these arguments:
- #
- # $_[0] = undef for a scalar, index/key for array/hash
- # $_[1] = current value
- # $_[2] = operation 'r'
- # $_[3 .. $#_] = optional user callback arguments
- #
- # The user callback returns the final value to assign the variable.
-
- my $self = shift; # Tie::Watch object
- my $val = $self->Fetch(@_); # get variable's current value
- my $aref = $self->Args('-fetch'); # argument reference
- my $call = $TRACE{$aref->[0]}->[1]->{-fetch}; # active flag/callbacks
- return $val unless $call->[0]; # if fetch inactive
-
- my $final_val;
- foreach my $aref (reverse @$call[ 1 .. $#{@$call} ] ) {
- my ( @args_copy ) = @$aref;
- my $sub = shift @args_copy; # user's callback
- unshift @_, undef if scalar @_ == 0; # undef "index" for a scalar
- my @args = @_; # save for post-callback work
- $args[1] = &$sub(@_, $val, 'r', @args_copy); # invoke user callback
- shift @args unless defined $args[0]; # drop scalar "index"
- $final_val = $self->Store(@args); # update variable's value
- }
- $final_val;
-
-} # end fetch
-
-sub store {
-
- # store() wraps the user's callback with necessary tie() bookkeeping
- # and invokes the callback with the proper arguments. It expects:
- #
- # $_[0] = Tie::Watch object
- # $_[1] = new value for a scalar, index/key for an array/hash
- # $_[2] = undef for a scalar, new value for an array/hash
- #
- # The user's callback is passed these arguments:
- #
- # $_[0] = undef for a scalar, index/key for array/hash
- # $_[1] = new value
- # $_[2] = operation 'w'
- # $_[3 .. $#_] = optional user callback arguments
- #
- # The user callback returns the final value to assign the variable.
-
- my $self = shift; # Tie::Watch object
- my $val = $self->Store(@_); # store variable's new value
- my $aref = $self->Args('-store'); # argument reference
- my $call = $TRACE{$aref->[0]}->[1]->{-store}; # active flag/callbacks
- return $val unless $call->[0]; # if store inactive
-
- foreach my $aref ( reverse @$call[ 1 .. $#{@$call} ] ) {
- my ( @args_copy ) = @$aref;
- my $sub = shift @args_copy; # user's callback
- unshift @_, undef if scalar @_ == 1; # undef "index" for a scalar
- my @args = @_; # save for post-callback work
- $args[1] = &$sub(@_, 'w', @args_copy); # invoke user callback
- shift @args unless defined $args[0]; # drop scalar "index"
- $self->Store(@args); # update variable's value
- }
-
-} # end store
-
-sub destroy {
-
- # destroy() wraps the user's callback with necessary tie() bookkeeping
- # and invokes the callback with the proper arguments. It expects:
- #
- # $_[0] = Tie::Watch object
- #
- # The user's callback is passed these arguments:
- #
- # $_[0] = undef for a scalar, index/key for array/hash
- # $_[1] = final value
- # $_[2] = operation 'u'
- # $_[3 .. $#_] = optional user callback arguments
-
- my $self = shift; # Tie::Watch object
- my $val = $self->Fetch(@_); # variable's final value
- my $aref = $self->Args('-destroy'); # argument reference
- my $call = $TRACE{$aref->[0]}->[1]->{-destroy}; # active flag/callbacks
- return $val unless $call->[0]; # if destroy inactive
-
- foreach my $aref ( reverse @$call[ 1 .. $#{@$call} ] ) {
- my ( @args_copy ) = @$aref;
- my $sub = shift @args_copy; # user's callback
- my $val = $self->Fetch(@_); # get final value
- &$sub(undef, $val, 'u', @args_copy); # invoke user callback
- $self->Destroy(@_); # destroy variable
- }
-
-} # end destroy
-
-sub Tk::Widget::traceVariable {
-
- my( $parent, $vref, $op, $callback ) = @_;
-
- {
- $^W = 0;
- croak "Illegal parent '$parent', not a widget" unless ref $parent;
- croak "Illegal variable '$vref', not a reference" unless ref $vref;
- croak "Illegal trace operation '$op'" unless $op;
- croak "Illegal trace operation '$op'" if $op =~ /[^rwu]/;
- croak "Illegal callback ($callback)" unless $callback;
- }
-
- # Need to add our internal callback to user's callback arg list
- # so we can call ours first, followed by the user's callback and
- # any user arguments. Trace callbacks are activated as requied.
-
- my $trace = $TRACE{$vref};
- if ( not defined $trace ) {
- my $watch = Tie::Watch->new(
- -variable => $vref,
- -fetch => [ \&fetch, $vref ],
- -store => [ \&store, $vref ],
- -destroy => [ \&destroy, $vref ],
- );
- $trace = $TRACE{$vref} =
- [$watch,
- {
- -fetch => [ 0 ],
- -store => [ 0 ],
- -destroy => [ 0 ],
- }
- ];
- }
-
- $callback = [ $callback ] if ref $callback eq 'CODE';
-
- foreach my $o (split '', $op) {
- push @{$trace->[1]->{$OP{$o}}}, $callback;
- $trace->[1]->{$OP{$o}}->[0] = 1; # activate
- }
-
- return $trace; # for peeking
-
-} # end traceVariable
-
-sub Tk::Widget::traceVdelete {
-
- my ( $parent, $vref, $op_not_honored, $callabck_not_honored ) = @_;
-
- if ( defined $TRACE{$vref}->[0] ) {
- $$vref = $TRACE{$vref}->[0]->Fetch;
- $TRACE{$vref}->[0]->Unwatch;
- delete $TRACE{$vref};
- }
-
-} # end traceVdelete
-
-sub Tk::Widget::traceVinfo {
-
- my ( $parent, $vref ) = @_;
-
- return ( defined $TRACE{$vref}->[0] ) ? $TRACE{$vref}->[0]->Info : undef;
-
-} # end traceVinfo
-
-=head1 NAME
-
-Tk::Trace - emulate Tcl/Tk B<trace> functions.
-
-=head1 SYNOPSIS
-
- use Tk::Trace
-
- $mw->traceVariable(\$v, 'wru' => [\&update_meter, $scale]);
- %vinfo = $mw->traceVinfo(\$v);
- print "Trace info :\n ", join("\n ", @{$vinfo{-legible}}), "\n";
- $mw->traceVdelete(\$v);
-
-=head1 DESCRIPTION
-
-This class module emulates the Tcl/Tk B<trace> family of commands by
-binding subroutines of your devising to Perl variables using simple
-B<Tie::Watch> features.
-
-Callback format is patterned after the Perl/Tk scheme: supply either a
-code reference, or, supply an array reference and pass the callback
-code reference in the first element of the array, followed by callback
-arguments.
-
-User callbacks are passed these arguments:
-
- $_[0] = undef for a scalar, index/key for array/hash
- $_[1] = variable's current (read), new (write), final (undef) value
- $_[2] = operation (r, w, or u)
- $_[3 .. $#_] = optional user callback arguments
-
-As a Trace user, you have an important responsibility when writing your
-callback, since you control the final value assigned to the variable.
-A typical callback might look like:
-
- sub callback {
- my($index, $value, $op, @args) = @_;
- return if $op eq 'u';
- # .... code which uses $value ...
- return $value; # variable's final value
- }
-
-Note that the callback's return value becomes the variable's final value,
-for either read or write traces.
-
-For write operations, the variable is updated with its new value before
-the callback is invoked.
-
-Multiple read, write and undef callbacks can be attached to a variable,
-which are invoked in reverse order of creation.
-
-=head1 METHODS
-
-=over 4
-
-=item $mw->traceVariable(varRef, op => callback);
-
-B<varRef> is a reference to the scalar, array or hash variable you
-wish to trace. B<op> is the trace operation, and can be any combination
-of B<r> for read, B<w> for write, and B<u> for undef. B<callback> is a
-standard Perl/Tk callback, and is invoked, depending upon the value of
-B<op>, whenever the variable is read, written, or destroyed.
-
-=item %vinfo = $mw->traceVinfo(varRef);
-
-Returns a hash detailing the internals of the Trace object, with these
-keys:
-
- %vinfo = (
- -variable => varRef
- -debug => '0'
- -shadow => '1'
- -value => 'HELLO SCALAR'
- -destroy => callback
- -fetch => callback
- -store => callback
- -legible => above data formatted as a list of string, for printing
- );
-
-For array and hash Trace objects, the B<-value> key is replaced with a
-B<-ptr> key which is a reference to the parallel array or hash.
-Additionally, for an array or hash, there are key/value pairs for
-all the variable specific callbacks.
-
-=item $mw->traceVdelete(\$v);
-
-Stop tracing the variable.
-
-=back
-
-=head1 EXAMPLES
-
- # Trace a Scale's variable and move a meter in unison.
-
- use Tk;
- use Tk::widgets qw/Trace/;
-
- $pi = 3.1415926;
- $mw = MainWindow->new;
- $c = $mw->Canvas( qw/-width 200 -height 110 -bd 2 -relief sunken/ )->grid;
- $c->createLine( qw/100 100 10 100 -tag meter -arrow last -width 5/ );
- $s = $mw->Scale( qw/-orient h -from 0 -to 100 -variable/ => \$v )->grid;
- $mw->Label( -text => 'Slide Me for 5 Seconds' )->grid;
-
- $mw->traceVariable( \$v, 'w' => [ \&update_meter, $s ] );
-
- $mw->after( 5000 => sub {
- print "Untrace time ...\n";
- %vinfo = $s->traceVinfo( \$v );
- print "Watch info :\n ", join("\n ", @{$vinfo{-legible}}), "\n";
- $c->traceVdelete( \$v );
- });
-
- MainLoop;
-
- sub update_meter {
- my( $index, $value, $op, @args ) = @_;
- return if $op eq 'u';
- $min = $s->cget( -from );
- $max = $s->cget( -to );
- $pos = $value / abs( $max - $min );
- $x = 100.0 - 90.0 * ( cos( $pos * $pi ) );
- $y = 100.0 - 90.0 * ( sin( $pos * $pi ) );
- $c->coords( qw/meter 100 100/, $x, $y );
- return $value;
- }
-
- # Predictive text entry.
-
- use Tk;
- use Tk::widgets qw/ LabEntry Trace /;
- use strict;
-
- my @words = qw/radio television telephone turntable microphone/;
-
- my $mw = MainWindow->new;
-
- my $e = $mw->LabEntry(
- qw/ -label Thing -width 40 /,
- -labelPack => [ qw/ -side left / ],
- -textvariable => \my $thing,
- );
- my $t = $mw->Text( qw/ -height 10 -width 50 / );;
-
- $t->pack( $e, qw/ -side top / );
-
- $e->focus;
- $e->traceVariable( \$thing, 'w', [ \&trace_thing, $e, $t ] );
-
- foreach my $k ( 1 .. 12 ) {
- $e->bind( "<F${k}>" => [ \&ins, $t, Ev('K') ] );
- }
- $e->bind( '<Return>' =>
- sub {
- print "$thing\n";
- $_[0]->delete( 0, 'end' );
- }
- );
-
- MainLoop;
-
- sub trace_thing {
-
- my( $index, $value, $op, $e, $t ) = @_;
-
- return unless $value;
-
- $t->delete( qw/ 1.0 end / );
- foreach my $w ( @words ) {
- if ( $w =~ /^$value/ ) {
- $t->insert( 'end', "$w\n" );
- }
- }
-
- return $value;
-
- } # end trace_thing
-
- sub ins {
-
- my( $e, $t, $K ) = @_;
-
- my( $index ) = $K =~ /^F(\d+)$/;
-
- $e->delete( 0, 'end' );
- $e->insert( 'end', $t->get( "$index.0", "$index.0 lineend" ) );
- $t->delete( qw/ 1.0 end / );
-
- } # end ins
-
-=head1 HISTORY
-
- Stephen.O.Lidie@Lehigh.EDU, Lehigh University Computing Center, 2000/08/01
- . Version 1.0, for Tk800.022.
-
- sol0@Lehigh.EDU, Lehigh University Computing Center, 2003/09/22
- . Version 1.1, for Tk804.025, add support for multiple traces of the same
- type on the same variable.
-
-=head1 COPYRIGHT
-
-Copyright (C) 2000 - 2003 Stephen O. Lidie. All rights reserved.
-
-This program is free software; you can redistribute it and/or modify it under
-the same terms as Perl itself.
-
-=cut
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/Tree.pm b/Master/tlpkg/tlperl/lib/Tk/Tree.pm
deleted file mode 100644
index 6d4f76b0c63..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Tree.pm
+++ /dev/null
@@ -1,228 +0,0 @@
-package Tk::Tree;
-# Tree -- TixTree widget
-#
-# Derived from Tree.tcl in Tix 4.1
-#
-# Chris Dean <ctdean@cogit.com>
-
-use vars qw($VERSION);
-$VERSION = '4.005'; # $Id: //depot/Tkutf8/Tixish/Tree.pm#5 $
-
-use Tk ();
-use Tk::Derived;
-use Tk::HList;
-use base qw(Tk::Derived Tk::HList);
-use strict;
-
-Construct Tk::Widget 'Tree';
-
-sub Tk::Widget::ScrlTree { shift->Scrolled('Tree' => @_) }
-
-sub Populate
-{
- my( $w, $args ) = @_;
-
- $w->SUPER::Populate( $args );
-
- $w->ConfigSpecs(
- -ignoreinvoke => ['PASSIVE', 'ignoreInvoke', 'IgnoreInvoke', 0],
- -opencmd => ['CALLBACK', 'openCmd', 'OpenCmd', 'OpenCmd' ],
- -indicatorcmd => ['CALLBACK', 'indicatorCmd', 'IndicatorCmd', 'IndicatorCmd'],
- -closecmd => ['CALLBACK', 'closeCmd', 'CloseCmd', 'CloseCmd'],
- -indicator => ['SELF', 'indicator', 'Indicator', 1],
- -indent => ['SELF', 'indent', 'Indent', 20],
- -width => ['SELF', 'width', 'Width', 20],
- -itemtype => ['SELF', 'itemtype', 'Itemtype', 'imagetext'],
- -foreground => ['SELF'],
- );
-}
-
-sub autosetmode
-{
- my( $w ) = @_;
- $w->setmode();
-}
-
-sub IndicatorCmd
-{
- my( $w, $ent, $event ) = @_;
-
- my $mode = $w->getmode( $ent );
-
- if ( $event eq '<Arm>' )
- {
- if ($mode eq 'open' )
- {
- $w->_indicator_image( $ent, 'plusarm' );
- }
- else
- {
- $w->_indicator_image( $ent, 'minusarm' );
- }
- }
- elsif ( $event eq '<Disarm>' )
- {
- if ($mode eq 'open' )
- {
- $w->_indicator_image( $ent, 'plus' );
- }
- else
- {
- $w->_indicator_image( $ent, 'minus' );
- }
- }
- elsif( $event eq '<Activate>' )
- {
- $w->Activate( $ent, $mode );
- $w->Callback( -browsecmd => $ent );
- }
-}
-
-sub close
-{
- my( $w, $ent ) = @_;
- my $mode = $w->getmode( $ent );
- $w->Activate( $ent, $mode ) if( $mode eq 'close' );
-}
-
-sub open
-{
- my( $w, $ent ) = @_;
- my $mode = $w->getmode( $ent );
- $w->Activate( $ent, $mode ) if( $mode eq 'open' );
-}
-
-sub getmode
-{
- my( $w, $ent ) = @_;
-
- return( 'none' ) unless $w->indicatorExists( $ent );
-
- my $img = $w->_indicator_image( $ent );
- return( 'open' ) if( $img eq 'plus' || $img eq 'plusarm' );
- return( 'close' );
-}
-
-sub setmode
-{
- my ($w,$ent,$mode) = @_;
- unless (defined $mode)
- {
- $mode = 'none';
- my @args;
- push(@args,$ent) if defined $ent;
- my @children = $w->infoChildren( @args );
- if ( @children )
- {
- $mode = 'close';
- foreach my $c (@children)
- {
- $mode = 'open' if $w->infoHidden( $c );
- $w->setmode( $c );
- }
- }
- }
-
- if (defined $ent)
- {
- if ( $mode eq 'open' )
- {
- $w->_indicator_image( $ent, 'plus' );
- }
- elsif ( $mode eq 'close' )
- {
- $w->_indicator_image( $ent, 'minus' );
- }
- elsif( $mode eq 'none' )
- {
- $w->_indicator_image( $ent, undef );
- }
- }
-}
-
-sub Activate
-{
- my( $w, $ent, $mode ) = @_;
- if ( $mode eq 'open' )
- {
- $w->Callback( -opencmd => $ent );
- $w->_indicator_image( $ent, 'minus' );
- }
- elsif ( $mode eq 'close' )
- {
- $w->Callback( -closecmd => $ent );
- $w->_indicator_image( $ent, 'plus' );
- }
- else
- {
-
- }
-}
-
-sub OpenCmd
-{
- my( $w, $ent ) = @_;
- # The default action
- foreach my $kid ($w->infoChildren( $ent ))
- {
- $w->show( -entry => $kid );
- }
-}
-
-sub CloseCmd
-{
- my( $w, $ent ) = @_;
-
- # The default action
- foreach my $kid ($w->infoChildren( $ent ))
- {
- $w->hide( -entry => $kid );
- }
-}
-
-sub Command
-{
- my( $w, $ent ) = @_;
-
- return if $w->{Configure}{-ignoreInvoke};
-
- $w->Activate( $ent, $w->getmode( $ent ) ) if $w->indicatorExists( $ent );
-}
-
-sub _indicator_image
-{
- my( $w, $ent, $image ) = @_;
- my $data = $w->privateData();
- if (@_ > 2)
- {
- if (defined $image)
- {
- $w->indicatorCreate( $ent, -itemtype => 'image' )
- unless $w->indicatorExists($ent);
- $data->{$ent} = $image;
- $w->indicatorConfigure( $ent, -image => $w->Getimage( $image ) );
- }
- else
- {
- $w->indicatorDelete( $ent ) if $w->indicatorExists( $ent );
- delete $data->{$ent};
- }
- }
- return $data->{$ent};
-}
-
-1;
-
-__END__
-
-# Copyright (c) 1996, Expert Interface Technologies
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# The file man.macros and some of the macros used by this file are
-# copyrighted: (c) 1990 The Regents of the University of California.
-# (c) 1994-1995 Sun Microsystems, Inc.
-# The license terms of the Tcl/Tk distrobution are in the file
-# license.tcl.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Tk/Widget.pm b/Master/tlpkg/tlperl/lib/Tk/Widget.pm
deleted file mode 100644
index e94c037e6fe..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Widget.pm
+++ /dev/null
@@ -1,1510 +0,0 @@
-# Copyright (c) 1995-2004 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-package Tk::Widget;
-use vars qw($VERSION @DefaultMenuLabels);
-$VERSION = sprintf '4.%03d', q$Revision: #30 $ =~ /\D(\d+)\s*$/;
-
-require Tk;
-use AutoLoader;
-use strict;
-use Carp;
-use base qw(DynaLoader Tk);
-
-# stubs for 'autoloaded' widget classes
-sub Button;
-sub Canvas;
-sub Checkbutton;
-sub Entry;
-sub Frame;
-sub Label;
-sub Labelframe;
-sub Listbox;
-sub Menu;
-sub Menubutton;
-sub Message;
-sub Panedwindow;
-sub Radiobutton;
-sub Scale;
-sub Scrollbar;
-sub Spinbox;
-sub Text;
-sub Toplevel;
-
-sub Pixmap;
-sub Bitmap;
-sub Photo;
-
-sub ScrlListbox;
-sub Optionmenu;
-
-sub import
-{
- my $package = shift;
- carp 'use Tk::Widget () to pre-load widgets is deprecated' if (@_);
- my $need;
- foreach $need (@_)
- {
- unless (defined &{$need})
- {
- require "Tk/${need}.pm";
- }
- croak "Cannot locate $need" unless (defined &{$need});
- }
-}
-
-@DefaultMenuLabels = qw[~File ~Help];
-
-# Some tidy-ness functions for winfo stuff
-
-sub True { 1 }
-sub False { 0 }
-
-use Tk::Submethods( 'grab' => [qw(current status release -global)],
- 'focus' => [qw(-force -lastfor)],
- 'pack' => [qw(configure forget info propagate slaves)],
- 'grid' => [qw(bbox columnconfigure configure forget info location propagate rowconfigure size slaves)],
- 'form' => [qw(check configure forget grid info slaves)],
- 'event' => [qw(add delete generate info)],
- 'place' => [qw(configure forget info slaves)],
- 'wm' => [qw(capture release)],
- 'font' => [qw(actual configure create delete families measure metrics names subfonts)]
- );
-
-BEGIN {
- # FIXME - these don't work in the compiler
- *IsMenu = \&False;
- *IsMenubutton = \&False;
- *configure_self = \&Tk::configure;
- *cget_self = \&Tk::cget;
-}
-
-
-
-Direct Tk::Submethods (
- 'winfo' => [qw(cells class colormapfull depth exists
- geometry height id ismapped manager name parent reqheight
- reqwidth rootx rooty screen screencells screendepth screenheight
- screenmmheight screenmmwidth screenvisual screenwidth visual
- visualsavailable vrootheight viewable vrootwidth vrootx vrooty
- width x y toplevel children pixels pointerx pointery pointerxy
- server fpixels rgb )],
- 'tk' => [qw(appname caret scaling useinputmethods windowingsystem)]);
-
-
-sub DESTROY
-{
- my $w = shift;
- $w->destroy if ($w->IsWidget);
-}
-
-sub Install
-{
- # Dynamically loaded widgets add their core commands
- # to the Tk base class here
- my ($package,$mw) = @_;
-}
-
-sub ClassInit
-{
- # Carry out class bindings (or whatever)
- my ($package,$mw) = @_;
- return $package;
-}
-
-sub CreateOptions
-{
- return ();
-}
-
-sub CreateArgs
-{
- my ($package,$parent,$args) = @_;
- # Remove from hash %$args any configure-like
- # options which only apply at create time (e.g. -colormap for Frame),
- # or which may as well be applied right away
- # return these as a list of -key => value pairs
- # Augment same hash with default values for missing mandatory options,
- # allthough this can be done later in InitObject.
-
- # Honour -class => if present, we have hacked Tk_ConfigureWidget to
- # allow -class to be passed to any widget.
- my @result = ();
- my $class = delete $args->{'-class'};
- ($class) = $package =~ /([A-Z][A-Z0-9_]*)$/i unless (defined $class);
- @result = (-class => "\u$class") if (defined $class);
- foreach my $opt ($package->CreateOptions)
- {
- push(@result, $opt => delete $args->{$opt}) if exists $args->{$opt};
- }
- return @result;
-}
-
-sub InitObject
-{
- my ($obj,$args) = @_;
- # per object initialization, for example populating
- # with sub-widgets, adding a few object bindings to augment
- # inherited class bindings, changing binding tags.
- # Also another chance to mess with %$args before configure...
-}
-
-sub SetBindtags
-{
- my ($obj) = @_;
- $obj->bindtags([ref($obj),$obj,$obj->toplevel,'all']);
-}
-
-sub new
-{
- local $SIG{'__DIE__'} = \&Carp::croak;
- my $package = shift;
- my $parent = shift;
- $package->InitClass($parent);
- $parent->BackTrace("Odd number of args to $package->new(...)") unless ((@_ % 2) == 0);
- my %args = @_;
- my @args = $package->CreateArgs($parent,\%args);
- my $cmd = $package->Tk_cmd;
- my $pname = $parent->PathName;
- $pname = '' if ($pname eq '.');
- my $leaf = delete $args{'Name'};
- if (defined $leaf)
- {
- $leaf =~ s/[^a-z0-9_#]+/_/ig;
- $leaf = lcfirst($leaf);
- }
- else
- {
- ($leaf) = "\L$package" =~ /([a-z][a-z0-9_]*)$/;
- }
- my $lname = $pname . '.' . $leaf;
- # create a hash indexed by leaf name to speed up
- # creation of a lot of sub-widgets of the same type
- # e.g. entries in Table
- my $nhash = $parent->TkHash('_names_');
- $nhash->{$leaf} = 0 unless (exists $nhash->{$leaf});
- while (defined ($parent->Widget($lname)))
- {
- $lname = $pname . '.' . $leaf . ++$nhash->{$leaf};
- }
- my $obj = eval { &$cmd($parent, $lname, @args) };
- confess $@ if $@;
- unless (ref $obj)
- {
- die "No value from $cmd $lname" unless defined $obj;
- warn "$cmd '$lname' returned '$obj'" unless $obj eq $lname;
- $obj = $parent->Widget($lname = $obj);
- die "$obj from $lname" unless ref $obj;
- }
- bless $obj,$package;
- $obj->SetBindtags;
- my $notice = $parent->can('NoticeChild');
- $parent->$notice($obj,\%args) if $notice;
- $obj->InitObject(\%args);
-# ASkludge(\%args,1);
- $obj->configure(%args) if (%args);
-# ASkludge(\%args,0);
- return $obj;
-}
-
-sub DelegateFor
-{
- my ($w,$method) = @_;
- while(exists $w->{'Delegates'})
- {
- my $delegate = $w->{'Delegates'};
- my $widget = $delegate->{$method};
- $widget = $delegate->{DEFAULT} unless (defined $widget);
- $widget = $w->Subwidget($widget) if (defined $widget && !ref $widget);
- last unless (defined $widget);
- last if $widget == $w;
- $w = $widget;
- }
- return $w;
-}
-
-sub Delegates
-{
- my $cw = shift;
- my $specs = $cw->TkHash('Delegates');
- while (@_)
- {
- my $key = shift;
- my $val = shift;
- $specs->{$key} = $val;
- }
- return $specs;
-}
-
-sub Construct
-{
- my ($base,$name) = @_;
- my $class = (caller(0))[0];
- no strict 'refs';
-
- # Hack for broken ->isa in perl5.6.0
- delete ${"$class\::"}{'::ISA::CACHE::'} if $] == 5.006;
-
- # Pre ->isa scheme
- *{$base.'::Is'.$name} = \&False;
- *{$class.'::Is'.$name} = \&True;
-
- # DelegateFor trickyness is to allow Frames and other derived things
- # to force creation in a delegate e.g. a ScrlText with embeded windows
- # need those windows to be children of the Text to get clipping right
- # and not of the Frame which contains the Text and the scrollbars.
- *{$base.'::'."$name"} = sub { $class->new(shift->DelegateFor('Construct'),@_) };
-}
-
-sub IS
-{
- return (defined $_[1]) && $_[0] == $_[1];
-}
-
-sub _AutoloadTkWidget
-{
- my ($self,$method) = @_;
- my $what = "Tk::Widget::$method";
- unless (defined &$what)
- {
- require "Tk/$method.pm";
- }
- return $what;
-}
-
-# require UNIVERSAL; don't load .pm use XS code from perl core though
-
-sub AUTOLOAD
-{
- # Take a copy into a 'my' variable so we can recurse
- my $what = $Tk::Widget::AUTOLOAD;
- my $save = $@;
- my $name;
- # warn "AUTOLOAD $what ".(ref($_[0]) || $_[0])."\n";
- # Braces used to preserve $1 et al.
- {
- my ($pkg,$func) = $what =~ /(.*)::([^:]+)$/;
- confess("Attempt to load '$what'") unless defined($pkg) && $func =~ /^[\w:]+$/;
- $pkg =~ s#::#/#g;
- if (defined($name=$INC{"$pkg.pm"}))
- {
- $name =~ s#^(.*)$pkg\.pm$#$1auto/$pkg/$func.al#;
- }
- else
- {
- $name = "auto/$what.al";
- $name =~ s#::#/#g;
- }
- }
- # This may fail, catch error and prevent user's __DIE__ handler
- # from triggering as well...
- eval {local $SIG{'__DIE__'}; require $name};
- if ($@)
- {
- croak $@ unless ($@ =~ /Can't locate\s+(?:file\s+)?'?\Q$name\E'?/);
- my($package,$method) = ($what =~ /^(.*)::([^:]*)$/);
- if (ref $_[0] && !$_[0]->can($method)
- && $_[0]->can('Delegate')
- && $method !~ /^(ConfigSpecs|Delegates)/ )
- {
- my $delegate = $_[0]->Delegates;
- if (%$delegate || tied %$delegate)
- {
- my $widget = $delegate->{$method};
- $widget = $delegate->{DEFAULT} unless (defined $widget);
- if (defined $widget)
- {
- my $subwidget = (ref $widget) ? $widget : $_[0]->Subwidget($widget);
- if (defined $subwidget)
- {
- no strict 'refs';
- # print "AUTOLOAD: $what\n";
- *{$what} = sub { shift->Delegate($method,@_) };
- }
- else
- {
- croak "No delegate subwidget '$widget' for $what";
- }
- }
- }
- }
- if (!defined(&$what) && ref($_[0]) && $method =~ /^[A-Z]\w+$/)
- {
- # Use ->can as ->isa is broken in perl5.6.0
- my $sub = UNIVERSAL::can($_[0],'_AutoloadTkWidget');
- if ($sub)
- {
- carp "Assuming 'require Tk::$method;'" unless $_[0]->can($method);
- $what = $_[0]->$sub($method)
- }
- }
- }
- $@ = $save;
- $DB::sub = $what; # Tell debugger what is going on...
- unless (defined &$what)
- {
- no strict 'refs';
- *{$what} = sub { croak("Failed to AUTOLOAD '$what'") };
- }
- goto &$what;
-}
-
-sub _Destroyed
-{
- my $w = shift;
- my $a = delete $w->{'_Destroy_'};
- if (ref($a))
- {
- while (@$a)
- {
- my $ent = pop(@$a);
- if (ref $ent)
- {
- eval {local $SIG{'__DIE__'}; $ent->Call };
- }
- else
- {
- delete $w->{$ent};
- }
- }
- }
-}
-
-sub _OnDestroy
-{
- my $w = shift;
- $w->{'_Destroy_'} = [] unless (exists $w->{'_Destroy_'});
- push(@{$w->{'_Destroy_'}},@_);
-}
-
-sub OnDestroy
-{
- my $w = shift;
- $w->_OnDestroy(Tk::Callback->new(@_));
-}
-
-sub TkHash
-{
- my ($w,$key) = @_;
- return $w->{$key} if exists $w->{$key};
- my $hash = $w->{$key} = {};
- $w->_OnDestroy($key);
- return $hash;
-}
-
-sub privateData
-{
- my $w = shift;
- my $p = shift || caller;
- $w->{$p} ||= {};
-}
-
-my @image_types;
-my %image_method;
-
-sub ImageMethod
-{
- shift if (@_ & 1);
- while (@_)
- {
- my ($name,$method) = splice(@_,0,2);
- push(@image_types,$name);
- $image_method{$name} = $method;
- }
-}
-
-sub Getimage
-{
- my ($w, $name) = @_;
- my $mw = $w->MainWindow;
- croak "Usage \$widget->Getimage('name')" unless defined($name);
- my $images = ($mw->{'__Images__'} ||= {});
-
- return $images->{$name} if $images->{$name};
-
- ImageMethod(xpm => 'Pixmap',
- gif => 'Photo',
- ppm => 'Photo',
- xbm => 'Bitmap' ) unless @image_types;
-
- foreach my $type (@image_types)
- {
- my $method = $image_method{$type};
- my $file = Tk->findINC( "$name.$type" );
- next unless( $file && $method );
- my $sub = $w->can($method);
- unless (defined &$sub)
- {
- require Tk::widgets;
- Tk::widgets->import($method);
- }
- $images->{$name} = $w->$method( -file => $file );
- return $images->{$name};
- }
-
- # Try built-in bitmaps
- $images->{$name} = $w->Pixmap( -id => $name );
- return $images->{$name};
-}
-
-sub SaveGrabInfo
-{
- my $w = shift;
- $Tk::oldGrab = $w->grabCurrent;
- if (defined $Tk::oldGrab)
- {
- $Tk::grabStatus = $Tk::oldGrab->grabStatus;
- }
-}
-
-sub grabSave
-{
- my ($w) = @_;
- my $grab = $w->grabCurrent;
- return sub {} if (!defined $grab);
- my $method = ($grab->grabStatus eq 'global') ? 'grabGlobal' : 'grab';
- return sub { eval {local $SIG{'__DIE__'}; $grab->$method() } };
-}
-
-sub focusCurrent
-{
- my ($w) = @_;
- $w->Tk::focus('-displayof');
-}
-
-sub focusSave
-{
- my ($w) = @_;
- my $focus = $w->focusCurrent;
- return sub {} if (!defined $focus);
- return sub { eval {local $SIG{'__DIE__'}; $focus->focus } };
-}
-
-# This is supposed to replicate Tk::after behaviour,
-# but does auto-cancel when widget is deleted.
-require Tk::After;
-
-sub afterCancel
-{
- my ($w,$what) = @_;
- if (defined $what)
- {
- return $what->cancel if ref($what);
- carp "dubious cancel of $what" if 0 && $^W;
- $w->Tk::after('cancel' => $what);
- }
-}
-
-sub afterIdle
-{
- my $w = shift;
- return Tk::After->new($w,'idle','once',@_);
-}
-
-sub afterInfo {
- my ($w, $id) = @_;
- if (defined $id) {
- return ($id->[4], $id->[2], $id->[3]);
- } else {
- return sort( keys %{$w->{_After_}} );
- }
-}
-
-sub after
-{
- my $w = shift;
- my $t = shift;
- if (@_)
- {
- if ($t ne 'cancel')
- {
- require Tk::After;
- return Tk::After->new($w,$t,'once',@_)
- }
- while (@_)
- {
- my $what = shift;
- $w->afterCancel($what);
- }
- }
- else
- {
- $w->Tk::after($t);
- }
-}
-
-sub repeat
-{
- require Tk::After;
- my $w = shift;
- my $t = shift;
- return Tk::After->new($w,$t,'repeat',@_);
-}
-
-sub FindMenu
-{
- # default FindMenu is that there is no menu.
- return undef;
-}
-
-sub XEvent { shift->{'_XEvent_'} }
-
-sub propertyRoot
-{
- my $w = shift;
- return $w->property(@_,'root');
-}
-
-# atom, atomname, containing, interps, pathname
-# don't work this way - there is no window arg
-# So we pretend there was an call the C versions from Tk.xs
-
-sub atom { shift->InternAtom(@_) }
-sub atomname { shift->GetAtomName(@_) }
-sub containing { shift->Containing(@_) }
-
-# interps not done yet
-# pathname not done yet
-
-# walk and descendants adapted from Stephen's composite
-# versions as they only use core features they can go here.
-# hierachy is reversed in that descendants calls walk rather
-# than vice versa as this avoids building a list.
-# Walk should possibly be enhanced so allow early termination
-# like '-prune' of find.
-
-sub Walk
-{
- # Traverse a widget hierarchy while executing a subroutine.
- my($cw, $proc, @args) = @_;
- my $subwidget;
- foreach $subwidget ($cw->children)
- {
- $subwidget->Walk($proc,@args);
- &$proc($subwidget, @args);
- }
-} # end walk
-
-sub Descendants
-{
- # Return a list of widgets derived from a parent widget and all its
- # descendants of a particular class.
- # If class is not passed returns the entire widget hierarchy.
-
- my($widget, $class) = @_;
- my(@widget_tree) = ();
-
- $widget->Walk(
- sub { my ($widget,$list,$class) = @_;
- push(@$list, $widget) if (!defined($class) or $class eq $widget->class);
- },
- \@widget_tree, $class
- );
- return @widget_tree;
-}
-
-sub Palette
-{
- my $w = shift->MainWindow;
- unless (exists $w->{_Palette_})
- {
- my %Palette = ();
- my $c = $w->Checkbutton();
- my $e = $w->Entry();
- my $s = $w->Scrollbar();
- $Palette{'activeBackground'} = ($c->configure('-activebackground'))[3] ;
- $Palette{'activeForeground'} = ($c->configure('-activeforeground'))[3];
- $Palette{'background'} = ($c->configure('-background'))[3];
- $Palette{'disabledForeground'} = ($c->configure('-disabledforeground'))[3];
- $Palette{'foreground'} = ($c->configure('-foreground'))[3];
- $Palette{'highlightBackground'} = ($c->configure('-highlightbackground'))[3];
- $Palette{'highlightColor'} = ($c->configure('-highlightcolor'))[3];
- $Palette{'insertBackground'} = ($e->configure('-insertbackground'))[3];
- $Palette{'selectColor'} = ($c->configure('-selectcolor'))[3];
- $Palette{'selectBackground'} = ($e->configure('-selectbackground'))[3];
- $Palette{'selectForeground'} = ($e->configure('-selectforeground'))[3];
- $Palette{'troughColor'} = ($s->configure('-troughcolor'))[3];
- $c->destroy;
- $e->destroy;
- $s->destroy;
- $w->{_Palette_} = \%Palette;
- }
- return $w->{_Palette_};
-}
-
-# tk_setPalette --
-# Changes the default color scheme for a Tk application by setting
-# default colors in the option database and by modifying all of the
-# color options for existing widgets that have the default value.
-#
-# Arguments:
-# The arguments consist of either a single color name, which
-# will be used as the new background color (all other colors will
-# be computed from this) or an even number of values consisting of
-# option names and values. The name for an option is the one used
-# for the option database, such as activeForeground, not -activeforeground.
-sub setPalette
-{
- my $w = shift->MainWindow;
- my %new = (@_ == 1) ? (background => $_[0]) : @_;
- my $priority = delete($new{'priority'}) || 'widgetDefault';
-
- # Create an array that has the complete new palette. If some colors
- # aren't specified, compute them from other colors that are specified.
-
- die 'must specify a background color' if (!exists $new{background});
- $new{'foreground'} = 'black' unless (exists $new{foreground});
- my @bg = $w->rgb($new{'background'});
- my @fg = $w->rgb($new{'foreground'});
- my $darkerBg = sprintf('#%02x%02x%02x',9*$bg[0]/2560,9*$bg[1]/2560,9*$bg[2]/2560);
- foreach my $i ('activeForeground','insertBackground','selectForeground','highlightColor')
- {
- $new{$i} = $new{'foreground'} unless (exists $new{$i});
- }
- unless (exists $new{'disabledForeground'})
- {
- $new{'disabledForeground'} = sprintf('#%02x%02x%02x',(3*$bg[0]+$fg[0])/1024,(3*$bg[1]+$fg[1])/1024,(3*$bg[2]+$fg[2])/1024);
- }
- $new{'highlightBackground'} = $new{'background'} unless (exists $new{'highlightBackground'});
-
- unless (exists $new{'activeBackground'})
- {
- my @light;
- # Pick a default active background that is lighter than the
- # normal background. To do this, round each color component
- # up by 15% or 1/3 of the way to full white, whichever is
- # greater.
- foreach my $i (0, 1, 2)
- {
- $light[$i] = $bg[$i]/256;
- my $inc1 = $light[$i]*15/100;
- my $inc2 = (255-$light[$i])/3;
- if ($inc1 > $inc2)
- {
- $light[$i] += $inc1
- }
- else
- {
- $light[$i] += $inc2
- }
- $light[$i] = 255 if ($light[$i] > 255);
- }
- $new{'activeBackground'} = sprintf('#%02x%02x%02x',@light);
- }
- $new{'selectBackground'} = $darkerBg unless (exists $new{'selectBackground'});
- $new{'troughColor'} = $darkerBg unless (exists $new{'troughColor'});
- $new{'selectColor'} = '#b03060' unless (exists $new{'selectColor'});
-
- # Before doing this, make sure that the Tk::Palette variable holds
- # the default values of all options, so that tkRecolorTree can
- # be sure to only change options that have their default values.
- # If the variable exists, then it is already correct (it was created
- # the last time this procedure was invoked). If the variable
- # doesn't exist, fill it in using the defaults from a few widgets.
- my $Palette = $w->Palette;
-
- # Walk the widget hierarchy, recoloring all existing windows.
- $w->RecolorTree(\%new);
- # Change the option database so that future windows will get the
- # same colors.
- foreach my $option (keys %new)
- {
- $w->option('add',"*$option",$new{$option},$priority);
- # Save the options in the global variable Tk::Palette, for use the
- # next time we change the options.
- $Palette->{$option} = $new{$option};
- }
-}
-
-# tkRecolorTree --
-# This procedure changes the colors in a window and all of its
-# descendants, according to information provided by the colors
-# argument. It only modifies colors that have their default values
-# as specified by the Tk::Palette variable.
-#
-# Arguments:
-# w - The name of a window. This window and all its
-# descendants are recolored.
-# colors - The name of an array variable in the caller,
-# which contains color information. Each element
-# is named after a widget configuration option, and
-# each value is the value for that option.
-sub RecolorTree
-{
- my ($w,$colors) = @_;
- local ($@);
- my $Palette = $w->Palette;
- foreach my $dbOption (keys %$colors)
- {
- my $option = "-\L$dbOption";
- my $value;
- eval {local $SIG{'__DIE__'}; $value = $w->cget($option) };
- if (defined $value)
- {
- if ($value eq $Palette->{$dbOption})
- {
- $w->configure($option,$colors->{$dbOption});
- }
- }
- }
- foreach my $child ($w->children)
- {
- $child->RecolorTree($colors);
- }
-}
-# tkDarken --
-# Given a color name, computes a new color value that darkens (or
-# brightens) the given color by a given percent.
-#
-# Arguments:
-# color - Name of starting color.
-# perecent - Integer telling how much to brighten or darken as a
-# percent: 50 means darken by 50%, 110 means brighten
-# by 10%.
-sub Darken
-{
- my ($w,$color,$percent) = @_;
- my @l = $w->rgb($color);
- my $red = $l[0]/256;
- my $green = $l[1]/256;
- my $blue = $l[2]/256;
- $red = int($red*$percent/100);
- $red = 255 if ($red > 255);
- $green = int($green*$percent/100);
- $green = 255 if ($green > 255);
- $blue = int($blue*$percent/100);
- $blue = 255 if ($blue > 255);
- sprintf('#%02x%02x%02x',$red,$green,$blue)
-}
-# tk_bisque --
-# Reset the Tk color palette to the old "bisque" colors.
-#
-# Arguments:
-# None.
-sub bisque
-{
- shift->setPalette('activeBackground' => '#e6ceb1',
- 'activeForeground' => 'black',
- 'background' => '#ffe4c4',
- 'disabledForeground' => '#b0b0b0',
- 'foreground' => 'black',
- 'highlightBackground' => '#ffe4c4',
- 'highlightColor' => 'black',
- 'insertBackground' => 'black',
- 'selectColor' => '#b03060',
- 'selectBackground' => '#e6ceb1',
- 'selectForeground' => 'black',
- 'troughColor' => '#cdb79e'
- );
-}
-
-sub PrintConfig
-{
- require Tk::Pretty;
- my ($w) = (@_);
- my $c;
- foreach $c ($w->configure)
- {
- print Tk::Pretty::Pretty(@$c),"\n";
- }
-}
-
-sub BusyRecurse
-{
- my ($restore,$w,$cursor,$recurse,$top) = @_;
- my $c = $w->cget('-cursor');
- my @tags = $w->bindtags;
- if ($top || defined($c))
- {
- push(@$restore, sub { return unless Tk::Exists($w); $w->configure(-cursor => $c); $w->bindtags(\@tags) });
- $w->configure(-cursor => $cursor);
- }
- else
- {
- push(@$restore, sub { return unless Tk::Exists($w); $w->bindtags(\@tags) });
- }
- $w->bindtags(['Busy',@tags]);
- if ($recurse)
- {
- foreach my $child ($w->children)
- {
- BusyRecurse($restore,$child,$cursor,1,0);
- }
- }
- return $restore;
-}
-
-sub Busy
-{
- my ($w,@args) = @_;
- return unless $w->viewable;
- my($sub, %args);
- for(my $i=0; $i<=$#args; $i++)
- {
- if (ref $args[$i] eq 'CODE')
- {
- if (defined $sub)
- {
- croak "Multiple code definitions not allowed in Tk::Widget::Busy";
- }
- $sub = $args[$i];
- }
- else
- {
- $args{$args[$i]} = $args[$i+1]; $i++;
- }
- }
- my $cursor = delete $args{'-cursor'};
- my $recurse = delete $args{'-recurse'};
- $cursor = 'watch' unless defined $cursor;
- unless (exists $w->{'Busy'})
- {
- my @old = ($w->grabSave);
- my $key;
- my @config;
- foreach $key (keys %args)
- {
- push(@config,$key => $w->Tk::cget($key));
- }
- if (@config)
- {
- push(@old, sub { $w->Tk::configure(@config) });
- $w->Tk::configure(%args);
- }
- unless ($w->Tk::bind('Busy'))
- {
- $w->Tk::bind('Busy','<Any-KeyPress>',[_busy => 1]);
- $w->Tk::bind('Busy','<Any-KeyRelease>',[_busy => 0]);
- $w->Tk::bind('Busy','<Any-ButtonPress>',[_busy => 1]);
- $w->Tk::bind('Busy','<Any-ButtonRelease>',[_busy => 0]);
- $w->Tk::bind('Busy','<Any-Motion>',[_busy => 0]);
- }
- $w->{'Busy'} = BusyRecurse(\@old,$w,$cursor,$recurse,1);
- }
- my $g = $w->grabCurrent;
- if (defined $g)
- {
- # warn "$g has the grab";
- $g->grabRelease;
- }
- $w->update;
- eval {local $SIG{'__DIE__'}; $w->grab };
- $w->update;
- if ($sub)
- {
- eval { $sub->() };
- my $err = $@;
- $w->Unbusy(-recurse => $recurse);
- die $err if $err;
- }
-}
-
-sub _busy
-{
- my ($w,$f) = @_;
- $w->bell if $f;
- $w->break;
-}
-
-sub Unbusy
-{
- my ($w) = @_;
- $w->update;
- $w->grabRelease if Tk::Exists($w);
- my $old = delete $w->{'Busy'};
- if (defined $old)
- {
- local $SIG{'__DIE__'};
- eval { &{pop(@$old)} } while (@$old);
- }
- $w->update if Tk::Exists($w);
-}
-
-sub waitVisibility
-{
- my ($w) = shift;
- $w->tkwait('visibility',$w);
-}
-
-sub waitVariable
-{
- my ($w) = shift;
- $w->tkwait('variable',@_);
-}
-
-sub waitWindow
-{
- my ($w) = shift;
- $w->tkwait('window',$w);
-}
-
-sub EventWidget
-{
- my ($w) = @_;
- return $w->{'_EventWidget_'};
-}
-
-sub Popwidget
-{
- my ($ew,$method,$w,@args) = @_;
- $w->{'_EventWidget_'} = $ew;
- $w->$method(@args);
-}
-
-sub ColorOptions
-{
- my ($w,$args) = @_;
- my $opt;
- $args = {} unless (defined $args);
- foreach $opt (qw(-foreground -background -disabledforeground
- -activebackground -activeforeground
- ))
- {
- $args->{$opt} = $w->cget($opt) unless (exists $args->{$opt})
- }
- return (wantarray) ? %$args : $args;
-}
-
-sub XscrollBind
-{
- my ($mw,$class) = @_;
- $mw->bind($class,'<Left>', ['xview','scroll',-1,'units']);
- $mw->bind($class,'<Control-Left>', ['xview','scroll',-1,'pages']);
- $mw->bind($class,'<Control-Prior>',['xview','scroll',-1,'pages']);
- $mw->bind($class,'<Right>', ['xview','scroll',1,'units']);
- $mw->bind($class,'<Control-Right>',['xview','scroll',1,'pages']);
- $mw->bind($class,'<Control-Next>', ['xview','scroll',1,'pages']);
-
- $mw->bind($class,'<Home>', ['xview','moveto',0]);
- $mw->bind($class,'<End>', ['xview','moveto',1]);
- $mw->XMouseWheelBind($class);
-}
-
-sub PriorNextBind
-{
- my ($mw,$class) = @_;
- $mw->bind($class,'<Next>', ['yview','scroll',1,'pages']);
- $mw->bind($class,'<Prior>', ['yview','scroll',-1,'pages']);
-}
-
-sub XMouseWheelBind
-{
- my ($mw,$class) = @_;
- # <4> and <5> are how mousewheel looks on X
- # <4> and <5> are how mousewheel looks on X
- $mw->bind($class,'<Shift-4>', ['xview','scroll',-1,'units']);
- $mw->bind($class,'<Shift-5>', ['xview','scroll',1,'units']);
- $mw->bind($class,'<Button-6>', ['xview','scroll',-1,'units']);
- $mw->bind($class,'<Button-7>', ['xview','scroll',1,'units']);
-}
-
-sub YMouseWheelBind
-{
- my ($mw,$class) = @_;
- # <4> and <5> are how mousewheel looks on X
- $mw->bind($class,'<4>', ['yview','scroll',-1,'units']);
- $mw->bind($class,'<5>', ['yview','scroll',1,'units']);
-}
-
-sub YscrollBind
-{
- my ($mw,$class) = @_;
- $mw->PriorNextBind($class);
- $mw->bind($class,'<Up>', ['yview','scroll',-1,'units']);
- $mw->bind($class,'<Down>', ['yview','scroll',1,'units']);
- $mw->YMouseWheelBind($class);
-}
-
-sub XYscrollBind
-{
- my ($mw,$class) = @_;
- $mw->YscrollBind($class);
- $mw->XscrollBind($class);
- # <4> and <5> are how mousewheel looks on X
-}
-
-sub MouseWheelBind
-{
- my($mw,$class) = @_;
-
- # The MouseWheel will typically only fire on Windows. However, one
- # could use the "event generate" command to produce MouseWheel
- # events on other platforms.
-
- $mw->Tk::bind($class, '<MouseWheel>',
- [ sub { $_[0]->yview('scroll',-($_[1]/120)*3,'units') }, Tk::Ev("D")]);
-
- if ($Tk::platform eq 'unix')
- {
- # Support for mousewheels on Linux/Unix commonly comes through mapping
- # the wheel to the extended buttons. If you have a mousewheel, find
- # Linux configuration info at:
- # http://www.inria.fr/koala/colas/mouse-wheel-scroll/
- $mw->Tk::bind($class, '<4>',
- sub { $_[0]->yview('scroll', -3, 'units')
- unless $Tk::strictMotif;
- });
- $mw->Tk::bind($class, '<5>',
- sub { $_[0]->yview('scroll', 3, 'units')
- unless $Tk::strictMotif;
- });
- }
-}
-
-sub ScrlListbox
-{
- my $parent = shift;
- return $parent->Scrolled('Listbox',-scrollbars => 'w', @_);
-}
-
-sub AddBindTag
-{
- my ($w,$tag) = @_;
- my $t;
- my @tags = $w->bindtags;
- foreach $t (@tags)
- {
- return if $t eq $tag;
- }
- $w->bindtags([@tags,$tag]);
-}
-
-sub Callback
-{
- my $w = shift;
- my $name = shift;
- my $cb = $w->cget($name);
- if (defined $cb)
- {
- return $cb->Call(@_) if (ref $cb);
- return $w->$cb(@_);
- }
- return (wantarray) ? () : undef;
-}
-
-sub packAdjust
-{
-# print 'packAdjust(',join(',',@_),")\n";
- require Tk::Adjuster;
- my ($w,%args) = @_;
- my $delay = delete($args{'-delay'});
- $delay = 1 unless (defined $delay);
- $w->pack(%args);
- %args = $w->packInfo;
- my $adj = Tk::Adjuster->new($args{'-in'},
- -widget => $w, -delay => $delay, -side => $args{'-side'});
- $adj->packed($w,%args);
- return $w;
-}
-
-sub gridAdjust
-{
- require Tk::Adjuster;
- my ($w,%args) = @_;
- my $delay = delete($args{'-delay'});
- $delay = 1 unless (defined $delay);
- $w->grid(%args);
- %args = $w->gridInfo;
- my $adj = Tk::Adjuster->new($args{'-in'},-widget => $w, -delay => $delay);
- $adj->gridded($w,%args);
- return $w;
-}
-
-sub place
-{
- local $SIG{'__DIE__'} = \&Carp::croak;
- my $w = shift;
- if (@_ && $_[0] =~ /^(?:configure|forget|info|slaves)$/x)
- {
- $w->Tk::place(@_);
- }
- else
- {
- # Two things going on here:
- # 1. Add configure on the front so that we can drop leading '-'
- $w->Tk::place('configure',@_);
- # 2. Return the widget rather than nothing
- return $w;
- }
-}
-
-sub pack
-{
- local $SIG{'__DIE__'} = \&Carp::croak;
- my $w = shift;
- if (@_ && $_[0] =~ /^(?:configure|forget|info|propagate|slaves)$/x)
- {
- # maybe array/scalar context issue with slaves
- $w->Tk::pack(@_);
- }
- else
- {
- # Two things going on here:
- # 1. Add configure on the front so that we can drop leading '-'
- $w->Tk::pack('configure',@_);
- # 2. Return the widget rather than nothing
- return $w;
- }
-}
-
-sub grid
-{
- local $SIG{'__DIE__'} = \&Carp::croak;
- my $w = shift;
- if (@_ && $_[0] =~ /^(?:bbox|columnconfigure|configure|forget|info|location|propagate|rowconfigure|size|slaves)$/x)
- {
- my $opt = shift;
- Tk::grid($opt,$w,@_);
- }
- else
- {
- # Two things going on here:
- # 1. Add configure on the front so that we can drop leading '-'
- Tk::grid('configure',$w,@_);
- # 2. Return the widget rather than nothing
- return $w;
- }
-}
-
-sub form
-{
- local $SIG{'__DIE__'} = \&Carp::croak;
- my $w = shift;
- if (@_ && $_[0] =~ /^(?:configure|check|forget|grid|info|slaves)$/x)
- {
- $w->Tk::form(@_);
- }
- else
- {
- # Two things going on here:
- # 1. Add configure on the front so that we can drop leading '-'
- $w->Tk::form('configure',@_);
- # 2. Return the widget rather than nothing
- return $w;
- }
-}
-
-sub Scrolled
-{
- my ($parent,$kind,%args) = @_;
- $kind = 'Pane' if $kind eq 'Frame';
- # Find args that are Frame create time args
- my @args = Tk::Frame->CreateArgs($parent,\%args);
- my $name = delete $args{'Name'};
- push(@args,'Name' => $name) if (defined $name);
- my $cw = $parent->Frame(@args);
- @args = ();
- # Now remove any args that Frame can handle
- foreach my $k ('-scrollbars',map($_->[0],$cw->configure))
- {
- push(@args,$k,delete($args{$k})) if (exists $args{$k})
- }
- # Anything else must be for target widget - pass at widget create time
- my $w = $cw->$kind(%args);
- # Now re-set %args to be ones Frame can handle
- %args = @args;
- $cw->ConfigSpecs('-scrollbars' => ['METHOD','scrollbars','Scrollbars','se'],
- '-background' => [$w,'background','Background'],
- '-foreground' => [$w,'foreground','Foreground'],
- );
- $cw->AddScrollbars($w);
- $cw->Default("\L$kind" => $w);
- $cw->Delegates('bind' => $w, 'bindtags' => $w, 'menu' => $w);
- $cw->ConfigDefault(\%args);
- $cw->configure(%args);
- return $cw;
-}
-
-sub Populate
-{
- my ($cw,$args) = @_;
-}
-
-sub ForwardEvent
-{
- my $self = shift;
- my $to = shift;
- $to->PassEvent($self->XEvent);
-}
-
-# Save / Return abstract event type as in Tix.
-sub EventType
-{
- my $w = shift;
- $w->{'_EventType_'} = $_[0] if @_;
- return $w->{'_EventType_'};
-}
-
-sub PostPopupMenu
-{
- my ($w, $X, $Y) = @_;
- if (@_ < 3)
- {
- my $e = $w->XEvent;
- $X = $e->X;
- $Y = $e->Y;
- }
- my $menu = $w->menu;
- $menu->Post($X,$Y) if defined $menu;
-}
-
-sub FillMenu
-{
- my ($w,$menu,@labels) = @_;
- foreach my $lab (@labels)
- {
- my $method = $lab.'MenuItems';
- $method =~ s/~//g;
- $method =~ s/[\s-]+/_/g;
- if ($w->can($method))
- {
- $menu->Menubutton(-label => $lab, -tearoff => 0, -menuitems => $w->$method());
- }
- }
- return $menu;
-}
-
-sub menu
-{
- my ($w,$menu) = @_;
- if (@_ > 1)
- {
- $w->_OnDestroy('_MENU_') unless exists $w->{'_MENU_'};
- $w->{'_MENU_'} = $menu;
- }
- return unless defined wantarray;
- unless (exists $w->{'_MENU_'})
- {
- $w->_OnDestroy('_MENU_');
- $w->{'_MENU_'} = $menu = $w->Menu(-tearoff => 0);
- $w->FillMenu($menu,$w->MenuLabels);
- }
- return $w->{'_MENU_'};
-}
-
-sub MenuLabels
-{
- return @DefaultMenuLabels;
-}
-
-sub FileMenuItems
-{
- my ($w) = @_;
- return [ ["command"=>'E~xit', -command => [ $w, 'WmDeleteWindow']]];
-}
-
-sub WmDeleteWindow
-{
- shift->toplevel->WmDeleteWindow
-}
-
-sub BalloonInfo
-{
- my ($widget,$balloon,$X,$Y,@opt) = @_;
- foreach my $opt (@opt)
- {
- my $info = $balloon->GetOption($opt,$widget);
- return $info if defined $info;
- }
-}
-
-sub ConfigSpecs {
-
- my $w = shift;
-
- return map { ( $_->[0], [ $w, @$_[ 1 .. 4 ] ] ) } $w->configure;
-
-}
-
-*GetSelection =
- ($Tk::platform eq 'unix'
- ? sub
- {
- my $w = shift;
- my $sel = @_ ? shift : "PRIMARY";
- my $txt = eval { local $SIG{__DIE__};
- $w->SelectionGet(-selection => $sel, -type => "UTF8_STRING")
- };
- if ($@)
- {
- $txt = eval { local $SIG{__DIE__};
- $w->SelectionGet(-selection => $sel)
- };
- if ($@)
- {
- die "could not find default selection";
- }
- }
- $txt;
- }
- : sub
- {
- my $w = shift;
- my $sel = @_ ? shift : "PRIMARY";
- my $txt = eval { local $SIG{__DIE__};
- $w->SelectionGet(-selection => $sel)
- };
- if ($@)
- {
- die "could not find default selection";
- }
- $txt;
- }
- );
-
-1;
-__END__
-
-sub bindDump {
-
- # Dump lots of good binding information. This pretty-print subroutine
- # is, essentially, the following code in disguise:
- #
- # print "Binding information for $w\n";
- # foreach my $tag ($w->bindtags) {
- # printf "\n Binding tag '$tag' has these bindings:\n";
- # foreach my $binding ($w->bind($tag)) {
- # printf " $binding\n";
- # }
- # }
-
- my ($w) = @_;
-
- my (@bindtags) = $w->bindtags;
- my $digits = length( scalar @bindtags );
- my ($spc1, $spc2) = ($digits + 33, $digits + 35);
- my $format1 = "%${digits}d.";
- my $format2 = ' ' x ($digits + 2);
- my $n = 0;
-
- my @out;
- push @out, sprintf( "\n## Binding information for '%s', %s ##", $w->PathName, $w );
-
- foreach my $tag (@bindtags) {
- my (@bindings) = $w->bind($tag);
- $n++; # count this bindtag
-
- if ($#bindings == -1) {
- push @out, sprintf( "\n$format1 Binding tag '$tag' has no bindings.\n", $n );
- } else {
- push @out, sprintf( "\n$format1 Binding tag '$tag' has these bindings:\n", $n );
-
- foreach my $binding ( @bindings ) {
- my $callback = $w->bind($tag, $binding);
- push @out, sprintf( "$format2%27s : %-40s\n", $binding, $callback );
-
- if ($callback =~ /SCALAR/) {
- if (ref $$callback) {
- push @out, sprintf( "%s %s\n", ' ' x $spc1, $$callback );
- } else {
- push @out, sprintf( "%s '%s'\n", ' ' x $spc1, $$callback );
- }
- } elsif ($callback =~ /ARRAY/) {
- if (ref $callback->[0]) {
- push @out, sprintf( "%s %s\n", ' ' x $spc1, $callback->[0], "\n" );
- } else {
- push @out, sprintf( "%s '%s'\n", ' ' x $spc1, $callback->[0], "\n" );
- }
- foreach my $arg (@$callback[1 .. $#{@$callback}]) {
- if (ref $arg) {
- push @out, sprintf( "%s %-40s", ' ' x $spc2, $arg );
- } else {
- push @out, sprintf( "%s '%s'", ' ' x $spc2, $arg );
- }
-
- if (ref $arg eq 'Tk::Ev') {
- if ($arg =~ /SCALAR/) {
- push @out, sprintf( ": '$$arg'" );
- } else {
- push @out, sprintf( ": '%s'", join("' '", @$arg) );
- }
- }
-
- push @out, sprintf( "\n" );
- } # forend callback arguments
- } # ifend callback
-
- } # forend all bindings for one tag
-
- } # ifend have bindings
-
- } # forend all tags
- push @out, sprintf( "\n" );
- return @out;
-
-} # end bindDump
-
-
-sub ASkludge
-{
- my ($hash,$sense) = @_;
- foreach my $key (%$hash)
- {
- if ($key =~ /-.*variable/ && ref($hash->{$key}) eq 'SCALAR')
- {
- if ($sense)
- {
- my $val = ${$hash->{$key}};
- require Tie::Scalar;
- tie ${$hash->{$key}},'Tie::StdScalar';
- ${$hash->{$key}} = $val;
- }
- else
- {
- untie ${$hash->{$key}};
- }
- }
- }
-}
-
-
-
-# clipboardKeysyms --
-# This procedure is invoked to identify the keys that correspond to
-# the "copy", "cut", and "paste" functions for the clipboard.
-#
-# Arguments:
-# copy - Name of the key (keysym name plus modifiers, if any,
-# such as "Meta-y") used for the copy operation.
-# cut - Name of the key used for the cut operation.
-# paste - Name of the key used for the paste operation.
-#
-# This method is obsolete use clipboardOperations and abstract
-# event types instead. See Clipboard.pm and Mainwindow.pm
-
-sub clipboardKeysyms
-{
- my @class = ();
- my $mw = shift;
- if (ref $mw)
- {
- $mw = $mw->DelegateFor('bind');
- }
- else
- {
- push(@class,$mw);
- $mw = shift;
- }
- if (@_)
- {
- my $copy = shift;
- $mw->Tk::bind(@class,"<$copy>",'clipboardCopy') if (defined $copy);
- }
- if (@_)
- {
- my $cut = shift;
- $mw->Tk::bind(@class,"<$cut>",'clipboardCut') if (defined $cut);
- }
- if (@_)
- {
- my $paste = shift;
- $mw->Tk::bind(@class,"<$paste>",'clipboardPaste') if (defined $paste);
- }
-}
-
-sub pathname
-{
- my ($w,$id) = @_;
- my $x = $w->winfo('pathname',-displayof => oct($id));
- return $x->PathName;
-}
diff --git a/Master/tlpkg/tlperl/lib/Tk/Wm.pm b/Master/tlpkg/tlperl/lib/Tk/Wm.pm
deleted file mode 100644
index ffbe4877857..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Wm.pm
+++ /dev/null
@@ -1,174 +0,0 @@
-# Copyright (c) 1995-2003 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-package Tk::Wm;
-use AutoLoader;
-
-require Tk::Widget;
-*AUTOLOAD = \&Tk::Widget::AUTOLOAD;
-
-use strict qw(vars);
-
-# There are issues with this stuff now we have Tix's wm release/capture
-# as toplevel-ness is now dynamic.
-
-
-use vars qw($VERSION);
-$VERSION = sprintf '4.%03d', q$Revision: #14 $ =~ /\D(\d+)\s*$/;
-
-use Tk::Submethods;
-
-*{Tk::Wm::wmGrid} = sub { shift->wm("grid", @_) };
-*{Tk::Wm::wmTracing} = sub { shift->wm("tracing", @_) };
-
-Direct Tk::Submethods ('wm' => [qw(aspect attributes client colormapwindows command
- deiconify focusmodel frame geometry group
- iconbitmap iconify iconimage iconmask iconname
- iconwindow maxsize minsize overrideredirect positionfrom
- protocol resizable sizefrom state title transient
- withdraw wrapper)]);
-
-sub SetBindtags
-{
- my ($obj) = @_;
- $obj->bindtags([ref($obj),$obj,'all']);
-}
-
-sub Populate
-{
- my ($cw,$args) = @_;
- $cw->ConfigSpecs('-overanchor' => ['PASSIVE',undef,undef,undef],
- '-popanchor' => ['PASSIVE',undef,undef,undef],
- '-popover' => ['PASSIVE',undef,undef,undef]
- );
-}
-
-sub MoveResizeWindow
-{
- my ($w,$x,$y,$width,$height) = @_;
- $w->withdraw;
- $w->geometry($width.'x'.$height);
- $w->MoveToplevelWindow($x,$y);
- $w->deiconify;
-}
-
-sub WmDeleteWindow
-{
- my ($w) = @_;
- my $cb = $w->protocol('WM_DELETE_WINDOW');
- if (defined $cb)
- {
- $cb->Call;
- }
- else
- {
- $w->destroy;
- }
-}
-
-
-1;
-
-__END__
-
-
-sub Post
-{
- my ($w,$X,$Y) = @_;
- $X = int($X);
- $Y = int($Y);
- $w->positionfrom('user');
- $w->geometry("+$X+$Y");
- # $w->MoveToplevelWindow($X,$Y);
- $w->deiconify;
- $w->raise;
-}
-
-sub AnchorAdjust
-{
- my ($anchor,$X,$Y,$w,$h) = @_;
- $anchor = 'c' unless (defined $anchor);
- $Y += ($anchor =~ /s/) ? $h : ($anchor =~ /n/) ? 0 : $h/2;
- $X += ($anchor =~ /e/) ? $w : ($anchor =~ /w/) ? 0 : $w/2;
- return ($X,$Y);
-}
-
-sub Popup
-{
- my $w = shift;
- $w->configure(@_) if @_;
- $w->idletasks;
- my ($mw,$mh) = ($w->reqwidth,$w->reqheight);
- my ($rx,$ry,$rw,$rh) = (0,0,0,0);
- my $base = $w->cget('-popover');
- my $outside = 0;
- if (defined $base)
- {
- if ($base eq 'cursor')
- {
- ($rx,$ry) = $w->pointerxy;
- }
- else
- {
- $rx = $base->rootx;
- $ry = $base->rooty;
- $rw = $base->Width;
- $rh = $base->Height;
- }
- }
- else
- {
- my $sc = ($w->parent) ? $w->parent->toplevel : $w;
- $rx = -$sc->vrootx;
- $ry = -$sc->vrooty;
- $rw = $w->screenwidth;
- $rh = $w->screenheight;
- }
- my ($X,$Y) = AnchorAdjust($w->cget('-overanchor'),$rx,$ry,$rw,$rh);
- ($X,$Y) = AnchorAdjust($w->cget('-popanchor'),$X,$Y,-$mw,-$mh);
- # adjust to not cross screen borders
- if ($X < 0) { $X = 0 }
- if ($Y < 0) { $Y = 0 }
- if ($mw > $w->screenwidth) { $X = 0 }
- if ($mh > $w->screenheight) { $Y = 0 }
- $w->Post($X,$Y);
- $w->waitVisibility;
-}
-
-sub FullScreen
-{
- my $w = shift;
- my $over = (@_) ? shift : 0;
- my $width = $w->screenwidth;
- my $height = $w->screenheight;
- $w->GeometryRequest($width,$height);
- $w->overrideredirect($over & 1);
- $w->Post(0,0);
- $w->update;
- if ($over & 2)
- {
- my $x = $w->rootx;
- my $y = $w->rooty;
- $width -= 2*$x;
- $height -= $x + $y;
- $w->GeometryRequest($width,$height);
- $w->update;
- }
-}
-
-sub iconposition
-{
- my $w = shift;
- if (@_ == 1)
- {
- return $w->wm('iconposition',$1,$2) if $_[0] =~ /^(\d+),(\d+)$/;
- if ($_[0] =~ /^([+-])(\d+)([+-])(\d+)$/)
- {
- my $x = ($1 eq '-') ? $w->screenwidth-$2 : $2;
- my $y = ($3 eq '-') ? $w->screenheight-$4 : $4;
- return $w->wm('iconposition',$x,$y);
- }
- }
- $w->wm('iconposition',@_);
-}
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/X.pm b/Master/tlpkg/tlperl/lib/Tk/X.pm
deleted file mode 100644
index 06eefbf6bd9..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/X.pm
+++ /dev/null
@@ -1,398 +0,0 @@
-package Tk::X;
-
-use strict;
-use Carp;
-use vars qw($VERSION @EXPORT $AUTOLOAD);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/Xlib/X/X.pm#4 $
-use Tk qw($XS_VERSION);
-
-require Exporter;
-require DynaLoader;
-require AutoLoader;
-
-
-use base qw(Exporter DynaLoader);
-# 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(
- Above
- AllTemporary
- AllocAll
- AllocNone
- AllowExposures
- AlreadyGrabbed
- Always
- AnyButton
- AnyKey
- AnyModifier
- AnyPropertyType
- ArcChord
- ArcPieSlice
- AsyncBoth
- AsyncKeyboard
- AsyncPointer
- AutoRepeatModeDefault
- AutoRepeatModeOff
- AutoRepeatModeOn
- BadAccess
- BadAlloc
- BadAtom
- BadColor
- BadCursor
- BadDrawable
- BadFont
- BadGC
- BadIDChoice
- BadImplementation
- BadLength
- BadMatch
- BadName
- BadPixmap
- BadRequest
- BadValue
- BadWindow
- Below
- BottomIf
- Button1
- Button1Mask
- Button1MotionMask
- Button2
- Button2Mask
- Button2MotionMask
- Button3
- Button3Mask
- Button3MotionMask
- Button4
- Button4Mask
- Button4MotionMask
- Button5
- Button5Mask
- Button5MotionMask
- ButtonMotionMask
- ButtonPress
- ButtonPressMask
- ButtonRelease
- ButtonReleaseMask
- CWBackPixel
- CWBackPixmap
- CWBackingPixel
- CWBackingPlanes
- CWBackingStore
- CWBitGravity
- CWBorderPixel
- CWBorderPixmap
- CWBorderWidth
- CWColormap
- CWCursor
- CWDontPropagate
- CWEventMask
- CWHeight
- CWOverrideRedirect
- CWSaveUnder
- CWSibling
- CWStackMode
- CWWidth
- CWWinGravity
- CWX
- CWY
- CapButt
- CapNotLast
- CapProjecting
- CapRound
- CenterGravity
- CirculateNotify
- CirculateRequest
- ClientMessage
- ClipByChildren
- ColormapChangeMask
- ColormapInstalled
- ColormapNotify
- ColormapUninstalled
- Complex
- ConfigureNotify
- ConfigureRequest
- ControlMapIndex
- ControlMask
- Convex
- CoordModeOrigin
- CoordModePrevious
- CopyFromParent
- CreateNotify
- CurrentTime
- CursorShape
- DefaultBlanking
- DefaultExposures
- DestroyAll
- DestroyNotify
- DirectColor
- DisableAccess
- DisableScreenInterval
- DisableScreenSaver
- DoBlue
- DoGreen
- DoRed
- DontAllowExposures
- DontPreferBlanking
- EastGravity
- EnableAccess
- EnterNotify
- EnterWindowMask
- EvenOddRule
- Expose
- ExposureMask
- FamilyChaos
- FamilyDECnet
- FamilyInternet
- FillOpaqueStippled
- FillSolid
- FillStippled
- FillTiled
- FirstExtensionError
- FocusChangeMask
- FocusIn
- FocusOut
- FontChange
- FontLeftToRight
- FontRightToLeft
- ForgetGravity
- GCArcMode
- GCBackground
- GCCapStyle
- GCClipMask
- GCClipXOrigin
- GCClipYOrigin
- GCDashList
- GCDashOffset
- GCFillRule
- GCFillStyle
- GCFont
- GCForeground
- GCFunction
- GCGraphicsExposures
- GCJoinStyle
- GCLastBit
- GCLineStyle
- GCLineWidth
- GCPlaneMask
- GCStipple
- GCSubwindowMode
- GCTile
- GCTileStipXOrigin
- GCTileStipYOrigin
- GXand
- GXandInverted
- GXandReverse
- GXclear
- GXcopy
- GXcopyInverted
- GXequiv
- GXinvert
- GXnand
- GXnoop
- GXnor
- GXor
- GXorInverted
- GXorReverse
- GXset
- GXxor
- GrabFrozen
- GrabInvalidTime
- GrabModeAsync
- GrabModeSync
- GrabNotViewable
- GrabSuccess
- GraphicsExpose
- GravityNotify
- GrayScale
- HostDelete
- HostInsert
- IncludeInferiors
- InputFocus
- InputOnly
- InputOutput
- IsUnmapped
- IsUnviewable
- IsViewable
- JoinBevel
- JoinMiter
- JoinRound
- KBAutoRepeatMode
- KBBellDuration
- KBBellPercent
- KBBellPitch
- KBKey
- KBKeyClickPercent
- KBLed
- KBLedMode
- KeyPress
- KeyPressMask
- KeyRelease
- KeyReleaseMask
- KeymapNotify
- KeymapStateMask
- LASTEvent
- LSBFirst
- LastExtensionError
- LeaveNotify
- LeaveWindowMask
- LedModeOff
- LedModeOn
- LineDoubleDash
- LineOnOffDash
- LineSolid
- LockMapIndex
- LockMask
- LowerHighest
- MSBFirst
- MapNotify
- MapRequest
- MappingBusy
- MappingFailed
- MappingKeyboard
- MappingModifier
- MappingNotify
- MappingPointer
- MappingSuccess
- Mod1MapIndex
- Mod1Mask
- Mod2MapIndex
- Mod2Mask
- Mod3MapIndex
- Mod3Mask
- Mod4MapIndex
- Mod4Mask
- Mod5MapIndex
- Mod5Mask
- MotionNotify
- NoEventMask
- NoExpose
- NoSymbol
- Nonconvex
- None
- NorthEastGravity
- NorthGravity
- NorthWestGravity
- NotUseful
- NotifyAncestor
- NotifyDetailNone
- NotifyGrab
- NotifyHint
- NotifyInferior
- NotifyNonlinear
- NotifyNonlinearVirtual
- NotifyNormal
- NotifyPointer
- NotifyPointerRoot
- NotifyUngrab
- NotifyVirtual
- NotifyWhileGrabbed
- Opposite
- OwnerGrabButtonMask
- ParentRelative
- PlaceOnBottom
- PlaceOnTop
- PointerMotionHintMask
- PointerMotionMask
- PointerRoot
- PointerWindow
- PreferBlanking
- PropModeAppend
- PropModePrepend
- PropModeReplace
- PropertyChangeMask
- PropertyDelete
- PropertyNewValue
- PropertyNotify
- PseudoColor
- RaiseLowest
- ReparentNotify
- ReplayKeyboard
- ReplayPointer
- ResizeRedirectMask
- ResizeRequest
- RetainPermanent
- RetainTemporary
- RevertToNone
- RevertToParent
- RevertToPointerRoot
- ScreenSaverActive
- ScreenSaverReset
- SelectionClear
- SelectionNotify
- SelectionRequest
- SetModeDelete
- SetModeInsert
- ShiftMapIndex
- ShiftMask
- SouthEastGravity
- SouthGravity
- SouthWestGravity
- StaticColor
- StaticGravity
- StaticGray
- StippleShape
- StructureNotifyMask
- SubstructureNotifyMask
- SubstructureRedirectMask
- Success
- SyncBoth
- SyncKeyboard
- SyncPointer
- TileShape
- TopIf
- TrueColor
- UnmapGravity
- UnmapNotify
- Unsorted
- VisibilityChangeMask
- VisibilityFullyObscured
- VisibilityNotify
- VisibilityPartiallyObscured
- VisibilityUnobscured
- WestGravity
- WhenMapped
- WindingRule
- XYBitmap
- XYPixmap
- X_H
- X_PROTOCOL
- X_PROTOCOL_REVISION
- YSorted
- YXBanded
- YXSorted
- ZPixmap
-);
-
-sub AUTOLOAD {
- # This AUTOLOAD is used to 'autoload' constants from the constant()
- # XS function. If a constant is not found then control is passed
- # to the AUTOLOAD in AutoLoader.
-
- my $constname;
- ($constname = $AUTOLOAD) =~ s/.*:://;
- my $val = constant($constname, @_ ? $_[0] : 0);
- if ($! != 0) {
- if ($! =~ /Invalid/) {
- $AutoLoader::AUTOLOAD = $AUTOLOAD;
- goto &AutoLoader::AUTOLOAD;
- }
- else {
- croak "Your vendor has not defined X macro $constname";
- }
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-bootstrap Tk::X;
-
-# Preloaded methods go here.
-
-# Autoload methods go after =cut, and are processed by the autosplit program.
-
-1;
-__END__
-# Below is the stub of documentation for your module. You better edit it!
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Tk/X11/X.h b/Master/tlpkg/tlperl/lib/Tk/X11/X.h
deleted file mode 100644
index 95db07f903f..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/X11/X.h
+++ /dev/null
@@ -1,677 +0,0 @@
-/*
- * $XConsortium: X.h,v 1.66 88/09/06 15:55:56 jim Exp $
- */
-
-/* Definitions for the X window system likely to be used by applications */
-
-#ifndef X_H
-#define X_H
-
-/***********************************************************
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
-and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the names of Digital or MIT not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-#define X_PROTOCOL 11 /* current protocol version */
-#define X_PROTOCOL_REVISION 0 /* current minor version */
-
-#if defined(MAC_TCL) || defined(MAC_OSX_TK)
-# define Cursor XCursor
-# define Region XRegion
-#endif
-
-/* Resources */
-
-#ifdef _WIN64
-typedef __int64 XID;
-#else
-typedef unsigned long XID;
-#endif
-
-typedef XID Window;
-typedef XID Drawable;
-typedef XID Font;
-typedef XID Pixmap;
-typedef XID Cursor;
-typedef XID Colormap;
-typedef XID GContext;
-typedef XID KeySym;
-
-typedef unsigned long Mask;
-
-typedef unsigned long Atom;
-
-typedef unsigned long VisualID;
-
-typedef unsigned long Time;
-
-typedef unsigned long KeyCode; /* In order to use IME, the Macintosh needs
- * to pack 3 bytes into the keyCode field in
- * the XEvent. In the real X.h, a KeyCode is
- * defined as a short, which wouldn't be big
- * enough. */
-
-/*****************************************************************
- * RESERVED RESOURCE AND CONSTANT DEFINITIONS
- *****************************************************************/
-
-#define None 0L /* universal null resource or null atom */
-
-#define ParentRelative 1L /* background pixmap in CreateWindow
- and ChangeWindowAttributes */
-
-#define CopyFromParent 0L /* border pixmap in CreateWindow
- and ChangeWindowAttributes
- special VisualID and special window
- class passed to CreateWindow */
-
-#define PointerWindow 0L /* destination window in SendEvent */
-#define InputFocus 1L /* destination window in SendEvent */
-
-#define PointerRoot 1L /* focus window in SetInputFocus */
-
-#define AnyPropertyType 0L /* special Atom, passed to GetProperty */
-
-#define AnyKey 0L /* special Key Code, passed to GrabKey */
-
-#define AnyButton 0L /* special Button Code, passed to GrabButton */
-
-#define AllTemporary 0L /* special Resource ID passed to KillClient */
-
-#define CurrentTime 0L /* special Time */
-
-#define NoSymbol 0L /* special KeySym */
-
-/*****************************************************************
- * EVENT DEFINITIONS
- *****************************************************************/
-
-/* Input Event Masks. Used as event-mask window attribute and as arguments
- to Grab requests. Not to be confused with event names. */
-
-#define NoEventMask 0L
-#define KeyPressMask (1L<<0)
-#define KeyReleaseMask (1L<<1)
-#define ButtonPressMask (1L<<2)
-#define ButtonReleaseMask (1L<<3)
-#define EnterWindowMask (1L<<4)
-#define LeaveWindowMask (1L<<5)
-#define PointerMotionMask (1L<<6)
-#define PointerMotionHintMask (1L<<7)
-#define Button1MotionMask (1L<<8)
-#define Button2MotionMask (1L<<9)
-#define Button3MotionMask (1L<<10)
-#define Button4MotionMask (1L<<11)
-#define Button5MotionMask (1L<<12)
-#define ButtonMotionMask (1L<<13)
-#define KeymapStateMask (1L<<14)
-#define ExposureMask (1L<<15)
-#define VisibilityChangeMask (1L<<16)
-#define StructureNotifyMask (1L<<17)
-#define ResizeRedirectMask (1L<<18)
-#define SubstructureNotifyMask (1L<<19)
-#define SubstructureRedirectMask (1L<<20)
-#define FocusChangeMask (1L<<21)
-#define PropertyChangeMask (1L<<22)
-#define ColormapChangeMask (1L<<23)
-#define OwnerGrabButtonMask (1L<<24)
-
-/* Event names. Used in "type" field in XEvent structures. Not to be
-confused with event masks above. They start from 2 because 0 and 1
-are reserved in the protocol for errors and replies. */
-
-#define KeyPress 2
-#define KeyRelease 3
-#define ButtonPress 4
-#define ButtonRelease 5
-#define MotionNotify 6
-#define EnterNotify 7
-#define LeaveNotify 8
-#define FocusIn 9
-#define FocusOut 10
-#define KeymapNotify 11
-#define Expose 12
-#define GraphicsExpose 13
-#define NoExpose 14
-#define VisibilityNotify 15
-#define CreateNotify 16
-#define DestroyNotify 17
-#define UnmapNotify 18
-#define MapNotify 19
-#define MapRequest 20
-#define ReparentNotify 21
-#define ConfigureNotify 22
-#define ConfigureRequest 23
-#define GravityNotify 24
-#define ResizeRequest 25
-#define CirculateNotify 26
-#define CirculateRequest 27
-#define PropertyNotify 28
-#define SelectionClear 29
-#define SelectionRequest 30
-#define SelectionNotify 31
-#define ColormapNotify 32
-#define ClientMessage 33
-#define MappingNotify 34
-#define LASTEvent 35 /* must be bigger than any event # */
-
-
-/* Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer,
- state in various key-, mouse-, and button-related events. */
-
-#define ShiftMask (1<<0)
-#define LockMask (1<<1)
-#define ControlMask (1<<2)
-#define Mod1Mask (1<<3)
-#define Mod2Mask (1<<4)
-#define Mod3Mask (1<<5)
-#define Mod4Mask (1<<6)
-#define Mod5Mask (1<<7)
-
-/* modifier names. Used to build a SetModifierMapping request or
- to read a GetModifierMapping request. These correspond to the
- masks defined above. */
-#define ShiftMapIndex 0
-#define LockMapIndex 1
-#define ControlMapIndex 2
-#define Mod1MapIndex 3
-#define Mod2MapIndex 4
-#define Mod3MapIndex 5
-#define Mod4MapIndex 6
-#define Mod5MapIndex 7
-
-
-/* button masks. Used in same manner as Key masks above. Not to be confused
- with button names below. */
-
-#define Button1Mask (1<<8)
-#define Button2Mask (1<<9)
-#define Button3Mask (1<<10)
-#define Button4Mask (1<<11)
-#define Button5Mask (1<<12)
-
-#define AnyModifier (1<<15) /* used in GrabButton, GrabKey */
-
-
-/* button names. Used as arguments to GrabButton and as detail in ButtonPress
- and ButtonRelease events. Not to be confused with button masks above.
- Note that 0 is already defined above as "AnyButton". */
-
-#define Button1 1
-#define Button2 2
-#define Button3 3
-#define Button4 4
-#define Button5 5
-
-/* Notify modes */
-
-#define NotifyNormal 0
-#define NotifyGrab 1
-#define NotifyUngrab 2
-#define NotifyWhileGrabbed 3
-
-#define NotifyHint 1 /* for MotionNotify events */
-
-/* Notify detail */
-
-#define NotifyAncestor 0
-#define NotifyVirtual 1
-#define NotifyInferior 2
-#define NotifyNonlinear 3
-#define NotifyNonlinearVirtual 4
-#define NotifyPointer 5
-#define NotifyPointerRoot 6
-#define NotifyDetailNone 7
-
-/* Visibility notify */
-
-#define VisibilityUnobscured 0
-#define VisibilityPartiallyObscured 1
-#define VisibilityFullyObscured 2
-
-/* Circulation request */
-
-#define PlaceOnTop 0
-#define PlaceOnBottom 1
-
-/* protocol families */
-
-#define FamilyInternet 0
-#define FamilyDECnet 1
-#define FamilyChaos 2
-
-/* Property notification */
-
-#define PropertyNewValue 0
-#define PropertyDelete 1
-
-/* Color Map notification */
-
-#define ColormapUninstalled 0
-#define ColormapInstalled 1
-
-/* GrabPointer, GrabButton, GrabKeyboard, GrabKey Modes */
-
-#define GrabModeSync 0
-#define GrabModeAsync 1
-
-/* GrabPointer, GrabKeyboard reply status */
-
-#define GrabSuccess 0
-#define AlreadyGrabbed 1
-#define GrabInvalidTime 2
-#define GrabNotViewable 3
-#define GrabFrozen 4
-
-/* AllowEvents modes */
-
-#define AsyncPointer 0
-#define SyncPointer 1
-#define ReplayPointer 2
-#define AsyncKeyboard 3
-#define SyncKeyboard 4
-#define ReplayKeyboard 5
-#define AsyncBoth 6
-#define SyncBoth 7
-
-/* Used in SetInputFocus, GetInputFocus */
-
-#define RevertToNone (int)None
-#define RevertToPointerRoot (int)PointerRoot
-#define RevertToParent 2
-
-/*****************************************************************
- * ERROR CODES
- *****************************************************************/
-
-#define Success 0 /* everything's okay */
-#define BadRequest 1 /* bad request code */
-#define BadValue 2 /* int parameter out of range */
-#define BadWindow 3 /* parameter not a Window */
-#define BadPixmap 4 /* parameter not a Pixmap */
-#define BadAtom 5 /* parameter not an Atom */
-#define BadCursor 6 /* parameter not a Cursor */
-#define BadFont 7 /* parameter not a Font */
-#define BadMatch 8 /* parameter mismatch */
-#define BadDrawable 9 /* parameter not a Pixmap or Window */
-#define BadAccess 10 /* depending on context:
- - key/button already grabbed
- - attempt to free an illegal
- cmap entry
- - attempt to store into a read-only
- color map entry.
- - attempt to modify the access control
- list from other than the local host.
- */
-#define BadAlloc 11 /* insufficient resources */
-#define BadColor 12 /* no such colormap */
-#define BadGC 13 /* parameter not a GC */
-#define BadIDChoice 14 /* choice not in range or already used */
-#define BadName 15 /* font or color name doesn't exist */
-#define BadLength 16 /* Request length incorrect */
-#define BadImplementation 17 /* server is defective */
-
-#define FirstExtensionError 128
-#define LastExtensionError 255
-
-/*****************************************************************
- * WINDOW DEFINITIONS
- *****************************************************************/
-
-/* Window classes used by CreateWindow */
-/* Note that CopyFromParent is already defined as 0 above */
-
-#define InputOutput 1
-#define InputOnly 2
-
-/* Window attributes for CreateWindow and ChangeWindowAttributes */
-
-#define CWBackPixmap (1L<<0)
-#define CWBackPixel (1L<<1)
-#define CWBorderPixmap (1L<<2)
-#define CWBorderPixel (1L<<3)
-#define CWBitGravity (1L<<4)
-#define CWWinGravity (1L<<5)
-#define CWBackingStore (1L<<6)
-#define CWBackingPlanes (1L<<7)
-#define CWBackingPixel (1L<<8)
-#define CWOverrideRedirect (1L<<9)
-#define CWSaveUnder (1L<<10)
-#define CWEventMask (1L<<11)
-#define CWDontPropagate (1L<<12)
-#define CWColormap (1L<<13)
-#define CWCursor (1L<<14)
-
-/* ConfigureWindow structure */
-
-#define CWX (1<<0)
-#define CWY (1<<1)
-#define CWWidth (1<<2)
-#define CWHeight (1<<3)
-#define CWBorderWidth (1<<4)
-#define CWSibling (1<<5)
-#define CWStackMode (1<<6)
-
-
-/* Bit Gravity */
-
-#define ForgetGravity 0
-#define NorthWestGravity 1
-#define NorthGravity 2
-#define NorthEastGravity 3
-#define WestGravity 4
-#define CenterGravity 5
-#define EastGravity 6
-#define SouthWestGravity 7
-#define SouthGravity 8
-#define SouthEastGravity 9
-#define StaticGravity 10
-
-/* Window gravity + bit gravity above */
-
-#define UnmapGravity 0
-
-/* Used in CreateWindow for backing-store hint */
-
-#define NotUseful 0
-#define WhenMapped 1
-#define Always 2
-
-/* Used in GetWindowAttributes reply */
-
-#define IsUnmapped 0
-#define IsUnviewable 1
-#define IsViewable 2
-
-/* Used in ChangeSaveSet */
-
-#define SetModeInsert 0
-#define SetModeDelete 1
-
-/* Used in ChangeCloseDownMode */
-
-#define DestroyAll 0
-#define RetainPermanent 1
-#define RetainTemporary 2
-
-/* Window stacking method (in configureWindow) */
-
-#define Above 0
-#define Below 1
-#define TopIf 2
-#define BottomIf 3
-#define Opposite 4
-
-/* Circulation direction */
-
-#define RaiseLowest 0
-#define LowerHighest 1
-
-/* Property modes */
-
-#define PropModeReplace 0
-#define PropModePrepend 1
-#define PropModeAppend 2
-
-/*****************************************************************
- * GRAPHICS DEFINITIONS
- *****************************************************************/
-
-/* graphics functions, as in GC.alu */
-
-#define GXclear 0x0 /* 0 */
-#define GXand 0x1 /* src AND dst */
-#define GXandReverse 0x2 /* src AND NOT dst */
-#define GXcopy 0x3 /* src */
-#define GXandInverted 0x4 /* NOT src AND dst */
-#define GXnoop 0x5 /* dst */
-#define GXxor 0x6 /* src XOR dst */
-#define GXor 0x7 /* src OR dst */
-#define GXnor 0x8 /* NOT src AND NOT dst */
-#define GXequiv 0x9 /* NOT src XOR dst */
-#define GXinvert 0xa /* NOT dst */
-#define GXorReverse 0xb /* src OR NOT dst */
-#define GXcopyInverted 0xc /* NOT src */
-#define GXorInverted 0xd /* NOT src OR dst */
-#define GXnand 0xe /* NOT src OR NOT dst */
-#define GXset 0xf /* 1 */
-
-/* LineStyle */
-
-#define LineSolid 0
-#define LineOnOffDash 1
-#define LineDoubleDash 2
-
-/* capStyle */
-
-#define CapNotLast 0
-#define CapButt 1
-#define CapRound 2
-#define CapProjecting 3
-
-/* joinStyle */
-
-#define JoinMiter 0
-#define JoinRound 1
-#define JoinBevel 2
-
-/* fillStyle */
-
-#define FillSolid 0
-#define FillTiled 1
-#define FillStippled 2
-#define FillOpaqueStippled 3
-
-/* fillRule */
-
-#define EvenOddRule 0
-#define WindingRule 1
-
-/* subwindow mode */
-
-#define ClipByChildren 0
-#define IncludeInferiors 1
-
-/* SetClipRectangles ordering */
-
-#define Unsorted 0
-#define YSorted 1
-#define YXSorted 2
-#define YXBanded 3
-
-/* CoordinateMode for drawing routines */
-
-#define CoordModeOrigin 0 /* relative to the origin */
-#define CoordModePrevious 1 /* relative to previous point */
-
-/* Polygon shapes */
-
-#define Complex 0 /* paths may intersect */
-#define Nonconvex 1 /* no paths intersect, but not convex */
-#define Convex 2 /* wholly convex */
-
-/* Arc modes for PolyFillArc */
-
-#define ArcChord 0 /* join endpoints of arc */
-#define ArcPieSlice 1 /* join endpoints to center of arc */
-
-/* GC components: masks used in CreateGC, CopyGC, ChangeGC, OR'ed into
- GC.stateChanges */
-
-#define GCFunction (1L<<0)
-#define GCPlaneMask (1L<<1)
-#define GCForeground (1L<<2)
-#define GCBackground (1L<<3)
-#define GCLineWidth (1L<<4)
-#define GCLineStyle (1L<<5)
-#define GCCapStyle (1L<<6)
-#define GCJoinStyle (1L<<7)
-#define GCFillStyle (1L<<8)
-#define GCFillRule (1L<<9)
-#define GCTile (1L<<10)
-#define GCStipple (1L<<11)
-#define GCTileStipXOrigin (1L<<12)
-#define GCTileStipYOrigin (1L<<13)
-#define GCFont (1L<<14)
-#define GCSubwindowMode (1L<<15)
-#define GCGraphicsExposures (1L<<16)
-#define GCClipXOrigin (1L<<17)
-#define GCClipYOrigin (1L<<18)
-#define GCClipMask (1L<<19)
-#define GCDashOffset (1L<<20)
-#define GCDashList (1L<<21)
-#define GCArcMode (1L<<22)
-
-#define GCLastBit 22
-/*****************************************************************
- * FONTS
- *****************************************************************/
-
-/* used in QueryFont -- draw direction */
-
-#define FontLeftToRight 0
-#define FontRightToLeft 1
-
-#define FontChange 255
-
-/*****************************************************************
- * IMAGING
- *****************************************************************/
-
-/* ImageFormat -- PutImage, GetImage */
-
-#define XYBitmap 0 /* depth 1, XYFormat */
-#define XYPixmap 1 /* depth == drawable depth */
-#define ZPixmap 2 /* depth == drawable depth */
-
-/*****************************************************************
- * COLOR MAP STUFF
- *****************************************************************/
-
-/* For CreateColormap */
-
-#define AllocNone 0 /* create map with no entries */
-#define AllocAll 1 /* allocate entire map writeable */
-
-
-/* Flags used in StoreNamedColor, StoreColors */
-
-#define DoRed (1<<0)
-#define DoGreen (1<<1)
-#define DoBlue (1<<2)
-
-/*****************************************************************
- * CURSOR STUFF
- *****************************************************************/
-
-/* QueryBestSize Class */
-
-#define CursorShape 0 /* largest size that can be displayed */
-#define TileShape 1 /* size tiled fastest */
-#define StippleShape 2 /* size stippled fastest */
-
-/*****************************************************************
- * KEYBOARD/POINTER STUFF
- *****************************************************************/
-
-#define AutoRepeatModeOff 0
-#define AutoRepeatModeOn 1
-#define AutoRepeatModeDefault 2
-
-#define LedModeOff 0
-#define LedModeOn 1
-
-/* masks for ChangeKeyboardControl */
-
-#define KBKeyClickPercent (1L<<0)
-#define KBBellPercent (1L<<1)
-#define KBBellPitch (1L<<2)
-#define KBBellDuration (1L<<3)
-#define KBLed (1L<<4)
-#define KBLedMode (1L<<5)
-#define KBKey (1L<<6)
-#define KBAutoRepeatMode (1L<<7)
-
-#define MappingSuccess 0
-#define MappingBusy 1
-#define MappingFailed 2
-
-#define MappingModifier 0
-#define MappingKeyboard 1
-#define MappingPointer 2
-
-/*****************************************************************
- * SCREEN SAVER STUFF
- *****************************************************************/
-
-#define DontPreferBlanking 0
-#define PreferBlanking 1
-#define DefaultBlanking 2
-
-#define DisableScreenSaver 0
-#define DisableScreenInterval 0
-
-#define DontAllowExposures 0
-#define AllowExposures 1
-#define DefaultExposures 2
-
-/* for ForceScreenSaver */
-
-#define ScreenSaverReset 0
-#define ScreenSaverActive 1
-
-/*****************************************************************
- * HOSTS AND CONNECTIONS
- *****************************************************************/
-
-/* for ChangeHosts */
-
-#define HostInsert 0
-#define HostDelete 1
-
-/* for ChangeAccessControl */
-
-#define EnableAccess 1
-#define DisableAccess 0
-
-/* Display classes used in opening the connection
- * Note that the statically allocated ones are even numbered and the
- * dynamically changeable ones are odd numbered */
-
-#define StaticGray 0
-#define GrayScale 1
-#define StaticColor 2
-#define PseudoColor 3
-#define TrueColor 4
-#define DirectColor 5
-
-
-/* Byte order used in imageByteOrder and bitmapBitOrder */
-
-#define LSBFirst 0
-#define MSBFirst 1
-
-#if defined(MAC_TCL) || defined(MAC_OSX_TK)
-# undef Cursor
-# undef Region
-#endif
-
-#endif /* X_H */
diff --git a/Master/tlpkg/tlperl/lib/Tk/X11/Xatom.h b/Master/tlpkg/tlperl/lib/Tk/X11/Xatom.h
deleted file mode 100644
index 485a4236db8..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/X11/Xatom.h
+++ /dev/null
@@ -1,79 +0,0 @@
-#ifndef XATOM_H
-#define XATOM_H 1
-
-/* THIS IS A GENERATED FILE
- *
- * Do not change! Changing this file implies a protocol change!
- */
-
-#define XA_PRIMARY ((Atom) 1)
-#define XA_SECONDARY ((Atom) 2)
-#define XA_ARC ((Atom) 3)
-#define XA_ATOM ((Atom) 4)
-#define XA_BITMAP ((Atom) 5)
-#define XA_CARDINAL ((Atom) 6)
-#define XA_COLORMAP ((Atom) 7)
-#define XA_CURSOR ((Atom) 8)
-#define XA_CUT_BUFFER0 ((Atom) 9)
-#define XA_CUT_BUFFER1 ((Atom) 10)
-#define XA_CUT_BUFFER2 ((Atom) 11)
-#define XA_CUT_BUFFER3 ((Atom) 12)
-#define XA_CUT_BUFFER4 ((Atom) 13)
-#define XA_CUT_BUFFER5 ((Atom) 14)
-#define XA_CUT_BUFFER6 ((Atom) 15)
-#define XA_CUT_BUFFER7 ((Atom) 16)
-#define XA_DRAWABLE ((Atom) 17)
-#define XA_FONT ((Atom) 18)
-#define XA_INTEGER ((Atom) 19)
-#define XA_PIXMAP ((Atom) 20)
-#define XA_POINT ((Atom) 21)
-#define XA_RECTANGLE ((Atom) 22)
-#define XA_RESOURCE_MANAGER ((Atom) 23)
-#define XA_RGB_COLOR_MAP ((Atom) 24)
-#define XA_RGB_BEST_MAP ((Atom) 25)
-#define XA_RGB_BLUE_MAP ((Atom) 26)
-#define XA_RGB_DEFAULT_MAP ((Atom) 27)
-#define XA_RGB_GRAY_MAP ((Atom) 28)
-#define XA_RGB_GREEN_MAP ((Atom) 29)
-#define XA_RGB_RED_MAP ((Atom) 30)
-#define XA_STRING ((Atom) 31)
-#define XA_VISUALID ((Atom) 32)
-#define XA_WINDOW ((Atom) 33)
-#define XA_WM_COMMAND ((Atom) 34)
-#define XA_WM_HINTS ((Atom) 35)
-#define XA_WM_CLIENT_MACHINE ((Atom) 36)
-#define XA_WM_ICON_NAME ((Atom) 37)
-#define XA_WM_ICON_SIZE ((Atom) 38)
-#define XA_WM_NAME ((Atom) 39)
-#define XA_WM_NORMAL_HINTS ((Atom) 40)
-#define XA_WM_SIZE_HINTS ((Atom) 41)
-#define XA_WM_ZOOM_HINTS ((Atom) 42)
-#define XA_MIN_SPACE ((Atom) 43)
-#define XA_NORM_SPACE ((Atom) 44)
-#define XA_MAX_SPACE ((Atom) 45)
-#define XA_END_SPACE ((Atom) 46)
-#define XA_SUPERSCRIPT_X ((Atom) 47)
-#define XA_SUPERSCRIPT_Y ((Atom) 48)
-#define XA_SUBSCRIPT_X ((Atom) 49)
-#define XA_SUBSCRIPT_Y ((Atom) 50)
-#define XA_UNDERLINE_POSITION ((Atom) 51)
-#define XA_UNDERLINE_THICKNESS ((Atom) 52)
-#define XA_STRIKEOUT_ASCENT ((Atom) 53)
-#define XA_STRIKEOUT_DESCENT ((Atom) 54)
-#define XA_ITALIC_ANGLE ((Atom) 55)
-#define XA_X_HEIGHT ((Atom) 56)
-#define XA_QUAD_WIDTH ((Atom) 57)
-#define XA_WEIGHT ((Atom) 58)
-#define XA_POINT_SIZE ((Atom) 59)
-#define XA_RESOLUTION ((Atom) 60)
-#define XA_COPYRIGHT ((Atom) 61)
-#define XA_NOTICE ((Atom) 62)
-#define XA_FONT_NAME ((Atom) 63)
-#define XA_FAMILY_NAME ((Atom) 64)
-#define XA_FULL_NAME ((Atom) 65)
-#define XA_CAP_HEIGHT ((Atom) 66)
-#define XA_WM_CLASS ((Atom) 67)
-#define XA_WM_TRANSIENT_FOR ((Atom) 68)
-
-#define XA_LAST_PREDEFINED ((Atom) 68)
-#endif /* XATOM_H */
diff --git a/Master/tlpkg/tlperl/lib/Tk/X11/Xfuncproto.h b/Master/tlpkg/tlperl/lib/Tk/X11/Xfuncproto.h
deleted file mode 100644
index a59379b3b65..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/X11/Xfuncproto.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* $XConsortium: Xfuncproto.h,v 1.7 91/05/13 20:49:21 rws Exp $ */
-/*
- * Copyright 1989, 1991 by the Massachusetts Institute of Technology
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. M.I.T. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- */
-
-/* Definitions to make function prototypes manageable */
-
-#ifndef _XFUNCPROTO_H_
-#define _XFUNCPROTO_H_
-
-#ifndef NeedFunctionPrototypes
-#define NeedFunctionPrototypes 1
-#endif /* NeedFunctionPrototypes */
-
-#ifndef NeedVarargsPrototypes
-#define NeedVarargsPrototypes 0
-#endif /* NeedVarargsPrototypes */
-
-#if NeedFunctionPrototypes
-
-#ifndef NeedNestedPrototypes
-#define NeedNestedPrototypes 1
-#endif /* NeedNestedPrototypes */
-
-#ifndef _Xconst
-#define _Xconst const
-#endif /* _Xconst */
-
-#ifndef NeedWidePrototypes
-#ifdef NARROWPROTO
-#define NeedWidePrototypes 0
-#else
-#define NeedWidePrototypes 1 /* default to make interropt. easier */
-#endif
-#endif /* NeedWidePrototypes */
-
-#endif /* NeedFunctionPrototypes */
-
-#ifdef __cplusplus
-#define _XFUNCPROTOBEGIN extern "C" {
-#define _XFUNCPROTOEND }
-#endif
-
-#ifndef _XFUNCPROTOBEGIN
-#define _XFUNCPROTOBEGIN
-#define _XFUNCPROTOEND
-#endif /* _XFUNCPROTOBEGIN */
-
-#endif /* _XFUNCPROTO_H_ */
diff --git a/Master/tlpkg/tlperl/lib/Tk/X11/Xlib.h b/Master/tlpkg/tlperl/lib/Tk/X11/Xlib.h
deleted file mode 100644
index 0a9e3ddd45d..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/X11/Xlib.h
+++ /dev/null
@@ -1,1214 +0,0 @@
-/* $XConsortium: Xlib.h,v 11.221 93/07/02 14:13:28 gildea Exp $ */
-/*
- * Copyright 1985, 1986, 1987, 1991 by the Massachusetts Institute of Technology
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. M.I.T. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * X Window System is a Trademark of MIT.
- *
- */
-
-
-/*
- * Xlib.h - Header definition and support file for the C subroutine
- * interface library (Xlib) to the X Window System Protocol (V11).
- * Structures and symbols starting with "_" are private to the library.
- */
-#ifndef _XLIB_H_
-#define _XLIB_H_
-
-#define XlibSpecificationRelease 5
-
-#if !defined(MAC_TCL) && !defined(MAC_OSX_TK)
-# include <X11/X.h>
-#endif
-#ifdef MAC_TCL
-# include <X.h>
-# define Cursor XCursor
-# define Region XRegion
-#endif
-#ifdef MAC_OSX_TK
-# include <X11/X.h>
-# define Cursor XCursor
-# define Region XRegion
-#endif
-
-/* applications should not depend on these two headers being included! */
-#ifdef MAC_TCL
-#include <Xfuncproto.h>
-#else
-#include <X11/Xfuncproto.h>
-#endif
-
-#ifndef X_WCHAR
-#ifdef X_NOT_STDC_ENV
-#define X_WCHAR
-#endif
-#endif
-
-#ifndef X_WCHAR
-#include <stddef.h>
-#else
-/* replace this with #include or typedef appropriate for your system */
-typedef unsigned long wchar_t;
-#endif
-
-typedef char *XPointer;
-
-#define Bool int
-#if defined(MAC_TCL) || defined(MAC_OSX_TK)
-/* Use define rather than typedef, since may need to undefine this later */
-#define Status int
-#else
-typedef int Status;
-#endif
-#define True 1
-#define False 0
-
-#define QueuedAlready 0
-#define QueuedAfterReading 1
-#define QueuedAfterFlush 2
-
-#define ConnectionNumber(dpy) ((dpy)->fd)
-#define RootWindow(dpy, scr) (((dpy)->screens[(scr)]).root)
-#define DefaultScreen(dpy) ((dpy)->default_screen)
-#define DefaultRootWindow(dpy) (((dpy)->screens[(dpy)->default_screen]).root)
-#define DefaultVisual(dpy, scr) (((dpy)->screens[(scr)]).root_visual)
-#define DefaultGC(dpy, scr) (((dpy)->screens[(scr)]).default_gc)
-#define BlackPixel(dpy, scr) (((dpy)->screens[(scr)]).black_pixel)
-#define WhitePixel(dpy, scr) (((dpy)->screens[(scr)]).white_pixel)
-#define AllPlanes ((unsigned long)~0L)
-#define QLength(dpy) ((dpy)->qlen)
-#define DisplayWidth(dpy, scr) (((dpy)->screens[(scr)]).width)
-#define DisplayHeight(dpy, scr) (((dpy)->screens[(scr)]).height)
-#define DisplayWidthMM(dpy, scr)(((dpy)->screens[(scr)]).mwidth)
-#define DisplayHeightMM(dpy, scr)(((dpy)->screens[(scr)]).mheight)
-#define DisplayPlanes(dpy, scr) (((dpy)->screens[(scr)]).root_depth)
-#define DisplayCells(dpy, scr) (DefaultVisual((dpy), (scr))->map_entries)
-#define ScreenCount(dpy) ((dpy)->nscreens)
-#define ServerVendor(dpy) ((dpy)->vendor)
-#define ProtocolVersion(dpy) ((dpy)->proto_major_version)
-#define ProtocolRevision(dpy) ((dpy)->proto_minor_version)
-#define VendorRelease(dpy) ((dpy)->release)
-#define DisplayString(dpy) ((dpy)->display_name)
-#define DefaultDepth(dpy, scr) (((dpy)->screens[(scr)]).root_depth)
-#define DefaultColormap(dpy, scr)(((dpy)->screens[(scr)]).cmap)
-#define BitmapUnit(dpy) ((dpy)->bitmap_unit)
-#define BitmapBitOrder(dpy) ((dpy)->bitmap_bit_order)
-#define BitmapPad(dpy) ((dpy)->bitmap_pad)
-#define ImageByteOrder(dpy) ((dpy)->byte_order)
-#define NextRequest(dpy) ((dpy)->request + 1)
-#define LastKnownRequestProcessed(dpy) ((dpy)->last_request_read)
-
-/* macros for screen oriented applications (toolkit) */
-#define ScreenOfDisplay(dpy, scr)(&((dpy)->screens[(scr)]))
-#define DefaultScreenOfDisplay(dpy) (&((dpy)->screens[(dpy)->default_screen]))
-#define DisplayOfScreen(s) ((s)->display)
-#define RootWindowOfScreen(s) ((s)->root)
-#define BlackPixelOfScreen(s) ((s)->black_pixel)
-#define WhitePixelOfScreen(s) ((s)->white_pixel)
-#define DefaultColormapOfScreen(s)((s)->cmap)
-#define DefaultDepthOfScreen(s) ((s)->root_depth)
-#define DefaultGCOfScreen(s) ((s)->default_gc)
-#define DefaultVisualOfScreen(s)((s)->root_visual)
-#define WidthOfScreen(s) ((s)->width)
-#define HeightOfScreen(s) ((s)->height)
-#define WidthMMOfScreen(s) ((s)->mwidth)
-#define HeightMMOfScreen(s) ((s)->mheight)
-#define PlanesOfScreen(s) ((s)->root_depth)
-#define CellsOfScreen(s) (DefaultVisualOfScreen((s))->map_entries)
-#define MinCmapsOfScreen(s) ((s)->min_maps)
-#define MaxCmapsOfScreen(s) ((s)->max_maps)
-#define DoesSaveUnders(s) ((s)->save_unders)
-#define DoesBackingStore(s) ((s)->backing_store)
-#define EventMaskOfScreen(s) ((s)->root_input_mask)
-
-/*
- * Extensions need a way to hang private data on some structures.
- */
-typedef struct _XExtData {
- int number; /* number returned by XRegisterExtension */
- struct _XExtData *next; /* next item on list of data for structure */
- int (*free_private)(); /* called to free private storage */
- XPointer private_data; /* data private to this extension. */
-} XExtData;
-
-/*
- * This file contains structures used by the extension mechanism.
- */
-typedef struct { /* public to extension, cannot be changed */
- int extension; /* extension number */
- int major_opcode; /* major op-code assigned by server */
- int first_event; /* first event number for the extension */
- int first_error; /* first error number for the extension */
-} XExtCodes;
-
-/*
- * Data structure for retrieving info about pixmap formats.
- */
-
-typedef struct {
- int depth;
- int bits_per_pixel;
- int scanline_pad;
-} XPixmapFormatValues;
-
-
-/*
- * Data structure for setting graphics context.
- */
-typedef struct {
- int function; /* logical operation */
- unsigned long plane_mask;/* plane mask */
- unsigned long foreground;/* foreground pixel */
- unsigned long background;/* background pixel */
- int line_width; /* line width */
- int line_style; /* LineSolid, LineOnOffDash, LineDoubleDash */
- int cap_style; /* CapNotLast, CapButt,
- CapRound, CapProjecting */
- int join_style; /* JoinMiter, JoinRound, JoinBevel */
- int fill_style; /* FillSolid, FillTiled,
- FillStippled, FillOpaeueStippled */
- int fill_rule; /* EvenOddRule, WindingRule */
- int arc_mode; /* ArcChord, ArcPieSlice */
- Pixmap tile; /* tile pixmap for tiling operations */
- Pixmap stipple; /* stipple 1 plane pixmap for stipping */
- int ts_x_origin; /* offset for tile or stipple operations */
- int ts_y_origin;
- Font font; /* default text font for text operations */
- int subwindow_mode; /* ClipByChildren, IncludeInferiors */
- Bool graphics_exposures;/* boolean, should exposures be generated */
- int clip_x_origin; /* origin for clipping */
- int clip_y_origin;
- Pixmap clip_mask; /* bitmap clipping; other calls for rects */
- int dash_offset; /* patterned/dashed line information */
- char dashes;
-} XGCValues;
-
-/*
- * Graphics context. The contents of this structure are implementation
- * dependent. A GC should be treated as opaque by application code.
- */
-
-typedef XGCValues *GC;
-
-/*
- * Visual structure; contains information about colormapping possible.
- */
-typedef struct {
- XExtData *ext_data; /* hook for extension to hang data */
- VisualID visualid; /* visual id of this visual */
-#if defined(__cplusplus) || defined(c_plusplus)
- int c_class; /* C++ class of screen (monochrome, etc.) */
-#else
- int class; /* class of screen (monochrome, etc.) */
-#endif
- unsigned long red_mask, green_mask, blue_mask; /* mask values */
- int bits_per_rgb; /* log base 2 of distinct color values */
- int map_entries; /* color map entries */
-} Visual;
-
-/*
- * Depth structure; contains information for each possible depth.
- */
-typedef struct {
- int depth; /* this depth (Z) of the depth */
- int nvisuals; /* number of Visual types at this depth */
- Visual *visuals; /* list of visuals possible at this depth */
-} Depth;
-
-/*
- * Information about the screen. The contents of this structure are
- * implementation dependent. A Screen should be treated as opaque
- * by application code.
- */
-typedef struct {
- XExtData *ext_data; /* hook for extension to hang data */
- struct _XDisplay *display;/* back pointer to display structure */
- Window root; /* Root window id. */
- int width, height; /* width and height of screen */
- int mwidth, mheight; /* width and height of in millimeters */
- int ndepths; /* number of depths possible */
- Depth *depths; /* list of allowable depths on the screen */
- int root_depth; /* bits per pixel */
- Visual *root_visual; /* root visual */
- GC default_gc; /* GC for the root root visual */
- Colormap cmap; /* default color map */
- unsigned long white_pixel;
- unsigned long black_pixel; /* White and Black pixel values */
- int max_maps, min_maps; /* max and min color maps */
- int backing_store; /* Never, WhenMapped, Always */
- Bool save_unders;
- long root_input_mask; /* initial root input mask */
-} Screen;
-
-/*
- * Format structure; describes ZFormat data the screen will understand.
- */
-typedef struct {
- XExtData *ext_data; /* hook for extension to hang data */
- int depth; /* depth of this image format */
- int bits_per_pixel; /* bits/pixel at this depth */
- int scanline_pad; /* scanline must padded to this multiple */
-} ScreenFormat;
-
-/*
- * Data structure for setting window attributes.
- */
-typedef struct {
- Pixmap background_pixmap; /* background or None or ParentRelative */
- unsigned long background_pixel; /* background pixel */
- Pixmap border_pixmap; /* border of the window */
- unsigned long border_pixel; /* border pixel value */
- int bit_gravity; /* one of bit gravity values */
- int win_gravity; /* one of the window gravity values */
- int backing_store; /* NotUseful, WhenMapped, Always */
- unsigned long backing_planes;/* planes to be preseved if possible */
- unsigned long backing_pixel;/* value to use in restoring planes */
- Bool save_under; /* should bits under be saved? (popups) */
- long event_mask; /* set of events that should be saved */
- long do_not_propagate_mask; /* set of events that should not propagate */
- Bool override_redirect; /* boolean value for override-redirect */
- Colormap colormap; /* color map to be associated with window */
- Cursor cursor; /* cursor to be displayed (or None) */
-} XSetWindowAttributes;
-
-typedef struct {
- int x, y; /* location of window */
- int width, height; /* width and height of window */
- int border_width; /* border width of window */
- int depth; /* depth of window */
- Visual *visual; /* the associated visual structure */
- Window root; /* root of screen containing window */
-#if defined(__cplusplus) || defined(c_plusplus)
- int c_class; /* C++ InputOutput, InputOnly*/
-#else
- int class; /* InputOutput, InputOnly*/
-#endif
- int bit_gravity; /* one of bit gravity values */
- int win_gravity; /* one of the window gravity values */
- int backing_store; /* NotUseful, WhenMapped, Always */
- unsigned long backing_planes;/* planes to be preserved if possible */
- unsigned long backing_pixel;/* value to be used when restoring planes */
- Bool save_under; /* boolean, should bits under be saved? */
- Colormap colormap; /* color map to be associated with window */
- Bool map_installed; /* boolean, is color map currently installed*/
- int map_state; /* IsUnmapped, IsUnviewable, IsViewable */
- long all_event_masks; /* set of events all people have interest in*/
- long your_event_mask; /* my event mask */
- long do_not_propagate_mask; /* set of events that should not propagate */
- Bool override_redirect; /* boolean value for override-redirect */
- Screen *screen; /* back pointer to correct screen */
-} XWindowAttributes;
-
-/*
- * Data structure for host setting; getting routines.
- *
- */
-
-typedef struct {
- int family; /* for example FamilyInternet */
- int length; /* length of address, in bytes */
- char *address; /* pointer to where to find the bytes */
-} XHostAddress;
-
-/*
- * Data structure for "image" data, used by image manipulation routines.
- */
-typedef struct _XImage {
- int width, height; /* size of image */
- int xoffset; /* number of pixels offset in X direction */
- int format; /* XYBitmap, XYPixmap, ZPixmap */
- char *data; /* pointer to image data */
- int byte_order; /* data byte order, LSBFirst, MSBFirst */
- int bitmap_unit; /* quant. of scanline 8, 16, 32 */
- int bitmap_bit_order; /* LSBFirst, MSBFirst */
- int bitmap_pad; /* 8, 16, 32 either XY or ZPixmap */
- int depth; /* depth of image */
- int bytes_per_line; /* accelarator to next line */
- int bits_per_pixel; /* bits per pixel (ZPixmap) */
- unsigned long red_mask; /* bits in z arrangment */
- unsigned long green_mask;
- unsigned long blue_mask;
- XPointer obdata; /* hook for the object routines to hang on */
- struct funcs { /* image manipulation routines */
- struct _XImage *(*create_image)();
-#if NeedFunctionPrototypes
- int (*destroy_image) (struct _XImage *);
- unsigned long (*get_pixel) (struct _XImage *, int, int);
- int (*put_pixel) (struct _XImage *, int, int, unsigned long);
- struct _XImage *(*sub_image)(struct _XImage *, int, int, unsigned int, unsigned int);
- int (*add_pixel) (struct _XImage *, long);
-#else
- int (*destroy_image)();
- unsigned long (*get_pixel)();
- int (*put_pixel)();
- struct _XImage *(*sub_image)();
- int (*add_pixel)();
-#endif
- } f;
-} XImage;
-
-/*
- * Data structure for XReconfigureWindow
- */
-typedef struct {
- int x, y;
- int width, height;
- int border_width;
- Window sibling;
- int stack_mode;
-} XWindowChanges;
-
-/*
- * Data structure used by color operations
- */
-typedef struct {
- unsigned long pixel;
- unsigned short red, green, blue;
- char flags; /* do_red, do_green, do_blue */
- char pad;
-} XColor;
-
-/*
- * Data structures for graphics operations. On most machines, these are
- * congruent with the wire protocol structures, so reformatting the data
- * can be avoided on these architectures.
- */
-typedef struct {
- short x1, y1, x2, y2;
-} XSegment;
-
-typedef struct {
- short x, y;
-} XPoint;
-
-typedef struct {
- short x, y;
- unsigned short width, height;
-} XRectangle;
-
-typedef struct {
- short x, y;
- unsigned short width, height;
- short angle1, angle2;
-} XArc;
-
-
-/* Data structure for XChangeKeyboardControl */
-
-typedef struct {
- int key_click_percent;
- int bell_percent;
- int bell_pitch;
- int bell_duration;
- int led;
- int led_mode;
- int key;
- int auto_repeat_mode; /* On, Off, Default */
-} XKeyboardControl;
-
-/* Data structure for XGetKeyboardControl */
-
-typedef struct {
- int key_click_percent;
- int bell_percent;
- unsigned int bell_pitch, bell_duration;
- unsigned long led_mask;
- int global_auto_repeat;
- char auto_repeats[32];
-} XKeyboardState;
-
-/* Data structure for XGetMotionEvents. */
-
-typedef struct {
- Time time;
- short x, y;
-} XTimeCoord;
-
-/* Data structure for X{Set,Get}ModifierMapping */
-
-typedef struct {
- int max_keypermod; /* The server's max # of keys per modifier */
- KeyCode *modifiermap; /* An 8 by max_keypermod array of modifiers */
-} XModifierKeymap;
-
-
-/*
- * Display datatype maintaining display specific data.
- * The contents of this structure are implementation dependent.
- * A Display should be treated as opaque by application code.
- */
-typedef struct _XDisplay {
- XExtData *ext_data; /* hook for extension to hang data */
- struct _XFreeFuncs *free_funcs; /* internal free functions */
- int fd; /* Network socket. */
- int conn_checker; /* ugly thing used by _XEventsQueued */
- int proto_major_version;/* maj. version of server's X protocol */
- int proto_minor_version;/* minor version of servers X protocol */
- char *vendor; /* vendor of the server hardware */
- XID resource_base; /* resource ID base */
- XID resource_mask; /* resource ID mask bits */
- XID resource_id; /* allocator current ID */
- int resource_shift; /* allocator shift to correct bits */
- XID (*resource_alloc)(); /* allocator function */
- int byte_order; /* screen byte order, LSBFirst, MSBFirst */
- int bitmap_unit; /* padding and data requirements */
- int bitmap_pad; /* padding requirements on bitmaps */
- int bitmap_bit_order; /* LeastSignificant or MostSignificant */
- int nformats; /* number of pixmap formats in list */
- ScreenFormat *pixmap_format; /* pixmap format list */
- int vnumber; /* Xlib's X protocol version number. */
- int release; /* release of the server */
- struct _XSQEvent *head, *tail; /* Input event queue. */
- int qlen; /* Length of input event queue */
- unsigned long last_request_read; /* seq number of last event read */
- unsigned long request; /* sequence number of last request. */
- char *last_req; /* beginning of last request, or dummy */
- char *buffer; /* Output buffer starting address. */
- char *bufptr; /* Output buffer index pointer. */
- char *bufmax; /* Output buffer maximum+1 address. */
- unsigned max_request_size; /* maximum number 32 bit words in request*/
- struct _XrmHashBucketRec *db;
- int (*synchandler)(); /* Synchronization handler */
- char *display_name; /* "host:display" string used on this connect*/
- int default_screen; /* default screen for operations */
- int nscreens; /* number of screens on this server*/
- Screen *screens; /* pointer to list of screens */
- unsigned long motion_buffer; /* size of motion buffer */
- unsigned long flags; /* internal connection flags */
- int min_keycode; /* minimum defined keycode */
- int max_keycode; /* maximum defined keycode */
- KeySym *keysyms; /* This server's keysyms */
- XModifierKeymap *modifiermap; /* This server's modifier keymap */
- int keysyms_per_keycode;/* number of rows */
- char *xdefaults; /* contents of defaults from server */
- char *scratch_buffer; /* place to hang scratch buffer */
- unsigned long scratch_length; /* length of scratch buffer */
- int ext_number; /* extension number on this display */
- struct _XExten *ext_procs; /* extensions initialized on this display */
- /*
- * the following can be fixed size, as the protocol defines how
- * much address space is available.
- * While this could be done using the extension vector, there
- * may be MANY events processed, so a search through the extension
- * list to find the right procedure for each event might be
- * expensive if many extensions are being used.
- */
- Bool (*event_vec[128])(); /* vector for wire to event */
- int (*wire_vec[128])(); /* vector for event to wire */
- KeySym lock_meaning; /* for XLookupString */
- struct _XLockInfo *lock; /* multi-thread state, display lock */
- struct _XInternalAsync *async_handlers; /* for internal async */
- unsigned long bigreq_size; /* max size of big requests */
- struct _XLockPtrs *lock_fns; /* pointers to threads functions */
- /* things above this line should not move, for binary compatibility */
- struct _XKeytrans *key_bindings; /* for XLookupString */
- Font cursor_font; /* for XCreateFontCursor */
- struct _XDisplayAtoms *atoms; /* for XInternAtom */
- unsigned int mode_switch; /* keyboard group modifiers */
- struct _XContextDB *context_db; /* context database */
- Bool (**error_vec)(); /* vector for wire to error */
- /*
- * Xcms information
- */
- struct {
- XPointer defaultCCCs; /* pointer to an array of default XcmsCCC */
- XPointer clientCmaps; /* pointer to linked list of XcmsCmapRec */
- XPointer perVisualIntensityMaps;
- /* linked list of XcmsIntensityMap */
- } cms;
- struct _XIMFilter *im_filters;
- struct _XSQEvent *qfree; /* unallocated event queue elements */
- unsigned long next_event_serial_num; /* inserted into next queue elt */
- int (*savedsynchandler)(); /* user synchandler when Xlib usurps */
-} Display;
-
-#if NeedFunctionPrototypes /* prototypes require event type definitions */
-#undef _XEVENT_
-#endif
-#ifndef _XEVENT_
-
-#define XMaxTransChars 4
-
-/*
- * Definitions of specific events.
- */
-typedef struct {
- int type; /* of event */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* "event" window it is reported relative to */
- Window root; /* root window that the event occured on */
- Window subwindow; /* child window */
- Time time; /* milliseconds */
- int x, y; /* pointer x, y coordinates in event window */
- int x_root, y_root; /* coordinates relative to root */
- unsigned int state; /* key or button mask */
- unsigned int keycode; /* detail */
- Bool same_screen; /* same screen flag */
- char trans_chars[XMaxTransChars];
- /* translated characters */
- int nbytes;
-} XKeyEvent;
-typedef XKeyEvent XKeyPressedEvent;
-typedef XKeyEvent XKeyReleasedEvent;
-
-typedef struct {
- int type; /* of event */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* "event" window it is reported relative to */
- Window root; /* root window that the event occured on */
- Window subwindow; /* child window */
- Time time; /* milliseconds */
- int x, y; /* pointer x, y coordinates in event window */
- int x_root, y_root; /* coordinates relative to root */
- unsigned int state; /* key or button mask */
- unsigned int button; /* detail */
- Bool same_screen; /* same screen flag */
-} XButtonEvent;
-typedef XButtonEvent XButtonPressedEvent;
-typedef XButtonEvent XButtonReleasedEvent;
-
-typedef struct {
- int type; /* of event */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* "event" window reported relative to */
- Window root; /* root window that the event occured on */
- Window subwindow; /* child window */
- Time time; /* milliseconds */
- int x, y; /* pointer x, y coordinates in event window */
- int x_root, y_root; /* coordinates relative to root */
- unsigned int state; /* key or button mask */
- char is_hint; /* detail */
- Bool same_screen; /* same screen flag */
-} XMotionEvent;
-typedef XMotionEvent XPointerMovedEvent;
-
-typedef struct {
- int type; /* of event */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* "event" window reported relative to */
- Window root; /* root window that the event occured on */
- Window subwindow; /* child window */
- Time time; /* milliseconds */
- int x, y; /* pointer x, y coordinates in event window */
- int x_root, y_root; /* coordinates relative to root */
- int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */
- int detail;
- /*
- * NotifyAncestor, NotifyVirtual, NotifyInferior,
- * NotifyNonlinear,NotifyNonlinearVirtual
- */
- Bool same_screen; /* same screen flag */
- Bool focus; /* boolean focus */
- unsigned int state; /* key or button mask */
-} XCrossingEvent;
-typedef XCrossingEvent XEnterWindowEvent;
-typedef XCrossingEvent XLeaveWindowEvent;
-
-typedef struct {
- int type; /* FocusIn or FocusOut */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* window of event */
- int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */
- int detail;
- /*
- * NotifyAncestor, NotifyVirtual, NotifyInferior,
- * NotifyNonlinear,NotifyNonlinearVirtual, NotifyPointer,
- * NotifyPointerRoot, NotifyDetailNone
- */
-} XFocusChangeEvent;
-typedef XFocusChangeEvent XFocusInEvent;
-typedef XFocusChangeEvent XFocusOutEvent;
-
-/* generated on EnterWindow and FocusIn when KeyMapState selected */
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window;
- char key_vector[32];
-} XKeymapEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window;
- int x, y;
- int width, height;
- int count; /* if non-zero, at least this many more */
-} XExposeEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Drawable drawable;
- int x, y;
- int width, height;
- int count; /* if non-zero, at least this many more */
- int major_code; /* core is CopyArea or CopyPlane */
- int minor_code; /* not defined in the core */
-} XGraphicsExposeEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Drawable drawable;
- int major_code; /* core is CopyArea or CopyPlane */
- int minor_code; /* not defined in the core */
-} XNoExposeEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window;
- int state; /* Visibility state */
-} XVisibilityEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window parent; /* parent of the window */
- Window window; /* window id of window created */
- int x, y; /* window location */
- int width, height; /* size of window */
- int border_width; /* border width */
- Bool override_redirect; /* creation should be overridden */
-} XCreateWindowEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window event;
- Window window;
-} XDestroyWindowEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window event;
- Window window;
- Bool from_configure;
-} XUnmapEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window event;
- Window window;
- Bool override_redirect; /* boolean, is override set... */
-} XMapEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window parent;
- Window window;
-} XMapRequestEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window event;
- Window window;
- Window parent;
- int x, y;
- Bool override_redirect;
-} XReparentEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window event;
- Window window;
- int x, y;
- int width, height;
- int border_width;
- Window above;
- Bool override_redirect;
-} XConfigureEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window event;
- Window window;
- int x, y;
-} XGravityEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window;
- int width, height;
-} XResizeRequestEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window parent;
- Window window;
- int x, y;
- int width, height;
- int border_width;
- Window above;
- int detail; /* Above, Below, TopIf, BottomIf, Opposite */
- unsigned long value_mask;
-} XConfigureRequestEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window event;
- Window window;
- int place; /* PlaceOnTop, PlaceOnBottom */
-} XCirculateEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window parent;
- Window window;
- int place; /* PlaceOnTop, PlaceOnBottom */
-} XCirculateRequestEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window;
- Atom atom;
- Time time;
- int state; /* NewValue, Deleted */
-} XPropertyEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window;
- Atom selection;
- Time time;
-} XSelectionClearEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window owner;
- Window requestor;
- Atom selection;
- Atom target;
- Atom property;
- Time time;
-} XSelectionRequestEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window requestor;
- Atom selection;
- Atom target;
- Atom property; /* ATOM or None */
- Time time;
-} XSelectionEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window;
- Colormap colormap; /* COLORMAP or None */
-#if defined(__cplusplus) || defined(c_plusplus)
- Bool c_new; /* C++ */
-#else
- Bool new;
-#endif
- int state; /* ColormapInstalled, ColormapUninstalled */
-} XColormapEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window;
- Atom message_type;
- int format;
- union {
- char b[20];
- short s[10];
- long l[5];
- } data;
-} XClientMessageEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* unused */
- int request; /* one of MappingModifier, MappingKeyboard,
- MappingPointer */
- int first_keycode; /* first keycode */
- int count; /* defines range of change w. first_keycode*/
-} XMappingEvent;
-
-typedef struct {
- int type;
- Display *display; /* Display the event was read from */
- XID resourceid; /* resource id */
- unsigned long serial; /* serial number of failed request */
- unsigned char error_code; /* error code of failed request */
- unsigned char request_code; /* Major op-code of failed request */
- unsigned char minor_code; /* Minor op-code of failed request */
-} XErrorEvent;
-
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display;/* Display the event was read from */
- Window window; /* window on which event was requested in event mask */
-} XAnyEvent;
-
-/*
- * this union is defined so Xlib can always use the same sized
- * event structure internally, to avoid memory fragmentation.
- */
-typedef union _XEvent {
- int type; /* must not be changed; first element */
- XAnyEvent xany;
- XKeyEvent xkey;
- XButtonEvent xbutton;
- XMotionEvent xmotion;
- XCrossingEvent xcrossing;
- XFocusChangeEvent xfocus;
- XExposeEvent xexpose;
- XGraphicsExposeEvent xgraphicsexpose;
- XNoExposeEvent xnoexpose;
- XVisibilityEvent xvisibility;
- XCreateWindowEvent xcreatewindow;
- XDestroyWindowEvent xdestroywindow;
- XUnmapEvent xunmap;
- XMapEvent xmap;
- XMapRequestEvent xmaprequest;
- XReparentEvent xreparent;
- XConfigureEvent xconfigure;
- XGravityEvent xgravity;
- XResizeRequestEvent xresizerequest;
- XConfigureRequestEvent xconfigurerequest;
- XCirculateEvent xcirculate;
- XCirculateRequestEvent xcirculaterequest;
- XPropertyEvent xproperty;
- XSelectionClearEvent xselectionclear;
- XSelectionRequestEvent xselectionrequest;
- XSelectionEvent xselection;
- XColormapEvent xcolormap;
- XClientMessageEvent xclient;
- XMappingEvent xmapping;
- XErrorEvent xerror;
- XKeymapEvent xkeymap;
- long pad[24];
-} XEvent;
-#endif
-
-#define XAllocID(dpy) ((*(dpy)->resource_alloc)((dpy)))
-
-/*
- * per character font metric information.
- */
-typedef struct {
- short lbearing; /* origin to left edge of raster */
- short rbearing; /* origin to right edge of raster */
- short width; /* advance to next char's origin */
- short ascent; /* baseline to top edge of raster */
- short descent; /* baseline to bottom edge of raster */
- unsigned short attributes; /* per char flags (not predefined) */
-} XCharStruct;
-
-/*
- * To allow arbitrary information with fonts, there are additional properties
- * returned.
- */
-typedef struct {
- Atom name;
- unsigned long card32;
-} XFontProp;
-
-typedef struct {
- XExtData *ext_data; /* hook for extension to hang data */
- Font fid; /* Font id for this font */
- unsigned direction; /* hint about direction the font is painted */
- unsigned min_char_or_byte2;/* first character */
- unsigned max_char_or_byte2;/* last character */
- unsigned min_byte1; /* first row that exists */
- unsigned max_byte1; /* last row that exists */
- Bool all_chars_exist;/* flag if all characters have non-zero size*/
- unsigned default_char; /* char to print for undefined character */
- int n_properties; /* how many properties there are */
- XFontProp *properties; /* pointer to array of additional properties*/
- XCharStruct min_bounds; /* minimum bounds over all existing char*/
- XCharStruct max_bounds; /* maximum bounds over all existing char*/
- XCharStruct *per_char; /* first_char to last_char information */
- int ascent; /* log. extent above baseline for spacing */
- int descent; /* log. descent below baseline for spacing */
-} XFontStruct;
-
-/*
- * PolyText routines take these as arguments.
- */
-typedef struct {
- char *chars; /* pointer to string */
- int nchars; /* number of characters */
- int delta; /* delta between strings */
- Font font; /* font to print it in, None don't change */
-} XTextItem;
-
-typedef struct { /* normal 16 bit characters are two bytes */
- unsigned char byte1;
- unsigned char byte2;
-} XChar2b;
-
-typedef struct {
- XChar2b *chars; /* two byte characters */
- int nchars; /* number of characters */
- int delta; /* delta between strings */
- Font font; /* font to print it in, None don't change */
-} XTextItem16;
-
-
-typedef union { Display *display;
- GC gc;
- Visual *visual;
- Screen *screen;
- ScreenFormat *pixmap_format;
- XFontStruct *font; } XEDataObject;
-
-typedef struct {
- XRectangle max_ink_extent;
- XRectangle max_logical_extent;
-} XFontSetExtents;
-
-typedef struct _XFontSet *XFontSet;
-
-typedef struct {
- char *chars;
- int nchars;
- int delta;
- XFontSet font_set;
-} XmbTextItem;
-
-typedef struct {
- wchar_t *chars;
- int nchars;
- int delta;
- XFontSet font_set;
-} XwcTextItem;
-
-typedef void (*XIMProc)();
-
-typedef struct _XIM *XIM;
-typedef struct _XIC *XIC;
-
-typedef unsigned long XIMStyle;
-
-typedef struct {
- unsigned short count_styles;
- XIMStyle *supported_styles;
-} XIMStyles;
-
-#define XIMPreeditArea 0x0001L
-#define XIMPreeditCallbacks 0x0002L
-#define XIMPreeditPosition 0x0004L
-#define XIMPreeditNothing 0x0008L
-#define XIMPreeditNone 0x0010L
-#define XIMStatusArea 0x0100L
-#define XIMStatusCallbacks 0x0200L
-#define XIMStatusNothing 0x0400L
-#define XIMStatusNone 0x0800L
-
-#define XNVaNestedList "XNVaNestedList"
-#define XNClientWindow "clientWindow"
-#define XNInputStyle "inputStyle"
-#define XNFocusWindow "focusWindow"
-#define XNResourceName "resourceName"
-#define XNResourceClass "resourceClass"
-#define XNGeometryCallback "geometryCallback"
-#define XNFilterEvents "filterEvents"
-#define XNPreeditStartCallback "preeditStartCallback"
-#define XNPreeditDoneCallback "preeditDoneCallback"
-#define XNPreeditDrawCallback "preeditDrawCallback"
-#define XNPreeditCaretCallback "preeditCaretCallback"
-#define XNPreeditAttributes "preeditAttributes"
-#define XNStatusStartCallback "statusStartCallback"
-#define XNStatusDoneCallback "statusDoneCallback"
-#define XNStatusDrawCallback "statusDrawCallback"
-#define XNStatusAttributes "statusAttributes"
-#define XNArea "area"
-#define XNAreaNeeded "areaNeeded"
-#define XNSpotLocation "spotLocation"
-#define XNColormap "colorMap"
-#define XNStdColormap "stdColorMap"
-#define XNForeground "foreground"
-#define XNBackground "background"
-#define XNBackgroundPixmap "backgroundPixmap"
-#define XNFontSet "fontSet"
-#define XNLineSpace "lineSpace"
-#define XNCursor "cursor"
-
-#define XBufferOverflow -1
-#define XLookupNone 1
-#define XLookupChars 2
-#define XLookupKeySym 3
-#define XLookupBoth 4
-
-#if NeedFunctionPrototypes
-typedef void *XVaNestedList;
-#else
-typedef XPointer XVaNestedList;
-#endif
-
-typedef struct {
- XPointer client_data;
- XIMProc callback;
-} XIMCallback;
-
-typedef unsigned long XIMFeedback;
-
-#define XIMReverse 1
-#define XIMUnderline (1<<1)
-#define XIMHighlight (1<<2)
-#define XIMPrimary (1<<5)
-#define XIMSecondary (1<<6)
-#define XIMTertiary (1<<7)
-
-typedef struct _XIMText {
- unsigned short length;
- XIMFeedback *feedback;
- Bool encoding_is_wchar;
- union {
- char *multi_byte;
- wchar_t *wide_char;
- } string;
-} XIMText;
-
-typedef struct _XIMPreeditDrawCallbackStruct {
- int caret; /* Cursor offset within pre-edit string */
- int chg_first; /* Starting change position */
- int chg_length; /* Length of the change in character count */
- XIMText *text;
-} XIMPreeditDrawCallbackStruct;
-
-typedef enum {
- XIMForwardChar, XIMBackwardChar,
- XIMForwardWord, XIMBackwardWord,
- XIMCaretUp, XIMCaretDown,
- XIMNextLine, XIMPreviousLine,
- XIMLineStart, XIMLineEnd,
- XIMAbsolutePosition,
- XIMDontChange
-} XIMCaretDirection;
-
-typedef enum {
- XIMIsInvisible, /* Disable caret feedback */
- XIMIsPrimary, /* UI defined caret feedback */
- XIMIsSecondary /* UI defined caret feedback */
-} XIMCaretStyle;
-
-typedef struct _XIMPreeditCaretCallbackStruct {
- int position; /* Caret offset within pre-edit string */
- XIMCaretDirection direction; /* Caret moves direction */
- XIMCaretStyle style; /* Feedback of the caret */
-} XIMPreeditCaretCallbackStruct;
-
-typedef enum {
- XIMTextType,
- XIMBitmapType
-} XIMStatusDataType;
-
-typedef struct _XIMStatusDrawCallbackStruct {
- XIMStatusDataType type;
- union {
- XIMText *text;
- Pixmap bitmap;
- } data;
-} XIMStatusDrawCallbackStruct;
-
-typedef int (*XErrorHandler) ( /* WARNING, this type not in Xlib spec */
-#if NeedFunctionPrototypes
- Display* /* display */,
- XErrorEvent* /* error_event */
-#endif
-);
-
-_XFUNCPROTOBEGIN
-
-
-
-#include "../../../pTk/tkIntXlibDecls.h"
-
-_XFUNCPROTOEND
-
-#if defined(MAC_TCL) || defined(MAC_OSX_TK)
-# undef Cursor
-#endif
-
-#endif /* _XLIB_H_ */
diff --git a/Master/tlpkg/tlperl/lib/Tk/X11/Xutil.h b/Master/tlpkg/tlperl/lib/Tk/X11/Xutil.h
deleted file mode 100644
index af44e0e9c2e..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/X11/Xutil.h
+++ /dev/null
@@ -1,855 +0,0 @@
-/* $XConsortium: Xutil.h,v 11.73 91/07/30 16:21:37 rws Exp $ */
-
-/***********************************************************
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
-and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the names of Digital or MIT not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifndef _XUTIL_H_
-#define _XUTIL_H_
-
-/* You must include <X11/Xlib.h> before including this file */
-
-#if defined(MAC_TCL) || defined(MAC_OSX_TK)
-# define Region XRegion
-#endif
-
-/*
- * Bitmask returned by XParseGeometry(). Each bit tells if the corresponding
- * value (x, y, width, height) was found in the parsed string.
- */
-#define NoValue 0x0000
-#define XValue 0x0001
-#define YValue 0x0002
-#define WidthValue 0x0004
-#define HeightValue 0x0008
-#define AllValues 0x000F
-#define XNegative 0x0010
-#define YNegative 0x0020
-
-/*
- * new version containing base_width, base_height, and win_gravity fields;
- * used with WM_NORMAL_HINTS.
- */
-typedef struct {
- long flags; /* marks which fields in this structure are defined */
- int x, y; /* obsolete for new window mgrs, but clients */
- int width, height; /* should set so old wm's don't mess up */
- int min_width, min_height;
- int max_width, max_height;
- int width_inc, height_inc;
- struct {
- int x; /* numerator */
- int y; /* denominator */
- } min_aspect, max_aspect;
- int base_width, base_height; /* added by ICCCM version 1 */
- int win_gravity; /* added by ICCCM version 1 */
-} XSizeHints;
-
-/*
- * The next block of definitions are for window manager properties that
- * clients and applications use for communication.
- */
-
-/* flags argument in size hints */
-#define USPosition (1L << 0) /* user specified x, y */
-#define USSize (1L << 1) /* user specified width, height */
-
-#define PPosition (1L << 2) /* program specified position */
-#define PSize (1L << 3) /* program specified size */
-#define PMinSize (1L << 4) /* program specified minimum size */
-#define PMaxSize (1L << 5) /* program specified maximum size */
-#define PResizeInc (1L << 6) /* program specified resize increments */
-#define PAspect (1L << 7) /* program specified min and max aspect ratios */
-#define PBaseSize (1L << 8) /* program specified base for incrementing */
-#define PWinGravity (1L << 9) /* program specified window gravity */
-
-/* obsolete */
-#define PAllHints (PPosition|PSize|PMinSize|PMaxSize|PResizeInc|PAspect)
-
-
-
-typedef struct {
- long flags; /* marks which fields in this structure are defined */
- Bool input; /* does this application rely on the window manager to
- get keyboard input? */
- int initial_state; /* see below */
- Pixmap icon_pixmap; /* pixmap to be used as icon */
- Window icon_window; /* window to be used as icon */
- int icon_x, icon_y; /* initial position of icon */
- Pixmap icon_mask; /* icon mask bitmap */
- XID window_group; /* id of related window group */
- /* this structure may be extended in the future */
-} XWMHints;
-
-/* definition for flags of XWMHints */
-
-#define InputHint (1L << 0)
-#define StateHint (1L << 1)
-#define IconPixmapHint (1L << 2)
-#define IconWindowHint (1L << 3)
-#define IconPositionHint (1L << 4)
-#define IconMaskHint (1L << 5)
-#define WindowGroupHint (1L << 6)
-#define AllHints (InputHint|StateHint|IconPixmapHint|IconWindowHint| \
-IconPositionHint|IconMaskHint|WindowGroupHint)
-
-/* definitions for initial window state */
-#define WithdrawnState 0 /* for windows that are not mapped */
-#define NormalState 1 /* most applications want to start this way */
-#define IconicState 3 /* application wants to start as an icon */
-
-/*
- * Obsolete states no longer defined by ICCCM
- */
-#define DontCareState 0 /* don't know or care */
-#define ZoomState 2 /* application wants to start zoomed */
-#define InactiveState 4 /* application believes it is seldom used; */
- /* some wm's may put it on inactive menu */
-
-
-/*
- * new structure for manipulating TEXT properties; used with WM_NAME,
- * WM_ICON_NAME, WM_CLIENT_MACHINE, and WM_COMMAND.
- */
-typedef struct {
- unsigned char *value; /* same as Property routines */
- Atom encoding; /* prop type */
- int format; /* prop data format: 8, 16, or 32 */
- unsigned long nitems; /* number of data items in value */
-} XTextProperty;
-
-#define XNoMemory -1
-#define XLocaleNotSupported -2
-#define XConverterNotFound -3
-
-typedef enum {
- XStringStyle, /* STRING */
- XCompoundTextStyle, /* COMPOUND_TEXT */
- XTextStyle, /* text in owner's encoding (current locale)*/
- XStdICCTextStyle /* STRING, else COMPOUND_TEXT */
-} XICCEncodingStyle;
-
-typedef struct {
- int min_width, min_height;
- int max_width, max_height;
- int width_inc, height_inc;
-} XIconSize;
-
-typedef struct {
- char *res_name;
- char *res_class;
-} XClassHint;
-
-/*
- * These macros are used to give some sugar to the image routines so that
- * naive people are more comfortable with them.
- */
-#define XDestroyImage(ximage) \
- ((*((ximage)->f.destroy_image))((ximage)))
-#define XGetPixel(ximage, x, y) \
- ((*((ximage)->f.get_pixel))((ximage), (x), (y)))
-#define XPutPixel(ximage, x, y, pixel) \
- ((*((ximage)->f.put_pixel))((ximage), (x), (y), (pixel)))
-#define XSubImage(ximage, x, y, width, height) \
- ((*((ximage)->f.sub_image))((ximage), (x), (y), (width), (height)))
-#define XAddPixel(ximage, value) \
- ((*((ximage)->f.add_pixel))((ximage), (value)))
-
-/*
- * Compose sequence status structure, used in calling XLookupString.
- */
-typedef struct _XComposeStatus {
- XPointer compose_ptr; /* state table pointer */
- int chars_matched; /* match state */
-} XComposeStatus;
-
-/*
- * Keysym macros, used on Keysyms to test for classes of symbols
- */
-#define IsKeypadKey(keysym) \
- (((unsigned)(keysym) >= XK_KP_Space) && ((unsigned)(keysym) <= XK_KP_Equal))
-
-#define IsCursorKey(keysym) \
- (((unsigned)(keysym) >= XK_Home) && ((unsigned)(keysym) < XK_Select))
-
-#define IsPFKey(keysym) \
- (((unsigned)(keysym) >= XK_KP_F1) && ((unsigned)(keysym) <= XK_KP_F4))
-
-#define IsFunctionKey(keysym) \
- (((unsigned)(keysym) >= XK_F1) && ((unsigned)(keysym) <= XK_F35))
-
-#define IsMiscFunctionKey(keysym) \
- (((unsigned)(keysym) >= XK_Select) && ((unsigned)(keysym) <= XK_Break))
-
-#define IsModifierKey(keysym) \
- ((((unsigned)(keysym) >= XK_Shift_L) && ((unsigned)(keysym) <= XK_Hyper_R)) \
- || ((unsigned)(keysym) == XK_Mode_switch) \
- || ((unsigned)(keysym) == XK_Num_Lock))
-/*
- * opaque reference to Region data type
- */
-typedef struct _XRegion *Region;
-
-/* Return values from XRectInRegion() */
-
-#define RectangleOut 0
-#define RectangleIn 1
-#define RectanglePart 2
-
-
-/*
- * Information used by the visual utility routines to find desired visual
- * type from the many visuals a display may support.
- */
-
-typedef struct {
- Visual *visual;
- VisualID visualid;
- int screen;
- int depth;
-#if defined(__cplusplus) || defined(c_plusplus)
- int c_class; /* C++ */
-#else
- int class;
-#endif
- unsigned long red_mask;
- unsigned long green_mask;
- unsigned long blue_mask;
- int colormap_size;
- int bits_per_rgb;
-} XVisualInfo;
-
-#define VisualNoMask 0x0
-#define VisualIDMask 0x1
-#define VisualScreenMask 0x2
-#define VisualDepthMask 0x4
-#define VisualClassMask 0x8
-#define VisualRedMaskMask 0x10
-#define VisualGreenMaskMask 0x20
-#define VisualBlueMaskMask 0x40
-#define VisualColormapSizeMask 0x80
-#define VisualBitsPerRGBMask 0x100
-#define VisualAllMask 0x1FF
-
-/*
- * This defines a window manager property that clients may use to
- * share standard color maps of type RGB_COLOR_MAP:
- */
-typedef struct {
- Colormap colormap;
- unsigned long red_max;
- unsigned long red_mult;
- unsigned long green_max;
- unsigned long green_mult;
- unsigned long blue_max;
- unsigned long blue_mult;
- unsigned long base_pixel;
- VisualID visualid; /* added by ICCCM version 1 */
- XID killid; /* added by ICCCM version 1 */
-} XStandardColormap;
-
-#define ReleaseByFreeingColormap ((XID) 1L) /* for killid field above */
-
-
-/*
- * return codes for XReadBitmapFile and XWriteBitmapFile
- */
-#define BitmapSuccess 0
-#define BitmapOpenFailed 1
-#define BitmapFileInvalid 2
-#define BitmapNoMemory 3
-
-/****************************************************************
- *
- * Context Management
- *
- ****************************************************************/
-
-
-/* Associative lookup table return codes */
-
-#define XCSUCCESS 0 /* No error. */
-#define XCNOMEM 1 /* Out of memory */
-#define XCNOENT 2 /* No entry in table */
-
-typedef int XContext;
-
-#define XUniqueContext() ((XContext) XrmUniqueQuark())
-#define XStringToContext(string) ((XContext) XrmStringToQuark(string))
-
-_XFUNCPROTOBEGIN
-
-/* The following declarations are alphabetized. */
-
-extern XClassHint *XAllocClassHint (
-#if NeedFunctionPrototypes
- void
-#endif
-);
-
-extern XIconSize *XAllocIconSize (
-#if NeedFunctionPrototypes
- void
-#endif
-);
-
-extern XSizeHints *XAllocSizeHints (
-#if NeedFunctionPrototypes
- void
-#endif
-);
-
-extern XStandardColormap *XAllocStandardColormap (
-#if NeedFunctionPrototypes
- void
-#endif
-);
-
-extern XWMHints *XAllocWMHints (
-#if NeedFunctionPrototypes
- void
-#endif
-);
-
-extern void XClipBox(
-#if NeedFunctionPrototypes
- Region /* r */,
- XRectangle* /* rect_return */
-#endif
-);
-
-extern Region XCreateRegion(
-#if NeedFunctionPrototypes
- void
-#endif
-);
-
-extern char *XDefaultString(
-#if NeedFunctionPrototypes
- void
-#endif
-);
-
-extern int XDeleteContext(
-#if NeedFunctionPrototypes
- Display* /* display */,
- XID /* rid */,
- XContext /* context */
-#endif
-);
-
-extern void XDestroyRegion(
-#if NeedFunctionPrototypes
- Region /* r */
-#endif
-);
-
-extern void XEmptyRegion(
-#if NeedFunctionPrototypes
- Region /* r */
-#endif
-);
-
-extern void XEqualRegion(
-#if NeedFunctionPrototypes
- Region /* r1 */,
- Region /* r2 */
-#endif
-);
-
-extern int XFindContext(
-#if NeedFunctionPrototypes
- Display* /* display */,
- XID /* rid */,
- XContext /* context */,
- XPointer* /* data_return */
-#endif
-);
-
-extern int XGetClassHint(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XClassHint* /* class_hints_return */
-#endif
-);
-
-extern int XGetIconSizes(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XIconSize** /* size_list_return */,
- int* /* count_return */
-#endif
-);
-
-extern int XGetNormalHints(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XSizeHints* /* hints_return */
-#endif
-);
-
-extern int XGetRGBColormaps(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XStandardColormap** /* stdcmap_return */,
- int* /* count_return */,
- Atom /* property */
-#endif
-);
-
-extern int XGetSizeHints(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XSizeHints* /* hints_return */,
- Atom /* property */
-#endif
-);
-
-extern int XGetStandardColormap(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XStandardColormap* /* colormap_return */,
- Atom /* property */
-#endif
-);
-
-extern int XGetTextProperty(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* window */,
- XTextProperty* /* text_prop_return */,
- Atom /* property */
-#endif
-);
-
-
-extern int XGetWMClientMachine(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XTextProperty* /* text_prop_return */
-#endif
-);
-
-extern XWMHints *XGetWMHints(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */
-#endif
-);
-
-extern int XGetWMIconName(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XTextProperty* /* text_prop_return */
-#endif
-);
-
-extern int XGetWMName(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XTextProperty* /* text_prop_return */
-#endif
-);
-
-extern int XGetWMNormalHints(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XSizeHints* /* hints_return */,
- long* /* supplied_return */
-#endif
-);
-
-extern int XGetWMSizeHints(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XSizeHints* /* hints_return */,
- long* /* supplied_return */,
- Atom /* property */
-#endif
-);
-
-extern int XGetZoomHints(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XSizeHints* /* zhints_return */
-#endif
-);
-
-extern void XIntersectRegion(
-#if NeedFunctionPrototypes
- Region /* sra */,
- Region /* srb */,
- Region /* dr_return */
-#endif
-);
-
-extern int XLookupString(
-#if NeedFunctionPrototypes
- XKeyEvent* /* event_struct */,
- char* /* buffer_return */,
- int /* bytes_buffer */,
- KeySym* /* keysym_return */,
- XComposeStatus* /* status_in_out */
-#endif
-);
-
-extern int XMatchVisualInfo(
-#if NeedFunctionPrototypes
- Display* /* display */,
- int /* screen */,
- int /* depth */,
- int /* class */,
- XVisualInfo* /* vinfo_return */
-#endif
-);
-
-extern void XOffsetRegion(
-#if NeedFunctionPrototypes
- Region /* r */,
- int /* dx */,
- int /* dy */
-#endif
-);
-
-extern Bool XPointInRegion(
-#if NeedFunctionPrototypes
- Region /* r */,
- int /* x */,
- int /* y */
-#endif
-);
-
-extern Region XPolygonRegion(
-#if NeedFunctionPrototypes
- XPoint* /* points */,
- int /* n */,
- int /* fill_rule */
-#endif
-);
-
-extern int XRectInRegion(
-#if NeedFunctionPrototypes
- Region /* r */,
- int /* x */,
- int /* y */,
- unsigned int /* width */,
- unsigned int /* height */
-#endif
-);
-
-extern int XSaveContext(
-#if NeedFunctionPrototypes
- Display* /* display */,
- XID /* rid */,
- XContext /* context */,
- _Xconst char* /* data */
-#endif
-);
-
-extern void XSetClassHint(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XClassHint* /* class_hints */
-#endif
-);
-
-extern void XSetIconSizes(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XIconSize* /* size_list */,
- int /* count */
-#endif
-);
-
-extern void XSetNormalHints(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XSizeHints* /* hints */
-#endif
-);
-
-extern void XSetRGBColormaps(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XStandardColormap* /* stdcmaps */,
- int /* count */,
- Atom /* property */
-#endif
-);
-
-extern void XSetSizeHints(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XSizeHints* /* hints */,
- Atom /* property */
-#endif
-);
-
-extern void XSetStandardProperties(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- _Xconst char* /* window_name */,
- _Xconst char* /* icon_name */,
- Pixmap /* icon_pixmap */,
- char** /* argv */,
- int /* argc */,
- XSizeHints* /* hints */
-#endif
-);
-
-extern void XSetTextProperty(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XTextProperty* /* text_prop */,
- Atom /* property */
-#endif
-);
-
-extern void XSetWMHints(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XWMHints* /* wm_hints */
-#endif
-);
-
-extern void XSetWMIconName(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XTextProperty* /* text_prop */
-#endif
-);
-
-extern void XSetWMName(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XTextProperty* /* text_prop */
-#endif
-);
-
-extern void XSetWMNormalHints(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XSizeHints* /* hints */
-#endif
-);
-
-extern void XSetWMProperties(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XTextProperty* /* window_name */,
- XTextProperty* /* icon_name */,
- char** /* argv */,
- int /* argc */,
- XSizeHints* /* normal_hints */,
- XWMHints* /* wm_hints */,
- XClassHint* /* class_hints */
-#endif
-);
-
-extern void XmbSetWMProperties(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- _Xconst char* /* window_name */,
- _Xconst char* /* icon_name */,
- char** /* argv */,
- int /* argc */,
- XSizeHints* /* normal_hints */,
- XWMHints* /* wm_hints */,
- XClassHint* /* class_hints */
-#endif
-);
-
-extern void XSetWMSizeHints(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XSizeHints* /* hints */,
- Atom /* property */
-#endif
-);
-
-extern void XSetRegion(
-#if NeedFunctionPrototypes
- Display* /* display */,
- GC /* gc */,
- Region /* r */
-#endif
-);
-
-extern void XSetStandardColormap(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XStandardColormap* /* colormap */,
- Atom /* property */
-#endif
-);
-
-extern void XSetZoomHints(
-#if NeedFunctionPrototypes
- Display* /* display */,
- Window /* w */,
- XSizeHints* /* zhints */
-#endif
-);
-
-extern void XShrinkRegion(
-#if NeedFunctionPrototypes
- Region /* r */,
- int /* dx */,
- int /* dy */
-#endif
-);
-
-extern void XSubtractRegion(
-#if NeedFunctionPrototypes
- Region /* sra */,
- Region /* srb */,
- Region /* dr_return */
-#endif
-);
-
-extern int XmbTextListToTextProperty(
-#if NeedFunctionPrototypes
- Display* /* display */,
- char** /* list */,
- int /* count */,
- XICCEncodingStyle /* style */,
- XTextProperty* /* text_prop_return */
-#endif
-);
-
-extern int XwcTextListToTextProperty(
-#if NeedFunctionPrototypes
- Display* /* display */,
- wchar_t** /* list */,
- int /* count */,
- XICCEncodingStyle /* style */,
- XTextProperty* /* text_prop_return */
-#endif
-);
-
-extern void XwcFreeStringList(
-#if NeedFunctionPrototypes
- wchar_t** /* list */
-#endif
-);
-
-extern int XTextPropertyToStringList(
-#if NeedFunctionPrototypes
- XTextProperty* /* text_prop */,
- char*** /* list_return */,
- int* /* count_return */
-#endif
-);
-
-extern int XmbTextPropertyToTextList(
-#if NeedFunctionPrototypes
- Display* /* display */,
- XTextProperty* /* text_prop */,
- char*** /* list_return */,
- int* /* count_return */
-#endif
-);
-
-extern int XwcTextPropertyToTextList(
-#if NeedFunctionPrototypes
- Display* /* display */,
- XTextProperty* /* text_prop */,
- wchar_t*** /* list_return */,
- int* /* count_return */
-#endif
-);
-
-extern void XUnionRectWithRegion(
-#if NeedFunctionPrototypes
- XRectangle* /* rectangle */,
- Region /* src_region */,
- Region /* dest_region_return */
-#endif
-);
-
-extern void XUnionRegion(
-#if NeedFunctionPrototypes
- Region /* sra */,
- Region /* srb */,
- Region /* dr_return */
-#endif
-);
-
-extern int XWMGeometry(
-#if NeedFunctionPrototypes
- Display* /* display */,
- int /* screen_number */,
- _Xconst char* /* user_geometry */,
- _Xconst char* /* default_geometry */,
- unsigned int /* border_width */,
- XSizeHints* /* hints */,
- int* /* x_return */,
- int* /* y_return */,
- int* /* width_return */,
- int* /* height_return */,
- int* /* gravity_return */
-#endif
-);
-
-extern void XXorRegion(
-#if NeedFunctionPrototypes
- Region /* sra */,
- Region /* srb */,
- Region /* dr_return */
-#endif
-);
-
-_XFUNCPROTOEND
-
-#if defined(MAC_TCL) || defined(MAC_OSX_TK)
-# undef Region
-#endif
-
-#endif /* _XUTIL_H_ */
diff --git a/Master/tlpkg/tlperl/lib/Tk/X11/cursorfont.h b/Master/tlpkg/tlperl/lib/Tk/X11/cursorfont.h
deleted file mode 100644
index 617274fa806..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/X11/cursorfont.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* $XConsortium: cursorfont.h,v 1.2 88/09/06 16:44:27 jim Exp $ */
-#define XC_num_glyphs 154
-#define XC_X_cursor 0
-#define XC_arrow 2
-#define XC_based_arrow_down 4
-#define XC_based_arrow_up 6
-#define XC_boat 8
-#define XC_bogosity 10
-#define XC_bottom_left_corner 12
-#define XC_bottom_right_corner 14
-#define XC_bottom_side 16
-#define XC_bottom_tee 18
-#define XC_box_spiral 20
-#define XC_center_ptr 22
-#define XC_circle 24
-#define XC_clock 26
-#define XC_coffee_mug 28
-#define XC_cross 30
-#define XC_cross_reverse 32
-#define XC_crosshair 34
-#define XC_diamond_cross 36
-#define XC_dot 38
-#define XC_dotbox 40
-#define XC_double_arrow 42
-#define XC_draft_large 44
-#define XC_draft_small 46
-#define XC_draped_box 48
-#define XC_exchange 50
-#define XC_fleur 52
-#define XC_gobbler 54
-#define XC_gumby 56
-#define XC_hand1 58
-#define XC_hand2 60
-#define XC_heart 62
-#define XC_icon 64
-#define XC_iron_cross 66
-#define XC_left_ptr 68
-#define XC_left_side 70
-#define XC_left_tee 72
-#define XC_leftbutton 74
-#define XC_ll_angle 76
-#define XC_lr_angle 78
-#define XC_man 80
-#define XC_middlebutton 82
-#define XC_mouse 84
-#define XC_pencil 86
-#define XC_pirate 88
-#define XC_plus 90
-#define XC_question_arrow 92
-#define XC_right_ptr 94
-#define XC_right_side 96
-#define XC_right_tee 98
-#define XC_rightbutton 100
-#define XC_rtl_logo 102
-#define XC_sailboat 104
-#define XC_sb_down_arrow 106
-#define XC_sb_h_double_arrow 108
-#define XC_sb_left_arrow 110
-#define XC_sb_right_arrow 112
-#define XC_sb_up_arrow 114
-#define XC_sb_v_double_arrow 116
-#define XC_shuttle 118
-#define XC_sizing 120
-#define XC_spider 122
-#define XC_spraycan 124
-#define XC_star 126
-#define XC_target 128
-#define XC_tcross 130
-#define XC_top_left_arrow 132
-#define XC_top_left_corner 134
-#define XC_top_right_corner 136
-#define XC_top_side 138
-#define XC_top_tee 140
-#define XC_trek 142
-#define XC_ul_angle 144
-#define XC_umbrella 146
-#define XC_ur_angle 148
-#define XC_watch 150
-#define XC_xterm 152
diff --git a/Master/tlpkg/tlperl/lib/Tk/X11/keysym.h b/Master/tlpkg/tlperl/lib/Tk/X11/keysym.h
deleted file mode 100644
index 027afe08d5f..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/X11/keysym.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* $XConsortium: keysym.h,v 1.13 91/03/13 20:09:49 rws Exp $ */
-
-/***********************************************************
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
-and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the names of Digital or MIT not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/* default keysyms */
-#define XK_MISCELLANY
-#define XK_LATIN1
-#define XK_LATIN2
-#define XK_LATIN3
-#define XK_LATIN4
-#define XK_GREEK
-
-#ifdef MAC_TCL
-#include <keysymdef.h>
-#else
-#include <X11/keysymdef.h>
-#endif
diff --git a/Master/tlpkg/tlperl/lib/Tk/X11/keysymdef.h b/Master/tlpkg/tlperl/lib/Tk/X11/keysymdef.h
deleted file mode 100644
index b22d41b3385..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/X11/keysymdef.h
+++ /dev/null
@@ -1,1169 +0,0 @@
-/* $XConsortium: keysymdef.h,v 1.15 93/04/02 10:57:36 rws Exp $ */
-
-/***********************************************************
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
-and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the names of Digital or MIT not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#define XK_VoidSymbol 0xFFFFFF /* void symbol */
-
-#ifdef XK_MISCELLANY
-/*
- * TTY Functions, cleverly chosen to map to ascii, for convenience of
- * programming, but could have been arbitrary (at the cost of lookup
- * tables in client code.
- */
-
-#define XK_BackSpace 0xFF08 /* back space, back char */
-#define XK_Tab 0xFF09
-#define XK_Linefeed 0xFF0A /* Linefeed, LF */
-#define XK_Clear 0xFF0B
-#define XK_Return 0xFF0D /* Return, enter */
-#define XK_Pause 0xFF13 /* Pause, hold */
-#define XK_Scroll_Lock 0xFF14
-#define XK_Sys_Req 0xFF15
-#define XK_Escape 0xFF1B
-#define XK_Delete 0xFFFF /* Delete, rubout */
-
-
-
-/* International & multi-key character composition */
-
-#define XK_Multi_key 0xFF20 /* Multi-key character compose */
-
-/* Japanese keyboard support */
-
-#define XK_Kanji 0xFF21 /* Kanji, Kanji convert */
-#define XK_Muhenkan 0xFF22 /* Cancel Conversion */
-#define XK_Henkan_Mode 0xFF23 /* Start/Stop Conversion */
-#define XK_Henkan 0xFF23 /* Alias for Henkan_Mode */
-#define XK_Romaji 0xFF24 /* to Romaji */
-#define XK_Hiragana 0xFF25 /* to Hiragana */
-#define XK_Katakana 0xFF26 /* to Katakana */
-#define XK_Hiragana_Katakana 0xFF27 /* Hiragana/Katakana toggle */
-#define XK_Zenkaku 0xFF28 /* to Zenkaku */
-#define XK_Hankaku 0xFF29 /* to Hankaku */
-#define XK_Zenkaku_Hankaku 0xFF2A /* Zenkaku/Hankaku toggle */
-#define XK_Touroku 0xFF2B /* Add to Dictionary */
-#define XK_Massyo 0xFF2C /* Delete from Dictionary */
-#define XK_Kana_Lock 0xFF2D /* Kana Lock */
-#define XK_Kana_Shift 0xFF2E /* Kana Shift */
-#define XK_Eisu_Shift 0xFF2F /* Alphanumeric Shift */
-#define XK_Eisu_toggle 0xFF30 /* Alphanumeric toggle */
-
-/* Cursor control & motion */
-
-#define XK_Home 0xFF50
-#define XK_Left 0xFF51 /* Move left, left arrow */
-#define XK_Up 0xFF52 /* Move up, up arrow */
-#define XK_Right 0xFF53 /* Move right, right arrow */
-#define XK_Down 0xFF54 /* Move down, down arrow */
-#define XK_Prior 0xFF55 /* Prior, previous */
-#define XK_Page_Up 0xFF55
-#define XK_Next 0xFF56 /* Next */
-#define XK_Page_Down 0xFF56
-#define XK_End 0xFF57 /* EOL */
-#define XK_Begin 0xFF58 /* BOL */
-
-/* Special Windows keyboard keys */
-
-#define XK_Win_L 0xFF5B /* Left-hand Windows */
-#define XK_Win_R 0xFF5C /* Right-hand Windows */
-#define XK_App 0xFF5D /* Menu key */
-
-/* Misc Functions */
-
-#define XK_Select 0xFF60 /* Select, mark */
-#define XK_Print 0xFF61
-#define XK_Execute 0xFF62 /* Execute, run, do */
-#define XK_Insert 0xFF63 /* Insert, insert here */
-#define XK_Undo 0xFF65 /* Undo, oops */
-#define XK_Redo 0xFF66 /* redo, again */
-#define XK_Menu 0xFF67
-#define XK_Find 0xFF68 /* Find, search */
-#define XK_Cancel 0xFF69 /* Cancel, stop, abort, exit */
-#define XK_Help 0xFF6A /* Help, ? */
-#define XK_Break 0xFF6B
-#define XK_Mode_switch 0xFF7E /* Character set switch */
-#define XK_script_switch 0xFF7E /* Alias for mode_switch */
-#define XK_Num_Lock 0xFF7F
-
-/* Keypad Functions, keypad numbers cleverly chosen to map to ascii */
-
-#define XK_KP_Space 0xFF80 /* space */
-#define XK_KP_Tab 0xFF89
-#define XK_KP_Enter 0xFF8D /* enter */
-#define XK_KP_F1 0xFF91 /* PF1, KP_A, ... */
-#define XK_KP_F2 0xFF92
-#define XK_KP_F3 0xFF93
-#define XK_KP_F4 0xFF94
-#define XK_KP_Home 0xFF95
-#define XK_KP_Left 0xFF96
-#define XK_KP_Up 0xFF97
-#define XK_KP_Right 0xFF98
-#define XK_KP_Down 0xFF99
-#define XK_KP_Prior 0xFF9A
-#define XK_KP_Page_Up 0xFF9A
-#define XK_KP_Next 0xFF9B
-#define XK_KP_Page_Down 0xFF9B
-#define XK_KP_End 0xFF9C
-#define XK_KP_Begin 0xFF9D
-#define XK_KP_Insert 0xFF9E
-#define XK_KP_Delete 0xFF9F
-#define XK_KP_Equal 0xFFBD /* equals */
-#define XK_KP_Multiply 0xFFAA
-#define XK_KP_Add 0xFFAB
-#define XK_KP_Separator 0xFFAC /* separator, often comma */
-#define XK_KP_Subtract 0xFFAD
-#define XK_KP_Decimal 0xFFAE
-#define XK_KP_Divide 0xFFAF
-
-#define XK_KP_0 0xFFB0
-#define XK_KP_1 0xFFB1
-#define XK_KP_2 0xFFB2
-#define XK_KP_3 0xFFB3
-#define XK_KP_4 0xFFB4
-#define XK_KP_5 0xFFB5
-#define XK_KP_6 0xFFB6
-#define XK_KP_7 0xFFB7
-#define XK_KP_8 0xFFB8
-#define XK_KP_9 0xFFB9
-
-
-
-/*
- * Auxilliary Functions; note the duplicate definitions for left and right
- * function keys; Sun keyboards and a few other manufactures have such
- * function key groups on the left and/or right sides of the keyboard.
- * We've not found a keyboard with more than 35 function keys total.
- */
-
-#define XK_F1 0xFFBE
-#define XK_F2 0xFFBF
-#define XK_F3 0xFFC0
-#define XK_F4 0xFFC1
-#define XK_F5 0xFFC2
-#define XK_F6 0xFFC3
-#define XK_F7 0xFFC4
-#define XK_F8 0xFFC5
-#define XK_F9 0xFFC6
-#define XK_F10 0xFFC7
-#define XK_F11 0xFFC8
-#define XK_L1 0xFFC8
-#define XK_F12 0xFFC9
-#define XK_L2 0xFFC9
-#define XK_F13 0xFFCA
-#define XK_L3 0xFFCA
-#define XK_F14 0xFFCB
-#define XK_L4 0xFFCB
-#define XK_F15 0xFFCC
-#define XK_L5 0xFFCC
-#define XK_F16 0xFFCD
-#define XK_L6 0xFFCD
-#define XK_F17 0xFFCE
-#define XK_L7 0xFFCE
-#define XK_F18 0xFFCF
-#define XK_L8 0xFFCF
-#define XK_F19 0xFFD0
-#define XK_L9 0xFFD0
-#define XK_F20 0xFFD1
-#define XK_L10 0xFFD1
-#define XK_F21 0xFFD2
-#define XK_R1 0xFFD2
-#define XK_F22 0xFFD3
-#define XK_R2 0xFFD3
-#define XK_F23 0xFFD4
-#define XK_R3 0xFFD4
-#define XK_F24 0xFFD5
-#define XK_R4 0xFFD5
-#define XK_F25 0xFFD6
-#define XK_R5 0xFFD6
-#define XK_F26 0xFFD7
-#define XK_R6 0xFFD7
-#define XK_F27 0xFFD8
-#define XK_R7 0xFFD8
-#define XK_F28 0xFFD9
-#define XK_R8 0xFFD9
-#define XK_F29 0xFFDA
-#define XK_R9 0xFFDA
-#define XK_F30 0xFFDB
-#define XK_R10 0xFFDB
-#define XK_F31 0xFFDC
-#define XK_R11 0xFFDC
-#define XK_F32 0xFFDD
-#define XK_R12 0xFFDD
-#define XK_F33 0xFFDE
-#define XK_R13 0xFFDE
-#define XK_F34 0xFFDF
-#define XK_R14 0xFFDF
-#define XK_F35 0xFFE0
-#define XK_R15 0xFFE0
-
-/* Modifiers */
-
-#define XK_Shift_L 0xFFE1 /* Left shift */
-#define XK_Shift_R 0xFFE2 /* Right shift */
-#define XK_Control_L 0xFFE3 /* Left control */
-#define XK_Control_R 0xFFE4 /* Right control */
-#define XK_Caps_Lock 0xFFE5 /* Caps lock */
-#define XK_Shift_Lock 0xFFE6 /* Shift lock */
-
-#define XK_Meta_L 0xFFE7 /* Left meta */
-#define XK_Meta_R 0xFFE8 /* Right meta */
-#define XK_Alt_L 0xFFE9 /* Left alt */
-#define XK_Alt_R 0xFFEA /* Right alt */
-#define XK_Super_L 0xFFEB /* Left super */
-#define XK_Super_R 0xFFEC /* Right super */
-#define XK_Hyper_L 0xFFED /* Left hyper */
-#define XK_Hyper_R 0xFFEE /* Right hyper */
-#endif /* XK_MISCELLANY */
-
-/*
- * Latin 1
- * Byte 3 = 0
- */
-#ifdef XK_LATIN1
-#define XK_space 0x020
-#define XK_exclam 0x021
-#define XK_quotedbl 0x022
-#define XK_numbersign 0x023
-#define XK_dollar 0x024
-#define XK_percent 0x025
-#define XK_ampersand 0x026
-#define XK_apostrophe 0x027
-#define XK_quoteright 0x027 /* deprecated */
-#define XK_parenleft 0x028
-#define XK_parenright 0x029
-#define XK_asterisk 0x02a
-#define XK_plus 0x02b
-#define XK_comma 0x02c
-#define XK_minus 0x02d
-#define XK_period 0x02e
-#define XK_slash 0x02f
-#define XK_0 0x030
-#define XK_1 0x031
-#define XK_2 0x032
-#define XK_3 0x033
-#define XK_4 0x034
-#define XK_5 0x035
-#define XK_6 0x036
-#define XK_7 0x037
-#define XK_8 0x038
-#define XK_9 0x039
-#define XK_colon 0x03a
-#define XK_semicolon 0x03b
-#define XK_less 0x03c
-#define XK_equal 0x03d
-#define XK_greater 0x03e
-#define XK_question 0x03f
-#define XK_at 0x040
-#define XK_A 0x041
-#define XK_B 0x042
-#define XK_C 0x043
-#define XK_D 0x044
-#define XK_E 0x045
-#define XK_F 0x046
-#define XK_G 0x047
-#define XK_H 0x048
-#define XK_I 0x049
-#define XK_J 0x04a
-#define XK_K 0x04b
-#define XK_L 0x04c
-#define XK_M 0x04d
-#define XK_N 0x04e
-#define XK_O 0x04f
-#define XK_P 0x050
-#define XK_Q 0x051
-#define XK_R 0x052
-#define XK_S 0x053
-#define XK_T 0x054
-#define XK_U 0x055
-#define XK_V 0x056
-#define XK_W 0x057
-#define XK_X 0x058
-#define XK_Y 0x059
-#define XK_Z 0x05a
-#define XK_bracketleft 0x05b
-#define XK_backslash 0x05c
-#define XK_bracketright 0x05d
-#define XK_asciicircum 0x05e
-#define XK_underscore 0x05f
-#define XK_grave 0x060
-#define XK_quoteleft 0x060 /* deprecated */
-#define XK_a 0x061
-#define XK_b 0x062
-#define XK_c 0x063
-#define XK_d 0x064
-#define XK_e 0x065
-#define XK_f 0x066
-#define XK_g 0x067
-#define XK_h 0x068
-#define XK_i 0x069
-#define XK_j 0x06a
-#define XK_k 0x06b
-#define XK_l 0x06c
-#define XK_m 0x06d
-#define XK_n 0x06e
-#define XK_o 0x06f
-#define XK_p 0x070
-#define XK_q 0x071
-#define XK_r 0x072
-#define XK_s 0x073
-#define XK_t 0x074
-#define XK_u 0x075
-#define XK_v 0x076
-#define XK_w 0x077
-#define XK_x 0x078
-#define XK_y 0x079
-#define XK_z 0x07a
-#define XK_braceleft 0x07b
-#define XK_bar 0x07c
-#define XK_braceright 0x07d
-#define XK_asciitilde 0x07e
-
-#define XK_nobreakspace 0x0a0
-#define XK_exclamdown 0x0a1
-#define XK_cent 0x0a2
-#define XK_sterling 0x0a3
-#define XK_currency 0x0a4
-#define XK_yen 0x0a5
-#define XK_brokenbar 0x0a6
-#define XK_section 0x0a7
-#define XK_diaeresis 0x0a8
-#define XK_copyright 0x0a9
-#define XK_ordfeminine 0x0aa
-#define XK_guillemotleft 0x0ab /* left angle quotation mark */
-#define XK_notsign 0x0ac
-#define XK_hyphen 0x0ad
-#define XK_registered 0x0ae
-#define XK_macron 0x0af
-#define XK_degree 0x0b0
-#define XK_plusminus 0x0b1
-#define XK_twosuperior 0x0b2
-#define XK_threesuperior 0x0b3
-#define XK_acute 0x0b4
-#define XK_mu 0x0b5
-#define XK_paragraph 0x0b6
-#define XK_periodcentered 0x0b7
-#define XK_cedilla 0x0b8
-#define XK_onesuperior 0x0b9
-#define XK_masculine 0x0ba
-#define XK_guillemotright 0x0bb /* right angle quotation mark */
-#define XK_onequarter 0x0bc
-#define XK_onehalf 0x0bd
-#define XK_threequarters 0x0be
-#define XK_questiondown 0x0bf
-#define XK_Agrave 0x0c0
-#define XK_Aacute 0x0c1
-#define XK_Acircumflex 0x0c2
-#define XK_Atilde 0x0c3
-#define XK_Adiaeresis 0x0c4
-#define XK_Aring 0x0c5
-#define XK_AE 0x0c6
-#define XK_Ccedilla 0x0c7
-#define XK_Egrave 0x0c8
-#define XK_Eacute 0x0c9
-#define XK_Ecircumflex 0x0ca
-#define XK_Ediaeresis 0x0cb
-#define XK_Igrave 0x0cc
-#define XK_Iacute 0x0cd
-#define XK_Icircumflex 0x0ce
-#define XK_Idiaeresis 0x0cf
-#define XK_ETH 0x0d0
-#define XK_Eth 0x0d0 /* deprecated */
-#define XK_Ntilde 0x0d1
-#define XK_Ograve 0x0d2
-#define XK_Oacute 0x0d3
-#define XK_Ocircumflex 0x0d4
-#define XK_Otilde 0x0d5
-#define XK_Odiaeresis 0x0d6
-#define XK_multiply 0x0d7
-#define XK_Ooblique 0x0d8
-#define XK_Ugrave 0x0d9
-#define XK_Uacute 0x0da
-#define XK_Ucircumflex 0x0db
-#define XK_Udiaeresis 0x0dc
-#define XK_Yacute 0x0dd
-#define XK_THORN 0x0de
-#define XK_Thorn 0x0de /* deprecated */
-#define XK_ssharp 0x0df
-#define XK_agrave 0x0e0
-#define XK_aacute 0x0e1
-#define XK_acircumflex 0x0e2
-#define XK_atilde 0x0e3
-#define XK_adiaeresis 0x0e4
-#define XK_aring 0x0e5
-#define XK_ae 0x0e6
-#define XK_ccedilla 0x0e7
-#define XK_egrave 0x0e8
-#define XK_eacute 0x0e9
-#define XK_ecircumflex 0x0ea
-#define XK_ediaeresis 0x0eb
-#define XK_igrave 0x0ec
-#define XK_iacute 0x0ed
-#define XK_icircumflex 0x0ee
-#define XK_idiaeresis 0x0ef
-#define XK_eth 0x0f0
-#define XK_ntilde 0x0f1
-#define XK_ograve 0x0f2
-#define XK_oacute 0x0f3
-#define XK_ocircumflex 0x0f4
-#define XK_otilde 0x0f5
-#define XK_odiaeresis 0x0f6
-#define XK_division 0x0f7
-#define XK_oslash 0x0f8
-#define XK_ugrave 0x0f9
-#define XK_uacute 0x0fa
-#define XK_ucircumflex 0x0fb
-#define XK_udiaeresis 0x0fc
-#define XK_yacute 0x0fd
-#define XK_thorn 0x0fe
-#define XK_ydiaeresis 0x0ff
-#endif /* XK_LATIN1 */
-
-/*
- * Latin 2
- * Byte 3 = 1
- */
-
-#ifdef XK_LATIN2
-#define XK_Aogonek 0x1a1
-#define XK_breve 0x1a2
-#define XK_Lstroke 0x1a3
-#define XK_Lcaron 0x1a5
-#define XK_Sacute 0x1a6
-#define XK_Scaron 0x1a9
-#define XK_Scedilla 0x1aa
-#define XK_Tcaron 0x1ab
-#define XK_Zacute 0x1ac
-#define XK_Zcaron 0x1ae
-#define XK_Zabovedot 0x1af
-#define XK_aogonek 0x1b1
-#define XK_ogonek 0x1b2
-#define XK_lstroke 0x1b3
-#define XK_lcaron 0x1b5
-#define XK_sacute 0x1b6
-#define XK_caron 0x1b7
-#define XK_scaron 0x1b9
-#define XK_scedilla 0x1ba
-#define XK_tcaron 0x1bb
-#define XK_zacute 0x1bc
-#define XK_doubleacute 0x1bd
-#define XK_zcaron 0x1be
-#define XK_zabovedot 0x1bf
-#define XK_Racute 0x1c0
-#define XK_Abreve 0x1c3
-#define XK_Lacute 0x1c5
-#define XK_Cacute 0x1c6
-#define XK_Ccaron 0x1c8
-#define XK_Eogonek 0x1ca
-#define XK_Ecaron 0x1cc
-#define XK_Dcaron 0x1cf
-#define XK_Dstroke 0x1d0
-#define XK_Nacute 0x1d1
-#define XK_Ncaron 0x1d2
-#define XK_Odoubleacute 0x1d5
-#define XK_Rcaron 0x1d8
-#define XK_Uring 0x1d9
-#define XK_Udoubleacute 0x1db
-#define XK_Tcedilla 0x1de
-#define XK_racute 0x1e0
-#define XK_abreve 0x1e3
-#define XK_lacute 0x1e5
-#define XK_cacute 0x1e6
-#define XK_ccaron 0x1e8
-#define XK_eogonek 0x1ea
-#define XK_ecaron 0x1ec
-#define XK_dcaron 0x1ef
-#define XK_dstroke 0x1f0
-#define XK_nacute 0x1f1
-#define XK_ncaron 0x1f2
-#define XK_odoubleacute 0x1f5
-#define XK_udoubleacute 0x1fb
-#define XK_rcaron 0x1f8
-#define XK_uring 0x1f9
-#define XK_tcedilla 0x1fe
-#define XK_abovedot 0x1ff
-#endif /* XK_LATIN2 */
-
-/*
- * Latin 3
- * Byte 3 = 2
- */
-
-#ifdef XK_LATIN3
-#define XK_Hstroke 0x2a1
-#define XK_Hcircumflex 0x2a6
-#define XK_Iabovedot 0x2a9
-#define XK_Gbreve 0x2ab
-#define XK_Jcircumflex 0x2ac
-#define XK_hstroke 0x2b1
-#define XK_hcircumflex 0x2b6
-#define XK_idotless 0x2b9
-#define XK_gbreve 0x2bb
-#define XK_jcircumflex 0x2bc
-#define XK_Cabovedot 0x2c5
-#define XK_Ccircumflex 0x2c6
-#define XK_Gabovedot 0x2d5
-#define XK_Gcircumflex 0x2d8
-#define XK_Ubreve 0x2dd
-#define XK_Scircumflex 0x2de
-#define XK_cabovedot 0x2e5
-#define XK_ccircumflex 0x2e6
-#define XK_gabovedot 0x2f5
-#define XK_gcircumflex 0x2f8
-#define XK_ubreve 0x2fd
-#define XK_scircumflex 0x2fe
-#endif /* XK_LATIN3 */
-
-
-/*
- * Latin 4
- * Byte 3 = 3
- */
-
-#ifdef XK_LATIN4
-#define XK_kra 0x3a2
-#define XK_kappa 0x3a2 /* deprecated */
-#define XK_Rcedilla 0x3a3
-#define XK_Itilde 0x3a5
-#define XK_Lcedilla 0x3a6
-#define XK_Emacron 0x3aa
-#define XK_Gcedilla 0x3ab
-#define XK_Tslash 0x3ac
-#define XK_rcedilla 0x3b3
-#define XK_itilde 0x3b5
-#define XK_lcedilla 0x3b6
-#define XK_emacron 0x3ba
-#define XK_gcedilla 0x3bb
-#define XK_tslash 0x3bc
-#define XK_ENG 0x3bd
-#define XK_eng 0x3bf
-#define XK_Amacron 0x3c0
-#define XK_Iogonek 0x3c7
-#define XK_Eabovedot 0x3cc
-#define XK_Imacron 0x3cf
-#define XK_Ncedilla 0x3d1
-#define XK_Omacron 0x3d2
-#define XK_Kcedilla 0x3d3
-#define XK_Uogonek 0x3d9
-#define XK_Utilde 0x3dd
-#define XK_Umacron 0x3de
-#define XK_amacron 0x3e0
-#define XK_iogonek 0x3e7
-#define XK_eabovedot 0x3ec
-#define XK_imacron 0x3ef
-#define XK_ncedilla 0x3f1
-#define XK_omacron 0x3f2
-#define XK_kcedilla 0x3f3
-#define XK_uogonek 0x3f9
-#define XK_utilde 0x3fd
-#define XK_umacron 0x3fe
-#endif /* XK_LATIN4 */
-
-/*
- * Katakana
- * Byte 3 = 4
- */
-
-#ifdef XK_KATAKANA
-#define XK_overline 0x47e
-#define XK_kana_fullstop 0x4a1
-#define XK_kana_openingbracket 0x4a2
-#define XK_kana_closingbracket 0x4a3
-#define XK_kana_comma 0x4a4
-#define XK_kana_conjunctive 0x4a5
-#define XK_kana_middledot 0x4a5 /* deprecated */
-#define XK_kana_WO 0x4a6
-#define XK_kana_a 0x4a7
-#define XK_kana_i 0x4a8
-#define XK_kana_u 0x4a9
-#define XK_kana_e 0x4aa
-#define XK_kana_o 0x4ab
-#define XK_kana_ya 0x4ac
-#define XK_kana_yu 0x4ad
-#define XK_kana_yo 0x4ae
-#define XK_kana_tsu 0x4af
-#define XK_kana_tu 0x4af /* deprecated */
-#define XK_prolongedsound 0x4b0
-#define XK_kana_A 0x4b1
-#define XK_kana_I 0x4b2
-#define XK_kana_U 0x4b3
-#define XK_kana_E 0x4b4
-#define XK_kana_O 0x4b5
-#define XK_kana_KA 0x4b6
-#define XK_kana_KI 0x4b7
-#define XK_kana_KU 0x4b8
-#define XK_kana_KE 0x4b9
-#define XK_kana_KO 0x4ba
-#define XK_kana_SA 0x4bb
-#define XK_kana_SHI 0x4bc
-#define XK_kana_SU 0x4bd
-#define XK_kana_SE 0x4be
-#define XK_kana_SO 0x4bf
-#define XK_kana_TA 0x4c0
-#define XK_kana_CHI 0x4c1
-#define XK_kana_TI 0x4c1 /* deprecated */
-#define XK_kana_TSU 0x4c2
-#define XK_kana_TU 0x4c2 /* deprecated */
-#define XK_kana_TE 0x4c3
-#define XK_kana_TO 0x4c4
-#define XK_kana_NA 0x4c5
-#define XK_kana_NI 0x4c6
-#define XK_kana_NU 0x4c7
-#define XK_kana_NE 0x4c8
-#define XK_kana_NO 0x4c9
-#define XK_kana_HA 0x4ca
-#define XK_kana_HI 0x4cb
-#define XK_kana_FU 0x4cc
-#define XK_kana_HU 0x4cc /* deprecated */
-#define XK_kana_HE 0x4cd
-#define XK_kana_HO 0x4ce
-#define XK_kana_MA 0x4cf
-#define XK_kana_MI 0x4d0
-#define XK_kana_MU 0x4d1
-#define XK_kana_ME 0x4d2
-#define XK_kana_MO 0x4d3
-#define XK_kana_YA 0x4d4
-#define XK_kana_YU 0x4d5
-#define XK_kana_YO 0x4d6
-#define XK_kana_RA 0x4d7
-#define XK_kana_RI 0x4d8
-#define XK_kana_RU 0x4d9
-#define XK_kana_RE 0x4da
-#define XK_kana_RO 0x4db
-#define XK_kana_WA 0x4dc
-#define XK_kana_N 0x4dd
-#define XK_voicedsound 0x4de
-#define XK_semivoicedsound 0x4df
-#define XK_kana_switch 0xFF7E /* Alias for mode_switch */
-#endif /* XK_KATAKANA */
-
-/*
- * Arabic
- * Byte 3 = 5
- */
-
-#ifdef XK_ARABIC
-#define XK_Arabic_comma 0x5ac
-#define XK_Arabic_semicolon 0x5bb
-#define XK_Arabic_question_mark 0x5bf
-#define XK_Arabic_hamza 0x5c1
-#define XK_Arabic_maddaonalef 0x5c2
-#define XK_Arabic_hamzaonalef 0x5c3
-#define XK_Arabic_hamzaonwaw 0x5c4
-#define XK_Arabic_hamzaunderalef 0x5c5
-#define XK_Arabic_hamzaonyeh 0x5c6
-#define XK_Arabic_alef 0x5c7
-#define XK_Arabic_beh 0x5c8
-#define XK_Arabic_tehmarbuta 0x5c9
-#define XK_Arabic_teh 0x5ca
-#define XK_Arabic_theh 0x5cb
-#define XK_Arabic_jeem 0x5cc
-#define XK_Arabic_hah 0x5cd
-#define XK_Arabic_khah 0x5ce
-#define XK_Arabic_dal 0x5cf
-#define XK_Arabic_thal 0x5d0
-#define XK_Arabic_ra 0x5d1
-#define XK_Arabic_zain 0x5d2
-#define XK_Arabic_seen 0x5d3
-#define XK_Arabic_sheen 0x5d4
-#define XK_Arabic_sad 0x5d5
-#define XK_Arabic_dad 0x5d6
-#define XK_Arabic_tah 0x5d7
-#define XK_Arabic_zah 0x5d8
-#define XK_Arabic_ain 0x5d9
-#define XK_Arabic_ghain 0x5da
-#define XK_Arabic_tatweel 0x5e0
-#define XK_Arabic_feh 0x5e1
-#define XK_Arabic_qaf 0x5e2
-#define XK_Arabic_kaf 0x5e3
-#define XK_Arabic_lam 0x5e4
-#define XK_Arabic_meem 0x5e5
-#define XK_Arabic_noon 0x5e6
-#define XK_Arabic_ha 0x5e7
-#define XK_Arabic_heh 0x5e7 /* deprecated */
-#define XK_Arabic_waw 0x5e8
-#define XK_Arabic_alefmaksura 0x5e9
-#define XK_Arabic_yeh 0x5ea
-#define XK_Arabic_fathatan 0x5eb
-#define XK_Arabic_dammatan 0x5ec
-#define XK_Arabic_kasratan 0x5ed
-#define XK_Arabic_fatha 0x5ee
-#define XK_Arabic_damma 0x5ef
-#define XK_Arabic_kasra 0x5f0
-#define XK_Arabic_shadda 0x5f1
-#define XK_Arabic_sukun 0x5f2
-#define XK_Arabic_switch 0xFF7E /* Alias for mode_switch */
-#endif /* XK_ARABIC */
-
-/*
- * Cyrillic
- * Byte 3 = 6
- */
-#ifdef XK_CYRILLIC
-#define XK_Serbian_dje 0x6a1
-#define XK_Macedonia_gje 0x6a2
-#define XK_Cyrillic_io 0x6a3
-#define XK_Ukrainian_ie 0x6a4
-#define XK_Ukranian_je 0x6a4 /* deprecated */
-#define XK_Macedonia_dse 0x6a5
-#define XK_Ukrainian_i 0x6a6
-#define XK_Ukranian_i 0x6a6 /* deprecated */
-#define XK_Ukrainian_yi 0x6a7
-#define XK_Ukranian_yi 0x6a7 /* deprecated */
-#define XK_Cyrillic_je 0x6a8
-#define XK_Serbian_je 0x6a8 /* deprecated */
-#define XK_Cyrillic_lje 0x6a9
-#define XK_Serbian_lje 0x6a9 /* deprecated */
-#define XK_Cyrillic_nje 0x6aa
-#define XK_Serbian_nje 0x6aa /* deprecated */
-#define XK_Serbian_tshe 0x6ab
-#define XK_Macedonia_kje 0x6ac
-#define XK_Byelorussian_shortu 0x6ae
-#define XK_Cyrillic_dzhe 0x6af
-#define XK_Serbian_dze 0x6af /* deprecated */
-#define XK_numerosign 0x6b0
-#define XK_Serbian_DJE 0x6b1
-#define XK_Macedonia_GJE 0x6b2
-#define XK_Cyrillic_IO 0x6b3
-#define XK_Ukrainian_IE 0x6b4
-#define XK_Ukranian_JE 0x6b4 /* deprecated */
-#define XK_Macedonia_DSE 0x6b5
-#define XK_Ukrainian_I 0x6b6
-#define XK_Ukranian_I 0x6b6 /* deprecated */
-#define XK_Ukrainian_YI 0x6b7
-#define XK_Ukranian_YI 0x6b7 /* deprecated */
-#define XK_Cyrillic_JE 0x6b8
-#define XK_Serbian_JE 0x6b8 /* deprecated */
-#define XK_Cyrillic_LJE 0x6b9
-#define XK_Serbian_LJE 0x6b9 /* deprecated */
-#define XK_Cyrillic_NJE 0x6ba
-#define XK_Serbian_NJE 0x6ba /* deprecated */
-#define XK_Serbian_TSHE 0x6bb
-#define XK_Macedonia_KJE 0x6bc
-#define XK_Byelorussian_SHORTU 0x6be
-#define XK_Cyrillic_DZHE 0x6bf
-#define XK_Serbian_DZE 0x6bf /* deprecated */
-#define XK_Cyrillic_yu 0x6c0
-#define XK_Cyrillic_a 0x6c1
-#define XK_Cyrillic_be 0x6c2
-#define XK_Cyrillic_tse 0x6c3
-#define XK_Cyrillic_de 0x6c4
-#define XK_Cyrillic_ie 0x6c5
-#define XK_Cyrillic_ef 0x6c6
-#define XK_Cyrillic_ghe 0x6c7
-#define XK_Cyrillic_ha 0x6c8
-#define XK_Cyrillic_i 0x6c9
-#define XK_Cyrillic_shorti 0x6ca
-#define XK_Cyrillic_ka 0x6cb
-#define XK_Cyrillic_el 0x6cc
-#define XK_Cyrillic_em 0x6cd
-#define XK_Cyrillic_en 0x6ce
-#define XK_Cyrillic_o 0x6cf
-#define XK_Cyrillic_pe 0x6d0
-#define XK_Cyrillic_ya 0x6d1
-#define XK_Cyrillic_er 0x6d2
-#define XK_Cyrillic_es 0x6d3
-#define XK_Cyrillic_te 0x6d4
-#define XK_Cyrillic_u 0x6d5
-#define XK_Cyrillic_zhe 0x6d6
-#define XK_Cyrillic_ve 0x6d7
-#define XK_Cyrillic_softsign 0x6d8
-#define XK_Cyrillic_yeru 0x6d9
-#define XK_Cyrillic_ze 0x6da
-#define XK_Cyrillic_sha 0x6db
-#define XK_Cyrillic_e 0x6dc
-#define XK_Cyrillic_shcha 0x6dd
-#define XK_Cyrillic_che 0x6de
-#define XK_Cyrillic_hardsign 0x6df
-#define XK_Cyrillic_YU 0x6e0
-#define XK_Cyrillic_A 0x6e1
-#define XK_Cyrillic_BE 0x6e2
-#define XK_Cyrillic_TSE 0x6e3
-#define XK_Cyrillic_DE 0x6e4
-#define XK_Cyrillic_IE 0x6e5
-#define XK_Cyrillic_EF 0x6e6
-#define XK_Cyrillic_GHE 0x6e7
-#define XK_Cyrillic_HA 0x6e8
-#define XK_Cyrillic_I 0x6e9
-#define XK_Cyrillic_SHORTI 0x6ea
-#define XK_Cyrillic_KA 0x6eb
-#define XK_Cyrillic_EL 0x6ec
-#define XK_Cyrillic_EM 0x6ed
-#define XK_Cyrillic_EN 0x6ee
-#define XK_Cyrillic_O 0x6ef
-#define XK_Cyrillic_PE 0x6f0
-#define XK_Cyrillic_YA 0x6f1
-#define XK_Cyrillic_ER 0x6f2
-#define XK_Cyrillic_ES 0x6f3
-#define XK_Cyrillic_TE 0x6f4
-#define XK_Cyrillic_U 0x6f5
-#define XK_Cyrillic_ZHE 0x6f6
-#define XK_Cyrillic_VE 0x6f7
-#define XK_Cyrillic_SOFTSIGN 0x6f8
-#define XK_Cyrillic_YERU 0x6f9
-#define XK_Cyrillic_ZE 0x6fa
-#define XK_Cyrillic_SHA 0x6fb
-#define XK_Cyrillic_E 0x6fc
-#define XK_Cyrillic_SHCHA 0x6fd
-#define XK_Cyrillic_CHE 0x6fe
-#define XK_Cyrillic_HARDSIGN 0x6ff
-#endif /* XK_CYRILLIC */
-
-/*
- * Greek
- * Byte 3 = 7
- */
-
-#ifdef XK_GREEK
-#define XK_Greek_ALPHAaccent 0x7a1
-#define XK_Greek_EPSILONaccent 0x7a2
-#define XK_Greek_ETAaccent 0x7a3
-#define XK_Greek_IOTAaccent 0x7a4
-#define XK_Greek_IOTAdiaeresis 0x7a5
-#define XK_Greek_OMICRONaccent 0x7a7
-#define XK_Greek_UPSILONaccent 0x7a8
-#define XK_Greek_UPSILONdieresis 0x7a9
-#define XK_Greek_OMEGAaccent 0x7ab
-#define XK_Greek_accentdieresis 0x7ae
-#define XK_Greek_horizbar 0x7af
-#define XK_Greek_alphaaccent 0x7b1
-#define XK_Greek_epsilonaccent 0x7b2
-#define XK_Greek_etaaccent 0x7b3
-#define XK_Greek_iotaaccent 0x7b4
-#define XK_Greek_iotadieresis 0x7b5
-#define XK_Greek_iotaaccentdieresis 0x7b6
-#define XK_Greek_omicronaccent 0x7b7
-#define XK_Greek_upsilonaccent 0x7b8
-#define XK_Greek_upsilondieresis 0x7b9
-#define XK_Greek_upsilonaccentdieresis 0x7ba
-#define XK_Greek_omegaaccent 0x7bb
-#define XK_Greek_ALPHA 0x7c1
-#define XK_Greek_BETA 0x7c2
-#define XK_Greek_GAMMA 0x7c3
-#define XK_Greek_DELTA 0x7c4
-#define XK_Greek_EPSILON 0x7c5
-#define XK_Greek_ZETA 0x7c6
-#define XK_Greek_ETA 0x7c7
-#define XK_Greek_THETA 0x7c8
-#define XK_Greek_IOTA 0x7c9
-#define XK_Greek_KAPPA 0x7ca
-#define XK_Greek_LAMDA 0x7cb
-#define XK_Greek_LAMBDA 0x7cb
-#define XK_Greek_MU 0x7cc
-#define XK_Greek_NU 0x7cd
-#define XK_Greek_XI 0x7ce
-#define XK_Greek_OMICRON 0x7cf
-#define XK_Greek_PI 0x7d0
-#define XK_Greek_RHO 0x7d1
-#define XK_Greek_SIGMA 0x7d2
-#define XK_Greek_TAU 0x7d4
-#define XK_Greek_UPSILON 0x7d5
-#define XK_Greek_PHI 0x7d6
-#define XK_Greek_CHI 0x7d7
-#define XK_Greek_PSI 0x7d8
-#define XK_Greek_OMEGA 0x7d9
-#define XK_Greek_alpha 0x7e1
-#define XK_Greek_beta 0x7e2
-#define XK_Greek_gamma 0x7e3
-#define XK_Greek_delta 0x7e4
-#define XK_Greek_epsilon 0x7e5
-#define XK_Greek_zeta 0x7e6
-#define XK_Greek_eta 0x7e7
-#define XK_Greek_theta 0x7e8
-#define XK_Greek_iota 0x7e9
-#define XK_Greek_kappa 0x7ea
-#define XK_Greek_lamda 0x7eb
-#define XK_Greek_lambda 0x7eb
-#define XK_Greek_mu 0x7ec
-#define XK_Greek_nu 0x7ed
-#define XK_Greek_xi 0x7ee
-#define XK_Greek_omicron 0x7ef
-#define XK_Greek_pi 0x7f0
-#define XK_Greek_rho 0x7f1
-#define XK_Greek_sigma 0x7f2
-#define XK_Greek_finalsmallsigma 0x7f3
-#define XK_Greek_tau 0x7f4
-#define XK_Greek_upsilon 0x7f5
-#define XK_Greek_phi 0x7f6
-#define XK_Greek_chi 0x7f7
-#define XK_Greek_psi 0x7f8
-#define XK_Greek_omega 0x7f9
-#define XK_Greek_switch 0xFF7E /* Alias for mode_switch */
-#endif /* XK_GREEK */
-
-/*
- * Technical
- * Byte 3 = 8
- */
-
-#ifdef XK_TECHNICAL
-#define XK_leftradical 0x8a1
-#define XK_topleftradical 0x8a2
-#define XK_horizconnector 0x8a3
-#define XK_topintegral 0x8a4
-#define XK_botintegral 0x8a5
-#define XK_vertconnector 0x8a6
-#define XK_topleftsqbracket 0x8a7
-#define XK_botleftsqbracket 0x8a8
-#define XK_toprightsqbracket 0x8a9
-#define XK_botrightsqbracket 0x8aa
-#define XK_topleftparens 0x8ab
-#define XK_botleftparens 0x8ac
-#define XK_toprightparens 0x8ad
-#define XK_botrightparens 0x8ae
-#define XK_leftmiddlecurlybrace 0x8af
-#define XK_rightmiddlecurlybrace 0x8b0
-#define XK_topleftsummation 0x8b1
-#define XK_botleftsummation 0x8b2
-#define XK_topvertsummationconnector 0x8b3
-#define XK_botvertsummationconnector 0x8b4
-#define XK_toprightsummation 0x8b5
-#define XK_botrightsummation 0x8b6
-#define XK_rightmiddlesummation 0x8b7
-#define XK_lessthanequal 0x8bc
-#define XK_notequal 0x8bd
-#define XK_greaterthanequal 0x8be
-#define XK_integral 0x8bf
-#define XK_therefore 0x8c0
-#define XK_variation 0x8c1
-#define XK_infinity 0x8c2
-#define XK_nabla 0x8c5
-#define XK_approximate 0x8c8
-#define XK_similarequal 0x8c9
-#define XK_ifonlyif 0x8cd
-#define XK_implies 0x8ce
-#define XK_identical 0x8cf
-#define XK_radical 0x8d6
-#define XK_includedin 0x8da
-#define XK_includes 0x8db
-#define XK_intersection 0x8dc
-#define XK_union 0x8dd
-#define XK_logicaland 0x8de
-#define XK_logicalor 0x8df
-#define XK_partialderivative 0x8ef
-#define XK_function 0x8f6
-#define XK_leftarrow 0x8fb
-#define XK_uparrow 0x8fc
-#define XK_rightarrow 0x8fd
-#define XK_downarrow 0x8fe
-#endif /* XK_TECHNICAL */
-
-/*
- * Special
- * Byte 3 = 9
- */
-
-#ifdef XK_SPECIAL
-#define XK_blank 0x9df
-#define XK_soliddiamond 0x9e0
-#define XK_checkerboard 0x9e1
-#define XK_ht 0x9e2
-#define XK_ff 0x9e3
-#define XK_cr 0x9e4
-#define XK_lf 0x9e5
-#define XK_nl 0x9e8
-#define XK_vt 0x9e9
-#define XK_lowrightcorner 0x9ea
-#define XK_uprightcorner 0x9eb
-#define XK_upleftcorner 0x9ec
-#define XK_lowleftcorner 0x9ed
-#define XK_crossinglines 0x9ee
-#define XK_horizlinescan1 0x9ef
-#define XK_horizlinescan3 0x9f0
-#define XK_horizlinescan5 0x9f1
-#define XK_horizlinescan7 0x9f2
-#define XK_horizlinescan9 0x9f3
-#define XK_leftt 0x9f4
-#define XK_rightt 0x9f5
-#define XK_bott 0x9f6
-#define XK_topt 0x9f7
-#define XK_vertbar 0x9f8
-#endif /* XK_SPECIAL */
-
-/*
- * Publishing
- * Byte 3 = a
- */
-
-#ifdef XK_PUBLISHING
-#define XK_emspace 0xaa1
-#define XK_enspace 0xaa2
-#define XK_em3space 0xaa3
-#define XK_em4space 0xaa4
-#define XK_digitspace 0xaa5
-#define XK_punctspace 0xaa6
-#define XK_thinspace 0xaa7
-#define XK_hairspace 0xaa8
-#define XK_emdash 0xaa9
-#define XK_endash 0xaaa
-#define XK_signifblank 0xaac
-#define XK_ellipsis 0xaae
-#define XK_doubbaselinedot 0xaaf
-#define XK_onethird 0xab0
-#define XK_twothirds 0xab1
-#define XK_onefifth 0xab2
-#define XK_twofifths 0xab3
-#define XK_threefifths 0xab4
-#define XK_fourfifths 0xab5
-#define XK_onesixth 0xab6
-#define XK_fivesixths 0xab7
-#define XK_careof 0xab8
-#define XK_figdash 0xabb
-#define XK_leftanglebracket 0xabc
-#define XK_decimalpoint 0xabd
-#define XK_rightanglebracket 0xabe
-#define XK_marker 0xabf
-#define XK_oneeighth 0xac3
-#define XK_threeeighths 0xac4
-#define XK_fiveeighths 0xac5
-#define XK_seveneighths 0xac6
-#define XK_trademark 0xac9
-#define XK_signaturemark 0xaca
-#define XK_trademarkincircle 0xacb
-#define XK_leftopentriangle 0xacc
-#define XK_rightopentriangle 0xacd
-#define XK_emopencircle 0xace
-#define XK_emopenrectangle 0xacf
-#define XK_leftsinglequotemark 0xad0
-#define XK_rightsinglequotemark 0xad1
-#define XK_leftdoublequotemark 0xad2
-#define XK_rightdoublequotemark 0xad3
-#define XK_prescription 0xad4
-#define XK_minutes 0xad6
-#define XK_seconds 0xad7
-#define XK_latincross 0xad9
-#define XK_hexagram 0xada
-#define XK_filledrectbullet 0xadb
-#define XK_filledlefttribullet 0xadc
-#define XK_filledrighttribullet 0xadd
-#define XK_emfilledcircle 0xade
-#define XK_emfilledrect 0xadf
-#define XK_enopencircbullet 0xae0
-#define XK_enopensquarebullet 0xae1
-#define XK_openrectbullet 0xae2
-#define XK_opentribulletup 0xae3
-#define XK_opentribulletdown 0xae4
-#define XK_openstar 0xae5
-#define XK_enfilledcircbullet 0xae6
-#define XK_enfilledsqbullet 0xae7
-#define XK_filledtribulletup 0xae8
-#define XK_filledtribulletdown 0xae9
-#define XK_leftpointer 0xaea
-#define XK_rightpointer 0xaeb
-#define XK_club 0xaec
-#define XK_diamond 0xaed
-#define XK_heart 0xaee
-#define XK_maltesecross 0xaf0
-#define XK_dagger 0xaf1
-#define XK_doubledagger 0xaf2
-#define XK_checkmark 0xaf3
-#define XK_ballotcross 0xaf4
-#define XK_musicalsharp 0xaf5
-#define XK_musicalflat 0xaf6
-#define XK_malesymbol 0xaf7
-#define XK_femalesymbol 0xaf8
-#define XK_telephone 0xaf9
-#define XK_telephonerecorder 0xafa
-#define XK_phonographcopyright 0xafb
-#define XK_caret 0xafc
-#define XK_singlelowquotemark 0xafd
-#define XK_doublelowquotemark 0xafe
-#define XK_cursor 0xaff
-#endif /* XK_PUBLISHING */
-
-/*
- * APL
- * Byte 3 = b
- */
-
-#ifdef XK_APL
-#define XK_leftcaret 0xba3
-#define XK_rightcaret 0xba6
-#define XK_downcaret 0xba8
-#define XK_upcaret 0xba9
-#define XK_overbar 0xbc0
-#define XK_downtack 0xbc2
-#define XK_upshoe 0xbc3
-#define XK_downstile 0xbc4
-#define XK_underbar 0xbc6
-#define XK_jot 0xbca
-#define XK_quad 0xbcc
-#define XK_uptack 0xbce
-#define XK_circle 0xbcf
-#define XK_upstile 0xbd3
-#define XK_downshoe 0xbd6
-#define XK_rightshoe 0xbd8
-#define XK_leftshoe 0xbda
-#define XK_lefttack 0xbdc
-#define XK_righttack 0xbfc
-#endif /* XK_APL */
-
-/*
- * Hebrew
- * Byte 3 = c
- */
-
-#ifdef XK_HEBREW
-#define XK_hebrew_doublelowline 0xcdf
-#define XK_hebrew_aleph 0xce0
-#define XK_hebrew_bet 0xce1
-#define XK_hebrew_beth 0xce1 /* deprecated */
-#define XK_hebrew_gimel 0xce2
-#define XK_hebrew_gimmel 0xce2 /* deprecated */
-#define XK_hebrew_dalet 0xce3
-#define XK_hebrew_daleth 0xce3 /* deprecated */
-#define XK_hebrew_he 0xce4
-#define XK_hebrew_waw 0xce5
-#define XK_hebrew_zain 0xce6
-#define XK_hebrew_zayin 0xce6 /* deprecated */
-#define XK_hebrew_chet 0xce7
-#define XK_hebrew_het 0xce7 /* deprecated */
-#define XK_hebrew_tet 0xce8
-#define XK_hebrew_teth 0xce8 /* deprecated */
-#define XK_hebrew_yod 0xce9
-#define XK_hebrew_finalkaph 0xcea
-#define XK_hebrew_kaph 0xceb
-#define XK_hebrew_lamed 0xcec
-#define XK_hebrew_finalmem 0xced
-#define XK_hebrew_mem 0xcee
-#define XK_hebrew_finalnun 0xcef
-#define XK_hebrew_nun 0xcf0
-#define XK_hebrew_samech 0xcf1
-#define XK_hebrew_samekh 0xcf1 /* deprecated */
-#define XK_hebrew_ayin 0xcf2
-#define XK_hebrew_finalpe 0xcf3
-#define XK_hebrew_pe 0xcf4
-#define XK_hebrew_finalzade 0xcf5
-#define XK_hebrew_finalzadi 0xcf5 /* deprecated */
-#define XK_hebrew_zade 0xcf6
-#define XK_hebrew_zadi 0xcf6 /* deprecated */
-#define XK_hebrew_qoph 0xcf7
-#define XK_hebrew_kuf 0xcf7 /* deprecated */
-#define XK_hebrew_resh 0xcf8
-#define XK_hebrew_shin 0xcf9
-#define XK_hebrew_taw 0xcfa
-#define XK_hebrew_taf 0xcfa /* deprecated */
-#define XK_Hebrew_switch 0xFF7E /* Alias for mode_switch */
-#endif /* XK_HEBREW */
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/X11/license.terms b/Master/tlpkg/tlperl/lib/Tk/X11/license.terms
deleted file mode 100644
index 03ca6fcb319..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/X11/license.terms
+++ /dev/null
@@ -1,39 +0,0 @@
-This software is copyrighted by the Regents of the University of
-California, Sun Microsystems, Inc., and other parties. The following
-terms apply to all files associated with the software unless explicitly
-disclaimed in individual files.
-
-The authors hereby grant permission to use, copy, modify, distribute,
-and license this software and its documentation for any purpose, provided
-that existing copyright notices are retained in all copies and that this
-notice is included verbatim in any distributions. No written agreement,
-license, or royalty fee is required for any of the authorized uses.
-Modifications to this software may be copyrighted by their authors
-and need not follow the licensing terms described here, provided that
-the new terms are clearly indicated on the first page of each file where
-they apply.
-
-IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
-FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
-DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
-IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
-NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
-MODIFICATIONS.
-
-GOVERNMENT USE: If you are acquiring this software on behalf of the
-U.S. government, the Government shall have only "Restricted Rights"
-in the software and related documentation as defined in the Federal
-Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you
-are acquiring the software on behalf of the Department of Defense, the
-software shall be classified as "Commercial Computer Software" and the
-Government shall have only "Restricted Rights" as defined in Clause
-252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the
-authors grant the U.S. Government and others acting in its behalf
-permission to use and distribute the software in accordance with the
-terms specified in this license.
diff --git a/Master/tlpkg/tlperl/lib/Tk/X11Font.pm b/Master/tlpkg/tlperl/lib/Tk/X11Font.pm
deleted file mode 100644
index 870dfd4b7dc..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/X11Font.pm
+++ /dev/null
@@ -1,184 +0,0 @@
-package Tk::X11Font;
-use vars qw($VERSION);
-$VERSION = '4.007'; # $Id: //depot/Tkutf8/Tk/X11Font.pm#7 $
-
-require Tk::Widget;
-require Tk::Xlib;
-use strict;
-
-Construct Tk::Widget 'X11Font';
-
-my @field = qw(foundry family weight slant swidth adstyle pixel
- point xres yres space avgwidth registry encoding);
-
-map { eval "sub \u$_ { shift->elem('$_', \@_) }" } @field;
-
-use overload '""' => 'as_string';
-
-sub new
-{
- my $pkg = shift;
- my $w = shift;
-
- my %me = ();
- my $d = $w->Display;
-
- local $_;
-
- if(scalar(@_) == 1)
- {
- my $pattern = shift;
-
- if($pattern =~ /\A(-[^-]*){14}\Z/)
- {
- @me{@field} = split(/-/, substr($pattern,1));
- }
- else
- {
- $me{Name} = $pattern;
-
- if($pattern =~ /^[^-]?-([^-]*-){2,}/)
- {
- my $f = $d->XListFonts($pattern,1);
-
- if($f && $f =~ /\A(-[^-]*){14}/)
- {
- my @f = split(/-/, substr($f,1));
- my @n = split(/-/, $pattern);
- my %f = ();
- my $i = 0;
-
- shift @n if($pattern =~ /\A-/);
-
- while(@n && @f)
- {
- if($n[0] eq '*')
- {
- shift @n;
- }
- elsif($n[0] eq $f[0])
- {
- $f{$field[$i]} = shift @n;
- }
- $i++;
- shift @f;
- }
-
- %me = %f
- unless(@n);
- }
- }
- }
- }
- else
- {
- %me = @_;
- }
-
- map { $me{$_} ||= '*' } @field;
-
- $me{Display} = $d;
- $me{MainWin} = $w->MainWindow;
-
- bless \%me, $pkg;
-}
-
-sub Pattern
-{
- my $me = shift;
- return join('-', '',@{$me}{@field});
-}
-
-sub Name
-{
- my $me = shift;
- my $max = wantarray ? shift || 128 : 1;
-
- if ($^O eq 'MSWin32' or ($^O eq 'cygwin' and $Tk::platform eq 'MSWin32'))
- {
- my $name = $me->{Name};
- if (!defined $name)
- {
- my $fm = $me->{'family'} || 'system';
- my $sz = -int($me->{'point'}/10) || -($me->{'pixel'}) || 12;
- my @opt = (-family => $fm, -size => $sz );
- my $wt = $me->{'weight'};
- if (defined $wt)
- {
- $wt = 'normal' unless $wt =~ /bold/i;
- push(@opt,-weight => lc($wt));
- }
- my $sl = $me->{'slant'};
- if (defined $sl)
- {
- $sl = ($sl =~ /^[io]/) ? 'italic' : 'roman';
- push(@opt,-slant => $sl);
- }
- $name = join(' ',@opt);
- }
- return $name;
- }
- else
- {
- my $name = $me->{Name} ||
- join('-', '',@{$me}{@field});
- return $me->{Display}->XListFonts($name,$max);
- }
-}
-
-sub as_string
-{
- return shift->Name;
-}
-
-sub elem
-{
- my $me = shift;
- my $elem = shift;
-
- return undef
- if(exists $me->{'Name'});
-
- my $old = $me->{$elem};
-
- $me->{$elem} = shift
- if(@_);
-
- $old;
-}
-
-sub Clone
-{
- my $me = shift;
-
- $me = bless { %$me }, ref($me);
-
- unless(exists $me->{'Name'})
- {
- while(@_)
- {
- my $k = shift;
- my $v = shift || $me->{MainWin}->BackTrace('Tk::Font->Clone( key => value, ... )');
- $me->{$k} = $v;
- }
- }
-
- $me;
-}
-
-sub ascent
-{
- my $me = shift;
- my $name = $me->Name;
- $me->{MainWin}->fontMetrics($name, '-ascent');
-}
-
-sub descent
-{
- my $me = shift;
- my $name = $me->Name;
- $me->{MainWin}->fontMetrics($name, '-descent');
-}
-
-1;
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/Xcamel.gif b/Master/tlpkg/tlperl/lib/Tk/Xcamel.gif
deleted file mode 100644
index cb88bc0afd8..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Xcamel.gif
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/Tk/Xlib.pm b/Master/tlpkg/tlperl/lib/Tk/Xlib.pm
deleted file mode 100644
index 1432361dc18..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Xlib.pm
+++ /dev/null
@@ -1,15 +0,0 @@
-package Tk::Xlib;
-require DynaLoader;
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/Xlib/Xlib.pm#4 $
-
-use Tk qw($XS_VERSION);
-use Exporter;
-
-use base qw(DynaLoader Exporter);
-@EXPORT_OK = qw(XDrawString XLoadFont XDrawRectangle);
-
-bootstrap Tk::Xlib;
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/Xrm.pm b/Master/tlpkg/tlperl/lib/Tk/Xrm.pm
deleted file mode 100644
index 271ad59a237..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/Xrm.pm
+++ /dev/null
@@ -1,11 +0,0 @@
-package Tk::Xrm;
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/Xrm.pm#4 $
-
-use Tk ();
-1;
-__END__
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/act_folder.xbm b/Master/tlpkg/tlperl/lib/Tk/act_folder.xbm
deleted file mode 100644
index fc82949945b..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/act_folder.xbm
+++ /dev/null
@@ -1,5 +0,0 @@
-#define act_folder_width 16
-#define act_folder_height 10
-static unsigned char act_folder_bits[] = {
- 0xfc, 0x00, 0xaa, 0x0f, 0x55, 0x15, 0xeb, 0xff, 0x15, 0x80, 0x0b, 0x40,
- 0x05, 0x20, 0x03, 0x10, 0x01, 0x08, 0xff, 0x07};
diff --git a/Master/tlpkg/tlperl/lib/Tk/act_folder.xpm b/Master/tlpkg/tlperl/lib/Tk/act_folder.xpm
deleted file mode 100644
index 0e7d682713a..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/act_folder.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * act_folder_xpm[] = {
-/* width height num_colors chars_per_pixel */
-"16 12 4 1",
-/* colors */
-" s None c None",
-". c black",
-"X c yellow",
-"o c #5B5B57574646",
-/* pixels */
-" .... ",
-" .XXXX. ",
-" .XXXXXX. ",
-"............. ",
-".oXoXoXoXoXo. ",
-".XoX............",
-".oX.XXXXXXXXXXX.",
-".Xo.XXXXXXXXXX. ",
-".o.XXXXXXXXXXX. ",
-".X.XXXXXXXXXXX. ",
-"..XXXXXXXXXX.. ",
-"............. "};
diff --git a/Master/tlpkg/tlperl/lib/Tk/anim.gif b/Master/tlpkg/tlperl/lib/Tk/anim.gif
deleted file mode 100644
index 96a50b701be..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/anim.gif
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/Tk/arrowdownwin.xbm b/Master/tlpkg/tlperl/lib/Tk/arrowdownwin.xbm
deleted file mode 100644
index ea43fc75e7a..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/arrowdownwin.xbm
+++ /dev/null
@@ -1,5 +0,0 @@
-#define arrowdownwin2_width 9
-#define arrowdownwin2_height 13
-static char arrowdownwin2_bits[] = {
- 0x00,0xfe,0x00,0xfe,0x00,0xfe,0x00,0xfe,0x00,0xfe,0x7c,0xfe,0x38,0xfe,0x10,
- 0xfe,0x00,0xfe,0x00,0xfe,0x00,0xfe,0x00,0xfe,0x00,0xfe};
diff --git a/Master/tlpkg/tlperl/lib/Tk/balArrow.xbm b/Master/tlpkg/tlperl/lib/Tk/balArrow.xbm
deleted file mode 100644
index ee0664a4727..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/balArrow.xbm
+++ /dev/null
@@ -1,4 +0,0 @@
-#define balArrow_width 6
-#define balArrow_height 6
-static char balArrow_bits[] = {
- 0x1f, 0x07, 0x07, 0x09, 0x11, 0x20};
diff --git a/Master/tlpkg/tlperl/lib/Tk/cbxarrow.xbm b/Master/tlpkg/tlperl/lib/Tk/cbxarrow.xbm
deleted file mode 100644
index ae4054488b9..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/cbxarrow.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define cbxarrow_width 11
-#define cbxarrow_height 14
-static char cbxarrow_bits[] = {
- 0x00, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00,
- 0xfe, 0x03, 0xfc, 0x01, 0xf8, 0x00, 0x70, 0x00, 0x20, 0x00, 0x00, 0x00,
- 0xfe, 0x03, 0xfe, 0x03};
diff --git a/Master/tlpkg/tlperl/lib/Tk/file.xbm b/Master/tlpkg/tlperl/lib/Tk/file.xbm
deleted file mode 100644
index 7bf12bb4c9f..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/file.xbm
+++ /dev/null
@@ -1,5 +0,0 @@
-#define file_width 12
-#define file_height 12
-static unsigned char file_bits[] = {
- 0xfe, 0x00, 0x02, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x03};
diff --git a/Master/tlpkg/tlperl/lib/Tk/file.xpm b/Master/tlpkg/tlperl/lib/Tk/file.xpm
deleted file mode 100644
index 10cc24f9a1e..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/file.xpm
+++ /dev/null
@@ -1,18 +0,0 @@
-/* XPM */
-static char * file_xpm[] = {
-"12 12 3 1",
-" s None c None",
-". c #000000000000",
-"X c white",
-" ........ ",
-" .XXXXXX. ",
-" .XXXXXX... ",
-" .XXXXXXXX. ",
-" .XXXXXXXX. ",
-" .XXXXXXXX. ",
-" .XXXXXXXX. ",
-" .XXXXXXXX. ",
-" .XXXXXXXX. ",
-" .XXXXXXXX. ",
-" .XXXXXXXX. ",
-" .......... "};
diff --git a/Master/tlpkg/tlperl/lib/Tk/folder.xbm b/Master/tlpkg/tlperl/lib/Tk/folder.xbm
deleted file mode 100644
index 0398f0de777..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/folder.xbm
+++ /dev/null
@@ -1,5 +0,0 @@
-#define folder_width 16
-#define folder_height 10
-static unsigned char folder_bits[] = {
- 0xfc, 0x00, 0x02, 0x07, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08,
- 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0xff, 0x07};
diff --git a/Master/tlpkg/tlperl/lib/Tk/folder.xpm b/Master/tlpkg/tlperl/lib/Tk/folder.xpm
deleted file mode 100644
index fda7c15a549..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/folder.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * folder_xpm[] = {
-/* width height num_colors chars_per_pixel */
-"16 12 3 1",
-/* colors */
-" s None c None",
-". c black",
-"X c #f0ff80",
-/* pixels */
-" .... ",
-" .XXXX. ",
-" .XXXXXX. ",
-"............. ",
-".XXXXXXXXXXX. ",
-".XXXXXXXXXXX. ",
-".XXXXXXXXXXX. ",
-".XXXXXXXXXXX. ",
-".XXXXXXXXXXX. ",
-".XXXXXXXXXXX. ",
-".XXXXXXXXXXX. ",
-"............. "};
diff --git a/Master/tlpkg/tlperl/lib/Tk/icon.gif b/Master/tlpkg/tlperl/lib/Tk/icon.gif
deleted file mode 100644
index dfe6b6621f2..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/icon.gif
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/Tk/install.pm b/Master/tlpkg/tlperl/lib/Tk/install.pm
deleted file mode 100644
index 2392dc84fca..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/install.pm
+++ /dev/null
@@ -1,37 +0,0 @@
-package Tk::install;
-require Exporter;
-
-use vars qw($VERSION @EXPORT);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/install.pm#4 $
-
-use base qw(Exporter);
-@EXPORT = qw(installbin);
-
-use Config;
-
-sub installbin
-{
- my $prog = shift(@ARGV);
- my $start = $Config{'startperl'};
- my $perl = $Config{'perl'} || 'perl';
- $start =~ s/$perl$/$prog/;
- while (($src,$dst) = splice(@ARGV,0,2))
- {
- open(SRC,"<$src") || die "Cannot open $src:$!";
- my $line = <SRC>;
- $line =~ s/^#!\s*\S+/$start/;
- warn $line;
- chmod(0755,$dst) if (-f $dst);
- open(DST,">$dst") || die "Cannot open $dst:$!";
- print "installbin $src => $dst\n";
- do
- {
- print DST $line;
- } while (defined($line = <SRC>));
- close(SRC);
- close(DST);
- chmod(0555,$dst);
- }
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Tk/license.terms b/Master/tlpkg/tlperl/lib/Tk/license.terms
deleted file mode 100644
index 6a5d3728366..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/license.terms
+++ /dev/null
@@ -1,35 +0,0 @@
-This software is copyrighted by the Regents of the University of
-California, Sun Microsystems, Inc., and other parties. The following
-terms apply to all files associated with the software unless explicitly
-disclaimed in individual files.
-
-The authors hereby grant permission to use, copy, modify, distribute,
-and license this software and its documentation for any purpose, provided
-that existing copyright notices are retained in all copies and that this
-notice is included verbatim in any distributions. No written agreement,
-license, or royalty fee is required for any of the authorized uses.
-Modifications to this software may be copyrighted by their authors
-and need not follow the licensing terms described here, provided that
-the new terms are clearly indicated on the first page of each file where
-they apply.
-
-IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
-FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
-DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
-IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
-NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
-MODIFICATIONS.
-
-RESTRICTED RIGHTS: Use, duplication or disclosure by the government
-is subject to the restrictions as set forth in subparagraph (c) (1) (ii)
-of the Rights in Technical Data and Computer Software Clause as DFARS
-252.227-7013 and FAR 52.227-19.
-0 in license.terms
-0 in license.terms
-0 in license.terms
diff --git a/Master/tlpkg/tlperl/lib/Tk/openfile.xbm b/Master/tlpkg/tlperl/lib/Tk/openfile.xbm
deleted file mode 100644
index 859e2e57608..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/openfile.xbm
+++ /dev/null
@@ -1,5 +0,0 @@
-#define openfile_width 16
-#define openfile_height 12
-static unsigned char openfile_bits[] = {
- 0x00, 0x00, 0xfc, 0x00, 0x02, 0x07, 0x01, 0x08, 0xc1, 0xff, 0xa1, 0xaa,
- 0x51, 0x55, 0xa9, 0x2a, 0x55, 0x15, 0xab, 0x0a, 0xff, 0x07, 0x00, 0x00};
diff --git a/Master/tlpkg/tlperl/lib/Tk/openfolder.xbm b/Master/tlpkg/tlperl/lib/Tk/openfolder.xbm
deleted file mode 100644
index 59ee624efd0..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/openfolder.xbm
+++ /dev/null
@@ -1,5 +0,0 @@
-#define openfolder_width 16
-#define openfolder_height 10
-static unsigned char openfolder_bits[] = {
- 0xfc, 0x00, 0x02, 0x07, 0x01, 0x08, 0xc1, 0xff, 0x21, 0x80, 0x11, 0x40,
- 0x09, 0x20, 0x05, 0x10, 0x03, 0x08, 0xff, 0x07};
diff --git a/Master/tlpkg/tlperl/lib/Tk/openfolder.xpm b/Master/tlpkg/tlperl/lib/Tk/openfolder.xpm
deleted file mode 100644
index 191fe1e72bc..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/openfolder.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * openfolder_xpm[] = {
-/* width height num_colors chars_per_pixel */
-"16 12 3 1",
-/* colors */
-" s None c None",
-". c black",
-"X c #f0ff80",
-/* pixels */
-" .... ",
-" .XXXX. ",
-" .XXXXXX. ",
-"............. ",
-".XXXXXXXXXXX. ",
-".XXX............",
-".XX.XXXXXXXXXXX.",
-".XX.XXXXXXXXXX. ",
-".X.XXXXXXXXXXX. ",
-".X.XXXXXXXXXXX. ",
-"..XXXXXXXXXX.. ",
-"............. "};
diff --git a/Master/tlpkg/tlperl/lib/Tk/prolog.ps b/Master/tlpkg/tlperl/lib/Tk/prolog.ps
deleted file mode 100644
index 409e06a65a0..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/prolog.ps
+++ /dev/null
@@ -1,284 +0,0 @@
-%%BeginProlog
-50 dict begin
-
-% This is a standard prolog for Postscript generated by Tk's canvas
-% widget.
-% SCCS: @(#) prolog.ps 1.5 96/02/17 17:45:11
-
-% The definitions below just define all of the variables used in
-% any of the procedures here. This is needed for obscure reasons
-% explained on p. 716 of the Postscript manual (Section H.2.7,
-% "Initializing Variables," in the section on Encapsulated Postscript).
-
-/baseline 0 def
-/stipimage 0 def
-/height 0 def
-/justify 0 def
-/lineLength 0 def
-/spacing 0 def
-/stipple 0 def
-/strings 0 def
-/xoffset 0 def
-/yoffset 0 def
-/tmpstip null def
-
-% Define the array ISOLatin1Encoding (which specifies how characters are
-% encoded for ISO-8859-1 fonts), if it isn't already present (Postscript
-% level 2 is supposed to define it, but level 1 doesn't).
-
-systemdict /ISOLatin1Encoding known not {
- /ISOLatin1Encoding [
- /space /space /space /space /space /space /space /space
- /space /space /space /space /space /space /space /space
- /space /space /space /space /space /space /space /space
- /space /space /space /space /space /space /space /space
- /space /exclam /quotedbl /numbersign /dollar /percent /ampersand
- /quoteright
- /parenleft /parenright /asterisk /plus /comma /minus /period /slash
- /zero /one /two /three /four /five /six /seven
- /eight /nine /colon /semicolon /less /equal /greater /question
- /at /A /B /C /D /E /F /G
- /H /I /J /K /L /M /N /O
- /P /Q /R /S /T /U /V /W
- /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
- /quoteleft /a /b /c /d /e /f /g
- /h /i /j /k /l /m /n /o
- /p /q /r /s /t /u /v /w
- /x /y /z /braceleft /bar /braceright /asciitilde /space
- /space /space /space /space /space /space /space /space
- /space /space /space /space /space /space /space /space
- /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent
- /dieresis /space /ring /cedilla /space /hungarumlaut /ogonek /caron
- /space /exclamdown /cent /sterling /currency /yen /brokenbar /section
- /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen
- /registered /macron
- /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph
- /periodcentered
- /cedillar /onesuperior /ordmasculine /guillemotright /onequarter
- /onehalf /threequarters /questiondown
- /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
- /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex
- /Idieresis
- /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
- /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn
- /germandbls
- /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
- /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex
- /idieresis
- /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
- /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn
- /ydieresis
- ] def
-} if
-
-% font ISOEncode font
-% This procedure changes the encoding of a font from the default
-% Postscript encoding to ISOLatin1. It's typically invoked just
-% before invoking "setfont". The body of this procedure comes from
-% Section 5.6.1 of the Postscript book.
-
-/ISOEncode {
- dup length dict begin
- {1 index /FID ne {def} {pop pop} ifelse} forall
- /Encoding ISOLatin1Encoding def
- currentdict
- end
-
- % I'm not sure why it's necessary to use "definefont" on this new
- % font, but it seems to be important; just use the name "Temporary"
- % for the font.
-
- /Temporary exch definefont
-} bind def
-
-% StrokeClip
-%
-% This procedure converts the current path into a clip area under
-% the assumption of stroking. It's a bit tricky because some Postscript
-% interpreters get errors during strokepath for dashed lines. If
-% this happens then turn off dashes and try again.
-
-/StrokeClip {
- {strokepath} stopped {
- (This Postscript printer gets limitcheck overflows when) =
- (stippling dashed lines; lines will be printed solid instead.) =
- [] 0 setdash strokepath} if
- clip
-} bind def
-
-% desiredSize EvenPixels closestSize
-%
-% The procedure below is used for stippling. Given the optimal size
-% of a dot in a stipple pattern in the current user coordinate system,
-% compute the closest size that is an exact multiple of the device's
-% pixel size. This allows stipple patterns to be displayed without
-% aliasing effects.
-
-/EvenPixels {
- % Compute exact number of device pixels per stipple dot.
- dup 0 matrix currentmatrix dtransform
- dup mul exch dup mul add sqrt
-
- % Round to an integer, make sure the number is at least 1, and compute
- % user coord distance corresponding to this.
- dup round dup 1 lt {pop 1} if
- exch div mul
-} bind def
-
-% width height string StippleFill --
-%
-% Given a path already set up and a clipping region generated from
-% it, this procedure will fill the clipping region with a stipple
-% pattern. "String" contains a proper image description of the
-% stipple pattern and "width" and "height" give its dimensions. Each
-% stipple dot is assumed to be about one unit across in the current
-% user coordinate system. This procedure trashes the graphics state.
-
-/StippleFill {
- % The following code is needed to work around a NeWSprint bug.
-
- /tmpstip 1 index def
-
- % Change the scaling so that one user unit in user coordinates
- % corresponds to the size of one stipple dot.
- 1 EvenPixels dup scale
-
- % Compute the bounding box occupied by the path (which is now
- % the clipping region), and round the lower coordinates down
- % to the nearest starting point for the stipple pattern. Be
- % careful about negative numbers, since the rounding works
- % differently on them.
-
- pathbbox
- 4 2 roll
- 5 index div dup 0 lt {1 sub} if cvi 5 index mul 4 1 roll
- 6 index div dup 0 lt {1 sub} if cvi 6 index mul 3 2 roll
-
- % Stack now: width height string y1 y2 x1 x2
- % Below is a doubly-nested for loop to iterate across this area
- % in units of the stipple pattern size, going up columns then
- % across rows, blasting out a stipple-pattern-sized rectangle at
- % each position
-
- 6 index exch {
- 2 index 5 index 3 index {
- % Stack now: width height string y1 y2 x y
-
- gsave
- 1 index exch translate
- 5 index 5 index true matrix tmpstip imagemask
- grestore
- } for
- pop
- } for
- pop pop pop pop pop
-} bind def
-
-% -- AdjustColor --
-% Given a color value already set for output by the caller, adjusts
-% that value to a grayscale or mono value if requested by the CL
-% variable.
-
-/AdjustColor {
- CL 2 lt {
- currentgray
- CL 0 eq {
- .5 lt {0} {1} ifelse
- } if
- setgray
- } if
-} bind def
-
-% x y strings spacing xoffset yoffset justify stipple DrawText --
-% This procedure does all of the real work of drawing text. The
-% color and font must already have been set by the caller, and the
-% following arguments must be on the stack:
-%
-% x, y - Coordinates at which to draw text.
-% strings - An array of strings, one for each line of the text item,
-% in order from top to bottom.
-% spacing - Spacing between lines.
-% xoffset - Horizontal offset for text bbox relative to x and y: 0 for
-% nw/w/sw anchor, -0.5 for n/center/s, and -1.0 for ne/e/se.
-% yoffset - Vertical offset for text bbox relative to x and y: 0 for
-% nw/n/ne anchor, +0.5 for w/center/e, and +1.0 for sw/s/se.
-% justify - 0 for left justification, 0.5 for center, 1 for right justify.
-% stipple - Boolean value indicating whether or not text is to be
-% drawn in stippled fashion. If text is stippled,
-% procedure StippleText must have been defined to call
-% StippleFill in the right way.
-%
-% Also, when this procedure is invoked, the color and font must already
-% have been set for the text.
-
-/DrawText {
- /stipple exch def
- /justify exch def
- /yoffset exch def
- /xoffset exch def
- /spacing exch def
- /strings exch def
-
- % First scan through all of the text to find the widest line.
-
- /lineLength 0 def
- strings {
- stringwidth pop
- dup lineLength gt {/lineLength exch def} {pop} ifelse
- newpath
- } forall
-
- % Compute the baseline offset and the actual font height.
-
- 0 0 moveto (TXygqPZ) false charpath
- pathbbox dup /baseline exch def
- exch pop exch sub /height exch def pop
- newpath
-
- % Translate coordinates first so that the origin is at the upper-left
- % corner of the text's bounding box. Remember that x and y for
- % positioning are still on the stack.
-
- translate
- lineLength xoffset mul
- strings length 1 sub spacing mul height add yoffset mul translate
-
- % Now use the baseline and justification information to translate so
- % that the origin is at the baseline and positioning point for the
- % first line of text.
-
- justify lineLength mul baseline neg translate
-
- % Iterate over each of the lines to output it. For each line,
- % compute its width again so it can be properly justified, then
- % display it.
-
- strings {
- dup stringwidth pop
- justify neg mul 0 moveto
- stipple {
-
- % The text is stippled, so turn it into a path and print
- % by calling StippledText, which in turn calls StippleFill.
- % Unfortunately, many Postscript interpreters will get
- % overflow errors if we try to do the whole string at
- % once, so do it a character at a time.
-
- gsave
- /char (X) def
- {
- char 0 3 -1 roll put
- currentpoint
- gsave
- char true charpath clip StippleText
- grestore
- char stringwidth translate
- moveto
- } forall
- grestore
- } {show} ifelse
- 0 spacing neg translate
- } forall
-} bind def
-
-%%EndProlog
diff --git a/Master/tlpkg/tlperl/lib/Tk/reindex.pl b/Master/tlpkg/tlperl/lib/Tk/reindex.pl
deleted file mode 100644
index 7af5cc1d13f..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/reindex.pl
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/perl
-
-use lib qw(/home1/gbartels/textlist);
-use Tk;
-
-use Tk::TextReindex qw(Tk::ROText ROTextReindex);
-
-$mw=new MainWindow;
-
-my $idx;
-
-$w=$mw->ROTextReindex()->pack(-side => "top");
-$t=$mw->Label(-textvariable => \$idx)->pack(-side => "bottom");
-
-$w->bind('<Key>',sub{$idx=$w->index("insert")});
-
-$w->insert('end',"abcd\n");
-$w->insert('end',"efgh\n");
-$w->insert('end',"mnop\n");
-$w->insert('end',"qrst\n");
-$w->insert('end',"uvwx\n");
-
-$w->insert('2.0',"ijkl\n");
-
-my $string = $w->get('4.0');
-
-
-my $result = "reading index 4.0 : expect string to equal >q<, actual value is $string \n";
-$w->insert('end',$result);
-
-print $result;
-
-MainLoop;
diff --git a/Master/tlpkg/tlperl/lib/Tk/srcfile.xpm b/Master/tlpkg/tlperl/lib/Tk/srcfile.xpm
deleted file mode 100644
index 06a40a96c84..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/srcfile.xpm
+++ /dev/null
@@ -1,18 +0,0 @@
-/* XPM */
-static char * srcfile_xpm[] = {
-"12 12 3 1",
-" s None c None",
-". c #000000000000",
-"X c gray91",
-" ........ ",
-" .XXXXXX. ",
-" .XXXXXX... ",
-" .XXXXXXXX. ",
-" .XX...XXX. ",
-" .X.XXX.XX. ",
-" .X.XXXXXX. ",
-" .X.XXXXXX. ",
-" .XX....XX. ",
-" .XXXXXXXX. ",
-" .XXXXXXXX. ",
-" .......... "};
diff --git a/Master/tlpkg/tlperl/lib/Tk/textfile.xpm b/Master/tlpkg/tlperl/lib/Tk/textfile.xpm
deleted file mode 100644
index 8fa8d2f9032..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/textfile.xpm
+++ /dev/null
@@ -1,18 +0,0 @@
-/* XPM */
-static char * textfile_xpm[] = {
-"12 12 3 1",
-" s None c None",
-". c #000000000000",
-"X c #E0E0FFFFE0E0",
-" ........ ",
-" .XXXXXX. ",
-" .XXXXXX... ",
-" .X....XXX. ",
-" .XXXXXXXX. ",
-" .X...XXXX. ",
-" .XXXXXXXX. ",
-" .X.....XX. ",
-" .XXXXXXXX. ",
-" .X.....XX. ",
-" .XXXXXXXX. ",
-" .......... "};
diff --git a/Master/tlpkg/tlperl/lib/Tk/tkGlue.def b/Master/tlpkg/tlperl/lib/Tk/tkGlue.def
deleted file mode 100644
index 2f1662c71c2..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/tkGlue.def
+++ /dev/null
@@ -1,130 +0,0 @@
-#ifdef CAN_PROTOTYPE
-#define XSdec(x) XS(x)
-#else
-#define XSdec(x) void x()
-#endif
-
-#define TKXSRETURN(off) \
- STMT_START { \
- IV ptkAdj = (off); \
- XSRETURN(ptkAdj); \
- } STMT_END
-
-#ifndef PATCHLEVEL
-#include <patchlevel.h>
-#endif
-
-#if defined(PATCHLEVEL) && (PATCHLEVEL < 5)
-#define PL_sv_undef sv_undef
-#define PL_tainting tainting
-#define PL_tainted tainted
-#define PL_stack_base stack_base
-#define PL_stack_sp stack_sp
-#define PL_curcop curcop
-#endif
-
-#ifndef CopSTASH
-#define CopSTASH(c) c->cop_stash
-#define CopSTASH_set(c,h) (CopSTASH(c) = h)
-#endif
-
-#ifndef dTHX
-#define dTHR int maybeTHR
-#endif
-
-#ifndef dTHXs
-#ifdef PERL_IMPLICIT_SYS
-#define dTHXs dTHX
-#else
-#define dTHR int maybeTHR
-#endif
-#endif
-
-#ifndef ERRSV
-#define ERRSV GvSV(errgv)
-#endif
-
-#ifndef aTHX_
-#define aTHX_
-#endif
-
-#ifndef pTHX_
-#define pTHX_
-#endif
-
-#ifdef dirty
-#undef dirty
-#endif
-#ifdef bufptr
-#undef bufptr
-#endif
-#ifdef colors
-#undef colors
-#endif
-#ifdef JOIN
-#undef JOIN
-#endif
-
-#ifdef na
-#if PATCHLEVEL >= 5
-#undef na
-#endif
-#endif
-
-
-#define Tcl_Interp HV
-#define LangCallback SV
-#define Var SV *
-#define LangResultSave AV
-struct Lang_CmdInfo;
-#define Tcl_Command struct Lang_CmdInfo *
-struct WrappedRegExp;
-#define Tcl_RegExp struct WrappedRegExp *
-#define Tcl_Obj SV
-#define Tcl_DString SV *
-
-#ifndef PerlIO
-#define PerlIO FILE
-#define PerlIO_stderr() stderr
-#define PerlIO_printf fprintf
-#define PerlIO_flush(f) Fflush(f)
-#define PerlIO_vprintf(f,fmt,a) vfprintf(f,fmt,a)
-#define PerlIO_putc(f,c) fputc(c,f)
-#define PerlIO_fileno(f) fileno(f)
-
-/* Now our interface to Configure's FILE_xxx macros */
-
-#ifdef USE_STDIO_PTR
-#define PerlIO_has_cntptr(f) 1
-#define PerlIO_get_ptr(f) FILE_ptr(f)
-#define PerlIO_get_cnt(f) FILE_cnt(f)
-
-#ifdef FILE_CNT_LVALUE
-#define PerlIO_canset_cnt(f) 1
-#ifdef FILE_PTR_LVALUE
-#define PerlIO_fast_gets(f) 1
-#endif
-#define PerlIO_set_cnt(f,c) (FILE_cnt(f) = (c))
-#else
-#define PerlIO_canset_cnt(f) 0
-#define PerlIO_set_cnt(f,c) abort()
-#endif
-
-#ifdef FILE_PTR_LVALUE
-#define PerlIO_set_ptrcnt(f,p,c) (FILE_ptr(f) = (p), PerlIO_set_cnt(f,c))
-#else
-#define PerlIO_set_ptrcnt(f,p,c) abort()
-#endif
-
-#else /* USE_STDIO_PTR */
-
-#define PerlIO_has_cntptr(f) 0
-#define PerlIO_get_cnt(f) (abort(),0)
-#define PerlIO_get_ptr(f) (abort(),0)
-#define PerlIO_set_cnt(f,c) abort()
-#define PerlIO_set_ptrcnt(f,p,c) abort()
-
-#endif /* USE_STDIO_PTR */
-
-#endif
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/tkGlue.h b/Master/tlpkg/tlperl/lib/Tk/tkGlue.h
deleted file mode 100644
index 31a7f861700..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/tkGlue.h
+++ /dev/null
@@ -1,79 +0,0 @@
-#ifndef _TKGLUE
-#define _TKGLUE
-
-#ifndef BASEEXT
-#define BASEEXT "Tk"
-#endif
-
-#ifndef _TKOPTION
-#include "pTk/tkOption.h"
-#include "pTk/tkOption_f.h"
-#endif
-
-typedef struct EventAndKeySym
- {XEvent event;
- KeySym keySym;
- Tcl_Interp *interp;
- Tk_Window tkwin;
- SV *window;
- } EventAndKeySym;
-
-typedef struct Lang_CmdInfo
- {Tcl_CmdInfo Tk;
- Tcl_Interp *interp;
- Tk_Window tkwin;
- SV *image;
- Tk_Font tkfont;
- } Lang_CmdInfo;
-
-#include "vtab.def"
-
-
-#define VTABLE_INIT() IMPORT_VTABLES
-
-extern Lang_CmdInfo *WindowCommand _ANSI_ARGS_((SV *win,HV **hptr, int moan));
-extern Tk_Window SVtoWindow _ANSI_ARGS_((SV *win));
-extern Tk_Font SVtoFont _ANSI_ARGS_((SV *win));
-extern int Call_Tk _ANSI_ARGS_((Lang_CmdInfo *info,int argc, SV **args));
-extern HV *InterpHv _ANSI_ARGS_((Tcl_Interp *interp,int fatal));
-extern SV *WidgetRef _ANSI_ARGS_((Tcl_Interp *interp, char *path));
-extern SV *ObjectRef _ANSI_ARGS_((Tcl_Interp *interp, char *path));
-extern SV *TkToWidget _ANSI_ARGS_((Tk_Window tkwin,Tcl_Interp **pinterp));
-extern SV *FindTkVarName _ANSI_ARGS_((CONST char *varName,int flags));
-extern void EnterWidgetMethods _ANSI_ARGS_((char *package, ...));
-extern SV *MakeReference _ANSI_ARGS_((SV * sv));
-extern Tk_Window TkToMainWindow _ANSI_ARGS_((Tk_Window tkwin));
-extern void Lang_TkSubCommand _ANSI_ARGS_ ((char *name, Tcl_ObjCmdProc *proc));
-extern void Lang_TkCommand _ANSI_ARGS_ ((char *name, Tcl_ObjCmdProc *proc));
-extern SV *XEvent_Info _((EventAndKeySym *obj,char *s));
-extern EventAndKeySym *SVtoEventAndKeySym _((SV *arg));
-extern int XSTkCommand _ANSI_ARGS_((CV *cv, int mwcd, Tcl_ObjCmdProc *proc, int items, SV **args));
-
-extern XS(XStoWidget);
-
-EXTERN void ClearErrorInfo _ANSI_ARGS_((SV *interp));
-EXTERN Tk_Window mainWindow;
-EXTERN void DumpStack _ANSI_ARGS_((CONST char *who));
-EXTERN void Boot_Glue (pTHX);
-EXTERN void Boot_Tix (pTHX);
-EXTERN void install_vtab _ANSI_ARGS_((char *name, void *table, size_t size));
-extern SV *TagIt _((SV *sv, char *type));
-extern void Font_DESTROY _((SV *sv));
-struct pTkCheckChain;
-extern void Tk_CheckHash _((SV *sv,struct pTkCheckChain *chain));
-
-extern int has_highbit(CONST char *s,int l);
-extern SV * sv_maybe_utf8(SV *sv);
-extern SV * Lang_SystemEncoding(void);
-
-#ifndef WIN32
-#define HWND void *
-#endif
-EXTERN HWND SVtoHWND _ANSI_ARGS_((SV *win));
-
-#ifdef WIN32
-#include "pTk/tkWinInt.h"
-#endif
-
-#endif
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/tkGlue.m b/Master/tlpkg/tlperl/lib/Tk/tkGlue.m
deleted file mode 100644
index 922d1426a55..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/tkGlue.m
+++ /dev/null
@@ -1,74 +0,0 @@
-#ifndef _TKGLUE_VM
-#define _TKGLUE_VM
-#include "tkGlue_f.h"
-#ifndef NO_VTABLES
-#ifndef Call_Tk
-# define Call_Tk (*TkglueVptr->V_Call_Tk)
-#endif
-
-#ifndef EnterWidgetMethods
-# define EnterWidgetMethods (*TkglueVptr->V_EnterWidgetMethods)
-#endif
-
-#ifndef FindTkVarName
-# define FindTkVarName (*TkglueVptr->V_FindTkVarName)
-#endif
-
-#ifndef InterpHv
-# define InterpHv (*TkglueVptr->V_InterpHv)
-#endif
-
-#ifndef Lang_TkCommand
-# define Lang_TkCommand (*TkglueVptr->V_Lang_TkCommand)
-#endif
-
-#ifndef Lang_TkSubCommand
-# define Lang_TkSubCommand (*TkglueVptr->V_Lang_TkSubCommand)
-#endif
-
-#ifndef MakeReference
-# define MakeReference (*TkglueVptr->V_MakeReference)
-#endif
-
-#ifndef ObjectRef
-# define ObjectRef (*TkglueVptr->V_ObjectRef)
-#endif
-
-#ifndef SVtoFont
-# define SVtoFont (*TkglueVptr->V_SVtoFont)
-#endif
-
-#ifndef SVtoHWND
-# define SVtoHWND (*TkglueVptr->V_SVtoHWND)
-#endif
-
-#ifndef SVtoWindow
-# define SVtoWindow (*TkglueVptr->V_SVtoWindow)
-#endif
-
-#ifndef TkToMainWindow
-# define TkToMainWindow (*TkglueVptr->V_TkToMainWindow)
-#endif
-
-#ifndef TkToWidget
-# define TkToWidget (*TkglueVptr->V_TkToWidget)
-#endif
-
-#ifndef WidgetRef
-# define WidgetRef (*TkglueVptr->V_WidgetRef)
-#endif
-
-#ifndef WindowCommand
-# define WindowCommand (*TkglueVptr->V_WindowCommand)
-#endif
-
-#ifndef XSTkCommand
-# define XSTkCommand (*TkglueVptr->V_XSTkCommand)
-#endif
-
-#ifndef install_vtab
-# define install_vtab (*TkglueVptr->V_install_vtab)
-#endif
-
-#endif /* NO_VTABLES */
-#endif /* _TKGLUE_VM */
diff --git a/Master/tlpkg/tlperl/lib/Tk/tkGlue.t b/Master/tlpkg/tlperl/lib/Tk/tkGlue.t
deleted file mode 100644
index ff689ff5539..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/tkGlue.t
+++ /dev/null
@@ -1,70 +0,0 @@
-#ifdef _TKGLUE
-#ifndef Call_Tk
-VFUNC(int,Call_Tk,V_Call_Tk,_ANSI_ARGS_((Lang_CmdInfo *info,int argc, SV **args)))
-#endif /* #ifndef Call_Tk */
-
-#ifndef EnterWidgetMethods
-VFUNC(void,EnterWidgetMethods,V_EnterWidgetMethods,_ANSI_ARGS_((char *package, ...)))
-#endif /* #ifndef EnterWidgetMethods */
-
-#ifndef FindTkVarName
-VFUNC(SV *,FindTkVarName,V_FindTkVarName,_ANSI_ARGS_((CONST char *varName,int flags)))
-#endif /* #ifndef FindTkVarName */
-
-#ifndef InterpHv
-VFUNC(HV *,InterpHv,V_InterpHv,_ANSI_ARGS_((Tcl_Interp *interp,int fatal)))
-#endif /* #ifndef InterpHv */
-
-#ifndef Lang_TkCommand
-VFUNC(void,Lang_TkCommand,V_Lang_TkCommand,_ANSI_ARGS_((char *name, Tcl_ObjCmdProc *proc)))
-#endif /* #ifndef Lang_TkCommand */
-
-#ifndef Lang_TkSubCommand
-VFUNC(void,Lang_TkSubCommand,V_Lang_TkSubCommand,_ANSI_ARGS_((char *name, Tcl_ObjCmdProc *proc)))
-#endif /* #ifndef Lang_TkSubCommand */
-
-#ifndef MakeReference
-VFUNC(SV *,MakeReference,V_MakeReference,_ANSI_ARGS_((SV * sv)))
-#endif /* #ifndef MakeReference */
-
-#ifndef ObjectRef
-VFUNC(SV *,ObjectRef,V_ObjectRef,_ANSI_ARGS_((Tcl_Interp *interp, char *path)))
-#endif /* #ifndef ObjectRef */
-
-#ifndef SVtoFont
-VFUNC(Tk_Font,SVtoFont,V_SVtoFont,_ANSI_ARGS_((SV *win)))
-#endif /* #ifndef SVtoFont */
-
-#ifndef SVtoHWND
-VFUNC(HWND,SVtoHWND,V_SVtoHWND,_ANSI_ARGS_((SV *win)))
-#endif /* #ifndef SVtoHWND */
-
-#ifndef SVtoWindow
-VFUNC(Tk_Window,SVtoWindow,V_SVtoWindow,_ANSI_ARGS_((SV *win)))
-#endif /* #ifndef SVtoWindow */
-
-#ifndef TkToMainWindow
-VFUNC(Tk_Window,TkToMainWindow,V_TkToMainWindow,_ANSI_ARGS_((Tk_Window tkwin)))
-#endif /* #ifndef TkToMainWindow */
-
-#ifndef TkToWidget
-VFUNC(SV *,TkToWidget,V_TkToWidget,_ANSI_ARGS_((Tk_Window tkwin,Tcl_Interp **pinterp)))
-#endif /* #ifndef TkToWidget */
-
-#ifndef WidgetRef
-VFUNC(SV *,WidgetRef,V_WidgetRef,_ANSI_ARGS_((Tcl_Interp *interp, char *path)))
-#endif /* #ifndef WidgetRef */
-
-#ifndef WindowCommand
-VFUNC(Lang_CmdInfo *,WindowCommand,V_WindowCommand,_ANSI_ARGS_((SV *win,HV **hptr, int moan)))
-#endif /* #ifndef WindowCommand */
-
-#ifndef XSTkCommand
-VFUNC(int,XSTkCommand,V_XSTkCommand,_ANSI_ARGS_((CV *cv, int mwcd, Tcl_ObjCmdProc *proc, int items, SV **args)))
-#endif /* #ifndef XSTkCommand */
-
-#ifndef install_vtab
-VFUNC(void,install_vtab,V_install_vtab,_ANSI_ARGS_((char *name, void *table, size_t size)))
-#endif /* #ifndef install_vtab */
-
-#endif /* _TKGLUE */
diff --git a/Master/tlpkg/tlperl/lib/Tk/tkGlue_f.h b/Master/tlpkg/tlperl/lib/Tk/tkGlue_f.h
deleted file mode 100644
index 8255c08dc3f..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/tkGlue_f.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef TKGLUE_VT
-#define TKGLUE_VT
-typedef struct TkglueVtab
-{
- unsigned (*tabSize)(void);
-#define VFUNC(type,name,mem,args) type (*mem) args;
-#define VVAR(type,name,mem) type (*mem);
-#include "tkGlue.t"
-#undef VFUNC
-#undef VVAR
-} TkglueVtab;
-extern TkglueVtab *TkglueVptr;
-extern TkglueVtab *TkglueVGet(void);
-#endif /* TKGLUE_VT */
diff --git a/Master/tlpkg/tlperl/lib/Tk/tranicon.gif b/Master/tlpkg/tlperl/lib/Tk/tranicon.gif
deleted file mode 100644
index dc7d494c572..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/tranicon.gif
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/Tk/typemap b/Master/tlpkg/tlperl/lib/Tk/typemap
deleted file mode 100644
index 29138850ab3..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/typemap
+++ /dev/null
@@ -1,96 +0,0 @@
-TYPEMAP
-Tk_Window T_TK_WINDOW
-Tk_Image T_TK_IMAGE
-TkWindow * T_TKWINDOW
-Display * T_IVOBJ
-Screen * T_IVOBJ
-Visual * T_IVOBJ
-Window T_IVOBJ
-Colormap T_IVOBJ
-GC T_IVOBJ
-Font T_IVOBJ
-Atom T_IV
-HANDLE T_IV
-BOOL T_IV
-HWND T_TK_HWND
-FILE * T_NIO
-hash_ptr * T_PTR
-Tk_3DBorder T_IVOBJ
-Tk_Uid T_TK_UID
-Tcl_Interp * T_TK_INTERP
-Tk_Font T_TK_FONT
-EventAndKeySym * T_TK_XEVENT
-LangCallback * T_TK_CALLBACK
-LangFontInfo * T_PVOBJ
-const char * T_PV
-
-INPUT
-T_PVOBJ
- if (sv_isobject($arg)) {
- STRLEN sz;
- $var = ($type) SvPV((SV*)SvRV($arg),sz);
- if (sz != sizeof(*$var))
- croak(\"$arg too small (%d) for $var $type (%d)\",sz,sizeof(*$var));
- }
- else
- croak(\"$var is not an object\")
-
-T_TK_WINDOW
- $var = SVtoWindow($arg)
-
-T_TK_CALLBACK
- $var = LangMakeCallback($arg)
-
-
-T_TK_HWND
- $var = SVtoHWND($arg)
-
-T_TK_XEVENT
- $var = SVtoEventAndKeySym($arg)
-
-T_TK_FONT
- $var = SVtoFont($arg)
-
-T_TK_IMAGE
- $var = SVtoImage($arg)
-
-T_TKWINDOW
- $var = (TkWindow *) SVtoWindow($arg)
-
-T_TK_INTERP
- $var = WindowCommand($arg,NULL,1)->interp
-
-T_TK_UID
- $var = Tk_GetUid(SvPV($arg,na))
-
-T_IVOBJ
- if (sv_isa($arg, \"${ntype}\")) {
- $var = INT2PTR($type, SvIV(SvRV($arg)));
- }
- else {
- $var = ($type) NULL;
- croak(\"$var is not of type ${ntype}\");
- }
-
-T_NIO
- if (sv_isa($arg, \"${Package}\")) {
- $var = IoIFP(sv_2io(SvRV($arg)));
- }
- else
- croak(\"$var is not of type ${Package}\")
-
-
-OUTPUT
-T_IVOBJ
- sv_setref_iv($arg, \"${ntype}\", PTR2IV($var));
-
-T_TK_UID
- sv_setpv($arg,$var);
-
-T_TK_WINDOW
- SvSetMagicSV($arg,TkToWidget($var,NULL));
-
-T_TKWINDOW
- SvSetMagicSV($arg,TkToWidget((Tk_Window) $var,NULL));
-
-
diff --git a/Master/tlpkg/tlperl/lib/Tk/vtab.def b/Master/tlpkg/tlperl/lib/Tk/vtab.def
deleted file mode 100644
index 7663df7d6f4..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/vtab.def
+++ /dev/null
@@ -1,90 +0,0 @@
-#define IMPORT_VTABLE(ptr,type,name) do { \
- ptr = INT2PTR(type *,SvIV(get_sv(name,GV_ADDWARN|GV_ADD))); \
- if ((*ptr->tabSize)() != sizeof(type)) { \
- Perl_warn(aTHX_ "%s wrong size for %s",name,#type); \
- } \
- } while (0)
-
-#ifdef WIN32
-#define DECLARE_VTABLES \
-LangVtab *LangVptr; \
-TcldeclsVtab *TcldeclsVptr; \
-TkVtab *TkVptr; \
-TkdeclsVtab *TkdeclsVptr; \
-TkeventVtab *TkeventVptr; \
-TkglueVtab *TkglueVptr; \
-TkintVtab *TkintVptr; \
-TkintdeclsVtab *TkintdeclsVptr; \
-TkintplatdeclsVtab *TkintplatdeclsVptr;\
-TkintxlibdeclsVtab *TkintxlibdeclsVptr;\
-TkoptionVtab *TkoptionVptr; \
-TkplatdeclsVtab *TkplatdeclsVptr
-
-#define IMPORT_VTABLES do { \
-IMPORT_VTABLE(LangVptr , LangVtab,"Tk::LangVtab"); \
-IMPORT_VTABLE(TcldeclsVptr , TcldeclsVtab,"Tk::TcldeclsVtab"); \
-IMPORT_VTABLE(TkVptr , TkVtab,"Tk::TkVtab"); \
-IMPORT_VTABLE(TkdeclsVptr , TkdeclsVtab,"Tk::TkdeclsVtab"); \
-IMPORT_VTABLE(TkeventVptr , TkeventVtab,"Tk::TkeventVtab"); \
-IMPORT_VTABLE(TkglueVptr , TkglueVtab,"Tk::TkglueVtab"); \
-IMPORT_VTABLE(TkintVptr , TkintVtab,"Tk::TkintVtab"); \
-IMPORT_VTABLE(TkintdeclsVptr , TkintdeclsVtab,"Tk::TkintdeclsVtab"); \
-IMPORT_VTABLE(TkintplatdeclsVptr,TkintplatdeclsVtab,"Tk::TkintplatdeclsVtab"); \
-IMPORT_VTABLE(TkintxlibdeclsVptr,TkintxlibdeclsVtab,"Tk::TkintxlibdeclsVtab"); \
-IMPORT_VTABLE(TkoptionVptr , TkoptionVtab,"Tk::TkoptionVtab"); \
-IMPORT_VTABLE(TkplatdeclsVptr , TkplatdeclsVtab,"Tk::TkplatdeclsVtab"); \
-} while (0)
-#else
-#define DECLARE_VTABLES \
-LangVtab *LangVptr; \
-TcldeclsVtab *TcldeclsVptr; \
-TkVtab *TkVptr; \
-TkdeclsVtab *TkdeclsVptr; \
-TkeventVtab *TkeventVptr; \
-TkglueVtab *TkglueVptr; \
-TkintVtab *TkintVptr; \
-TkintdeclsVtab *TkintdeclsVptr; \
-TkoptionVtab *TkoptionVptr; \
-XlibVtab *XlibVptr
-
-#define IMPORT_VTABLES do { \
-IMPORT_VTABLE(LangVptr , LangVtab,"Tk::LangVtab"); \
-IMPORT_VTABLE(TcldeclsVptr , TcldeclsVtab,"Tk::TcldeclsVtab"); \
-IMPORT_VTABLE(TkVptr , TkVtab,"Tk::TkVtab"); \
-IMPORT_VTABLE(TkdeclsVptr , TkdeclsVtab,"Tk::TkdeclsVtab"); \
-IMPORT_VTABLE(TkeventVptr , TkeventVtab,"Tk::TkeventVtab"); \
-IMPORT_VTABLE(TkglueVptr , TkglueVtab,"Tk::TkglueVtab"); \
-IMPORT_VTABLE(TkintVptr , TkintVtab,"Tk::TkintVtab"); \
-IMPORT_VTABLE(TkintdeclsVptr , TkintdeclsVtab,"Tk::TkintdeclsVtab"); \
-IMPORT_VTABLE(TkoptionVptr , TkoptionVtab,"Tk::TkoptionVtab"); \
-IMPORT_VTABLE(XlibVptr , XlibVtab,"Tk::XlibVtab"); \
-} while (0)
-#endif
-#define DECLARE_TIX \
-TixVtab *TixVptr; \
-TixintVtab *TixintVptr
-
-#define IMPORT_TIX do { \
-IMPORT_VTABLE(TixVptr , TixVtab,"Tk::TixVtab"); \
-IMPORT_VTABLE(TixintVptr , TixintVtab,"Tk::TixintVtab"); \
-} while (0)
-#define DECLARE_PHOTO \
-ImgintVtab *ImgintVptr; \
-TkimgphotoVtab *TkimgphotoVptr
-
-#define IMPORT_PHOTO do { \
-IMPORT_VTABLE(ImgintVptr , ImgintVtab,"Tk::ImgintVtab"); \
-IMPORT_VTABLE(TkimgphotoVptr , TkimgphotoVtab,"Tk::TkimgphotoVtab"); \
-} while (0)
-#define DECLARE_EVENT \
-TkeventVtab *TkeventVptr
-
-#define IMPORT_EVENT do { \
-IMPORT_VTABLE(TkeventVptr , TkeventVtab,"Tk::TkeventVtab"); \
-} while (0)
-#define DECLARE_TIXXPM \
-TiximgxpmVtab *TiximgxpmVptr
-
-#define IMPORT_TIXXPM do { \
-IMPORT_VTABLE(TiximgxpmVptr , TiximgxpmVtab,"Tk::TiximgxpmVtab"); \
-} while (0)
diff --git a/Master/tlpkg/tlperl/lib/Tk/widgets.pm b/Master/tlpkg/tlperl/lib/Tk/widgets.pm
deleted file mode 100644
index 0d628027810..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/widgets.pm
+++ /dev/null
@@ -1,21 +0,0 @@
-package Tk::widgets;
-use Carp;
-
-use vars qw($VERSION);
-$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/widgets.pm#4 $
-
-sub import
-{
- my $class = shift;
- foreach (@_)
- {
- local $SIG{__DIE__} = \&Carp::croak;
- # carp "$_ already loaded" if (exists $INC{"Tk/$_.pm"});
- require "Tk/$_.pm";
- }
-}
-
-1;
-__END__
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Tk/win.xbm b/Master/tlpkg/tlperl/lib/Tk/win.xbm
deleted file mode 100644
index 13c05e8c2d7..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/win.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define win.xbm_width 16
-#define win.xbm_height 16
-static char win.xbm_bits[] = {
- 0xff, 0xff, 0x0d, 0xb0, 0xff, 0xff, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80,
- 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80,
- 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xff, 0xff};
diff --git a/Master/tlpkg/tlperl/lib/Tk/winfolder.xpm b/Master/tlpkg/tlperl/lib/Tk/winfolder.xpm
deleted file mode 100644
index 73fe734c6d0..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/winfolder.xpm
+++ /dev/null
@@ -1,39 +0,0 @@
-/* XPM */
-static char *winfolder[] = {
-/* width height num_colors chars_per_pixel */
-" 17 15 17 1",
-/* colors */
-" c none",
-". c #000000",
-"# c #808080",
-"a c #800000",
-"b c #808000",
-"c c #008000",
-"d c #008080",
-"e c #000080",
-"f c #800080",
-"g c #ffffff",
-"h c #c0c0c0",
-"i c #ff0000",
-"j c #ffff00",
-"k c #00ff00",
-"l c #00ffff",
-"m c #0000ff",
-"n c #ff00ff",
-/* pixels */
-" ",
-" ##### ",
-" #hjhjh# ",
-" #hjhjhjh###### ",
-" #gggggggggggg#. ",
-" #gjhjhjhjhjhj#. ",
-" #ghjhjhjhjhjh#. ",
-" #gjhjhjhjhjhj#. ",
-" #ghjhjhjhjhjh#. ",
-" #gjhjhjhjhjhj#. ",
-" #ghjhjhjhjhjh#. ",
-" #gjhjhjhjhjhj#. ",
-" ##############. ",
-" .............. ",
-" ",
-};
diff --git a/Master/tlpkg/tlperl/lib/Tk/wintext.xpm b/Master/tlpkg/tlperl/lib/Tk/wintext.xpm
deleted file mode 100644
index 50b2d5587dd..00000000000
--- a/Master/tlpkg/tlperl/lib/Tk/wintext.xpm
+++ /dev/null
@@ -1,42 +0,0 @@
-/* XPM */
-static char *wintext[] = {
-/* width height num_colors chars_per_pixel */
-" 15 18 17 1",
-/* colors */
-" c None",
-". c #000000",
-"# c #808080",
-"a c #800000",
-"b c #808000",
-"c c #008000",
-"d c #008080",
-"e c #000080",
-"f c #800080",
-"g c #ffffff",
-"h c #c0c0c0",
-"i c #ff0000",
-"j c #ffff00",
-"k c #00ff00",
-"l c #00ffff",
-"m c #0000ff",
-"n c #ff00ff",
-/* pixels */
-" ",
-" . . . . . ",
-" .g#g#g#g#g. ",
-" #g.g.g.g.g.g. ",
-" #ggggggggggh. ",
-" #ggggggggggh. ",
-" #gg...g..ggh. ",
-" #ggggggggggh. ",
-" #gg......ggh. ",
-" #ggggggggggh. ",
-" #gg......ggh. ",
-" #ggggggggggh. ",
-" #gg......ggh. ",
-" #ggggggggggh. ",
-" #ggggggggggh. ",
-" #hhhhhhhhhhh. ",
-" ........... ",
-" "
-};
diff --git a/Master/tlpkg/tlperl/lib/UNIVERSAL.pm b/Master/tlpkg/tlperl/lib/UNIVERSAL.pm
deleted file mode 100644
index 7b7bfc4058a..00000000000
--- a/Master/tlpkg/tlperl/lib/UNIVERSAL.pm
+++ /dev/null
@@ -1,147 +0,0 @@
-package UNIVERSAL;
-
-our $VERSION = '1.01';
-
-# UNIVERSAL should not contain any extra subs/methods beyond those
-# that it exists to define. The use of Exporter below is a historical
-# accident that can't be fixed without breaking code. Note that we
-# *don't* set @ISA here, don't want all classes/objects inheriting from
-# Exporter. It's bad enough that all classes have a import() method
-# whenever UNIVERSAL.pm is loaded.
-require Exporter;
-*import = \&Exporter::import;
-@EXPORT_OK = qw(isa can VERSION);
-
-1;
-__END__
-
-=head1 NAME
-
-UNIVERSAL - base class for ALL classes (blessed references)
-
-=head1 SYNOPSIS
-
- $is_io = $fd->isa("IO::Handle");
- $is_io = Class->isa("IO::Handle");
-
- $sub = $obj->can("print");
- $sub = Class->can("print");
-
- use UNIVERSAL qw( isa can VERSION );
- $yes = isa $ref, "HASH" ;
- $sub = can $ref, "fandango" ;
- $ver = VERSION $obj ;
-
-=head1 DESCRIPTION
-
-C<UNIVERSAL> is the base class which all bless references will inherit from,
-see L<perlobj>.
-
-C<UNIVERSAL> provides the following methods and functions:
-
-=over 4
-
-=item C<< $obj->isa( TYPE ) >>
-
-=item C<< CLASS->isa( TYPE ) >>
-
-=item C<isa( VAL, TYPE )>
-
-Where
-
-=over 4
-
-=item C<TYPE>
-
-is a package name
-
-=item C<$obj>
-
-is a blessed reference or a string containing a package name
-
-=item C<CLASS>
-
-is a package name
-
-=item C<VAL>
-
-is any of the above or an unblessed reference
-
-=back
-
-When used as an instance or class method (C<< $obj->isa( TYPE ) >>),
-C<isa> returns I<true> if $obj is blessed into package C<TYPE> or
-inherits from package C<TYPE>.
-
-When used as a class method (C<< CLASS->isa( TYPE ) >>: sometimes
-referred to as a static method), C<isa> returns I<true> if C<CLASS>
-inherits from (or is itself) the name of the package C<TYPE> or
-inherits from package C<TYPE>.
-
-When used as a function, like
-
- use UNIVERSAL qw( isa ) ;
- $yes = isa $h, "HASH";
- $yes = isa "Foo", "Bar";
-
-or
-
- require UNIVERSAL ;
- $yes = UNIVERSAL::isa $a, "ARRAY";
-
-C<isa> returns I<true> in the same cases as above and also if C<VAL> is an
-unblessed reference to a perl variable of type C<TYPE>, such as "HASH",
-"ARRAY", or "Regexp".
-
-=item C<< $obj->can( METHOD ) >>
-
-=item C<< CLASS->can( METHOD ) >>
-
-=item C<can( VAL, METHOD )>
-
-C<can> checks if the object or class has a method called C<METHOD>. If it does
-then a reference to the sub is returned. If it does not then I<undef> is
-returned. This includes methods inherited or imported by C<$obj>, C<CLASS>, or
-C<VAL>.
-
-C<can> cannot know whether an object will be able to provide a method
-through AUTOLOAD, so a return value of I<undef> does not necessarily mean
-the object will not be able to handle the method call. To get around
-this some module authors use a forward declaration (see L<perlsub>)
-for methods they will handle via AUTOLOAD. For such 'dummy' subs, C<can>
-will still return a code reference, which, when called, will fall through
-to the AUTOLOAD. If no suitable AUTOLOAD is provided, calling the coderef
-will cause an error.
-
-C<can> can be called as a class (static) method, an object method, or a
-function.
-
-When used as a function, if C<VAL> is a blessed reference or package name which
-has a method called C<METHOD>, C<can> returns a reference to the subroutine.
-If C<VAL> is not a blessed reference, or if it does not have a method
-C<METHOD>, I<undef> is returned.
-
-=item C<VERSION ( [ REQUIRE ] )>
-
-C<VERSION> will return the value of the variable C<$VERSION> in the
-package the object is blessed into. If C<REQUIRE> is given then
-it will do a comparison and die if the package version is not
-greater than or equal to C<REQUIRE>.
-
-C<VERSION> can be called as either a class (static) method, an object
-method or a function.
-
-
-=back
-
-=head1 EXPORTS
-
-None by default.
-
-You may request the import of all three functions (C<isa>, C<can>, and
-C<VERSION>), however it isn't usually necessary to do so. Perl magically
-makes these functions act as methods on all objects. The one exception is
-C<isa>, which is useful as a function when operating on non-blessed
-references.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Win32.pm b/Master/tlpkg/tlperl/lib/Win32.pm
deleted file mode 100644
index e55bfee4dfe..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32.pm
+++ /dev/null
@@ -1,712 +0,0 @@
-package Win32;
-
-BEGIN {
- use strict;
- use vars qw|$VERSION @ISA @EXPORT @EXPORT_OK|;
-
- require Exporter;
- require DynaLoader;
-
- @ISA = qw|Exporter DynaLoader|;
- $VERSION = '0.2601';
-
- @EXPORT = qw(
- NULL
- WIN31_CLASS
- OWNER_SECURITY_INFORMATION
- GROUP_SECURITY_INFORMATION
- DACL_SECURITY_INFORMATION
- SACL_SECURITY_INFORMATION
- MB_ICONHAND
- MB_ICONQUESTION
- MB_ICONEXCLAMATION
- MB_ICONASTERISK
- MB_ICONWARNING
- MB_ICONERROR
- MB_ICONINFORMATION
- MB_ICONSTOP
- );
- @EXPORT_OK = qw(
- GetOSName
- SW_HIDE
- SW_SHOWNORMAL
- SW_SHOWMINIMIZED
- SW_SHOWMAXIMIZED
- SW_SHOWNOACTIVATE
-
- CSIDL_DESKTOP
- CSIDL_PROGRAMS
- CSIDL_PERSONAL
- CSIDL_FAVORITES
- CSIDL_STARTUP
- CSIDL_RECENT
- CSIDL_SENDTO
- CSIDL_STARTMENU
- CSIDL_MYMUSIC
- CSIDL_MYVIDEO
- CSIDL_DESKTOPDIRECTORY
- CSIDL_NETHOOD
- CSIDL_FONTS
- CSIDL_TEMPLATES
- CSIDL_COMMON_STARTMENU
- CSIDL_COMMON_PROGRAMS
- CSIDL_COMMON_STARTUP
- CSIDL_COMMON_DESKTOPDIRECTORY
- CSIDL_APPDATA
- CSIDL_PRINTHOOD
- CSIDL_LOCAL_APPDATA
- CSIDL_COMMON_FAVORITES
- CSIDL_INTERNET_CACHE
- CSIDL_COOKIES
- CSIDL_HISTORY
- CSIDL_COMMON_APPDATA
- CSIDL_WINDOWS
- CSIDL_SYSTEM
- CSIDL_PROGRAM_FILES
- CSIDL_MYPICTURES
- CSIDL_PROFILE
- CSIDL_PROGRAM_FILES_COMMON
- CSIDL_COMMON_TEMPLATES
- CSIDL_COMMON_DOCUMENTS
- CSIDL_COMMON_ADMINTOOLS
- CSIDL_ADMINTOOLS
- CSIDL_COMMON_MUSIC
- CSIDL_COMMON_PICTURES
- CSIDL_COMMON_VIDEO
- CSIDL_RESOURCES
- CSIDL_RESOURCES_LOCALIZED
- CSIDL_CDBURN_AREA
- );
-}
-
-# Routines available in core:
-# Win32::GetLastError
-# Win32::LoginName
-# Win32::NodeName
-# Win32::DomainName
-# Win32::FsType
-# Win32::GetCwd
-# Win32::GetOSVersion
-# Win32::FormatMessage ERRORCODE
-# Win32::Spawn COMMAND, ARGS, PID
-# Win32::GetTickCount
-# Win32::IsWinNT
-# Win32::IsWin95
-
-# We won't bother with the constant stuff, too much of a hassle. Just hard
-# code it here.
-
-sub NULL { 0 }
-sub WIN31_CLASS { &NULL }
-
-sub OWNER_SECURITY_INFORMATION { 0x00000001 }
-sub GROUP_SECURITY_INFORMATION { 0x00000002 }
-sub DACL_SECURITY_INFORMATION { 0x00000004 }
-sub SACL_SECURITY_INFORMATION { 0x00000008 }
-
-sub MB_ICONHAND { 0x00000010 }
-sub MB_ICONQUESTION { 0x00000020 }
-sub MB_ICONEXCLAMATION { 0x00000030 }
-sub MB_ICONASTERISK { 0x00000040 }
-sub MB_ICONWARNING { 0x00000030 }
-sub MB_ICONERROR { 0x00000010 }
-sub MB_ICONINFORMATION { 0x00000040 }
-sub MB_ICONSTOP { 0x00000010 }
-
-#
-# Newly added constants. These have an empty prototype, unlike the
-# the ones above, which aren't prototyped for compatibility reasons.
-#
-sub SW_HIDE () { 0 }
-sub SW_SHOWNORMAL () { 1 }
-sub SW_SHOWMINIMIZED () { 2 }
-sub SW_SHOWMAXIMIZED () { 3 }
-sub SW_SHOWNOACTIVATE () { 4 }
-
-sub CSIDL_DESKTOP () { 0x0000 } # <desktop>
-sub CSIDL_PROGRAMS () { 0x0002 } # Start Menu\Programs
-sub CSIDL_PERSONAL () { 0x0005 } # "My Documents" folder
-sub CSIDL_FAVORITES () { 0x0006 } # <user name>\Favorites
-sub CSIDL_STARTUP () { 0x0007 } # Start Menu\Programs\Startup
-sub CSIDL_RECENT () { 0x0008 } # <user name>\Recent
-sub CSIDL_SENDTO () { 0x0009 } # <user name>\SendTo
-sub CSIDL_STARTMENU () { 0x000B } # <user name>\Start Menu
-sub CSIDL_MYMUSIC () { 0x000D } # "My Music" folder
-sub CSIDL_MYVIDEO () { 0x000E } # "My Videos" folder
-sub CSIDL_DESKTOPDIRECTORY () { 0x0010 } # <user name>\Desktop
-sub CSIDL_NETHOOD () { 0x0013 } # <user name>\nethood
-sub CSIDL_FONTS () { 0x0014 } # windows\fonts
-sub CSIDL_TEMPLATES () { 0x0015 }
-sub CSIDL_COMMON_STARTMENU () { 0x0016 } # All Users\Start Menu
-sub CSIDL_COMMON_PROGRAMS () { 0x0017 } # All Users\Start Menu\Programs
-sub CSIDL_COMMON_STARTUP () { 0x0018 } # All Users\Startup
-sub CSIDL_COMMON_DESKTOPDIRECTORY () { 0x0019 } # All Users\Desktop
-sub CSIDL_APPDATA () { 0x001A } # Application Data, new for NT4
-sub CSIDL_PRINTHOOD () { 0x001B } # <user name>\PrintHood
-sub CSIDL_LOCAL_APPDATA () { 0x001C } # non roaming, user\Local Settings\Application Data
-sub CSIDL_COMMON_FAVORITES () { 0x001F }
-sub CSIDL_INTERNET_CACHE () { 0x0020 }
-sub CSIDL_COOKIES () { 0x0021 }
-sub CSIDL_HISTORY () { 0x0022 }
-sub CSIDL_COMMON_APPDATA () { 0x0023 } # All Users\Application Data
-sub CSIDL_WINDOWS () { 0x0024 } # GetWindowsDirectory()
-sub CSIDL_SYSTEM () { 0x0025 } # GetSystemDirectory()
-sub CSIDL_PROGRAM_FILES () { 0x0026 } # C:\Program Files
-sub CSIDL_MYPICTURES () { 0x0027 } # "My Pictures", new for Win2K
-sub CSIDL_PROFILE () { 0x0028 } # USERPROFILE
-sub CSIDL_PROGRAM_FILES_COMMON () { 0x002B } # C:\Program Files\Common
-sub CSIDL_COMMON_TEMPLATES () { 0x002D } # All Users\Templates
-sub CSIDL_COMMON_DOCUMENTS () { 0x002E } # All Users\Documents
-sub CSIDL_COMMON_ADMINTOOLS () { 0x002F } # All Users\Start Menu\Programs\Administrative Tools
-sub CSIDL_ADMINTOOLS () { 0x0030 } # <user name>\Start Menu\Programs\Administrative Tools
-sub CSIDL_COMMON_MUSIC () { 0x0035 } # All Users\My Music
-sub CSIDL_COMMON_PICTURES () { 0x0036 } # All Users\My Pictures
-sub CSIDL_COMMON_VIDEO () { 0x0037 } # All Users\My Video
-sub CSIDL_RESOURCES () { 0x0038 } # %windir%\Resources\, For theme and other windows resources.
-sub CSIDL_RESOURCES_LOCALIZED () { 0x0039 } # %windir%\Resources\<LangID>, for theme and other windows specific resources.
-sub CSIDL_CDBURN_AREA () { 0x003B } # <user name>\Local Settings\Application Data\Microsoft\CD Burning
-
-### This method is just a simple interface into GetOSVersion(). More
-### specific or demanding situations should use that instead.
-
-my ($found_os, $found_desc);
-
-sub GetOSName {
- my ($os,$desc,$major, $minor, $build, $id)=("","");
- unless (defined $found_os) {
- # If we have a run this already, we have the results cached
- # If so, return them
-
- # Use the standard API call to determine the version
- ($desc, $major, $minor, $build, $id) = Win32::GetOSVersion();
-
- # If id==0 then its a win32s box -- Meaning Win3.11
- unless($id) {
- $os = 'Win32s';
- }
- else {
- # Magic numbers from MSDN documentation of OSVERSIONINFO
- # Most version names can be parsed from just the id and minor
- # version
- $os = {
- 1 => {
- 0 => "95",
- 10 => "98",
- 90 => "Me"
- },
- 2 => {
- 0 => "NT4",
- 1 => "XP/.Net",
- 2 => "2003",
- 51 => "NT3.51"
- }
- }->{$id}->{$minor};
- }
-
- # This _really_ shouldnt happen. At least not for quite a while
- # Politely warn and return undef
- unless (defined $os) {
- warn qq[Windows version [$id:$major:$minor] unknown!];
- return undef;
- }
-
- my $tag = "";
-
- # But distinguising W2k and Vista from NT4 requires looking at the major version
- if ($os eq "NT4") {
- $os = {5 => "2000", 6 => "Vista"}->{$major} || "NT4";
- }
-
- # For the rest we take a look at the build numbers and try to deduce
- # the exact release name, but we put that in the $desc
- elsif ($os eq "95") {
- if ($build eq '67109814') {
- $tag = '(a)';
- }
- elsif ($build eq '67306684') {
- $tag = '(b1)';
- }
- elsif ($build eq '67109975') {
- $tag = '(b2)';
- }
- }
- elsif ($os eq "98" && $build eq '67766446') {
- $tag = '(2nd ed)';
- }
-
- if (length $tag) {
- if (length $desc) {
- $desc = "$tag $desc";
- }
- else {
- $desc = $tag;
- }
- }
-
- # cache the results, so we dont have to do this again
- $found_os = "Win$os";
- $found_desc = $desc;
- }
-
- return wantarray ? ($found_os, $found_desc) : $found_os;
-}
-
-bootstrap Win32;
-
-1;
-
-__END__
-
-=head1 NAME
-
-Win32 - Interfaces to some Win32 API Functions
-
-=head1 DESCRIPTION
-
-Perl on Win32 contains several functions to access Win32 APIs. Some
-are included in Perl itself (on Win32) and some are only available
-after explicitly requesting the Win32 module with:
-
- use Win32;
-
-The builtin functions are marked as [CORE] and the other ones
-as [EXT] in the following alphabetical listing.
-
-=head2 Alphabetical Listing of Win32 Functions
-
-=over
-
-=item Win32::AbortSystemShutdown(MACHINE)
-
-[EXT] Aborts a system shutdown (started by the
-InitiateSystemShutdown function) on the specified MACHINE.
-
-=item Win32::BuildNumber()
-
-[CORE] Returns the ActivePerl build number. This function is
-only available in the ActivePerl binary distribution.
-
-=item Win32::CopyFile(FROM, TO, OVERWRITE)
-
-[CORE] The Win32::CopyFile() function copies an existing file to a new
-file. All file information like creation time and file attributes will
-be copied to the new file. However it will B<not> copy the security
-information. If the destination file already exists it will only be
-overwritten when the OVERWRITE parameter is true. But even this will
-not overwrite a read-only file; you have to unlink() it first
-yourself.
-
-=item Win32::DomainName()
-
-[CORE] Returns the name of the Microsoft Network domain that the
-owner of the current perl process is logged into. This function does
-B<not> work on Windows 9x.
-
-=item Win32::ExpandEnvironmentStrings(STRING)
-
-[EXT] Takes STRING and replaces all referenced environment variable
-names with their defined values. References to environment variables
-take the form C<%VariableName%>. Case is ignored when looking up the
-VariableName in the environment. If the variable is not found then the
-original C<%VariableName%> text is retained. Has the same effect
-as the following:
-
- $string =~ s/%([^%]*)%/$ENV{$1} || "%$1%"/eg
-
-=item Win32::FormatMessage(ERRORCODE)
-
-[CORE] Converts the supplied Win32 error number (e.g. returned by
-Win32::GetLastError()) to a descriptive string. Analogous to the
-perror() standard-C library function. Note that C<$^E> used
-in a string context has much the same effect.
-
- C:\> perl -e "$^E = 26; print $^E;"
- The specified disk or diskette cannot be accessed
-
-=item Win32::FsType()
-
-[CORE] Returns the name of the filesystem of the currently active
-drive (like 'FAT' or 'NTFS'). In list context it returns three values:
-(FSTYPE, FLAGS, MAXCOMPLEN). FSTYPE is the filesystem type as
-before. FLAGS is a combination of values of the following table:
-
- 0x00000001 supports case-sensitive filenames
- 0x00000002 preserves the case of filenames
- 0x00000004 supports Unicode in filenames
- 0x00000008 preserves and enforces ACLs
- 0x00000010 supports file-based compression
- 0x00000020 supports disk quotas
- 0x00000040 supports sparse files
- 0x00000080 supports reparse points
- 0x00000100 supports remote storage
- 0x00008000 is a compressed volume (e.g. DoubleSpace)
- 0x00010000 supports object identifiers
- 0x00020000 supports the Encrypted File System (EFS)
-
-MAXCOMPLEN is the maximum length of a filename component (the part
-between two backslashes) on this file system.
-
-=item Win32::FreeLibrary(HANDLE)
-
-[EXT] Unloads a previously loaded dynamic-link library. The HANDLE is
-no longer valid after this call. See L<LoadLibrary|Win32::LoadLibrary(LIBNAME)>
-for information on dynamically loading a library.
-
-=item Win32::GetArchName()
-
-[EXT] Use of this function is deprecated. It is equivalent with
-$ENV{PROCESSOR_ARCHITECTURE}. This might not work on Win9X.
-
-=item Win32::GetChipName()
-
-[EXT] Returns the processor type: 386, 486 or 586 for Intel processors,
-21064 for the Alpha chip.
-
-=item Win32::GetCwd()
-
-[CORE] Returns the current active drive and directory. This function
-does not return a UNC path, since the functionality required for such
-a feature is not available under Windows 95.
-
-=item Win32::GetFileVersion(FILENAME)
-
-[EXT] Returns the file version number from the VERSIONINFO resource of
-the executable file or DLL. This is a tuple of four 16 bit numbers.
-In list context these four numbers will be returned. In scalar context
-they are concatenated into a string, separated by dots.
-
-=item Win32::GetFolderPath(FOLDER [, CREATE])
-
-[EXT] Returns the full pathname of one of the Windows special folders.
-The folder will be created if it doesn't exist and the optional CREATE
-argument is true. The following FOLDER constants are defined by the
-Win32 module, but only exported on demand:
-
- CSIDL_ADMINTOOLS
- CSIDL_APPDATA
- CSIDL_CDBURN_AREA
- CSIDL_COMMON_ADMINTOOLS
- CSIDL_COMMON_APPDATA
- CSIDL_COMMON_DESKTOPDIRECTORY
- CSIDL_COMMON_DOCUMENTS
- CSIDL_COMMON_FAVORITES
- CSIDL_COMMON_MUSIC
- CSIDL_COMMON_PICTURES
- CSIDL_COMMON_PROGRAMS
- CSIDL_COMMON_STARTMENU
- CSIDL_COMMON_STARTUP
- CSIDL_COMMON_TEMPLATES
- CSIDL_COMMON_VIDEO
- CSIDL_COOKIES
- CSIDL_DESKTOP
- CSIDL_DESKTOPDIRECTORY
- CSIDL_FAVORITES
- CSIDL_FONTS
- CSIDL_HISTORY
- CSIDL_INTERNET_CACHE
- CSIDL_LOCAL_APPDATA
- CSIDL_MYMUSIC
- CSIDL_MYPICTURES
- CSIDL_MYVIDEO
- CSIDL_NETHOOD
- CSIDL_PERSONAL
- CSIDL_PRINTHOOD
- CSIDL_PROFILE
- CSIDL_PROGRAMS
- CSIDL_PROGRAM_FILES
- CSIDL_PROGRAM_FILES_COMMON
- CSIDL_RECENT
- CSIDL_RESOURCES
- CSIDL_RESOURCES_LOCALIZED
- CSIDL_SENDTO
- CSIDL_STARTMENU
- CSIDL_STARTUP
- CSIDL_SYSTEM
- CSIDL_TEMPLATES
- CSIDL_WINDOWS
-
-Note that not all folders are defined on all versions of Windows.
-
-Please refer to the MSDN documentation of the CSIDL constants,
-currently available at:
-
-http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp
-
-=item Win32::GetFullPathName(FILENAME)
-
-[CORE] GetFullPathName combines the FILENAME with the current drive
-and directory name and returns a fully qualified (aka, absolute)
-path name. In list context it returns two elements: (PATH, FILE) where
-PATH is the complete pathname component (including trailing backslash)
-and FILE is just the filename part. Note that no attempt is made to
-convert 8.3 components in the supplied FILENAME to longnames or
-vice-versa. Compare with Win32::GetShortPathName and
-Win32::GetLongPathName.
-
-=item Win32::GetLastError()
-
-[CORE] Returns the last error value generated by a call to a Win32 API
-function. Note that C<$^E> used in a numeric context amounts to the
-same value.
-
-=item Win32::GetLongPathName(PATHNAME)
-
-[CORE] Returns a representation of PATHNAME composed of longname
-components (if any). The result may not necessarily be longer
-than PATHNAME. No attempt is made to convert PATHNAME to the
-absolute path. Compare with Win32::GetShortPathName and
-Win32::GetFullPathName.
-
-=item Win32::GetNextAvailDrive()
-
-[CORE] Returns a string in the form of "<d>:" where <d> is the first
-available drive letter.
-
-=item Win32::GetOSVersion()
-
-[CORE] Returns the list (STRING, MAJOR, MINOR, BUILD, ID), where the
-elements are, respectively: An arbitrary descriptive string, the major
-version number of the operating system, the minor version number, the
-build number, and a digit indicating the actual operating system.
-For the ID, the values are 0 for Win32s, 1 for Windows 9X/Me and 2 for
-Windows NT/2000/XP/2003. In scalar context it returns just the ID.
-
-Currently known values for ID MAJOR and MINOR are as follows:
-
- OS ID MAJOR MINOR
- Win32s 0 - -
- Windows 95 1 4 0
- Windows 98 1 4 10
- Windows Me 1 4 90
- Windows NT 3.51 2 3 51
- Windows NT 4 2 4 0
- Windows 2000 2 5 0
- Windows XP 2 5 1
- Windows Server 2003 2 5 2
- Windows Vista 2 6 0
-
-On Windows NT 4 SP6 and later this function returns the following
-additional values: SPMAJOR, SPMINOR, SUITEMASK, PRODUCTTYPE.
-
-SPMAJOR and SPMINOR are are the version numbers of the latest
-installed service pack.
-
-SUITEMASK is a bitfield identifying the product suites available on
-the system. Known bits are:
-
- VER_SUITE_SMALLBUSINESS 0x00000001
- VER_SUITE_ENTERPRISE 0x00000002
- VER_SUITE_BACKOFFICE 0x00000004
- VER_SUITE_COMMUNICATIONS 0x00000008
- VER_SUITE_TERMINAL 0x00000010
- VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020
- VER_SUITE_EMBEDDEDNT 0x00000040
- VER_SUITE_DATACENTER 0x00000080
- VER_SUITE_SINGLEUSERTS 0x00000100
- VER_SUITE_PERSONAL 0x00000200
- VER_SUITE_BLADE 0x00000400
- VER_SUITE_EMBEDDED_RESTRICTED 0x00000800
- VER_SUITE_SECURITY_APPLIANCE 0x00001000
-
-The VER_SUITE_xxx names are listed here to crossreference the Microsoft
-documentation. The Win32 module does not provide symbolic names for these
-constants.
-
-PRODUCTTYPE provides additional information about the system. It should
-be one of the following integer values:
-
- 1 - Workstation (NT 4, 2000 Pro, XP Home, XP Pro)
- 2 - Domaincontroller
- 3 - Server
-
-=item Win32::GetOSName()
-
-[EXT] In scalar context returns the name of the Win32 operating system
-being used. In list context returns a two element list of the OS name
-and whatever edition information is known about the particular build
-(for Win9X boxes) and whatever service packs have been installed.
-The latter is roughly equivalent to the first item returned by
-GetOSVersion() in list context.
-
-Currently the possible values for the OS name are
-
- Win32s Win95 Win98 WinMe WinNT3.51 WinNT4 Win2000 WinXP/.Net Win2003
-
-This routine is just a simple interface into GetOSVersion(). More
-specific or demanding situations should use that instead. Another
-option would be to use POSIX::uname(), however the latter appears to
-report only the OS family name and not the specific OS. In scalar
-context it returns just the ID.
-
-The name "WinXP/.Net" is used for historical reasons only, to maintain
-backwards compatibility of the Win32 module. Windows .NET Server has
-been renamed as Windows 2003 Server before final release and uses a
-different major/minor version number than Windows XP.
-
-=item Win32::GetShortPathName(PATHNAME)
-
-[CORE] Returns a representation of PATHNAME that is composed of short
-(8.3) path components where available. For path components where the
-file system has not generated the short form the returned path will
-use the long form, so this function might still for instance return a
-path containing spaces. Compare with Win32::GetFullPathName and
-Win32::GetLongPathName.
-
-=item Win32::GetProcAddress(INSTANCE, PROCNAME)
-
-[EXT] Returns the address of a function inside a loaded library. The
-information about what you can do with this address has been lost in
-the mist of time. Use the Win32::API module instead of this deprecated
-function.
-
-=item Win32::GetTickCount()
-
-[CORE] Returns the number of milliseconds elapsed since the last
-system boot. Resolution is limited to system timer ticks (about 10ms
-on WinNT and 55ms on Win9X).
-
-=item Win32::GuidGen()
-
-[EXT] Creates a globally unique 128 bit integer that can be used as a
-persistent identifier in a distributed setting. To a very high degree
-of certainty this function returns a unique value. No other
-invocation, on the same or any other system (networked or not), should
-return the same value.
-
-The return value is formatted according to OLE conventions, as groups
-of hex digits with surrounding braces. For example:
-
- {09531CF1-D0C7-4860-840C-1C8C8735E2AD}
-
-=item Win32::InitiateSystemShutdown
-
-(MACHINE, MESSAGE, TIMEOUT, FORCECLOSE, REBOOT)
-
-[EXT] Shutsdown the specified MACHINE, notifying users with the
-supplied MESSAGE, within the specified TIMEOUT interval. Forces
-closing of all documents without prompting the user if FORCECLOSE is
-true, and reboots the machine if REBOOT is true. This function works
-only on WinNT.
-
-=item Win32::IsAdminUser()
-
-[EXT] Returns non zero if the account in whose security context the
-current process/thread is running belongs to the local group of
-Administrators in the built-in system domain; returns 0 if not.
-Returns the undefined value and prints a warning if an error occurred.
-This function always returns 1 on Win9X.
-
-=item Win32::IsWinNT()
-
-[CORE] Returns non zero if the Win32 subsystem is Windows NT.
-
-=item Win32::IsWin95()
-
-[CORE] Returns non zero if the Win32 subsystem is Windows 95.
-
-=item Win32::LoadLibrary(LIBNAME)
-
-[EXT] Loads a dynamic link library into memory and returns its module
-handle. This handle can be used with Win32::GetProcAddress and
-Win32::FreeLibrary. This function is deprecated. Use the Win32::API
-module instead.
-
-=item Win32::LoginName()
-
-[CORE] Returns the username of the owner of the current perl process.
-
-=item Win32::LookupAccountName(SYSTEM, ACCOUNT, DOMAIN, SID, SIDTYPE)
-
-[EXT] Looks up ACCOUNT on SYSTEM and returns the domain name the SID and
-the SID type.
-
-=item Win32::LookupAccountSID(SYSTEM, SID, ACCOUNT, DOMAIN, SIDTYPE)
-
-[EXT] Looks up SID on SYSTEM and returns the account name, domain name,
-and the SID type.
-
-=item Win32::MsgBox(MESSAGE [, FLAGS [, TITLE]])
-
-[EXT] Create a dialogbox containing MESSAGE. FLAGS specifies the
-required icon and buttons according to the following table:
-
- 0 = OK
- 1 = OK and Cancel
- 2 = Abort, Retry, and Ignore
- 3 = Yes, No and Cancel
- 4 = Yes and No
- 5 = Retry and Cancel
-
- MB_ICONSTOP "X" in a red circle
- MB_ICONQUESTION question mark in a bubble
- MB_ICONEXCLAMATION exclamation mark in a yellow triangle
- MB_ICONINFORMATION "i" in a bubble
-
-TITLE specifies an optional window title. The default is "Perl".
-
-The function returns the menu id of the selected push button:
-
- 0 Error
-
- 1 OK
- 2 Cancel
- 3 Abort
- 4 Retry
- 5 Ignore
- 6 Yes
- 7 No
-
-=item Win32::NodeName()
-
-[CORE] Returns the Microsoft Network node-name of the current machine.
-
-=item Win32::RegisterServer(LIBRARYNAME)
-
-[EXT] Loads the DLL LIBRARYNAME and calls the function DllRegisterServer.
-
-=item Win32::SetChildShowWindow(SHOWWINDOW)
-
-[CORE] Sets the I<ShowMode> of child processes started by system().
-By default system() will create a new console window for child
-processes if Perl itself is not running from a console. Calling
-SetChildShowWindow(0) will make these new console windows invisible.
-Calling SetChildShowWindow() without arguments reverts system() to the
-default behavior. The return value of SetChildShowWindow() is the
-previous setting or C<undef>.
-
-[EXT] The following symbolic constants for SHOWWINDOW are available
-(but not exported) from the Win32 module: SW_HIDE, SW_SHOWNORMAL,
-SW_SHOWMINIMIZED, SW_SHOWMAXIMIZED and SW_SHOWNOACTIVATE.
-
-=item Win32::SetCwd(NEWDIRECTORY)
-
-[CORE] Sets the current active drive and directory. This function does not
-work with UNC paths, since the functionality required to required for
-such a feature is not available under Windows 95.
-
-=item Win32::SetLastError(ERROR)
-
-[CORE] Sets the value of the last error encountered to ERROR. This is
-that value that will be returned by the Win32::GetLastError()
-function.
-
-=item Win32::Sleep(TIME)
-
-[CORE] Pauses for TIME milliseconds. The timeslices are made available
-to other processes and threads.
-
-=item Win32::Spawn(COMMAND, ARGS, PID)
-
-[CORE] Spawns a new process using the supplied COMMAND, passing in
-arguments in the string ARGS. The pid of the new process is stored in
-PID. This function is deprecated. Please use the Win32::Process module
-instead.
-
-=item Win32::UnregisterServer(LIBRARYNAME)
-
-[EXT] Loads the DLL LIBRARYNAME and calls the function
-DllUnregisterServer.
-
-=back
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Win32/API.pm b/Master/tlpkg/tlperl/lib/Win32/API.pm
deleted file mode 100644
index e1bac5cda48..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/API.pm
+++ /dev/null
@@ -1,745 +0,0 @@
-package Win32::API;
-
-# See the bottom of this file for the POD documentation. Search for the
-# string '=head'.
-
-#######################################################################
-#
-# Win32::API - Perl Win32 API Import Facility
-#
-# Version: 0.47
-# Date: 12 Nov 2007
-# Author: Aldo Calpini <dada@perl.it>
-# Maintainer: Cosimo Streppone <cosimo@cpan.org>
-#
-# Changes for gcc/cygwin: Daniel Risacher <magnus@alum.mit.edu>
-# ported from 0.41 based on Daniel's patch by Reini Urban <rurban@x-ray.at>
-#
-# $Id: API.pm,v 1.0 2001/10/30 13:57:31 dada Exp $
-#
-#######################################################################
-
-require Exporter; # to export the constants to the main:: space
-require DynaLoader; # to dynuhlode the module.
-@ISA = qw( Exporter DynaLoader );
-
-use vars qw( $DEBUG );
-$DEBUG = 0;
-
-sub DEBUG {
- if ($Win32::API::DEBUG) {
- printf @_ if @_ or return 1;
- } else {
- return 0;
- }
-}
-
-use Win32::API::Type;
-use Win32::API::Struct;
-BEGIN {
- if ($^O eq 'cygwin') {
- require File::Basename;
- }
-}
-
-#######################################################################
-# STATIC OBJECT PROPERTIES
-#
-$VERSION = '0.47';
-
-#### some package-global hash to
-#### keep track of the imported
-#### libraries and procedures
-my %Libraries = ();
-my %Procedures = ();
-
-
-#######################################################################
-# dynamically load in the API extension module.
-#
-bootstrap Win32::API;
-
-#######################################################################
-# PUBLIC METHODS
-#
-sub new {
- my($class, $dll, $proc, $in, $out) = @_;
- my $hdll;
- my $self = {};
-
- if ($^O eq 'cygwin' and $dll ne File::Basename::basename($dll)) {
- # need to convert $dll to win32 path
- # isn't there an API for this?
- my $newdll = `cygpath -w "$dll"`;
- chomp $newdll;
- DEBUG "(PM)new: converted '$dll' to\n '$newdll'\n";
- $dll = $newdll;
- }
-
- #### avoid loading a library more than once
- if(exists($Libraries{$dll})) {
- DEBUG "Win32::API::new: Library '$dll' already loaded, handle=$Libraries{$dll}\n";
- $hdll = $Libraries{$dll};
- } else {
- DEBUG "Win32::API::new: Loading library '$dll'\n";
- $hdll = Win32::API::LoadLibrary($dll);
-# $Libraries{$dll} = $hdll;
- }
-
- #### if the dll can't be loaded, set $! to Win32's GetLastError()
- if(!$hdll) {
- $! = Win32::GetLastError();
- DEBUG "FAILED Loading library '$dll': $!\n";
- delete $Libraries{$dll};
- return undef;
- }
-
- #### determine if we have a prototype or not
- if( (not defined $in) and (not defined $out) ) {
- ($proc, $self->{in}, $self->{intypes}, $self->{out}) = parse_prototype( $proc );
- return undef unless $proc;
- $self->{proto} = 1;
- } else {
- $self->{in} = [];
- if(ref($in) eq 'ARRAY') {
- foreach (@$in) {
- push(@{ $self->{in} }, type_to_num($_));
- }
- } else {
- my @in = split '', $in;
- foreach (@in) {
- push(@{ $self->{in} }, type_to_num($_));
- }
- }
- $self->{out} = type_to_num($out);
- }
-
- #### first try to import the function of given name...
- my $hproc = Win32::API::GetProcAddress($hdll, $proc);
-
- #### ...then try appending either A or W (for ASCII or Unicode)
- if(!$hproc) {
- my $tproc = $proc;
- $tproc .= (IsUnicode() ? "W" : "A");
- # print "Win32::API::new: procedure not found, trying '$tproc'...\n";
- $hproc = Win32::API::GetProcAddress($hdll, $tproc);
- }
-
- #### ...if all that fails, set $! accordingly
- if(!$hproc) {
- $! = Win32::GetLastError();
- DEBUG "FAILED GetProcAddress for Proc '$proc': $!\n";
- return undef;
- }
- DEBUG "GetProcAddress('$proc') = '$hproc'\n";
-
- #### ok, let's stuff the object
- $self->{procname} = $proc;
- $self->{dll} = $hdll;
- $self->{dllname} = $dll;
- $self->{proc} = $hproc;
-
- #### keep track of the imported function
- $Libraries{$dll} = $hdll;
- $Procedures{$dll}++;
-
- DEBUG "Object blessed!\n";
-
- #### cast the spell
- bless($self, $class);
- return $self;
-}
-
-sub Import {
- my($class, $dll, $proc, $in, $out) = @_;
- $Imported{"$dll:$proc"} = Win32::API->new($dll, $proc, $in, $out) or return 0;
- my $P = (caller)[0];
- eval qq(
- sub ${P}::$Imported{"$dll:$proc"}->{procname} { \$Win32::API::Imported{"$dll:$proc"}->Call(\@_); }
- );
- return $@ ? 0 : 1;
-}
-
-
-#######################################################################
-# PRIVATE METHODS
-#
-sub DESTROY {
- my($self) = @_;
-
- #### decrease this library's procedures reference count
- $Procedures{$self->{dllname}}--;
-
- #### once it reaches 0, free it
- if($Procedures{$self->{dllname}} == 0) {
- DEBUG "Win32::API::DESTROY: Freeing library '$self->{dllname}'\n";
- Win32::API::FreeLibrary($Libraries{$self->{dllname}});
- delete($Libraries{$self->{dllname}});
- }
-}
-
-sub type_to_num {
- my $type = shift;
- my $out = shift;
- my $num;
-
- if( $type eq 'N'
- or $type eq 'n'
- or $type eq 'l'
- or $type eq 'L'
- ) {
- $num = 1;
- } elsif($type eq 'P'
- or $type eq 'p'
- ) {
- $num = 2;
- } elsif($type eq 'I'
- or $type eq 'i'
- ) {
- $num = 3;
- } elsif($type eq 'f'
- or $type eq 'F'
- ) {
- $num = 4;
- } elsif($type eq 'D'
- or $type eq 'd'
- ) {
- $num = 5;
- } elsif($type eq 'c'
- or $type eq 'C'
- ) {
- $num = 6;
- } else {
- $num = 0;
- }
- unless(defined $out) {
- if( $type eq 's'
- or $type eq 'S'
- ) {
- $num = 51;
- } elsif($type eq 'b'
- or $type eq 'B'
- ) {
- $num = 22;
- } elsif($type eq 'k'
- or $type eq 'K'
- ) {
- $num = 101;
- }
- }
- return $num;
-}
-
-sub parse_prototype {
- my($proto) = @_;
-
- my @in_params = ();
- my @in_types = ();
- if($proto =~ /^\s*(\S+)\s+(\S+)\s*\(([^\)]*)\)/) {
- my $ret = $1;
- my $proc = $2;
- my $params = $3;
-
- $params =~ s/^\s+//;
- $params =~ s/\s+$//;
-
- DEBUG "(PM)parse_prototype: got PROC '%s'\n", $proc;
- DEBUG "(PM)parse_prototype: got PARAMS '%s'\n", $params;
-
- foreach my $param (split(/\s*,\s*/, $params)) {
- my($type, $name);
- if($param =~ /(\S+)\s+(\S+)/) {
- ($type, $name) = ($1, $2);
- }
-
- if(Win32::API::Type::is_known($type)) {
- if(Win32::API::Type::is_pointer($type)) {
- DEBUG "(PM)parse_prototype: IN='%s' PACKING='%s' API_TYPE=%d\n",
- $type,
- Win32::API::Type->packing( $type ),
- type_to_num('P');
- push(@in_params, type_to_num('P'));
- } else {
- DEBUG "(PM)parse_prototype: IN='%s' PACKING='%s' API_TYPE=%d\n",
- $type,
- Win32::API::Type->packing( $type ),
- type_to_num( Win32::API::Type->packing( $type ) );
- push(@in_params, type_to_num( Win32::API::Type->packing( $type ) ));
- }
- } elsif( Win32::API::Struct::is_known( $type ) ) {
- DEBUG "(PM)parse_prototype: IN='%s' PACKING='%s' API_TYPE=%d\n",
- $type, 'S', type_to_num('S');
- push(@in_params, type_to_num('S'));
- } else {
- warn "Win32::API::parse_prototype: WARNING unknown parameter type '$type'";
- push(@in_params, type_to_num('I'));
- }
- push(@in_types, $type);
-
- }
- DEBUG "parse_prototype: IN=[ @in_params ]\n";
-
-
-
- if(Win32::API::Type::is_known($ret)) {
- if(Win32::API::Type::is_pointer($ret)) {
- DEBUG "parse_prototype: OUT='%s' PACKING='%s' API_TYPE=%d\n",
- $ret,
- Win32::API::Type->packing( $ret ),
- type_to_num('P');
- return ( $proc, \@in_params, \@in_types, type_to_num('P') );
- } else {
- DEBUG "parse_prototype: OUT='%s' PACKING='%s' API_TYPE=%d\n",
- $ret,
- Win32::API::Type->packing( $ret ),
- type_to_num( Win32::API::Type->packing( $ret ) );
- return ( $proc, \@in_params, \@in_types, type_to_num(Win32::API::Type->packing($ret)) );
- }
- } else {
- warn "Win32::API::parse_prototype: WARNING unknown output parameter type '$ret'";
- return ( $proc, \@in_params, \@in_types, type_to_num('I') );
- }
-
- } else {
- warn "Win32::API::parse_prototype: bad prototype '$proto'";
- return undef;
- }
-}
-
-1;
-
-__END__
-
-#######################################################################
-# DOCUMENTATION
-#
-
-=head1 NAME
-
-Win32::API - Perl Win32 API Import Facility
-
-=head1 SYNOPSIS
-
- #### Method 1: with prototype
-
- use Win32::API;
- $function = Win32::API->new(
- 'mydll, 'int sum_integers(int a, int b)',
- );
- $return = $function->Call(3, 2);
-
- #### Method 2: with parameter list
-
- use Win32::API;
- $function = Win32::API->new(
- 'mydll', 'sum_integers', 'II', 'I',
- );
- $return = $function->Call(3, 2);
-
- #### Method 3: with Import
-
- use Win32::API;
- Win32::API->Import(
- 'mydll', 'int sum_integers(int a, int b)',
- );
- $return = sum_integers(3, 2);
-
-
-=for LATER-UNIMPLEMENTED
- #### or
- use Win32::API mydll => 'int sum_integers(int a, int b)';
- $return = sum_integers(3, 2);
-
-
-=head1 ABSTRACT
-
-With this module you can import and call arbitrary functions
-from Win32's Dynamic Link Libraries (DLL), without having
-to write an XS extension. Note, however, that this module
-can't do anything (parameters input and output is limited
-to simpler cases), and anyway a regular XS extension is
-always safer and faster.
-
-The current version of Win32::API is available at my website:
-
- http://dada.perl.it/
-
-It's also available on your nearest CPAN mirror (but allow a few days
-for worldwide spreading of the latest version) reachable at:
-
- http://www.perl.com/CPAN/authors/Aldo_Calpini/
-
-A short example of how you can use this module (it just gets the PID of
-the current process, eg. same as Perl's internal C<$$>):
-
- use Win32::API;
- Win32::API->Import("kernel32", "int GetCurrentProcessId()");
- $PID = GetCurrentProcessId();
-
-The possibilities are nearly infinite (but not all are good :-).
-Enjoy it.
-
-
-=head1 CREDITS
-
-All the credits go to Andrea Frosini
-for the neat assembler trick that makes this thing work.
-I've also used some work by Dave Roth for the prototyping stuff.
-A big thank you also to Gurusamy Sarathy for his
-unvaluable help in XS development, and to all the Perl community for
-being what it is.
-
-
-=head1 DESCRIPTION
-
-To use this module put the following line at the beginning of your script:
-
- use Win32::API;
-
-You can now use the C<new()> function of the Win32::API module to create a
-new Win32::API object (see L<IMPORTING A FUNCTION>) and then invoke the
-C<Call()> method on this object to perform a call to the imported API
-(see L<CALLING AN IMPORTED FUNCTION>).
-
-Starting from version 0.40, you can also avoid creating a Win32::API object
-and instead automatically define a Perl sub with the same name of the API
-function you're importing. The details of the API definitions are the same,
-just the call is different:
-
- my $GetCurrentProcessId = Win32::API->new(
- "kernel32", "int GetCurrentProcessId()"
- );
- my $PID = $GetCurrentProcessId->Call();
-
- #### vs.
-
- Win32::API->Import("kernel32", "int GetCurrentProcessId()");
- $PID = GetCurrentProcessId();
-
-Note that C<Import> returns 1 on success and 0 on failure (in which case you
-can check the content of C<$^E>).
-
-=head2 IMPORTING A FUNCTION
-
-You can import a function from a 32 bit Dynamic Link Library (DLL) file
-with the C<new()> function. This will create a Perl object that contains the
-reference to that function, which you can later C<Call()>.
-
-What you need to know is the prototype of the function you're going to import
-(eg. the definition of the function expressed in C syntax).
-
-Starting from version 0.40, there are 2 different approaches for this step:
-(the preferred) one uses the prototype directly, while the other (now deprecated)
-one uses Win32::API's internal representation for parameters.
-
-=head2 IMPORTING A FUNCTION BY PROTOTYPE
-
-You need to pass 2 parameters:
-
-=over 4
-
-=item 1.
-The name of the library from which you want to import the function.
-
-=item 2.
-The C prototype of the function.
-
-=back
-
-See L<Win32::API::Type> for a list of the known parameter types and
-L<Win32::API::Struct> for information on how to define a structure.
-
-=head2 IMPORTING A FUNCTION WITH A PARAMETER LIST
-
-You need to pass 4 parameters:
-
-=over 4
-
-=item 1.
-The name of the library from which you want to import the function.
-
-=item 2.
-The name of the function (as exported by the library).
-
-=item 3.
-The number and types of the arguments the function expects as input.
-
-=item 4.
-The type of the value returned by the function.
-
-=back
-
-To better explain their meaning, let's suppose that we
-want to import and call the Win32 API C<GetTempPath()>.
-This function is defined in C as:
-
- DWORD WINAPI GetTempPathA( DWORD nBufferLength, LPSTR lpBuffer );
-
-This is documented in the B<Win32 SDK Reference>; you can look
-for it on the Microsoft's WWW site, or in your C compiler's
-documentation, if you own one.
-
-=over 4
-
-=item B<1.>
-
-The first parameter is the name of the library file that
-exports this function; our function resides in the F<KERNEL32.DLL>
-system file.
-When specifying this name as parameter, the F<.DLL> extension
-is implicit, and if no path is given, the file is searched through
-a couple of directories, including:
-
-=over 4
-
-=item 1. The directory from which the application loaded.
-
-=item 2. The current directory.
-
-=item 3. The Windows system directory (eg. c:\windows\system or system32).
-
-=item 4. The Windows directory (eg. c:\windows).
-
-=item 5. The directories that are listed in the PATH environment variable.
-
-=back
-
-So, you don't have to write F<C:\windows\system\kernel32.dll>;
-only F<kernel32> is enough:
-
- $GetTempPath = new Win32::API('kernel32', ...
-
-=item B<2.>
-
-Now for the second parameter: the name of the function.
-It must be written exactly as it is exported
-by the library (case is significant here).
-If you are using Windows 95 or NT 4.0, you can use the B<Quick View>
-command on the DLL file to see the function it exports.
-Remember that you can only import functions from 32 bit DLLs:
-in Quick View, the file's characteristics should report
-somewhere "32 bit word machine"; as a rule of thumb,
-when you see that all the exported functions are in upper case,
-the DLL is a 16 bit one and you can't use it.
-If their capitalization looks correct, then it's probably a 32 bit
-DLL.
-
-Also note that many Win32 APIs are exported twice, with the addition of
-a final B<A> or B<W> to their name, for - respectively - the ASCII
-and the Unicode version.
-When a function name is not found, Win32::API will actually append
-an B<A> to the name and try again; if the extension is built on a
-Unicode system, then it will try with the B<W> instead.
-So our function name will be:
-
- $GetTempPath = new Win32::API('kernel32', 'GetTempPath', ...
-
-In our case C<GetTempPath> is really loaded as C<GetTempPathA>.
-
-=item B<3.>
-
-The third parameter, the input parameter list, specifies how many
-arguments the function wants, and their types. It can be passed as
-a single string, in which each character represents one parameter,
-or as a list reference. The following forms are valid:
-
- "abcd"
- [a, b, c, d]
- \@LIST
-
-But those are not:
-
- (a, b, c, d)
- @LIST
-
-The number of characters, or elements in the list, specifies the number
-of parameters, and each character or element specifies the type of an
-argument; allowed types are:
-
-=over 4
-
-=item C<I>:
-value is an integer (int)
-
-=item C<N>:
-value is a number (long)
-
-=item C<F>:
-value is a floating point number (float)
-
-=item C<D>:
-value is a double precision number (double)
-
-=item C<C>:
-value is a char (char)
-
-=item C<P>:
-value is a pointer (to a string, structure, etc...)
-
-=item C<S>:
-value is a Win32::API::Struct object (see below)
-
-=item C<K>:
-value is a Win32::API::Callback object (see L<Win32::API::Callback>)
-
-=back
-
-Our function needs two parameters: a number (C<DWORD>) and a pointer to a
-string (C<LPSTR>):
-
- $GetTempPath = new Win32::API('kernel32', 'GetTempPath', 'NP', ...
-
-=item B<4.>
-
-The fourth and final parameter is the type of the value returned by the
-function. It can be one of the types seen above, plus another type named B<V>
-(for C<void>), used for functions that do not return a value.
-In our example the value returned by GetTempPath() is a C<DWORD>, so
-our return type will be B<N>:
-
- $GetTempPath = new Win32::API('kernel32', 'GetTempPath', 'NP', 'N');
-
-Now the line is complete, and the GetTempPath() API is ready to be used
-in Perl. Before calling it, you should test that $GetTempPath is
-C<defined>, otherwise either the function or the library could not be
-loaded; in this case, C<$!> will be set to the error message reported
-by Windows.
-Our definition, with error checking added, should then look like this:
-
- $GetTempPath = new Win32::API('kernel32', 'GetTempPath', 'NP', 'N');
- if(not defined $GetTempPath) {
- die "Can't import API GetTempPath: $!\n";
- }
-
-=back
-
-=head2 CALLING AN IMPORTED FUNCTION
-
-To effectively make a call to an imported function you must use the
-Call() method on the Win32::API object you created.
-Continuing with the example from the previous paragraph,
-the GetTempPath() API can be called using the method:
-
- $GetTempPath->Call(...
-
-Of course, parameters have to be passed as defined in the import phase.
-In particular, if the number of parameters does not match (in the example,
-if GetTempPath() is called with more or less than two parameters),
-Perl will C<croak> an error message and C<die>.
-
-The two parameters needed here are the length of the buffer
-that will hold the returned temporary path, and a pointer to the
-buffer itself.
-For numerical parameters, you can use either a constant expression
-or a variable, while B<for pointers you must use a variable name> (no
-Perl references, just a plain variable name).
-Also note that B<memory must be allocated before calling the function>,
-just like in C.
-For example, to pass a buffer of 80 characters to GetTempPath(),
-it must be initialized before with:
-
- $lpBuffer = " " x 80;
-
-This allocates a string of 80 characters. If you don't do so, you'll
-probably get C<Runtime exception> errors, and generally nothing will
-work. The call should therefore include:
-
- $lpBuffer = " " x 80;
- $GetTempPath->Call(80, $lpBuffer);
-
-And the result will be stored in the $lpBuffer variable.
-Note that you don't need to pass a reference to the variable
-(eg. you B<don't need> C<\$lpBuffer>), even if its value will be set
-by the function.
-
-A little problem here is that Perl does not trim the variable,
-so $lpBuffer will still contain 80 characters in return; the exceeding
-characters will be spaces, because we said C<" " x 80>.
-
-In this case we're lucky enough, because the value returned by
-the GetTempPath() function is the length of the string, so to get
-the actual temporary path we can write:
-
- $lpBuffer = " " x 80;
- $return = $GetTempPath->Call(80, $lpBuffer);
- $TempPath = substr($lpBuffer, 0, $return);
-
-If you don't know the length of the string, you can usually
-cut it at the C<\0> (ASCII zero) character, which is the string
-delimiter in C:
-
- $TempPath = ((split(/\0/, $lpBuffer))[0];
- # or
- $lpBuffer =~ s/\0.*$//;
-
-=head2 USING STRUCTURES
-
-Starting from version 0.40, Win32::API comes with a support package
-named Win32::API::Struct. The package is loaded automatically with
-Win32::API, so you don't need to use it explicitly.
-
-With this module you can conveniently define structures and use
-them as parameters to Win32::API functions. A short example follows:
-
-
- # the 'POINT' structure is defined in C as:
- # typedef struct {
- # LONG x;
- # LONG y;
- # } POINT;
-
-
- #### define the structure
- Win32::API::Struct->typedef( POINT => qw{
- LONG x;
- LONG y;
- });
-
- #### import an API that uses this structure
- Win32::API->Import('user32', 'BOOL GetCursorPos(LPPOINT lpPoint)');
-
- #### create a 'POINT' object
- my $pt = Win32::API::Struct->new('POINT');
-
- #### call the function passing our structure object
- GetCursorPos($pt);
-
- #### and now, access its members
- print "The cursor is at: $pt->{x}, $pt->{y}\n";
-
-Note that this works only when the function wants a
-B<pointer to a structure>: as you can see, our structure is named
-'POINT', but the API used 'LPPOINT'. 'LP' is automatically added at
-the beginning of the structure name when feeding it to a Win32::API
-call.
-
-For more information, see also L<Win32::API::Struct>.
-
-If you don't want (or can't) use the Win32::API::Struct facility,
-you can still use the low-level approach to use structures:
-
-
-=over 4
-
-=item 1.
-you have to pack() the required elements in a variable:
-
- $lpPoint = pack('LL', 0, 0); # store two LONGs
-
-=item 2. to access the values stored in a structure, unpack() it as required:
-
- ($x, $y) = unpack('LL', $lpPoint); # get the actual values
-
-=back
-
-The rest is left as an exercise to the reader...
-
-=head1 AUTHOR
-
-Aldo Calpini ( I<dada@perl.it> ).
-
-=head1 MAINTAINER
-
-Cosimo Streppone ( I<cosimo@cpan.org> )
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Win32/API.pm.orig b/Master/tlpkg/tlperl/lib/Win32/API.pm.orig
deleted file mode 100644
index 9e4accd8bf6..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/API.pm.orig
+++ /dev/null
@@ -1,741 +0,0 @@
-package Win32::API;
-
-# See the bottom of this file for the POD documentation. Search for the
-# string '=head'.
-
-#######################################################################
-#
-# Win32::API - Perl Win32 API Import Facility
-#
-# Version: 0.47
-# Date: 12 Nov 2007
-# Author: Aldo Calpini <dada@perl.it>
-# Maintainer: Cosimo Streppone <cosimo@cpan.org>
-#
-# Changes for gcc/cygwin: Daniel Risacher <magnus@alum.mit.edu>
-# ported from 0.41 based on Daniel's patch by Reini Urban <rurban@x-ray.at>
-#
-# $Id: API.pm,v 1.0 2001/10/30 13:57:31 dada Exp $
-#
-#######################################################################
-
-require Exporter; # to export the constants to the main:: space
-require DynaLoader; # to dynuhlode the module.
-@ISA = qw( Exporter DynaLoader );
-
-use vars qw( $DEBUG );
-$DEBUG = 0;
-
-sub DEBUG {
- if ($Win32::API::DEBUG) {
- printf @_ if @_ or return 1;
- } else {
- return 0;
- }
-}
-
-use Win32::API::Type;
-use Win32::API::Struct;
-use File::Basename ();
-
-#######################################################################
-# STATIC OBJECT PROPERTIES
-#
-$VERSION = '0.47';
-
-#### some package-global hash to
-#### keep track of the imported
-#### libraries and procedures
-my %Libraries = ();
-my %Procedures = ();
-
-
-#######################################################################
-# dynamically load in the API extension module.
-#
-bootstrap Win32::API;
-
-#######################################################################
-# PUBLIC METHODS
-#
-sub new {
- my($class, $dll, $proc, $in, $out) = @_;
- my $hdll;
- my $self = {};
-
- if ($^O eq 'cygwin' and $dll ne File::Basename::basename($dll)) {
- # need to convert $dll to win32 path
- # isn't there an API for this?
- my $newdll = `cygpath -w "$dll"`;
- chomp $newdll;
- DEBUG "(PM)new: converted '$dll' to\n '$newdll'\n";
- $dll = $newdll;
- }
-
- #### avoid loading a library more than once
- if(exists($Libraries{$dll})) {
- DEBUG "Win32::API::new: Library '$dll' already loaded, handle=$Libraries{$dll}\n";
- $hdll = $Libraries{$dll};
- } else {
- DEBUG "Win32::API::new: Loading library '$dll'\n";
- $hdll = Win32::API::LoadLibrary($dll);
-# $Libraries{$dll} = $hdll;
- }
-
- #### if the dll can't be loaded, set $! to Win32's GetLastError()
- if(!$hdll) {
- $! = Win32::GetLastError();
- DEBUG "FAILED Loading library '$dll': $!\n";
- delete $Libraries{$dll};
- return undef;
- }
-
- #### determine if we have a prototype or not
- if( (not defined $in) and (not defined $out) ) {
- ($proc, $self->{in}, $self->{intypes}, $self->{out}) = parse_prototype( $proc );
- return undef unless $proc;
- $self->{proto} = 1;
- } else {
- $self->{in} = [];
- if(ref($in) eq 'ARRAY') {
- foreach (@$in) {
- push(@{ $self->{in} }, type_to_num($_));
- }
- } else {
- my @in = split '', $in;
- foreach (@in) {
- push(@{ $self->{in} }, type_to_num($_));
- }
- }
- $self->{out} = type_to_num($out);
- }
-
- #### first try to import the function of given name...
- my $hproc = Win32::API::GetProcAddress($hdll, $proc);
-
- #### ...then try appending either A or W (for ASCII or Unicode)
- if(!$hproc) {
- my $tproc = $proc;
- $tproc .= (IsUnicode() ? "W" : "A");
- # print "Win32::API::new: procedure not found, trying '$tproc'...\n";
- $hproc = Win32::API::GetProcAddress($hdll, $tproc);
- }
-
- #### ...if all that fails, set $! accordingly
- if(!$hproc) {
- $! = Win32::GetLastError();
- DEBUG "FAILED GetProcAddress for Proc '$proc': $!\n";
- return undef;
- }
- DEBUG "GetProcAddress('$proc') = '$hproc'\n";
-
- #### ok, let's stuff the object
- $self->{procname} = $proc;
- $self->{dll} = $hdll;
- $self->{dllname} = $dll;
- $self->{proc} = $hproc;
-
- #### keep track of the imported function
- $Libraries{$dll} = $hdll;
- $Procedures{$dll}++;
-
- DEBUG "Object blessed!\n";
-
- #### cast the spell
- bless($self, $class);
- return $self;
-}
-
-sub Import {
- my($class, $dll, $proc, $in, $out) = @_;
- $Imported{"$dll:$proc"} = Win32::API->new($dll, $proc, $in, $out) or return 0;
- my $P = (caller)[0];
- eval qq(
- sub ${P}::$Imported{"$dll:$proc"}->{procname} { \$Win32::API::Imported{"$dll:$proc"}->Call(\@_); }
- );
- return $@ ? 0 : 1;
-}
-
-
-#######################################################################
-# PRIVATE METHODS
-#
-sub DESTROY {
- my($self) = @_;
-
- #### decrease this library's procedures reference count
- $Procedures{$self->{dllname}}--;
-
- #### once it reaches 0, free it
- if($Procedures{$self->{dllname}} == 0) {
- DEBUG "Win32::API::DESTROY: Freeing library '$self->{dllname}'\n";
- Win32::API::FreeLibrary($Libraries{$self->{dllname}});
- delete($Libraries{$self->{dllname}});
- }
-}
-
-sub type_to_num {
- my $type = shift;
- my $out = shift;
- my $num;
-
- if( $type eq 'N'
- or $type eq 'n'
- or $type eq 'l'
- or $type eq 'L'
- ) {
- $num = 1;
- } elsif($type eq 'P'
- or $type eq 'p'
- ) {
- $num = 2;
- } elsif($type eq 'I'
- or $type eq 'i'
- ) {
- $num = 3;
- } elsif($type eq 'f'
- or $type eq 'F'
- ) {
- $num = 4;
- } elsif($type eq 'D'
- or $type eq 'd'
- ) {
- $num = 5;
- } elsif($type eq 'c'
- or $type eq 'C'
- ) {
- $num = 6;
- } else {
- $num = 0;
- }
- unless(defined $out) {
- if( $type eq 's'
- or $type eq 'S'
- ) {
- $num = 51;
- } elsif($type eq 'b'
- or $type eq 'B'
- ) {
- $num = 22;
- } elsif($type eq 'k'
- or $type eq 'K'
- ) {
- $num = 101;
- }
- }
- return $num;
-}
-
-sub parse_prototype {
- my($proto) = @_;
-
- my @in_params = ();
- my @in_types = ();
- if($proto =~ /^\s*(\S+)\s+(\S+)\s*\(([^\)]*)\)/) {
- my $ret = $1;
- my $proc = $2;
- my $params = $3;
-
- $params =~ s/^\s+//;
- $params =~ s/\s+$//;
-
- DEBUG "(PM)parse_prototype: got PROC '%s'\n", $proc;
- DEBUG "(PM)parse_prototype: got PARAMS '%s'\n", $params;
-
- foreach my $param (split(/\s*,\s*/, $params)) {
- my($type, $name);
- if($param =~ /(\S+)\s+(\S+)/) {
- ($type, $name) = ($1, $2);
- }
-
- if(Win32::API::Type::is_known($type)) {
- if(Win32::API::Type::is_pointer($type)) {
- DEBUG "(PM)parse_prototype: IN='%s' PACKING='%s' API_TYPE=%d\n",
- $type,
- Win32::API::Type->packing( $type ),
- type_to_num('P');
- push(@in_params, type_to_num('P'));
- } else {
- DEBUG "(PM)parse_prototype: IN='%s' PACKING='%s' API_TYPE=%d\n",
- $type,
- Win32::API::Type->packing( $type ),
- type_to_num( Win32::API::Type->packing( $type ) );
- push(@in_params, type_to_num( Win32::API::Type->packing( $type ) ));
- }
- } elsif( Win32::API::Struct::is_known( $type ) ) {
- DEBUG "(PM)parse_prototype: IN='%s' PACKING='%s' API_TYPE=%d\n",
- $type, 'S', type_to_num('S');
- push(@in_params, type_to_num('S'));
- } else {
- warn "Win32::API::parse_prototype: WARNING unknown parameter type '$type'";
- push(@in_params, type_to_num('I'));
- }
- push(@in_types, $type);
-
- }
- DEBUG "parse_prototype: IN=[ @in_params ]\n";
-
-
-
- if(Win32::API::Type::is_known($ret)) {
- if(Win32::API::Type::is_pointer($ret)) {
- DEBUG "parse_prototype: OUT='%s' PACKING='%s' API_TYPE=%d\n",
- $ret,
- Win32::API::Type->packing( $ret ),
- type_to_num('P');
- return ( $proc, \@in_params, \@in_types, type_to_num('P') );
- } else {
- DEBUG "parse_prototype: OUT='%s' PACKING='%s' API_TYPE=%d\n",
- $ret,
- Win32::API::Type->packing( $ret ),
- type_to_num( Win32::API::Type->packing( $ret ) );
- return ( $proc, \@in_params, \@in_types, type_to_num(Win32::API::Type->packing($ret)) );
- }
- } else {
- warn "Win32::API::parse_prototype: WARNING unknown output parameter type '$ret'";
- return ( $proc, \@in_params, \@in_types, type_to_num('I') );
- }
-
- } else {
- warn "Win32::API::parse_prototype: bad prototype '$proto'";
- return undef;
- }
-}
-
-1;
-
-__END__
-
-#######################################################################
-# DOCUMENTATION
-#
-
-=head1 NAME
-
-Win32::API - Perl Win32 API Import Facility
-
-=head1 SYNOPSIS
-
- #### Method 1: with prototype
-
- use Win32::API;
- $function = Win32::API->new(
- 'mydll, 'int sum_integers(int a, int b)',
- );
- $return = $function->Call(3, 2);
-
- #### Method 2: with parameter list
-
- use Win32::API;
- $function = Win32::API->new(
- 'mydll', 'sum_integers', 'II', 'I',
- );
- $return = $function->Call(3, 2);
-
- #### Method 3: with Import
-
- use Win32::API;
- Win32::API->Import(
- 'mydll', 'int sum_integers(int a, int b)',
- );
- $return = sum_integers(3, 2);
-
-
-=for LATER-UNIMPLEMENTED
- #### or
- use Win32::API mydll => 'int sum_integers(int a, int b)';
- $return = sum_integers(3, 2);
-
-
-=head1 ABSTRACT
-
-With this module you can import and call arbitrary functions
-from Win32's Dynamic Link Libraries (DLL), without having
-to write an XS extension. Note, however, that this module
-can't do anything (parameters input and output is limited
-to simpler cases), and anyway a regular XS extension is
-always safer and faster.
-
-The current version of Win32::API is available at my website:
-
- http://dada.perl.it/
-
-It's also available on your nearest CPAN mirror (but allow a few days
-for worldwide spreading of the latest version) reachable at:
-
- http://www.perl.com/CPAN/authors/Aldo_Calpini/
-
-A short example of how you can use this module (it just gets the PID of
-the current process, eg. same as Perl's internal C<$$>):
-
- use Win32::API;
- Win32::API->Import("kernel32", "int GetCurrentProcessId()");
- $PID = GetCurrentProcessId();
-
-The possibilities are nearly infinite (but not all are good :-).
-Enjoy it.
-
-
-=head1 CREDITS
-
-All the credits go to Andrea Frosini
-for the neat assembler trick that makes this thing work.
-I've also used some work by Dave Roth for the prototyping stuff.
-A big thank you also to Gurusamy Sarathy for his
-unvaluable help in XS development, and to all the Perl community for
-being what it is.
-
-
-=head1 DESCRIPTION
-
-To use this module put the following line at the beginning of your script:
-
- use Win32::API;
-
-You can now use the C<new()> function of the Win32::API module to create a
-new Win32::API object (see L<IMPORTING A FUNCTION>) and then invoke the
-C<Call()> method on this object to perform a call to the imported API
-(see L<CALLING AN IMPORTED FUNCTION>).
-
-Starting from version 0.40, you can also avoid creating a Win32::API object
-and instead automatically define a Perl sub with the same name of the API
-function you're importing. The details of the API definitions are the same,
-just the call is different:
-
- my $GetCurrentProcessId = Win32::API->new(
- "kernel32", "int GetCurrentProcessId()"
- );
- my $PID = $GetCurrentProcessId->Call();
-
- #### vs.
-
- Win32::API->Import("kernel32", "int GetCurrentProcessId()");
- $PID = GetCurrentProcessId();
-
-Note that C<Import> returns 1 on success and 0 on failure (in which case you
-can check the content of C<$^E>).
-
-=head2 IMPORTING A FUNCTION
-
-You can import a function from a 32 bit Dynamic Link Library (DLL) file
-with the C<new()> function. This will create a Perl object that contains the
-reference to that function, which you can later C<Call()>.
-
-What you need to know is the prototype of the function you're going to import
-(eg. the definition of the function expressed in C syntax).
-
-Starting from version 0.40, there are 2 different approaches for this step:
-(the preferred) one uses the prototype directly, while the other (now deprecated)
-one uses Win32::API's internal representation for parameters.
-
-=head2 IMPORTING A FUNCTION BY PROTOTYPE
-
-You need to pass 2 parameters:
-
-=over 4
-
-=item 1.
-The name of the library from which you want to import the function.
-
-=item 2.
-The C prototype of the function.
-
-=back
-
-See L<Win32::API::Type> for a list of the known parameter types and
-L<Win32::API::Struct> for information on how to define a structure.
-
-=head2 IMPORTING A FUNCTION WITH A PARAMETER LIST
-
-You need to pass 4 parameters:
-
-=over 4
-
-=item 1.
-The name of the library from which you want to import the function.
-
-=item 2.
-The name of the function (as exported by the library).
-
-=item 3.
-The number and types of the arguments the function expects as input.
-
-=item 4.
-The type of the value returned by the function.
-
-=back
-
-To better explain their meaning, let's suppose that we
-want to import and call the Win32 API C<GetTempPath()>.
-This function is defined in C as:
-
- DWORD WINAPI GetTempPathA( DWORD nBufferLength, LPSTR lpBuffer );
-
-This is documented in the B<Win32 SDK Reference>; you can look
-for it on the Microsoft's WWW site, or in your C compiler's
-documentation, if you own one.
-
-=over 4
-
-=item B<1.>
-
-The first parameter is the name of the library file that
-exports this function; our function resides in the F<KERNEL32.DLL>
-system file.
-When specifying this name as parameter, the F<.DLL> extension
-is implicit, and if no path is given, the file is searched through
-a couple of directories, including:
-
-=over 4
-
-=item 1. The directory from which the application loaded.
-
-=item 2. The current directory.
-
-=item 3. The Windows system directory (eg. c:\windows\system or system32).
-
-=item 4. The Windows directory (eg. c:\windows).
-
-=item 5. The directories that are listed in the PATH environment variable.
-
-=back
-
-So, you don't have to write F<C:\windows\system\kernel32.dll>;
-only F<kernel32> is enough:
-
- $GetTempPath = new Win32::API('kernel32', ...
-
-=item B<2.>
-
-Now for the second parameter: the name of the function.
-It must be written exactly as it is exported
-by the library (case is significant here).
-If you are using Windows 95 or NT 4.0, you can use the B<Quick View>
-command on the DLL file to see the function it exports.
-Remember that you can only import functions from 32 bit DLLs:
-in Quick View, the file's characteristics should report
-somewhere "32 bit word machine"; as a rule of thumb,
-when you see that all the exported functions are in upper case,
-the DLL is a 16 bit one and you can't use it.
-If their capitalization looks correct, then it's probably a 32 bit
-DLL.
-
-Also note that many Win32 APIs are exported twice, with the addition of
-a final B<A> or B<W> to their name, for - respectively - the ASCII
-and the Unicode version.
-When a function name is not found, Win32::API will actually append
-an B<A> to the name and try again; if the extension is built on a
-Unicode system, then it will try with the B<W> instead.
-So our function name will be:
-
- $GetTempPath = new Win32::API('kernel32', 'GetTempPath', ...
-
-In our case C<GetTempPath> is really loaded as C<GetTempPathA>.
-
-=item B<3.>
-
-The third parameter, the input parameter list, specifies how many
-arguments the function wants, and their types. It can be passed as
-a single string, in which each character represents one parameter,
-or as a list reference. The following forms are valid:
-
- "abcd"
- [a, b, c, d]
- \@LIST
-
-But those are not:
-
- (a, b, c, d)
- @LIST
-
-The number of characters, or elements in the list, specifies the number
-of parameters, and each character or element specifies the type of an
-argument; allowed types are:
-
-=over 4
-
-=item C<I>:
-value is an integer (int)
-
-=item C<N>:
-value is a number (long)
-
-=item C<F>:
-value is a floating point number (float)
-
-=item C<D>:
-value is a double precision number (double)
-
-=item C<C>:
-value is a char (char)
-
-=item C<P>:
-value is a pointer (to a string, structure, etc...)
-
-=item C<S>:
-value is a Win32::API::Struct object (see below)
-
-=item C<K>:
-value is a Win32::API::Callback object (see L<Win32::API::Callback>)
-
-=back
-
-Our function needs two parameters: a number (C<DWORD>) and a pointer to a
-string (C<LPSTR>):
-
- $GetTempPath = new Win32::API('kernel32', 'GetTempPath', 'NP', ...
-
-=item B<4.>
-
-The fourth and final parameter is the type of the value returned by the
-function. It can be one of the types seen above, plus another type named B<V>
-(for C<void>), used for functions that do not return a value.
-In our example the value returned by GetTempPath() is a C<DWORD>, so
-our return type will be B<N>:
-
- $GetTempPath = new Win32::API('kernel32', 'GetTempPath', 'NP', 'N');
-
-Now the line is complete, and the GetTempPath() API is ready to be used
-in Perl. Before calling it, you should test that $GetTempPath is
-C<defined>, otherwise either the function or the library could not be
-loaded; in this case, C<$!> will be set to the error message reported
-by Windows.
-Our definition, with error checking added, should then look like this:
-
- $GetTempPath = new Win32::API('kernel32', 'GetTempPath', 'NP', 'N');
- if(not defined $GetTempPath) {
- die "Can't import API GetTempPath: $!\n";
- }
-
-=back
-
-=head2 CALLING AN IMPORTED FUNCTION
-
-To effectively make a call to an imported function you must use the
-Call() method on the Win32::API object you created.
-Continuing with the example from the previous paragraph,
-the GetTempPath() API can be called using the method:
-
- $GetTempPath->Call(...
-
-Of course, parameters have to be passed as defined in the import phase.
-In particular, if the number of parameters does not match (in the example,
-if GetTempPath() is called with more or less than two parameters),
-Perl will C<croak> an error message and C<die>.
-
-The two parameters needed here are the length of the buffer
-that will hold the returned temporary path, and a pointer to the
-buffer itself.
-For numerical parameters, you can use either a constant expression
-or a variable, while B<for pointers you must use a variable name> (no
-Perl references, just a plain variable name).
-Also note that B<memory must be allocated before calling the function>,
-just like in C.
-For example, to pass a buffer of 80 characters to GetTempPath(),
-it must be initialized before with:
-
- $lpBuffer = " " x 80;
-
-This allocates a string of 80 characters. If you don't do so, you'll
-probably get C<Runtime exception> errors, and generally nothing will
-work. The call should therefore include:
-
- $lpBuffer = " " x 80;
- $GetTempPath->Call(80, $lpBuffer);
-
-And the result will be stored in the $lpBuffer variable.
-Note that you don't need to pass a reference to the variable
-(eg. you B<don't need> C<\$lpBuffer>), even if its value will be set
-by the function.
-
-A little problem here is that Perl does not trim the variable,
-so $lpBuffer will still contain 80 characters in return; the exceeding
-characters will be spaces, because we said C<" " x 80>.
-
-In this case we're lucky enough, because the value returned by
-the GetTempPath() function is the length of the string, so to get
-the actual temporary path we can write:
-
- $lpBuffer = " " x 80;
- $return = $GetTempPath->Call(80, $lpBuffer);
- $TempPath = substr($lpBuffer, 0, $return);
-
-If you don't know the length of the string, you can usually
-cut it at the C<\0> (ASCII zero) character, which is the string
-delimiter in C:
-
- $TempPath = ((split(/\0/, $lpBuffer))[0];
- # or
- $lpBuffer =~ s/\0.*$//;
-
-=head2 USING STRUCTURES
-
-Starting from version 0.40, Win32::API comes with a support package
-named Win32::API::Struct. The package is loaded automatically with
-Win32::API, so you don't need to use it explicitly.
-
-With this module you can conveniently define structures and use
-them as parameters to Win32::API functions. A short example follows:
-
-
- # the 'POINT' structure is defined in C as:
- # typedef struct {
- # LONG x;
- # LONG y;
- # } POINT;
-
-
- #### define the structure
- Win32::API::Struct->typedef( POINT => qw{
- LONG x;
- LONG y;
- });
-
- #### import an API that uses this structure
- Win32::API->Import('user32', 'BOOL GetCursorPos(LPPOINT lpPoint)');
-
- #### create a 'POINT' object
- my $pt = Win32::API::Struct->new('POINT');
-
- #### call the function passing our structure object
- GetCursorPos($pt);
-
- #### and now, access its members
- print "The cursor is at: $pt->{x}, $pt->{y}\n";
-
-Note that this works only when the function wants a
-B<pointer to a structure>: as you can see, our structure is named
-'POINT', but the API used 'LPPOINT'. 'LP' is automatically added at
-the beginning of the structure name when feeding it to a Win32::API
-call.
-
-For more information, see also L<Win32::API::Struct>.
-
-If you don't want (or can't) use the Win32::API::Struct facility,
-you can still use the low-level approach to use structures:
-
-
-=over 4
-
-=item 1.
-you have to pack() the required elements in a variable:
-
- $lpPoint = pack('LL', 0, 0); # store two LONGs
-
-=item 2. to access the values stored in a structure, unpack() it as required:
-
- ($x, $y) = unpack('LL', $lpPoint); # get the actual values
-
-=back
-
-The rest is left as an exercise to the reader...
-
-=head1 AUTHOR
-
-Aldo Calpini ( I<dada@perl.it> ).
-
-=head1 MAINTAINER
-
-Cosimo Streppone ( I<cosimo@cpan.org> )
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Win32/API/Callback.pm b/Master/tlpkg/tlperl/lib/Win32/API/Callback.pm
deleted file mode 100644
index 22de9d4f46a..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/API/Callback.pm
+++ /dev/null
@@ -1,174 +0,0 @@
-package Win32::API::Callback;
-
-# See the bottom of this file for the POD documentation. Search for the
-# string '=head'.
-
-#######################################################################
-#
-# Win32::API::Callback - Perl Win32 API Import Facility
-#
-# Author: Aldo Calpini <dada@perl.it>
-# Maintainer: Cosimo Streppone <cosimo@cpan.org>
-#
-# $Id: Callback.pm,v 1.0 2001/10/30 13:57:31 dada Exp $
-#
-#######################################################################
-
-$VERSION = '0.47';
-
-require Exporter; # to export the constants to the main:: space
-require DynaLoader; # to dynuhlode the module.
-@ISA = qw( Exporter DynaLoader );
-
-sub DEBUG {
- if ($WIN32::API::DEBUG) {
- printf @_ if @_ or return 1;
- } else {
- return 0;
- }
-}
-
-use Win32::API;
-use Win32::API::Type;
-use Win32::API::Struct;
-
-#######################################################################
-# This AUTOLOAD is used to 'autoload' constants from the constant()
-# XS function. If a constant is not found then control is passed
-# to the AUTOLOAD in AutoLoader.
-#
-
-sub AUTOLOAD {
- my($constname);
- ($constname = $AUTOLOAD) =~ s/.*:://;
- #reset $! to zero to reset any current errors.
- $!=0;
- my $val = constant($constname, @_ ? $_[0] : 0);
- if ($! != 0) {
- if ($! =~ /Invalid/) {
- $AutoLoader::AUTOLOAD = $AUTOLOAD;
- goto &AutoLoader::AUTOLOAD;
- } else {
- ($pack,$file,$line) = caller;
- die "Your vendor has not defined Win32::API::Callback macro $constname, used at $file line $line.";
- }
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-
-#######################################################################
-# dynamically load in the API extension module.
-#
-bootstrap Win32::API::Callback;
-
-#######################################################################
-# PUBLIC METHODS
-#
-sub new {
- my($class, $proc, $in, $out) = @_;
- my %self = ();
-
- # printf "(PM)Callback::new: got proc='%s', in='%s', out='%s'\n", $proc, $in, $out;
-
- $self{in} = [];
- if(ref($in) eq 'ARRAY') {
- foreach (@$in) {
- push(@{ $self{in} }, Win32::API::type_to_num($_));
- }
- } else {
- my @in = split '', $in;
- foreach (@in) {
- push(@{ $self{in} }, Win32::API::type_to_num($_));
- }
- }
- $self{out} = Win32::API::type_to_num($out);
- $self{sub} = $proc;
- my $self = bless \%self, $class;
-
- DEBUG "(PM)Callback::new: calling CallbackCreate($self)...\n";
- my $hproc = CallbackCreate($self);
-
- DEBUG "(PM)Callback::new: hproc=$hproc\n";
-
- #### ...if that fails, set $! accordingly
- if(!$hproc) {
- $! = Win32::GetLastError();
- return undef;
- }
-
- #### ok, let's stuff the object
- $self->{code} = $hproc;
- $self->{sub} = $proc;
-
- #### cast the spell
- return $self;
-}
-
-sub MakeStruct {
- my($self, $n, $addr) = @_;
- DEBUG "(PM)Win32::API::Callback::MakeStruct: got self='$self'\n";
- my $struct = Win32::API::Struct->new($self->{intypes}->[$n]);
- $struct->FromMemory($addr);
- return $struct;
-}
-
-1;
-
-__END__
-
-#######################################################################
-# DOCUMENTATION
-#
-
-=head1 NAME
-
-Win32::API::Callback - Callback support for Win32::API
-
-=head1 SYNOPSIS
-
- use Win32::API;
- use Win32::API::Callback;
-
- my $callback = Win32::API::Callback->new(
- sub { my($a, $b) = @_; return $a+$b; },
- "NN", "N",
- );
-
- Win32::API->Import(
- 'mydll', 'two_integers_cb', 'KNN', 'N',
- );
-
- $sum = two_integers_cb( $callback, 3, 2 );
-
-
-=head1 FOREWORDS
-
-=over 4
-
-=item *
-Support for this module is B<highly experimental> at this point.
-
-=item *
-I won't be surprised if it doesn't work for you.
-
-=item *
-Feedback is very appreciated.
-
-=item *
-Documentation is in the work. Either see the SYNOPSIS above
-or the samples in the F<samples> directory.
-
-=back
-
-=head1 AUTHOR
-
-Aldo Calpini ( I<dada@perl.it> ).
-
-=head1 MAINTAINER
-
-Cosimo Streppone ( I<cosimo@cpan.org> ).
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/Win32/API/Struct.pm b/Master/tlpkg/tlperl/lib/Win32/API/Struct.pm
deleted file mode 100644
index 05a4c8c60a5..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/API/Struct.pm
+++ /dev/null
@@ -1,532 +0,0 @@
-package Win32::API::Struct;
-
-# See the bottom of this file for the POD documentation. Search for the
-# string '=head'.
-
-#######################################################################
-#
-# Win32::API::Struct - Perl Win32 API struct Facility
-#
-# Author: Aldo Calpini <dada@perl.it>
-# Maintainer: Cosimo Streppone <cosimo@cpan.org>
-#
-# $Id: Struct.pm,v 1.0 2001/10/30 13:57:31 dada Exp $
-#######################################################################
-
-$VERSION = '0.47';
-
-use Win32::API::Type;
-
-use Carp;
-
-require Exporter; # to export the constants to the main:: space
-require DynaLoader; # to dynuhlode the module.
-@ISA = qw( Exporter DynaLoader );
-
-my %Known = ();
-
-sub DEBUG {
- if ($Win32::API::DEBUG) {
- printf @_ if @_ or return 1;
- } else {
- return 0;
- }
-}
-
-sub typedef {
- my $class = shift;
- my $struct = shift;
- my($type, $name);
- my $self = {
- align => undef,
- typedef => [],
- };
- while(defined($type = shift)) {
- $name = shift;
- $name =~ s/;$//;
- push( @{ $self->{typedef} }, [ recognize($type, $name) ] );
- }
-
- $Known{$struct} = $self;
- return 1;
-}
-
-
-sub recognize {
- my($type, $name) = @_;
- my($size, $packing);
- if(exists $Known{$type}) {
- $packing = ">";
- return $name, $packing, $type;
- } else {
- $packing = Win32::API::Type::packing($type);
- return undef unless defined $packing;
- if($name =~ s/\[(.*)\]$//) {
- $size = $1;
- $packing = $packing."*".$size;
- }
- DEBUG "(PM)Struct::recognize got '$name', '$type' -> '$packing'\n";
- return $name, $packing, $type;
- }
-}
-
-sub new {
- my $class = shift;
- my($type, $name);
- my $self = {
- typedef => [],
- };
- if($#_ == 0) {
- if(exists $Known{$_[0]}) {
- DEBUG "(PM)Struct::new: got '$_[0]'\n";
- $self->{typedef} = $Known{$_[0]}->{typedef};
- foreach my $member (@{ $self->{typedef} }) {
- ($name, $packing, $type) = @$member;
- if($packing eq '>') {
- $self->{$name} = Win32::API::Struct->new($type);
- }
- }
- $self->{__typedef__} = $_[0];
- } else {
- carp "Unknown Win32::API::Struct '$_[0]'";
- return undef;
- }
- } else {
- while(defined($type = shift)) {
- $name = shift;
- # print "new: found member $name ($type)\n";
- if(not exists $Win32::API::Type::Known{$type}) {
- warn "Unknown Win32::API::Struct type '$type'";
- return undef;
- } else {
- push( @{ $self->{typedef} }, [ $name, $Win32::API::Type::Known{$type}, $type ] );
- }
- }
- }
- return bless $self;
-}
-
-sub members {
- my $self = shift;
- return map {$_->[0]} @{ $self->{typedef} };
-}
-
-sub sizeof {
- my $self = shift;
- my $size = 0;
- my $align = 0;
- my $first = undef;
- foreach my $member (@{ $self->{typedef} }) {
- my($name, $packing, $type) = @$member;
-
- if(ref( $self->{$name} ) eq "Win32::API::Struct") {
- $size += $self->{$name}->sizeof();
- # $align = $self->{$name}->sizeof() if $self->{$name}->sizeof() > $align;
- } else {
- if($packing =~ /\w\*(\d+)/) {
- $size += Win32::API::Type::sizeof($type) * $1;
- $first = Win32::API::Type::sizeof($type) * $1 unless defined $first;
- DEBUG "(PM)Struct::sizeof: sizeof with member($name) now = ". $size. "\n";
- } else {
- $size += Win32::API::Type::sizeof($type);
- $first = Win32::API::Type::sizeof($type) unless defined $first;
- $align = Win32::API::Type::sizeof($type)
- if Win32::API::Type::sizeof($type) > $align;
- DEBUG "(PM)Struct::sizeof: sizeof with member($name) now = ". $size. "\n";
- }
- }
- }
- DEBUG "(PM)Struct::sizeof first=$first align=$align\n";
- #DEBUG "(PM)Struct::sizeof returning %d\n", $first + (scalar(@{ $self->{typedef} })-1) * $align;
- #return $first + (scalar(@{ $self->{typedef} })-1) * $align;
- DEBUG "(PM)Struct::sizeof returning %d\n", scalar(@{ $self->{typedef} }) * $align;
- if(defined $align and $align > 0) {
- return scalar(@{ $self->{typedef} }) * $align;
- } else {
- return $size;
- }
- return $size;
-}
-
-sub align {
- my $self = shift;
- my $align = shift;
-
- if(not defined $align) {
- return $self->{align} unless $self->{align} eq 'auto';
- $align = 0;
- foreach my $member (@{ $self->{typedef} }) {
- my($name, $packing, $type) = @$member;
-
- if(ref( $self->{$name} ) eq "Win32::API::Struct") {
- #### ????
- } else {
- if($packing =~ /\w\*(\d+)/) {
- #### ????
- } else {
- $align = Win32::API::Type::sizeof($type)
- if Win32::API::Type::sizeof($type) > $align;
- }
- }
- }
- return $align;
- } else {
- $self->{align} = $align;
-
- }
-}
-
-sub getPack {
- my $self = shift;
- my $packing = "";
- my($type, $name);
- my @items = ();
- my @recipients = ();
-
- my $align = $self->align();
-
- foreach my $member (@{ $self->{typedef} }) {
- ($name, $type, $orig) = @$member;
- if($type eq '>') {
- my($subpacking, $subitems, $subrecipients) = $self->{$name}->getPack();
-
- DEBUG "(PM)Struct::getPack($self->{__typedef__}) ++ $subpacking\n";
-
- $packing .= $subpacking;
- push(@items, @$subitems);
- push(@recipients, @$subrecipients);
- } else {
- if($type =~ /\w\*(\d+)/) {
- my $size = $1;
- $type = "a$size";
- }
-
- DEBUG "(PM)Struct::getPack($self->{__typedef__}) ++ $type\n";
-
- if($type eq 'p') {
- $type = "L";
- push(@items, Win32::API::PointerTo($self->{$name}));
- } else {
- push(@items, $self->{$name});
- }
- $packing .= $type;
-
- if($Win32::API::Type::PackSize{$type} < $align) {
- $packing .= ("x" x ($align - $Win32::API::Type::PackSize{$type}));
- }
-
- push(@recipients, $self);
- }
- }
- DEBUG "(PM)Struct::getPack: $self->{__typedef__}(buffer) = pack($packing, @items)\n";
- return($packing, [@items], [@recipients]);
-}
-
-
-sub Pack {
- my $self = shift;
- my($packing, $items, $recipients) = $self->getPack();
- DEBUG "(PM)Struct::Pack: $self->{__typedef__}(buffer) = pack($packing, @$items)\n";
- $self->{buffer} = pack($packing, @$items);
- if(DEBUG) {
- for my $i (0..$self->sizeof-1) {
- printf " %3d: 0x%02x\n", $i, ord(substr($self->{buffer}, $i, 1));
- }
- }
- $self->{buffer_recipients} = $recipients
-}
-
-sub getUnpack {
- my $self = shift;
- my $packing = "";
- my($type, $name);
- my @items = ();
- my $align = $self->align();
- foreach my $member (@{ $self->{typedef} }) {
- ($name, $type, $orig) = @$member;
- if($type eq '>') {
- my($subpacking, @subitems) = $self->{$name}->getUnpack();
-
- DEBUG "(PM)Struct::getUnpack($self->{__typedef__}) ++ $subpacking\n";
- $packing .= $subpacking;
-
-
- push(@items, @subitems);
- } else {
- if($type =~ /\w\*(\d+)/) {
- my $size = $1;
- $type = "Z$size";
- }
-
- #if($type eq 'p') {
- # $packing .= 'Z*';
- # DEBUG "(PM)Struct::getUnpack($self->{__typedef__}) ++ Z*\n";
- #} else {
- $packing .= $type;
- DEBUG "(PM)Struct::getUnpack($self->{__typedef__}) ++ $type\n";
- #}
- if($type ne 'p' and $type !~ /^Z(\d+)/ and $Win32::API::Type::PackSize{$type} < $align) {
- DEBUG "(PM)Struct::getUnpack %s(%d) < %d\n",
- $type, $Win32::API::Type::PackSize{$type}, $align
- ;
- $packing .= ("x" x ($align - $Win32::API::Type::PackSize{$type}));
- }
-
- push(@items, $name);
- }
- }
- DEBUG "(PM)Struct::getUnpack($self->{__typedef__}): unpack($packing, @items)\n";
- return($packing, @items);
-}
-
-sub Unpack {
- my $self = shift;
- my($packing, @items) = $self->getUnpack();
- my @itemvalue = unpack($packing, $self->{buffer});
- DEBUG "(PM)Struct::Unpack: unpack($packing, buffer) = @itemvalue\n";
- foreach my $i (0..$#items) {
- my $recipient = $self->{buffer_recipients}->[$i];
- DEBUG "(PM)Struct::Unpack: %s(%s) = '%s' (0x%08x)\n",
- $recipient->{__typedef__},
- $items[$i],
- $itemvalue[$i],
- $itemvalue[$i],
- ;
- $recipient->{$items[$i]} = $itemvalue[$i];
- DEBUG "(PM)Struct::Unpack: self.$items[$i] = $self->{$items[$i]}\n";
- }
-}
-
-sub FromMemory {
- my($self, $addr) = @_;
- DEBUG "(PM)Struct::FromMemory: doing Pack\n";
- $self->Pack();
- DEBUG "(PM)Struct::FromMemory: doing GetMemory( 0x%08x, %d )\n", $addr, $self->sizeof;
- $self->{buffer} = Win32::API::ReadMemory( $addr, $self->sizeof );
- $self->Unpack();
- DEBUG "(PM)Struct::FromMemory: doing Unpack\n";
- DEBUG "(PM)Struct::FromMemory: structure is now:\n";
- $self->Dump() if DEBUG;
- DEBUG "\n";
-}
-
-sub Dump {
- my $self = shift;
- my $prefix = shift;
- foreach my $member (@{ $self->{typedef} }) {
- ($name, $packing, $type) = @$member;
- if( ref($self->{$name}) ) {
- $self->{$name}->Dump($name);
- } else {
- printf "%-20s %-20s %-20s\n", $prefix, $name, $self->{$name};
- }
- }
-}
-
-
-sub is_known {
- my $name = shift;
- if(exists $Known{ $name }) {
- return 1;
- } else {
- if($name =~ s/^LP//) {
- return exists $Known{ $name };
- }
- return 0;
- }
-}
-
-sub TIEHASH {
- return Win32::API::Struct::new(@_);
-}
-
-sub EXISTS {
-
-}
-
-sub FETCH {
- my $self = shift;
- my $key = shift;
-
- if($key eq 'sizeof') {
- return $self->sizeof;
- }
- my @members = map { $_->[0] } @{ $self->{typedef} };
- if(grep(/^\Q$key\E$/, @members)) {
- return $self->{$key};
- } else {
- warn "'$key' is not a member of Win32::API::Struct $self->{__typedef__}";
- }
-}
-
-sub STORE {
- my $self = shift;
- my($key, $val) = @_;
- my @members = map { $_->[0] } @{ $self->{typedef} };
- if(grep(/^\Q$key\E$/, @members)) {
- $self->{$key} = $val;
- } else {
- warn "'$key' is not a member of Win32::API::Struct $self->{__typedef__}";
- }
-}
-
-sub FIRSTKEY {
- my $self = shift;
- my @members = map { $_->[0] } @{ $self->{typedef} };
- return $members[0];
-}
-
-sub NEXTKEY {
- my $self = shift;
- my $key = shift;
- my @members = map { $_->[0] } @{ $self->{typedef} };
- for my $i (0..$#members-1) {
- return $members[$i+1] if $members[$i] eq $key;
- }
- return undef;
-}
-
-1;
-
-#######################################################################
-# DOCUMENTATION
-#
-
-=head1 NAME
-
-Win32::API::Struct - C struct support package for Win32::API
-
-=head1 SYNOPSIS
-
- use Win32::API;
-
- Win32::API::Struct->typedef( 'POINT', qw(
- LONG x;
- LONG y;
- ));
-
- my $Point = Win32::API::Struct->new( 'POINT' );
- $Point->{x} = 1024;
- $Point->{y} = 768;
-
- #### alternatively
-
- tie %Point, 'Win32::API::Struct', 'POINT';
- $Point{x} = 1024;
- $Point{y} = 768;
-
-
-=head1 ABSTRACT
-
-This module enables you to define C structs for use with
-Win32::API.
-
-See L<Win32::API> for more info about its usage.
-
-=head1 DESCRIPTION
-
-This module is automatically imported by Win32::API, so you don't
-need to 'use' it explicitly. The main methods are C<typedef> and
-C<new>, which are documented below.
-
-=over 4
-
-=item C<typedef NAME, TYPE, MEMBER, TYPE, MEMBER, ...>
-
-This method defines a structure named C<NAME>. The definition consists
-of types and member names, just like in C. In fact, most of the
-times you can cut the C definition for a structure and paste it
-verbatim to your script, enclosing it in a C<qw()> block. The
-function takes care of removing the semicolon after the member
-name.
-
-The synopsis example could be written like this:
-
- Win32::API::Struct->typedef('POINT', 'LONG', 'x', 'LONG', 'y');
-
-But it could also be written like this (note the indirect object
-syntax), which is pretty cool:
-
- typedef Win32::API::Struct POINT => qw{
- LONG x;
- LONG y;
- };
-
-Also note that C<typedef> automatically defines an 'LPNAME' type,
-which holds a pointer to your structure. In the example above,
-'LPPOINT' is also defined and can be used in a call to a
-Win32::API (in fact, this is what you're really going to use when
-doing API calls).
-
-=item C<new NAME>
-
-This creates a structure (a Win32::API::Struct object) of the
-type C<NAME> (it must have been defined with C<typedef>). In Perl,
-when you create a structure, all the members are undefined. But
-when you use that structure in C (eg. a Win32::API call), you
-can safely assume that they will be treated as zero (or NULL).
-
-=item C<sizeof>
-
-This returns the size, in bytes, of the structure. Acts just like
-the C function of the same name. It is particularly useful for
-structures that need a member to be initialized to the structure's
-own size.
-
-=item C<align [SIZE]>
-
-Sets or returns the structure alignment (eg. how the structure is
-stored in memory). This is a very advanced option, and you normally
-don't need to mess with it.
-All structures in the Win32 Platform SDK should work without it.
-But if you define your own structure, you may need to give it an
-explicit alignment. In most cases, passing a C<SIZE> of 'auto'
-should keep the world happy.
-
-=back
-
-=head2 THE C<tie> INTERFACE
-
-Instead of creating an object with the C<new> method, you can
-tie a hash, which will hold the desired structure, using the
-C<tie> builtin function:
-
- tie %structure, Win32::API::Struct => 'NAME';
-
-The differences between the tied and non-tied approaches are:
-
-=over 4
-
-=item *
-with tied structures, you can access members directly as
-hash lookups, eg.
-
- # tied # non-tied
- $Point{x} vs. $Point->{x}
-
-=item *
-with tied structures, when you try to fetch or store a
-member that is not part of the structure, it will result
-in a warning, eg.
-
- print $Point{z};
- # this will warn: 'z' is not a member of Win32::API::Struct POINT
-
-=item *
-when you pass a tied structure as a Win32::API parameter,
-remember to backslash it, eg.
-
- # tied # non-tied
- GetCursorPos( \%Point ) vs. GetCursorPos( $Point )
-
-=back
-
-=head1 AUTHOR
-
-Aldo Calpini ( I<dada@perl.it> ).
-
-=head1 MAINTAINER
-
-Cosimo Streppone ( I<cosimo@cpan.org> ).
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Win32/API/Test.pm b/Master/tlpkg/tlperl/lib/Win32/API/Test.pm
deleted file mode 100644
index 6cbeed6bfac..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/API/Test.pm
+++ /dev/null
@@ -1,120 +0,0 @@
-#
-# Win32::API::Test - Test helper package for Win32::API
-#
-# Version: 0.01
-# Date: 23 Dec 2006
-# Author: Cosimo Streppone <cosimo@cpan.org>
-#
-# $Id: API.pm,v 1.0 2001/10/30 13:57:31 dada Exp $
-#
-package Win32::API::Test;
-
-sub compiler_name () {
- use Config;
- my $cc = $Config{ccname};
- if($cc eq 'cl' || $cc eq 'cl.exe')
- {
- $cc = 'cl';
- }
- return($cc);
-}
-
-sub compiler_version () {
- use Config;
- my $ver = $Config{ccversion} || 0;
- if( $ver =~ /^(\d+\.\d+)/ )
- {
- $ver = 0 + $1;
- }
- return($ver);
-}
-
-#
-# Run the compiler and get version from there...
-# User might be running a compiler different from
-# that used to build perl.
-# For example, Cosimo does. For testing, of course.
-#
-# ***
-# *** IT DOES NOT WORK NOW.
-# *** FOR REASONS I DON'T KNOW, CL.EXE OUTPUTS ITS
-# *** VERSION STRING IN THE FIRST TWO LINES THAT
-# *** I'M NOT ABLE TO CATCH...
-# ***
-#
-sub compiler_version_from_shell () {
- my $cc = compiler_name();
- my $ver;
- # MSVC
- if($cc eq 'cl')
- {
- my @ver = `$cc`;
- my $ver = join('',@ver);
- print 'VER:'.$ver.':'."\n";
- if($ver =~ /Version (\d[\d\.]+)/ms )
- {
- $ver = $1;
- }
- }
- # GCC
- elsif($cc eq 'cc' || $cc eq 'gcc' || $cc eq 'winegcc' )
- {
- $ver = join('', `$cc --version`);
- if($ver =~ /gcc.*(\d[\d+]+)/ms )
- {
- $ver = $1;
- }
- }
- # Borland C
- elsif($cc eq 'bcc32' || $cc eq 'bcc')
- {
- $ver = join('', `$cc`);
- if($ver =~ /Borland C\+\+ (\d[\d\.]+)/ms )
- {
- $ver = $1;
- }
- }
- return($ver);
-}
-
-sub find_test_dll () {
- require File::Spec;
- my $dll_name = $_[0];
- my @paths = qw(.. ../t ../t/dll . ./dll ./t/dll);
- while(my $path = shift @paths)
- {
- $dll = File::Spec->catfile($path, $dll_name);
- return $dll if -s $dll;
- }
- return(undef);
-}
-
-1;
-
-__END__
-
-
-#######################################################################
-# DOCUMENTATION
-#
-
-=head1 NAME
-
-Win32::API::Test - Test helper package for Win32::API
-
-=head1 SYNOPSIS
-
- my $test_dll = Win32::API::Test::find_test_dll('API_test.dll');
-
-Check the t/*.t test scripts for more details.
-
-=head1 DESCRIPTION
-
-Simple package to hold Win32::API test suite helper functions.
-No more, no less.
-
-=head1 AUTHOR
-
-Cosimo Streppone ( I<cosimo@cpan.org> )
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Win32/API/Type.pm b/Master/tlpkg/tlperl/lib/Win32/API/Type.pm
deleted file mode 100644
index 334b0b731e1..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/API/Type.pm
+++ /dev/null
@@ -1,446 +0,0 @@
-package Win32::API::Type;
-
-# See the bottom of this file for the POD documentation. Search for the
-# string '=head'.
-
-#######################################################################
-#
-# Win32::API::Type - Perl Win32 API type definitions
-#
-# Author: Aldo Calpini <dada@perl.it>
-# Maintainer: Cosimo Streppone <cosimo@cpan.org>
-#
-# $Id: Type.pm,v 1.0 2001/10/30 13:57:31 dada Exp $
-#######################################################################
-
-$VERSION = '0.47';
-
-use Carp;
-
-require Exporter; # to export the constants to the main:: space
-require DynaLoader; # to dynuhlode the module.
-@ISA = qw( Exporter DynaLoader );
-
-use vars qw( %Known %PackSize %Modifier %Pointer );
-
-sub DEBUG {
- if ($Win32::API::DEBUG) {
- printf @_ if @_ or return 1;
- } else {
- return 0;
- }
-}
-
-%Known = ();
-%PackSize = ();
-%Modifier = ();
-%Pointer = ();
-
-# Initialize data structures at startup.
-# Aldo wants to keep the <DATA> approach.
-#
-my $section = 'nothing';
-foreach (<DATA>) {
- next if /^\s*#/ or /^\s*$/;
- chomp;
- if( /\[(.+)\]/) {
- $section = $1;
- next;
- }
- if($section eq 'TYPE') {
- my($name, $packing) = split(/\s+/);
- # DEBUG "(PM)Type::INIT: Known('$name') => '$packing'\n";
- $Known{$name} = $packing;
- } elsif($section eq 'PACKSIZE') {
- my($packing, $size) = split(/\s+/);
- # DEBUG "(PM)Type::INIT: PackSize('$packing') => '$size'\n";
- $PackSize{$packing} = $size;
- } elsif($section eq 'MODIFIER') {
- my($modifier, $mapto) = split(/\s+/, $_, 2);
- my %maps = ();
- foreach my $item (split(/\s+/, $mapto)) {
- my($k, $v) = split(/=/, $item);
- $maps{$k} = $v;
- }
- # DEBUG "(PM)Type::INIT: Modifier('$modifier') => '%maps'\n";
- $Modifier{$modifier} = { %maps };
- } elsif($section eq 'POINTER') {
- my($pointer, $pointto) = split(/\s+/);
- # DEBUG "(PM)Type::INIT: Pointer('$pointer') => '$pointto'\n";
- $Pointer{$pointer} = $pointto;
- }
-}
-close(DATA);
-
-sub new {
- my $class = shift;
- my($type) = @_;
- my $packing = packing($type);
- my $size = sizeof($type);
- my $self = {
- type => $type,
- packing => $packing,
- size => $size,
- };
- return bless $self;
-}
-
-sub typedef {
- my $class = shift;
- my($name, $type) = @_;
- my $packing = packing($type, $name);
- DEBUG "(PM)Type::typedef: packing='$packing'\n";
- my $size = sizeof($type);
- $Known{$name} = $packing;
- return 1;
-}
-
-
-sub is_known {
- my $self = shift;
- my $type = shift;
- $type = $self unless defined $type;
- if(ref($type) =~ /Win32::API::Type/) {
- return 1;
- } else {
- return defined packing($type);
- }
-}
-
-sub sizeof {
- my $self = shift;
- my $type = shift;
- $type = $self unless defined $type;
- if(ref($type) =~ /Win32::API::Type/) {
- return $self->{size};
- } else {
- my $packing = packing($type);
- if($packing =~ /(\w)\*(\d+)/) {
- return $PackSize{ $1 } * $2;
- } else {
- return $PackSize{ $packing };
- }
- }
-}
-
-sub packing {
- # DEBUG "(PM)Type::packing: called by ". join("::", (caller(1))[0,3]). "\n";
- my $self = shift;
- my $is_pointer = 0;
- if(ref($self) =~ /Win32::API::Type/) {
- # DEBUG "(PM)Type::packing: got an object\n";
- return $self->{packing};
- }
- my $type = ($self eq 'Win32::API::Type') ? shift : $self;
- my $name = shift;
-
- # DEBUG "(PM)Type::packing: got '$type', '$name'\n";
- my($modifier, $size, $packing);
- if(exists $Pointer{$type}) {
- # DEBUG "(PM)Type::packing: got '$type', is really '$Pointer{$type}'\n";
- $type = $Pointer{$type};
- $is_pointer = 1;
- } elsif($type =~ /(\w+)\s+(\w+)/) {
- $modifier = $1;
- $type = $2;
- # DEBUG "(PM)packing: got modifier '$modifier', type '$type'\n";
- }
-
- $type =~ s/\*$//;
-
- if(exists $Known{$type}) {
- if(defined $name and $name =~ s/\[(.*)\]$//) {
- $size = $1;
- $packing = $Known{$type}[0]."*".$size;
- # DEBUG "(PM)Type::packing: composite packing: '$packing' '$size'\n";
- } else {
- $packing = $Known{$type};
- if($is_pointer and $packing eq 'c') {
- $packing = "p";
- }
- # DEBUG "(PM)Type::packing: simple packing: '$packing'\n";
- }
- if(defined $modifier and exists $Modifier{$modifier}->{$type}) {
- # DEBUG "(PM)Type::packing: applying modifier '$modifier' -> '$Modifier{$modifier}->{$type}'\n";
- $packing = $Modifier{$modifier}->{$type};
- }
- return $packing;
- } else {
- # DEBUG "(PM)Type::packing: NOT FOUND\n";
- return undef;
- }
-}
-
-
-sub is_pointer {
- my $self = shift;
- my $type = shift;
- $type = $self unless defined $type;
- if(ref($type) =~ /Win32::API::Type/) {
- return 1;
- } else {
- if($type =~ /\*$/) {
- return 1;
- } else {
- return exists $Pointer{$type};
- }
- }
-}
-
-sub Pack {
- my $type = $_[0];
-
- if(packing($type) eq 'c' and is_pointer($type)) {
- $_[1] = pack("Z*", $_[1]);
- return $_[1];
- }
- $_[1] = pack( packing($type), $_[1]);
- return $_[1];
-}
-
-sub Unpack {
- my $type = $_[0];
- if(packing($type) eq 'c' and is_pointer($type)) {
- DEBUG "(PM)Type::Unpack: got packing 'c', is a pointer, unpacking 'Z*' '$_[1]'\n";
- $_[1] = unpack("Z*", $_[1]);
- DEBUG "(PM)Type::Unpack: returning '$_[1]'\n";
- return $_[1];
- }
- DEBUG "(PM)Type::Unpack: unpacking '".packing($type)."' '$_[1]'\n";
- $_[1] = unpack( packing($type), $_[1]);
- DEBUG "(PM)Type::Unpack: returning '$_[1]'\n";
- return $_[1];
-}
-
-1;
-
-#######################################################################
-# DOCUMENTATION
-#
-
-=head1 NAME
-
-Win32::API::Type - C type support package for Win32::API
-
-=head1 SYNOPSIS
-
- use Win32::API;
-
- Win32::API::Type->typedef( 'my_number', 'LONG' );
-
-
-=head1 ABSTRACT
-
-This module is a support package for Win32::API that implements
-C types for the import with prototype functionality.
-
-See L<Win32::API> for more info about its usage.
-
-=head1 DESCRIPTION
-
-This module is automatically imported by Win32::API, so you don't
-need to 'use' it explicitly. These are the methods of this package:
-
-=over 4
-
-=item C<typedef NAME, TYPE>
-
-This method defines a new type named C<NAME>. This actually just
-creates an alias for the already-defined type C<TYPE>, which you
-can use as a parameter in a Win32::API call.
-
-=item C<sizeof TYPE>
-
-This returns the size, in bytes, of C<TYPE>. Acts just like
-the C function of the same name.
-
-=item C<is_known TYPE>
-
-Returns true if C<TYPE> is known by Win32::API::Type, false
-otherwise.
-
-=back
-
-=head2 SUPPORTED TYPES
-
-This module should recognize all the types defined in the
-Win32 Platform SDK header files.
-Please see the source for this module, in the C<__DATA__> section,
-for the full list.
-
-=head1 AUTHOR
-
-Aldo Calpini ( I<dada@perl.it> ).
-
-=head1 MAINTAINER
-
-Cosimo Streppone ( I<cosimo@cpan.org> ).
-
-=cut
-
-
-__DATA__
-
-[TYPE]
-ATOM s
-BOOL L
-BOOLEAN c
-BYTE C
-CHAR c
-COLORREF L
-DWORD L
-DWORD32 L
-DWORD64 Q
-FLOAT f
-HACCEL L
-HANDLE L
-HBITMAP L
-HBRUSH L
-HCOLORSPACE L
-HCONV L
-HCONVLIST L
-HCURSOR L
-HDC L
-HDDEDATA L
-HDESK L
-HDROP L
-HDWP L
-HENHMETAFILE L
-HFILE L
-HFONT L
-HGDIOBJ L
-HGLOBAL L
-HHOOK L
-HICON L
-HIMC L
-HINSTANCE L
-HKEY L
-HKL L
-HLOCAL L
-HMENU L
-HMETAFILE L
-HMODULE L
-HPALETTE L
-HPEN L
-HRGN L
-HRSRC L
-HSZ L
-HWINSTA L
-HWND L
-INT i
-INT32 i
-INT64 q
-LANGID s
-LCID L
-LCSCSTYPE L
-LCSGAMUTMATCH L
-LCTYPE L
-LONG l
-LONG32 l
-LONG64 q
-LONGLONG q
-LPARAM L
-LRESULT L
-REGSAM L
-SC_HANDLE L
-SC_LOCK L
-SERVICE_STATUS_HANDLE L
-SHORT s
-SIZE_T L
-SSIZE_T L
-TBYTE c
-TCHAR C
-UCHAR C
-UINT I
-UINT_PTR L
-UINT32 I
-UINT64 Q
-ULONG L
-ULONG32 L
-ULONG64 Q
-ULONGLONG Q
-USHORT S
-WCHAR S
-WORD S
-WPARAM L
-VOID c
-
-int i
-long l
-float f
-double d
-char c
-
-#CRITICAL_SECTION 24 -- a structure
-#LUID ? 8 -- a structure
-#VOID 0
-#CONST 4
-#FILE_SEGMENT_ELEMENT 8 -- a structure
-
-[PACKSIZE]
-c 1
-C 1
-d 8
-f 4
-i 4
-I 4
-l 4
-L 4
-q 8
-Q 8
-s 2
-S 2
-p 4
-
-[MODIFIER]
-unsigned int=I long=L short=S char=C
-
-[POINTER]
-INT_PTR INT
-LPBOOL BOOL
-LPBYTE BYTE
-LPCOLORREF COLORREF
-LPCSTR CHAR
-#LPCTSTR CHAR or WCHAR
-LPCTSTR CHAR
-LPCVOID any
-LPCWSTR WCHAR
-LPDWORD DWORD
-LPHANDLE HANDLE
-LPINT INT
-LPLONG LONG
-LPSTR CHAR
-#LPTSTR CHAR or WCHAR
-LPTSTR CHAR
-LPVOID VOID
-LPWORD WORD
-LPWSTR WCHAR
-
-PBOOL BOOL
-PBOOLEAN BOOL
-PBYTE BYTE
-PCHAR CHAR
-PCSTR CSTR
-PCWCH CWCH
-PCWSTR CWSTR
-PDWORD DWORD
-PFLOAT FLOAT
-PHANDLE HANDLE
-PHKEY HKEY
-PINT INT
-PLCID LCID
-PLONG LONG
-PSHORT SHORT
-PSTR CHAR
-#PTBYTE TBYTE --
-#PTCHAR TCHAR --
-#PTSTR CHAR or WCHAR
-PTSTR CHAR
-PUCHAR UCHAR
-PUINT UINT
-PULONG ULONG
-PUSHORT USHORT
-PVOID VOID
-PWCHAR WCHAR
-PWORD WORD
-PWSTR WCHAR
diff --git a/Master/tlpkg/tlperl/lib/Win32/ChangeNotify.pm b/Master/tlpkg/tlperl/lib/Win32/ChangeNotify.pm
deleted file mode 100644
index a86682da376..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/ChangeNotify.pm
+++ /dev/null
@@ -1,198 +0,0 @@
-#---------------------------------------------------------------------
-package Win32::ChangeNotify;
-#
-# Copyright 1998 Christopher J. Madsen
-#
-# Created: 3 Feb 1998 from the ActiveWare version
-# (c) 1995 Microsoft Corporation. All rights reserved.
-# Developed by ActiveWare Internet Corp., http://www.ActiveWare.com
-#
-# Other modifications (c) 1997 by Gurusamy Sarathy <gsar@activestate.com>
-#
-# Author: Christopher J. Madsen <cjm@pobox.com>
-# Version: 1.02 (13-Jun-1999)
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the same terms as Perl itself.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either the
-# GNU General Public License or the Artistic License for more details.
-#
-# Monitor directory for changes
-#---------------------------------------------------------------------
-# 1.04 -Minor changes by Yves Orton to fix the trueness of $subtree (Dec 2002)
-
-$VERSION = '1.05';
-
-use Carp;
-use Win32::IPC 1.00 '/./'; # Import everything
-require Exporter;
-require DynaLoader;
-
-@ISA = qw(Exporter DynaLoader Win32::IPC);
-# 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(
- FILE_NOTIFY_CHANGE_ATTRIBUTES
- FILE_NOTIFY_CHANGE_DIR_NAME
- FILE_NOTIFY_CHANGE_FILE_NAME
- FILE_NOTIFY_CHANGE_LAST_WRITE
- FILE_NOTIFY_CHANGE_SECURITY
- FILE_NOTIFY_CHANGE_SIZE
- INFINITE
-);
-@EXPORT_OK = qw(
- wait_all wait_any
-);
-
-sub AUTOLOAD {
- # This AUTOLOAD is used to 'autoload' constants from the constant()
- # XS function.
-
- my $constname;
- ($constname = $AUTOLOAD) =~ s/.*:://;
- if ($constname =~ /^(?:FILE_NOTIFY_CHANGE_|INFINITE)/) {
- local $! = 0;
- my $val = constant($constname);
- croak("$constname is not defined by Win32::ChangeNotify") if $! != 0;
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
- }
-} # end AUTOLOAD
-
-bootstrap Win32::ChangeNotify;
-
-sub new {
- my ($class,$path,$subtree,$filter) = @_;
-
- if ($filter =~ /\A[\s|A-Z_]+\Z/i) {
- $filter = 0;
- foreach (split(/[\s|]+/, $_[3])) {
- $filter |= constant("FILE_NOTIFY_CHANGE_" . uc $_);
- carp "Invalid filter $_" if $!;
- }
- }
- _new($class,$path,$subtree,$filter);
-} # end new
-
-sub Close { &close }
-
-sub FindFirst { $_[0] = Win32::ChangeNotify->_new(@_[1..3]); }
-
-sub FindNext { &reset }
-
-1;
-__END__
-
-=head1 NAME
-
-Win32::ChangeNotify - Monitor events related to files and directories
-
-=head1 SYNOPSIS
-
- require Win32::ChangeNotify;
-
- $notify = Win32::ChangeNotify->new($Path,$WatchSubTree,$Events);
- $notify->wait or warn "Something failed: $!\n";
- # There has been a change.
-
-=head1 DESCRIPTION
-
-This module allows the user to use a Win32 change notification event
-object from Perl. This allows the Perl program to monitor events
-relating to files and directory trees.
-
-Unfortunately, the Win32 API which implements this feature does not
-provide any indication of I<what> triggered the notification (as far
-as I know). If you're monitoring a directory for file changes, and
-you need to know I<which> file changed, you'll have to find some other
-way of determining that. Depending on exactly what you're trying to
-do, you may be able to check file timestamps to find recently changed
-files. Or, you may need to cache the directory contents somewhere and
-compare the current contents to your cached copy when you receive a
-change notification.
-
-The C<wait> method and C<wait_all> & C<wait_any> functions are
-inherited from the L<"Win32::IPC"> module.
-
-=head2 Methods
-
-=over 4
-
-=item $notify = Win32::ChangeNotify->new($path, $subtree, $filter)
-
-Constructor for a new ChangeNotification object. C<$path> is the
-directory to monitor. If C<$subtree> is true, then all directories
-under C<$path> will be monitored. C<$filter> indicates what events
-should trigger a notification. It should be a string containing any
-of the following flags (separated by whitespace and/or C<|>).
-
- ATTRIBUTES Any attribute change
- DIR_NAME Any directory name change
- FILE_NAME Any file name change (creating/deleting/renaming)
- LAST_WRITE Any change to a file's last write time
- SECURITY Any security descriptor change
- SIZE Any change in a file's size
-
-(C<$filter> can also be an integer composed from the
-C<FILE_NOTIFY_CHANGE_*> constants.)
-
-=item $notify->close
-
-Shut down monitoring. You could just C<undef $notify> instead (but
-C<close> works even if there are other copies of the object). This
-happens automatically when your program exits.
-
-=item $notify->reset
-
-Resets the ChangeNotification object after a change has been detected.
-The object will become signalled again after the next change. (It is
-OK to call this immediately after C<new>, but it is not required.)
-
-=item $notify->wait
-
-See L<"Win32::IPC">. Remember to call C<reset> afterwards if you want
-to continue monitoring.
-
-=back
-
-=head2 Deprecated Functions and Methods
-
-B<Win32::ChangeNotify> still supports the ActiveWare syntax, but its
-use is deprecated.
-
-=over 4
-
-=item FindFirst($Obj,$PathName,$WatchSubTree,$Filter)
-
-Use
-
- $Obj = Win32::ChangeNotify->new($PathName,$WatchSubTree,$Filter)
-
-instead.
-
-=item $obj->FindNext()
-
-Use C<$obj-E<gt>reset> instead.
-
-=item $obj->Close()
-
-Use C<$obj-E<gt>close> instead.
-
-=back
-
-=head1 AUTHOR
-
-Christopher J. Madsen E<lt>F<cjm@pobox.com>E<gt>
-
-Loosely based on the original module by ActiveWare Internet Corp.,
-F<http://www.ActiveWare.com>
-
-=cut
-
-# Local Variables:
-# tmtrack-file-task: "Win32::ChangeNotify"
-# End:
diff --git a/Master/tlpkg/tlperl/lib/Win32/Client.pl b/Master/tlpkg/tlperl/lib/Win32/Client.pl
deleted file mode 100644
index 6ae585b7c91..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/Client.pl
+++ /dev/null
@@ -1,63 +0,0 @@
-use strict;
-use Win32::Pipe;
-
-####
-# You may notice that named pipe names are case INsensitive!
-####
-
-my $PipeName = "\\\\.\\pipe\\TEST this LoNG Named Pipe!";
-
-print "I am falling asleep for few seconds, so that we give time\nFor the server to get up and running.\n";
-sleep(4);
-print "\nOpening a pipe ...\n";
-
-if (my $Pipe = Win32::Pipe->new($PipeName)) {
- print "\n\nPipe has been opened, writing data to it...\n";
- print "-------------------------------------------\n";
- $Pipe->Write("\n" . Win32::Pipe::Credit() . "\n\n");
- while () {
- print "\nCommands:\n";
- print " FILE:xxxxx Dumps the file xxxxx.\n";
- print " Credit Dumps the credit screen.\n";
- print " Quit Quits this client (server remains running).\n";
- print " Exit Exits both client and server.\n";
- print " -----------------------------------------\n";
-
- my $In = <STDIN>;
- chop($In);
-
- if ((my $File = $In) =~ s/^file:(.*)/$1/i){
- if (-s $File) {
- if (open(FILE, "< $File")) {
- while ($File = <FILE>) {
- $In .= $File;
- };
- close(FILE);
- }
- }
- }
-
- if ($In =~ /^credit$/i){
- $In = "\n" . Win32::Pipe::Credit() . "\n\n";
- }
-
- unless ($Pipe->Write($In)) {
- print "Writing to pipe failed.\n";
- last;
- }
-
- if ($In =~ /^(exit|quit)$/i) {
- print "\nATTENTION: Closing due to user request.\n";
- last;
- }
- }
- print "Closing...\n";
- $Pipe->Close();
-}
-else {
- my($Error, $ErrorText) = Win32::Pipe::Error();
- print "Error:$Error \"$ErrorText\"\n";
- sleep(4);
-}
-
-print "Done...\n";
diff --git a/Master/tlpkg/tlperl/lib/Win32/Clipboard.pm b/Master/tlpkg/tlperl/lib/Win32/Clipboard.pm
deleted file mode 100644
index ba4038a5ade..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/Clipboard.pm
+++ /dev/null
@@ -1,369 +0,0 @@
-package Win32::Clipboard;
-#######################################################################
-#
-# Win32::Clipboard - Interaction with the Windows clipboard
-#
-# Version: 0.52
-# Author: Aldo Calpini <dada@perl.it>
-#
-# Modified by: Hideyo Imazu <himazu@gmail.com>
-#
-#######################################################################
-
-require Exporter; # to export the constants to the main:: space
-require DynaLoader; # to dynuhlode the module.
-
-@ISA = qw( Exporter DynaLoader );
-@EXPORT = qw(
- CF_TEXT
- CF_BITMAP
- CF_METAFILEPICT
- CF_SYLK
- CF_DIF
- CF_TIFF
- CF_OEMTEXT
- CF_DIB
- CF_PALETTE
- CF_PENDATA
- CF_RIFF
- CF_WAVE
- CF_UNICODETEXT
- CF_ENHMETAFILE
- CF_HDROP
- CF_LOCALE
-);
-
-#######################################################################
-# This AUTOLOAD is used to 'autoload' constants from the constant()
-# XS function. If a constant is not found then control is passed
-# to the AUTOLOAD in AutoLoader.
-#
-
-sub AUTOLOAD {
- my($constname);
- ($constname = $AUTOLOAD) =~ s/.*:://;
- #reset $! to zero to reset any current errors.
- local $! = 0;
- my $val = constant($constname, @_ ? $_[0] : 0);
- if ($! != 0) {
- if ($! =~ /Invalid/) {
- $AutoLoader::AUTOLOAD = $AUTOLOAD;
- goto &AutoLoader::AUTOLOAD;
- } else {
- my ($pack, $file, $line) = caller;
- die "Win32::Clipboard::$constname is not defined, used at $file line $line.";
- }
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-
-#######################################################################
-# STATIC OBJECT PROPERTIES
-#
-$VERSION = "0.5201";
-
-#######################################################################
-# FUNCTIONS
-#
-
-sub new {
- my($class, $value) = @_;
- my $self = "I'm the Clipboard!";
- Set($value) if defined($value);
- return bless(\$self);
-}
-
-sub Version {
- return $VERSION;
-}
-
-sub Get {
- if( IsBitmap() ) { return GetBitmap(); }
- elsif( IsFiles() ) { return GetFiles(); }
- else { return GetText(); }
-}
-
-sub TIESCALAR {
- my $class = shift;
- my $value = shift;
- Set($value) if defined $value;
- my $self = "I'm the Clipboard!";
- return bless \$self, $class;
-}
-
-sub FETCH { Get() }
-sub STORE { shift; Set(@_) }
-
-sub DESTROY {
- my($self) = @_;
- undef $self;
- StopClipboardViewer();
-}
-
-END {
- StopClipboardViewer();
-}
-
-#######################################################################
-# dynamically load in the Clipboard.pll module.
-#
-
-bootstrap Win32::Clipboard;
-
-#######################################################################
-# a little hack to use the module itself as a class.
-#
-
-sub main::Win32::Clipboard {
- my($value) = @_;
- my $self={};
- my $result = Win32::Clipboard::Set($value) if defined($value);
- return bless($self, "Win32::Clipboard");
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Win32::Clipboard - Interaction with the Windows clipboard
-
-=head1 SYNOPSIS
-
- use Win32::Clipboard;
-
- $CLIP = Win32::Clipboard();
-
- print "Clipboard contains: ", $CLIP->Get(), "\n";
-
- $CLIP->Set("some text to copy into the clipboard");
-
- $CLIP->Empty();
-
- $CLIP->WaitForChange();
- print "Clipboard has changed!\n";
-
-
-=head1 DESCRIPTION
-
-This module lets you interact with the Windows clipboard: you can get its content,
-set it, empty it, or let your script sleep until it changes.
-This version supports 3 formats for clipboard data:
-
-=over 4
-
-=item *
-text (C<CF_TEXT>)
-
-The clipboard contains some text; this is the B<only> format you can use to set
-clipboard data; you get it as a single string.
-
-Example:
-
- $text = Win32::Clipboard::GetText();
- print $text;
-
-=item *
-bitmap (C<CF_DIB>)
-
-The clipboard contains an image, either a bitmap or a picture copied in the
-clipboard from a graphic application. The data you get is a binary buffer
-ready to be written to a bitmap (BMP format) file.
-
-Example:
-
- $image = Win32::Clipboard::GetBitmap();
- open BITMAP, ">some.bmp";
- binmode BITMAP;
- print BITMAP $image;
- close BITMAP;
-
-=item *
-list of files (C<CF_HDROP>)
-
-The clipboard contains files copied or cutted from an Explorer-like
-application; you get a list of filenames.
-
-Example:
-
- @files = Win32::Clipboard::GetFiles();
- print join("\n", @files);
-
-=back
-
-=head2 REFERENCE
-
-All the functions can be used either with their full name (eg. B<Win32::Clipboard::Get>)
-or as methods of a C<Win32::Clipboard> object.
-For the syntax, refer to L</SYNOPSIS> above. Note also that you can create a clipboard
-object and set its content at the same time with:
-
- $CLIP = Win32::Clipboard("blah blah blah");
-
-or with the more common form:
-
- $CLIP = new Win32::Clipboard("blah blah blah");
-
-If you prefer, you can even tie the Clipboard to a variable like this:
-
- tie $CLIP, 'Win32::Clipboard';
-
- print "Clipboard content: $CLIP\n";
-
- $CLIP = "some text to copy to the clipboard...";
-
-In this case, you can still access other methods using the tied() function:
-
- tied($CLIP)->Empty;
- print "got the picture" if tied($CLIP)->IsBitmap;
-
-=over 4
-
-=item Empty()
-
-Empty the clipboard.
-
-=for html <P>
-
-=item EnumFormats()
-
-Returns an array of identifiers describing the format for the data currently in the
-clipboard. Formats can be standard ones (described in the L</CONSTANTS> section) or
-application-defined custom ones. See also IsFormatAvailable().
-
-=for html <P>
-
-=item Get()
-
-Returns the clipboard content; note that the result depends on the nature of
-clipboard data; to ensure that you get only the desired format, you should use
-GetText(), GetBitmap() or GetFiles() instead. Get() is in fact implemented as:
-
- if( IsBitmap() ) { return GetBitmap(); }
- elsif( IsFiles() ) { return GetFiles(); }
- else { return GetText(); }
-
-See also IsBitmap(), IsFiles(), IsText(), EnumFormats() and IsFormatAvailable()
-to check the clipboard format before getting data.
-
-=for html <P>
-
-=item GetAs(FORMAT)
-
-Returns the clipboard content in the desired FORMAT (can be one of the constants
-defined in the L</CONSTANTS> section or a custom format). Note that the only
-meaningful identifiers are C<CF_TEXT>, C<CF_DIB> and C<CF_HDROP>; any other
-format is treated as a string.
-
-=for html <P>
-
-=item GetBitmap()
-
-Returns the clipboard content as an image, or C<undef> on errors.
-
-=for html <P>
-
-=item GetFiles()
-
-Returns the clipboard content as a list of filenames, or C<undef> on errors.
-
-=for html <P>
-
-=item GetFormatName(FORMAT)
-
-Returns the name of the specified custom clipboard format, or C<undef> on errors;
-note that you cannot get the name of the standard formats (described in the
-L</CONSTANTS> section).
-
-=for html <P>
-
-=item GetText()
-
-Returns the clipboard content as a string, or C<undef> on errors.
-
-=for html <P>
-
-=item IsBitmap()
-
-Returns a boolean value indicating if the clipboard contains an image.
-See also GetBitmap().
-
-=for html <P>
-
-=item IsFiles()
-
-Returns a boolean value indicating if the clipboard contains a list of
-files. See also GetFiles().
-
-=for html <P>
-
-=item IsFormatAvailable(FORMAT)
-
-Checks if the clipboard data matches the specified FORMAT (one of the constants
-described in the L</CONSTANTS> section); returns zero if the data does not match,
-a nonzero value if it matches.
-
-=for html <P>
-
-=item IsText()
-
-Returns a boolean value indicating if the clipboard contains text.
-See also GetText().
-
-=for html <P>
-
-=item Set(VALUE)
-
-Set the clipboard content to the specified string.
-
-=for html <P>
-
-=item WaitForChange([TIMEOUT])
-
-This function halts the script until the clipboard content changes. If you specify
-a C<TIMEOUT> value (in milliseconds), the function will return when this timeout
-expires, even if the clipboard hasn't changed. If no value is given, it will wait
-indefinitely. Returns 1 if the clipboard has changed, C<undef> on errors.
-
-=back
-
-=head2 CONSTANTS
-
-These constants are the standard clipboard formats recognized by Win32::Clipboard:
-
- CF_TEXT 1
- CF_DIB 8
- CF_HDROP 15
-
-The following formats are B<not recognized> by Win32::Clipboard; they are,
-however, exported constants and can eventually be used with the EnumFormats(),
-IsFormatAvailable() and GetAs() functions:
-
- CF_BITMAP 2
- CF_METAFILEPICT 3
- CF_SYLK 4
- CF_DIF 5
- CF_TIFF 6
- CF_OEMTEXT 7
- CF_PALETTE 9
- CF_PENDATA 10
- CF_RIFF 11
- CF_WAVE 12
- CF_UNICODETEXT 13
- CF_ENHMETAFILE 14
- CF_LOCALE 16
-
-=head1 AUTHOR
-
-This version was released by Hideyo Imazu <F<himazu@gmail.com>>.
-
-Aldo Calpini <F<dada@perl.it>> was the former maintainer.
-
-Original XS porting by Gurusamy Sarathy <F<gsar@activestate.com>>.
-
-=cut
-
-
diff --git a/Master/tlpkg/tlperl/lib/Win32/Console.pm b/Master/tlpkg/tlperl/lib/Win32/Console.pm
deleted file mode 100644
index 1e3876a6a33..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/Console.pm
+++ /dev/null
@@ -1,1463 +0,0 @@
-#######################################################################
-#
-# Win32::Console - Win32 Console and Character Mode Functions
-#
-#######################################################################
-
-package Win32::Console;
-
-require Exporter;
-require DynaLoader;
-
-$VERSION = "0.07";
-
-@ISA= qw( Exporter DynaLoader );
-@EXPORT = qw(
- BACKGROUND_BLUE
- BACKGROUND_GREEN
- BACKGROUND_INTENSITY
- BACKGROUND_RED
- CAPSLOCK_ON
- CONSOLE_TEXTMODE_BUFFER
- CTRL_BREAK_EVENT
- CTRL_C_EVENT
- ENABLE_ECHO_INPUT
- ENABLE_LINE_INPUT
- ENABLE_MOUSE_INPUT
- ENABLE_PROCESSED_INPUT
- ENABLE_PROCESSED_OUTPUT
- ENABLE_WINDOW_INPUT
- ENABLE_WRAP_AT_EOL_OUTPUT
- ENHANCED_KEY
- FILE_SHARE_READ
- FILE_SHARE_WRITE
- FOREGROUND_BLUE
- FOREGROUND_GREEN
- FOREGROUND_INTENSITY
- FOREGROUND_RED
- LEFT_ALT_PRESSED
- LEFT_CTRL_PRESSED
- NUMLOCK_ON
- GENERIC_READ
- GENERIC_WRITE
- RIGHT_ALT_PRESSED
- RIGHT_CTRL_PRESSED
- SCROLLLOCK_ON
- SHIFT_PRESSED
- STD_INPUT_HANDLE
- STD_OUTPUT_HANDLE
- STD_ERROR_HANDLE
- $FG_BLACK
- $FG_GRAY
- $FG_BLUE
- $FG_LIGHTBLUE
- $FG_RED
- $FG_LIGHTRED
- $FG_GREEN
- $FG_LIGHTGREEN
- $FG_MAGENTA
- $FG_LIGHTMAGENTA
- $FG_CYAN
- $FG_LIGHTCYAN
- $FG_BROWN
- $FG_YELLOW
- $FG_LIGHTGRAY
- $FG_WHITE
- $BG_BLACK
- $BG_GRAY
- $BG_BLUE
- $BG_LIGHTBLUE
- $BG_RED
- $BG_LIGHTRED
- $BG_GREEN
- $BG_LIGHTGREEN
- $BG_MAGENTA
- $BG_LIGHTMAGENTA
- $BG_CYAN
- $BG_LIGHTCYAN
- $BG_BROWN
- $BG_YELLOW
- $BG_LIGHTGRAY
- $BG_WHITE
- $ATTR_NORMAL
- $ATTR_INVERSE
- @CONSOLE_COLORS
-);
-
-
-#######################################################################
-# This AUTOLOAD is used to 'autoload' constants from the constant()
-# XS function. If a constant is not found then control is passed
-# to the AUTOLOAD in AutoLoader.
-#
-
-sub AUTOLOAD {
- my($constname);
- ($constname = $AUTOLOAD) =~ s/.*:://;
- #reset $! to zero to reset any current errors.
- local $! = 0;
- my $val = constant($constname, @_ ? $_[0] : 0);
- if ($! != 0) {
-# if ($! =~ /Invalid/) {
-# $AutoLoader::AUTOLOAD = $AUTOLOAD;
-# goto &AutoLoader::AUTOLOAD;
-# } else {
- ($pack, $file, $line) = caller; undef $pack;
- die "Symbol Win32::Console::$constname not defined, used at $file line $line.";
-# }
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-
-#######################################################################
-# STATIC OBJECT PROPERTIES
-#
-
-# %HandlerRoutineStack = ();
-# $HandlerRoutineRegistered = 0;
-
-#######################################################################
-# PUBLIC METHODS
-#
-
-#========
-sub new {
-#========
- my($class, $param1, $param2) = @_;
-
- my $self = {};
-
- if (defined($param1)
- and ($param1 == constant("STD_INPUT_HANDLE", 0)
- or $param1 == constant("STD_OUTPUT_HANDLE", 0)
- or $param1 == constant("STD_ERROR_HANDLE", 0)))
- {
- $self->{'handle'} = _GetStdHandle($param1);
- }
- else {
- $param1 = constant("GENERIC_READ", 0) | constant("GENERIC_WRITE", 0) unless $param1;
- $param2 = constant("FILE_SHARE_READ", 0) | constant("FILE_SHARE_WRITE", 0) unless $param2;
- $self->{'handle'} = _CreateConsoleScreenBuffer($param1, $param2,
- constant("CONSOLE_TEXTMODE_BUFFER", 0));
- }
- bless $self, $class;
- return $self;
-}
-
-#============
-sub Display {
-#============
- my($self) = @_;
- return undef unless ref($self);
- return _SetConsoleActiveScreenBuffer($self->{'handle'});
-}
-
-#===========
-sub Select {
-#===========
- my($self, $type) = @_;
- return undef unless ref($self);
- return _SetStdHandle($type, $self->{'handle'});
-}
-
-#===========
-sub SetIcon {
-#===========
- my($self, $icon) = @_;
- $icon = $self unless ref($self);
- return _SetConsoleIcon($icon);
-}
-
-#==========
-sub Title {
-#==========
- my($self, $title) = @_;
- $title = $self unless ref($self);
-
- if (defined($title)) {
- return _SetConsoleTitle($title);
- }
- else {
- return _GetConsoleTitle();
- }
-}
-
-#==============
-sub WriteChar {
-#==============
- my($self, $text, $col, $row) = @_;
- return undef unless ref($self);
- return _WriteConsoleOutputCharacter($self->{'handle'},$text,$col,$row);
-}
-
-#=============
-sub ReadChar {
-#=============
- my($self, $size, $col, $row) = @_;
- return undef unless ref($self);
-
- my $buffer = (" " x $size);
- if (_ReadConsoleOutputCharacter($self->{'handle'}, $buffer, $size, $col, $row)) {
- return $buffer;
- }
- else {
- return undef;
- }
-}
-
-#==============
-sub WriteAttr {
-#==============
- my($self, $attr, $col, $row) = @_;
- return undef unless ref($self);
- return _WriteConsoleOutputAttribute($self->{'handle'}, $attr, $col, $row);
-}
-
-#=============
-sub ReadAttr {
-#=============
- my($self, $size, $col, $row) = @_;
- return undef unless ref($self);
- return _ReadConsoleOutputAttribute($self->{'handle'}, $size, $col, $row);
-}
-
-#==========
-sub Write {
-#==========
- my($self,$string) = @_;
- return undef unless ref($self);
- return _WriteConsole($self->{'handle'}, $string);
-}
-
-#=============
-sub ReadRect {
-#=============
- my($self, $left, $top, $right, $bottom) = @_;
- return undef unless ref($self);
-
- my $col = $right - $left + 1;
- my $row = $bottom - $top + 1;
-
- my $buffer = (" " x ($col*$row*4));
- if (_ReadConsoleOutput($self->{'handle'}, $buffer,
- $col, $row, 0, 0,
- $left, $top, $right, $bottom))
- {
- return $buffer;
- }
- else {
- return undef;
- }
-}
-
-#==============
-sub WriteRect {
-#==============
- my($self, $buffer, $left, $top, $right, $bottom) = @_;
- return undef unless ref($self);
-
- my $col = $right - $left + 1;
- my $row = $bottom - $top + 1;
-
- return _WriteConsoleOutput($self->{'handle'}, $buffer,
- $col, $row, 0, 0,
- $left, $top, $right, $bottom);
-}
-
-#===========
-sub Scroll {
-#===========
- my($self, $left1, $top1, $right1, $bottom1,
- $col, $row, $char, $attr,
- $left2, $top2, $right2, $bottom2) = @_;
- return undef unless ref($self);
-
- return _ScrollConsoleScreenBuffer($self->{'handle'},
- $left1, $top1, $right1, $bottom1,
- $col, $row, $char, $attr,
- $left2, $top2, $right2, $bottom2);
-}
-
-#==============
-sub MaxWindow {
-#==============
- my($self, $flag) = @_;
- return undef unless ref($self);
-
- if (not defined($flag)) {
- my @info = _GetConsoleScreenBufferInfo($self->{'handle'});
- return $info[9], $info[10];
- }
- else {
- return _GetLargestConsoleWindowSize($self->{'handle'});
- }
-}
-
-#=========
-sub Info {
-#=========
- my($self) = @_;
- return undef unless ref($self);
- return _GetConsoleScreenBufferInfo($self->{'handle'});
-}
-
-#===========
-sub Window {
-#===========
- my($self, $flag, $left, $top, $right, $bottom) = @_;
- return undef unless ref($self);
-
- if (not defined($flag)) {
- my @info = _GetConsoleScreenBufferInfo($self->{'handle'});
- return $info[5], $info[6], $info[7], $info[8];
- }
- else {
- return _SetConsoleWindowInfo($self->{'handle'}, $flag, $left, $top, $right, $bottom);
- }
-}
-
-#==============
-sub GetEvents {
-#==============
- my($self) = @_;
- return undef unless ref($self);
- return _GetNumberOfConsoleInputEvents($self->{'handle'});
-}
-
-#==========
-sub Flush {
-#==========
- my($self) = @_;
- return undef unless ref($self);
- return _FlushConsoleInputBuffer($self->{'handle'});
-}
-
-#==============
-sub InputChar {
-#==============
- my($self, $number) = @_;
- return undef unless ref($self);
-
- $number = 1 unless defined($number);
-
- my $buffer = (" " x $number);
- if (_ReadConsole($self->{'handle'}, $buffer, $number) == $number) {
- return $buffer;
- }
- else {
- return undef;
- }
-}
-
-#==========
-sub Input {
-#==========
- my($self) = @_;
- return undef unless ref($self);
- return _ReadConsoleInput($self->{'handle'});
-}
-
-#==============
-sub PeekInput {
-#==============
- my($self) = @_;
- return undef unless ref($self);
- return _PeekConsoleInput($self->{'handle'});
-}
-
-#===============
-sub WriteInput {
-#===============
- my($self) = shift;
- return undef unless ref($self);
- return _WriteConsoleInput($self->{'handle'}, @_);
-}
-
-#=========
-sub Mode {
-#=========
- my($self, $mode) = @_;
- return undef unless ref($self);
- if (defined($mode)) {
- return _SetConsoleMode($self->{'handle'}, $mode);
- }
- else {
- return _GetConsoleMode($self->{'handle'});
- }
-}
-
-#========
-sub Cls {
-#========
- my($self, $attr) = @_;
- return undef unless ref($self);
-
- $attr = $ATTR_NORMAL unless defined($attr);
-
- my ($x, $y) = $self->Size();
- my($left, $top, $right ,$bottom) = $self->Window();
- my $vx = $right - $left;
- my $vy = $bottom - $top;
- $self->FillChar(" ", $x*$y, 0, 0);
- $self->FillAttr($attr, $x*$y, 0, 0);
- $self->Cursor(0, 0);
- $self->Window(1, 0, 0, $vx, $vy);
-}
-
-#=========
-sub Attr {
-#=========
- my($self, $attr) = @_;
- return undef unless ref($self);
-
- if (not defined($attr)) {
- return (_GetConsoleScreenBufferInfo($self->{'handle'}))[4];
- }
- else {
- return _SetConsoleTextAttribute($self->{'handle'}, $attr);
- }
-}
-
-#===========
-sub Cursor {
-#===========
- my($self, $col, $row, $size, $visi) = @_;
- return undef unless ref($self);
-
- my $curr_row = 0;
- my $curr_col = 0;
- my $curr_size = 0;
- my $curr_visi = 0;
- my $return = 0;
- my $discard = 0;
-
-
- if (defined($col)) {
- $row = -1 if not defined($row);
- if ($col == -1 or $row == -1) {
- ($discard, $discard, $curr_col, $curr_row) = _GetConsoleScreenBufferInfo($self->{'handle'});
- $col=$curr_col if $col==-1;
- $row=$curr_row if $row==-1;
- }
- $return += _SetConsoleCursorPosition($self->{'handle'}, $col, $row);
- if (defined($size) and defined($visi)) {
- if ($size == -1 or $visi == -1) {
- ($curr_size, $curr_visi) = _GetConsoleCursorInfo($self->{'handle'});
- $size = $curr_size if $size == -1;
- $visi = $curr_visi if $visi == -1;
- }
- $size = 1 if $size < 1;
- $size = 99 if $size > 99;
- $return += _SetConsoleCursorInfo($self->{'handle'}, $size, $visi);
- }
- return $return;
- }
- else {
- ($discard, $discard, $curr_col, $curr_row) = _GetConsoleScreenBufferInfo($self->{'handle'});
- ($curr_size, $curr_visi) = _GetConsoleCursorInfo($self->{'handle'});
- return ($curr_col, $curr_row, $curr_size, $curr_visi);
- }
-}
-
-#=========
-sub Size {
-#=========
- my($self, $col, $row) = @_;
- return undef unless ref($self);
-
- if (not defined($col)) {
- ($col, $row) = _GetConsoleScreenBufferInfo($self->{'handle'});
- return ($col, $row);
- }
- else {
- $row = -1 if not defined($row);
- if ($col == -1 or $row == -1) {
- ($curr_col, $curr_row) = _GetConsoleScreenBufferInfo($self->{'handle'});
- $col=$curr_col if $col==-1;
- $row=$curr_row if $row==-1;
- }
- return _SetConsoleScreenBufferSize($self->{'handle'}, $col, $row);
- }
-}
-
-#=============
-sub FillAttr {
-#=============
- my($self, $attr, $number, $col, $row) = @_;
- return undef unless ref($self);
-
- $number = 1 unless $number;
-
- if (!defined($col) or !defined($row) or $col == -1 or $row == -1) {
- ($discard, $discard,
- $curr_col, $curr_row) = _GetConsoleScreenBufferInfo($self->{'handle'});
- $col = $curr_col if !defined($col) or $col == -1;
- $row = $curr_row if !defined($row) or $row == -1;
- }
- return _FillConsoleOutputAttribute($self->{'handle'}, $attr, $number, $col, $row);
-}
-
-#=============
-sub FillChar {
-#=============
- my($self, $char, $number, $col, $row) = @_;
- return undef unless ref($self);
-
- if (!defined($col) or !defined($row) or $col == -1 or $row == -1) {
- ($discard, $discard,
- $curr_col, $curr_row) = _GetConsoleScreenBufferInfo($self->{'handle'});
- $col = $curr_col if !defined($col) or $col == -1;
- $row = $curr_row if !defined($row) or $row == -1;
- }
- return _FillConsoleOutputCharacter($self->{'handle'}, $char, $number, $col, $row);
-}
-
-#============
-sub InputCP {
-#============
- my($self, $codepage) = @_;
- $codepage = $self if (defined($self) and ref($self) ne "Win32::Console");
- if (defined($codepage)) {
- return _SetConsoleCP($codepage);
- }
- else {
- return _GetConsoleCP();
- }
-}
-
-#=============
-sub OutputCP {
-#=============
- my($self, $codepage) = @_;
- $codepage = $self if (defined($self) and ref($self) ne "Win32::Console");
- if (defined($codepage)) {
- return _SetConsoleOutputCP($codepage);
- }
- else {
- return _GetConsoleOutputCP();
- }
-}
-
-#======================
-sub GenerateCtrlEvent {
-#======================
- my($self, $type, $pid) = @_;
- $type = constant("CTRL_C_EVENT", 0) unless defined($type);
- $pid = 0 unless defined($pid);
- return _GenerateConsoleCtrlEvent($type, $pid);
-}
-
-#===================
-#sub SetCtrlHandler {
-#===================
-# my($name, $add) = @_;
-# $add = 1 unless defined($add);
-# my @nor = keys(%HandlerRoutineStack);
-# if ($add == 0) {
-# foreach $key (@nor) {
-# delete $HandlerRoutineStack{$key}, last if $HandlerRoutineStack{$key}==$name;
-# }
-# $HandlerRoutineRegistered--;
-# } else {
-# if ($#nor == -1) {
-# my $r = _SetConsoleCtrlHandler();
-# if (!$r) {
-# print "WARNING: SetConsoleCtrlHandler failed...\n";
-# }
-# }
-# $HandlerRoutineRegistered++;
-# $HandlerRoutineStack{$HandlerRoutineRegistered} = $name;
-# }
-#}
-
-#===================
-sub get_Win32_IPC_HANDLE { # So Win32::IPC can wait on a console handle
-#===================
- $_[0]->{'handle'};
-}
-
-########################################################################
-# PRIVATE METHODS
-#
-
-#================
-#sub CtrlHandler {
-#================
-# my($ctrltype) = @_;
-# my $routine;
-# my $result = 0;
-# CALLEM: foreach $routine (sort { $b <=> $a } keys %HandlerRoutineStack) {
-# #print "CtrlHandler: calling $HandlerRoutineStack{$routine}($ctrltype)\n";
-# $result = &{"main::".$HandlerRoutineStack{$routine}}($ctrltype);
-# last CALLEM if $result;
-# }
-# return $result;
-#}
-
-#============
-sub DESTROY {
-#============
- my($self) = @_;
- _CloseHandle($self->{'handle'});
-}
-
-#######################################################################
-# dynamically load in the Console.pll module.
-#
-
-bootstrap Win32::Console;
-
-#######################################################################
-# ADDITIONAL CONSTANTS EXPORTED IN THE MAIN NAMESPACE
-#
-
-$FG_BLACK = 0;
-$FG_GRAY = constant("FOREGROUND_INTENSITY",0);
-$FG_BLUE = constant("FOREGROUND_BLUE",0);
-$FG_LIGHTBLUE = constant("FOREGROUND_BLUE",0)|
- constant("FOREGROUND_INTENSITY",0);
-$FG_RED = constant("FOREGROUND_RED",0);
-$FG_LIGHTRED = constant("FOREGROUND_RED",0)|
- constant("FOREGROUND_INTENSITY",0);
-$FG_GREEN = constant("FOREGROUND_GREEN",0);
-$FG_LIGHTGREEN = constant("FOREGROUND_GREEN",0)|
- constant("FOREGROUND_INTENSITY",0);
-$FG_MAGENTA = constant("FOREGROUND_RED",0)|
- constant("FOREGROUND_BLUE",0);
-$FG_LIGHTMAGENTA = constant("FOREGROUND_RED",0)|
- constant("FOREGROUND_BLUE",0)|
- constant("FOREGROUND_INTENSITY",0);
-$FG_CYAN = constant("FOREGROUND_GREEN",0)|
- constant("FOREGROUND_BLUE",0);
-$FG_LIGHTCYAN = constant("FOREGROUND_GREEN",0)|
- constant("FOREGROUND_BLUE",0)|
- constant("FOREGROUND_INTENSITY",0);
-$FG_BROWN = constant("FOREGROUND_RED",0)|
- constant("FOREGROUND_GREEN",0);
-$FG_YELLOW = constant("FOREGROUND_RED",0)|
- constant("FOREGROUND_GREEN",0)|
- constant("FOREGROUND_INTENSITY",0);
-$FG_LIGHTGRAY = constant("FOREGROUND_RED",0)|
- constant("FOREGROUND_GREEN",0)|
- constant("FOREGROUND_BLUE",0);
-$FG_WHITE = constant("FOREGROUND_RED",0)|
- constant("FOREGROUND_GREEN",0)|
- constant("FOREGROUND_BLUE",0)|
- constant("FOREGROUND_INTENSITY",0);
-
-$BG_BLACK = 0;
-$BG_GRAY = constant("BACKGROUND_INTENSITY",0);
-$BG_BLUE = constant("BACKGROUND_BLUE",0);
-$BG_LIGHTBLUE = constant("BACKGROUND_BLUE",0)|
- constant("BACKGROUND_INTENSITY",0);
-$BG_RED = constant("BACKGROUND_RED",0);
-$BG_LIGHTRED = constant("BACKGROUND_RED",0)|
- constant("BACKGROUND_INTENSITY",0);
-$BG_GREEN = constant("BACKGROUND_GREEN",0);
-$BG_LIGHTGREEN = constant("BACKGROUND_GREEN",0)|
- constant("BACKGROUND_INTENSITY",0);
-$BG_MAGENTA = constant("BACKGROUND_RED",0)|
- constant("BACKGROUND_BLUE",0);
-$BG_LIGHTMAGENTA = constant("BACKGROUND_RED",0)|
- constant("BACKGROUND_BLUE",0)|
- constant("BACKGROUND_INTENSITY",0);
-$BG_CYAN = constant("BACKGROUND_GREEN",0)|
- constant("BACKGROUND_BLUE",0);
-$BG_LIGHTCYAN = constant("BACKGROUND_GREEN",0)|
- constant("BACKGROUND_BLUE",0)|
- constant("BACKGROUND_INTENSITY",0);
-$BG_BROWN = constant("BACKGROUND_RED",0)|
- constant("BACKGROUND_GREEN",0);
-$BG_YELLOW = constant("BACKGROUND_RED",0)|
- constant("BACKGROUND_GREEN",0)|
- constant("BACKGROUND_INTENSITY",0);
-$BG_LIGHTGRAY = constant("BACKGROUND_RED",0)|
- constant("BACKGROUND_GREEN",0)|
- constant("BACKGROUND_BLUE",0);
-$BG_WHITE = constant("BACKGROUND_RED",0)|
- constant("BACKGROUND_GREEN",0)|
- constant("BACKGROUND_BLUE",0)|
- constant("BACKGROUND_INTENSITY",0);
-
-$ATTR_NORMAL = $FG_LIGHTGRAY|$BG_BLACK;
-$ATTR_INVERSE = $FG_BLACK|$BG_LIGHTGRAY;
-
-for my $fg ($FG_BLACK, $FG_GRAY, $FG_BLUE, $FG_GREEN,
- $FG_CYAN, $FG_RED, $FG_MAGENTA, $FG_BROWN,
- $FG_LIGHTBLUE, $FG_LIGHTGREEN, $FG_LIGHTCYAN,
- $FG_LIGHTRED, $FG_LIGHTMAGENTA, $FG_YELLOW,
- $FG_LIGHTGRAY, $FG_WHITE)
-{
- for my $bg ($BG_BLACK, $BG_GRAY, $BG_BLUE, $BG_GREEN,
- $BG_CYAN, $BG_RED, $BG_MAGENTA, $BG_BROWN,
- $BG_LIGHTBLUE, $BG_LIGHTGREEN, $BG_LIGHTCYAN,
- $BG_LIGHTRED, $BG_LIGHTMAGENTA, $BG_YELLOW,
- $BG_LIGHTGRAY, $BG_WHITE)
- {
- push(@CONSOLE_COLORS, $fg|$bg);
- }
-}
-
-# Preloaded methods go here.
-
-#Currently Autoloading is not implemented in Perl for win32
-# Autoload methods go after __END__, and are processed by the autosplit program.
-
-1;
-
-__END__
-
-=head1 NAME
-
-Win32::Console - Win32 Console and Character Mode Functions
-
-
-=head1 DESCRIPTION
-
-This module implements the Win32 console and character mode
-functions. They give you full control on the console input and output,
-including: support of off-screen console buffers (eg. multiple screen
-pages)
-
-=over
-
-=item *
-
-reading and writing of characters, attributes and whole portions of
-the screen
-
-=item *
-
-complete processing of keyboard and mouse events
-
-=item *
-
-some very funny additional features :)
-
-=back
-
-Those functions should also make possible a port of the Unix's curses
-library; if there is anyone interested (and/or willing to contribute)
-to this project, e-mail me. Thank you.
-
-
-=head1 REFERENCE
-
-
-=head2 Methods
-
-=over
-
-=item Alloc
-
-Allocates a new console for the process. Returns C<undef> on errors, a
-nonzero value on success. A process cannot be associated with more
-than one console, so this method will fail if there is already an
-allocated console. Use Free to detach the process from the console,
-and then call Alloc to create a new console. See also: C<Free>
-
-Example:
-
- $CONSOLE->Alloc();
-
-=item Attr [attr]
-
-Gets or sets the current console attribute. This attribute is used by
-the Write method.
-
-Example:
-
- $attr = $CONSOLE->Attr();
- $CONSOLE->Attr($FG_YELLOW | $BG_BLUE);
-
-=item Close
-
-Closes a shortcut object. Note that it is not "strictly" required to
-close the objects you created, since the Win32::Shortcut objects are
-automatically closed when the program ends (or when you elsehow
-destroy such an object).
-
-Example:
-
- $LINK->Close();
-
-=item Cls [attr]
-
-Clear the console, with the specified I<attr> if given, or using
-ATTR_NORMAL otherwise.
-
-Example:
-
- $CONSOLE->Cls();
- $CONSOLE->Cls($FG_WHITE | $BG_GREEN);
-
-=item Cursor [x, y, size, visible]
-
-Gets or sets cursor position and appearance. Returns C<undef> on
-errors, or a 4-element list containing: I<x>, I<y>, I<size>,
-I<visible>. I<x> and I<y> are the current cursor position; ...
-
-Example:
-
- ($x, $y, $size, $visible) = $CONSOLE->Cursor();
-
- # Get position only
- ($x, $y) = $CONSOLE->Cursor();
-
- $CONSOLE->Cursor(40, 13, 50, 1);
-
- # Set position only
- $CONSOLE->Cursor(40, 13);
-
- # Set size and visibility without affecting position
- $CONSOLE->Cursor(-1, -1, 50, 1);
-
-=item Display
-
-Displays the specified console on the screen. Returns C<undef> on errors,
-a nonzero value on success.
-
-Example:
-
- $CONSOLE->Display();
-
-=item FillAttr [attribute, number, col, row]
-
-Fills the specified number of consecutive attributes, beginning at
-I<col>, I<row>, with the value specified in I<attribute>. Returns the
-number of attributes filled, or C<undef> on errors. See also:
-C<FillChar>.
-
-Example:
-
- $CONSOLE->FillAttr($FG_BLACK | $BG_BLACK, 80*25, 0, 0);
-
-=item FillChar char, number, col, row
-
-Fills the specified number of consecutive characters, beginning at
-I<col>, I<row>, with the character specified in I<char>. Returns the
-number of characters filled, or C<undef> on errors. See also:
-C<FillAttr>.
-
-Example:
-
- $CONSOLE->FillChar("X", 80*25, 0, 0);
-
-=item Flush
-
-Flushes the console input buffer. All the events in the buffer are
-discarded. Returns C<undef> on errors, a nonzero value on success.
-
-Example:
-
- $CONSOLE->Flush();
-
-=item Free
-
-Detaches the process from the console. Returns C<undef> on errors, a
-nonzero value on success. See also: C<Alloc>.
-
-Example:
-
- $CONSOLE->Free();
-
-=item GenerateCtrlEvent [type, processgroup]
-
-Sends a break signal of the specified I<type> to the specified
-I<processgroup>. I<type> can be one of the following constants:
-
- CTRL_BREAK_EVENT
- CTRL_C_EVENT
-
-they signal, respectively, the pressing of Control + Break and of
-Control + C; if not specified, it defaults to CTRL_C_EVENT.
-I<processgroup> is the pid of a process sharing the same console. If
-omitted, it defaults to 0 (the current process), which is also the
-only meaningful value that you can pass to this function. Returns
-C<undef> on errors, a nonzero value on success.
-
-Example:
-
- # break this script now
- $CONSOLE->GenerateCtrlEvent();
-
-=item GetEvents
-
-Returns the number of unread input events in the console's input
-buffer, or C<undef> on errors. See also: C<Input>, C<InputChar>,
-C<PeekInput>, C<WriteInput>.
-
-Example:
-
- $events = $CONSOLE->GetEvents();
-
-=item Info
-
-Returns an array of informations about the console (or C<undef> on
-errors), which contains:
-
-=over
-
-=item *
-
-columns (X size) of the console buffer.
-
-=item *
-
-rows (Y size) of the console buffer.
-
-=item *
-
-current column (X position) of the cursor.
-
-=item *
-
-current row (Y position) of the cursor.
-
-=item *
-
-current attribute used for C<Write>.
-
-=item *
-
-left column (X of the starting point) of the current console window.
-
-=item *
-
-top row (Y of the starting point) of the current console window.
-
-=item *
-
-right column (X of the final point) of the current console window.
-
-=item *
-
-bottom row (Y of the final point) of the current console window.
-
-=item *
-
-maximum number of columns for the console window, given the current
-buffer size, font and the screen size.
-
-=item *
-
-maximum number of rows for the console window, given the current
-buffer size, font and the screen size.
-
-=back
-
-See also: C<Attr>, C<Cursor>, C<Size>, C<Window>, C<MaxWindow>.
-
-Example:
-
- @info = $CONSOLE->Info();
- print "Cursor at $info[3], $info[4].\n";
-
-=item Input
-
-Reads an event from the input buffer. Returns a list of values, which
-depending on the event's nature are:
-
-=over
-
-=item keyboard event
-
-The list will contain:
-
-=over
-
-=item *
-
-event type: 1 for keyboard
-
-=item *
-
-key down: TRUE if the key is being pressed, FALSE if the key is being released
-
-=item *
-
-repeat count: the number of times the key is being held down
-
-=item *
-
-virtual keycode: the virtual key code of the key
-
-=item *
-
-virtual scancode: the virtual scan code of the key
-
-=item *
-
-char: the ASCII code of the character (if the key is a character key, 0 otherwise)
-
-=item *
-
-control key state: the state of the control keys (SHIFTs, CTRLs, ALTs, etc.)
-
-=back
-
-=item mouse event
-
-The list will contain:
-
-=over
-
-=item *
-
-event type: 2 for mouse
-
-=item *
-
-mouse pos. X: X coordinate (column) of the mouse location
-
-=item *
-
-mouse pos. Y: Y coordinate (row) of the mouse location
-
-=item *
-
-button state: the mouse button(s) which are pressed
-
-=item *
-
-control key state: the state of the control keys (SHIFTs, CTRLs, ALTs, etc.)
-
-=item *
-
-event flags: the type of the mouse event
-
-=back
-
-=back
-
-This method will return C<undef> on errors. Note that the events
-returned are depending on the input C<Mode> of the console; for example,
-mouse events are not intercepted unless ENABLE_MOUSE_INPUT is
-specified. See also: C<GetEvents>, C<InputChar>, C<Mode>,
-C<PeekInput>, C<WriteInput>.
-
-Example:
-
- @event = $CONSOLE->Input();
-
-=item InputChar number
-
-Reads and returns I<number> characters from the console input buffer,
-or C<undef> on errors. See also: C<Input>, C<Mode>.
-
-Example:
-
- $key = $CONSOLE->InputChar(1);
-
-=item InputCP [codepage]
-
-Gets or sets the input code page used by the console. Note that this
-doesn't apply to a console object, but to the standard input
-console. This attribute is used by the Write method. See also:
-C<OutputCP>.
-
-Example:
-
- $codepage = $CONSOLE->InputCP();
- $CONSOLE->InputCP(437);
-
- # you may want to use the non-instanciated form to avoid confuzion :)
- $codepage = Win32::Console::InputCP();
- Win32::Console::InputCP(437);
-
-=item MaxWindow
-
-Returns the size of the largest possible console window, based on the
-current font and the size of the display. The result is C<undef> on
-errors, otherwise a 2-element list containing col, row.
-
-Example:
-
- ($maxCol, $maxRow) = $CONSOLE->MaxWindow();
-
-=item Mode [flags]
-
-Gets or sets the input or output mode of a console. I<flags> can be a
-combination of the following constants:
-
- ENABLE_LINE_INPUT
- ENABLE_ECHO_INPUT
- ENABLE_PROCESSED_INPUT
- ENABLE_WINDOW_INPUT
- ENABLE_MOUSE_INPUT
- ENABLE_PROCESSED_OUTPUT
- ENABLE_WRAP_AT_EOL_OUTPUT
-
-For more informations on the meaning of those flags, please refer to
-the L<"Microsoft's Documentation">.
-
-Example:
-
- $mode = $CONSOLE->Mode();
- $CONSOLE->Mode(ENABLE_MOUSE_INPUT | ENABLE_PROCESSED_INPUT);
-
-=item MouseButtons
-
-Returns the number of the buttons on your mouse, or C<undef> on errors.
-
-Example:
-
- print "Your mouse has ", $CONSOLE->MouseButtons(), " buttons.\n";
-
-=item new Win32::Console standard_handle
-
-=item new Win32::Console [accessmode, sharemode]
-
-Creates a new console object. The first form creates a handle to a
-standard channel, I<standard_handle> can be one of the following:
-
- STD_OUTPUT_HANDLE
- STD_ERROR_HANDLE
- STD_INPUT_HANDLE
-
-The second form, instead, creates a console screen buffer in memory,
-which you can access for reading and writing as a normal console, and
-then redirect on the standard output (the screen) with C<Display>. In
-this case, you can specify one or both of the following values for
-I<accessmode>:
-
- GENERIC_READ
- GENERIC_WRITE
-
-which are the permissions you will have on the created buffer, and one
-or both of the following values for I<sharemode>:
-
- FILE_SHARE_READ
- FILE_SHARE_WRITE
-
-which affect the way the console can be shared. If you don't specify
-any of those parameters, all 4 flags will be used.
-
-Example:
-
- $STDOUT = new Win32::Console(STD_OUTPUT_HANDLE);
- $STDERR = new Win32::Console(STD_ERROR_HANDLE);
- $STDIN = new Win32::Console(STD_INPUT_HANDLE);
-
- $BUFFER = new Win32::Console();
- $BUFFER = new Win32::Console(GENERIC_READ | GENERIC_WRITE);
-
-=item OutputCP [codepage]
-
-Gets or sets the output code page used by the console. Note that this
-doesn't apply to a console object, but to the standard output console.
-See also: C<InputCP>.
-
-Example:
-
- $codepage = $CONSOLE->OutputCP();
- $CONSOLE->OutputCP(437);
-
- # you may want to use the non-instanciated form to avoid confuzion :)
- $codepage = Win32::Console::OutputCP();
- Win32::Console::OutputCP(437);
-
-=item PeekInput
-
-Does exactly the same as C<Input>, except that the event read is not
-removed from the input buffer. See also: C<GetEvents>, C<Input>,
-C<InputChar>, C<Mode>, C<WriteInput>.
-
-Example:
-
- @event = $CONSOLE->PeekInput();
-
-=item ReadAttr [number, col, row]
-
-Reads the specified I<number> of consecutive attributes, beginning at
-I<col>, I<row>, from the console. Returns the attributes read (a
-variable containing one character for each attribute), or C<undef> on
-errors. You can then pass the returned variable to C<WriteAttr> to
-restore the saved attributes on screen. See also: C<ReadChar>,
-C<ReadRect>.
-
-Example:
-
- $colors = $CONSOLE->ReadAttr(80*25, 0, 0);
-
-=item ReadChar [number, col, row]
-
-Reads the specified I<number> of consecutive characters, beginning at
-I<col>, I<row>, from the console. Returns a string containing the
-characters read, or C<undef> on errors. You can then pass the
-returned variable to C<WriteChar> to restore the saved characters on
-screen. See also: C<ReadAttr>, C<ReadRect>.
-
-Example:
-
- $chars = $CONSOLE->ReadChar(80*25, 0, 0);
-
-=item ReadRect left, top, right, bottom
-
-Reads the content (characters and attributes) of the rectangle
-specified by I<left>, I<top>, I<right>, I<bottom> from the console.
-Returns a string containing the rectangle read, or C<undef> on errors.
-You can then pass the returned variable to C<WriteRect> to restore the
-saved rectangle on screen (or on another console). See also:
-C<ReadAttr>, C<ReadChar>.
-
-Example:
-
- $rect = $CONSOLE->ReadRect(0, 0, 80, 25);
-
-=item Scroll left, top, right, bottom, col, row, char, attr,
- [cleft, ctop, cright, cbottom]
-
-Moves a block of data in a console buffer; the block is identified by
-I<left>, I<top>, I<right>, I<bottom>, while I<row>, I<col> identify
-the new location of the block. The cells left empty as a result of
-the move are filled with the character I<char> and attribute I<attr>.
-Optionally you can specify a clipping region with I<cleft>, I<ctop>,
-I<cright>, I<cbottom>, so that the content of the console outside this
-rectangle are unchanged. Returns C<undef> on errors, a nonzero value
-on success.
-
-Example:
-
- # scrolls the screen 10 lines down, filling with black spaces
- $CONSOLE->Scroll(0, 0, 80, 25, 0, 10, " ", $FG_BLACK | $BG_BLACK);
-
-=item Select standard_handle
-
-Redirects a standard handle to the specified console.
-I<standard_handle> can have one of the following values:
-
- STD_INPUT_HANDLE
- STD_OUTPUT_HANDLE
- STD_ERROR_HANDLE
-
-Returns C<undef> on errors, a nonzero value on success.
-
-Example:
-
- $CONSOLE->Select(STD_OUTPUT_HANDLE);
-
-=item SetIcon icon_file
-
-Sets the icon in the title bar of the current console window.
-
-Example:
-
- $CONSOLE->SetIcon("C:/My/Path/To/Custom.ico");
-
-=item Size [col, row]
-
-Gets or sets the console buffer size.
-
-Example:
-
- ($x, $y) = $CONSOLE->Size();
- $CONSOLE->Size(80, 25);
-
-=item Title [title]
-
-Gets or sets the title of the current console window.
-
-Example:
-
- $title = $CONSOLE->Title();
- $CONSOLE->Title("This is a title");
-
-=item Window [flag, left, top, right, bottom]
-
-Gets or sets the current console window size. If called without
-arguments, returns a 4-element list containing the current window
-coordinates in the form of I<left>, I<top>, I<right>, I<bottom>. To
-set the window size, you have to specify an additional I<flag>
-parameter: if it is 0 (zero), coordinates are considered relative to
-the current coordinates; if it is non-zero, coordinates are absolute.
-
-Example:
-
- ($left, $top, $right, $bottom) = $CONSOLE->Window();
- $CONSOLE->Window(1, 0, 0, 80, 50);
-
-=item Write string
-
-Writes I<string> on the console, using the current attribute, that you
-can set with C<Attr>, and advancing the cursor as needed. This isn't
-so different from Perl's "print" statement. Returns the number of
-characters written or C<undef> on errors. See also: C<WriteAttr>,
-C<WriteChar>, C<WriteRect>.
-
-Example:
-
- $CONSOLE->Write("Hello, world!");
-
-=item WriteAttr attrs, col, row
-
-Writes the attributes in the string I<attrs>, beginning at I<col>,
-I<row>, without affecting the characters that are on screen. The
-string attrs can be the result of a C<ReadAttr> function, or you can
-build your own attribute string; in this case, keep in mind that every
-attribute is treated as a character, not a number (see example).
-Returns the number of attributes written or C<undef> on errors. See
-also: C<Write>, C<WriteChar>, C<WriteRect>.
-
-Example:
-
- $CONSOLE->WriteAttr($attrs, 0, 0);
-
- # note the use of chr()...
- $attrs = chr($FG_BLACK | $BG_WHITE) x 80;
- $CONSOLE->WriteAttr($attrs, 0, 0);
-
-=item WriteChar chars, col, row
-
-Writes the characters in the string I<attr>, beginning at I<col>, I<row>,
-without affecting the attributes that are on screen. The string I<chars>
-can be the result of a C<ReadChar> function, or a normal string. Returns
-the number of characters written or C<undef> on errors. See also:
-C<Write>, C<WriteAttr>, C<WriteRect>.
-
-Example:
-
- $CONSOLE->WriteChar("Hello, worlds!", 0, 0);
-
-=item WriteInput (event)
-
-Pushes data in the console input buffer. I<(event)> is a list of values,
-for more information see C<Input>. The string chars can be the result of
-a C<ReadChar> function, or a normal string. Returns the number of
-characters written or C<undef> on errors. See also: C<Write>,
-C<WriteAttr>, C<WriteRect>.
-
-Example:
-
- $CONSOLE->WriteInput(@event);
-
-=item WriteRect rect, left, top, right, bottom
-
-Writes a rectangle of characters and attributes (contained in I<rect>)
-on the console at the coordinates specified by I<left>, I<top>,
-I<right>, I<bottom>. I<rect> can be the result of a C<ReadRect>
-function. Returns C<undef> on errors, otherwise a 4-element list
-containing the coordinates of the affected rectangle, in the format
-I<left>, I<top>, I<right>, I<bottom>. See also: C<Write>,
-C<WriteAttr>, C<WriteChar>.
-
-Example:
-
- $CONSOLE->WriteRect($rect, 0, 0, 80, 25);
-
-=back
-
-
-=head2 Constants
-
-The following constants are exported in the main namespace of your
-script using Win32::Console:
-
- BACKGROUND_BLUE
- BACKGROUND_GREEN
- BACKGROUND_INTENSITY
- BACKGROUND_RED
- CAPSLOCK_ON
- CONSOLE_TEXTMODE_BUFFER
- ENABLE_ECHO_INPUT
- ENABLE_LINE_INPUT
- ENABLE_MOUSE_INPUT
- ENABLE_PROCESSED_INPUT
- ENABLE_PROCESSED_OUTPUT
- ENABLE_WINDOW_INPUT
- ENABLE_WRAP_AT_EOL_OUTPUT
- ENHANCED_KEY
- FILE_SHARE_READ
- FILE_SHARE_WRITE
- FOREGROUND_BLUE
- FOREGROUND_GREEN
- FOREGROUND_INTENSITY
- FOREGROUND_RED
- LEFT_ALT_PRESSED
- LEFT_CTRL_PRESSED
- NUMLOCK_ON
- GENERIC_READ
- GENERIC_WRITE
- RIGHT_ALT_PRESSED
- RIGHT_CTRL_PRESSED
- SCROLLLOCK_ON
- SHIFT_PRESSED
- STD_INPUT_HANDLE
- STD_OUTPUT_HANDLE
- STD_ERROR_HANDLE
-
-Additionally, the following variables can be used:
-
- $FG_BLACK
- $FG_GRAY
- $FG_BLUE
- $FG_LIGHTBLUE
- $FG_RED
- $FG_LIGHTRED
- $FG_GREEN
- $FG_LIGHTGREEN
- $FG_MAGENTA
- $FG_LIGHTMAGENTA
- $FG_CYAN
- $FG_LIGHTCYAN
- $FG_BROWN
- $FG_YELLOW
- $FG_LIGHTGRAY
- $FG_WHITE
-
- $BG_BLACK
- $BG_GRAY
- $BG_BLUE
- $BG_LIGHTBLUE
- $BG_RED
- $BG_LIGHTRED
- $BG_GREEN
- $BG_LIGHTGREEN
- $BG_MAGENTA
- $BG_LIGHTMAGENTA
- $BG_CYAN
- $BG_LIGHTCYAN
- $BG_BROWN
- $BG_YELLOW
- $BG_LIGHTGRAY
- $BG_WHITE
-
- $ATTR_NORMAL
- $ATTR_INVERSE
-
-ATTR_NORMAL is set to gray foreground on black background (DOS's
-standard colors).
-
-
-=head2 Microsoft's Documentation
-
-Documentation for the Win32 Console and Character mode Functions can
-be found on Microsoft's site at this URL:
-
-http://www.microsoft.com/msdn/sdk/platforms/doc/sdk/win32/sys/src/conchar.htm
-
-A reference of the available functions is at:
-
-http://www.microsoft.com/msdn/sdk/platforms/doc/sdk/win32/sys/src/conchar_34.htm
-
-
-=head1 AUTHOR
-
-Aldo Calpini <a.calpini@romagiubileo.it>
-
-=head1 CREDITS
-
-Thanks to: Jesse Dougherty, Dave Roth, ActiveWare, and the
-Perl-Win32-Users community.
-
-=head1 DISCLAIMER
-
-This program is FREE; you can redistribute, modify, disassemble, or
-even reverse engineer this software at your will. Keep in mind,
-however, that NOTHING IS GUARANTEED to work and everything you do is
-AT YOUR OWN RISK - I will not take responsibility for any damage, loss
-of money and/or health that may arise from the use of this program!
-
-This is distributed under the terms of Larry Wall's Artistic License.
diff --git a/Master/tlpkg/tlperl/lib/Win32/Event.pm b/Master/tlpkg/tlperl/lib/Win32/Event.pm
deleted file mode 100644
index 5faddf5a76e..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/Event.pm
+++ /dev/null
@@ -1,104 +0,0 @@
-#---------------------------------------------------------------------
-package Win32::Event;
-#
-# Copyright 1998 Christopher J. Madsen
-#
-# Author: Christopher J. Madsen <cjm@pobox.com>
-# Created: 3 Feb 1998 from the ActiveWare version
-# Version: 1.00 (6-Feb-1998)
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the same terms as Perl itself.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either the
-# GNU General Public License or the Artistic License for more details.
-#
-# Use Win32 event objects for synchronization
-#---------------------------------------------------------------------
-
-$VERSION = '1.01';
-
-use Win32::IPC 1.00 '/./'; # Import everything
-require Exporter;
-require DynaLoader;
-
-@ISA = qw(Exporter DynaLoader Win32::IPC);
-@EXPORT_OK = qw(
- wait_all wait_any INFINITE
-);
-
-bootstrap Win32::Event;
-
-1;
-__END__
-
-=head1 NAME
-
-Win32::Event - Use Win32 event objects from Perl
-
-=head1 SYNOPSIS
-
- use Win32::Event;
-
- $event = Win32::Event->new($manual,$initial,$name);
- $event->wait();
-
-=head1 DESCRIPTION
-
-This module allows access to the Win32 event objects. The C<wait>
-method and C<wait_all> & C<wait_any> functions are inherited from the
-L<"Win32::IPC"> module.
-
-=head2 Methods
-
-=over 4
-
-=item $event = Win32::Event->new([$manual, [$initial, [$name]]])
-
-Constructor for a new event object. If C<$manual> is true, you must
-manually reset the event after it is signalled (the default is false).
-If C<$initial> is true, the initial state of the object is signalled
-(default false). If C<$name> is omitted, creates an unnamed event
-object.
-
-If C<$name> signifies an existing event object, then C<$manual> and
-C<$initial> are ignored and the object is opened. If this happens,
-C<$^E> will be set to 183 (ERROR_ALREADY_EXISTS).
-
-=item $event = Win32::Event->open($name)
-
-Constructor for opening an existing event object.
-
-=item $event->pulse
-
-Signal the C<$event> and then immediately reset it. If C<$event> is a
-manual-reset event, releases all threads currently blocking on it. If
-it's an auto-reset event, releases just one thread.
-
-If no threads are waiting, just resets the event.
-
-=item $event->reset
-
-Reset the C<$event> to nonsignalled.
-
-=item $event->set
-
-Set the C<$event> to signalled.
-
-=item $event->wait([$timeout])
-
-Wait for C<$event> to be signalled. See L<"Win32::IPC">.
-
-=back
-
-=head1 AUTHOR
-
-Christopher J. Madsen E<lt>F<cjm@pobox.com>E<gt>
-
-=cut
-
-# Local Variables:
-# tmtrack-file-task: "Win32::Event"
-# End:
diff --git a/Master/tlpkg/tlperl/lib/Win32/EventLog.pm b/Master/tlpkg/tlperl/lib/Win32/EventLog.pm
deleted file mode 100644
index 141821556e7..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/EventLog.pm
+++ /dev/null
@@ -1,471 +0,0 @@
-#
-# EventLog.pm
-#
-# Creates an object oriented interface to the Windows NT Evenlog
-# Written by Jesse Dougherty
-#
-
-package Win32::EventLog;
-
-use strict;
-use vars qw($VERSION $AUTOLOAD @ISA @EXPORT $GetMessageText);
-$VERSION = '0.074';
-
-require Exporter;
-require DynaLoader;
-
-die "The Win32::Eventlog module works only on Windows NT"
- unless Win32::IsWinNT();
-
-@ISA= qw(Exporter DynaLoader);
-@EXPORT = qw(
- EVENTLOG_AUDIT_FAILURE
- EVENTLOG_AUDIT_SUCCESS
- EVENTLOG_BACKWARDS_READ
- EVENTLOG_END_ALL_PAIRED_EVENTS
- EVENTLOG_END_PAIRED_EVENT
- EVENTLOG_ERROR_TYPE
- EVENTLOG_FORWARDS_READ
- EVENTLOG_INFORMATION_TYPE
- EVENTLOG_PAIRED_EVENT_ACTIVE
- EVENTLOG_PAIRED_EVENT_INACTIVE
- EVENTLOG_SEEK_READ
- EVENTLOG_SEQUENTIAL_READ
- EVENTLOG_START_PAIRED_EVENT
- EVENTLOG_SUCCESS
- EVENTLOG_WARNING_TYPE
-);
-
-$GetMessageText=0;
-
-sub AUTOLOAD {
- my($constname);
- ($constname = $AUTOLOAD) =~ s/.*:://;
- # reset $! to zero to reset any current errors.
- local $! = 0;
- my $val = constant($constname, @_ ? $_[0] : 0);
- if ($!) {
- if ($! =~ /Invalid/) {
- $AutoLoader::AUTOLOAD = $AUTOLOAD;
- goto &AutoLoader::AUTOLOAD;
- }
- else {
- my ($pack,$file,$line) = caller;
- die "Unknown Win32::EventLog macro $constname, at $file line $line.\n";
- }
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-#
-# new()
-#
-# Win32::EventLog->new("source name", "ServerName");
-#
-sub new {
- die "usage: PACKAGE->new(SOURCENAME[, SERVERNAME])\n" unless @_ > 1;
- my ($class,$source,$server) = @_;
- my $handle;
-
- # Create new handle
- if ($source !~ /\\/) {
- OpenEventLog($handle, $server, $source);
- }
- else {
- OpenBackupEventLog($handle, $server, $source);
- }
- return bless {handle => $handle,
- Source => $source,
- Computer => $server} => $class;
-}
-
-sub DESTROY {shift->Close}
-
-#
-# Open (the rather braindead old way)
-# A variable initialized to empty must be supplied as the first
-# arg, followed by whatever new() takes
-#
-sub Open {
- $_[0] = Win32::EventLog->new($_[1],$_[2]);
-}
-
-sub OpenBackup {
- my ($class,$source,$server) = @_;
- OpenBackupEventLog(my $handle, $server, $source);
- return bless {handle => $handle,
- Source => $source,
- Computer => $server} => $class;
-}
-
-sub Backup {
- die " usage: OBJECT->Backup(FILENAME)\n" unless @_ == 2;
- my ($self,$file) = @_;
- return BackupEventLog($self->{handle}, $file);
-}
-
-sub Close {
- my $self = shift;
- CloseEventLog($self->{handle});
- $self->{handle} = 0;
-}
-
-# Read
-# Note: the EventInfo arguement requires a hash reference.
-sub Read {
- my $self = shift;
-
- die "usage: OBJECT->Read(FLAGS, RECORDOFFSET, HASHREF)\n" unless @_ == 3;
-
- my ($readflags,$recordoffset) = @_;
- # The following is stolen shamelessly from Wyt's tests for the registry.
- my $result = ReadEventLog($self->{handle}, $readflags, $recordoffset,
- my $header, my $source, my $computer, my $sid,
- my $data, my $strings);
- my ($length,
- $reserved,
- $recordnumber,
- $timegenerated,
- $timewritten,
- $eventid,
- $eventtype,
- $numstrings,
- $eventcategory,
- $reservedflags,
- $closingrecordnumber,
- $stringoffset,
- $usersidlength,
- $usersidoffset,
- $datalength,
- $dataoffset) = unpack('l6s4l6', $header);
-
- # make a hash out of the values returned from ReadEventLog.
- my %h = ( Source => $source,
- Computer => $computer,
- Length => $datalength,
- Category => $eventcategory,
- RecordNumber => $recordnumber,
- TimeGenerated => $timegenerated,
- Timewritten => $timewritten,
- EventID => $eventid,
- EventType => $eventtype,
- ClosingRecordNumber => $closingrecordnumber,
- User => $sid,
- Strings => $strings,
- Data => $data,
- );
-
- # get the text message here
- if ($result and $GetMessageText) {
- GetEventLogText($source, $eventid, $strings, $numstrings, my $message);
- $h{Message} = $message;
- }
-
- if (ref($_[2]) eq 'HASH') {
- %{$_[2]} = %h; # this needed for Read(...,\%foo) case
- }
- else {
- $_[2] = \%h;
- }
- return $result;
-}
-
-sub GetMessageText {
- my $self = shift;
- local $^W;
- GetEventLogText($self->{Source},
- $self->{EventID},
- $self->{Strings},
- $self->{Strings} =~ tr/\0/\0/,
- my $message);
-
- $self->{Message} = $message;
- return $message;
-}
-
-sub Report {
- die "usage: OBJECT->Report( HASHREF )\n" unless @_ == 2;
- my ($self,$EventInfo) = @_;
-
- die "Win32::EventLog::Report requires a hash reference as arg 2\n"
- unless ref($EventInfo) eq "HASH";
-
- my $computer = $EventInfo->{Computer} ? $EventInfo->{Computer}
- : $self->{Computer};
- my $source = exists($EventInfo->{Source}) ? $EventInfo->{Source}
- : $self->{Source};
-
- return WriteEventLog($computer, $source, $EventInfo->{EventType},
- $EventInfo->{Category}, $EventInfo->{EventID}, 0,
- $EventInfo->{Data}, split(/\0/, $EventInfo->{Strings}));
-
-}
-
-sub GetOldest {
- my $self = shift;
- die "usage: OBJECT->GetOldest( SCALAREF )\n" unless @_ == 1;
- return GetOldestEventLogRecord($self->{handle},$_[0]);
-}
-
-sub GetNumber {
- my $self = shift;
- die "usage: OBJECT->GetNumber( SCALARREF )\n" unless @_ == 1;
- return GetNumberOfEventLogRecords($self->{handle}, $_[0]);
-}
-
-sub Clear {
- my ($self,$file) = @_;
- die "usage: OBJECT->Clear( FILENAME )\n" unless @_ == 2;
- return ClearEventLog($self->{handle}, $file);
-}
-
-bootstrap Win32::EventLog;
-
-1;
-__END__
-
-=head1 NAME
-
-Win32::EventLog - Process Win32 Event Logs from Perl
-
-=head1 SYNOPSIS
-
- use Win32::EventLog
- $handle=Win32::EventLog->new("Application");
-
-=head1 DESCRIPTION
-
-This module implements most of the functionality available from the
-Win32 API for accessing and manipulating Win32 Event Logs. The access
-to the EventLog routines is divided into those that relate to an
-EventLog object and its associated methods and those that relate other
-EventLog tasks (like adding an EventLog record).
-
-=head1 The EventLog Object and its Methods
-
-The following methods are available to open, read, close and backup
-EventLogs.
-
-=over 4
-
-=item Win32::EventLog->new(SOURCENAME [,SERVERNAME]);
-
-The new() method creates a new EventLog object and returns a handle
-to it. This hande is then used to call the methods below.
-
-The method is overloaded in that if the supplied SOURCENAME
-argument contains one or more literal '\' characters (an illegal
-character in a SOURCENAME), it assumes that you are trying to open
-a backup eventlog and uses SOURCENAME as the backup eventlog to
-open. Note that when opening a backup eventlog, the SERVERNAME
-argument is ignored (as it is in the underlying Win32 API). For
-EventLogs on remote machines, the SOURCENAME parameter must
-therefore be specified as a UNC path.
-
-=item $handle->Backup(FILENAME);
-
-The Backup() method backs up the EventLog represented by $handle. It
-takes a single arguemt, FILENAME. When $handle represents an
-EventLog on a remote machine, FILENAME is filename on the remote
-machine and cannot be a UNC path (i.e you must use F<C:\TEMP\App.EVT>).
-The method will fail if the log file already exists.
-
-=item $handle->Read(FLAGS, OFFSET, HASHREF);
-
-The Read() method read an EventLog entry from the EventLog represented
-by $handle.
-
-=item $handle->Close();
-
-The Close() method closes the EventLog represented by $handle. After
-Close() has been called, any further attempt to use the EventLog
-represented by $handle will fail.
-
-=item $handle->GetOldest(SCALARREF);
-
-The GetOldest() method number of the the oldest EventLog record in
-the EventLog represented by $handle. This is required to correctly
-compute the OFFSET required by the Read() method.
-
-=item $handle->GetNumber(SCALARREF);
-
-The GetNumber() method returns the number of EventLog records in
-the EventLog represented by $handle. The number of the most recent
-record in the EventLog is therefore computed by
-
- $handle->GetOldest($oldest);
- $handle->GetNumber($lastRec);
- $lastRecOffset=$oldest+$lastRec;
-
-=item $handle->Clear(FILENAME);
-
-The Clear() method clears the EventLog represented by $handle. If
-you provide a non-null FILENAME, the EventLog will be backed up
-into FILENAME before the EventLog is cleared. The method will fail
-if FILENAME is specified and the file refered to exists. Note also
-that FILENAME specifies a file local to the machine on which the
-EventLog resides and cannot be specified as a UNC name.
-
-=item $handle->Report(HASHREF);
-
-The Report() method generates an EventLog entry. The HASHREF should
-contain the following keys:
-
-=over 4
-
-=item C<Computer>
-
-The C<Computer> field specfies which computer you want the EventLog
-entry recorded. If this key doesn't exist, the server name used to
-create the $handle is used.
-
-=item C<Source>
-
-The C<Source> field specifies the source that generated the EventLog
-entry. If this key doesn't exist, the source name used to create the
-$handle is used.
-
-=item C<EventType>
-
-The C<EventType> field should be one of the constants
-
-=over 4
-
-=item C<EVENTLOG_ERROR_TYPE>
-
-An Error event is being logged.
-
-=item C<EVENTLOG_WARNING_TYPE>
-
-A Warning event is being logged.
-
-=item C<EVENTLOG_INFORMATION_TYPE>
-
-An Information event is being logged.
-
-=item C<EVENTLOG_AUDIT_SUCCESS>
-
-A Success Audit event is being logged (typically in the Security
-EventLog).
-
-=item C<EVENTLOG_AUDIT_FAILURE>
-
-A Failure Audit event is being logged (typically in the Security
-EventLog).
-
-=back
-
-These constants are exported into the main namespace by default.
-
-=item C<Category>
-
-The C<Category> field can have any value you want. It is specific to
-the particular Source.
-
-=item C<EventID>
-
-The C<EventID> field should contain the ID of the message that this
-event pertains too. This assumes that you have an associated message
-file (indirectly referenced by the field C<Source>).
-
-=item C<Data>
-
-The C<Data> field contains raw data associated with this event.
-
-=item C<Strings>
-
-The C<Strings> field contains the single string that itself contains
-NUL terminated sub-strings. This are used with the EventID to generate
-the message as seen from (for example) the Event Viewer application.
-
-=back
-
-=back
-
-=head1 Other Win32::EventLog functions.
-
-The following functions are part of the Win32::EventLog package but
-are not callable from an EventLog object.
-
-=over 4
-
-=item GetMessageText(HASHREF);
-
-The GetMessageText() function assumes that HASHREF was obtained by
-a call to C<$handle-E<gt>Read()>. It returns the formatted string that
-represents the fully resolved text of the EventLog message (such as
-would be seen in the Windows NT Event Viewer). For convenience, the
-key 'Message' in the supplied HASHREF is also set to the return value
-of this function.
-
-If you set the variable $Win32::EventLog::GetMessageText to 1 then
-each call to C<$handle-E<gt>Read()> will call this function automatically.
-
-=back
-
-=head1 Example 1
-
-The following example illustrates the way in which the EventLog module
-can be used. It opens the System EventLog and reads through it from
-oldest to newest records. For each record from the B<Source> EventLog
-it extracts the full text of the Entry and prints the EventLog message
-text out.
-
- use Win32::EventLog;
-
- $handle=Win32::EventLog->new("System", $ENV{ComputerName})
- or die "Can't open Application EventLog\n";
- $handle->GetNumber($recs)
- or die "Can't get number of EventLog records\n";
- $handle->GetOldest($base)
- or die "Can't get number of oldest EventLog record\n";
-
- while ($x < $recs) {
- $handle->Read(EVENTLOG_FORWARDS_READ|EVENTLOG_SEEK_READ,
- $base+$x,
- $hashRef)
- or die "Can't read EventLog entry #$x\n";
- if ($hashRef->{Source} eq "EventLog") {
- Win32::EventLog::GetMessageText($hashRef);
- print "Entry $x: $hashRef->{Message}\n";
- }
- $x++;
- }
-
-=head1 Example 2
-
-To backup and clear the EventLogs on a remote machine, do the following :-
-
- use Win32::EventLog;
-
- $myServer="\\\\my-server"; # your servername here.
- my($date)=join("-", ((split(/\s+/, scalar(localtime)))[0,1,2,4]));
- my($dest);
-
- for my $eventLog ("Application", "System", "Security") {
- $handle=Win32::EventLog->new($eventLog, $myServer)
- or die "Can't open Application EventLog on $myServer\n";
-
- $dest="C:\\BackupEventLogs\\$eventLog\\$date.evt";
- $handle->Backup($dest)
- or warn "Could not backup and clear the $eventLog EventLog on $myServer ($^E)\n";
-
- $handle->Close;
- }
-
-Note that only the Clear method is required. Note also that if the
-file $dest exists, the function will fail.
-
-=head1 BUGS
-
-None currently known.
-
-The test script for 'make test' should be re-written to use the
-EventLog object.
-
-=head1 AUTHOR
-
-Original code by Jesse Dougherty for HiP Communications. Additional
-fixes and updates attributed to Martin Pauley
-<martin.pauley@ulsterbank.ltd.uk>) and Bret Giddings (bret@essex.ac.uk).
diff --git a/Master/tlpkg/tlperl/lib/Win32/File.pm b/Master/tlpkg/tlperl/lib/Win32/File.pm
deleted file mode 100644
index d67a25448c8..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/File.pm
+++ /dev/null
@@ -1,118 +0,0 @@
-package Win32::File;
-
-#
-# File.pm
-# Written by Douglas_Lankshear@ActiveWare.com
-#
-# subsequent hacks:
-# Gurusamy Sarathy
-#
-
-$VERSION = '0.05';
-
-require Exporter;
-require DynaLoader;
-
-@ISA= qw( Exporter DynaLoader );
-@EXPORT = qw(
- ARCHIVE
- COMPRESSED
- DIRECTORY
- HIDDEN
- NORMAL
- OFFLINE
- READONLY
- SYSTEM
- TEMPORARY
- );
-@EXPORT_OK = qw(GetAttributes SetAttributes);
-
-=head1 NAME
-
-Win32::File - manage file attributes in perl
-
-=head1 SYNOPSIS
-
- use Win32::File;
-
-=head1 DESCRIPTION
-
-This module offers the retrieval and setting of file attributes.
-
-=head1 Functions
-
-=head2 NOTE
-
-All of the functions return FALSE (0) if they fail, unless otherwise noted.
-The function names are exported into the caller's namespace by request.
-
-=over 10
-
-=item GetAttributes(filename, returnedAttributes)
-
-Gets the attributes of a file or directory. returnedAttributes will be set
-to the OR-ed combination of the filename attributes.
-
-=item SetAttributes(filename, newAttributes)
-
-Sets the attributes of a file or directory. newAttributes must be an OR-ed
-combination of the attributes.
-
-=back
-
-=head1 Constants
-
-The following constants are exported by default.
-
-=over 10
-
-=item ARCHIVE
-
-=item COMPRESSED
-
-=item DIRECTORY
-
-=item HIDDEN
-
-=item NORMAL
-
-=item OFFLINE
-
-=item READONLY
-
-=item SYSTEM
-
-=item TEMPORARY
-
-=back
-
-=cut
-
-sub AUTOLOAD
-{
- my($constname);
- ($constname = $AUTOLOAD) =~ s/.*:://;
- #reset $! to zero to reset any current errors.
- local $! = 0;
- my $val = constant($constname);
- if($! != 0)
- {
- if($! =~ /Invalid/)
- {
- $AutoLoader::AUTOLOAD = $AUTOLOAD;
- goto &AutoLoader::AUTOLOAD;
- }
- else
- {
- ($pack,$file,$line) = caller;
- die "Your vendor has not defined Win32::File macro $constname, used in $file at line $line.";
- }
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-bootstrap Win32::File;
-
-1;
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Win32/FileSecurity.pm b/Master/tlpkg/tlperl/lib/Win32/FileSecurity.pm
deleted file mode 100644
index 6c6e5865336..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/FileSecurity.pm
+++ /dev/null
@@ -1,308 +0,0 @@
-package Win32::FileSecurity;
-
-#
-# FileSecurity.pm
-# By Monte Mitzelfelt, monte@conchas.nm.org
-# Larry Wall's Artistic License applies to all related Perl
-# and C code for this module
-# Thanks to the guys at ActiveWare!
-# ver 0.67 ALPHA 1997.07.07
-#
-
-require Exporter;
-require DynaLoader;
-use Carp ;
-
-$VERSION = '1.04';
-
-require Win32 unless defined &Win32::IsWinNT;
-croak "The Win32::FileSecurity module works only on Windows NT" unless Win32::IsWinNT();
-
-@ISA= qw( Exporter DynaLoader );
-
-require Exporter ;
-require DynaLoader ;
-
-@ISA = qw(Exporter DynaLoader) ;
-@EXPORT_OK = qw(
- Get
- Set
- EnumerateRights
- MakeMask
- DELETE
- READ_CONTROL
- WRITE_DAC
- WRITE_OWNER
- SYNCHRONIZE
- STANDARD_RIGHTS_REQUIRED
- STANDARD_RIGHTS_READ
- STANDARD_RIGHTS_WRITE
- STANDARD_RIGHTS_EXECUTE
- STANDARD_RIGHTS_ALL
- SPECIFIC_RIGHTS_ALL
- ACCESS_SYSTEM_SECURITY
- MAXIMUM_ALLOWED
- GENERIC_READ
- GENERIC_WRITE
- GENERIC_EXECUTE
- GENERIC_ALL
- F
- FULL
- R
- READ
- C
- CHANGE
- A
- ADD
- ) ;
-
-sub AUTOLOAD {
- local($constname);
- ($constname = $AUTOLOAD) =~ s/.*:://;
- #reset $! to zero to reset any current errors.
- local $! = 0;
- $val = constant($constname);
- if($! != 0) {
- if($! =~ /Invalid/) {
- $AutoLoader::AUTOLOAD = $AUTOLOAD;
- goto &AutoLoader::AUTOLOAD;
- }
- else {
- ($pack,$file,$line) = caller;
- die "Your vendor has not defined Win32::FileSecurity macro "
- ."$constname, used in $file at line $line.";
- }
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-bootstrap Win32::FileSecurity;
-
-1;
-
-__END__
-
-=head1 NAME
-
-Win32::FileSecurity - manage FileSecurity Discretionary Access Control Lists in perl
-
-=head1 SYNOPSIS
-
- use Win32::FileSecurity;
-
-=head1 DESCRIPTION
-
-This module offers control over the administration of system FileSecurity DACLs.
-You may want to use Get and EnumerateRights to get an idea of what mask values
-correspond to what rights as viewed from File Manager.
-
-=head1 CONSTANTS
-
- DELETE, READ_CONTROL, WRITE_DAC, WRITE_OWNER,
- SYNCHRONIZE, STANDARD_RIGHTS_REQUIRED,
- STANDARD_RIGHTS_READ, STANDARD_RIGHTS_WRITE,
- STANDARD_RIGHTS_EXECUTE, STANDARD_RIGHTS_ALL,
- SPECIFIC_RIGHTS_ALL, ACCESS_SYSTEM_SECURITY,
- MAXIMUM_ALLOWED, GENERIC_READ, GENERIC_WRITE,
- GENERIC_EXECUTE, GENERIC_ALL, F, FULL, R, READ,
- C, CHANGE
-
-=head1 FUNCTIONS
-
-=head2 NOTE:
-
-All of the functions return false if they fail, unless otherwise noted.
-Errors returned via $! containing both Win32 GetLastError() and a text message
-indicating Win32 function that failed.
-
-=over 10
-
-=item constant( $name, $set )
-
-Stores the value of named constant $name into $set.
-Same as C<$set = Win32::FileSecurity::NAME_OF_CONSTANT();>.
-
-=item Get( $filename, \%permisshash )
-
-Gets the DACLs of a file or directory.
-
-=item Set( $filename, \%permisshash )
-
-Sets the DACL for a file or directory.
-
-=item EnumerateRights( $mask, \@rightslist )
-
-Turns the bitmask in $mask into a list of strings in @rightslist.
-
-=item MakeMask( qw( DELETE READ_CONTROL ) )
-
-Takes a list of strings representing constants and returns a bitmasked
-integer value.
-
-=back
-
-=head2 %permisshash
-
-Entries take the form $permisshash{USERNAME} = $mask ;
-
-=head1 EXAMPLE1
-
- # Gets the rights for all files listed on the command line.
- use Win32::FileSecurity qw(Get EnumerateRights);
-
- foreach( @ARGV ) {
- next unless -e $_ ;
- if ( Get( $_, \%hash ) ) {
- while( ($name, $mask) = each %hash ) {
- print "$name:\n\t";
- EnumerateRights( $mask, \@happy ) ;
- print join( "\n\t", @happy ), "\n";
- }
- }
- else {
- print( "Error #", int( $! ), ": $!" ) ;
- }
- }
-
-=head1 EXAMPLE2
-
- # Gets existing DACL and modifies Administrator rights
- use Win32::FileSecurity qw(MakeMask Get Set);
-
- # These masks show up as Full Control in File Manager
- $file = MakeMask( qw( FULL ) );
-
- $dir = MakeMask( qw(
- FULL
- GENERIC_ALL
- ) );
-
- foreach( @ARGV ) {
- s/\\$//;
- next unless -e;
- Get( $_, \%hash ) ;
- $hash{Administrator} = ( -d ) ? $dir : $file ;
- Set( $_, \%hash ) ;
- }
-
-=head1 COMMON MASKS FROM CACLS AND WINFILE
-
-=head2 READ
-
- MakeMask( qw( FULL ) ); # for files
- MakeMask( qw( READ GENERIC_READ GENERIC_EXECUTE ) ); # for directories
-
-=head2 CHANGE
-
- MakeMask( qw( CHANGE ) ); # for files
- MakeMask( qw( CHANGE GENERIC_WRITE GENERIC_READ GENERIC_EXECUTE ) ); # for directories
-
-=head2 ADD & READ
-
- MakeMask( qw( ADD GENERIC_READ GENERIC_EXECUTE ) ); # for directories only!
-
-=head2 FULL
-
- MakeMask( qw( FULL ) ); # for files
- MakeMask( qw( FULL GENERIC_ALL ) ); # for directories
-
-=head1 RESOURCES
-
-From Microsoft: check_sd
- http://premium.microsoft.com/download/msdn/samples/2760.exe
-
-(thanks to Guert Schimmel at Sybase for turning me on to this one)
-
-=head1 VERSION
-
-1.03 ALPHA 97-12-14
-
-=head1 REVISION NOTES
-
-=over 10
-
-=item 1.03 ALPHA 1998.01.11
-
-Imported diffs from 0.67 (parent) version
-
-=item 1.02 ALPHA 1997.12.14
-
-Pod fixes, @EXPORT list additions <gsar@activestate.com>
-
-Fix unitialized vars on unknown ACLs <jmk@exc.bybyte.de>
-
-=item 1.01 ALPHA 1997.04.25
-
-CORE Win32 version imported from 0.66 <gsar@activestate.com>
-
-=item 0.67 ALPHA 1997.07.07
-
-Kludged bug in mapping bits to separate ACE's. Notably, this screwed
-up CHANGE access by leaving out a delete bit in the
-C<INHERIT_ONLY_ACE | OBJECT_INHERIT_ACE> Access Control Entry.
-
-May need to rethink...
-
-=item 0.66 ALPHA 1997.03.13
-
-Fixed bug in memory allocation check
-
-=item 0.65 ALPHA 1997.02.25
-
-Tested with 5.003 build 303
-
-Added ISA exporter, and @EXPORT_OK
-
-Added F, FULL, R, READ, C, CHANGE as composite pre-built mask names.
-
-Added server\ to keys returned in hash from Get
-
-Made constants and MakeMask case insensitive (I don't know why I did that)
-
-Fixed mask comparison in ListDacl and Enumerate Rights from simple & mask
-to exact bit match ! ( ( x & y ) ^ x ) makes sure all bits in x
-are set in y
-
-Fixed some "wild" pointers
-
-=item 0.60 ALPHA 1996.07.31
-
-Now suitable for file and directory permissions
-
-Included ListDacl.exe in bundle for debugging
-
-Added "intuitive" inheritance for directories, basically functions like FM
-triggered by presence of GENERIC_ rights this may need to change
-
-see EXAMPLE2
-
-Changed from AddAccessAllowedAce to AddAce for control over inheritance
-
-=item 0.51 ALPHA 1996.07.20
-
-Fixed memory allocation bug
-
-=item 0.50 ALPHA 1996.07.29
-
-Base functionality
-
-Using AddAccessAllowedAce
-
-Suitable for file permissions
-
-=back
-
-=head1 KNOWN ISSUES / BUGS
-
-=over 10
-
-=item 1
-
-May not work on remote drives.
-
-=item 2
-
-Errors croak, don't return via $! as documented.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Win32/IPC.pm b/Master/tlpkg/tlperl/lib/Win32/IPC.pm
deleted file mode 100644
index c97279b24c5..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/IPC.pm
+++ /dev/null
@@ -1,195 +0,0 @@
-#---------------------------------------------------------------------
-package Win32::IPC;
-#
-# Copyright 1998 Christopher J. Madsen
-#
-# Created: 3 Feb 1998 from the ActiveWare version
-# (c) 1995 Microsoft Corporation. All rights reserved.
-# Developed by ActiveWare Internet Corp., http://www.ActiveWare.com
-#
-# Other modifications (c) 1997 by Gurusamy Sarathy <gsar@activestate.com>
-#
-# Author: Christopher J. Madsen <cjm@pobox.com>
-# Version: 1.03 (11-Jul-2003)
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the same terms as Perl itself.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either the
-# GNU General Public License or the Artistic License for more details.
-#
-# Base class for Win32 synchronization objects
-#---------------------------------------------------------------------
-
-$VERSION = '1.03';
-
-require Exporter;
-require DynaLoader;
-use strict;
-use vars qw($AUTOLOAD $VERSION @ISA @EXPORT @EXPORT_OK);
-
-@ISA = qw(Exporter DynaLoader);
-@EXPORT = qw(
- INFINITE
- WaitForMultipleObjects
-);
-@EXPORT_OK = qw(
- wait_any wait_all
-);
-
-sub AUTOLOAD {
- # This AUTOLOAD is used to 'autoload' constants from the constant()
- # XS function.
- my($constname);
- ($constname = $AUTOLOAD) =~ s/.*:://;
- local $! = 0;
- my $val = constant($constname);
- if ($! != 0) {
- my ($pack,$file,$line) = caller;
- die "Your vendor has not defined Win32::IPC macro $constname, used at $file line $line.";
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-} # end AUTOLOAD
-
-bootstrap Win32::IPC;
-
-# How's this for cryptic? Use wait_any or wait_all!
-sub WaitForMultipleObjects
-{
- my $result = (($_[1] ? wait_all($_[0], $_[2])
- : wait_any($_[0], $_[2]))
- ? 1
- : 0);
- @{$_[0]} = (); # Bug for bug compatibility! Use wait_any or wait_all!
- $result;
-} # end WaitForMultipleObjects
-
-1;
-__END__
-
-=head1 NAME
-
-Win32::IPC - Base class for Win32 synchronization objects
-
-=head1 SYNOPSIS
-
- use Win32::Event 1.00 qw(wait_any);
- #Create objects.
-
- wait_any(@ListOfObjects,$timeout);
-
-=head1 DESCRIPTION
-
-This module is loaded by the other Win32 synchronization modules. You
-shouldn't need to load it yourself. It supplies the wait functions to
-those modules.
-
-The synchronization modules are L<"Win32::ChangeNotify">,
-L<"Win32::Event">, L<"Win32::Mutex">, & L<"Win32::Semaphore">.
-
-In addition, you can use C<wait_any> and C<wait_all> with
-L<"Win32::Console"> and L<"Win32::Process"> objects. (However, those
-modules do not export the wait functions; you must load one of the
-synchronization modules (or just Win32::IPC)).
-
-=head2 Methods
-
-B<Win32::IPC> supplies one method to all synchronization objects.
-
-=over 4
-
-=item $obj->wait([$timeout])
-
-Waits for C<$obj> to become signalled. C<$timeout> is the maximum time
-to wait (in milliseconds). If C<$timeout> is omitted, waits forever.
-If C<$timeout> is 0, returns immediately.
-
-Returns:
-
- +1 The object is signalled
- -1 The object is an abandoned mutex
- 0 Timed out
- undef An error occurred
-
-=back
-
-=head2 Functions
-
-=over 4
-
-=item wait_any(@objects, [$timeout])
-
-Waits for at least one of the C<@objects> to become signalled.
-C<$timeout> is the maximum time to wait (in milliseconds). If
-C<$timeout> is omitted, waits forever. If C<$timeout> is 0, returns
-immediately.
-
-The return value indicates which object ended the wait:
-
- +N $object[N-1] is signalled
- -N $object[N-1] is an abandoned mutex
- 0 Timed out
- undef An error occurred
-
-If more than one object became signalled, the one with the lowest
-index is used.
-
-=item wait_all(@objects, [$timeout])
-
-This is the same as C<wait_any>, but it waits for all the C<@objects>
-to become signalled. The return value indicates the last object to
-become signalled, and is negative if at least one of the C<@objects>
-is an abandoned mutex.
-
-=back
-
-=head2 Deprecated Functions and Methods
-
-B<Win32::IPC> still supports the ActiveWare syntax, but its use is
-deprecated.
-
-=over 4
-
-=item INFINITE
-
-Constant value for an infinite timeout. Omit the C<$timeout> argument
-instead.
-
-=item WaitForMultipleObjects(\@objects, $wait_all, $timeout)
-
-Warning: C<WaitForMultipleObjects> erases C<@objects>!
-Use C<wait_all> or C<wait_any> instead.
-
-=item $obj->Wait($timeout)
-
-Similar to C<not $obj-E<gt>wait($timeout)>.
-
-=back
-
-=head1 INTERNALS
-
-The C<wait_any> and C<wait_all> functions support two kinds of
-objects. Objects derived from C<Win32::IPC> are expected to consist
-of a reference to a scalar containing the Win32 HANDLE as an IV.
-
-Other objects (for which C<UNIVERSAL::isa($object, "Win32::IPC")> is
-false), are expected to implement a C<get_Win32_IPC_HANDLE> method.
-When called in scalar context with no arguments, this method should
-return a Win32 HANDLE (as an IV) suitable for passing to the Win32
-WaitForMultipleObjects API function.
-
-=head1 AUTHOR
-
-Christopher J. Madsen E<lt>F<cjm@pobox.com>E<gt>
-
-Loosely based on the original module by ActiveWare Internet Corp.,
-F<http://www.ActiveWare.com>
-
-=cut
-
-# Local Variables:
-# tmtrack-file-task: "Win32::IPC"
-# End:
diff --git a/Master/tlpkg/tlperl/lib/Win32/Internet.pm b/Master/tlpkg/tlperl/lib/Win32/Internet.pm
deleted file mode 100644
index f6dac3130af..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/Internet.pm
+++ /dev/null
@@ -1,3009 +0,0 @@
-#######################################################################
-#
-# Win32::Internet - Perl Module for Internet Extensions
-# ^^^^^^^^^^^^^^^
-# This module creates an object oriented interface to the Win32
-# Internet Functions (WININET.DLL).
-#
-# Version: 0.08 (14 Feb 1997)
-# Version: 0.081 (25 Sep 1999)
-# Version: 0.082 (04 Sep 2001)
-#
-#######################################################################
-
-# changes:
-# - fixed 2 bugs in Option(s) related subs
-# - works with build 30x also
-
-package Win32::Internet;
-
-require Exporter; # to export the constants to the main:: space
-require DynaLoader; # to dynuhlode the module.
-
-# use Win32::WinError; # for windows constants.
-
-@ISA= qw( Exporter DynaLoader );
-@EXPORT = qw(
- HTTP_ADDREQ_FLAG_ADD
- HTTP_ADDREQ_FLAG_REPLACE
- HTTP_QUERY_ALLOW
- HTTP_QUERY_CONTENT_DESCRIPTION
- HTTP_QUERY_CONTENT_ID
- HTTP_QUERY_CONTENT_LENGTH
- HTTP_QUERY_CONTENT_TRANSFER_ENCODING
- HTTP_QUERY_CONTENT_TYPE
- HTTP_QUERY_COST
- HTTP_QUERY_CUSTOM
- HTTP_QUERY_DATE
- HTTP_QUERY_DERIVED_FROM
- HTTP_QUERY_EXPIRES
- HTTP_QUERY_FLAG_REQUEST_HEADERS
- HTTP_QUERY_FLAG_SYSTEMTIME
- HTTP_QUERY_LANGUAGE
- HTTP_QUERY_LAST_MODIFIED
- HTTP_QUERY_MESSAGE_ID
- HTTP_QUERY_MIME_VERSION
- HTTP_QUERY_PRAGMA
- HTTP_QUERY_PUBLIC
- HTTP_QUERY_RAW_HEADERS
- HTTP_QUERY_RAW_HEADERS_CRLF
- HTTP_QUERY_REQUEST_METHOD
- HTTP_QUERY_SERVER
- HTTP_QUERY_STATUS_CODE
- HTTP_QUERY_STATUS_TEXT
- HTTP_QUERY_URI
- HTTP_QUERY_USER_AGENT
- HTTP_QUERY_VERSION
- HTTP_QUERY_WWW_LINK
- ICU_BROWSER_MODE
- ICU_DECODE
- ICU_ENCODE_SPACES_ONLY
- ICU_ESCAPE
- ICU_NO_ENCODE
- ICU_NO_META
- ICU_USERNAME
- INTERNET_FLAG_PASSIVE
- INTERNET_FLAG_ASYNC
- INTERNET_HYPERLINK
- INTERNET_FLAG_KEEP_CONNECTION
- INTERNET_FLAG_MAKE_PERSISTENT
- INTERNET_FLAG_NO_AUTH
- INTERNET_FLAG_NO_AUTO_REDIRECT
- INTERNET_FLAG_NO_CACHE_WRITE
- INTERNET_FLAG_NO_COOKIES
- INTERNET_FLAG_READ_PREFETCH
- INTERNET_FLAG_RELOAD
- INTERNET_FLAG_RESYNCHRONIZE
- INTERNET_FLAG_TRANSFER_ASCII
- INTERNET_FLAG_TRANSFER_BINARY
- INTERNET_INVALID_PORT_NUMBER
- INTERNET_INVALID_STATUS_CALLBACK
- INTERNET_OPEN_TYPE_DIRECT
- INTERNET_OPEN_TYPE_PROXY
- INTERNET_OPEN_TYPE_PROXY_PRECONFIG
- INTERNET_OPTION_CONNECT_BACKOFF
- INTERNET_OPTION_CONNECT_RETRIES
- INTERNET_OPTION_CONNECT_TIMEOUT
- INTERNET_OPTION_CONTROL_SEND_TIMEOUT
- INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT
- INTERNET_OPTION_DATA_SEND_TIMEOUT
- INTERNET_OPTION_DATA_RECEIVE_TIMEOUT
- INTERNET_OPTION_HANDLE_SIZE
- INTERNET_OPTION_LISTEN_TIMEOUT
- INTERNET_OPTION_PASSWORD
- INTERNET_OPTION_READ_BUFFER_SIZE
- INTERNET_OPTION_USER_AGENT
- INTERNET_OPTION_USERNAME
- INTERNET_OPTION_VERSION
- INTERNET_OPTION_WRITE_BUFFER_SIZE
- INTERNET_SERVICE_FTP
- INTERNET_SERVICE_GOPHER
- INTERNET_SERVICE_HTTP
- INTERNET_STATUS_CLOSING_CONNECTION
- INTERNET_STATUS_CONNECTED_TO_SERVER
- INTERNET_STATUS_CONNECTING_TO_SERVER
- INTERNET_STATUS_CONNECTION_CLOSED
- INTERNET_STATUS_HANDLE_CLOSING
- INTERNET_STATUS_HANDLE_CREATED
- INTERNET_STATUS_NAME_RESOLVED
- INTERNET_STATUS_RECEIVING_RESPONSE
- INTERNET_STATUS_REDIRECT
- INTERNET_STATUS_REQUEST_COMPLETE
- INTERNET_STATUS_REQUEST_SENT
- INTERNET_STATUS_RESOLVING_NAME
- INTERNET_STATUS_RESPONSE_RECEIVED
- INTERNET_STATUS_SENDING_REQUEST
-);
-
-
-#######################################################################
-# This AUTOLOAD is used to 'autoload' constants from the constant()
-# XS function. If a constant is not found then control is passed
-# to the AUTOLOAD in AutoLoader.
-#
-
-sub AUTOLOAD {
- my($constname);
- ($constname = $AUTOLOAD) =~ s/.*:://;
- #reset $! to zero to reset any current errors.
- local $! = 0;
- my $val = constant($constname, @_ ? $_[0] : 0);
- if ($! != 0) {
-
- # [dada] This results in an ugly Autoloader error
- #if ($! =~ /Invalid/) {
- # $AutoLoader::AUTOLOAD = $AUTOLOAD;
- # goto &AutoLoader::AUTOLOAD;
- #} else {
-
- # [dada] ... I prefer this one :)
-
- ($pack,$file,$line) = caller; undef $pack;
- die "Win32::Internet::$constname is not defined, used at $file line $line.";
-
- #}
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-
-#######################################################################
-# STATIC OBJECT PROPERTIES
-#
-$VERSION = "0.082";
-
-%callback_code = ();
-%callback_info = ();
-
-
-#######################################################################
-# PUBLIC METHODS
-#
-
-#======== ### CLASS CONSTRUCTOR
-sub new {
-#========
- my($class, $useragent, $opentype, $proxy, $proxybypass, $flags) = @_;
- my $self = {};
-
- if(ref($useragent) and ref($useragent) eq "HASH") {
- $opentype = $useragent->{'opentype'};
- $proxy = $useragent->{'proxy'};
- $proxybypass = $useragent->{'proxybypass'};
- $flags = $useragent->{'flags'};
- my $myuseragent = $useragent->{'useragent'};
- undef $useragent;
- $useragent = $myuseragent;
- }
-
- $useragent = "Perl-Win32::Internet/".$VERSION unless defined($useragent);
- $opentype = constant("INTERNET_OPEN_TYPE_DIRECT",0) unless defined($opentype);
- $proxy = "" unless defined($proxy);
- $proxybypass = "" unless defined($proxybypass);
- $flags = 0 unless defined($flags);
-
-
- my $handle = InternetOpen($useragent, $opentype, $proxy, $proxybypass, $flags);
- if ($handle) {
- $self->{'connections'} = 0;
- $self->{'pasv'} = 0;
- $self->{'handle'} = $handle;
- $self->{'useragent'} = $useragent;
- $self->{'proxy'} = $proxy;
- $self->{'proxybypass'} = $proxybypass;
- $self->{'flags'} = $flags;
- $self->{'Type'} = "Internet";
-
- # [dada] I think it's better to call SetStatusCallback explicitly...
- #if($flags & constant("INTERNET_FLAG_ASYNC",0)) {
- # my $callbackresult=InternetSetStatusCallback($handle);
- # if($callbackresult==&constant("INTERNET_INVALID_STATUS_CALLBACK",0)) {
- # $self->{'Error'} = -2;
- # }
- #}
-
- bless $self;
- } else {
- $self->{'handle'} = undef;
- bless $self;
- }
- $self;
-}
-
-
-#============
-sub OpenURL {
-#============
- my($self,$new,$URL) = @_;
- return undef unless ref($self);
-
- my $newhandle=InternetOpenUrl($self->{'handle'},$URL,"",0,0,0);
- if(!$newhandle) {
- $self->{'Error'} = "Cannot open URL.";
- return undef;
- } else {
- $self->{'connections'}++;
- $_[1] = _new($newhandle);
- $_[1]->{'Type'} = "URL";
- $_[1]->{'URL'} = $URL;
- return $newhandle;
- }
-}
-
-
-#================
-sub TimeConvert {
-#================
- my($self, $sec, $min, $hour, $day, $mon, $year, $wday, $rfc) = @_;
- return undef unless ref($self);
-
- if(!defined($rfc)) {
- return InternetTimeToSystemTime($sec);
- } else {
- return InternetTimeFromSystemTime($sec, $min, $hour,
- $day, $mon, $year,
- $wday, $rfc);
- }
-}
-
-
-#=======================
-sub QueryDataAvailable {
-#=======================
- my($self) = @_;
- return undef unless ref($self);
-
- return InternetQueryDataAvailable($self->{'handle'});
-}
-
-
-#=============
-sub ReadFile {
-#=============
- my($self, $buffersize) = @_;
- return undef unless ref($self);
-
- my $howmuch = InternetQueryDataAvailable($self->{'handle'});
- $buffersize = $howmuch unless defined($buffersize);
- return InternetReadFile($self->{'handle'}, ($howmuch<$buffersize) ? $howmuch
- : $buffersize);
-}
-
-
-#===================
-sub ReadEntireFile {
-#===================
- my($handle) = @_;
- my $content = "";
- my $buffersize = 16000;
- my $howmuch = 0;
- my $buffer = "";
-
- $handle = $handle->{'handle'} if defined($handle) and ref($handle);
-
- $howmuch = InternetQueryDataAvailable($handle);
- # print "\nReadEntireFile: $howmuch bytes to read...\n";
-
- while($howmuch>0) {
- $buffer = InternetReadFile($handle, ($howmuch<$buffersize) ? $howmuch
- : $buffersize);
- # print "\nReadEntireFile: ", length($buffer), " bytes read...\n";
-
- if(!defined($buffer)) {
- return undef;
- } else {
- $content .= $buffer;
- }
- $howmuch = InternetQueryDataAvailable($handle);
- # print "\nReadEntireFile: still $howmuch bytes to read...\n";
-
- }
- return $content;
-}
-
-
-#=============
-sub FetchURL {
-#=============
- # (OpenURL+Read+Close)...
- my($self, $URL) = @_;
- return undef unless ref($self);
-
- my $newhandle = InternetOpenUrl($self->{'handle'}, $URL, "", 0, 0, 0);
- if(!$newhandle) {
- $self->{'Error'} = "Cannot open URL.";
- return undef;
- } else {
- my $content = ReadEntireFile($newhandle);
- InternetCloseHandle($newhandle);
- return $content;
- }
-}
-
-
-#================
-sub Connections {
-#================
- my($self) = @_;
- return undef unless ref($self);
-
- return $self->{'connections'} if $self->{'Type'} eq "Internet";
- return undef;
-}
-
-
-#================
-sub GetResponse {
-#================
- my($num, $text) = InternetGetLastResponseInfo();
- return $text;
-}
-
-#===========
-sub Option {
-#===========
- my($self, $option, $value) = @_;
- return undef unless ref($self);
-
- my $retval = 0;
-
- $option = constant("INTERNET_OPTION_USER_AGENT", 0) unless defined($option);
-
- if(!defined($value)) {
- $retval = InternetQueryOption($self->{'handle'}, $option);
- } else {
- $retval = InternetSetOption($self->{'handle'}, $option, $value);
- }
- return $retval;
-}
-
-
-#==============
-sub UserAgent {
-#==============
- my($self, $value) = @_;
- return undef unless ref($self);
-
- return Option($self, constant("INTERNET_OPTION_USER_AGENT", 0), $value);
-}
-
-
-#=============
-sub Username {
-#=============
- my($self, $value) = @_;
- return undef unless ref($self);
-
- if($self->{'Type'} ne "HTTP" and $self->{'Type'} ne "FTP") {
- $self->{'Error'} = "Username() only on FTP or HTTP sessions.";
- return undef;
- }
-
- return Option($self, constant("INTERNET_OPTION_USERNAME", 0), $value);
-}
-
-
-#=============
-sub Password {
-#=============
- my($self, $value)=@_;
- return undef unless ref($self);
-
- if($self->{'Type'} ne "HTTP" and $self->{'Type'} ne "FTP") {
- $self->{'Error'} = "Password() only on FTP or HTTP sessions.";
- return undef;
- }
-
- return Option($self, constant("INTERNET_OPTION_PASSWORD", 0), $value);
-}
-
-
-#===================
-sub ConnectTimeout {
-#===================
- my($self, $value) = @_;
- return undef unless ref($self);
-
- return Option($self, constant("INTERNET_OPTION_CONNECT_TIMEOUT", 0), $value);
-}
-
-
-#===================
-sub ConnectRetries {
-#===================
- my($self, $value) = @_;
- return undef unless ref($self);
-
- return Option($self, constant("INTERNET_OPTION_CONNECT_RETRIES", 0), $value);
-}
-
-
-#===================
-sub ConnectBackoff {
-#===================
- my($self,$value)=@_;
- return undef unless ref($self);
-
- return Option($self, constant("INTERNET_OPTION_CONNECT_BACKOFF", 0), $value);
-}
-
-
-#====================
-sub DataSendTimeout {
-#====================
- my($self,$value) = @_;
- return undef unless ref($self);
-
- return Option($self, constant("INTERNET_OPTION_DATA_SEND_TIMEOUT", 0), $value);
-}
-
-
-#=======================
-sub DataReceiveTimeout {
-#=======================
- my($self, $value) = @_;
- return undef unless ref($self);
-
- return Option($self, constant("INTERNET_OPTION_DATA_RECEIVE_TIMEOUT", 0), $value);
-}
-
-
-#==========================
-sub ControlReceiveTimeout {
-#==========================
- my($self, $value) = @_;
- return undef unless ref($self);
-
- return Option($self, constant("INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT", 0), $value);
-}
-
-
-#=======================
-sub ControlSendTimeout {
-#=======================
- my($self, $value) = @_;
- return undef unless ref($self);
-
- return Option($self, constant("INTERNET_OPTION_CONTROL_SEND_TIMEOUT", 0), $value);
-}
-
-
-#================
-sub QueryOption {
-#================
- my($self, $option) = @_;
- return undef unless ref($self);
-
- return InternetQueryOption($self->{'handle'}, $option);
-}
-
-
-#==============
-sub SetOption {
-#==============
- my($self, $option, $value) = @_;
- return undef unless ref($self);
-
- return InternetSetOption($self->{'handle'}, $option, $value);
-}
-
-
-#=============
-sub CrackURL {
-#=============
- my($self, $URL, $flags) = @_;
- return undef unless ref($self);
-
- $flags = constant("ICU_ESCAPE", 0) unless defined($flags);
-
- my @newurl = InternetCrackUrl($URL, $flags);
-
- if(!defined($newurl[0])) {
- $self->{'Error'} = "Cannot crack URL.";
- return undef;
- } else {
- return @newurl;
- }
-}
-
-
-#==============
-sub CreateURL {
-#==============
- my($self, $scheme, $hostname, $port,
- $username, $password,
- $path, $extrainfo, $flags) = @_;
- return undef unless ref($self);
-
- if(ref($scheme) and ref($scheme) eq "HASH") {
- $flags = $hostname;
- $hostname = $scheme->{'hostname'};
- $port = $scheme->{'port'};
- $username = $scheme->{'username'};
- $password = $scheme->{'password'};
- $path = $scheme->{'path'};
- $extrainfo = $scheme->{'extrainfo'};
- my $myscheme = $scheme->{'scheme'};
- undef $scheme;
- $scheme = $myscheme;
- }
-
- $hostname = "" unless defined($hostname);
- $port = 0 unless defined($port);
- $username = "" unless defined($username);
- $password = "" unless defined($password);
- $path = "" unless defined($path);
- $extrainfo = "" unless defined($extrainfo);
- $flags = constant("ICU_ESCAPE", 0) unless defined($flags);
-
- my $newurl = InternetCreateUrl($scheme, $hostname, $port,
- $username, $password,
- $path, $extrainfo, $flags);
- if(!defined($newurl)) {
- $self->{'Error'} = "Cannot create URL.";
- return undef;
- } else {
- return $newurl;
- }
-}
-
-
-#====================
-sub CanonicalizeURL {
-#====================
- my($self, $URL, $flags) = @_;
- return undef unless ref($self);
-
- my $newurl = InternetCanonicalizeUrl($URL, $flags);
- if(!defined($newurl)) {
- $self->{'Error'} = "Cannot canonicalize URL.";
- return undef;
- } else {
- return $newurl;
- }
-}
-
-
-#===============
-sub CombineURL {
-#===============
- my($self, $baseURL, $relativeURL, $flags) = @_;
- return undef unless ref($self);
-
- my $newurl = InternetCombineUrl($baseURL, $relativeURL, $flags);
- if(!defined($newurl)) {
- $self->{'Error'} = "Cannot combine URL(s).";
- return undef;
- } else {
- return $newurl;
- }
-}
-
-
-#======================
-sub SetStatusCallback {
-#======================
- my($self) = @_;
- return undef unless ref($self);
-
- my $callback = InternetSetStatusCallback($self->{'handle'});
- print "callback=$callback, constant=",constant("INTERNET_INVALID_STATUS_CALLBACK", 0), "\n";
- if($callback == constant("INTERNET_INVALID_STATUS_CALLBACK", 0)) {
- return undef;
- } else {
- return $callback;
- }
-}
-
-
-#======================
-sub GetStatusCallback {
-#======================
- my($self, $context) = @_;
- $context = $self if not defined $context;
- return($callback_code{$context}, $callback_info{$context});
-}
-
-
-#==========
-sub Error {
-#==========
- my($self) = @_;
- return undef unless ref($self);
-
- require Win32 unless defined &Win32::GetLastError;
- my $errtext = "";
- my $tmp = "";
- my $errnum = Win32::GetLastError();
-
- if($errnum < 12000) {
- $errtext = Win32::FormatMessage($errnum);
- $errtext =~ s/[\r\n]//g;
- } elsif($errnum == 12003) {
- ($tmp, $errtext) = InternetGetLastResponseInfo();
- chomp $errtext;
- 1 while($errtext =~ s/(.*)\n//); # the last line should be significative...
- # otherwise call GetResponse() to get it whole
- } elsif($errnum >= 12000) {
- $errtext = FormatMessage($errnum);
- $errtext =~ s/[\r\n]//g;
- } else {
- $errtext="Error";
- }
- if($errnum == 0 and defined($self->{'Error'})) {
- if($self->{'Error'} == -2) {
- $errnum = -2;
- $errtext = "Asynchronous operations not available.";
- } else {
- $errnum = -1;
- $errtext = $self->{'Error'};
- }
- }
- return (wantarray)? ($errnum, $errtext) : "\[".$errnum."\] ".$errtext;
-}
-
-
-#============
-sub Version {
-#============
- my $dll = InternetDllVersion();
- $dll =~ s/\0//g;
- return (wantarray)? ($Win32::Internet::VERSION, $dll)
- : $Win32::Internet::VERSION."/".$dll;
-}
-
-
-#==========
-sub Close {
-#==========
- my($self, $handle) = @_;
- if(!defined($handle)) {
- return undef unless ref($self);
- $handle = $self->{'handle'};
- }
- InternetCloseHandle($handle);
-}
-
-
-
-#######################################################################
-# FTP CLASS METHODS
-#
-
-#======== ### FTP CONSTRUCTOR
-sub FTP {
-#========
- my($self, $new, $server, $username, $password, $port, $pasv, $context) = @_;
- return undef unless ref($self);
-
- if(ref($server) and ref($server) eq "HASH") {
- $port = $server->{'port'};
- $username = $server->{'username'};
- $password = $password->{'host'};
- my $myserver = $server->{'server'};
- $pasv = $server->{'pasv'};
- $context = $server->{'context'};
- undef $server;
- $server = $myserver;
- }
-
- $server = "" unless defined($server);
- $username = "anonymous" unless defined($username);
- $password = "" unless defined($password);
- $port = 21 unless defined($port);
- $context = 0 unless defined($context);
-
- $pasv = $self->{'pasv'} unless defined $pasv;
- $pasv = $pasv ? constant("INTERNET_FLAG_PASSIVE",0) : 0;
-
- my $newhandle = InternetConnect($self->{'handle'}, $server, $port,
- $username, $password,
- constant("INTERNET_SERVICE_FTP", 0),
- $pasv, $context);
- if($newhandle) {
- $self->{'connections'}++;
- $_[1] = _new($newhandle);
- $_[1]->{'Type'} = "FTP";
- $_[1]->{'Mode'} = "bin";
- $_[1]->{'pasv'} = $pasv;
- $_[1]->{'username'} = $username;
- $_[1]->{'password'} = $password;
- $_[1]->{'server'} = $server;
- return $newhandle;
- } else {
- return undef;
- }
-}
-
-#========
-sub Pwd {
-#========
- my($self) = @_;
- return undef unless ref($self);
-
- if($self->{'Type'} ne "FTP" or !defined($self->{'handle'})) {
- $self->{'Error'} = "Pwd() only on FTP sessions.";
- return undef;
- }
-
- return FtpGetCurrentDirectory($self->{'handle'});
-}
-
-
-#=======
-sub Cd {
-#=======
- my($self, $path) = @_;
- return undef unless ref($self);
-
- if($self->{'Type'} ne "FTP" || !defined($self->{'handle'})) {
- $self->{'Error'} = "Cd() only on FTP sessions.";
- return undef;
- }
-
- my $retval = FtpSetCurrentDirectory($self->{'handle'}, $path);
- if(!defined($retval)) {
- return undef;
- } else {
- return $path;
- }
-}
-#====================
-sub Cwd { Cd(@_); }
-sub Chdir { Cd(@_); }
-#====================
-
-
-#==========
-sub Mkdir {
-#==========
- my($self, $path) = @_;
- return undef unless ref($self);
-
- if($self->{'Type'} ne "FTP" or !defined($self->{'handle'})) {
- $self->{'Error'} = "Mkdir() only on FTP sessions.";
- return undef;
- }
-
- my $retval = FtpCreateDirectory($self->{'handle'}, $path);
- $self->{'Error'} = "Can't create directory." unless defined($retval);
- return $retval;
-}
-#====================
-sub Md { Mkdir(@_); }
-#====================
-
-
-#=========
-sub Mode {
-#=========
- my($self, $value) = @_;
- return undef unless ref($self);
-
- if($self->{'Type'} ne "FTP" or !defined($self->{'handle'})) {
- $self->{'Error'} = "Mode() only on FTP sessions.";
- return undef;
- }
-
- if(!defined($value)) {
- return $self->{'Mode'};
- } else {
- my $modesub = ($value =~ /^a/i) ? "Ascii" : "Binary";
- $self->$modesub($_[0]);
- }
- return $self->{'Mode'};
-}
-
-
-#==========
-sub Rmdir {
-#==========
- my($self, $path) = @_;
- return undef unless ref($self);
-
- if($self->{'Type'} ne "FTP" or !defined($self->{'handle'})) {
- $self->{'Error'} = "Rmdir() only on FTP sessions.";
- return undef;
- }
- my $retval = FtpRemoveDirectory($self->{'handle'}, $path);
- $self->{'Error'} = "Can't remove directory." unless defined($retval);
- return $retval;
-}
-#====================
-sub Rd { Rmdir(@_); }
-#====================
-
-
-#=========
-sub Pasv {
-#=========
- my($self, $value) = @_;
- return undef unless ref($self);
-
- if(defined($value) and $self->{'Type'} eq "Internet") {
- if($value == 0) {
- $self->{'pasv'} = 0;
- } else {
- $self->{'pasv'} = 1;
- }
- }
- return $self->{'pasv'};
-}
-
-#=========
-sub List {
-#=========
- my($self, $pattern, $retmode) = @_;
- return undef unless ref($self);
-
- my $retval = "";
- my $size = "";
- my $attr = "";
- my $ctime = "";
- my $atime = "";
- my $mtime = "";
- my $csec = 0; my $cmin = 0; my $chou = 0; my $cday = 0; my $cmon = 0; my $cyea = 0;
- my $asec = 0; my $amin = 0; my $ahou = 0; my $aday = 0; my $amon = 0; my $ayea = 0;
- my $msec = 0; my $mmin = 0; my $mhou = 0; my $mday = 0; my $mmon = 0; my $myea = 0;
- my $newhandle = 0;
- my $nextfile = 1;
- my @results = ();
- my ($filename, $altname, $file);
-
- if($self->{'Type'} ne "FTP") {
- $self->{'Error'} = "List() only on FTP sessions.";
- return undef;
- }
-
- $pattern = "" unless defined($pattern);
- $retmode = 1 unless defined($retmode);
-
- if($retmode == 2) {
-
- ( $newhandle,$filename, $altname, $size, $attr,
- $csec, $cmin, $chou, $cday, $cmon, $cyea,
- $asec, $amin, $ahou, $aday, $amon, $ayea,
- $msec, $mmin, $mhou, $mday, $mmon, $myea
- ) = FtpFindFirstFile($self->{'handle'}, $pattern, 0, 0);
-
- if(!$newhandle) {
- $self->{'Error'} = "Can't read FTP directory.";
- return undef;
- } else {
-
- while($nextfile) {
- $ctime = join(",", ($csec, $cmin, $chou, $cday, $cmon, $cyea));
- $atime = join(",", ($asec, $amin, $ahou, $aday, $amon, $ayea));
- $mtime = join(",", ($msec, $mmin, $mhou, $mday, $mmon, $myea));
- push(@results, $filename, $altname, $size, $attr, $ctime, $atime, $mtime);
-
- ( $nextfile, $filename, $altname, $size, $attr,
- $csec, $cmin, $chou, $cday, $cmon, $cyea,
- $asec, $amin, $ahou, $aday, $amon, $ayea,
- $msec, $mmin, $mhou, $mday, $mmon, $myea
- ) = InternetFindNextFile($newhandle);
-
- }
- InternetCloseHandle($newhandle);
- return @results;
-
- }
-
- } elsif($retmode == 3) {
-
- ( $newhandle,$filename, $altname, $size, $attr,
- $csec, $cmin, $chou, $cday, $cmon, $cyea,
- $asec, $amin, $ahou, $aday, $amon, $ayea,
- $msec, $mmin, $mhou, $mday, $mmon, $myea
- ) = FtpFindFirstFile($self->{'handle'}, $pattern, 0, 0);
-
- if(!$newhandle) {
- $self->{'Error'} = "Can't read FTP directory.";
- return undef;
-
- } else {
-
- while($nextfile) {
- $ctime = join(",", ($csec, $cmin, $chou, $cday, $cmon, $cyea));
- $atime = join(",", ($asec, $amin, $ahou, $aday, $amon, $ayea));
- $mtime = join(",", ($msec, $mmin, $mhou, $mday, $mmon, $myea));
- $file = { "name" => $filename,
- "altname" => $altname,
- "size" => $size,
- "attr" => $attr,
- "ctime" => $ctime,
- "atime" => $atime,
- "mtime" => $mtime,
- };
- push(@results, $file);
-
- ( $nextfile, $filename, $altname, $size, $attr,
- $csec, $cmin, $chou, $cday, $cmon, $cyea,
- $asec, $amin, $ahou, $aday, $amon, $ayea,
- $msec, $mmin, $mhou, $mday, $mmon, $myea
- ) = InternetFindNextFile($newhandle);
-
- }
- InternetCloseHandle($newhandle);
- return @results;
- }
-
- } else {
-
- ($newhandle, $filename) = FtpFindFirstFile($self->{'handle'}, $pattern, 0, 0);
-
- if(!$newhandle) {
- $self->{'Error'} = "Can't read FTP directory.";
- return undef;
-
- } else {
-
- while($nextfile) {
- push(@results, $filename);
-
- ($nextfile, $filename) = InternetFindNextFile($newhandle);
- # print "List.no more files\n" if !$nextfile;
-
- }
- InternetCloseHandle($newhandle);
- return @results;
- }
- }
-}
-#====================
-sub Ls { List(@_); }
-sub Dir { List(@_); }
-#====================
-
-
-#=================
-sub FileAttrInfo {
-#=================
- my($self,$attr) = @_;
- my @attrinfo = ();
- push(@attrinfo, "READONLY") if $attr & 1;
- push(@attrinfo, "HIDDEN") if $attr & 2;
- push(@attrinfo, "SYSTEM") if $attr & 4;
- push(@attrinfo, "DIRECTORY") if $attr & 16;
- push(@attrinfo, "ARCHIVE") if $attr & 32;
- push(@attrinfo, "NORMAL") if $attr & 128;
- push(@attrinfo, "TEMPORARY") if $attr & 256;
- push(@attrinfo, "COMPRESSED") if $attr & 2048;
- return (wantarray)? @attrinfo : join(" ", @attrinfo);
-}
-
-
-#===========
-sub Binary {
-#===========
- my($self) = @_;
- return undef unless ref($self);
-
- if($self->{'Type'} ne "FTP") {
- $self->{'Error'} = "Binary() only on FTP sessions.";
- return undef;
- }
- $self->{'Mode'} = "bin";
- return undef;
-}
-#======================
-sub Bin { Binary(@_); }
-#======================
-
-
-#==========
-sub Ascii {
-#==========
- my($self) = @_;
- return undef unless ref($self);
-
- if($self->{'Type'} ne "FTP") {
- $self->{'Error'} = "Ascii() only on FTP sessions.";
- return undef;
- }
- $self->{'Mode'} = "asc";
- return undef;
-}
-#=====================
-sub Asc { Ascii(@_); }
-#=====================
-
-
-#========
-sub Get {
-#========
- my($self, $remote, $local, $overwrite, $flags, $context) = @_;
- return undef unless ref($self);
-
- if($self->{'Type'} ne "FTP") {
- $self->{'Error'} = "Get() only on FTP sessions.";
- return undef;
- }
- my $mode = ($self->{'Mode'} eq "asc" ? 1 : 2);
-
- $remote = "" unless defined($remote);
- $local = $remote unless defined($local);
- $overwrite = 0 unless defined($overwrite);
- $flags = 0 unless defined($flags);
- $context = 0 unless defined($context);
-
- my $retval = FtpGetFile($self->{'handle'},
- $remote,
- $local,
- $overwrite,
- $flags,
- $mode,
- $context);
- $self->{'Error'} = "Can't get file." unless defined($retval);
- return $retval;
-}
-
-
-#===========
-sub Rename {
-#===========
- my($self, $oldname, $newname) = @_;
- return undef unless ref($self);
-
- if($self->{'Type'} ne "FTP") {
- $self->{'Error'} = "Rename() only on FTP sessions.";
- return undef;
- }
-
- my $retval = FtpRenameFile($self->{'handle'}, $oldname, $newname);
- $self->{'Error'} = "Can't rename file." unless defined($retval);
- return $retval;
-}
-#======================
-sub Ren { Rename(@_); }
-#======================
-
-
-#===========
-sub Delete {
-#===========
- my($self, $filename) = @_;
- return undef unless ref($self);
-
- if($self->{'Type'} ne "FTP") {
- $self->{'Error'} = "Delete() only on FTP sessions.";
- return undef;
- }
- my $retval = FtpDeleteFile($self->{'handle'}, $filename);
- $self->{'Error'} = "Can't delete file." unless defined($retval);
- return $retval;
-}
-#======================
-sub Del { Delete(@_); }
-#======================
-
-
-#========
-sub Put {
-#========
- my($self, $local, $remote, $context) = @_;
- return undef unless ref($self);
-
- if($self->{'Type'} ne "FTP") {
- $self->{'Error'} = "Put() only on FTP sessions.";
- return undef;
- }
- my $mode = ($self->{'Mode'} eq "asc" ? 1 : 2);
-
- $context = 0 unless defined($context);
-
- my $retval = FtpPutFile($self->{'handle'}, $local, $remote, $mode, $context);
- $self->{'Error'} = "Can't put file." unless defined($retval);
- return $retval;
-}
-
-
-#######################################################################
-# HTTP CLASS METHODS
-#
-
-#========= ### HTTP CONSTRUCTOR
-sub HTTP {
-#=========
- my($self, $new, $server, $username, $password, $port, $flags, $context) = @_;
- return undef unless ref($self);
-
- if(ref($server) and ref($server) eq "HASH") {
- my $myserver = $server->{'server'};
- $username = $server->{'username'};
- $password = $password->{'host'};
- $port = $server->{'port'};
- $flags = $server->{'flags'};
- $context = $server->{'context'};
- undef $server;
- $server = $myserver;
- }
-
- $server = "" unless defined($server);
- $username = "anonymous" unless defined($username);
- $password = "" unless defined($password);
- $port = 80 unless defined($port);
- $flags = 0 unless defined($flags);
- $context = 0 unless defined($context);
-
- my $newhandle = InternetConnect($self->{'handle'}, $server, $port,
- $username, $password,
- constant("INTERNET_SERVICE_HTTP", 0),
- $flags, $context);
- if($newhandle) {
- $self->{'connections'}++;
- $_[1] = _new($newhandle);
- $_[1]->{'Type'} = "HTTP";
- $_[1]->{'username'} = $username;
- $_[1]->{'password'} = $password;
- $_[1]->{'server'} = $server;
- $_[1]->{'accept'} = "text/*\0image/gif\0image/jpeg\0\0";
- return $newhandle;
- } else {
- return undef;
- }
-}
-
-
-#================
-sub OpenRequest {
-#================
- # alternatively to Request:
- # it creates a new HTTP_Request object
- # you can act upon it with AddHeader, SendRequest, ReadFile, QueryInfo, Close, ...
-
- my($self, $new, $path, $method, $version, $referer, $accept, $flags, $context) = @_;
- return undef unless ref($self);
-
- if($self->{'Type'} ne "HTTP") {
- $self->{'Error'} = "OpenRequest() only on HTTP sessions.";
- return undef;
- }
-
- if(ref($path) and ref($path) eq "HASH") {
- $method = $path->{'method'};
- $version = $path->{'version'};
- $referer = $path->{'referer'};
- $accept = $path->{'accept'};
- $flags = $path->{'flags'};
- $context = $path->{'context'};
- my $mypath = $path->{'path'};
- undef $path;
- $path = $mypath;
- }
-
- $method = "GET" unless defined($method);
- $path = "/" unless defined($path);
- $version = "HTTP/1.0" unless defined($version);
- $referer = "" unless defined($referer);
- $accept = $self->{'accept'} unless defined($accept);
- $flags = 0 unless defined($flags);
- $context = 0 unless defined($context);
-
- $path = "/".$path if substr($path,0,1) ne "/";
- # accept string list needs to be terminated by double-NULL
- $accept .= "\0\0" unless $accept =~ /\0\0\z/;
-
- my $newhandle = HttpOpenRequest($self->{'handle'},
- $method,
- $path,
- $version,
- $referer,
- $accept,
- $flags,
- $context);
- if($newhandle) {
- $_[1] = _new($newhandle);
- $_[1]->{'Type'} = "HTTP_Request";
- $_[1]->{'method'} = $method;
- $_[1]->{'request'} = $path;
- $_[1]->{'accept'} = $accept;
- return $newhandle;
- } else {
- return undef;
- }
-}
-
-#================
-sub SendRequest {
-#================
- my($self, $postdata) = @_;
- return undef unless ref($self);
-
- if($self->{'Type'} ne "HTTP_Request") {
- $self->{'Error'} = "SendRequest() only on HTTP requests.";
- return undef;
- }
-
- $postdata = "" unless defined($postdata);
-
- return HttpSendRequest($self->{'handle'}, "", $postdata);
-}
-
-
-#==============
-sub AddHeader {
-#==============
- my($self, $header, $flags) = @_;
- return undef unless ref($self);
-
- if($self->{'Type'} ne "HTTP_Request") {
- $self->{'Error'} = "AddHeader() only on HTTP requests.";
- return undef;
- }
-
- $flags = constant("HTTP_ADDREQ_FLAG_ADD", 0) if (!defined($flags) or $flags == 0);
-
- return HttpAddRequestHeaders($self->{'handle'}, $header, $flags);
-}
-
-
-#==============
-sub QueryInfo {
-#==============
- my($self, $header, $flags) = @_;
- return undef unless ref($self);
-
- if($self->{'Type'} ne "HTTP_Request") {
- $self->{'Error'}="QueryInfo() only on HTTP requests.";
- return undef;
- }
-
- $flags = constant("HTTP_QUERY_CUSTOM", 0) if (!defined($flags) and defined($header));
- my @queryresult = HttpQueryInfo($self->{'handle'}, $flags, $header);
- return (wantarray)? @queryresult : join(" ", @queryresult);
-}
-
-
-#============
-sub Request {
-#============
- # HttpOpenRequest+HttpAddHeaders+HttpSendRequest+InternetReadFile+HttpQueryInfo
- my($self, $path, $method, $version, $referer, $accept, $flags, $postdata) = @_;
- return undef unless ref($self);
-
- if($self->{'Type'} ne "HTTP") {
- $self->{'Error'} = "Request() only on HTTP sessions.";
- return undef;
- }
-
- if(ref($path) and ref($path) eq "HASH") {
- $method = $path->{'method'};
- $version = $path->{'version'};
- $referer = $path->{'referer'};
- $accept = $path->{'accept'};
- $flags = $path->{'flags'};
- $postdata = $path->{'postdata'};
- my $mypath = $path->{'path'};
- undef $path;
- $path = $mypath;
- }
-
- my $content = "";
- my $result = "";
- my @queryresult = ();
- my $statuscode = "";
- my $headers = "";
-
- $path = "/" unless defined($path);
- $method = "GET" unless defined($method);
- $version = "HTTP/1.0" unless defined($version);
- $referer = "" unless defined($referer);
- $accept = $self->{'accept'} unless defined($accept);
- $flags = 0 unless defined($flags);
- $postdata = "" unless defined($postdata);
-
- $path = "/".$path if substr($path,0,1) ne "/";
- # accept string list needs to be terminated by double-NULL
- $accept .= "\0\0" unless $accept =~ /\0\0\z/;
-
- my $newhandle = HttpOpenRequest($self->{'handle'},
- $method,
- $path,
- $version,
- $referer,
- $accept,
- $flags,
- 0);
-
- if($newhandle) {
-
- $result = HttpSendRequest($newhandle, "", $postdata);
-
- if(defined($result)) {
- $statuscode = HttpQueryInfo($newhandle,
- constant("HTTP_QUERY_STATUS_CODE", 0), "");
- $headers = HttpQueryInfo($newhandle,
- constant("HTTP_QUERY_RAW_HEADERS_CRLF", 0), "");
- $content = ReadEntireFile($newhandle);
-
- InternetCloseHandle($newhandle);
-
- return($statuscode, $headers, $content);
- } else {
- return undef;
- }
- } else {
- return undef;
- }
-}
-
-
-#######################################################################
-# END OF THE PUBLIC METHODS
-#
-
-
-#========= ### SUB-CLASSES CONSTRUCTOR
-sub _new {
-#=========
- my $self = {};
- if ($_[0]) {
- $self->{'handle'} = $_[0];
- bless $self;
- } else {
- undef($self);
- }
- $self;
-}
-
-
-#============ ### CLASS DESTRUCTOR
-sub DESTROY {
-#============
- my($self) = @_;
- # print "Closing handle $self->{'handle'}...\n";
- InternetCloseHandle($self->{'handle'});
- # [dada] rest in peace
-}
-
-
-#=============
-sub callback {
-#=============
- my($name, $status, $info) = @_;
- $callback_code{$name} = $status;
- $callback_info{$name} = $info;
-}
-
-#######################################################################
-# dynamically load in the Internet.pll module.
-#
-
-bootstrap Win32::Internet;
-
-# Preloaded methods go here.
-
-#Currently Autoloading is not implemented in Perl for win32
-# Autoload methods go after __END__, and are processed by the autosplit program.
-
-1;
-__END__
-
-=head1 NAME
-
-Win32::Internet - Access to WININET.DLL functions
-
-=head1 INTRODUCTION
-
-This extension to Perl implements the Win32 Internet APIs (found in
-F<WININET.DLL>). They give a complete support for HTTP, FTP and GOPHER
-connections.
-
-See the L<"Version History"> and the L<"Functions Table"> for a list
-of the currently supported features. You should also get a copy of the
-L<"Microsoft Win32 Internet Functions"> documentation.
-
-=head1 REFERENCE
-
-To use this module, first add the following line at the beginning of
-your script:
-
- use Win32::Internet;
-
-Then you have to open an Internet connection with this command:
-
- $Connection = new Win32::Internet();
-
-This is required to use any of the function of this module. It will
-create an Internet object in Perl on which you can act upon with the
-L<"General Internet Functions"> explained later.
-
-The objects available are:
-
-=over
-
-=item *
-
-Internet connections (the main object, see C<new>)
-
-=item *
-
-URLs (see C<OpenURL>)
-
-=item *
-
-FTP sessions (see C<FTP>)
-
-=item *
-
-HTTP sessions (see C<HTTP>)
-
-=item *
-
-HTTP requests (see C<OpenRequest>)
-
-=back
-
-As in the good Perl tradition, there are in this extension different
-ways to do the same thing; there are, in fact, different levels of
-implementation of the Win32 Internet Functions. Some routines use
-several Win32 API functions to perform a complex task in a single
-call; they are simpler to use, but of course less powerful.
-
-There are then other functions that implement nothing more and nothing
-less than the corresponding API function, so you can use all of their
-power, but with some additional programming steps.
-
-To make an example, there is a function called C<FetchURL> that you
-can use to fetch the content of any HTTP, FTP or GOPHER URL with this
-simple commands:
-
- $INET = new Win32::Internet();
- $file = $INET->FetchURL("http://www.yahoo.com");
-
-You can have the same result (and this is actually what is done by
-C<FetchURL>) this way:
-
- $INET = new Win32::Internet();
- $URL = $INET->OpenURL("http://www.yahoo.com");
- $file = $URL->ReadFile();
- $URL->Close();
-
-Or, you can open a complete HTTP session:
-
- $INET = new Win32::Internet();
- $HTTP = $INET->HTTP("www.yahoo.com", "anonymous", "dada@divinf.it");
- ($statuscode, $headers, $file) = $HTTP->Request("/");
- $HTTP->Close();
-
-Finally, you can choose to manage even the HTTP request:
-
- $INET = new Win32::Internet();
- $HTTP = $INET->HTTP("www.yahoo.com", "anonymous", "dada@divinf.it");
- $HTTP->OpenRequest($REQ, "/");
- $REQ->AddHeader("If-Modified-Since: Saturday, 16-Nov-96 15:58:50 GMT");
- $REQ->SendRequest();
- $statuscode = $REQ->QueryInfo("",HTTP_QUERY_STATUS_CODE);
- $lastmodified = $REQ->QueryInfo("Last-Modified");
- $file = $REQ->ReadEntireFile();
- $REQ->Close();
- $HTTP->Close();
-
-To open and control a complete FTP session, type:
-
- $Connection->FTP($Session, "ftp://ftp.activeware.com", "anonymous", "dada\@divinf.it");
-
-This will create an FTP object in Perl to which you can apply the L<"FTP
-functions"> provided by the package:
-
- $Session->Cd("/ntperl/perl5.001m/CurrentBuild");
- $Session->Ascii();
- $Session->Get("110-i86.zip");
- $Session->Close();
-
-For a more complete example, see the TEST.PL file that comes with the
-package.
-
-=head2 General Internet Functions
-
-B<General Note>
-
-All methods assume that you have the line:
-
- use Win32::Internet;
-
-somewhere before the method calls, and that you have an Internet
-object called $INET which was created using this call:
-
- $INET = new Win32::Internet();
-
-See C<new> for more information.
-
-B<Methods>
-
-=over
-
-=item CanonicalizeURL URL, [flags]
-
-Converts a URL to a canonical format, which includes converting unsafe
-characters to escape sequences. Returns the canonicalized URL or
-C<undef> on errors. For the possible values of I<flags>, refer to the
-L<"Microsoft Win32 Internet Functions"> document. See also
-C<CombineURL> and C<OpenURL>.
-
-Example:
-
- $cURL = $INET->CanonicalizeURL($URL);
- $URL = $INET->CanonicalizeURL($cURL, ICU_DECODE);
-
-=item Close
-
-=item Close object
-
-Closes an Internet connection. This can be applied to any
-Win32::Internet object (Internet connections, URLs, FTP sessions,
-etc.). Note that it is not "strictly" required to close the
-connections you create, since the Win32::Internet objects are
-automatically closed when the program ends (or when you elsehow
-destroy such an object).
-
-Example:
-
- $INET->Close();
- $FTP->Close();
- $INET->Close($FTP); # same as above...
-
-=item CombineURL baseURL, relativeURL, [flags]
-
-Combines a base and relative URL into a single URL. Returns the
-(canonicalized) combined URL or C<undef> on errors. For the possible
-values of I<flags>, refer to the L<"Microsoft Win32 Internet
-Functions"> document. See also C<CombineURL> and C<OpenURL>.
-
-Example:
-
- $URL = $INET->CombineURL("http://www.divinf.it/dada/perl/internet", "..");
-
-=item ConnectBackoff [value]
-
-Reads or sets the delay value, in milliseconds, to wait between
-connection retries. If no I<value> parameter is specified, the
-current value is returned; otherwise, the delay between retries is set
-to I<value>. See also C<ConnectTimeout>, C<ConnectRetries>,
-C<QueryOption> and C<SetOption>.
-
-Example:
-
- $HTTP->ConnectBackoff(2000);
- $backoff = $HTTP->ConnectBackoff();
-
-=item ConnectRetries [value]
-
-Reads or sets the number of times a connection is retried before
-considering it failed. If no I<value> parameter is specified, the
-current value is returned; otherwise, the number of retries is set to
-I<value>. The default value for C<ConnectRetries> is 5. See also
-C<ConnectBackoff>, C<ConnectTimeout>, C<QueryOption> and C<SetOption>.
-
-Example:
-
- $HTTP->ConnectRetries(20);
- $retries = $HTTP->ConnectRetries();
-
-=item ConnectTimeout [value]
-
-Reads or sets the timeout value (in milliseconds) before a connection
-is considered failed. If no I<value> parameter is specified, the
-current value is returned; otherwise, the timeout is set to I<value>.
-The default value for C<ConnectTimeout> is infinite. See also
-C<ConnectBackoff>, C<ConnectRetries>, C<QueryOption> and C<SetOption>.
-
-Example:
-
- $HTTP->ConnectTimeout(10000);
- $timeout = $HTTP->ConnectTimeout();
-
-=item ControlReceiveTimeout [value]
-
-Reads or sets the timeout value (in milliseconds) to use for non-data
-(control) receive requests before they are canceled. Currently, this
-value has meaning only for C<FTP> sessions. If no I<value> parameter
-is specified, the current value is returned; otherwise, the timeout is
-set to I<value>. The default value for C<ControlReceiveTimeout> is
-infinite. See also C<ControlSendTimeout>, C<QueryOption> and
-C<SetOption>.
-
-Example:
-
- $HTTP->ControlReceiveTimeout(10000);
- $timeout = $HTTP->ControlReceiveTimeout();
-
-=item ControlSendTimeout [value]
-
-Reads or sets the timeout value (in milliseconds) to use for non-data
-(control) send requests before they are canceled. Currently, this
-value has meaning only for C<FTP> sessions. If no I<value> parameter
-is specified, the current value is returned; otherwise, the timeout is
-set to I<value>. The default value for C<ControlSendTimeout> is
-infinite. See also C<ControlReceiveTimeout>, C<QueryOption> and
-C<SetOption>.
-
-Example:
-
- $HTTP->ControlSendTimeout(10000);
- $timeout = $HTTP->ControlSendTimeout();
-
-=item CrackURL URL, [flags]
-
-Splits an URL into its component parts and returns them in an array.
-Returns C<undef> on errors, otherwise the array will contain the
-following values: I<scheme, host, port, username, password, path,
-extrainfo>.
-
-For example, the URL "http://www.divinf.it/index.html#top" can be
-splitted in:
-
- http, www.divinf.it, 80, anonymous, dada@divinf.it, /index.html, #top
-
-If you don't specify a I<flags> parameter, ICU_ESCAPE will be used by
-default; for the possible values of I<flags> refer to the L<"Microsoft
-Win32 Internet Functions"> documentation. See also C<CreateURL>.
-
-Example:
-
- @parts=$INET->CrackURL("http://www.activeware.com");
- ($scheme, $host, $port, $user, $pass, $path, $extra) =
- $INET->CrackURL("http://www.divinf.it:80/perl-win32/index.sht#feedback");
-
-=item CreateURL scheme, hostname, port, username, password, path, extrainfo, [flags]
-
-=item CreateURL hashref, [flags]
-
-Creates a URL from its component parts. Returns C<undef> on errors,
-otherwise the created URL.
-
-If you pass I<hashref> (a reference to an hash array), the following
-values are taken from the array:
-
- %hash=(
- "scheme" => "scheme",
- "hostname" => "hostname",
- "port" => port,
- "username" => "username",
- "password" => "password",
- "path" => "path",
- "extrainfo" => "extrainfo",
- );
-
-If you don't specify a I<flags> parameter, ICU_ESCAPE will be used by
-default; for the other possible values of I<flags> refer to the
-L<"Microsoft Win32 Internet Functions"> documentation. See also
-C<CrackURL>.
-
-Example:
-
- $URL=$I->CreateURL("http", "www.divinf.it", 80, "", "", "/perl-win32/index.sht", "#feedback");
- $URL=$I->CreateURL(\%params);
-
-=item DataReceiveTimeout [value]
-
-Reads or sets the timeout value (in milliseconds) to use for data
-receive requests before they are canceled. If no I<value> parameter
-is specified, the current value is returned; otherwise, the timeout is
-set to I<value>. The default value for DataReceiveTimeout is
-infinite. See also C<DataSendTimeout>, C<QueryOption> and
-C<SetOption>.
-
-Example:
-
- $HTTP->DataReceiveTimeout(10000);
- $timeout = $HTTP->DataReceiveTimeout();
-
-=item DataSendTimeout [value]
-
-Reads or sets the timeout value (in milliseconds) to use for data send
-requests before they are canceled. If no I<value> parameter is
-specified, the current value is returned; otherwise, the timeout is
-set to I<value>. The default value for DataSendTimeout is infinite.
-See also C<DataReceiveTimeout>, C<QueryOption> and C<SetOption>.
-
-Example:
-
- $HTTP->DataSendTimeout(10000);
- $timeout = $HTTP->DataSendTimeout();
-
-=item Error
-
-Returns the last recorded error in the form of an array or string
-(depending upon the context) containing the error number and an error
-description. Can be applied on any Win32::Internet object (FTP
-sessions, etc.). There are 3 types of error you can encounter; they
-are recognizable by the error number returned:
-
-=over
-
-=item * -1
-
-A "trivial" error has occurred in the package. For example, you tried
-to use a method on the wrong type of object.
-
-=item * 1 .. 11999
-
-A generic error has occurred and the Win32::GetLastError error message
-is returned.
-
-=item * 12000 and higher
-
-An Internet error has occurred; the extended Win32 Internet API error
-message is returned.
-
-=back
-
-See also C<GetResponse>.
-
-Example:
-
- die $INET->Error(), qq(\n);
- ($ErrNum, $ErrText) = $INET->Error();
-
-=item FetchURL URL
-
-Fetch the content of an HTTP, FTP or GOPHER URL. Returns the content
-of the file read (or C<undef> if there was an error and nothing was
-read). See also C<OpenURL> and C<ReadFile>.
-
-Example:
-
- $file = $INET->FetchURL("http://www.yahoo.com/");
- $file = $INET->FetchURL("ftp://www.activeware.com/contrib/internet.zip");
-
-=item FTP ftpobject, server, username, password, [port, pasv, context]
-
-=item FTP ftpobject, hashref
-
-Opens an FTP connection to server logging in with the given
-I<username> and I<password>.
-
-The parameters and their values are:
-
-=over
-
-=item * server
-
-The server to connect to. Default: I<none>.
-
-=item * username
-
-The username used to login to the server. Default: anonymous.
-
-=item * password
-
-The password used to login to the server. Default: I<none>.
-
-=item * port
-
-The port of the FTP service on the server. Default: 21.
-
-=item * pasv
-
-If it is a value other than 0, use passive transfer mode. Default is
-taken from the parent Internet connection object; you can set this
-value with the C<Pasv> method.
-
-=item * context
-
-A number to identify this operation if it is asynchronous. See
-C<SetStatusCallback> and C<GetStatusCallback> for more info on
-asynchronous operations. Default: I<none>.
-
-=back
-
-If you pass I<hashref> (a reference to an hash array), the following
-values are taken from the array:
-
- %hash=(
- "server" => "server",
- "username" => "username",
- "password" => "password",
- "port" => port,
- "pasv" => pasv,
- "context" => context,
- );
-
-This method returns C<undef> if the connection failed, a number
-otherwise. You can then call any of the L<"FTP functions"> as methods
-of the newly created I<ftpobject>.
-
-Example:
-
- $result = $INET->FTP($FTP, "ftp.activeware.com", "anonymous", "dada\@divinf.it");
- # and then for example...
- $FTP->Cd("/ntperl/perl5.001m/CurrentBuild");
-
- $params{"server"} = "ftp.activeware.com";
- $params{"password"} = "dada\@divinf.it";
- $params{"pasv"} = 0;
- $result = $INET->FTP($FTP,\%params);
-
-=item GetResponse
-
-Returns the text sent by a remote server in response to the last
-function executed. It applies on any Win32::Internet object,
-particularly of course on L<FTP sessions|"FTP functions">. See also
-the C<Error> function.
-
-Example:
-
- print $INET->GetResponse();
- $INET->FTP($FTP, "ftp.activeware.com", "anonymous", "dada\@divinf.it");
- print $FTP->GetResponse();
-
-=item GetStatusCallback context
-
-Returns information about the progress of the asynchronous operation
-identified by I<context>; those informations consist of two values: a
-status code (one of the INTERNET_STATUS_* L<"Constants">) and an
-additional value depending on the status code; for example, if the
-status code returned is INTERNET_STATUS_HANDLE_CREATED, the second
-value will hold the handle just created. For more informations on
-those values, please refer to the L<"Microsoft Win32 Internet
-Functions"> documentation. See also C<SetStatusCallback>.
-
-Example:
-
- ($status, $info) = $INET->GetStatusCallback(1);
-
-=item HTTP httpobject, server, username, password, [port, flags, context]
-
-=item HTTP httpobject, hashref
-
-Opens an HTTP connection to I<server> logging in with the given
-I<username> and I<password>.
-
-The parameters and their values are:
-
-=over
-
-=item * server
-
-The server to connect to. Default: I<none>.
-
-=item * username
-
-The username used to login to the server. Default: anonymous.
-
-=item * password
-
-The password used to login to the server. Default: I<none>.
-
-=item * port
-
-The port of the HTTP service on the server. Default: 80.
-
-=item * flags
-
-Additional flags affecting the behavior of the function. Default:
-I<none>.
-
-=item * context
-
-A number to identify this operation if it is asynchronous. See
-C<SetStatusCallback> and C<GetStatusCallback> for more info on
-asynchronous operations. Default: I<none>.
-
-=back
-
-Refer to the L<"Microsoft Win32 Internet Functions"> documentation for
-more details on those parameters.
-
-If you pass I<hashref> (a reference to an hash array), the following
-values are taken from the array:
-
- %hash=(
- "server" => "server",
- "username" => "username",
- "password" => "password",
- "port" => port,
- "flags" => flags,
- "context" => context,
- );
-
-This method returns C<undef> if the connection failed, a number
-otherwise. You can then call any of the L<"HTTP functions"> as
-methods of the newly created I<httpobject>.
-
-Example:
-
- $result = $INET->HTTP($HTTP,"www.activeware.com","anonymous","dada\@divinf.it");
- # and then for example...
- ($statuscode, $headers, $file) = $HTTP->Request("/gifs/camel.gif");
-
- $params{"server"} = "www.activeware.com";
- $params{"password"} = "dada\@divinf.it";
- $params{"flags"} = INTERNET_FLAG_RELOAD;
- $result = $INET->HTTP($HTTP,\%params);
-
-=item new Win32::Internet [useragent, opentype, proxy, proxybypass, flags]
-
-=item new Win32::Internet [hashref]
-
-Creates a new Internet object and initializes the use of the Internet
-functions; this is required before any of the functions of this
-package can be used. Returns C<undef> if the connection fails, a number
-otherwise. The parameters and their values are:
-
-=over
-
-=item * useragent
-
-The user agent passed to HTTP requests. See C<OpenRequest>. Default:
-Perl-Win32::Internet/I<version>.
-
-=item * opentype
-
-How to access to the Internet (eg. directly or using a proxy).
-Default: INTERNET_OPEN_TYPE_DIRECT.
-
-=item * proxy
-
-Name of the proxy server (or servers) to use. Default: I<none>.
-
-=item * proxybypass
-
-Optional list of host names or IP addresses, or both, that are known
-locally. Default: I<none>.
-
-=item * flags
-
-Additional flags affecting the behavior of the function. Default:
-I<none>.
-
-=back
-
-Refer to the L<"Microsoft Win32 Internet Functions"> documentation for
-more details on those parameters. If you pass I<hashref> (a reference to
-an hash array), the following values are taken from the array:
-
- %hash=(
- "useragent" => "useragent",
- "opentype" => "opentype",
- "proxy" => "proxy",
- "proxybypass" => "proxybypass",
- "flags" => flags,
- );
-
-Example:
-
- $INET = new Win32::Internet();
- die qq(Cannot connect to Internet...\n) if ! $INET;
-
- $INET = new Win32::Internet("Mozilla/3.0", INTERNET_OPEN_TYPE_PROXY, "www.microsoft.com", "");
-
- $params{"flags"} = INTERNET_FLAG_ASYNC;
- $INET = new Win32::Internet(\%params);
-
-=item OpenURL urlobject, URL
-
-Opens a connection to an HTTP, FTP or GOPHER Uniform Resource Location
-(URL). Returns C<undef> on errors or a number if the connection was
-succesful. You can then retrieve the URL content by applying the
-methods C<QueryDataAvailable> and C<ReadFile> on the newly created
-I<urlobject>. See also C<FetchURL>.
-
-Example:
-
- $INET->OpenURL($URL, "http://www.yahoo.com/");
- $bytes = $URL->QueryDataAvailable();
- $file = $URL->ReadEntireFile();
- $URL->Close();
-
-=item Password [password]
-
-Reads or sets the password used for an C<FTP> or C<HTTP> connection.
-If no I<password> parameter is specified, the current value is
-returned; otherwise, the password is set to I<password>. See also
-C<Username>, C<QueryOption> and C<SetOption>.
-
-Example:
-
- $HTTP->Password("splurfgnagbxam");
- $password = $HTTP->Password();
-
-=item QueryDataAvailable
-
-Returns the number of bytes of data that are available to be read
-immediately by a subsequent call to C<ReadFile> (or C<undef> on
-errors). Can be applied to URL or HTTP request objects. See
-C<OpenURL> or C<OpenRequest>.
-
-Example:
-
- $INET->OpenURL($URL, "http://www.yahoo.com/");
- $bytes = $URL->QueryDataAvailable();
-
-=item QueryOption option
-
-Queries an Internet option. For the possible values of I<option>,
-refer to the L<"Microsoft Win32 Internet Functions"> document. See
-also C<SetOption>.
-
-Example:
-
- $value = $INET->QueryOption(INTERNET_OPTION_CONNECT_TIMEOUT);
- $value = $HTTP->QueryOption(INTERNET_OPTION_USERNAME);
-
-=item ReadEntireFile
-
-Reads all the data available from an opened URL or HTTP request
-object. Returns what have been read or C<undef> on errors. See also
-C<OpenURL>, C<OpenRequest> and C<ReadFile>.
-
-Example:
-
- $INET->OpenURL($URL, "http://www.yahoo.com/");
- $file = $URL->ReadEntireFile();
-
-=item ReadFile bytes
-
-Reads I<bytes> bytes of data from an opened URL or HTTP request
-object. Returns what have been read or C<undef> on errors. See also
-C<OpenURL>, C<OpenRequest>, C<QueryDataAvailable> and
-C<ReadEntireFile>.
-
-B<Note:> be careful to keep I<bytes> to an acceptable value (eg. don't
-tell him to swallow megabytes at once...). C<ReadEntireFile> in fact
-uses C<QueryDataAvailable> and C<ReadFile> in a loop to read no more
-than 16k at a time.
-
-Example:
-
- $INET->OpenURL($URL, "http://www.yahoo.com/");
- $chunk = $URL->ReadFile(16000);
-
-=item SetOption option, value
-
-Sets an Internet option. For the possible values of I<option>, refer to
-the L<"Microsoft Win32 Internet Functions"> document. See also
-C<QueryOption>.
-
-Example:
-
- $INET->SetOption(INTERNET_OPTION_CONNECT_TIMEOUT,10000);
- $HTTP->SetOption(INTERNET_OPTION_USERNAME,"dada");
-
-=item SetStatusCallback
-
-Initializes the callback routine used to return data about the
-progress of an asynchronous operation.
-
-Example:
-
- $INET->SetStatusCallback();
-
-This is one of the step required to perform asynchronous operations;
-the complete procedure is:
-
- # use the INTERNET_FLAG_ASYNC when initializing
- $params{'flags'}=INTERNET_FLAG_ASYNC;
- $INET = new Win32::Internet(\%params);
-
- # initialize the callback routine
- $INET->SetStatusCallback();
-
- # specify the context parameter (the last 1 in this case)
- $INET->HTTP($HTTP, "www.yahoo.com", "anonymous", "dada\@divinf.it", 80, 0, 1);
-
-At this point, control returns immediately to Perl and $INET->Error()
-will return 997, which means an asynchronous I/O operation is
-pending. Now, you can call
-
- $HTTP->GetStatusCallback(1);
-
-in a loop to verify what's happening; see also C<GetStatusCallback>.
-
-=item TimeConvert time
-
-=item TimeConvert seconds, minute, hours, day, month, year,
- day_of_week, RFC
-
-The first form takes a HTTP date/time string and returns the date/time
-converted in the following array: I<seconds, minute, hours, day,
-month, year, day_of_week>.
-
-The second form does the opposite (or at least it should, because
-actually seems to be malfunctioning): it takes the values and returns
-an HTTP date/time string, in the RFC format specified by the I<RFC>
-parameter (OK, I didn't find yet any accepted value in the range
-0..2000, let me know if you have more luck with it).
-
-Example:
-
- ($sec, $min, $hour, $day, $mday, $year, $wday) =
- $INET->TimeConvert("Sun, 26 Jan 1997 20:01:52 GMT");
-
- # the opposite DOESN'T WORK! which value should $RFC have???
- $time = $INET->TimeConvert(52, 1, 20, 26, 1, 1997, 0, $RFC);
-
-=item UserAgent [name]
-
-Reads or sets the user agent used for HTTP requests. If no I<name>
-parameter is specified, the current value is returned; otherwise, the
-user agent is set to I<name>. See also C<QueryOption> and
-C<SetOption>.
-
-Example:
-
- $INET->UserAgent("Mozilla/3.0");
- $useragent = $INET->UserAgent();
-
-=item Username [name]
-
-Reads or sets the username used for an C<FTP> or C<HTTP> connection.
-If no I<name> parameter is specified, the current value is returned;
-otherwise, the username is set to I<name>. See also C<Password>,
-C<QueryOption> and SetOption.
-
-Example:
-
- $HTTP->Username("dada");
- $username = $HTTP->Username();
-
-=item Version
-
-Returns the version numbers for the Win32::Internet package and the
-WININET.DLL version, as an array or string, depending on the context.
-The string returned will contain "package_version/DLL_version", while
-the array will contain: "package_version", "DLL_version".
-
-Example:
-
- $version = $INET->Version(); # should return "0.06/4.70.1215"
- @version = $INET->Version(); # should return ("0.06", "4.70.1215")
-
-=back
-
-
-=head2 FTP Functions
-
-B<General Note>
-
-All methods assume that you have the following lines:
-
- use Win32::Internet;
- $INET = new Win32::Internet();
- $INET->FTP($FTP, "hostname", "username", "password");
-
-somewhere before the method calls; in other words, we assume that you
-have an Internet object called $INET and an open FTP session called
-$FTP.
-
-See C<new> and C<FTP> for more information.
-
-
-B<Methods>
-
-=over
-
-=item Ascii
-
-=item Asc
-
-Sets the ASCII transfer mode for this FTP session. It will be applied
-to the subsequent C<Get> functions. See also the C<Binary> and
-C<Mode> function.
-
-Example:
-
- $FTP->Ascii();
-
-=item Binary
-
-=item Bin
-
-Sets the binary transfer mode for this FTP session. It will be
-applied to the subsequent C<Get> functions. See also the C<Ascii> and
-C<Mode> function.
-
-Example:
-
- $FTP->Binary();
-
-=item Cd path
-
-=item Cwd path
-
-=item Chdir path
-
-Changes the current directory on the FTP remote host. Returns I<path>
-or C<undef> on error.
-
-Example:
-
- $FTP->Cd("/pub");
-
-=item Delete file
-
-=item Del file
-
-Deletes a file on the FTP remote host. Returns C<undef> on error.
-
-Example:
-
- $FTP->Delete("110-i86.zip");
-
-=item Get remote, [local, overwrite, flags, context]
-
-Gets the I<remote> FTP file and saves it locally in I<local>. If
-I<local> is not specified, it will be the same name as I<remote>.
-Returns C<undef> on error. The parameters and their values are:
-
-=over
-
-=item * remote
-
-The name of the remote file on the FTP server. Default: I<none>.
-
-=item * local
-
-The name of the local file to create. Default: remote.
-
-=item * overwrite
-
-If 0, overwrites I<local> if it exists; with any other value, the
-function fails if the I<local> file already exists. Default: 0.
-
-=item * flags
-
-Additional flags affecting the behavior of the function. Default:
-I<none>.
-
-=item * context
-
-A number to identify this operation if it is asynchronous. See
-C<SetStatusCallback> and C<GetStatusCallback> for more info on
-asynchronous operations. Default: I<none>.
-
-=back
-
-Refer to the L<"Microsoft Win32 Internet Functions"> documentation for
-more details on those parameters.
-
-Example:
-
- $FTP->Get("110-i86.zip");
- $FTP->Get("/pub/perl/languages/CPAN/00index.html", "CPAN_index.html");
-
-=item List [pattern, listmode]
-
-=item Ls [pattern, listmode]
-
-=item Dir [pattern, listmode]
-
-Returns a list containing the files found in this directory,
-eventually matching the given I<pattern> (which, if omitted, is
-considered "*.*"). The content of the returned list depends on the
-I<listmode> parameter, which can have the following values:
-
-=over
-
-=item * listmode=1 (or omitted)
-
-the list contains the names of the files found. Example:
-
- @files = $FTP->List();
- @textfiles = $FTP->List("*.txt");
- foreach $file (@textfiles) {
- print "Name: ", $file, "\n";
- }
-
-=item * listmode=2
-
-the list contains 7 values for each file, which respectively are:
-
-=over
-
-=item * the file name
-
-=item * the DOS short file name, aka 8.3
-
-=item * the size
-
-=item * the attributes
-
-=item * the creation time
-
-=item * the last access time
-
-=item * the last modified time
-
-=back
-
-Example:
-
- @files = $FTP->List("*.*", 2);
- for($i=0; $i<=$#files; $i+=7) {
- print "Name: ", @files[$i], "\n";
- print "Size: ", @files[$i+2], "\n";
- print "Attr: ", @files[$i+3], "\n";
- }
-
-=item * listmode=3
-
-the list contains a reference to an hash array for each found file;
-each hash contains:
-
-=over
-
-=item * name => the file name
-
-=item * altname => the DOS short file name, aka 8.3
-
-=item * size => the size
-
-=item * attr => the attributes
-
-=item * ctime => the creation time
-
-=item * atime => the last access time
-
-=item * mtime => the last modified time
-
-=back
-
-Example:
-
- @files = $FTP->List("*.*", 3);
- foreach $file (@files) {
- print $file->{'name'}, " ", $file->{'size'}, " ", $file->{'attr'}, "\n";
- }
-
-B<Note:> all times are reported as strings of the following format:
-I<second, hour, minute, day, month, year>.
-
-Example:
-
- $file->{'mtime'} == "0,10,58,9,12,1996" stands for 09 Dec 1996 at 10:58:00
-
-=back
-
-=item Mkdir name
-
-=item Md name
-
-Creates a directory on the FTP remote host. Returns C<undef> on error.
-
-Example:
-
- $FTP->Mkdir("NextBuild");
-
-=item Mode [mode]
-
-If called with no arguments, returns the current transfer mode for
-this FTP session ("asc" for ASCII or "bin" for binary). The I<mode>
-argument can be "asc" or "bin", in which case the appropriate transfer
-mode is selected. See also the Ascii and Binary functions. Returns
-C<undef> on errors.
-
-Example:
-
- print "Current mode is: ", $FTP->Mode();
- $FTP->Mode("asc"); # ... same as $FTP->Ascii();
-
-=item Pasv [mode]
-
-If called with no arguments, returns 1 if the current FTP session has
-passive transfer mode enabled, 0 if not.
-
-You can call it with a I<mode> parameter (0/1) only as a method of a
-Internet object (see C<new>), in which case it will set the default
-value for the next C<FTP> objects you create (read: set it before,
-because you can't change this value once you opened the FTP session).
-
-Example:
-
- print "Pasv is: ", $FTP->Pasv();
-
- $INET->Pasv(1);
- $INET->FTP($FTP,"ftp.activeware.com", "anonymous", "dada\@divinf.it");
- $FTP->Pasv(0); # this will be ignored...
-
-=item Put local, [remote, context]
-
-Upload the I<local> file to the FTP server saving it under the name
-I<remote>, which if if omitted is the same name as I<local>. Returns
-C<undef> on error.
-
-I<context> is a number to identify this operation if it is asynchronous.
-See C<SetStatusCallback> and C<GetStatusCallback> for more info on
-asynchronous operations.
-
-Example:
-
- $FTP->Put("internet.zip");
- $FTP->Put("d:/users/dada/temp.zip", "/temp/dada.zip");
-
-=item Pwd
-
-Returns the current directory on the FTP server or C<undef> on errors.
-
-Example:
-
- $path = $FTP->Pwd();
-
-=item Rename oldfile, newfile
-
-=item Ren oldfile, newfile
-
-Renames a file on the FTP remote host. Returns C<undef> on error.
-
-Example:
-
- $FTP->Rename("110-i86.zip", "68i-011.zip");
-
-=item Rmdir name
-
-=item Rd name
-
-Removes a directory on the FTP remote host. Returns C<undef> on error.
-
-Example:
-
- $FTP->Rmdir("CurrentBuild");
-
-=back
-
-=head2 HTTP Functions
-
-B<General Note>
-
-All methods assume that you have the following lines:
-
- use Win32::Internet;
- $INET = new Win32::Internet();
- $INET->HTTP($HTTP, "hostname", "username", "password");
-
-somewhere before the method calls; in other words, we assume that you
-have an Internet object called $INET and an open HTTP session called
-$HTTP.
-
-See C<new> and C<HTTP> for more information.
-
-
-B<Methods>
-
-=over
-
-=item AddHeader header, [flags]
-
-Adds HTTP request headers to an HTTP request object created with
-C<OpenRequest>. For the possible values of I<flags> refer to the
-L<"Microsoft Win32 Internet Functions"> document.
-
-Example:
-
- $HTTP->OpenRequest($REQUEST,"/index.html");
- $REQUEST->AddHeader("If-Modified-Since: Sunday, 17-Nov-96 11:40:03 GMT");
- $REQUEST->AddHeader("Accept: text/html\r\n", HTTP_ADDREQ_FLAG_REPLACE);
-
-=item OpenRequest requestobject, [path, method, version, referer, accept, flags, context]
-
-=item OpenRequest requestobject, hashref
-
-Opens an HTTP request. Returns C<undef> on errors or a number if the
-connection was succesful. You can then use one of the C<AddHeader>,
-C<SendRequest>, C<QueryInfo>, C<QueryDataAvailable> and C<ReadFile>
-methods on the newly created I<requestobject>. The parameters and
-their values are:
-
-=over
-
-=item * path
-
-The object to request. This is generally a file name, an executable
-module, etc. Default: /
-
-=item * method
-
-The method to use; can actually be GET, POST, HEAD or PUT. Default:
-GET
-
-=item * version
-
-The HTTP version. Default: HTTP/1.0
-
-=item * referer
-
-The URL of the document from which the URL in the request was
-obtained. Default: I<none>
-
-=item * accept
-
-A single string with "\0" (ASCII zero) delimited list of content
-types accepted. The string must be terminated by "\0\0".
-Default: "text/*\0image/gif\0image/jpeg\0\0"
-
-=item * flags
-
-Additional flags affecting the behavior of the function. Default:
-I<none>
-
-=item * context
-
-A number to identify this operation if it is asynchronous. See
-C<SetStatusCallback> and C<GetStatusCallback> for more info on
-asynchronous operations. Default: I<none>
-
-=back
-
-Refer to the L<"Microsoft Win32 Internet Functions"> documentation for
-more details on those parameters. If you pass I<hashref> (a reference to
-an hash array), the following values are taken from the array:
-
- %hash=(
- "path" => "path",
- "method" => "method",
- "version" => "version",
- "referer" => "referer",
- "accept" => "accept",
- "flags" => flags,
- "context" => context,
- );
-
-See also C<Request>.
-
-Example:
-
- $HTTP->OpenRequest($REQUEST, "/index.html");
- $HTTP->OpenRequest($REQUEST, "/index.html", "GET", "HTTP/0.9");
-
- $params{"path"} = "/index.html";
- $params{"flags"} = "
- $HTTP->OpenRequest($REQUEST, \%params);
-
-=item QueryInfo header, [flags]
-
-Queries information about an HTTP request object created with
-C<OpenRequest>. You can specify an I<header> (for example,
-"Content-type") and/or one or more I<flags>. If you don't specify
-I<flags>, HTTP_QUERY_CUSTOM will be used by default; this means that
-I<header> should contain a valid HTTP header name. For the possible
-values of I<flags> refer to the L<"Microsoft Win32 Internet
-Functions"> document.
-
-Example:
-
- $HTTP->OpenRequest($REQUEST,"/index.html");
- $statuscode = $REQUEST->QueryInfo("", HTTP_QUERY_STATUS_CODE);
- $headers = $REQUEST->QueryInfo("", HTTP_QUERY_RAW_HEADERS_CRLF); # will get all the headers
- $length = $REQUEST->QueryInfo("Content-length");
-
-=item Request [path, method, version, referer, accept, flags]
-
-=item Request hashref
-
-Performs an HTTP request and returns an array containing the status
-code, the headers and the content of the file. It is a one-step
-procedure that makes an C<OpenRequest>, a C<SendRequest>, some
-C<QueryInfo>, C<ReadFile> and finally C<Close>. For a description of
-the parameters, see C<OpenRequest>.
-
-Example:
-
- ($statuscode, $headers, $file) = $HTTP->Request("/index.html");
- ($s, $h, $f) = $HTTP->Request("/index.html", "GET", "HTTP/1.0");
-
-=item SendRequest [postdata]
-
-Send an HTTP request to the destination server. I<postdata> are any
-optional data to send immediately after the request header; this is
-generally used for POST or PUT requests. See also C<OpenRequest>.
-
-Example:
-
- $HTTP->OpenRequest($REQUEST, "/index.html");
- $REQUEST->SendRequest();
-
- # A POST request...
- $HTTP->OpenRequest($REQUEST, "/cgi-bin/somescript.pl", "POST");
-
- #This line is a must -> (thanks Philip :)
- $REQUEST->AddHeader("Content-Type: application/x-www-form-urlencoded");
-
- $REQUEST->SendRequest("key1=value1&key2=value2&key3=value3");
-
-=back
-
-
-=head1 APPENDIX
-
-
-=head2 Microsoft Win32 Internet Functions
-
-Complete documentation for the Microsoft Win32 Internet Functions can
-be found, in both HTML and zipped Word format, at this address:
-
- http://www.microsoft.com/intdev/sdk/docs/wininet/
-
-=head2 Functions Table
-
-This table reports the correspondence between the functions offered by
-WININET.DLL and their implementation in the Win32::Internet
-extension. Functions showing a "---" are not currently
-implemented. Functions enclosed in parens ( ) aren't implemented
-straightforwardly, but in a higher-level routine, eg. together with
-other functions.
-
- WININET.DLL Win32::Internet
-
- InternetOpen new Win32::Internet
- InternetConnect FTP / HTTP
- InternetCloseHandle Close
- InternetQueryOption QueryOption
- InternetSetOption SetOption
- InternetSetOptionEx ---
- InternetSetStatusCallback SetStatusCallback
- InternetStatusCallback GetStatusCallback
- InternetConfirmZoneCrossing ---
- InternetTimeFromSystemTime TimeConvert
- InternetTimeToSystemTime TimeConvert
- InternetAttemptConnect ---
- InternetReadFile ReadFile
- InternetSetFilePointer ---
- InternetFindNextFile (List)
- InternetQueryDataAvailable QueryDataAvailable
- InternetGetLastResponseInfo GetResponse
- InternetWriteFile ---
- InternetCrackUrl CrackURL
- InternetCreateUrl CreateURL
- InternetCanonicalizeUrl CanonicalizeURL
- InternetCombineUrl CombineURL
- InternetOpenUrl OpenURL
- FtpFindFirstFile (List)
- FtpGetFile Get
- FtpPutFile Put
- FtpDeleteFile Delete
- FtpRenameFile Rename
- FtpOpenFile ---
- FtpCreateDirectory Mkdir
- FtpRemoveDirectory Rmdir
- FtpSetCurrentDirectory Cd
- FtpGetCurrentDirectory Pwd
- HttpOpenRequest OpenRequest
- HttpAddRequestHeaders AddHeader
- HttpSendRequest SendRequest
- HttpQueryInfo QueryInfo
- InternetErrorDlg ---
-
-
-Actually, I don't plan to add support for Gopher, Cookie and Cache
-functions. I will if there will be consistent requests to do so.
-
-There are a number of higher-level functions in the Win32::Internet
-that simplify some usual procedures, calling more that one WININET API
-function. This table reports those functions and the relative WININET
-functions they use.
-
- Win32::Internet WININET.DLL
-
- FetchURL InternetOpenUrl
- InternetQueryDataAvailable
- InternetReadFile
- InternetCloseHandle
-
- ReadEntireFile InternetQueryDataAvailable
- InternetReadFile
-
- Request HttpOpenRequest
- HttpSendRequest
- HttpQueryInfo
- InternetQueryDataAvailable
- InternetReadFile
- InternetCloseHandle
-
- List FtpFindFirstFile
- InternetFindNextFile
-
-
-=head2 Constants
-
-Those are the constants exported by the package in the main namespace
-(eg. you can use them in your scripts); for their meaning and proper
-use, refer to the Microsoft Win32 Internet Functions document.
-
- HTTP_ADDREQ_FLAG_ADD
- HTTP_ADDREQ_FLAG_REPLACE
- HTTP_QUERY_ALLOW
- HTTP_QUERY_CONTENT_DESCRIPTION
- HTTP_QUERY_CONTENT_ID
- HTTP_QUERY_CONTENT_LENGTH
- HTTP_QUERY_CONTENT_TRANSFER_ENCODING
- HTTP_QUERY_CONTENT_TYPE
- HTTP_QUERY_COST
- HTTP_QUERY_CUSTOM
- HTTP_QUERY_DATE
- HTTP_QUERY_DERIVED_FROM
- HTTP_QUERY_EXPIRES
- HTTP_QUERY_FLAG_REQUEST_HEADERS
- HTTP_QUERY_FLAG_SYSTEMTIME
- HTTP_QUERY_LANGUAGE
- HTTP_QUERY_LAST_MODIFIED
- HTTP_QUERY_MESSAGE_ID
- HTTP_QUERY_MIME_VERSION
- HTTP_QUERY_PRAGMA
- HTTP_QUERY_PUBLIC
- HTTP_QUERY_RAW_HEADERS
- HTTP_QUERY_RAW_HEADERS_CRLF
- HTTP_QUERY_REQUEST_METHOD
- HTTP_QUERY_SERVER
- HTTP_QUERY_STATUS_CODE
- HTTP_QUERY_STATUS_TEXT
- HTTP_QUERY_URI
- HTTP_QUERY_USER_AGENT
- HTTP_QUERY_VERSION
- HTTP_QUERY_WWW_LINK
- ICU_BROWSER_MODE
- ICU_DECODE
- ICU_ENCODE_SPACES_ONLY
- ICU_ESCAPE
- ICU_NO_ENCODE
- ICU_NO_META
- ICU_USERNAME
- INTERNET_FLAG_PASSIVE
- INTERNET_FLAG_ASYNC
- INTERNET_FLAG_HYPERLINK
- INTERNET_FLAG_KEEP_CONNECTION
- INTERNET_FLAG_MAKE_PERSISTENT
- INTERNET_FLAG_NO_AUTH
- INTERNET_FLAG_NO_AUTO_REDIRECT
- INTERNET_FLAG_NO_CACHE_WRITE
- INTERNET_FLAG_NO_COOKIES
- INTERNET_FLAG_READ_PREFETCH
- INTERNET_FLAG_RELOAD
- INTERNET_FLAG_RESYNCHRONIZE
- INTERNET_FLAG_TRANSFER_ASCII
- INTERNET_FLAG_TRANSFER_BINARY
- INTERNET_INVALID_PORT_NUMBER
- INTERNET_INVALID_STATUS_CALLBACK
- INTERNET_OPEN_TYPE_DIRECT
- INTERNET_OPEN_TYPE_PROXY
- INTERNET_OPEN_TYPE_PROXY_PRECONFIG
- INTERNET_OPTION_CONNECT_BACKOFF
- INTERNET_OPTION_CONNECT_RETRIES
- INTERNET_OPTION_CONNECT_TIMEOUT
- INTERNET_OPTION_CONTROL_SEND_TIMEOUT
- INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT
- INTERNET_OPTION_DATA_SEND_TIMEOUT
- INTERNET_OPTION_DATA_RECEIVE_TIMEOUT
- INTERNET_OPTION_HANDLE_TYPE
- INTERNET_OPTION_LISTEN_TIMEOUT
- INTERNET_OPTION_PASSWORD
- INTERNET_OPTION_READ_BUFFER_SIZE
- INTERNET_OPTION_USER_AGENT
- INTERNET_OPTION_USERNAME
- INTERNET_OPTION_VERSION
- INTERNET_OPTION_WRITE_BUFFER_SIZE
- INTERNET_SERVICE_FTP
- INTERNET_SERVICE_GOPHER
- INTERNET_SERVICE_HTTP
- INTERNET_STATUS_CLOSING_CONNECTION
- INTERNET_STATUS_CONNECTED_TO_SERVER
- INTERNET_STATUS_CONNECTING_TO_SERVER
- INTERNET_STATUS_CONNECTION_CLOSED
- INTERNET_STATUS_HANDLE_CLOSING
- INTERNET_STATUS_HANDLE_CREATED
- INTERNET_STATUS_NAME_RESOLVED
- INTERNET_STATUS_RECEIVING_RESPONSE
- INTERNET_STATUS_REDIRECT
- INTERNET_STATUS_REQUEST_COMPLETE
- INTERNET_STATUS_REQUEST_SENT
- INTERNET_STATUS_RESOLVING_NAME
- INTERNET_STATUS_RESPONSE_RECEIVED
- INTERNET_STATUS_SENDING_REQUEST
-
-
-=head1 VERSION HISTORY
-
-=over
-
-=item * 0.082 (4 Sep 2001)
-
-=over
-
-=item *
-
-Fix passive FTP mode. INTERNET_FLAG_PASSIVE was misspelled in earlier
-versions (as INTERNET_CONNECT_FLAG_PASSIVE) and wouldn't work. Found
-by Steve Raynesford <stever@evolvecomm.com>.
-
-=back
-
-=item * 0.081 (25 Sep 1999)
-
-=over
-
-=item *
-
-Documentation converted to pod format by Jan Dubois <JanD@ActiveState.com>.
-
-=item *
-
-Minor changes from Perl 5.005xx compatibility.
-
-=back
-
-=item * 0.08 (14 Feb 1997)
-
-=over
-
-=item *
-
-fixed 2 more bugs in Option(s) related subs (thanks to Brian
-Helterline!).
-
-=item *
-
-Error() now gets error messages directly from WININET.DLL.
-
-=item *
-
-The PLL file now comes in 2 versions, one for Perl version 5.001
-(build 100) and one for Perl version 5.003 (build 300 and
-higher). Everybody should be happy now :)
-
-=item *
-
-added an installation program.
-
-=back
-
-=item * 0.07 (10 Feb 1997)
-
-=over
-
-=item *
-
-fixed a bug in Version() introduced with 0.06...
-
-=item *
-
-completely reworked PM file, fixed *lots* of minor bugs, and removed
-almost all the warnings with "perl -w".
-
-=back
-
-=item * 0.06 (26 Jan 1997)
-
-=over
-
-=item *
-
-fixed another hideous bug in "new" (the 'class' parameter was still
-missing).
-
-=item *
-
-added support for asynchronous operations (work still in embryo).
-
-=item *
-
-removed the ending \0 (ASCII zero) from the DLL version returned by
-"Version".
-
-=item *
-
-added a lot of constants.
-
-=item *
-
-added safefree() after every safemalloc() in C... wonder why I didn't
-it before :)
-
-=item *
-
-added TimeConvert, which actually works one way only.
-
-=back
-
-=item * 0.05f (29 Nov 1996)
-
-=over
-
-=item *
-
-fixed a bug in "new" (parameters passed were simply ignored).
-
-=item *
-
-fixed another bug: "Chdir" and "Cwd" were aliases of RMDIR instead of
-CD..
-
-=back
-
-=item * 0.05 (29 Nov 1996)
-
-=over
-
-=item *
-
-added "CrackURL" and "CreateURL".
-
-=item *
-
-corrected an error in TEST.PL (there was a GetUserAgent instead of
-UserAgent).
-
-=back
-
-=item * 0.04 (25 Nov 1996)
-
-=over
-
-=item *
-
-added "Version" to retrieve package and DLL versions.
-
-=item *
-
-added proxies and other options to "new".
-
-=item *
-
-changed "OpenRequest" and "Request" to read parameters from a hash.
-
-=item *
-
-added "SetOption/QueryOption" and a lot of relative functions
-(connect, username, password, useragent, etc.).
-
-=item *
-
-added "CanonicalizeURL" and "CombineURL".
-
-=item *
-
-"Error" covers a wider spectrum of errors.
-
-=back
-
-=item * 0.02 (18 Nov 1996)
-
-=over
-
-=item *
-
-added support for HTTP sessions and requests.
-
-=back
-
-=item * 0.01 (11 Nov 1996)
-
-=over
-
-=item *
-
-fetching of HTTP, FTP and GOPHER URLs.
-
-=item *
-
-complete set of commands to manage an FTP session.
-
-=back
-
-=back
-
-=head1 AUTHOR
-
-Version 0.08 (14 Feb 1997) by Aldo Calpini <a.calpini@romagiubileo.it>
-
-
-=head1 CREDITS
-
-Win32::Internet is based on the Win32::Registry code written by Jesse
-Dougherty.
-
-Additional thanks to: Carl Tichler for his help in the initial
-development; Tore Haraldsen, Brian Helterline for the bugfixes; Dave
-Roth for his great source code examples.
-
-
-=head1 DISCLAIMER
-
-This program is FREE; you can redistribute, modify, disassemble, or
-even reverse engineer this software at your will. Keep in mind,
-however, that NOTHING IS GUARANTEED to work and everything you do is
-AT YOUR OWN RISK - I will not take responsability for any damage, loss
-of money and/or health that may arise from the use of this program!
-
-This is distributed under the terms of Larry Wall's Artistic License.
diff --git a/Master/tlpkg/tlperl/lib/Win32/Job.pm b/Master/tlpkg/tlperl/lib/Win32/Job.pm
deleted file mode 100644
index 3350f76400d..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/Job.pm
+++ /dev/null
@@ -1,370 +0,0 @@
-package Win32::Job;
-
-use strict;
-use base qw(DynaLoader);
-use vars qw($VERSION);
-
-$VERSION = '0.01';
-
-use constant WIN32s => 0;
-use constant WIN9X => 1;
-use constant WINNT => 2;
-
-require Win32 unless defined &Win32::GetOSVersion;
-my @ver = Win32::GetOSVersion;
-die "Win32::Job is not supported on $ver[0]" unless (
- $ver[4] == WINNT and (
- $ver[1] > 5 or
- ($ver[1] == 5 and $ver[2] > 0) or
- ($ver[1] == 5 and $ver[2] == 0 and $ver[3] >= 0)
- )
-);
-
-Win32::Job->bootstrap($VERSION);
-
-1;
-
-__END__
-
-=head1 NAME
-
-Win32::Job - Run sub-processes in a "job" environment
-
-=head1 SYNOPSIS
-
- use Win32::Job;
-
- my $job = Win32::Job->new;
-
- # Run 'perl Makefile.PL' for 10 seconds
- $job->spawn($Config{perlpath}, "perl Makefile.PL");
- $job->run(10);
-
-=head1 PLATFORMS
-
-Win32::Job requires Windows 2000 or later. Windows 95, 98, NT, and Me are not
-supported.
-
-=head1 DESCRIPTION
-
-Windows 2000 introduced the concept of a "job": a collection of processes
-which can be controlled as a single unit. For example, you can reliably kill a
-process and all of its children by launching the process in a job, then
-telling Windows to kill all processes in the job. Win32::Job makes this
-feature available to Perl.
-
-For example, imagine you want to allow 2 minutes for a process to complete.
-If you have control over the child process, you can probably just run it in
-the background, then poll every second to see if it has finished.
-
-That's fine as long as the child process doesn't spawn any child processes.
-What if it does? If you wrote the child process yourself and made an effort to
-clean up your child processes before terminating, you don't have to worry.
-If not, you will leave hanging processes (called "zombie" processes in Unix).
-
-With Win32::Job, just create a new Job, then use the job to spawn the child
-process. All I<its> children will also be created in the new Job. When you
-time out, just call the job's kill() method and the entire process tree will
-be terminated.
-
-=head1 Using Win32::Job
-
-The following methods are available:
-
-=over 4
-
-=item 1
-
-new()
-
- new();
-
-Creates a new Job object using the Win32 API call CreateJobObject(). The job
-is created with a default security context, and is unnamed.
-
-Note: this method returns C<undef> if CreateJobObject() fails. Look at C<$^E>
-for more detailed error information.
-
-=item 2
-
-spawn()
-
- spawn($exe, $args, \%opts);
-
-Creates a new process and associates it with the Job. The process is initially
-suspended, and can be resumed with one of the other methods. Uses the Win32
-API call CreateProcess(). Returns the PID of the newly created process.
-
-Note: this method returns C<undef> if CreateProcess() fails. See C<$^E> for
-more detailed error information. One reason this will fail is if the calling
-process is itself part of a job, and the job's security context does not allow
-child processes to be created in a different job context than the parent.
-
-The arguments are described here:
-
-=over 4
-
-=item 1
-
-$exe
-
-The executable program to run. This may be C<undef>, in which case the first
-argument in $args is the program to run.
-
-If this has path information in it, it is used "as is" and passed to
-CreateProcess(), which interprets it as either an absolute path, or a
-path relative to the current drive and directory. If you did not specify an
-extension, ".exe" is assumed.
-
-If there are no path separators (either backslashes or forward slashes),
-then Win32::Job will search the current directory and your PATH, looking
-for the file. In addition, if you did not specify an extension, then
-Win32::Job checks ".exe", ".com", and ".bat" in order. If it finds a ".bat"
-file, Win32::Job will actually call F<cmd.exe> and prepend "cmd.exe" to the
-$args.
-
-For example, assuming a fairly normal PATH:
-
- spawn(q{c:\winnt\system\cmd.exe}, q{cmd /C "echo %PATH%"})
- exefile: c:\winnt\system\cmd.exe
- cmdline: cmd /C "echo %PATH%"
-
- spawn("cmd.exe", q{cmd /C "echo %PATH%"})
- exefile: c:\winnt\system\cmd.exe
- cmdline: cmd /C "echo %PATH%"
-
-=item 2
-
-$args
-
-The commandline to pass to the executable program. The first word will be
-C<argv[0]> to an EXE file, so you should repeat the command name in $args.
-
-For example:
-
- $job->spawn($Config{perlpath}, "perl foo.pl");
-
-In this case, the "perl" is ignored, since perl.exe doesn't use it.
-
-=item 3
-
-%opts
-
-A hash reference for advanced options. This parameter is optional.
-the following keys are recognized:
-
-=over 4
-
-=item cwd
-
-A string specifying the current directory of the new process.
-
-By default, the process shares the parent's current directory, C<.>.
-
-=item new_console
-
-A boolean; if true, the process is started in a new console window.
-
-By default, the process shares the parent's console. This has no effect on GUI
-programs which do not interact with the console.
-
-=item window_attr
-
-Either C<minimized>, which displays the new window minimized; C<maximimzed>,
-which shows the new window maximized; or C<hidden>, which does not display the
-new window.
-
-By default, the window is displayed using its application's defaults.
-
-=item new_group
-
-A boolean; if true, the process is the root of a new process group. This
-process group includes all descendents of the child.
-
-By default, the process is in the parent's process group (but in a new job).
-
-=item no_window
-
-A boolean; if true, the process is run without a console window. This flag is
-only valid when starting a console application, otherwise it is ignored. If you
-are launching a GUI application, use the C<window_attr> tag instead.
-
-By default, the process shares its parent's console.
-
-=item stdin
-
-An open input filehandle, or the name of an existing file. The resulting
-filehandle will be used for the child's standard input handle.
-
-By default, the child process shares the parent's standard input.
-
-=item stdout
-
-An open output filehandle or filename (will be opened for append). The
-resulting filehandle will be used for the child's standard output handle.
-
-By default, the child process shares the parent's standard output.
-
-=item stderr
-
-An open output filehandle or filename (will be opened for append). The
-resulting filehandle will be used for the child's standard error handle.
-
-By default, the child process shares the parent's standard error.
-
-=back
-
-Unrecognized keys are ignored.
-
-=back
-
-=item 3
-
-run()
-
- run($timeout, $which);
-
-Provides a simple way to run the programs with a time limit. The
-$timeout is in seconds with millisecond accuracy. This call blocks for
-up to $timeout seconds, or until the processes finish.
-
-The $which parameter specifies whether to wait for I<all> processes to
-complete within the $timeout, or whether to wait for I<any> process to
-complete. You should set this to a boolean, where a true value means to
-wait for I<all> the processes to complete, and a false value to wait
-for I<any>. If you do not specify $which, it defaults to true (C<all>).
-
-Returns a boolean indicating whether the processes exited by themselves,
-or whether the time expired. A true return value means the processes
-exited normally; a false value means one or more processes was killed
-will $timeout.
-
-You can get extended information on process exit codes using the
-status() method.
-
-For example, this is how to build two perl modules at the same time,
-with a 5 minute timeout:
-
- use Win32::Job;
- $job = Win32::Job->new;
- $job->spawn("cmd", q{cmd /C "cd Mod1 && nmake"});
- $job->spawn("cmd", q{cmd /C "cd Mod2 && nmake"});
- $ok = $job->run(5 * 60);
- print "Mod1 and Mod2 built ok!\n" if $ok;
-
-=item 4
-
-watch()
-
- watch(\&handler, $interval, $which);
-
- handler($job);
-
-Provides more fine-grained control over how to stop the programs. You specify
-a callback and an interval in seconds, and Win32::Job will call the "watchdog"
-function at this interval, either until the processes finish or your watchdog
-tells Win32::Job to stop. You must return a value indicating whether to stop: a
-true value means to terminate the processes immediately.
-
-The $which parameter has the same meaning as run()'s.
-
-Returns a boolean with the same meaning as run()'s.
-
-The handler may do anything it wants. One useful application of the watch()
-method is to check the filesize of the output file, and terminate the Job if
-the file becomes larger than a certain limit:
-
- use Win32::Job;
- $job = Win32::Job->new;
- $job->spawn("cmd", q{cmd /C "cd Mod1 && nmake"}, {
- stdin => 'NUL', # the NUL device
- stdout => 'stdout.log',
- stderr => 'stdout.log',
- });
- $ok = $job->watch(sub {
- return 1 if -s "stdout.log" > 1_000_000;
- }, 1);
- print "Mod1 built ok!\n" if $ok;
-
-=item 5
-
-status()
-
- status()
-
-Returns a hash containing information about the processes in the job.
-Only returns valid information I<after> calling either run() or watch();
-returns an empty hash if you have not yet called them. May be called from a
-watch() callback, in which case the C<exitcode> field should be ignored.
-
-The keys of the hash are the process IDs; the values are a subhash
-containing the following keys:
-
-=over 4
-
-=item exitcode
-
-The exit code returned by the process. If the process was killed because
-of a timeout, the value is 293.
-
-=item time
-
-The time accumulated by the process. This is yet another subhash containing
-the subkeys (i) C<user>, the amount of time the process spent in user
-space; (ii) C<kernel>, the amount of time the process spent in kernel space;
-and (iii) C<elapsed>, the total time the process was running.
-
-=back
-
-=item 6
-
-kill()
-
- kill();
-
-Kills all processes and subprocesses in the Job. Has no return value.
-Sets the exit code to all processes killed to 293, which you can check
-for in the status() return value.
-
-=back
-
-=head1 SEE ALSO
-
-For more information about jobs, see Microsoft's online help at
-
- http://msdn.microsoft.com/
-
-For other modules which do similar things (but not as well), see:
-
-=over 4
-
-=item 1
-
-Win32::Process
-
-Low-level access to creating processes in Win32. See L<Win32::Process>.
-
-=item 2
-
-Win32::Console
-
-Low-level access to consoles in Win32. See L<Win32::Console>.
-
-=item 3
-
-Win32::ProcFarm
-
-Manage pools of threads to perform CPU-intensive tasks on Windows. See
-L<Win32::ProcFarm>.
-
-=back
-
-=head1 AUTHOR
-
-ActiveState (support@ActiveState.com)
-
-=head1 COPYRIGHT
-
-Copyright (c) 2002, ActiveState Corporation. All Rights Reserved.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Win32/Mutex.pm b/Master/tlpkg/tlperl/lib/Win32/Mutex.pm
deleted file mode 100644
index 801c2d35cda..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/Mutex.pm
+++ /dev/null
@@ -1,125 +0,0 @@
-#---------------------------------------------------------------------
-package Win32::Mutex;
-#
-# Copyright 1998 Christopher J. Madsen
-#
-# Created: 3 Feb 1998 from the ActiveWare version
-# (c) 1995 Microsoft Corporation. All rights reserved.
-# Developed by ActiveWare Internet Corp., http://www.ActiveWare.com
-#
-# Other modifications (c) 1997 by Gurusamy Sarathy <gsar@activestate.com>
-#
-# Author: Christopher J. Madsen <cjm@pobox.com>
-# Version: 1.00 (6-Feb-1998)
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the same terms as Perl itself.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either the
-# GNU General Public License or the Artistic License for more details.
-#
-# Use Win32 mutex objects for synchronization
-#---------------------------------------------------------------------
-
-$VERSION = '1.02';
-
-use Win32::IPC 1.00 '/./'; # Import everything
-require Exporter;
-require DynaLoader;
-
-@ISA = qw(Exporter DynaLoader Win32::IPC);
-@EXPORT_OK = qw(
- wait_all wait_any
-);
-
-bootstrap Win32::Mutex;
-
-sub Create { $_[0] = Win32::Mutex->new(@_[1..2]) }
-sub Open { $_[0] = Win32::Mutex->open($_[1]) }
-sub Release { &release }
-
-1;
-__END__
-
-=head1 NAME
-
-Win32::Mutex - Use Win32 mutex objects from Perl
-
-=head1 SYNOPSIS
-
- require Win32::Mutex;
-
- $mutex = Win32::Mutex->new($initial,$name);
- $mutex->wait;
-
-=head1 DESCRIPTION
-
-This module allows access to the Win32 mutex objects. The C<wait>
-method and C<wait_all> & C<wait_any> functions are inherited from the
-L<"Win32::IPC"> module.
-
-=head2 Methods
-
-=over 4
-
-=item $mutex = Win32::Mutex->new([$initial, [$name]])
-
-Constructor for a new mutex object. If C<$initial> is true, requests
-immediate ownership of the mutex (default false). If C<$name> is
-omitted, creates an unnamed mutex object.
-
-If C<$name> signifies an existing mutex object, then C<$initial> is
-ignored and the object is opened. If this happens, C<$^E> will be set
-to 183 (ERROR_ALREADY_EXISTS).
-
-=item $mutex = Win32::Mutex->open($name)
-
-Constructor for opening an existing mutex object.
-
-=item $mutex->release
-
-Release ownership of a C<$mutex>. You should have obtained ownership
-of the mutex through C<new> or one of the wait functions. Returns
-true if successful.
-
-=item $mutex->wait([$timeout])
-
-Wait for ownership of C<$mutex>. See L<"Win32::IPC">.
-
-=back
-
-=head2 Deprecated Functions and Methods
-
-B<Win32::Mutex> still supports the ActiveWare syntax, but its use is
-deprecated.
-
-=over 4
-
-=item Create($MutObj,$Initial,$Name)
-
-Use C<$MutObj = Win32::Mutex-E<gt>new($Initial,$Name)> instead.
-
-=item Open($MutObj,$Name)
-
-Use C<$MutObj = Win32::Mutex-E<gt>open($Name)> instead.
-
-=item $MutObj->Release()
-
-Use C<$MutObj-E<gt>release> instead.
-
-=back
-
-=head1 AUTHOR
-
-Christopher J. Madsen E<lt>F<cjm@pobox.com>E<gt>
-
-Loosely based on the original module by ActiveWare Internet Corp.,
-F<http://www.ActiveWare.com>
-
-=cut
-
-# Local Variables:
-# tmtrack-file-task: "Win32::Mutex"
-# End:
diff --git a/Master/tlpkg/tlperl/lib/Win32/NetAdmin.pm b/Master/tlpkg/tlperl/lib/Win32/NetAdmin.pm
deleted file mode 100644
index ace31a619e4..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/NetAdmin.pm
+++ /dev/null
@@ -1,419 +0,0 @@
-package Win32::NetAdmin;
-
-#
-#NetAdmin.pm
-#Written by Douglas_Lankshear@ActiveWare.com
-#
-
-$VERSION = '0.08';
-
-require Exporter;
-require DynaLoader;
-
-require Win32 unless defined &Win32::IsWinNT;
-die "The Win32::NetAdmin module works only on Windows NT" unless Win32::IsWinNT();
-
-@ISA= qw( Exporter DynaLoader );
-# 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(
- DOMAIN_ALIAS_RID_ACCOUNT_OPS
- DOMAIN_ALIAS_RID_ADMINS
- DOMAIN_ALIAS_RID_BACKUP_OPS
- DOMAIN_ALIAS_RID_GUESTS
- DOMAIN_ALIAS_RID_POWER_USERS
- DOMAIN_ALIAS_RID_PRINT_OPS
- DOMAIN_ALIAS_RID_REPLICATOR
- DOMAIN_ALIAS_RID_SYSTEM_OPS
- DOMAIN_ALIAS_RID_USERS
- DOMAIN_GROUP_RID_ADMINS
- DOMAIN_GROUP_RID_GUESTS
- DOMAIN_GROUP_RID_USERS
- DOMAIN_USER_RID_ADMIN
- DOMAIN_USER_RID_GUEST
- FILTER_TEMP_DUPLICATE_ACCOUNT
- FILTER_NORMAL_ACCOUNT
- FILTER_INTERDOMAIN_TRUST_ACCOUNT
- FILTER_WORKSTATION_TRUST_ACCOUNT
- FILTER_SERVER_TRUST_ACCOUNT
- SV_TYPE_WORKSTATION
- SV_TYPE_SERVER
- SV_TYPE_SQLSERVER
- SV_TYPE_DOMAIN_CTRL
- SV_TYPE_DOMAIN_BAKCTRL
- SV_TYPE_TIMESOURCE
- SV_TYPE_AFP
- SV_TYPE_NOVELL
- SV_TYPE_DOMAIN_MEMBER
- SV_TYPE_PRINT
- SV_TYPE_PRINTQ_SERVER
- SV_TYPE_DIALIN
- SV_TYPE_DIALIN_SERVER
- SV_TYPE_XENIX_SERVER
- SV_TYPE_NT
- SV_TYPE_WFW
- SV_TYPE_POTENTIAL_BROWSER
- SV_TYPE_BACKUP_BROWSER
- SV_TYPE_MASTER_BROWSER
- SV_TYPE_DOMAIN_MASTER
- SV_TYPE_DOMAIN_ENUM
- SV_TYPE_SERVER_UNIX
- SV_TYPE_SERVER_MFPN
- SV_TYPE_SERVER_NT
- SV_TYPE_SERVER_OSF
- SV_TYPE_SERVER_VMS
- SV_TYPE_WINDOWS
- SV_TYPE_DFS
- SV_TYPE_ALTERNATE_XPORT
- SV_TYPE_LOCAL_LIST_ONLY
- SV_TYPE_ALL
- UF_TEMP_DUPLICATE_ACCOUNT
- UF_NORMAL_ACCOUNT
- UF_INTERDOMAIN_TRUST_ACCOUNT
- UF_WORKSTATION_TRUST_ACCOUNT
- UF_SERVER_TRUST_ACCOUNT
- UF_MACHINE_ACCOUNT_MASK
- UF_ACCOUNT_TYPE_MASK
- UF_DONT_EXPIRE_PASSWD
- UF_SETTABLE_BITS
- UF_SCRIPT
- UF_ACCOUNTDISABLE
- UF_HOMEDIR_REQUIRED
- UF_LOCKOUT
- UF_PASSWD_NOTREQD
- UF_PASSWD_CANT_CHANGE
- USE_FORCE
- USE_LOTS_OF_FORCE
- USE_NOFORCE
- USER_PRIV_MASK
- USER_PRIV_GUEST
- USER_PRIV_USER
- USER_PRIV_ADMIN
-);
-
-@EXPORT_OK = qw(
- GetError
- GetDomainController
- GetAnyDomainController
- UserCreate
- UserDelete
- UserGetAttributes
- UserSetAttributes
- UserChangePassword
- UsersExist
- GetUsers
- GroupCreate
- GroupDelete
- GroupGetAttributes
- GroupSetAttributes
- GroupAddUsers
- GroupDeleteUsers
- GroupIsMember
- GroupGetMembers
- LocalGroupCreate
- LocalGroupDelete
- LocalGroupGetAttributes
- LocalGroupSetAttributes
- LocalGroupIsMember
- LocalGroupGetMembers
- LocalGroupGetMembersWithDomain
- LocalGroupAddUsers
- LocalGroupDeleteUsers
- GetServers
- GetTransports
- LoggedOnUsers
- GetAliasFromRID
- GetUserGroupFromRID
- GetServerDisks
-);
-$EXPORT_TAGS{ALL}= \@EXPORT_OK;
-
-=head1 NAME
-
-Win32::NetAdmin - manage network groups and users in perl
-
-=head1 SYNOPSIS
-
- use Win32::NetAdmin;
-
-=head1 DESCRIPTION
-
-This module offers control over the administration of groups and users over a
-network.
-
-=head1 FUNCTIONS
-
-=head2 NOTE
-
-All of the functions return false if they fail, unless otherwise noted.
-When a function fails call Win32::NetAdmin::GetError() rather than
-GetLastError() or $^E to retrieve the error code.
-
-C<server> is optional for all the calls below. If not given the local machine is
-assumed.
-
-=over 10
-
-=item GetError()
-
-Returns the error code of the last call to this module.
-
-=item GetDomainController(server, domain, returnedName)
-
-Returns the name of the domain controller for server.
-
-=item GetAnyDomainController(server, domain, returnedName)
-
-Returns the name of any domain controller for a domain that is directly trusted
-by the server.
-
-=item UserCreate(server, userName, password, passwordAge, privilege, homeDir, comment, flags, scriptPath)
-
-Creates a user on server with password, passwordAge, privilege, homeDir, comment,
-flags, and scriptPath.
-
-=item UserDelete(server, user)
-
-Deletes a user from server.
-
-=item UserGetAttributes(server, userName, password, passwordAge, privilege, homeDir, comment, flags, scriptPath)
-
-Gets password, passwordAge, privilege, homeDir, comment, flags, and scriptPath
-for user.
-
-=item UserSetAttributes(server, userName, password, passwordAge, privilege, homeDir, comment, flags, scriptPath)
-
-Sets password, passwordAge, privilege, homeDir, comment, flags, and scriptPath
-for user.
-
-=item UserChangePassword(domainname, username, oldpassword, newpassword)
-
-Changes a users password. Can be run under any account.
-
-=item UsersExist(server, userName)
-
-Checks if a user exists.
-
-=item GetUsers(server, filter, userRef)
-
-Fills userRef with user names if it is an array reference and with the user
-names and the full names if it is a hash reference.
-
-=item GroupCreate(server, group, comment)
-
-Creates a group.
-
-=item GroupDelete(server, group)
-
-Deletes a group.
-
-=item GroupGetAttributes(server, groupName, comment)
-
-Gets the comment.
-
-=item GroupSetAttributes(server, groupName, comment)
-
-Sets the comment.
-
-=item GroupAddUsers(server, groupName, users)
-
-Adds a user to a group.
-
-=item GroupDeleteUsers(server, groupName, users)
-
-Deletes a users from a group.
-
-=item GroupIsMember(server, groupName, user)
-
-Returns TRUE if user is a member of groupName.
-
-=item GroupGetMembers(server, groupName, userArrayRef)
-
-Fills userArrayRef with the members of groupName.
-
-=item LocalGroupCreate(server, group, comment)
-
-Creates a local group.
-
-=item LocalGroupDelete(server, group)
-
-Deletes a local group.
-
-=item LocalGroupGetAttributes(server, groupName, comment)
-
-Gets the comment.
-
-=item LocalGroupSetAttributes(server, groupName, comment)
-
-Sets the comment.
-
-=item LocalGroupIsMember(server, groupName, user)
-
-Returns TRUE if user is a member of groupName.
-
-=item LocalGroupGetMembers(server, groupName, userArrayRef)
-
-Fills userArrayRef with the members of groupName.
-
-=item LocalGroupGetMembersWithDomain(server, groupName, userRef)
-
-This function is similar LocalGroupGetMembers but accepts an array or
-a hash reference. Unlike LocalGroupGetMembers it returns each user name
-as C<DOMAIN\USERNAME>. If a hash reference is given, the function
-returns to each user or group name the type (group, user, alias etc.).
-The possible types are as follows:
-
- $SidTypeUser = 1;
- $SidTypeGroup = 2;
- $SidTypeDomain = 3;
- $SidTypeAlias = 4;
- $SidTypeWellKnownGroup = 5;
- $SidTypeDeletedAccount = 6;
- $SidTypeInvalid = 7;
- $SidTypeUnknown = 8;
-
-=item LocalGroupAddUsers(server, groupName, users)
-
-Adds a user to a group.
-
-=item LocalGroupDeleteUsers(server, groupName, users)
-
-Deletes a users from a group.
-
-=item GetServers(server, domain, flags, serverRef)
-
-Gets an array of server names or an hash with the server names and the
-comments as seen in the Network Neighborhood or the server manager.
-For flags, see SV_TYPE_* constants.
-
-=item GetTransports(server, transportRef)
-
-Enumerates the network transports of a computer. If transportRef is an array
-reference, it is filled with the transport names. If transportRef is a hash
-reference then a hash of hashes is filled with the data for the transports.
-
-=item LoggedOnUsers(server, userRef)
-
-Gets an array or hash with the users logged on at the specified computer. If
-userRef is a hash reference, the value is a semikolon separated string of
-username, logon domain and logon server.
-
-=item GetAliasFromRID(server, RID, returnedName)
-
-=item GetUserGroupFromRID(server, RID, returnedName)
-
-Retrieves the name of an alias (i.e local group) or a user group for a RID
-from the specified server. These functions can be used for example to get the
-account name for the administrator account if it is renamed or localized.
-
-Possible values for C<RID>:
-
- DOMAIN_ALIAS_RID_ACCOUNT_OPS
- DOMAIN_ALIAS_RID_ADMINS
- DOMAIN_ALIAS_RID_BACKUP_OPS
- DOMAIN_ALIAS_RID_GUESTS
- DOMAIN_ALIAS_RID_POWER_USERS
- DOMAIN_ALIAS_RID_PRINT_OPS
- DOMAIN_ALIAS_RID_REPLICATOR
- DOMAIN_ALIAS_RID_SYSTEM_OPS
- DOMAIN_ALIAS_RID_USERS
- DOMAIN_GROUP_RID_ADMINS
- DOMAIN_GROUP_RID_GUESTS
- DOMAIN_GROUP_RID_USERS
- DOMAIN_USER_RID_ADMIN
- DOMAIN_USER_RID_GUEST
-
-=item GetServerDisks(server, arrayRef)
-
-Returns an array with the disk drives of the specified server. The array
-contains two-character strings (drive letter followed by a colon).
-
-=back
-
-=head1 EXAMPLE
-
- # Simple script using Win32::NetAdmin to set the login script for
- # all members of the NT group "Domain Users". Only works if you
- # run it on the PDC. (From Robert Spier <rspier@seas.upenn.edu>)
- #
- # FILTER_TEMP_DUPLICATE_ACCOUNTS
- # Enumerates local user account data on a domain controller.
- #
- # FILTER_NORMAL_ACCOUNT
- # Enumerates global user account data on a computer.
- #
- # FILTER_INTERDOMAIN_TRUST_ACCOUNT
- # Enumerates domain trust account data on a domain controller.
- #
- # FILTER_WORKSTATION_TRUST_ACCOUNT
- # Enumerates workstation or member server account data on a domain
- # controller.
- #
- # FILTER_SERVER_TRUST_ACCOUNT
- # Enumerates domain controller account data on a domain controller.
-
-
- use Win32::NetAdmin qw(GetUsers GroupIsMember
- UserGetAttributes UserSetAttributes);
-
- my %hash;
- GetUsers("", FILTER_NORMAL_ACCOUNT , \%hash)
- or die "GetUsers() failed: $^E";
-
- foreach (keys %hash) {
- my ($password, $passwordAge, $privilege,
- $homeDir, $comment, $flags, $scriptPath);
- if (GroupIsMember("", "Domain Users", $_)) {
- print "Updating $_ ($hash{$_})\n";
- UserGetAttributes("", $_, $password, $passwordAge, $privilege,
- $homeDir, $comment, $flags, $scriptPath)
- or die "UserGetAttributes() failed: $^E";
- $scriptPath = "dnx_login.bat"; # this is the new login script
- UserSetAttributes("", $_, $password, $passwordAge, $privilege,
- $homeDir, $comment, $flags, $scriptPath)
- or die "UserSetAttributes() failed: $^E";
- }
- }
-
-=cut
-
-sub AUTOLOAD {
- my($constname);
- ($constname = $AUTOLOAD) =~ s/.*:://;
- #reset $! to zero to reset any current errors.
- local $! = 0;
- my $val = constant($constname);
- if ($! != 0) {
- if ($! =~ /Invalid/) {
- $AutoLoader::AUTOLOAD = $AUTOLOAD;
- goto &AutoLoader::AUTOLOAD;
- }
- else {
- ($pack,$file,$line) = caller;
- die "Your vendor has not defined Win32::NetAdmin macro $constname, used in $file at line $line.";
- }
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-$SidTypeUser = 1;
-$SidTypeGroup = 2;
-$SidTypeDomain = 3;
-$SidTypeAlias = 4;
-$SidTypeWellKnownGroup = 5;
-$SidTypeDeletedAccount = 6;
-$SidTypeInvalid = 7;
-$SidTypeUnknown = 8;
-
-sub GetError() {
- our $__lastError;
- $__lastError;
-}
-
-bootstrap Win32::NetAdmin;
-
-1;
-__END__
-
diff --git a/Master/tlpkg/tlperl/lib/Win32/NetResource.pm b/Master/tlpkg/tlperl/lib/Win32/NetResource.pm
deleted file mode 100644
index 04ac87acabd..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/NetResource.pm
+++ /dev/null
@@ -1,456 +0,0 @@
-package Win32::NetResource;
-
-require Exporter;
-require DynaLoader;
-require AutoLoader;
-
-$VERSION = '0.053';
-
-@ISA = qw(Exporter DynaLoader);
-# 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(
- RESOURCEDISPLAYTYPE_DOMAIN
- RESOURCEDISPLAYTYPE_FILE
- RESOURCEDISPLAYTYPE_GENERIC
- RESOURCEDISPLAYTYPE_GROUP
- RESOURCEDISPLAYTYPE_SERVER
- RESOURCEDISPLAYTYPE_SHARE
- RESOURCEDISPLAYTYPE_TREE
- RESOURCETYPE_ANY
- RESOURCETYPE_DISK
- RESOURCETYPE_PRINT
- RESOURCETYPE_UNKNOWN
- RESOURCEUSAGE_CONNECTABLE
- RESOURCEUSAGE_CONTAINER
- RESOURCEUSAGE_RESERVED
- RESOURCE_CONNECTED
- RESOURCE_GLOBALNET
- RESOURCE_REMEMBERED
- STYPE_DISKTREE
- STYPE_PRINTQ
- STYPE_DEVICE
- STYPE_IPC
- STYPE_SPECIAL
- SHARE_NETNAME_PARMNUM
- SHARE_TYPE_PARMNUM
- SHARE_REMARK_PARMNUM
- SHARE_PERMISSIONS_PARMNUM
- SHARE_MAX_USES_PARMNUM
- SHARE_CURRENT_USES_PARMNUM
- SHARE_PATH_PARMNUM
- SHARE_PASSWD_PARMNUM
- SHARE_FILE_SD_PARMNUM
-);
-
-@EXPORT_OK = qw(
- GetSharedResources
- AddConnection
- CancelConnection
- WNetGetLastError
- GetError
- GetUNCName
- NetShareAdd
- NetShareCheck
- NetShareDel
- NetShareGetInfo
- NetShareSetInfo
-);
-
-=head1 NAME
-
-Win32::NetResource - manage network resources in perl
-
-=head1 SYNOPSIS
-
- use Win32::NetResource;
-
- $ShareInfo = {
- 'path' => "C:\\MyShareDir",
- 'netname' => "MyShare",
- 'remark' => "It is good to share",
- 'passwd' => "",
- 'current-users' =>0,
- 'permissions' => 0,
- 'maxusers' => -1,
- 'type' => 0,
- };
-
- Win32::NetResource::NetShareAdd( $ShareInfo,$parm )
- or die "unable to add share";
-
-
-=head1 DESCRIPTION
-
-This module offers control over the network resources of Win32.Disks,
-printers etc can be shared over a network.
-
-=head1 DATA TYPES
-
-There are two main data types required to control network resources.
-In Perl these are represented by hash types.
-
-=over 4
-
-=item %NETRESOURCE
-
- KEY VALUE
-
- 'Scope' => Scope of an Enumeration
- RESOURCE_CONNECTED,
- RESOURCE_GLOBALNET,
- RESOURCE_REMEMBERED.
-
- 'Type' => The type of resource to Enum
- RESOURCETYPE_ANY All resources
- RESOURCETYPE_DISK Disk resources
- RESOURCETYPE_PRINT Print resources
-
- 'DisplayType' => The way the resource should be displayed.
- RESOURCEDISPLAYTYPE_DOMAIN
- The object should be displayed as a domain.
- RESOURCEDISPLAYTYPE_GENERIC
- The method used to display the object does not matter.
- RESOURCEDISPLAYTYPE_SERVER
- The object should be displayed as a server.
- RESOURCEDISPLAYTYPE_SHARE
- The object should be displayed as a sharepoint.
-
- 'Usage' => Specifies the Resources usage:
- RESOURCEUSAGE_CONNECTABLE
- RESOURCEUSAGE_CONTAINER.
-
- 'LocalName' => Name of the local device the resource is
- connected to.
-
- 'RemoteName' => The network name of the resource.
-
- 'Comment' => A string comment.
-
- 'Provider' => Name of the provider of the resource.
-
-=back
-
-=item %SHARE_INFO
-
-This hash represents the SHARE_INFO_502 struct.
-
-=over 4
-
- KEY VALUE
- 'netname' => Name of the share.
- 'type' => type of share.
- 'remark' => A string comment.
- 'permissions' => Permissions value
- 'maxusers' => the max # of users.
- 'current-users' => the current # of users.
- 'path' => The path of the share.
- 'passwd' => A password if one is req'd
-
-=back
-
-=head1 FUNCTIONS
-
-=head2 NOTE
-
-All of the functions return false if they fail.
-
-=over 4
-
-=item GetSharedResources(\@Resources,dwType,\%NetResource = NULL)
-
-Creates a list in @Resources of %NETRESOURCE hash references.
-
-The return value indicates whether there was an error in accessing
-any of the shared resources. All the shared resources that were
-encountered (until the point of an error, if any) are pushed into
-@Resources as references to %NETRESOURCE hashes. See example
-below. The \%NetResource argument is optional. If it is not supplied,
-the root (that is, the topmost container) of the network is assumed,
-and all network resources available from the toplevel container will
-be enumerated.
-
-=item AddConnection(\%NETRESOURCE,$Password,$UserName,$Connection)
-
-Makes a connection to a network resource specified by %NETRESOURCE
-
-=item CancelConnection($Name,$Connection,$Force)
-
-Cancels a connection to a network resource connected to local device
-$name.$Connection is either 1 - persistent connection or 0, non-persistent.
-
-=item WNetGetLastError($ErrorCode,$Description,$Name)
-
-Gets the Extended Network Error.
-
-=item GetError( $ErrorCode )
-
-Gets the last Error for a Win32::NetResource call.
-
-=item GetUNCName( $UNCName, $LocalPath );
-
-Returns the UNC name of the disk share connected to $LocalPath in $UNCName.
-$LocalPath should be a drive based path. e.g. "C:\\share\\subdir"
-
-=back
-
-=head2 NOTE
-
-$servername is optional for all the calls below. (if not given the
-local machine is assumed.)
-
-=over 4
-
-=item NetShareAdd(\%SHARE,$parm_err,$servername = NULL )
-
-Add a share for sharing.
-
-=item NetShareCheck($device,$type,$servername = NULL )
-
-Check if a directory or a device is available for connection from the
-network through a share. This includes all directories that are
-reachable through a shared directory or device, meaning that if C:\foo
-is shared, C:\foo\bar is also available for sharing. This means that
-this function is pretty useless, given that by default every disk
-volume has an administrative share such as "C$" associated with its
-root directory.
-
-$device must be a drive name, directory, or a device. For example,
-"C:", "C:\dir", "LPT1", "D$", "IPC$" are all valid as the $device
-argument. $type is an output argument that will be set to one of
-the following constants that describe the type of share:
-
- STYPE_DISKTREE Disk drive
- STYPE_PRINTQ Print queue
- STYPE_DEVICE Communication device
- STYPE_IPC Interprocess communication (IPC)
- STYPE_SPECIAL Special share reserved for interprocess
- communication (IPC$) or remote administration
- of the server (ADMIN$). Can also refer to
- administrative shares such as C$, D$, etc.
-
-=item NetShareDel( $netname, $servername = NULL )
-
-Remove a share from a machines list of shares.
-
-=item NetShareGetInfo( $netname, \%SHARE,$servername=NULL )
-
-Get the %SHARE_INFO information about the share $netname on the
-server $servername.
-
-=item NetShareSetInfo( $netname,\%SHARE,$parm_err,$servername=NULL)
-
-Set the information for share $netname.
-
-=back
-
-=head1 EXAMPLE
-
-=over 4
-
-=item Enumerating all resources on the network
-
- #
- # This example displays all the share points in the entire
- # visible part of the network.
- #
-
- use strict;
- use Win32::NetResource qw(:DEFAULT GetSharedResources GetError);
- my $resources = [];
- unless(GetSharedResources($resources, RESOURCETYPE_ANY)) {
- my $err;
- GetError($err);
- warn Win32::FormatMessage($err);
- }
-
- foreach my $href (@$resources) {
- next if ($$href{DisplayType} != RESOURCEDISPLAYTYPE_SHARE);
- print "-----\n";
- foreach( keys %$href){
- print "$_: $href->{$_}\n";
- }
- }
-
-=item Enumerating all resources on a particular host
-
- #
- # This example displays all the share points exported by the local
- # host.
- #
-
- use strict;
- use Win32::NetResource qw(:DEFAULT GetSharedResources GetError);
- if (GetSharedResources(my $resources, RESOURCETYPE_ANY,
- { RemoteName => "\\\\" . Win32::NodeName() }))
- {
- foreach my $href (@$resources) {
- print "-----\n";
- foreach(keys %$href) { print "$_: $href->{$_}\n"; }
- }
- }
-
-=back
-
-=head1 AUTHOR
-
-Jesse Dougherty for Hip Communications.
-
-Additional general cleanups and bug fixes by Gurusamy Sarathy <gsar@activestate.com>.
-
-=cut
-
-sub AUTOLOAD {
- # This AUTOLOAD is used to 'autoload' constants from the constant()
- # XS function. If a constant is not found then control is passed
- # to the AUTOLOAD in AutoLoader.
-
- my($constname);
- ($constname = $AUTOLOAD) =~ s/.*:://;
- #reset $! to zero to reset any current errors.
- local $! = 0;
- my $val = constant($constname, @_ ? $_[0] : 0);
- if ($! != 0) {
- if ($! =~ /Invalid/) {
- $AutoLoader::AUTOLOAD = $AUTOLOAD;
- goto &AutoLoader::AUTOLOAD;
- }
- else {
- ($pack,$file,$line) = caller;
- die "Your vendor has not defined Win32::NetResource macro $constname, used at $file line $line.
-";
- }
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-sub AddConnection
-{
- my $h = $_[0];
- die "AddConnection: HASH reference required" unless ref($h) eq "HASH";
-
- #
- # The last four items *must* not be deallocated until the
- # _AddConnection() completes (since the packed structure is
- # pointing into these values.
- #
- my $netres = pack( 'i4 p4', $h->{Scope},
- $h->{Type},
- $h->{DisplayType},
- $h->{Usage},
- $h->{LocalName},
- $h->{RemoteName},
- $h->{Comment},
- $h->{Provider});
- _AddConnection($netres,$_[1],$_[2],$_[3]);
-}
-
-#use Data::Dumper;
-
-sub GetSharedResources
-{
- die "GetSharedResources: ARRAY reference required"
- if defined $_[0] and ref($_[0]) ne "ARRAY";
-
- my $aref = [];
-
- # Get the shared resources.
-
- my $ret;
-
- if (@_ > 2 and $_[2]) {
- my $netres = pack('i4 p4', @{$_[2]}{qw(Scope
- Type
- DisplayType
- Usage
- LocalName
- RemoteName
- Comment
- Provider)});
- $ret = _GetSharedResources( $aref , $_[1], $netres );
- }
- else {
- $ret = _GetSharedResources( $aref , $_[1] );
- }
-
- # build the array of hashes in $_[0]
-# print Dumper($aref);
- foreach ( @$aref ) {
- my %hash;
- @hash{'Scope',
- 'Type',
- 'DisplayType',
- 'Usage',
- 'LocalName',
- 'RemoteName',
- 'Comment',
- 'Provider'} = split /\001/, $_;
- push @{$_[0]}, \%hash;
- }
-
- $ret;
-}
-
-sub NetShareAdd
-{
- my $shareinfo = _hash2SHARE( $_[0] );
- _NetShareAdd($shareinfo,$_[1], $_[2] || "");
-}
-
-sub NetShareGetInfo
-{
- my ($netinfo,$val);
- $val = _NetShareGetInfo( $_[0],$netinfo,$_[2] || "");
- %{$_[1]} = %{_SHARE2hash( $netinfo )};
- $val;
-}
-
-sub NetShareSetInfo
-{
- my $shareinfo = _hash2SHARE( $_[1] );
- _NetShareSetInfo( $_[0],$shareinfo,$_[2],$_[3] || "");
-}
-
-
-# These are private functions to work with the ShareInfo structure.
-# please note that the implementation of these calls requires the
-# SHARE_INFO_502 level of information.
-
-sub _SHARE2hash
-{
- my %hash = ();
- @hash{'type',
- 'permissions',
- 'maxusers',
- 'current-users',
- 'remark',
- 'netname',
- 'path',
- 'passwd'} = unpack('i4 A257 A81 A257 A257',$_[0]);
-
- return \%hash;
-}
-
-sub _hash2SHARE
-{
- my $h = $_[0];
- die "Argument must be a HASH reference" unless ref($h) eq "HASH";
-
- return pack 'i4 a257 a81 a257 a257',
- @$h{'type',
- 'permissions',
- 'maxusers',
- 'current-users',
- 'remark',
- 'netname',
- 'path',
- 'passwd'};
-}
-
-
-bootstrap Win32::NetResource;
-
-1;
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Win32/ODBC.pm b/Master/tlpkg/tlperl/lib/Win32/ODBC.pm
deleted file mode 100644
index a51616388ea..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/ODBC.pm
+++ /dev/null
@@ -1,1493 +0,0 @@
-package Win32::ODBC;
-
-$VERSION = '0.032';
-
-# Win32::ODBC.pm
-# +==========================================================+
-# | |
-# | ODBC.PM package |
-# | --------------- |
-# | |
-# | Copyright (c) 1996, 1997 Dave Roth. All rights reserved. |
-# | This program is free software; you can redistribute |
-# | it and/or modify it under the same terms as Perl itself. |
-# | |
-# +==========================================================+
-#
-#
-# based on original code by Dan DeMaggio (dmag@umich.edu)
-#
-# Use under GNU General Public License or Larry Wall's "Artistic License"
-#
-# Check the README.TXT file that comes with this package for details about
-# it's history.
-#
-
-require Exporter;
-require DynaLoader;
-
-$ODBCPackage = "Win32::ODBC";
-$ODBCPackage::Version = 970208;
-$::ODBC = $ODBCPackage;
-$CacheConnection = 0;
-
- # Reserve ODBC in the main namespace for US!
-*ODBC::=\%Win32::ODBC::;
-
-
-@ISA= qw( Exporter DynaLoader );
- # 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(
- ODBC_ADD_DSN
- ODBC_REMOVE_DSN
- ODBC_CONFIG_DSN
- ODBC_ADD_SYS_DSN
- ODBC_REMOVE_SYS_DSN
- ODBC_CONFIG_SYS_DSN
-
- SQL_DONT_CLOSE
- SQL_DROP
- SQL_CLOSE
- SQL_UNBIND
- SQL_RESET_PARAMS
-
- SQL_FETCH_NEXT
- SQL_FETCH_FIRST
- SQL_FETCH_LAST
- SQL_FETCH_PRIOR
- SQL_FETCH_ABSOLUTE
- SQL_FETCH_RELATIVE
- SQL_FETCH_BOOKMARK
-
- SQL_COLUMN_COUNT
- SQL_COLUMN_NAME
- SQL_COLUMN_TYPE
- SQL_COLUMN_LENGTH
- SQL_COLUMN_PRECISION
- SQL_COLUMN_SCALE
- SQL_COLUMN_DISPLAY_SIZE
- SQL_COLUMN_NULLABLE
- SQL_COLUMN_UNSIGNED
- SQL_COLUMN_MONEY
- SQL_COLUMN_UPDATABLE
- SQL_COLUMN_AUTO_INCREMENT
- SQL_COLUMN_CASE_SENSITIVE
- SQL_COLUMN_SEARCHABLE
- SQL_COLUMN_TYPE_NAME
- SQL_COLUMN_TABLE_NAME
- SQL_COLUMN_OWNER_NAME
- SQL_COLUMN_QUALIFIER_NAME
- SQL_COLUMN_LABEL
- SQL_COLATT_OPT_MAX
- SQL_COLUMN_DRIVER_START
- SQL_COLATT_OPT_MIN
- SQL_ATTR_READONLY
- SQL_ATTR_WRITE
- SQL_ATTR_READWRITE_UNKNOWN
- SQL_UNSEARCHABLE
- SQL_LIKE_ONLY
- SQL_ALL_EXCEPT_LIKE
- SQL_SEARCHABLE
- );
- #The above are included for backward compatibility
-
-
-sub new
-{
- my ($n, $self);
- my ($type) = shift;
- my ($DSN) = shift;
- my (@Results) = @_;
-
- if (ref $DSN){
- @Results = ODBCClone($DSN->{'connection'});
- }else{
- @Results = ODBCConnect($DSN, @Results);
- }
- @Results = processError(-1, @Results);
- if (! scalar(@Results)){
- return undef;
- }
- $self = bless {};
- $self->{'connection'} = $Results[0];
- $ErrConn = $Results[0];
- $ErrText = $Results[1];
- $ErrNum = 0;
- $self->{'DSN'} = $DSN;
- $self;
-}
-
-####
-# Close this ODBC session (or all sessions)
-####
-sub Close
-{
- my ($self, $Result) = shift;
- $Result = DESTROY($self);
- $self->{'connection'} = -1;
- return $Result;
-}
-
-####
-# Auto-Kill an instance of this module
-####
-sub DESTROY
-{
- my ($self) = shift;
- my (@Results) = (0);
- if($self->{'connection'} > -1){
- @Results = ODBCDisconnect($self->{'connection'});
- @Results = processError($self, @Results);
- if ($Results[0]){
- undef $self->{'DSN'};
- undef @{$self->{'fnames'}};
- undef %{$self->{'field'}};
- undef %{$self->{'connection'}};
- }
- }
- return $Results[0];
-}
-
-
-sub sql{
- return (Sql(@_));
-}
-
-####
-# Submit an SQL Execute statement for processing
-####
-sub Sql{
- my ($self, $Sql, @Results) = @_;
- @Results = ODBCExecute($self->{'connection'}, $Sql);
- return updateResults($self, @Results);
-}
-
-####
-# Retrieve data from a particular field
-####
-sub Data{
-
- # Change by JOC 06-APR-96
- # Altered by Dave Roth <dave@roth.net> 96.05.07
- my($self) = shift;
- my(@Fields) = @_;
- my(@Results, $Results, $Field);
-
- if ($self->{'Dirty'}){
- GetData($self);
- $self->{'Dirty'} = 0;
- }
- @Fields = @{$self->{'fnames'}} if (! scalar(@Fields));
- foreach $Field (@Fields) {
- if (wantarray) {
- push(@Results, data($self, $Field));
- } else {
- $Results .= data($self, $Field);
- }
- }
- return wantarray ? @Results : $Results;
-}
-
-sub DataHash{
- my($self, @Results) = @_;
- my(%Results, $Element);
-
- if ($self->{'Dirty'}){
- GetData($self);
- $self->{'Dirty'} = 0;
- }
- @Results = @{$self->{'fnames'}} if (! scalar(@Results));
- foreach $Element (@Results) {
- $Results{$Element} = data($self, $Element);
- }
-
- return %Results;
-}
-
-####
-# Retrieve data from the data buffer
-####
-sub data
-{ $_[0]->{'data'}->{$_[1]}; }
-
-
-sub fetchrow{
- return (FetchRow(@_));
-}
-####
-# Put a row from an ODBC data set into data buffer
-####
-sub FetchRow{
- my ($self, @Results) = @_;
- my ($item, $num, $sqlcode);
- # Added by JOC 06-APR-96
- # $num = 0;
- $num = 0;
- undef $self->{'data'};
-
-
- @Results = ODBCFetch($self->{'connection'}, @Results);
- if (! (@Results = processError($self, @Results))){
- ####
- # There should be an innocuous error "No records remain"
- # This indicates no more records in the dataset
- ####
- return undef;
- }
- # Set the Dirty bit so we will go and extract data via the
- # ODBCGetData function. Otherwise use the cache.
- $self->{'Dirty'} = 1;
-
- # Return the array of field Results.
- return @Results;
-}
-
-sub GetData{
- my($self) = @_;
- my @Results;
- my $num = 0;
-
- @Results = ODBCGetData($self->{'connection'});
- if (!(@Results = processError($self, @Results))){
- return undef;
- }
- ####
- # This is a special case. Do not call processResults
- ####
- ClearError();
- foreach (@Results){
- s/ +$// if defined $_; # HACK
- $self->{'data'}->{ ${$self->{'fnames'}}[$num] } = $_;
- $num++;
- }
- # return is a hack to interface with a assoc array.
- return wantarray? (1, 1): 1;
-}
-
-####
-# See if any more ODBC Results Sets
-# Added by Brian Dunfordshore <Brian_Dunfordshore@bridge.com>
-# 96.07.10
-####
-sub MoreResults{
- my ($self) = @_;
-
- my(@Results) = ODBCMoreResults($self->{'connection'});
- return (processError($self, @Results))[0];
-}
-
-####
-# Retrieve the catalog from the current DSN
-# NOTE: All Field names are uppercase!!!
-####
-sub Catalog{
- my ($self) = shift;
- my ($Qualifier, $Owner, $Name, $Type) = @_;
- my (@Results) = ODBCTableList($self->{'connection'}, $Qualifier, $Owner, $Name, $Type);
-
- # If there was an error return 0 else 1
- return (updateResults($self, @Results) != 1);
-}
-
-####
-# Return an array of names from the catalog for the current DSN
-# TableList($Qualifier, $Owner, $Name, $Type)
-# Return: (array of names of tables)
-# NOTE: All Field names are uppercase!!!
-####
-sub TableList{
- my ($self) = shift;
- my (@Results) = @_;
- if (! scalar(@Results)){
- @Results = ("", "", "%", "TABLE");
- }
-
- if (! Catalog($self, @Results)){
- return undef;
- }
- undef @Results;
- while (FetchRow($self)){
- push(@Results, Data($self, "TABLE_NAME"));
- }
- return sort(@Results);
-}
-
-
-sub fieldnames{
- return (FieldNames(@_));
-}
-####
-# Return an array of fieldnames extracted from the current dataset
-####
-sub FieldNames { $self = shift; return @{$self->{'fnames'}}; }
-
-
-####
-# Closes this connection. This is used mostly for testing. You should
-# probably use Close().
-####
-sub ShutDown{
- my($self) = @_;
- print "\nClosing connection $self->{'connection'}...";
- $self->Close();
- print "\nDone\n";
-}
-
-####
-# Return this connection number
-####
-sub Connection{
- my($self) = @_;
- return $self->{'connection'};
-}
-
-####
-# Returns the current connections that are in use.
-####
-sub GetConnections{
- return ODBCGetConnections();
-}
-
-####
-# Set the Max Buffer Size for this connection. This determines just how much
-# ram can be allocated when a fetch() is performed that requires a HUGE amount
-# of memory. The default max is 10k and the absolute max is 100k.
-# This will probably never be used but I put it in because I noticed a fetch()
-# of a MEMO field in an Access table was something like 4Gig. Maybe I did
-# something wrong, but after checking several times I decided to impliment
-# this limit thingie.
-####
-sub SetMaxBufSize{
- my($self, $Size) = @_;
- my(@Results) = ODBCSetMaxBufSize($self->{'connection'}, $Size);
- return (processError($self, @Results))[0];
-}
-
-####
-# Returns the Max Buffer Size for this connection. See SetMaxBufSize().
-####
-sub GetMaxBufSize{
- my($self) = @_;
- my(@Results) = ODBCGetMaxBufSize($self->{'connection'});
- return (processError($self, @Results))[0];
-}
-
-
-####
-# Returns the DSN for this connection as an associative array.
-####
-sub GetDSN{
- my($self, $DSN) = @_;
- if(! ref($self)){
- $DSN = $self;
- $self = 0;
- }
- if (! $DSN){
- $self = $self->{'connection'};
- }
- my(@Results) = ODBCGetDSN($self, $DSN);
- return (processError($self, @Results));
-}
-
-####
-# Returns an associative array of $XXX{'DSN'}=Description
-####
-sub DataSources{
- my($self, $DSN) = @_;
- if(! ref $self){
- $DSN = $self;
- $self = 0;
- }
- my(@Results) = ODBCDataSources($DSN);
- return (processError($self, @Results));
-}
-
-####
-# Returns an associative array of $XXX{'Driver Name'}=Driver Attributes
-####
-sub Drivers{
- my($self) = @_;
- if(! ref $self){
- $self = 0;
- }
- my(@Results) = ODBCDrivers();
- return (processError($self, @Results));
-}
-
-####
-# Returns the number of Rows that were affected by the previous SQL command.
-####
-sub RowCount{
- my($self, $Connection) = @_;
- if (! ref($self)){
- $Connection = $self;
- $self = 0;
- }
- if (! $Connection){$Connection = $self->{'connection'};}
- my(@Results) = ODBCRowCount($Connection);
- return (processError($self, @Results))[0];
-}
-
-####
-# Returns the Statement Close Type -- how does ODBC Close a statment.
-# Types:
-# SQL_DROP
-# SQL_CLOSE
-# SQL_UNBIND
-# SQL_RESET_PARAMS
-####
-sub GetStmtCloseType{
- my($self, $Connection) = @_;
- if (! ref($self)){
- $Connection = $self;
- $self = 0;
- }
- if (! $Connection){$Connection = $self->{'connection'};}
- my(@Results) = ODBCGetStmtCloseType($Connection);
- return (processError($self, @Results));
-}
-
-####
-# Sets the Statement Close Type -- how does ODBC Close a statment.
-# Types:
-# SQL_DROP
-# SQL_CLOSE
-# SQL_UNBIND
-# SQL_RESET_PARAMS
-# Returns the newly set value.
-####
-sub SetStmtCloseType{
- my($self, $Type, $Connection) = @_;
- if (! ref($self)){
- $Connection = $Type;
- $Type = $self;
- $self = 0;
- }
- if (! $Connection){$Connection = $self->{'connection'};}
- my(@Results) = ODBCSetStmtCloseType($Connection, $Type);
- return (processError($self, @Results))[0];
-}
-
-sub ColAttributes{
- my($self, $Type, @Field) = @_;
- my(%Results, @Results, $Results, $Attrib, $Connection, $Temp);
- if (! ref($self)){
- $Type = $Field;
- $Field = $self;
- $self = 0;
- }
- $Connection = $self->{'connection'};
- if (! scalar(@Field)){ @Field = $self->fieldnames;}
- foreach $Temp (@Field){
- @Results = ODBCColAttributes($Connection, $Temp, $Type);
- ($Attrib) = processError($self, @Results);
- if (wantarray){
- $Results{$Temp} = $Attrib;
- }else{
- $Results .= "$Temp";
- }
- }
- return wantarray? %Results:$Results;
-}
-
-sub GetInfo{
- my($self, $Type) = @_;
- my($Connection, @Results);
- if(! ref $self){
- $Type = $self;
- $self = 0;
- $Connection = 0;
- }else{
- $Connection = $self->{'connection'};
- }
- @Results = ODBCGetInfo($Connection, $Type);
- return (processError($self, @Results))[0];
-}
-
-sub GetConnectOption{
- my($self, $Type) = @_;
- my(@Results);
- if(! ref $self){
- $Type = $self;
- $self = 0;
- }
- @Results = ODBCGetConnectOption($self->{'connection'}, $Type);
- return (processError($self, @Results))[0];
-}
-
-sub SetConnectOption{
- my($self, $Type, $Value) = @_;
- if(! ref $self){
- $Value = $Type;
- $Type = $self;
- $self = 0;
- }
- my(@Results) = ODBCSetConnectOption($self->{'connection'}, $Type, $Value);
- return (processError($self, @Results))[0];
-}
-
-
-sub Transact{
- my($self, $Type) = @_;
- my(@Results);
- if(! ref $self){
- $Type = $self;
- $self = 0;
- }
- @Results = ODBCTransact($self->{'connection'}, $Type);
- return (processError($self, @Results))[0];
-}
-
-
-sub SetPos{
- my($self, @Results) = @_;
- @Results = ODBCSetPos($self->{'connection'}, @Results);
- $self->{'Dirty'} = 1;
- return (processError($self, @Results))[0];
-}
-
-sub ConfigDSN{
- my($self) = shift @_;
- my($Type, $Connection);
- if(! ref $self){
- $Type = $self;
- $Connection = 0;
- $self = 0;
- }else{
- $Type = shift @_;
- $Connection = $self->{'connection'};
- }
- my($Driver, @Attributes) = @_;
- @Results = ODBCConfigDSN($Connection, $Type, $Driver, @Attributes);
- return (processError($self, @Results))[0];
-}
-
-
-sub Version{
- my($self, @Packages) = @_;
- my($Temp, @Results);
- if (! ref($self)){
- push(@Packages, $self);
- }
- my($ExtName, $ExtVersion) = Info();
- if (! scalar(@Packages)){
- @Packages = ("ODBC.PM", "ODBC.PLL");
- }
- foreach $Temp (@Packages){
- if ($Temp =~ /pll/i){
- push(@Results, "ODBC.PM:$Win32::ODBC::Version");
- }elsif ($Temp =~ /pm/i){
- push(@Results, "ODBC.PLL:$ExtVersion");
- }
- }
- return @Results;
-}
-
-
-sub SetStmtOption{
- my($self, $Option, $Value) = @_;
- if(! ref $self){
- $Value = $Option;
- $Option = $self;
- $self = 0;
- }
- my(@Results) = ODBCSetStmtOption($self->{'connection'}, $Option, $Value);
- return (processError($self, @Results))[0];
-}
-
-sub GetStmtOption{
- my($self, $Type) = @_;
- if(! ref $self){
- $Type = $self;
- $self = 0;
- }
- my(@Results) = ODBCGetStmtOption($self->{'connection'}, $Type);
- return (processError($self, @Results))[0];
-}
-
-sub GetFunctions{
- my($self, @Results)=@_;
- @Results = ODBCGetFunctions($self->{'connection'}, @Results);
- return (processError($self, @Results));
-}
-
-sub DropCursor{
- my($self) = @_;
- my(@Results) = ODBCDropCursor($self->{'connection'});
- return (processError($self, @Results))[0];
-}
-
-sub SetCursorName{
- my($self, $Name) = @_;
- my(@Results) = ODBCSetCursorName($self->{'connection'}, $Name);
- return (processError($self, @Results))[0];
-}
-
-sub GetCursorName{
- my($self) = @_;
- my(@Results) = ODBCGetCursorName($self->{'connection'});
- return (processError($self, @Results))[0];
-}
-
-sub GetSQLState{
- my($self) = @_;
- my(@Results) = ODBCGetSQLState($self->{'connection'});
- return (processError($self, @Results))[0];
-}
-
-
-# ----------- R e s u l t P r o c e s s i n g F u n c t i o n s ----------
-####
-# Generic processing of data into associative arrays
-####
-sub updateResults{
- my ($self, $Error, @Results) = @_;
-
- undef %{$self->{'field'}};
-
- ClearError($self);
- if ($Error){
- SetError($self, $Results[0], $Results[1]);
- return ($Error);
- }
-
- @{$self->{'fnames'}} = @Results;
-
- foreach (0..$#{$self->{'fnames'}}){
- s/ +$//;
- $self->{'field'}->{${$self->{'fnames'}}[$_]} = $_;
- }
- return undef;
-}
-
-# ----------------------------------------------------------------------------
-# ----------------- D e b u g g i n g F u n c t i o n s --------------------
-
-sub Debug{
- my($self, $iDebug, $File) = @_;
- my(@Results);
- if (! ref($self)){
- if (defined $self){
- $File = $iDebug;
- $iDebug = $self;
- }
- $Connection = 0;
- $self = 0;
- }else{
- $Connection = $self->{'connection'};
- }
- push(@Results, ($Connection, $iDebug));
- push(@Results, $File) if ($File ne "");
- @Results = ODBCDebug(@Results);
- return (processError($self, @Results))[0];
-}
-
-####
-# Prints out the current dataset (used mostly for testing)
-####
-sub DumpData {
- my($self) = @_; my($f, $goo);
-
- # Changed by JOC 06-Apr-96
- # print "\nDumping Data for connection: $conn->{'connection'}\n";
- print "\nDumping Data for connection: $self->{'connection'}\n";
- print "Error: \"";
- print $self->Error();
- print "\"\n";
- if (! $self->Error()){
- foreach $f ($self->FieldNames){
- print $f . " ";
- $goo .= "-" x length($f);
- $goo .= " ";
- }
- print "\n$goo\n";
- while ($self->FetchRow()){
- foreach $f ($self->FieldNames){
- print $self->Data($f) . " ";
- }
- print "\n";
- }
- }
-}
-
-sub DumpError{
- my($self) = @_;
- my($ErrNum, $ErrText, $ErrConn);
- my($Temp);
-
- print "\n---------- Error Report: ----------\n";
- if (ref $self){
- ($ErrNum, $ErrText, $ErrConn) = $self->Error();
- ($Temp = $self->GetDSN()) =~ s/.*DSN=(.*?);.*/$1/i;
- print "Errors for \"$Temp\" on connection " . $self->{'connection'} . ":\n";
- }else{
- ($ErrNum, $ErrText, $ErrConn) = Error();
- print "Errors for the package:\n";
- }
-
- print "Connection Number: $ErrConn\nError number: $ErrNum\nError message: \"$ErrText\"\n";
- print "-----------------------------------\n";
-
-}
-
-####
-# Submit an SQL statement and print data about it (used mostly for testing)
-####
-sub Run{
- my($self, $Sql) = @_;
-
- print "\nExcecuting connection $self->{'connection'}\nsql statement: \"$Sql\"\n";
- $self->Sql($Sql);
- print "Error: \"";
- print $self->error;
- print "\"\n";
- print "--------------------\n\n";
-}
-
-# ----------------------------------------------------------------------------
-# ----------- E r r o r P r o c e s s i n g F u n c t i o n s ------------
-
-####
-# Process Errors returned from a call to ODBCxxxx().
-# It is assumed that the Win32::ODBC function returned the following structure:
-# ($ErrorNumber, $ResultsText, ...)
-# $ErrorNumber....0 = No Error
-# >0 = Error Number
-# $ResultsText.....if no error then this is the first Results element.
-# if error then this is the error text.
-####
-sub processError{
- my($self, $Error, @Results) = @_;
- if ($Error){
- SetError($self, $Results[0], $Results[1]);
- undef @Results;
- }
- return @Results;
-}
-
-####
-# Return the last recorded error message
-####
-sub error{
- return (Error(@_));
-}
-
-sub Error{
- my($self) = @_;
- if(ref($self)){
- if($self->{'ErrNum'}){
- my($State) = ODBCGetSQLState($self->{'connection'});
- return (wantarray)? ($self->{'ErrNum'}, $self->{'ErrText'}, $self->{'connection'}, $State) :"[$self->{'ErrNum'}] [$self->{'connection'}] [$State] \"$self->{'ErrText'}\"";
- }
- }elsif ($ErrNum){
- return (wantarray)? ($ErrNum, $ErrText, $ErrConn):"[$ErrNum] [$ErrConn] \"$ErrText\"";
- }
- return undef
-}
-
-####
-# SetError:
-# Assume that if $self is not a reference then it is just a placeholder
-# and should be ignored.
-####
-sub SetError{
- my($self, $Num, $Text, $Conn) = @_;
- if (ref $self){
- $self->{'ErrNum'} = $Num;
- $self->{'ErrText'} = $Text;
- $Conn = $self->{'connection'} if ! $Conn;
- }
- $ErrNum = $Num;
- $ErrText = $Text;
-
- ####
- # Test Section Begin
- ####
-# $! = ($Num, $Text);
- ####
- # Test Section End
- ####
-
- $ErrConn = $Conn;
-}
-
-sub ClearError{
- my($self, $Num, $Text) = @_;
- if (ref $self){
- undef $self->{'ErrNum'};
- undef $self->{'ErrText'};
- }else{
- undef $ErrConn;
- undef $ErrNum;
- undef $ErrText;
- }
- ODBCCleanError();
- return 1;
-}
-
-
-sub GetError{
- my($self, $Connection) = @_;
- my(@Results);
- if (! ref($self)){
- $Connection = $self;
- $self = 0;
- }else{
- if (! defined($Connection)){
- $Connection = $self->{'connection'};
- }
- }
-
- @Results = ODBCGetError($Connection);
- return @Results;
-}
-
-
-
-
-# ----------------------------------------------------------------------------
-# ------------------ A U T O L O A D F U N C T I O N -----------------------
-
-sub AUTOLOAD {
- # This AUTOLOAD is used to 'autoload' constants from the constant()
- # XS function. If a constant is not found then control is passed
- # to the AUTOLOAD in AutoLoader.
-
- my($constname);
- ($constname = $AUTOLOAD) =~ s/.*:://;
- #reset $! to zero to reset any current errors.
- local $! = 0;
- $val = constant($constname);
-
- if ($! != 0) {
- if ($! =~ /Invalid/) {
- $AutoLoader::AUTOLOAD = $AUTOLOAD;
- goto &AutoLoader::AUTOLOAD;
- }
- else {
-
- # Added by JOC 06-APR-96
- # $pack = 0;
- $pack = 0;
- ($pack,$file,$line) = caller;
- print "Your vendor has not defined Win32::ODBC macro $constname, used in $file at line $line.";
- }
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-
- # --------------------------------------------------------------
- #
- #
- # Make sure that we shutdown ODBC and free memory even if we are
- # using perlis.dll on Win32 platform!
-END{
-# ODBCShutDown() unless $CacheConnection;
-}
-
-
-bootstrap Win32::ODBC;
-
-# Preloaded methods go here.
-
-# Autoload methods go after __END__, and are processed by the autosplit program.
-
-1;
-__END__
-
-=head1 NAME
-
-Win32::ODBC - ODBC Extension for Win32
-
-=head1 SYNOPSIS
-
-To use this module, include the following statement at the top of your
-script:
-
- use Win32::ODBC;
-
-Next, create a data connection to your DSN:
-
- $Data = new Win32::ODBC("MyDSN");
-
-B<NOTE>: I<MyDSN> can be either the I<DSN> as defined in the ODBC
-Administrator, I<or> it can be an honest-to-God I<DSN Connect String>.
-
- Example: "DSN=My Database;UID=Brown Cow;PWD=Moo;"
-
-You should check to see if C<$Data> is indeed defined, otherwise there
-has been an error.
-
-You can now send SQL queries and retrieve info to your heart's
-content! See the description of the methods provided by this module
-below and also the file F<TEST.PL> as referred to in L<INSTALLATION
-NOTES> to see how it all works.
-
-Finally, B<MAKE SURE> that you close your connection when you are
-finished:
-
- $Data->Close();
-
-=head1 DESCRIPTION
-
-=head2 Background
-
-This is a hack of Dan DeMaggio's <dmag@umich.edu> F<NTXS.C> ODBC
-implementation. I have recoded and restructured most of it including
-most of the F<ODBC.PM> package, but its very core is still based on
-Dan's code (thanks Dan!).
-
-The history of this extension is found in the file F<HISTORY.TXT> that
-comes with the original archive (see L<INSTALLATION NOTES> below).
-
-=head2 Benefits
-
-And what are the benefits of this module?
-
-=over
-
-=item *
-
-The number of ODBC connections is limited by memory and ODBC itself
-(have as many as you want!).
-
-=item *
-
-The working limit for the size of a field is 10,240 bytes, but you can
-increase that limit (if needed) to a max of 2,147,483,647 bytes. (You
-can always recompile to increase the max limit.)
-
-=item *
-
-You can open a connection by either specifing a DSN or a connection
-string!
-
-=item *
-
-You can open and close the connections in any order!
-
-=item *
-
-Other things that I can not think of right now... :)
-
-=back
-
-=head1 CONSTANTS
-
-This package defines a number of constants. You may refer to each of
-these constants using the notation C<ODBC::xxxxx>, where C<xxxxx> is
-the constant.
-
-Example:
-
- print ODBC::SQL_SQL_COLUMN_NAME, "\n";
-
-=head1 SPECIAL NOTATION
-
-For the method documentation that follows, an B<*> following the
-method parameters indicates that that method is new or has been
-modified for this version.
-
-=head1 CONSTRUCTOR
-
-=over
-
-=item new ( ODBC_OBJECT | DSN [, (OPTION1, VALUE1), (OPTION2, VALUE2) ...] )
-*
-
-Creates a new ODBC connection based on C<DSN>, or, if you specify an
-already existing ODBC object, then a new ODBC object will be created
-but using the ODBC Connection specified by C<ODBC_OBJECT>. (The new
-object will be a new I<hstmt> using the I<hdbc> connection in
-C<ODBC_OBJECT>.)
-
-C<DSN> is I<Data Source Name> or a proper C<ODBCDriverConnect> string.
-
-You can specify SQL Connect Options that are implemented before the
-actual connection to the DSN takes place. These option/values are the
-same as specified in C<GetConnectOption>/C<SetConnectOption> (see
-below) and are defined in the ODBC API specs.
-
-Returns a handle to the database on success, or I<undef> on failure.
-
-=back
-
-=head1 METHODS
-
-=over
-
-=item Catalog ( QUALIFIER, OWNER, NAME, TYPE )
-
-Tells ODBC to create a data set that contains table information about
-the DSN. Use C<Fetch> and C<Data> or C<DataHash> to retrieve the data.
-The returned format is:
-
- [Qualifier] [Owner] [Name] [Type]
-
-Returns I<true> on error.
-
-=item ColAttributes ( ATTRIBUTE [, FIELD_NAMES ] )
-
-Returns the attribute C<ATTRIBUTE> on each of the fields in the list
-C<FIELD_NAMES> in the current record set. If C<FIELD_NAMES> is empty,
-then all fields are assumed. The attributes are returned as an
-associative array.
-
-=item ConfigDSN ( OPTION, DRIVER, ATTRIBUTE1 [, ATTRIBUTE2, ATTRIBUTE3, ...
-] )
-
-Configures a DSN. C<OPTION> takes on one of the following values:
-
- ODBC_ADD_DSN.......Adds a new DSN.
- ODBC_MODIFY_DSN....Modifies an existing DSN.
- ODBC_REMOVE_DSN....Removes an existing DSN.
-
- ODBC_ADD_SYS_DSN.......Adds a new System DSN.
- ODBC_MODIFY_SYS_DSN....Modifies an existing System DSN.
- ODBC_REMOVE_SYS_DSN....Removes an existing System DSN.
-
-You must specify the driver C<DRIVER> (which can be retrieved by using
-C<DataSources> or C<Drivers>).
-
-C<ATTRIBUTE1> B<should> be I<"DSN=xxx"> where I<xxx> is the name of
-the DSN. Other attributes can be any DSN attribute such as:
-
- "UID=Cow"
- "PWD=Moo"
- "Description=My little bitty Data Source Name"
-
-Returns I<true> on success, I<false> on failure.
-
-B<NOTE 1>: If you use C<ODBC_ADD_DSN>, then you must include at least
-I<"DSN=xxx"> and the location of the database.
-
-Example: For MS Access databases, you must specify the
-I<DatabaseQualifier>:
-
- "DBQ=c:\\...\\MyDatabase.mdb"
-
-B<NOTE 2>: If you use C<ODBC_MODIFY_DSN>, then you need only specify
-the I<"DNS=xxx"> attribute. Any other attribute you include will be
-changed to what you specify.
-
-B<NOTE 3>: If you use C<ODBC_REMOVE_DSN>, then you need only specify
-the I<"DSN=xxx"> attribute.
-
-=item Connection ()
-
-Returns the connection number associated with the ODBC connection.
-
-=item Close ()
-
-Closes the ODBC connection. No return value.
-
-=item Data ( [ FIELD_NAME ] )
-
-Returns the contents of column name C<FIELD_NAME> or the current row
-(if nothing is specified).
-
-=item DataHash ( [ FIELD1, FIELD2, ... ] )
-
-Returns the contents for C<FIELD1, FIELD2, ...> or the entire row (if
-nothing is specified) as an associative array consisting of:
-
- {Field Name} => Field Data
-
-=item DataSources ()
-
-Returns an associative array of Data Sources and ODBC remarks about them.
-They are returned in the form of:
-
- $ArrayName{'DSN'}=Driver
-
-where I<DSN> is the Data Source Name and ODBC Driver used.
-
-=item Debug ( [ 1 | 0 ] )
-
-Sets the debug option to on or off. If nothing is specified, then
-nothing is changed.
-
-Returns the debugging value (I<1> or I<0>).
-
-=item Drivers ()
-
-Returns an associative array of ODBC Drivers and their attributes.
-They are returned in the form of:
-
- $ArrayName{'DRIVER'}=Attrib1;Attrib2;Attrib3;...
-
-where I<DRIVER> is the ODBC Driver Name and I<AttribX> are the
-driver-defined attributes.
-
-=item DropCursor ( [ CLOSE_TYPE ] )
-
-Drops the cursor associated with the ODBC object. This forces the
-cursor to be deallocated. This overrides C<SetStmtCloseType>, but the
-ODBC object does not lose the C<StmtCloseType> setting. C<CLOSE_TYPE>
-can be any valid C<SmtpCloseType> and will perform a close on the stmt
-using the specified close type.
-
-Returns I<true> on success, I<false> on failure.
-
-=item DumpData ()
-
-Dumps to the screen the fieldnames and all records of the current data
-set. Used primarily for debugging. No return value.
-
-=item Error ()
-
-Returns the last encountered error. The returned value is context
-dependent:
-
-If called in a I<scalar> context, then a I<3-element array> is
-returned:
-
- ( ERROR_NUMBER, ERROR_TEXT, CONNECTION_NUMBER )
-
-If called in a I<string> context, then a I<string> is returned:
-
- "[ERROR_NUMBER] [CONNECTION_NUMBER] [ERROR_TEXT]"
-
-If debugging is on then two more variables are returned:
-
- ( ..., FUNCTION, LEVEL )
-
-where C<FUNCTION> is the name of the function in which the error
-occurred, and C<LEVEL> represents extra information about the error
-(usually the location of the error).
-
-=item FetchRow ( [ ROW [, TYPE ] ] )
-
-Retrieves the next record from the keyset. When C<ROW> and/or C<TYPE>
-are specified, the call is made using C<SQLExtendedFetch> instead of
-C<SQLFetch>.
-
-B<NOTE 1>: If you are unaware of C<SQLExtendedFetch> and its
-implications, stay with just regular C<FetchRow> with no parameters.
-
-B<NOTE 2>: The ODBC API explicitly warns against mixing calls to
-C<SQLFetch> and C<SQLExtendedFetch>; use one or the other but not
-both.
-
-If I<ROW> is specified, it moves the keyset B<RELATIVE> C<ROW> number
-of rows.
-
-If I<ROW> is specified and C<TYPE> is B<not>, then the type used is
-B<RELATIVE>.
-
-Returns I<true> when another record is available to read, and I<false>
-when there are no more records.
-
-=item FieldNames ()
-
-Returns an array of fieldnames found in the current data set. There is
-no guarantee on order.
-
-=item GetConnections ()
-
-Returns an array of connection numbers showing what connections are
-currently open.
-
-=item GetConnectOption ( OPTION )
-
-Returns the value of the specified connect option C<OPTION>. Refer to
-ODBC documentation for more information on the options and values.
-
-Returns a string or scalar depending upon the option specified.
-
-=item GetCursorName ()
-
-Returns the name of the current cursor as a string or I<undef>.
-
-=item GetData ()
-
-Retrieves the current row from the dataset. This is not generally
-used by users; it is used internally.
-
-Returns an array of field data where the first element is either
-I<false> (if successful) and I<true> (if B<not> successful).
-
-=item getDSN ( [ DSN ] )
-
-Returns an associative array indicating the configuration for the
-specified DSN.
-
-If no DSN is specified then the current connection is used.
-
-The returned associative array consists of:
-
- keys=DSN keyword; values=Keyword value. $Data{$Keyword}=Value
-
-=item GetFunctions ( [ FUNCTION1, FUNCTION2, ... ] )
-
-Returns an associative array indicating the ability of the ODBC Driver
-to support the specified functions. If no functions are specified,
-then a 100 element associative array is returned containing all
-possible functions and their values.
-
-C<FUNCTION> must be in the form of an ODBC API constant like
-C<SQL_API_SQLTRANSACT>.
-
-The returned array will contain the results like:
-
- $Results{SQL_API_SQLTRANSACT}=Value
-
-Example:
-
- $Results = $O->GetFunctions(
- $O->SQL_API_SQLTRANSACT,
- SQL_API_SQLSETCONNECTOPTION
- );
- $ConnectOption = $Results{SQL_API_SQLSETCONNECTOPTION};
- $Transact = $Results{SQL_API_SQLTRANSACT};
-
-=item GetInfo ( OPTION )
-
-Returns a string indicating the value of the particular
-option specified.
-
-=item GetMaxBufSize ()
-
-Returns the current allocated limit for I<MaxBufSize>. For more info,
-see C<SetMaxBufSize>.
-
-=item GetSQLState () *
-
-Returns a string indicating the SQL state as reported by ODBC. The SQL
-state is a code that the ODBC Manager or ODBC Driver returns after the
-execution of a SQL function. This is helpful for debugging purposes.
-
-=item GetStmtCloseType ( [ CONNECTION ] )
-
-Returns a string indicating the type of closure that will be used
-everytime the I<hstmt> is freed. See C<SetStmtCloseType> for details.
-
-By default, the connection of the current object will be used. If
-C<CONNECTION> is a valid connection number, then it will be used.
-
-=item GetStmtOption ( OPTION )
-
-Returns the value of the specified statement option C<OPTION>. Refer
-to ODBC documentation for more information on the options and values.
-
-Returns a string or scalar depending upon the option specified.
-
-=item MoreResults ()
-
-This will report whether there is data yet to be retrieved from the
-query. This can happen if the query was a multiple select.
-
-Example:
-
- "SELECT * FROM [foo] SELECT * FROM [bar]"
-
-B<NOTE>: Not all drivers support this.
-
-Returns I<1> if there is more data, I<undef> otherwise.
-
-=item RowCount ( CONNECTION )
-
-For I<UPDATE>, I<INSERT> and I<DELETE> statements, the returned value
-is the number of rows affected by the request or I<-1> if the number
-of affected rows is not available.
-
-B<NOTE 1>: This function is not supported by all ODBC drivers! Some
-drivers do support this but not for all statements (e.g., it is
-supported for I<UPDATE>, I<INSERT> and I<DELETE> commands but not for
-the I<SELECT> command).
-
-B<NOTE 2>: Many data sources cannot return the number of rows in a
-result set before fetching them; for maximum interoperability,
-applications should not rely on this behavior.
-
-Returns the number of affected rows, or I<-1> if not supported by the
-driver in the current context.
-
-=item Run ( SQL )
-
-Executes the SQL command B<SQL> and dumps to the screen info about
-it. Used primarily for debugging.
-
-No return value.
-
-=item SetConnectOption ( OPTION ) *
-
-Sets the value of the specified connect option B<OPTION>. Refer to
-ODBC documentation for more information on the options and values.
-
-Returns I<true> on success, I<false> otherwise.
-
-=item SetCursorName ( NAME ) *
-
-Sets the name of the current cursor.
-
-Returns I<true> on success, I<false> otherwise.
-
-=item SetPos ( ROW [, OPTION, LOCK ] ) *
-
-Moves the cursor to the row C<ROW> within the current keyset (B<not>
-the current data/result set).
-
-Returns I<true> on success, I<false> otherwise.
-
-=item SetMaxBufSize ( SIZE )
-
-This sets the I<MaxBufSize> for a particular connection. This will
-most likely never be needed but...
-
-The amount of memory that is allocated to retrieve the field data of a
-record is dynamic and changes when it need to be larger. I found that
-a memo field in an MS Access database ended up requesting 4 Gig of
-space. This was a bit much so there is an imposed limit (2,147,483,647
-bytes) that can be allocated for data retrieval.
-
-Since it is possible that someone has a database with field data
-greater than 10,240, you can use this function to increase the limit
-up to a ceiling of 2,147,483,647 (recompile if you need more).
-
-Returns the max number of bytes.
-
-=item SetStmtCloseType ( TYPE [, CONNECTION ] )
-
-Sets a particular I<hstmt> close type for the connection. This is the
-same as C<ODBCFreeStmt(hstmt, TYPE)>. By default, the connection of
-the current object will be used. If C<CONNECTION> is a valid
-connection number, then it will be used.
-
-C<TYPE> may be one of:
-
- SQL_CLOSE
- SQL_DROP
- SQL_UNBIND
- SQL_RESET_PARAMS
-
-Returns a string indicating the newly set type.
-
-=item SetStmtOption ( OPTION ) *
-
-Sets the value of the specified statement option C<OPTION>. Refer to
-ODBC documentation for more information on the options and values.
-
-Returns I<true> on success, I<false> otherwise.
-
-=item ShutDown ()
-
-Closes the ODBC connection and dumps to the screen info about
-it. Used primarily for debugging.
-
-No return value.
-
-=item Sql ( SQL_STRING )
-
-Executes the SQL command C<SQL_STRING> on the current connection.
-
-Returns I<?> on success, or an error number on failure.
-
-=item TableList ( QUALIFIER, OWNER, NAME, TYPE )
-
-Returns the catalog of tables that are available in the DSN. For an
-unknown parameter, just specify the empty string I<"">.
-
-Returns an array of table names.
-
-=item Transact ( TYPE ) *
-
-Forces the ODBC connection to perform a I<rollback> or I<commit>
-transaction.
-
-C<TYPE> may be one of:
-
- SQL_COMMIT
- SQL_ROLLBACK
-
-B<NOTE>: This only works with ODBC drivers that support transactions.
-Your driver supports it if I<true> is returned from:
-
- $O->GetFunctions($O->SQL_API_SQLTRANSACT)[1]
-
-(See C<GetFunctions> for more details.)
-
-Returns I<true> on success, I<false> otherwise.
-
-=item Version ( PACKAGES )
-
-Returns an array of version numbers for the requested packages
-(F<ODBC.pm> or F<ODBC.PLL>). If the list C<PACKAGES> is empty, then
-all version numbers are returned.
-
-=back
-
-=head1 LIMITATIONS
-
-What known problems does this thing have?
-
-=over
-
-=item *
-
-If the account under which the process runs does not have write
-permission on the default directory (for the process, not the ODBC
-DSN), you will probably get a runtime error during a
-C<SQLConnection>. I don't think that this is a problem with the code,
-but more like a problem with ODBC. This happens because some ODBC
-drivers need to write a temporary file. I noticed this using the MS
-Jet Engine (Access Driver).
-
-=item *
-
-This module has been neither optimized for speed nor optimized for
-memory consumption.
-
-=back
-
-=head1 INSTALLATION NOTES
-
-If you wish to use this module with a build of Perl other than
-ActivePerl, you may wish to fetch the original source distribution for
-this module at:
-
- ftp://ftp.roth.net:/pub/ntperl/ODBC/970208/Bin/Win32_ODBC_Build_CORE.zip
-
-or one of the other archives at that same location. See the included
-README for hints on installing this module manually, what to do if you
-get a I<parse exception>, and a pointer to a test script for this
-module.
-
-=head1 OTHER DOCUMENTATION
-
-Find a FAQ for Win32::ODBC at:
-
- http://www.roth.net/odbc/odbcfaq.htm
-
-=head1 AUTHOR
-
-Dave Roth <rothd@roth.net>
-
-=head1 CREDITS
-
-Based on original code by Dan DeMaggio <dmag@umich.edu>
-
-=head1 DISCLAIMER
-
-I do not guarantee B<ANYTHING> with this package. If you use it you
-are doing so B<AT YOUR OWN RISK>! I may or may not support this
-depending on my time schedule.
-
-=head1 HISTORY
-
-Last Modified 1999.09.25.
-
-=head1 COPYRIGHT
-
-Copyright (c) 1996-1998 Dave Roth. All rights reserved.
-
-Courtesy of Roth Consulting: http://www.roth.net/consult/
-
-Use under GNU General Public License. Details can be found at:
-http://www.gnu.org/copyleft/gpl.html
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Win32/PerfLib.pm b/Master/tlpkg/tlperl/lib/Win32/PerfLib.pm
deleted file mode 100644
index 2b773d68f4b..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/PerfLib.pm
+++ /dev/null
@@ -1,538 +0,0 @@
-package Win32::PerfLib;
-
-use strict;
-use Carp;
-use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD);
-
-require Exporter;
-require DynaLoader;
-require AutoLoader;
-
-@ISA = qw(Exporter DynaLoader);
-
-@EXPORT = qw(
- PERF_100NSEC_MULTI_TIMER
- PERF_100NSEC_MULTI_TIMER_INV
- PERF_100NSEC_TIMER
- PERF_100NSEC_TIMER_INV
- PERF_AVERAGE_BASE
- PERF_AVERAGE_BULK
- PERF_AVERAGE_TIMER
- PERF_COUNTER_BASE
- PERF_COUNTER_BULK_COUNT
- PERF_COUNTER_COUNTER
- PERF_COUNTER_DELTA
- PERF_COUNTER_ELAPSED
- PERF_COUNTER_FRACTION
- PERF_COUNTER_HISTOGRAM
- PERF_COUNTER_HISTOGRAM_TYPE
- PERF_COUNTER_LARGE_DELTA
- PERF_COUNTER_LARGE_QUEUELEN_TYPE
- PERF_COUNTER_LARGE_RAWCOUNT
- PERF_COUNTER_LARGE_RAWCOUNT_HEX
- PERF_COUNTER_MULTI_BASE
- PERF_COUNTER_MULTI_TIMER
- PERF_COUNTER_MULTI_TIMER_INV
- PERF_COUNTER_NODATA
- PERF_COUNTER_QUEUELEN
- PERF_COUNTER_QUEUELEN_TYPE
- PERF_COUNTER_RATE
- PERF_COUNTER_RAWCOUNT
- PERF_COUNTER_RAWCOUNT_HEX
- PERF_COUNTER_TEXT
- PERF_COUNTER_TIMER
- PERF_COUNTER_TIMER_INV
- PERF_COUNTER_VALUE
- PERF_DATA_REVISION
- PERF_DATA_VERSION
- PERF_DELTA_BASE
- PERF_DELTA_COUNTER
- PERF_DETAIL_ADVANCED
- PERF_DETAIL_EXPERT
- PERF_DETAIL_NOVICE
- PERF_DETAIL_WIZARD
- PERF_DISPLAY_NOSHOW
- PERF_DISPLAY_NO_SUFFIX
- PERF_DISPLAY_PERCENT
- PERF_DISPLAY_PER_SEC
- PERF_DISPLAY_SECONDS
- PERF_ELAPSED_TIME
- PERF_INVERSE_COUNTER
- PERF_MULTI_COUNTER
- PERF_NO_INSTANCES
- PERF_NO_UNIQUE_ID
- PERF_NUMBER_DECIMAL
- PERF_NUMBER_DEC_1000
- PERF_NUMBER_HEX
- PERF_OBJECT_TIMER
- PERF_RAW_BASE
- PERF_RAW_FRACTION
- PERF_SAMPLE_BASE
- PERF_SAMPLE_COUNTER
- PERF_SAMPLE_FRACTION
- PERF_SIZE_DWORD
- PERF_SIZE_LARGE
- PERF_SIZE_VARIABLE_LEN
- PERF_SIZE_ZERO
- PERF_TEXT_ASCII
- PERF_TEXT_UNICODE
- PERF_TIMER_100NS
- PERF_TIMER_TICK
- PERF_TYPE_COUNTER
- PERF_TYPE_NUMBER
- PERF_TYPE_TEXT
- PERF_TYPE_ZERO
- );
-
-$VERSION = '0.05';
-
-sub AUTOLOAD {
-
- my $constname;
- ($constname = $AUTOLOAD) =~ s/.*:://;
- local $! = 0;
- my $val = constant($constname);
- if ($! != 0) {
- if ($! =~ /Invalid/) {
- $AutoLoader::AUTOLOAD = $AUTOLOAD;
- goto &AutoLoader::AUTOLOAD;
- }
- else {
- croak "Your vendor has not defined Win32::PerfLib macro $constname";
- }
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-bootstrap Win32::PerfLib $VERSION;
-
-# Preloaded methods go here.
-
-sub new
-{
- my $proto = shift;
- my $class = ref($proto) || $proto;
- my $comp = shift;
- my $handle;
- my $self = {};
- if(PerfLibOpen($comp,$handle))
- {
- $self->{handle} = $handle;
- bless $self, $class;
- return $self;
- }
- else
- {
- return undef;
- }
-
-}
-
-sub Close
-{
- my $self = shift;
- return PerfLibClose($self->{handle});
-}
-
-sub DESTROY
-{
- my $self = shift;
- if(!PerfLibClose($self->{handle}))
- {
- croak "Error closing handle!\n";
- }
-}
-
-sub GetCounterNames
-{
- my($machine,$href) = @_;
- if(ref $href ne "HASH")
- {
- croak("usage: Win32::PerfLib::GetCounterNames(machine,hashRef)\n");
- }
- my($data,@data,$num,$name);
- my $retval = PerfLibGetNames($machine,$data);
- if($retval)
- {
- @data = split(/\0/, $data);
- while(@data)
- {
- $num = shift @data;
- $name = shift @data;
- $href->{$num} = $name;
- }
- }
- $retval;
-}
-
-sub GetCounterHelp
-{
- my($machine,$href) = @_;
- if(ref $href ne "HASH")
- {
- croak("usage: Win32::PerfLib::GetCounterHelp(machine,hashRef)\n");
- }
- my($data,@data,$num,$name);
- my $retval = PerfLibGetHelp($machine,$data);
- if($retval)
- {
- @data = split(/\0/, $data);
- while(@data)
- {
- $num = shift @data;
- $name = shift @data;
- $href->{$num} = $name;
- }
- }
- $retval;
-}
-
-sub GetObjectList
-{
- my $self = shift;
- my $object = shift;
- my $data = shift;
- if(ref $data ne "HASH")
- {
- croak("reference isn't a hash reference!\n");
- }
- return PerfLibGetObjects($self->{handle}, $object, $data);
-}
-
-sub GetCounterType
-{
- my $type = shift;
- my $retval;
- if( &Win32::PerfLib::PERF_100NSEC_MULTI_TIMER == $type )
- {
- $retval = "PERF_100NSEC_MULTI_TIMER";
- }
- elsif( &Win32::PerfLib::PERF_100NSEC_MULTI_TIMER_INV == $type )
- {
- $retval = "PERF_100NSEC_MULTI_TIMER_INV";
- }
- elsif( &Win32::PerfLib::PERF_100NSEC_TIMER == $type )
- {
- $retval = "PERF_100NSEC_TIMER";
- }
- elsif( &Win32::PerfLib::PERF_100NSEC_TIMER_INV == $type )
- {
- $retval = "PERF_100NSEC_TIMER_INV";
- }
- elsif( &Win32::PerfLib::PERF_AVERAGE_BASE == $type )
- {
- $retval = "PERF_AVERAGE_BASE";
- }
- elsif( &Win32::PerfLib::PERF_AVERAGE_BULK == $type )
- {
- $retval = "PERF_AVERAGE_BULK";
- }
- elsif( &Win32::PerfLib::PERF_AVERAGE_TIMER == $type )
- {
- $retval = "PERF_AVERAGE_TIMER";
- }
- elsif( &Win32::PerfLib::PERF_COUNTER_BULK_COUNT == $type )
- {
- $retval = "PERF_COUNTER_BULK_COUNT";
- }
- elsif( &Win32::PerfLib::PERF_COUNTER_COUNTER == $type )
- {
- $retval = "PERF_COUNTER_COUNTER";
- }
- elsif( &Win32::PerfLib::PERF_COUNTER_DELTA == $type )
- {
- $retval = "PERF_COUNTER_DELTA";
- }
- elsif( &Win32::PerfLib::PERF_COUNTER_LARGE_DELTA == $type )
- {
- $retval = "PERF_COUNTER_LARGE_DELTA";
- }
- elsif( &Win32::PerfLib::PERF_COUNTER_LARGE_QUEUELEN_TYPE == $type )
- {
- $retval = "PERF_COUNTER_LARGE_QUEUELEN_TYPE";
- }
- elsif( &Win32::PerfLib::PERF_COUNTER_LARGE_RAWCOUNT == $type )
- {
- $retval = "PERF_COUNTER_LARGE_RAWCOUNT";
- }
- elsif( &Win32::PerfLib::PERF_COUNTER_LARGE_RAWCOUNT_HEX == $type )
- {
- $retval = "PERF_COUNTER_LARGE_RAWCOUNT_HEX";
- }
- elsif( &Win32::PerfLib::PERF_COUNTER_MULTI_BASE == $type )
- {
- $retval = "PERF_COUNTER_MULTI_BASE";
- }
- elsif( &Win32::PerfLib::PERF_COUNTER_MULTI_TIMER == $type )
- {
- $retval = "PERF_COUNTER_MULTI_TIMER";
- }
- elsif( &Win32::PerfLib::PERF_COUNTER_MULTI_TIMER_INV == $type )
- {
- $retval = "PERF_COUNTER_MULTI_TIMER_INV";
- }
- elsif( &Win32::PerfLib::PERF_COUNTER_NODATA == $type )
- {
- $retval = "PERF_COUNTER_NODATA";
- }
- elsif( &Win32::PerfLib::PERF_COUNTER_QUEUELEN_TYPE == $type )
- {
- $retval = "PERF_COUNTER_QUEUELEN_TYPE";
- }
- elsif( &Win32::PerfLib::PERF_COUNTER_RAWCOUNT == $type )
- {
- $retval = "PERF_COUNTER_RAWCOUNT";
- }
- elsif( &Win32::PerfLib::PERF_COUNTER_RAWCOUNT_HEX == $type )
- {
- $retval = "PERF_COUNTER_RAWCOUNT_HEX";
- }
- elsif( &Win32::PerfLib::PERF_COUNTER_TEXT == $type )
- {
- $retval = "PERF_COUNTER_TEXT";
- }
- elsif( &Win32::PerfLib::PERF_COUNTER_TIMER == $type )
- {
- $retval = "PERF_COUNTER_TIMER";
- }
- elsif( &Win32::PerfLib::PERF_COUNTER_TIMER_INV == $type )
- {
- $retval = "PERF_COUNTER_TIMER_INV";
- }
- elsif( &Win32::PerfLib::PERF_ELAPSED_TIME == $type )
- {
- $retval = "PERF_ELAPSED_TIME";
- }
- elsif( &Win32::PerfLib::PERF_RAW_BASE == $type )
- {
- $retval = "PERF_RAW_BASE";
- }
- elsif( &Win32::PerfLib::PERF_RAW_FRACTION == $type )
- {
- $retval = "PERF_RAW_FRACTION";
- }
- elsif( &Win32::PerfLib::PERF_SAMPLE_BASE == $type )
- {
- $retval = "PERF_SAMPLE_BASE";
- }
- elsif( &Win32::PerfLib::PERF_SAMPLE_COUNTER == $type )
- {
- $retval = "PERF_SAMPLE_COUNTER";
- }
- elsif( &Win32::PerfLib::PERF_SAMPLE_FRACTION == $type )
- {
- $retval = "PERF_SAMPLE_FRACTION";
- }
- $retval;
-}
-
-
-
-1;
-__END__
-
-=head1 NAME
-
-Win32::PerfLib - accessing the Windows NT Performance Counter
-
-=head1 SYNOPSIS
-
- use Win32::PerfLib;
- my $server = "";
- Win32::PerfLib::GetCounterNames($server, \%counter);
- %r_counter = map { $counter{$_} => $_ } keys %counter;
- # retrieve the id for process object
- $process_obj = $r_counter{Process};
- # retrieve the id for the process ID counter
- $process_id = $r_counter{'ID Process'};
-
- # create connection to $server
- $perflib = new Win32::PerfLib($server);
- $proc_ref = {};
- # get the performance data for the process object
- $perflib->GetObjectList($process_obj, $proc_ref);
- $perflib->Close();
- $instance_ref = $proc_ref->{Objects}->{$process_obj}->{Instances};
- foreach $p (sort keys %{$instance_ref})
- {
- $counter_ref = $instance_ref->{$p}->{Counters};
- foreach $i (keys %{$counter_ref})
- {
- if($counter_ref->{$i}->{CounterNameTitleIndex} == $process_id)
- {
- printf( "% 6d %s\n", $counter_ref->{$i}->{Counter},
- $instance_ref->{$p}->{Name}
- );
- }
- }
- }
-
-=head1 DESCRIPTION
-
-This module allows to retrieve the performance counter of any computer
-(running Windows NT) in the network.
-
-=head1 FUNCTIONS
-
-=head2 NOTE
-
-All of the functions return false if they fail, unless otherwise noted.
-If the $server argument is undef the local machine is assumed.
-
-=over 10
-
-=item Win32::PerfLib::GetCounterNames($server,$hashref)
-
-Retrieves the counter names and their indices from the registry and stores them
-in the hash reference
-
-=item Win32::PerfLib::GetCounterHelp($server,$hashref)
-
-Retrieves the counter help strings and their indices from the registry and
-stores them in the hash reference
-
-=item $perflib = Win32::PerfLib->new ($server)
-
-Creates a connection to the performance counters of the given server
-
-=item $perflib->GetObjectList($objectid,$hashref)
-
-retrieves the object and counter list of the given performance object.
-
-=item $perflib->Close($hashref)
-
-closes the connection to the performance counters
-
-=item Win32::PerfLib::GetCounterType(countertype)
-
-converts the counter type to readable string as referenced in L<calc.html> so
-that it is easier to find the appropriate formula to calculate the raw counter
-data.
-
-=back
-
-=head1 Datastructures
-
-The performance data is returned in the following data structure:
-
-=over 10
-
-=item Level 1
-
- $hashref = {
- 'NumObjectTypes' => VALUE
- 'Objects' => HASHREF
- 'PerfFreq' => VALUE
- 'PerfTime' => VALUE
- 'PerfTime100nSec' => VALUE
- 'SystemName' => STRING
- 'SystemTime' => VALUE
- }
-
-=item Level 2
-
-The hash reference $hashref->{Objects} has the returned object ID(s) as keys and
-a hash reference to the object counter data as value. Even there is only one
-object requested in the call to GetObjectList there may be more than one object
-in the result.
-
- $hashref->{Objects} = {
- <object1> => HASHREF
- <object2> => HASHREF
- ...
- }
-
-=item Level 3
-
-Each returned object ID has object-specific performance information. If an
-object has instances like the process object there is also a reference to
-the instance information.
-
- $hashref->{Objects}->{<object1>} = {
- 'DetailLevel' => VALUE
- 'Instances' => HASHREF
- 'Counters' => HASHREF
- 'NumCounters' => VALUE
- 'NumInstances' => VALUE
- 'ObjectHelpTitleIndex' => VALUE
- 'ObjectNameTitleIndex' => VALUE
- 'PerfFreq' => VALUE
- 'PerfTime' => VALUE
- }
-
-=item Level 4
-
-If there are instance information for the object available they are stored in
-the 'Instances' hashref. If the object has no instances there is an 'Counters'
-key instead. The instances or counters are numbered.
-
- $hashref->{Objects}->{<object1>}->{Instances} = {
- <1> => HASHREF
- <2> => HASHREF
- ...
- <n> => HASHREF
- }
- or
- $hashref->{Objects}->{<object1>}->{Counters} = {
- <1> => HASHREF
- <2> => HASHREF
- ...
- <n> => HASHREF
- }
-
-=item Level 5
-
- $hashref->{Objects}->{<object1>}->{Instances}->{<1>} = {
- Counters => HASHREF
- Name => STRING
- ParentObjectInstance => VALUE
- ParentObjectTitleIndex => VALUE
- }
- or
- $hashref->{Objects}->{<object1>}->{Counters}->{<1>} = {
- Counter => VALUE
- CounterHelpTitleIndex => VALUE
- CounterNameTitleIndex => VALUE
- CounterSize => VALUE
- CounterType => VALUE
- DefaultScale => VALUE
- DetailLevel => VALUE
- Display => STRING
- }
-
-=item Level 6
-
- $hashref->{Objects}->{<object1>}->{Instances}->{<1>}->{Counters} = {
- <1> => HASHREF
- <2> => HASHREF
- ...
- <n> => HASHREF
- }
-
-=item Level 7
-
- $hashref->{Objects}->{<object1>}->{Instances}->{<1>}->{Counters}->{<1>} = {
- Counter => VALUE
- CounterHelpTitleIndex => VALUE
- CounterNameTitleIndex => VALUE
- CounterSize => VALUE
- CounterType => VALUE
- DefaultScale => VALUE
- DetailLevel => VALUE
- Display => STRING
- }
-
-Depending on the B<CounterType> there are calculations to do (see calc.html).
-
-=back
-
-=head1 AUTHOR
-
-Jutta M. Klebe, jmk@bybyte.de
-
-=head1 SEE ALSO
-
-perl(1).
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Win32/Pipe.pm b/Master/tlpkg/tlperl/lib/Win32/Pipe.pm
deleted file mode 100644
index a99d5a0da08..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/Pipe.pm
+++ /dev/null
@@ -1,414 +0,0 @@
-package Win32::Pipe;
-
-$VERSION = '0.022';
-
-# Win32::Pipe.pm
-# +==========================================================+
-# | |
-# | PIPE.PM package |
-# | --------------- |
-# | Release v96.05.11 |
-# | |
-# | Copyright (c) 1996 Dave Roth. All rights reserved. |
-# | This program is free software; you can redistribute |
-# | it and/or modify it under the same terms as Perl itself. |
-# | |
-# +==========================================================+
-#
-#
-# Use under GNU General Public License or Larry Wall's "Artistic License"
-#
-# Check the README.TXT file that comes with this package for details about
-# it's history.
-#
-
-require Exporter;
-require DynaLoader;
-
-@ISA= qw( Exporter DynaLoader );
- # 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();
-
-$ErrorNum = 0;
-$ErrorText = "";
-
-sub new
-{
- my ($self, $Pipe);
- my ($Type, $Name, $Time) = @_;
-
- if (! $Time){
- $Time = DEFAULT_WAIT_TIME();
- }
- $Pipe = PipeCreate($Name, $Time);
- if ($Pipe){
- $self = bless {};
- $self->{'Pipe'} = $Pipe;
- }else{
- ($ErrorNum, $ErrorText) = PipeError();
- return undef;
- }
- $self;
-}
-
-sub Write{
- my($self, $Data) = @_;
- $Data = PipeWrite($self->{'Pipe'}, $Data);
- return $Data;
-}
-
-sub Read{
- my($self) = @_;
- my($Data);
- $Data = PipeRead($self->{'Pipe'});
- return $Data;
-}
-
-sub Error{
- my($self) = @_;
- my($MyError, $MyErrorText, $Temp);
- if (! ref($self)){
- undef $Temp;
- }else{
- $Temp = $self->{'Pipe'};
- }
- ($MyError, $MyErrorText) = PipeError($Temp);
- return wantarray? ($MyError, $MyErrorText):"[$MyError] \"$MyErrorText\"";
-}
-
-
-sub Close{
- my ($self) = shift;
- PipeClose($self->{'Pipe'});
- $self->{'Pipe'} = 0;
-}
-
-sub Connect{
- my ($self) = @_;
- my ($Result);
- $Result = PipeConnect($self->{'Pipe'});
- return $Result;
-}
-
-sub Disconnect{
- my ($self, $iPurge) = @_;
- my ($Result);
- if (! $iPurge){
- $iPurge = 1;
- }
- $Result = PipeDisconnect($self->{'Pipe'}, $iPurge);
- return $Result;
-}
-
-sub BufferSize{
- my($self) = @_;
- my($Result) = PipeBufferSize($self->{'Pipe'});
- return $Result;
-}
-
-sub ResizeBuffer{
- my($self, $Size) = @_;
- my($Result) = PipeResizeBuffer($self->{'Pipe'}, $Size);
- return $Result;
-}
-
-
-####
-# Auto-Kill an instance of this module
-####
-sub DESTROY
-{
- my ($self) = shift;
- Close($self);
-}
-
-
-sub Credit{
- my($Name, $Version, $Date, $Author, $CompileDate, $CompileTime, $Credits) = Win32::Pipe::Info();
- my($Out, $iWidth);
- $iWidth = 60;
- $Out .= "\n";
- $Out .= " +". "=" x ($iWidth). "+\n";
- $Out .= " |". Center("", $iWidth). "|\n";
- $Out .= " |" . Center("", $iWidth). "|\n";
- $Out .= " |". Center("$Name", $iWidth). "|\n";
- $Out .= " |". Center("-" x length("$Name"), $iWidth). "|\n";
- $Out .= " |". Center("", $iWidth). "|\n";
-
- $Out .= " |". Center("Version $Version ($Date)", $iWidth). "|\n";
- $Out .= " |". Center("by $Author", $iWidth). "|\n";
- $Out .= " |". Center("Compiled on $CompileDate at $CompileTime.", $iWidth). "|\n";
- $Out .= " |". Center("", $iWidth). "|\n";
- $Out .= " |". Center("Credits:", $iWidth). "|\n";
- $Out .= " |". Center(("-" x length("Credits:")), $iWidth). "|\n";
- foreach $Temp (split("\n", $Credits)){
- $Out .= " |". Center("$Temp", $iWidth). "|\n";
- }
- $Out .= " |". Center("", $iWidth). "|\n";
- $Out .= " +". "=" x ($iWidth). "+\n";
- return $Out;
-}
-
-sub Center{
- local($Temp, $Width) = @_;
- local($Len) = ($Width - length($Temp)) / 2;
- return " " x int($Len) . $Temp . " " x (int($Len) + (($Len != int($Len))? 1:0));
-}
-
-# ------------------ A U T O L O A D F U N C T I O N ---------------------
-
-sub AUTOLOAD {
- # This AUTOLOAD is used to 'autoload' constants from the constant()
- # XS function. If a constant is not found then control is passed
- # to the AUTOLOAD in AutoLoader.
-
- my($constname);
- ($constname = $AUTOLOAD) =~ s/.*:://;
- #reset $! to zero to reset any current errors.
- local $! = 0;
- $val = constant($constname, @_ ? $_[0] : 0);
-
- if ($! != 0) {
- if ($! =~ /Invalid/) {
- $AutoLoader::AUTOLOAD = $AUTOLOAD;
- goto &AutoLoader::AUTOLOAD;
- }
- else {
-
- # Added by JOC 06-APR-96
- # $pack = 0;
- $pack = 0;
- ($pack,$file,$line) = caller;
- print "Your vendor has not defined Win32::Pipe macro $constname, used in $file at line $line.";
- }
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-bootstrap Win32::Pipe;
-
-1;
-__END__
-
-=head1 NAME
-
-Win32::Pipe - Win32 Named Pipe
-
-=head1 SYNOPSIS
-
-To use this extension, follow these basic steps. First, you need to
-'use' the pipe extension:
-
- use Win32::Pipe;
-
-Then you need to create a server side of a named pipe:
-
- $Pipe = new Win32::Pipe("My Pipe Name");
-
-or if you are going to connect to pipe that has already been created:
-
- $Pipe = new Win32::Pipe("\\\\server\\pipe\\My Pipe Name");
-
- NOTE: The "\\\\server\\pipe\\" is necessary when connecting
- to an existing pipe! If you are accessing the same
- machine you could use "\\\\.\\pipe\\" but either way
- works fine.
-
-You should check to see if C<$Pipe> is indeed defined otherwise there
-has been an error.
-
-Whichever end is the server, it must now wait for a connection...
-
- $Result = $Pipe->Connect();
-
- NOTE: The client end does not do this! When the client creates
- the pipe it has already connected!
-
-Now you can read and write data from either end of the pipe:
-
- $Data = $Pipe->Read();
-
- $Result = $Pipe->Write("Howdy! This is cool!");
-
-When the server is finished it must disconnect:
-
- $Pipe->Disconnect();
-
-Now the server could C<Connect> again (and wait for another client) or
-it could destroy the named pipe...
-
- $Data->Close();
-
-The client should C<Close> in order to properly end the session.
-
-=head1 DESCRIPTION
-
-=head2 General Use
-
-This extension gives Win32 Perl the ability to use Named Pipes. Why?
-Well considering that Win32 Perl does not (yet) have the ability to
-C<fork> I could not see what good the C<pipe(X,Y)> was. Besides, where
-I am as an admin I must have several perl daemons running on several
-NT Servers. It dawned on me one day that if I could pipe all these
-daemons' output to my workstation (across the net) then it would be
-much easier to monitor. This was the impetus for an extension using
-Named Pipes. I think that it is kinda cool. :)
-
-=head2 Benefits
-
-And what are the benefits of this module?
-
-=over
-
-=item *
-
-You may create as many named pipes as you want (uh, well, as many as
-your resources will allow).
-
-=item *
-
-Currently there is a limit of 256 instances of a named pipe (once a
-pipe is created you can have 256 client/server connections to that
-name).
-
-=item *
-
-The default buffer size is 512 bytes; this can be altered by the
-C<ResizeBuffer> method.
-
-=item *
-
-All named pipes are byte streams. There is currently no way to alter a
-pipe to be message based.
-
-=item *
-
-Other things that I cannot think of right now... :)
-
-=back
-
-=head1 CONSTRUCTOR
-
-=over
-
-=item new ( NAME )
-
-Creates a named pipe if used in server context or a connection to the
-specified named pipe if used in client context. Client context is
-determined by prepending $Name with "\\\\".
-
-Returns I<true> on success, I<false> on failure.
-
-=back
-
-=head1 METHODS
-
-=over
-
-=item BufferSize ()
-
-Returns the size of the instance of the buffer of the named pipe.
-
-=item Connect ()
-
-Tells the named pipe to create an instance of the named pipe and wait
-until a client connects. Returns I<true> on success, I<false> on
-failure.
-
-=item Close ()
-
-Closes the named pipe.
-
-=item Disconnect ()
-
-Disconnects (and destroys) the instance of the named pipe from the
-client. Returns I<true> on success, I<false> on failure.
-
-=item Error ()
-
-Returns the last error messages pertaining to the named pipe. If used
-in context to the package. Returns a list containing C<ERROR_NUMBER>
-and C<ERROR_TEXT>.
-
-=item Read ()
-
-Reads from the named pipe. Returns data read from the pipe on success,
-undef on failure.
-
-=item ResizeBuffer ( SIZE )
-
-Sets the size of the buffer of the instance of the named pipe to
-C<SIZE>. Returns the size of the buffer on success, I<false> on
-failure.
-
-=item Write ( DATA )
-
-Writes C<DATA> to the named pipe. Returns I<true> on success, I<false>
-on failure.
-
-=back
-
-=head1 LIMITATIONS
-
-What known problems does this thing have?
-
-=over
-
-=item *
-
-If someone is waiting on a C<Read> and the other end terminates then
-you will wait for one B<REALLY> long time! (If anyone has an idea on
-how I can detect the termination of the other end let me know!)
-
-=item *
-
-All pipes are blocking. I am considering using threads and callbacks
-into Perl to perform async IO but this may be too much for my time
-stress. ;)
-
-=item *
-
-There is no security placed on these pipes.
-
-=item *
-
-This module has neither been optimized for speed nor optimized for
-memory consumption. This may run into memory bloat.
-
-=back
-
-=head1 INSTALLATION NOTES
-
-If you wish to use this module with a build of Perl other than
-ActivePerl, you may wish to fetch the source distribution for this
-module. The source is included as part of the C<libwin32> bundle,
-which you can find in any CPAN mirror here:
-
- modules/by-authors/Gurusamy_Sarathy/libwin32-0.151.tar.gz
-
-The source distribution also contains a pair of sample client/server
-test scripts. For the latest information on this module, consult the
-following web site:
-
- http://www.roth.net/perl
-
-=head1 AUTHOR
-
-Dave Roth <rothd@roth.net>
-
-=head1 DISCLAIMER
-
-I do not guarantee B<ANYTHING> with this package. If you use it you
-are doing so B<AT YOUR OWN RISK>! I may or may not support this
-depending on my time schedule.
-
-=head1 COPYRIGHT
-
-Copyright (c) 1996 Dave Roth. All rights reserved.
-This program is free software; you can redistribute
-it and/or modify it under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Win32/Process.pm b/Master/tlpkg/tlperl/lib/Win32/Process.pm
deleted file mode 100644
index f07169b4080..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/Process.pm
+++ /dev/null
@@ -1,217 +0,0 @@
-package Win32::Process;
-
-require Exporter;
-require DynaLoader;
-@ISA = qw(Exporter DynaLoader);
-
-$VERSION = '0.10';
-
-# 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(
- CREATE_DEFAULT_ERROR_MODE
- CREATE_NEW_CONSOLE
- CREATE_NEW_PROCESS_GROUP
- CREATE_NO_WINDOW
- CREATE_SEPARATE_WOW_VDM
- CREATE_SUSPENDED
- CREATE_UNICODE_ENVIRONMENT
- DEBUG_ONLY_THIS_PROCESS
- DEBUG_PROCESS
- DETACHED_PROCESS
- HIGH_PRIORITY_CLASS
- IDLE_PRIORITY_CLASS
- INFINITE
- NORMAL_PRIORITY_CLASS
- REALTIME_PRIORITY_CLASS
- THREAD_PRIORITY_ABOVE_NORMAL
- THREAD_PRIORITY_BELOW_NORMAL
- THREAD_PRIORITY_ERROR_RETURN
- THREAD_PRIORITY_HIGHEST
- THREAD_PRIORITY_IDLE
- THREAD_PRIORITY_LOWEST
- THREAD_PRIORITY_NORMAL
- THREAD_PRIORITY_TIME_CRITICAL
-);
-
-@EXPORT_OK = qw(
- STILL_ACTIVE
-);
-
-sub AUTOLOAD {
- # This AUTOLOAD is used to 'autoload' constants from the constant()
- # XS function.
- my($constname);
- ($constname = $AUTOLOAD) =~ s/.*:://;
- local $! = 0;
- my $val = constant($constname);
- if ($! != 0) {
- my ($pack,$file,$line) = caller;
- die "Your vendor has not defined Win32::Process macro $constname, used at $file line $line.";
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-} # end AUTOLOAD
-
-bootstrap Win32::Process;
-
-# Win32::IPC > 1.02 uses the get_Win32_IPC_HANDLE method:
-*get_Win32_IPC_HANDLE = \&get_process_handle;
-
-1;
-__END__
-
-=head1 NAME
-
-Win32::Process - Create and manipulate processes.
-
-=head1 SYNOPSIS
-
- use Win32::Process;
- use Win32;
-
- sub ErrorReport{
- print Win32::FormatMessage( Win32::GetLastError() );
- }
-
- Win32::Process::Create($ProcessObj,
- "C:\\winnt\\system32\\notepad.exe",
- "notepad temp.txt",
- 0,
- NORMAL_PRIORITY_CLASS,
- ".")|| die ErrorReport();
-
- $ProcessObj->Suspend();
- $ProcessObj->Resume();
- $ProcessObj->Wait(INFINITE);
-
-=head1 DESCRIPTION
-
-This module provides access to the process control functions in the
-Win32 API.
-
-=head1 METHODS
-
-=over 8
-
-=item Win32::Process::Create($obj,$appname,$cmdline,$iflags,$cflags,$curdir)
-
-Creates a new process.
-
- Args:
-
- $obj container for process object
- $appname full path name of executable module
- $cmdline command line args
- $iflags flag: inherit calling processes handles or not
- $cflags flags for creation (see exported vars below)
- $curdir working dir of new process
-
-Returns non-zero on success, 0 on failure.
-
-=item Win32::Process::Open($obj,$pid,$iflags)
-
-Creates a handle Perl can use to an existing process as identified by $pid.
-The $iflags is the inherit flag that is passed to OpenProcess. Currently
-Win32::Process objects created using Win32::Process::Open cannot Suspend
-or Resume the process. All other calls should work.
-
-Win32::Process::Open returns non-zero on success, 0 on failure.
-
-=item Win32::Process::KillProcess($pid, $exitcode)
-
-Terminates any process identified by $pid. $exitcode will be set to
-the exit code of the process.
-
-=item $ProcessObj->Suspend()
-
-Suspend the process associated with the $ProcessObj.
-
-=item $ProcessObj->Resume()
-
-Resume a suspended process.
-
-=item $ProcessObj->Kill($exitcode)
-
-Kill the associated process, have it terminate with exit code $ExitCode.
-
-=item $ProcessObj->GetPriorityClass($class)
-
-Get the priority class of the process.
-
-=item $ProcessObj->SetPriorityClass($class)
-
-Set the priority class of the process (see exported values below for
-options).
-
-=item $ProcessObj->GetProcessAffinityMask($processAffinityMask, $systemAffinityMask)
-
-Get the process affinity mask. This is a bitvector in which each bit
-represents the processors that a process is allowed to run on.
-
-=item $ProcessObj->SetProcessAffinityMask($processAffinityMask)
-
-Set the process affinity mask. Only available on Windows NT.
-
-=item $ProcessObj->GetExitCode($exitcode)
-
-Retrieve the exitcode of the process. Will return STILL_ACTIVE if the
-process is still running. The STILL_ACTIVE constant is only exported
-by explicit request.
-
-=item $ProcessObj->Wait($timeout)
-
-Wait for the process to die. $timeout should be specified in milliseconds.
-To wait forever, specify the constant C<INFINITE>.
-
-=item $ProcessObj->GetProcessID()
-
-Returns the Process ID.
-
-=item Win32::Process::GetCurrentProcessID()
-
-Returns the current process ID, which is the same as $$. But not on cygwin,
-where $$ is the cygwin-internal PID and not the windows PID.
-On cygwin GetCurrentProcessID() returns the windows PID as needed for all
-the Win32::Process functions.
-
-=back
-
-=head1 EXPORTS
-
-The following constants are exported by default:
-
- CREATE_DEFAULT_ERROR_MODE
- CREATE_NEW_CONSOLE
- CREATE_NEW_PROCESS_GROUP
- CREATE_NO_WINDOW
- CREATE_SEPARATE_WOW_VDM
- CREATE_SUSPENDED
- CREATE_UNICODE_ENVIRONMENT
- DEBUG_ONLY_THIS_PROCESS
- DEBUG_PROCESS
- DETACHED_PROCESS
- HIGH_PRIORITY_CLASS
- IDLE_PRIORITY_CLASS
- INFINITE
- NORMAL_PRIORITY_CLASS
- REALTIME_PRIORITY_CLASS
- THREAD_PRIORITY_ABOVE_NORMAL
- THREAD_PRIORITY_BELOW_NORMAL
- THREAD_PRIORITY_ERROR_RETURN
- THREAD_PRIORITY_HIGHEST
- THREAD_PRIORITY_IDLE
- THREAD_PRIORITY_LOWEST
- THREAD_PRIORITY_NORMAL
- THREAD_PRIORITY_TIME_CRITICAL
-
-The following additional constants are exported by request only:
-
- STILL_ACTIVE
-
-=cut
-
-# Local Variables:
-# tmtrack-file-task: "Win32::Process"
-# End:
diff --git a/Master/tlpkg/tlperl/lib/Win32/Registry.pm b/Master/tlpkg/tlperl/lib/Win32/Registry.pm
deleted file mode 100644
index c83fca5a3b1..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/Registry.pm
+++ /dev/null
@@ -1,547 +0,0 @@
-package Win32::Registry;
-
-=head1 NAME
-
-Win32::Registry - accessing the Windows registry [obsolete, use Win32::TieRegistry]
-
-=head1 SYNOPSIS
-
- use Win32::Registry;
- my $tips;
- $::HKEY_LOCAL_MACHINE->Open("SOFTWARE\\Microsoft\\Windows"
- ."\\CurrentVersion\\Explorer\\Tips", $tips)
- or die "Can't open tips: $^E";
- my ($type, $value);
- $tips->QueryValueEx("18", $type, $value) or die "No tip #18: $^E";
- print "Here's a tip: $value\n";
-
-=head1 DESCRIPTION
-
- NOTE: This module provides a very klunky interface to access the
- Windows registry, and is not currently being developed actively. It
- only exists for backward compatibility with old code that uses it.
- For more powerful and flexible ways to access the registry, use
- Win32::TieRegistry.
-
-Win32::Registry provides an object oriented interface to the Windows
-Registry.
-
-The following "root" registry objects are exported to the main:: name
-space. Additional keys must be opened by calling the provided methods
-on one of these.
-
- $HKEY_CLASSES_ROOT
- $HKEY_CURRENT_USER
- $HKEY_LOCAL_MACHINE
- $HKEY_USERS
- $HKEY_PERFORMANCE_DATA
- $HKEY_CURRENT_CONFIG
- $HKEY_DYN_DATA
-
-=cut
-
-use strict;
-require Exporter;
-require DynaLoader;
-use Win32::WinError;
-
-require Win32 unless defined &Win32::GetLastError;
-
-use vars qw($VERSION $AUTOLOAD @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
-
-$VERSION = '0.07';
-
-@ISA = qw( Exporter DynaLoader );
-@EXPORT = qw(
- HKEY_CLASSES_ROOT
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
- HKEY_PERFORMANCE_DATA
- HKEY_CURRENT_CONFIG
- HKEY_DYN_DATA
- HKEY_USERS
- KEY_ALL_ACCESS
- KEY_CREATE_LINK
- KEY_CREATE_SUB_KEY
- KEY_ENUMERATE_SUB_KEYS
- KEY_EXECUTE
- KEY_NOTIFY
- KEY_QUERY_VALUE
- KEY_READ
- KEY_SET_VALUE
- KEY_WRITE
- REG_BINARY
- REG_CREATED_NEW_KEY
- REG_DWORD
- REG_DWORD_BIG_ENDIAN
- REG_DWORD_LITTLE_ENDIAN
- REG_EXPAND_SZ
- REG_FULL_RESOURCE_DESCRIPTOR
- REG_LEGAL_CHANGE_FILTER
- REG_LEGAL_OPTION
- REG_LINK
- REG_MULTI_SZ
- REG_NONE
- REG_NOTIFY_CHANGE_ATTRIBUTES
- REG_NOTIFY_CHANGE_LAST_SET
- REG_NOTIFY_CHANGE_NAME
- REG_NOTIFY_CHANGE_SECURITY
- REG_OPENED_EXISTING_KEY
- REG_OPTION_BACKUP_RESTORE
- REG_OPTION_CREATE_LINK
- REG_OPTION_NON_VOLATILE
- REG_OPTION_RESERVED
- REG_OPTION_VOLATILE
- REG_REFRESH_HIVE
- REG_RESOURCE_LIST
- REG_RESOURCE_REQUIREMENTS_LIST
- REG_SZ
- REG_WHOLE_HIVE_VOLATILE
-);
-
-@EXPORT_OK = qw(
- RegCloseKey
- RegConnectRegistry
- RegCreateKey
- RegCreateKeyEx
- RegDeleteKey
- RegDeleteValue
- RegEnumKey
- RegEnumValue
- RegFlushKey
- RegGetKeySecurity
- RegLoadKey
- RegNotifyChangeKeyValue
- RegOpenKey
- RegOpenKeyEx
- RegQueryInfoKey
- RegQueryValue
- RegQueryValueEx
- RegReplaceKey
- RegRestoreKey
- RegSaveKey
- RegSetKeySecurity
- RegSetValue
- RegSetValueEx
- RegUnLoadKey
-);
-$EXPORT_TAGS{ALL}= \@EXPORT_OK;
-
-bootstrap Win32::Registry;
-
-sub import {
- my $pkg = shift;
- if ($_[0] && "Win32" eq $_[0]) {
- Exporter::export($pkg, "Win32", @EXPORT_OK);
- shift;
- }
- Win32::Registry->export_to_level(1+$Exporter::ExportLevel, $pkg, @_);
-}
-
-#######################################################################
-# This AUTOLOAD is used to 'autoload' constants from the constant()
-# XS function. If a constant is not found then control is passed
-# to the AUTOLOAD in AutoLoader.
-
-sub AUTOLOAD {
- my($constname);
- ($constname = $AUTOLOAD) =~ s/.*:://;
- #reset $! to zero to reset any current errors.
- local $! = 0;
- my $val = constant($constname, 0);
- if ($! != 0) {
- if ($! =~ /Invalid/) {
- $AutoLoader::AUTOLOAD = $AUTOLOAD;
- goto &AutoLoader::AUTOLOAD;
- }
- else {
- my ($pack,$file,$line) = caller;
- die "Unknown constant $constname in Win32::Registry "
- . "at $file line $line.\n";
- }
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-#######################################################################
-# _new is a private constructor, not intended for public use.
-#
-
-sub _new {
- my $self;
- if ($_[0]) {
- $self->{'handle'} = $_[0];
- bless $self;
- }
- $self;
-}
-
-#define the basic registry objects to be exported.
-#these had to be hardwired unfortunately.
-# XXX Yuck!
-
-{
- package main;
- use vars qw(
- $HKEY_CLASSES_ROOT
- $HKEY_CURRENT_USER
- $HKEY_LOCAL_MACHINE
- $HKEY_USERS
- $HKEY_PERFORMANCE_DATA
- $HKEY_CURRENT_CONFIG
- $HKEY_DYN_DATA
- );
-}
-
-$::HKEY_CLASSES_ROOT = _new(&HKEY_CLASSES_ROOT);
-$::HKEY_CURRENT_USER = _new(&HKEY_CURRENT_USER);
-$::HKEY_LOCAL_MACHINE = _new(&HKEY_LOCAL_MACHINE);
-$::HKEY_USERS = _new(&HKEY_USERS);
-$::HKEY_PERFORMANCE_DATA = _new(&HKEY_PERFORMANCE_DATA);
-$::HKEY_CURRENT_CONFIG = _new(&HKEY_CURRENT_CONFIG);
-$::HKEY_DYN_DATA = _new(&HKEY_DYN_DATA);
-
-=head2 Methods
-
-The following methods are supported. Note that subkeys can be
-specified as a path name, separated by backslashes (which may
-need to be doubled if you put them in double quotes).
-
-=over 8
-
-=item Open
-
- $reg_obj->Open($sub_key_name, $sub_reg_obj);
-
-Opens a subkey of a registry object, returning the new registry object
-in $sub_reg_obj.
-
-=cut
-
-sub Open {
- my $self = shift;
- die 'usage: $obj->Open($sub_key_name, $sub_reg_obj)' if @_ != 2;
-
- my ($subkey) = @_;
- my ($result,$subhandle);
-
- $result = RegOpenKey($self->{'handle'},$subkey,$subhandle);
- $_[1] = _new($subhandle);
-
- return 0 unless $_[1];
- $! = Win32::GetLastError() unless $result;
- return $result;
-}
-
-=item Close
-
- $reg_obj->Close();
-
-Closes an open registry key.
-
-=cut
-
-sub Close {
- my $self = shift;
- die 'usage: $obj->Close()' if @_ != 0;
-
- return unless exists $self->{'handle'};
- my $result = RegCloseKey($self->{'handle'});
- if ($result) {
- delete $self->{'handle'};
- }
- else {
- $! = Win32::GetLastError();
- }
- return $result;
-}
-
-sub DESTROY {
- my $self = shift;
- return unless exists $self->{'handle'};
- RegCloseKey($self->{'handle'});
- delete $self->{'handle'};
-}
-
-
-=item Connect
-
- $reg_obj->Connect($node_name, $new_reg_obj);
-
-Connects to a remote Registry on the node specified by $node_name,
-returning it in $new_reg_obj. Returns false if it fails.
-
-=cut
-
-sub Connect {
- my $self = shift;
- die 'usage: $obj->Connect($node_name, $new_reg_obj)' if @_ != 2;
-
- my ($node) = @_;
- my ($result,$subhandle);
-
- $result = RegConnectRegistry ($node, $self->{'handle'}, $subhandle);
- $_[1] = _new($subhandle);
-
- return 0 unless $_[1];
- $! = Win32::GetLastError() unless $result;
- return $result;
-}
-
-=item Create
-
- $reg_obj->Create($sub_key_name, $new_reg_obj);
-
-Opens the subkey specified by $sub_key_name, returning the new registry
-object in $new_reg_obj. If the specified subkey doesn't exist, it is
-created.
-
-=cut
-
-sub Create {
- my $self = shift;
- die 'usage: $obj->Create($sub_key_name, $new_reg_obj)' if @_ != 2;
-
- my ($subkey) = @_;
- my ($result,$subhandle);
-
- $result = RegCreateKey($self->{'handle'},$subkey,$subhandle);
- $_[1] = _new ($subhandle);
-
- return 0 unless $_[1];
- $! = Win32::GetLastError() unless $result;
- return $result;
-}
-
-=item SetValue
-
- $reg_obj->SetValue($sub_key_name, $type, $value);
-
-Sets the default value for a subkey specified by $sub_key_name.
-
-=cut
-
-sub SetValue {
- my $self = shift;
- die 'usage: $obj->SetValue($subkey, $type, $value)' if @_ != 3;
- my $result = RegSetValue($self->{'handle'}, @_);
- $! = Win32::GetLastError() unless $result;
- return $result;
-}
-
-=item SetValueEx
-
- $reg_obj->SetValueEx($value_name, $reserved, $type, $value);
-
-Sets the value for the value name identified by $value_name
-in the key specified by $reg_obj.
-
-=cut
-
-sub SetValueEx {
- my $self = shift;
- die 'usage: $obj->SetValueEx($value_name, $reserved, $type, $value)' if @_ != 4;
- my $result = RegSetValueEx($self->{'handle'}, @_);
- $! = Win32::GetLastError() unless $result;
- return $result;
-}
-
-=item QueryValue
-
- $reg_obj->QueryValue($sub_key_name, $value);
-
-Gets the default value of the subkey specified by $sub_key_name.
-
-=cut
-
-sub QueryValue {
- my $self = shift;
- die 'usage: $obj->QueryValue($sub_key_name, $value)' if @_ != 2;
- my $result = RegQueryValue($self->{'handle'}, $_[0], $_[1]);
- $! = Win32::GetLastError() unless $result;
- return $result;
-}
-
-=item QueryKey
-
- $reg_obj->QueryKey($classref, $number_of_subkeys, $number_of_values);
-
-Gets information on a key specified by $reg_obj.
-
-=cut
-
-sub QueryKey {
- my $garbage;
- my $self = shift;
- die 'usage: $obj->QueryKey($classref, $number_of_subkeys, $number_of_values)'
- if @_ != 3;
-
- my $result = RegQueryInfoKey($self->{'handle'}, $_[0],
- $garbage, $garbage, $_[1],
- $garbage, $garbage, $_[2],
- $garbage, $garbage, $garbage, $garbage);
-
- $! = Win32::GetLastError() unless $result;
- return $result;
-}
-
-=item QueryValueEx
-
- $reg_obj->QueryValueEx($value_name, $type, $value);
-
-Gets the value for the value name identified by $value_name
-in the key specified by $reg_obj.
-
-=cut
-
-sub QueryValueEx {
- my $self = shift;
- die 'usage: $obj->QueryValueEx($value_name, $type, $value)' if @_ != 3;
- my $result = RegQueryValueEx($self->{'handle'}, $_[0], undef, $_[1], $_[2]);
- $! = Win32::GetLastError() unless $result;
- return $result;
-}
-
-=item GetKeys
-
- my @keys;
- $reg_obj->GetKeys(\@keys);
-
-Populates the supplied array reference with the names of all the keys
-within the registry object $reg_obj.
-
-=cut
-
-sub GetKeys {
- my $self = shift;
- die 'usage: $obj->GetKeys($arrayref)' if @_ != 1 or ref($_[0]) ne 'ARRAY';
-
- my ($result, $i, $keyname);
- $keyname = "DummyVal";
- $i = 0;
- $result = 1;
-
- while ( $result ) {
- $result = RegEnumKey( $self->{'handle'},$i++, $keyname );
- if ($result) {
- push( @{$_[0]}, $keyname );
- }
- }
- return(1);
-}
-
-=item GetValues
-
- my %values;
- $reg_obj->GetValues(\%values);
-
-Populates the supplied hash reference with entries of the form
-
- $value_name => [ $value_name, $type, $data ]
-
-for each value in the registry object $reg_obj.
-
-=cut
-
-sub GetValues {
- my $self = shift;
- die 'usage: $obj->GetValues($hashref)' if @_ != 1;
-
- my ($result,$name,$type,$data,$i);
- $name = "DummyVal";
- $i = 0;
- while ( $result=RegEnumValue( $self->{'handle'},
- $i++,
- $name,
- undef,
- $type,
- $data ))
- {
- $_[0]->{$name} = [ $name, $type, $data ];
- }
- return(1);
-}
-
-=item DeleteKey
-
- $reg_obj->DeleteKey($sub_key_name);
-
-Deletes a subkey specified by $sub_key_name from the registry.
-
-=cut
-
-sub DeleteKey {
- my $self = shift;
- die 'usage: $obj->DeleteKey($sub_key_name)' if @_ != 1;
- my $result = RegDeleteKey($self->{'handle'}, @_);
- $! = Win32::GetLastError() unless $result;
- return $result;
-}
-
-=item DeleteValue
-
- $reg_obj->DeleteValue($value_name);
-
-Deletes a value identified by $value_name from the registry.
-
-=cut
-
-sub DeleteValue {
- my $self = shift;
- die 'usage: $obj->DeleteValue($value_name)' if @_ != 1;
- my $result = RegDeleteValue($self->{'handle'}, @_);
- $! = Win32::GetLastError() unless $result;
- return $result;
-}
-
-=item Save
-
- $reg_obj->Save($filename);
-
-Saves the hive specified by $reg_obj to a file.
-
-=cut
-
-sub Save {
- my $self = shift;
- die 'usage: $obj->Save($filename)' if @_ != 1;
- my $result = RegSaveKey($self->{'handle'}, @_);
- $! = Win32::GetLastError() unless $result;
- return $result;
-}
-
-=item Load
-
- $reg_obj->Load($sub_key_name, $file_name);
-
-Loads a key specified by $sub_key_name from a file.
-
-=cut
-
-sub Load {
- my $self = shift;
- die 'usage: $obj->Load($sub_key_name, $file_name)' if @_ != 2;
- my $result = RegLoadKey($self->{'handle'}, @_);
- $! = Win32::GetLastError() unless $result;
- return $result;
-}
-
-=item UnLoad
-
- $reg_obj->Unload($sub_key_name);
-
-Unloads a registry hive.
-
-=cut
-
-sub UnLoad {
- my $self = shift;
- die 'usage: $obj->UnLoad($sub_key_name)' if @_ != 1;
- my $result = RegUnLoadKey($self->{'handle'}, @_);
- $! = Win32::GetLastError() unless $result;
- return $result;
-}
-
-1;
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Win32/Semaphore.pm b/Master/tlpkg/tlperl/lib/Win32/Semaphore.pm
deleted file mode 100644
index 2e2096eb6ed..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/Semaphore.pm
+++ /dev/null
@@ -1,128 +0,0 @@
-#---------------------------------------------------------------------
-package Win32::Semaphore;
-#
-# Copyright 1998 Christopher J. Madsen
-#
-# Created: 3 Feb 1998 from the ActiveWare version
-# (c) 1995 Microsoft Corporation. All rights reserved.
-# Developed by ActiveWare Internet Corp., http://www.ActiveWare.com
-#
-# Other modifications (c) 1997 by Gurusamy Sarathy <gsar@activestate.com>
-#
-# Author: Christopher J. Madsen <cjm@pobox.com>
-# Version: 1.00 (6-Feb-1998)
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the same terms as Perl itself.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either the
-# GNU General Public License or the Artistic License for more details.
-#
-# Use Win32 semaphore objects for synchronization
-#---------------------------------------------------------------------
-
-$VERSION = '1.02';
-
-use Win32::IPC 1.00 '/./'; # Import everything
-require Exporter;
-require DynaLoader;
-
-@ISA = qw(Exporter DynaLoader Win32::IPC);
-@EXPORT_OK = qw(
- wait_all wait_any
-);
-
-bootstrap Win32::Semaphore;
-
-sub Create { $_[0] = new('Win32::Semaphore',@_[1..3]) }
-sub Open { $_[0] = Win32::Semaphore->open($_[1]) }
-sub Release { &release }
-
-1;
-__END__
-
-=head1 NAME
-
-Win32::Semaphore - Use Win32 semaphore objects from Perl
-
-=head1 SYNOPSIS
- require Win32::Semaphore;
-
- $sem = Win32::Semaphore->new($initial,$maximum,$name);
- $sem->wait;
-
-=head1 DESCRIPTION
-
-This module allows access to Win32 semaphore objects. The C<wait>
-method and C<wait_all> & C<wait_any> functions are inherited from the
-L<"Win32::IPC"> module.
-
-=head2 Methods
-
-=over 4
-
-=item $semaphore = Win32::Semaphore->new($initial, $maximum, [$name])
-
-Constructor for a new semaphore object. C<$initial> is the initial
-count, and C<$maximum> is the maximum count for the semaphore. If
-C<$name> is omitted, creates an unnamed semaphore object.
-
-If C<$name> signifies an existing semaphore object, then C<$initial>
-and C<$maximum> are ignored and the object is opened. If this
-happens, C<$^E> will be set to 183 (ERROR_ALREADY_EXISTS).
-
-=item $semaphore = Win32::Semaphore->open($name)
-
-Constructor for opening an existing semaphore object.
-
-=item $semaphore->release([$increment, [$previous]])
-
-Increment the count of C<$semaphore> by C<$increment> (default 1).
-If C<$increment> plus the semaphore's current count is more than its
-maximum count, the count is not changed. Returns true if the
-increment is successful.
-
-The semaphore's count (before incrementing) is stored in the second
-argument (if any).
-
-It is not necessary to wait on a semaphore before calling C<release>,
-but you'd better know what you're doing.
-
-=item $semaphore->wait([$timeout])
-
-Wait for C<$semaphore>'s count to be nonzero, then decrement it by 1.
-See L<"Win32::IPC">.
-
-=back
-
-=head2 Deprecated Functions and Methods
-
-B<Win32::Semaphore> still supports the ActiveWare syntax, but its use
-is deprecated.
-
-=over 4
-
-=item Win32::Semaphore::Create($SemObject,$Initial,$Max,$Name)
-
-Use C<$SemObject = Win32::Semaphore-E<gt>new($Initial,$Max,$Name)> instead.
-
-=item Win32::Semaphore::Open($SemObject, $Name)
-
-Use C<$SemObject = Win32::Semaphore-E<gt>open($Name)> instead.
-
-=item $SemObj->Release($Count,$LastVal)
-
-Use C<$SemObj-E<gt>release($Count,$LastVal)> instead.
-
-=back
-
-=head1 AUTHOR
-
-Christopher J. Madsen E<lt>F<cjm@pobox.com>E<gt>
-
-Loosely based on the original module by ActiveWare Internet Corp.,
-F<http://www.ActiveWare.com>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Win32/Server.pl b/Master/tlpkg/tlperl/lib/Win32/Server.pl
deleted file mode 100644
index ecfb91ba864..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/Server.pl
+++ /dev/null
@@ -1,48 +0,0 @@
-use strict;
-use Win32::Pipe;
-
-my $PipeName = "TEST this long named pipe!";
-my $NewSize = 2048;
-my $iMessage;
-
-while () {
- print "Creating pipe \"$PipeName\".\n";
- if (my $Pipe = new Win32::Pipe($PipeName)) {
- my $PipeSize = $Pipe->BufferSize();
- print "This pipe's current size is $PipeSize byte" . (($PipeSize == 1)? "":"s") . ".\nWe shall change it to $NewSize ...";
- print +(($Pipe->ResizeBuffer($NewSize) == $NewSize)? "Successful":"Unsucessful") . "!\n\n";
-
- print "\n\nR e a d y f o r r e a d i n g :\n";
- print "-----------------------------------\n";
-
- print "Openning the pipe...\n";
- while ($Pipe->Connect()) {
- while () {
- ++$iMessage;
- print "Reading Message #$iMessage: ";
- my $In = $Pipe->Read();
- unless ($In) {
- print "Recieved no data, closing connection....\n";
- last;
- }
- if ($In =~ /^quit/i){
- print "\n\nQuitting this connection....\n";
- last;
- }
- elsif ($In =~ /^exit/i){
- print "\n\nExitting.....\n";
- exit;
- }
- else{
- print "\"$In\"\n";
- }
- }
- print "Disconnecting...\n";
- $Pipe->Disconnect();
- }
- print "Closing...\n";
- $Pipe->Close();
- }
-}
-
-print "You can't get here...\n";
diff --git a/Master/tlpkg/tlperl/lib/Win32/Service.pm b/Master/tlpkg/tlperl/lib/Win32/Service.pm
deleted file mode 100644
index 0ae33b13ef8..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/Service.pm
+++ /dev/null
@@ -1,103 +0,0 @@
-package Win32::Service;
-
-#
-# Service.pm
-# Written by Douglas_Lankshear@ActiveWare.com
-#
-# subsequently hacked by Gurusamy Sarathy <gsar@activestate.com>
-#
-
-$VERSION = '0.05';
-
-require Exporter;
-require DynaLoader;
-
-require Win32 unless defined &Win32::IsWinNT;
-die "The Win32::Service module works only on Windows NT" unless Win32::IsWinNT();
-
-@ISA= qw( Exporter DynaLoader );
-@EXPORT_OK =
- qw(
- StartService
- StopService
- GetStatus
- PauseService
- ResumeService
- GetServices
- );
-
-=head1 NAME
-
-Win32::Service - manage system services in perl
-
-=head1 SYNOPSIS
-
- use Win32::Service;
-
-=head1 DESCRIPTION
-
-This module offers control over the administration of system services.
-
-=head1 FUNCTIONS
-
-=head2 NOTE:
-
-All of the functions return false if they fail, unless otherwise noted.
-If hostName is an empty string, the local machine is assumed.
-
-=over 10
-
-=item StartService(hostName, serviceName)
-
-Start the service serviceName on machine hostName.
-
-=item StopService(hostName, serviceName)
-
-Stop the service serviceName on the machine hostName.
-
-=item GetStatus(hostName, serviceName, status)
-
-Get the status of a service. The third argument must be a hash
-reference that will be populated with entries corresponding
-to the SERVICE_STATUS structure of the Win32 API. See the
-Win32 Platform SDK documentation for details of this structure.
-
-=item PauseService(hostName, serviceName)
-
-=item ResumeService(hostName, serviceName)
-
-=item GetServices(hostName, hashref)
-
-Enumerates both active and inactive Win32 services at the specified host.
-The hashref is populated with the descriptive service names as keys
-and the short names as the values.
-
-=back
-
-=cut
-
-sub AUTOLOAD
-{
- my($constname);
- ($constname = $AUTOLOAD) =~ s/.*:://;
- #reset $! to zero to reset any current errors.
- local $! = 0;
- my $val = constant($constname);
- if ($! != 0) {
- if($! =~ /Invalid/) {
- $AutoLoader::AUTOLOAD = $AUTOLOAD;
- goto &AutoLoader::AUTOLOAD;
- }
- else {
- ($pack,$file,$line) = caller;
- die "Your vendor has not defined Win32::Service macro $constname, used in $file at line $line.";
- }
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-bootstrap Win32::Service;
-
-1;
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Win32/Shortcut.pm b/Master/tlpkg/tlperl/lib/Win32/Shortcut.pm
deleted file mode 100644
index d4dadafdcf2..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/Shortcut.pm
+++ /dev/null
@@ -1,323 +0,0 @@
-package Win32::Shortcut;
-#######################################################################
-#
-# Win32::Shortcut - Perl Module for Shell Link Interface
-# ^^^^^^^^^^^^^^^
-# This module creates an object oriented interface to the Win32
-# Shell Links (IShellLink interface).
-#
-#######################################################################
-
-$VERSION = "0.04";
-
-require Exporter;
-require DynaLoader;
-
-@ISA= qw( Exporter DynaLoader );
-@EXPORT = qw(
- SW_SHOWMAXIMIZED
- SW_SHOWMINNOACTIVE
- SW_SHOWNORMAL
-);
-
-
-#######################################################################
-# This AUTOLOAD is used to 'autoload' constants from the constant()
-# XS function. If a constant is not found then control is passed
-# to the AUTOLOAD in AutoLoader.
-#
-
-sub AUTOLOAD {
- my($constname);
- ($constname = $AUTOLOAD) =~ s/.*:://;
- #reset $! to zero to reset any current errors.
- local $!;
- my $val = constant($constname, @_ ? $_[0] : 0);
- if ($!) {
- my(undef, $file, $line) = caller;
- die "Win32::Shortcut::$constname is not defined, used at $file line $line.";
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-
-#######################################################################
-# PUBLIC METHODS
-#
-
-#========
-sub new {
-#========
- my($class, $file) = @_;
- my $self = {};
- my $ilink = 0;
- my $ifile = 0;
-
- ($ilink, $ifile) = _Instance();
-
- if($ilink and $ifile) {
- $self->{'ilink'} = $ilink;
- $self->{'ifile'} = $ifile;
- bless $self;
- # Initialize properties
- $self->{'File'} = "";
- $self->{'Path'} = "";
- $self->{'Arguments'} = "";
- $self->{'WorkingDirectory'} = "";
- $self->{'Description'} = "";
- $self->{'ShowCmd'} = 0;
- $self->{'Hotkey'} = 0;
- $self->{'IconLocation'} = "";
- $self->{'IconNumber'} = 0;
-
- $self->Load($file) if $file;
-
- } else {
- return undef;
- }
- $self;
-}
-
-#=========
-sub Load {
-#=========
- my($self, $file) = @_;
- return undef unless ref($self);
-
- my $result = _Load($self->{'ilink'}, $self->{'ifile'}, $file);
-
- if ($result) {
-
- # fill the properties of $self
- $self->{'File'} = $file;
- $self->{'Path'} = _GetPath($self->{'ilink'}, $self->{'ifile'},0);
- $self->{'ShortPath'} = _GetPath($self->{'ilink'}, $self->{'ifile'},1);
- $self->{'Arguments'} = _GetArguments($self->{'ilink'}, $self->{'ifile'});
- $self->{'WorkingDirectory'} = _GetWorkingDirectory($self->{'ilink'}, $self->{'ifile'});
- $self->{'Description'} = _GetDescription($self->{'ilink'}, $self->{'ifile'});
- $self->{'ShowCmd'} = _GetShowCmd($self->{'ilink'}, $self->{'ifile'});
- $self->{'Hotkey'} = _GetHotkey($self->{'ilink'}, $self->{'ifile'});
- ($self->{'IconLocation'},
- $self->{'IconNumber'}) = _GetIconLocation($self->{'ilink'}, $self->{'ifile'});
- }
- return $result;
-}
-
-
-#========
-sub Set {
-#========
- my($self, $path, $arguments, $dir, $description, $show, $hotkey,
- $iconlocation, $iconnumber) = @_;
- return undef unless ref($self);
-
- $self->{'Path'} = $path;
- $self->{'Arguments'} = $arguments;
- $self->{'WorkingDirectory'} = $dir;
- $self->{'Description'} = $description;
- $self->{'ShowCmd'} = $show;
- $self->{'Hotkey'} = $hotkey;
- $self->{'IconLocation'} = $iconlocation;
- $self->{'IconNumber'} = $iconnumber;
- return 1;
-}
-
-
-#=========
-sub Save {
-#=========
- my($self, $file) = @_;
- return unless ref($self);
-
- $file = $self->{'File'} unless $file;
- return unless $file;
-
- require Win32 unless defined &Win32::GetFullPathName;
- $file = Win32::GetFullPathName($file);
-
- _SetPath($self->{'ilink'}, $self->{'ifile'}, $self->{'Path'});
- _SetArguments($self->{'ilink'}, $self->{'ifile'}, $self->{'Arguments'});
- _SetWorkingDirectory($self->{'ilink'}, $self->{'ifile'}, $self->{'WorkingDirectory'});
- _SetDescription($self->{'ilink'}, $self->{'ifile'}, $self->{'Description'});
- _SetShowCmd($self->{'ilink'}, $self->{'ifile'}, $self->{'ShowCmd'});
- _SetHotkey($self->{'ilink'}, $self->{'ifile'}, $self->{'Hotkey'});
- _SetIconLocation($self->{'ilink'}, $self->{'ifile'},
- $self->{'IconLocation'}, $self->{'IconNumber'});
-
- my $result = _Save($self->{'ilink'}, $self->{'ifile'}, $file);
- if ($result) {
- $self->{'File'} = $file unless $self->{'File'};
- }
- return $result;
-}
-
-#============
-sub Resolve {
-#============
- my($self, $flags) = @_;
- return undef unless ref($self);
- $flags = 1 unless defined($flags);
- my $result = _Resolve($self->{'ilink'}, $self->{'ifile'}, $flags);
- return $result;
-}
-
-
-#==========
-sub Close {
-#==========
- my($self) = @_;
- return undef unless ref($self);
-
- my $result = _Release($self->{'ilink'}, $self->{'ifile'});
- $self->{'released'} = 1;
- return $result;
-}
-
-#=========
-sub Path {
-#=========
- my($self, $value) = @_;
- return undef unless ref($self);
-
- if(not defined($value)) {
- return $self->{'Path'};
- } else {
- $self->{'Path'} = $value;
- }
- return $self->{'Path'};
-}
-
-#==============
-sub ShortPath {
-#==============
- my($self) = @_;
- return undef unless ref($self);
- return $self->{'ShortPath'};
-}
-
-#==============
-sub Arguments {
-#==============
- my($self, $value) = @_;
- return undef unless ref($self);
-
- if(not defined($value)) {
- return $self->{'Arguments'};
- } else {
- $self->{'Arguments'} = $value;
- }
- return $self->{'Arguments'};
-}
-
-#=====================
-sub WorkingDirectory {
-#=====================
- my($self, $value) = @_;
- return undef unless ref($self);
-
- if(not defined($value)) {
- return $self->{'WorkingDirectory'};
- } else {
- $self->{'WorkingDirectory'} = $value;
- }
- return $self->{'WorkingDirectory'};
-}
-
-
-#================
-sub Description {
-#================
- my($self, $value) = @_;
- return undef unless ref($self);
-
- if(not defined($value)) {
- return $self->{'Description'};
- } else {
- $self->{'Description'} = $value;
- }
- return $self->{'Description'};
-}
-
-#============
-sub ShowCmd {
-#============
- my($self, $value) = @_;
- return undef unless ref($self);
-
- if(not defined($value)) {
- return $self->{'ShowCmd'};
- } else {
- $self->{'ShowCmd'} = $value;
- }
- return $self->{'ShowCmd'};
-}
-
-#===========
-sub Hotkey {
-#===========
- my($self, $value) = @_;
- return undef unless ref($self);
-
- if(not defined($value)) {
- return $self->{'Hotkey'};
- } else {
- $self->{'Hotkey'} = $value;
- }
- return $self->{'Hotkey'};
-}
-
-#=================
-sub IconLocation {
-#=================
- my($self, $value) = @_;
- return undef unless ref($self);
-
- if(not defined($value)) {
- return $self->{'IconLocation'};
- } else {
- $self->{'IconLocation'} = $value;
- }
- return $self->{'IconLocation'};
-}
-
-#===============
-sub IconNumber {
-#===============
- my($self, $value) = @_;
- return undef unless ref($self);
-
- if(not defined($value)) {
- return $self->{'IconNumber'};
- } else {
- $self->{'IconNumber'} = $value;
- }
- return $self->{'IconNumber'};
-}
-
-#============
-sub Version {
-#============
- # [dada] to get rid of the "used only once" warning...
- return $VERSION;
-}
-
-
-#######################################################################
-# PRIVATE METHODS
-#
-
-#============
-sub DESTROY {
-#============
- my($self) = @_;
-
- if (not $self->{'released'}) {
- _Release($self->{'ilink'}, $self->{'ifile'});
- $self->{'released'} = 1;
- }
-}
-
-bootstrap Win32::Shortcut;
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Win32/Sound.pm b/Master/tlpkg/tlperl/lib/Win32/Sound.pm
deleted file mode 100644
index a8d52a95117..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/Sound.pm
+++ /dev/null
@@ -1,582 +0,0 @@
-#######################################################################
-#
-# Win32::Sound - An extension to play with Windows sounds
-#
-# Author: Aldo Calpini <dada@divinf.it>
-# Version: 0.47
-# Info:
-# http://www.divinf.it/dada/perl
-# http://www.perl.com/CPAN/authors/Aldo_Calpini
-#
-#######################################################################
-# Version history:
-# 0.01 (19 Nov 1996) file created
-# 0.03 (08 Apr 1997) first release
-# 0.30 (20 Oct 1998) added Volume/Format/Devices/DeviceInfo
-# (thanks Dave Roth!)
-# 0.40 (16 Mar 1999) added the WaveOut object
-# 0.45 (09 Apr 1999) added $! support, documentation et goodies
-# 0.46 (25 Sep 1999) fixed small bug in DESTROY, wo was used without being
-# initialized (Gurusamy Sarathy <gsar@activestate.com>)
-# 0.47 (22 May 2000) support for passing Unicode string to Play()
-# (Doug Lankshear <dougl@activestate.com>)
-
-package Win32::Sound;
-
-# See the bottom of this file for the POD documentation.
-# Search for the string '=head'.
-
-require Exporter; # to export the constants to the main:: space
-require DynaLoader; # to dynuhlode the module.
-
-@ISA= qw( Exporter DynaLoader );
-@EXPORT = qw(
- SND_ASYNC
- SND_NODEFAULT
- SND_LOOP
- SND_NOSTOP
-);
-
-#######################################################################
-# This AUTOLOAD is used to 'autoload' constants from the constant()
-# XS function. If a constant is not found then control is passed
-# to the AUTOLOAD in AutoLoader.
-#
-
-sub AUTOLOAD {
- my($constname);
- ($constname = $AUTOLOAD) =~ s/.*:://;
- #reset $! to zero to reset any current errors.
- local $! = 0;
- my $val = constant($constname, @_ ? $_[0] : 0);
- if ($! != 0) {
-
- # [dada] This results in an ugly Autoloader error
-
- #if ($! =~ /Invalid/) {
- # $AutoLoader::AUTOLOAD = $AUTOLOAD;
- # goto &AutoLoader::AUTOLOAD;
- #} else {
-
- # [dada] ... I prefer this one :)
-
- ($pack, $file, $line) = caller;
- undef $pack; # [dada] and get rid of "used only once" warning...
- die "Win32::Sound::$constname is not defined, used at $file line $line.";
-
- #}
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-
-#######################################################################
-# STATIC OBJECT PROPERTIES
-#
-$VERSION="0.47";
-undef unless $VERSION; # [dada] to avoid "possible typo" warning
-
-#######################################################################
-# METHODS
-#
-
-sub Version { $VERSION }
-
-sub Volume {
- my(@in) = @_;
- # Allows '0%'..'100%'
- $in[0] =~ s{ ([\d\.]+)%$ }{ int($1*100/255) }ex if defined $in[0];
- $in[1] =~ s{ ([\d\.]+)%$ }{ int($1*100/255) }ex if defined $in[1];
- _Volume(@in);
-}
-
-#######################################################################
-# dynamically load in the Sound.dll module.
-#
-
-bootstrap Win32::Sound;
-
-#######################################################################
-# Win32::Sound::WaveOut
-#
-
-package Win32::Sound::WaveOut;
-
-sub new {
- my($class, $one, $two, $three) = @_;
- my $self = {};
- bless($self, $class);
-
- if($one !~ /^\d+$/
- and not defined($two)
- and not defined($three)) {
- # Looks like a file
- $self->Open($one);
- } else {
- # Default format if not given
- $self->{samplerate} = ($one or 44100);
- $self->{bits} = ($two or 16);
- $self->{channels} = ($three or 2);
- $self->OpenDevice();
- }
- return $self;
-}
-
-sub Volume {
- my(@in) = @_;
- # Allows '0%'..'100%'
- $in[0] =~ s{ ([\d\.]+)%$ }{ int($1*255/100) }ex if defined $in[0];
- $in[1] =~ s{ ([\d\.]+)%$ }{ int($1*255/100) }ex if defined $in[1];
- _Volume(@in);
-}
-
-sub Pitch {
- my($self, $pitch) = @_;
- my($int, $frac);
- if(defined($pitch)) {
- $pitch =~ /(\d+).?(\d+)?/;
- $int = $1;
- $frac = $2 or 0;
- $int = $int << 16;
- $frac = eval("0.$frac * 65536");
- $pitch = $int + $frac;
- return _Pitch($self, $pitch);
- } else {
- $pitch = _Pitch($self);
- $int = ($pitch & 0xFFFF0000) >> 16;
- $frac = $pitch & 0x0000FFFF;
- return eval("$int.$frac");
- }
-}
-
-sub PlaybackRate {
- my($self, $rate) = @_;
- my($int, $frac);
- if(defined($rate)) {
- $rate =~ /(\d+).?(\d+)?/;
- $int = $1;
- $frac = $2 or 0;
- $int = $int << 16;
- $frac = eval("0.$frac * 65536");
- $rate = $int + $frac;
- return _PlaybackRate($self, $rate);
- } else {
- $rate = _PlaybackRate($self);
- $int = ($rate & 0xFFFF0000) >> 16;
- $frac = $rate & 0x0000FFFF;
- return eval("$int.$frac");
- }
-}
-
-# Preloaded methods go here.
-
-#Currently Autoloading is not implemented in Perl for win32
-# Autoload methods go after __END__, and are processed by the autosplit program.
-
-1;
-__END__
-
-
-=head1 NAME
-
-Win32::Sound - An extension to play with Windows sounds
-
-=head1 SYNOPSIS
-
- use Win32::Sound;
- Win32::Sound::Volume('100%');
- Win32::Sound::Play("file.wav");
- Win32::Sound::Stop();
-
- # ...and read on for more fun ;-)
-
-=head1 FUNCTIONS
-
-=over 4
-
-=item B<Win32::Sound::Play(SOUND, [FLAGS])>
-
-Plays the specified sound: SOUND can the be name of a WAV file
-or one of the following predefined sound names:
-
- SystemDefault
- SystemAsterisk
- SystemExclamation
- SystemExit
- SystemHand
- SystemQuestion
- SystemStart
-
-Additionally, if the named sound could not be found, the
-function plays the system default sound (unless you specify the
-C<SND_NODEFAULT> flag). If no parameters are given, this function
-stops the sound actually playing (see also Win32::Sound::Stop).
-
-FLAGS can be a combination of the following constants:
-
-=over 4
-
-=item C<SND_ASYNC>
-
-The sound is played asynchronously and the function
-returns immediately after beginning the sound
-(if this flag is not specified, the sound is
-played synchronously and the function returns
-when the sound ends).
-
-=item C<SND_LOOP>
-
-The sound plays repeatedly until it is stopped.
-You must also specify C<SND_ASYNC> flag.
-
-=item C<SND_NODEFAULT>
-
-No default sound is used. If the specified I<sound>
-cannot be found, the function returns without
-playing anything.
-
-=item C<SND_NOSTOP>
-
-If a sound is already playing, the function fails.
-By default, any new call to the function will stop
-previously playing sounds.
-
-=back
-
-=item B<Win32::Sound::Stop()>
-
-Stops the sound currently playing.
-
-=item B<Win32::Sound::Volume()>
-
-Returns the wave device volume; if
-called in an array context, returns left
-and right values. Otherwise, returns a single
-32 bit value (left in the low word, right
-in the high word).
-In case of error, returns C<undef> and sets
-$!.
-
-Examples:
-
- ($L, $R) = Win32::Sound::Volume();
- if( not defined Win32::Sound::Volume() ) {
- die "Can't get volume: $!";
- }
-
-=item B<Win32::Sound::Volume(LEFT, [RIGHT])>
-
-Sets the wave device volume; if two arguments
-are given, sets left and right channels
-independently, otherwise sets them both to
-LEFT (eg. RIGHT=LEFT). Values range from
-0 to 65535 (0xFFFF), but they can also be
-given as percentage (use a string containing
-a number followed by a percent sign).
-
-Returns C<undef> and sets $! in case of error,
-a true value if successful.
-
-Examples:
-
- Win32::Sound::Volume('50%');
- Win32::Sound::Volume(0xFFFF, 0x7FFF);
- Win32::Sound::Volume('100%', '50%');
- Win32::Sound::Volume(0);
-
-=item B<Win32::Sound::Format(filename)>
-
-Returns information about the specified WAV file format;
-the array contains:
-
-=over
-
-=item * sample rate (in Hz)
-
-=item * bits per sample (8 or 16)
-
-=item * channels (1 for mono, 2 for stereo)
-
-=back
-
-Example:
-
- ($hz, $bits, $channels)
- = Win32::Sound::Format("file.wav");
-
-
-=item B<Win32::Sound::Devices()>
-
-Returns all the available sound devices;
-their names contain the type of the
-device (WAVEOUT, WAVEIN, MIDIOUT,
-MIDIIN, AUX or MIXER) and
-a zero-based ID number: valid devices
-names are for example:
-
- WAVEOUT0
- WAVEOUT1
- WAVEIN0
- MIDIOUT0
- MIDIIN0
- AUX0
- AUX1
- AUX2
-
-There are also two special device
-names, C<WAVE_MAPPER> and C<MIDI_MAPPER>
-(the default devices for wave output
-and midi output).
-
-Example:
-
- @devices = Win32::Sound::Devices();
-
-=item Win32::Sound::DeviceInfo(DEVICE)
-
-Returns an associative array of information
-about the sound device named DEVICE (the
-same format of Win32::Sound::Devices).
-
-The content of the array depends on the device
-type queried. Each device type returns B<at least>
-the following information:
-
- manufacturer_id
- product_id
- name
- driver_version
-
-For additional data refer to the following
-table:
-
- WAVEIN..... formats
- channels
-
- WAVEOUT.... formats
- channels
- support
-
- MIDIOUT.... technology
- voices
- notes
- channels
- support
-
- AUX........ technology
- support
-
- MIXER...... destinations
- support
-
-The meaning of the fields, where not
-obvious, can be evinced from the
-Microsoft SDK documentation (too long
-to report here, maybe one day... :-).
-
-Example:
-
- %info = Win32::Sound::DeviceInfo('WAVE_MAPPER');
- print "$info{name} version $info{driver_version}\n";
-
-=back
-
-=head1 THE WaveOut PACKAGE
-
-Win32::Sound also provides a different, more
-powerful approach to wave audio data with its
-C<WaveOut> package. It has methods to load and
-then play WAV files, with the additional feature
-of specifying the start and end range, so you
-can play only a portion of an audio file.
-
-Furthermore, it is possible to load arbitrary
-binary data to the soundcard to let it play and
-save them back into WAV files; in a few words,
-you can do some sound synthesis work.
-
-=head2 FUNCTIONS
-
-=over
-
-=item new Win32::Sound::WaveOut(FILENAME)
-
-=item new Win32::Sound::WaveOut(SAMPLERATE, BITS, CHANNELS)
-
-=item new Win32::Sound::WaveOut()
-
-This function creates a C<WaveOut> object; the
-first form opens the specified wave file (see
-also C<Open()> ), so you can directly C<Play()> it.
-
-The second (and third) form opens the
-wave output device with the format given
-(or if none given, defaults to 44.1kHz,
-16 bits, stereo); to produce something
-audible you can either C<Open()> a wave file
-or C<Load()> binary data to the soundcard
-and then C<Write()> it.
-
-=item Close()
-
-Closes the wave file currently opened.
-
-=item CloseDevice()
-
-Closes the wave output device; you can change
-format and reopen it with C<OpenDevice()>.
-
-=item GetErrorText(ERROR)
-
-Returns the error text associated with
-the specified ERROR number; note it only
-works for wave-output-specific errors.
-
-=item Load(DATA)
-
-Loads the DATA buffer in the soundcard.
-The format of the data buffer depends
-on the format used; for example, with
-8 bit mono each sample is one character,
-while with 16 bit stereo each sample is
-four characters long (two 16 bit values
-for left and right channels). The sample
-rate defines how much samples are in one
-second of sound. For example, to fit one
-second at 44.1kHz 16 bit stereo your buffer
-must contain 176400 bytes (44100 * 4).
-
-=item Open(FILE)
-
-Opens the specified wave FILE.
-
-=item OpenDevice()
-
-Opens the wave output device with the
-current sound format (not needed unless
-you used C<CloseDevice()>).
-
-=item Pause()
-
-Pauses the sound currently playing;
-use C<Restart()> to continue playing.
-
-=item Play( [FROM, TO] )
-
-Plays the opened wave file. You can optionally
-specify a FROM - TO range, where FROM and TO
-are expressed in samples (or use FROM=0 for the
-first sample and TO=-1 for the last sample).
-Playback happens always asynchronously, eg. in
-the background.
-
-=item Position()
-
-Returns the sample number currently playing;
-note that the play position is not zeroed
-when the sound ends, so you have to call a
-C<Reset()> between plays to receive the
-correct position in the current sound.
-
-=item Reset()
-
-Stops playing and resets the play position
-(see C<Position()>).
-
-=item Restart()
-
-Continues playing the sound paused by C<Pause()>.
-
-=item Save(FILE, [DATA])
-
-Writes the DATA buffer (if not given, uses the
-buffer currently loaded in the soundcard)
-to the specified wave FILE.
-
-=item Status()
-
-Returns 0 if the soundcard is currently playing,
-1 if it's free, or C<undef> on errors.
-
-=item Unload()
-
-Frees the soundcard from the loaded data.
-
-=item Volume( [LEFT, RIGHT] )
-
-Gets or sets the volume for the wave output device.
-It works the same way as Win32::Sound::Volume.
-
-=item Write()
-
-Plays the data currently loaded in the soundcard;
-playback happens always asynchronously, eg. in
-the background.
-
-=back
-
-=head2 THE SOUND FORMAT
-
-The sound format is stored in three properties of
-the C<WaveOut> object: C<samplerate>, C<bits> and
-C<channels>.
-If you need to change them without creating a
-new object, you should close before and reopen
-afterwards the device.
-
- $WAV->CloseDevice();
- $WAV->{samplerate} = 44100; # 44.1kHz
- $WAV->{bits} = 8; # 8 bit
- $WAV->{channels} = 1; # mono
- $WAV->OpenDevice();
-
-You can also use the properties to query the
-sound format currently used.
-
-=head2 EXAMPLE
-
-This small example produces a 1 second sinusoidal
-wave at 440Hz and saves it in F<sinus.wav>:
-
- use Win32::Sound;
-
- # Create the object
- $WAV = new Win32::Sound::WaveOut(44100, 8, 2);
-
- $data = "";
- $counter = 0;
- $increment = 440/44100;
-
- # Generate 44100 samples ( = 1 second)
- for $i (1..44100) {
-
- # Calculate the pitch
- # (range 0..255 for 8 bits)
- $v = sin($counter/2*3.14) * 128 + 128;
-
- # "pack" it twice for left and right
- $data .= pack("cc", $v, $v);
-
- $counter += $increment;
- }
-
- $WAV->Load($data); # get it
- $WAV->Write(); # hear it
- 1 until $WAV->Status(); # wait for completion
- $WAV->Save("sinus.wav"); # write to disk
- $WAV->Unload(); # drop it
-
-=head1 VERSION
-
-Win32::Sound version 0.46, 25 Sep 1999.
-
-=head1 AUTHOR
-
-Aldo Calpini, C<dada@divinf.it>
-
-Parts of the code provided and/or suggested by Dave Roth.
-
-=cut
-
-
diff --git a/Master/tlpkg/tlperl/lib/Win32/Test.pl b/Master/tlpkg/tlperl/lib/Win32/Test.pl
deleted file mode 100644
index 235e94bdd78..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/Test.pl
+++ /dev/null
@@ -1,477 +0,0 @@
-#####
-# T E S T . P L
-# -------------
-# A test script for exercising the Win32::ODBC extension. Install
-# the ODBC.PLL extension and the ODBC.PM wrapper, set up an ODBC
-# DSN (Data Source Name) by the ODBC administrator, then give this a try!
-#
-# READ THE DOCUMENTATION -- I AM NOT RESPOSIBLE FOR ANY PROBLEMS THAT
-# THIS MAY CAUSE WHATSOEVER. BY USING THIS OR ANY ---
-# OF THE WIN32::ODBC PARTS FOUND IN THE DISTRIBUTION YOU ARE AGREEING
-# WITH THE TERMS OF THIS DISTRIBUTION!!!!!
-#
-#
-# You have been warned.
-# --- ---- ---- ------
-#
-# Updated to test newest version v961007. Dave Roth <rothd@roth.net>
-# This version contains a small sample database (in MS Access 7.0
-# format) called ODBCTest.mdb. Place this database in the same
-# directory as this test.pl file.
-#
-# --------------------------------------------------------------------
-#
-# SYNTAX:
-# perl test.pl ["DSN Name" [Max Rows]]
-#
-# DSN Name....Name of DSN that will be used. If this is
-# omitted then we will use the obnoxious default DSN.
-# Max Rows....Maximum number of rows wanted to be retrieved from
-# the DSN.
-# - If this is 0 then the request is to retrieve as
-# many as possible.
-# - If this is a value greater than that which the DSN
-# driver can handle the value will be the greatest
-# the DSN driver allows.
-# - If omitted then we use the default value.
-#####
-
- use Win32::ODBC;
-
-
- $TempDSN = "Win32 ODBC Test --123xxYYzz987--";
- $iTempDSN = 1;
-
- if (!($DSN = $ARGV[0])){
- $DSN = $TempDSN;
- }
- $MaxRows = 8 unless defined ($MaxRows = $ARGV[1]);
-
- $DriverType = "Microsoft Access Driver (*.mdb)";
- $Desc = "Description=The Win32::ODBC Test DSN for Perl";
- $Dir = Win32::GetCwd();
- $DBase = "ODBCTest.mdb";
-
- $iWidth=60;
- %SQLStmtTypes = (SQL_CLOSE, "SQL_CLOSE", SQL_DROP, "SQL_DROP", SQL_UNBIND, "SQL_UNBIND", SQL_RESET_PARAMS, "SQL_RESET_PARAMS");
-
-# Initialize();
-
- ($Name, $Version, $Date, $Author, $CompileDate, $CompileTime, $Credits) = Win32::ODBC::Info();
- print "\n";
- print "\t+", "=" x ($iWidth), "+\n";
- print "\t|", Center("", $iWidth), "|\n";
- print "\t|", Center("", $iWidth), "|\n";
- print "\t|", Center("$Name", $iWidth), "|\n";
- print "\t|", Center("-" x length("$Name"), $iWidth), "|\n";
- print "\t|", Center("", $iWidth), "|\n";
-
- print "\t|", Center("Version $Version ($Date)", $iWidth), "|\n";
- print "\t|", Center("by $Author", $iWidth), "|\n";
- print "\t|", Center("Compiled on $CompileDate at $CompileTime.", $iWidth), "|\n";
- print "\t|", Center("", $iWidth), "|\n";
- print "\t|", Center("Credits:", $iWidth), "|\n";
- print "\t|", Center(("-" x length("Credits:")), $iWidth), "|\n";
- foreach $Temp (split("\n", $Credits)){
- print "\t|", Center("$Temp", $iWidth), "|\n";
- }
- print "\t|", Center("", $iWidth), "|\n";
- print "\t+", "=" x ($iWidth), "+\n";
-
-####
-# T E S T 1
-####
- PrintTest(1, "Dump available ODBC Drivers");
- print "\nAvailable ODBC Drivers:\n";
- if (!(%Drivers = Win32::ODBC::Drivers())){
- $Failed{'Test 1'} = "Drivers(): " . Win32::ODBC::Error();
- }
- foreach $Driver (keys(%Drivers)){
- print " Driver=\"$Driver\"\n Attributes: ", join("\n" . " "x14, sort(split(';', $Drivers{$Driver}))), "\n\n";
- }
-
-
-####
-# T E S T 2
-####
- PrintTest(2,"Dump available datasources");
-
- ####
- # Notice you don't need an instantiated object to use this...
- ####
- print "\nHere are the available datasources...\n";
- if (!(%DSNs = Win32::ODBC::DataSources())){
- $Failed{'Test 2'} = "DataSources(): " . Win32::ODBC::Error();
- }
- foreach $Temp (keys(%DSNs)){
- if (($Temp eq $TempDSN) && ($DSNs{$Temp} eq $DriverType)){
- $iTempDSNExists++;
- }
- if ($DSN =~ /$Temp/i){
- $iTempDSN = 0;
- $DriverType = $DSNs{$Temp};
- }
- print "\tDSN=\"$Temp\" (\"$DSNs{$Temp}\")\n";
- }
-
-####
-# T E S T 2.5
-####
- # IF WE DO NOT find the DSN the user specified...
- if ($iTempDSN){
- PrintTest("2.5", "Create a Temporary DSN");
-
- print "\n\tCould not find the DSN (\"$DSN\") so we will\n\tuse a temporary one (\"$TempDSN\")...\n\n";
-
- $DSN = $TempDSN;
-
- if (! $iTempDSNExists){
- print "\tAdding DSN \"$DSN\"...";
- if (Win32::ODBC::ConfigDSN(ODBC_ADD_DSN, $DriverType, ("DSN=$DSN", "Description=The Win32 ODBC Test DSN for Perl", "DBQ=$Dir\\$DBase", "DEFAULTDIR=$Dir", "UID=", "PWD="))){
- print "Successful!\n";
- }else{
- print "Failure\n";
- $Failed{'Test 2.5'} = "ConfigDSN(): Could not add \"$DSN\": " . Win32::ODBC::Error();
- # If we failed here then use the last DSN we listed in Test 2
- $DriverType = $DSNs{$Temp};
- $DSN = $Temp;
- print "\n\tCould not add a temporary DSN so using the last one listed:\n";
- print "\t\t$DSN ($DriverType)\n";
-
- }
- }
- }
-
-####
-# Report What Driver/DSN we are using
-####
-
- print "\n\nWe are using the DSN:\n\tDSN = \"$DSN\"\n";
- print "\tDriver = \"$DriverType\"\n\n";
-
-
-####
-# T E S T 3
-####
- PrintTest(3, "Open several ODBC connections");
- print "\n\tOpening ODBC connection for \"$DSN\"...\n\t\t";
- if (!($O = new Win32::ODBC($DSN))){
- print "Failure. \n\n";
- $Failed{'Test 3a'} = "new(): " . Win32::ODBC::Error();
- PresentErrors();
- exit();
- }else{
- print "Success (connection #", $O->Connection(), ")\n\n";
- }
-
- print "\tOpening ODBC connection for \"$DSN\"...\n\t\t";
- if (!($O2 = new Win32::ODBC($DSN))){
- $Failed{'Test 3b'} = "new(): " . Win32::ODBC::Error();
- print "Failure. \n\n";
- }else{
- print "Success (connection #", $O2->Connection(), ")\n\n";
- }
-
- print "\tOpening ODBC connection for \"$DSN\"\n\t\t";
- if (!($O3 = new Win32::ODBC($DSN))){
- $Failed{'Test 3c'} = "new(): " . Win32::ODBC::Error();
- print "Failure. \n\n";
- }else{
- print "Success (connection #", $O3->Connection(), ")\n\n";
- }
-
-
-####
-# T E S T 4
-####
- PrintTest(4, "Close all but one connection");
-
- print "\n\tCurrently open ODBC connections are: \"", join(", ", sort($O2->GetConnections())), "\"\n";
- print "\tClosing ODBC connection #", $O2->Connection(), "...\n";
- print "\t\t...", (($O2->Close())? "Successful.":"Failure."), "\n";
-
- print "\n\tCurrently open ODBC connections are: \"", join(", ", sort($O3->GetConnections())), "\"\n";
- print "\tClosing ODBC connection #", $O3->Connection(), "...\n";
- print "\t\t...", (($O3->Close())? "Successful.":"Failure."), "\n";
-
- print "\n\tCurrently open ODBC connections are: \"", join(", ", sort($O2->GetConnections())), "\"\n";
-
-####
-# T E S T 5
-####
- PrintTest(5, "Set/query Max Buffer size for a connection");
-
- srand(time);
- $Temp = int(rand(10240)) + 10240;
- print "\nMaximum Buffer Size for connection #", $O->Connection(), ":\n";
- print "\tValue set at ", $O->GetMaxBufSize(), "\n";
-
- print "\tSetting Maximum Buffer Size to $Temp... it has been set to ", $O->SetMaxBufSize($Temp), "\n";
- print "\tValue set at ", $O->GetMaxBufSize(), "\n";
-
- $Temp += int(rand(10240)) + 102400;
- print "\tSetting Maximum Buffer Size to $Temp... (can not be more than 102400)\n\t\t...it has been set to ", $O->SetMaxBufSize($Temp), "\n";
- print "\tValue set at ", $O->GetMaxBufSize(), "\n";
-
- $Temp = int(rand(1024)) + 2048;
- print "\tSetting Maximum Buffer Size to $Temp... it has been set to ", $O->SetMaxBufSize($Temp), "\n";
-
- print "\tValue set at ", $O->GetMaxBufSize(), "\n";
-
-
-####
-# T E S T 6
-####
- PrintTest(6, "Set/query Stmt Close Type");
-
- print "\n\tStatement Close Type is currently set as ", $O->GetStmtCloseType(), " " . $O->Error . "\n";
- print "\tSetting Statement Close Type to SQL_CLOSE: (returned code of ", $O->SetStmtCloseType(SQL_CLOSE), ")" . $O->Error . "\n";
- print "\tStatement Close Type is currently set as ", $O->GetStmtCloseType(), " " . $O->Error ."\n";
-
-
-####
-# T E S T 7
-####
- PrintTest(7, "Dump DSN for current connection");
-
- if (! (%DSNAttributes = $O->GetDSN())){
- $Failed{'Test 7'} = "GetDSN(): " . $O->Error();
- }else{
- print"\nThe DSN for connection #", $O->Connection(), ":\n";
- print "\tDSN...\n";
- foreach (sort(keys(%DSNAttributes))){
- print "\t$_ = \"$DSNAttributes{$_}\"\n";
- }
- }
-
-
-
-####
-# T E S T 8
-####
- PrintTest(8, "Dump list of ALL tables in datasource");
-
- print "\nList of tables for \"$DSN\"\n\n";
- $Num = 0;
- if ($O->Catalog("", "", "%", "'TABLE','VIEW','SYSTEM TABLE', 'GLOBAL TEMPORARY','LOCAL TEMPORARY','ALIAS','SYNONYM'")){
-
- print "\tCursor is currently named \"", $O->GetCursorName(), "\".\n";
- print "\tRenaming cursor to \"TestCursor\"...", (($O->SetCursorName("TestCursor"))? "Success":"Failure"), ".\n";
- print "\tCursor is currently named \"", $O->GetCursorName(), "\".\n\n";
-
- @FieldNames = $O->FieldNames();
-
- $~ = "Test_8_Header";
- write;
-
- $~ = "Test_8_Body";
- while($O->FetchRow()){
- undef %Data;
- %Data = $O->DataHash();
- write;
- }
- }
- print "\n\tTotal number of tables displayed: $Num\n";
-
-
-
-####
-# T E S T 9
-####
- PrintTest(9, "Dump list of non-system tables and views in datasource");
-
- print "\n";
- $Num = 0;
-
- foreach $Temp ($O->TableList("", "", "%", "TABLE, VIEW, SYSTEM_TABLE")){
- $Table = $Temp;
- print "\t", ++$Num, ".) \"$Temp\"\n";
- }
- print "\n\tTotal number of tables displayed: $Num\n";
-
-
-####
-# T E S T 10
-####
- PrintTest(10, "Dump contents of the table: \"$Table\"");
-
- print "\n";
-
- print "\tResetting (dropping) cursor...", (($O->DropCursor())? "Successful":"Failure"), ".\n\n";
-
- print "\tCurrently the cursor type is: ", $O->GetStmtOption($O->SQL_CURSOR_TYPE), "\n";
- print "\tSetting Cursor to Dynamic (", ($O->SQL_CURSOR_DYNAMIC), ")...", (($O->SetStmtOption($O->SQL_CURSOR_TYPE, $O->SQL_CURSOR_DYNAMIC))? "Success":"Failure"), ".\n";
- print "\t\tThis may have failed depending on your ODBC Driver.\n";
- print "\t\tThis is not really a problem, it will default to another value.\n";
- print "\tUsing the cursor type of: ", $O->GetStmtOption($O->SQL_CURSOR_TYPE), "\n\n";
-
- print "\tSetting the connection to only grab $MaxRows row", ($MaxRows == 1)? "":"s", " maximum...";
- if ($O->SetStmtOption($O->SQL_MAX_ROWS, $MaxRows)){
- print "Success!\n";
- }else{
- $Failed{'Test 10a'} = "SetStmtOption(): " . Win32::ODBC::Error();
- print "Failure.\n";
- }
-
- $iTemp = $O->GetStmtOption($O->SQL_MAX_ROWS);
- print "\tUsing the maximum rows: ", (($iTemp)? $iTemp:"No maximum limit"), "\n\n";
-
- print "\tCursor is currently named \"", $O->GetCursorName(), "\".\n";
- print "\tRenaming cursor to \"TestCursor\"...", (($O->SetCursorName("TestCursor"))? "Success":"Failure"), ".\n";
- print "\tCursor is currently named \"", $O->GetCursorName(), "\".\n\n";
-
- if (! $O->Sql("SELECT * FROM [$Table]")){
- @FieldNames = $O->FieldNames();
- $Cols = $#FieldNames + 1;
- $Cols = 8 if ($Cols > 8);
-
- $FmH = "format Test_10_Header =\n";
- $FmH2 = "";
- $FmH3 = "";
- $FmB = "format Test_10_Body = \n";
- $FmB2 = "";
-
- for ($iTemp = 0; $iTemp < $Cols; $iTemp++){
- $FmH .= "@" . "<" x (80/$Cols - 2) . " ";
- $FmH2 .= "\$FieldNames[$iTemp],";
- $FmH3 .= "-" x (80/$Cols - 1) . " ";
-
- $FmB .= "@" . "<" x (80/$Cols - 2) . " ";
- $FmB2 .= "\$Data{\$FieldNames[$iTemp]},";
- }
- chop $FmH2;
- chop $FmB2;
-
- eval"$FmH\n$FmH2\n$FmH3\n.\n";
- eval "$FmB\n$FmB2\n.\n";
-
- $~ = "Test_10_Header";
- write();
- $~ = "Test_10_Body";
-
- # Fetch the next rowset
- while($O->FetchRow()){
- undef %Data;
- %Data = $O->DataHash();
- write();
- }
- ####
- # THE preceeding block could have been written like this:
- # ------------------------------------------------------
- #
- # print "\tCurrently the cursor type is: ", $O->GetStmtOption($O->SQL_CURSOR_TYPE), "\n";
- # print "\tSetting Cursor to Dynamic (", ($O->SQL_CURSOR_DYNAMIC), ")...", (($O->SetStmtOption($O->SQL_CURSOR_TYPE, $O->SQL_CURSOR_DYNAMIC))? "Success":"Failure"), ".\n";
- # print "\t\tThis may have failed depending on your ODBC Driver. No real problem.\n";
- # print "\tUsing the cursor type of: ", $O->GetStmtOption($O->SQL_CURSOR_TYPE), "\n\n";
- #
- # print "\tSetting rowset size = 15 ...", (($O->SetStmtOption($O->SQL_ROWSET_SIZE, 15))? "Success":"Failure"), ".\n";
- # print "\tGetting rowset size: ", $O->GetStmtOption($O->SQL_ROWSET_SIZE), "\n\n";
- #
- # while($O->FetchRow()){
- # $iNum = 1;
- # # Position yourself in the rowset
- # while($O->SetPos($iNum++ ,$O->SQL_POSITION, $O->SQL_LOCK_NO_CHANGE)){
- # undef %Data;
- # %Data = $O->DataHash();
- # write();
- # }
- # print "\t\tNext rowset...\n";
- # }
- #
- # The reason I didn't write it that way (which is easier) is to
- # show that we can now SetPos(). Also Fetch() now uses
- # SQLExtendedFetch() so it can position itself and retrieve
- # rowsets. Notice earlier in this Test 10 we set the
- # SQL_ROWSET_SIZE. If this was not set it would default to
- # no limit (depending upon your ODBC Driver).
- ####
-
- print "\n\tNo more records available.\n";
- }else{
- $Failed{'Test 10'} = "Sql(): " . $O->Error();
- }
-
- $O->Close();
-
-####
-# T E S T 11
-####
- if ($iTempDSN){
- PrintTest(11, "Remove the temporary DSN");
- print "\n\tRemoving the temporary DSN:\n";
- print "\t\tDSN = \"$DSN\"\n\t\tDriver = \"$DriverType\"\n";
-
- if (Win32::ODBC::ConfigDSN(ODBC_REMOVE_DSN, $DriverType, "DSN=$DSN")){
- print "\tSuccessful!\n";
- }else{
- print "\tFailed.\n";
- $Failed{'Test 11'} = "ConfigDSN(): Could not remove \"$DSN\":" . Win32::ODBC::Error();
- }
- }
-
-
- PrintTest("E N D O F T E S T");
- PresentErrors();
-
-
-
-#----------------------- F U N C T I O N S ---------------------------
-
-sub Error{
- my($Data) = @_;
- $Data->DumpError() if ref($Data);
- Win32::ODBC::DumpError() if ! ref($Data);
-}
-
-
-sub Center{
- local($Temp, $Width) = @_;
- local($Len) = ($Width - length($Temp)) / 2;
- return " " x int($Len), $Temp, " " x (int($Len) + (($Len != int($Len))? 1:0));
-}
-
-sub PrintTest{
- my($Num, $String) = @_;
- my($Temp);
- if (length($String)){
- $Temp = " T E S T $Num $String ";
- }else{
- $Temp = " $Num ";
- }
- $Len = length($Temp);
- print "\n", "-" x ((79 - $Len)/2), $Temp, "-" x ((79 - $Len)/2 - 1), "\n";
- print "\t$String\n";
-}
-
-sub PresentErrors{
- PrintTest("", "Error Report:");
- if (keys(%Failed)){
- print "The following were errors:\n";
- foreach (sort(keys(%Failed))){
- print "$_ = $Failed{$_}\n";
- }
- }else{
- print "\n\nThere were no errors reported during this test.\n\n";
- }
-}
-
-
-sub Initialize{
-format Test_8_Header =
- @<<<<<<<<<<<<<<<<<<<<<<<<<<< @|||||||||||| @|||||||||||| @|||||||||||
- $FieldNames[0], $FieldNames[1], $FieldNames[2], $FieldNames[3]
- ---------------------------- ------------- ------------- ------------
-.
-format Test_8_Body =
- @>. @<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<< @<<<<<<<<<<<< @<<<<<<<<<<<
- ++$Num, $Data{$FieldNames[0]}, $Data{$FieldNames[1]}, $Data{$FieldNames[2]}, $Data{$FieldNames[3]}
-.
-format Test_9_Header =
- @<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<< @<<<<<<<<<<<<<< @<<<<<<<<<<<<<<
- $FieldNames[0], $FieldNames[1], $FieldNames[2], $FieldNames[3]
-.
-format Test_9_Body =
- @<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<< @<<<<<<<<<<<<<< @<<<<<<<<<<<<<<
- $Data{$FieldNames[0]}, $Data{$FieldNames[1]}, $Data{$FieldNames[2]}, $Data{$FieldNames[3]}
-.
-}
diff --git a/Master/tlpkg/tlperl/lib/Win32/TieRegistry.pm b/Master/tlpkg/tlperl/lib/Win32/TieRegistry.pm
deleted file mode 100644
index 0abbbddb6b8..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/TieRegistry.pm
+++ /dev/null
@@ -1,3801 +0,0 @@
-# Win32/TieRegistry.pm -- Perl module to easily use a Registry
-# (on Win32 systems so far).
-# by Tye McQueen, tye@metronet.com, see http://www.metronet.com/~tye/.
-
-#
-# Skip to "=head" line for user documentation.
-#
-
-
-package Win32::TieRegistry;
-
-
-use strict;
-use vars qw( $PACK $VERSION @ISA @EXPORT @EXPORT_OK );
-
-$PACK= "Win32::TieRegistry"; # Used in error messages.
-$VERSION= '0.26';
-
-
-use Carp;
-
-require Tie::Hash;
-@ISA= qw(Tie::Hash);
-
-# Required other modules:
-use Win32API::Registry 0.12 qw( :KEY_ :HKEY_ :REG_ );
-
-#Optional other modules:
-use vars qw( $_NoMoreItems $_FileNotFound $_TooSmall $_MoreData $_SetDualVar );
-
-if( eval { require Win32::WinError } ) {
- $_NoMoreItems= Win32::WinError::constant("ERROR_NO_MORE_ITEMS",0);
- $_FileNotFound= Win32::WinError::constant("ERROR_FILE_NOT_FOUND",0);
- $_TooSmall= Win32::WinError::constant("ERROR_INSUFFICIENT_BUFFER",0);
- $_MoreData= Win32::WinError::constant("ERROR_MORE_DATA",0);
-} else {
- $_NoMoreItems= "^No more data";
- $_FileNotFound= "cannot find the file";
- $_TooSmall= " data area passed to ";
- $_MoreData= "^more data is avail";
-}
-if( $_SetDualVar= eval { require SetDualVar } ) {
- import SetDualVar;
-}
-
-
-#Implementation details:
-# When opened:
-# HANDLE long; actual handle value
-# MACHINE string; name of remote machine ("" if local)
-# PATH list ref; machine-relative full path for this key:
-# ["LMachine","System","Disk"]
-# ["HKEY_LOCAL_MACHINE","System","Disk"]
-# DELIM char; delimiter used to separate subkeys (def="\\")
-# OS_DELIM char; always "\\" for Win32
-# ACCESS long; usually KEY_ALL_ACCESS, perhaps KEY_READ, etc.
-# ROOTS string; var name for "Lmachine"->HKEY_LOCAL_MACHINE map
-# FLAGS int; bits to control certain options
-# Often:
-# VALUES ref to list of value names (data/type never cached)
-# SUBKEYS ref to list of subkey names
-# SUBCLASSES ref to list of subkey classes
-# SUBTIMES ref to list of subkey write times
-# MEMBERS ref to list of subkey_name.DELIM's, DELIM.value_name's
-# MEMBHASH hash ref to with MEMBERS as keys and 1's as values
-# Once Key "Info" requested:
-# Class CntSubKeys CntValues MaxSubKeyLen MaxSubClassLen
-# MaxValNameLen MaxValDataLen SecurityLen LastWrite
-# If is tied to a hash and iterating over key values:
-# PREVIDX int; index of last MEMBERS element return
-# If is the key object returned by Load():
-# UNLOADME list ref; information about Load()ed key
-# If is a subkey of a "loaded" key other than the one returned by Load():
-# DEPENDON obj ref; object that can't be destroyed before us
-
-
-#Package-local variables:
-
-# Option flag bits:
-use vars qw( $Flag_ArrVal $Flag_TieVal $Flag_DualTyp $Flag_DualBin
- $Flag_FastDel $Flag_HexDWord $Flag_Split $Flag_FixNulls );
-$Flag_ArrVal= 0x0001;
-$Flag_TieVal= 0x0002;
-$Flag_FastDel= 0x0004;
-$Flag_HexDWord= 0x0008;
-$Flag_Split= 0x0010;
-$Flag_DualTyp= 0x0020;
-$Flag_DualBin= 0x0040;
-$Flag_FixNulls= 0x0080;
-
-
-use vars qw( $RegObj %_Roots %RegHash $Registry );
-
-# Short-hand for HKEY_* constants:
-%_Roots= (
- "Classes" => HKEY_CLASSES_ROOT,
- "CUser" => HKEY_CURRENT_USER,
- "LMachine" => HKEY_LOCAL_MACHINE,
- "Users" => HKEY_USERS,
- "PerfData" => HKEY_PERFORMANCE_DATA, # Too picky to be useful
- "CConfig" => HKEY_CURRENT_CONFIG,
- "DynData" => HKEY_DYN_DATA, # Too picky to be useful
-);
-
-# Basic master Registry object:
-$RegObj= {};
-@$RegObj{qw( HANDLE MACHINE PATH DELIM OS_DELIM ACCESS FLAGS ROOTS )}= (
- "NONE", "", [], "\\", "\\",
- KEY_READ|KEY_WRITE, $Flag_HexDWord|$Flag_FixNulls, "${PACK}::_Roots" );
-$RegObj->{FLAGS} |= $Flag_DualTyp|$Flag_DualBin if $_SetDualVar;
-bless $RegObj;
-
-# Fill cache for master Registry object:
-@$RegObj{qw( VALUES SUBKEYS SUBCLASSES SUBTIMES )}= (
- [], [ keys(%_Roots) ], [], [] );
-grep( s#$#$RegObj->{DELIM}#,
- @{ $RegObj->{MEMBERS}= [ @{$RegObj->{SUBKEYS}} ] } );
-@$RegObj{qw( Class MaxSubKeyLen MaxSubClassLen MaxValNameLen
- MaxValDataLen SecurityLen LastWrite CntSubKeys CntValues )}=
- ( "", 0, 0, 0, 0, 0, 0, 0, 0 );
-
-# Create master Registry tied hash:
-$RegObj->Tie( \%RegHash );
-
-# Create master Registry combination object and tied hash reference:
-$Registry= \%RegHash;
-bless $Registry;
-
-
-# Preloaded methods go here.
-
-
-# Map option names to name of subroutine that controls that option:
-use vars qw( @_opt_subs %_opt_subs );
-@_opt_subs= qw( Delimiter ArrayValues TieValues SplitMultis DWordsToHex
- FastDelete FixSzNulls DualTypes DualBinVals AllowLoad AllowSave );
-@_opt_subs{@_opt_subs}= @_opt_subs;
-
-sub import
-{
- my $pkg= shift(@_);
- my $level= $Exporter::ExportLevel;
- my $expto= caller($level);
- my @export= ();
- my @consts= ();
- my $registry= $Registry->Clone;
- local( $_ );
- while( @_ ) {
- $_= shift(@_);
- if( /^\$(\w+::)*\w+$/ ) {
- push( @export, "ObjVar" ) if /^\$RegObj$/;
- push( @export, $_ );
- } elsif( /^\%(\w+::)*\w+$/ ) {
- push( @export, $_ );
- } elsif( /^[$%]/ ) {
- croak "${PACK}->import: Invalid variable name ($_)";
- } elsif( /^:/ || /^(H?KEY|REG)_/ ) {
- push( @consts, $_ );
- } elsif( ! @_ ) {
- croak "${PACK}->import: Missing argument after option ($_)";
- } elsif( exists $_opt_subs{$_} ) {
- $_= $_opt_subs{$_};
- $registry->$_( shift(@_) );
- } elsif( /^TiedRef$/ ) {
- $_= shift(@_);
- if( ! ref($_) && /^(\$?)(\w+::)*\w+$/ ) {
- $_= '$'.$_ unless '$' eq $1;
- } elsif( "SCALAR" ne ref($_) ) {
- croak "${PACK}->import: Invalid var after TiedRef ($_)";
- }
- push( @export, $_ );
- } elsif( /^TiedHash$/ ) {
- $_= shift(@_);
- if( ! ref($_) && /^(\%?)(\w+::)*\w+$/ ) {
- $_= '%'.$_ unless '%' eq $1;
- } elsif( "HASH" ne ref($_) ) {
- croak "${PACK}->import: Invalid var after TiedHash ($_)";
- }
- push( @export, $_ );
- } elsif( /^ObjectRef$/ ) {
- $_= shift(@_);
- if( ! ref($_) && /^(\$?)(\w+::)*\w+$/ ) {
- push( @export, "ObjVar" );
- $_= '$'.$_ unless '$' eq $1;
- } elsif( "SCALAR" eq ref($_) ) {
- push( @export, "ObjRef" );
- } else {
- croak "${PACK}->import: Invalid var after ObjectRef ($_)";
- }
- push( @export, $_ );
- } elsif( /^ExportLevel$/ ) {
- $level= shift(@_);
- $expto= caller($level);
- } elsif( /^ExportTo$/ ) {
- undef $level;
- $expto= caller($level);
- } else {
- croak "${PACK}->import: Invalid option ($_)";
- }
- }
- Win32API::Registry->export( $expto, @consts ) if @consts;
- @export= ('$Registry') unless @export;
- while( @export ) {
- $_= shift( @export );
- if( /^\$((?:\w+::)*)(\w+)$/ ) {
- my( $pack, $sym )= ( $1, $2 );
- $pack= $expto unless defined($pack) && "" ne $pack;
- no strict 'refs';
- *{"${pack}::$sym"}= \${"${pack}::$sym"};
- ${"${pack}::$sym"}= $registry;
- } elsif( /^\%((?:\w+::)*)(\w+)$/ ) {
- my( $pack, $sym )= ( $1, $2 );
- $pack= $expto unless defined($pack) && "" ne $pack;
- no strict 'refs';
- *{"${pack}::$sym"}= \%{"${pack}::$sym"};
- $registry->Tie( \%{"${pack}::$sym"} );
- } elsif( "SCALAR" eq ref($_) ) {
- $$_= $registry;
- } elsif( "HASH" eq ref($_) ) {
- $registry->Tie( $_ );
- } elsif( /^ObjVar$/ ) {
- $_= shift( @_ );
- /^\$((?:\w+::)*)(\w+)$/;
- my( $pack, $sym )= ( $1, $2 );
- $pack= $expto unless defined($pack) && "" ne $pack;
- no strict 'refs';
- *{"${pack}::$sym"}= \${"${pack}::$sym"};
- ${"${pack}::$sym"}= $registry->ObjectRef;
- } elsif( /^ObjRef$/ ) {
- ${shift(@_)}= $registry->ObjectRef;
- } else {
- die "Impossible var to export ($_)";
- }
- }
-}
-
-
-use vars qw( @_new_Opts %_new_Opts );
-@_new_Opts= qw( ACCESS DELIM MACHINE DEPENDON );
-@_new_Opts{@_new_Opts}= (1) x @_new_Opts;
-
-sub _new
-{
- my $this= shift( @_ );
- $this= tied(%$this) if ref($this) && tied(%$this);
- my $class= ref($this) || $this;
- my $self= {};
- my( $handle, $rpath, $opts )= @_;
- if( @_ < 2 || "ARRAY" ne ref($rpath) || 3 < @_
- || 3 == @_ && "HASH" ne ref($opts) ) {
- croak "Usage: ${PACK}->_new( \$handle, \\\@path, {OPT=>VAL,...} );\n",
- " options: @_new_Opts\nCalled";
- }
- @$self{qw( HANDLE PATH )}= ( $handle, $rpath );
- @$self{qw( MACHINE ACCESS DELIM OS_DELIM ROOTS FLAGS )}=
- ( $this->Machine, $this->Access, $this->Delimiter,
- $this->OS_Delimiter, $this->_Roots, $this->_Flags );
- if( ref($opts) ) {
- my @err= grep( ! $_new_Opts{$_}, keys(%$opts) );
- @err and croak "${PACK}->_new: Invalid options (@err)";
- @$self{ keys(%$opts) }= values(%$opts);
- }
- bless $self, $class;
- return $self;
-}
-
-
-sub _split
-{
- my $self= shift( @_ );
- $self= tied(%$self) if tied(%$self);
- my $path= shift( @_ );
- my $delim= @_ ? shift(@_) : $self->Delimiter;
- my $list= [ split( /\Q$delim/, $path ) ];
- return $list;
-}
-
-
-sub _rootKey
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- my $keyPath= shift(@_);
- my $delim= @_ ? shift(@_) : $self->Delimiter;
- my( $root, $subPath );
- if( "ARRAY" eq ref($keyPath) ) {
- $subPath= $keyPath;
- } else {
- $subPath= $self->_split( $keyPath, $delim );
- }
- $root= shift( @$subPath );
- if( $root =~ /^HKEY_/ ) {
- my $handle= Win32API::Registry::constant($root,0);
- $handle or croak "Invalid HKEY_ constant ($root): $!";
- return( $self->_new( $handle, [$root], {DELIM=>$delim} ),
- $subPath );
- } elsif( $root =~ /^([-+]|0x)?\d/ ) {
- return( $self->_new( $root, [sprintf("0x%lX",$root)],
- {DELIM=>$delim} ),
- $subPath );
- } else {
- my $roots= $self->Roots;
- if( $roots->{$root} ) {
- return( $self->_new( $roots->{$root}, [$root], {DELIM=>$delim} ),
- $subPath );
- }
- croak "No such root key ($root)";
- }
-}
-
-
-sub _open
-{
- my $this= shift(@_);
- $this= tied(%$this) if ref($this) && tied(%$this);
- my $subPath= shift(@_);
- my $sam= @_ ? shift(@_) : $this->Access;
- my $subKey= join( $this->OS_Delimiter, @$subPath );
- my $handle= 0;
- $this->RegOpenKeyEx( $subKey, 0, $sam, $handle )
- or return ();
- return $this->_new( $handle, [ @{$this->_Path}, @$subPath ],
- { ACCESS=>$sam, ( defined($this->{UNLOADME}) ? ("DEPENDON",$this)
- : defined($this->{DEPENDON}) ? ("DEPENDON",$this->{DEPENDON}) : () )
- } );
-}
-
-
-sub ObjectRef
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- return $self;
-}
-
-
-sub _constant
-{
- my( $name, $desc )= @_;
- my $value= Win32API::Registry::constant( $name, 0 );
- my $func= (caller(1))[3];
- if( 0 == $value ) {
- if( $! =~ /invalid/i ) {
- croak "$func: Invalid $desc ($name)";
- } elsif( 0 != $! ) {
- croak "$func: \u$desc ($name) not support on this platform";
- }
- }
- return $value;
-}
-
-
-sub _connect
-{
- my $this= shift(@_);
- $this= tied(%$this) if ref($this) && tied(%$this);
- my $subPath= pop(@_);
- $subPath= $this->_split( $subPath ) unless ref($subPath);
- my $machine= @_ ? shift(@_) : shift(@$subPath);
- my $handle= 0;
- my( $temp )= $this->_rootKey( [@$subPath] );
- $temp->RegConnectRegistry( $machine, $temp->Handle, $handle )
- or return ();
- my $self= $this->_new( $handle, [shift(@$subPath)], {MACHINE=>$machine} );
- return( $self, $subPath );
-}
-
-
-use vars qw( @Connect_Opts %Connect_Opts );
-@Connect_Opts= qw(Access Delimiter);
-@Connect_Opts{@Connect_Opts}= (1) x @Connect_Opts;
-
-sub Connect
-{
- my $this= shift(@_);
- my $tied= ref($this) && tied(%$this);
- $this= tied(%$this) if $tied;
- my( $machine, $key, $opts )= @_;
- my $delim= "";
- my $sam;
- my $subPath;
- if( @_ < 2 || 3 < @_
- || 3 == @_ && "HASH" ne ref($opts) ) {
- croak "Usage: \$obj= ${PACK}->Connect(",
- " \$Machine, \$subKey, { OPT=>VAL,... } );\n",
- " options: @Connect_Opts\nCalled";
- }
- if( ref($opts) ) {
- my @err= grep( ! $Connect_Opts{$_}, keys(%$opts) );
- @err and croak "${PACK}->Connect: Invalid options (@err)";
- }
- $delim= "$opts->{Delimiter}" if defined($opts->{Delimiter});
- $delim= $this->Delimiter if "" eq $delim;
- $sam= defined($opts->{Access}) ? $opts->{Access} : $this->Access;
- $sam= _constant($sam,"key access type") if $sam =~ /^KEY_/;
- ( $this, $subPath )= $this->_connect( $machine, $key );
- return () unless defined($this);
- my $self= $this->_open( $subPath, $sam );
- return () unless defined($self);
- $self->Delimiter( $delim );
- $self= $self->TiedRef if $tied;
- return $self;
-}
-
-
-my @_newVirtual_keys= qw( MEMBERS VALUES SUBKEYS SUBTIMES SUBCLASSES
- Class SecurityLen LastWrite CntValues CntSubKeys
- MaxValNameLen MaxValDataLen MaxSubKeyLen MaxSubClassLen );
-
-sub _newVirtual
-{
- my $self= shift(@_);
- my( $rPath, $root, $opts )= @_;
- my $new= $self->_new( "NONE", $rPath, $opts )
- or return ();
- @{$new}{@_newVirtual_keys}= @{$root->ObjectRef}{@_newVirtual_keys};
- return $new;
-}
-
-
-#$key= new Win32::TieRegistry "LMachine/System/Disk";
-#$key= new Win32::TieRegistry "//Server1/LMachine/System/Disk";
-#Win32::TieRegistry->new( HKEY_LOCAL_MACHINE, {DELIM=>"/",ACCESS=>KEY_READ} );
-#Win32::TieRegistry->new( [ HKEY_LOCAL_MACHINE, ".../..." ], {DELIM=>$DELIM} );
-#$key->new( ... );
-
-use vars qw( @new_Opts %new_Opts );
-@new_Opts= qw(Access Delimiter);
-@new_Opts{@new_Opts}= (1) x @new_Opts;
-
-sub new
-{
- my $this= shift( @_ );
- $this= tied(%$this) if ref($this) && tied(%$this);
- if( ! ref($this) ) {
- no strict "refs";
- my $self= ${"${this}::Registry"};
- croak "${this}->new failed since ${PACK}::new sees that ",
- "\$${this}::Registry is not an object."
- if ! ref($self);
- $this= $self->Clone;
- }
- my( $subKey, $opts )= @_;
- my $delim= "";
- my $dlen;
- my $sam;
- my $subPath;
- if( @_ < 1 || 2 < @_
- || 2 == @_ && "HASH" ne ref($opts) ) {
- croak "Usage: \$obj= ${PACK}->new( \$subKey, { OPT=>VAL,... } );\n",
- " options: @new_Opts\nCalled";
- }
- if( defined($opts) ) {
- my @err= grep( ! $new_Opts{$_}, keys(%$opts) );
- @err and die "${PACK}->new: Invalid options (@err)";
- }
- $delim= "$opts->{Delimiter}" if defined($opts->{Delimiter});
- $delim= $this->Delimiter if "" eq $delim;
- $dlen= length($delim);
- $sam= defined($opts->{Access}) ? $opts->{Access} : $this->Access;
- $sam= _constant($sam,"key access type") if $sam =~ /^KEY_/;
- if( "ARRAY" eq ref($subKey) ) {
- $subPath= $subKey;
- if( "NONE" eq $this->Handle && @$subPath ) {
- ( $this, $subPath )= $this->_rootKey( $subPath );
- }
- } elsif( $delim x 2 eq substr($subKey,0,2*$dlen) ) {
- my $path= $this->_split( substr($subKey,2*$dlen), $delim );
- my $mach= shift(@$path);
- if( ! @$path ) {
- return $this->_newVirtual( $path, $Registry,
- {MACHINE=>$mach,DELIM=>$delim,ACCESS=>$sam} );
- }
- ( $this, $subPath )= $this->_connect( $mach, $path );
- return () if ! defined($this);
- if( 0 == @$subPath ) {
- $this->Delimiter( $delim );
- return $this;
- }
- } elsif( $delim eq substr($subKey,0,$dlen) ) {
- ( $this, $subPath )= $this->_rootKey( substr($subKey,$dlen), $delim );
- } elsif( "NONE" eq $this->Handle && "" ne $subKey ) {
- my( $mach )= $this->Machine;
- if( $mach ) {
- ( $this, $subPath )= $this->_connect( $mach, $subKey );
- } else {
- ( $this, $subPath )= $this->_rootKey( $subKey, $delim );
- }
- } else {
- $subPath= $this->_split( $subKey, $delim );
- }
- return () unless defined($this);
- if( 0 == @$subPath && "NONE" eq $this->Handle ) {
- return $this->_newVirtual( $this->_Path, $this,
- { DELIM=>$delim, ACCESS=>$sam } );
- }
- my $self= $this->_open( $subPath, $sam );
- return () unless defined($self);
- $self->Delimiter( $delim );
- return $self;
-}
-
-
-sub Open
-{
- my $self= shift(@_);
- my $tied= ref($self) && tied(%$self);
- $self= tied(%$self) if $tied;
- $self= $self->new( @_ );
- $self= $self->TiedRef if defined($self) && $tied;
- return $self;
-}
-
-
-sub Clone
-{
- my $self= shift( @_ );
- my $new= $self->Open("");
- return $new;
-}
-
-
-{ my @flush;
- sub Flush
- {
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- my( $flush )= shift(@_);
- @_ and croak "Usage: \$key->Flush( \$bFlush );";
- return 0 if "NONE" eq $self->Handle;
- @flush= qw( VALUES SUBKEYS SUBCLASSES SUBTIMES MEMBERS Class
- CntSubKeys CntValues MaxSubKeyLen MaxSubClassLen
- MaxValNameLen MaxValDataLen SecurityLen LastWrite PREVIDX )
- unless @flush;
- delete( @$self{@flush} );
- if( defined($flush) && $flush ) {
- return $self->RegFlushKey();
- } else {
- return 1;
- }
- }
-}
-
-
-sub _DualVal
-{
- my( $hRef, $num )= @_;
- if( $_SetDualVar && $$hRef{$num} ) {
- &SetDualVar( $num, "$$hRef{$num}", 0+$num );
- }
- return $num;
-}
-
-
-use vars qw( @_RegDataTypes %_RegDataTypes );
-@_RegDataTypes= qw( REG_SZ REG_EXPAND_SZ REG_BINARY REG_LINK REG_MULTI_SZ
- REG_DWORD_LITTLE_ENDIAN REG_DWORD_BIG_ENDIAN REG_DWORD
- REG_RESOURCE_LIST REG_FULL_RESOURCE_DESCRIPTOR
- REG_RESOURCE_REQUIREMENTS_LIST REG_NONE );
-# Make sure that REG_DWORD appears _after_ other REG_DWORD_*
-# items above and that REG_NONE appears _last_.
-foreach( @_RegDataTypes ) {
- $_RegDataTypes{Win32API::Registry::constant($_,0)}= $_;
-}
-
-sub GetValue
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- 1 == @_ or croak "Usage: (\$data,\$type)= \$key->GetValue('ValName');";
- my( $valName )= @_;
- my( $valType, $valData, $dLen )= (0,"",0);
- return () if "NONE" eq $self->Handle;
- $self->RegQueryValueEx( $valName, [], $valType, $valData,
- $dLen= ( defined($self->{MaxValDataLen}) ? $self->{MaxValDataLen} : 0 )
- ) or return ();
- if( REG_DWORD == $valType ) {
- my $val= unpack("L",$valData);
- $valData= sprintf "0x%08.8lX", $val if $self->DWordsToHex;
- &SetDualVar( $valData, $valData, $val ) if $self->DualBinVals
- } elsif( REG_BINARY == $valType && length($valData) <= 4 ) {
- &SetDualVar( $valData, $valData, hex reverse unpack("h*",$valData) )
- if $self->DualBinVals;
- } elsif( ( REG_SZ == $valType || REG_EXPAND_SZ == $valType )
- && $self->FixSzNulls ) {
- substr($valData,-1)= "" if "\0" eq substr($valData,-1);
- } elsif( REG_MULTI_SZ == $valType && $self->SplitMultis ) {
- ## $valData =~ s/\0\0$//; # Why does this often fail??
- substr($valData,-2)= "" if "\0\0" eq substr($valData,-2);
- $valData= [ split( /\0/, $valData, -1 ) ]
- }
- if( ! wantarray ) {
- return $valData;
- } elsif( ! $self->DualTypes ) {
- return( $valData, $valType );
- } else {
- return( $valData, _DualVal( \%_RegDataTypes, $valType ) );
- }
-}
-
-
-sub _ErrNum
-{
- # return $^E;
- return Win32::GetLastError();
-}
-
-
-sub _ErrMsg
-{
- # return $^E;
- return Win32::FormatMessage( Win32::GetLastError() );
-}
-
-sub _Err
-{
- my $err;
- # return $^E;
- return _ErrMsg if ! $_SetDualVar;
- return &SetDualVar( $err, _ErrMsg, _ErrNum );
-}
-
-sub _NoMoreItems
-{
- return
- $_NoMoreItems =~ /^\d/
- ? _ErrNum == $_NoMoreItems
- : _ErrMsg =~ /$_NoMoreItems/io;
-}
-
-
-sub _FileNotFound
-{
- return
- $_FileNotFound =~ /^\d/
- ? _ErrNum == $_FileNotFound
- : _ErrMsg =~ /$_FileNotFound/io;
-}
-
-
-sub _TooSmall
-{
- return
- $_TooSmall =~ /^\d/
- ? _ErrNum == $_TooSmall
- : _ErrMsg =~ /$_TooSmall/io;
-}
-
-
-sub _MoreData
-{
- return
- $_MoreData =~ /^\d/
- ? _ErrNum == $_MoreData
- : _ErrMsg =~ /$_MoreData/io;
-}
-
-
-sub _enumValues
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- my( @names )= ();
- my $pos= 0;
- my $name= "";
- my $nlen= 1+$self->Information("MaxValNameLen");
- while( $self->RegEnumValue($pos++,$name,$nlen,[],[],[],[]) ) {
- push( @names, $name );
- }
- if( ! _NoMoreItems() ) {
- return ();
- }
- $self->{VALUES}= \@names;
- return 1;
-}
-
-
-sub ValueNames
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- @_ and croak "Usage: \@names= \$key->ValueNames;";
- $self->_enumValues unless $self->{VALUES};
- return @{$self->{VALUES}};
-}
-
-
-sub _enumSubKeys
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- my( @subkeys, @classes, @times )= ();
- my $pos= 0;
- my( $subkey, $class, $time )= ("","","");
- my( $namSiz, $clsSiz )= $self->Information(
- qw( MaxSubKeyLen MaxSubClassLen ));
- $namSiz++; $clsSiz++;
- while( $self->RegEnumKeyEx(
- $pos++, $subkey, $namSiz, [], $class, $clsSiz, $time ) ) {
- push( @subkeys, $subkey );
- push( @classes, $class );
- push( @times, $time );
- }
- if( ! _NoMoreItems() ) {
- return ();
- }
- $self->{SUBKEYS}= \@subkeys;
- $self->{SUBCLASSES}= \@classes;
- $self->{SUBTIMES}= \@times;
- return 1;
-}
-
-
-sub SubKeyNames
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- @_ and croak "Usage: \@names= \$key->SubKeyNames;";
- $self->_enumSubKeys unless $self->{SUBKEYS};
- return @{$self->{SUBKEYS}};
-}
-
-
-sub SubKeyClasses
-{
- my $self= shift(@_);
- @_ and croak "Usage: \@classes= \$key->SubKeyClasses;";
- $self->_enumSubKeys unless $self->{SUBCLASSES};
- return @{$self->{SUBCLASSES}};
-}
-
-
-sub SubKeyTimes
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- @_ and croak "Usage: \@times= \$key->SubKeyTimes;";
- $self->_enumSubKeys unless $self->{SUBTIMES};
- return @{$self->{SUBTIMES}};
-}
-
-
-sub _MemberNames
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- @_ and croak "Usage: \$arrayRef= \$key->_MemberNames;";
- if( ! $self->{MEMBERS} ) {
- $self->_enumValues unless $self->{VALUES};
- $self->_enumSubKeys unless $self->{SUBKEYS};
- my( @members )= ( map( $_.$self->{DELIM}, @{$self->{SUBKEYS}} ),
- map( $self->{DELIM}.$_, @{$self->{VALUES}} ) );
- $self->{MEMBERS}= \@members;
- }
- return $self->{MEMBERS};
-}
-
-
-sub _MembersHash
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- @_ and croak "Usage: \$hashRef= \$key->_MembersHash;";
- if( ! $self->{MEMBHASH} ) {
- my $aRef= $self->_MemberNames;
- $self->{MEMBHASH}= {};
- @{$self->{MEMBHASH}}{@$aRef}= (1) x @$aRef;
- }
- return $self->{MEMBHASH};
-}
-
-
-sub MemberNames
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- @_ and croak "Usage: \@members= \$key->MemberNames;";
- return @{$self->_MemberNames};
-}
-
-
-sub Information
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- my( $time, $nkeys, $nvals, $xsec, $xkey, $xcls, $xname, $xdata )=
- ("",0,0,0,0,0,0,0);
- my $clen= 8;
- if( ! $self->RegQueryInfoKey( [], [], $nkeys, $xkey, $xcls,
- $nvals, $xname, $xdata, $xsec, $time ) ) {
- return ();
- }
- if( defined($self->{Class}) ) {
- $clen= length($self->{Class});
- } else {
- $self->{Class}= "";
- }
- while( ! $self->RegQueryInfoKey( $self->{Class}, $clen,
- [],[],[],[],[],[],[],[],[])
- && _MoreData ) {
- $clen *= 2;
- }
- my( %info );
- @info{ qw( LastWrite CntSubKeys CntValues SecurityLen
- MaxValDataLen MaxSubKeyLen MaxSubClassLen MaxValNameLen )
- }= ( $time, $nkeys, $nvals, $xsec,
- $xdata, $xkey, $xcls, $xname );
- if( @_ ) {
- my( %check );
- @check{keys(%info)}= keys(%info);
- my( @err )= grep( ! $check{$_}, @_ );
- if( @err ) {
- croak "${PACK}::Information- Invalid info requested (@err)";
- }
- return @info{@_};
- } else {
- return %info;
- }
-}
-
-
-sub Delimiter
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- $self= $RegObj unless ref($self);
- my( $oldDelim )= $self->{DELIM};
- if( 1 == @_ && "" ne "$_[0]" ) {
- delete $self->{MEMBERS};
- delete $self->{MEMBHASH};
- $self->{DELIM}= "$_[0]";
- } elsif( 0 != @_ ) {
- croak "Usage: \$oldDelim= \$key->Delimiter(\$newDelim);";
- }
- return $oldDelim;
-}
-
-
-sub Handle
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- @_ and croak "Usage: \$handle= \$key->Handle;";
- $self= $RegObj unless ref($self);
- return $self->{HANDLE};
-}
-
-
-sub Path
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- @_ and croak "Usage: \$path= \$key->Path;";
- my $delim= $self->{DELIM};
- $self= $RegObj unless ref($self);
- if( "" eq $self->{MACHINE} ) {
- return( $delim . join( $delim, @{$self->{PATH}} ) . $delim );
- } else {
- return( $delim x 2
- . join( $delim, $self->{MACHINE}, @{$self->{PATH}} )
- . $delim );
- }
-}
-
-
-sub _Path
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- @_ and croak "Usage: \$arrRef= \$key->_Path;";
- $self= $RegObj unless ref($self);
- return $self->{PATH};
-}
-
-
-sub Machine
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- @_ and croak "Usage: \$machine= \$key->Machine;";
- $self= $RegObj unless ref($self);
- return $self->{MACHINE};
-}
-
-
-sub Access
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- @_ and croak "Usage: \$access= \$key->Access;";
- $self= $RegObj unless ref($self);
- return $self->{ACCESS};
-}
-
-
-sub OS_Delimiter
-{
- my $self= shift(@_);
- @_ and croak "Usage: \$backslash= \$key->OS_Delimiter;";
- return $self->{OS_DELIM};
-}
-
-
-sub _Roots
-{
- my $self= shift(@_);
- $self= tied(%$self) if ref($self) && tied(%$self);
- @_ and croak "Usage: \$varName= \$key->_Roots;";
- $self= $RegObj unless ref($self);
- return $self->{ROOTS};
-}
-
-
-sub Roots
-{
- my $self= shift(@_);
- $self= tied(%$self) if ref($self) && tied(%$self);
- @_ and croak "Usage: \$hashRef= \$key->Roots;";
- $self= $RegObj unless ref($self);
- return eval "\\%$self->{ROOTS}";
-}
-
-
-sub TIEHASH
-{
- my( $this )= shift(@_);
- $this= tied(%$this) if ref($this) && tied(%$this);
- my( $key )= @_;
- if( 1 == @_ && ref($key) && "$key" =~ /=/ ) {
- return $key; # $key is already an object (blessed reference).
- }
- return $this->new( @_ );
-}
-
-
-sub Tie
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- my( $hRef )= @_;
- if( 1 != @_ || ! ref($hRef) || "$hRef" !~ /(^|=)HASH\(/ ) {
- croak "Usage: \$key->Tie(\\\%hash);";
- }
- return tie %$hRef, ref($self), $self;
-}
-
-
-sub TiedRef
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- my $hRef= @_ ? shift(@_) : {};
- return () if ! defined($self);
- $self->Tie($hRef);
- bless $hRef, ref($self);
- return $hRef;
-}
-
-
-sub _Flags
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- my $oldFlags= $self->{FLAGS};
- if( 1 == @_ ) {
- $self->{FLAGS}= shift(@_);
- } elsif( 0 != @_ ) {
- croak "Usage: \$oldBits= \$key->_Flags(\$newBits);";
- }
- return $oldFlags;
-}
-
-
-sub ArrayValues
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- my $oldFlag= $Flag_ArrVal == ( $Flag_ArrVal & $self->{FLAGS} );
- if( 1 == @_ ) {
- my $bool= shift(@_);
- if( $bool ) {
- $self->{FLAGS} |= $Flag_ArrVal;
- } else {
- $self->{FLAGS} &= ~( $Flag_ArrVal | $Flag_TieVal );
- }
- } elsif( 0 != @_ ) {
- croak "Usage: \$oldBool= \$key->ArrayValues(\$newBool);";
- }
- return $oldFlag;
-}
-
-
-sub TieValues
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- my $oldFlag= $Flag_TieVal == ( $Flag_TieVal & $self->{FLAGS} );
- if( 1 == @_ ) {
- my $bool= shift(@_);
- if( $bool ) {
- croak "${PACK}->TieValues cannot be enabled with this version";
- $self->{FLAGS} |= $Flag_TieVal;
- } else {
- $self->{FLAGS} &= ~$Flag_TieVal;
- }
- } elsif( 0 != @_ ) {
- croak "Usage: \$oldBool= \$key->TieValues(\$newBool);";
- }
- return $oldFlag;
-}
-
-
-sub FastDelete
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- my $oldFlag= $Flag_FastDel == ( $Flag_FastDel & $self->{FLAGS} );
- if( 1 == @_ ) {
- my $bool= shift(@_);
- if( $bool ) {
- $self->{FLAGS} |= $Flag_FastDel;
- } else {
- $self->{FLAGS} &= ~$Flag_FastDel;
- }
- } elsif( 0 != @_ ) {
- croak "Usage: \$oldBool= \$key->FastDelete(\$newBool);";
- }
- return $oldFlag;
-}
-
-
-sub SplitMultis
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- my $oldFlag= $Flag_Split == ( $Flag_Split & $self->{FLAGS} );
- if( 1 == @_ ) {
- my $bool= shift(@_);
- if( $bool ) {
- $self->{FLAGS} |= $Flag_Split;
- } else {
- $self->{FLAGS} &= ~$Flag_Split;
- }
- } elsif( 0 != @_ ) {
- croak "Usage: \$oldBool= \$key->SplitMultis(\$newBool);";
- }
- return $oldFlag;
-}
-
-
-sub DWordsToHex
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- my $oldFlag= $Flag_HexDWord == ( $Flag_HexDWord & $self->{FLAGS} );
- if( 1 == @_ ) {
- my $bool= shift(@_);
- if( $bool ) {
- $self->{FLAGS} |= $Flag_HexDWord;
- } else {
- $self->{FLAGS} &= ~$Flag_HexDWord;
- }
- } elsif( 0 != @_ ) {
- croak "Usage: \$oldBool= \$key->DWordsToHex(\$newBool);";
- }
- return $oldFlag;
-}
-
-
-sub FixSzNulls
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- my $oldFlag= $Flag_FixNulls == ( $Flag_FixNulls & $self->{FLAGS} );
- if( 1 == @_ ) {
- my $bool= shift(@_);
- if( $bool ) {
- $self->{FLAGS} |= $Flag_FixNulls;
- } else {
- $self->{FLAGS} &= ~$Flag_FixNulls;
- }
- } elsif( 0 != @_ ) {
- croak "Usage: \$oldBool= \$key->FixSzNulls(\$newBool);";
- }
- return $oldFlag;
-}
-
-
-sub DualTypes
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- my $oldFlag= $Flag_DualTyp == ( $Flag_DualTyp & $self->{FLAGS} );
- if( 1 == @_ ) {
- my $bool= shift(@_);
- if( $bool ) {
- croak "${PACK}->DualTypes cannot be enabled since ",
- "SetDualVar module not installed"
- unless $_SetDualVar;
- $self->{FLAGS} |= $Flag_DualTyp;
- } else {
- $self->{FLAGS} &= ~$Flag_DualTyp;
- }
- } elsif( 0 != @_ ) {
- croak "Usage: \$oldBool= \$key->DualTypes(\$newBool);";
- }
- return $oldFlag;
-}
-
-
-sub DualBinVals
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- my $oldFlag= $Flag_DualBin == ( $Flag_DualBin & $self->{FLAGS} );
- if( 1 == @_ ) {
- my $bool= shift(@_);
- if( $bool ) {
- croak "${PACK}->DualBinVals cannot be enabled since ",
- "SetDualVar module not installed"
- unless $_SetDualVar;
- $self->{FLAGS} |= $Flag_DualBin;
- } else {
- $self->{FLAGS} &= ~$Flag_DualBin;
- }
- } elsif( 0 != @_ ) {
- croak "Usage: \$oldBool= \$key->DualBinVals(\$newBool);";
- }
- return $oldFlag;
-}
-
-
-sub GetOptions
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- my( $opt, $meth );
- if( ! @_ || 1 == @_ && "HASH" eq ref($_[0]) ) {
- my $href= @_ ? $_[0] : {};
- foreach $opt ( grep !/^Allow/, @_opt_subs ) {
- $meth= $_opt_subs{$opt};
- $href->{$opt}= $self->$meth();
- }
- return @_ ? $self : $href;
- }
- my @old;
- foreach $opt ( @_ ) {
- $meth= $_opt_subs{$opt};
- if( defined $meth ) {
- if( $opt eq "AllowLoad" || $opt eq "AllowSave" ) {
- croak "${PACK}->GetOptions: Getting current setting of $opt ",
- "not supported in this release";
- }
- push( @old, $self->$meth() );
- } else {
- croak "${PACK}->GetOptions: Invalid option ($opt) ",
- "not one of ( ", join(" ",grep !/^Allow/, @_opt_subs), " )";
- }
- }
- return wantarray ? @old : $old[-1];
-}
-
-
-sub SetOptions
-{
- my $self= shift(@_);
- # Don't get object if hash ref so "ref" returns original ref.
- my( $opt, $meth, @old );
- while( @_ ) {
- $opt= shift(@_);
- $meth= $_opt_subs{$opt};
- if( ! @_ ) {
- croak "${PACK}->SetOptions: Option value missing ",
- "after option name ($opt)";
- } elsif( defined $meth ) {
- push( @old, $self->$meth( shift(@_) ) );
- } elsif( $opt eq substr("reference",0,length($opt)) ) {
- shift(@_) if @_;
- push( @old, $self );
- } else {
- croak "${PACK}->SetOptions: Invalid option ($opt) ",
- "not one of ( @_opt_subs )";
- }
- }
- return wantarray ? @old : $old[-1];
-}
-
-
-sub _parseTiedEnt
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- my $ent= shift(@_);
- my $delim= shift(@_);
- my $dlen= length( $delim );
- my $parent= @_ ? shift(@_) : 0;
- my $off;
- if( $delim x 2 eq substr($ent,0,2*$dlen) && "NONE" eq $self->Handle ) {
- if( 0 <= ( $off= index( $ent, $delim x 2, 2*$dlen ) ) ) {
- return( substr( $ent, 0, $off ), substr( $ent, 2*$dlen+$off ) );
- } elsif( $delim eq substr($ent,-$dlen) ) {
- return( substr($ent,0,-$dlen) );
- } elsif( 2*$dlen <= ( $off= rindex( $ent, $delim ) ) ) {
- return( substr( $ent, 0, $off ),
- undef, substr( $ent, $dlen+$off ) );
- } elsif( $parent ) {
- return();
- } else {
- return( $ent );
- }
- } elsif( $delim eq substr($ent,0,$dlen) && "NONE" ne $self->Handle ) {
- return( undef, substr($ent,$dlen) );
- } elsif( $self->{MEMBERS} && $self->_MembersHash->{$ent} ) {
- return( substr($ent,0,-$dlen) );
- } elsif( 0 <= ( $off= index( $ent, $delim x 2 ) ) ) {
- return( substr( $ent, 0, $off ), substr( $ent, 2*$dlen+$off ) );
- } elsif( $delim eq substr($ent,-$dlen) ) {
- if( $parent
- && 0 <= ( $off= rindex( $ent, $delim, length($ent)-2*$dlen ) ) ) {
- return( substr($ent,0,$off),
- undef, undef, substr($ent,$dlen+$off,-$dlen) );
- } else {
- return( substr($ent,0,-$dlen) );
- }
- } elsif( 0 <= ( $off= rindex( $ent, $delim ) ) ) {
- return(
- substr( $ent, 0, $off ), undef, substr( $ent, $dlen+$off ) );
- } else {
- return( undef, undef, $ent );
- }
-}
-
-
-sub _FetchValue
-{
- my $self= shift( @_ );
- my( $val, $createKey )= @_;
- my( $data, $type );
- if( ( $data, $type )= $self->GetValue( $val ) ) {
- return $self->ArrayValues ? [ $data, $type ]
- : wantarray ? ( $data, $type )
- : $data;
- } elsif( $createKey and $data= $self->new($val) ) {
- return $data->TiedRef;
- } else {
- return ();
- }
-}
-
-
-sub FETCH
-{
- my $self= shift(@_);
- my $ent= shift(@_);
- my $delim= $self->Delimiter;
- my( $key, $val, $ambig )= $self->_parseTiedEnt( $ent, $delim, 0 );
- my $sub;
- if( defined($key) ) {
- if( defined($self->{MEMBHASH})
- && $self->{MEMBHASH}->{$key.$delim}
- && 0 <= index($key,$delim) ) {
- return ()
- unless $sub= $self->new( $key,
- {"Delimiter"=>$self->OS_Delimiter} );
- $sub->Delimiter($delim);
- } else {
- return ()
- unless $sub= $self->new( $key );
- }
- } else {
- $sub= $self;
- }
- if( defined($val) ) {
- return $sub->_FetchValue( $val );
- } elsif( ! defined($ambig) ) {
- return $sub->TiedRef;
- } elsif( defined($key) ) {
- return $sub->FETCH( $ambig );
- } else {
- return $sub->_FetchValue( $ambig, "" ne $ambig );
- }
-}
-
-
-sub _FetchOld
-{
- my( $self, $key )= @_;
- my $old= $self->FETCH($key);
- if( $old ) {
- my $copy= {};
- %$copy= %$old;
- return $copy;
- }
- # return $^E;
- return _Err;
-}
-
-
-sub DELETE
-{
- my $self= shift(@_);
- my $ent= shift(@_);
- my $delim= $self->Delimiter;
- my( $key, $val, $ambig, $subkey )= $self->_parseTiedEnt( $ent, $delim, 1 );
- my $sub;
- my $fast= defined(wantarray) ? $self->FastDelete : 2;
- my $old= 1; # Value returned if FastDelete is set.
- if( defined($key)
- && ( defined($val) || defined($ambig) || defined($subkey) ) ) {
- return ()
- unless $sub= $self->new( $key );
- } else {
- $sub= $self;
- }
- if( defined($val) ) {
- $old= $sub->GetValue($val) || _Err unless 2 <= $fast;
- $sub->RegDeleteValue( $val );
- } elsif( defined($subkey) ) {
- $old= $sub->_FetchOld( $subkey.$delim ) unless $fast;
- $sub->RegDeleteKey( $subkey );
- } elsif( defined($ambig) ) {
- if( defined($key) ) {
- $old= $sub->DELETE($ambig);
- } else {
- $old= $sub->GetValue($ambig) || _Err unless 2 <= $fast;
- if( defined( $old ) ) {
- $sub->RegDeleteValue( $ambig );
- } else {
- $old= $sub->_FetchOld( $ambig.$delim ) unless $fast;
- $sub->RegDeleteKey( $ambig );
- }
- }
- } elsif( defined($key) ) {
- $old= $sub->_FetchOld( $key.$delim ) unless $fast;
- $sub->RegDeleteKey( $key );
- } else {
- croak "${PACK}->DELETE: Key ($ent) can never be deleted";
- }
- return $old;
-}
-
-
-sub SetValue
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- my $name= shift(@_);
- my $data= shift(@_);
- my( $type )= @_;
- my $size;
- if( ! defined($type) ) {
- if( "ARRAY" eq ref($data) ) {
- croak "${PACK}->SetValue: Value is array reference but ",
- "no data type given"
- unless 2 == @$data;
- ( $data, $type )= @$data;
- } else {
- $type= REG_SZ;
- }
- }
- $type= _constant($type,"registry value data type") if $type =~ /^REG_/;
- if( REG_MULTI_SZ == $type && "ARRAY" eq ref($data) ) {
- $data= join( "\0", @$data ) . "\0\0";
- ## $data= pack( "a*" x (1+@$data), map( $_."\0", @$data, "" ) );
- } elsif( ( REG_SZ == $type || REG_EXPAND_SZ == $type )
- && $self->FixSzNulls ) {
- $data .= "\0" unless "\0" eq substr($data,0,-1);
- } elsif( REG_DWORD == $type && $data =~ /^0x[0-9a-fA-F]{3,}$/ ) {
- $data= pack( "L", hex($data) );
- # We could to $data=pack("L",$data) for REG_DWORD but I see
- # no nice way to always destinguish when to do this or not.
- }
- return $self->RegSetValueEx( $name, 0, $type, $data, length($data) );
-}
-
-
-sub StoreKey
-{
- my $this= shift(@_);
- $this= tied(%$this) if ref($this) && tied(%$this);
- my $subKey= shift(@_);
- my $data= shift(@_);
- my $ent;
- my $self;
- if( ! ref($data) || "$data" !~ /(^|=)HASH/ ) {
- croak "${PACK}->StoreKey: For ", $this->Path.$subKey, ",\n",
- " subkey data must be a HASH reference";
- }
- if( defined( $$data{""} ) && "HASH" eq ref($$data{""}) ) {
- $self= $this->CreateKey( $subKey, delete $$data{""} );
- } else {
- $self= $this->CreateKey( $subKey );
- }
- return () if ! defined($self);
- foreach $ent ( keys(%$data) ) {
- return ()
- unless $self->STORE( $ent, $$data{$ent} );
- }
- return $self;
-}
-
-
-# = { "" => {OPT=>VAL}, "val"=>[], "key"=>{} } creates a new key
-# = "string" creates a new REG_SZ value
-# = [ data, type ] creates a new value
-sub STORE
-{
- my $self= shift(@_);
- my $ent= shift(@_);
- my $data= shift(@_);
- my $delim= $self->Delimiter;
- my( $key, $val, $ambig, $subkey )= $self->_parseTiedEnt( $ent, $delim, 1 );
- my $sub;
- if( defined($key)
- && ( defined($val) || defined($ambig) || defined($subkey) ) ) {
- return ()
- unless $sub= $self->new( $key );
- } else {
- $sub= $self;
- }
- if( defined($val) ) {
- croak "${PACK}->STORE: For ", $sub->Path.$delim.$val, ",\n",
- " value data cannot be a HASH reference"
- if ref($data) && "$data" =~ /(^|=)HASH/;
- $sub->SetValue( $val, $data );
- } elsif( defined($subkey) ) {
- croak "${PACK}->STORE: For ", $sub->Path.$subkey.$delim, ",\n",
- " subkey data must be a HASH reference"
- unless ref($data) && "$data" =~ /(^|=)HASH/;
- $sub->StoreKey( $subkey, $data );
- } elsif( defined($ambig) ) {
- if( ref($data) && "$data" =~ /(^|=)HASH/ ) {
- $sub->StoreKey( $ambig, $data );
- } else {
- $sub->SetValue( $ambig, $data );
- }
- } elsif( defined($key) ) {
- croak "${PACK}->STORE: For ", $sub->Path.$key.$delim, ",\n",
- " subkey data must be a HASH reference"
- unless ref($data) && "$data" =~ /(^|=)HASH/;
- $sub->StoreKey( $key, $data );
- } else {
- croak "${PACK}->STORE: Key ($ent) can never be created nor set";
- }
-}
-
-
-sub EXISTS
-{
- my $self= shift(@_);
- my $ent= shift(@_);
- return defined( $self->FETCH($ent) );
-}
-
-
-sub FIRSTKEY
-{
- my $self= shift(@_);
- my $members= $self->_MemberNames;
- $self->{PREVIDX}= 0;
- return @{$members} ? $members->[0] : undef;
-}
-
-
-sub NEXTKEY
-{
- my $self= shift(@_);
- my $prev= shift(@_);
- my $idx= $self->{PREVIDX};
- my $members= $self->_MemberNames;
- if( ! defined($idx) || $prev ne $members->[$idx] ) {
- $idx= 0;
- while( $idx < @$members && $prev ne $members->[$idx] ) {
- $idx++;
- }
- }
- $self->{PREVIDX}= ++$idx;
- return $members->[$idx];
-}
-
-
-sub DESTROY
-{
- my $self= shift(@_);
- return if tied(%$self);
- my $unload;
- local $@;
- eval { $unload= $self->{UNLOADME}; 1 }
- or return;
- my $debug= $ENV{DEBUG_TIE_REGISTRY};
- if( defined($debug) ) {
- if( 1 < $debug ) {
- my $hand= $self->Handle;
- my $dep= $self->{DEPENDON};
- carp "${PACK} destroying ", $self->Path, " (",
- "NONE" eq $hand ? $hand : sprintf("0x%lX",$hand), ")",
- defined($dep) ? (" [depends on ",$dep->Path,"]") : ();
- } else {
- warn "${PACK} destroying ", $self->Path, ".\n";
- }
- }
- $self->RegCloseKey
- unless "NONE" eq $self->Handle;
- if( defined($unload) ) {
- if( defined($debug) && 1 < $debug ) {
- my( $obj, $subKey, $file )= @$unload;
- warn "Unloading ", $self->Path,
- " (from ", $obj->Path, ", $subKey)...\n";
- }
- $self->UnLoad
- || warn "Couldn't unload ", $self->Path, ": ", _ErrMsg, "\n";
- ## carp "Never unloaded ${PACK}::Load($$unload[2])";
- }
- #delete $self->{DEPENDON};
-}
-
-
-use vars qw( @CreateKey_Opts %CreateKey_Opts %_KeyDispNames );
-@CreateKey_Opts= qw( Access Class Options Delimiter
- Disposition Security Volatile Backup );
-@CreateKey_Opts{@CreateKey_Opts}= (1) x @CreateKey_Opts;
-%_KeyDispNames= ( REG_CREATED_NEW_KEY() => "REG_CREATED_NEW_KEY",
- REG_OPENED_EXISTING_KEY() => "REG_OPENED_EXISTING_KEY" );
-
-sub CreateKey
-{
- my $self= shift(@_);
- my $tied= tied(%$self);
- $self= tied(%$self) if $tied;
- my( $subKey, $opts )= @_;
- my( $sam )= $self->Access;
- my( $delim )= $self->Delimiter;
- my( $class )= "";
- my( $flags )= 0;
- my( $secure )= [];
- my( $garb )= [];
- my( $result )= \$garb;
- my( $handle )= 0;
- if( @_ < 1 || 2 < @_
- || 2 == @_ && "HASH" ne ref($opts) ) {
- croak "Usage: \$new= \$old->CreateKey( \$subKey, {OPT=>VAL,...} );\n",
- " options: @CreateKey_Opts\nCalled";
- }
- if( defined($opts) ) {
- $sam= $opts->{"Access"} if defined($opts->{"Access"});
- $class= $opts->{Class} if defined($opts->{Class});
- $flags= $opts->{Options} if defined($opts->{Options});
- $delim= $opts->{"Delimiter"} if defined($opts->{"Delimiter"});
- $secure= $opts->{Security} if defined($opts->{Security});
- if( defined($opts->{Disposition}) ) {
- "SCALAR" eq ref($opts->{Disposition})
- or croak "${PACK}->CreateKey option `Disposition'",
- " must provide a scalar reference";
- $result= $opts->{Disposition};
- }
- if( 0 == $flags ) {
- $flags |= REG_OPTION_VOLATILE
- if defined($opts->{Volatile}) && $opts->{Volatile};
- $flags |= REG_OPTION_BACKUP_RESTORE
- if defined($opts->{Backup}) && $opts->{Backup};
- }
- }
- my $subPath= ref($subKey) ? $subKey : $self->_split($subKey,$delim);
- $subKey= join( $self->OS_Delimiter, @$subPath );
- $self->RegCreateKeyEx( $subKey, 0, $class, $flags, $sam,
- $secure, $handle, $$result )
- or return ();
- if( ! ref($$result) && $self->DualTypes ) {
- $$result= _DualVal( \%_KeyDispNames, $$result );
- }
- my $new= $self->_new( $handle, [ @{$self->_Path}, @{$subPath} ] );
- $new->{ACCESS}= $sam;
- $new->{DELIM}= $delim;
- $new= $new->TiedRef if $tied;
- return $new;
-}
-
-
-use vars qw( $Load_Cnt @Load_Opts %Load_Opts );
-$Load_Cnt= 0;
-@Load_Opts= qw(NewSubKey);
-@Load_Opts{@Load_Opts}= (1) x @Load_Opts;
-
-sub Load
-{
- my $this= shift(@_);
- my $tied= ref($this) && tied(%$this);
- $this= tied(%$this) if $tied;
- my( $file, $subKey, $opts )= @_;
- if( 2 == @_ && "HASH" eq ref($subKey) ) {
- $opts= $subKey;
- undef $subKey;
- }
- @_ < 1 || 3 < @_ || defined($opts) && "HASH" ne ref($opts)
- and croak "Usage: \$key= ",
- "${PACK}->Load( \$fileName, [\$newSubKey,] {OPT=>VAL...} );\n",
- " options: @Load_Opts @new_Opts\nCalled";
- if( defined($opts) && exists($opts->{NewSubKey}) ) {
- $subKey= delete $opts->{NewSubKey};
- }
- if( ! defined( $subKey ) ) {
- if( "" ne $this->Machine ) {
- ( $this )= $this->_connect( [$this->Machine,"LMachine"] );
- } else {
- ( $this )= $this->_rootKey( "LMachine" ); # Could also be "Users"
- }
- $subKey= "PerlTie:$$." . ++$Load_Cnt;
- }
- $this->RegLoadKey( $subKey, $file )
- or return ();
- my $self= $this->new( $subKey, defined($opts) ? $opts : () );
- if( ! defined( $self ) ) {
- { my $err= Win32::GetLastError();
- #{ local( $^E ); #}
- $this->RegUnLoadKey( $subKey ) or carp
- "Can't unload $subKey from ", $this->Path, ": ", _ErrMsg, "\n";
- Win32::SetLastError($err);
- }
- return ();
- }
- $self->{UNLOADME}= [ $this, $subKey, $file ];
- $self= $self->TiedRef if $tied;
- return $self;
-}
-
-
-sub UnLoad
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- @_ and croak "Usage: \$key->UnLoad;";
- my $unload= $self->{UNLOADME};
- "ARRAY" eq ref($unload)
- or croak "${PACK}->UnLoad called on a key which was not Load()ed";
- my( $obj, $subKey, $file )= @$unload;
- $self->RegCloseKey;
- return Win32API::Registry::RegUnLoadKey( $obj->Handle, $subKey );
-}
-
-
-sub AllowSave
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- return $self->AllowPriv( "SeBackupPrivilege", @_ );
-}
-
-
-sub AllowLoad
-{
- my $self= shift(@_);
- $self= tied(%$self) if tied(%$self);
- return $self->AllowPriv( "SeRestorePrivilege", @_ );
-}
-
-
-# RegNotifyChangeKeyValue( hKey, bWatchSubtree, iNotifyFilter, hEvent, bAsync )
-
-
-sub RegCloseKey { my $self= shift(@_);
- Win32API::Registry::RegCloseKey $self->Handle, @_; }
-sub RegConnectRegistry { my $self= shift(@_);
- Win32API::Registry::RegConnectRegistry @_; }
-sub RegCreateKey { my $self= shift(@_);
- Win32API::Registry::RegCreateKey $self->Handle, @_; }
-sub RegCreateKeyEx { my $self= shift(@_);
- Win32API::Registry::RegCreateKeyEx $self->Handle, @_; }
-sub RegDeleteKey { my $self= shift(@_);
- Win32API::Registry::RegDeleteKey $self->Handle, @_; }
-sub RegDeleteValue { my $self= shift(@_);
- Win32API::Registry::RegDeleteValue $self->Handle, @_; }
-sub RegEnumKey { my $self= shift(@_);
- Win32API::Registry::RegEnumKey $self->Handle, @_; }
-sub RegEnumKeyEx { my $self= shift(@_);
- Win32API::Registry::RegEnumKeyEx $self->Handle, @_; }
-sub RegEnumValue { my $self= shift(@_);
- Win32API::Registry::RegEnumValue $self->Handle, @_; }
-sub RegFlushKey { my $self= shift(@_);
- Win32API::Registry::RegFlushKey $self->Handle, @_; }
-sub RegGetKeySecurity { my $self= shift(@_);
- Win32API::Registry::RegGetKeySecurity $self->Handle, @_; }
-sub RegLoadKey { my $self= shift(@_);
- Win32API::Registry::RegLoadKey $self->Handle, @_; }
-sub RegNotifyChangeKeyValue { my $self= shift(@_);
- Win32API::Registry::RegNotifyChangeKeyValue $self->Handle, @_; }
-sub RegOpenKey { my $self= shift(@_);
- Win32API::Registry::RegOpenKey $self->Handle, @_; }
-sub RegOpenKeyEx { my $self= shift(@_);
- Win32API::Registry::RegOpenKeyEx $self->Handle, @_; }
-sub RegQueryInfoKey { my $self= shift(@_);
- Win32API::Registry::RegQueryInfoKey $self->Handle, @_; }
-sub RegQueryMultipleValues { my $self= shift(@_);
- Win32API::Registry::RegQueryMultipleValues $self->Handle, @_; }
-sub RegQueryValue { my $self= shift(@_);
- Win32API::Registry::RegQueryValue $self->Handle, @_; }
-sub RegQueryValueEx { my $self= shift(@_);
- Win32API::Registry::RegQueryValueEx $self->Handle, @_; }
-sub RegReplaceKey { my $self= shift(@_);
- Win32API::Registry::RegReplaceKey $self->Handle, @_; }
-sub RegRestoreKey { my $self= shift(@_);
- Win32API::Registry::RegRestoreKey $self->Handle, @_; }
-sub RegSaveKey { my $self= shift(@_);
- Win32API::Registry::RegSaveKey $self->Handle, @_; }
-sub RegSetKeySecurity { my $self= shift(@_);
- Win32API::Registry::RegSetKeySecurity $self->Handle, @_; }
-sub RegSetValue { my $self= shift(@_);
- Win32API::Registry::RegSetValue $self->Handle, @_; }
-sub RegSetValueEx { my $self= shift(@_);
- Win32API::Registry::RegSetValueEx $self->Handle, @_; }
-sub RegUnLoadKey { my $self= shift(@_);
- Win32API::Registry::RegUnLoadKey $self->Handle, @_; }
-sub AllowPriv { my $self= shift(@_);
- Win32API::Registry::AllowPriv @_; }
-
-
-# Autoload methods go after =cut, and are processed by the autosplit program.
-
-1;
-__END__
-
-=head1 NAME
-
-Win32::TieRegistry - Powerful and easy ways to manipulate a registry
-[on Win32 for now].
-
-=head1 SYNOPSIS
-
- use Win32::TieRegistry 0.20 ( UseOptionName=>UseOptionValue[,...] );
-
- $Registry->SomeMethodCall(arg1,...);
-
- $subKey= $Registry->{"Key\\SubKey\\"};
- $valueData= $Registry->{"Key\\SubKey\\\\ValueName"};
- $Registry->{"Key\\SubKey\\"}= { "NewSubKey" => {...} };
- $Registry->{"Key\\SubKey\\\\ValueName"}= "NewValueData";
- $Registry->{"\\ValueName"}= [ pack("fmt",$data), REG_DATATYPE ];
-
-=head1 EXAMPLES
-
- use Win32::TieRegistry( Delimiter=>"#", ArrayValues=>0 );
- $pound= $Registry->Delimiter("/");
- $diskKey= $Registry->{"LMachine/System/Disk/"}
- or die "Can't read LMachine/System/Disk key: $^E\n";
- $data= $key->{"/Information"}
- or die "Can't read LMachine/System/Disk//Information value: $^E\n";
- $remoteKey= $Registry->{"//ServerA/LMachine/System/"}
- or die "Can't read //ServerA/LMachine/System/ key: $^E\n";
- $remoteData= $remoteKey->{"Disk//Information"}
- or die "Can't read ServerA's System/Disk//Information value: $^E\n";
- foreach $entry ( keys(%$diskKey) ) {
- ...
- }
- foreach $subKey ( $diskKey->SubKeyNames ) {
- ...
- }
- $diskKey->AllowSave( 1 );
- $diskKey->RegSaveKey( "C:/TEMP/DiskReg", [] );
-
-=head1 DESCRIPTION
-
-The I<Win32::TieRegistry> module lets you manipulate the Registry
-via objects [as in "object oriented"] or via tied hashes. But
-you will probably mostly use a combination reference, that is, a
-reference to a tied hash that has also been made an object so that
-you can mix both access methods [as shown above].
-
-If you did not get this module as part of L<libwin32>, you might
-want to get a recent version of L<libwin32> from CPAN which should
-include this module and the I<Win32API::Registry> module that it
-uses.
-
-Skip to the L<SUMMARY> section if you just want to dive in and start
-using the Registry from Perl.
-
-Accessing and manipulating the registry is extremely simple using
-I<Win32::TieRegistry>. A single, simple expression can return
-you almost any bit of information stored in the Registry.
-I<Win32::TieRegistry> also gives you full access to the "raw"
-underlying API calls so that you can do anything with the Registry
-in Perl that you could do in C. But the "simple" interface has
-been carefully designed to handle almost all operations itself
-without imposing arbitrary limits while providing sensible
-defaults so you can list only the parameters you care about.
-
-But first, an overview of the Registry itself.
-
-=head2 The Registry
-
-The Registry is a forest: a collection of several tree structures.
-The root of each tree is a key. These root keys are identified by
-predefined constants whose names start with "HKEY_". Although all
-keys have a few attributes associated with each [a class, a time
-stamp, and security information], the most important aspect of keys
-is that each can contain subkeys and can contain values.
-
-Each subkey has a name: a string which cannot be blank and cannot
-contain the delimiter character [backslash: C<'\\'>] nor nul
-[C<'\0'>]. Each subkey is also a key and so can contain subkeys
-and values [and has a class, time stamp, and security information].
-
-Each value has a name: a string which E<can> be blank and E<can>
-contain the delimiter character [backslash: C<'\\'>] and any
-character except for null, C<'\0'>. Each value also has data
-associated with it. Each value's data is a contiguous chunk of
-bytes, which is exactly what a Perl string value is so Perl
-strings will usually be used to represent value data.
-
-Each value also has a data type which says how to interpret the
-value data. The primary data types are:
-
-=over
-
-=item REG_SZ
-
-A null-terminated string.
-
-=item REG_EXPAND_SZ
-
-A null-terminated string which contains substrings consisting of a
-percent sign [C<'%'>], an environment variable name, then a percent
-sign, that should be replaced with the value associate with that
-environment variable. The system does I<not> automatically do this
-substitution.
-
-=item REG_BINARY
-
-Some arbitrary binary value. You can think of these as being
-"packed" into a string.
-
-If your system has the L<SetDualVar> module installed,
-the C<DualBinVals()> option wasn't turned off, and you
-fetch a C<REG_BINARY> value of 4 bytes or fewer, then
-you can use the returned value in a numeric context to
-get at the "unpacked" numeric value. See C<GetValue()>
-for more information.
-
-=item REG_MULTI_SZ
-
-Several null-terminated strings concatenated together with an
-extra trailing C<'\0'> at the end of the list. Note that the list
-can include empty strings so use the value's length to determine
-the end of the list, not the first occurrence of C<'\0\0'>.
-It is best to set the C<SplitMultis()> option so I<Win32::TieRegistry>
-will split these values into an array of strings for you.
-
-=item REG_DWORD
-
-A long [4-byte] integer value. These values are expected either
-packed into a 4-character string or as a hex string of E<more than>
-4 characters [but I<not> as a numeric value, unfortunately, as there is
-no sure way to tell a numeric value from a packed 4-byte string that
-just happens to be a string containing a valid numeric value].
-
-How such values are returned depends on the C<DualBinVals()> and
-C<DWordsToHex()> options. See C<GetValue()> for details.
-
-=back
-
-In the underlying Registry calls, most places which take a
-subkey name also allow you to pass in a subkey "path" -- a
-string of several subkey names separated by the delimiter
-character, backslash [C<'\\'>]. For example, doing
-C<RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SYSTEM\\DISK",...)> is much
-like opening the C<"SYSTEM"> subkey of C<HKEY_LOCAL_MACHINE>,
-then opening its C<"DISK"> subkey, then closing the C<"SYSTEM">
-subkey.
-
-All of the I<Win32::TieRegistry> features allow you to use your
-own delimiter in place of the system's delimiter, [C<'\\'>]. In
-most of our examples we will use a forward slash [C<'/'>] as our
-delimiter as it is easier to read and less error prone to use when
-writing Perl code since you have to type two backslashes for each
-backslash you want in a string. Note that this is true even when
-using single quotes -- C<'\\HostName\LMachine\'> is an invalid
-string and must be written as C<'\\\\HostName\\LMachine\\'>.
-
-You can also connect to the registry of other computers on your
-network. This will be discussed more later.
-
-Although the Registry does not have a single root key, the
-I<Win32::TieRegistry> module creates a virtual root key for you
-which has all of the I<HKEY_*> keys as subkeys.
-
-=head2 Tied Hashes Documentation
-
-Before you can use a tied hash, you must create one. One way to
-do that is via:
-
- use Win32::TieRegistry ( TiedHash => '%RegHash' );
-
-which exports a C<%RegHash> variable into your package and ties it
-to the virtual root key of the Registry. An alternate method is:
-
- my %RegHash;
- use Win32::TieRegistry ( TiedHash => \%RegHash );
-
-There are also several ways you can tie a hash variable to any
-other key of the Registry, which are discussed later.
-
-Note that you will most likely use C<$Registry> instead of using
-a tied hash. C<$Registry> is a reference to a hash that has
-been tied to the virtual root of your computer's Registry [as if,
-C<$Registry= \%RegHash>]. So you would use C<$Registry-E<gt>{Key}>
-rather than C<$RegHash{Key}> and use C<keys %{$Registry}> rather
-than C<keys %RegHash>, for example.
-
-For each hash which has been tied to a Registry key, the Perl
-C<keys> function will return a list containing the name of each
-of the key's subkeys with a delimiter character appended to it and
-containing the name of each of the key's values with a delimiter
-prepended to it. For example:
-
- keys( %{ $Registry->{"HKEY_CLASSES_ROOT\\batfile\\"} } )
-
-might yield the following list value:
-
- ( "DefaultIcon\\", # The subkey named "DefaultIcon"
- "shell\\", # The subkey named "shell"
- "shellex\\", # The subkey named "shellex"
- "\\", # The default value [named ""]
- "\\EditFlags" ) # The value named "EditFlags"
-
-For the virtual root key, short-hand subkey names are used as
-shown below. You can use the short-hand name, the regular
-I<HKEY_*> name, or any numeric value to access these keys, but
-the short-hand names are all that will be returned by the C<keys>
-function.
-
-=over
-
-=item "Classes" for HKEY_CLASSES_ROOT
-
-Contains mappings between file name extensions and the uses
-for such files along with configuration information for COM
-[MicroSoft's Common Object Model] objects. Usually a link to
-the C<"SOFTWARE\\Classes"> subkey of the C<HKEY_LOCAL_MACHINE>
-key.
-
-=item "CUser" for HKEY_CURRENT_USER
-
-Contains information specific to the currently logged-in user.
-Mostly software configuration information. Usually a link to
-a subkey of the C<HKEY_USERS> key.
-
-=item "LMachine" for HKEY_LOCAL_MACHINE
-
-Contains all manner of information about the computer.
-
-=item "Users" for HKEY_USERS
-
-Contains one subkey, C<".DEFAULT">, which gets copied to a new
-subkey whenever a new user is added. Also contains a subkey for
-each user of the system, though only those for active users
-[usually only one] are loaded at any given time.
-
-=item "PerfData" for HKEY_PERFORMANCE_DATA
-
-Used to access data about system performance. Access via this key
-is "special" and all but the most carefully constructed calls will
-fail, usually with C<ERROR_INSUFFICIENT_BUFFER>. For example, you
-can't enumerate key names without also enumerating values which
-require huge buffers but the exact buffer size required cannot be
-determined beforehand because C<RegQueryInfoKey()> E<always> fails
-with C<ERROR_INSUFFICIENT_BUFFER> for C<HKEY_PERFORMANCE_DATA> no
-matter how it is called. So it is currently not very useful to
-tie a hash to this key. You can use it to create an object to use
-for making carefully constructed calls to the underlying Reg*()
-routines.
-
-=item "CConfig" for HKEY_CURRENT_CONFIG
-
-Contains minimal information about the computer's current
-configuration that is required very early in the boot process.
-For example, setting for the display adapter such as screen
-resolution and refresh rate are found in here.
-
-=item "DynData" for HKEY_DYN_DATA
-
-Dynamic data. We have found no documentation for this key.
-
-=back
-
-A tied hash is much like a regular hash variable in Perl -- you give
-it a key string inside braces, [C<{> and C<}>], and it gives you
-back a value [or lets you set a value]. For I<Win32::TieRegistry>
-hashes, there are two types of values that will be returned.
-
-=over
-
-=item SubKeys
-
-If you give it a string which represents a subkey, then it will
-give you back a reference to a hash which has been tied to that
-subkey. It can't return the hash itself, so it returns a
-reference to it. It also blesses that reference so that it is
-also an object so you can use it to call method functions.
-
-=item Values
-
-If you give it a string which is a value name, then it will give
-you back a string which is the data for that value. Alternately,
-you can request that it give you both the data value string and
-the data value type [we discuss how to request this later]. In
-this case, it would return a reference to an array where the value
-data string is element C<[0]> and the value data type is element
-C<[1]>.
-
-=back
-
-The key string which you use in the tied hash must be interpreted
-to determine whether it is a value name or a key name or a path
-that combines several of these or even other things. There are
-two simple rules that make this interpretation easy and
-unambiguous:
-
- Put a delimiter after each key name.
- Put a delimiter in front of each value name.
-
-Exactly how the key string will be intepreted is governed by the
-following cases, in the order listed. These cases are designed
-to "do what you mean". Most of the time you won't have to think
-about them, especially if you follow the two simple rules above.
-After the list of cases we give several examples which should be
-clear enough so feel free to skip to them unless you are worried
-about the details.
-
-=over
-
-=item Remote machines
-
-If the hash is tied to the virtual root of the registry [or the
-virtual root of a remote machine's registry], then we treat hash
-key strings which start with the delimiter character specially.
-
-If the hash key string starts with two delimiters in a row, then
-those should be immediately followed by the name of a remote
-machine whose registry we wish to connect to. That can be
-followed by a delimiter and more subkey names, etc. If the
-machine name is not following by anything, then a virtual root
-for the remote machine's registry is created, a hash is tied to
-it, and a reference to that hash it is returned.
-
-=item Hash key string starts with the delimiter
-
-If the hash is tied to a virtual root key, then the leading
-delimiter is ignored. It should be followed by a valid Registry
-root key name [either a short-hand name like C<"LMachine">, an
-I<HKEY_*> value, or a numeric value]. This alternate notation is
-allowed in order to be more consistant with the C<Open()> method
-function.
-
-For all other Registry keys, the leading delimiter indicates
-that the rest of the string is a value name. The leading
-delimiter is stripped and the rest of the string [which can
-be empty and can contain more delimiters] is used as a value
-name with no further parsing.
-
-=item Exact match with direct subkey name followed by delimiter
-
-If you have already called the Perl C<keys> function on the tied
-hash [or have already called C<MemberNames> on the object] and the
-hash key string exactly matches one of the strings returned, then
-no further parsing is done. In other words, if the key string
-exactly matches the name of a direct subkey with a delimiter
-appended, then a reference to a hash tied to that subkey is
-returned [but only if C<keys> or C<MemberNames> has already
-been called for that tied hash].
-
-This is only important if you have selected a delimiter other than
-the system default delimiter and one of the subkey names contains
-the delimiter you have chosen. This rule allows you to deal with
-subkeys which contain your chosen delimiter in their name as long
-as you only traverse subkeys one level at a time and always
-enumerate the list of members before doing so.
-
-The main advantage of this is that Perl code which recursively
-traverses a hash will work on hashes tied to Registry keys even if
-a non-default delimiter has been selected.
-
-=item Hash key string contains two delimiters in a row
-
-If the hash key string contains two [or more] delimiters in a row,
-then the string is split between the first pair of delimiters.
-The first part is interpreted as a subkey name or a path of subkey
-names separated by delimiters and with a trailing delimiter. The
-second part is interpreted as a value name with one leading
-delimiter [any extra delimiters are considered part of the value
-name].
-
-=item Hash key string ends with a delimiter
-
-If the key string ends with a delimiter, then it is treated
-as a subkey name or path of subkey names separated by delimiters.
-
-=item Hash key string contains a delimiter
-
-If the key string contains a delimiter, then it is split after
-the last delimiter. The first part is treated as a subkey name or
-path of subkey names separated by delimiters. The second part
-is ambiguous and is treated as outlined in the next item.
-
-=item Hash key string contains no delimiters
-
-If the hash key string contains no delimiters, then it is ambiguous.
-
-If you are reading from the hash [fetching], then we first use the
-key string as a value name. If there is a value with a matching
-name in the Registry key which the hash is tied to, then the value
-data string [and possibly the value data type] is returned.
-Otherwise, we retry by using the hash key string as a subkey name.
-If there is a subkey with a matching name, then we return a
-reference to a hash tied to that subkey. Otherwise we return
-C<undef>.
-
-If you are writing to the hash [storing], then we use the key
-string as a subkey name only if the value you are storing is a
-reference to a hash value. Otherwise we use the key string as
-a value name.
-
-=back
-
-=head3 Examples
-
-Here are some examples showing different ways of accessing Registry
-information using references to tied hashes:
-
-=over
-
-=item Canonical value fetch
-
- $tip18= $Registry->{"HKEY_LOCAL_MACHINE\\Software\\Microsoft\\"
- . 'Windows\\CurrentVersion\\Explorer\\Tips\\\\18'};
-
-Should return the text of important tip number 18. Note that two
-backslashes, C<"\\">, are required to get a single backslash into
-a Perl double-quoted or single-qouted string. Note that C<"\\">
-is appended to each key name [C<"HKEY_LOCAL_MACHINE"> through
-C<"Tips">] and C<"\\"> is prepended to the value name, C<"18">.
-
-=item Changing your delimiter
-
- $Registry->Delimiter("/");
- $tip18= $Registry->{"HKEY_LOCAL_MACHINE/Software/Microsoft/"
- . 'Windows/CurrentVersion/Explorer/Tips//18'};
-
-This usually makes things easier to read when working in Perl.
-All remaining examples will assume the delimiter has been changed
-as above.
-
-=item Using intermediate keys
-
- $ms= $Registry->{"LMachine/Software/Microsoft/"};
- $tips= $ms->{"Windows/CurrentVersion/Explorer/Tips/"};
- $tip18= $winlogon->{"/18"};
-
-Same as above but opens more keys into the Registry which lets you
-efficiently re-access those intermediate keys. This is slightly
-less efficient if you never reuse those intermediate keys.
-
-=item Chaining in a single statement
-
- $tip18= $Registry->{"LMachine/Software/Microsoft/"}->
- {"Windows/CurrentVersion/Explorer/Tips/"}->{"/18"};
-
-Like above, this creates intermediate key objects then uses
-them to access other data. Once this statement finishes, the
-intermediate key objects are destroyed. Several handles into
-the Registry are opened and closed by this statement so it is
-less efficient but there are times when this will be useful.
-
-=item Even less efficient example of chaining
-
- $tip18= $Registry->{"LMachine/Software/Microsoft"}->
- {"Windows/CurrentVersion/Explorer/Tips"}->{"/18"};
-
-Because we left off the trailing delimiters, I<Win32::TieRegistry>
-doesn't know whether final names, C<"Microsoft"> and C<"Tips">,
-are subkey names or value names. So this statement ends up
-executing the same code as the next one.
-
-=item What the above really does
-
- $tip18= $Registry->{"LMachine/Software/"}->{"Microsoft"}->
- {"Windows/CurrentVersion/Explorer/"}->{"Tips"}->{"/18"};
-
-With more chains to go through, more temporary objects are created
-and later destroyed than in our first chaining example. Also,
-when C<"Microsoft"> is looked up, I<Win32::TieRegistry> first
-tries to open it as a value and fails then tries it as a subkey.
-The same is true for when it looks up C<"Tips">.
-
-=item Getting all of the tips
-
- $tips= $Registry->{"LMachine/Software/Microsoft/"}->
- {"Windows/CurrentVersion/Explorer/Tips/"}
- or die "Can't find the Windows tips: $^E\n";
- foreach( keys %$tips ) {
- print "$_: ", $tips->{$_}, "\n";
- }
-
-First notice that we actually check for failure for the first
-time. We are assuming that the C<"Tips"> key contains no subkeys.
-Otherwise the C<print> statement would show something like
-C<"Win32::TieRegistry=HASH(0xc03ebc)"> for each subkey.
-
-The output from the above code will start something like:
-
- /0: If you don't know how to do something,[...]
-
-=back
-
-=head3 Deleting items
-
-You can use the Perl C<delete> function to delete a value from a
-Registry key or to delete a subkey as long that subkey contains
-no subkeys of its own. See L<More Examples>, below, for more
-information.
-
-=head3 Storing items
-
-You can use the Perl assignment operator [C<=>] to create new
-keys, create new values, or replace values. The values you store
-should be in the same format as the values you would fetch from a
-tied hash. For example, you can use a single assignment statement
-to copy an entire Registry tree. The following statement:
-
- $Registry->{"LMachine/Software/Classes/Tie_Registry/"}=
- $Registry->{"LMachine/Software/Classes/batfile/"};
-
-creates a C<"Tie_Registry"> subkey under the C<"Software\\Classes">
-subkey of the C<HKEY_LOCAL_MACHINE> key. Then it populates it
-with copies of all of the subkeys and values in the C<"batfile">
-subkey and all of its subkeys. Note that you need to have
-called C<$Registry-E<gt>ArrayValues(1)> for the proper value data
-type information to be copied. Note also that this release of
-I<Win32::TieRegistry> does not copy key attributes such as class
-name and security information [this is planned for a future release].
-
-The following statement creates a whole subtree in the Registry:
-
- $Registry->{"LMachine/Software/FooCorp/"}= {
- "FooWriter/" => {
- "/Version" => "4.032",
- "Startup/" => {
- "/Title" => "Foo Writer Deluxe ][",
- "/WindowSize" => [ pack("LL",$wid,$ht), "REG_BINARY" ],
- "/TaskBarIcon" => [ "0x0001", "REG_DWORD" ],
- },
- "Compatibility/" => {
- "/AutoConvert" => "Always",
- "/Default Palette" => "Windows Colors",
- },
- },
- "/License", => "0123-9C8EF1-09-FC",
- };
-
-Note that all but the last Registry key used on the left-hand
-side of the assignment [that is, "LMachine/Software/" but not
-"FooCorp/"] must already exist for this statement to succeed.
-
-By using the leading a trailing delimiters on each subkey name and
-value name, I<Win32::TieRegistry> will tell you if you try to assign
-subkey information to a value or visa-versa.
-
-=head3 More examples
-
-=over
-
-=item Adding a new tip
-
- $tips= $Registry->{"LMachine/Software/Microsoft/"}->
- {"Windows/CurrentVersion/Explorer/Tips/"}
- or die "Can't find the Windows tips: $^E\n";
- $tips{'/186'}= "Be very careful when making changes to the Registry!";
-
-=item Deleting our new tip
-
- $tips= $Registry->{"LMachine/Software/Microsoft/"}->
- {"Windows/CurrentVersion/Explorer/Tips/"}
- or die "Can't find the Windows tips: $^E\n";
- $tip186= delete $tips{'/186'};
-
-Note that Perl's C<delete> function returns the value that was deleted.
-
-=item Adding a new tip differently
-
- $Registry->{"LMachine/Software/Microsoft/" .
- "Windows/CurrentVersion/Explorer/Tips//186"}=
- "Be very careful when making changes to the Registry!";
-
-=item Deleting differently
-
- $tip186= delete $Registry->{"LMachine/Software/Microsoft/Windows/" .
- "CurrentVersion/Explorer/Tips//186"};
-
-Note that this only deletes the tail of what we looked up, the
-C<"186"> value, not any of the keys listed.
-
-=item Deleting a key
-
-WARNING: The following code will delete all information about the
-current user's tip preferences. Actually executing this command
-would probably cause the user to see the Welcome screen the next
-time they log in and may cause more serious problems. This
-statement is shown as an example only and should not be used when
-experimenting.
-
- $tips= delete $Registry->{"CUser/Software/Microsoft/Windows/" .
- "CurrentVersion/Explorer/Tips/"};
-
-This deletes the C<"Tips"> key and the values it contains. The
-C<delete> function will return a reference to a hash [not a tied
-hash] containing the value names and value data that were deleted.
-
-The information to be returned is copied from the Registry into a
-regular Perl hash before the key is deleted. If the key has many
-subkeys, this copying could take a significant amount of memory
-and/or processor time. So you can disable this process by calling
-the C<FastDelete> member function:
-
- $prevSetting= $regKey->FastDelete(1);
-
-which will cause all subsequent delete operations via C<$regKey>
-to simply return a true value if they succeed. This optimization
-is automatically done if you use C<delete> in a void context.
-
-=item Technical notes on deleting
-
-If you use C<delete> to delete a Registry key or value and use
-the return value, then I<Win32::TieRegistry> usually looks up the
-current contents of that key or value so they can be returned if
-the deletion is successful. If the deletion succeeds but the
-attempt to lookup the old contents failed, then the return value
-of C<delete> will be C<$^E> from the failed part of the operation.
-
-=item Undeleting a key
-
- $Registry->{"LMachine/Software/Microsoft/Windows/" .
- "CurrentVersion/Explorer/Tips/"}= $tips;
-
-This adds back what we just deleted. Note that this version of
-I<Win32::TieRegistry> will use defaults for the key attributes
-[such as class name and security] and will not restore the
-previous attributes.
-
-=item Not deleting a key
-
-WARNING: Actually executing the following code could cause
-serious problems. This statement is shown as an example only and
-should not be used when experimenting.
-
- $res= delete $Registry->{"CUser/Software/Microsoft/Windows/"}
- defined($res) || die "Can't delete URL key: $^E\n";
-
-Since the "Windows" key should contain subkeys, that C<delete>
-statement should make no changes to the Registry, return C<undef>,
-and set C<$^E> to "Access is denied".
-
-=item Not deleting again
-
- $tips= $Registry->{"CUser/Software/Microsoft/Windows/" .
- "CurrentVersion/Explorer/Tips/"};
- delete $tips;
-
-The Perl C<delete> function requires that its argument be an
-expression that ends in a hash element lookup [or hash slice],
-which is not the case here. The C<delete> function doesn't
-know which hash $tips came from and so can't delete it.
-
-=back
-
-=head2 Objects Documentation
-
-The following member functions are defined for use on
-I<Win32::TieRegistry> objects:
-
-=over
-
-=item new
-
-The C<new> method creates a new I<Win32::TieRegistry> object.
-C<new> is mostly a synonym for C<Open()> so see C<Open()> below for
-information on what arguments to pass in. Examples:
-
- $machKey= new Win32::TieRegistry "LMachine"
- or die "Can't access HKEY_LOCAL_MACHINE key: $^E\n";
- $userKey= Win32::TieRegistry->new("CUser")
- or die "Can't access HKEY_CURRENT_USER key: $^E\n";
-
-Note that calling C<new> via a reference to a tied hash returns
-a simple object, not a reference to a tied hash.
-
-=item Open
-
-=item $subKey= $key->Open( $sSubKey, $rhOptions )
-
-The C<Open> method opens a Registry key and returns a new
-I<Win32::TieRegistry> object associated with that Registry key.
-If C<Open> is called via a reference to a tied hash, then C<Open>
-returns another reference to a tied hash. Otherwise C<Open>
-returns a simple object and you should then use C<TiedRef> to get
-a reference to a tied hash.
-
-C<$sSubKey> is a string specifying a subkey to be opened.
-Alternately C<$sSubKey> can be a reference to an array value
-containing the list of increasingly deep subkeys specifying the
-path to the subkey to be opened.
-
-C<$rhOptions> is an optional reference to a hash containing extra
-options. The C<Open> method supports two options, C<"Delimiter">
-and C<"Access">, and C<$rhOptions> should have only have zero or
-more of these strings as keys. See the "Examples" section below
-for more information.
-
-The C<"Delimiter"> option specifies what string [usually a single
-character] will be used as the delimiter to be appended to subkey
-names and prepended to value names. If this option is not specified,
-the new key [C<$subKey>] inherits the delimiter of the old key
-[C<$key>].
-
-The C<"Access"> option specifies what level of access to the
-Registry key you wish to have once it has been opened. If this
-option is not specified, the new key [C<$subKey>] is opened with
-the same access level used when the old key [C<$key>] was opened.
-The virtual root of the Registry pretends it was opened with
-access C<KEY_READ()|KEY_WRITE()> so this is the default access when
-opening keys directory via C<$Registry>. If you don't plan on
-modifying a key, you should open it with C<KEY_READ> access as
-you may not have C<KEY_WRITE> access to it or some of its subkeys.
-
-If the C<"Access"> option value is a string that starts with
-C<"KEY_">, then it should match E<one> of the predefined access
-levels [probably C<"KEY_READ">, C<"KEY_WRITE">, or
-C<"KEY_ALL_ACCESS">] exported by the I<Win32API::Registry> module.
-Otherwise, a numeric value is expected. For maximum flexibility,
-include C<use Win32::TieRegistry qw(:KEY_);>, for example, near
-the top of your script so you can specify more complicated access
-levels such as C<KEY_READ()|KEY_WRITE()>.
-
-If C<$sSubKey> does not begin with the delimiter [or C<$sSubKey>
-is an array reference], then the path to the subkey to be opened
-will be relative to the path of the original key [C<$key>]. If
-C<$sSubKey> begins with a single delimiter, then the path to the
-subkey to be opened will be relative to the virtual root of the
-Registry on whichever machine the original key resides. If
-C<$sSubKey> begins with two consectutive delimiters, then those
-must be followed by a machine name which causes the C<Connect()>
-method function to be called.
-
-Examples:
-
- $machKey= $Registry->Open( "LMachine", {Access=>KEY_READ(),Delimiter=>"/"} )
- or die "Can't open HKEY_LOCAL_MACHINE key: $^E\n";
- $swKey= $machKey->Open( "Software" );
- $logonKey= $swKey->Open( "Microsoft/Windows NT/CurrentVersion/Winlogon/" );
- $NTversKey= $swKey->Open( ["Microsoft","Windows NT","CurrentVersion"] );
- $versKey= $swKey->Open( qw(Microsoft Windows CurrentVersion) );
-
- $remoteKey= $Registry->Open( "//HostA/LMachine/System/", {Delimiter=>"/"} )
- or die "Can't connect to HostA or can't open subkey: $^E\n";
-
-=item Clone
-
-=item $copy= $key->Clone
-
-Creates a new object that is associated with the same Registry key
-as the invoking object.
-
-=item Connect
-
-=item $remoteKey= $Registry->Connect( $sMachineName, $sKeyPath, $rhOptions )
-
-The C<Connect> method connects to the Registry of a remote machine,
-and opens a key within it, then returns a new I<Win32::TieRegistry>
-object associated with that remote Registry key. If C<Connect>
-was called using a reference to a tied hash, then the return value
-will also be a reference to a tied hash [or C<undef>]. Otherwise,
-if you wish to use the returned object as a tied hash [not just as
-an object], then use the C<TiedRef> method function after C<Connect>.
-
-C<$sMachineName> is the name of the remote machine. You don't have
-to preceed the machine name with two delimiter characters.
-
-C<$sKeyPath> is a string specifying the remote key to be opened.
-Alternately C<$sKeyPath> can be a reference to an array value
-containing the list of increasingly deep keys specifying the path
-to the key to be opened.
-
-C<$rhOptions> is an optional reference to a hash containing extra
-options. The C<Connect> method supports two options, C<"Delimiter">
-and C<"Access">. See the C<Open> method documentation for more
-information on these options.
-
-C<$sKeyPath> is already relative to the virtual root of the Registry
-of the remote machine. A single leading delimiter on C<sKeyPath>
-will be ignored and is not required.
-
-C<$sKeyPath> can be empty in which case C<Connect> will return an
-object representing the virtual root key of the remote Registry.
-Each subsequent use of C<Open> on this virtual root key will call
-the system C<RegConnectRegistry> function.
-
-The C<Connect> method can be called via any I<Win32::TieRegistry>
-object, not just C<$Registry>. Attributes such as the desired
-level of access and the delimiter will be inherited from the
-object used but the C<$sKeyPath> will always be relative to the
-virtual root of the remote machine's registry.
-
-Examples:
-
- $remMachKey= $Registry->Connect( "HostA", "LMachine", {Delimiter->"/"} )
- or die "Can't connect to HostA's HKEY_LOCAL_MACHINE key: $^E\n";
-
- $remVersKey= $remMachKey->Connect( "www.microsoft.com",
- "LMachine/Software/Microsoft/Inetsrv/CurrentVersion/",
- { Access=>KEY_READ, Delimiter=>"/" } )
- or die "Can't check what version of IIS Microsoft is running: $^E\n";
-
- $remVersKey= $remMachKey->Connect( "www",
- qw(LMachine Software Microsoft Inetsrv CurrentVersion) )
- or die "Can't check what version of IIS we are running: $^E\n";
-
-=item ObjectRef
-
-=item $object_ref= $obj_or_hash_ref->ObjectRef
-
-For a simple object, just returns itself [C<$obj == $obj->ObjectRef>].
-
-For a reference to a tied hash [if it is also an object], C<ObjectRef>
-returns the simple object that the hash is tied to.
-
-This is primarilly useful when debugging since typing C<x $Registry>
-will try to display your I<entire> registry contents to your screen.
-But the debugger command C<x $Registry->ObjectRef> will just dump
-the implementation details of the underlying object to your screen.
-
-=item Flush( $bFlush )
-
-Flushes all cached information about the Registry key so that future
-uses will get fresh data from the Registry.
-
-If the optional C<$bFlush> is specified and a true value, then
-C<RegFlushKey()> will be called, which is almost never necessary.
-
-=item GetValue
-
-=item $ValueData= $key->GetValue( $sValueName )
-
-=item ($ValueData,$ValueType)= $key->GetValue( $sValueName )
-
-Gets a Registry value's data and data type.
-
-C<$ValueData> is usually just a Perl string that contains the
-value data [packed into it]. For certain types of data, however,
-C<$ValueData> may be processed as described below.
-
-C<$ValueType> is the C<REG_*> constant describing the type of value
-data stored in C<$ValueData>. If the C<DualTypes()> option is on,
-then C<$ValueType> will be a dual value. That is, when used in a
-numeric context, C<$ValueType> will give the numeric value of a
-C<REG_*> constant. However, when used in a non-numeric context,
-C<$ValueType> will return the name of the C<REG_*> constant, for
-example C<"REG_SZ"> [note the quotes]. So both of the following
-can be true at the same time:
-
- $ValueType == REG_SZ()
- $ValueType eq "REG_SZ"
-
-=over
-
-=item REG_SZ and REG_EXPAND_SZ
-
-If the C<FixSzNulls()> option is on, then the trailing C<'\0'> will be
-stripped [unless there isn't one] before values of type C<REG_SZ>
-and C<REG_EXPAND_SZ> are returned. Note that C<SetValue()> will add
-a trailing C<'\0'> under similar circumstances.
-
-=item REG_MULTI_SZ
-
-If the C<SplitMultis()> option is on, then values of this type are
-returned as a reference to an array containing the strings. For
-example, a value that, with C<SplitMultis()> off, would be returned as:
-
- "Value1\000Value2\000\000"
-
-would be returned, with C<SplitMultis()> on, as:
-
- [ "Value1", "Value2" ]
-
-=item REG_DWORD
-
-If the C<DualBinVals()> option is on, then the value is returned
-as a scalar containing both a string and a number [much like
-the C<$!> variable -- see the L<SetDualVar> module for more
-information] where the number part is the "unpacked" value.
-Use the returned value in a numeric context to access this part
-of the value. For example:
-
- $num= 0 + $Registry->{"CUser/Console//ColorTable01"};
-
-If the C<DWordsToHex()> option is off, the string part of the
-returned value is a packed, 4-byte string [use C<unpack("L",$value)>
-to get the numeric value.
-
-If C<DWordsToHex()> is on, the string part of the returned value is
-a 10-character hex strings [with leading "0x"]. You can use
-C<hex($value)> to get the numeric value.
-
-Note that C<SetValue()> will properly understand each of these
-returned value formats no matter how C<DualBinVals()> is set.
-
-=back
-
-=item ValueNames
-
-=item @names= $key->ValueNames
-
-Returns the list of value names stored directly in a Registry key.
-Note that the names returned do I<not> have a delimiter prepended
-to them like with C<MemberNames()> and tied hashes.
-
-Once you request this information, it is cached in the object and
-future requests will always return the same list unless C<Flush()>
-has been called.
-
-=item SubKeyNames
-
-=item @key_names= $key->SubKeyNames
-
-Returns the list of subkey names stored directly in a Registry key.
-Note that the names returned do I<not> have a delimiter appended
-to them like with C<MemberNames()> and tied hashes.
-
-Once you request this information, it is cached in the object and
-future requests will always return the same list unless C<Flush()>
-has been called.
-
-=item SubKeyClasses
-
-=item @classes= $key->SubKeyClasses
-
-Returns the list of classes for subkeys stored directly in a
-Registry key. The classes are returned in the same order as
-the subkey names returned by C<SubKeyNames()>.
-
-=item SubKeyTimes
-
-=item @times= $key->SubKeyTimes
-
-Returns the list of last-modified times for subkeys stored
-directly in a Registry key. The times are returned in the same
-order as the subkey names returned by C<SubKeyNames()>. Each
-time is a C<FILETIME> structure packed into a Perl string.
-
-Once you request this information, it is cached in the object and
-future requests will always return the same list unless C<Flush()>
-has been called.
-
-=item MemberNames
-
-=item @members= $key->MemberNames
-
-Returns the list of subkey names and value names stored directly
-in a Registry key. Subkey names have a delimiter appended to the
-end and value names have a delimiter prepended to the front.
-
-Note that a value name could end in a delimiter [or could be C<"">
-so that the member name returned is just a delimiter] so the
-presence or absence of the leading delimiter is what should be
-used to determine whether a particular name is for a subkey or a
-value, not the presence or absence of a trailing delimiter.
-
-Once you request this information, it is cached in the object and
-future requests will always return the same list unless C<Flush()>
-has been called.
-
-=item Information
-
-=item %info= $key->Information
-
-=item @items= $key->Information( @itemNames );
-
-Returns the following information about a Registry key:
-
-=over
-
-=item LastWrite
-
-A C<FILETIME> structure indicating when the key was last modified
-and packed into a Perl string.
-
-=item CntSubKeys
-
-The number of subkeys stored directly in this key.
-
-=item CntValues
-
-The number of values stored directly in this key.
-
-=item SecurityLen
-
-The length [in bytes] of the largest[?] C<SECURITY_DESCRIPTOR>
-associated with the Registry key.
-
-=item MaxValDataLen
-
-The length [in bytes] of the longest value data associated with
-a value stored in this key.
-
-=item MaxSubKeyLen
-
-The length [in chars] of the longest subkey name associated with
-a subkey stored in this key.
-
-=item MaxSubClassLen
-
-The length [in chars] of the longest class name associated with
-a subkey stored directly in this key.
-
-=item MaxValNameLen
-
-The length [in chars] of the longest value name associated with
-a value stored in this key.
-
-=back
-
-With no arguments, returns a hash [not a reference to a hash] where
-the keys are the names for the items given above and the values
-are the information describe above. For example:
-
- %info= ( "CntValues" => 25, # Key contains 25 values.
- "MaxValNameLen" => 20, # One of which has a 20-char name.
- "MaxValDataLen" => 42, # One of which has a 42-byte value.
- "CntSubKeys" => 1, # Key has 1 immediate subkey.
- "MaxSubKeyLen" => 13, # One of which has a 12-char name.
- "MaxSubClassLen" => 0, # All of which have class names of "".
- "SecurityLen" => 232, # One SECURITY_DESCRIPTOR is 232 bytes.
- "LastWrite" => "\x90mZ\cX{\xA3\xBD\cA\c@\cA"
- # Key was last modifed 1998/06/01 16:29:32 GMT
- );
-
-With arguments, each one must be the name of a item given above.
-The return value is the information associated with the listed
-names. In other words:
-
- return $key->Information( @names );
-
-returns the same list as:
-
- %info= $key->Information;
- return @info{@names};
-
-=item Delimiter
-
-=item $oldDelim= $key->Delimiter
-
-=item $oldDelim= $key->Delimiter( $newDelim )
-
-Gets and possibly changes the delimiter used for this object. The
-delimiter is appended to subkey names and prepended to value names
-in many return values. It is also used when parsing keys passed
-to tied hashes.
-
-The delimiter defaults to backslash (C<'\\'>) but is inherited from
-the object used to create a new object and can be specified by an
-option when a new object is created.
-
-=item Handle
-
-=item $handle= $key->Handle
-
-Returns the raw C<HKEY> handle for the associated Registry key as
-an integer value. This value can then be used to Reg*() calls
-from I<Win32API::Registry>. However, it is usually easier to just
-call the I<Win32API::Registry> calls directly via:
-
- $key->RegNotifyChangeKeyValue( ... );
-
-For the virtual root of the local or a remote Registry,
-C<Handle()> return C<"NONE">.
-
-=item Path
-
-=item $path= $key->Path
-
-Returns a string describing the path of key names to this
-Registry key. The string is built so that if it were passed
-to C<$Registry->Open()>, it would reopen the same Registry key
-[except in the rare case where one of the key names contains
-C<$key->Delimiter>].
-
-=item Machine
-
-=item $computerName= $key->Machine
-
-Returns the name of the computer [or "machine"] on which this Registry
-key resides. Returns C<""> for local Registry keys.
-
-=item Access
-
-Returns the numeric value of the bit mask used to specify the
-types of access requested when this Registry key was opened. Can
-be compared to C<KEY_*> values.
-
-=item OS_Delimiter
-
-Returns the delimiter used by the operating system's RegOpenKeyEx()
-call. For Win32, this is always backslash (C<"\\">).
-
-=item Roots
-
-Returns the mapping from root key names like C<"LMachine"> to their
-associated C<HKEY_*> constants. Primarily for internal use and
-subject to change.
-
-=item Tie
-
-=item $key->Tie( \%hash );
-
-Ties the referenced hash to that Registry key. Pretty much the
-same as
-
- tie %hash, ref($key), $key;
-
-Since C<ref($key)> is the class [package] to tie the hash to and
-C<TIEHASH()> just returns its argument, C<$key>, [without calling
-C<new()>] when it sees that it is already a blessed object.
-
-=item TiedRef
-
-=item $TiedHashRef= $hash_or_obj_ref->TiedRef
-
-For a simple object, returns a reference to a hash tied to the
-object. Used to promote a simple object into a combined object
-and hash ref.
-
-If already a reference to a tied hash [that is also an object],
-it just returns itself [C<$ref == $ref->TiedRef>].
-
-Mostly used internally.
-
-=item ArrayValues
-
-=item $oldBool= $key->ArrayValues
-
-=item $oldBool= $key->ArrayValues( $newBool )
-
-Gets the current setting of the C<ArrayValues> option and possibly
-turns it on or off.
-
-When off, Registry values fetched via a tied hash are returned as
-just a value scalar [the same as C<GetValue()> in a scalar context].
-When on, they are returned as a reference to an array containing
-the value data as the C<[0]> element and the data type as the C<[1]>
-element.
-
-=item TieValues
-
-=item $oldBool= TieValues
-
-=item $oldBool= TieValues( $newBool )
-
-Gets the current setting of the C<TieValues> option and possibly
-turns it on or off.
-
-Turning this option on is not yet supported in this release of
-I<Win32::TieRegistry>. In a future release, turning this option
-on will cause Registry values returned from a tied hash to be
-a tied array that you can use to modify the value in the Registry.
-
-=item FastDelete
-
-=item $oldBool= $key->FastDelete
-
-=item $oldBool= $key->FastDelete( $newBool )
-
-Gets the current setting of the C<FastDelete> option and possibly
-turns it on or off.
-
-When on, successfully deleting a Registry key [via a tied hash]
-simply returns C<1>.
-
-When off, successfully deleting a Registry key [via a tied hash
-and not in a void context] returns a reference to a hash that
-contains the values present in the key when it was deleted. This
-hash is just like that returned when referencing the key before it
-was deleted except that it is an ordinary hash, not one tied to
-the I<Win32::TieRegistry> package.
-
-Note that deleting either a Registry key or value via a tied hash
-I<in a void context> prevents any overhead in trying to build an
-appropriate return value.
-
-Note that deleting a Registry I<value> via a tied hash [not in
-a void context] returns the value data even if <FastDelete> is on.
-
-=item SplitMultis
-
-=item $oldBool= $key->SplitMultis
-
-=item $oldBool= $key->SplitMultis( $newBool )
-
-Gets the current setting of the C<SplitMultis> option and possibly
-turns it on or off.
-
-If on, Registry values of type C<REG_MULTI_SZ> are returned as
-a reference to an array of strings. See C<GetValue()> for more
-information.
-
-=item DWordsToHex
-
-=item $oldBool= $key->DWordsToHex
-
-=item $oldBool= $key->DWordsToHex( $newBool )
-
-Gets the current setting of the C<DWordsToHex> option and possibly
-turns it on or off.
-
-If on, Registry values of type C<REG_DWORD> are returned as a hex
-string with leading C<"0x"> and longer than 4 characters. See
-C<GetValue()> for more information.
-
-=item FixSzNulls
-
-=item $oldBool= $key->FixSzNulls
-
-=item $oldBool= $key->FixSzNulls( $newBool )
-
-Gets the current setting of the C<FixSzNulls> option and possibly
-turns it on or off.
-
-If on, Registry values of type C<REG_SZ> and C<REG_EXPAND_SZ> have
-trailing C<'\0'>s added before they are set and stripped before
-they are returned. See C<GetValue()> and C<SetValue()> for more
-information.
-
-=item DualTypes
-
-=item $oldBool= $key->DualTypes
-
-=item $oldBool= $key->DualTypes( $newBool )
-
-Gets the current setting of the C<DualTypes> option and possibly
-turns it on or off.
-
-If on, data types are returned as a combined numeric/string value
-holding both the numeric value of a C<REG_*> constant and the
-string value of the constant's name. See C<GetValue()> for
-more information.
-
-=item DualBinVals
-
-=item $oldBool= $key->DualBinVals
-
-=item $oldBool= $key->DualBinVals( $newBool )
-
-Gets the current setting of the C<DualBinVals> option and possibly
-turns it on or off.
-
-If on, Registry value data of type C<REG_BINARY> and no more than
-4 bytes long and Registry values of type C<REG_DWORD> are returned
-as a combined numeric/string value where the numeric value is the
-"unpacked" binary value as returned by:
-
- hex reverse unpack( "h*", $valData )
-
-on a "little-endian" computer. [Would be C<hex unpack("H*",$valData)>
-on a "big-endian" computer if this module is ever ported to one.]
-
-See C<GetValue()> for more information.
-
-=item GetOptions
-
-=item @oldOptValues= $key->GetOptions( @optionNames )
-
-=item $refHashOfOldOpts= $key->GetOptions()
-
-=item $key->GetOptions( \%hashForOldOpts )
-
-Returns the current setting of any of the following options:
-
- Delimiter FixSzNulls DWordsToHex
- ArrayValues SplitMultis DualBinVals
- TieValues FastDelete DualTypes
-
-Pass in one or more of the above names (as strings) to get back
-an array of the corresponding current settings in the same order:
-
- my( $fastDel, $delim )= $key->GetOptions("FastDelete","Delimiter");
-
-Pass in no arguments to get back a reference to a hash where
-the above option names are the keys and the values are
-the corresponding current settings for each option:
-
- my $href= $key->GetOptions();
- my $delim= $href->{Delimiter};
-
-Pass in a single reference to a hash to have the above key/value
-pairs I<added> to the referenced hash. For this case, the
-return value is the original object so further methods can be
-chained after the call to GetOptions:
-
- my %oldOpts;
- $key->GetOptions( \%oldOpts )->SetOptions( Delimiter => "/" );
-
-=item SetOptions
-
-=item @oldOpts= $key->SetOptions( optNames=>$optValue,... )
-
-Changes the current setting of any of the following options,
-returning the previous setting(s):
-
- Delimiter FixSzNulls DWordsToHex AllowLoad
- ArrayValues SplitMultis DualBinVals AllowSave
- TieValues FastDelete DualTypes
-
-For C<AllowLoad> and C<AllowSave>, instead of the previous
-setting, C<SetOptions> returns whether or not the change was
-successful.
-
-In a scalar context, returns only the last item. The last
-option can also be specified as C<"ref"> or C<"r"> [which doesn't
-need to be followed by a value] to allow chaining:
-
- $key->SetOptions(AllowSave=>1,"ref")->RegSaveKey(...)
-
-=item SetValue
-
-=item $okay= $key->SetValue( $ValueName, $ValueData );
-
-=item $okay= $key->SetValue( $ValueName, $ValueData, $ValueType );
-
-Adds or replaces a Registry value. Returns a true value if
-successfully, false otherwise.
-
-C<$ValueName> is the name of the value to add or replace and
-should I<not> have a delimiter prepended to it. Case is ignored.
-
-C<$ValueType> is assumed to be C<REG_SZ> if it is omitted. Otherwise,
-it should be one the C<REG_*> constants.
-
-C<$ValueData> is the data to be stored in the value, probably packed
-into a Perl string. Other supported formats for value data are
-listed below for each posible C<$ValueType>.
-
-=over
-
-=item REG_SZ or REG_EXPAND_SZ
-
-The only special processing for these values is the addition of
-the required trailing C<'\0'> if it is missing. This can be
-turned off by disabling the C<FixSzNulls> option.
-
-=item REG_MULTI_SZ
-
-These values can also be specified as a reference to a list of
-strings. For example, the following two lines are equivalent:
-
- $key->SetValue( "Val1\000Value2\000LastVal\000\000", "REG_MULTI_SZ" );
- $key->SetValue( ["Val1","Value2","LastVal"], "REG_MULTI_SZ" );
-
-Note that if the required two trailing nulls (C<"\000\000">) are
-missing, then this release of C<SetValue()> will I<not> add them.
-
-=item REG_DWORD
-
-These values can also be specified as a hex value with the leading
-C<"0x"> included and totaling I<more than> 4 bytes. These will be
-packed into a 4-byte string via:
-
- $data= pack( "L", hex($data) );
-
-=item REG_BINARY
-
-This value type is listed just to emphasize that no alternate
-format is supported for it. In particular, you should I<not> pass
-in a numeric value for this type of data. C<SetValue()> cannot
-distinguish such from a packed string that just happens to match
-a numeric value and so will treat it as a packed string.
-
-=back
-
-An alternate calling format:
-
- $okay= $key->SetValue( $ValueName, [ $ValueData, $ValueType ] );
-
-[two arguments, the second of which is a reference to an array
-containing the value data and value type] is supported to ease
-using tied hashes with C<SetValue()>.
-
-=item CreateKey
-
-=item $newKey= $key->CreateKey( $subKey );
-
-=item $newKey= $key->CreateKey( $subKey, { Option=>OptVal,... } );
-
-Creates a Registry key or just updates attributes of one. Calls
-C<RegCreateKeyEx()> then, if it succeeded, creates an object
-associated with the [possibly new] subkey.
-
-C<$subKey> is the name of a subkey [or a path to one] to be
-created or updated. It can also be a reference to an array
-containing a list of subkey names.
-
-The second argument, if it exists, should be a reference to a
-hash specifying options either to be passed to C<RegCreateKeyEx()>
-or to be used when creating the associated object. The following
-items are the supported keys for this options hash:
-
-=over
-
-=item Delimiter
-
-Specifies the delimiter to be used to parse C<$subKey> and to be
-used in the new object. Defaults to C<$key->Delimiter>.
-
-=item Access
-
-Specifies the types of access requested when the subkey is opened.
-Should be a numeric bit mask that combines one or more C<KEY_*>
-constant values.
-
-=item Class
-
-The name to assign as the class of the new or updated subkey.
-Defaults to C<""> as we have never seen a use for this information.
-
-=item Disposition
-
-Lets you specify a reference to a scalar where, upon success, will be
-stored either C<REG_CREATED_NEW_KEY()> or C<REG_OPENED_EXISTING_KEY()>
-depending on whether a new key was created or an existing key was
-opened.
-
-If you, for example, did C<use Win32::TieRegistry qw(REG_CREATED_NEW_KEY)>
-then you can use C<REG_CREATED_NEW_KEY()> to compare against the numeric
-value stored in the referenced scalar.
-
-If the C<DualTypes> option is enabled, then in addition to the
-numeric value described above, the referenced scalar will also
-have a string value equal to either C<"REG_CREATED_NEW_KEY"> or
-C<"REG_OPENED_EXISTING_KEY">, as appropriate.
-
-=item Security
-
-Lets you specify a C<SECURITY_ATTRIBUTES> structure packed into a
-Perl string. See C<Win32API::Registry::RegCreateKeyEx()> for more
-information.
-
-=item Volatile
-
-If true, specifies that the new key should be volatile, that is,
-stored only in memory and not backed by a hive file [and not saved
-if the computer is rebooted]. This option is ignored under
-Windows 95. Specifying C<Volatile=E<GT>1> is the same as
-specifying C<Options=E<GT>REG_OPTION_VOLATILE>.
-
-=item Backup
-
-If true, specifies that the new key should be opened for
-backup/restore access. The C<Access> option is ignored. If the
-calling process has enabled C<"SeBackupPrivilege">, then the
-subkey is opened with C<KEY_READ> access as the C<"LocalSystem">
-user which should have access to all subkeys. If the calling
-process has enabled C<"SeRestorePrivilege">, then the subkey is
-opened with C<KEY_WRITE> access as the C<"LocalSystem"> user which
-should have access to all subkeys.
-
-This option is ignored under Windows 95. Specifying C<Backup=E<GT>1>
-is the same as specifying C<Options=E<GT>REG_OPTION_BACKUP_RESTORE>.
-
-=item Options
-
-Lets you specify options to the C<RegOpenKeyEx()> call. The value
-for this option should be a numeric value combining zero or more
-of the C<REG_OPTION_*> bit masks. You may with to used the
-C<Volatile> and/or C<Backup> options instead of this one.
-
-=back
-
-=item StoreKey
-
-=item $newKey= $key->StoreKey( $subKey, \%Contents );
-
-Primarily for internal use.
-
-Used to create or update a Registry key and any number of subkeys
-or values under it or its subkeys.
-
-C<$subKey> is the name of a subkey to be created [or a path of
-subkey names separated by delimiters]. If that subkey already
-exists, then it is updated.
-
-C<\%Contents> is a reference to a hash containing pairs of
-value names with value data and/or subkey names with hash
-references similar to C<\%Contents>. Each of these cause
-a value or subkey of C<$subKey> to be created or updated.
-
-If C<$Contents{""}> exists and is a reference to a hash, then
-it used as the options argument when C<CreateKey()> is called
-for C<$subKey>. This allows you to specify ...
-
- if( defined( $$data{""} ) && "HASH" eq ref($$data{""}) ) {
- $self= $this->CreateKey( $subKey, delete $$data{""} );
-
-=item Load
-
-=item $newKey= $key->Load( $file )
-
-=item $newKey= $key->Load( $file, $newSubKey )
-
-=item $newKey= $key->Load( $file, $newSubKey, { Option=>OptVal... } )
-
-=item $newKey= $key->Load( $file, { Option=>OptVal... } )
-
-Loads a hive file into a Registry. That is, creates a new subkey
-and associates a hive file with it.
-
-C<$file> is a hive file, that is a file created by calling
-C<RegSaveKey()>. The C<$file> path is interpreted relative to
-C<%SystemRoot%/System32/config> on the machine where C<$key>
-resides.
-
-C<$newSubKey> is the name to be given to the new subkey. If
-C<$newSubKey> is specified, then C<$key> must be
-C<HKEY_LOCAL_MACHINE> or C<HKEY_USERS> of the local computer
-or a remote computer and C<$newSubKey> should not contain any
-occurrences of either the delimiter or the OS delimiter.
-
-If C<$newSubKey> is not specified, then it is as if C<$key>
-was C<$Registry-E<GT>{LMachine}> and C<$newSubKey> is
-C<"PerlTie:999"> where C<"999"> is actually a sequence number
-incremented each time this process calls C<Load()>.
-
-You can specify as the last argument a reference to a hash
-containing options. You can specify the same options that you
-can specify to C<Open()>. See C<Open()> for more information on
-those. In addition, you can specify the option C<"NewSubKey">.
-The value of this option is interpretted exactly as if it was
-specified as the C<$newSubKey> parameter and overrides the
-C<$newSubKey> if one was specified.
-
-The hive is automatically unloaded when the returned object
-[C<$newKey>] is destroyed. Registry key objects opened within
-the hive will keep a reference to the C<$newKey> object so that
-it will not be destroyed before these keys are closed.
-
-=item UnLoad
-
-=item $okay= $key->UnLoad
-
-Unloads a hive that was loaded via C<Load()>. Cannot unload other
-hives. C<$key> must be the return from a previous call to C<Load()>.
-C<$key> is closed and then the hive is unloaded.
-
-=item AllowSave
-
-=item $okay= AllowSave( $bool )
-
-Enables or disables the C<"ReBackupPrivilege"> privilege for the
-current process. You will probably have to enable this privilege
-before you can use C<RegSaveKey()>.
-
-The return value indicates whether the operation succeeded, not
-whether the privilege was previously enabled.
-
-=item AllowLoad
-
-=item $okay= AllowLoad( $bool )
-
-Enables or disables the C<"ReRestorePrivilege"> privilege for the
-current process. You will probably have to enable this privilege
-before you can use C<RegLoadKey()>, C<RegUnLoadKey()>,
-C<RegReplaceKey()>, or C<RegRestoreKey> and thus C<Load()> and
-C<UnLoad()>.
-
-The return value indicates whether the operation succeeded, not
-whether the privilege was previously enabled.
-
-=back
-
-=head2 Exports [C<use> and C<import()>]
-
-To have nothing imported into your package, use something like:
-
- use Win32::TieRegistry 0.20 ();
-
-which would verify that you have at least version 0.20 but wouldn't
-call C<import()>. The F<Changes> file can be useful in figuring out
-which, if any, prior versions of I<Win32::TieRegistry> you want to
-support in your script.
-
-The code
-
- use Win32::TieRegistry;
-
-imports the variable C<$Registry> into your package and sets it
-to be a reference to a hash tied to a copy of the master Registry
-virtual root object with the default options. One disadvantage
-to this "default" usage is that Perl does not support checking
-the module version when you use it.
-
-Alternately, you can specify a list of arguments on the C<use>
-line that will be passed to the C<Win32::TieRegistry->import()>
-method to control what items to import into your package. These
-arguments fall into the following broad categories:
-
-=over
-
-=item Import a reference to a hash tied to a Registry virtual root
-
-You can request that a scalar variable be imported (possibly)
-and set to be a reference to a hash tied to a Registry virtual root
-using any of the following types of arguments or argument pairs:
-
-=over
-
-=item "TiedRef", '$scalar'
-
-=item "TiedRef", '$pack::scalar'
-
-=item "TiedRef", 'scalar'
-
-=item "TiedRef", 'pack::scalar'
-
-All of the above import a scalar named C<$scalar> into your package
-(or the package named "pack") and then sets it.
-
-=item '$scalar'
-
-=item '$pack::scalar'
-
-These are equivalent to the previous items to support a more
-traditional appearance to the list of exports. Note that the
-scalar name cannot be "RegObj" here.
-
-=item "TiedRef", \$scalar
-
-=item \$scalar
-
-These versions don't import anything but set the referenced C<$scalar>.
-
-=back
-
-=item Import a hash tied to the Registry virtual root
-
-You can request that a hash variable be imported (possibly)
-and tied to a Registry virtual root using any of the following
-types of arguments or argument pairs:
-
-=over
-
-=item "TiedHash", '%hash'
-
-=item "TiedHash", '%pack::hash'
-
-=item "TiedHash", 'hash'
-
-=item "TiedHash", 'pack::hash'
-
-All of the above import a hash named C<%hash> into your package
-(or the package named "pack") and then sets it.
-
-=item '%hash'
-
-=item '%pack::hash'
-
-These are equivalent to the previous items to support a more
-traditional appearance to the list of exports.
-
-=item "TiedHash", \%hash
-
-=item \%hash
-
-These versions don't import anything but set the referenced C<%hash>.
-
-=back
-
-=item Import a Registry virtual root object
-
-You can request that a scalar variable be imported (possibly)
-and set to be a Registry virtual root object using any of the
-following types of arguments or argument pairs:
-
-=over
-
-=item "ObjectRef", '$scalar'
-
-=item "ObjectRef", '$pack::scalar'
-
-=item "ObjectRef", 'scalar'
-
-=item "ObjectRef", 'pack::scalar'
-
-All of the above import a scalar named C<$scalar> into your package
-(or the package named "pack") and then sets it.
-
-=item '$RegObj'
-
-This is equivalent to the previous items for backward compatibility.
-
-=item "ObjectRef", \$scalar
-
-This version doesn't import anything but sets the referenced C<$scalar>.
-
-=back
-
-=item Import constant(s) exported by I<Win32API::Registry>
-
-You can list any constants that are exported by I<Win32API::Registry>
-to have them imported into your package. These constants have names
-starting with "KEY_" or "REG_" (or even "HKEY_").
-
-You can also specify C<":KEY_">, C<":REG_">, and even C<":HKEY_"> to
-import a whole set of constants.
-
-See I<Win32API::Registry> documentation for more information.
-
-=item Options
-
-You can list any option names that can be listed in the C<SetOptions()>
-method call, each folowed by the value to use for that option.
-A Registry virtual root object is created, all of these options are
-set for it, then each variable to be imported/set is associated with
-this object.
-
-In addition, the following special options are supported:
-
-=over
-
-=item ExportLevel
-
-Whether to import variables into your package or some
-package that uses your package. Defaults to the value of
-C<$Exporter::ExportLevel> and has the same meaning. See
-the L<Exporter> module for more information.
-
-=item ExportTo
-
-The name of the package to import variables and constants into.
-Overrides I<ExportLevel>.
-
-=back
-
-=back
-
-=head3 Specifying constants in your Perl code
-
-This module was written with a strong emphasis on the convenience of
-the module user. Therefore, most places where you can specify a
-constant like C<REG_SZ()> also allow you to specify a string
-containing the name of the constant, C<"REG_SZ">. This is convenient
-because you may not have imported that symbolic constant.
-
-Perl also emphasizes programmer convenience so the code C<REG_SZ>
-can be used to mean C<REG_SZ()> or C<"REG_SZ"> or be illegal.
-Note that using C<&REG_SZ> (as we've seen in much Win32 Perl code)
-is not a good idea since it passes the current C<@_> to the
-C<constant()> routine of the module which, at the least, can give
-you a warning under B<-w>.
-
-Although greatly a matter of style, the "safest" practice is probably
-to specifically list all constants in the C<use Win32::TieRegistry>
-statement, specify C<use strict> [or at least C<use strict qw(subs)>],
-and use bare constant names when you want the numeric value. This will
-detect mispelled constant names at compile time.
-
- use strict;
- my $Registry;
- use Win32::TieRegistry 0.20 (
- TiedRef => \$Registry, Delimiter => "/", ArrayValues => 1,
- SplitMultis => 1, AllowLoad => 1,
- qw( REG_SZ REG_EXPAND_SZ REG_DWORD REG_BINARY REG_MULTI_SZ
- KEY_READ KEY_WRITE KEY_ALL_ACCESS ),
- );
- $Registry->{"LMachine/Software/FooCorp/"}= {
- "FooWriter/" => {
- "/Fonts" => [ ["Times","Courier","Lucinda"], REG_MULTI_SZ ],
- "/WindowSize" => [ pack("LL",24,80), REG_BINARY ],
- "/TaskBarIcon" => [ "0x0001", REG_DWORD ],
- },
- } or die "Can't create Software/FooCorp/: $^E\n";
-
-If you don't want to C<use strict qw(subs)>, the second safest practice
-is similar to the above but use the C<REG_SZ()> form for constants
-when possible and quoted constant names when required. Note that
-C<qw()> is a form of quoting.
-
- use Win32::TieRegistry 0.20 qw(
- TiedRef $Registry
- Delimiter / ArrayValues 1 SplitMultis 1 AllowLoad 1
- REG_SZ REG_EXPAND_SZ REG_DWORD REG_BINARY REG_MULTI_SZ
- KEY_READ KEY_WRITE KEY_ALL_ACCESS
- );
- $Registry->{"LMachine/Software/FooCorp/"}= {
- "FooWriter/" => {
- "/Fonts" => [ ["Times","Courier","Lucinda"], REG_MULTI_SZ() ],
- "/WindowSize" => [ pack("LL",24,80), REG_BINARY() ],
- "/TaskBarIcon" => [ "0x0001", REG_DWORD() ],
- },
- } or die "Can't create Software/FooCorp/: $^E\n";
-
-The examples in this document mostly use quoted constant names
-(C<"REG_SZ">) since that works regardless of which constants
-you imported and whether or not you have C<use strict> in your
-script. It is not the best choice for you to use for real
-scripts (vs. examples) because it is less efficient and is not
-supported by most other similar modules.
-
-=head1 SUMMARY
-
-Most things can be done most easily via tied hashes. Skip down to the
-the L<Tied Hashes Summary> to get started quickly.
-
-=head2 Objects Summary
-
-Here are quick examples that document the most common functionality
-of all of the method functions [except for a few almost useless ones].
-
- # Just another way of saying Open():
- $key= new Win32::TieRegistry "LMachine\\Software\\",
- { Access=>KEY_READ()|KEY_WRITE(), Delimiter=>"\\" };
-
- # Open a Registry key:
- $subKey= $key->Open( "SubKey/SubSubKey/",
- { Access=>KEY_ALL_ACCESS, Delimiter=>"/" } );
-
- # Connect to a remote Registry key:
- $remKey= $Registry->Connect( "MachineName", "LMachine/",
- { Access=>KEY_READ, Delimiter=>"/" } );
-
- # Get value data:
- $valueString= $key->GetValue("ValueName");
- ( $valueString, $valueType )= $key->GetValue("ValueName");
-
- # Get list of value names:
- @valueNames= $key->ValueNames;
-
- # Get list of subkey names:
- @subKeyNames= $key->SubKeyNames;
-
- # Get combined list of value names (with leading delimiters)
- # and subkey names (with trailing delimiters):
- @memberNames= $key->MemberNames;
-
- # Get all information about a key:
- %keyInfo= $key->Information;
- # keys(%keyInfo)= qw( Class LastWrite SecurityLen
- # CntSubKeys MaxSubKeyLen MaxSubClassLen
- # CntValues MaxValNameLen MaxValDataLen );
-
- # Get selected information about a key:
- ( $class, $cntSubKeys )= $key->Information( "Class", "CntSubKeys" );
-
- # Get and/or set delimiter:
- $delim= $key->Delimiter;
- $oldDelim= $key->Delimiter( $newDelim );
-
- # Get "path" for an open key:
- $path= $key->Path;
- # For example, "/CUser/Control Panel/Mouse/"
- # or "//HostName/LMachine/System/DISK/".
-
- # Get name of machine where key is from:
- $mach= $key->Machine;
- # Will usually be "" indicating key is on local machine.
-
- # Control different options (see main documentation for descriptions):
- $oldBool= $key->ArrayValues( $newBool );
- $oldBool= $key->FastDelete( $newBool );
- $oldBool= $key->FixSzNulls( $newBool );
- $oldBool= $key->SplitMultis( $newBool );
- $oldBool= $key->DWordsToHex( $newBool );
- $oldBool= $key->DualBinVals( $newBool );
- $oldBool= $key->DualTypes( $newBool );
- @oldBools= $key->SetOptions( ArrayValues=>1, FastDelete=>1, FixSzNulls=>0,
- Delimiter=>"/", AllowLoad=>1, AllowSave=>1 );
- @oldBools= $key->GetOptions( ArrayValues, FastDelete, FixSzNulls );
-
- # Add or set a value:
- $key->SetValue( "ValueName", $valueDataString );
- $key->SetValue( "ValueName", pack($format,$valueData), "REG_BINARY" );
-
- # Add or set a key:
- $key->CreateKey( "SubKeyName" );
- $key->CreateKey( "SubKeyName",
- { Access=>"KEY_ALL_ACCESS", Class=>"ClassName",
- Delimiter=>"/", Volatile=>1, Backup=>1 } );
-
- # Load an off-line Registry hive file into the on-line Registry:
- $newKey= $Registry->Load( "C:/Path/To/Hive/FileName" );
- $newKey= $key->Load( "C:/Path/To/Hive/FileName", "NewSubKeyName",
- { Access=>"KEY_READ" } );
- # Unload a Registry hive file loaded via the Load() method:
- $newKey->UnLoad;
-
- # (Dis)Allow yourself to load Registry hive files:
- $success= $Registry->AllowLoad( $bool );
-
- # (Dis)Allow yourself to save a Registry key to a hive file:
- $success= $Registry->AllowSave( $bool );
-
- # Save a Registry key to a new hive file:
- $key->RegSaveKey( "C:/Path/To/Hive/FileName", [] );
-
-=head3 Other Useful Methods
-
-See I<Win32API::Registry> for more information on these methods.
-These methods are provided for coding convenience and are
-identical to the I<Win32API::Registry> functions except that these
-don't take a handle to a Registry key, instead getting the handle
-from the invoking object [C<$key>].
-
- $key->RegGetKeySecurity( $iSecInfo, $sSecDesc, $lenSecDesc );
- $key->RegLoadKey( $sSubKeyName, $sPathToFile );
- $key->RegNotifyChangeKeyValue(
- $bWatchSubtree, $iNotifyFilter, $hEvent, $bAsync );
- $key->RegQueryMultipleValues(
- $structValueEnts, $cntValueEnts, $Buffer, $lenBuffer );
- $key->RegReplaceKey( $sSubKeyName, $sPathToNewFile, $sPathToBackupFile );
- $key->RegRestoreKey( $sPathToFile, $iFlags );
- $key->RegSetKeySecurity( $iSecInfo, $sSecDesc );
- $key->RegUnLoadKey( $sSubKeyName );
-
-=head2 Tied Hashes Summary
-
-For fast learners, this may be the only section you need to read.
-Always append one delimiter to the end of each Registry key name
-and prepend one delimiter to the front of each Registry value name.
-
-=head3 Opening keys
-
- use Win32::TieRegistry ( Delimiter=>"/", ArrayValues=>1 );
- $Registry->Delimiter("/"); # Set delimiter to "/".
- $swKey= $Registry->{"LMachine/Software/"};
- $winKey= $swKey->{"Microsoft/Windows/CurrentVersion/"};
- $userKey= $Registry->
- {"CUser/Software/Microsoft/Windows/CurrentVersion/"};
- $remoteKey= $Registry->{"//HostName/LMachine/"};
-
-=head3 Reading values
-
- $progDir= $winKey->{"/ProgramFilesDir"}; # "C:\\Program Files"
- $tip21= $winKey->{"Explorer/Tips//21"}; # Text of tip #21.
-
- $winKey->ArrayValues(1);
- ( $devPath, $type )= $winKey->{"/DevicePath"};
- # $devPath eq "%SystemRoot%\\inf"
- # $type eq "REG_EXPAND_SZ" [if you have SetDualVar.pm installed]
- # $type == REG_EXPAND_SZ() [if did C<use Win32::TieRegistry qw(:REG_)>]
-
-=head3 Setting values
-
- $winKey->{"Setup//SourcePath"}= "\\\\SwServer\\SwShare\\Windows";
- # Simple. Assumes data type of REG_SZ.
-
- $winKey->{"Setup//Installation Sources"}=
- [ "D:\x00\\\\SwServer\\SwShare\\Windows\0\0", "REG_MULTI_SZ" ];
- # "\x00" and "\0" used to mark ends of each string and end of list.
-
- $winKey->{"Setup//Installation Sources"}=
- [ ["D:","\\\\SwServer\\SwShare\\Windows"], "REG_MULTI_SZ" ];
- # Alternate method that is easier to read.
-
- $userKey->{"Explorer/Tips//DisplayInitialTipWindow"}=
- [ pack("L",0), "REG_DWORD" ];
- $userKey->{"Explorer/Tips//Next"}= [ pack("S",3), "REG_BINARY" ];
- $userKey->{"Explorer/Tips//Show"}= [ pack("L",0), "REG_BINARY" ];
-
-=head3 Adding keys
-
- $swKey->{"FooCorp/"}= {
- "FooWriter/" => {
- "/Version" => "4.032",
- "Startup/" => {
- "/Title" => "Foo Writer Deluxe ][",
- "/WindowSize" => [ pack("LL",$wid,$ht), "REG_BINARY" ],
- "/TaskBarIcon" => [ "0x0001", "REG_DWORD" ],
- },
- "Compatibility/" => {
- "/AutoConvert" => "Always",
- "/Default Palette" => "Windows Colors",
- },
- },
- "/License", => "0123-9C8EF1-09-FC",
- };
-
-=head3 Listing all subkeys and values
-
- @members= keys( %{$swKey} );
- @subKeys= grep( m#^/#, keys( %{$swKey->{"Classes/batfile/"}} ) );
- # @subKeys= ( "/", "/EditFlags" );
- @valueNames= grep( ! m#^/#, keys( %{$swKey->{"Classes/batfile/"}} ) );
- # @valueNames= ( "DefaultIcon/", "shell/", "shellex/" );
-
-=head3 Deleting values or keys with no subkeys
-
- $oldValue= delete $userKey->{"Explorer/Tips//Next"};
-
- $oldValues= delete $userKey->{"Explorer/Tips/"};
- # $oldValues will be reference to hash containing deleted keys values.
-
-=head3 Closing keys
-
- undef $swKey; # Explicit way to close a key.
- $winKey= "Anything else"; # Implicitly closes a key.
- exit 0; # Implicitly closes all keys.
-
-=head2 Tie::Registry
-
-This module was originally called I<Tie::Registry>. Changing code
-that used I<Tie::Registry> over to I<Win32::TieRegistry> is trivial
-as the module name should only be mentioned once, in the C<use>
-line. However, finding all of the places that used I<Tie::Registry>
-may not be completely trivial so we have included F<Tie/Registry.pm>
-which you can install to provide backward compatibility.
-
-=head1 AUTHOR
-
-Tye McQueen. See http://www.metronet.com/~tye/ or e-mail
-tye@metronet.com with bug reports.
-
-=head1 SEE ALSO
-
-I<Win32API::Registry> - Provides access to C<Reg*()>, C<HKEY_*>,
-C<KEY_*>, C<REG_*> [required].
-
-I<Win32::WinError> - Defines C<ERROR_*> values [optional].
-
-L<SetDualVar> - For returning C<REG_*> values as combined
-string/integer values [optional].
-
-=head1 BUGS
-
-Perl5.004_02 has bugs that make I<Win32::TieRegistry> fail in
-strange and subtle ways.
-
-Using I<Win32::TieRegistry> with versions of Perl prior to 5.005
-can be tricky or impossible. Most notes about this have been
-removed from the documentation (they get rather complicated
-and confusing). This includes references to C<$^E> perhaps not
-being meaningful.
-
-Because Perl hashes are case sensitive, certain lookups are also
-case sensistive. In particular, the root keys ("Classes", "CUser",
-"LMachine", "Users", "PerfData", "CConfig", "DynData", and HKEY_*)
-must always be entered without changing between upper and lower
-case letters. Also, the special rule for matching subkey names
-that contain the user-selected delimiter only works if case is
-matched. All other key name and value name lookups should be case
-insensitive because the underlying Reg*() calls ignore case.
-
-Information about each key is cached when using a tied hash.
-This cache is not flushed nor updated when changes are made,
-I<even when the same tied hash is used> to make the changes.
-
-Current implementations of Perl's "global destruction" phase can
-cause objects returned by C<Load()> to be destroyed while keys
-within the hive are still open, if the objects still exist when
-the script starts to exit. When this happens, the automatic
-C<UnLoad()> will report a failure and the hive will remain loaded
-in the Registry.
-
-Trying to C<Load()> a hive file that is located on a remote network
-share may silently delete all data from the hive. This is a bug
-in the Win32 APIs, not any Perl code or modules. This module does
-not try to protect you from this bug.
-
-There is no test suite.
-
-=head1 FUTURE DIRECTIONS
-
-The following items are desired by the author and may appear in a
-future release of this module.
-
-=over
-
-=item TieValues option
-
-Currently described in main documentation but no yet implemented.
-
-=item AutoRefresh option
-
-Trigger use of C<RegNotifyChangeKeyValue()> to keep tied hash
-caches up-to-date even when other programs make changes.
-
-=item Error options
-
-Allow the user to have unchecked calls (calls in a "void context")
-to automatically report errors via C<warn> or C<die>.
-
-For complex operations, such a copying an entire subtree, provide
-access to detailed information about errors (and perhaps some
-warnings) that were encountered. Let the user control whether
-the complex operation continues in spite of errors.
-
-=back
-
-=cut
-
-# Autoload not currently supported by Perl under Windows.
diff --git a/Master/tlpkg/tlperl/lib/Win32/WinError.pm b/Master/tlpkg/tlperl/lib/Win32/WinError.pm
deleted file mode 100644
index 46028a79321..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/WinError.pm
+++ /dev/null
@@ -1,1017 +0,0 @@
-package Win32::WinError;
-
-require Exporter;
-require DynaLoader;
-
-$VERSION = '0.02';
-
-@ISA = qw(Exporter DynaLoader);
-# 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(
- GetLastError
- CACHE_E_FIRST
- CACHE_E_LAST
- CACHE_E_NOCACHE_UPDATED
- CACHE_S_FIRST
- CACHE_S_FORMATETC_NOTSUPPORTED
- CACHE_S_LAST
- CACHE_S_SAMECACHE
- CACHE_S_SOMECACHES_NOTUPDATED
- CLASSFACTORY_E_FIRST
- CLASSFACTORY_E_LAST
- CLASSFACTORY_S_FIRST
- CLASSFACTORY_S_LAST
- CLASS_E_CLASSNOTAVAILABLE
- CLASS_E_NOAGGREGATION
- CLIENTSITE_E_FIRST
- CLIENTSITE_E_LAST
- CLIENTSITE_S_FIRST
- CLIENTSITE_S_LAST
- CLIPBRD_E_BAD_DATA
- CLIPBRD_E_CANT_CLOSE
- CLIPBRD_E_CANT_EMPTY
- CLIPBRD_E_CANT_OPEN
- CLIPBRD_E_CANT_SET
- CLIPBRD_E_FIRST
- CLIPBRD_E_LAST
- CLIPBRD_S_FIRST
- CLIPBRD_S_LAST
- CONVERT10_E_FIRST
- CONVERT10_E_LAST
- CONVERT10_E_OLESTREAM_BITMAP_TO_DIB
- CONVERT10_E_OLESTREAM_FMT
- CONVERT10_E_OLESTREAM_GET
- CONVERT10_E_OLESTREAM_PUT
- CONVERT10_E_STG_DIB_TO_BITMAP
- CONVERT10_E_STG_FMT
- CONVERT10_E_STG_NO_STD_STREAM
- CONVERT10_S_FIRST
- CONVERT10_S_LAST
- CONVERT10_S_NO_PRESENTATION
- CO_E_ALREADYINITIALIZED
- CO_E_APPDIDNTREG
- CO_E_APPNOTFOUND
- CO_E_APPSINGLEUSE
- CO_E_BAD_PATH
- CO_E_CANTDETERMINECLASS
- CO_E_CLASSSTRING
- CO_E_CLASS_CREATE_FAILED
- CO_E_DLLNOTFOUND
- CO_E_ERRORINAPP
- CO_E_ERRORINDLL
- CO_E_FIRST
- CO_E_IIDSTRING
- CO_E_INIT_CLASS_CACHE
- CO_E_INIT_MEMORY_ALLOCATOR
- CO_E_INIT_ONLY_SINGLE_THREADED
- CO_E_INIT_RPC_CHANNEL
- CO_E_INIT_SCM_EXEC_FAILURE
- CO_E_INIT_SCM_FILE_MAPPING_EXISTS
- CO_E_INIT_SCM_MAP_VIEW_OF_FILE
- CO_E_INIT_SCM_MUTEX_EXISTS
- CO_E_INIT_SHARED_ALLOCATOR
- CO_E_INIT_TLS
- CO_E_INIT_TLS_CHANNEL_CONTROL
- CO_E_INIT_TLS_SET_CHANNEL_CONTROL
- CO_E_INIT_UNACCEPTED_USER_ALLOCATOR
- CO_E_LAST
- CO_E_NOTINITIALIZED
- CO_E_OBJISREG
- CO_E_OBJNOTCONNECTED
- CO_E_OBJNOTREG
- CO_E_OBJSRV_RPC_FAILURE
- CO_E_RELEASED
- CO_E_SCM_ERROR
- CO_E_SCM_RPC_FAILURE
- CO_E_SERVER_EXEC_FAILURE
- CO_E_SERVER_STOPPING
- CO_E_WRONGOSFORAPP
- CO_S_FIRST
- CO_S_LAST
- DATA_E_FIRST
- DATA_E_LAST
- DATA_S_FIRST
- DATA_S_LAST
- DATA_S_SAMEFORMATETC
- DISP_E_ARRAYISLOCKED
- DISP_E_BADCALLEE
- DISP_E_BADINDEX
- DISP_E_BADPARAMCOUNT
- DISP_E_BADVARTYPE
- DISP_E_EXCEPTION
- DISP_E_MEMBERNOTFOUND
- DISP_E_NONAMEDARGS
- DISP_E_NOTACOLLECTION
- DISP_E_OVERFLOW
- DISP_E_PARAMNOTFOUND
- DISP_E_PARAMNOTOPTIONAL
- DISP_E_TYPEMISMATCH
- DISP_E_UNKNOWNINTERFACE
- DISP_E_UNKNOWNLCID
- DISP_E_UNKNOWNNAME
- DRAGDROP_E_ALREADYREGISTERED
- DRAGDROP_E_FIRST
- DRAGDROP_E_INVALIDHWND
- DRAGDROP_E_LAST
- DRAGDROP_E_NOTREGISTERED
- DRAGDROP_S_CANCEL
- DRAGDROP_S_DROP
- DRAGDROP_S_FIRST
- DRAGDROP_S_LAST
- DRAGDROP_S_USEDEFAULTCURSORS
- DV_E_CLIPFORMAT
- DV_E_DVASPECT
- DV_E_DVTARGETDEVICE
- DV_E_DVTARGETDEVICE_SIZE
- DV_E_FORMATETC
- DV_E_LINDEX
- DV_E_NOIVIEWOBJECT
- DV_E_STATDATA
- DV_E_STGMEDIUM
- DV_E_TYMED
- ENUM_E_FIRST
- ENUM_E_LAST
- ENUM_S_FIRST
- ENUM_S_LAST
- EPT_S_CANT_CREATE
- EPT_S_CANT_PERFORM_OP
- EPT_S_INVALID_ENTRY
- EPT_S_NOT_REGISTERED
- ERROR_ACCESS_DENIED
- ERROR_ACCOUNT_DISABLED
- ERROR_ACCOUNT_EXPIRED
- ERROR_ACCOUNT_LOCKED_OUT
- ERROR_ACCOUNT_RESTRICTION
- ERROR_ACTIVE_CONNECTIONS
- ERROR_ADAP_HDW_ERR
- ERROR_ADDRESS_ALREADY_ASSOCIATED
- ERROR_ADDRESS_NOT_ASSOCIATED
- ERROR_ALIAS_EXISTS
- ERROR_ALLOTTED_SPACE_EXCEEDED
- ERROR_ALREADY_ASSIGNED
- ERROR_ALREADY_EXISTS
- ERROR_ALREADY_REGISTERED
- ERROR_ALREADY_RUNNING_LKG
- ERROR_ALREADY_WAITING
- ERROR_ARENA_TRASHED
- ERROR_ARITHMETIC_OVERFLOW
- ERROR_ATOMIC_LOCKS_NOT_SUPPORTED
- ERROR_AUTODATASEG_EXCEEDS_64k
- ERROR_BADDB
- ERROR_BADKEY
- ERROR_BAD_ARGUMENTS
- ERROR_BAD_COMMAND
- ERROR_BAD_DESCRIPTOR_FORMAT
- ERROR_BAD_DEVICE
- ERROR_BAD_DEV_TYPE
- ERROR_BAD_DRIVER
- ERROR_BAD_DRIVER_LEVEL
- ERROR_BAD_ENVIRONMENT
- ERROR_BAD_EXE_FORMAT
- ERROR_BAD_FORMAT
- ERROR_BAD_IMPERSONATION_LEVEL
- ERROR_BAD_INHERITANCE_ACL
- ERROR_BAD_LENGTH
- ERROR_BAD_LOGON_SESSION_STATE
- ERROR_BAD_NETPATH
- ERROR_BAD_NET_NAME
- ERROR_BAD_NET_RESP
- ERROR_BAD_PATHNAME
- ERROR_BAD_PIPE
- ERROR_BAD_PROFILE
- ERROR_BAD_PROVIDER
- ERROR_BAD_REM_ADAP
- ERROR_BAD_THREADID_ADDR
- ERROR_BAD_TOKEN_TYPE
- ERROR_BAD_UNIT
- ERROR_BAD_USERNAME
- ERROR_BAD_VALIDATION_CLASS
- ERROR_BEGINNING_OF_MEDIA
- ERROR_BOOT_ALREADY_ACCEPTED
- ERROR_BROKEN_PIPE
- ERROR_BUFFER_OVERFLOW
- ERROR_BUSY
- ERROR_BUSY_DRIVE
- ERROR_BUS_RESET
- ERROR_CALL_NOT_IMPLEMENTED
- ERROR_CANCELLED
- ERROR_CANCEL_VIOLATION
- ERROR_CANNOT_COPY
- ERROR_CANNOT_FIND_WND_CLASS
- ERROR_CANNOT_IMPERSONATE
- ERROR_CANNOT_MAKE
- ERROR_CANNOT_OPEN_PROFILE
- ERROR_CANTOPEN
- ERROR_CANTREAD
- ERROR_CANTWRITE
- ERROR_CANT_ACCESS_DOMAIN_INFO
- ERROR_CANT_DISABLE_MANDATORY
- ERROR_CANT_OPEN_ANONYMOUS
- ERROR_CAN_NOT_COMPLETE
- ERROR_CAN_NOT_DEL_LOCAL_WINS
- ERROR_CHILD_MUST_BE_VOLATILE
- ERROR_CHILD_NOT_COMPLETE
- ERROR_CHILD_WINDOW_MENU
- ERROR_CIRCULAR_DEPENDENCY
- ERROR_CLASS_ALREADY_EXISTS
- ERROR_CLASS_DOES_NOT_EXIST
- ERROR_CLASS_HAS_WINDOWS
- ERROR_CLIPBOARD_NOT_OPEN
- ERROR_CLIPPING_NOT_SUPPORTED
- ERROR_CONNECTION_ABORTED
- ERROR_CONNECTION_ACTIVE
- ERROR_CONNECTION_COUNT_LIMIT
- ERROR_CONNECTION_INVALID
- ERROR_CONNECTION_REFUSED
- ERROR_CONNECTION_UNAVAIL
- ERROR_CONTROL_ID_NOT_FOUND
- ERROR_COUNTER_TIMEOUT
- ERROR_CRC
- ERROR_CURRENT_DIRECTORY
- ERROR_DATABASE_DOES_NOT_EXIST
- ERROR_DC_NOT_FOUND
- ERROR_DEPENDENT_SERVICES_RUNNING
- ERROR_DESTROY_OBJECT_OF_OTHER_THREAD
- ERROR_DEVICE_ALREADY_REMEMBERED
- ERROR_DEVICE_IN_USE
- ERROR_DEVICE_NOT_PARTITIONED
- ERROR_DEV_NOT_EXIST
- ERROR_DIRECTORY
- ERROR_DIRECT_ACCESS_HANDLE
- ERROR_DIR_NOT_EMPTY
- ERROR_DIR_NOT_ROOT
- ERROR_DISCARDED
- ERROR_DISK_CHANGE
- ERROR_DISK_CORRUPT
- ERROR_DISK_FULL
- ERROR_DISK_OPERATION_FAILED
- ERROR_DISK_RECALIBRATE_FAILED
- ERROR_DISK_RESET_FAILED
- ERROR_DLL_INIT_FAILED
- ERROR_DOMAIN_CONTROLLER_NOT_FOUND
- ERROR_DOMAIN_EXISTS
- ERROR_DOMAIN_LIMIT_EXCEEDED
- ERROR_DOMAIN_TRUST_INCONSISTENT
- ERROR_DRIVE_LOCKED
- ERROR_DUPLICATE_SERVICE_NAME
- ERROR_DUP_DOMAINNAME
- ERROR_DUP_NAME
- ERROR_DYNLINK_FROM_INVALID_RING
- ERROR_EAS_DIDNT_FIT
- ERROR_EAS_NOT_SUPPORTED
- ERROR_EA_ACCESS_DENIED
- ERROR_EA_FILE_CORRUPT
- ERROR_EA_LIST_INCONSISTENT
- ERROR_EA_TABLE_FULL
- ERROR_END_OF_MEDIA
- ERROR_ENVVAR_NOT_FOUND
- ERROR_EOM_OVERFLOW
- ERROR_EVENTLOG_CANT_START
- ERROR_EVENTLOG_FILE_CHANGED
- ERROR_EVENTLOG_FILE_CORRUPT
- ERROR_EXCEPTION_IN_SERVICE
- ERROR_EXCL_SEM_ALREADY_OWNED
- ERROR_EXE_MARKED_INVALID
- ERROR_EXTENDED_ERROR
- ERROR_FAILED_SERVICE_CONTROLLER_CONNECT
- ERROR_FAIL_I24
- ERROR_FILEMARK_DETECTED
- ERROR_FILENAME_EXCED_RANGE
- ERROR_FILE_CORRUPT
- ERROR_FILE_EXISTS
- ERROR_FILE_INVALID
- ERROR_FILE_NOT_FOUND
- ERROR_FLOPPY_BAD_REGISTERS
- ERROR_FLOPPY_ID_MARK_NOT_FOUND
- ERROR_FLOPPY_UNKNOWN_ERROR
- ERROR_FLOPPY_WRONG_CYLINDER
- ERROR_FULLSCREEN_MODE
- ERROR_FULL_BACKUP
- ERROR_GENERIC_NOT_MAPPED
- ERROR_GEN_FAILURE
- ERROR_GLOBAL_ONLY_HOOK
- ERROR_GRACEFUL_DISCONNECT
- ERROR_GROUP_EXISTS
- ERROR_HANDLE_DISK_FULL
- ERROR_HANDLE_EOF
- ERROR_HOOK_NEEDS_HMOD
- ERROR_HOOK_NOT_INSTALLED
- ERROR_HOST_UNREACHABLE
- ERROR_HOTKEY_ALREADY_REGISTERED
- ERROR_HOTKEY_NOT_REGISTERED
- ERROR_HWNDS_HAVE_DIFF_PARENT
- ERROR_ILL_FORMED_PASSWORD
- ERROR_INCORRECT_ADDRESS
- ERROR_INC_BACKUP
- ERROR_INFLOOP_IN_RELOC_CHAIN
- ERROR_INSUFFICIENT_BUFFER
- ERROR_INTERNAL_DB_CORRUPTION
- ERROR_INTERNAL_DB_ERROR
- ERROR_INTERNAL_ERROR
- ERROR_INVALID_ACCEL_HANDLE
- ERROR_INVALID_ACCESS
- ERROR_INVALID_ACCOUNT_NAME
- ERROR_INVALID_ACL
- ERROR_INVALID_ADDRESS
- ERROR_INVALID_AT_INTERRUPT_TIME
- ERROR_INVALID_BLOCK
- ERROR_INVALID_BLOCK_LENGTH
- ERROR_INVALID_CATEGORY
- ERROR_INVALID_COMBOBOX_MESSAGE
- ERROR_INVALID_COMPUTERNAME
- ERROR_INVALID_CURSOR_HANDLE
- ERROR_INVALID_DATA
- ERROR_INVALID_DATATYPE
- ERROR_INVALID_DOMAINNAME
- ERROR_INVALID_DOMAIN_ROLE
- ERROR_INVALID_DOMAIN_STATE
- ERROR_INVALID_DRIVE
- ERROR_INVALID_DWP_HANDLE
- ERROR_INVALID_EA_HANDLE
- ERROR_INVALID_EA_NAME
- ERROR_INVALID_EDIT_HEIGHT
- ERROR_INVALID_ENVIRONMENT
- ERROR_INVALID_EVENTNAME
- ERROR_INVALID_EVENT_COUNT
- ERROR_INVALID_EXE_SIGNATURE
- ERROR_INVALID_FILTER_PROC
- ERROR_INVALID_FLAGS
- ERROR_INVALID_FLAG_NUMBER
- ERROR_INVALID_FORM_NAME
- ERROR_INVALID_FORM_SIZE
- ERROR_INVALID_FUNCTION
- ERROR_INVALID_GROUPNAME
- ERROR_INVALID_GROUP_ATTRIBUTES
- ERROR_INVALID_GW_COMMAND
- ERROR_INVALID_HANDLE
- ERROR_INVALID_HOOK_FILTER
- ERROR_INVALID_HOOK_HANDLE
- ERROR_INVALID_ICON_HANDLE
- ERROR_INVALID_ID_AUTHORITY
- ERROR_INVALID_INDEX
- ERROR_INVALID_LB_MESSAGE
- ERROR_INVALID_LEVEL
- ERROR_INVALID_LIST_FORMAT
- ERROR_INVALID_LOGON_HOURS
- ERROR_INVALID_LOGON_TYPE
- ERROR_INVALID_MEMBER
- ERROR_INVALID_MENU_HANDLE
- ERROR_INVALID_MESSAGE
- ERROR_INVALID_MESSAGEDEST
- ERROR_INVALID_MESSAGENAME
- ERROR_INVALID_MINALLOCSIZE
- ERROR_INVALID_MODULETYPE
- ERROR_INVALID_MSGBOX_STYLE
- ERROR_INVALID_NAME
- ERROR_INVALID_NETNAME
- ERROR_INVALID_ORDINAL
- ERROR_INVALID_OWNER
- ERROR_INVALID_PARAMETER
- ERROR_INVALID_PASSWORD
- ERROR_INVALID_PASSWORDNAME
- ERROR_INVALID_PIXEL_FORMAT
- ERROR_INVALID_PRIMARY_GROUP
- ERROR_INVALID_PRINTER_COMMAND
- ERROR_INVALID_PRINTER_NAME
- ERROR_INVALID_PRINTER_STATE
- ERROR_INVALID_PRIORITY
- ERROR_INVALID_SCROLLBAR_RANGE
- ERROR_INVALID_SECURITY_DESCR
- ERROR_INVALID_SEGDPL
- ERROR_INVALID_SEGMENT_NUMBER
- ERROR_INVALID_SEPARATOR_FILE
- ERROR_INVALID_SERVER_STATE
- ERROR_INVALID_SERVICENAME
- ERROR_INVALID_SERVICE_ACCOUNT
- ERROR_INVALID_SERVICE_CONTROL
- ERROR_INVALID_SERVICE_LOCK
- ERROR_INVALID_SHARENAME
- ERROR_INVALID_SHOWWIN_COMMAND
- ERROR_INVALID_SID
- ERROR_INVALID_SIGNAL_NUMBER
- ERROR_INVALID_SPI_VALUE
- ERROR_INVALID_STACKSEG
- ERROR_INVALID_STARTING_CODESEG
- ERROR_INVALID_SUB_AUTHORITY
- ERROR_INVALID_TARGET_HANDLE
- ERROR_INVALID_THREAD_ID
- ERROR_INVALID_TIME
- ERROR_INVALID_USER_BUFFER
- ERROR_INVALID_VERIFY_SWITCH
- ERROR_INVALID_WINDOW_HANDLE
- ERROR_INVALID_WINDOW_STYLE
- ERROR_INVALID_WORKSTATION
- ERROR_IOPL_NOT_ENABLED
- ERROR_IO_DEVICE
- ERROR_IO_INCOMPLETE
- ERROR_IO_PENDING
- ERROR_IRQ_BUSY
- ERROR_IS_JOINED
- ERROR_IS_JOIN_PATH
- ERROR_IS_JOIN_TARGET
- ERROR_IS_SUBSTED
- ERROR_IS_SUBST_PATH
- ERROR_IS_SUBST_TARGET
- ERROR_ITERATED_DATA_EXCEEDS_64k
- ERROR_JOIN_TO_JOIN
- ERROR_JOIN_TO_SUBST
- ERROR_JOURNAL_HOOK_SET
- ERROR_KEY_DELETED
- ERROR_KEY_HAS_CHILDREN
- ERROR_LABEL_TOO_LONG
- ERROR_LAST_ADMIN
- ERROR_LB_WITHOUT_TABSTOPS
- ERROR_LISTBOX_ID_NOT_FOUND
- ERROR_LM_CROSS_ENCRYPTION_REQUIRED
- ERROR_LOCAL_USER_SESSION_KEY
- ERROR_LOCKED
- ERROR_LOCK_FAILED
- ERROR_LOCK_VIOLATION
- ERROR_LOGIN_TIME_RESTRICTION
- ERROR_LOGIN_WKSTA_RESTRICTION
- ERROR_LOGON_FAILURE
- ERROR_LOGON_NOT_GRANTED
- ERROR_LOGON_SESSION_COLLISION
- ERROR_LOGON_SESSION_EXISTS
- ERROR_LOGON_TYPE_NOT_GRANTED
- ERROR_LOG_FILE_FULL
- ERROR_LUIDS_EXHAUSTED
- ERROR_MAPPED_ALIGNMENT
- ERROR_MAX_THRDS_REACHED
- ERROR_MEDIA_CHANGED
- ERROR_MEMBERS_PRIMARY_GROUP
- ERROR_MEMBER_IN_ALIAS
- ERROR_MEMBER_IN_GROUP
- ERROR_MEMBER_NOT_IN_ALIAS
- ERROR_MEMBER_NOT_IN_GROUP
- ERROR_METAFILE_NOT_SUPPORTED
- ERROR_META_EXPANSION_TOO_LONG
- ERROR_MOD_NOT_FOUND
- ERROR_MORE_DATA
- ERROR_MORE_WRITES
- ERROR_MR_MID_NOT_FOUND
- ERROR_NEGATIVE_SEEK
- ERROR_NESTING_NOT_ALLOWED
- ERROR_NETLOGON_NOT_STARTED
- ERROR_NETNAME_DELETED
- ERROR_NETWORK_ACCESS_DENIED
- ERROR_NETWORK_BUSY
- ERROR_NETWORK_UNREACHABLE
- ERROR_NET_WRITE_FAULT
- ERROR_NOACCESS
- ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT
- ERROR_NOLOGON_SERVER_TRUST_ACCOUNT
- ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT
- ERROR_NONE_MAPPED
- ERROR_NON_MDICHILD_WINDOW
- ERROR_NOTIFY_ENUM_DIR
- ERROR_NOT_ALL_ASSIGNED
- ERROR_NOT_CHILD_WINDOW
- ERROR_NOT_CONNECTED
- ERROR_NOT_CONTAINER
- ERROR_NOT_DOS_DISK
- ERROR_NOT_ENOUGH_MEMORY
- ERROR_NOT_ENOUGH_QUOTA
- ERROR_NOT_ENOUGH_SERVER_MEMORY
- ERROR_NOT_JOINED
- ERROR_NOT_LOCKED
- ERROR_NOT_LOGON_PROCESS
- ERROR_NOT_OWNER
- ERROR_NOT_READY
- ERROR_NOT_REGISTRY_FILE
- ERROR_NOT_SAME_DEVICE
- ERROR_NOT_SUBSTED
- ERROR_NOT_SUPPORTED
- ERROR_NO_BROWSER_SERVERS_FOUND
- ERROR_NO_DATA
- ERROR_NO_DATA_DETECTED
- ERROR_NO_IMPERSONATION_TOKEN
- ERROR_NO_INHERITANCE
- ERROR_NO_LOGON_SERVERS
- ERROR_NO_LOG_SPACE
- ERROR_NO_MEDIA_IN_DRIVE
- ERROR_NO_MORE_FILES
- ERROR_NO_MORE_ITEMS
- ERROR_NO_MORE_SEARCH_HANDLES
- ERROR_NO_NETWORK
- ERROR_NO_NET_OR_BAD_PATH
- ERROR_NO_PROC_SLOTS
- ERROR_NO_QUOTAS_FOR_ACCOUNT
- ERROR_NO_SCROLLBARS
- ERROR_NO_SECURITY_ON_OBJECT
- ERROR_NO_SHUTDOWN_IN_PROGRESS
- ERROR_NO_SIGNAL_SENT
- ERROR_NO_SPOOL_SPACE
- ERROR_NO_SUCH_ALIAS
- ERROR_NO_SUCH_DOMAIN
- ERROR_NO_SUCH_GROUP
- ERROR_NO_SUCH_LOGON_SESSION
- ERROR_NO_SUCH_MEMBER
- ERROR_NO_SUCH_PACKAGE
- ERROR_NO_SUCH_PRIVILEGE
- ERROR_NO_SUCH_USER
- ERROR_NO_SYSTEM_MENU
- ERROR_NO_TOKEN
- ERROR_NO_TRUST_LSA_SECRET
- ERROR_NO_TRUST_SAM_ACCOUNT
- ERROR_NO_UNICODE_TRANSLATION
- ERROR_NO_USER_SESSION_KEY
- ERROR_NO_VOLUME_LABEL
- ERROR_NO_WILDCARD_CHARACTERS
- ERROR_NT_CROSS_ENCRYPTION_REQUIRED
- ERROR_NULL_LM_PASSWORD
- ERROR_OPEN_FAILED
- ERROR_OPEN_FILES
- ERROR_OPERATION_ABORTED
- ERROR_OUTOFMEMORY
- ERROR_OUT_OF_PAPER
- ERROR_OUT_OF_STRUCTURES
- ERROR_PARTIAL_COPY
- ERROR_PARTITION_FAILURE
- ERROR_PASSWORD_EXPIRED
- ERROR_PASSWORD_MUST_CHANGE
- ERROR_PASSWORD_RESTRICTION
- ERROR_PATH_BUSY
- ERROR_PATH_NOT_FOUND
- ERROR_PIPE_BUSY
- ERROR_PIPE_CONNECTED
- ERROR_PIPE_LISTENING
- ERROR_PIPE_NOT_CONNECTED
- ERROR_POPUP_ALREADY_ACTIVE
- ERROR_PORT_UNREACHABLE
- ERROR_POSSIBLE_DEADLOCK
- ERROR_PRINTER_ALREADY_EXISTS
- ERROR_PRINTER_DELETED
- ERROR_PRINTER_DRIVER_ALREADY_INSTALLED
- ERROR_PRINTER_DRIVER_IN_USE
- ERROR_PRINTQ_FULL
- ERROR_PRINT_CANCELLED
- ERROR_PRINT_MONITOR_ALREADY_INSTALLED
- ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED
- ERROR_PRIVATE_DIALOG_INDEX
- ERROR_PRIVILEGE_NOT_HELD
- ERROR_PROCESS_ABORTED
- ERROR_PROC_NOT_FOUND
- ERROR_PROTOCOL_UNREACHABLE
- ERROR_READ_FAULT
- ERROR_REC_NON_EXISTENT
- ERROR_REDIRECTOR_HAS_OPEN_HANDLES
- ERROR_REDIR_PAUSED
- ERROR_REGISTRY_CORRUPT
- ERROR_REGISTRY_IO_FAILED
- ERROR_REGISTRY_RECOVERED
- ERROR_RELOC_CHAIN_XEEDS_SEGLIM
- ERROR_REMOTE_SESSION_LIMIT_EXCEEDED
- ERROR_REM_NOT_LIST
- ERROR_REQUEST_ABORTED
- ERROR_REQ_NOT_ACCEP
- ERROR_RESOURCE_DATA_NOT_FOUND
- ERROR_RESOURCE_LANG_NOT_FOUND
- ERROR_RESOURCE_NAME_NOT_FOUND
- ERROR_RESOURCE_TYPE_NOT_FOUND
- ERROR_RETRY
- ERROR_REVISION_MISMATCH
- ERROR_RING2SEG_MUST_BE_MOVABLE
- ERROR_RING2_STACK_IN_USE
- ERROR_RPL_NOT_ALLOWED
- ERROR_RXACT_COMMIT_FAILURE
- ERROR_RXACT_INVALID_STATE
- ERROR_SAME_DRIVE
- ERROR_SCREEN_ALREADY_LOCKED
- ERROR_SECRET_TOO_LONG
- ERROR_SECTOR_NOT_FOUND
- ERROR_SEEK
- ERROR_SEEK_ON_DEVICE
- ERROR_SEM_IS_SET
- ERROR_SEM_NOT_FOUND
- ERROR_SEM_OWNER_DIED
- ERROR_SEM_TIMEOUT
- ERROR_SEM_USER_LIMIT
- ERROR_SERIAL_NO_DEVICE
- ERROR_SERVER_DISABLED
- ERROR_SERVER_HAS_OPEN_HANDLES
- ERROR_SERVER_NOT_DISABLED
- ERROR_SERVICE_ALREADY_RUNNING
- ERROR_SERVICE_CANNOT_ACCEPT_CTRL
- ERROR_SERVICE_DATABASE_LOCKED
- ERROR_SERVICE_DEPENDENCY_DELETED
- ERROR_SERVICE_DEPENDENCY_FAIL
- ERROR_SERVICE_DISABLED
- ERROR_SERVICE_DOES_NOT_EXIST
- ERROR_SERVICE_EXISTS
- ERROR_SERVICE_LOGON_FAILED
- ERROR_SERVICE_MARKED_FOR_DELETE
- ERROR_SERVICE_NEVER_STARTED
- ERROR_SERVICE_NOT_ACTIVE
- ERROR_SERVICE_NOT_FOUND
- ERROR_SERVICE_NO_THREAD
- ERROR_SERVICE_REQUEST_TIMEOUT
- ERROR_SERVICE_SPECIFIC_ERROR
- ERROR_SERVICE_START_HANG
- ERROR_SESSION_CREDENTIAL_CONFLICT
- ERROR_SETCOUNT_ON_BAD_LB
- ERROR_SETMARK_DETECTED
- ERROR_SHARING_BUFFER_EXCEEDED
- ERROR_SHARING_PAUSED
- ERROR_SHARING_VIOLATION
- ERROR_SHUTDOWN_IN_PROGRESS
- ERROR_SIGNAL_PENDING
- ERROR_SIGNAL_REFUSED
- ERROR_SOME_NOT_MAPPED
- ERROR_SPECIAL_ACCOUNT
- ERROR_SPECIAL_GROUP
- ERROR_SPECIAL_USER
- ERROR_SPL_NO_ADDJOB
- ERROR_SPL_NO_STARTDOC
- ERROR_SPOOL_FILE_NOT_FOUND
- ERROR_STACK_OVERFLOW
- ERROR_STATIC_INIT
- ERROR_SUBST_TO_JOIN
- ERROR_SUBST_TO_SUBST
- ERROR_SUCCESS
- ERROR_SWAPERROR
- ERROR_SYSTEM_TRACE
- ERROR_THREAD_1_INACTIVE
- ERROR_TLW_WITH_WSCHILD
- ERROR_TOKEN_ALREADY_IN_USE
- ERROR_TOO_MANY_CMDS
- ERROR_TOO_MANY_CONTEXT_IDS
- ERROR_TOO_MANY_LUIDS_REQUESTED
- ERROR_TOO_MANY_MODULES
- ERROR_TOO_MANY_MUXWAITERS
- ERROR_TOO_MANY_NAMES
- ERROR_TOO_MANY_OPEN_FILES
- ERROR_TOO_MANY_POSTS
- ERROR_TOO_MANY_SECRETS
- ERROR_TOO_MANY_SEMAPHORES
- ERROR_TOO_MANY_SEM_REQUESTS
- ERROR_TOO_MANY_SESS
- ERROR_TOO_MANY_SIDS
- ERROR_TOO_MANY_TCBS
- ERROR_TRANSFORM_NOT_SUPPORTED
- ERROR_TRUSTED_DOMAIN_FAILURE
- ERROR_TRUSTED_RELATIONSHIP_FAILURE
- ERROR_TRUST_FAILURE
- ERROR_UNABLE_TO_LOCK_MEDIA
- ERROR_UNABLE_TO_UNLOAD_MEDIA
- ERROR_UNEXP_NET_ERR
- ERROR_UNKNOWN_PORT
- ERROR_UNKNOWN_PRINTER_DRIVER
- ERROR_UNKNOWN_PRINTPROCESSOR
- ERROR_UNKNOWN_PRINT_MONITOR
- ERROR_UNKNOWN_REVISION
- ERROR_UNRECOGNIZED_MEDIA
- ERROR_UNRECOGNIZED_VOLUME
- ERROR_USER_EXISTS
- ERROR_USER_MAPPED_FILE
- ERROR_VC_DISCONNECTED
- ERROR_WAIT_NO_CHILDREN
- ERROR_WINDOW_NOT_COMBOBOX
- ERROR_WINDOW_NOT_DIALOG
- ERROR_WINDOW_OF_OTHER_THREAD
- ERROR_WINS_INTERNAL
- ERROR_WRITE_FAULT
- ERROR_WRITE_PROTECT
- ERROR_WRONG_DISK
- ERROR_WRONG_PASSWORD
- E_ABORT
- E_ACCESSDENIED
- E_FAIL
- E_HANDLE
- E_INVALIDARG
- E_NOINTERFACE
- E_NOTIMPL
- E_OUTOFMEMORY
- E_POINTER
- E_UNEXPECTED
- FACILITY_CONTROL
- FACILITY_DISPATCH
- FACILITY_ITF
- FACILITY_NT_BIT
- FACILITY_NULL
- FACILITY_RPC
- FACILITY_STORAGE
- FACILITY_WIN32
- FACILITY_WINDOWS
- INPLACE_E_FIRST
- INPLACE_E_LAST
- INPLACE_E_NOTOOLSPACE
- INPLACE_E_NOTUNDOABLE
- INPLACE_S_FIRST
- INPLACE_S_LAST
- INPLACE_S_TRUNCATED
- MARSHAL_E_FIRST
- MARSHAL_E_LAST
- MARSHAL_S_FIRST
- MARSHAL_S_LAST
- MEM_E_INVALID_LINK
- MEM_E_INVALID_ROOT
- MEM_E_INVALID_SIZE
- MK_E_CANTOPENFILE
- MK_E_CONNECTMANUALLY
- MK_E_ENUMERATION_FAILED
- MK_E_EXCEEDEDDEADLINE
- MK_E_FIRST
- MK_E_INTERMEDIATEINTERFACENOTSUPPORTED
- MK_E_INVALIDEXTENSION
- MK_E_LAST
- MK_E_MUSTBOTHERUSER
- MK_E_NEEDGENERIC
- MK_E_NOINVERSE
- MK_E_NOOBJECT
- MK_E_NOPREFIX
- MK_E_NOSTORAGE
- MK_E_NOTBINDABLE
- MK_E_NOTBOUND
- MK_E_NO_NORMALIZED
- MK_E_SYNTAX
- MK_E_UNAVAILABLE
- MK_S_FIRST
- MK_S_HIM
- MK_S_LAST
- MK_S_ME
- MK_S_MONIKERALREADYREGISTERED
- MK_S_REDUCED_TO_SELF
- MK_S_US
- NOERROR
- NO_ERROR
- OLEOBJ_E_FIRST
- OLEOBJ_E_INVALIDVERB
- OLEOBJ_E_LAST
- OLEOBJ_E_NOVERBS
- OLEOBJ_S_CANNOT_DOVERB_NOW
- OLEOBJ_S_FIRST
- OLEOBJ_S_INVALIDHWND
- OLEOBJ_S_INVALIDVERB
- OLEOBJ_S_LAST
- OLE_E_ADVF
- OLE_E_ADVISENOTSUPPORTED
- OLE_E_BLANK
- OLE_E_CANTCONVERT
- OLE_E_CANT_BINDTOSOURCE
- OLE_E_CANT_GETMONIKER
- OLE_E_CLASSDIFF
- OLE_E_ENUM_NOMORE
- OLE_E_FIRST
- OLE_E_INVALIDHWND
- OLE_E_INVALIDRECT
- OLE_E_LAST
- OLE_E_NOCACHE
- OLE_E_NOCONNECTION
- OLE_E_NOSTORAGE
- OLE_E_NOTRUNNING
- OLE_E_NOT_INPLACEACTIVE
- OLE_E_OLEVERB
- OLE_E_PROMPTSAVECANCELLED
- OLE_E_STATIC
- OLE_E_WRONGCOMPOBJ
- OLE_S_FIRST
- OLE_S_LAST
- OLE_S_MAC_CLIPFORMAT
- OLE_S_STATIC
- OLE_S_USEREG
- REGDB_E_CLASSNOTREG
- REGDB_E_FIRST
- REGDB_E_IIDNOTREG
- REGDB_E_INVALIDVALUE
- REGDB_E_KEYMISSING
- REGDB_E_LAST
- REGDB_E_READREGDB
- REGDB_E_WRITEREGDB
- REGDB_S_FIRST
- REGDB_S_LAST
- RPC_E_ATTEMPTED_MULTITHREAD
- RPC_E_CALL_CANCELED
- RPC_E_CALL_REJECTED
- RPC_E_CANTCALLOUT_AGAIN
- RPC_E_CANTCALLOUT_INASYNCCALL
- RPC_E_CANTCALLOUT_INEXTERNALCALL
- RPC_E_CANTCALLOUT_ININPUTSYNCCALL
- RPC_E_CANTPOST_INSENDCALL
- RPC_E_CANTTRANSMIT_CALL
- RPC_E_CHANGED_MODE
- RPC_E_CLIENT_CANTMARSHAL_DATA
- RPC_E_CLIENT_CANTUNMARSHAL_DATA
- RPC_E_CLIENT_DIED
- RPC_E_CONNECTION_TERMINATED
- RPC_E_DISCONNECTED
- RPC_E_FAULT
- RPC_E_INVALIDMETHOD
- RPC_E_INVALID_CALLDATA
- RPC_E_INVALID_DATA
- RPC_E_INVALID_DATAPACKET
- RPC_E_INVALID_PARAMETER
- RPC_E_NOT_REGISTERED
- RPC_E_OUT_OF_RESOURCES
- RPC_E_RETRY
- RPC_E_SERVERCALL_REJECTED
- RPC_E_SERVERCALL_RETRYLATER
- RPC_E_SERVERFAULT
- RPC_E_SERVER_CANTMARSHAL_DATA
- RPC_E_SERVER_CANTUNMARSHAL_DATA
- RPC_E_SERVER_DIED
- RPC_E_SERVER_DIED_DNE
- RPC_E_SYS_CALL_FAILED
- RPC_E_THREAD_NOT_INIT
- RPC_E_UNEXPECTED
- RPC_E_WRONG_THREAD
- RPC_S_ADDRESS_ERROR
- RPC_S_ALREADY_LISTENING
- RPC_S_ALREADY_REGISTERED
- RPC_S_BINDING_HAS_NO_AUTH
- RPC_S_BINDING_INCOMPLETE
- RPC_S_CALL_CANCELLED
- RPC_S_CALL_FAILED
- RPC_S_CALL_FAILED_DNE
- RPC_S_CALL_IN_PROGRESS
- RPC_S_CANNOT_SUPPORT
- RPC_S_CANT_CREATE_ENDPOINT
- RPC_S_COMM_FAILURE
- RPC_S_DUPLICATE_ENDPOINT
- RPC_S_ENTRY_ALREADY_EXISTS
- RPC_S_ENTRY_NOT_FOUND
- RPC_S_FP_DIV_ZERO
- RPC_S_FP_OVERFLOW
- RPC_S_FP_UNDERFLOW
- RPC_S_GROUP_MEMBER_NOT_FOUND
- RPC_S_INCOMPLETE_NAME
- RPC_S_INTERFACE_NOT_FOUND
- RPC_S_INTERNAL_ERROR
- RPC_S_INVALID_AUTH_IDENTITY
- RPC_S_INVALID_BINDING
- RPC_S_INVALID_BOUND
- RPC_S_INVALID_ENDPOINT_FORMAT
- RPC_S_INVALID_NAF_ID
- RPC_S_INVALID_NAME_SYNTAX
- RPC_S_INVALID_NETWORK_OPTIONS
- RPC_S_INVALID_NET_ADDR
- RPC_S_INVALID_OBJECT
- RPC_S_INVALID_RPC_PROTSEQ
- RPC_S_INVALID_STRING_BINDING
- RPC_S_INVALID_STRING_UUID
- RPC_S_INVALID_TAG
- RPC_S_INVALID_TIMEOUT
- RPC_S_INVALID_VERS_OPTION
- RPC_S_MAX_CALLS_TOO_SMALL
- RPC_S_NAME_SERVICE_UNAVAILABLE
- RPC_S_NOTHING_TO_EXPORT
- RPC_S_NOT_ALL_OBJS_UNEXPORTED
- RPC_S_NOT_CANCELLED
- RPC_S_NOT_LISTENING
- RPC_S_NOT_RPC_ERROR
- RPC_S_NO_BINDINGS
- RPC_S_NO_CALL_ACTIVE
- RPC_S_NO_CONTEXT_AVAILABLE
- RPC_S_NO_ENDPOINT_FOUND
- RPC_S_NO_ENTRY_NAME
- RPC_S_NO_INTERFACES
- RPC_S_NO_MORE_BINDINGS
- RPC_S_NO_MORE_MEMBERS
- RPC_S_NO_PRINC_NAME
- RPC_S_NO_PROTSEQS
- RPC_S_NO_PROTSEQS_REGISTERED
- RPC_S_OBJECT_NOT_FOUND
- RPC_S_OUT_OF_RESOURCES
- RPC_S_PROCNUM_OUT_OF_RANGE
- RPC_S_PROTOCOL_ERROR
- RPC_S_PROTSEQ_NOT_FOUND
- RPC_S_PROTSEQ_NOT_SUPPORTED
- RPC_S_SEC_PKG_ERROR
- RPC_S_SERVER_TOO_BUSY
- RPC_S_SERVER_UNAVAILABLE
- RPC_S_STRING_TOO_LONG
- RPC_S_TYPE_ALREADY_REGISTERED
- RPC_S_UNKNOWN_AUTHN_LEVEL
- RPC_S_UNKNOWN_AUTHN_SERVICE
- RPC_S_UNKNOWN_AUTHN_TYPE
- RPC_S_UNKNOWN_AUTHZ_SERVICE
- RPC_S_UNKNOWN_IF
- RPC_S_UNKNOWN_MGR_TYPE
- RPC_S_UNSUPPORTED_AUTHN_LEVEL
- RPC_S_UNSUPPORTED_NAME_SYNTAX
- RPC_S_UNSUPPORTED_TRANS_SYN
- RPC_S_UNSUPPORTED_TYPE
- RPC_S_UUID_LOCAL_ONLY
- RPC_S_UUID_NO_ADDRESS
- RPC_S_WRONG_KIND_OF_BINDING
- RPC_S_ZERO_DIVIDE
- RPC_X_BAD_STUB_DATA
- RPC_X_BYTE_COUNT_TOO_SMALL
- RPC_X_ENUM_VALUE_OUT_OF_RANGE
- RPC_X_INVALID_ES_ACTION
- RPC_X_NO_MORE_ENTRIES
- RPC_X_NULL_REF_POINTER
- RPC_X_SS_CANNOT_GET_CALL_HANDLE
- RPC_X_SS_CHAR_TRANS_OPEN_FAIL
- RPC_X_SS_CHAR_TRANS_SHORT_FILE
- RPC_X_SS_CONTEXT_DAMAGED
- RPC_X_SS_HANDLES_MISMATCH
- RPC_X_SS_IN_NULL_CONTEXT
- RPC_X_WRONG_ES_VERSION
- RPC_X_WRONG_STUB_VERSION
- SEVERITY_ERROR
- SEVERITY_SUCCESS
- STG_E_ABNORMALAPIEXIT
- STG_E_ACCESSDENIED
- STG_E_CANTSAVE
- STG_E_DISKISWRITEPROTECTED
- STG_E_EXTANTMARSHALLINGS
- STG_E_FILEALREADYEXISTS
- STG_E_FILENOTFOUND
- STG_E_INSUFFICIENTMEMORY
- STG_E_INUSE
- STG_E_INVALIDFLAG
- STG_E_INVALIDFUNCTION
- STG_E_INVALIDHANDLE
- STG_E_INVALIDHEADER
- STG_E_INVALIDNAME
- STG_E_INVALIDPARAMETER
- STG_E_INVALIDPOINTER
- STG_E_LOCKVIOLATION
- STG_E_MEDIUMFULL
- STG_E_NOMOREFILES
- STG_E_NOTCURRENT
- STG_E_NOTFILEBASEDSTORAGE
- STG_E_OLDDLL
- STG_E_OLDFORMAT
- STG_E_PATHNOTFOUND
- STG_E_READFAULT
- STG_E_REVERTED
- STG_E_SEEKERROR
- STG_E_SHAREREQUIRED
- STG_E_SHAREVIOLATION
- STG_E_TOOMANYOPENFILES
- STG_E_UNIMPLEMENTEDFUNCTION
- STG_E_UNKNOWN
- STG_E_WRITEFAULT
- STG_S_CONVERTED
- S_FALSE
- S_OK
- TYPE_E_AMBIGUOUSNAME
- TYPE_E_BADMODULEKIND
- TYPE_E_BUFFERTOOSMALL
- TYPE_E_CANTCREATETMPFILE
- TYPE_E_CANTLOADLIBRARY
- TYPE_E_CIRCULARTYPE
- TYPE_E_DLLFUNCTIONNOTFOUND
- TYPE_E_DUPLICATEID
- TYPE_E_ELEMENTNOTFOUND
- TYPE_E_INCONSISTENTPROPFUNCS
- TYPE_E_INVALIDID
- TYPE_E_INVALIDSTATE
- TYPE_E_INVDATAREAD
- TYPE_E_IOERROR
- TYPE_E_LIBNOTREGISTERED
- TYPE_E_NAMECONFLICT
- TYPE_E_OUTOFBOUNDS
- TYPE_E_QUALIFIEDNAMEDISALLOWED
- TYPE_E_REGISTRYACCESS
- TYPE_E_SIZETOOBIG
- TYPE_E_TYPEMISMATCH
- TYPE_E_UNDEFINEDTYPE
- TYPE_E_UNKNOWNLCID
- TYPE_E_UNSUPFORMAT
- TYPE_E_WRONGTYPEKIND
- VIEW_E_DRAW
- VIEW_E_FIRST
- VIEW_E_LAST
- VIEW_S_ALREADY_FROZEN
- VIEW_S_FIRST
- VIEW_S_LAST
-);
-
-sub AUTOLOAD {
- # This AUTOLOAD is used to 'autoload' constants from the constant()
- # XS function. If a constant is not found then control is passed
- # to the AUTOLOAD in AutoLoader.
-
- my($constname);
- ($constname = $AUTOLOAD) =~ s/.*:://;
- #reset $! to zero to reset any current errors.
- local $! = 0;
- local $^E = 0;
- my $val = constant($constname, @_ ? $_[0] : 0);
- if ($! != 0) {
- if ($! =~ /Invalid/) {
- $AutoLoader::AUTOLOAD = $AUTOLOAD;
- goto &AutoLoader::AUTOLOAD;
- }
- else {
- ($pack,$file,$line) = caller;
- die "Your vendor has not defined Win32::WinError macro $constname, used at $file line $line.";
- }
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-bootstrap Win32::WinError;
-
-# Preloaded methods go here.
-
-# Autoload methods go after __END__, and are processed by the autosplit program.
-
-1;
-__END__
diff --git a/Master/tlpkg/tlperl/lib/Win32/test-async.pl b/Master/tlpkg/tlperl/lib/Win32/test-async.pl
deleted file mode 100644
index c47e2df04ec..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/test-async.pl
+++ /dev/null
@@ -1,129 +0,0 @@
-#
-# TEST-ASYNC.PL
-# Test Win32::Internet's Asynchronous Operations
-# by Aldo Calpini <dada@divinf.it>
-#
-# WARNING: this code is most likely to fail with almost-random errors
-# I don't know what is wrong here, any hint will be greatly
-# appreciated!
-
-use Win32::Internet;
-
-$params{'flags'} = INTERNET_FLAG_ASYNC;
-$params{'opentype'} = INTERNET_OPEN_TYPE_DIRECT;
-$I = new Win32::Internet(\%params);
-
-# print "Error: ", $I->Error(), "\n";
-print "I.handle=", $I->{'handle'}, "\n";
-
-$return = $I->SetStatusCallback();
-print "SetStatusCallback=$return";
-print "ERROR" if $return eq undef;
-print "\n";
-
-$buffer = $I->QueryOption(INTERNET_OPTION_READ_BUFFER_SIZE);
-print "Buffer=$buffer\n";
-
-$host = "ftp.activeware.com";
-$user = "anonymous";
-$pass = "dada\@divinf.it";
-
-
-print "Doing FTP()...\n";
-
-$handle2 = $I->FTP($FTP, $host, $user, $pass, 21, 1);
-
-print "Returned from FTP()...\n";
-
-($n, $t) = $I->Error();
-
-if($n == 997) {
- print "Going asynchronous...\n";
- ($status, $info) = $I->GetStatusCallback(1);
- while($status != 100 and $status != 70) {
- if($oldstatus != $status) {
- if($status == 60) {
- $FTP->{'handle'} = $info;
- } elsif($status == 10) {
- print "resolving name... \n";
- } elsif($status == 11) {
- print "name resolved... \n";
- } elsif($status == 20) {
- print "connecting... \n";
- } elsif($status == 21) {
- print "connected... \n";
- } elsif($status == 30) {
- print "sending... \n";
- } elsif($status == 31) {
- print "$info bytes sent. \n";
- } elsif($status == 40) {
- print "receiving... \n";
- } elsif($status == 41) {
- print "$info bytes received. \n";
- } else {
- print "status=$status\n";
- }
- }
- $oldstatus = $status;
- ($status, $info) = $I->GetStatusCallback(1);
- }
-} else {
- print "Error=", $I->Error(), "\n";
-}
-print "FTP.handle=", $FTP->{'handle'}, "\n";
-print "STATUS(after FTP)=", $I->GetStatusCallback(1), "\n";
-
-# "/pub/microsoft/sdk/activex13.exe",
-
-print "Doing Get()...\n";
-
-$file = "/Perl-Win32/perl5.001m/currentBuild/110-i86.zip";
-
-$FTP->Get($file, "110-i86.zip", 1, 0, 2);
-
-print "Returned from Get()...\n";
-
-($n, $t) = $I->Error();
-if($n == 997) {
- print "Going asynchronous...\n";
- $bytes = 0;
- $oldstatus = 0;
- ($status, $info) = $I->GetStatusCallback(2);
- while($status != 100 and $status != 70) {
- # print "status=$status info=$info\n";
- # if($oldstatus!=$status) {
- if($status == 10) {
- print "resolving name... \n";
- } elsif($status == 11) {
- print "name resolved... \n";
- } elsif($status == 20) {
- print "connecting... \n";
- } elsif($status == 21) {
- print "connected... \n";
- #} elsif($status == 30) {
- # print "sending... \n";
- } elsif($status == 31) {
- print "$info bytes sent. \n";
- #} elsif($status == 40) {
- # print "receiving... \n";
- } elsif($status == 41) {
- $bytes = $bytes+$info;
- print "$bytes bytes received. \n";
- #} else {
- # print "status=$status\n";
- }
- # }
- $oldstatus = $status;
- undef $status, $info;
- ($status, $info) = $I->GetStatusCallback(2);
- }
-} else {
- print "Error=[$n] $t\n";
-}
-print "\n";
-($status, $info) = $I->GetStatusCallback(2);
-print "STATUS(after Get)=$status\n";
-print "Error=", $I->Error(), "\n";
-exit(0);
-
-
diff --git a/Master/tlpkg/tlperl/lib/Win32API/Registry.pm b/Master/tlpkg/tlperl/lib/Win32API/Registry.pm
deleted file mode 100644
index dbf98b4e2e9..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32API/Registry.pm
+++ /dev/null
@@ -1,1792 +0,0 @@
-# Registry.pm -- Low-level access to functions/constants from WINREG.h
-
-package Win32API::Registry;
-
-use strict;
-use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); #@EXPORT_FAIL);
-$VERSION= '0.24';
-
-require Exporter;
-require DynaLoader;
-@ISA= qw(Exporter DynaLoader);
-
-@EXPORT= qw();
-%EXPORT_TAGS= (
- Func => [qw( regConstant regLastError
- AllowPriv AbortSystemShutdown InitiateSystemShutdown
- RegCloseKey RegConnectRegistry RegCreateKey
- RegCreateKeyEx RegDeleteKey RegDeleteValue
- RegEnumKey RegEnumKeyEx RegEnumValue
- RegFlushKey RegGetKeySecurity RegLoadKey
- RegNotifyChangeKeyValue RegOpenKey RegOpenKeyEx
- RegQueryInfoKey RegQueryMultipleValues RegQueryValue
- RegQueryValueEx RegReplaceKey RegRestoreKey
- RegSaveKey RegSetKeySecurity RegSetValue
- RegSetValueEx RegUnLoadKey )],
- FuncA => [qw(
- AbortSystemShutdownA InitiateSystemShutdownA
- RegConnectRegistryA RegCreateKeyA RegCreateKeyExA
- RegDeleteKeyA RegDeleteValueA RegEnumKeyA
- RegEnumKeyExA RegEnumValueA RegLoadKeyA
- RegOpenKeyA RegOpenKeyExA RegQueryInfoKeyA
- RegQueryMultipleValuesA RegQueryValueA RegQueryValueExA
- RegReplaceKeyA RegRestoreKeyA RegSaveKeyA
- RegSetValueA RegSetValueExA RegUnLoadKeyA )],
- FuncW => [qw(
- AbortSystemShutdownW InitiateSystemShutdownW
- RegConnectRegistryW RegCreateKeyW RegCreateKeyExW
- RegDeleteKeyW RegDeleteValueW RegEnumKeyW
- RegEnumKeyExW RegEnumValueW RegLoadKeyW
- RegOpenKeyW RegOpenKeyExW RegQueryInfoKeyW
- RegQueryMultipleValuesW RegQueryValueW RegQueryValueExW
- RegReplaceKeyW RegRestoreKeyW RegSaveKeyW
- RegSetValueW RegSetValueExW RegUnLoadKeyW )],
- HKEY_ => [qw(
- HKEY_CLASSES_ROOT HKEY_CURRENT_CONFIG HKEY_CURRENT_USER
- HKEY_DYN_DATA HKEY_LOCAL_MACHINE HKEY_PERFORMANCE_DATA
- HKEY_USERS )],
- KEY_ => [qw(
- KEY_QUERY_VALUE KEY_SET_VALUE KEY_CREATE_SUB_KEY
- KEY_ENUMERATE_SUB_KEYS KEY_NOTIFY KEY_CREATE_LINK
- KEY_READ KEY_WRITE KEY_EXECUTE
- KEY_ALL_ACCESS),
- 'KEY_DELETE', # DELETE (0x00010000L)
- 'KEY_READ_CONTROL', # READ_CONTROL (0x00020000L)
- 'KEY_WRITE_DAC', # WRITE_DAC (0x00040000L)
- 'KEY_WRITE_OWNER', # WRITE_OWNER (0x00080000L)
- 'KEY_SYNCHRONIZE', # SYNCHRONIZE (0x00100000L) (not used)
- ],
- REG_ => [qw(
- REG_OPTION_RESERVED REG_OPTION_NON_VOLATILE REG_OPTION_VOLATILE
- REG_OPTION_CREATE_LINK REG_OPTION_BACKUP_RESTORE
- REG_OPTION_OPEN_LINK REG_LEGAL_OPTION REG_CREATED_NEW_KEY
- REG_OPENED_EXISTING_KEY REG_WHOLE_HIVE_VOLATILE REG_REFRESH_HIVE
- REG_NO_LAZY_FLUSH REG_NOTIFY_CHANGE_ATTRIBUTES
- REG_NOTIFY_CHANGE_NAME REG_NOTIFY_CHANGE_LAST_SET
- REG_NOTIFY_CHANGE_SECURITY REG_LEGAL_CHANGE_FILTER
- REG_NONE REG_SZ REG_EXPAND_SZ
- REG_BINARY REG_DWORD REG_DWORD_LITTLE_ENDIAN
- REG_DWORD_BIG_ENDIAN REG_LINK REG_MULTI_SZ
- REG_RESOURCE_LIST REG_FULL_RESOURCE_DESCRIPTOR
- REG_RESOURCE_REQUIREMENTS_LIST )],
- SE_ => [qw(
- SE_ASSIGNPRIMARYTOKEN_NAME SE_AUDIT_NAME
- SE_BACKUP_NAME SE_CHANGE_NOTIFY_NAME
- SE_CREATE_PAGEFILE_NAME SE_CREATE_PERMANENT_NAME
- SE_CREATE_TOKEN_NAME SE_DEBUG_NAME
- SE_INCREASE_QUOTA_NAME SE_INC_BASE_PRIORITY_NAME
- SE_LOAD_DRIVER_NAME SE_LOCK_MEMORY_NAME
- SE_MACHINE_ACCOUNT_NAME SE_PROF_SINGLE_PROCESS_NAME
- SE_REMOTE_SHUTDOWN_NAME SE_RESTORE_NAME
- SE_SECURITY_NAME SE_SHUTDOWN_NAME
- SE_SYSTEMTIME_NAME SE_SYSTEM_ENVIRONMENT_NAME
- SE_SYSTEM_PROFILE_NAME SE_TAKE_OWNERSHIP_NAME
- SE_TCB_NAME SE_UNSOLICITED_INPUT_NAME )],
-);
-@EXPORT_OK= ();
-{ my $ref;
- foreach $ref ( values(%EXPORT_TAGS) ) {
- push( @EXPORT_OK, @$ref ) unless $ref->[0] =~ /^SE_/;
- }
-}
-$EXPORT_TAGS{ALL}= [ @EXPORT_OK ]; # \@EXPORT_OK once SE_* settles down.
-# push( @EXPORT_OK, "JHEREG_TACOSALAD" ); # Used to test Mkconst2perl
-push( @EXPORT_OK, @{$EXPORT_TAGS{SE_}} );
-
-bootstrap Win32API::Registry $VERSION;
-
-# Preloaded methods go here.
-
-# To convert C constants to Perl code in cRegistry.pc
-# [instead of C or C++ code in cRegistry.h]:
-# * Modify F<Makefile.PL> to add WriteMakeFile() =>
-# CONST2PERL/postamble => [[ "Win32API::Registry" => ]] WRITE_PERL => 1.
-# * Either comment out C<#include "cRegistry.h"> from F<Registry.xs>
-# or make F<cRegistry.h> an empty file.
-# * Make sure the following C<if> block is not commented out.
-# * "nmake clean", "perl Makefile.PL", "nmake"
-
-if( ! defined &REG_NONE ) {
- require "Win32API/Registry/cRegistry.pc";
-}
-
-# This would be convenient but inconsistant and hard to explain:
-#push( @{$EXPORT_TAGS{ALL}}, @{$EXPORT_TAGS{SE_}} )
-# if defined &SE_TCB_NAME;
-
-sub regConstant
-{
- my( $name )= @_;
- if( 1 != @_ || ! $name || $name =~ /\W/ ) {
- require Carp;
- Carp::croak( 'Usage: ',__PACKAGE__,'::regConstant("CONST_NAME")' );
- }
- my $proto= prototype $name;
- if( defined \&$name
- && defined $proto
- && "" eq $proto ) {
- no strict 'refs';
- return &$name;
- }
- return undef;
-}
-
-# We provide this for backwards compatibility:
-sub constant
-{
- my( $name )= @_;
- my $value= regConstant( $name );
- if( defined $value ) {
- $!= 0;
- return $value;
- }
- $!= 11; # EINVAL
- return 0;
-}
-
-# BEGIN {
-# my $code= 'return _regLastError(@_)';
-# local( $!, $^E )= ( 1, 1 );
-# if( $! ne $^E ) {
-# $code= '
-# local( $^E )= _regLastError(@_);
-# my $ret= $^E;
-# return $ret;
-# ';
-# }
-# eval "sub regLastError { $code }";
-# die "$@" if $@;
-# }
-
-package Win32API::Registry::_error;
-
-use overload
- '""' => sub {
- require Win32 unless defined &Win32::FormatMessage;
- $_ = Win32::FormatMessage(Win32API::Registry::_regLastError());
- tr/\r\n//d;
- return $_;
- },
- '0+' => sub { Win32API::Registry::_regLastError() },
- 'fallback' => 1;
-
-sub new { return bless {}, shift }
-sub set { Win32API::Registry::_regLastError($_[1]); return $_[0] }
-
-package Win32API::Registry;
-
-my $_error = new Win32API::Registry::_error;
-
-sub regLastError {
- require Carp;
- Carp::croak('Usage: ',__PACKAGE__,'::regLastError( [$setWin32ErrCode] )') if @_ > 1;
- $_error->set($_[0]) if defined $_[0];
- return $_error;
-}
-
-# Since we ISA DynaLoader which ISA AutoLoader, we ISA AutoLoader so we
-# need this next chunk to prevent Win32API::Registry->nonesuch() from
-# looking for "nonesuch.al" and producing confusing error messages:
-use vars qw($AUTOLOAD);
-sub AUTOLOAD {
- require Carp;
- Carp::croak(
- "Can't locate method $AUTOLOAD via package Win32API::Registry" );
-}
-
-# Replace "&rout;" with "goto &rout;" when that is supported on Win32.
-
-# Let user omit all buffer sizes:
-sub RegEnumKeyExA {
- if( 6 == @_ ) { splice(@_,4,0,[]); splice(@_,2,0,[]); }
- &_RegEnumKeyExA;
-}
-sub RegEnumKeyExW {
- if( 6 == @_ ) { splice(@_,4,0,[]); splice(@_,2,0,[]); }
- &_RegEnumKeyExW;
-}
-sub RegEnumValueA {
- if( 6 == @_ ) { splice(@_,2,0,[]); push(@_,[]); }
- &_RegEnumValueA;
-}
-sub RegEnumValueW {
- if( 6 == @_ ) { splice(@_,2,0,[]); push(@_,[]); }
- &_RegEnumValueW;
-}
-sub RegQueryInfoKeyA {
- if( 11 == @_ ) { splice(@_,2,0,[]); }
- &_RegQueryInfoKeyA;
-}
-sub RegQueryInfoKeyW {
- if( 11 == @_ ) { splice(@_,2,0,[]); }
- &_RegQueryInfoKeyW;
-}
-
-sub RegEnumKeyA {
- push(@_,[]) if 3 == @_;
- &_RegEnumKeyA;
-}
-sub RegEnumKeyW {
- push(@_,[]) if 3 == @_;
- &_RegEnumKeyW;
-}
-sub RegGetKeySecurity {
- push(@_,[]) if 3 == @_;
- &_RegGetKeySecurity;
-}
-sub RegQueryMultipleValuesA {
- push(@_,[]) if 4 == @_;
- &_RegQueryMultipleValuesA;
-}
-sub RegQueryMultipleValuesW {
- push(@_,[]) if 4 == @_;
- &_RegQueryMultipleValuesW;
-}
-sub RegQueryValueA {
- push(@_,[]) if 3 == @_;
- &_RegQueryValueA;
-}
-sub RegQueryValueW {
- push(@_,[]) if 3 == @_;
- &_RegQueryValueW;
-}
-sub RegQueryValueExA {
- push(@_,[]) if 5 == @_;
- &_RegQueryValueExA;
-}
-sub RegQueryValueExW {
- push(@_,[]) if 5 == @_;
- &_RegQueryValueExW;
-}
-sub RegSetValueA {
- push(@_,0) if 4 == @_;
- &_RegSetValueA;
-}
-sub RegSetValueW {
- push(@_,0) if 4 == @_;
- &_RegSetValueW;
-}
-sub RegSetValueExA {
- push(@_,0) if 5 == @_;
- &_RegSetValueExA;
-}
-sub RegSetValueExW {
- push(@_,0) if 5 == @_;
- &_RegSetValueExW;
-}
-
-# Aliases for non-Unicode functions:
-sub AbortSystemShutdown { &AbortSystemShutdownA; }
-sub InitiateSystemShutdown { &InitiateSystemShutdownA; }
-sub RegConnectRegistry { &RegConnectRegistryA; }
-sub RegCreateKey { &RegCreateKeyA; }
-sub RegCreateKeyEx { &RegCreateKeyExA; }
-sub RegDeleteKey { &RegDeleteKeyA; }
-sub RegDeleteValue { &RegDeleteValueA; }
-sub RegEnumKey { &RegEnumKeyA; }
-sub RegEnumKeyEx { &RegEnumKeyExA; }
-sub RegEnumValue { &RegEnumValueA; }
-sub RegLoadKey { &RegLoadKeyA; }
-sub RegOpenKey { &RegOpenKeyA; }
-sub RegOpenKeyEx { &RegOpenKeyExA; }
-sub RegQueryInfoKey { &RegQueryInfoKeyA; }
-sub RegQueryMultipleValues { &RegQueryMultipleValuesA; }
-sub RegQueryValue { &RegQueryValueA; }
-sub RegQueryValueEx { &RegQueryValueExA; }
-sub RegReplaceKey { &RegReplaceKeyA; }
-sub RegRestoreKey { &RegRestoreKeyA; }
-sub RegSaveKey { &RegSaveKeyA; }
-sub RegSetValue { &RegSetValueA; }
-sub RegSetValueEx { &RegSetValueExA; }
-sub RegUnLoadKey { &RegUnLoadKeyA; }
-
-1;
-__END__
-
-=head1 NAME
-
-Win32API::Registry - Low-level access to Win32 system API calls from WINREG.H
-
-=head1 SYNOPSIS
-
- use Win32API::Registry 0.21 qw( :ALL );
-
- RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SYSTEM\\Disk", 0, KEY_READ, $key );
- or die "Can't open HKEY_LOCAL_MACHINE\\SYSTEM\\Disk: ",
- regLastError(),"\n";
- RegQueryValueEx( $key, "Information", [], $type, $data, [] );
- or die "Can't read HKEY_L*MACHINE\\SYSTEM\\Disk\\Information: ",
- regLastError(),"\n";
- [...]
- RegCloseKey( $key )
- or die "Can't close HKEY_LOCAL_MACHINE\\SYSTEM\\Disk: ",
- regLastError(),"\n";
-
-=head1 DESCRIPTION
-
-This provides fairly low-level access to the Win32 System API
-calls dealing with the Registry [mostly from WINREG.H]. This
-is mostly intended to be used by other modules such as
-C<Win32::TieRegistry> [which provides an extremely Perl-friendly
-method for using the Registry].
-
-For a description of the logical structure of the Registry, see
-the documentation for the C<Win32::TieRegistry> module.
-
-To pass in C<NULL> as the pointer to an optional buffer, pass in
-an empty list reference, C<[]>.
-
-Beyond raw access to the API calls and related constants, this module
-handles smart buffer allocation and translation of return codes.
-
-All calls return a true value for success and a false value for
-failure. After any failure, C<$^E> should automatically be set
-to indicate the reason. However, current versions of Perl often
-overwrite C<$^E> too quickly, so you can use C<regLastError()>
-instead, which is only set by Win32API::Registry routines.
-
-Note that C<$!> is not set by these routines except by
-C<Win32API::Registry::constant()> when a constant is not defined.
-
-=head2 Exports
-
-Nothing is exported by default. The following tags can be used to
-have sets of symbols exported.
-
-[Note that much of the following documentation refers to the
-behavior of the underlying API calls which may vary in current
-and future versions of the Win32 API without any changes to this
-module. Therefore you should check the Win32 API documentation
-directly when needed.]
-
-=over
-
-=item :Func
-
-The basic function names:
-
-=over
-
-=item AllowPriv
-
-=item C<AllowPriv( $sPrivName, $bEnable )>
-
-Not a Win32 API call. Enables or disables a specific privilege for
-the current process. Returns a true value if successful and a false
-value [and sets C<$^E>/C<regLastError()>] on failure. This routine
-does not provide a way to tell if a privilege is currently enabled.
-
-C<$sPrivname> is a Win32 privilege name [see L</:SE_>]. For example,
-C<"SeBackupPrivilege"> [a.k.a. C<SE_BACKUP_NAME>] controls whether
-you can use C<RegSaveKey()> and C<"SeRestorePrivilege"> [a.k.a.
-C<SE_RESTORE_NAME>] controls whether you can use C<RegLoadKey()>.
-
-If C<$bEnable> is true, then C<AllowPriv()> tries to enable the
-privilege. Otherwise it tries to disable the privilege.
-
-=item AbortSystemShutdown
-
-=item C<AbortSystemShutdown( $sComputerName )>
-
-Tries to abort a remote shutdown request previously made via
-C<InitiateSystemShutdown()>. Returns a true value if successful
-and a false value [and sets C<$^E>/C<regLastError()>] on failure.
-
-=item InitiateSystemShutdown
-
-=item C<InitiateSystemShutdown( $sComputer, $sMessage, $uTimeoutSecs, $bForce, $bReboot )>
-
-Requests that a [remote] computer be shutdown or rebooted.
-Returns a true value if successful and a false value [and
-sets C<$^E>/C<regLastError()>] on failure.
-
-C<$sComputer> is the name [or address] of the computer to be
-shutdown or rebooted. You can use C<[]> [for C<NULL>] or C<"">
-to indicate the local computer.
-
-C<$sMessage> is the message to be displayed in a pop-up window
-on the desktop of the computer to be shutdown or rebooted until
-the timeout expires or the shutdown is aborted via
-C<AbortSystemShutdown()>. With C<$iTimeoutSecs == 0>, the
-message will never be visible.
-
-C<$iTimeoutSecs> is the number of seconds to wait before starting
-the shutdown.
-
-If C<$bForce> is false, then any applications running on the remote
-computer get a chance to prompt the remote user whether they want
-to save changes. Also, for any applications that do not exit quickly
-enough, the operating system will prompt the user whether they wish
-to wait longer for the application to exit or force it to exit now.
-At any of these prompts the user can press B<CANCEL> to abort the
-shutdown but if no applications have unsaved data, they will likely
-all exit quickly and the shutdown will progress with the remote user
-having no option to cancel the shutdown.
-
-If C<$bForce> is true, all applications are told to exit immediately
-and so will not prompt the user even if there is unsaved data. Any
-applications that take too long to exit will be forcibly killed after
-a short time. The only way to abort the shutdown is to call
-C<AbortSystemShutdown()> before the timeout expires and there is no
-way to abort the shutdown once it has begun.
-
-If C<$bReboot> is true, the computer will automatically reboot once
-the shutdown is complete. If C<$bReboot> is false, then when the
-shutdown is complete the computer will halt at a screen indicating
-that the shutdown is complete and offering a way for the user to
-start to boot the computer.
-
-You must have the C<"SeRemoteShutdownPrivilege"> privilege
-on the remote computer for this call to succeed. If shutting
-down the local computer, then the calling process must have
-the C<"SeShutdownPrivilege"> privilege and have it enabled.
-
-=item RegCloseKey
-
-=item C<RegCloseKey( $hKey )>
-
-Closes the handle to a Registry key returned by C<RegOpenKeyEx()>,
-C<RegConnectRegistry()>, C<RegCreateKeyEx()>, or a few other
-routines. Returns a true value if successful and a false value
-[and sets C<$^E>/C<regLastError()>] on failure.
-
-=item RegConnectRegistry
-
-=item C<RegConnectRegistry( $sComputer, $hRootKey, $ohKey )>
-
-Connects to one of the root Registry keys of a remote computer.
-Returns a true value if successful and a false value [and
-sets C<$^E>/C<regLastError()>] on failure.
-
-C<$sComputer> is the name [or address] of a remote computer
-whose Registry you wish to access.
-
-C<$hKey> must be either C<HKEY_LOCAL_MACHINE> or C<HKEY_USERS>
-and specifies which root Registry key on the remote computer
-you wish to have access to.
-
-C<$phKey> will be set to the handle to be used to access the
-remote Registry key if the call succeeds.
-
-=item regConstant
-
-=item C<$value= regConstant( $sConstantName )>
-
-Fetch the value of a constant. Returns C<undef> if C<$sConstantName>
-is not the name of a constant supported by this module. Never sets
-C<$!> nor C<$^E>.
-
-This function is rarely used since you will usually get the value of a
-constant by having that constant imported into your package by listing
-the constant name in the C<use Win32API::Registry> statement and then
-simply using the constant name in your code [perhaps followed by
-C<()>]. This function is useful for verifying constant names not in
-Perl code, for example, after prompting a user to type in a constant
-name.
-
-=item RegCreateKey
-
-=item C<RegCreateKey( $hKey, $sSubKey, $ohSubKey )>
-
-This routine is meant only for compatibility with Windows version
-3.1. Use C<RegCreateKeyEx()> instead.
-
-=item RegCreateKeyEx
-
-=item C<RegCreateKeyEx( $hKey, $sSubKey, $uZero, $sClass, $uOpts, $uAccess, $pSecAttr, $ohNewKey, $ouDisp )>
-
-Creates a new Registry subkey. Returns a true value if successful and
-a false value [and sets C<$^E>/C<regLastError()>] on failure.
-
-C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from
-a previous call].
-
-C<$sSubKey> is the name of the new subkey to be created.
-
-C<$iZero> is reserved for future use and should always be specified
-as C<0>.
-
-C<$sClass> is a string to be used as the class for the new
-subkey. We are not aware of any current use for Registry key
-class information so the empty string, C<"">, should usually
-be used here.
-
-C<$iOpts> is a numeric value containing bits that control options
-used while creating the new subkey. C<REG_OPTION_NON_VOLATILE>
-is the default. C<REG_OPTION_VOLATILE> [which is ignored on
-Windows 95] means the data stored under this key is not kept
-in a file and will not be preserved when the system reboots.
-C<REG_OPTION_BACKUP_RESTORE> [also ignored on Windows 95] means
-ignore the C<$iAccess> parameter and try to open the new key with
-the access required to backup or restore the key.
-
-C<$iAccess> is a numeric mask of bits specifying what type of
-access is desired when opening the new subkey. See C<RegOpenKeyEx()>.
-
-C<$pSecAttr> is a C<SECURITY_ATTRIBUTES> structure packed into
-a Perl string which controls whether the returned handle can be
-inherited by child processes. Normally you would pass C<[]> for
-this parameter to have C<NULL> passed to the underlying API
-indicating that the handle cannot be inherited. If not under
-Windows95, then C<$pSecAttr> also allows you to specify
-C<SECURITY_DESCRIPTOR> that controls which users will have
-what type of access to the new key -- otherwise the new key
-inherits its security from its parent key.
-
-C<$phKey> will be set to the handle to be used to access the new
-subkey if the call succeeds.
-
-C<$piDisp> will be set to either C<REG_CREATED_NEW_KEY> or
-C<REG_OPENED_EXISTING_KEY> to indicate for which reason the
-call succeeded. Can be specified as C<[]> if you don't care.
-
-If C<$phKey> and C<$piDisp> start out as integers, then they will
-probably remain unchanged if the call fails.
-
-=item RegDeleteKey
-
-=item C<RegDeleteKey( $hKey, $sSubKey )>
-
-Deletes a subkey of an open Registry key provided that the subkey
-contains no subkeys of its own [but the subkey may contain values].
-Returns a true value if successful and a false value [and sets
-C<$^E>/C<regLastError()>] on failure.
-
-C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from
-a previous call].
-
-C<$sSubKey> is the name of the subkey to be deleted.
-
-=item RegDeleteValue
-
-=item C<RegDeleteValue( $hKey, $sValueName )>
-
-Deletes a value from an open Registry key. Returns a true value if
-successful and a false value [and sets C<$^E>/C<regLastError()>] on
-failure.
-
-C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from
-a previous call].
-
-C<$sValueKey> is the name of the value to be deleted.
-
-=item RegEnumKey
-
-=item C<RegEnumKey( $hKey, $uIndex, $osName, $ilNameSize )>
-
-This routine is meant only for compatibility with Windows version
-3.1. Use C<RegEnumKeyEx()> instead.
-
-=item RegEnumKeyEx
-
-=item C<RegEnumKeyEx( $hKey, $uIndex, $osName, $iolName, $pNull, $osClass, $iolClass, $opftLastWrite )>
-
-Lets you enumerate the names of all of the subkeys directly under
-an open Registry key. Returns a true value if successful and a false
-value [and sets C<$^E>/C<regLastError()>] on failure.
-
-C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from
-a previous call].
-
-C<$iIndex> is the sequence number of the immediate subkey that
-you want information on. Start with this value as C<0> then
-repeat the call incrementing this value each time until the
-call fails with C<$^E>/C<regLastError()> numerically equal to
-C<ERROR_NO_MORE_ITEMS>.
-
-C<$sName> will be set to the name of the subkey. Can be C<[]> if
-you don't care about the name.
-
-C<$plName> initially specifies the [minimum] buffer size to be
-allocated for C<$sName>. Will be set to the length of the subkey
-name if the requested subkey exists even if C<$sName> isn't
-successfully set to the subkey name. See L<Buffer sizes> for
-more information.
-
-C<$pNull> is reserved for future used and should be passed as C<[]>.
-
-C<$sClass> will be set to the class name for the subkey. Can be
-C<[]> if you don't care about the class.
-
-C<$plClass> initially specifies the [minimum] buffer size to be
-allocated for C<$sClass> and will be set to the length of the
-subkey class name if the requested subkey exists. See L<Buffer
-sizes> for more information.
-
-C<$pftLastWrite> will be set to a C<FILETIME> structure packed
-into a Perl string and indicating when the subkey was last changed.
-Can be C<[]>.
-
-You may omit both C<$plName> and C<$plClass> to get the same effect
-as passing in C<[]> for each of them.
-
-=item RegEnumValue
-
-=item C<RegEnumValue( $hKey, $uIndex, $osValName, $iolValName, $pNull, $ouType, $opValData, $iolValData )>
-
-Lets you enumerate the names of all of the values contained in an
-open Registry key. Returns a true value if successful and a false
-value [and sets C<$^E>/C<regLastError()>] on failure.
-
-C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from
-a previous call].
-
-C<$iIndex> is the sequence number of the value that you want
-information on. Start with this value as C<0> then repeat the
-call incrementing this value each time until the call fails with
-C<ERROR_NO_MORE_ITEMS>.
-
-C<$sValName> will be set to the name of the value. Can be C<[]>
-if you don't care about the name.
-
-C<$plValName> initially specifies the [minimum] buffer size to be
-allocated for C<$sValName>. Will be set to the length of the value
-name if the requested value exists even if C<$sValName> isn't
-successfully set to the value name. See L<Buffer sizes> for
-more information.
-
-C<$pNull> is reserved for future used and should be passed as C<[]>.
-
-C<$piType> will be set to the type of data stored in the value data.
-If the call succeeds, it will be set to a C<REG_*> value unless
-passed in as C<[]>.
-
-C<$pValData> will be set to the data [packed into a Perl string]
-that is stored in the requested value. Can be C<[]> if you don't
-care about the value data.
-
-C<$plValData> initially specifies the [minimum] buffer size to be
-allocated for C<$sValData> and will be set to the length of the
-value data if the requested value exists. See L<Buffer sizes> for
-more information.
-
-You may omit both C<$plValName> and C<$plValData> to get the same
-effect as passing in C<[]> for each of them.
-
-=item RegFlushKey
-
-=item C<RegFlushKey( $hKey )>
-
-Forces the data stored under an open Registry key to be flushed
-to the disk file where the data is preserved between reboots.
-Forced flushing is not guaranteed to be efficient so this routine
-should almost never be called. Returns a true value if successful
-and a false value [and sets C<$^E>/C<regLastError()>] on failure.
-
-C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from
-a previous call].
-
-=item RegGetKeySecurity
-
-=item C<RegGetKeySecurity( $hKey, $uSecInfo, $opSecDesc, $iolSecDesc )>
-
-Retrieves one of the C<SECURITY_DESCRIPTOR> structures describing
-part of the security for an open Registry key. Returns a true value
-if successful and a false value [and sets C<$^E>/C<regLastError()>]
-on failure.
-
-C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from
-a previous call].
-
-C<$iSecInfo> is a numeric C<SECURITY_INFORMATION> value that
-specifies which parts of the C<SECURITY_DESCRIPTOR> structure
-to retrieve. Should be C<OWNER_SECURITY_INFORMATION>,
-C<GROUP_SECURITY_INFORMATION>, C<DACL_SECURITY_INFORMATION>, or
-or C<SACL_SECURITY_INFORMATION> or two or more of these bits
-combined using C<|>.
-
-C<$pSecDesc> will be set to the requested C<SECURITY_DESCRIPTOR>
-structure [packed into a Perl string].
-
-C<$plSecDesc> initially specifies the [minimum] buffer size to be
-allocated for C<$sSecDesc> and will be set to the length of the
-security descriptor. See L<Buffer sizes> for more information.
-You may omit this parameter to get the same effect as passing in
-C<[]> for it.
-
-=item regLastError
-
-=item C<$svError= regLastError();>
-
-=item C<regLastError( $uError );>
-
-Returns the last error encountered by a routine from this module.
-It is just like C<$^E> except it isn't changed by anything except
-routines from this module. Ideally you could just use C<$^E>, but
-current versions of Perl often overwrite C<$^E> before you get a
-chance to check it and really old versions of Perl don't really
-support C<$^E> under Win32.
-
-Just like C<$^E>, in a numeric context C<regLastError()> returns
-the numeric error value while in a string context it returns a
-text description of the error [actually it returns a Perl scalar
-that contains both values so C<$x= regLastError()> causes C<$x>
-to give different values in string vs. numeric contexts].
-
-The last form sets the error returned by future calls to
-C<regLastError()> and should not be used often. C<$uError> must
-be a numeric error code. Also returns the dual-valued version
-of C<$uError>.
-
-=item RegLoadKey
-
-=item C<RegLoadKey( $hKey, $sSubKey, $sFileName )>
-
-Loads a hive file. That is, it creates a new subkey in the
-Registry and associates that subkey with a disk file that contains
-a Registry hive so that the new subkey can be used to access the
-keys and values stored in that hive. Hives are usually created
-via C<RegSaveKey()>. Returns a true value if successful and a
-false value [and sets C<$^E>/C<regLastError()>] on failure.
-
-C<$hKey> is the handle to a Registry key that can have hives
-loaded to it. This must be C<HKEY_LOCAL_MACHINE>, C<HKEY_USERS>,
-or a remote version of one of these from a call to
-C<RegConnectRegistry()>.
-
-C<$sSubKey> is the name of the new subkey to created and associated
-with the hive file.
-
-C<$sFileName> is the name of the hive file to be loaded. This
-file name is interpretted relative to the
-C<%SystemRoot%/System32/config> directory on the computer where
-the C<$hKey> key resides. If C<$sFileName> is on a FAT file
-system, then its name must not have an extension.
-
-You must have the C<SE_RESTORE_NAME> privilege to use this routine.
-
-WARNING: Loading of hive files via a network share may silently
-corrupt the hive and so should not be attempted [this is a problem
-in at least some versions of the underlying API which this module
-does not try to fix or avoid]. To access a hive file located on a
-remote computer, connect to the remote computer's Registry and load
-the hive via that.
-
-=item RegNotifyChangeKeyValue
-
-=item C<RegNotifyChangeKeyValue( $hKey, $bWatchSubtree, $uNotifyFilter, $hEvent, $bAsync )>
-
-Arranges for your process to be notified when part of the Registry
-is changed. Returns a true value if successful and a false value
-[and sets C<$^E>/C<regLastError()>] on failure.
-
-C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from
-a previous call] for which you wish to be notified when any changes
-are made to it.
-
-If C<$bWatchSubtree> is true, then changes to any subkey or
-descendant of C<$hKey> are also reported.
-
-C<$iNotifyFilter> controllers what types of changes are reported. It
-is a numeric value containing one or more of the following bit masks:
-
-=over
-
-=item C<REG_NOTIFY_CHANGE_NAME>
-
-Notify if a subkey is added or deleted to a monitored key.
-
-=item C<REG_NOTIFY_CHANGE_LAST_SET>
-
-Notify if a value in a monitored key is added, deleted, or modified.
-
-=item C<REG_NOTIFY_CHANGE_SECURITY>
-
-Notify if a security descriptor of a monitored key is changed.
-
-=item C<REG_NOTIFY_CHANGE_ATTRIBUTES>
-
-Notify if any attributes of a monitored key are changed [class
-name or security descriptors].
-
-=back
-
-C<$hEvent> is ignored unless C<$bAsync> is true. Otherwise, C<$hEvent>
-is a handle to a Win32 I<event> that will be signaled when changes are
-to be reported.
-
-If C<$bAsync> is true, then C<RegNotifyChangeKeyValue()> returns
-immediately and uses C<$hEvent> to notify your process of changes.
-If C<$bAsync> is false, then C<RegNotifyChangeKeyValue()> does
-not return until there is a change to be notified of.
-
-This routine does not work with Registry keys on remote computers.
-
-=item RegOpenKey
-
-=item C<RegOpenKey( $hKey, $sSubKey, $ohSubKey )>
-
-This routine is meant only for compatibility with Windows version
-3.1. Use C<RegOpenKeyEx()> instead.
-
-=item RegOpenKeyEx
-
-=item C<RegOpenKeyEx( $hKey, $sSubKey, $uOptions, $uAccess, $ohSubKey )>
-
-Opens an existing Registry key. Returns a true value if successful
-and a false value [and sets C<$^E>/C<regLastError()>] on failure.
-
-C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from
-a previous call].
-
-C<$sSubKey> is the name of an existing subkey to be opened.
-Can be C<""> or C<[]> to open an additional handle to the
-key specified by C<$hKey>.
-
-C<$iOptions> is a numeric value containing bits that control options
-used while opening the subkey. There are currently no supported
-options so this parameter should be specified as C<0>.
-
-C<$iAccess> is a numeric mask of bits specifying what type of
-access is desired when opening the new subkey. Should be a
-combination of one or more of the following bit masks:
-
-=over
-
-=item C<KEY_ALL_ACCESS>
-
- KEY_READ | KEY_WRITE | KEY_CREATE_LINK
-
-=item C<KEY_READ>
-
- KEY_QUERY_VALUE | KEY_ENUMERATE_SUBKEYS | KEY_NOTIFY | STANDARD_RIGHTS_READ
-
-=item C<KEY_WRITE>
-
- KEY_SET_VALUE | KEY_CREATE_SUB_KEY | STANDARD_RIGHTS_WRITE
-
-=item C<KEY_QUERY_VALUE>
-
-=item C<KEY_SET_VALUE>
-
-=item C<KEY_ENUMERATE_SUB_KEYS>
-
-=item C<KEY_CREATE_SUB_KEY>
-
-=item C<KEY_NOTIFY>
-
-Allows you to use C<RegNotifyChangeKeyValue()> on the opened key.
-
-=item C<KEY_EXECUTE>
-
-Same as C<KEY_READ>.
-
-=item C<KEY_CREATE_LINK>
-
-Gives you permission to create a symbolic link like
-C<HKEY_CLASSES_ROOT> and C<HKEY_CURRENT_USER>, though the method for
-doing so is not documented [and probably requires use of the mostly
-undocumented "native" routines, C<Nt*()> a.k.a. C<Zw*()>].
-
-=back
-
-C<$phKey> will be set to the handle to be used to access the new subkey
-if the call succeeds.
-
-=item RegQueryInfoKey
-
-=item C<RegQueryInfoKey( $hKey, $osClass, $iolClass, $pNull, $ocSubKeys, $olSubKey, $olSubClass, $ocValues, $olValName, $olValData, $olSecDesc, $opftTime )>
-
-Gets miscellaneous information about an open Registry key.
-Returns a true value if successful and a false value [and
-sets C<$^E>/C<regLastError()>] on failure.
-
-C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from
-a previous call].
-
-C<$sClass> will be set to the class name for the key. Can be
-C<[]> if you don't care about the class.
-
-C<$plClass> initially specifies the [minimum] buffer size to be
-allocated for C<$sClass> and will be set to the length of the
-key's class name. See L<Buffer sizes> for more information.
-You may omit this parameter to get the same effect as passing in
-C<[]> for it.
-
-C<$pNull> is reserved for future use and should be passed as C<[]>.
-
-C<$pcSubKeys> will be set to the count of the number of subkeys
-directly under this key. Can be C<[]>.
-
-C<$plSubKey> will be set to the length of the longest subkey name.
-Can be C<[]>.
-
-C<$plSubClass> will be set to the length of the longest class name
-used with an immediate subkey of this key. Can be C<[]>.
-
-C<$pcValues> will be set to the count of the number of values in
-this key. Can be C<[]>.
-
-C<$plValName> will be set to the length of the longest value name
-in this key. Can be C<[]>.
-
-C<$plValData> will be set to the length of the longest value data
-in this key. Can be C<[]>.
-
-C<$plSecDesc> will be set to the length of this key's full security
-descriptor.
-
-C<$pftTime> will be set to a C<FILETIME> structure packed
-into a Perl string and indicating when this key was last changed.
-Can be C<[]>.
-
-=item RegQueryMultipleValues
-
-=item C<RegQueryMultipleValues( $hKey, $ioarValueEnts, $icValueEnts, $opBuffer, $iolBuffer )>
-
-Allows you to use a single call to query several values from a single
-open Registry key to maximize efficiency. Returns a true value if
-successful and a false value [and sets C<$^E>/C<regLastError()>] on
-failure.
-
-C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from
-a previous call].
-
-C<$pValueEnts> should contain a list of C<VALENT> structures packed
-into a single Perl string. Each C<VALENT> structure should have
-the C<ve_valuename> entry [the first 4 bytes] pointing to a string
-containing the name of a value stored in this key. The remaining
-fields are set if the function succeeds.
-
-C<$cValueEnts> should contain the count of the number of C<VALENT>
-structures contained in C<$pValueEnts>.
-
-C<$pBuffer> will be set to the data from all of the requested values
-concatenated into a single Perl string.
-
-C<$plBuffer> initially specifies the [minimum] buffer size to be
-allocated for C<$sBuffer> and will be set to the total length of
-the data to be written to C<$sBuffer>. See L<Buffer sizes> for
-more information. You may omit this parameter to get the same
-effect as passing in C<[]> for it.
-
-Here is sample code to populate C<$pValueEnts>:
-
- # @ValueNames= ...list of value name strings...;
- $cValueEnts= @ValueNames;
- $pValueEnts= pack( " p x4 x4 x4 " x $cValueEnts, @ValueNames );
-
-Here is sample code to retrieve the data type and data length
-returned in C<$pValueEnts>:
-
- @Lengths= unpack( " x4 L x4 x4 " x $cValueEnts, $pValueEnts );
- @Types= unpack( " x4 x4 x4 L " x $cValueEnts, $pValueEnts );
-
-Given the above, and assuming you haven't modified C<$sBuffer> since
-the call, you can also extract the value data strings from C<$sBuffer>
-by using the pointers returned in C<$pValueEnts>:
-
- @Data= unpack( join( "", map {" x4 x4 P$_ x4 "} @Lengths ),
- $pValueEnts );
-
-Much better is to use the lengths and extract directly from
-C<$sBuffer> using C<unpack()> [or C<substr()>]:
-
- @Data= unpack( join("",map("P$_",@Lengths)), $sBuffer );
-
-=item RegQueryValue
-
-=item C<RegQueryValue( $hKey, $sSubKey, $osValueData, $iolValueData )>
-
-This routine is meant only for compatibility with Windows version
-3.1. Use C<RegQueryValueEx()> instead. This routine can only
-query unamed values [a.k.a. "default values"], that is, values with
-a name of C<"">.
-
-=item RegQueryValueEx
-
-=item C<RegQueryValueEx( $hKey, $sValueName, $pNull, $ouType, $opValueData, $iolValueData )>
-
-Lets you look up value data stored in an open Registry key by
-specifying the value name. Returns a true value if successful
-and a false value [and sets C<$^E>/C<regLastError()>] on failure.
-
-C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from
-a previous call].
-
-C<$sValueName> is the name of the value whose data you wish to
-retrieve.
-
-C<$pNull> this parameter is reserved for future use and should be
-specified as C<[]>.
-
-C<$piType> will be set to indicate what type of data is stored in
-the named value. Will be set to a C<REG_*> value if the function
-succeeds.
-
-C<$pValueData> will be set to the value data [packed into a Perl
-string] that is stored in the named value. Can be C<[]> if you
-don't care about the value data.
-
-C<$plValueData> initially specifies the [minimum] buffer size to be
-allocated for C<$sValueData> and will be set to the size [always
-in bytes] of the data to be written to C<$sValueData>, even if
-C<$sValueData> is not successfully written to. See L<Buffer sizes>
-for more information.
-
-=item RegReplaceKey
-
-=item C<RegReplaceKey( $hKey, $sSubKey, $sNewFile, $sOldFile )>
-
-Lets you replace an entire hive when the system is next booted.
-Returns a true value if successful and a false value [and sets
-C<$^E>/C<regLastError()>] on failure.
-
-C<$hKey> is the handle to a Registry key that has hive(s)
-loaded in it. This must be C<HKEY_LOCAL_MACHINE>,
-C<HKEY_USERS>, or a remote version of one of these from
-a call to C<RegConnectRegistry()>.
-
-C<$sSubKey> is the name of the subkey of C<$hKey> whose hive
-you wish to have replaced on the next reboot.
-
-C<$sNewFile> is the name of a file that will replace the existing
-hive file when the system reboots.
-
-C<$sOldFile> is the file name to save the current hive file to
-when the system reboots.
-
-C<$sNewFile> and C<$sOldFile> are interpretted relative to the
-C<%SystemRoot%/System32/config> directory on the computer where
-the C<$hKey> key resides [I think]. If either file is [would be]
-on a FAT file system, then its name must not have an extension.
-
-You must have the C<SE_RESTORE_NAME> privilege to use this routine.
-
-=item RegRestoreKey
-
-=item C<RegRestoreKey( $hKey, $sFileName, $uFlags )>
-
-Reads in a hive file and copies its contents over an existing
-Registry tree. Returns a true value if successful and a false
-value [and sets C<$^E>/C<regLastError()>] on failure.
-
-C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from
-a previous call].
-
-C<$sFileName> is the name of the hive file to be read. For each
-value and subkey in this file, a value or subkey will be added
-or replaced in C<$hKey>.
-
-C<$uFlags> is usally C<0>. It can also be C<REG_WHOLE_HIVE_VOLATILE>
-which, rather than copying the hive over the existing key,
-replaces the existing key with a temporary, memory-only Registry
-key and then copies the hive contents into it. This option only
-works if C<$hKey> is C<HKEY_LOCAL_MACHINE>, C<HKEY_USERS>, or a
-remote version of one of these from a call to C<RegConnectRegistry()>.
-
-C<RegRestoreKey> does I<not> delete values nor keys from the
-existing Registry tree when there is no corresponding value/key
-in the hive file.
-
-=item RegSaveKey
-
-=item C<RegSaveKey( $hKey, $sFileName, $pSecAttr )>
-
-Dumps any open Registry key and all of its subkeys and values into
-a new hive file. Returns a true value if successful and a false
-value [and sets C<$^E>/C<regLastError()>] on failure.
-
-C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from
-a previous call].
-
-C<$sFileName> is the name of the file that the Registry tree
-should be saved to. It is interpretted relative to the
-C<%SystemRoot%/System32/config> directory on the computer where
-the C<$hKey> key resides. If C<$sFileName> is on a FAT file system,
-then it must not have an extension.
-
-C<$pSecAttr> contains a C<SECURITY_ATTRIBUTES> structure that specifies
-the permissions to be set on the new file that is created. This can
-be C<[]>.
-
-You must have the C<SE_RESTORE_NAME> privilege to use this routine.
-
-=item RegSetKeySecurity
-
-=item C<RegSetKeySecurity( $hKey, $uSecInfo, $pSecDesc )>
-
-Sets [part of] the C<SECURITY_DESCRIPTOR> structure describing part
-of the security for an open Registry key. Returns a true value if
-successful and a false value [and sets C<$^E>/C<regLastError()>] on
-failure.
-
-C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from
-a previous call].
-
-C<$uSecInfo> is a numeric C<SECURITY_INFORMATION> value that
-specifies which C<SECURITY_DESCRIPTOR> structure to set. Should
-be C<OWNER_SECURITY_INFORMATION>, C<GROUP_SECURITY_INFORMATION>,
-C<DACL_SECURITY_INFORMATION>, or C<SACL_SECURITY_INFORMATION>
-or two or more of these bits combined using C<|>.
-
-C<$pSecDesc> contains the new C<SECURITY_DESCRIPTOR> structure
-packed into a Perl string.
-
-=item RegSetValue
-
-=item C<RegSetValue( $hKey, $sSubKey, $uType, $sValueData, $lValueData )>
-
-This routine is meant only for compatibility with Windows version
-3.1. Use C<RegSetValueEx()> instead. This routine can only
-set unamed values [a.k.a. "default values"].
-
-=item RegSetValueEx
-
-=item C<RegSetValueEx( $hKey, $sName, $uZero, $uType, $pData, $lData )>
-
-Adds or replaces a value in an open Registry key. Returns
-a true value if successful and a false value [and sets
-C<$^E>/C<regLastError()>] on failure.
-
-C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from
-a previous call].
-
-C<$sName> is the name of the value to be set.
-
-C<$uZero> is reserved for future use and should be specified as C<0>.
-
-C<$uType> is the type of data stored in C<$pData>. It should
-be a C<REG_*> value.
-
-C<$pData> is the value data packed into a Perl string.
-
-C<$lData> is the length of the value data that is stored in C<$pData>.
-You will usually omit this parameter or pass in C<0> to have
-C<length($pData)> used. In both of these cases, if C<$iType> is
-C<REG_SZ> or C<REG_EXPAND_SZ>, C<RegSetValueEx()> will append a
-trailing C<'\0'> to the end of C<$pData> [unless there is already
-one].
-
-=item RegUnLoadKey
-
-=item C<RegUnLoadKey( $hKey, $sSubKey )>
-
-Unloads a previously loaded hive file. That is, closes the
-hive file then deletes the subkey that was providing access
-to it. Returns a true value if successful and a false value
-[and sets C<$^E>/C<regLastError()>] on failure.
-
-C<$hKey> is the handle to a Registry key that has hives
-loaded in it. This must be C<HKEY_LOCAL_MACHINE>, C<HKEY_USERS>,
-or a remote version of one of these from a call to
-C<RegConnectRegistry()>.
-
-C<$sSubKey> is the name of the subkey whose hive you wish to
-have unloaded.
-
-=item :FuncA
-
-The ASCII-specific function names.
-
-Each of these is identical to the version listed above without the
-trailing "A":
-
- AbortSystemShutdownA InitiateSystemShutdownA
- RegConnectRegistryA RegCreateKeyA RegCreateKeyExA
- RegDeleteKeyA RegDeleteValueA RegEnumKeyA
- RegEnumKeyExA RegEnumValueA RegLoadKeyA
- RegOpenKeyA RegOpenKeyExA RegQueryInfoKeyA
- RegQueryMultipleValuesA RegQueryValueA RegQueryValueExA
- RegReplaceKeyA RegRestoreKeyA RegSaveKeyA
- RegSetValueA RegSetValueExA RegUnLoadKeyA
-
-=item :FuncW
-
-The UNICODE-specific function names. These are the same as the
-versions listed above without the trailing "W" except that string
-parameters are UNICODE strings rather than ASCII strings, as
-indicated.
-
-=item AbortSystemShutdownW
-
-=item C<AbortSystemShutdownW( $swComputerName )>
-
-C<$swComputerName> is UNICODE.
-
-=item InitiateSystemShutdownW
-
-=item C<InitiateSystemShutdownW( $swComputer, $swMessage, $uTimeoutSecs, $bForce, $bReboot )>
-
-C<$swComputer> and C<$swMessage> are UNICODE.
-
-=item RegConnectRegistryW
-
-=item C<RegConnectRegistryW( $swComputer, $hRootKey, $ohKey )>
-
-C<$swComputer> is UNICODE.
-
-=item RegCreateKeyW
-
-=item C<RegCreateKeyW( $hKey, $swSubKey, $ohSubKey )>
-
-C<$swSubKey> is UNICODE.
-
-=item RegCreateKeyExW
-
-=item C<RegCreateKeyExW( $hKey, $swSubKey, $uZero, $swClass, $uOpts, $uAccess, $pSecAttr, $ohNewKey, $ouDisp )>
-
-C<$swSubKey> and C<$swClass> are UNICODE.
-
-=item RegDeleteKeyW
-
-=item C<RegDeleteKeyW( $hKey, $swSubKey )>
-
-C<$swSubKey> is UNICODE.
-
-=item RegDeleteValueW
-
-=item C<RegDeleteValueW( $hKey, $swValueName )>
-
-C<$swValueName> is UNICODE.
-
-=item RegEnumKeyW
-
-=item C<RegEnumKeyW( $hKey, $uIndex, $oswName, $ilwNameSize )>
-
-C<$oswName> is UNICODE and C<$ilwNameSize> is measured as number of
-C<WCHAR>s.
-
-=item RegEnumKeyExW
-
-=item C<RegEnumKeyExW( $hKey, $uIndex, $oswName, $iolwName, $pNull, $oswClass, $iolwClass, $opftLastWrite )>
-
-C<$swName> and C<$swClass> are UNICODE and C<$iolwName> and C<$iolwClass>
-are measured as number of C<WCHAR>s.
-
-=item RegEnumValueW
-
-=item C<RegEnumValueW( $hKey, $uIndex, $oswName, $iolwName, $pNull, $ouType, $opData, $iolData )>
-
-C<$oswName> is UNICODE and C<$iolwName> is measured as number
-of C<WCHAR>s.
-
-C<$opData> is UNICODE if C<$piType> is C<REG_SZ>, C<REG_EXPAND_SZ>,
-or C<REG_MULTI_SZ>. Note that C<$iolData> is measured as number
-of bytes even in these cases.
-
-=item RegLoadKeyW
-
-=item C<RegLoadKeyW( $hKey, $swSubKey, $swFileName )>
-
-C<$swSubKey> and C<$swFileName> are UNICODE.
-
-=item RegOpenKeyW
-
-=item C<RegOpenKeyW( $hKey, $swSubKey, $ohSubKey )>
-
-C<$swSubKey> is UNICODE.
-
-=item RegOpenKeyExW
-
-=item C<RegOpenKeyExW( $hKey, $swSubKey, $uOptions, $uAccess, $ohSubKey )>
-
-C<$swSubKey> is UNICODE.
-
-=item RegQueryInfoKeyW
-
-=item C<RegQueryInfoKeyW( $hKey, $oswClass, $iolwClass, $pNull, $ocSubKeys, $olwSubKey, $olwSubClass, $ocValues, $olwValName, $olValData, $olSecDesc, $opftTime )>
-
-C<$swClass> is UNICODE. C<$iolwClass>, C<$olwSubKey>, C<$olwSubClass>,
-and C<$olwValName> are measured as number of C<WCHAR>s. Note that
-C<$olValData> is measured as number of bytes.
-
-=item RegQueryMultipleValuesW
-
-=item C<RegQueryMultipleValuesW( $hKey, $ioarValueEnts, $icValueEnts, $opBuffer, $iolBuffer )>
-
-The C<ve_valuename> fields of the C<VALENT> [actually C<VALENTW>]
-structures in C<$ioarValueEnts> are UNICODE. Values of type C<REG_SZ>,
-C<REG_EXPAND_SZ>, and C<REG_MULTI_SZ> are written to C<$opBuffer>
-in UNICODE. Note that C<$iolBuffer> and the C<ve_valuelen> fields
-of the C<VALENT> [C<VALENTW>] structures are measured as number of
-bytes.
-
-=item RegQueryValueW
-
-=item C<RegQueryValueW( $hKey, $swSubKey, $oswValueData, $iolValueData )>
-
-C<$swSubKey> and C<$oswValueData> are UNICODE. Note that
-C<$iolValueData> is measured as number of bytes.
-
-=item RegQueryValueExW
-
-=item C<RegQueryValueExW( $hKey, $swName, $pNull, $ouType, $opData, $iolData )>
-
-C<$swName> is UNICODE.
-
-C<$opData> is UNICODE if C<$ouType> is C<REG_SZ>, C<REG_EXPAND_SZ>,
-or C<REG_MULTI_SZ>. Note that C<$iolData> is measured as number of
-bytes even in these cases.
-
-=item RegReplaceKeyW
-
-=item C<RegReplaceKeyW( $hKey, $swSubKey, $swNewFile, $swOldFile )>
-
-C<$swSubKey>, C<$swNewFile>, and C<$swOldFile> are UNICODE.
-
-=item RegRestoreKeyW
-
-=item C<RegRestoreKeyW( $hKey, $swFileName, $uFlags )>
-
-C<$swFileName> is UNICODE.
-
-=item RegSaveKeyW
-
-=item C<RegSaveKeyW( $hKey, $swFileName, $pSecAttr )>
-
-C<$swFileName> is UNICODE.
-
-=item RegSetValueW
-
-=item C<RegSetValueW( $hKey, $swSubKey, $uType, $swValueData, $lValueData )>
-
-C<$swSubKey> and C<$swValueData> are UNICODE. Note that
-C<$lValueData> is measured as number of bytes even though
-C<$swValueData> is always UNICODE.
-
-=item RegSetValueExW
-
-=item C<RegSetValueExW( $hKey, $swName, $uZero, $uType, $pData, $lData )>
-
-C<$swName> is UNICODE.
-
-C<$pData> is UNICODE if C<$uType> is C<REG_SZ>, C<REG_EXPAND_SZ>,
-or C<REG_MULTI_SZ>. Note that C<$lData> is measured as number of
-bytes even in these cases.
-
-=item RegUnLoadKeyW
-
-=item C<RegUnLoadKeyW( $hKey, $swSubKey )>
-
-C<$swSubKey> is UNICODE.
-
-=item :HKEY_
-
-All C<HKEY_*> constants:
-
- HKEY_CLASSES_ROOT HKEY_CURRENT_CONFIG HKEY_CURRENT_USER
- HKEY_DYN_DATA HKEY_LOCAL_MACHINE HKEY_PERFORMANCE_DATA
- HKEY_USERS
-
-=item :KEY_
-
-All C<KEY_*> constants:
-
- KEY_QUERY_VALUE KEY_SET_VALUE KEY_CREATE_SUB_KEY
- KEY_ENUMERATE_SUB_KEYS KEY_NOTIFY KEY_CREATE_LINK
- KEY_READ KEY_WRITE KEY_EXECUTE
- KEY_ALL_ACCESS
-
-=item :REG_
-
-All C<REG_*> constants:
-
- REG_CREATED_NEW_KEY REG_OPENED_EXISTING_KEY
-
- REG_LEGAL_CHANGE_FILTER REG_NOTIFY_CHANGE_ATTRIBUTES
- REG_NOTIFY_CHANGE_NAME REG_NOTIFY_CHANGE_LAST_SET
- REG_NOTIFY_CHANGE_SECURITY REG_LEGAL_OPTION
-
- REG_OPTION_BACKUP_RESTORE REG_OPTION_CREATE_LINK
- REG_OPTION_NON_VOLATILE REG_OPTION_OPEN_LINK
- REG_OPTION_RESERVED REG_OPTION_VOLATILE
-
- REG_WHOLE_HIVE_VOLATILE REG_REFRESH_HIVE
- REG_NO_LAZY_FLUSH
-
- REG_NONE REG_SZ
- REG_EXPAND_SZ REG_BINARY
- REG_DWORD REG_DWORD_LITTLE_ENDIAN
- REG_DWORD_BIG_ENDIAN REG_LINK
- REG_MULTI_SZ REG_RESOURCE_LIST
- REG_FULL_RESOURCE_DESCRIPTOR REG_RESOURCE_REQUIREMENTS_LIST
-
-=item :ALL
-
-All of the above.
-
-=item :SE_
-
-The strings for the following privilege names:
-
- SE_ASSIGNPRIMARYTOKEN_NAME SE_AUDIT_NAME
- SE_BACKUP_NAME SE_CHANGE_NOTIFY_NAME
- SE_CREATE_PAGEFILE_NAME SE_CREATE_PERMANENT_NAME
- SE_CREATE_TOKEN_NAME SE_DEBUG_NAME
- SE_INCREASE_QUOTA_NAME SE_INC_BASE_PRIORITY_NAME
- SE_LOAD_DRIVER_NAME SE_LOCK_MEMORY_NAME
- SE_MACHINE_ACCOUNT_NAME SE_PROF_SINGLE_PROCESS_NAME
- SE_REMOTE_SHUTDOWN_NAME SE_RESTORE_NAME
- SE_SECURITY_NAME SE_SHUTDOWN_NAME
- SE_SYSTEMTIME_NAME SE_SYSTEM_ENVIRONMENT_NAME
- SE_SYSTEM_PROFILE_NAME SE_TAKE_OWNERSHIP_NAME
- SE_TCB_NAME SE_UNSOLICITED_INPUT_NAME
-
-It can be difficult to successfully build this module in a way
-that makes these constants available. So some builds of this
-module may not make them available. For such builds, trying
-to export any of these constants will cause a fatal error.
-For this reason, none of these symbols are currently included
-in the C<":ALL"> grouping.
-
-=back
-
-=head2 The Win32API:: heirarchy
-
-This and the other Win32API:: modules are meant to expose the
-nearly raw API calls so they can be used from Perl code in any
-way they might be used from C code. This provides the following
-advantages:
-
-=over
-
-=item Many modules can be written by people that don't have a C compiler.
-
-=item Encourages more module code to be written in Perl [not C].
-
-Perl code is often much easier to inspect, debug, customize, and
-enhance than XS code.
-
-=item Allows those already familiar with the Win32 API to get
-off to a quick start.
-
-=item Provides an interactive tool for exploring even obscure
-details of the Win32 API.
-
-It can be very useful to interactively explore ad-hoc calls into
-parts of the Win32 API using:
-
- perl -de 0
-
-=item Ensures that native Win32 data structures can be used.
-
-This allows maximum efficiency. It also allows data from one
-module [for example, time or security information from the
-C<Win32API::Registry> or C<Win32API::File> modules] to be used
-with other modules [for example, C<Win32API::Time> and
-C<Win32API::SecDesc>].
-
-=item Provides a single version of the XS interface to each API
-call where improvements can be collected.
-
-=back
-
-=head2 Buffer sizes
-
-For each parameter that specifies a buffer size, a value of C<0>
-can be passed. For parameter that are pointers to buffer sizes,
-you can also pass in C<NULL> by specifying an empty list reference,
-C<[]>. Both of these cases will ensure that the variable has
-I<some> buffer space allocated to it and pass in that buffer's
-allocated size. Many of the calls indicate, via C<ERROR_MORE_DATA>,
-that the buffer size was not sufficient and the F<Registry.xs>
-code will automatically enlarge the buffer to the required size
-and repeat the call.
-
-Numeric buffer sizes are used as minimum initial sizes for the
-buffers. The larger of this size and the size of space already
-allocated to the scalar will be passed to the underlying routine.
-If that size was insufficient, and the underlying call provides
-an easy method for determining the needed buffer size, then the
-buffer will be enlarged and the call repeated as above.
-
-The underlying calls define buffer size parameter as unsigned, so
-negative buffer sizes are treated as very large positive buffer
-sizes which usually cause C<malloc()> to fail.
-
-To force the F<Registry.xs> code to pass in a specific value for
-a buffer size, preceed the size with an equals sign via C<"=".>.
-Buffer sizes that are passed in as strings starting with an equals
-sign will have the equal sign stripped and the remainder of the string
-interpretted as a number [via C's C<strtoul()> using only base 10]
-which will be passed to the underlying routine [even if the allocated
-buffer is actually larger]. The F<Registry.xs> code will enlarge the
-buffer to the specified size, if needed, but will not enlarge the
-buffer based on the underlying routine requesting more space.
-
-Some Reg*() calls may not currently set the buffer size when they
-return C<ERROR_MORE_DATA>. But some that are not documented as
-doing so, currently do so anyway. So the code assumes that any
-routine I<might> do this and resizes any buffers and repeats the
-call. We hope that eventually all routines will provide this
-feature.
-
-When you use C<[]> for a buffer size, you can still find the
-length of the data returned by using C<length($buffer)>. Note
-that this length will be in bytes while a few of the buffer
-sizes would have been in units of wide characters.
-
-Note that the RegQueryValueEx*() and RegEnumValue*() calls
-will trim the trailing C<'\0'> [if present] from the returned data
-values of type C<REG_SZ> or C<REG_EXPAND_SZ> but only if the
-value data length parameter is omitted [or specified as C<[]>].
-
-The RegSetValueEx*() calls will add a trailing C<'\0'> [if
-missing] to the supplied data values of type C<REG_SZ> and
-C<REG_EXPAND_SZ> but only if the value data length parameter
-is omitted [or specified as C<0>].
-
-=head2 Hungarian Notation
-
-The following abbreviations are used at the start of each parameter
-name to hint at aspects of how the parameter is used. The prefix
-is always in lower case and followed by a capital letter that starts
-the descriptive part of the parameter name. Several of the following
-abbreviations can be combined into a single prefix.
-
-Probably not all of these prefix notations are used by this module.
-This document section may be included in any C<Win32API> module and
-so covers some notations not used by this specific module.
-
-=over
-
-=item s
-
-A string. In C, a C<'\0'>-terminated C<char *>. In Perl, just a
-string except that it will be truncated at the first C<"\0">, if
-it contains one.
-
-=item sw
-
-A wide [UNICODE] string. In C, a C<L'\0'>-terminated C<WCHAR *>.
-In Perl, a string that contains UNICODE data. You can convert a
-string to UNICODE in Perl via:
-
- $string= "This is an example string";
- $unicode= pack( "S*", unpack("C*",$string), 0 );
-
-Note how C<, 0> above causes an explicit C<L'\0'> to be added since
-Perl's implicit C<'\0'> that it puts after each of its strings is not
-wide enough to terminate a UNICODE string. So UNICODE strings are
-different than regular strings in that the Perl version of a regular
-string will not include the trialing C<'\0'> while the Perl version
-of a UNICODE string must include the trailing C<L'\0'>.
-
-If a UNICODE string contains no non-ASCII characters, then you
-can convert it back into a normal string via:
-
- $string= pack( "C*", unpack("S*",$unicode) );
- $string =~ s/\0$//;
-
-=item p
-
-A pointer to some buffer [usually containing some C<struct>]. In C,
-a C<void *> or some other pointer type. In Perl, a string that is
-usually manipulated using C<pack> and C<unpack>. The "p" is usually
-followed by more prefix character(s) to indicate what type of data is
-stored in the bufffer.
-
-=item a
-
-A packed array. In C, an array [usually of C<struct>s]. In Perl, a
-string containing the packed data. The "a" is usually followed by
-more prefix character(s) to indicate the data type of the elements.
-
-These packed arrays are also called "vectors" in places to avoid
-confusion with Perl arrays.
-
-=item n
-
-A generic number. In C, any of the integer or floating point data
-types. In Perl, a number; either an integer, unsigned, or double
-[IV, UV, or NV, respectively]. Usually an integer.
-
-=item iv
-
-A signed integral value. In C, any of the signed integer data types.
-In Perl, an integer [IV].
-
-=item u
-
-An unsigned integral value. In C, any of the unsigned integer data
-types. In Perl, an unsigned integer [UV].
-
-=item d
-
-A floating-point number. In C, a C<float> or C<double> or, perhaps,
-a C<long double>. In Perl, a double-precision floating-point number
-[NV].
-
-=item b
-
-A Boolean value. In C, any integer data type, though usually via
-a type alias of C<bool> or C<BOOL>, containing either a 0 [false] or
-non-zero [true] value. In Perl, a scalar containing a Boolean value
-[C<0>, C<"">, or C<undef> for "false" and anything else for "true"].
-
-=item c
-
-A count of items. In C, any integer data type. In Perl, an unsigned
-integer [UV]. Usually used in conjunction with a "vector" parameter
-[see L</a> above] to indicate the number of elements.
-
-=item l
-
-A length [in bytes]. In C, any integer data type. In Perl, an
-unsigned integer [UV]. Usually used in conjunction with a "string"
-or "pointer" parameter [see L</s> and L</p> above] to indicate the
-buffer size or the size of the value stored in the buffer.
-
-For strings, there is no general rule as to whether the trailing
-C<'\0'> is included in such sizes. For this reason, the C<Win32API>
-modules follow the Perl rule of always allocating one extra byte
-and reporting buffer sizes as being one smaller than allocated in
-case the C<'\0'> is not included in the size.
-
-=item lw
-
-A length measured as number of UNICODE characters. In C, a count
-of C<WCHAR>s. In Perl, an unsigned integer [UV] counting "shorts"
-[see "s" and "S" in C<pack> and C<unpack>].
-
-For UNICODE strings, the trailing C<L'\0'> may or may not be
-included in a length so, again, we always allocate extra room
-for one and don't report that extra space.
-
-=item h
-
-A handle. In C, a C<HANDLE> or more-specific handle data type.
-In Perl, an unsigned integer [UV]. In C, these handles are often
-actually some type of pointer, but Perl just treats them as opaque
-numbers, as it should. This prefix is also used for other pointers
-that are treated as integers in Perl code.
-
-=item r
-
-A record. In C, almost always a C<struct> or perhaps C<union>. Note
-that C C<struct>s are rarely passed by value so the "r" is almost
-always preceeded by a "p" or "a" [see L</p> and L</a> above]. For
-the very rare unadorned "r", Perl stores the record in the same way
-as a "pr", that is, in a string. For the very rare case where Perl
-explicitly stores a pointer to the C<struct> rather than storing the
-C<struct> directly in a Perl string, the prefix "pp" or "ppr" or even
-"par" is used.
-
-=item sv
-
-=item rv
-
-=item hv
-
-=item av
-
-=item cv
-
-A Perl data type. Respectively, a scalar value [SV], a reference
-[RV] [usually to a scalar], a hash [HV], a Perl array [AV], or a Perl
-code reference [PVCV]. For the "hv", "av", and "cv" prefixes, a
-leading "rv" is usually assumed. For a parameter to an XS subroutine,
-a prefix of "sv" means the parameter is a scalar and so may be a string
-or a number [or C<undef>] or even both at the same time. So "sv"
-doesn't imply a leading "rv".
-
-=item Input or Output
-
-Whether a parameter is for input data, output data, or both is usually
-not reflected by the data type prefix. In cases where this is not
-obvious nor reflected in the parameter name proper, we may use the
-following in front of the data type prefix.
-
-=over
-
-=item i
-
-An input parameter given to the API [usually omitted].
-
-=item o
-
-An output-only parameter taken from the API. You should not get a
-warning if such a parameter is C<undef> when you pass it into the
-function. You should get an error if such a parameter is read-only.
-You can [usually] pass in C<[]> for such a parameter to have the
-parameter silently ignored.
-
-The output may be written directly into the Perl variable passed
-to the subroutine, the same way the buffer parameter to Perl's
-C<sysread()>. This method is often avoided in Perl because
-the call then lacks any visual cue that some parameters are being
-overwritten. But this method closely matches the C API which is
-what we are trying to do.
-
-=item io
-
-Input given to the API then overwritten with output taken from the
-API. You should get a warning [if B<-w> is in effect] if such a
-parameter is C<undef> when you pass it into the function [unless it
-is a buffer or buffer length parameter]. If the value is read-only,
-then [for most parameters] the output is silently not written. This
-is because it is often convenient to pass in read-only constants for
-many such parameters. You can also usually pass in C<[]> for such
-parameters.
-
-=back
-
-=item pp
-
-=item ppr
-
-=item par
-
-=item pap
-
-These are just unusual combinations of prefix characters described above.
-
-For each, a pointer is stored in a [4-byte] Perl string. You can
-usually use C<unpack "P"> to access the real data from Perl.
-
-For "ppr" [and often for "pp"], the pointer points directly at a
-C C<struct>. For "par", the pointer points to the first element
-of a C [packed] array of C<struct>s. For "pap", the pointer points
-to a C [packed] array of pointers to other things.
-
-=item ap
-
-Here we have a list of pointers packed into a single Perl string.
-
-=back
-
-=head1 BUGS
-
-The old ActiveState ports of Perl for Win32 [but not, ActivePerl, the
-ActiveState distributions of standard Perl 5.004 and beyond] do not support
-the tools for building extensions and so do not support this extension.
-
-No routines are provided for using the data returned in the C<FILETIME>
-buffers. Those are in the C<Win32API::Time> module.
-
-No routines are provided for dealing with UNICODE data effectively.
-See L</:FuncW> above for some simple-minded UNICODE methods.
-
-Parts of the module test will fail if used on a version of Perl
-that does not yet set C<$^E> based on C<GetLastError()>.
-
-On NT 4.0 [at least], the RegEnum*() calls do not set the required
-buffer sizes when returning C<ERROR_MORE_DATA> so this module will
-not grow the buffers in such cases. C<Win32::TieRegistry> overcomes
-this by using values from C<RegQueryInfoKey()> for buffer sizes in
-RegEnum* calls.
-
-On NT 4.0 [at least], C<RegQueryInfoKey()> on C<HKEY_PERFORMANCE_DATA>
-never succeeds. Also, C<RegQueryValueEx()> on C<HKEY_PERFORMANCE_DATA>
-never returns the required buffer size. To access C<HKEY_PERFORMANCE_DATA>
-you will need to keep growing the data buffer until the call succeeds.
-
-Because C<goto &subroutine> seems to be buggy under Win32 Perl,
-it is not used in the stubs in F<Registry.pm>.
-
-=head1 AUTHOR
-
-Tye McQueen, tye@metronet.com, http://www.metronet.com/~tye/.
-
-=head1 SEE ALSO
-
-=over
-
-=item L<Win32::TieRegistry>
-
-=item L<Win32::Registry>
-
-=back
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/Win32API/Registry/cRegistry.pc b/Master/tlpkg/tlperl/lib/Win32API/Registry/cRegistry.pc
deleted file mode 100644
index 9659d0c4361..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32API/Registry/cRegistry.pc
+++ /dev/null
@@ -1,87 +0,0 @@
-# Generated by cRegistry_pc.cxx.
-# Package Win32API::Registry with options:
-# CPLUSPLUS => q[1]
-# IFDEF => q[ /^SE_/ ? '__cplusplus' : /REG_/ ]
-# IMPORT_LIST => [q[/._/], q[!/[a-z]/]]
-# VALUES => { KEY_DELETE=>q[DELETE], KEY_READ_CONTROL=>q[READ_CONTROL], KEY_WRITE_OWNER=>q[WRITE_OWNER], KEY_SYNCHRONIZE=>q[SYNCHRONIZE], KEY_WRITE_DAC=>q[WRITE_DAC] }
-# WRITE_PERL => q[1]
-# Perl files eval'd:
-# Registry.pm => last if /^\s*(bootstrap|XSLoader::load)\b/
-# C files included:
-# Registry.xs => last if m#/[/*]\s*CONSTS_DEFINED\b|^\s*MODULE\b#
-sub HKEY_CLASSES_ROOT () { 0x80000000 }
-sub HKEY_CURRENT_CONFIG () { 0x80000005 }
-sub HKEY_CURRENT_USER () { 0x80000001 }
-sub HKEY_DYN_DATA () { 0x80000006 }
-sub HKEY_LOCAL_MACHINE () { 0x80000002 }
-sub HKEY_PERFORMANCE_DATA () { 0x80000004 }
-sub HKEY_USERS () { 0x80000003 }
-sub KEY_ALL_ACCESS () { 983103 }
-sub KEY_CREATE_LINK () { 32 }
-sub KEY_CREATE_SUB_KEY () { 4 }
-sub KEY_DELETE () { 65536 }
-sub KEY_ENUMERATE_SUB_KEYS () { 8 }
-sub KEY_EXECUTE () { 131097 }
-sub KEY_NOTIFY () { 16 }
-sub KEY_QUERY_VALUE () { 1 }
-sub KEY_READ () { 131097 }
-sub KEY_READ_CONTROL () { 131072 }
-sub KEY_SET_VALUE () { 2 }
-sub KEY_SYNCHRONIZE () { 1048576 }
-sub KEY_WRITE () { 131078 }
-sub KEY_WRITE_DAC () { 262144 }
-sub KEY_WRITE_OWNER () { 524288 }
-sub REG_BINARY () { 3 }
-sub REG_CREATED_NEW_KEY () { 1 }
-sub REG_DWORD () { 4 }
-sub REG_DWORD_BIG_ENDIAN () { 5 }
-sub REG_DWORD_LITTLE_ENDIAN () { 4 }
-sub REG_EXPAND_SZ () { 2 }
-sub REG_FULL_RESOURCE_DESCRIPTOR () { 9 }
-sub REG_LEGAL_CHANGE_FILTER () { 15 }
-sub REG_LEGAL_OPTION () { 15 }
-sub REG_LINK () { 6 }
-sub REG_MULTI_SZ () { 7 }
-sub REG_NONE () { 0 }
-sub REG_NOTIFY_CHANGE_ATTRIBUTES () { 2 }
-sub REG_NOTIFY_CHANGE_LAST_SET () { 4 }
-sub REG_NOTIFY_CHANGE_NAME () { 1 }
-sub REG_NOTIFY_CHANGE_SECURITY () { 8 }
-sub REG_NO_LAZY_FLUSH () { 4 }
-sub REG_OPENED_EXISTING_KEY () { 2 }
-sub REG_OPTION_BACKUP_RESTORE () { 4 }
-sub REG_OPTION_CREATE_LINK () { 2 }
-sub REG_OPTION_NON_VOLATILE () { 0 }
-sub REG_OPTION_OPEN_LINK () { 8 }
-sub REG_OPTION_RESERVED () { 0 }
-sub REG_OPTION_VOLATILE () { 1 }
-sub REG_REFRESH_HIVE () { 2 }
-sub REG_RESOURCE_LIST () { 8 }
-sub REG_RESOURCE_REQUIREMENTS_LIST () { 10 }
-sub REG_SZ () { 1 }
-sub REG_WHOLE_HIVE_VOLATILE () { 1 }
-sub SE_ASSIGNPRIMARYTOKEN_NAME () { 'SeAssignPrimaryTokenPrivilege' }
-sub SE_AUDIT_NAME () { 'SeAuditPrivilege' }
-sub SE_BACKUP_NAME () { 'SeBackupPrivilege' }
-sub SE_CHANGE_NOTIFY_NAME () { 'SeChangeNotifyPrivilege' }
-sub SE_CREATE_PAGEFILE_NAME () { 'SeCreatePagefilePrivilege' }
-sub SE_CREATE_PERMANENT_NAME () { 'SeCreatePermanentPrivilege' }
-sub SE_CREATE_TOKEN_NAME () { 'SeCreateTokenPrivilege' }
-sub SE_DEBUG_NAME () { 'SeDebugPrivilege' }
-sub SE_INCREASE_QUOTA_NAME () { 'SeIncreaseQuotaPrivilege' }
-sub SE_INC_BASE_PRIORITY_NAME () { 'SeIncreaseBasePriorityPrivilege' }
-sub SE_LOAD_DRIVER_NAME () { 'SeLoadDriverPrivilege' }
-sub SE_LOCK_MEMORY_NAME () { 'SeLockMemoryPrivilege' }
-sub SE_MACHINE_ACCOUNT_NAME () { 'SeMachineAccountPrivilege' }
-sub SE_PROF_SINGLE_PROCESS_NAME () { 'SeProfileSingleProcessPrivilege' }
-sub SE_REMOTE_SHUTDOWN_NAME () { 'SeRemoteShutdownPrivilege' }
-sub SE_RESTORE_NAME () { 'SeRestorePrivilege' }
-sub SE_SECURITY_NAME () { 'SeSecurityPrivilege' }
-sub SE_SHUTDOWN_NAME () { 'SeShutdownPrivilege' }
-sub SE_SYSTEMTIME_NAME () { 'SeSystemtimePrivilege' }
-sub SE_SYSTEM_ENVIRONMENT_NAME () { 'SeSystemEnvironmentPrivilege' }
-sub SE_SYSTEM_PROFILE_NAME () { 'SeSystemProfilePrivilege' }
-sub SE_TAKE_OWNERSHIP_NAME () { 'SeTakeOwnershipPrivilege' }
-sub SE_TCB_NAME () { 'SeTcbPrivilege' }
-sub SE_UNSOLICITED_INPUT_NAME () { 'SeUnsolicitedInputPrivilege' }
-1;
diff --git a/Master/tlpkg/tlperl/lib/XSLoader.pm b/Master/tlpkg/tlperl/lib/XSLoader.pm
deleted file mode 100644
index 34172dcfa70..00000000000
--- a/Master/tlpkg/tlperl/lib/XSLoader.pm
+++ /dev/null
@@ -1,356 +0,0 @@
-# Generated from XSLoader.pm.PL (resolved %Config::Config value)
-
-package XSLoader;
-
-$VERSION = "0.06";
-
-#use strict;
-
-# enable debug/trace messages from DynaLoader perl code
-# $dl_debug = $ENV{PERL_DL_DEBUG} || 0 unless defined $dl_debug;
-
- my $dl_dlext = 'dll';
-
-package DynaLoader;
-
-# No prizes for guessing why we don't say 'bootstrap DynaLoader;' here.
-# NOTE: All dl_*.xs (including dl_none.xs) define a dl_error() XSUB
-boot_DynaLoader('DynaLoader') if defined(&boot_DynaLoader) &&
- !defined(&dl_error);
-package XSLoader;
-
-sub load {
- package DynaLoader;
-
- die q{XSLoader::load('Your::Module', $Your::Module::VERSION)} unless @_;
-
- my($module) = $_[0];
-
- # work with static linking too
- my $b = "$module\::bootstrap";
- goto &$b if defined &$b;
-
- goto retry unless $module and defined &dl_load_file;
-
- my @modparts = split(/::/,$module);
- my $modfname = $modparts[-1];
-
- my $modpname = join('/',@modparts);
- my $modlibname = (caller())[1];
- my $c = @modparts;
- $modlibname =~ s,[\\/][^\\/]+$,, while $c--; # Q&D basename
- my $file = "$modlibname/auto/$modpname/$modfname.$dl_dlext";
-
-# print STDERR "XSLoader::load for $module ($file)\n" if $dl_debug;
-
- my $bs = $file;
- $bs =~ s/(\.\w+)?(;\d*)?$/\.bs/; # look for .bs 'beside' the library
-
- goto retry if not -f $file or -s $bs;
-
- my $bootname = "boot_$module";
- $bootname =~ s/\W/_/g;
- @DynaLoader::dl_require_symbols = ($bootname);
-
- my $boot_symbol_ref;
-
- if ($^O eq 'darwin') {
- if ($boot_symbol_ref = dl_find_symbol(0, $bootname)) {
- goto boot; #extension library has already been loaded, e.g. darwin
- }
- }
-
- # Many dynamic extension loading problems will appear to come from
- # this section of code: XYZ failed at line 123 of DynaLoader.pm.
- # Often these errors are actually occurring in the initialisation
- # C code of the extension XS file. Perl reports the error as being
- # in this perl code simply because this was the last perl code
- # it executed.
-
- my $libref = dl_load_file($file, 0) or do {
- require Carp;
- Carp::croak("Can't load '$file' for module $module: " . dl_error());
- };
- push(@DynaLoader::dl_librefs,$libref); # record loaded object
-
- my @unresolved = dl_undef_symbols();
- if (@unresolved) {
- require Carp;
- Carp::carp("Undefined symbols present after loading $file: @unresolved\n");
- }
-
- $boot_symbol_ref = dl_find_symbol($libref, $bootname) or do {
- require Carp;
- Carp::croak("Can't find '$bootname' symbol in $file\n");
- };
-
- push(@DynaLoader::dl_modules, $module); # record loaded module
-
- boot:
- my $xs = dl_install_xsub("${module}::bootstrap", $boot_symbol_ref, $file);
-
- # See comment block above
- push(@DynaLoader::dl_shared_objects, $file); # record files loaded
- return &$xs(@_);
-
- retry:
- my $bootstrap_inherit = DynaLoader->can('bootstrap_inherit') ||
- XSLoader->can('bootstrap_inherit');
- goto &$bootstrap_inherit;
-}
-
-# Versions of DynaLoader prior to 5.6.0 don't have this function.
-sub bootstrap_inherit {
- package DynaLoader;
-
- my $module = $_[0];
- local *DynaLoader::isa = *{"$module\::ISA"};
- local @DynaLoader::isa = (@DynaLoader::isa, 'DynaLoader');
- # Cannot goto due to delocalization. Will report errors on a wrong line?
- require DynaLoader;
- DynaLoader::bootstrap(@_);
-}
-
-1;
-
-
-__END__
-
-=head1 NAME
-
-XSLoader - Dynamically load C libraries into Perl code
-
-=head1 VERSION
-
-Version 0.06
-
-=head1 SYNOPSIS
-
- package YourPackage;
- use XSLoader;
-
- XSLoader::load 'YourPackage', $YourPackage::VERSION;
-
-=head1 DESCRIPTION
-
-This module defines a standard I<simplified> interface to the dynamic
-linking mechanisms available on many platforms. Its primary purpose is
-to implement cheap automatic dynamic loading of Perl modules.
-
-For a more complicated interface, see L<DynaLoader>. Many (most)
-features of C<DynaLoader> are not implemented in C<XSLoader>, like for
-example the C<dl_load_flags>, not honored by C<XSLoader>.
-
-=head2 Migration from C<DynaLoader>
-
-A typical module using L<DynaLoader|DynaLoader> starts like this:
-
- package YourPackage;
- require DynaLoader;
-
- our @ISA = qw( OnePackage OtherPackage DynaLoader );
- our $VERSION = '0.01';
- bootstrap YourPackage $VERSION;
-
-Change this to
-
- package YourPackage;
- use XSLoader;
-
- our @ISA = qw( OnePackage OtherPackage );
- our $VERSION = '0.01';
- XSLoader::load 'YourPackage', $VERSION;
-
-In other words: replace C<require DynaLoader> by C<use XSLoader>, remove
-C<DynaLoader> from C<@ISA>, change C<bootstrap> by C<XSLoader::load>. Do not
-forget to quote the name of your package on the C<XSLoader::load> line,
-and add comma (C<,>) before the arguments (C<$VERSION> above).
-
-Of course, if C<@ISA> contained only C<DynaLoader>, there is no need to have
-the C<@ISA> assignment at all; moreover, if instead of C<our> one uses the
-more backward-compatible
-
- use vars qw($VERSION @ISA);
-
-one can remove this reference to C<@ISA> together with the C<@ISA> assignment.
-
-If no C<$VERSION> was specified on the C<bootstrap> line, the last line becomes
-
- XSLoader::load 'YourPackage';
-
-=head2 Backward compatible boilerplate
-
-If you want to have your cake and eat it too, you need a more complicated
-boilerplate.
-
- package YourPackage;
- use vars qw($VERSION @ISA);
-
- @ISA = qw( OnePackage OtherPackage );
- $VERSION = '0.01';
- eval {
- require XSLoader;
- XSLoader::load('YourPackage', $VERSION);
- 1;
- } or do {
- require DynaLoader;
- push @ISA, 'DynaLoader';
- bootstrap YourPackage $VERSION;
- };
-
-The parentheses about C<XSLoader::load()> arguments are needed since we replaced
-C<use XSLoader> by C<require>, so the compiler does not know that a function
-C<XSLoader::load()> is present.
-
-This boilerplate uses the low-overhead C<XSLoader> if present; if used with
-an antic Perl which has no C<XSLoader>, it falls back to using C<DynaLoader>.
-
-=head1 Order of initialization: early load()
-
-I<Skip this section if the XSUB functions are supposed to be called from other
-modules only; read it only if you call your XSUBs from the code in your module,
-or have a C<BOOT:> section in your XS file (see L<perlxs/"The BOOT: Keyword">).
-What is described here is equally applicable to the L<DynaLoader|DynaLoader>
-interface.>
-
-A sufficiently complicated module using XS would have both Perl code (defined
-in F<YourPackage.pm>) and XS code (defined in F<YourPackage.xs>). If this
-Perl code makes calls into this XS code, and/or this XS code makes calls to
-the Perl code, one should be careful with the order of initialization.
-
-The call to C<XSLoader::load()> (or C<bootstrap()>) has three side effects:
-
-=over
-
-=item *
-
-if C<$VERSION> was specified, a sanity check is done to ensure that the
-versions of the F<.pm> and the (compiled) F<.xs> parts are compatible;
-
-=item *
-
-the XSUBs are made accessible from Perl;
-
-=item *
-
-if a C<BOOT:> section was present in the F<.xs> file, the code there is called.
-
-=back
-
-Consequently, if the code in the F<.pm> file makes calls to these XSUBs, it is
-convenient to have XSUBs installed before the Perl code is defined; for
-example, this makes prototypes for XSUBs visible to this Perl code.
-Alternatively, if the C<BOOT:> section makes calls to Perl functions (or
-uses Perl variables) defined in the F<.pm> file, they must be defined prior to
-the call to C<XSLoader::load()> (or C<bootstrap()>).
-
-The first situation being much more frequent, it makes sense to rewrite the
-boilerplate as
-
- package YourPackage;
- use XSLoader;
- use vars qw($VERSION @ISA);
-
- BEGIN {
- @ISA = qw( OnePackage OtherPackage );
- $VERSION = '0.01';
-
- # Put Perl code used in the BOOT: section here
-
- XSLoader::load 'YourPackage', $VERSION;
- }
-
- # Put Perl code making calls into XSUBs here
-
-=head2 The most hairy case
-
-If the interdependence of your C<BOOT:> section and Perl code is
-more complicated than this (e.g., the C<BOOT:> section makes calls to Perl
-functions which make calls to XSUBs with prototypes), get rid of the C<BOOT:>
-section altogether. Replace it with a function C<onBOOT()>, and call it like
-this:
-
- package YourPackage;
- use XSLoader;
- use vars qw($VERSION @ISA);
-
- BEGIN {
- @ISA = qw( OnePackage OtherPackage );
- $VERSION = '0.01';
- XSLoader::load 'YourPackage', $VERSION;
- }
-
- # Put Perl code used in onBOOT() function here; calls to XSUBs are
- # prototype-checked.
-
- onBOOT;
-
- # Put Perl initialization code assuming that XS is initialized here
-
-
-=head1 DIAGNOSTICS
-
-=over 4
-
-=item Can't find '%s' symbol in %s
-
-B<(F)> The bootstrap symbol could not be found in the extension module.
-
-=item Can't load '%s' for module %s: %s
-
-B<(F)> The loading or initialisation of the extension module failed.
-The detailed error follows.
-
-=item Undefined symbols present after loading %s: %s
-
-B<(W)> As the message says, some symbols stay undefined although the
-extension module was correctly loaded and initialised. The list of undefined
-symbols follows.
-
-=item XSLoader::load('Your::Module', $Your::Module::VERSION)
-
-B<(F)> You tried to invoke C<load()> without any argument. You must supply
-a module name, and optionally its version.
-
-=back
-
-
-=head1 LIMITATIONS
-
-To reduce the overhead as much as possible, only one possible location
-is checked to find the extension DLL (this location is where C<make install>
-would put the DLL). If not found, the search for the DLL is transparently
-delegated to C<DynaLoader>, which looks for the DLL along the C<@INC> list.
-
-In particular, this is applicable to the structure of C<@INC> used for testing
-not-yet-installed extensions. This means that running uninstalled extensions
-may have much more overhead than running the same extensions after
-C<make install>.
-
-
-=head1 BUGS
-
-Please report any bugs or feature requests via the perlbug(1) utility.
-
-
-=head1 SEE ALSO
-
-L<DynaLoader>
-
-
-=head1 AUTHORS
-
-Ilya Zakharevich originally extracted C<XSLoader> from C<DynaLoader>.
-
-CPAN version is currently maintained by SE<eacute>bastien Aperghis-Tramoni
-E<lt>sebastien@aperghis.netE<gt>
-
-Previous maintainer was Michael G Schwern <schwern@pobox.com>
-
-
-=head1 COPYRIGHT
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/attributes.pm b/Master/tlpkg/tlperl/lib/attributes.pm
deleted file mode 100644
index 714cb267218..00000000000
--- a/Master/tlpkg/tlperl/lib/attributes.pm
+++ /dev/null
@@ -1,418 +0,0 @@
-package attributes;
-
-our $VERSION = 0.06;
-
-@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 attributes }
-
-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 = 1;
- 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 ();
- my ($x,@y,%z);
- attributes::->import(__PACKAGE__, \$x, 'Bent');
- attributes::->import(__PACKAGE__, \@y, 'Bent');
- attributes::->import(__PACKAGE__, \%z, 'Bent');
- ($x,@y,%z) = 1;
-
-Yes, that's a lot of expansion.
-
-B<WARNING>: attribute declarations for variables are still evolving.
-The semantics and interfaces of such declarations could change 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 subroutine attributes happens at compile time.
-Variable attributes in C<our> declarations are also applied at compile time.
-However, C<my> variables get their attributes applied at run-time.
-This means that you have to I<reach> the run-time component of the C<my>
-before those attributes will get applied. For example:
-
- my $x : Bent = 42 if 0;
-
-will neither assign 42 to $x I<nor> will it apply the C<Bent> attribute
-to the variable.
-
-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
-
-B<5.005 threads only! The use of the "locked" attribute currently
-only makes sense if you are using the deprecated "Perl 5.005 threads"
-implementation of threads.>
-
-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
-
-For global variables there is C<unique> attribute: see L<perlfunc/our>.
-
-=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 is 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 ();
- attributes::->import(Canine => \$spot, "Watchful");
-
-=item 2.
-
-Code:
-
- package Felis;
- my $cat : Nervous;
-
-Effect:
-
- use attributes ();
- attributes::->import(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/Master/tlpkg/tlperl/lib/auto/B/B.bs b/Master/tlpkg/tlperl/lib/auto/B/B.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/B/B.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/B/B.dll b/Master/tlpkg/tlperl/lib/auto/B/B.dll
deleted file mode 100755
index 02ecf851c22..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/B/B.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/B/C/C.bs b/Master/tlpkg/tlperl/lib/auto/B/C/C.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/B/C/C.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/B/C/C.dll b/Master/tlpkg/tlperl/lib/auto/B/C/C.dll
deleted file mode 100755
index 0de9e53ba33..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/B/C/C.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Cwd/Cwd.bs b/Master/tlpkg/tlperl/lib/auto/Cwd/Cwd.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Cwd/Cwd.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Cwd/Cwd.dll b/Master/tlpkg/tlperl/lib/auto/Cwd/Cwd.dll
deleted file mode 100755
index 67f6d7baa57..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Cwd/Cwd.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Data/Dumper/Dumper.bs b/Master/tlpkg/tlperl/lib/auto/Data/Dumper/Dumper.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Data/Dumper/Dumper.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Data/Dumper/Dumper.dll b/Master/tlpkg/tlperl/lib/auto/Data/Dumper/Dumper.dll
deleted file mode 100755
index 9b99b3c3568..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Data/Dumper/Dumper.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Digest/MD5/MD5.bs b/Master/tlpkg/tlperl/lib/auto/Digest/MD5/MD5.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Digest/MD5/MD5.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Digest/MD5/MD5.dll b/Master/tlpkg/tlperl/lib/auto/Digest/MD5/MD5.dll
deleted file mode 100755
index 72ba4df2758..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Digest/MD5/MD5.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/DynaLoader/autosplit.ix b/Master/tlpkg/tlperl/lib/auto/DynaLoader/autosplit.ix
deleted file mode 100644
index d7605efa074..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/DynaLoader/autosplit.ix
+++ /dev/null
@@ -1,8 +0,0 @@
-# Index created by AutoSplit for ../LIB\DynaLoader.pm
-# (file acts as timestamp)
-package DynaLoader;
-sub dl_findfile ;
-sub dl_expandspec ;
-sub dl_find_symbol_anywhere
-;
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/DynaLoader/dl_expandspec.al b/Master/tlpkg/tlperl/lib/auto/DynaLoader/dl_expandspec.al
deleted file mode 100644
index 0bea19a3e4d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/DynaLoader/dl_expandspec.al
+++ /dev/null
@@ -1,34 +0,0 @@
-# NOTE: Derived from ../LIB\DynaLoader.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package DynaLoader;
-
-#line 377 "../LIB\DynaLoader.pm (autosplit into ..\lib\auto\DynaLoader\dl_expandspec.al)"
-sub dl_expandspec {
- my($spec) = @_;
- # Optional function invoked if DynaLoader.pm sets $do_expand.
- # Most systems do not require or use this function.
- # Some systems may implement it in the dl_*.xs file in which case
- # this autoload version will not be called but is harmless.
-
- # This function is designed to deal with systems which treat some
- # 'filenames' in a special way. For example VMS 'Logical Names'
- # (something like unix environment variables - but different).
- # This function should recognise such names and expand them into
- # full file paths.
- # Must return undef if $spec is invalid or file does not exist.
-
- my $file = $spec; # default output to input
-
- if ($Is_VMS) { # dl_expandspec should be defined in dl_vms.xs
- require Carp;
- Carp::croak("dl_expandspec: should be defined in XS file!\n");
- } else {
- return undef unless -f $file;
- }
- print STDERR "dl_expandspec($spec) => $file\n" if $dl_debug;
- $file;
-}
-
-# end of DynaLoader::dl_expandspec
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/DynaLoader/dl_find_symbol_anywhere.al b/Master/tlpkg/tlperl/lib/auto/DynaLoader/dl_find_symbol_anywhere.al
deleted file mode 100644
index 2232454ba69..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/DynaLoader/dl_find_symbol_anywhere.al
+++ /dev/null
@@ -1,19 +0,0 @@
-# NOTE: Derived from ../LIB\DynaLoader.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package DynaLoader;
-
-#line 403 "../LIB\DynaLoader.pm (autosplit into ..\lib\auto\DynaLoader\dl_find_symbol_anywhere.al)"
-sub dl_find_symbol_anywhere
-{
- my $sym = shift;
- my $libref;
- foreach $libref (@dl_librefs) {
- my $symref = dl_find_symbol($libref,$sym);
- return $symref if $symref;
- }
- return undef;
-}
-
-1;
-# end of DynaLoader::dl_find_symbol_anywhere
diff --git a/Master/tlpkg/tlperl/lib/auto/DynaLoader/dl_findfile.al b/Master/tlpkg/tlperl/lib/auto/DynaLoader/dl_findfile.al
deleted file mode 100644
index 9f8df39d00c..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/DynaLoader/dl_findfile.al
+++ /dev/null
@@ -1,115 +0,0 @@
-# NOTE: Derived from ../LIB\DynaLoader.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package DynaLoader;
-
-#line 269 "../LIB\DynaLoader.pm (autosplit into ..\lib\auto\DynaLoader\dl_findfile.al)"
-sub dl_findfile {
- # Read ext/DynaLoader/DynaLoader.doc for detailed information.
- # This function does not automatically consider the architecture
- # or the perl library auto directories.
- my (@args) = @_;
- my (@dirs, $dir); # which directories to search
- my (@found); # full paths to real files we have found
- my $dl_ext= 'dll'; # $Config::Config{'dlext'} suffix for perl extensions
- my $dl_so = 'dll'; # $Config::Config{'so'} suffix for shared libraries
-
- print STDERR "dl_findfile(@args)\n" if $dl_debug;
-
- # accumulate directories but process files as they appear
- arg: foreach(@args) {
- # Special fast case: full filepath requires no search
- if ($Is_VMS && m%[:>/\]]% && -f $_) {
- push(@found,dl_expandspec(VMS::Filespec::vmsify($_)));
- last arg unless wantarray;
- next;
- }
- elsif ($Is_MacOS) {
- if (m/:/ && -f $_) {
- push(@found,$_);
- last arg unless wantarray;
- }
- }
- elsif (m:/: && -f $_ && !$do_expand) {
- push(@found,$_);
- last arg unless wantarray;
- next;
- }
-
- # Deal with directories first:
- # Using a -L prefix is the preferred option (faster and more robust)
- if (m:^-L:) { s/^-L//; push(@dirs, $_); next; }
-
- if ($Is_MacOS) {
- # Otherwise we try to try to spot directories by a heuristic
- # (this is a more complicated issue than it first appears)
- if (m/:/ && -d $_) { push(@dirs, $_); next; }
- # Only files should get this far...
- my(@names, $name); # what filenames to look for
- s/^-l//;
- push(@names, $_);
- foreach $dir (@dirs, @dl_library_path) {
- next unless -d $dir;
- $dir =~ s/^([^:]+)$/:$1/;
- $dir =~ s/:$//;
- foreach $name (@names) {
- my($file) = "$dir:$name";
- print STDERR " checking in $dir for $name\n" if $dl_debug;
- if (-f $file) {
- push(@found, $file);
- next arg; # no need to look any further
- }
- }
- }
- next;
- }
-
- # Otherwise we try to try to spot directories by a heuristic
- # (this is a more complicated issue than it first appears)
- if (m:/: && -d $_) { push(@dirs, $_); next; }
-
- # VMS: we may be using native VMS directory syntax instead of
- # Unix emulation, so check this as well
- if ($Is_VMS && /[:>\]]/ && -d $_) { push(@dirs, $_); next; }
-
- # Only files should get this far...
- my(@names, $name); # what filenames to look for
- if (m:-l: ) { # convert -lname to appropriate library name
- s/-l//;
- push(@names,"lib$_.$dl_so");
- push(@names,"lib$_.a");
- } else { # Umm, a bare name. Try various alternatives:
- # these should be ordered with the most likely first
- push(@names,"$_.$dl_ext") unless m/\.$dl_ext$/o;
- push(@names,"$_.$dl_so") unless m/\.$dl_so$/o;
- push(@names,"lib$_.$dl_so") unless m:/:;
- push(@names,"$_.a") if !m/\.a$/ and $dlsrc eq "dl_dld.xs";
- push(@names, $_);
- }
- foreach $dir (@dirs, @dl_library_path) {
- next unless -d $dir;
- chop($dir = VMS::Filespec::unixpath($dir)) if $Is_VMS;
- foreach $name (@names) {
- my($file) = "$dir/$name";
- print STDERR " checking in $dir for $name\n" if $dl_debug;
- $file = ($do_expand) ? dl_expandspec($file) : (-f $file && $file);
- #$file = _check_file($file);
- if ($file) {
- push(@found, $file);
- next arg; # no need to look any further
- }
- }
- }
- }
- if ($dl_debug) {
- foreach(@dirs) {
- print STDERR " dl_findfile ignored non-existent directory: $_\n" unless -d $_;
- }
- print STDERR "dl_findfile found: @found\n";
- }
- return $found[0] unless wantarray;
- @found;
-}
-
-# end of DynaLoader::dl_findfile
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/Byte/Byte.bs b/Master/tlpkg/tlperl/lib/auto/Encode/Byte/Byte.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Encode/Byte/Byte.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/Byte/Byte.dll b/Master/tlpkg/tlperl/lib/auto/Encode/Byte/Byte.dll
deleted file mode 100755
index 88474ccb046..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Encode/Byte/Byte.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/Encode.bs b/Master/tlpkg/tlperl/lib/auto/Encode/Encode.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Encode/Encode.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/Encode.dll b/Master/tlpkg/tlperl/lib/auto/Encode/Encode.dll
deleted file mode 100755
index 69c8ebf8acb..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Encode/Encode.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/Symbol/Symbol.bs b/Master/tlpkg/tlperl/lib/auto/Encode/Symbol/Symbol.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Encode/Symbol/Symbol.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/Symbol/Symbol.dll b/Master/tlpkg/tlperl/lib/auto/Encode/Symbol/Symbol.dll
deleted file mode 100755
index 64df4071134..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Encode/Symbol/Symbol.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/Unicode/Unicode.bs b/Master/tlpkg/tlperl/lib/auto/Encode/Unicode/Unicode.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Encode/Unicode/Unicode.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/Unicode/Unicode.dll b/Master/tlpkg/tlperl/lib/auto/Encode/Unicode/Unicode.dll
deleted file mode 100755
index 71a757a6b64..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Encode/Unicode/Unicode.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Fcntl/Fcntl.bs b/Master/tlpkg/tlperl/lib/auto/Fcntl/Fcntl.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Fcntl/Fcntl.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Fcntl/Fcntl.dll b/Master/tlpkg/tlperl/lib/auto/Fcntl/Fcntl.dll
deleted file mode 100755
index d053a295a71..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Fcntl/Fcntl.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/File/Glob/Glob.bs b/Master/tlpkg/tlperl/lib/auto/File/Glob/Glob.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/File/Glob/Glob.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/File/Glob/Glob.dll b/Master/tlpkg/tlperl/lib/auto/File/Glob/Glob.dll
deleted file mode 100755
index 9cd3d822949..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/File/Glob/Glob.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/IO/IO.bs b/Master/tlpkg/tlperl/lib/auto/IO/IO.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/IO/IO.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/IO/IO.dll b/Master/tlpkg/tlperl/lib/auto/IO/IO.dll
deleted file mode 100755
index 86276c177d9..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/IO/IO.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/List/Util/Util.bs b/Master/tlpkg/tlperl/lib/auto/List/Util/Util.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/List/Util/Util.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/List/Util/Util.dll b/Master/tlpkg/tlperl/lib/auto/List/Util/Util.dll
deleted file mode 100755
index 238b1648bea..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/List/Util/Util.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Opcode/Opcode.bs b/Master/tlpkg/tlperl/lib/auto/Opcode/Opcode.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Opcode/Opcode.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Opcode/Opcode.dll b/Master/tlpkg/tlperl/lib/auto/Opcode/Opcode.dll
deleted file mode 100755
index d44ff0069b8..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Opcode/Opcode.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/POSIX.bs b/Master/tlpkg/tlperl/lib/auto/POSIX/POSIX.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/POSIX.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/POSIX.dll b/Master/tlpkg/tlperl/lib/auto/POSIX/POSIX.dll
deleted file mode 100755
index 49bdaee0917..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/POSIX.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/SigAction/flags.al b/Master/tlpkg/tlperl/lib/auto/POSIX/SigAction/flags.al
deleted file mode 100644
index 800cdd9a2b2..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/SigAction/flags.al
+++ /dev/null
@@ -1,9 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX::SigAction;
-
-#line 964 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\SigAction\flags.al)"
-sub flags { $_[0]->{FLAGS} = $_[1] if @_ > 1; $_[0]->{FLAGS} };
-# end of POSIX::SigAction::flags
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/SigAction/handler.al b/Master/tlpkg/tlperl/lib/auto/POSIX/SigAction/handler.al
deleted file mode 100644
index f2a3994bdf0..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/SigAction/handler.al
+++ /dev/null
@@ -1,11 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX::SigAction;
-
-#line 960 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\SigAction\handler.al)"
-package POSIX::SigAction;
-
-sub handler { $_[0]->{HANDLER} = $_[1] if @_ > 1; $_[0]->{HANDLER} };
-# end of POSIX::SigAction::handler
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/SigAction/mask.al b/Master/tlpkg/tlperl/lib/auto/POSIX/SigAction/mask.al
deleted file mode 100644
index e5c240eea1b..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/SigAction/mask.al
+++ /dev/null
@@ -1,9 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX::SigAction;
-
-#line 963 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\SigAction\mask.al)"
-sub mask { $_[0]->{MASK} = $_[1] if @_ > 1; $_[0]->{MASK} };
-# end of POSIX::SigAction::mask
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/SigAction/safe.al b/Master/tlpkg/tlperl/lib/auto/POSIX/SigAction/safe.al
deleted file mode 100644
index bb27883beae..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/SigAction/safe.al
+++ /dev/null
@@ -1,9 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX::SigAction;
-
-#line 965 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\SigAction\safe.al)"
-sub safe { $_[0]->{SAFE} = $_[1] if @_ > 1; $_[0]->{SAFE} };
-1;
-# end of POSIX::SigAction::safe
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/abs.al b/Master/tlpkg/tlperl/lib/auto/POSIX/abs.al
deleted file mode 100644
index 89999433d53..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/abs.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 398 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\abs.al)"
-sub abs {
- usage "abs(x)" if @_ != 1;
- CORE::abs($_[0]);
-}
-
-# end of POSIX::abs
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/alarm.al b/Master/tlpkg/tlperl/lib/auto/POSIX/alarm.al
deleted file mode 100644
index e1c864ed8e0..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/alarm.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 615 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\alarm.al)"
-sub alarm {
- usage "alarm(seconds)" if @_ != 1;
- CORE::alarm($_[0]);
-}
-
-# end of POSIX::alarm
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/assert.al b/Master/tlpkg/tlperl/lib/auto/POSIX/assert.al
deleted file mode 100644
index b3bce100406..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/assert.al
+++ /dev/null
@@ -1,15 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 80 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\assert.al)"
-sub assert {
- usage "assert(expr)" if @_ != 1;
- if (!$_[0]) {
- croak "Assertion failed";
- }
-}
-
-# end of POSIX::assert
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/atan2.al b/Master/tlpkg/tlperl/lib/auto/POSIX/atan2.al
deleted file mode 100644
index 9482e3cff23..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/atan2.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 145 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\atan2.al)"
-sub atan2 {
- usage "atan2(x,y)" if @_ != 2;
- CORE::atan2($_[0], $_[1]);
-}
-
-# end of POSIX::atan2
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/atexit.al b/Master/tlpkg/tlperl/lib/auto/POSIX/atexit.al
deleted file mode 100644
index b0fdf7e97cf..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/atexit.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 403 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\atexit.al)"
-sub atexit {
- unimpl "atexit() is C-specific: use END {} instead";
-}
-
-# end of POSIX::atexit
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/atof.al b/Master/tlpkg/tlperl/lib/auto/POSIX/atof.al
deleted file mode 100644
index fc1d1cef431..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/atof.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 407 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\atof.al)"
-sub atof {
- unimpl "atof() is C-specific, stopped";
-}
-
-# end of POSIX::atof
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/atoi.al b/Master/tlpkg/tlperl/lib/auto/POSIX/atoi.al
deleted file mode 100644
index 5eef246231b..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/atoi.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 411 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\atoi.al)"
-sub atoi {
- unimpl "atoi() is C-specific, stopped";
-}
-
-# end of POSIX::atoi
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/atol.al b/Master/tlpkg/tlperl/lib/auto/POSIX/atol.al
deleted file mode 100644
index e6fc6869a1a..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/atol.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 415 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\atol.al)"
-sub atol {
- unimpl "atol() is C-specific, stopped";
-}
-
-# end of POSIX::atol
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/autosplit.ix b/Master/tlpkg/tlperl/lib/auto/POSIX/autosplit.ix
deleted file mode 100644
index 8ecf455bb80..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/autosplit.ix
+++ /dev/null
@@ -1,159 +0,0 @@
-# Index created by AutoSplit for ..\..\lib\POSIX.pm
-# (file acts as timestamp)
-package POSIX;
-sub usage ;
-sub redef ;
-sub unimpl ;
-sub assert ;
-sub tolower ;
-sub toupper ;
-sub closedir ;
-sub opendir ;
-sub readdir ;
-sub rewinddir ;
-sub errno ;
-sub creat ;
-sub fcntl ;
-sub getgrgid ;
-sub getgrnam ;
-sub atan2 ;
-sub cos ;
-sub exp ;
-sub fabs ;
-sub log ;
-sub pow ;
-sub sin ;
-sub sqrt ;
-sub getpwnam ;
-sub getpwuid ;
-sub longjmp ;
-sub setjmp ;
-sub siglongjmp ;
-sub sigsetjmp ;
-sub kill ;
-sub raise ;
-sub offsetof ;
-sub clearerr ;
-sub fclose ;
-sub fdopen ;
-sub feof ;
-sub fgetc ;
-sub fgets ;
-sub fileno ;
-sub fopen ;
-sub fprintf ;
-sub fputc ;
-sub fputs ;
-sub fread ;
-sub freopen ;
-sub fscanf ;
-sub fseek ;
-sub fsync ;
-sub ferror ;
-sub fflush ;
-sub fgetpos ;
-sub fsetpos ;
-sub ftell ;
-sub fwrite ;
-sub getc ;
-sub getchar ;
-sub gets ;
-sub perror ;
-sub printf ;
-sub putc ;
-sub putchar ;
-sub puts ;
-sub remove ;
-sub rename ;
-sub rewind ;
-sub scanf ;
-sub sprintf ;
-sub sscanf ;
-sub tmpfile ;
-sub ungetc ;
-sub vfprintf ;
-sub vprintf ;
-sub vsprintf ;
-sub abs ;
-sub atexit ;
-sub atof ;
-sub atoi ;
-sub atol ;
-sub bsearch ;
-sub calloc ;
-sub div ;
-sub exit ;
-sub free ;
-sub getenv ;
-sub labs ;
-sub ldiv ;
-sub malloc ;
-sub qsort ;
-sub rand ;
-sub realloc ;
-sub srand ;
-sub system ;
-sub memchr ;
-sub memcmp ;
-sub memcpy ;
-sub memmove ;
-sub memset ;
-sub strcat ;
-sub strchr ;
-sub strcmp ;
-sub strcpy ;
-sub strcspn ;
-sub strerror ;
-sub strlen ;
-sub strncat ;
-sub strncmp ;
-sub strncpy ;
-sub strpbrk ;
-sub strrchr ;
-sub strspn ;
-sub strstr ;
-sub strtok ;
-sub chmod ;
-sub fstat ;
-sub mkdir ;
-sub stat ;
-sub umask ;
-sub wait ;
-sub waitpid ;
-sub gmtime ;
-sub localtime ;
-sub time ;
-sub alarm ;
-sub chdir ;
-sub chown ;
-sub execl ;
-sub execle ;
-sub execlp ;
-sub execv ;
-sub execve ;
-sub execvp ;
-sub fork ;
-sub getegid ;
-sub geteuid ;
-sub getgid ;
-sub getgroups ;
-sub getlogin ;
-sub getpgrp ;
-sub getpid ;
-sub getppid ;
-sub getuid ;
-sub isatty ;
-sub link ;
-sub rmdir ;
-sub setbuf ;
-sub setvbuf ;
-sub sleep ;
-sub unlink ;
-sub utime ;
-sub load_imports ;
-package POSIX::SigAction;
-sub handler ;
-sub mask ;
-sub flags ;
-sub safe ;
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/bsearch.al b/Master/tlpkg/tlperl/lib/auto/POSIX/bsearch.al
deleted file mode 100644
index 4acc59b5a7d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/bsearch.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 419 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\bsearch.al)"
-sub bsearch {
- unimpl "bsearch() not supplied";
-}
-
-# end of POSIX::bsearch
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/calloc.al b/Master/tlpkg/tlperl/lib/auto/POSIX/calloc.al
deleted file mode 100644
index 776029eff29..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/calloc.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 423 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\calloc.al)"
-sub calloc {
- unimpl "calloc() is C-specific, stopped";
-}
-
-# end of POSIX::calloc
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/chdir.al b/Master/tlpkg/tlperl/lib/auto/POSIX/chdir.al
deleted file mode 100644
index 1bddab213d6..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/chdir.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 620 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\chdir.al)"
-sub chdir {
- usage "chdir(directory)" if @_ != 1;
- CORE::chdir($_[0]);
-}
-
-# end of POSIX::chdir
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/chmod.al b/Master/tlpkg/tlperl/lib/auto/POSIX/chmod.al
deleted file mode 100644
index 8fc0d5a5e0b..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/chmod.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 561 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\chmod.al)"
-sub chmod {
- usage "chmod(mode, filename)" if @_ != 2;
- CORE::chmod($_[0], $_[1]);
-}
-
-# end of POSIX::chmod
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/chown.al b/Master/tlpkg/tlperl/lib/auto/POSIX/chown.al
deleted file mode 100644
index ca945bd855d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/chown.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 625 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\chown.al)"
-sub chown {
- usage "chown(uid, gid, filename)" if @_ != 3;
- CORE::chown($_[0], $_[1], $_[2]);
-}
-
-# end of POSIX::chown
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/clearerr.al b/Master/tlpkg/tlperl/lib/auto/POSIX/clearerr.al
deleted file mode 100644
index c360043abf9..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/clearerr.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 225 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\clearerr.al)"
-sub clearerr {
- redef "IO::Handle::clearerr()";
-}
-
-# end of POSIX::clearerr
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/closedir.al b/Master/tlpkg/tlperl/lib/auto/POSIX/closedir.al
deleted file mode 100644
index 16ae1cd4f76..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/closedir.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 97 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\closedir.al)"
-sub closedir {
- usage "closedir(dirhandle)" if @_ != 1;
- CORE::closedir($_[0]);
-}
-
-# end of POSIX::closedir
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/cos.al b/Master/tlpkg/tlperl/lib/auto/POSIX/cos.al
deleted file mode 100644
index ee01c091b27..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/cos.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 150 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\cos.al)"
-sub cos {
- usage "cos(x)" if @_ != 1;
- CORE::cos($_[0]);
-}
-
-# end of POSIX::cos
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/creat.al b/Master/tlpkg/tlperl/lib/auto/POSIX/creat.al
deleted file mode 100644
index 2d1cfb7d55d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/creat.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 125 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\creat.al)"
-sub creat {
- usage "creat(filename, mode)" if @_ != 2;
- &open($_[0], &O_WRONLY | &O_CREAT | &O_TRUNC, $_[1]);
-}
-
-# end of POSIX::creat
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/div.al b/Master/tlpkg/tlperl/lib/auto/POSIX/div.al
deleted file mode 100644
index 4c751314da0..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/div.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 427 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\div.al)"
-sub div {
- unimpl "div() is C-specific, use /, % and int instead";
-}
-
-# end of POSIX::div
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/errno.al b/Master/tlpkg/tlperl/lib/auto/POSIX/errno.al
deleted file mode 100644
index c57abdc4c3b..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/errno.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 120 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\errno.al)"
-sub errno {
- usage "errno()" if @_ != 0;
- $! + 0;
-}
-
-# end of POSIX::errno
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/execl.al b/Master/tlpkg/tlperl/lib/auto/POSIX/execl.al
deleted file mode 100644
index 3ffc4f5a671..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/execl.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 630 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\execl.al)"
-sub execl {
- unimpl "execl() is C-specific, stopped";
-}
-
-# end of POSIX::execl
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/execle.al b/Master/tlpkg/tlperl/lib/auto/POSIX/execle.al
deleted file mode 100644
index ec7e12da909..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/execle.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 634 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\execle.al)"
-sub execle {
- unimpl "execle() is C-specific, stopped";
-}
-
-# end of POSIX::execle
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/execlp.al b/Master/tlpkg/tlperl/lib/auto/POSIX/execlp.al
deleted file mode 100644
index a9e32524839..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/execlp.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 638 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\execlp.al)"
-sub execlp {
- unimpl "execlp() is C-specific, stopped";
-}
-
-# end of POSIX::execlp
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/execv.al b/Master/tlpkg/tlperl/lib/auto/POSIX/execv.al
deleted file mode 100644
index 1e6f20bba77..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/execv.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 642 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\execv.al)"
-sub execv {
- unimpl "execv() is C-specific, stopped";
-}
-
-# end of POSIX::execv
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/execve.al b/Master/tlpkg/tlperl/lib/auto/POSIX/execve.al
deleted file mode 100644
index ae23c53ea77..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/execve.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 646 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\execve.al)"
-sub execve {
- unimpl "execve() is C-specific, stopped";
-}
-
-# end of POSIX::execve
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/execvp.al b/Master/tlpkg/tlperl/lib/auto/POSIX/execvp.al
deleted file mode 100644
index 88d5dd6764e..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/execvp.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 650 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\execvp.al)"
-sub execvp {
- unimpl "execvp() is C-specific, stopped";
-}
-
-# end of POSIX::execvp
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/exit.al b/Master/tlpkg/tlperl/lib/auto/POSIX/exit.al
deleted file mode 100644
index d7806b3f4db..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/exit.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 431 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\exit.al)"
-sub exit {
- usage "exit(status)" if @_ != 1;
- CORE::exit($_[0]);
-}
-
-# end of POSIX::exit
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/exp.al b/Master/tlpkg/tlperl/lib/auto/POSIX/exp.al
deleted file mode 100644
index 251dc740eaf..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/exp.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 155 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\exp.al)"
-sub exp {
- usage "exp(x)" if @_ != 1;
- CORE::exp($_[0]);
-}
-
-# end of POSIX::exp
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/fabs.al b/Master/tlpkg/tlperl/lib/auto/POSIX/fabs.al
deleted file mode 100644
index ebe714729c2..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/fabs.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 160 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fabs.al)"
-sub fabs {
- usage "fabs(x)" if @_ != 1;
- CORE::abs($_[0]);
-}
-
-# end of POSIX::fabs
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/fclose.al b/Master/tlpkg/tlperl/lib/auto/POSIX/fclose.al
deleted file mode 100644
index f662ef7cda6..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/fclose.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 229 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fclose.al)"
-sub fclose {
- redef "IO::Handle::close()";
-}
-
-# end of POSIX::fclose
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/fcntl.al b/Master/tlpkg/tlperl/lib/auto/POSIX/fcntl.al
deleted file mode 100644
index bf6ec04fb4c..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/fcntl.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 130 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fcntl.al)"
-sub fcntl {
- usage "fcntl(filehandle, cmd, arg)" if @_ != 3;
- CORE::fcntl($_[0], $_[1], $_[2]);
-}
-
-# end of POSIX::fcntl
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/fdopen.al b/Master/tlpkg/tlperl/lib/auto/POSIX/fdopen.al
deleted file mode 100644
index 392f8e27fbf..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/fdopen.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 233 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fdopen.al)"
-sub fdopen {
- redef "IO::Handle::new_from_fd()";
-}
-
-# end of POSIX::fdopen
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/feof.al b/Master/tlpkg/tlperl/lib/auto/POSIX/feof.al
deleted file mode 100644
index 4c8b5ea37af..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/feof.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 237 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\feof.al)"
-sub feof {
- redef "IO::Handle::eof()";
-}
-
-# end of POSIX::feof
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/ferror.al b/Master/tlpkg/tlperl/lib/auto/POSIX/ferror.al
deleted file mode 100644
index 6ec8cccb11b..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/ferror.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 289 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\ferror.al)"
-sub ferror {
- redef "IO::Handle::error()";
-}
-
-# end of POSIX::ferror
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/fflush.al b/Master/tlpkg/tlperl/lib/auto/POSIX/fflush.al
deleted file mode 100644
index 0ba6d1416f0..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/fflush.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 293 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fflush.al)"
-sub fflush {
- redef "IO::Handle::flush()";
-}
-
-# end of POSIX::fflush
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/fgetc.al b/Master/tlpkg/tlperl/lib/auto/POSIX/fgetc.al
deleted file mode 100644
index f89a6f86334..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/fgetc.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 241 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fgetc.al)"
-sub fgetc {
- redef "IO::Handle::getc()";
-}
-
-# end of POSIX::fgetc
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/fgetpos.al b/Master/tlpkg/tlperl/lib/auto/POSIX/fgetpos.al
deleted file mode 100644
index 7583bbf3da6..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/fgetpos.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 297 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fgetpos.al)"
-sub fgetpos {
- redef "IO::Seekable::getpos()";
-}
-
-# end of POSIX::fgetpos
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/fgets.al b/Master/tlpkg/tlperl/lib/auto/POSIX/fgets.al
deleted file mode 100644
index 7edcffdd192..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/fgets.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 245 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fgets.al)"
-sub fgets {
- redef "IO::Handle::gets()";
-}
-
-# end of POSIX::fgets
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/fileno.al b/Master/tlpkg/tlperl/lib/auto/POSIX/fileno.al
deleted file mode 100644
index 45f0908329c..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/fileno.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 249 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fileno.al)"
-sub fileno {
- redef "IO::Handle::fileno()";
-}
-
-# end of POSIX::fileno
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/fopen.al b/Master/tlpkg/tlperl/lib/auto/POSIX/fopen.al
deleted file mode 100644
index 795f272b2bb..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/fopen.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 253 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fopen.al)"
-sub fopen {
- redef "IO::File::open()";
-}
-
-# end of POSIX::fopen
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/fork.al b/Master/tlpkg/tlperl/lib/auto/POSIX/fork.al
deleted file mode 100644
index cb0ee7aaf13..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/fork.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 654 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fork.al)"
-sub fork {
- usage "fork()" if @_ != 0;
- CORE::fork;
-}
-
-# end of POSIX::fork
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/fprintf.al b/Master/tlpkg/tlperl/lib/auto/POSIX/fprintf.al
deleted file mode 100644
index 6ac5cb6a065..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/fprintf.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 257 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fprintf.al)"
-sub fprintf {
- unimpl "fprintf() is C-specific--use printf instead";
-}
-
-# end of POSIX::fprintf
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/fputc.al b/Master/tlpkg/tlperl/lib/auto/POSIX/fputc.al
deleted file mode 100644
index 71a3b2307bb..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/fputc.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 261 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fputc.al)"
-sub fputc {
- unimpl "fputc() is C-specific--use print instead";
-}
-
-# end of POSIX::fputc
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/fputs.al b/Master/tlpkg/tlperl/lib/auto/POSIX/fputs.al
deleted file mode 100644
index 5cc9cdc175b..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/fputs.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 265 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fputs.al)"
-sub fputs {
- unimpl "fputs() is C-specific--use print instead";
-}
-
-# end of POSIX::fputs
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/fread.al b/Master/tlpkg/tlperl/lib/auto/POSIX/fread.al
deleted file mode 100644
index a2f731a784c..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/fread.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 269 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fread.al)"
-sub fread {
- unimpl "fread() is C-specific--use read instead";
-}
-
-# end of POSIX::fread
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/free.al b/Master/tlpkg/tlperl/lib/auto/POSIX/free.al
deleted file mode 100644
index 71eff3059c3..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/free.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 436 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\free.al)"
-sub free {
- unimpl "free() is C-specific, stopped";
-}
-
-# end of POSIX::free
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/freopen.al b/Master/tlpkg/tlperl/lib/auto/POSIX/freopen.al
deleted file mode 100644
index 31e08a2a889..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/freopen.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 273 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\freopen.al)"
-sub freopen {
- unimpl "freopen() is C-specific--use open instead";
-}
-
-# end of POSIX::freopen
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/fscanf.al b/Master/tlpkg/tlperl/lib/auto/POSIX/fscanf.al
deleted file mode 100644
index c5a5e08217b..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/fscanf.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 277 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fscanf.al)"
-sub fscanf {
- unimpl "fscanf() is C-specific--use <> and regular expressions instead";
-}
-
-# end of POSIX::fscanf
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/fseek.al b/Master/tlpkg/tlperl/lib/auto/POSIX/fseek.al
deleted file mode 100644
index 0a591cca259..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/fseek.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 281 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fseek.al)"
-sub fseek {
- redef "IO::Seekable::seek()";
-}
-
-# end of POSIX::fseek
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/fsetpos.al b/Master/tlpkg/tlperl/lib/auto/POSIX/fsetpos.al
deleted file mode 100644
index 311027b54ea..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/fsetpos.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 301 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fsetpos.al)"
-sub fsetpos {
- redef "IO::Seekable::setpos()";
-}
-
-# end of POSIX::fsetpos
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/fstat.al b/Master/tlpkg/tlperl/lib/auto/POSIX/fstat.al
deleted file mode 100644
index 084979716d0..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/fstat.al
+++ /dev/null
@@ -1,17 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 566 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fstat.al)"
-sub fstat {
- usage "fstat(fd)" if @_ != 1;
- local *TMP;
- CORE::open(TMP, "<&$_[0]"); # Gross.
- my @l = CORE::stat(TMP);
- CORE::close(TMP);
- @l;
-}
-
-# end of POSIX::fstat
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/fsync.al b/Master/tlpkg/tlperl/lib/auto/POSIX/fsync.al
deleted file mode 100644
index c8038d1d350..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/fsync.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 285 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fsync.al)"
-sub fsync {
- redef "IO::Handle::sync()";
-}
-
-# end of POSIX::fsync
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/ftell.al b/Master/tlpkg/tlperl/lib/auto/POSIX/ftell.al
deleted file mode 100644
index 1d3490c6033..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/ftell.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 305 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\ftell.al)"
-sub ftell {
- redef "IO::Seekable::tell()";
-}
-
-# end of POSIX::ftell
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/fwrite.al b/Master/tlpkg/tlperl/lib/auto/POSIX/fwrite.al
deleted file mode 100644
index 1099587edbd..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/fwrite.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 309 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fwrite.al)"
-sub fwrite {
- unimpl "fwrite() is C-specific--use print instead";
-}
-
-# end of POSIX::fwrite
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/getc.al b/Master/tlpkg/tlperl/lib/auto/POSIX/getc.al
deleted file mode 100644
index 2ccc28cdf43..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/getc.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 313 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getc.al)"
-sub getc {
- usage "getc(handle)" if @_ != 1;
- CORE::getc($_[0]);
-}
-
-# end of POSIX::getc
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/getchar.al b/Master/tlpkg/tlperl/lib/auto/POSIX/getchar.al
deleted file mode 100644
index 930386f6827..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/getchar.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 318 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getchar.al)"
-sub getchar {
- usage "getchar()" if @_ != 0;
- CORE::getc(STDIN);
-}
-
-# end of POSIX::getchar
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/getegid.al b/Master/tlpkg/tlperl/lib/auto/POSIX/getegid.al
deleted file mode 100644
index 61c0942023f..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/getegid.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 659 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getegid.al)"
-sub getegid {
- usage "getegid()" if @_ != 0;
- $) + 0;
-}
-
-# end of POSIX::getegid
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/getenv.al b/Master/tlpkg/tlperl/lib/auto/POSIX/getenv.al
deleted file mode 100644
index c6fec0ca34b..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/getenv.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 440 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getenv.al)"
-sub getenv {
- usage "getenv(name)" if @_ != 1;
- $ENV{$_[0]};
-}
-
-# end of POSIX::getenv
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/geteuid.al b/Master/tlpkg/tlperl/lib/auto/POSIX/geteuid.al
deleted file mode 100644
index 710491ebcc3..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/geteuid.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 664 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\geteuid.al)"
-sub geteuid {
- usage "geteuid()" if @_ != 0;
- $> + 0;
-}
-
-# end of POSIX::geteuid
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/getgid.al b/Master/tlpkg/tlperl/lib/auto/POSIX/getgid.al
deleted file mode 100644
index 7cd6164fb43..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/getgid.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 669 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getgid.al)"
-sub getgid {
- usage "getgid()" if @_ != 0;
- $( + 0;
-}
-
-# end of POSIX::getgid
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/getgrgid.al b/Master/tlpkg/tlperl/lib/auto/POSIX/getgrgid.al
deleted file mode 100644
index 550e75a69f3..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/getgrgid.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 135 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getgrgid.al)"
-sub getgrgid {
- usage "getgrgid(gid)" if @_ != 1;
- CORE::getgrgid($_[0]);
-}
-
-# end of POSIX::getgrgid
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/getgrnam.al b/Master/tlpkg/tlperl/lib/auto/POSIX/getgrnam.al
deleted file mode 100644
index a480731586c..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/getgrnam.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 140 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getgrnam.al)"
-sub getgrnam {
- usage "getgrnam(name)" if @_ != 1;
- CORE::getgrnam($_[0]);
-}
-
-# end of POSIX::getgrnam
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/getgroups.al b/Master/tlpkg/tlperl/lib/auto/POSIX/getgroups.al
deleted file mode 100644
index 5fd0d9d3aea..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/getgroups.al
+++ /dev/null
@@ -1,14 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 674 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getgroups.al)"
-sub getgroups {
- usage "getgroups()" if @_ != 0;
- my %seen;
- grep(!$seen{$_}++, split(' ', $) ));
-}
-
-# end of POSIX::getgroups
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/getlogin.al b/Master/tlpkg/tlperl/lib/auto/POSIX/getlogin.al
deleted file mode 100644
index 55bcb4ee9fb..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/getlogin.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 680 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getlogin.al)"
-sub getlogin {
- usage "getlogin()" if @_ != 0;
- CORE::getlogin();
-}
-
-# end of POSIX::getlogin
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/getpgrp.al b/Master/tlpkg/tlperl/lib/auto/POSIX/getpgrp.al
deleted file mode 100644
index ef0425b7b7f..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/getpgrp.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 685 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getpgrp.al)"
-sub getpgrp {
- usage "getpgrp()" if @_ != 0;
- CORE::getpgrp;
-}
-
-# end of POSIX::getpgrp
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/getpid.al b/Master/tlpkg/tlperl/lib/auto/POSIX/getpid.al
deleted file mode 100644
index 9aeaa25b63e..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/getpid.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 690 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getpid.al)"
-sub getpid {
- usage "getpid()" if @_ != 0;
- $$;
-}
-
-# end of POSIX::getpid
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/getppid.al b/Master/tlpkg/tlperl/lib/auto/POSIX/getppid.al
deleted file mode 100644
index 4951623eb04..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/getppid.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 695 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getppid.al)"
-sub getppid {
- usage "getppid()" if @_ != 0;
- CORE::getppid;
-}
-
-# end of POSIX::getppid
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/getpwnam.al b/Master/tlpkg/tlperl/lib/auto/POSIX/getpwnam.al
deleted file mode 100644
index 296b87f28ef..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/getpwnam.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 185 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getpwnam.al)"
-sub getpwnam {
- usage "getpwnam(name)" if @_ != 1;
- CORE::getpwnam($_[0]);
-}
-
-# end of POSIX::getpwnam
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/getpwuid.al b/Master/tlpkg/tlperl/lib/auto/POSIX/getpwuid.al
deleted file mode 100644
index 5616a6daa2c..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/getpwuid.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 190 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getpwuid.al)"
-sub getpwuid {
- usage "getpwuid(uid)" if @_ != 1;
- CORE::getpwuid($_[0]);
-}
-
-# end of POSIX::getpwuid
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/gets.al b/Master/tlpkg/tlperl/lib/auto/POSIX/gets.al
deleted file mode 100644
index 34667890e6e..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/gets.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 323 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\gets.al)"
-sub gets {
- usage "gets()" if @_ != 0;
- scalar <STDIN>;
-}
-
-# end of POSIX::gets
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/getuid.al b/Master/tlpkg/tlperl/lib/auto/POSIX/getuid.al
deleted file mode 100644
index 5a326ec67f0..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/getuid.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 700 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getuid.al)"
-sub getuid {
- usage "getuid()" if @_ != 0;
- $<;
-}
-
-# end of POSIX::getuid
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/gmtime.al b/Master/tlpkg/tlperl/lib/auto/POSIX/gmtime.al
deleted file mode 100644
index 6bbf4fc6fef..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/gmtime.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 600 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\gmtime.al)"
-sub gmtime {
- usage "gmtime(time)" if @_ != 1;
- CORE::gmtime($_[0]);
-}
-
-# end of POSIX::gmtime
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/isatty.al b/Master/tlpkg/tlperl/lib/auto/POSIX/isatty.al
deleted file mode 100644
index 9ab71b3c2a0..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/isatty.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 705 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\isatty.al)"
-sub isatty {
- usage "isatty(filehandle)" if @_ != 1;
- -t $_[0];
-}
-
-# end of POSIX::isatty
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/kill.al b/Master/tlpkg/tlperl/lib/auto/POSIX/kill.al
deleted file mode 100644
index 12f5276f5f8..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/kill.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 211 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\kill.al)"
-sub kill {
- usage "kill(pid, sig)" if @_ != 2;
- CORE::kill $_[1], $_[0];
-}
-
-# end of POSIX::kill
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/labs.al b/Master/tlpkg/tlperl/lib/auto/POSIX/labs.al
deleted file mode 100644
index 581a1897d73..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/labs.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 445 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\labs.al)"
-sub labs {
- unimpl "labs() is C-specific, use abs instead";
-}
-
-# end of POSIX::labs
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/ldiv.al b/Master/tlpkg/tlperl/lib/auto/POSIX/ldiv.al
deleted file mode 100644
index 1b704c1fad4..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/ldiv.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 449 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\ldiv.al)"
-sub ldiv {
- unimpl "ldiv() is C-specific, use /, % and int instead";
-}
-
-# end of POSIX::ldiv
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/link.al b/Master/tlpkg/tlperl/lib/auto/POSIX/link.al
deleted file mode 100644
index e78401a321d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/link.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 710 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\link.al)"
-sub link {
- usage "link(oldfilename, newfilename)" if @_ != 2;
- CORE::link($_[0], $_[1]);
-}
-
-# end of POSIX::link
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/load_imports.al b/Master/tlpkg/tlperl/lib/auto/POSIX/load_imports.al
deleted file mode 100644
index 6c2ff0ad2ac..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/load_imports.al
+++ /dev/null
@@ -1,225 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 743 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\load_imports.al)"
-sub load_imports {
-%EXPORT_TAGS = (
-
- assert_h => [qw(assert NDEBUG)],
-
- ctype_h => [qw(isalnum isalpha iscntrl isdigit isgraph islower
- isprint ispunct isspace isupper isxdigit tolower toupper)],
-
- dirent_h => [],
-
- errno_h => [qw(E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT
- EAGAIN EALREADY EBADF EBUSY ECHILD ECONNABORTED
- ECONNREFUSED ECONNRESET EDEADLK EDESTADDRREQ EDOM EDQUOT
- EEXIST EFAULT EFBIG EHOSTDOWN EHOSTUNREACH EINPROGRESS
- EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK
- EMSGSIZE ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH
- ENFILE ENOBUFS ENODEV ENOENT ENOEXEC ENOLCK ENOMEM
- ENOPROTOOPT ENOSPC ENOSYS ENOTBLK ENOTCONN ENOTDIR
- ENOTEMPTY ENOTSOCK ENOTTY ENXIO EOPNOTSUPP EPERM
- EPFNOSUPPORT EPIPE EPROCLIM EPROTONOSUPPORT EPROTOTYPE
- ERANGE EREMOTE ERESTART EROFS ESHUTDOWN ESOCKTNOSUPPORT
- ESPIPE ESRCH ESTALE ETIMEDOUT ETOOMANYREFS ETXTBSY
- EUSERS EWOULDBLOCK EXDEV errno)],
-
- fcntl_h => [qw(FD_CLOEXEC F_DUPFD F_GETFD F_GETFL F_GETLK F_RDLCK
- F_SETFD F_SETFL F_SETLK F_SETLKW F_UNLCK F_WRLCK
- O_ACCMODE O_APPEND O_CREAT O_EXCL O_NOCTTY O_NONBLOCK
- O_RDONLY O_RDWR O_TRUNC O_WRONLY
- creat
- SEEK_CUR SEEK_END SEEK_SET
- S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU
- S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG S_ISUID
- S_IWGRP S_IWOTH S_IWUSR)],
-
- float_h => [qw(DBL_DIG DBL_EPSILON DBL_MANT_DIG
- DBL_MAX DBL_MAX_10_EXP DBL_MAX_EXP
- DBL_MIN DBL_MIN_10_EXP DBL_MIN_EXP
- FLT_DIG FLT_EPSILON FLT_MANT_DIG
- FLT_MAX FLT_MAX_10_EXP FLT_MAX_EXP
- FLT_MIN FLT_MIN_10_EXP FLT_MIN_EXP
- FLT_RADIX FLT_ROUNDS
- LDBL_DIG LDBL_EPSILON LDBL_MANT_DIG
- LDBL_MAX LDBL_MAX_10_EXP LDBL_MAX_EXP
- LDBL_MIN LDBL_MIN_10_EXP LDBL_MIN_EXP)],
-
- grp_h => [],
-
- limits_h => [qw( ARG_MAX CHAR_BIT CHAR_MAX CHAR_MIN CHILD_MAX
- INT_MAX INT_MIN LINK_MAX LONG_MAX LONG_MIN MAX_CANON
- MAX_INPUT MB_LEN_MAX NAME_MAX NGROUPS_MAX OPEN_MAX
- PATH_MAX PIPE_BUF SCHAR_MAX SCHAR_MIN SHRT_MAX SHRT_MIN
- SSIZE_MAX STREAM_MAX TZNAME_MAX UCHAR_MAX UINT_MAX
- ULONG_MAX USHRT_MAX _POSIX_ARG_MAX _POSIX_CHILD_MAX
- _POSIX_LINK_MAX _POSIX_MAX_CANON _POSIX_MAX_INPUT
- _POSIX_NAME_MAX _POSIX_NGROUPS_MAX _POSIX_OPEN_MAX
- _POSIX_PATH_MAX _POSIX_PIPE_BUF _POSIX_SSIZE_MAX
- _POSIX_STREAM_MAX _POSIX_TZNAME_MAX)],
-
- locale_h => [qw(LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES
- LC_MONETARY LC_NUMERIC LC_TIME NULL
- localeconv setlocale)],
-
- math_h => [qw(HUGE_VAL acos asin atan ceil cosh fabs floor fmod
- frexp ldexp log10 modf pow sinh tan tanh)],
-
- pwd_h => [],
-
- setjmp_h => [qw(longjmp setjmp siglongjmp sigsetjmp)],
-
- signal_h => [qw(SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK
- SA_RESETHAND SA_RESTART SA_SIGINFO SIGABRT SIGALRM
- SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL
- SIGPIPE SIGQUIT SIGSEGV SIGSTOP SIGTERM SIGTSTP SIGTTIN
- SIGTTOU SIGUSR1 SIGUSR2 SIG_BLOCK SIG_DFL SIG_ERR
- SIG_IGN SIG_SETMASK SIG_UNBLOCK raise sigaction signal
- sigpending sigprocmask sigsuspend)],
-
- stdarg_h => [],
-
- stddef_h => [qw(NULL offsetof)],
-
- stdio_h => [qw(BUFSIZ EOF FILENAME_MAX L_ctermid L_cuserid
- L_tmpname NULL SEEK_CUR SEEK_END SEEK_SET
- STREAM_MAX TMP_MAX stderr stdin stdout
- clearerr fclose fdopen feof ferror fflush fgetc fgetpos
- fgets fopen fprintf fputc fputs fread freopen
- fscanf fseek fsetpos ftell fwrite getchar gets
- perror putc putchar puts remove rewind
- scanf setbuf setvbuf sscanf tmpfile tmpnam
- ungetc vfprintf vprintf vsprintf)],
-
- stdlib_h => [qw(EXIT_FAILURE EXIT_SUCCESS MB_CUR_MAX NULL RAND_MAX
- abort atexit atof atoi atol bsearch calloc div
- free getenv labs ldiv malloc mblen mbstowcs mbtowc
- qsort realloc strtod strtol strtoul wcstombs wctomb)],
-
- string_h => [qw(NULL memchr memcmp memcpy memmove memset strcat
- strchr strcmp strcoll strcpy strcspn strerror strlen
- strncat strncmp strncpy strpbrk strrchr strspn strstr
- strtok strxfrm)],
-
- sys_stat_h => [qw(S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU
- S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG
- S_ISUID S_IWGRP S_IWOTH S_IWUSR S_IXGRP S_IXOTH S_IXUSR
- fstat mkfifo)],
-
- sys_times_h => [],
-
- sys_types_h => [],
-
- sys_utsname_h => [qw(uname)],
-
- sys_wait_h => [qw(WEXITSTATUS WIFEXITED WIFSIGNALED WIFSTOPPED
- WNOHANG WSTOPSIG WTERMSIG WUNTRACED)],
-
- termios_h => [qw( B0 B110 B1200 B134 B150 B1800 B19200 B200 B2400
- B300 B38400 B4800 B50 B600 B75 B9600 BRKINT CLOCAL
- CREAD CS5 CS6 CS7 CS8 CSIZE CSTOPB ECHO ECHOE ECHOK
- ECHONL HUPCL ICANON ICRNL IEXTEN IGNBRK IGNCR IGNPAR
- INLCR INPCK ISIG ISTRIP IXOFF IXON NCCS NOFLSH OPOST
- PARENB PARMRK PARODD TCIFLUSH TCIOFF TCIOFLUSH TCION
- TCOFLUSH TCOOFF TCOON TCSADRAIN TCSAFLUSH TCSANOW
- TOSTOP VEOF VEOL VERASE VINTR VKILL VMIN VQUIT VSTART
- VSTOP VSUSP VTIME
- cfgetispeed cfgetospeed cfsetispeed cfsetospeed tcdrain
- tcflow tcflush tcgetattr tcsendbreak tcsetattr )],
-
- time_h => [qw(CLK_TCK CLOCKS_PER_SEC NULL asctime clock ctime
- difftime mktime strftime tzset tzname)],
-
- unistd_h => [qw(F_OK NULL R_OK SEEK_CUR SEEK_END SEEK_SET
- STDERR_FILENO STDIN_FILENO STDOUT_FILENO W_OK X_OK
- _PC_CHOWN_RESTRICTED _PC_LINK_MAX _PC_MAX_CANON
- _PC_MAX_INPUT _PC_NAME_MAX _PC_NO_TRUNC _PC_PATH_MAX
- _PC_PIPE_BUF _PC_VDISABLE _POSIX_CHOWN_RESTRICTED
- _POSIX_JOB_CONTROL _POSIX_NO_TRUNC _POSIX_SAVED_IDS
- _POSIX_VDISABLE _POSIX_VERSION _SC_ARG_MAX
- _SC_CHILD_MAX _SC_CLK_TCK _SC_JOB_CONTROL
- _SC_NGROUPS_MAX _SC_OPEN_MAX _SC_PAGESIZE _SC_SAVED_IDS
- _SC_STREAM_MAX _SC_TZNAME_MAX _SC_VERSION
- _exit access ctermid cuserid
- dup2 dup execl execle execlp execv execve execvp
- fpathconf fsync getcwd getegid geteuid getgid getgroups
- getpid getuid isatty lseek pathconf pause setgid setpgid
- setsid setuid sysconf tcgetpgrp tcsetpgrp ttyname)],
-
- utime_h => [],
-
-);
-
-# Exporter::export_tags();
-for (values %EXPORT_TAGS) {
- push @EXPORT, @$_;
-}
-
-@EXPORT_OK = qw(
- abs
- alarm
- atan2
- chdir
- chmod
- chown
- close
- closedir
- cos
- exit
- exp
- fcntl
- fileno
- fork
- getc
- getgrgid
- getgrnam
- getlogin
- getpgrp
- getppid
- getpwnam
- getpwuid
- gmtime
- isatty
- kill
- lchown
- link
- localtime
- log
- mkdir
- nice
- open
- opendir
- pipe
- printf
- rand
- read
- readdir
- rename
- rewinddir
- rmdir
- sin
- sleep
- sprintf
- sqrt
- srand
- stat
- system
- time
- times
- umask
- unlink
- utime
- wait
- waitpid
- write
-);
-
-require Exporter;
-}
-
-# end of POSIX::SigAction::load_imports
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/localtime.al b/Master/tlpkg/tlperl/lib/auto/POSIX/localtime.al
deleted file mode 100644
index dde4f5769ef..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/localtime.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 605 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\localtime.al)"
-sub localtime {
- usage "localtime(time)" if @_ != 1;
- CORE::localtime($_[0]);
-}
-
-# end of POSIX::localtime
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/log.al b/Master/tlpkg/tlperl/lib/auto/POSIX/log.al
deleted file mode 100644
index 6e400f25866..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/log.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 165 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\log.al)"
-sub log {
- usage "log(x)" if @_ != 1;
- CORE::log($_[0]);
-}
-
-# end of POSIX::log
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/longjmp.al b/Master/tlpkg/tlperl/lib/auto/POSIX/longjmp.al
deleted file mode 100644
index f3dd3263086..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/longjmp.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 195 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\longjmp.al)"
-sub longjmp {
- unimpl "longjmp() is C-specific: use die instead";
-}
-
-# end of POSIX::longjmp
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/malloc.al b/Master/tlpkg/tlperl/lib/auto/POSIX/malloc.al
deleted file mode 100644
index 2f50c6da70a..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/malloc.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 453 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\malloc.al)"
-sub malloc {
- unimpl "malloc() is C-specific, stopped";
-}
-
-# end of POSIX::malloc
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/memchr.al b/Master/tlpkg/tlperl/lib/auto/POSIX/memchr.al
deleted file mode 100644
index bcdfac6200b..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/memchr.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 478 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\memchr.al)"
-sub memchr {
- unimpl "memchr() is C-specific, use index() instead";
-}
-
-# end of POSIX::memchr
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/memcmp.al b/Master/tlpkg/tlperl/lib/auto/POSIX/memcmp.al
deleted file mode 100644
index e01575259d4..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/memcmp.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 482 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\memcmp.al)"
-sub memcmp {
- unimpl "memcmp() is C-specific, use eq instead";
-}
-
-# end of POSIX::memcmp
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/memcpy.al b/Master/tlpkg/tlperl/lib/auto/POSIX/memcpy.al
deleted file mode 100644
index b096a059be9..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/memcpy.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 486 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\memcpy.al)"
-sub memcpy {
- unimpl "memcpy() is C-specific, use = instead";
-}
-
-# end of POSIX::memcpy
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/memmove.al b/Master/tlpkg/tlperl/lib/auto/POSIX/memmove.al
deleted file mode 100644
index dd29e805f70..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/memmove.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 490 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\memmove.al)"
-sub memmove {
- unimpl "memmove() is C-specific, use = instead";
-}
-
-# end of POSIX::memmove
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/memset.al b/Master/tlpkg/tlperl/lib/auto/POSIX/memset.al
deleted file mode 100644
index 407980dd938..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/memset.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 494 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\memset.al)"
-sub memset {
- unimpl "memset() is C-specific, use x instead";
-}
-
-# end of POSIX::memset
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/mkdir.al b/Master/tlpkg/tlperl/lib/auto/POSIX/mkdir.al
deleted file mode 100644
index edb004a11e8..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/mkdir.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 575 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\mkdir.al)"
-sub mkdir {
- usage "mkdir(directoryname, mode)" if @_ != 2;
- CORE::mkdir($_[0], $_[1]);
-}
-
-# end of POSIX::mkdir
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/offsetof.al b/Master/tlpkg/tlperl/lib/auto/POSIX/offsetof.al
deleted file mode 100644
index 83c2df0e521..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/offsetof.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 221 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\offsetof.al)"
-sub offsetof {
- unimpl "offsetof() is C-specific, stopped";
-}
-
-# end of POSIX::offsetof
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/opendir.al b/Master/tlpkg/tlperl/lib/auto/POSIX/opendir.al
deleted file mode 100644
index 9c508b64371..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/opendir.al
+++ /dev/null
@@ -1,16 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 102 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\opendir.al)"
-sub opendir {
- usage "opendir(directory)" if @_ != 1;
- my $dirhandle;
- CORE::opendir($dirhandle, $_[0])
- ? $dirhandle
- : undef;
-}
-
-# end of POSIX::opendir
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/perror.al b/Master/tlpkg/tlperl/lib/auto/POSIX/perror.al
deleted file mode 100644
index df53df18eff..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/perror.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 328 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\perror.al)"
-sub perror {
- print STDERR "@_: " if @_;
- print STDERR $!,"\n";
-}
-
-# end of POSIX::perror
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/pow.al b/Master/tlpkg/tlperl/lib/auto/POSIX/pow.al
deleted file mode 100644
index 9f1ac2fc14f..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/pow.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 170 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\pow.al)"
-sub pow {
- usage "pow(x,exponent)" if @_ != 2;
- $_[0] ** $_[1];
-}
-
-# end of POSIX::pow
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/printf.al b/Master/tlpkg/tlperl/lib/auto/POSIX/printf.al
deleted file mode 100644
index 28b07d21cd1..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/printf.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 333 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\printf.al)"
-sub printf {
- usage "printf(pattern, args...)" if @_ < 1;
- CORE::printf STDOUT @_;
-}
-
-# end of POSIX::printf
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/putc.al b/Master/tlpkg/tlperl/lib/auto/POSIX/putc.al
deleted file mode 100644
index 484984bcd9f..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/putc.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 338 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\putc.al)"
-sub putc {
- unimpl "putc() is C-specific--use print instead";
-}
-
-# end of POSIX::putc
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/putchar.al b/Master/tlpkg/tlperl/lib/auto/POSIX/putchar.al
deleted file mode 100644
index a85a0d79b36..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/putchar.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 342 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\putchar.al)"
-sub putchar {
- unimpl "putchar() is C-specific--use print instead";
-}
-
-# end of POSIX::putchar
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/puts.al b/Master/tlpkg/tlperl/lib/auto/POSIX/puts.al
deleted file mode 100644
index 0bd3f4f3b3c..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/puts.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 346 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\puts.al)"
-sub puts {
- unimpl "puts() is C-specific--use print instead";
-}
-
-# end of POSIX::puts
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/qsort.al b/Master/tlpkg/tlperl/lib/auto/POSIX/qsort.al
deleted file mode 100644
index 1621e6db521..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/qsort.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 457 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\qsort.al)"
-sub qsort {
- unimpl "qsort() is C-specific, use sort instead";
-}
-
-# end of POSIX::qsort
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/raise.al b/Master/tlpkg/tlperl/lib/auto/POSIX/raise.al
deleted file mode 100644
index 3d078d08f35..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/raise.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 216 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\raise.al)"
-sub raise {
- usage "raise(sig)" if @_ != 1;
- CORE::kill $_[0], $$; # Is this good enough?
-}
-
-# end of POSIX::raise
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/rand.al b/Master/tlpkg/tlperl/lib/auto/POSIX/rand.al
deleted file mode 100644
index 78d16fe53cc..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/rand.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 461 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\rand.al)"
-sub rand {
- unimpl "rand() is non-portable, use Perl's rand instead";
-}
-
-# end of POSIX::rand
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/readdir.al b/Master/tlpkg/tlperl/lib/auto/POSIX/readdir.al
deleted file mode 100644
index 395379abb86..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/readdir.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 110 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\readdir.al)"
-sub readdir {
- usage "readdir(dirhandle)" if @_ != 1;
- CORE::readdir($_[0]);
-}
-
-# end of POSIX::readdir
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/realloc.al b/Master/tlpkg/tlperl/lib/auto/POSIX/realloc.al
deleted file mode 100644
index 949c4fc3b77..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/realloc.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 465 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\realloc.al)"
-sub realloc {
- unimpl "realloc() is C-specific, stopped";
-}
-
-# end of POSIX::realloc
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/redef.al b/Master/tlpkg/tlperl/lib/auto/POSIX/redef.al
deleted file mode 100644
index d667327d6b4..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/redef.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 69 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\redef.al)"
-sub redef {
- my ($mess) = @_;
- croak "Use method $mess instead";
-}
-
-# end of POSIX::redef
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/remove.al b/Master/tlpkg/tlperl/lib/auto/POSIX/remove.al
deleted file mode 100644
index e29b4531d68..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/remove.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 350 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\remove.al)"
-sub remove {
- usage "remove(filename)" if @_ != 1;
- CORE::unlink($_[0]);
-}
-
-# end of POSIX::remove
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/rename.al b/Master/tlpkg/tlperl/lib/auto/POSIX/rename.al
deleted file mode 100644
index 6087fefa798..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/rename.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 355 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\rename.al)"
-sub rename {
- usage "rename(oldfilename, newfilename)" if @_ != 2;
- CORE::rename($_[0], $_[1]);
-}
-
-# end of POSIX::rename
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/rewind.al b/Master/tlpkg/tlperl/lib/auto/POSIX/rewind.al
deleted file mode 100644
index a07216f1c51..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/rewind.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 360 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\rewind.al)"
-sub rewind {
- usage "rewind(filehandle)" if @_ != 1;
- CORE::seek($_[0],0,0);
-}
-
-# end of POSIX::rewind
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/rewinddir.al b/Master/tlpkg/tlperl/lib/auto/POSIX/rewinddir.al
deleted file mode 100644
index c01271a33d8..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/rewinddir.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 115 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\rewinddir.al)"
-sub rewinddir {
- usage "rewinddir(dirhandle)" if @_ != 1;
- CORE::rewinddir($_[0]);
-}
-
-# end of POSIX::rewinddir
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/rmdir.al b/Master/tlpkg/tlperl/lib/auto/POSIX/rmdir.al
deleted file mode 100644
index b94bdf166ee..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/rmdir.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 715 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\rmdir.al)"
-sub rmdir {
- usage "rmdir(directoryname)" if @_ != 1;
- CORE::rmdir($_[0]);
-}
-
-# end of POSIX::rmdir
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/scanf.al b/Master/tlpkg/tlperl/lib/auto/POSIX/scanf.al
deleted file mode 100644
index 2d4ff839328..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/scanf.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 365 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\scanf.al)"
-sub scanf {
- unimpl "scanf() is C-specific--use <> and regular expressions instead";
-}
-
-# end of POSIX::scanf
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/setbuf.al b/Master/tlpkg/tlperl/lib/auto/POSIX/setbuf.al
deleted file mode 100644
index a7de25518fa..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/setbuf.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 720 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\setbuf.al)"
-sub setbuf {
- redef "IO::Handle::setbuf()";
-}
-
-# end of POSIX::setbuf
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/setjmp.al b/Master/tlpkg/tlperl/lib/auto/POSIX/setjmp.al
deleted file mode 100644
index 780deb31940..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/setjmp.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 199 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\setjmp.al)"
-sub setjmp {
- unimpl "setjmp() is C-specific: use eval {} instead";
-}
-
-# end of POSIX::setjmp
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/setvbuf.al b/Master/tlpkg/tlperl/lib/auto/POSIX/setvbuf.al
deleted file mode 100644
index b134e52528d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/setvbuf.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 724 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\setvbuf.al)"
-sub setvbuf {
- redef "IO::Handle::setvbuf()";
-}
-
-# end of POSIX::setvbuf
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/siglongjmp.al b/Master/tlpkg/tlperl/lib/auto/POSIX/siglongjmp.al
deleted file mode 100644
index ab46fac02b6..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/siglongjmp.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 203 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\siglongjmp.al)"
-sub siglongjmp {
- unimpl "siglongjmp() is C-specific: use die instead";
-}
-
-# end of POSIX::siglongjmp
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/sigsetjmp.al b/Master/tlpkg/tlperl/lib/auto/POSIX/sigsetjmp.al
deleted file mode 100644
index 31e563c6f4f..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/sigsetjmp.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 207 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\sigsetjmp.al)"
-sub sigsetjmp {
- unimpl "sigsetjmp() is C-specific: use eval {} instead";
-}
-
-# end of POSIX::sigsetjmp
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/sin.al b/Master/tlpkg/tlperl/lib/auto/POSIX/sin.al
deleted file mode 100644
index 9464a28bfea..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/sin.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 175 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\sin.al)"
-sub sin {
- usage "sin(x)" if @_ != 1;
- CORE::sin($_[0]);
-}
-
-# end of POSIX::sin
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/sleep.al b/Master/tlpkg/tlperl/lib/auto/POSIX/sleep.al
deleted file mode 100644
index e58de4d5602..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/sleep.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 728 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\sleep.al)"
-sub sleep {
- usage "sleep(seconds)" if @_ != 1;
- $_[0] - CORE::sleep($_[0]);
-}
-
-# end of POSIX::sleep
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/sprintf.al b/Master/tlpkg/tlperl/lib/auto/POSIX/sprintf.al
deleted file mode 100644
index 75e6bc5e277..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/sprintf.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 369 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\sprintf.al)"
-sub sprintf {
- usage "sprintf(pattern,args)" if @_ == 0;
- CORE::sprintf(shift,@_);
-}
-
-# end of POSIX::sprintf
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/sqrt.al b/Master/tlpkg/tlperl/lib/auto/POSIX/sqrt.al
deleted file mode 100644
index 54a2976e2da..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/sqrt.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 180 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\sqrt.al)"
-sub sqrt {
- usage "sqrt(x)" if @_ != 1;
- CORE::sqrt($_[0]);
-}
-
-# end of POSIX::sqrt
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/srand.al b/Master/tlpkg/tlperl/lib/auto/POSIX/srand.al
deleted file mode 100644
index b85fd14c60b..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/srand.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 469 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\srand.al)"
-sub srand {
- unimpl "srand()";
-}
-
-# end of POSIX::srand
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/sscanf.al b/Master/tlpkg/tlperl/lib/auto/POSIX/sscanf.al
deleted file mode 100644
index b6869491e5d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/sscanf.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 374 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\sscanf.al)"
-sub sscanf {
- unimpl "sscanf() is C-specific--use regular expressions instead";
-}
-
-# end of POSIX::sscanf
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/stat.al b/Master/tlpkg/tlperl/lib/auto/POSIX/stat.al
deleted file mode 100644
index 4016c0e88ab..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/stat.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 580 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\stat.al)"
-sub stat {
- usage "stat(filename)" if @_ != 1;
- CORE::stat($_[0]);
-}
-
-# end of POSIX::stat
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/strcat.al b/Master/tlpkg/tlperl/lib/auto/POSIX/strcat.al
deleted file mode 100644
index 6b9602b93c6..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/strcat.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 498 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strcat.al)"
-sub strcat {
- unimpl "strcat() is C-specific, use .= instead";
-}
-
-# end of POSIX::strcat
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/strchr.al b/Master/tlpkg/tlperl/lib/auto/POSIX/strchr.al
deleted file mode 100644
index 36a59233340..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/strchr.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 502 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strchr.al)"
-sub strchr {
- unimpl "strchr() is C-specific, use index() instead";
-}
-
-# end of POSIX::strchr
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/strcmp.al b/Master/tlpkg/tlperl/lib/auto/POSIX/strcmp.al
deleted file mode 100644
index b0447b9f1db..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/strcmp.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 506 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strcmp.al)"
-sub strcmp {
- unimpl "strcmp() is C-specific, use eq instead";
-}
-
-# end of POSIX::strcmp
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/strcpy.al b/Master/tlpkg/tlperl/lib/auto/POSIX/strcpy.al
deleted file mode 100644
index 5660760b81d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/strcpy.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 510 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strcpy.al)"
-sub strcpy {
- unimpl "strcpy() is C-specific, use = instead";
-}
-
-# end of POSIX::strcpy
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/strcspn.al b/Master/tlpkg/tlperl/lib/auto/POSIX/strcspn.al
deleted file mode 100644
index 4a46be8baaa..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/strcspn.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 514 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strcspn.al)"
-sub strcspn {
- unimpl "strcspn() is C-specific, use regular expressions instead";
-}
-
-# end of POSIX::strcspn
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/strerror.al b/Master/tlpkg/tlperl/lib/auto/POSIX/strerror.al
deleted file mode 100644
index cc4c86dbae4..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/strerror.al
+++ /dev/null
@@ -1,14 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 518 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strerror.al)"
-sub strerror {
- usage "strerror(errno)" if @_ != 1;
- local $! = $_[0];
- $! . "";
-}
-
-# end of POSIX::strerror
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/strlen.al b/Master/tlpkg/tlperl/lib/auto/POSIX/strlen.al
deleted file mode 100644
index 9cc9df2d315..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/strlen.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 524 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strlen.al)"
-sub strlen {
- unimpl "strlen() is C-specific, use length instead";
-}
-
-# end of POSIX::strlen
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/strncat.al b/Master/tlpkg/tlperl/lib/auto/POSIX/strncat.al
deleted file mode 100644
index 4f09a52c298..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/strncat.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 528 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strncat.al)"
-sub strncat {
- unimpl "strncat() is C-specific, use .= instead";
-}
-
-# end of POSIX::strncat
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/strncmp.al b/Master/tlpkg/tlperl/lib/auto/POSIX/strncmp.al
deleted file mode 100644
index b4dfc9ab0b4..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/strncmp.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 532 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strncmp.al)"
-sub strncmp {
- unimpl "strncmp() is C-specific, use eq instead";
-}
-
-# end of POSIX::strncmp
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/strncpy.al b/Master/tlpkg/tlperl/lib/auto/POSIX/strncpy.al
deleted file mode 100644
index 98b3c081e68..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/strncpy.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 536 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strncpy.al)"
-sub strncpy {
- unimpl "strncpy() is C-specific, use = instead";
-}
-
-# end of POSIX::strncpy
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/strpbrk.al b/Master/tlpkg/tlperl/lib/auto/POSIX/strpbrk.al
deleted file mode 100644
index 227c00d76cc..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/strpbrk.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 540 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strpbrk.al)"
-sub strpbrk {
- unimpl "strpbrk() is C-specific, stopped";
-}
-
-# end of POSIX::strpbrk
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/strrchr.al b/Master/tlpkg/tlperl/lib/auto/POSIX/strrchr.al
deleted file mode 100644
index 1dd2a6ebf04..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/strrchr.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 544 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strrchr.al)"
-sub strrchr {
- unimpl "strrchr() is C-specific, use rindex() instead";
-}
-
-# end of POSIX::strrchr
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/strspn.al b/Master/tlpkg/tlperl/lib/auto/POSIX/strspn.al
deleted file mode 100644
index 3bd65863563..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/strspn.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 548 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strspn.al)"
-sub strspn {
- unimpl "strspn() is C-specific, stopped";
-}
-
-# end of POSIX::strspn
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/strstr.al b/Master/tlpkg/tlperl/lib/auto/POSIX/strstr.al
deleted file mode 100644
index f755459b68f..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/strstr.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 552 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strstr.al)"
-sub strstr {
- usage "strstr(big, little)" if @_ != 2;
- CORE::index($_[0], $_[1]);
-}
-
-# end of POSIX::strstr
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/strtok.al b/Master/tlpkg/tlperl/lib/auto/POSIX/strtok.al
deleted file mode 100644
index bae94c9282a..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/strtok.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 557 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strtok.al)"
-sub strtok {
- unimpl "strtok() is C-specific, stopped";
-}
-
-# end of POSIX::strtok
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/system.al b/Master/tlpkg/tlperl/lib/auto/POSIX/system.al
deleted file mode 100644
index 1b51e8f5209..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/system.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 473 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\system.al)"
-sub system {
- usage "system(command)" if @_ != 1;
- CORE::system($_[0]);
-}
-
-# end of POSIX::system
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/time.al b/Master/tlpkg/tlperl/lib/auto/POSIX/time.al
deleted file mode 100644
index 6b404400fd4..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/time.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 610 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\time.al)"
-sub time {
- usage "time()" if @_ != 0;
- CORE::time;
-}
-
-# end of POSIX::time
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/tmpfile.al b/Master/tlpkg/tlperl/lib/auto/POSIX/tmpfile.al
deleted file mode 100644
index aa223d6a27c..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/tmpfile.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 378 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\tmpfile.al)"
-sub tmpfile {
- redef "IO::File::new_tmpfile()";
-}
-
-# end of POSIX::tmpfile
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/tolower.al b/Master/tlpkg/tlperl/lib/auto/POSIX/tolower.al
deleted file mode 100644
index 57937313fc9..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/tolower.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 87 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\tolower.al)"
-sub tolower {
- usage "tolower(string)" if @_ != 1;
- lc($_[0]);
-}
-
-# end of POSIX::tolower
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/toupper.al b/Master/tlpkg/tlperl/lib/auto/POSIX/toupper.al
deleted file mode 100644
index a5484a70aa6..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/toupper.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 92 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\toupper.al)"
-sub toupper {
- usage "toupper(string)" if @_ != 1;
- uc($_[0]);
-}
-
-# end of POSIX::toupper
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/umask.al b/Master/tlpkg/tlperl/lib/auto/POSIX/umask.al
deleted file mode 100644
index 8bf64ae7f0e..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/umask.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 585 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\umask.al)"
-sub umask {
- usage "umask(mask)" if @_ != 1;
- CORE::umask($_[0]);
-}
-
-# end of POSIX::umask
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/ungetc.al b/Master/tlpkg/tlperl/lib/auto/POSIX/ungetc.al
deleted file mode 100644
index 874e4416f71..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/ungetc.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 382 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\ungetc.al)"
-sub ungetc {
- redef "IO::Handle::ungetc()";
-}
-
-# end of POSIX::ungetc
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/unimpl.al b/Master/tlpkg/tlperl/lib/auto/POSIX/unimpl.al
deleted file mode 100644
index e1c36c60f85..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/unimpl.al
+++ /dev/null
@@ -1,14 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 74 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\unimpl.al)"
-sub unimpl {
- my ($mess) = @_;
- $mess =~ s/xxx//;
- croak "Unimplemented: POSIX::$mess";
-}
-
-# end of POSIX::unimpl
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/unlink.al b/Master/tlpkg/tlperl/lib/auto/POSIX/unlink.al
deleted file mode 100644
index c8f58ab9836..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/unlink.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 733 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\unlink.al)"
-sub unlink {
- usage "unlink(filename)" if @_ != 1;
- CORE::unlink($_[0]);
-}
-
-# end of POSIX::unlink
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/usage.al b/Master/tlpkg/tlperl/lib/auto/POSIX/usage.al
deleted file mode 100644
index 0b2b0bd6115..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/usage.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 64 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\usage.al)"
-sub usage {
- my ($mess) = @_;
- croak "Usage: POSIX::$mess";
-}
-
-# end of POSIX::usage
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/utime.al b/Master/tlpkg/tlperl/lib/auto/POSIX/utime.al
deleted file mode 100644
index 68008e7e110..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/utime.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 738 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\utime.al)"
-sub utime {
- usage "utime(filename, atime, mtime)" if @_ != 3;
- CORE::utime($_[1], $_[2], $_[0]);
-}
-
-# end of POSIX::utime
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/vfprintf.al b/Master/tlpkg/tlperl/lib/auto/POSIX/vfprintf.al
deleted file mode 100644
index fb502afc761..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/vfprintf.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 386 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\vfprintf.al)"
-sub vfprintf {
- unimpl "vfprintf() is C-specific";
-}
-
-# end of POSIX::vfprintf
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/vprintf.al b/Master/tlpkg/tlperl/lib/auto/POSIX/vprintf.al
deleted file mode 100644
index 28108face71..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/vprintf.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 390 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\vprintf.al)"
-sub vprintf {
- unimpl "vprintf() is C-specific";
-}
-
-# end of POSIX::vprintf
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/vsprintf.al b/Master/tlpkg/tlperl/lib/auto/POSIX/vsprintf.al
deleted file mode 100644
index 9d4f008ebbc..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/vsprintf.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 394 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\vsprintf.al)"
-sub vsprintf {
- unimpl "vsprintf() is C-specific";
-}
-
-# end of POSIX::vsprintf
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/wait.al b/Master/tlpkg/tlperl/lib/auto/POSIX/wait.al
deleted file mode 100644
index 57d9701f4ff..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/wait.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 590 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\wait.al)"
-sub wait {
- usage "wait()" if @_ != 0;
- CORE::wait();
-}
-
-# end of POSIX::wait
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/waitpid.al b/Master/tlpkg/tlperl/lib/auto/POSIX/waitpid.al
deleted file mode 100644
index 6cd31c21009..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/waitpid.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 595 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\waitpid.al)"
-sub waitpid {
- usage "waitpid(pid, options)" if @_ != 2;
- CORE::waitpid($_[0], $_[1]);
-}
-
-# end of POSIX::waitpid
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/SDBM_File/SDBM_File.bs b/Master/tlpkg/tlperl/lib/auto/SDBM_File/SDBM_File.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/SDBM_File/SDBM_File.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/SDBM_File/SDBM_File.dll b/Master/tlpkg/tlperl/lib/auto/SDBM_File/SDBM_File.dll
deleted file mode 100755
index 59f6b5ad9f4..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/SDBM_File/SDBM_File.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Time/HiRes/HiRes.bs b/Master/tlpkg/tlperl/lib/auto/Time/HiRes/HiRes.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Time/HiRes/HiRes.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Time/HiRes/HiRes.dll b/Master/tlpkg/tlperl/lib/auto/Time/HiRes/HiRes.dll
deleted file mode 100755
index 5303bcfb0a8..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Time/HiRes/HiRes.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/CancelRepeat.al b/Master/tlpkg/tlperl/lib/auto/Tk/CancelRepeat.al
deleted file mode 100644
index d0d6bb1b2a3..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/CancelRepeat.al
+++ /dev/null
@@ -1,15 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 491 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\CancelRepeat.al)"
-sub CancelRepeat
-{
- my $w = shift->MainWindow;
- my $id = delete $w->{_afterId_};
- $w->after('cancel',$id) if (defined $id);
-}
-
-# end of Tk::CancelRepeat
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Canvas/Canvas.bs b/Master/tlpkg/tlperl/lib/auto/Tk/Canvas/Canvas.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Canvas/Canvas.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Canvas/Canvas.dll b/Master/tlpkg/tlperl/lib/auto/Tk/Canvas/Canvas.dll
deleted file mode 100755
index 85fdb8e0f02..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Canvas/Canvas.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Clipboard/autosplit.ix b/Master/tlpkg/tlperl/lib/auto/Tk/Clipboard/autosplit.ix
deleted file mode 100644
index 9831f74facb..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Clipboard/autosplit.ix
+++ /dev/null
@@ -1,6 +0,0 @@
-# Index created by AutoSplit for blib\lib\Tk\Clipboard.pm
-# (file acts as timestamp)
-package Tk::Clipboard;
-sub getSelected
-;
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Clipboard/getSelected.al b/Master/tlpkg/tlperl/lib/auto/Tk/Clipboard/getSelected.al
deleted file mode 100644
index 44ba7b74bf0..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Clipboard/getSelected.al
+++ /dev/null
@@ -1,15 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Clipboard.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Clipboard;
-
-#line 115 "blib\lib\Tk\Clipboard.pm (autosplit into blib\lib\auto\Tk\Clipboard\getSelected.al)"
-sub getSelected
-{
- my $w = shift;
- my $val = Tk::catch { $w->get('sel.first','sel.last') };
- return $val;
-}
-
-1;
-# end of Tk::Clipboard::getSelected
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Compound/Compound.bs b/Master/tlpkg/tlperl/lib/auto/Tk/Compound/Compound.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Compound/Compound.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Compound/Compound.dll b/Master/tlpkg/tlperl/lib/auto/Tk/Compound/Compound.dll
deleted file mode 100755
index 321f56a0d24..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Compound/Compound.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/DragDrop/Win32Site/Win32Site.bs b/Master/tlpkg/tlperl/lib/auto/Tk/DragDrop/Win32Site/Win32Site.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/DragDrop/Win32Site/Win32Site.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/DragDrop/Win32Site/Win32Site.dll b/Master/tlpkg/tlperl/lib/auto/Tk/DragDrop/Win32Site/Win32Site.dll
deleted file mode 100755
index 468d9d71d05..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/DragDrop/Win32Site/Win32Site.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/EnterFocus.al b/Master/tlpkg/tlperl/lib/auto/Tk/EnterFocus.al
deleted file mode 100644
index 6b2b5b171a1..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/EnterFocus.al
+++ /dev/null
@@ -1,27 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 657 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\EnterFocus.al)"
-# focusFollowsMouse
-#
-# If this procedure is invoked, Tk will enter "focus-follows-mouse"
-# mode, where the focus is always on whatever window contains the
-# mouse. If this procedure isn't invoked, then the user typically
-# has to click on a window to give it the focus.
-#
-# Arguments:
-# None.
-
-sub EnterFocus
-{
- my $w = shift;
- return unless $w;
- my $Ev = $w->XEvent;
- my $d = $Ev->d;
- $w->Tk::focus() if ($d eq 'NotifyAncestor' || $d eq 'NotifyNonlinear' || $d eq 'NotifyInferior');
-}
-
-# end of Tk::EnterFocus
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Entry/Entry.bs b/Master/tlpkg/tlperl/lib/auto/Tk/Entry/Entry.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Entry/Entry.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Entry/Entry.dll b/Master/tlpkg/tlperl/lib/auto/Tk/Entry/Entry.dll
deleted file mode 100755
index 9b1c07a7792..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Entry/Entry.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Error.al b/Master/tlpkg/tlperl/lib/auto/Tk/Error.al
deleted file mode 100644
index 7efe2c7043d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Error.al
+++ /dev/null
@@ -1,20 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 479 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\Error.al)"
-sub Error
-{my $w = shift;
- my $error = shift;
- if (Exists($w))
- {
- my $grab = $w->grab('current');
- $grab->Unbusy if (defined $grab);
- }
- chomp($error);
- warn "Tk::Error: $error\n " . join("\n ",@_)."\n";
-}
-
-# end of Tk::Error
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Event/Event.bs b/Master/tlpkg/tlperl/lib/auto/Tk/Event/Event.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Event/Event.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Event/Event.dll b/Master/tlpkg/tlperl/lib/auto/Tk/Event/Event.dll
deleted file mode 100755
index 5a9706cb92e..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Event/Event.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/FirstMenu.al b/Master/tlpkg/tlperl/lib/auto/Tk/FirstMenu.al
deleted file mode 100644
index 9ae95c2b311..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/FirstMenu.al
+++ /dev/null
@@ -1,21 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 705 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\FirstMenu.al)"
-# tkFirstMenu --
-# This procedure traverses to the first menubutton in the toplevel
-# for a given window, and posts that menubutton's menu.
-#
-# Arguments:
-# w - Name of a window. Selects which toplevel
-# to search for menubuttons.
-sub FirstMenu
-{
- my $w = shift;
- $w = $w->toplevel->FindMenu('');
-}
-
-# end of Tk::FirstMenu
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/FocusChildren.al b/Master/tlpkg/tlperl/lib/auto/Tk/FocusChildren.al
deleted file mode 100644
index 816e29d5ce3..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/FocusChildren.al
+++ /dev/null
@@ -1,35 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 508 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\FocusChildren.al)"
-#----------------------------------------------------------------------------
-# focus.tcl --
-#
-# This file defines several procedures for managing the input
-# focus.
-#
-# @(#) focus.tcl 1.6 94/12/19 17:06:46
-#
-# Copyright (c) 1994 Sun Microsystems, Inc.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-
-sub FocusChildren { shift->children }
-
-#
-# focusNext --
-# This procedure is invoked to move the input focus to the next window
-# after a given one. "Next" is defined in terms of the window
-# stacking order, with all the windows underneath a given top-level
-# (no matter how deeply nested in the hierarchy) considered except
-# for frames and toplevels.
-#
-# Arguments:
-# w - Name of a window: the procedure will set the focus
-# to the next window after this one in the traversal
-# order.
-# end of Tk::FocusChildren
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/FocusOK.al b/Master/tlpkg/tlperl/lib/auto/Tk/FocusOK.al
deleted file mode 100644
index 2bcfe3ebf82..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/FocusOK.al
+++ /dev/null
@@ -1,36 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 628 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\FocusOK.al)"
-sub FocusOK
-{
- my $w = shift;
- my $value;
- catch { $value = $w->cget('-takefocus') };
- if (!$@ && defined($value))
- {
- return 0 if ($value eq '0');
- return $w->viewable if ($value eq '1');
- if ($value)
- {
- $value = $w->$value();
- return $value if (defined $value);
- }
- }
- if (!$w->viewable)
- {
- return 0;
- }
- catch { $value = $w->cget('-state') } ;
- if (!$@ && defined($value) && $value eq 'disabled')
- {
- return 0;
- }
- $value = grep(/Key|Focus/,$w->Tk::bind(),$w->Tk::bind(ref($w)));
- return $value;
-}
-
-# end of Tk::FocusOK
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/AddScrollbars.al b/Master/tlpkg/tlperl/lib/auto/Tk/Frame/AddScrollbars.al
deleted file mode 100644
index aa12259f675..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/AddScrollbars.al
+++ /dev/null
@@ -1,52 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Frame.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Frame;
-
-#line 225 "blib\lib\Tk\Frame.pm (autosplit into blib\lib\auto\Tk\Frame\AddScrollbars.al)"
-sub AddScrollbars
-{
- require Tk::Scrollbar;
- my ($cw,$w) = @_;
- my $def = '';
- my ($x,$y) = ('','');
- my $s = 0;
- my $c;
- $cw->freeze_on_map;
- foreach $c ($w->configure)
- {
- my $opt = $c->[0];
- if ($opt eq '-yscrollcommand')
- {
- my $slice = Tk::Frame->new($cw,Name => 'ysbslice');
- my $ysb = Tk::Scrollbar->new($slice,-orient => 'vertical', -command => [ 'yview', $w ]);
- my $size = $ysb->cget('-width');
- my $corner = Tk::Frame->new($slice,Name=>'corner','-relief' => 'raised',
- '-width' => $size, '-height' => $size);
- $ysb->pack(-side => 'left', -fill => 'y');
- $cw->Advertise('yscrollbar' => $ysb);
- $cw->Advertise('corner' => $corner);
- $cw->Advertise('ysbslice' => $slice);
- $corner->{'before'} = $ysb->PathName;
- $slice->{'before'} = $w->PathName;
- $y = 'w';
- $s = 1;
- }
- elsif ($opt eq '-xscrollcommand')
- {
- my $xsb = Tk::Scrollbar->new($cw,-orient => 'horizontal', -command => [ 'xview', $w ]);
- $cw->Advertise('xscrollbar' => $xsb);
- $xsb->{'before'} = $w->PathName;
- $x = 's';
- $s = 1;
- }
- }
- if ($s)
- {
- $cw->Advertise('scrolled' => $w);
- $cw->ConfigSpecs('-scrollbars' => ['METHOD','scrollbars','Scrollbars',$x.$y]);
- }
-}
-
-# end of Tk::Frame::AddScrollbars
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/FindMenu.al b/Master/tlpkg/tlperl/lib/auto/Tk/Frame/FindMenu.al
deleted file mode 100644
index 66e71c29b21..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/FindMenu.al
+++ /dev/null
@@ -1,22 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Frame.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Frame;
-
-#line 363 "blib\lib\Tk\Frame.pm (autosplit into blib\lib\auto\Tk\Frame\FindMenu.al)"
-sub FindMenu
-{
- my ($w,$char) = @_;
- my $child;
- my $match;
- foreach $child ($w->children)
- {
- next unless (ref $child);
- $match = $child->FindMenu($char);
- return $match if (defined $match);
- }
- return undef;
-}
-
-1;
-# end of Tk::Frame::FindMenu
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/autosplit.ix b/Master/tlpkg/tlperl/lib/auto/Tk/Frame/autosplit.ix
deleted file mode 100644
index 6e5b939fce1..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/autosplit.ix
+++ /dev/null
@@ -1,24 +0,0 @@
-# Index created by AutoSplit for blib\lib\Tk\Frame.pm
-# (file acts as timestamp)
-package Tk::Frame;
-sub labelPack
-;
-sub labelVariable
-;
-sub label
-;
-sub queuePack
-;
-sub sbset
-;
-sub freeze_on_map
-;
-sub AddScrollbars
-;
-sub packscrollbars
-;
-sub scrollbars
-;
-sub FindMenu
-;
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/freeze_on_map.al b/Master/tlpkg/tlperl/lib/auto/Tk/Frame/freeze_on_map.al
deleted file mode 100644
index 6a8b8a4f96e..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/freeze_on_map.al
+++ /dev/null
@@ -1,18 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Frame.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Frame;
-
-#line 215 "blib\lib\Tk\Frame.pm (autosplit into blib\lib\auto\Tk\Frame\freeze_on_map.al)"
-sub freeze_on_map
-{
- my ($w) = @_;
- unless ($w->Tk::bind('Freeze','<Map>'))
- {
- $w->Tk::bind('Freeze','<Map>',['packPropagate' => 0])
- }
- $w->AddBindTag('Freeze');
-}
-
-# end of Tk::Frame::freeze_on_map
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/label.al b/Master/tlpkg/tlperl/lib/auto/Tk/Frame/label.al
deleted file mode 100644
index 83ec70ed803..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/label.al
+++ /dev/null
@@ -1,24 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Frame.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Frame;
-
-#line 182 "blib\lib\Tk\Frame.pm (autosplit into blib\lib\auto\Tk\Frame\label.al)"
-sub label
-{
- my ($cw,$val) = @_;
- my $var = $cw->cget('-labelVariable');
- if (@_ > 1 && defined $val)
- {
- if (!defined $var)
- {
- $var = \$cw->{Configure}{'-label'};
- $cw->labelVariable($var);
- }
- $$var = $val;
- }
- return (defined $var) ? $$var : undef;;
-}
-
-# end of Tk::Frame::label
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/labelPack.al b/Master/tlpkg/tlperl/lib/auto/Tk/Frame/labelPack.al
deleted file mode 100644
index 0cfa8631c24..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/labelPack.al
+++ /dev/null
@@ -1,50 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Frame.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Frame;
-
-#line 121 "blib\lib\Tk\Frame.pm (autosplit into blib\lib\auto\Tk\Frame\labelPack.al)"
-sub labelPack
-{
- my ($cw,$val) = @_;
- my $w = $cw->Subwidget('label');
- my @result = ();
- if (@_ > 1)
- {
- if (defined($w) && !defined($val))
- {
- $w->packForget;
- }
- elsif (defined($val) && !defined ($w))
- {
- require Tk::Label;
- $w = Tk::Label->new($cw,-textvariable => $cw->labelVariable);
- $cw->Advertise('label' => $w);
- $cw->ConfigDelegate('label',qw(-text -textvariable));
- }
- if (defined($val) && defined($w))
- {
- my %pack = @$val;
- unless (exists $pack{-side})
- {
- $pack{-side} = 'top' unless (exists $pack{-side});
- }
- unless (exists $pack{-fill})
- {
- $pack{-fill} = 'x' if ($pack{-side} =~ /(top|bottom)/);
- $pack{-fill} = 'y' if ($pack{-side} =~ /(left|right)/);
- }
- unless (exists($pack{'-before'}) || exists($pack{'-after'}))
- {
- my $before = ($cw->packSlaves)[0];
- $pack{'-before'} = $before if (defined $before);
- }
- $w->pack(%pack);
- }
- }
- @result = $w->packInfo if (defined $w);
- return (wantarray) ? @result : \@result;
-}
-
-# end of Tk::Frame::labelPack
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/labelVariable.al b/Master/tlpkg/tlperl/lib/auto/Tk/Frame/labelVariable.al
deleted file mode 100644
index ca60cff1288..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/labelVariable.al
+++ /dev/null
@@ -1,27 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Frame.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Frame;
-
-#line 163 "blib\lib\Tk\Frame.pm (autosplit into blib\lib\auto\Tk\Frame\labelVariable.al)"
-sub labelVariable
-{
- my ($cw,$val) = @_;
- my $var = \$cw->{Configure}{'-labelVariable'};
- if (@_ > 1 && defined $val)
- {
- $$var = $val;
- $$val = '' unless (defined $$val);
- my $w = $cw->Subwidget('label');
- unless (defined $w)
- {
- $cw->labelPack([]);
- $w = $cw->Subwidget('label');
- }
- $w->configure(-textvariable => $val);
- }
- return $$var;
-}
-
-# end of Tk::Frame::labelVariable
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/packscrollbars.al b/Master/tlpkg/tlperl/lib/auto/Tk/Frame/packscrollbars.al
deleted file mode 100644
index 9990eb67b13..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/packscrollbars.al
+++ /dev/null
@@ -1,86 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Frame.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Frame;
-
-#line 269 "blib\lib\Tk\Frame.pm (autosplit into blib\lib\auto\Tk\Frame\packscrollbars.al)"
-sub packscrollbars
-{
- my ($cw) = @_;
- my $opt = $cw->cget('-scrollbars');
- my $slice = $cw->Subwidget('ysbslice');
- my $xsb = $cw->Subwidget('xscrollbar');
- my $corner = $cw->Subwidget('corner');
- my $w = $cw->Subwidget('scrolled');
- my $xside = (($opt =~ /n/) ? 'top' : 'bottom');
- my $havex = 0;
- my $havey = 0;
- $opt =~ s/r//;
- $cw->{'pack_pending'} = 0;
- if (defined $slice)
- {
- my $reqy;
- my $ysb = $cw->Subwidget('yscrollbar');
- if ($opt =~ /(o)?[we]/ && (($reqy = !defined($1)) || $ysb->Needed))
- {
- my $yside = (($opt =~ /w/) ? 'left' : 'right');
- $slice->pack(-side => $yside, -fill => 'y',-before => $slice->{'before'});
- $havey = 1;
- if ($reqy)
- {
- $w->configure(-yscrollcommand => ['set', $ysb]);
- }
- else
- {
- $w->configure(-yscrollcommand => ['sbset', $cw, $ysb, \$cw->{'packysb'}]);
- }
- }
- else
- {
- $w->configure(-yscrollcommand => undef) unless $opt =~ s/[we]//;
- $slice->packForget;
- }
- $cw->{'packysb'} = $havey;
- }
- if (defined $xsb)
- {
- my $reqx;
- if ($opt =~ /(o)?[ns]/ && (($reqx = !defined($1)) || $xsb->Needed))
- {
- $xsb->pack(-side => $xside, -fill => 'x',-before => $xsb->{'before'});
- $havex = 1;
- if ($reqx)
- {
- $w->configure(-xscrollcommand => ['set', $xsb]);
- }
- else
- {
- $w->configure(-xscrollcommand => ['sbset', $cw, $xsb, \$cw->{'packxsb'}]);
- }
- }
- else
- {
- $w->configure(-xscrollcommand => undef) unless $opt =~ s/[ns]//;
- $xsb->packForget;
- }
- $cw->{'packxsb'} = $havex;
- }
- if (defined $corner)
- {
- if ($havex && $havey && defined $corner->{'before'})
- {
- my $anchor = $opt;
- $anchor =~ s/o//g;
- $corner->configure(-height => $xsb->ReqHeight);
- $corner->pack(-before => $corner->{'before'}, -side => $xside,
- -anchor => $anchor, -fill => 'x');
- }
- else
- {
- $corner->packForget;
- }
- }
-}
-
-# end of Tk::Frame::packscrollbars
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/queuePack.al b/Master/tlpkg/tlperl/lib/auto/Tk/Frame/queuePack.al
deleted file mode 100644
index 59fe3ee4de0..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/queuePack.al
+++ /dev/null
@@ -1,18 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Frame.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Frame;
-
-#line 198 "blib\lib\Tk\Frame.pm (autosplit into blib\lib\auto\Tk\Frame\queuePack.al)"
-sub queuePack
-{
- my ($cw) = @_;
- unless ($cw->{'pack_pending'})
- {
- $cw->{'pack_pending'} = 1;
- $cw->afterIdle([$cw,'packscrollbars']);
- }
-}
-
-# end of Tk::Frame::queuePack
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/sbset.al b/Master/tlpkg/tlperl/lib/auto/Tk/Frame/sbset.al
deleted file mode 100644
index cca4f0d642a..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/sbset.al
+++ /dev/null
@@ -1,15 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Frame.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Frame;
-
-#line 208 "blib\lib\Tk\Frame.pm (autosplit into blib\lib\auto\Tk\Frame\sbset.al)"
-sub sbset
-{
- my ($cw,$sb,$ref,@args) = @_;
- $sb->set(@args);
- $cw->queuePack if (@args == 2 && $sb->Needed != $$ref);
-}
-
-# end of Tk::Frame::sbset
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/scrollbars.al b/Master/tlpkg/tlperl/lib/auto/Tk/Frame/scrollbars.al
deleted file mode 100644
index 21eeb53d2b9..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Frame/scrollbars.al
+++ /dev/null
@@ -1,24 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Frame.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Frame;
-
-#line 347 "blib\lib\Tk\Frame.pm (autosplit into blib\lib\auto\Tk\Frame\scrollbars.al)"
-sub scrollbars
-{
- my ($cw,$opt) = @_;
- my $var = \$cw->{'-scrollbars'};
- if (@_ > 1)
- {
- my $old = $$var;
- if (!defined $old || $old ne $opt)
- {
- $$var = $opt;
- $cw->queuePack;
- }
- }
- return $$var;
-}
-
-# end of Tk::Frame::scrollbars
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/HList/HList.bs b/Master/tlpkg/tlperl/lib/auto/Tk/HList/HList.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/HList/HList.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/HList/HList.dll b/Master/tlpkg/tlperl/lib/auto/Tk/HList/HList.dll
deleted file mode 100755
index aeb0f6bcf38..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/HList/HList.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/IO/IO.bs b/Master/tlpkg/tlperl/lib/auto/Tk/IO/IO.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/IO/IO.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/IO/IO.dll b/Master/tlpkg/tlperl/lib/auto/Tk/IO/IO.dll
deleted file mode 100755
index 472f34c8f64..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/IO/IO.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/ImageNames.al b/Master/tlpkg/tlperl/lib/auto/Tk/ImageNames.al
deleted file mode 100644
index 46176b8a4c5..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/ImageNames.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 757 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\ImageNames.al)"
-sub ImageNames
-{
- image('names');
-}
-
-# end of Tk::ImageNames
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/ImageTypes.al b/Master/tlpkg/tlperl/lib/auto/Tk/ImageTypes.al
deleted file mode 100644
index 59fcf95b7d0..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/ImageTypes.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 762 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\ImageTypes.al)"
-sub ImageTypes
-{
- image('types');
-}
-
-# end of Tk::ImageTypes
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/JPEG/JPEG.bs b/Master/tlpkg/tlperl/lib/auto/Tk/JPEG/JPEG.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/JPEG/JPEG.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/JPEG/JPEG.dll b/Master/tlpkg/tlperl/lib/auto/Tk/JPEG/JPEG.dll
deleted file mode 100755
index b30740e14b4..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/JPEG/JPEG.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/AutoScan.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/AutoScan.al
deleted file mode 100644
index 89bda0179c6..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/AutoScan.al
+++ /dev/null
@@ -1,49 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 676 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\AutoScan.al)"
-# AutoScan --
-# This procedure is invoked when the mouse leaves an entry window
-# with button 1 down. It scrolls the window up, down, left, or
-# right, depending on where the mouse left the window, and reschedules
-# itself as an "after" command so that the window continues to scroll until
-# the mouse moves back into the window or the mouse button is released.
-#
-# Arguments:
-# w - The entry window.
-# x - The x-coordinate of the mouse when it left the window.
-# y - The y-coordinate of the mouse when it left the window.
-sub AutoScan
-{
- my $w = shift;
- return if !Tk::Exists($w);
- my $x = shift;
- my $y = shift;
- if ($y >= $w->height)
- {
- $w->yview('scroll',1,'units')
- }
- elsif ($y < 0)
- {
- $w->yview('scroll',-1,'units')
- }
- elsif ($x >= $w->width)
- {
- $w->xview('scroll',2,'units')
- }
- elsif ($x < 0)
- {
- $w->xview('scroll',-2,'units')
- }
- else
- {
- return;
- }
- $w->Motion($w->index("@" . $x . ',' . $y));
- $w->RepeatId($w->after(50,'AutoScan',$w,$x,$y));
-}
-
-# end of Tk::Listbox::AutoScan
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/BeginExtend.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/BeginExtend.al
deleted file mode 100644
index afd8f0e9fda..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/BeginExtend.al
+++ /dev/null
@@ -1,34 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 620 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\BeginExtend.al)"
-# BeginExtend --
-#
-# This procedure is typically invoked on shift-button-1 presses. It
-# begins the process of extending a selection in the listbox. Its
-# exact behavior depends on the selection mode currently in effect
-# for the listbox; see the Motif documentation for details.
-#
-# Arguments:
-# w - The listbox widget.
-# el - The element for the selection operation (typically the
-# one under the pointer). Must be in numerical form.
-sub BeginExtend
-{
- my $w = shift;
- my $el = shift;
- if ($w->cget('-selectmode') eq 'extended' && $w->selectionIncludes('anchor'))
- {
- $w->Motion($el)
- }
- else
- {
- # No selection yet; simulate the begin-select operation.
- $w->BeginSelect($el);
- }
-}
-
-# end of Tk::Listbox::BeginExtend
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/BeginSelect.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/BeginSelect.al
deleted file mode 100644
index 304a0afe1e1..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/BeginSelect.al
+++ /dev/null
@@ -1,46 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 515 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\BeginSelect.al)"
-# BeginSelect --
-#
-# This procedure is typically invoked on button-1 presses. It begins
-# the process of making a selection in the listbox. Its exact behavior
-# depends on the selection mode currently in effect for the listbox;
-# see the Motif documentation for details.
-#
-# Arguments:
-# w - The listbox widget.
-# el - The element for the selection operation (typically the
-# one under the pointer). Must be in numerical form.
-sub BeginSelect
-{
- my $w = shift;
- my $el = shift;
- if ($w->cget('-selectmode') eq 'multiple')
- {
- if ($w->selectionIncludes($el))
- {
- $w->selectionClear($el)
- }
- else
- {
- $w->selectionSet($el)
- }
- }
- else
- {
- $w->selectionClear(0,'end');
- $w->selectionSet($el);
- $w->selectionAnchor($el);
- @Selection = ();
- $Prev = $el
- }
- $w->focus if ($w->cget('-takefocus'));
- $w->eventGenerate("<<ListboxSelect>>");
-}
-
-# end of Tk::Listbox::BeginSelect
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/BeginToggle.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/BeginToggle.al
deleted file mode 100644
index 6c70e35d75a..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/BeginToggle.al
+++ /dev/null
@@ -1,40 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 645 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\BeginToggle.al)"
-# BeginToggle --
-#
-# This procedure is typically invoked on control-button-1 presses. It
-# begins the process of toggling a selection in the listbox. Its
-# exact behavior depends on the selection mode currently in effect
-# for the listbox; see the Motif documentation for details.
-#
-# Arguments:
-# w - The listbox widget.
-# el - The element for the selection operation (typically the
-# one under the pointer). Must be in numerical form.
-sub BeginToggle
-{
- my $w = shift;
- my $el = shift;
- if ($w->cget('-selectmode') eq 'extended')
- {
- @Selection = $w->curselection();
- $Prev = $el;
- $w->selectionAnchor($el);
- if ($w->selectionIncludes($el))
- {
- $w->selectionClear($el)
- }
- else
- {
- $w->selectionSet($el)
- }
- $w->eventGenerate("<<ListboxSelect>>");
- }
-}
-
-# end of Tk::Listbox::BeginToggle
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/ButtonRelease_1.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/ButtonRelease_1.al
deleted file mode 100644
index ec8fa789fb9..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/ButtonRelease_1.al
+++ /dev/null
@@ -1,16 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 471 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\ButtonRelease_1.al)"
-sub ButtonRelease_1
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->CancelRepeat;
- $w->activate($Ev->xy);
-}
-
-# end of Tk::Listbox::ButtonRelease_1
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/CLEAR.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/CLEAR.al
deleted file mode 100644
index 8ed6feba4b5..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/CLEAR.al
+++ /dev/null
@@ -1,16 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 304 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\CLEAR.al)"
-# CLEAR
-# -----
-# Empty the Listbox of contents if tied to an array
-sub CLEAR {
- my $class = shift;
- ${$class->{OBJECT}}->delete(0, 'end');
-}
-
-# end of Tk::Listbox::CLEAR
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Cancel.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Cancel.al
deleted file mode 100644
index 7ff924756f8..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Cancel.al
+++ /dev/null
@@ -1,42 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 805 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\Cancel.al)"
-# Cancel
-#
-# This procedure is invoked to cancel an extended selection in
-# progress. If there is an extended selection in progress, it
-# restores all of the items between the active one and the anchor
-# to their previous selection state.
-#
-# Arguments:
-# w - The listbox widget.
-sub Cancel
-{
- my $w = shift;
- if ($w->cget('-selectmode') ne 'extended' || !defined $Prev)
- {
- return;
- }
- my $first = $w->index('anchor');
- my $last = $Prev;
- if ($first > $last)
- {
- ($first, $last) = ($last, $first);
- }
- $w->selectionClear($first,$last);
- while ($first <= $last)
- {
- if (Tk::lsearch(\@Selection,$first) >= 0)
- {
- $w->selectionSet($first)
- }
- $first++
- }
- $w->eventGenerate("<<ListboxSelect>>");
-}
-
-# end of Tk::Listbox::Cancel
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Cntrl_End.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Cntrl_End.al
deleted file mode 100644
index dad5a4bc0d1..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Cntrl_End.al
+++ /dev/null
@@ -1,19 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 492 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\Cntrl_End.al)"
-sub Cntrl_End
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->activate('end');
- $w->see('end');
- $w->selectionClear(0,'end');
- $w->selectionSet('end');
- $w->eventGenerate("<<ListboxSelect>>");
-}
-
-# end of Tk::Listbox::Cntrl_End
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Cntrl_Home.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Cntrl_Home.al
deleted file mode 100644
index 08131896da1..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Cntrl_Home.al
+++ /dev/null
@@ -1,19 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 480 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\Cntrl_Home.al)"
-sub Cntrl_Home
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->activate(0);
- $w->see(0);
- $w->selectionClear(0,'end');
- $w->selectionSet(0);
- $w->eventGenerate("<<ListboxSelect>>");
-}
-
-# end of Tk::Listbox::Cntrl_Home
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Cntrl_backslash.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Cntrl_backslash.al
deleted file mode 100644
index 402426261a7..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Cntrl_backslash.al
+++ /dev/null
@@ -1,19 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 504 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\Cntrl_backslash.al)"
-sub Cntrl_backslash
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- if ($w->cget('-selectmode') ne 'browse')
- {
- $w->selectionClear(0,'end');
- $w->eventGenerate("<<ListboxSelect>>");
- }
-}
-
-# end of Tk::Listbox::Cntrl_backslash
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/DELETE.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/DELETE.al
deleted file mode 100644
index 3dd81ad40fd..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/DELETE.al
+++ /dev/null
@@ -1,19 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 355 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\DELETE.al)"
-# DELETE
-# ------
-# Delete element at specified index
-sub DELETE {
- my ( $class, @list ) = @_;
-
- my $value = ${$class->{OBJECT}}->get(@list);
- ${$class->{OBJECT}}->delete(@list);
- return $value;
-}
-
-# end of Tk::Listbox::DELETE
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/DataExtend.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/DataExtend.al
deleted file mode 100644
index 4240300aa68..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/DataExtend.al
+++ /dev/null
@@ -1,39 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 775 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\DataExtend.al)"
-# DataExtend
-#
-# This procedure is called for key-presses such as Shift-KEndData.
-# If the selection mode isn't multiple or extend then it does nothing.
-# Otherwise it moves the active element to el and, if we're in
-# extended mode, extends the selection to that point.
-#
-# Arguments:
-# w - The listbox widget.
-# el - An integer element number.
-sub DataExtend
-{
- my $w = shift;
- my $el = shift;
- my $mode = $w->cget('-selectmode');
- if ($mode eq 'extended')
- {
- $w->activate($el);
- $w->see($el);
- if ($w->selectionIncludes('anchor'))
- {
- $w->Motion($el)
- }
- }
- elsif ($mode eq 'multiple')
- {
- $w->activate($el);
- $w->see($el)
- }
-}
-
-# end of Tk::Listbox::DataExtend
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/EXISTS.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/EXISTS.al
deleted file mode 100644
index ae1ed1bc5e6..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/EXISTS.al
+++ /dev/null
@@ -1,16 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 366 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\EXISTS.al)"
-# EXISTS
-# ------
-# Returns true if the index exist, and undef if not
-sub EXISTS {
- my ( $class, $index ) = @_;
- return undef unless ${$class->{OBJECT}}->get($index);
-}
-
-# end of Tk::Listbox::EXISTS
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/EXTEND.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/EXTEND.al
deleted file mode 100644
index 2a483ea08c1..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/EXTEND.al
+++ /dev/null
@@ -1,16 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 312 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\EXTEND.al)"
-# EXTEND
-# ------
-# Do nothing and be happy about it
-sub EXTEND { }
-
-# PUSH
-# ----
-# Append elements onto the Listbox contents
-# end of Tk::Listbox::EXTEND
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/ExtendUpDown.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/ExtendUpDown.al
deleted file mode 100644
index 9b72250ea41..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/ExtendUpDown.al
+++ /dev/null
@@ -1,36 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 748 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\ExtendUpDown.al)"
-# ExtendUpDown --
-#
-# Does nothing unless we're in extended selection mode; in this
-# case it moves the location cursor (active element) up or down by
-# one element, and extends the selection to that point.
-#
-# Arguments:
-# w - The listbox widget.
-# amount - +1 to move down one item, -1 to move back one item.
-sub ExtendUpDown
-{
- my $w = shift;
- my $amount = shift;
- if ($w->cget('-selectmode') ne 'extended')
- {
- return;
- }
- my $active = $w->index('active');
- if (!@Selection)
- {
- $w->selectionSet($active);
- @Selection = $w->curselection;
- }
- $w->activate($active + $amount);
- $w->see('active');
- $w->Motion($w->index('active'))
-}
-
-# end of Tk::Listbox::ExtendUpDown
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/FETCH.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/FETCH.al
deleted file mode 100644
index fbbe7a3ce9a..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/FETCH.al
+++ /dev/null
@@ -1,56 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 176 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\FETCH.al)"
-# FETCH
-# -----
-# Return either the full contents or only the selected items in the
-# box depending on whether we tied it to an array or scalar respectively
-sub FETCH {
- my $class = shift;
-
- my $self = ${$class->{OBJECT}};
- my %options = %{$class->{OPTION}} if defined $class->{OPTION};;
-
- # Define the return variable
- my $result;
-
- # Check whether we are have a tied array or scalar quantity
- if ( @_ ) {
- my $i = shift;
- # The Tk:: Listbox has been tied to an array, we are returning
- # an array list of the current items in the Listbox
- $result = $self->get($i);
- } else {
- # The Tk::Listbox has been tied to a scalar, we are returning a
- # reference to an array or hash containing the currently selected items
- my ( @array, %hash );
-
- if ( defined $options{ReturnType} ) {
-
- # THREE-WAY SWITCH
- if ( $options{ReturnType} eq "index" ) {
- $result = [$self->curselection];
- } elsif ( $options{ReturnType} eq "element" ) {
- foreach my $selection ( $self->curselection ) {
- push(@array,$self->get($selection)); }
- $result = \@array;
- } elsif ( $options{ReturnType} eq "both" ) {
- foreach my $selection ( $self->curselection ) {
- %hash = ( %hash, $selection => $self->get($selection)); }
- $result = \%hash;
- }
- } else {
- # return elements (default)
- foreach my $selection ( $self->curselection ) {
- push(@array,$self->get($selection)); }
- $result = \@array;
- }
- }
- return $result;
-}
-
-# end of Tk::Listbox::FETCH
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/FETCHSIZE.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/FETCHSIZE.al
deleted file mode 100644
index 13b612a26f5..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/FETCHSIZE.al
+++ /dev/null
@@ -1,16 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 224 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\FETCHSIZE.al)"
-# FETCHSIZE
-# ---------
-# Return the number of elements in the Listbox when tied to an array
-sub FETCHSIZE {
- my $class = shift;
- return ${$class->{OBJECT}}->size();
-}
-
-# end of Tk::Listbox::FETCHSIZE
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Listbox.bs b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Listbox.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Listbox.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Listbox.dll b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Listbox.dll
deleted file mode 100755
index bb2c6c89f70..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Listbox.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Motion.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Motion.al
deleted file mode 100644
index c1c3cbd978b..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/Motion.al
+++ /dev/null
@@ -1,77 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 552 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\Motion.al)"
-# Motion --
-#
-# This procedure is called to process mouse motion events while
-# button 1 is down. It may move or extend the selection, depending
-# on the listbox's selection mode.
-#
-# Arguments:
-# w - The listbox widget.
-# el - The element under the pointer (must be a number).
-sub Motion
-{
- my $w = shift;
- my $el = shift;
- if (defined($Prev) && $el == $Prev)
- {
- return;
- }
- my $anchor = $w->index('anchor');
- my $mode = $w->cget('-selectmode');
- if ($mode eq 'browse')
- {
- $w->selectionClear(0,'end');
- $w->selectionSet($el);
- $Prev = $el;
- $w->eventGenerate("<<ListboxSelect>>");
- }
- elsif ($mode eq 'extended')
- {
- my $i = $Prev;
- if (!defined $i || $i eq '')
- {
- $i = $el;
- $w->selectionSet($el);
- }
- if ($w->selectionIncludes('anchor'))
- {
- $w->selectionClear($i,$el);
- $w->selectionSet('anchor',$el)
- }
- else
- {
- $w->selectionClear($i,$el);
- $w->selectionClear('anchor',$el)
- }
- if (!@Selection)
- {
- @Selection = $w->curselection;
- }
- while ($i < $el && $i < $anchor)
- {
- if (Tk::lsearch(\@Selection,$i) >= 0)
- {
- $w->selectionSet($i)
- }
- $i++
- }
- while ($i > $el && $i > $anchor)
- {
- if (Tk::lsearch(\@Selection,$i) >= 0)
- {
- $w->selectionSet($i)
- }
- $i--
- }
- $Prev = $el;
- $w->eventGenerate("<<ListboxSelect>>");
- }
-}
-
-# end of Tk::Listbox::Motion
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/POP.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/POP.al
deleted file mode 100644
index db469652447..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/POP.al
+++ /dev/null
@@ -1,19 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 325 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\POP.al)"
-# POP
-# ---
-# Remove last element of the array and return it
-sub POP {
- my $class = shift;
-
- my $value = ${$class->{OBJECT}}->get('end');
- ${$class->{OBJECT}}->delete('end');
- return $value;
-}
-
-# end of Tk::Listbox::POP
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/PUSH.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/PUSH.al
deleted file mode 100644
index f2168ef46d9..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/PUSH.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 320 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\PUSH.al)"
-sub PUSH {
- my ( $class, @list ) = @_;
- ${$class->{OBJECT}}->insert('end', @list);
-}
-
-# end of Tk::Listbox::PUSH
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/SHIFT.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/SHIFT.al
deleted file mode 100644
index 96a41f7d79c..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/SHIFT.al
+++ /dev/null
@@ -1,19 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 336 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\SHIFT.al)"
-# SHIFT
-# -----
-# Removes the first element and returns it
-sub SHIFT {
- my $class = shift;
-
- my $value = ${$class->{OBJECT}}->get(0);
- ${$class->{OBJECT}}->delete(0);
- return $value
-}
-
-# end of Tk::Listbox::SHIFT
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/SPLICE.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/SPLICE.al
deleted file mode 100644
index aeddea8196a..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/SPLICE.al
+++ /dev/null
@@ -1,84 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 374 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\SPLICE.al)"
-# SPLICE
-# ------
-# Performs equivalent of splice on the listbox contents
-sub SPLICE {
- my $class = shift;
-
- my $self = ${$class->{OBJECT}};
-
- # check for arguments
- my @elements;
- if ( scalar(@_) == 0 ) {
- # none
- @elements = $self->get(0,'end');
- $self->delete(0,'end');
- return wantarray ? @elements : $elements[scalar(@elements)-1];;
-
- } elsif ( scalar(@_) == 1 ) {
- # $offset
- my ( $offset ) = @_;
- if ( $offset < 0 ) {
- my $start = $self->size() + $offset;
- if ( $start > 0 ) {
- @elements = $self->get($start,'end');
- $self->delete($start,'end');
- return wantarray ? @elements : $elements[scalar(@elements)-1];
- } else {
- return undef;
- }
- } else {
- @elements = $self->get($offset,'end');
- $self->delete($offset,'end');
- return wantarray ? @elements : $elements[scalar(@elements)-1];
- }
-
- } elsif ( scalar(@_) == 2 ) {
- # $offset and $length
- my ( $offset, $length ) = @_;
- if ( $offset < 0 ) {
- my $start = $self->size() + $offset;
- my $end = $self->size() + $offset + $length - 1;
- if ( $start > 0 ) {
- @elements = $self->get($start,$end);
- $self->delete($start,$end);
- return wantarray ? @elements : $elements[scalar(@elements)-1];
- } else {
- return undef;
- }
- } else {
- @elements = $self->get($offset,$offset+$length-1);
- $self->delete($offset,$offset+$length-1);
- return wantarray ? @elements : $elements[scalar(@elements)-1];
- }
-
- } else {
- # $offset, $length and @list
- my ( $offset, $length, @list ) = @_;
- if ( $offset < 0 ) {
- my $start = $self->size() + $offset;
- my $end = $self->size() + $offset + $length - 1;
- if ( $start > 0 ) {
- @elements = $self->get($start,$end);
- $self->delete($start,$end);
- $self->insert($start,@list);
- return wantarray ? @elements : $elements[scalar(@elements)-1];
- } else {
- return undef;
- }
- } else {
- @elements = $self->get($offset,$offset+$length-1);
- $self->delete($offset,$offset+$length-1);
- $self->insert($offset,@list);
- return wantarray ? @elements : $elements[scalar(@elements)-1];
- }
- }
-}
-
-# end of Tk::Listbox::SPLICE
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/STORE.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/STORE.al
deleted file mode 100644
index 492c32ccc1e..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/STORE.al
+++ /dev/null
@@ -1,80 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 232 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\STORE.al)"
-# STORE
-# -----
-# If tied to an array we will modify the Listbox contents, while if tied
-# to a scalar we will select and clear elements.
-sub STORE {
-
- if ( scalar(@_) == 2 ) {
- # we have a tied scalar
- my ( $class, $selected ) = @_;
- my $self = ${$class->{OBJECT}};
- my %options = %{$class->{OPTION}} if defined $class->{OPTION};;
-
- # clear currently selected elements
- $self->selectionClear(0,'end');
-
- # set selected elements
- if ( defined $options{ReturnType} ) {
-
- # THREE-WAY SWITCH
- if ( $options{ReturnType} eq "index" ) {
- for ( my $i=0; $i < scalar(@$selected) ; $i++ ) {
- for ( my $j=0; $j < $self->size() ; $j++ ) {
- if( $j == $$selected[$i] ) {
- $self->selectionSet($j); last; }
- }
- }
- } elsif ( $options{ReturnType} eq "element" ) {
- for ( my $k=0; $k < scalar(@$selected) ; $k++ ) {
- for ( my $l=0; $l < $self->size() ; $l++ ) {
- if( $self->get($l) eq $$selected[$k] ) {
- $self->selectionSet($l); last; }
- }
- }
- } elsif ( $options{ReturnType} eq "both" ) {
- foreach my $key ( keys %$selected ) {
- $self->selectionSet($key)
- if $$selected{$key} eq $self->get($key);
- }
- }
- } else {
- # return elements (default)
- for ( my $k=0; $k < scalar(@$selected) ; $k++ ) {
- for ( my $l=0; $l < $self->size() ; $l++ ) {
- if( $self->get($l) eq $$selected[$k] ) {
- $self->selectionSet($l); last; }
- }
- }
- }
-
- } else {
- # we have a tied array
- my ( $class, $index, $value ) = @_;
- my $self = ${$class->{OBJECT}};
-
- # check size of current contents list
- my $sizeof = $self->size();
-
- if ( $index <= $sizeof ) {
- # Change a current listbox entry
- $self->delete($index);
- $self->insert($index, $value);
- } else {
- # Add a new value
- if ( defined $index ) {
- $self->insert($index, $value);
- } else {
- $self->insert("end", $value);
- }
- }
- }
-}
-
-# end of Tk::Listbox::STORE
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/SelectAll.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/SelectAll.al
deleted file mode 100644
index 50569afbe50..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/SelectAll.al
+++ /dev/null
@@ -1,32 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 838 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\SelectAll.al)"
-# SelectAll
-#
-# This procedure is invoked to handle the "select all" operation.
-# For single and browse mode, it just selects the active element.
-# Otherwise it selects everything in the widget.
-#
-# Arguments:
-# w - The listbox widget.
-sub SelectAll
-{
- my $w = shift;
- my $mode = $w->cget('-selectmode');
- if ($mode eq 'single' || $mode eq 'browse')
- {
- $w->selectionClear(0,'end');
- $w->selectionSet('active')
- }
- else
- {
- $w->selectionSet(0,'end')
- }
- $w->eventGenerate("<<ListboxSelect>>");
-}
-
-# end of Tk::Listbox::SelectAll
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/SetList.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/SetList.al
deleted file mode 100644
index 25e4f596592..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/SetList.al
+++ /dev/null
@@ -1,16 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 862 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\SetList.al)"
-# Perl/Tk extensions:
-sub SetList
-{
- my $w = shift;
- $w->delete(0,'end');
- $w->insert('end',@_);
-}
-
-# end of Tk::Listbox::SetList
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/TIEARRAY.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/TIEARRAY.al
deleted file mode 100644
index 8c147e8eac8..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/TIEARRAY.al
+++ /dev/null
@@ -1,15 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 160 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\TIEARRAY.al)"
-sub TIEARRAY {
- my ( $class, $obj, %options ) = @_;
- return bless {
- OBJECT => \$obj,
- OPTION => \%options }, $class;
-}
-
-# end of Tk::Listbox::TIEARRAY
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/TIESCALAR.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/TIESCALAR.al
deleted file mode 100644
index 9cedf047c7f..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/TIESCALAR.al
+++ /dev/null
@@ -1,15 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 169 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\TIESCALAR.al)"
-sub TIESCALAR {
- my ( $class, $obj, %options ) = @_;
- return bless {
- OBJECT => \$obj,
- OPTION => \%options }, $class;
-}
-
-# end of Tk::Listbox::TIESCALAR
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/UNSHIFT.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/UNSHIFT.al
deleted file mode 100644
index 10d6bae86ec..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/UNSHIFT.al
+++ /dev/null
@@ -1,16 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 347 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\UNSHIFT.al)"
-# UNSHIFT
-# -------
-# Insert elements at the beginning of the Listbox
-sub UNSHIFT {
- my ( $class, @list ) = @_;
- ${$class->{OBJECT}}->insert(0, @list);
-}
-
-# end of Tk::Listbox::UNSHIFT
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/UpDown.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/UpDown.al
deleted file mode 100644
index 7ffbfebf4e1..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/UpDown.al
+++ /dev/null
@@ -1,41 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 716 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\UpDown.al)"
-# UpDown --
-#
-# Moves the location cursor (active element) up or down by one element,
-# and changes the selection if we're in browse or extended selection
-# mode.
-#
-# Arguments:
-# w - The listbox widget.
-# amount - +1 to move down one item, -1 to move back one item.
-sub UpDown
-{
- my $w = shift;
- my $amount = shift;
- $w->activate($w->index('active')+$amount);
- $w->see('active');
- my $mode = $w->cget('-selectmode');
- if ($mode eq 'browse')
- {
- $w->selectionClear(0,'end');
- $w->selectionSet('active');
- $w->eventGenerate("<<ListboxSelect>>");
- }
- elsif ($mode eq 'extended')
- {
- $w->selectionClear(0,'end');
- $w->selectionSet('active');
- $w->selectionAnchor('active');
- $Prev = $w->index('active');
- @Selection = ();
- $w->eventGenerate("<<ListboxSelect>>");
- }
-}
-
-# end of Tk::Listbox::UpDown
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/autosplit.ix b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/autosplit.ix
deleted file mode 100644
index 0cd2e67037c..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/autosplit.ix
+++ /dev/null
@@ -1,56 +0,0 @@
-# Index created by AutoSplit for ..\blib\lib\Tk\Listbox.pm
-# (file acts as timestamp)
-package Tk::Listbox;
-sub TIEARRAY ;
-sub TIESCALAR ;
-sub FETCH ;
-sub FETCHSIZE ;
-sub STORE ;
-sub CLEAR ;
-sub EXTEND ;
-sub PUSH ;
-sub POP ;
-sub SHIFT ;
-sub UNSHIFT ;
-sub DELETE ;
-sub EXISTS ;
-sub SPLICE ;
-sub xyIndex
-;
-sub ButtonRelease_1
-;
-sub Cntrl_Home
-;
-sub Cntrl_End
-;
-sub Cntrl_backslash
-;
-sub BeginSelect
-;
-sub Motion
-;
-sub BeginExtend
-;
-sub BeginToggle
-;
-sub AutoScan
-;
-sub UpDown
-;
-sub ExtendUpDown
-;
-sub DataExtend
-;
-sub Cancel
-;
-sub SelectAll
-;
-sub SetList
-;
-sub deleteSelected
-;
-sub clipboardPaste
-;
-sub getSelected
-;
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/clipboardPaste.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/clipboardPaste.al
deleted file mode 100644
index 28f0bd731de..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/clipboardPaste.al
+++ /dev/null
@@ -1,21 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 880 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\clipboardPaste.al)"
-sub clipboardPaste
-{
- my $w = shift;
- my $index = $w->index('active') || $w->index($w->XEvent->xy);
- my $str;
- eval {local $SIG{__DIE__}; $str = $w->clipboardGet };
- return if $@;
- foreach (split("\n",$str))
- {
- $w->insert($index++,$_);
- }
-}
-
-# end of Tk::Listbox::clipboardPaste
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/deleteSelected.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/deleteSelected.al
deleted file mode 100644
index 45bdfe73221..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/deleteSelected.al
+++ /dev/null
@@ -1,18 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 870 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\deleteSelected.al)"
-sub deleteSelected
-{
- my $w = shift;
- my $i;
- foreach $i (reverse $w->curselection)
- {
- $w->delete($i);
- }
-}
-
-# end of Tk::Listbox::deleteSelected
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/getSelected.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/getSelected.al
deleted file mode 100644
index a729a713d3e..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/getSelected.al
+++ /dev/null
@@ -1,24 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 893 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\getSelected.al)"
-sub getSelected
-{
- my ($w) = @_;
- my $i;
- my (@result) = ();
- foreach $i ($w->curselection)
- {
- push(@result,$w->get($i));
- }
- return (wantarray) ? @result : $result[0];
-}
-
-1;
-__END__
-
-
-1;
-# end of Tk::Listbox::getSelected
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/xyIndex.al b/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/xyIndex.al
deleted file mode 100644
index 5689afdb6ef..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Listbox/xyIndex.al
+++ /dev/null
@@ -1,29 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 450 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\xyIndex.al)"
-# ----
-
-#
-# Bind --
-# This procedure is invoked the first time the mouse enters a listbox
-# widget or a listbox widget receives the input focus. It creates
-# all of the class bindings for listboxes.
-#
-# Arguments:
-# event - Indicates which event caused the procedure to be invoked
-# (Enter or FocusIn). It is used so that we can carry out
-# the functions of that event in addition to setting up
-# bindings.
-
-sub xyIndex
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- return $w->index($Ev->xy);
-}
-
-# end of Tk::Listbox::xyIndex
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Menubutton/Menubutton.bs b/Master/tlpkg/tlperl/lib/auto/Tk/Menubutton/Menubutton.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Menubutton/Menubutton.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Menubutton/Menubutton.dll b/Master/tlpkg/tlperl/lib/auto/Tk/Menubutton/Menubutton.dll
deleted file mode 100755
index 594c0bdadd3..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Menubutton/Menubutton.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/NBFrame/NBFrame.bs b/Master/tlpkg/tlperl/lib/auto/Tk/NBFrame/NBFrame.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/NBFrame/NBFrame.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/NBFrame/NBFrame.dll b/Master/tlpkg/tlperl/lib/auto/Tk/NBFrame/NBFrame.dll
deleted file mode 100755
index 8678ec8c7af..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/NBFrame/NBFrame.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/PNG/PNG.bs b/Master/tlpkg/tlperl/lib/auto/Tk/PNG/PNG.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/PNG/PNG.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/PNG/PNG.dll b/Master/tlpkg/tlperl/lib/auto/Tk/PNG/PNG.dll
deleted file mode 100755
index 08bbbed4fcc..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/PNG/PNG.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Pixmap/Pixmap.bs b/Master/tlpkg/tlperl/lib/auto/Tk/Pixmap/Pixmap.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Pixmap/Pixmap.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Pixmap/Pixmap.dll b/Master/tlpkg/tlperl/lib/auto/Tk/Pixmap/Pixmap.dll
deleted file mode 100755
index c3adb205b3d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Pixmap/Pixmap.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Receive.al b/Master/tlpkg/tlperl/lib/auto/Tk/Receive.al
deleted file mode 100644
index 7cae1fc380b..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Receive.al
+++ /dev/null
@@ -1,23 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 728 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\Receive.al)"
-# If we have sub Clipboard in Tk then use base qw(Tk::Clipboard ....)
-# calls it when it does its eval "require $base"
-#sub Clipboard
-#{my $w = shift;
-# my $cmd = shift;
-# croak "Use clipboard\u$cmd()";
-#}
-
-sub Receive
-{
- my $w = shift;
- warn 'Receive(' . join(',',@_) .')';
- die 'Tk rejects send(' . join(',',@_) .")\n";
-}
-
-# end of Tk::Receive
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/RepeatId.al b/Master/tlpkg/tlperl/lib/auto/Tk/RepeatId.al
deleted file mode 100644
index e71d2a337a0..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/RepeatId.al
+++ /dev/null
@@ -1,16 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 498 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\RepeatId.al)"
-sub RepeatId
-{
- my ($w,$id) = @_;
- $w = $w->MainWindow;
- $w->CancelRepeat;
- $w->{_afterId_} = $id;
-}
-
-# end of Tk::RepeatId
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/Activate.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scale/Activate.al
deleted file mode 100644
index 500358c8e0e..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/Activate.al
+++ /dev/null
@@ -1,33 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scale.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scale;
-
-#line 86 "..\blib\lib\Tk\Scale.pm (autosplit into ..\blib\lib\auto\Tk\Scale\Activate.al)"
-# Activate --
-# This procedure is invoked to check a given x-y position in the
-# scale and activate the slider if the x-y position falls within
-# the slider.
-#
-# Arguments:
-# w - The scale widget.
-# x, y - Mouse coordinates.
-sub Activate
-{
- my $w = shift;
- my $x = shift;
- my $y = shift;
- return if ($w->cget('-state') eq 'disabled');
- my $ident = $w->identify($x,$y);
- if (defined($ident) && $ident eq 'slider')
- {
- $w->configure(-state => 'active')
- }
- else
- {
- $w->configure(-state => 'normal')
- }
-}
-
-# end of Tk::Scale::Activate
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/ButtonDown.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scale/ButtonDown.al
deleted file mode 100644
index 61ed6f32c11..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/ButtonDown.al
+++ /dev/null
@@ -1,40 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scale.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scale;
-
-#line 138 "..\blib\lib\Tk\Scale.pm (autosplit into ..\blib\lib\auto\Tk\Scale\ButtonDown.al)"
-# ButtonDown --
-# This procedure is invoked when a button is pressed in a scale. It
-# takes different actions depending on where the button was pressed.
-#
-# Arguments:
-# w - The scale widget.
-# x, y - Mouse coordinates of button press.
-sub ButtonDown
-{
- my $w = shift;
- my $x = shift;
- my $y = shift;
- $Tk::dragging = 0;
- $el = $w->identify($x,$y);
- return unless ($el);
- if ($el eq 'trough1')
- {
- $w->Increment('up','little','initial')
- }
- elsif ($el eq 'trough2')
- {
- $w->Increment('down','little','initial')
- }
- elsif ($el eq 'slider')
- {
- $Tk::dragging = 1;
- my @coords = $w->coords();
- $Tk::deltaX = $x-$coords[0];
- $Tk::deltaY = $y-$coords[1];
- }
-}
-
-# end of Tk::Scale::ButtonDown
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/ButtonUp.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scale/ButtonUp.al
deleted file mode 100644
index d5a22a77a46..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/ButtonUp.al
+++ /dev/null
@@ -1,16 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scale.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scale;
-
-#line 129 "..\blib\lib\Tk\Scale.pm (autosplit into ..\blib\lib\auto\Tk\Scale\ButtonUp.al)"
-sub ButtonUp
-{
- my ($w,$x,$y) = @_;
- $w->CancelRepeat();
- $w->EndDrag();
- $w->Activate($x,$y)
-}
-
-# end of Tk::Scale::ButtonUp
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/ControlPress.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scale/ControlPress.al
deleted file mode 100644
index 50d7ad8b447..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/ControlPress.al
+++ /dev/null
@@ -1,31 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scale.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scale;
-
-#line 255 "..\blib\lib\Tk\Scale.pm (autosplit into ..\blib\lib\auto\Tk\Scale\ControlPress.al)"
-# ControlPress --
-# This procedure handles button presses that are made with the Control
-# key down. Depending on the mouse position, it adjusts the scale
-# value to one end of the range or the other.
-#
-# Arguments:
-# w - The scale widget.
-# x, y - Mouse coordinates where the button was pressed.
-sub ControlPress
-{
- my ($w,$x,$y) = @_;
- my $el = $w->identify($x,$y);
- return unless ($el);
- if ($el eq 'trough1')
- {
- $w->set($w->cget('-from'))
- }
- elsif ($el eq 'trough2')
- {
- $w->set($w->cget('-to'))
- }
-}
-
-1;
-# end of Tk::Scale::ControlPress
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/Drag.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scale/Drag.al
deleted file mode 100644
index 0bc63b12879..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/Drag.al
+++ /dev/null
@@ -1,29 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scale.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scale;
-
-#line 169 "..\blib\lib\Tk\Scale.pm (autosplit into ..\blib\lib\auto\Tk\Scale\Drag.al)"
-# Drag --
-# This procedure is called when the mouse is dragged with
-# mouse button 1 down. If the drag started inside the slider
-# (i.e. the scale is active) then the scale's value is adjusted
-# to reflect the mouse's position.
-#
-# Arguments:
-# w - The scale widget.
-# x, y - Mouse coordinates.
-sub Drag
-{
- my $w = shift;
- my $x = shift;
- my $y = shift;
- if (!$Tk::dragging)
- {
- return;
- }
- $w->set($w->get($x-$Tk::deltaX,$y-$Tk::deltaY))
-}
-
-# end of Tk::Scale::Drag
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/EndDrag.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scale/EndDrag.al
deleted file mode 100644
index 86037b86d92..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/EndDrag.al
+++ /dev/null
@@ -1,23 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scale.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scale;
-
-#line 189 "..\blib\lib\Tk\Scale.pm (autosplit into ..\blib\lib\auto\Tk\Scale\EndDrag.al)"
-# EndDrag --
-# This procedure is called to end an interactive drag of the
-# slider. It just marks the drag as over.
-# Arguments:
-# w - The scale widget.
-sub EndDrag
-{
- my $w = shift;
- if (!$Tk::dragging)
- {
- return;
- }
- $Tk::dragging = 0;
-}
-
-# end of Tk::Scale::EndDrag
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/Enter.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scale/Enter.al
deleted file mode 100644
index 1326a5ed9a0..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/Enter.al
+++ /dev/null
@@ -1,19 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scale.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scale;
-
-#line 118 "..\blib\lib\Tk\Scale.pm (autosplit into ..\blib\lib\auto\Tk\Scale\Enter.al)"
-sub Enter
-{
- my ($w,$x,$y) = @_;
- if ($Tk::strictMotif)
- {
- $w->{'activeBg'} = $w->cget('-activebackground');
- $w->configure('-activebackground',$w->cget('-background'));
- }
- $w->Activate($x,$y);
-}
-
-# end of Tk::Scale::Enter
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/Increment.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scale/Increment.al
deleted file mode 100644
index 76432eeaf40..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/Increment.al
+++ /dev/null
@@ -1,61 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scale.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scale;
-
-#line 203 "..\blib\lib\Tk\Scale.pm (autosplit into ..\blib\lib\auto\Tk\Scale\Increment.al)"
-# Increment --
-# This procedure is invoked to increment the value of a scale and
-# to set up auto-repeating of the action if that is desired. The
-# way the value is incremented depends on the "dir" and "big"
-# arguments.
-#
-# Arguments:
-# w - The scale widget.
-# dir - "up" means move value towards -from, "down" means
-# move towards -to.
-# big - Size of increments: "big" or "little".
-# repeat - Whether and how to auto-repeat the action: "noRepeat"
-# means don't auto-repeat, "initial" means this is the
-# first action in an auto-repeat sequence, and "again"
-# means this is the second repetition or later.
-sub Increment
-{
- my $w = shift;
- my $dir = shift;
- my $big = shift;
- my $repeat = shift;
- my $inc;
- if ($big eq 'big')
- {
- $inc = $w->cget('-bigincrement');
- if ($inc == 0)
- {
- $inc = abs(($w->cget('-to')-$w->cget('-from')))/10.0
- }
- if ($inc < $w->cget('-resolution'))
- {
- $inc = $w->cget('-resolution')
- }
- }
- else
- {
- $inc = $w->cget('-resolution')
- }
- if (($w->cget('-from') > $w->cget('-to')) ^ ($dir eq 'up'))
- {
- $inc = -$inc
- }
- $w->set($w->get()+$inc);
- if ($repeat eq 'again')
- {
- $w->RepeatId($w->after($w->cget('-repeatinterval'),'Increment',$w,$dir,$big,'again'));
- }
- elsif ($repeat eq 'initial')
- {
- $w->RepeatId($w->after($w->cget('-repeatdelay'),'Increment',$w,$dir,$big,'again'));
- }
-}
-
-# end of Tk::Scale::Increment
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/Leave.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scale/Leave.al
deleted file mode 100644
index eb6f7b69f89..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/Leave.al
+++ /dev/null
@@ -1,15 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scale.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scale;
-
-#line 111 "..\blib\lib\Tk\Scale.pm (autosplit into ..\blib\lib\auto\Tk\Scale\Leave.al)"
-sub Leave
-{
- my ($w) = @_;
- $w->configure('-activebackground',$w->{'activeBg'}) if ($Tk::strictMotif);
- $w->configure('-state','normal') if ($w->cget('-state') eq 'active');
-}
-
-# end of Tk::Scale::Leave
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/Scale.bs b/Master/tlpkg/tlperl/lib/auto/Tk/Scale/Scale.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/Scale.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/Scale.dll b/Master/tlpkg/tlperl/lib/auto/Tk/Scale/Scale.dll
deleted file mode 100755
index a63ac1d0213..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/Scale.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/autosplit.ix b/Master/tlpkg/tlperl/lib/auto/Tk/Scale/autosplit.ix
deleted file mode 100644
index a5c5d2292f2..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scale/autosplit.ix
+++ /dev/null
@@ -1,22 +0,0 @@
-# Index created by AutoSplit for ..\blib\lib\Tk\Scale.pm
-# (file acts as timestamp)
-package Tk::Scale;
-sub Activate
-;
-sub Leave
-;
-sub Enter
-;
-sub ButtonUp
-;
-sub ButtonDown
-;
-sub Drag
-;
-sub EndDrag
-;
-sub Increment
-;
-sub ControlPress
-;
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ButtonDown.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ButtonDown.al
deleted file mode 100644
index d80e2217abc..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ButtonDown.al
+++ /dev/null
@@ -1,55 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 116 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\ButtonDown.al)"
-# tkScrollButtonDown --
-# This procedure is invoked when a button is pressed in a scrollbar.
-# It changes the way the scrollbar is displayed and takes actions
-# depending on where the mouse is.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - Mouse coordinates.
-
-sub ButtonDown
-{my $w = shift;
- my $e = $w->XEvent;
- my $element = $w->identify($e->x,$e->y);
- $w->configure('-activerelief' => 'sunken');
- if ($e->b == 1 and
- (defined($element) && $element eq 'slider'))
- {
- $w->StartDrag($e->x,$e->y);
- }
- elsif ($e->b == 2 and
- (defined($element) && $element =~ /^(trough[12]|slider)$/o))
- {
- my $pos = $w->fraction($e->x, $e->y);
- my($head, $tail) = $w->get;
- my $len = $tail - $head;
-
- $head = $pos - $len/2;
- $tail = $pos + $len/2;
- if ($head < 0) {
- $head = 0;
- $tail = $len;
- }
- elsif ($tail > 1) {
- $head = 1 - $len;
- $tail = 1;
- }
- $w->ScrlToPos($head);
- $w->set($head, $tail);
-
- $w->StartDrag($e->x,$e->y);
- }
- else
- {
- $w->Select($element,'initial');
- }
-}
-
-# end of Tk::Scrollbar::ButtonDown
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ButtonUp.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ButtonUp.al
deleted file mode 100644
index 68857548755..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ButtonUp.al
+++ /dev/null
@@ -1,26 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 163 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\ButtonUp.al)"
-# tkScrollButtonUp --
-# This procedure is invoked when a button is released in a scrollbar.
-# It cancels scans and auto-repeats that were in progress, and restores
-# the way the active element is displayed.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - Mouse coordinates.
-
-sub ButtonUp
-{my $w = shift;
- my $e = $w->XEvent;
- $w->CancelRepeat;
- $w->configure('-activerelief' => 'raised');
- $w->EndDrag($e->x,$e->y);
- $w->activate($w->identify($e->x,$e->y));
-}
-
-# end of Tk::Scrollbar::ButtonUp
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Drag.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Drag.al
deleted file mode 100644
index 988f9d4a3ef..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Drag.al
+++ /dev/null
@@ -1,43 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 262 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\Drag.al)"
-# tkScrollDrag --
-# This procedure is called for each mouse motion even when the slider
-# is being dragged. It notifies the associated widget if we're not
-# jump scrolling, and it just updates the scrollbar if we are jump
-# scrolling.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - The current mouse position.
-
-sub Drag
-{
- my($w,$x,$y) = @_;
- return if !defined $initPos;
- my $delta = $w->delta($x-$pressX, $y-$pressY);
- if ($w->cget('-jump'))
- {
- if (@initValues == 2)
- {
- $w->set($initValues[0]+$delta, $initValues[1]+$delta);
- }
- else
- {
- $delta = sprintf "%d", $delta * $initValues[0]; # round()
- $initValues[2] += $delta;
- $initValues[3] += $delta;
- $w->set(@initValues[2,3]);
- }
- }
- else
- {
- $w->ScrlToPos($initPos+$delta);
- }
-}
-
-# end of Tk::Scrollbar::Drag
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/EndDrag.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/EndDrag.al
deleted file mode 100644
index 8c401b6fc31..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/EndDrag.al
+++ /dev/null
@@ -1,28 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 297 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\EndDrag.al)"
-# tkScrollEndDrag --
-# This procedure is called to end an interactive drag of the slider.
-# It scrolls the window if we're in jump mode, otherwise it does nothing.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - The mouse position at the end of the drag operation.
-
-sub EndDrag
-{
- my($w,$x,$y) = @_;
- return if (!defined $initPos);
- if ($w->cget('-jump'))
- {
- my $delta = $w->delta($x-$pressX, $y-$pressY);
- $w->ScrlToPos($initPos+$delta);
- }
- undef $initPos;
-}
-
-# end of Tk::Scrollbar::EndDrag
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Enter.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Enter.al
deleted file mode 100644
index 9584a7fa34c..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Enter.al
+++ /dev/null
@@ -1,21 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 86 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\Enter.al)"
-sub Enter
-{
- my $w = shift;
- my $e = $w->XEvent;
- if ($Tk::strictMotif)
- {
- my $bg = $w->cget('-background');
- $activeBg = $w->cget('-activebackground');
- $w->configure('-activebackground' => $bg);
- }
- $w->activate($w->identify($e->x,$e->y));
-}
-
-# end of Tk::Scrollbar::Enter
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Leave.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Leave.al
deleted file mode 100644
index a6c5e89d91e..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Leave.al
+++ /dev/null
@@ -1,18 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 99 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\Leave.al)"
-sub Leave
-{
- my $w = shift;
- if ($Tk::strictMotif)
- {
- $w->configure('-activebackground' => $activeBg) if (defined $activeBg) ;
- }
- $w->activate('');
-}
-
-# end of Tk::Scrollbar::Leave
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Motion.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Motion.al
deleted file mode 100644
index 46aac656c70..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Motion.al
+++ /dev/null
@@ -1,15 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 109 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\Motion.al)"
-sub Motion
-{
- my $w = shift;
- my $e = $w->XEvent;
- $w->activate($w->identify($e->x,$e->y));
-}
-
-# end of Tk::Scrollbar::Motion
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ScrlByPages.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ScrlByPages.al
deleted file mode 100644
index 9d4018e9128..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ScrlByPages.al
+++ /dev/null
@@ -1,38 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 346 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\ScrlByPages.al)"
-# tkScrlByPages --
-# This procedure tells the scrollbar's associated widget to scroll up
-# or down by a given number of screenfuls. It notifies the associated
-# widget in different ways for old and new command syntaxes.
-#
-# Arguments:
-# w - The scrollbar widget.
-# orient - Which kinds of scrollbars this applies to: "h" for
-# horizontal, "v" for vertical, "hv" for both.
-# amount - How many screens to scroll: typically 1 or -1.
-
-sub ScrlByPages
-{
- my $w = shift;
- my $orient = shift;
- my $amount = shift;
- my $cmd = $w->cget('-command');
- return unless (defined $cmd);
- return if (index($orient,substr($w->cget('-orient'),0,1)) < 0);
- my @info = $w->get;
- if (@info == 2)
- {
- $cmd->Call('scroll',$amount,'pages');
- }
- else
- {
- $cmd->Call($info[2]+$amount*($info[1]-1));
- }
-}
-
-# end of Tk::Scrollbar::ScrlByPages
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ScrlByUnits.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ScrlByUnits.al
deleted file mode 100644
index a364b3e52ce..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ScrlByUnits.al
+++ /dev/null
@@ -1,37 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 317 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\ScrlByUnits.al)"
-# tkScrlByUnits --
-# This procedure tells the scrollbar's associated widget to scroll up
-# or down by a given number of units. It notifies the associated widget
-# in different ways for old and new command syntaxes.
-#
-# Arguments:
-# w - The scrollbar widget.
-# orient - Which kinds of scrollbars this applies to: "h" for
-# horizontal, "v" for vertical, "hv" for both.
-# amount - How many units to scroll: typically 1 or -1.
-
-sub ScrlByUnits
-{my $w = shift;
- my $orient = shift;
- my $amount = shift;
- my $cmd = $w->cget('-command');
- return unless (defined $cmd);
- return if (index($orient,substr($w->cget('-orient'),0,1)) < 0);
- my @info = $w->get;
- if (@info == 2)
- {
- $cmd->Call('scroll',$amount,'units');
- }
- else
- {
- $cmd->Call($info[2]+$amount);
- }
-}
-
-# end of Tk::Scrollbar::ScrlByUnits
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ScrlToPos.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ScrlToPos.al
deleted file mode 100644
index e277237953e..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ScrlToPos.al
+++ /dev/null
@@ -1,35 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 376 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\ScrlToPos.al)"
-# tkScrlToPos --
-# This procedure tells the scrollbar's associated widget to scroll to
-# a particular location, given by a fraction between 0 and 1. It notifies
-# the associated widget in different ways for old and new command syntaxes.
-#
-# Arguments:
-# w - The scrollbar widget.
-# pos - A fraction between 0 and 1 indicating a desired position
-# in the document.
-
-sub ScrlToPos
-{
- my $w = shift;
- my $pos = shift;
- my $cmd = $w->cget('-command');
- return unless (defined $cmd);
- my @info = $w->get;
- if (@info == 2)
- {
- $cmd->Call('moveto',$pos);
- }
- else
- {
- $cmd->Call(int($info[0]*$pos));
- }
-}
-
-# end of Tk::Scrollbar::ScrlToPos
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ScrlTopBottom.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ScrlTopBottom.al
deleted file mode 100644
index 7a00efe616f..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/ScrlTopBottom.al
+++ /dev/null
@@ -1,32 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 403 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\ScrlTopBottom.al)"
-# tkScrlTopBottom
-# Scroll to the top or bottom of the document, depending on the mouse
-# position.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - Mouse coordinates within the widget.
-
-sub ScrlTopBottom
-{
- my $w = shift;
- my $e = $w->XEvent;
- my $element = $w->identify($e->x,$e->y);
- return unless ($element);
- if ($element =~ /1$/)
- {
- $w->ScrlToPos(0);
- }
- elsif ($element =~ /2$/)
- {
- $w->ScrlToPos(1);
- }
-}
-
-1;
-# end of Tk::Scrollbar::ScrlTopBottom
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Scrollbar.bs b/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Scrollbar.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Scrollbar.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Scrollbar.dll b/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Scrollbar.dll
deleted file mode 100755
index e8caf25b628..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Scrollbar.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Select.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Select.al
deleted file mode 100644
index 0da50da443b..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/Select.al
+++ /dev/null
@@ -1,59 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 181 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\Select.al)"
-# tkScrollSelect --
-# This procedure is invoked when button 1 is pressed over the scrollbar.
-# It invokes one of several scrolling actions depending on where in
-# the scrollbar the button was pressed.
-#
-# Arguments:
-# w - The scrollbar widget.
-# element - The element of the scrollbar that was selected, such
-# as "arrow1" or "trough2". Shouldn't be "slider".
-# repeat - Whether and how to auto-repeat the action: "noRepeat"
-# means don't auto-repeat, "initial" means this is the
-# first action in an auto-repeat sequence, and "again"
-# means this is the second repetition or later.
-
-sub Select
-{
- my $w = shift;
- my $element = shift;
- my $repeat = shift;
- return unless defined ($element);
- if ($element eq 'arrow1')
- {
- $w->ScrlByUnits('hv',-1);
- }
- elsif ($element eq 'trough1')
- {
- $w->ScrlByPages('hv',-1);
- }
- elsif ($element eq 'trough2')
- {
- $w->ScrlByPages('hv', 1);
- }
- elsif ($element eq 'arrow2')
- {
- $w->ScrlByUnits('hv', 1);
- }
- else
- {
- return;
- }
-
- if ($repeat eq 'again')
- {
- $w->RepeatId($w->after($w->cget('-repeatinterval'),['Select',$w,$element,'again']));
- }
- elsif ($repeat eq 'initial')
- {
- $w->RepeatId($w->after($w->cget('-repeatdelay'),['Select',$w,$element,'again']));
- }
-}
-
-# end of Tk::Scrollbar::Select
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/StartDrag.al b/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/StartDrag.al
deleted file mode 100644
index 32edbfdef24..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/StartDrag.al
+++ /dev/null
@@ -1,38 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 232 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\StartDrag.al)"
-# tkScrollStartDrag --
-# This procedure is called to initiate a drag of the slider. It just
-# remembers the starting position of the slider.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - The mouse position at the start of the drag operation.
-
-sub StartDrag
-{
- my($w,$x,$y) = @_;
- return unless (defined ($w->cget('-command')));
- $pressX = $x;
- $pressY = $y;
- @initValues = $w->get;
- my $iv0 = $initValues[0];
- if (@initValues == 2)
- {
- $initPos = $iv0;
- }
- elsif ($iv0 == 0)
- {
- $initPos = 0;
- }
- else
- {
- $initPos = $initValues[2]/$initValues[0];
- }
-}
-
-# end of Tk::Scrollbar::StartDrag
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/autosplit.ix b/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/autosplit.ix
deleted file mode 100644
index 293d1322dd4..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Scrollbar/autosplit.ix
+++ /dev/null
@@ -1,30 +0,0 @@
-# Index created by AutoSplit for ..\blib\lib\Tk\Scrollbar.pm
-# (file acts as timestamp)
-package Tk::Scrollbar;
-sub Enter
-;
-sub Leave
-;
-sub Motion
-;
-sub ButtonDown
-;
-sub ButtonUp
-;
-sub Select
-;
-sub StartDrag
-;
-sub Drag
-;
-sub EndDrag
-;
-sub ScrlByUnits
-;
-sub ScrlByPages
-;
-sub ScrlToPos
-;
-sub ScrlTopBottom
-;
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Selection.al b/Master/tlpkg/tlperl/lib/auto/Tk/Selection.al
deleted file mode 100644
index 965dae3cc22..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Selection.al
+++ /dev/null
@@ -1,18 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 718 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\Selection.al)"
-# These wrappers don't use method syntax so need to live
-# in same package as raw Tk routines are newXS'ed into.
-
-sub Selection
-{my $widget = shift;
- my $cmd = shift;
- croak 'Use SelectionOwn/SelectionOwner' if ($cmd eq 'own');
- croak "Use Selection\u$cmd()";
-}
-
-# end of Tk::Selection
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/TList/TList.bs b/Master/tlpkg/tlperl/lib/auto/Tk/TList/TList.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/TList/TList.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/TList/TList.dll b/Master/tlpkg/tlperl/lib/auto/Tk/TList/TList.dll
deleted file mode 100755
index 24c8e9ceb5a..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/TList/TList.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Table/Create.al b/Master/tlpkg/tlperl/lib/auto/Tk/Table/Create.al
deleted file mode 100644
index 7900531ad3f..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Table/Create.al
+++ /dev/null
@@ -1,17 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Table.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Table;
-
-#line 533 "blib\lib\Tk\Table.pm (autosplit into blib\lib\auto\Tk\Table\Create.al)"
-sub Create
-{
- my $t = shift;
- my $r = shift;
- my $c = shift;
- my $kind = shift;
- $t->put($r,$c,$t->$kind(@_));
-}
-
-# end of Tk::Table::Create
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Table/Posn.al b/Master/tlpkg/tlperl/lib/auto/Tk/Table/Posn.al
deleted file mode 100644
index b625efe8212..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Table/Posn.al
+++ /dev/null
@@ -1,15 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Table.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Table;
-
-#line 552 "blib\lib\Tk\Table.pm (autosplit into blib\lib\auto\Tk\Table\Posn.al)"
-sub Posn
-{
- my ($t,$s) = @_;
- my $info = $t->{Slave}{$s->PathName};
- return (wantarray) ? @$info : $info;
-}
-
-# end of Tk::Table::Posn
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Table/autosplit.ix b/Master/tlpkg/tlperl/lib/auto/Tk/Table/autosplit.ix
deleted file mode 100644
index 1616ae28e83..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Table/autosplit.ix
+++ /dev/null
@@ -1,14 +0,0 @@
-# Index created by AutoSplit for blib\lib\Tk\Table.pm
-# (file acts as timestamp)
-package Tk::Table;
-sub Create
-;
-sub totalColumns
-;
-sub totalRows
-;
-sub Posn
-;
-sub see
-;
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Table/see.al b/Master/tlpkg/tlperl/lib/auto/Tk/Table/see.al
deleted file mode 100644
index 38841a76552..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Table/see.al
+++ /dev/null
@@ -1,46 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Table.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Table;
-
-#line 559 "blib\lib\Tk\Table.pm (autosplit into blib\lib\auto\Tk\Table\see.al)"
-sub see
-{
- my $t = shift;
- my ($row,$col) = (@_ == 2) ? @_ : @{$t->{Slave}{$_[0]->PathName}};
- my $see = 1;
- if (($row -= $t->cget('-fixedrows')) >= 0)
- {
- if ($row < $t->{Top})
- {
- $t->{Top} = $row;
- $t->QueueLayout(_ViewChange);
- $see = 0;
- }
- elsif ($row >= $t->{Bottom})
- {
- $t->{Top} += ($row - $t->{Bottom}+1);
- $t->QueueLayout(_ViewChange);
- $see = 0;
- }
- }
- if (($col -= $t->cget('-fixedcolumns')) >= 0)
- {
- if ($col < $t->{Left})
- {
- $t->{Left} = $col;
- $t->QueueLayout(_ViewChange);
- $see = 0;
- }
- elsif ($col >= $t->{Right})
- {
- $t->{Left} += ($col - $t->{Right}+1);
- $t->QueueLayout(_ViewChange);
- $see = 0;
- }
- }
- return $see;
-}
-
-1;
-# end of Tk::Table::see
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Table/totalColumns.al b/Master/tlpkg/tlperl/lib/auto/Tk/Table/totalColumns.al
deleted file mode 100644
index bee111bbe80..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Table/totalColumns.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Table.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Table;
-
-#line 542 "blib\lib\Tk\Table.pm (autosplit into blib\lib\auto\Tk\Table\totalColumns.al)"
-sub totalColumns
-{
- scalar @{shift->{'Width'}};
-}
-
-# end of Tk::Table::totalColumns
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Table/totalRows.al b/Master/tlpkg/tlperl/lib/auto/Tk/Table/totalRows.al
deleted file mode 100644
index 88591cc7cab..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Table/totalRows.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Table.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Table;
-
-#line 547 "blib\lib\Tk\Table.pm (autosplit into blib\lib\auto\Tk\Table\totalRows.al)"
-sub totalRows
-{
- scalar @{shift->{'Height'}};
-}
-
-# end of Tk::Table::totalRows
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Text/Text.bs b/Master/tlpkg/tlperl/lib/auto/Tk/Text/Text.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Text/Text.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Text/Text.dll b/Master/tlpkg/tlperl/lib/auto/Tk/Text/Text.dll
deleted file mode 100755
index 2b0235a8221..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Text/Text.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Text/autosplit.ix b/Master/tlpkg/tlperl/lib/auto/Tk/Text/autosplit.ix
deleted file mode 100644
index 48a5455c34a..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Text/autosplit.ix
+++ /dev/null
@@ -1,3 +0,0 @@
-# Index created by AutoSplit for ..\blib\lib\Tk\Text.pm
-# (file acts as timestamp)
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/TextEdit/autosplit.ix b/Master/tlpkg/tlperl/lib/auto/Tk/TextEdit/autosplit.ix
deleted file mode 100644
index d7c2cbff9ec..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/TextEdit/autosplit.ix
+++ /dev/null
@@ -1,3 +0,0 @@
-# Index created by AutoSplit for blib\lib\Tk\TextEdit.pm
-# (file acts as timestamp)
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/TextUndo/autosplit.ix b/Master/tlpkg/tlperl/lib/auto/Tk/TextUndo/autosplit.ix
deleted file mode 100644
index 3aef3c081a4..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/TextUndo/autosplit.ix
+++ /dev/null
@@ -1,3 +0,0 @@
-# Index created by AutoSplit for blib\lib\Tk\TextUndo.pm
-# (file acts as timestamp)
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/TixGrid/TixGrid.bs b/Master/tlpkg/tlperl/lib/auto/Tk/TixGrid/TixGrid.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/TixGrid/TixGrid.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/TixGrid/TixGrid.dll b/Master/tlpkg/tlperl/lib/auto/Tk/TixGrid/TixGrid.dll
deleted file mode 100755
index 7261f4fd948..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/TixGrid/TixGrid.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Tk.bs b/Master/tlpkg/tlperl/lib/auto/Tk/Tk.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Tk.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Tk.dll b/Master/tlpkg/tlperl/lib/auto/Tk/Tk.dll
deleted file mode 100755
index 8d80944808d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Tk.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_BindIn.al b/Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_BindIn.al
deleted file mode 100644
index 8a0a0a6c911..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_BindIn.al
+++ /dev/null
@@ -1,19 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Toplevel.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Toplevel;
-
-#line 128 "blib\lib\Tk\Toplevel.pm (autosplit into blib\lib\auto\Tk\Toplevel\FG_BindIn.al)"
-# tkFocusGroup_BindIn --
-#
-# Add a widget into the "FocusIn" list of the focus group. The $cmd will be
-# called when the widget is focused on by the user.
-#
-sub FG_BindIn {
- my($t, $w, $cmd) = @_;
- $t->Error("focus group \"$t\" doesn't exist") unless (exists $t->{'_fg'});
- $t->{'_FocusIn'}{$w} = Tk::Callback->new($cmd);
-}
-
-# end of Tk::Toplevel::FG_BindIn
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_BindOut.al b/Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_BindOut.al
deleted file mode 100644
index d7fb14d40dc..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_BindOut.al
+++ /dev/null
@@ -1,20 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Toplevel.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Toplevel;
-
-#line 139 "blib\lib\Tk\Toplevel.pm (autosplit into blib\lib\auto\Tk\Toplevel\FG_BindOut.al)"
-# tkFocusGroup_BindOut --
-#
-# Add a widget into the "FocusOut" list of the focus group. The
-# $cmd will be called when the widget loses the focus (User
-# types Tab or click on another widget).
-#
-sub FG_BindOut {
- my($t, $w, $cmd) = @_;
- $t->Error("focus group \"$t\" doesn't exist") unless (exists $t->{'_fg'});
- $t->{'_FocusOut'}{$w} = Tk::Callback->new($cmd);
-}
-
-# end of Tk::Toplevel::FG_BindOut
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_Create.al b/Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_Create.al
deleted file mode 100644
index 34bb933cfa0..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_Create.al
+++ /dev/null
@@ -1,56 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Toplevel.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Toplevel;
-
-#line 80 "blib\lib\Tk\Toplevel.pm (autosplit into blib\lib\auto\Tk\Toplevel\FG_Create.al)"
-#----------------------------------------------------------------------
-#
-# Focus Group
-#
-# Focus groups are used to handle the user's focusing actions inside a
-# toplevel.
-#
-# One example of using focus groups is: when the user focuses on an
-# entry, the text in the entry is highlighted and the cursor is put to
-# the end of the text. When the user changes focus to another widget,
-# the text in the previously focused entry is validated.
-#
-
-#----------------------------------------------------------------------
-# tkFocusGroup_Create --
-#
-# Create a focus group. All the widgets in a focus group must be
-# within the same focus toplevel. Each toplevel can have only
-# one focus group, which is identified by the name of the
-# toplevel widget.
-#
-sub FG_Create {
- my $t = shift;
- unless (exists $t->{'_fg'}) {
- $t->{'_fg'} = 1;
- $t->bind('<FocusIn>', sub {
- my $w = shift;
- my $Ev = $w->XEvent;
- $t->FG_In($w, $Ev->d);
- }
- );
- $t->bind('<FocusOut>', sub {
- my $w = shift;
- my $Ev = $w->XEvent;
- $t->FG_Out($w, $Ev->d);
- }
- );
- $t->bind('<Destroy>', sub {
- my $w = shift;
- my $Ev = $w->XEvent;
- $t->FG_Destroy($w);
- }
- );
- # <Destroy> is not sufficient to break loops if never mapped.
- $t->OnDestroy([$t,'FG_Destroy']);
- }
-}
-
-# end of Tk::Toplevel::FG_Create
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_Destroy.al b/Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_Destroy.al
deleted file mode 100644
index e0af457799f..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_Destroy.al
+++ /dev/null
@@ -1,29 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Toplevel.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Toplevel;
-
-#line 151 "blib\lib\Tk\Toplevel.pm (autosplit into blib\lib\auto\Tk\Toplevel\FG_Destroy.al)"
-# tkFocusGroup_Destroy --
-#
-# Cleans up when members of the focus group is deleted, or when the
-# toplevel itself gets deleted.
-#
-sub FG_Destroy {
- my($t, $w) = @_;
- if (!defined($w) || $t == $w) {
- delete $t->{'_fg'};
- delete $t->{'_focus'};
- delete $t->{'_FocusOut'};
- delete $t->{'_FocusIn'};
- } else {
- if (exists $t->{'_focus'}) {
- delete $t->{'_focus'} if ($t->{'_focus'} == $w);
- }
- delete $t->{'_FocusIn'}{$w};
- delete $t->{'_FocusOut'}{$w};
- }
-}
-
-# end of Tk::Toplevel::FG_Destroy
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_In.al b/Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_In.al
deleted file mode 100644
index 74cf18b9b9d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_In.al
+++ /dev/null
@@ -1,24 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Toplevel.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Toplevel;
-
-#line 172 "blib\lib\Tk\Toplevel.pm (autosplit into blib\lib\auto\Tk\Toplevel\FG_In.al)"
-# tkFocusGroup_In --
-#
-# Handles the <FocusIn> event. Calls the FocusIn command for the newly
-# focused widget in the focus group.
-#
-sub FG_In {
- my($t, $w, $detail) = @_;
- if (defined $t->{'_focus'} and $t->{'_focus'} eq $w) {
- # This is already in focus
- return;
- } else {
- $t->{'_focus'} = $w;
- $t->{'_FocusIn'}{$w}->Call if exists $t->{'_FocusIn'}{$w};
- }
-}
-
-# end of Tk::Toplevel::FG_In
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_Out.al b/Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_Out.al
deleted file mode 100644
index 9dfaffe9d2e..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/FG_Out.al
+++ /dev/null
@@ -1,32 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Toplevel.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Toplevel;
-
-#line 188 "blib\lib\Tk\Toplevel.pm (autosplit into blib\lib\auto\Tk\Toplevel\FG_Out.al)"
-# tkFocusGroup_Out --
-#
-# Handles the <FocusOut> event. Checks if this is really a lose
-# focus event, not one generated by the mouse moving out of the
-# toplevel window. Calls the FocusOut command for the widget
-# who loses its focus.
-#
-sub FG_Out {
- my($t, $w, $detail) = @_;
- if ($detail ne 'NotifyNonlinear' and $detail ne 'NotifyNonlinearVirtual') {
- # This is caused by mouse moving out of the window
- return;
- }
- unless (exists $t->{'_FocusOut'}{$w}) {
- return;
- } else {
- $t->{'_FocusOut'}{$w}->Call;
- delete $t->{'_focus'};
- }
-}
-
-1;
-
-__END__
-1;
-# end of Tk::Toplevel::FG_Out
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/autosplit.ix b/Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/autosplit.ix
deleted file mode 100644
index 859b90d9a40..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Toplevel/autosplit.ix
+++ /dev/null
@@ -1,10 +0,0 @@
-# Index created by AutoSplit for blib\lib\Tk\Toplevel.pm
-# (file acts as timestamp)
-package Tk::Toplevel;
-sub FG_Create ;
-sub FG_BindIn ;
-sub FG_BindOut ;
-sub FG_Destroy ;
-sub FG_In ;
-sub FG_Out ;
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/TraverseToMenu.al b/Master/tlpkg/tlperl/lib/auto/Tk/TraverseToMenu.al
deleted file mode 100644
index 2fdfc38b631..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/TraverseToMenu.al
+++ /dev/null
@@ -1,27 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 687 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\TraverseToMenu.al)"
-# tkTraverseToMenu --
-# This procedure implements keyboard traversal of menus. Given an
-# ASCII character "char", it looks for a menubutton with that character
-# underlined. If one is found, it posts the menubutton's menu
-#
-# Arguments:
-# w - Window in which the key was typed (selects
-# a toplevel window).
-# char - Character that selects a menu. The case
-# is ignored. If an empty string, nothing
-# happens.
-sub TraverseToMenu
-{
- my $w = shift;
- my $char = shift;
- return unless(defined $char && $char ne '');
- $w = $w->toplevel->FindMenu($char);
-}
-
-# end of Tk::TraverseToMenu
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Widget/ASkludge.al b/Master/tlpkg/tlperl/lib/auto/Tk/Widget/ASkludge.al
deleted file mode 100644
index 1c19caf235f..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Widget/ASkludge.al
+++ /dev/null
@@ -1,30 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Widget.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Widget;
-
-#line 1438 "blib\lib\Tk\Widget.pm (autosplit into blib\lib\auto\Tk\Widget\ASkludge.al)"
-sub ASkludge
-{
- my ($hash,$sense) = @_;
- foreach my $key (%$hash)
- {
- if ($key =~ /-.*variable/ && ref($hash->{$key}) eq 'SCALAR')
- {
- if ($sense)
- {
- my $val = ${$hash->{$key}};
- require Tie::Scalar;
- tie ${$hash->{$key}},'Tie::StdScalar';
- ${$hash->{$key}} = $val;
- }
- else
- {
- untie ${$hash->{$key}};
- }
- }
- }
-}
-
-# end of Tk::Widget::ASkludge
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Widget/autosplit.ix b/Master/tlpkg/tlperl/lib/auto/Tk/Widget/autosplit.ix
deleted file mode 100644
index b610773d4dc..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Widget/autosplit.ix
+++ /dev/null
@@ -1,11 +0,0 @@
-# Index created by AutoSplit for blib\lib\Tk\Widget.pm
-# (file acts as timestamp)
-package Tk::Widget;
-sub bindDump ;
-sub ASkludge
-;
-sub clipboardKeysyms
-;
-sub pathname
-;
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Widget/bindDump.al b/Master/tlpkg/tlperl/lib/auto/Tk/Widget/bindDump.al
deleted file mode 100644
index cafaeececde..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Widget/bindDump.al
+++ /dev/null
@@ -1,87 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Widget.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Widget;
-
-#line 1358 "blib\lib\Tk\Widget.pm (autosplit into blib\lib\auto\Tk\Widget\bindDump.al)"
-sub bindDump {
-
- # Dump lots of good binding information. This pretty-print subroutine
- # is, essentially, the following code in disguise:
- #
- # print "Binding information for $w\n";
- # foreach my $tag ($w->bindtags) {
- # printf "\n Binding tag '$tag' has these bindings:\n";
- # foreach my $binding ($w->bind($tag)) {
- # printf " $binding\n";
- # }
- # }
-
- my ($w) = @_;
-
- my (@bindtags) = $w->bindtags;
- my $digits = length( scalar @bindtags );
- my ($spc1, $spc2) = ($digits + 33, $digits + 35);
- my $format1 = "%${digits}d.";
- my $format2 = ' ' x ($digits + 2);
- my $n = 0;
-
- my @out;
- push @out, sprintf( "\n## Binding information for '%s', %s ##", $w->PathName, $w );
-
- foreach my $tag (@bindtags) {
- my (@bindings) = $w->bind($tag);
- $n++; # count this bindtag
-
- if ($#bindings == -1) {
- push @out, sprintf( "\n$format1 Binding tag '$tag' has no bindings.\n", $n );
- } else {
- push @out, sprintf( "\n$format1 Binding tag '$tag' has these bindings:\n", $n );
-
- foreach my $binding ( @bindings ) {
- my $callback = $w->bind($tag, $binding);
- push @out, sprintf( "$format2%27s : %-40s\n", $binding, $callback );
-
- if ($callback =~ /SCALAR/) {
- if (ref $$callback) {
- push @out, sprintf( "%s %s\n", ' ' x $spc1, $$callback );
- } else {
- push @out, sprintf( "%s '%s'\n", ' ' x $spc1, $$callback );
- }
- } elsif ($callback =~ /ARRAY/) {
- if (ref $callback->[0]) {
- push @out, sprintf( "%s %s\n", ' ' x $spc1, $callback->[0], "\n" );
- } else {
- push @out, sprintf( "%s '%s'\n", ' ' x $spc1, $callback->[0], "\n" );
- }
- foreach my $arg (@$callback[1 .. $#{@$callback}]) {
- if (ref $arg) {
- push @out, sprintf( "%s %-40s", ' ' x $spc2, $arg );
- } else {
- push @out, sprintf( "%s '%s'", ' ' x $spc2, $arg );
- }
-
- if (ref $arg eq 'Tk::Ev') {
- if ($arg =~ /SCALAR/) {
- push @out, sprintf( ": '$$arg'" );
- } else {
- push @out, sprintf( ": '%s'", join("' '", @$arg) );
- }
- }
-
- push @out, sprintf( "\n" );
- } # forend callback arguments
- } # ifend callback
-
- } # forend all bindings for one tag
-
- } # ifend have bindings
-
- } # forend all tags
- push @out, sprintf( "\n" );
- return @out;
-
-} # end bindDump
-
-# end of Tk::Widget::bindDump
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Widget/clipboardKeysyms.al b/Master/tlpkg/tlperl/lib/auto/Tk/Widget/clipboardKeysyms.al
deleted file mode 100644
index a5e488a7053..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Widget/clipboardKeysyms.al
+++ /dev/null
@@ -1,51 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Widget.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Widget;
-
-#line 1462 "blib\lib\Tk\Widget.pm (autosplit into blib\lib\auto\Tk\Widget\clipboardKeysyms.al)"
-# clipboardKeysyms --
-# This procedure is invoked to identify the keys that correspond to
-# the "copy", "cut", and "paste" functions for the clipboard.
-#
-# Arguments:
-# copy - Name of the key (keysym name plus modifiers, if any,
-# such as "Meta-y") used for the copy operation.
-# cut - Name of the key used for the cut operation.
-# paste - Name of the key used for the paste operation.
-#
-# This method is obsolete use clipboardOperations and abstract
-# event types instead. See Clipboard.pm and Mainwindow.pm
-
-sub clipboardKeysyms
-{
- my @class = ();
- my $mw = shift;
- if (ref $mw)
- {
- $mw = $mw->DelegateFor('bind');
- }
- else
- {
- push(@class,$mw);
- $mw = shift;
- }
- if (@_)
- {
- my $copy = shift;
- $mw->Tk::bind(@class,"<$copy>",'clipboardCopy') if (defined $copy);
- }
- if (@_)
- {
- my $cut = shift;
- $mw->Tk::bind(@class,"<$cut>",'clipboardCut') if (defined $cut);
- }
- if (@_)
- {
- my $paste = shift;
- $mw->Tk::bind(@class,"<$paste>",'clipboardPaste') if (defined $paste);
- }
-}
-
-# end of Tk::Widget::clipboardKeysyms
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Widget/pathname.al b/Master/tlpkg/tlperl/lib/auto/Tk/Widget/pathname.al
deleted file mode 100644
index 9b725dc26d0..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Widget/pathname.al
+++ /dev/null
@@ -1,15 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Widget.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Widget;
-
-#line 1505 "blib\lib\Tk\Widget.pm (autosplit into blib\lib\auto\Tk\Widget\pathname.al)"
-sub pathname
-{
- my ($w,$id) = @_;
- my $x = $w->winfo('pathname',-displayof => oct($id));
- return $x->PathName;
-}
-
-1;
-# end of Tk::Widget::pathname
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Wm/AnchorAdjust.al b/Master/tlpkg/tlperl/lib/auto/Tk/Wm/AnchorAdjust.al
deleted file mode 100644
index 538612878ed..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Wm/AnchorAdjust.al
+++ /dev/null
@@ -1,17 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Wm.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Wm;
-
-#line 87 "blib\lib\Tk\Wm.pm (autosplit into blib\lib\auto\Tk\Wm\AnchorAdjust.al)"
-sub AnchorAdjust
-{
- my ($anchor,$X,$Y,$w,$h) = @_;
- $anchor = 'c' unless (defined $anchor);
- $Y += ($anchor =~ /s/) ? $h : ($anchor =~ /n/) ? 0 : $h/2;
- $X += ($anchor =~ /e/) ? $w : ($anchor =~ /w/) ? 0 : $w/2;
- return ($X,$Y);
-}
-
-# end of Tk::Wm::AnchorAdjust
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Wm/FullScreen.al b/Master/tlpkg/tlperl/lib/auto/Tk/Wm/FullScreen.al
deleted file mode 100644
index 4d5702cc60d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Wm/FullScreen.al
+++ /dev/null
@@ -1,29 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Wm.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Wm;
-
-#line 138 "blib\lib\Tk\Wm.pm (autosplit into blib\lib\auto\Tk\Wm\FullScreen.al)"
-sub FullScreen
-{
- my $w = shift;
- my $over = (@_) ? shift : 0;
- my $width = $w->screenwidth;
- my $height = $w->screenheight;
- $w->GeometryRequest($width,$height);
- $w->overrideredirect($over & 1);
- $w->Post(0,0);
- $w->update;
- if ($over & 2)
- {
- my $x = $w->rootx;
- my $y = $w->rooty;
- $width -= 2*$x;
- $height -= $x + $y;
- $w->GeometryRequest($width,$height);
- $w->update;
- }
-}
-
-# end of Tk::Wm::FullScreen
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Wm/Popup.al b/Master/tlpkg/tlperl/lib/auto/Tk/Wm/Popup.al
deleted file mode 100644
index 3f460c5bac6..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Wm/Popup.al
+++ /dev/null
@@ -1,50 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Wm.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Wm;
-
-#line 96 "blib\lib\Tk\Wm.pm (autosplit into blib\lib\auto\Tk\Wm\Popup.al)"
-sub Popup
-{
- my $w = shift;
- $w->configure(@_) if @_;
- $w->idletasks;
- my ($mw,$mh) = ($w->reqwidth,$w->reqheight);
- my ($rx,$ry,$rw,$rh) = (0,0,0,0);
- my $base = $w->cget('-popover');
- my $outside = 0;
- if (defined $base)
- {
- if ($base eq 'cursor')
- {
- ($rx,$ry) = $w->pointerxy;
- }
- else
- {
- $rx = $base->rootx;
- $ry = $base->rooty;
- $rw = $base->Width;
- $rh = $base->Height;
- }
- }
- else
- {
- my $sc = ($w->parent) ? $w->parent->toplevel : $w;
- $rx = -$sc->vrootx;
- $ry = -$sc->vrooty;
- $rw = $w->screenwidth;
- $rh = $w->screenheight;
- }
- my ($X,$Y) = AnchorAdjust($w->cget('-overanchor'),$rx,$ry,$rw,$rh);
- ($X,$Y) = AnchorAdjust($w->cget('-popanchor'),$X,$Y,-$mw,-$mh);
- # adjust to not cross screen borders
- if ($X < 0) { $X = 0 }
- if ($Y < 0) { $Y = 0 }
- if ($mw > $w->screenwidth) { $X = 0 }
- if ($mh > $w->screenheight) { $Y = 0 }
- $w->Post($X,$Y);
- $w->waitVisibility;
-}
-
-# end of Tk::Wm::Popup
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Wm/Post.al b/Master/tlpkg/tlperl/lib/auto/Tk/Wm/Post.al
deleted file mode 100644
index f3f5c8e3e08..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Wm/Post.al
+++ /dev/null
@@ -1,20 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Wm.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Wm;
-
-#line 75 "blib\lib\Tk\Wm.pm (autosplit into blib\lib\auto\Tk\Wm\Post.al)"
-sub Post
-{
- my ($w,$X,$Y) = @_;
- $X = int($X);
- $Y = int($Y);
- $w->positionfrom('user');
- $w->geometry("+$X+$Y");
- # $w->MoveToplevelWindow($X,$Y);
- $w->deiconify;
- $w->raise;
-}
-
-# end of Tk::Wm::Post
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Wm/autosplit.ix b/Master/tlpkg/tlperl/lib/auto/Tk/Wm/autosplit.ix
deleted file mode 100644
index 201dbe8ba99..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Wm/autosplit.ix
+++ /dev/null
@@ -1,14 +0,0 @@
-# Index created by AutoSplit for blib\lib\Tk\Wm.pm
-# (file acts as timestamp)
-package Tk::Wm;
-sub Post
-;
-sub AnchorAdjust
-;
-sub Popup
-;
-sub FullScreen
-;
-sub iconposition
-;
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Wm/iconposition.al b/Master/tlpkg/tlperl/lib/auto/Tk/Wm/iconposition.al
deleted file mode 100644
index 9254968f61c..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Wm/iconposition.al
+++ /dev/null
@@ -1,24 +0,0 @@
-# NOTE: Derived from blib\lib\Tk\Wm.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Wm;
-
-#line 159 "blib\lib\Tk\Wm.pm (autosplit into blib\lib\auto\Tk\Wm\iconposition.al)"
-sub iconposition
-{
- my $w = shift;
- if (@_ == 1)
- {
- return $w->wm('iconposition',$1,$2) if $_[0] =~ /^(\d+),(\d+)$/;
- if ($_[0] =~ /^([+-])(\d+)([+-])(\d+)$/)
- {
- my $x = ($1 eq '-') ? $w->screenwidth-$2 : $2;
- my $y = ($3 eq '-') ? $w->screenheight-$4 : $4;
- return $w->wm('iconposition',$x,$y);
- }
- }
- $w->wm('iconposition',@_);
-}
-
-1;
-# end of Tk::Wm::iconposition
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/X/X.bs b/Master/tlpkg/tlperl/lib/auto/Tk/X/X.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/X/X.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/X/X.dll b/Master/tlpkg/tlperl/lib/auto/Tk/X/X.dll
deleted file mode 100755
index cbddac849e0..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/X/X.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/X/autosplit.ix b/Master/tlpkg/tlperl/lib/auto/Tk/X/autosplit.ix
deleted file mode 100644
index e63dbf19b00..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/X/autosplit.ix
+++ /dev/null
@@ -1,3 +0,0 @@
-# Index created by AutoSplit for ..\..\blib\lib\Tk\X.pm
-# (file acts as timestamp)
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Xlib/Xlib.bs b/Master/tlpkg/tlperl/lib/auto/Tk/Xlib/Xlib.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Xlib/Xlib.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Xlib/Xlib.dll b/Master/tlpkg/tlperl/lib/auto/Tk/Xlib/Xlib.dll
deleted file mode 100755
index aa4ebe56447..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/Xlib/Xlib.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/autosplit.ix b/Master/tlpkg/tlperl/lib/auto/Tk/autosplit.ix
deleted file mode 100644
index 7bd25b78a9a..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/autosplit.ix
+++ /dev/null
@@ -1,45 +0,0 @@
-# Index created by AutoSplit for blib\lib\Tk.pm
-# (file acts as timestamp)
-package Tk;
-sub Error
-;
-sub CancelRepeat
-;
-sub RepeatId
-;
-sub FocusChildren ;
-sub focusNext
-;
-sub focusPrev
-;
-sub FocusOK
-;
-sub EnterFocus
-;
-sub tabFocus
-;
-sub focusFollowsMouse
-;
-sub TraverseToMenu
-;
-sub FirstMenu
-;
-sub Selection
-;
-sub Receive
-;
-sub break
-;
-sub updateWidgets
-;
-sub ImageNames
-;
-sub ImageTypes
-;
-sub interps
-;
-sub lsearch
-;
-sub getEncoding
-;
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/break.al b/Master/tlpkg/tlperl/lib/auto/Tk/break.al
deleted file mode 100644
index 98ff783f190..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/break.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 743 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\break.al)"
-sub break
-{
- die "_TK_BREAK_\n";
-}
-
-# end of Tk::break
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/focusFollowsMouse.al b/Master/tlpkg/tlperl/lib/auto/Tk/focusFollowsMouse.al
deleted file mode 100644
index 4a26198d323..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/focusFollowsMouse.al
+++ /dev/null
@@ -1,14 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 681 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\focusFollowsMouse.al)"
-sub focusFollowsMouse
-{
- my $widget = shift;
- $widget->bind('all','<Enter>','EnterFocus');
-}
-
-# end of Tk::focusFollowsMouse
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/focusNext.al b/Master/tlpkg/tlperl/lib/auto/Tk/focusNext.al
deleted file mode 100644
index 18eece41cd6..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/focusNext.al
+++ /dev/null
@@ -1,45 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 535 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\focusNext.al)"
-sub focusNext
-{
- my $w = shift;
- my $cur = $w;
- while (1)
- {
- # Descend to just before the first child of the current widget.
- my $parent = $cur;
- my @children = $cur->FocusChildren();
- my $i = -1;
- # Look for the next sibling that isn't a top-level.
- while (1)
- {
- $i += 1;
- if ($i < @children)
- {
- $cur = $children[$i];
- next if ($cur->toplevel == $cur);
- last
- }
- # No more siblings, so go to the current widget's parent.
- # If it's a top-level, break out of the loop, otherwise
- # look for its next sibling.
- $cur = $parent;
- last if ($cur->toplevel() == $cur);
- $parent = $parent->parent();
- @children = $parent->FocusChildren();
- $i = lsearch(\@children,$cur);
- }
- if ($cur == $w || $cur->FocusOK)
- {
- $cur->tabFocus;
- return;
- }
- }
-}
-
-# end of Tk::focusNext
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/focusPrev.al b/Master/tlpkg/tlperl/lib/auto/Tk/focusPrev.al
deleted file mode 100644
index 340feab598f..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/focusPrev.al
+++ /dev/null
@@ -1,65 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 571 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\focusPrev.al)"
-# focusPrev --
-# This procedure is invoked to move the input focus to the previous
-# window before a given one. "Previous" is defined in terms of the
-# window stacking order, with all the windows underneath a given
-# top-level (no matter how deeply nested in the hierarchy) considered.
-#
-# Arguments:
-# w - Name of a window: the procedure will set the focus
-# to the previous window before this one in the traversal
-# order.
-sub focusPrev
-{
- my $w = shift;
- my $cur = $w;
- my @children;
- my $i;
- my $parent;
- while (1)
- {
- # Collect information about the current window's position
- # among its siblings. Also, if the window is a top-level,
- # then reposition to just after the last child of the window.
- if ($cur->toplevel() == $cur)
- {
- $parent = $cur;
- @children = $cur->FocusChildren();
- $i = @children;
- }
- else
- {
- $parent = $cur->parent();
- @children = $parent->FocusChildren();
- $i = lsearch(\@children,$cur);
- }
- # Go to the previous sibling, then descend to its last descendant
- # (highest in stacking order. While doing this, ignore top-levels
- # and their descendants. When we run out of descendants, go up
- # one level to the parent.
- while ($i > 0)
- {
- $i--;
- $cur = $children[$i];
- next if ($cur->toplevel() == $cur);
- $parent = $cur;
- @children = $parent->FocusChildren();
- $i = @children;
- }
- $cur = $parent;
- if ($cur == $w || $cur->FocusOK)
- {
- $cur->tabFocus;
- return;
- }
- }
-
-}
-
-# end of Tk::focusPrev
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/getEncoding.al b/Master/tlpkg/tlperl/lib/auto/Tk/getEncoding.al
deleted file mode 100644
index b9e230edbf1..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/getEncoding.al
+++ /dev/null
@@ -1,43 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 785 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\getEncoding.al)"
-sub getEncoding
-{
- my ($class,$name) = @_;
- eval { require Encode };
- if ($@)
- {
- require Tk::DummyEncode;
- return Tk::DummyEncode->getEncoding($name);
- }
- $name = $Tk::font_encoding{$name} if exists $Tk::font_encoding{$name};
- my $enc = Encode::find_encoding($name);
-
- unless ($enc)
- {
- $enc = Encode::find_encoding($name) if ($name =~ s/[-_]\d+$//)
- }
-# if ($enc)
-# {
-# print STDERR "Lookup '$name' => ".$enc->name."\n";
-# }
-# else
-# {
-# print STDERR "Failed '$name'\n";
-# }
- unless ($enc)
- {
- if ($name eq 'X11ControlChars')
- {
- require Tk::DummyEncode;
- $Encode::encoding{$name} = $enc = Tk::DummyEncode->getEncoding($name);
- }
- }
- return $enc;
-}
-
-1;
-# end of Tk::getEncoding
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/interps.al b/Master/tlpkg/tlperl/lib/auto/Tk/interps.al
deleted file mode 100644
index 9298fe95b5c..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/interps.al
+++ /dev/null
@@ -1,14 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 767 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\interps.al)"
-sub interps
-{
- my $w = shift;
- return $w->winfo('interps','-displayof');
-}
-
-# end of Tk::interps
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/lsearch.al b/Master/tlpkg/tlperl/lib/auto/Tk/lsearch.al
deleted file mode 100644
index 7fa5d5839de..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/lsearch.al
+++ /dev/null
@@ -1,19 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 773 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\lsearch.al)"
-sub lsearch
-{my $ar = shift;
- my $x = shift;
- my $i;
- for ($i = 0; $i < scalar @$ar; $i++)
- {
- return $i if ($$ar[$i] eq $x);
- }
- return -1;
-}
-
-# end of Tk::lsearch
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/pTk/extralibs.ld b/Master/tlpkg/tlperl/lib/auto/Tk/pTk/extralibs.ld
deleted file mode 100644
index 9f42bd72dec..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/pTk/extralibs.ld
+++ /dev/null
@@ -1 +0,0 @@
-x:\msys\mingw\lib\libcomdlg32.a x:\msys\mingw\lib\libgdi32.a x:\msys\mingw\lib\libmsvcrt.a x:\msys\mingw\lib\libmoldname.a x:\msys\mingw\lib\libkernel32.a x:\msys\mingw\lib\libuser32.a x:\msys\mingw\lib\libgdi32.a x:\msys\mingw\lib\libwinspool.a x:\msys\mingw\lib\libcomdlg32.a x:\msys\mingw\lib\libadvapi32.a x:\msys\mingw\lib\libshell32.a x:\msys\mingw\lib\libole32.a x:\msys\mingw\lib\liboleaut32.a x:\msys\mingw\lib\libnetapi32.a x:\msys\mingw\lib\libuuid.a x:\msys\mingw\lib\libws2_32.a x:\msys\mingw\lib\libmpr.a x:\msys\mingw\lib\libwinmm.a x:\msys\mingw\lib\libversion.a x:\msys\mingw\lib\libodbc32.a x:\msys\mingw\lib\libodbccp32.a
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/tabFocus.al b/Master/tlpkg/tlperl/lib/auto/Tk/tabFocus.al
deleted file mode 100644
index 7a4ffdf80f0..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/tabFocus.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 676 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\tabFocus.al)"
-sub tabFocus
-{
- shift->Tk::focus;
-}
-
-# end of Tk::tabFocus
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/updateWidgets.al b/Master/tlpkg/tlperl/lib/auto/Tk/updateWidgets.al
deleted file mode 100644
index 5b1bf866ead..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Tk/updateWidgets.al
+++ /dev/null
@@ -1,17 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 748 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\updateWidgets.al)"
-sub updateWidgets
-{
- my ($w) = @_;
- while ($w->DoOneEvent(DONT_WAIT|IDLE_EVENTS|WINDOW_EVENTS))
- {
- }
- $w;
-}
-
-# end of Tk::updateWidgets
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/API/API.bs b/Master/tlpkg/tlperl/lib/auto/Win32/API/API.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/API/API.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/API/API.dll b/Master/tlpkg/tlperl/lib/auto/Win32/API/API.dll
deleted file mode 100755
index 3a7efc0adca..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/API/API.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/API/Callback/Callback.bs b/Master/tlpkg/tlperl/lib/auto/Win32/API/Callback/Callback.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/API/Callback/Callback.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/API/Callback/Callback.dll b/Master/tlpkg/tlperl/lib/auto/Win32/API/Callback/Callback.dll
deleted file mode 100755
index 147c679d576..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/API/Callback/Callback.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/ChangeNotify/ChangeNotify.bs b/Master/tlpkg/tlperl/lib/auto/Win32/ChangeNotify/ChangeNotify.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/ChangeNotify/ChangeNotify.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/ChangeNotify/ChangeNotify.dll b/Master/tlpkg/tlperl/lib/auto/Win32/ChangeNotify/ChangeNotify.dll
deleted file mode 100755
index d2aea9dad9b..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/ChangeNotify/ChangeNotify.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Clipboard/Clipboard.bs b/Master/tlpkg/tlperl/lib/auto/Win32/Clipboard/Clipboard.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Clipboard/Clipboard.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Clipboard/Clipboard.dll b/Master/tlpkg/tlperl/lib/auto/Win32/Clipboard/Clipboard.dll
deleted file mode 100755
index d278ab5a424..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Clipboard/Clipboard.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Console/Console.bs b/Master/tlpkg/tlperl/lib/auto/Win32/Console/Console.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Console/Console.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Console/Console.dll b/Master/tlpkg/tlperl/lib/auto/Win32/Console/Console.dll
deleted file mode 100755
index 1063d12ed68..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Console/Console.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Event/Event.bs b/Master/tlpkg/tlperl/lib/auto/Win32/Event/Event.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Event/Event.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Event/Event.dll b/Master/tlpkg/tlperl/lib/auto/Win32/Event/Event.dll
deleted file mode 100755
index 60b2bebca01..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Event/Event.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/EventLog/EventLog.bs b/Master/tlpkg/tlperl/lib/auto/Win32/EventLog/EventLog.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/EventLog/EventLog.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/EventLog/EventLog.dll b/Master/tlpkg/tlperl/lib/auto/Win32/EventLog/EventLog.dll
deleted file mode 100755
index 61e6c54c3ef..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/EventLog/EventLog.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/File/File.bs b/Master/tlpkg/tlperl/lib/auto/Win32/File/File.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/File/File.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/File/File.dll b/Master/tlpkg/tlperl/lib/auto/Win32/File/File.dll
deleted file mode 100755
index 70f4a8f8849..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/File/File.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/FileSecurity/FileSecurity.bs b/Master/tlpkg/tlperl/lib/auto/Win32/FileSecurity/FileSecurity.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/FileSecurity/FileSecurity.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/FileSecurity/FileSecurity.dll b/Master/tlpkg/tlperl/lib/auto/Win32/FileSecurity/FileSecurity.dll
deleted file mode 100755
index 402775123a1..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/FileSecurity/FileSecurity.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/IPC/IPC.bs b/Master/tlpkg/tlperl/lib/auto/Win32/IPC/IPC.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/IPC/IPC.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/IPC/IPC.dll b/Master/tlpkg/tlperl/lib/auto/Win32/IPC/IPC.dll
deleted file mode 100755
index e12f04c7c0a..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/IPC/IPC.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Internet/Internet.bs b/Master/tlpkg/tlperl/lib/auto/Win32/Internet/Internet.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Internet/Internet.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Internet/Internet.dll b/Master/tlpkg/tlperl/lib/auto/Win32/Internet/Internet.dll
deleted file mode 100755
index ae5b15e9cd3..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Internet/Internet.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Job/Job.bs b/Master/tlpkg/tlperl/lib/auto/Win32/Job/Job.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Job/Job.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Job/Job.dll b/Master/tlpkg/tlperl/lib/auto/Win32/Job/Job.dll
deleted file mode 100755
index 46db0b6a335..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Job/Job.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Mutex/Mutex.bs b/Master/tlpkg/tlperl/lib/auto/Win32/Mutex/Mutex.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Mutex/Mutex.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Mutex/Mutex.dll b/Master/tlpkg/tlperl/lib/auto/Win32/Mutex/Mutex.dll
deleted file mode 100755
index db311a4b229..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Mutex/Mutex.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/NetAdmin/NetAdmin.bs b/Master/tlpkg/tlperl/lib/auto/Win32/NetAdmin/NetAdmin.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/NetAdmin/NetAdmin.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/NetAdmin/NetAdmin.dll b/Master/tlpkg/tlperl/lib/auto/Win32/NetAdmin/NetAdmin.dll
deleted file mode 100755
index c9c353b1624..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/NetAdmin/NetAdmin.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/NetResource/NetResource.bs b/Master/tlpkg/tlperl/lib/auto/Win32/NetResource/NetResource.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/NetResource/NetResource.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/NetResource/NetResource.dll b/Master/tlpkg/tlperl/lib/auto/Win32/NetResource/NetResource.dll
deleted file mode 100755
index e28382b65b9..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/NetResource/NetResource.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/NetResource/autosplit.ix b/Master/tlpkg/tlperl/lib/auto/Win32/NetResource/autosplit.ix
deleted file mode 100644
index 5a940127951..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/NetResource/autosplit.ix
+++ /dev/null
@@ -1,3 +0,0 @@
-# Index created by AutoSplit for ..\blib\lib\Win32\NetResource.pm
-# (file acts as timestamp)
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/ODBC/ODBC.bs b/Master/tlpkg/tlperl/lib/auto/Win32/ODBC/ODBC.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/ODBC/ODBC.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/ODBC/ODBC.dll b/Master/tlpkg/tlperl/lib/auto/Win32/ODBC/ODBC.dll
deleted file mode 100755
index c3a55ff68f4..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/ODBC/ODBC.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/OLE/OLE.bs b/Master/tlpkg/tlperl/lib/auto/Win32/OLE/OLE.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/OLE/OLE.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/OLE/OLE.dll b/Master/tlpkg/tlperl/lib/auto/Win32/OLE/OLE.dll
deleted file mode 100755
index a8bb4eb0097..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/OLE/OLE.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/PerfLib/PerfLib.bs b/Master/tlpkg/tlperl/lib/auto/Win32/PerfLib/PerfLib.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/PerfLib/PerfLib.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/PerfLib/PerfLib.dll b/Master/tlpkg/tlperl/lib/auto/Win32/PerfLib/PerfLib.dll
deleted file mode 100755
index c0aa61962ae..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/PerfLib/PerfLib.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/PerfLib/autosplit.ix b/Master/tlpkg/tlperl/lib/auto/Win32/PerfLib/autosplit.ix
deleted file mode 100644
index e8fc6693cb5..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/PerfLib/autosplit.ix
+++ /dev/null
@@ -1,3 +0,0 @@
-# Index created by AutoSplit for ..\blib\lib\Win32\PerfLib.pm
-# (file acts as timestamp)
-1;
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Pipe/Pipe.bs b/Master/tlpkg/tlperl/lib/auto/Win32/Pipe/Pipe.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Pipe/Pipe.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Pipe/Pipe.dll b/Master/tlpkg/tlperl/lib/auto/Win32/Pipe/Pipe.dll
deleted file mode 100755
index d6db3893029..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Pipe/Pipe.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Process/Process.bs b/Master/tlpkg/tlperl/lib/auto/Win32/Process/Process.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Process/Process.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Process/Process.dll b/Master/tlpkg/tlperl/lib/auto/Win32/Process/Process.dll
deleted file mode 100755
index d5d417912da..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Process/Process.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Registry/Registry.bs b/Master/tlpkg/tlperl/lib/auto/Win32/Registry/Registry.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Registry/Registry.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Registry/Registry.dll b/Master/tlpkg/tlperl/lib/auto/Win32/Registry/Registry.dll
deleted file mode 100755
index b1dfb36fd34..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Registry/Registry.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Semaphore/Semaphore.bs b/Master/tlpkg/tlperl/lib/auto/Win32/Semaphore/Semaphore.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Semaphore/Semaphore.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Semaphore/Semaphore.dll b/Master/tlpkg/tlperl/lib/auto/Win32/Semaphore/Semaphore.dll
deleted file mode 100755
index 3ab2f6f4850..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Semaphore/Semaphore.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Service/Service.bs b/Master/tlpkg/tlperl/lib/auto/Win32/Service/Service.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Service/Service.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Service/Service.dll b/Master/tlpkg/tlperl/lib/auto/Win32/Service/Service.dll
deleted file mode 100755
index 7a6be008842..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Service/Service.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Shortcut/Shortcut.bs b/Master/tlpkg/tlperl/lib/auto/Win32/Shortcut/Shortcut.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Shortcut/Shortcut.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Shortcut/Shortcut.dll b/Master/tlpkg/tlperl/lib/auto/Win32/Shortcut/Shortcut.dll
deleted file mode 100755
index 17889059886..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Shortcut/Shortcut.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Sound/Sound.bs b/Master/tlpkg/tlperl/lib/auto/Win32/Sound/Sound.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Sound/Sound.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Sound/Sound.dll b/Master/tlpkg/tlperl/lib/auto/Win32/Sound/Sound.dll
deleted file mode 100755
index 6dd86ff29f8..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Sound/Sound.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Win32.bs b/Master/tlpkg/tlperl/lib/auto/Win32/Win32.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Win32.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Win32.dll b/Master/tlpkg/tlperl/lib/auto/Win32/Win32.dll
deleted file mode 100755
index ad5bc6b0082..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Win32.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/WinError/WinError.bs b/Master/tlpkg/tlperl/lib/auto/Win32/WinError/WinError.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/WinError/WinError.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/WinError/WinError.dll b/Master/tlpkg/tlperl/lib/auto/Win32/WinError/WinError.dll
deleted file mode 100755
index d63300a7405..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32/WinError/WinError.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32API/Registry/Registry.bs b/Master/tlpkg/tlperl/lib/auto/Win32API/Registry/Registry.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32API/Registry/Registry.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32API/Registry/Registry.dll b/Master/tlpkg/tlperl/lib/auto/Win32API/Registry/Registry.dll
deleted file mode 100755
index 45b7bc0688a..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/Win32API/Registry/Registry.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/re/re.bs b/Master/tlpkg/tlperl/lib/auto/re/re.bs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/re/re.bs
+++ /dev/null
diff --git a/Master/tlpkg/tlperl/lib/auto/re/re.dll b/Master/tlpkg/tlperl/lib/auto/re/re.dll
deleted file mode 100755
index d2c1852db63..00000000000
--- a/Master/tlpkg/tlperl/lib/auto/re/re.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/base.pm b/Master/tlpkg/tlperl/lib/base.pm
deleted file mode 100644
index 001914be4d3..00000000000
--- a/Master/tlpkg/tlperl/lib/base.pm
+++ /dev/null
@@ -1,226 +0,0 @@
-package base;
-
-use strict 'vars';
-use vars qw($VERSION);
-$VERSION = '2.07';
-
-# constant.pm is slow
-sub SUCCESS () { 1 }
-
-sub PUBLIC () { 2**0 }
-sub PRIVATE () { 2**1 }
-sub INHERITED () { 2**2 }
-sub PROTECTED () { 2**3 }
-
-
-my $Fattr = \%fields::attr;
-
-sub has_fields {
- my($base) = shift;
- my $fglob = ${"$base\::"}{FIELDS};
- return( ($fglob && *$fglob{HASH}) ? 1 : 0 );
-}
-
-sub has_version {
- my($base) = shift;
- my $vglob = ${$base.'::'}{VERSION};
- return( ($vglob && *$vglob{SCALAR}) ? 1 : 0 );
-}
-
-sub has_attr {
- my($proto) = shift;
- my($class) = ref $proto || $proto;
- return exists $Fattr->{$class};
-}
-
-sub get_attr {
- $Fattr->{$_[0]} = [1] unless $Fattr->{$_[0]};
- return $Fattr->{$_[0]};
-}
-
-if ($] < 5.009) {
- *get_fields = sub {
- # Shut up a possible typo warning.
- () = \%{$_[0].'::FIELDS'};
- my $f = \%{$_[0].'::FIELDS'};
-
- # should be centralized in fields? perhaps
- # fields::mk_FIELDS_be_OK. Peh. As long as %{ $package . '::FIELDS' }
- # is used here anyway, it doesn't matter.
- bless $f, 'pseudohash' if (ref($f) ne 'pseudohash');
-
- return $f;
- }
-}
-else {
- *get_fields = sub {
- # Shut up a possible typo warning.
- () = \%{$_[0].'::FIELDS'};
- return \%{$_[0].'::FIELDS'};
- }
-}
-
-sub import {
- my $class = shift;
-
- return SUCCESS unless @_;
-
- # List of base classes from which we will inherit %FIELDS.
- my $fields_base;
-
- my $inheritor = caller(0);
-
- foreach my $base (@_) {
- next if $inheritor->isa($base);
-
- if (has_version($base)) {
- ${$base.'::VERSION'} = '-1, set by base.pm'
- unless defined ${$base.'::VERSION'};
- }
- else {
- local $SIG{__DIE__};
- 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 (%{"$base\::"}) {
- require Carp;
- Carp::croak(<<ERROR);
-Base class package "$base" is empty.
- (Perhaps you need to 'use' the module which defines that package first.)
-ERROR
-
- }
- ${$base.'::VERSION'} = "-1, set by base.pm"
- unless defined ${$base.'::VERSION'};
- }
- push @{"$inheritor\::ISA"}, $base;
-
- if ( has_fields($base) || has_attr($base) ) {
- # No multiple fields inheritence *suck*
- if ($fields_base) {
- require Carp;
- Carp::croak("Can't multiply inherit %FIELDS");
- } else {
- $fields_base = $base;
- }
- }
- }
-
- if( defined $fields_base ) {
- inherit_fields($inheritor, $fields_base);
- }
-}
-
-
-sub inherit_fields {
- my($derived, $base) = @_;
-
- return SUCCESS unless $base;
-
- my $battr = get_attr($base);
- my $dattr = get_attr($derived);
- my $dfields = get_fields($derived);
- my $bfields = get_fields($base);
-
- $dattr->[0] = @$battr;
-
- if( keys %$dfields ) {
- warn "$derived is inheriting from $base but already has its own ".
- "fields!\n".
- "This will cause problems.\n".
- "Be sure you use base BEFORE declaring fields\n";
- }
-
- # Iterate through the base's fields adding all the non-private
- # ones to the derived class. Hang on to the original attribute
- # (Public, Private, etc...) and add Inherited.
- # This is all too complicated to do efficiently with add_fields().
- while (my($k,$v) = each %$bfields) {
- my $fno;
- if ($fno = $dfields->{$k} and $fno != $v) {
- require Carp;
- Carp::croak ("Inherited %FIELDS can't override existing %FIELDS");
- }
-
- if( $battr->[$v] & PRIVATE ) {
- $dattr->[$v] = PRIVATE | INHERITED;
- }
- else {
- $dattr->[$v] = INHERITED | $battr->[$v];
- $dfields->{$k} = $v;
- }
- }
-
- foreach my $idx (1..$#{$battr}) {
- next if defined $dattr->[$idx];
- $dattr->[$idx] = $battr->[$idx] & INHERITED;
- }
-}
-
-
-1;
-
-__END__
-
-=head1 NAME
-
-base - Establish IS-A relationship with base classes at compile time
-
-=head1 SYNOPSIS
-
- package Baz;
- use base qw(Foo Bar);
-
-=head1 DESCRIPTION
-
-Allows you to both load one or more modules, while setting up inheritance from
-those modules at the same time. Roughly similar in effect to
-
- package Baz;
- BEGIN {
- require Foo;
- require Bar;
- push @ISA, qw(Foo Bar);
- }
-
-If any of the listed modules are not loaded yet, I<base> silently attempts to
-C<require> them (and silently continues if the C<require> failed). Whether to
-C<require> a base class module is determined by the absence of a global variable
-$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, set by base.pm>.
-
-Will also initialize the fields if one of the base classes has it.
-Multiple inheritence of fields is B<NOT> supported, if two or more
-base classes each have inheritable fields the 'base' pragma will
-croak. See L<fields>, L<public> and L<protected> for a description of
-this feature.
-
-=head1 DIAGNOSTICS
-
-=over 4
-
-=item Base class package "%s" is empty.
-
-base.pm was unable to require the base package, because it was not
-found in your path.
-
-=back
-
-=head1 HISTORY
-
-This module was introduced with Perl 5.004_04.
-
-
-=head1 CAVEATS
-
-Due to the limitations of the implementation, you must use
-base I<before> you declare any of your own fields.
-
-
-=head1 SEE ALSO
-
-L<fields>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/bytes.pm b/Master/tlpkg/tlperl/lib/bytes.pm
deleted file mode 100644
index a8222794ddf..00000000000
--- a/Master/tlpkg/tlperl/lib/bytes.pm
+++ /dev/null
@@ -1,88 +0,0 @@
-package bytes;
-
-our $VERSION = '1.02';
-
-$bytes::hint_bits = 0x00000008;
-
-sub import {
- $^H |= $bytes::hint_bits;
-}
-
-sub unimport {
- $^H &= ~$bytes::hint_bits;
-}
-
-sub AUTOLOAD {
- require "bytes_heavy.pl";
- goto &$AUTOLOAD if defined &$AUTOLOAD;
- require Carp;
- Carp::croak("Undefined subroutine $AUTOLOAD called");
-}
-
-sub length ($);
-sub chr ($);
-sub ord ($);
-sub substr ($$;$$);
-sub index ($$;$);
-sub rindex ($$;$);
-
-1;
-__END__
-
-=head1 NAME
-
-bytes - Perl pragma to force byte semantics rather than character semantics
-
-=head1 SYNOPSIS
-
- use bytes;
- ... chr(...); # or bytes::chr
- ... index(...); # or bytes::index
- ... length(...); # or bytes::length
- ... ord(...); # or bytes::ord
- ... rindex(...); # or bytes::rindex
- ... substr(...); # or bytes::substr
- no bytes;
-
-
-=head1 DESCRIPTION
-
-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). When C<use bytes> is in
-effect, the encoding is temporarily ignored, and each string is treated
-as a series of bytes.
-
-As an example, when Perl sees C<$x = chr(400)>, it encodes the character
-in UTF-8 and stores it in $x. Then it is marked as character data, so,
-for instance, C<length $x> returns C<1>. However, in the scope of the
-C<bytes> pragma, $x is treated as a series of bytes - the bytes that make
-up the UTF8 encoding - and C<length $x> returns C<2>:
-
- $x = chr(400);
- print "Length is ", length $x, "\n"; # "Length is 1"
- printf "Contents are %vd\n", $x; # "Contents are 400"
- {
- use bytes; # or "require bytes; bytes::length()"
- print "Length is ", length $x, "\n"; # "Length is 2"
- printf "Contents are %vd\n", $x; # "Contents are 198.144"
- }
-
-chr(), ord(), substr(), index() and rindex() behave similarly.
-
-For more on the implications and differences between character
-semantics and byte semantics, see L<perluniintro> and L<perlunicode>.
-
-=head1 LIMITATIONS
-
-bytes::substr() does not work as an lvalue().
-
-=head1 SEE ALSO
-
-L<perluniintro>, L<perlunicode>, L<utf8>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/bytes_heavy.pl b/Master/tlpkg/tlperl/lib/bytes_heavy.pl
deleted file mode 100644
index 923381de58d..00000000000
--- a/Master/tlpkg/tlperl/lib/bytes_heavy.pl
+++ /dev/null
@@ -1,40 +0,0 @@
-package bytes;
-
-sub length ($) {
- BEGIN { bytes::import() }
- return CORE::length($_[0]);
-}
-
-sub substr ($$;$$) {
- BEGIN { bytes::import() }
- return
- @_ == 2 ? CORE::substr($_[0], $_[1]) :
- @_ == 3 ? CORE::substr($_[0], $_[1], $_[2]) :
- CORE::substr($_[0], $_[1], $_[2], $_[3]) ;
-}
-
-sub ord ($) {
- BEGIN { bytes::import() }
- return CORE::ord($_[0]);
-}
-
-sub chr ($) {
- BEGIN { bytes::import() }
- return CORE::chr($_[0]);
-}
-
-sub index ($$;$) {
- BEGIN { bytes::import() }
- return
- @_ == 2 ? CORE::index($_[0], $_[1]) :
- CORE::index($_[0], $_[1], $_[2]) ;
-}
-
-sub rindex ($$;$) {
- BEGIN { bytes::import() }
- return
- @_ == 2 ? CORE::rindex($_[0], $_[1]) :
- CORE::rindex($_[0], $_[1], $_[2]) ;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/constant.pm b/Master/tlpkg/tlperl/lib/constant.pm
deleted file mode 100644
index 159c29978a5..00000000000
--- a/Master/tlpkg/tlperl/lib/constant.pm
+++ /dev/null
@@ -1,340 +0,0 @@
-package constant;
-
-use strict;
-use 5.006_00;
-use warnings::register;
-
-our($VERSION, %declared);
-$VERSION = '1.05';
-
-#=======================================================================
-
-# 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 %constants = ();
- my $multiple = ref $_[0];
-
- if ( $multiple ) {
- if (ref $_[0] ne 'HASH') {
- require Carp;
- Carp::croak("Invalid reference type '".ref(shift)."' not 'HASH'");
- }
- %constants = %{+shift};
- } else {
- $constants{+shift} = undef;
- }
-
- foreach my $name ( keys %constants ) {
- 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::");
- }
- }
-
- # 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 ($multiple) {
- my $scalar = $constants{$name};
- *$full_name = sub () { $scalar };
- } else {
- if (@_ == 1) {
- my $scalar = $_[0];
- *$full_name = sub () { $scalar };
- } elsif (@_) {
- my @list = @_;
- *$full_name = sub () { @list };
- } else {
- *$full_name = sub () { };
- }
- }
- }
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-constant - Perl pragma to declare constants
-
-=head1 SYNOPSIS
-
- use constant PI => 4 * atan2(1, 1);
- use constant DEBUG => 0;
-
- print "Pi equals ", PI, "...\n" if DEBUG;
-
- use constant {
- SEC => 0,
- MIN => 1,
- HOUR => 2,
- MDAY => 3,
- MON => 4,
- YEAR => 5,
- WDAY => 6,
- YDAY => 7,
- ISDST => 8,
- };
-
- use constant WEEKDAYS => qw(
- Sunday Monday Tuesday Wednesday Thursday Friday Saturday
- );
-
- print "Today is ", (WEEKDAYS)[ (localtime)[WDAY] ], ".\n";
-
-=head1 DESCRIPTION
-
-This will declare a symbol to be a constant with the given value.
-
-When you declare a constant such as C<PI> using the method shown
-above, each machine your script runs upon can have as many digits
-of accuracy as it can use. Also, your program will be easier to
-read, more likely to be maintained (and maintained correctly), and
-far less likely to send a space probe to the wrong planet because
-nobody noticed the one equation in which you wrote C<3.14195>.
-
-When a constant is used in an expression, perl replaces it with its
-value at compile time, and may then optimize the expression further.
-In particular, any code in an C<if (CONSTANT)> block will be optimized
-away if the constant is false.
-
-=head1 NOTES
-
-As with all C<use> directives, defining a constant happens at
-compile time. Thus, it's probably not correct to put a constant
-declaration inside of a conditional statement (like C<if ($foo)
-{ use constant ... }>).
-
-Constants defined using this module cannot be interpolated into
-strings like variables. However, concatenation works just fine:
-
- print "Pi equals PI...\n"; # WRONG: does not expand "PI"
- print "Pi equals ".PI."...\n"; # right
-
-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 ARRAY => [ 1,2,3,4 ];
- print ARRAY->[1];
- ARRAY->[1] = " be changed";
- print ARRAY->[1];
-
-Dereferencing constant references incorrectly (such as using an array
-subscript on a constant hash reference, or vice versa) will be trapped at
-compile time.
-
-Constants belong to the package they are defined in. To refer to a
-constant defined in another package, specify the full package name, as
-in C<Some::Package::CONSTANT>. Constants may be exported by modules,
-and may also be called as either class or instance methods, that is,
-as C<< Some::Package->CONSTANT >> or as C<< $obj->CONSTANT >> where
-C<$obj> is an instance of C<Some::Package>. Subclasses may define
-their own constants to override those in their base class.
-
-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 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.
-
-=head2 List constants
-
-Constants may be lists of more (or less) than one value. A constant
-with no values evaluates to C<undef> in scalar context. Note that
-constants with more than one value do I<not> return their last value in
-scalar context as one might expect. They currently return the number
-of values, but B<this may change in the future>. Do not use constants
-with multiple values in scalar context.
-
-B<NOTE:> This implies that the expression defining the value of a
-constant is evaluated in list context. This may produce surprises:
-
- use constant TIMESTAMP => localtime; # WRONG!
- use constant TIMESTAMP => scalar localtime; # right
-
-The first line above defines C<TIMESTAMP> as a 9-element list, as
-returned by localtime() in list context. To set it to the string
-returned by localtime() in scalar context, an explicit C<scalar>
-keyword is required.
-
-List constants are lists, not arrays. To index or slice them, they
-must be placed in parentheses.
-
- my @workdays = WEEKDAYS[1 .. 5]; # WRONG!
- my @workdays = (WEEKDAYS)[1 .. 5]; # right
-
-=head2 Defining multiple constants at once
-
-Instead of writing multiple C<use constant> statements, you may define
-multiple constants in a single statement by giving, instead of the
-constant name, a reference to a hash where the keys are the names of
-the constants to be defined. Obviously, all constants defined using
-this method must have a single value.
-
- use constant {
- FOO => "A single value",
- BAR => "This", "won't", "work!", # Error!
- };
-
-This is a fundamental limitation of the way hashes are constructed in
-Perl. The error messages produced when this happens will often be
-quite cryptic -- in the worst case there may be none at all, and
-you'll only later find that something is broken.
-
-When defining multiple constants, you cannot use the values of other
-constants defined in the same declaration. This is because the
-calling package doesn't know about any constant within that group
-until I<after> the C<use> statement is finished.
-
- use constant {
- BITMASK => 0xAFBAEBA8,
- NEGMASK => ~BITMASK, # Error!
- };
-
-=head2 Magic constants
-
-Magical values and references can be made into constants at compile
-time, allowing for way cool stuff like this. (These error numbers
-aren't totally portable, alas.)
-
- use constant E2BIG => ($! = 7);
- print E2BIG, "\n"; # something like "Arg list too long"
- print 0+E2BIG, "\n"; # "7"
-
-You can't produce a tied constant by giving a tied scalar as the
-value. References to tied variables, however, can be used as
-constants without any problems.
-
-=head1 TECHNICAL NOTES
-
-In the current implementation, scalar constants are actually
-inlinable subroutines. As of version 5.004 of Perl, the appropriate
-scalar constant is inserted directly in place of some subroutine
-calls, thereby saving the overhead of a subroutine call. See
-L<perlsub/"Constant Functions"> for details about how and when this
-happens.
-
-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 BUGS
-
-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 a keyword with the same
-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.
-
-Unlike constants in some languages, these cannot be overridden
-on the command line or via environment variables.
-
-You can get into trouble if you use constants in a context which
-automatically quotes barewords (as is true for any subroutine call).
-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<< => >> operator quotes a bareword
-immediately to its left, you have to say C<< CONSTANT() => 'value' >>
-(or simply use a comma in place of the big arrow) instead of
-C<< CONSTANT => 'value' >>.
-
-=head1 AUTHOR
-
-Tom Phoenix, E<lt>F<rootbeer@redcat.com>E<gt>, with help from
-many other folks.
-
-Multiple constant declarations at once added by Casey West,
-E<lt>F<casey@geeknest.com>E<gt>.
-
-Documentation mostly rewritten by Ilmari Karonen,
-E<lt>F<perl@itz.pp.sci.fi>E<gt>.
-
-=head1 COPYRIGHT
-
-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
diff --git a/Master/tlpkg/tlperl/lib/fields.pm b/Master/tlpkg/tlperl/lib/fields.pm
deleted file mode 100644
index cca778f905d..00000000000
--- a/Master/tlpkg/tlperl/lib/fields.pm
+++ /dev/null
@@ -1,319 +0,0 @@
-package fields;
-
-require 5.005;
-use strict;
-no strict 'refs';
-unless( eval q{require warnings::register; warnings::register->import} ) {
- *warnings::warnif = sub {
- require Carp;
- Carp::carp(@_);
- }
-}
-use vars qw(%attr $VERSION);
-
-$VERSION = '2.03';
-
-# constant.pm is slow
-sub PUBLIC () { 2**0 }
-sub PRIVATE () { 2**1 }
-sub INHERITED () { 2**2 }
-sub PROTECTED () { 2**3 }
-
-
-# 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 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} ||= [1]);
- my $next = @$fattr;
-
- # Quiet pseudo-hash deprecation warning for uses of fields::new.
- bless \%{"$package\::FIELDS"}, 'pseudohash';
-
- 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 (@_) {
- 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 ($fno < $fattr->[0]) {
- if ($] < 5.006001) {
- warn("Hides field '$f' in base class") if $^W;
- } else {
- warnings::warnif("Hides field '$f' in base class") ;
- }
- } else {
- Carp::croak("Field name '$f' already in use");
- }
- }
- $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 {
- require base;
- goto &base::inherit_fields;
-}
-
-sub _dump # sometimes useful for debugging
-{
- 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 $fattr & INHERITED;
- print "\t(", join(", ", @a), ")";
- }
- print "\n";
- }
- }
-}
-
-if ($] < 5.009) {
- *new = sub {
- my $class = shift;
- $class = ref $class if ref $class;
- return bless [\%{$class . "::FIELDS"}], $class;
- }
-} else {
- *new = sub {
- my $class = shift;
- $class = ref $class if ref $class;
- require Hash::Util;
- my $self = bless {}, $class;
-
- # The lock_keys() prototype won't work since we require Hash::Util :(
- &Hash::Util::lock_keys(\%$self, keys %{$class.'::FIELDS'});
- return $self;
- }
-}
-
-sub phash {
- die "Pseudo-hashes have been removed from Perl" if $] >= 5.009;
- 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;
-
-__END__
-
-=head1 NAME
-
-fields - compile-time class fields
-
-=head1 SYNOPSIS
-
- {
- package Foo;
- 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 $var = Foo->new;
- $var->{foo} = 42;
-
- # this will generate an error
- $var->{zap} = 42;
-
- # subclassing
- {
- package Bar;
- use base '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.
-
-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.
-
-B<Only valid for perl before 5.9.0:>
-
-If a typed lexical variable holding a reference is used to access a
-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.
-
-B<Only valid for perls before 5.9.0:>
-
-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. If the objects are not typed, access is only checked at
-run time.
-
-
-The following functions are supported:
-
-=over 4
-
-=item new
-
-B< perl before 5.9.0: > fields::new() creates and blesses a
-pseudo-hash comprised of the fields declared using the C<fields>
-pragma into the specified class.
-
-B< perl 5.9.0 and higher: > fields::new() creates and blesses a
-restricted-hash comprised of the fields declared using the C<fields>
-pragma into the specified class.
-
-This function is usable with or without pseudo-hashes. It is the
-recommended way to construct a fields-based object.
-
-This makes it possible to write a constructor like this:
-
- package Critter::Sounds;
- use fields qw(cat dog bird);
-
- sub new {
- my $self = shift;
- $self = fields::new($self) unless ref $self;
- $self->{cat} = 'meow'; # scalar element
- @$self{'dog','bird'} = ('bark','tweet'); # slice
- return $self;
- }
-
-=item phash
-
-B< before perl 5.9.0: >
-
-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);
-
-B< perl 5.9.0 and higher: >
-
-Pseudo-hashes have been removed from Perl as of 5.10. Consider using
-restricted hashes or fields::new() instead. Using fields::phash()
-will cause an error.
-
-=back
-
-=head1 SEE ALSO
-
-L<base>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/lib.pm b/Master/tlpkg/tlperl/lib/lib.pm
deleted file mode 100644
index 06a03502368..00000000000
--- a/Master/tlpkg/tlperl/lib/lib.pm
+++ /dev/null
@@ -1,206 +0,0 @@
-package lib;
-
-# THIS FILE IS AUTOMATICALLY GENERATED FROM lib_pm.PL.
-# ANY CHANGES TO THIS FILE WILL BE OVERWRITTEN BY THE NEXT PERL BUILD.
-
-use Config;
-
-use strict;
-
-my $archname = $Config{archname};
-my $version = $Config{version};
-my @inc_version_list = reverse split / /, $Config{inc_version_list};
-
-
-our @ORIG_INC = @INC; # take a handy copy of 'original' value
-our $VERSION = '0.5565';
-my $Is_MacOS = $^O eq 'MacOS';
-my $Mac_FS;
-if ($Is_MacOS) {
- require File::Spec;
- $Mac_FS = eval { require Mac::FileSpec::Unixish };
-}
-
-sub import {
- shift;
-
- my %names;
- foreach (reverse @_) {
- my $path = $_; # we'll be modifying it, so break the alias
- if ($path eq '') {
- require Carp;
- Carp::carp("Empty compile time value given to use lib");
- }
-
- $path = _nativize($path);
-
- if (-e $path && ! -d _) {
- require Carp;
- Carp::carp("Parameter to use lib must be directory, not file");
- }
- unshift(@INC, $path);
- # Add any previous version directories we found at configure time
- foreach my $incver (@inc_version_list)
- {
- my $dir = $Is_MacOS
- ? File::Spec->catdir( $path, $incver )
- : "$path/$incver";
- unshift(@INC, $dir) if -d $dir;
- }
- # Put a corresponding archlib directory in front of $path if it
- # looks like $path has an archlib directory below it.
- my($arch_auto_dir, $arch_dir, $version_dir, $version_arch_dir)
- = _get_dirs($path);
- unshift(@INC, $arch_dir) if -d $arch_auto_dir;
- unshift(@INC, $version_dir) if -d $version_dir;
- unshift(@INC, $version_arch_dir) if -d $version_arch_dir;
- }
-
- # remove trailing duplicates
- @INC = grep { ++$names{$_} == 1 } @INC;
- return;
-}
-
-
-sub unimport {
- shift;
-
- my %names;
- foreach (@_) {
- my $path = _nativize($_);
-
- my($arch_auto_dir, $arch_dir, $version_dir, $version_arch_dir)
- = _get_dirs($path);
- ++$names{$path};
- ++$names{$arch_dir} if -d $arch_auto_dir;
- ++$names{$version_dir} if -d $version_dir;
- ++$names{$version_arch_dir} if -d $version_arch_dir;
- }
-
- # Remove ALL instances of each named directory.
- @INC = grep { !exists $names{$_} } @INC;
- return;
-}
-
-sub _get_dirs {
- my($dir) = @_;
- my($arch_auto_dir, $arch_dir, $version_dir, $version_arch_dir);
-
- # we could use this for all platforms in the future, but leave it
- # Mac-only for now, until there is more time for testing it.
- if ($Is_MacOS) {
- $arch_auto_dir = File::Spec->catdir( $dir, $archname, 'auto' );
- $arch_dir = File::Spec->catdir( $dir, $archname, );
- $version_dir = File::Spec->catdir( $dir, $version );
- $version_arch_dir = File::Spec->catdir( $dir, $version, $archname );
- } else {
- $arch_auto_dir = "$dir/$archname/auto";
- $arch_dir = "$dir/$archname";
- $version_dir = "$dir/$version";
- $version_arch_dir = "$dir/$version/$archname";
- }
- return($arch_auto_dir, $arch_dir, $version_dir, $version_arch_dir);
-}
-
-sub _nativize {
- my($dir) = @_;
-
- if ($Is_MacOS && $Mac_FS && ! -d $dir) {
- $dir = Mac::FileSpec::Unixish::nativize($dir);
- $dir .= ":" unless $dir =~ /:$/;
- }
-
- return $dir;
-}
-
-1;
-__END__
-
-=head1 NAME
-
-lib - manipulate @INC at compile time
-
-=head1 SYNOPSIS
-
- use lib LIST;
-
- no lib LIST;
-
-=head1 DESCRIPTION
-
-This is a small simple module which simplifies the manipulation of @INC
-at compile time.
-
-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
-
-The parameters to C<use lib> are added to the start of the perl search
-path. Saying
-
- use lib LIST;
-
-is I<almost> the same as saying
-
- BEGIN { unshift(@INC, LIST) }
-
-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 added to @INC in front of $dir.
-
-To avoid memory leaks, all trailing duplicate entries in @INC are
-removed.
-
-=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
-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.
-
-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.
-
-=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
-can say
-
- @INC = @lib::ORIG_INC;
-
-=head1 CAVEATS
-
-In order to keep lib.pm small and simple, it only works with Unix
-filepaths. This doesn't mean it only works on Unix, but non-Unix
-users must first translate their file paths to Unix conventions.
-
- # VMS users wanting to put [.stuff.moo] into
- # their @INC would write
- use lib 'stuff/moo';
-
-=head1 NOTES
-
-In the future, this module will likely use File::Spec for determining
-paths, as it does now for Mac OS (where Unix-style or Mac-style paths
-work, and Unix-style paths are converted properly to Mac-style paths
-before being added to @INC).
-
-=head1 SEE ALSO
-
-FindBin - optional module which deals with paths relative to the source file.
-
-=head1 AUTHOR
-
-Tim Bunce, 2nd June 1995.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/newgetopt.pl b/Master/tlpkg/tlperl/lib/newgetopt.pl
deleted file mode 100644
index 95eef220fe7..00000000000
--- a/Master/tlpkg/tlperl/lib/newgetopt.pl
+++ /dev/null
@@ -1,75 +0,0 @@
-# $Id: newgetopt.pl,v 1.18 2001-09-21 15:34:59+02 jv Exp $
-
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-# It is now just a wrapper around the Getopt::Long module.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-# Suggested alternative: Getopt::Long
-
-{ package newgetopt;
-
- # Values for $order. See GNU getopt.c for details.
- $REQUIRE_ORDER = 0;
- $PERMUTE = 1;
- $RETURN_IN_ORDER = 2;
-
- # Handle POSIX compliancy.
- if ( defined $ENV{"POSIXLY_CORRECT"} ) {
- $autoabbrev = 0; # no automatic abbrev of options (???)
- $getopt_compat = 0; # disallow '+' to start options
- $option_start = "(--|-)";
- $order = $REQUIRE_ORDER;
- $bundling = 0;
- $passthrough = 0;
- }
- else {
- $autoabbrev = 1; # automatic abbrev of options
- $getopt_compat = 1; # allow '+' to start options
- $option_start = "(--|-|\\+)";
- $order = $PERMUTE;
- $bundling = 0;
- $passthrough = 0;
- }
-
- # Other configurable settings.
- $debug = 0; # for debugging
- $ignorecase = 1; # ignore case when matching options
- $argv_end = "--"; # don't change this!
-}
-
-use Getopt::Long;
-
-################ Subroutines ################
-
-sub NGetOpt {
-
- $Getopt::Long::debug = $newgetopt::debug
- if defined $newgetopt::debug;
- $Getopt::Long::autoabbrev = $newgetopt::autoabbrev
- if defined $newgetopt::autoabbrev;
- $Getopt::Long::getopt_compat = $newgetopt::getopt_compat
- if defined $newgetopt::getopt_compat;
- $Getopt::Long::option_start = $newgetopt::option_start
- if defined $newgetopt::option_start;
- $Getopt::Long::order = $newgetopt::order
- if defined $newgetopt::order;
- $Getopt::Long::bundling = $newgetopt::bundling
- if defined $newgetopt::bundling;
- $Getopt::Long::ignorecase = $newgetopt::ignorecase
- if defined $newgetopt::ignorecase;
- $Getopt::Long::ignorecase = $newgetopt::ignorecase
- if defined $newgetopt::ignorecase;
- $Getopt::Long::passthrough = $newgetopt::passthrough
- if defined $newgetopt::passthrough;
-
- &GetOptions;
-}
-
-################ Package return ################
-
-1;
-
-################ End of newgetopt.pl ################
diff --git a/Master/tlpkg/tlperl/lib/overload.pm b/Master/tlpkg/tlperl/lib/overload.pm
deleted file mode 100644
index 15b7e775e74..00000000000
--- a/Master/tlpkg/tlperl/lib/overload.pm
+++ /dev/null
@@ -1,1434 +0,0 @@
-package overload;
-
-our $VERSION = '1.04';
-
-$overload::hint_bits = 0x20000; # HINT_LOCALIZE_HH
-
-sub nil {}
-
-sub OVERLOAD {
- $package = shift;
- my %arg = @_;
- my ($sub, $fb);
- $ {$package . "::OVERLOAD"}{dummy}++; # Register with magic by touching.
- *{$package . "::()"} = \&nil; # Make it findable via fetchmethod.
- for (keys %arg) {
- if ($_ eq 'fallback') {
- $fb = $arg{$_};
- } else {
- $sub = $arg{$_};
- if (not ref $sub and $sub !~ /::/) {
- $ {$package . "::(" . $_} = $sub;
- $sub = \&nil;
- }
- #print STDERR "Setting `$ {'package'}::\cO$_' to \\&`$sub'.\n";
- *{$package . "::(" . $_} = \&{ $sub };
- }
- }
- ${$package . "::()"} = $fb; # Make it findable too (fallback only).
-}
-
-sub import {
- $package = (caller())[0];
- # *{$package . "::OVERLOAD"} = \&OVERLOAD;
- shift;
- $package->overload::OVERLOAD(@_);
-}
-
-sub unimport {
- $package = (caller())[0];
- ${$package . "::OVERLOAD"}{dummy}++; # Upgrade the table
- shift;
- for (@_) {
- if ($_ eq 'fallback') {
- undef $ {$package . "::()"};
- } else {
- delete $ {$package . "::"}{"(" . $_};
- }
- }
-}
-
-sub Overloaded {
- my $package = shift;
- $package = ref $package if ref $package;
- $package->can('()');
-}
-
-sub ov_method {
- my $globref = shift;
- return undef unless $globref;
- my $sub = \&{*$globref};
- return $sub if $sub ne \&nil;
- return shift->can($ {*$globref});
-}
-
-sub OverloadedStringify {
- my $package = shift;
- $package = ref $package if ref $package;
- #$package->can('(""')
- ov_method mycan($package, '(""'), $package
- or ov_method mycan($package, '(0+'), $package
- or ov_method mycan($package, '(bool'), $package
- or ov_method mycan($package, '(nomethod'), $package;
-}
-
-sub Method {
- my $package = shift;
- $package = ref $package if ref $package;
- #my $meth = $package->can('(' . shift);
- ov_method mycan($package, '(' . shift), $package;
- #return $meth if $meth ne \&nil;
- #return $ {*{$meth}};
-}
-
-sub AddrRef {
- my $package = ref $_[0];
- return "$_[0]" unless $package;
-
- require Scalar::Util;
- my $class = Scalar::Util::blessed($_[0]);
- my $class_prefix = defined($class) ? "$class=" : "";
- my $type = Scalar::Util::reftype($_[0]);
- my $addr = Scalar::Util::refaddr($_[0]);
- return sprintf("$class_prefix$type(0x%x)", $addr);
-}
-
-*StrVal = *AddrRef;
-
-sub mycan { # Real can would leave stubs.
- my ($package, $meth) = @_;
- return \*{$package . "::$meth"} if defined &{$package . "::$meth"};
- my $p;
- foreach $p (@{$package . "::ISA"}) {
- my $out = mycan($p, $meth);
- return $out if $out;
- }
- return undef;
-}
-
-%constants = (
- 'integer' => 0x1000, # HINT_NEW_INTEGER
- 'float' => 0x2000, # HINT_NEW_FLOAT
- 'binary' => 0x4000, # HINT_NEW_BINARY
- 'q' => 0x8000, # HINT_NEW_STRING
- 'qr' => 0x10000, # HINT_NEW_RE
- );
-
-%ops = ( with_assign => "+ - * / % ** << >> x .",
- assign => "+= -= *= /= %= **= <<= >>= x= .=",
- num_comparison => "< <= > >= == !=",
- '3way_comparison'=> "<=> cmp",
- str_comparison => "lt le gt ge eq ne",
- binary => "& | ^",
- unary => "neg ! ~",
- mutators => '++ --',
- func => "atan2 cos sin exp abs log sqrt int",
- conversion => 'bool "" 0+',
- iterators => '<>',
- dereferencing => '${} @{} %{} &{} *{}',
- special => 'nomethod fallback =');
-
-use warnings::register;
-sub constant {
- # Arguments: what, sub
- while (@_) {
- if (@_ == 1) {
- warnings::warnif ("Odd number of arguments for overload::constant");
- last;
- }
- elsif (!exists $constants {$_ [0]}) {
- warnings::warnif ("`$_[0]' is not an overloadable type");
- }
- elsif (!ref $_ [1] || "$_[1]" !~ /CODE\(0x[\da-f]+\)$/) {
- # Can't use C<ref $_[1] eq "CODE"> above as code references can be
- # blessed, and C<ref> would return the package the ref is blessed into.
- if (warnings::enabled) {
- $_ [1] = "undef" unless defined $_ [1];
- warnings::warn ("`$_[1]' is not a code reference");
- }
- }
- else {
- $^H{$_[0]} = $_[1];
- $^H |= $constants{$_[0]} | $overload::hint_bits;
- }
- shift, shift;
- }
-}
-
-sub remove_constant {
- # Arguments: what, sub
- while (@_) {
- delete $^H{$_[0]};
- $^H &= ~ $constants{$_[0]};
- shift, shift;
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-overload - Package for overloading Perl operations
-
-=head1 SYNOPSIS
-
- package SomeThing;
-
- use overload
- '+' => \&myadd,
- '-' => \&mysub;
- # etc
- ...
-
- package main;
- $a = new SomeThing 57;
- $b=5+$a;
- ...
- if (overload::Overloaded $b) {...}
- ...
- $strval = overload::StrVal $b;
-
-=head1 DESCRIPTION
-
-=head2 Declaration of overloaded functions
-
-The compilation directive
-
- package Number;
- use overload
- "+" => \&add,
- "*=" => "muas";
-
-declares function Number::add() for addition, and method muas() in
-the "class" C<Number> (or one of its base classes)
-for the assignment form C<*=> of multiplication.
-
-Arguments of this directive come in (key, value) pairs. Legal values
-are values legal inside a C<&{ ... }> call, so the name of a
-subroutine, a reference to a subroutine, or an anonymous subroutine
-will all work. Note that values specified as strings are
-interpreted as methods, not subroutines. Legal keys are listed below.
-
-The subroutine C<add> will be called to execute C<$a+$b> if $a
-is a reference to an object blessed into the package C<Number>, or if $a is
-not an object from a package with defined mathemagic addition, but $b is a
-reference to a C<Number>. It can also be called in other situations, like
-C<$a+=7>, or C<$a++>. See L<MAGIC AUTOGENERATION>. (Mathemagical
-methods refer to methods triggered by an overloaded mathematical
-operator.)
-
-Since overloading respects inheritance via the @ISA hierarchy, the
-above declaration would also trigger overloading of C<+> and C<*=> in
-all the packages which inherit from C<Number>.
-
-=head2 Calling Conventions for Binary Operations
-
-The functions specified in the C<use overload ...> directive are called
-with three (in one particular case with four, see L<Last Resort>)
-arguments. If the corresponding operation is binary, then the first
-two arguments are the two arguments of the operation. However, due to
-general object calling conventions, the first argument should always be
-an object in the package, so in the situation of C<7+$a>, the
-order of the arguments is interchanged. It probably does not matter
-when implementing the addition method, but whether the arguments
-are reversed is vital to the subtraction method. The method can
-query this information by examining the third argument, which can take
-three different values:
-
-=over 7
-
-=item FALSE
-
-the order of arguments is as in the current operation.
-
-=item TRUE
-
-the arguments are reversed.
-
-=item C<undef>
-
-the current operation is an assignment variant (as in
-C<$a+=7>), but the usual function is called instead. This additional
-information can be used to generate some optimizations. Compare
-L<Calling Conventions for Mutators>.
-
-=back
-
-=head2 Calling Conventions for Unary Operations
-
-Unary operation are considered binary operations with the second
-argument being C<undef>. Thus the functions that overloads C<{"++"}>
-is called with arguments C<($a,undef,'')> when $a++ is executed.
-
-=head2 Calling Conventions for Mutators
-
-Two types of mutators have different calling conventions:
-
-=over
-
-=item C<++> and C<-->
-
-The routines which implement these operators are expected to actually
-I<mutate> their arguments. So, assuming that $obj is a reference to a
-number,
-
- sub incr { my $n = $ {$_[0]}; ++$n; $_[0] = bless \$n}
-
-is an appropriate implementation of overloaded C<++>. Note that
-
- sub incr { ++$ {$_[0]} ; shift }
-
-is OK if used with preincrement and with postincrement. (In the case
-of postincrement a copying will be performed, see L<Copy Constructor>.)
-
-=item C<x=> and other assignment versions
-
-There is nothing special about these methods. They may change the
-value of their arguments, and may leave it as is. The result is going
-to be assigned to the value in the left-hand-side if different from
-this value.
-
-This allows for the same method to be used as overloaded C<+=> and
-C<+>. Note that this is I<allowed>, but not recommended, since by the
-semantic of L<"Fallback"> Perl will call the method for C<+> anyway,
-if C<+=> is not overloaded.
-
-=back
-
-B<Warning.> Due to the presence of assignment versions of operations,
-routines which may be called in assignment context may create
-self-referential structures. Currently Perl will not free self-referential
-structures until cycles are C<explicitly> broken. You may get problems
-when traversing your structures too.
-
-Say,
-
- use overload '+' => sub { bless [ \$_[0], \$_[1] ] };
-
-is asking for trouble, since for code C<$obj += $foo> the subroutine
-is called as C<$obj = add($obj, $foo, undef)>, or C<$obj = [\$obj,
-\$foo]>. If using such a subroutine is an important optimization, one
-can overload C<+=> explicitly by a non-"optimized" version, or switch
-to non-optimized version if C<not defined $_[2]> (see
-L<Calling Conventions for Binary Operations>).
-
-Even if no I<explicit> assignment-variants of operators are present in
-the script, they may be generated by the optimizer. Say, C<",$obj,"> or
-C<',' . $obj . ','> may be both optimized to
-
- my $tmp = ',' . $obj; $tmp .= ',';
-
-=head2 Overloadable Operations
-
-The following symbols can be specified in C<use overload> directive:
-
-=over 5
-
-=item * I<Arithmetic operations>
-
- "+", "+=", "-", "-=", "*", "*=", "/", "/=", "%", "%=",
- "**", "**=", "<<", "<<=", ">>", ">>=", "x", "x=", ".", ".=",
-
-For these operations a substituted non-assignment variant can be called if
-the assignment variant is not available. Methods for operations C<+>,
-C<->, C<+=>, and C<-=> can be called to automatically generate
-increment and decrement methods. The operation C<-> can be used to
-autogenerate missing methods for unary minus or C<abs>.
-
-See L<"MAGIC AUTOGENERATION">, L<"Calling Conventions for Mutators"> and
-L<"Calling Conventions for Binary Operations">) for details of these
-substitutions.
-
-=item * I<Comparison operations>
-
- "<", "<=", ">", ">=", "==", "!=", "<=>",
- "lt", "le", "gt", "ge", "eq", "ne", "cmp",
-
-If the corresponding "spaceship" variant is available, it can be
-used to substitute for the missing operation. During C<sort>ing
-arrays, C<cmp> is used to compare values subject to C<use overload>.
-
-=item * I<Bit operations>
-
- "&", "^", "|", "neg", "!", "~",
-
-C<neg> stands for unary minus. If the method for C<neg> is not
-specified, it can be autogenerated using the method for
-subtraction. If the method for C<!> is not specified, it can be
-autogenerated using the methods for C<bool>, or C<"">, or C<0+>.
-
-=item * I<Increment and decrement>
-
- "++", "--",
-
-If undefined, addition and subtraction methods can be
-used instead. These operations are called both in prefix and
-postfix form.
-
-=item * I<Transcendental functions>
-
- "atan2", "cos", "sin", "exp", "abs", "log", "sqrt", "int"
-
-If C<abs> is unavailable, it can be autogenerated using methods
-for "E<lt>" or "E<lt>=E<gt>" combined with either unary minus or subtraction.
-
-Note that traditionally the Perl function L<int> rounds to 0, thus for
-floating-point-like types one should follow the same semantic. If
-C<int> is unavailable, it can be autogenerated using the overloading of
-C<0+>.
-
-=item * I<Boolean, string and numeric conversion>
-
- 'bool', '""', '0+',
-
-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.
-
-As a special case if the overload returns the object itself then it will
-be used directly. An overloaded conversion returning the object is
-probably a bug, because you're likely to get something that looks like
-C<YourPackage=HASH(0x8172b34)>.
-
-=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>>.
-
-B<BUGS> Even in list context, the iterator is currently called only
-once and with scalar context.
-
-=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.
-
-As a special case if the overload returns the object itself then it
-will be used directly (provided it is the correct type).
-
-The dereference operators must be specified explicitly they will not be passed to
-"nomethod".
-
-=item * I<Special>
-
- "nomethod", "fallback", "=",
-
-see L<SPECIAL SYMBOLS FOR C<use overload>>.
-
-=back
-
-See L<"Fallback"> for an explanation of when a missing method can be
-autogenerated.
-
-A computer-readable form of the above table is available in the hash
-%overload::ops, with values being space-separated lists of names:
-
- with_assign => '+ - * / % ** << >> x .',
- assign => '+= -= *= /= %= **= <<= >>= x= .=',
- num_comparison => '< <= > >= == !=',
- '3way_comparison'=> '<=> cmp',
- 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
-
-Inheritance interacts with overloading in two ways.
-
-=over
-
-=item Strings as values of C<use overload> directive
-
-If C<value> in
-
- use overload key => value;
-
-is a string, it is interpreted as a method name.
-
-=item Overloading of an operation is inherited by derived classes
-
-Any class derived from an overloaded class is also overloaded. The
-set of overloaded methods is the union of overloaded methods of all
-the ancestors. If some method is overloaded in several ancestor, then
-which description will be used is decided by the usual inheritance
-rules:
-
-If C<A> inherits from C<B> and C<C> (in this order), C<B> overloads
-C<+> with C<\&D::plus_sub>, and C<C> overloads C<+> by C<"plus_meth">,
-then the subroutine C<D::plus_sub> will be called to implement
-operation C<+> for an object in package C<A>.
-
-=back
-
-Note that since the value of the C<fallback> key is not a subroutine,
-its inheritance is not governed by the above rules. In the current
-implementation, the value of C<fallback> in the first overloaded
-ancestor is used, but this is accidental and subject to change.
-
-=head1 SPECIAL SYMBOLS FOR C<use overload>
-
-Three keys are recognized by Perl that are not covered by the above
-description.
-
-=head2 Last Resort
-
-C<"nomethod"> should be followed by a reference to a function of four
-parameters. If defined, it is called when the overloading mechanism
-cannot find a method for some operation. The first three arguments of
-this function coincide with the arguments for the corresponding method if
-it were found, the fourth argument is the symbol
-corresponding to the missing method. If several methods are tried,
-the last one is used. Say, C<1-$a> can be equivalent to
-
- &nomethodMethod($a,1,1,"-")
-
-if the pair C<"nomethod" =E<gt> "nomethodMethod"> was specified in the
-C<use overload> directive.
-
-The C<"nomethod"> mechanism is I<not> used for the dereference operators
-( ${} @{} %{} &{} *{} ).
-
-
-If some operation cannot be resolved, and there is no function
-assigned to C<"nomethod">, then an exception will be raised via die()--
-unless C<"fallback"> was specified as a key in C<use overload> directive.
-
-
-=head2 Fallback
-
-The key C<"fallback"> governs what to do if a method for a particular
-operation is not found. Three different cases are possible depending on
-the value of C<"fallback">:
-
-=over 16
-
-=item * C<undef>
-
-Perl tries to use a
-substituted method (see L<MAGIC AUTOGENERATION>). If this fails, it
-then tries to calls C<"nomethod"> value; if missing, an exception
-will be raised.
-
-=item * TRUE
-
-The same as for the C<undef> value, but no exception is raised. Instead,
-it silently reverts to what it would have done were there no C<use overload>
-present.
-
-=item * defined, but FALSE
-
-No autogeneration is tried. Perl tries to call
-C<"nomethod"> value, and if this is missing, raises an exception.
-
-=back
-
-B<Note.> C<"fallback"> inheritance via @ISA is not carved in stone
-yet, see L<"Inheritance and overloading">.
-
-=head2 Copy Constructor
-
-The value for C<"="> is a reference to a function with three
-arguments, i.e., it looks like the other values in C<use
-overload>. However, it does not overload the Perl assignment
-operator. This would go against Camel hair.
-
-This operation is called in the situations when a mutator is applied
-to a reference that shares its object with some other reference, such
-as
-
- $a=$b;
- ++$a;
-
-To make this change $a and not change $b, a copy of C<$$a> is made,
-and $a is assigned a reference to this new object. This operation is
-done during execution of the C<++$a>, and not during the assignment,
-(so before the increment C<$$a> coincides with C<$$b>). This is only
-done if C<++> is expressed via a method for C<'++'> or C<'+='> (or
-C<nomethod>). Note that if this operation is expressed via C<'+'>
-a nonmutator, i.e., as in
-
- $a=$b;
- $a=$a+1;
-
-then C<$a> does not reference a new copy of C<$$a>, since $$a does not
-appear as lvalue when the above code is executed.
-
-If the copy constructor is required during the execution of some mutator,
-but a method for C<'='> was not specified, it can be autogenerated as a
-string copy if the object is a plain scalar.
-
-=over 5
-
-=item B<Example>
-
-The actually executed code for
-
- $a=$b;
- Something else which does not modify $a or $b....
- ++$a;
-
-may be
-
- $a=$b;
- Something else which does not modify $a or $b....
- $a = $a->clone(undef,"");
- $a->incr(undef,"");
-
-if $b was mathemagical, and C<'++'> was overloaded with C<\&incr>,
-C<'='> was overloaded with C<\&clone>.
-
-=back
-
-Same behaviour is triggered by C<$b = $a++>, which is consider a synonym for
-C<$b = $a; ++$a>.
-
-=head1 MAGIC AUTOGENERATION
-
-If a method for an operation is not found, and the value for C<"fallback"> is
-TRUE or undefined, Perl tries to autogenerate a substitute method for
-the missing operation based on the defined operations. Autogenerated method
-substitutions are possible for the following operations:
-
-=over 16
-
-=item I<Assignment forms of arithmetic operations>
-
-C<$a+=$b> can use the method for C<"+"> if the method for C<"+=">
-is not defined.
-
-=item I<Conversion operations>
-
-String, numeric, and boolean conversion are calculated in terms of one
-another if not all of them are defined.
-
-=item I<Increment and decrement>
-
-The C<++$a> operation can be expressed in terms of C<$a+=1> or C<$a+1>,
-and C<$a--> in terms of C<$a-=1> and C<$a-1>.
-
-=item C<abs($a)>
-
-can be expressed in terms of C<$aE<lt>0> and C<-$a> (or C<0-$a>).
-
-=item I<Unary minus>
-
-can be expressed in terms of subtraction.
-
-=item I<Negation>
-
-C<!> and C<not> can be expressed in terms of boolean conversion, or
-string or numerical conversion.
-
-=item I<Concatenation>
-
-can be expressed in terms of string conversion.
-
-=item I<Comparison operations>
-
-can be expressed in terms of its "spaceship" counterpart: either
-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
-value is a scalar and not a reference.
-
-=back
-
-=head1 Losing overloading
-
-The restriction for the comparison operation is that even if, for example,
-`C<cmp>' should return a blessed reference, the autogenerated `C<lt>'
-function will produce only a standard logical value based on the
-numerical value of the result of `C<cmp>'. In particular, a working
-numeric conversion is needed in this case (possibly expressed in terms of
-other conversions).
-
-Similarly, C<.=> and C<x=> operators lose their mathemagical properties
-if the string conversion substitution is applied.
-
-When you chop() a mathemagical object it is promoted to a string and its
-mathemagical properties are lost. The same can happen with other
-operations as well.
-
-=head1 Run-time Overloading
-
-Since all C<use> directives are executed at compile-time, the only way to
-change overloading during run-time is to
-
- eval 'use overload "+" => \&addmethod';
-
-You can also use
-
- eval 'no overload "+", "--", "<="';
-
-though the use of these constructs during run-time is questionable.
-
-=head1 Public functions
-
-Package C<overload.pm> provides the following public functions:
-
-=over 5
-
-=item overload::StrVal(arg)
-
-Gives string value of C<arg> as in absence of stringify overloading. If you
-are using this to get the address of a reference (useful for checking if two
-references point to the same thing) then you may be better off using
-C<Scalar::Util::refaddr()>, which is faster.
-
-=item overload::Overloaded(arg)
-
-Returns true if C<arg> is subject to overloading of some operations.
-
-=item overload::Method(obj,op)
-
-Returns C<undef> or a reference to the method that implements C<op>.
-
-=back
-
-=head1 Overloading constants
-
-For some applications, the Perl parser mangles constants too much.
-It is possible to hook into this process via C<overload::constant()>
-and C<overload::remove_constant()> functions.
-
-These functions take a hash as an argument. The recognized keys of this hash
-are:
-
-=over 8
-
-=item integer
-
-to overload integer constants,
-
-=item float
-
-to overload floating point constants,
-
-=item binary
-
-to overload octal and hexadecimal constants,
-
-=item q
-
-to overload C<q>-quoted strings, constant pieces of C<qq>- and C<qx>-quoted
-strings and here-documents,
-
-=item qr
-
-to overload constant pieces of regular expressions.
-
-=back
-
-The corresponding values are references to functions which take three arguments:
-the first one is the I<initial> string form of the constant, the second one
-is how Perl interprets this constant, the third one is how the constant is used.
-Note that the initial string form does not
-contain string delimiters, and has backslashes in backslash-delimiter
-combinations stripped (thus the value of delimiter is not relevant for
-processing of this string). The return value of this function is how this
-constant is going to be interpreted by Perl. The third argument is undefined
-unless for overloaded C<q>- and C<qr>- constants, it is C<q> in single-quote
-context (comes from strings, regular expressions, and single-quote HERE
-documents), it is C<tr> for arguments of C<tr>/C<y> operators,
-it is C<s> for right-hand side of C<s>-operator, and it is C<qq> otherwise.
-
-Since an expression C<"ab$cd,,"> is just a shortcut for C<'ab' . $cd . ',,'>,
-it is expected that overloaded constant strings are equipped with reasonable
-overloaded catenation operator, otherwise absurd results will result.
-Similarly, negative numbers are considered as negations of positive constants.
-
-Note that it is probably meaningless to call the functions overload::constant()
-and overload::remove_constant() from anywhere but import() and unimport() methods.
-From these methods they may be called as
-
- sub import {
- shift;
- return unless @_;
- die "unknown import: @_" unless @_ == 1 and $_[0] eq ':constant';
- overload::constant integer => sub {Math::BigInt->new(shift)};
- }
-
-B<BUGS> Currently overloaded-ness of constants does not propagate
-into C<eval '...'>.
-
-=head1 IMPLEMENTATION
-
-What follows is subject to change RSN.
-
-The table of methods for all operations is cached in magic for the
-symbol table hash for the package. The cache is invalidated during
-processing of C<use overload>, C<no overload>, new function
-definitions, and changes in @ISA. However, this invalidation remains
-unprocessed until the next C<bless>ing into the package. Hence if you
-want to change overloading structure dynamically, you'll need an
-additional (fake) C<bless>ing to update the table.
-
-(Every SVish thing has a magic queue, and magic is an entry in that
-queue. This is how a single variable may participate in multiple
-forms of magic simultaneously. For instance, environment variables
-regularly have two forms at once: their %ENV magic and their taint
-magic. However, the magic which implements overloading is applied to
-the stashes, which are rarely used directly, thus should not slow down
-Perl.)
-
-If an object belongs to a package using overload, it carries a special
-flag. Thus the only speed penalty during arithmetic operations without
-overloading is the checking of this flag.
-
-In fact, if C<use overload> is not present, there is almost no overhead
-for overloadable operations, so most programs should not suffer
-measurable performance penalties. A considerable effort was made to
-minimize the overhead when overload is used in some package, but the
-arguments in question do not belong to packages using overload. When
-in doubt, test your speed with C<use overload> and without it. So far
-there have been no reports of substantial speed degradation if Perl is
-compiled with optimization turned on.
-
-There is no size penalty for data if overload is not used. The only
-size penalty if overload is used in some package is that I<all> the
-packages acquire a magic during the next C<bless>ing into the
-package. This magic is three-words-long for packages without
-overloading, and carries the cache table if the package is overloaded.
-
-Copying (C<$a=$b>) is shallow; however, a one-level-deep copying is
-carried out before any operation that can imply an assignment to the
-object $a (or $b) refers to, like C<$a++>. You can override this
-behavior by defining your own copy constructor (see L<"Copy Constructor">).
-
-It is expected that arguments to methods that are not explicitly supposed
-to be changed are constant (but this is not enforced).
-
-=head1 Metaphor clash
-
-One may wonder why the semantic of overloaded C<=> is so counter intuitive.
-If it I<looks> counter intuitive to you, you are subject to a metaphor
-clash.
-
-Here is a Perl object metaphor:
-
-I< object is a reference to blessed data>
-
-and an arithmetic metaphor:
-
-I< object is a thing by itself>.
-
-The I<main> problem of overloading C<=> is the fact that these metaphors
-imply different actions on the assignment C<$a = $b> if $a and $b are
-objects. Perl-think implies that $a becomes a reference to whatever
-$b was referencing. Arithmetic-think implies that the value of "object"
-$a is changed to become the value of the object $b, preserving the fact
-that $a and $b are separate entities.
-
-The difference is not relevant in the absence of mutators. After
-a Perl-way assignment an operation which mutates the data referenced by $a
-would change the data referenced by $b too. Effectively, after
-C<$a = $b> values of $a and $b become I<indistinguishable>.
-
-On the other hand, anyone who has used algebraic notation knows the
-expressive power of the arithmetic metaphor. Overloading works hard
-to enable this metaphor while preserving the Perlian way as far as
-possible. Since it is not possible to freely mix two contradicting
-metaphors, overloading allows the arithmetic way to write things I<as
-far as all the mutators are called via overloaded access only>. The
-way it is done is described in L<Copy Constructor>.
-
-If some mutator methods are directly applied to the overloaded values,
-one may need to I<explicitly unlink> other values which references the
-same value:
-
- $a = new Data 23;
- ...
- $b = $a; # $b is "linked" to $a
- ...
- $a = $a->clone; # Unlink $b from $a
- $a->increment_by(4);
-
-Note that overloaded access makes this transparent:
-
- $a = new Data 23;
- $b = $a; # $b is "linked" to $a
- $a += 4; # would unlink $b automagically
-
-However, it would not make
-
- $a = new Data 23;
- $a = 4; # Now $a is a plain 4, not 'Data'
-
-preserve "objectness" of $a. But Perl I<has> a way to make assignments
-to an object do whatever you want. It is just not the overload, but
-tie()ing interface (see L<perlfunc/tie>). Adding a FETCH() method
-which returns the object itself, and STORE() method which changes the
-value of the object, one can reproduce the arithmetic metaphor in its
-completeness, at least for variables which were tie()d from the start.
-
-(Note that a workaround for a bug may be needed, see L<"BUGS">.)
-
-=head1 Cookbook
-
-Please add examples to what follows!
-
-=head2 Two-face scalars
-
-Put this in F<two_face.pm> in your Perl library directory:
-
- package two_face; # Scalars with separate string and
- # numeric values.
- sub new { my $p = shift; bless [@_], $p }
- use overload '""' => \&str, '0+' => \&num, fallback => 1;
- sub num {shift->[1]}
- sub str {shift->[0]}
-
-Use it as follows:
-
- require two_face;
- my $seven = new two_face ("vii", 7);
- printf "seven=$seven, seven=%d, eight=%d\n", $seven, $seven+1;
- print "seven contains `i'\n" if $seven =~ /i/;
-
-(The second line creates a scalar which has both a string value, and a
-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
-L<pseudo-hash|perlref/"Pseudo-hashes: Using an array as a hash">
-builtin Perl type. Let's make it better than a pseudo-hash by
-allowing index 0 to be treated as a normal element.
-
- 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,
-which 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> hash exhibited by the
-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 remove 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<$baz> 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 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:
-
- package symbolic; # Primitive symbolic calculator
- use overload nomethod => \&wrap;
-
- sub new { shift; bless ['n', @_] }
- sub wrap {
- my ($obj, $other, $inv, $meth) = @_;
- ($obj, $other) = ($other, $obj) if $inv;
- bless [$meth, $obj, $other];
- }
-
-This module is very unusual as overloaded modules go: it does not
-provide any usual overloaded operators, instead it provides the L<Last
-Resort> operator C<nomethod>. In this example the corresponding
-subroutine returns an object which encapsulates operations done over
-the objects: C<new symbolic 3> contains C<['n', 3]>, C<2 + new
-symbolic 3> contains C<['+', 2, ['n', 3]]>.
-
-Here is an example of the script which "calculates" the side of
-circumscribed octagon using the above package:
-
- require symbolic;
- my $iter = 1; # 2**($iter+2) = 8
- my $side = new symbolic 1;
- my $cnt = $iter;
-
- while ($cnt--) {
- $side = (sqrt(1 + $side**2) - 1)/$side;
- }
- print "OK\n";
-
-The value of $side is
-
- ['/', ['-', ['sqrt', ['+', 1, ['**', ['n', 1], 2]],
- undef], 1], ['n', 1]]
-
-Note that while we obtained this value using a nice little script,
-there is no simple way to I<use> this value. In fact this value may
-be inspected in debugger (see L<perldebug>), but ony if
-C<bareStringify> B<O>ption is set, and not via C<p> command.
-
-If one attempts to print this value, then the overloaded operator
-C<""> will be called, which will call C<nomethod> operator. The
-result of this operator will be stringified again, but this result is
-again of type C<symbolic>, which will lead to an infinite loop.
-
-Add a pretty-printer method to the module F<symbolic.pm>:
-
- sub pretty {
- my ($meth, $a, $b) = @{+shift};
- $a = 'u' unless defined $a;
- $b = 'u' unless defined $b;
- $a = $a->pretty if ref $a;
- $b = $b->pretty if ref $b;
- "[$meth $a $b]";
- }
-
-Now one can finish the script by
-
- print "side = ", $side->pretty, "\n";
-
-The method C<pretty> is doing object-to-string conversion, so it
-is natural to overload the operator C<""> using this method. However,
-inside such a method it is not necessary to pretty-print the
-I<components> $a and $b of an object. In the above subroutine
-C<"[$meth $a $b]"> is a catenation of some strings and components $a
-and $b. If these components use overloading, the catenation operator
-will look for an overloaded operator C<.>; if not present, it will
-look for an overloaded operator C<"">. Thus it is enough to use
-
- use overload nomethod => \&wrap, '""' => \&str;
- sub str {
- my ($meth, $a, $b) = @{+shift};
- $a = 'u' unless defined $a;
- $b = 'u' unless defined $b;
- "[$meth $a $b]";
- }
-
-Now one can change the last line of the script to
-
- print "side = $side\n";
-
-which outputs
-
- side = [/ [- [sqrt [+ 1 [** [n 1 u] 2]] u] 1] [n 1 u]]
-
-and one can inspect the value in debugger using all the possible
-methods.
-
-Something is still amiss: consider the loop variable $cnt of the
-script. It was a number, not an object. We cannot make this value of
-type C<symbolic>, since then the loop will not terminate.
-
-Indeed, to terminate the cycle, the $cnt should become false.
-However, the operator C<bool> for checking falsity is overloaded (this
-time via overloaded C<"">), and returns a long string, thus any object
-of type C<symbolic> is true. To overcome this, we need a way to
-compare an object to 0. In fact, it is easier to write a numeric
-conversion routine.
-
-Here is the text of F<symbolic.pm> with such a routine added (and
-slightly modified str()):
-
- package symbolic; # Primitive symbolic calculator
- use overload
- nomethod => \&wrap, '""' => \&str, '0+' => \&num;
-
- sub new { shift; bless ['n', @_] }
- sub wrap {
- my ($obj, $other, $inv, $meth) = @_;
- ($obj, $other) = ($other, $obj) if $inv;
- bless [$meth, $obj, $other];
- }
- sub str {
- my ($meth, $a, $b) = @{+shift};
- $a = 'u' unless defined $a;
- if (defined $b) {
- "[$meth $a $b]";
- } else {
- "[$meth $a]";
- }
- }
- my %subr = ( n => sub {$_[0]},
- sqrt => sub {sqrt $_[0]},
- '-' => sub {shift() - shift()},
- '+' => sub {shift() + shift()},
- '/' => sub {shift() / shift()},
- '*' => sub {shift() * shift()},
- '**' => sub {shift() ** shift()},
- );
- sub num {
- my ($meth, $a, $b) = @{+shift};
- my $subr = $subr{$meth}
- or die "Do not know how to ($meth) in symbolic";
- $a = $a->num if ref $a eq __PACKAGE__;
- $b = $b->num if ref $b eq __PACKAGE__;
- $subr->($a,$b);
- }
-
-All the work of numeric conversion is done in %subr and num(). Of
-course, %subr is not complete, it contains only operators used in the
-example below. Here is the extra-credit question: why do we need an
-explicit recursion in num()? (Answer is at the end of this section.)
-
-Use this module like this:
-
- require symbolic;
- 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;
- }
- printf "%s=%f\n", $side, $side;
- printf "pi=%f\n", $side*(2**($iter+2));
-
-It prints (without so many line breaks)
-
- [/ [- [sqrt [+ 1 [** [/ [- [sqrt [+ 1 [** [n 1] 2]]] 1]
- [n 1]] 2]]] 1]
- [/ [- [sqrt [+ 1 [** [n 1] 2]]] 1] [n 1]]]=0.198912
- pi=3.182598
-
-The above module is very primitive. It does not implement
-mutator methods (C<++>, C<-=> and so on), does not do deep copying
-(not required without mutators!), and implements only those arithmetic
-operations which are used in the example.
-
-To implement most arithmetic operations is easy; one should just use
-the tables of operations, and change the code which fills %subr to
-
- my %subr = ( 'n' => sub {$_[0]} );
- foreach my $op (split " ", $overload::ops{with_assign}) {
- $subr{$op} = $subr{"$op="} = eval "sub {shift() $op shift()}";
- }
- my @bins = qw(binary 3way_comparison num_comparison str_comparison);
- foreach my $op (split " ", "@overload::ops{ @bins }") {
- $subr{$op} = eval "sub {shift() $op shift()}";
- }
- foreach my $op (split " ", "@overload::ops{qw(unary func)}") {
- print "defining `$op'\n";
- $subr{$op} = eval "sub {$op shift()}";
- }
-
-Due to L<Calling Conventions for Mutators>, we do not need anything
-special to make C<+=> and friends work, except filling C<+=> entry of
-%subr, and defining a copy constructor (needed since Perl has no
-way to know that the implementation of C<'+='> does not mutate
-the argument, compare L<Copy Constructor>).
-
-To implement a copy constructor, add C<< '=' => \&cpy >> to C<use overload>
-line, and code (this code assumes that mutators change things one level
-deep only, so recursive copying is not needed):
-
- sub cpy {
- my $self = shift;
- bless [@$self], ref $self;
- }
-
-To make C<++> and C<--> work, we need to implement actual mutators,
-either directly, or in C<nomethod>. We continue to do things inside
-C<nomethod>, thus add
-
- if ($meth eq '++' or $meth eq '--') {
- @$obj = ($meth, (bless [@$obj]), 1); # Avoid circular reference
- return $obj;
- }
-
-after the first line of wrap(). This is not a most effective
-implementation, one may consider
-
- sub inc { $_[0] = bless ['++', shift, 1]; }
-
-instead.
-
-As a final remark, note that one can fill %subr by
-
- my %subr = ( 'n' => sub {$_[0]} );
- foreach my $op (split " ", $overload::ops{with_assign}) {
- $subr{$op} = $subr{"$op="} = eval "sub {shift() $op shift()}";
- }
- my @bins = qw(binary 3way_comparison num_comparison str_comparison);
- foreach my $op (split " ", "@overload::ops{ @bins }") {
- $subr{$op} = eval "sub {shift() $op shift()}";
- }
- foreach my $op (split " ", "@overload::ops{qw(unary func)}") {
- $subr{$op} = eval "sub {$op shift()}";
- }
- $subr{'++'} = $subr{'+'};
- $subr{'--'} = $subr{'-'};
-
-This finishes implementation of a primitive symbolic calculator in
-50 lines of Perl code. Since the numeric values of subexpressions
-are not cached, the calculator is very slow.
-
-Here is the answer for the exercise: In the case of str(), we need no
-explicit recursion since the overloaded C<.>-operator will fall back
-to an existing overloaded operator C<"">. Overloaded arithmetic
-operators I<do not> fall back to numeric conversion if C<fallback> is
-not explicitly requested. Thus without an explicit recursion num()
-would convert C<['+', $a, $b]> to C<$a + $b>, which would just rebuild
-the argument of num().
-
-If you wonder why defaults for conversion are different for str() and
-num(), note how easy it was to write the symbolic calculator. This
-simplicity is due to an appropriate choice of defaults. One extra
-note: due to the explicit recursion num() is more fragile than sym():
-we need to explicitly check for the type of $a and $b. If components
-$a and $b happen to be of some related type, this may lead to problems.
-
-=head2 I<Really> symbolic calculator
-
-One may wonder why we call the above calculator symbolic. The reason
-is that the actual calculation of the value of expression is postponed
-until the value is I<used>.
-
-To see it in action, add a method
-
- sub STORE {
- my $obj = shift;
- $#$obj = 1;
- @$obj->[0,1] = ('=', shift);
- }
-
-to the package C<symbolic>. After this change one can do
-
- my $a = new symbolic 3;
- my $b = new symbolic 4;
- my $c = sqrt($a**2 + $b**2);
-
-and the numeric value of $c becomes 5. However, after calling
-
- $a->STORE(12); $b->STORE(5);
-
-the numeric value of $c becomes 13. There is no doubt now that the module
-symbolic provides a I<symbolic> calculator indeed.
-
-To hide the rough edges under the hood, provide a tie()d interface to the
-package C<symbolic> (compare with L<Metaphor clash>). Add methods
-
- sub TIESCALAR { my $pack = shift; $pack->new(@_) }
- sub FETCH { shift }
- sub nop { } # Around a bug
-
-(the bug is described in L<"BUGS">). One can use this new interface as
-
- tie $a, 'symbolic', 3;
- tie $b, 'symbolic', 4;
- $a->nop; $b->nop; # Around a bug
-
- my $c = sqrt($a**2 + $b**2);
-
-Now numeric value of $c is 5. After C<$a = 12; $b = 5> the numeric value
-of $c becomes 13. To insulate the user of the module add a method
-
- sub vars { my $p = shift; tie($_, $p), $_->nop foreach @_; }
-
-Now
-
- my ($a, $b);
- symbolic->vars($a, $b);
- my $c = sqrt($a**2 + $b**2);
-
- $a = 3; $b = 4;
- printf "c5 %s=%f\n", $c, $c;
-
- $a = 12; $b = 5;
- printf "c13 %s=%f\n", $c, $c;
-
-shows that the numeric value of $c follows changes to the values of $a
-and $b.
-
-=head1 AUTHOR
-
-Ilya Zakharevich E<lt>F<ilya@math.mps.ohio-state.edu>E<gt>.
-
-=head1 DIAGNOSTICS
-
-When Perl is run with the B<-Do> switch or its equivalent, overloading
-induces diagnostic messages.
-
-Using the C<m> command of Perl debugger (see L<perldebug>) one can
-deduce which operations are overloaded (and which ancestor triggers
-this overloading). Say, if C<eq> is overloaded, then the method C<(eq>
-is shown by debugger. The method C<()> corresponds to the C<fallback>
-key (in fact a presence of this method shows that this package has
-overloading enabled, and it is what is used by the C<Overloaded>
-function of module C<overload>).
-
-The module might issue the following warnings:
-
-=over 4
-
-=item Odd number of arguments for overload::constant
-
-(W) The call to overload::constant contained an odd number of arguments.
-The arguments should come in pairs.
-
-=item `%s' is not an overloadable type
-
-(W) You tried to overload a constant type the overload package is unaware of.
-
-=item `%s' is not a code reference
-
-(W) The second (fourth, sixth, ...) argument of overload::constant needs
-to be a code reference. Either an anonymous subroutine, or a reference
-to a subroutine.
-
-=back
-
-=head1 BUGS
-
-Because it is used for overloading, the per-package hash %OVERLOAD now
-has a special meaning in Perl. The symbol table is filled with names
-looking like line-noise.
-
-For the purpose of inheritance every overloaded package behaves as if
-C<fallback> is present (possibly undefined). This may create
-interesting effects if some package is not overloaded, but inherits
-from two overloaded packages.
-
-Relation between overloading and tie()ing is broken. Overloading is
-triggered or not basing on the I<previous> class of tie()d value.
-
-This happens because the presence of overloading is checked too early,
-before any tie()d access is attempted. If the FETCH()ed class of the
-tie()d value does not change, a simple workaround is to access the value
-immediately after tie()ing, so that after this call the I<previous> class
-coincides with the current one.
-
-B<Needed:> a way to fix this without a speed penalty.
-
-Barewords are not covered by overloaded string constants.
-
-This document is confusing. There are grammos and misleading language
-used in places. It would seem a total rewrite is needed.
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/re.pm b/Master/tlpkg/tlperl/lib/re.pm
deleted file mode 100644
index 6e9d1218ef0..00000000000
--- a/Master/tlpkg/tlperl/lib/re.pm
+++ /dev/null
@@ -1,134 +0,0 @@
-package re;
-
-our $VERSION = 0.05;
-
-=head1 NAME
-
-re - Perl pragma to alter regular expression behaviour
-
-=head1 SYNOPSIS
-
- use re 'taint';
- ($x) = ($^X =~ /^(.*)$/s); # $x is tainted here
-
- $pat = '(?{ $foo = 1 })';
- use re 'eval';
- /foo${pat}bar/; # won't fail (when not under -T switch)
-
- {
- no re 'taint'; # the default
- ($x) = ($^X =~ /^(.*)$/s); # $x is not tainted here
-
- no re 'eval'; # the default
- /foo${pat}bar/; # disallowed (with or without -T switch)
- }
-
- use re 'debug'; # NOT lexically scoped (as others are)
- /^(.*)$/s; # output debugging info during
- # compile and run time
-
- use re 'debugcolor'; # same as 'debug', but with colored output
- ...
-
-(We use $^X in these examples because it's tainted by default.)
-
-=head1 DESCRIPTION
-
-When C<use re 'taint'> is in effect, and a tainted string is the target
-of a regex, the regex memories (or values returned by the m// operator
-in list context) are tainted. This feature is useful when regex operations
-on tainted data aren't meant to extract safe substrings, but to perform
-other transformations.
-
-When C<use re 'eval'> is in effect, a regex is allowed to contain
-C<(?{ ... })> zero-width assertions even if regular expression contains
-variable interpolation. That is normally disallowed, since it is a
-potential security risk. Note that this pragma is ignored when the regular
-expression is obtained from tainted data, i.e. evaluation is always
-disallowed with tainted regular expressions. See L<perlre/(?{ code })>.
-
-For the purpose of this pragma, interpolation of precompiled regular
-expressions (i.e., the result of C<qr//>) is I<not> considered variable
-interpolation. Thus:
-
- /foo${pat}bar/
-
-I<is> allowed if $pat is a precompiled regular expression, even
-if $pat contains C<(?{ ... })> assertions.
-
-When C<use re 'debug'> is in effect, perl emits debugging messages when
-compiling and using regular expressions. The output is the same as that
-obtained by running a C<-DDEBUGGING>-enabled perl interpreter with the
-B<-Dr> switch. It may be quite voluminous depending on the complexity
-of the match. Using C<debugcolor> instead of C<debug> enables a
-form of output that can be used to get a colorful display on terminals
-that understand termcap color sequences. Set C<$ENV{PERL_RE_TC}> to a
-comma-separated list of C<termcap> properties to use for highlighting
-strings on/off, pre-point part on/off.
-See L<perldebug/"Debugging regular expressions"> for additional info.
-
-The directive C<use re 'debug'> is I<not lexically scoped>, as the
-other directives are. It has both compile-time and run-time effects.
-
-See L<perlmodlib/Pragmatic Modules>.
-
-=cut
-
-# N.B. File::Basename contains a literal for 'taint' as a fallback. If
-# taint is changed here, File::Basename must be updated as well.
-my %bitmask = (
-taint => 0x00100000, # HINT_RE_TAINT
-eval => 0x00200000, # HINT_RE_EVAL
-);
-
-sub setcolor {
- eval { # Ignore errors
- require Term::Cap;
-
- my $terminal = Tgetent Term::Cap ({OSPEED => 9600}); # Avoid warning.
- my $props = $ENV{PERL_RE_TC} || 'md,me,so,se,us,ue';
- my @props = split /,/, $props;
- my $colors = join "\t", map {$terminal->Tputs($_,1)} @props;
-
- $colors =~ s/\0//g;
- $ENV{PERL_RE_COLORS} = $colors;
- };
-}
-
-sub bits {
- my $on = shift;
- my $bits = 0;
- unless (@_) {
- require Carp;
- Carp::carp("Useless use of \"re\" pragma");
- }
- foreach my $s (@_){
- if ($s eq 'debug' or $s eq 'debugcolor') {
- setcolor() if $s eq 'debugcolor';
- require XSLoader;
- XSLoader::load('re');
- install() if $on;
- uninstall() unless $on;
- next;
- }
- if (exists $bitmask{$s}) {
- $bits |= $bitmask{$s};
- } else {
- require Carp;
- Carp::carp("Unknown \"re\" subpragma '$s' (known ones are: @{[join(', ', map {qq('$_')} 'debug', 'debugcolor', sort keys %bitmask)]})");
- }
- }
- $bits;
-}
-
-sub import {
- shift;
- $^H |= bits(1, @_);
-}
-
-sub unimport {
- shift;
- $^H &= ~ bits(0, @_);
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/strict.pm b/Master/tlpkg/tlperl/lib/strict.pm
deleted file mode 100644
index d14391add44..00000000000
--- a/Master/tlpkg/tlperl/lib/strict.pm
+++ /dev/null
@@ -1,136 +0,0 @@
-package strict;
-
-$strict::VERSION = "1.03";
-
-my %bitmask = (
-refs => 0x00000002,
-subs => 0x00000200,
-vars => 0x00000400
-);
-
-sub bits {
- my $bits = 0;
- my @wrong;
- foreach my $s (@_) {
- push @wrong, $s unless exists $bitmask{$s};
- $bits |= $bitmask{$s} || 0;
- }
- if (@wrong) {
- require Carp;
- Carp::croak("Unknown 'strict' tag(s) '@wrong'");
- }
- $bits;
-}
-
-my $default_bits = bits(qw(refs subs vars));
-
-sub import {
- shift;
- $^H |= @_ ? bits(@_) : $default_bits;
-}
-
-sub unimport {
- shift;
- $^H &= ~ (@_ ? bits(@_) : $default_bits);
-}
-
-1;
-__END__
-
-=head1 NAME
-
-strict - Perl pragma to restrict unsafe constructs
-
-=head1 SYNOPSIS
-
- use strict;
-
- use strict "vars";
- use strict "refs";
- use strict "subs";
-
- use strict;
- no strict "vars";
-
-=head1 DESCRIPTION
-
-If no import list is supplied, all possible restrictions are assumed.
-(This is the safest mode to operate in, but is sometimes too strict for
-casual programming.) Currently, there are three possible things to be
-strict about: "subs", "vars", and "refs".
-
-=over 6
-
-=item C<strict refs>
-
-This generates a runtime error if you
-use symbolic references (see L<perlref>).
-
- use strict 'refs';
- $ref = \$foo;
- print $$ref; # ok
- $ref = "foo";
- print $$ref; # runtime error; normally ok
- $file = "STDOUT";
- print $file "Hi!"; # error; note: no comma after $file
-
-There is one exception to this rule:
-
- $bar = \&{'foo'};
- &$bar;
-
-is allowed so that C<goto &$AUTOLOAD> would not break under stricture.
-
-
-=item C<strict vars>
-
-This generates a compile-time error if you access a variable that wasn't
-declared via C<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>.
-
- use strict 'vars';
- $X::foo = 1; # ok, fully qualified
- my $foo = 10; # ok, my() var
- local $foo = 9; # blows up
-
- package Cinna;
- 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
-you try to use a bareword identifier that's not a subroutine, unless it
-is a simple identifier (no colons) and that it appears in curly braces or
-on the left hand side of the C<< => >> symbol.
-
- use strict 'subs';
- $SIG{PIPE} = Plumber; # blows up
- $SIG{PIPE} = "Plumber"; # just fine: quoted string is always ok
- $SIG{PIPE} = \&Plumber; # preferred form
-
-=back
-
-See L<perlmodlib/Pragmatic Modules>.
-
-=head1 HISTORY
-
-C<strict 'subs'>, with Perl 5.6.1, erroneously permitted to use an unquoted
-compound identifier (e.g. C<Foo::Bar>) as a hash key (before C<< => >> or
-inside curlies), but without forcing it always to a literal string.
-
-Starting with Perl 5.8.1 strict is strict about its restrictions:
-if unknown restrictions are used, the strict pragma will abort with
-
- Unknown 'strict' tag(s) '...'
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/subs.pm b/Master/tlpkg/tlperl/lib/subs.pm
deleted file mode 100644
index e5a9aa8827d..00000000000
--- a/Master/tlpkg/tlperl/lib/subs.pm
+++ /dev/null
@@ -1,40 +0,0 @@
-package subs;
-
-our $VERSION = '1.00';
-
-=head1 NAME
-
-subs - Perl pragma to predeclare sub names
-
-=head1 SYNOPSIS
-
- use subs qw(frob);
- frob 3..10;
-
-=head1 DESCRIPTION
-
-This will predeclare all the subroutine whose names are
-in the list, allowing you to use them without parentheses
-even before they're declared.
-
-Unlike pragmas that affect the C<$^H> hints variable, the C<use vars> and
-C<use subs> declarations are not BLOCK-scoped. They are thus effective
-for the entire file in which they appear. You may not rescind such
-declarations with C<no vars> or C<no subs>.
-
-See L<perlmodlib/Pragmatic Modules> and L<strict/strict subs>.
-
-=cut
-
-require 5.000;
-
-sub import {
- my $callpack = caller;
- my $pack = shift;
- my @imports = @_;
- foreach $sym (@imports) {
- *{"${callpack}::$sym"} = \&{"${callpack}::$sym"};
- }
-};
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/unicore/ArabicShaping.txt b/Master/tlpkg/tlperl/lib/unicore/ArabicShaping.txt
deleted file mode 100644
index ec2e0241012..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/ArabicShaping.txt
+++ /dev/null
@@ -1,299 +0,0 @@
-# ArabicShaping-4.1.0.txt
-# Date: 2005-03-17, 15:21:00 PST [KW]
-#
-# This file is a normative contributory data file in the
-# Unicode Character Database.
-#
-# Copyright (c) 1991-2005 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-#
-# This file defines the shaping classes for Arabic and Syriac
-# positional shaping, repeating in machine readable form the
-# information printed in Tables 8-3, 8-7, 8-8, 8-11, 8-12, and
-# 8-13 of The Unicode Standard, Version 4.0.
-#
-# See sections 8.2 and 8.3 of The Unicode Standard, Version 4.0
-# for more information.
-#
-# Each line contains four fields, separated by a semicolon.
-#
-# Field 0: the code point, in 4-digit hexadecimal
-# form, of an Arabic or Syriac character.
-# Field 1: gives a short schematic name for that character,
-# abbreviated from the normative Unicode character name.
-# Field 2: defines the joining type (property name: Joining_Type)
-# R Right_Joining
-# L Left_Joining
-# D Dual_Joining
-# C Join_Causing
-# U Non_Joining
-# T Transparent
-# See the Arabic block description for more information on these types.
-# Field 3: defines the joining group (property name: Joining_Group)
-#
-# The values of the joining group are based schematically on character
-# names. Where a schematic character name consists of two or more parts separated
-# by spaces, the formal Joining_Group property value, as specified in
-# PropertyValueAliases.txt, consists of the same name parts joined by
-# underscores. Hence, the entry:
-#
-# 0629; TEH MARBUTA; R; TEH MARBUTA
-#
-# corresponds to [Joining_Group = Teh_Marbuta].
-#
-# Note: For historical reasons, the property value [Joining_Group = Hamza_On_Heh_Goal]
-# is anachronistically named. It used to apply to both of the following characters
-# in earlier versions of the standard:
-#
-# U+06C2 ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
-# U+06C3 ARABIC LETTER TEH MARBUTA GOAL
-#
-# However, it currently applies only to U+06C3, and *not* to U+06C2.
-# To avoid destabilizing existing Joining_Group property aliases, the
-# value Hamza_On_Heh_Goal has not been changed, despite the fact that it
-# no longer applies to Hamza On Heh Goal, but only to Teh Marbuta Goal.
-#
-# Note: Code points that are not explicitly listed in this file are
-# either of joining type T or U:
-#
-# - Those that not explicitly listed that are of General Category Mn, Me, or Cf
-# have joining type T.
-# - All others not explicitly listed have type U.
-#
-# For an explicit listing of characters of joining type T, see
-# the derived property file DerivedJoiningType.txt.
-#
-# There are currently no characters of type L defined in Unicode.
-#
-# #############################################################
-
-# Unicode; Schematic Name; Joining Type; Joining Group
-
-# Arabic characters
-
-0600; ARABIC NUMBER SIGN; U; No_Joining_Group
-0601; ARABIC SIGN SANAH; U; No_Joining_Group
-0602; ARABIC FOOTNOTE MARKER; U; No_Joining_Group
-0603; ARABIC SIGN SAFHA; U; No_Joining_Group
-060B; AFGHANI SIGN; U; No_Joining_Group
-0621; HAMZA; U; No_Joining_Group
-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_Joining_Group
-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; D; YEH
-064A; YEH; D; YEH
-066E; DOTLESS BEH; D; BEH
-066F; DOTLESS QAF; D; QAF
-0671; HAMZAT WASL ON ALEF; R; ALEF
-0672; WAVY HAMZA ON ALEF; R; ALEF
-0673; WAVY HAMZA UNDER ALEF; R; ALEF
-0674; HIGH HAMZA; U; No_Joining_Group
-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; KEHEH; 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; D; 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; R; TEH MARBUTA
-06DD; ARABIC END OF AYAH; U; No_Joining_Group
-06EE; DAL WITH INVERTED V; R; DAL
-06EF; REH WITH INVERTED V; R; REH
-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
-06FF; HEH WITH INVERTED V; D; KNOTTED HEH
-
-# 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; SYRIAC 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
-072D; PERSIAN BHETH; D; BETH
-072E; PERSIAN GHAMAL; D; GAMAL
-072F; PERSIAN DHALATH; R; DALATH RISH
-074D; SOGDIAN ZHAIN; R; ZHAIN
-074E; SOGDIAN KHAPH; D; KHAPH
-074F; SOGDIAN FE; D; FE
-
-# Arabic supplement characters
-
-0750; BEH WITH 3 DOTS HORIZONTALLY BELOW; D; BEH
-0751; BEH WITH DOT BELOW AND 3 DOTS ABOVE; D; BEH
-0752; BEH WITH 3 DOTS POINTING UPWARDS BELOW; D; BEH
-0753; BEH WITH 3 DOTS POINTING UPWARDS BELOW AND 2 DOTS ABOVE; D; BEH
-0754; BEH WITH 2 DOTS BELOW AND DOT ABOVE; D; BEH
-0755; BEH WITH INVERTED SMALL V BELOW; D; BEH
-0756; BEH WITH SMALL V; D; BEH
-0757; HAH WITH 2 DOTS ABOVE; D; HAH
-0758; HAH WITH 3 DOTS POINTING UPWARDS BELOW; D; HAH
-0759; DAL WITH 2 DOTS VERTICALLY BELOW AND SMALL TAH; R; DAL
-075A; DAL WITH INVERTED SMALL V BELOW; R; DAL
-075B; REH WITH STROKE; R; REH
-075C; SEEN WITH 4 DOTS ABOVE; D; SEEN
-075D; AIN WITH 2 DOTS ABOVE; D; AIN
-075E; AIN WITH 3 DOTS POINTING DOWNWARDS ABOVE; D; AIN
-075F; AIN WITH 2 DOTS VERTICALLY ABOVE; D; AIN
-0760; FEH WITH 2 DOTS BELOW; D; FEH
-0761; FEH WITH 3 DOTS POINTING UPWARDS BELOW; D; FEH
-0762; KEHEH WITH DOT ABOVE; D; GAF
-0763; KEHEH WITH 3 DOTS ABOVE; D; GAF
-0764; KEHEH WITH 3 DOTS POINTING UPWARDS BELOW; D; GAF
-0765; MEEM WITH DOT ABOVE; D; MEEM
-0766; MEEM WITH DOT BELOW; D; MEEM
-0767; NOON WITH 2 DOTS BELOW; D; NOON
-0768; NOON WITH SMALL TAH; D; NOON
-0769; NOON WITH SMALL V; D; NOON
-076A; LAM WITH BAR; D; LAM
-076B; REH WITH 2 DOTS VERTICALLY ABOVE; R; REH
-076C; REH WITH HAMZA ABOVE; R; REH
-076D; SEEN WITH 2 DOTS VERTICALLY ABOVE; D; SEEN
-
-# Other
-
-200D; ZERO WIDTH JOINER; C; No_Joining_Group
-200C; ZERO WIDTH NON-JOINER; U; No_Joining_Group
diff --git a/Master/tlpkg/tlperl/lib/unicore/BidiMirroring.txt b/Master/tlpkg/tlperl/lib/unicore/BidiMirroring.txt
deleted file mode 100644
index 45167fbb99c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/BidiMirroring.txt
+++ /dev/null
@@ -1,550 +0,0 @@
-# BidiMirroring-4.1.0.txt
-# Date: 2005-03-17, 15:21:00 PST [KW]
-#
-# Bidi_Mirroring_Glyph Property
-#
-# This file is an informative contributory data file in the
-# Unicode Character Database.
-#
-# Copyright (c) 1991-2005 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-#
-# This data file lists characters that have the mirrored property
-# where there is another Unicode character that typically has a glyph
-# that is the mirror image of the original character's glyph.
-# The repertoire covered by the file is Unicode 4.1.0.
-#
-# The file contains a list of lines with mappings from one code point
-# to another one for character-based mirroring.
-# Note that for "real" mirroring, a rendering engine needs to select
-# appropriate alternative glyphs, and that many Unicode characters do not
-# have a mirror-image Unicode character.
-#
-# Each mapping line contains two fields, separated by a semicolon (';').
-# Each of the two fields contains a code point represented as a
-# variable-length hexadecimal value with 4 to 6 digits.
-# A comment indicates where the characters are "BEST FIT" mirroring.
-#
-# Code points with the "mirrored" property but no appropriate mirrors are
-# listed as comments at the end of the file.
-#
-# For information on bidi mirroring, see UAX #9: Bidirectional Algorithm,
-# at http://www.unicode.org/unicode/reports/tr9/
-#
-# This file was originally created by Markus Scherer.
-# Extended for Unicode 3.2, 4.0, and 4.1 by Ken Whistler.
-#
-# ############################################################
-
-0028; 0029 # LEFT PARENTHESIS
-0029; 0028 # RIGHT PARENTHESIS
-003C; 003E # LESS-THAN SIGN
-003E; 003C # GREATER-THAN SIGN
-005B; 005D # LEFT SQUARE BRACKET
-005D; 005B # RIGHT SQUARE BRACKET
-007B; 007D # LEFT CURLY BRACKET
-007D; 007B # RIGHT CURLY BRACKET
-00AB; 00BB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-00BB; 00AB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-2039; 203A # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-203A; 2039 # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-2045; 2046 # LEFT SQUARE BRACKET WITH QUILL
-2046; 2045 # RIGHT SQUARE BRACKET WITH QUILL
-207D; 207E # SUPERSCRIPT LEFT PARENTHESIS
-207E; 207D # SUPERSCRIPT RIGHT PARENTHESIS
-208D; 208E # SUBSCRIPT LEFT PARENTHESIS
-208E; 208D # SUBSCRIPT RIGHT PARENTHESIS
-2208; 220B # ELEMENT OF
-2209; 220C # NOT AN ELEMENT OF
-220A; 220D # SMALL ELEMENT OF
-220B; 2208 # CONTAINS AS MEMBER
-220C; 2209 # DOES NOT CONTAIN AS MEMBER
-220D; 220A # SMALL CONTAINS AS MEMBER
-2215; 29F5 # DIVISION SLASH
-223C; 223D # TILDE OPERATOR
-223D; 223C # REVERSED TILDE
-2243; 22CD # ASYMPTOTICALLY EQUAL TO
-2252; 2253 # APPROXIMATELY EQUAL TO OR THE IMAGE OF
-2253; 2252 # IMAGE OF OR APPROXIMATELY EQUAL TO
-2254; 2255 # COLON EQUALS
-2255; 2254 # EQUALS COLON
-2264; 2265 # LESS-THAN OR EQUAL TO
-2265; 2264 # GREATER-THAN OR EQUAL TO
-2266; 2267 # LESS-THAN OVER EQUAL TO
-2267; 2266 # GREATER-THAN OVER EQUAL TO
-2268; 2269 # [BEST FIT] LESS-THAN BUT NOT EQUAL TO
-2269; 2268 # [BEST FIT] GREATER-THAN BUT NOT EQUAL TO
-226A; 226B # MUCH LESS-THAN
-226B; 226A # MUCH GREATER-THAN
-226E; 226F # [BEST FIT] NOT LESS-THAN
-226F; 226E # [BEST FIT] NOT GREATER-THAN
-2270; 2271 # [BEST FIT] NEITHER LESS-THAN NOR EQUAL TO
-2271; 2270 # [BEST FIT] NEITHER GREATER-THAN NOR EQUAL TO
-2272; 2273 # [BEST FIT] LESS-THAN OR EQUIVALENT TO
-2273; 2272 # [BEST FIT] GREATER-THAN OR EQUIVALENT TO
-2274; 2275 # [BEST FIT] NEITHER LESS-THAN NOR EQUIVALENT TO
-2275; 2274 # [BEST FIT] NEITHER GREATER-THAN NOR EQUIVALENT TO
-2276; 2277 # LESS-THAN OR GREATER-THAN
-2277; 2276 # GREATER-THAN OR LESS-THAN
-2278; 2279 # NEITHER LESS-THAN NOR GREATER-THAN
-2279; 2278 # NEITHER GREATER-THAN NOR LESS-THAN
-227A; 227B # PRECEDES
-227B; 227A # SUCCEEDS
-227C; 227D # PRECEDES OR EQUAL TO
-227D; 227C # SUCCEEDS OR EQUAL TO
-227E; 227F # [BEST FIT] PRECEDES OR EQUIVALENT TO
-227F; 227E # [BEST FIT] SUCCEEDS OR EQUIVALENT TO
-2280; 2281 # [BEST FIT] DOES NOT PRECEDE
-2281; 2280 # [BEST FIT] DOES NOT SUCCEED
-2282; 2283 # SUBSET OF
-2283; 2282 # SUPERSET OF
-2284; 2285 # [BEST FIT] NOT A SUBSET OF
-2285; 2284 # [BEST FIT] NOT A SUPERSET OF
-2286; 2287 # SUBSET OF OR EQUAL TO
-2287; 2286 # SUPERSET OF OR EQUAL TO
-2288; 2289 # [BEST FIT] NEITHER A SUBSET OF NOR EQUAL TO
-2289; 2288 # [BEST FIT] NEITHER A SUPERSET OF NOR EQUAL TO
-228A; 228B # [BEST FIT] SUBSET OF WITH NOT EQUAL TO
-228B; 228A # [BEST FIT] SUPERSET OF WITH NOT EQUAL TO
-228F; 2290 # SQUARE IMAGE OF
-2290; 228F # SQUARE ORIGINAL OF
-2291; 2292 # SQUARE IMAGE OF OR EQUAL TO
-2292; 2291 # SQUARE ORIGINAL OF OR EQUAL TO
-2298; 29B8 # CIRCLED DIVISION SLASH
-22A2; 22A3 # RIGHT TACK
-22A3; 22A2 # LEFT TACK
-22A6; 2ADE # ASSERTION
-22A8; 2AE4 # TRUE
-22A9; 2AE3 # FORCES
-22AB; 2AE5 # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
-22B0; 22B1 # PRECEDES UNDER RELATION
-22B1; 22B0 # SUCCEEDS UNDER RELATION
-22B2; 22B3 # NORMAL SUBGROUP OF
-22B3; 22B2 # CONTAINS AS NORMAL SUBGROUP
-22B4; 22B5 # NORMAL SUBGROUP OF OR EQUAL TO
-22B5; 22B4 # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
-22B6; 22B7 # ORIGINAL OF
-22B7; 22B6 # IMAGE OF
-22C9; 22CA # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
-22CA; 22C9 # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
-22CB; 22CC # LEFT SEMIDIRECT PRODUCT
-22CC; 22CB # RIGHT SEMIDIRECT PRODUCT
-22CD; 2243 # REVERSED TILDE EQUALS
-22D0; 22D1 # DOUBLE SUBSET
-22D1; 22D0 # DOUBLE SUPERSET
-22D6; 22D7 # LESS-THAN WITH DOT
-22D7; 22D6 # GREATER-THAN WITH DOT
-22D8; 22D9 # VERY MUCH LESS-THAN
-22D9; 22D8 # VERY MUCH GREATER-THAN
-22DA; 22DB # LESS-THAN EQUAL TO OR GREATER-THAN
-22DB; 22DA # GREATER-THAN EQUAL TO OR LESS-THAN
-22DC; 22DD # EQUAL TO OR LESS-THAN
-22DD; 22DC # EQUAL TO OR GREATER-THAN
-22DE; 22DF # EQUAL TO OR PRECEDES
-22DF; 22DE # EQUAL TO OR SUCCEEDS
-22E0; 22E1 # [BEST FIT] DOES NOT PRECEDE OR EQUAL
-22E1; 22E0 # [BEST FIT] DOES NOT SUCCEED OR EQUAL
-22E2; 22E3 # [BEST FIT] NOT SQUARE IMAGE OF OR EQUAL TO
-22E3; 22E2 # [BEST FIT] NOT SQUARE ORIGINAL OF OR EQUAL TO
-22E4; 22E5 # [BEST FIT] SQUARE IMAGE OF OR NOT EQUAL TO
-22E5; 22E4 # [BEST FIT] SQUARE ORIGINAL OF OR NOT EQUAL TO
-22E6; 22E7 # [BEST FIT] LESS-THAN BUT NOT EQUIVALENT TO
-22E7; 22E6 # [BEST FIT] GREATER-THAN BUT NOT EQUIVALENT TO
-22E8; 22E9 # [BEST FIT] PRECEDES BUT NOT EQUIVALENT TO
-22E9; 22E8 # [BEST FIT] SUCCEEDS BUT NOT EQUIVALENT TO
-22EA; 22EB # [BEST FIT] NOT NORMAL SUBGROUP OF
-22EB; 22EA # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP
-22EC; 22ED # [BEST FIT] NOT NORMAL SUBGROUP OF OR EQUAL TO
-22ED; 22EC # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
-22F0; 22F1 # UP RIGHT DIAGONAL ELLIPSIS
-22F1; 22F0 # DOWN RIGHT DIAGONAL ELLIPSIS
-22F2; 22FA # ELEMENT OF WITH LONG HORIZONTAL STROKE
-22F3; 22FB # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22F4; 22FC # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22F6; 22FD # ELEMENT OF WITH OVERBAR
-22F7; 22FE # SMALL ELEMENT OF WITH OVERBAR
-22FA; 22F2 # CONTAINS WITH LONG HORIZONTAL STROKE
-22FB; 22F3 # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22FC; 22F4 # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22FD; 22F6 # CONTAINS WITH OVERBAR
-22FE; 22F7 # SMALL CONTAINS WITH OVERBAR
-2308; 2309 # LEFT CEILING
-2309; 2308 # RIGHT CEILING
-230A; 230B # LEFT FLOOR
-230B; 230A # RIGHT FLOOR
-2329; 232A # LEFT-POINTING ANGLE BRACKET
-232A; 2329 # RIGHT-POINTING ANGLE BRACKET
-2768; 2769 # MEDIUM LEFT PARENTHESIS ORNAMENT
-2769; 2768 # MEDIUM RIGHT PARENTHESIS ORNAMENT
-276A; 276B # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
-276B; 276A # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
-276C; 276D # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
-276D; 276C # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
-276E; 276F # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
-276F; 276E # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
-2770; 2771 # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
-2771; 2770 # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
-2772; 2773 # LIGHT LEFT TORTOISE SHELL BRACKET
-2773; 2772 # LIGHT RIGHT TORTOISE SHELL BRACKET
-2774; 2775 # MEDIUM LEFT CURLY BRACKET ORNAMENT
-2775; 2774 # MEDIUM RIGHT CURLY BRACKET ORNAMENT
-27C3; 27C4 # OPEN SUBSET
-27C4; 27C3 # OPEN SUPERSET
-27C5; 27C6 # LEFT S-SHAPED BAG DELIMITER
-27C6; 27C5 # RIGHT S-SHAPED BAG DELIMITER
-27D5; 27D6 # LEFT OUTER JOIN
-27D6; 27D5 # RIGHT OUTER JOIN
-27DD; 27DE # LONG RIGHT TACK
-27DE; 27DD # LONG LEFT TACK
-27E2; 27E3 # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK
-27E3; 27E2 # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK
-27E4; 27E5 # WHITE SQUARE WITH LEFTWARDS TICK
-27E5; 27E4 # WHITE SQUARE WITH RIGHTWARDS TICK
-27E6; 27E7 # MATHEMATICAL LEFT WHITE SQUARE BRACKET
-27E7; 27E6 # MATHEMATICAL RIGHT WHITE SQUARE BRACKET
-27E8; 27E9 # MATHEMATICAL LEFT ANGLE BRACKET
-27E9; 27E8 # MATHEMATICAL RIGHT ANGLE BRACKET
-27EA; 27EB # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
-27EB; 27EA # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
-2983; 2984 # LEFT WHITE CURLY BRACKET
-2984; 2983 # RIGHT WHITE CURLY BRACKET
-2985; 2986 # LEFT WHITE PARENTHESIS
-2986; 2985 # RIGHT WHITE PARENTHESIS
-2987; 2988 # Z NOTATION LEFT IMAGE BRACKET
-2988; 2987 # Z NOTATION RIGHT IMAGE BRACKET
-2989; 298A # Z NOTATION LEFT BINDING BRACKET
-298A; 2989 # Z NOTATION RIGHT BINDING BRACKET
-298B; 298C # LEFT SQUARE BRACKET WITH UNDERBAR
-298C; 298B # RIGHT SQUARE BRACKET WITH UNDERBAR
-298D; 2990 # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
-298E; 298F # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-298F; 298E # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-2990; 298D # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
-2991; 2992 # LEFT ANGLE BRACKET WITH DOT
-2992; 2991 # RIGHT ANGLE BRACKET WITH DOT
-2993; 2994 # LEFT ARC LESS-THAN BRACKET
-2994; 2993 # RIGHT ARC GREATER-THAN BRACKET
-2995; 2996 # DOUBLE LEFT ARC GREATER-THAN BRACKET
-2996; 2995 # DOUBLE RIGHT ARC LESS-THAN BRACKET
-2997; 2998 # LEFT BLACK TORTOISE SHELL BRACKET
-2998; 2997 # RIGHT BLACK TORTOISE SHELL BRACKET
-29B8; 2298 # CIRCLED REVERSE SOLIDUS
-29C0; 29C1 # CIRCLED LESS-THAN
-29C1; 29C0 # CIRCLED GREATER-THAN
-29C4; 29C5 # SQUARED RISING DIAGONAL SLASH
-29C5; 29C4 # SQUARED FALLING DIAGONAL SLASH
-29CF; 29D0 # LEFT TRIANGLE BESIDE VERTICAL BAR
-29D0; 29CF # VERTICAL BAR BESIDE RIGHT TRIANGLE
-29D1; 29D2 # BOWTIE WITH LEFT HALF BLACK
-29D2; 29D1 # BOWTIE WITH RIGHT HALF BLACK
-29D4; 29D5 # TIMES WITH LEFT HALF BLACK
-29D5; 29D4 # TIMES WITH RIGHT HALF BLACK
-29D8; 29D9 # LEFT WIGGLY FENCE
-29D9; 29D8 # RIGHT WIGGLY FENCE
-29DA; 29DB # LEFT DOUBLE WIGGLY FENCE
-29DB; 29DA # RIGHT DOUBLE WIGGLY FENCE
-29F5; 2215 # REVERSE SOLIDUS OPERATOR
-29F8; 29F9 # BIG SOLIDUS
-29F9; 29F8 # BIG REVERSE SOLIDUS
-29FC; 29FD # LEFT-POINTING CURVED ANGLE BRACKET
-29FD; 29FC # RIGHT-POINTING CURVED ANGLE BRACKET
-2A2B; 2A2C # MINUS SIGN WITH FALLING DOTS
-2A2C; 2A2B # MINUS SIGN WITH RISING DOTS
-2A2D; 2A2E # PLUS SIGN IN LEFT HALF CIRCLE
-2A2E; 2A2D # PLUS SIGN IN RIGHT HALF CIRCLE
-2A34; 2A35 # MULTIPLICATION SIGN IN LEFT HALF CIRCLE
-2A35; 2A34 # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE
-2A3C; 2A3D # INTERIOR PRODUCT
-2A3D; 2A3C # RIGHTHAND INTERIOR PRODUCT
-2A64; 2A65 # Z NOTATION DOMAIN ANTIRESTRICTION
-2A65; 2A64 # Z NOTATION RANGE ANTIRESTRICTION
-2A79; 2A7A # LESS-THAN WITH CIRCLE INSIDE
-2A7A; 2A79 # GREATER-THAN WITH CIRCLE INSIDE
-2A7D; 2A7E # LESS-THAN OR SLANTED EQUAL TO
-2A7E; 2A7D # GREATER-THAN OR SLANTED EQUAL TO
-2A7F; 2A80 # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
-2A80; 2A7F # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
-2A81; 2A82 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
-2A82; 2A81 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
-2A83; 2A84 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT
-2A84; 2A83 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT
-2A8B; 2A8C # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
-2A8C; 2A8B # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
-2A91; 2A92 # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL
-2A92; 2A91 # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL
-2A93; 2A94 # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL
-2A94; 2A93 # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL
-2A95; 2A96 # SLANTED EQUAL TO OR LESS-THAN
-2A96; 2A95 # SLANTED EQUAL TO OR GREATER-THAN
-2A97; 2A98 # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE
-2A98; 2A97 # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE
-2A99; 2A9A # DOUBLE-LINE EQUAL TO OR LESS-THAN
-2A9A; 2A99 # DOUBLE-LINE EQUAL TO OR GREATER-THAN
-2A9B; 2A9C # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN
-2A9C; 2A9B # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN
-2AA1; 2AA2 # DOUBLE NESTED LESS-THAN
-2AA2; 2AA1 # DOUBLE NESTED GREATER-THAN
-2AA6; 2AA7 # LESS-THAN CLOSED BY CURVE
-2AA7; 2AA6 # GREATER-THAN CLOSED BY CURVE
-2AA8; 2AA9 # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
-2AA9; 2AA8 # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
-2AAA; 2AAB # SMALLER THAN
-2AAB; 2AAA # LARGER THAN
-2AAC; 2AAD # SMALLER THAN OR EQUAL TO
-2AAD; 2AAC # LARGER THAN OR EQUAL TO
-2AAF; 2AB0 # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
-2AB0; 2AAF # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
-2AB3; 2AB4 # PRECEDES ABOVE EQUALS SIGN
-2AB4; 2AB3 # SUCCEEDS ABOVE EQUALS SIGN
-2ABB; 2ABC # DOUBLE PRECEDES
-2ABC; 2ABB # DOUBLE SUCCEEDS
-2ABD; 2ABE # SUBSET WITH DOT
-2ABE; 2ABD # SUPERSET WITH DOT
-2ABF; 2AC0 # SUBSET WITH PLUS SIGN BELOW
-2AC0; 2ABF # SUPERSET WITH PLUS SIGN BELOW
-2AC1; 2AC2 # SUBSET WITH MULTIPLICATION SIGN BELOW
-2AC2; 2AC1 # SUPERSET WITH MULTIPLICATION SIGN BELOW
-2AC3; 2AC4 # SUBSET OF OR EQUAL TO WITH DOT ABOVE
-2AC4; 2AC3 # SUPERSET OF OR EQUAL TO WITH DOT ABOVE
-2AC5; 2AC6 # SUBSET OF ABOVE EQUALS SIGN
-2AC6; 2AC5 # SUPERSET OF ABOVE EQUALS SIGN
-2ACD; 2ACE # SQUARE LEFT OPEN BOX OPERATOR
-2ACE; 2ACD # SQUARE RIGHT OPEN BOX OPERATOR
-2ACF; 2AD0 # CLOSED SUBSET
-2AD0; 2ACF # CLOSED SUPERSET
-2AD1; 2AD2 # CLOSED SUBSET OR EQUAL TO
-2AD2; 2AD1 # CLOSED SUPERSET OR EQUAL TO
-2AD3; 2AD4 # SUBSET ABOVE SUPERSET
-2AD4; 2AD3 # SUPERSET ABOVE SUBSET
-2AD5; 2AD6 # SUBSET ABOVE SUBSET
-2AD6; 2AD5 # SUPERSET ABOVE SUPERSET
-2ADE; 22A6 # SHORT LEFT TACK
-2AE3; 22A9 # DOUBLE VERTICAL BAR LEFT TURNSTILE
-2AE4; 22A8 # VERTICAL BAR DOUBLE LEFT TURNSTILE
-2AE5; 22AB # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE
-2AEC; 2AED # DOUBLE STROKE NOT SIGN
-2AED; 2AEC # REVERSED DOUBLE STROKE NOT SIGN
-2AF7; 2AF8 # TRIPLE NESTED LESS-THAN
-2AF8; 2AF7 # TRIPLE NESTED GREATER-THAN
-2AF9; 2AFA # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO
-2AFA; 2AF9 # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO
-2E02; 2E03 # LEFT SUBSTITUTION BRACKET
-2E03; 2E02 # RIGHT SUBSTITUTION BRACKET
-2E04; 2E05 # LEFT DOTTED SUBSTITUTION BRACKET
-2E05; 2E04 # RIGHT DOTTED SUBSTITUTION BRACKET
-2E09; 2E0A # LEFT TRANSPOSITION BRACKET
-2E0A; 2E09 # RIGHT TRANSPOSITION BRACKET
-2E0C; 2E0D # LEFT RAISED OMISSION BRACKET
-2E0D; 2E0C # RIGHT RAISED OMISSION BRACKET
-2E1C; 2E1D # LEFT LOW PARAPHRASE BRACKET
-2E1D; 2E1C # RIGHT LOW PARAPHRASE BRACKET
-3008; 3009 # LEFT ANGLE BRACKET
-3009; 3008 # RIGHT ANGLE BRACKET
-300A; 300B # LEFT DOUBLE ANGLE BRACKET
-300B; 300A # RIGHT DOUBLE ANGLE BRACKET
-300C; 300D # [BEST FIT] LEFT CORNER BRACKET
-300D; 300C # [BEST FIT] RIGHT CORNER BRACKET
-300E; 300F # [BEST FIT] LEFT WHITE CORNER BRACKET
-300F; 300E # [BEST FIT] RIGHT WHITE CORNER BRACKET
-3010; 3011 # LEFT BLACK LENTICULAR BRACKET
-3011; 3010 # RIGHT BLACK LENTICULAR BRACKET
-3014; 3015 # LEFT TORTOISE SHELL BRACKET
-3015; 3014 # RIGHT TORTOISE SHELL BRACKET
-3016; 3017 # LEFT WHITE LENTICULAR BRACKET
-3017; 3016 # RIGHT WHITE LENTICULAR BRACKET
-3018; 3019 # LEFT WHITE TORTOISE SHELL BRACKET
-3019; 3018 # RIGHT WHITE TORTOISE SHELL BRACKET
-301A; 301B # LEFT WHITE SQUARE BRACKET
-301B; 301A # RIGHT WHITE SQUARE BRACKET
-FF08; FF09 # FULLWIDTH LEFT PARENTHESIS
-FF09; FF08 # FULLWIDTH RIGHT PARENTHESIS
-FF1C; FF1E # FULLWIDTH LESS-THAN SIGN
-FF1E; FF1C # FULLWIDTH GREATER-THAN SIGN
-FF3B; FF3D # FULLWIDTH LEFT SQUARE BRACKET
-FF3D; FF3B # FULLWIDTH RIGHT SQUARE BRACKET
-FF5B; FF5D # FULLWIDTH LEFT CURLY BRACKET
-FF5D; FF5B # FULLWIDTH RIGHT CURLY BRACKET
-FF5F; FF60 # FULLWIDTH LEFT WHITE PARENTHESIS
-FF60; FF5F # FULLWIDTH RIGHT WHITE PARENTHESIS
-FF62; FF63 # [BEST FIT] HALFWIDTH LEFT CORNER BRACKET
-FF63; FF62 # [BEST FIT] HALFWIDTH RIGHT CORNER BRACKET
-
-# The following characters have no appropriate mirroring character.
-# For these characters it is up to the rendering system
-# to provide mirrored glyphs.
-
-# 2140; DOUBLE-STRUCK N-ARY SUMMATION
-# 2201; COMPLEMENT
-# 2202; PARTIAL DIFFERENTIAL
-# 2203; THERE EXISTS
-# 2204; THERE DOES NOT EXIST
-# 2211; N-ARY SUMMATION
-# 2216; SET MINUS
-# 221A; SQUARE ROOT
-# 221B; CUBE ROOT
-# 221C; FOURTH ROOT
-# 221D; PROPORTIONAL TO
-# 221F; RIGHT ANGLE
-# 2220; ANGLE
-# 2221; MEASURED ANGLE
-# 2222; SPHERICAL ANGLE
-# 2224; DOES NOT DIVIDE
-# 2226; NOT PARALLEL TO
-# 222B; INTEGRAL
-# 222C; DOUBLE INTEGRAL
-# 222D; TRIPLE INTEGRAL
-# 222E; CONTOUR INTEGRAL
-# 222F; SURFACE INTEGRAL
-# 2230; VOLUME INTEGRAL
-# 2231; CLOCKWISE INTEGRAL
-# 2232; CLOCKWISE CONTOUR INTEGRAL
-# 2233; ANTICLOCKWISE CONTOUR INTEGRAL
-# 2239; EXCESS
-# 223B; HOMOTHETIC
-# 223E; INVERTED LAZY S
-# 223F; SINE WAVE
-# 2240; WREATH PRODUCT
-# 2241; NOT TILDE
-# 2242; MINUS TILDE
-# 2244; NOT ASYMPTOTICALLY EQUAL TO
-# 2245; APPROXIMATELY EQUAL TO
-# 2246; APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
-# 2247; NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
-# 2248; ALMOST EQUAL TO
-# 2249; NOT ALMOST EQUAL TO
-# 224A; ALMOST EQUAL OR EQUAL TO
-# 224B; TRIPLE TILDE
-# 224C; ALL EQUAL TO
-# 225F; QUESTIONED EQUAL TO
-# 2260; NOT EQUAL TO
-# 2262; NOT IDENTICAL TO
-# 228C; MULTISET
-# 22A7; MODELS
-# 22AA; TRIPLE VERTICAL BAR RIGHT TURNSTILE
-# 22AC; DOES NOT PROVE
-# 22AD; NOT TRUE
-# 22AE; DOES NOT FORCE
-# 22AF; NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
-# 22B8; MULTIMAP
-# 22BE; RIGHT ANGLE WITH ARC
-# 22BF; RIGHT TRIANGLE
-# 22F5; ELEMENT OF WITH DOT ABOVE
-# 22F8; ELEMENT OF WITH UNDERBAR
-# 22F9; ELEMENT OF WITH TWO HORIZONTAL STROKES
-# 22FF; Z NOTATION BAG MEMBERSHIP
-# 2320; TOP HALF INTEGRAL
-# 2321; BOTTOM HALF INTEGRAL
-# 27C0; THREE DIMENSIONAL ANGLE
-# 27D3; LOWER RIGHT CORNER WITH DOT
-# 27D4; UPPER LEFT CORNER WITH DOT
-# 27DC; LEFT MULTIMAP
-# 299B; MEASURED ANGLE OPENING LEFT
-# 299C; RIGHT ANGLE VARIANT WITH SQUARE
-# 299D; MEASURED RIGHT ANGLE WITH DOT
-# 299E; ANGLE WITH S INSIDE
-# 299F; ACUTE ANGLE
-# 29A0; SPHERICAL ANGLE OPENING LEFT
-# 29A1; SPHERICAL ANGLE OPENING UP
-# 29A2; TURNED ANGLE
-# 29A3; REVERSED ANGLE
-# 29A4; ANGLE WITH UNDERBAR
-# 29A5; REVERSED ANGLE WITH UNDERBAR
-# 29A6; OBLIQUE ANGLE OPENING UP
-# 29A7; OBLIQUE ANGLE OPENING DOWN
-# 29A8; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT
-# 29A9; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT
-# 29AA; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT
-# 29AB; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT
-# 29AC; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP
-# 29AD; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP
-# 29AE; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN
-# 29AF; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN
-# 29C2; CIRCLE WITH SMALL CIRCLE TO THE RIGHT
-# 29C3; CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT
-# 29C9; TWO JOINED SQUARES
-# 29CE; RIGHT TRIANGLE ABOVE LEFT TRIANGLE
-# 29DC; INCOMPLETE INFINITY
-# 29E1; INCREASES AS
-# 29E3; EQUALS SIGN AND SLANTED PARALLEL
-# 29E4; EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE
-# 29E5; IDENTICAL TO AND SLANTED PARALLEL
-# 29E8; DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK
-# 29E9; DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK
-# 29F4; RULE-DELAYED
-# 29F6; SOLIDUS WITH OVERBAR
-# 29F7; REVERSE SOLIDUS WITH HORIZONTAL STROKE
-# 2A0A; MODULO TWO SUM
-# 2A0B; SUMMATION WITH INTEGRAL
-# 2A0C; QUADRUPLE INTEGRAL OPERATOR
-# 2A0D; FINITE PART INTEGRAL
-# 2A0E; INTEGRAL WITH DOUBLE STROKE
-# 2A0F; INTEGRAL AVERAGE WITH SLASH
-# 2A10; CIRCULATION FUNCTION
-# 2A11; ANTICLOCKWISE INTEGRATION
-# 2A12; LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE
-# 2A13; LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE
-# 2A14; LINE INTEGRATION NOT INCLUDING THE POLE
-# 2A15; INTEGRAL AROUND A POINT OPERATOR
-# 2A16; QUATERNION INTEGRAL OPERATOR
-# 2A17; INTEGRAL WITH LEFTWARDS ARROW WITH HOOK
-# 2A18; INTEGRAL WITH TIMES SIGN
-# 2A19; INTEGRAL WITH INTERSECTION
-# 2A1A; INTEGRAL WITH UNION
-# 2A1B; INTEGRAL WITH OVERBAR
-# 2A1C; INTEGRAL WITH UNDERBAR
-# 2A1E; LARGE LEFT TRIANGLE OPERATOR
-# 2A1F; Z NOTATION SCHEMA COMPOSITION
-# 2A20; Z NOTATION SCHEMA PIPING
-# 2A21; Z NOTATION SCHEMA PROJECTION
-# 2A24; PLUS SIGN WITH TILDE ABOVE
-# 2A26; PLUS SIGN WITH TILDE BELOW
-# 2A29; MINUS SIGN WITH COMMA ABOVE
-# 2A3E; Z NOTATION RELATIONAL COMPOSITION
-# 2A57; SLOPING LARGE OR
-# 2A58; SLOPING LARGE AND
-# 2A6A; TILDE OPERATOR WITH DOT ABOVE
-# 2A6B; TILDE OPERATOR WITH RISING DOTS
-# 2A6C; SIMILAR MINUS SIMILAR
-# 2A6D; CONGRUENT WITH DOT ABOVE
-# 2A6F; ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT
-# 2A70; APPROXIMATELY EQUAL OR EQUAL TO
-# 2A73; EQUALS SIGN ABOVE TILDE OPERATOR
-# 2A74; DOUBLE COLON EQUAL
-# 2A7B; LESS-THAN WITH QUESTION MARK ABOVE
-# 2A7C; GREATER-THAN WITH QUESTION MARK ABOVE
-# 2A85; LESS-THAN OR APPROXIMATE
-# 2A86; GREATER-THAN OR APPROXIMATE
-# 2A87; LESS-THAN AND SINGLE-LINE NOT EQUAL TO
-# 2A88; GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
-# 2A89; LESS-THAN AND NOT APPROXIMATE
-# 2A8A; GREATER-THAN AND NOT APPROXIMATE
-# 2A8D; LESS-THAN ABOVE SIMILAR OR EQUAL
-# 2A8E; GREATER-THAN ABOVE SIMILAR OR EQUAL
-# 2A8F; LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN
-# 2A90; GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN
-# 2A9D; SIMILAR OR LESS-THAN
-# 2A9E; SIMILAR OR GREATER-THAN
-# 2A9F; SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN
-# 2AA0; SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN
-# 2AA3; DOUBLE NESTED LESS-THAN WITH UNDERBAR
-# 2AB1; PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO
-# 2AB2; SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO
-# 2AB5; PRECEDES ABOVE NOT EQUAL TO
-# 2AB6; SUCCEEDS ABOVE NOT EQUAL TO
-# 2AB7; PRECEDES ABOVE ALMOST EQUAL TO
-# 2AB8; SUCCEEDS ABOVE ALMOST EQUAL TO
-# 2AB9; PRECEDES ABOVE NOT ALMOST EQUAL TO
-# 2ABA; SUCCEEDS ABOVE NOT ALMOST EQUAL TO
-# 2AC7; SUBSET OF ABOVE TILDE OPERATOR
-# 2AC8; SUPERSET OF ABOVE TILDE OPERATOR
-# 2AC9; SUBSET OF ABOVE ALMOST EQUAL TO
-# 2ACA; SUPERSET OF ABOVE ALMOST EQUAL TO
-# 2ACB; SUBSET OF ABOVE NOT EQUAL TO
-# 2ACC; SUPERSET OF ABOVE NOT EQUAL TO
-# 2ADC; FORKING
-# 2AE2; VERTICAL BAR TRIPLE RIGHT TURNSTILE
-# 2AE6; LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL
-# 2AEE; DOES NOT DIVIDE WITH REVERSED NEGATION SLASH
-# 2AF3; PARALLEL WITH TILDE OPERATOR
-# 2AFB; TRIPLE SOLIDUS BINARY RELATION
-# 2AFD; DOUBLE SOLIDUS OPERATOR
diff --git a/Master/tlpkg/tlperl/lib/unicore/Blocks.txt b/Master/tlpkg/tlperl/lib/unicore/Blocks.txt
deleted file mode 100644
index f2b95662745..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/Blocks.txt
+++ /dev/null
@@ -1,172 +0,0 @@
-# Blocks-4.1.0.txt
-# Date: 2005-1-31, 16:50 [KW]
-#
-# Unicode Character Database
-# Copyright (c) 1991-2005 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see UCD.html
-#
-# Note: The casing of block names is not normative.
-# For example, "Basic Latin" and "BASIC LATIN" are equivalent.
-#
-# Format:
-# Start Code..End Code; Block Name
-
-# ================================================
-
-# Note: When comparing block names, casing, whitespace, hyphens,
-# and underbars are ignored.
-# For example, "Latin Extended-A" and "latin extended a" are equivalent.
-# For more information on the comparison of property values,
-# see UCD.html.
-#
-# All code points not explicitly listed for Block
-# have the value No_Block.
-
-# Property: Block
-
-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 and Coptic
-0400..04FF; Cyrillic
-0500..052F; Cyrillic Supplement
-0530..058F; Armenian
-0590..05FF; Hebrew
-0600..06FF; Arabic
-0700..074F; Syriac
-0750..077F; Arabic Supplement
-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
-1380..139F; Ethiopic Supplement
-13A0..13FF; Cherokee
-1400..167F; Unified Canadian Aboriginal Syllabics
-1680..169F; Ogham
-16A0..16FF; Runic
-1700..171F; Tagalog
-1720..173F; Hanunoo
-1740..175F; Buhid
-1760..177F; Tagbanwa
-1780..17FF; Khmer
-1800..18AF; Mongolian
-1900..194F; Limbu
-1950..197F; Tai Le
-1980..19DF; New Tai Lue
-19E0..19FF; Khmer Symbols
-1A00..1A1F; Buginese
-1D00..1D7F; Phonetic Extensions
-1D80..1DBF; Phonetic Extensions Supplement
-1DC0..1DFF; Combining Diacritical Marks Supplement
-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 Diacritical 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
-27C0..27EF; Miscellaneous Mathematical Symbols-A
-27F0..27FF; Supplemental Arrows-A
-2800..28FF; Braille Patterns
-2900..297F; Supplemental Arrows-B
-2980..29FF; Miscellaneous Mathematical Symbols-B
-2A00..2AFF; Supplemental Mathematical Operators
-2B00..2BFF; Miscellaneous Symbols and Arrows
-2C00..2C5F; Glagolitic
-2C80..2CFF; Coptic
-2D00..2D2F; Georgian Supplement
-2D30..2D7F; Tifinagh
-2D80..2DDF; Ethiopic Extended
-2E00..2E7F; Supplemental Punctuation
-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
-31C0..31EF; CJK Strokes
-31F0..31FF; Katakana Phonetic Extensions
-3200..32FF; Enclosed CJK Letters and Months
-3300..33FF; CJK Compatibility
-3400..4DBF; CJK Unified Ideographs Extension A
-4DC0..4DFF; Yijing Hexagram Symbols
-4E00..9FFF; CJK Unified Ideographs
-A000..A48F; Yi Syllables
-A490..A4CF; Yi Radicals
-A700..A71F; Modifier Tone Letters
-A800..A82F; Syloti Nagri
-AC00..D7AF; Hangul Syllables
-D800..DB7F; High Surrogates
-DB80..DBFF; High Private Use Surrogates
-DC00..DFFF; Low Surrogates
-E000..F8FF; Private Use Area
-F900..FAFF; CJK Compatibility Ideographs
-FB00..FB4F; Alphabetic Presentation Forms
-FB50..FDFF; Arabic Presentation Forms-A
-FE00..FE0F; Variation Selectors
-FE10..FE1F; Vertical Forms
-FE20..FE2F; Combining Half Marks
-FE30..FE4F; CJK Compatibility Forms
-FE50..FE6F; Small Form Variants
-FE70..FEFF; Arabic Presentation Forms-B
-FF00..FFEF; Halfwidth and Fullwidth Forms
-FFF0..FFFF; Specials
-10000..1007F; Linear B Syllabary
-10080..100FF; Linear B Ideograms
-10100..1013F; Aegean Numbers
-10140..1018F; Ancient Greek Numbers
-10300..1032F; Old Italic
-10330..1034F; Gothic
-10380..1039F; Ugaritic
-103A0..103DF; Old Persian
-10400..1044F; Deseret
-10450..1047F; Shavian
-10480..104AF; Osmanya
-10800..1083F; Cypriot Syllabary
-10A00..10A5F; Kharoshthi
-1D000..1D0FF; Byzantine Musical Symbols
-1D100..1D1FF; Musical Symbols
-1D200..1D24F; Ancient Greek Musical Notation
-1D300..1D35F; Tai Xuan Jing Symbols
-1D400..1D7FF; Mathematical Alphanumeric Symbols
-20000..2A6DF; CJK Unified Ideographs Extension B
-2F800..2FA1F; CJK Compatibility Ideographs Supplement
-E0000..E007F; Tags
-E0100..E01EF; Variation Selectors Supplement
-F0000..FFFFF; Supplementary Private Use Area-A
-100000..10FFFF; Supplementary Private Use Area-B
diff --git a/Master/tlpkg/tlperl/lib/unicore/Canonical.pl b/Master/tlpkg/tlperl/lib/unicore/Canonical.pl
deleted file mode 100644
index fce1e219700..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/Canonical.pl
+++ /dev/null
@@ -1,1042 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-##
-## Data in this file used by ../utf8_heavy.pl
-##
-
-## Mapping from lc(canonical name) to filename in ./lib
-%utf8::Canonical = (
-
- # InAegeanNumbers
- aegeannumbers => 'InAegean',
-
- alphabetic => 'Alphabet',
-
- # InAlphabeticPresentationForms
- alphabeticpresentationforms => 'InAlphab',
-
- # InAncientGreekMusicalNotation
- ancientgreekmusicalnotation => 'InAncie2',
-
- # InAncientGreekNumbers
- ancientgreeknumbers => 'InAncien',
-
- arabic => 'Arab',
-
- # InArabicPresentationFormsA
- arabicpresentationformsa => 'InArabi4',
-
- # InArabicPresentationFormsB
- arabicpresentationformsb => 'InArabi3',
-
- # InArabicSupplement
- arabicsupplement => 'InArabi2',
-
- armenian => 'Armn',
-
- # InArrows
- arrows => 'InArrows',
-
- # AsciiHexDigit
- asciihexdigit => 'AsciiHex',
-
- # InBasicLatin
- basiclatin => 'InBasicL',
-
- bengali => 'Beng',
-
- # BidiControl
- bidicontrol => 'BidiCont',
-
- # InBlockElements
- blockelements => 'InBlockE',
-
- bopomofo => 'Bopo',
-
- # InBopomofoExtended
- bopomofoextended => 'InBopom2',
-
- # InBoxDrawing
- boxdrawing => 'InBoxDra',
-
- braille => 'Brai',
-
- # InBraillePatterns
- braillepatterns => 'InBraill',
-
- buginese => 'Bugi',
- buhid => 'Buhd',
-
- # InByzantineMusicalSymbols
- byzantinemusicalsymbols => 'InByzant',
-
- # CanadianAboriginal
- canadianaboriginal => 'Canadian',
-
- # CasedLetter
- casedletter => 'LC',
-
- cherokee => 'Cher',
-
- # InCjkCompatibility
- cjkcompatibility => 'InCjkCom',
-
- # InCjkCompatibilityForms
- cjkcompatibilityforms => 'InCjkCo2',
-
- # InCjkCompatibilityIdeographs
- cjkcompatibilityideographs => 'InCjkCo3',
-
- # InCjkCompatibilityIdeographsSupplement
- cjkcompatibilityideographssupplement => 'InCjkCo4',
-
- # InCjkRadicalsSupplement
- cjkradicalssupplement => 'InCjkRad',
-
- # InCjkStrokes
- cjkstrokes => 'InCjkStr',
-
- # InCjkSymbolsAndPunctuation
- cjksymbolsandpunctuation => 'InCjkSym',
-
- # InCjkUnifiedIdeographs
- cjkunifiedideographs => 'InCjkUni',
-
- # InCjkUnifiedIdeographsExtensionA
- cjkunifiedideographsextensiona => 'InCjkUn3',
-
- # InCjkUnifiedIdeographsExtensionB
- cjkunifiedideographsextensionb => 'InCjkUn2',
-
- # ClosePunctuation
- closepunctuation => 'Pe',
-
- # InCombiningDiacriticalMarks
- combiningdiacriticalmarks => 'InCombi2',
-
- # InCombiningDiacriticalMarksForSymbols
- combiningdiacriticalmarksforsymbols => 'InCombi4',
-
- # InCombiningDiacriticalMarksSupplement
- combiningdiacriticalmarkssupplement => 'InCombi3',
-
- # InCombiningHalfMarks
- combininghalfmarks => 'InCombin',
-
- common => 'Zyyy',
-
- # ConnectorPunctuation
- connectorpunctuation => 'Pc',
-
- control => 'Cc',
-
- # InControlPictures
- controlpictures => 'InContro',
-
- coptic => 'Copt',
-
- # CurrencySymbol
- currencysymbol => 'Sc',
-
- # InCurrencySymbols
- currencysymbols => 'InCurren',
-
- cypriot => 'Cprt',
-
- # InCypriotSyllabary
- cypriotsyllabary => 'InCyprio',
-
- cyrillic => 'Cyrl',
-
- # InCyrillicSupplement
- cyrillicsupplement => 'InCyril2',
-
- dash => 'Dash2',
-
- # DashPunctuation
- dashpunctuation => 'Pd',
-
- # DecimalNumber
- decimalnumber => 'Nd',
-
- deprecated => 'Deprecat',
- deseret => 'Dsrt',
- devanagari => 'Deva',
- diacritic => 'Diacriti',
-
- # InDingbats
- dingbats => 'InDingba',
-
- # InEnclosedAlphanumerics
- enclosedalphanumerics => 'InEnclos',
-
- # InEnclosedCjkLettersAndMonths
- enclosedcjklettersandmonths => 'InEnclo2',
-
- # EnclosingMark
- enclosingmark => 'Me',
-
- ethiopic => 'Ethi',
-
- # InEthiopicExtended
- ethiopicextended => 'InEthio2',
-
- # InEthiopicSupplement
- ethiopicsupplement => 'InEthio3',
-
- extender => 'Extender',
-
- # FinalPunctuation
- finalpunctuation => 'Pf',
-
- format => 'Cf',
-
- # InGeneralPunctuation
- generalpunctuation => 'InGenera',
-
- # InGeometricShapes
- geometricshapes => 'InGeomet',
-
- georgian => 'Geor',
-
- # InGeorgianSupplement
- georgiansupplement => 'InGeorg2',
-
- glagolitic => 'Glag',
- gothic => 'Goth',
-
- # GraphemeLink
- graphemelink => 'Grapheme',
-
- greek => 'Grek',
-
- # InGreekAndCoptic
- greekandcoptic => 'InGreekA',
-
- # InGreekExtended
- greekextended => 'InGreekE',
-
- gujarati => 'Gujr',
- gurmukhi => 'Guru',
-
- # InHalfwidthAndFullwidthForms
- halfwidthandfullwidthforms => 'InHalfwi',
-
- han => 'Hani',
- hangul => 'Hang',
-
- # InHangulCompatibilityJamo
- hangulcompatibilityjamo => 'InHangu3',
-
- # InHangulJamo
- hanguljamo => 'InHangul',
-
- # InHangulSyllables
- hangulsyllables => 'InHangu2',
-
- hanunoo => 'Hano',
- hebrew => 'Hebr',
-
- # HexDigit
- hexdigit => 'HexDigit',
-
- # InHighPrivateUseSurrogates
- highprivateusesurrogates => 'InHighPr',
-
- # InHighSurrogates
- highsurrogates => 'InHighSu',
-
- hiragana => 'Hira',
- hyphen => 'Hyphen2',
-
- # IdContinue
- idcontinue => 'IdContin',
-
- ideographic => 'Ideograp',
-
- # InIdeographicDescriptionCharacters
- ideographicdescriptioncharacters => 'InIdeogr',
-
- # IdsBinaryOperator
- idsbinaryoperator => 'IdsBinar',
-
- # IdStart
- idstart => 'IdStart',
-
- # IdsTrinaryOperator
- idstrinaryoperator => 'IdsTrina',
-
- # InAegeanNumbers
- inaegeannumbers => 'InAegean',
-
- # InAlphabeticPresentationForms
- inalphabeticpresentationforms => 'InAlphab',
-
- # InAncientGreekMusicalNotation
- inancientgreekmusicalnotation => 'InAncie2',
-
- # InAncientGreekNumbers
- inancientgreeknumbers => 'InAncien',
-
- # InArabic
- inarabic => 'InArabic',
-
- # InArabicPresentationFormsA
- inarabicpresentationformsa => 'InArabi4',
-
- # InArabicPresentationFormsB
- inarabicpresentationformsb => 'InArabi3',
-
- # InArabicSupplement
- inarabicsupplement => 'InArabi2',
-
- # InArmenian
- inarmenian => 'InArmeni',
-
- # InArrows
- inarrows => 'InArrows',
-
- # InBasicLatin
- inbasiclatin => 'InBasicL',
-
- # InBengali
- inbengali => 'InBengal',
-
- # InBlockElements
- inblockelements => 'InBlockE',
-
- # InBopomofo
- inbopomofo => 'InBopomo',
-
- # InBopomofoExtended
- inbopomofoextended => 'InBopom2',
-
- # InBoxDrawing
- inboxdrawing => 'InBoxDra',
-
- # InBraillePatterns
- inbraillepatterns => 'InBraill',
-
- # InBuginese
- inbuginese => 'InBugine',
-
- # InBuhid
- inbuhid => 'InBuhid',
-
- # InByzantineMusicalSymbols
- inbyzantinemusicalsymbols => 'InByzant',
-
- # InCherokee
- incherokee => 'InCherok',
-
- # InCjkCompatibility
- incjkcompatibility => 'InCjkCom',
-
- # InCjkCompatibilityForms
- incjkcompatibilityforms => 'InCjkCo2',
-
- # InCjkCompatibilityIdeographs
- incjkcompatibilityideographs => 'InCjkCo3',
-
- # InCjkCompatibilityIdeographsSupplement
- incjkcompatibilityideographssupplement => 'InCjkCo4',
-
- # InCjkRadicalsSupplement
- incjkradicalssupplement => 'InCjkRad',
-
- # InCjkStrokes
- incjkstrokes => 'InCjkStr',
-
- # InCjkSymbolsAndPunctuation
- incjksymbolsandpunctuation => 'InCjkSym',
-
- # InCjkUnifiedIdeographs
- incjkunifiedideographs => 'InCjkUni',
-
- # InCjkUnifiedIdeographsExtensionA
- incjkunifiedideographsextensiona => 'InCjkUn3',
-
- # InCjkUnifiedIdeographsExtensionB
- incjkunifiedideographsextensionb => 'InCjkUn2',
-
- # InCombiningDiacriticalMarks
- incombiningdiacriticalmarks => 'InCombi2',
-
- # InCombiningDiacriticalMarksForSymbols
- incombiningdiacriticalmarksforsymbols => 'InCombi4',
-
- # InCombiningDiacriticalMarksSupplement
- incombiningdiacriticalmarkssupplement => 'InCombi3',
-
- # InCombiningHalfMarks
- incombininghalfmarks => 'InCombin',
-
- # InControlPictures
- incontrolpictures => 'InContro',
-
- # InCoptic
- incoptic => 'InCoptic',
-
- # InCurrencySymbols
- incurrencysymbols => 'InCurren',
-
- # InCypriotSyllabary
- incypriotsyllabary => 'InCyprio',
-
- # InCyrillic
- incyrillic => 'InCyrill',
-
- # InCyrillicSupplement
- incyrillicsupplement => 'InCyril2',
-
- # InDeseret
- indeseret => 'InDesere',
-
- # InDevanagari
- indevanagari => 'InDevana',
-
- # InDingbats
- indingbats => 'InDingba',
-
- # InEnclosedAlphanumerics
- inenclosedalphanumerics => 'InEnclos',
-
- # InEnclosedCjkLettersAndMonths
- inenclosedcjklettersandmonths => 'InEnclo2',
-
- # InEthiopic
- inethiopic => 'InEthiop',
-
- # InEthiopicExtended
- inethiopicextended => 'InEthio2',
-
- # InEthiopicSupplement
- inethiopicsupplement => 'InEthio3',
-
- # InGeneralPunctuation
- ingeneralpunctuation => 'InGenera',
-
- # InGeometricShapes
- ingeometricshapes => 'InGeomet',
-
- # InGeorgian
- ingeorgian => 'InGeorgi',
-
- # InGeorgianSupplement
- ingeorgiansupplement => 'InGeorg2',
-
- # InGlagolitic
- inglagolitic => 'InGlagol',
-
- # InGothic
- ingothic => 'InGothic',
-
- # InGreekAndCoptic
- ingreekandcoptic => 'InGreekA',
-
- # InGreekExtended
- ingreekextended => 'InGreekE',
-
- # InGujarati
- ingujarati => 'InGujara',
-
- # InGurmukhi
- ingurmukhi => 'InGurmuk',
-
- # InHalfwidthAndFullwidthForms
- inhalfwidthandfullwidthforms => 'InHalfwi',
-
- # InHangulCompatibilityJamo
- inhangulcompatibilityjamo => 'InHangu3',
-
- # InHangulJamo
- inhanguljamo => 'InHangul',
-
- # InHangulSyllables
- inhangulsyllables => 'InHangu2',
-
- # InHanunoo
- inhanunoo => 'InHanuno',
-
- # InHebrew
- inhebrew => 'InHebrew',
-
- inherited => 'Qaai',
-
- # InHighPrivateUseSurrogates
- inhighprivateusesurrogates => 'InHighPr',
-
- # InHighSurrogates
- inhighsurrogates => 'InHighSu',
-
- # InHiragana
- inhiragana => 'InHiraga',
-
- # InIdeographicDescriptionCharacters
- inideographicdescriptioncharacters => 'InIdeogr',
-
- # InIpaExtensions
- inipaextensions => 'InIpaExt',
-
- # InitialPunctuation
- initialpunctuation => 'Pi',
-
- # InKanbun
- inkanbun => 'InKanbun',
-
- # InKangxiRadicals
- inkangxiradicals => 'InKangxi',
-
- # InKannada
- inkannada => 'InKannad',
-
- # InKatakana
- inkatakana => 'InKataka',
-
- # InKatakanaPhoneticExtensions
- inkatakanaphoneticextensions => 'InKatak2',
-
- # InKharoshthi
- inkharoshthi => 'InKharos',
-
- # InKhmer
- inkhmer => 'InKhmer',
-
- # InKhmerSymbols
- inkhmersymbols => 'InKhmerS',
-
- # InLao
- inlao => 'InLao',
-
- # InLatin1Supplement
- inlatin1supplement => 'InLatin1',
-
- # InLatinExtendedA
- inlatinextendeda => 'InLatin2',
-
- # InLatinExtendedAdditional
- inlatinextendedadditional => 'InLatin3',
-
- # InLatinExtendedB
- inlatinextendedb => 'InLatinE',
-
- # InLetterlikeSymbols
- inletterlikesymbols => 'InLetter',
-
- # InLimbu
- inlimbu => 'InLimbu',
-
- # InLinearBIdeograms
- inlinearbideograms => 'InLinear',
-
- # InLinearBSyllabary
- inlinearbsyllabary => 'InLinea2',
-
- # InLowSurrogates
- inlowsurrogates => 'InLowSur',
-
- # InMalayalam
- inmalayalam => 'InMalaya',
-
- # InMathematicalAlphanumericSymbols
- inmathematicalalphanumericsymbols => 'InMathe2',
-
- # InMathematicalOperators
- inmathematicaloperators => 'InMathem',
-
- # InMiscellaneousMathematicalSymbolsA
- inmiscellaneousmathematicalsymbolsa => 'InMisce4',
-
- # InMiscellaneousMathematicalSymbolsB
- inmiscellaneousmathematicalsymbolsb => 'InMisce5',
-
- # InMiscellaneousSymbols
- inmiscellaneoussymbols => 'InMiscel',
-
- # InMiscellaneousSymbolsAndArrows
- inmiscellaneoussymbolsandarrows => 'InMisce3',
-
- # InMiscellaneousTechnical
- inmiscellaneoustechnical => 'InMisce2',
-
- # InModifierToneLetters
- inmodifiertoneletters => 'InModifi',
-
- # InMongolian
- inmongolian => 'InMongol',
-
- # InMusicalSymbols
- inmusicalsymbols => 'InMusica',
-
- # InMyanmar
- inmyanmar => 'InMyanma',
-
- # InNewTaiLue
- innewtailue => 'InNewTai',
-
- # InNumberForms
- innumberforms => 'InNumber',
-
- # InOgham
- inogham => 'InOgham',
-
- # InOldItalic
- inolditalic => 'InOldIta',
-
- # InOldPersian
- inoldpersian => 'InOldPer',
-
- # InOpticalCharacterRecognition
- inopticalcharacterrecognition => 'InOptica',
-
- # InOriya
- inoriya => 'InOriya',
-
- # InOsmanya
- inosmanya => 'InOsmany',
-
- # InPhoneticExtensions
- inphoneticextensions => 'InPhonet',
-
- # InPhoneticExtensionsSupplement
- inphoneticextensionssupplement => 'InPhone2',
-
- # InPrivateUseArea
- inprivateusearea => 'InPrivat',
-
- # InRunic
- inrunic => 'InRunic',
-
- # InShavian
- inshavian => 'InShavia',
-
- # InSinhala
- insinhala => 'InSinhal',
-
- # InSmallFormVariants
- insmallformvariants => 'InSmallF',
-
- # InSpacingModifierLetters
- inspacingmodifierletters => 'InSpacin',
-
- # InSpecials
- inspecials => 'InSpecia',
-
- # InSuperscriptsAndSubscripts
- insuperscriptsandsubscripts => 'InSupers',
-
- # InSupplementalArrowsA
- insupplementalarrowsa => 'InSuppl2',
-
- # InSupplementalArrowsB
- insupplementalarrowsb => 'InSupple',
-
- # InSupplementalMathematicalOperators
- insupplementalmathematicaloperators => 'InSuppl6',
-
- # InSupplementalPunctuation
- insupplementalpunctuation => 'InSuppl3',
-
- # InSupplementaryPrivateUseAreaA
- insupplementaryprivateuseareaa => 'InSuppl4',
-
- # InSupplementaryPrivateUseAreaB
- insupplementaryprivateuseareab => 'InSuppl5',
-
- # InSylotiNagri
- insylotinagri => 'InSyloti',
-
- # InSyriac
- insyriac => 'InSyriac',
-
- # InTagalog
- intagalog => 'InTagalo',
-
- # InTagbanwa
- intagbanwa => 'InTagban',
-
- # InTags
- intags => 'InTags',
-
- # InTaiLe
- intaile => 'InTaiLe',
-
- # InTaiXuanJingSymbols
- intaixuanjingsymbols => 'InTaiXua',
-
- # InTamil
- intamil => 'InTamil',
-
- # InTelugu
- intelugu => 'InTelugu',
-
- # InThaana
- inthaana => 'InThaana',
-
- # InThai
- inthai => 'InThai',
-
- # InTibetan
- intibetan => 'InTibeta',
-
- # InTifinagh
- intifinagh => 'InTifina',
-
- # InUgaritic
- inugaritic => 'InUgarit',
-
- # InUnifiedCanadianAboriginalSyllabics
- inunifiedcanadianaboriginalsyllabics => 'InUnifie',
-
- # InVariationSelectors
- invariationselectors => 'InVariat',
-
- # InVariationSelectorsSupplement
- invariationselectorssupplement => 'InVaria2',
-
- # InVerticalForms
- inverticalforms => 'InVertic',
-
- # InYijingHexagramSymbols
- inyijinghexagramsymbols => 'InYijing',
-
- # InYiRadicals
- inyiradicals => 'InYiRadi',
-
- # InYiSyllables
- inyisyllables => 'InYiSyll',
-
- # InIpaExtensions
- ipaextensions => 'InIpaExt',
-
- # JoinControl
- joincontrol => 'JoinCont',
-
- # InKanbun
- kanbun => 'InKanbun',
-
- # InKangxiRadicals
- kangxiradicals => 'InKangxi',
-
- kannada => 'Knda',
- katakana => 'Kana',
-
- # InKatakanaPhoneticExtensions
- katakanaphoneticextensions => 'InKatak2',
-
- kharoshthi => 'Khar',
- khmer => 'Khmr',
-
- # InKhmerSymbols
- khmersymbols => 'InKhmerS',
-
- lao => 'Laoo',
- latin => 'Latn',
-
- # InLatin1Supplement
- latin1supplement => 'InLatin1',
-
- # InLatinExtendedA
- latinextendeda => 'InLatin2',
-
- # InLatinExtendedAdditional
- latinextendedadditional => 'InLatin3',
-
- # InLatinExtendedB
- latinextendedb => 'InLatinE',
-
- letter => 'L',
-
- # InLetterlikeSymbols
- letterlikesymbols => 'InLetter',
-
- # LetterNumber
- letternumber => 'Nl',
-
- limbu => 'Limb',
-
- # LinearB
- linearb => 'LinearB',
-
- # InLinearBIdeograms
- linearbideograms => 'InLinear',
-
- # InLinearBSyllabary
- linearbsyllabary => 'InLinea2',
-
- # LineSeparator
- lineseparator => 'Zl',
-
- # LogicalOrderException
- logicalorderexception => 'LogicalO',
-
- lowercase => 'Lowercas',
-
- # LowercaseLetter
- lowercaseletter => 'Ll',
-
- # InLowSurrogates
- lowsurrogates => 'InLowSur',
-
- malayalam => 'Mlym',
- mark => 'M',
- math => 'Math',
-
- # InMathematicalAlphanumericSymbols
- mathematicalalphanumericsymbols => 'InMathe2',
-
- # InMathematicalOperators
- mathematicaloperators => 'InMathem',
-
- # MathSymbol
- mathsymbol => 'Sm',
-
- # InMiscellaneousMathematicalSymbolsA
- miscellaneousmathematicalsymbolsa => 'InMisce4',
-
- # InMiscellaneousMathematicalSymbolsB
- miscellaneousmathematicalsymbolsb => 'InMisce5',
-
- # InMiscellaneousSymbols
- miscellaneoussymbols => 'InMiscel',
-
- # InMiscellaneousSymbolsAndArrows
- miscellaneoussymbolsandarrows => 'InMisce3',
-
- # InMiscellaneousTechnical
- miscellaneoustechnical => 'InMisce2',
-
- # ModifierLetter
- modifierletter => 'Lm',
-
- # ModifierSymbol
- modifiersymbol => 'Sk',
-
- # InModifierToneLetters
- modifiertoneletters => 'InModifi',
-
- mongolian => 'Mong',
-
- # InMusicalSymbols
- musicalsymbols => 'InMusica',
-
- myanmar => 'Mymr',
-
- # NewTaiLue
- newtailue => 'NewTaiLu',
-
- # NoncharacterCodePoint
- noncharactercodepoint => 'Nonchara',
-
- # NonspacingMark
- nonspacingmark => 'Mn',
-
- number => 'N',
-
- # InNumberForms
- numberforms => 'InNumber',
-
- ogham => 'Ogam',
-
- # OldItalic
- olditalic => 'OldItali',
-
- # OldPersian
- oldpersian => 'OldPersi',
-
- # OpenPunctuation
- openpunctuation => 'Ps',
-
- # InOpticalCharacterRecognition
- opticalcharacterrecognition => 'InOptica',
-
- oriya => 'Orya',
- osmanya => 'Osma',
- other => 'C',
-
- # OtherAlphabetic
- otheralphabetic => 'OtherAlp',
-
- # OtherDefaultIgnorableCodePoint
- otherdefaultignorablecodepoint => 'OtherDef',
-
- # OtherGraphemeExtend
- othergraphemeextend => 'OtherGra',
-
- # OtherIdContinue
- otheridcontinue => 'OtherIdC',
-
- # OtherIdStart
- otheridstart => 'OtherIdS',
-
- # OtherLetter
- otherletter => 'Lo',
-
- # OtherLowercase
- otherlowercase => 'OtherLow',
-
- # OtherMath
- othermath => 'OtherMat',
-
- # OtherNumber
- othernumber => 'No',
-
- # OtherPunctuation
- otherpunctuation => 'Po',
-
- # OtherSymbol
- othersymbol => 'So',
-
- # OtherUppercase
- otheruppercase => 'OtherUpp',
-
- # ParagraphSeparator
- paragraphseparator => 'Zp',
-
- # PatternSyntax
- patternsyntax => 'PatternS',
-
- # PatternWhiteSpace
- patternwhitespace => 'PatternW',
-
- # InPhoneticExtensions
- phoneticextensions => 'InPhonet',
-
- # InPhoneticExtensionsSupplement
- phoneticextensionssupplement => 'InPhone2',
-
- # PrivateUse
- privateuse => 'Co',
-
- # InPrivateUseArea
- privateusearea => 'InPrivat',
-
- punctuation => 'P',
-
- # QuotationMark
- quotationmark => 'Quotatio',
-
- radical => 'Radical2',
- runic => 'Runr',
- separator => 'Z',
- shavian => 'Shaw',
- sinhala => 'Sinh',
-
- # InSmallFormVariants
- smallformvariants => 'InSmallF',
-
- # SoftDotted
- softdotted => 'SoftDott',
-
- # SpaceSeparator
- spaceseparator => 'Zs',
-
- # SpacingMark
- spacingmark => 'Mc',
-
- # InSpacingModifierLetters
- spacingmodifierletters => 'InSpacin',
-
- # InSpecials
- specials => 'InSpecia',
-
- sterm => 'Sterm2',
-
- # InSuperscriptsAndSubscripts
- superscriptsandsubscripts => 'InSupers',
-
- # InSupplementalArrowsA
- supplementalarrowsa => 'InSuppl2',
-
- # InSupplementalArrowsB
- supplementalarrowsb => 'InSupple',
-
- # InSupplementalMathematicalOperators
- supplementalmathematicaloperators => 'InSuppl6',
-
- # InSupplementalPunctuation
- supplementalpunctuation => 'InSuppl3',
-
- # InSupplementaryPrivateUseAreaA
- supplementaryprivateuseareaa => 'InSuppl4',
-
- # InSupplementaryPrivateUseAreaB
- supplementaryprivateuseareab => 'InSuppl5',
-
- surrogate => 'Cs',
-
- # SylotiNagri
- sylotinagri => 'SylotiNa',
-
- symbol => 'S',
- syriac => 'Syrc',
- tagalog => 'Tglg',
- tagbanwa => 'Tagb',
-
- # InTags
- tags => 'InTags',
-
- # TaiLe
- taile => 'TaiLe',
-
- # InTaiXuanJingSymbols
- taixuanjingsymbols => 'InTaiXua',
-
- tamil => 'Taml',
- telugu => 'Telu',
-
- # TerminalPunctuation
- terminalpunctuation => 'Terminal',
-
- thaana => 'Thaa',
- thai => 'Thai',
- tibetan => 'Tibt',
- tifinagh => 'Tfng',
-
- # TitlecaseLetter
- titlecaseletter => 'Lt',
-
- ugaritic => 'Ugar',
- unassigned => 'Cn',
-
- # InUnifiedCanadianAboriginalSyllabics
- unifiedcanadianaboriginalsyllabics => 'InUnifie',
-
- # UnifiedIdeograph
- unifiedideograph => 'UnifiedI',
-
- uppercase => 'Uppercas',
-
- # UppercaseLetter
- uppercaseletter => 'Lu',
-
- # VariationSelector
- variationselector => 'Variatio',
-
- # InVariationSelectors
- variationselectors => 'InVariat',
-
- # InVariationSelectorsSupplement
- variationselectorssupplement => 'InVaria2',
-
- # InVerticalForms
- verticalforms => 'InVertic',
-
- # WhiteSpace
- whitespace => 'WhiteSpa',
-
- yi => 'Yiii',
-
- # InYijingHexagramSymbols
- yijinghexagramsymbols => 'InYijing',
-
- # InYiRadicals
- yiradicals => 'InYiRadi',
-
- # InYiSyllables
- yisyllables => 'InYiSyll',
-
-);
-1
diff --git a/Master/tlpkg/tlperl/lib/unicore/CaseFolding.txt b/Master/tlpkg/tlperl/lib/unicore/CaseFolding.txt
deleted file mode 100644
index f25d9bfed4d..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/CaseFolding.txt
+++ /dev/null
@@ -1,1064 +0,0 @@
-# CaseFolding-4.1.0.txt
-# Date: 2005-03-26, 00:24:43 GMT [MD]
-#
-# Unicode Character Database
-# Copyright (c) 1991-2005 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see UCD.html
-#
-# Case Folding Properties
-#
-# This file is a supplement to the UnicodeData file.
-# It provides a case folding mapping generated from the Unicode Character Database.
-# If all characters are mapped according to the full mapping below, then
-# case differences (according to UnicodeData.txt and SpecialCasing.txt)
-# are eliminated.
-#
-# The data supports both implementations that require simple case foldings
-# (where string lengths don't change), and implementations that allow full case folding
-# (where string lengths may grow). Note that where they can be supported, the
-# full case foldings are superior: for example, they allow "MASSE" and "Maße" to match.
-#
-# All code points not listed in this file map to themselves.
-#
-# NOTE: case folding does not preserve normalization formats!
-#
-# For information on case folding, see
-# UTR #21 Case Mappings, at http://www.unicode.org/unicode/reports/tr21/
-#
-# ================================================================================
-# Format
-# ================================================================================
-# The entries in this file are in the following machine-readable format:
-#
-# <code>; <status>; <mapping>; # <name>
-#
-# The status field is:
-# C: common case folding, common mappings shared by both simple and full mappings.
-# F: full case folding, mappings that cause strings to grow in length. Multiple characters are separated by spaces.
-# S: simple case folding, mappings to single characters where different from F.
-# T: special case for uppercase I and dotted uppercase I
-# - For non-Turkic languages, this mapping is normally not used.
-# - For Turkic languages (tr, az), this mapping can be used instead of the normal mapping for these characters.
-# Note that the Turkic mappings do not maintain canonical equivalence without additional processing.
-# See the discussions of case mapping in the Unicode Standard for more information.
-#
-# Usage:
-# A. To do a simple case folding, use the mappings with status C + S.
-# B. To do a full case folding, use the mappings with status C + F.
-#
-# The mappings with status T can be used or omitted depending on the desired case-folding
-# behavior. (The default option is to exclude them.)
-#
-# =================================================================
-
-0041; C; 0061; # LATIN CAPITAL LETTER A
-0042; C; 0062; # LATIN CAPITAL LETTER B
-0043; C; 0063; # LATIN CAPITAL LETTER C
-0044; C; 0064; # LATIN CAPITAL LETTER D
-0045; C; 0065; # LATIN CAPITAL LETTER E
-0046; C; 0066; # LATIN CAPITAL LETTER F
-0047; C; 0067; # LATIN CAPITAL LETTER G
-0048; C; 0068; # LATIN CAPITAL LETTER H
-0049; C; 0069; # LATIN CAPITAL LETTER I
-0049; T; 0131; # LATIN CAPITAL LETTER I
-004A; C; 006A; # LATIN CAPITAL LETTER J
-004B; C; 006B; # LATIN CAPITAL LETTER K
-004C; C; 006C; # LATIN CAPITAL LETTER L
-004D; C; 006D; # LATIN CAPITAL LETTER M
-004E; C; 006E; # LATIN CAPITAL LETTER N
-004F; C; 006F; # LATIN CAPITAL LETTER O
-0050; C; 0070; # LATIN CAPITAL LETTER P
-0051; C; 0071; # LATIN CAPITAL LETTER Q
-0052; C; 0072; # LATIN CAPITAL LETTER R
-0053; C; 0073; # LATIN CAPITAL LETTER S
-0054; C; 0074; # LATIN CAPITAL LETTER T
-0055; C; 0075; # LATIN CAPITAL LETTER U
-0056; C; 0076; # LATIN CAPITAL LETTER V
-0057; C; 0077; # LATIN CAPITAL LETTER W
-0058; C; 0078; # LATIN CAPITAL LETTER X
-0059; C; 0079; # LATIN CAPITAL LETTER Y
-005A; C; 007A; # LATIN CAPITAL LETTER Z
-00B5; C; 03BC; # MICRO SIGN
-00C0; C; 00E0; # LATIN CAPITAL LETTER A WITH GRAVE
-00C1; C; 00E1; # LATIN CAPITAL LETTER A WITH ACUTE
-00C2; C; 00E2; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-00C3; C; 00E3; # LATIN CAPITAL LETTER A WITH TILDE
-00C4; C; 00E4; # LATIN CAPITAL LETTER A WITH DIAERESIS
-00C5; C; 00E5; # LATIN CAPITAL LETTER A WITH RING ABOVE
-00C6; C; 00E6; # LATIN CAPITAL LETTER AE
-00C7; C; 00E7; # LATIN CAPITAL LETTER C WITH CEDILLA
-00C8; C; 00E8; # LATIN CAPITAL LETTER E WITH GRAVE
-00C9; C; 00E9; # LATIN CAPITAL LETTER E WITH ACUTE
-00CA; C; 00EA; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-00CB; C; 00EB; # LATIN CAPITAL LETTER E WITH DIAERESIS
-00CC; C; 00EC; # LATIN CAPITAL LETTER I WITH GRAVE
-00CD; C; 00ED; # LATIN CAPITAL LETTER I WITH ACUTE
-00CE; C; 00EE; # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-00CF; C; 00EF; # LATIN CAPITAL LETTER I WITH DIAERESIS
-00D0; C; 00F0; # LATIN CAPITAL LETTER ETH
-00D1; C; 00F1; # LATIN CAPITAL LETTER N WITH TILDE
-00D2; C; 00F2; # LATIN CAPITAL LETTER O WITH GRAVE
-00D3; C; 00F3; # LATIN CAPITAL LETTER O WITH ACUTE
-00D4; C; 00F4; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-00D5; C; 00F5; # LATIN CAPITAL LETTER O WITH TILDE
-00D6; C; 00F6; # LATIN CAPITAL LETTER O WITH DIAERESIS
-00D8; C; 00F8; # LATIN CAPITAL LETTER O WITH STROKE
-00D9; C; 00F9; # LATIN CAPITAL LETTER U WITH GRAVE
-00DA; C; 00FA; # LATIN CAPITAL LETTER U WITH ACUTE
-00DB; C; 00FB; # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-00DC; C; 00FC; # LATIN CAPITAL LETTER U WITH DIAERESIS
-00DD; C; 00FD; # LATIN CAPITAL LETTER Y WITH ACUTE
-00DE; C; 00FE; # LATIN CAPITAL LETTER THORN
-00DF; F; 0073 0073; # LATIN SMALL LETTER SHARP S
-0100; C; 0101; # LATIN CAPITAL LETTER A WITH MACRON
-0102; C; 0103; # LATIN CAPITAL LETTER A WITH BREVE
-0104; C; 0105; # LATIN CAPITAL LETTER A WITH OGONEK
-0106; C; 0107; # LATIN CAPITAL LETTER C WITH ACUTE
-0108; C; 0109; # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
-010A; C; 010B; # LATIN CAPITAL LETTER C WITH DOT ABOVE
-010C; C; 010D; # LATIN CAPITAL LETTER C WITH CARON
-010E; C; 010F; # LATIN CAPITAL LETTER D WITH CARON
-0110; C; 0111; # LATIN CAPITAL LETTER D WITH STROKE
-0112; C; 0113; # LATIN CAPITAL LETTER E WITH MACRON
-0114; C; 0115; # LATIN CAPITAL LETTER E WITH BREVE
-0116; C; 0117; # LATIN CAPITAL LETTER E WITH DOT ABOVE
-0118; C; 0119; # LATIN CAPITAL LETTER E WITH OGONEK
-011A; C; 011B; # LATIN CAPITAL LETTER E WITH CARON
-011C; C; 011D; # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
-011E; C; 011F; # LATIN CAPITAL LETTER G WITH BREVE
-0120; C; 0121; # LATIN CAPITAL LETTER G WITH DOT ABOVE
-0122; C; 0123; # LATIN CAPITAL LETTER G WITH CEDILLA
-0124; C; 0125; # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
-0126; C; 0127; # LATIN CAPITAL LETTER H WITH STROKE
-0128; C; 0129; # LATIN CAPITAL LETTER I WITH TILDE
-012A; C; 012B; # LATIN CAPITAL LETTER I WITH MACRON
-012C; C; 012D; # LATIN CAPITAL LETTER I WITH BREVE
-012E; C; 012F; # LATIN CAPITAL LETTER I WITH OGONEK
-0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE
-0130; T; 0069; # LATIN CAPITAL LETTER I WITH DOT ABOVE
-0132; C; 0133; # LATIN CAPITAL LIGATURE IJ
-0134; C; 0135; # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
-0136; C; 0137; # LATIN CAPITAL LETTER K WITH CEDILLA
-0139; C; 013A; # LATIN CAPITAL LETTER L WITH ACUTE
-013B; C; 013C; # LATIN CAPITAL LETTER L WITH CEDILLA
-013D; C; 013E; # LATIN CAPITAL LETTER L WITH CARON
-013F; C; 0140; # LATIN CAPITAL LETTER L WITH MIDDLE DOT
-0141; C; 0142; # LATIN CAPITAL LETTER L WITH STROKE
-0143; C; 0144; # LATIN CAPITAL LETTER N WITH ACUTE
-0145; C; 0146; # LATIN CAPITAL LETTER N WITH CEDILLA
-0147; C; 0148; # LATIN CAPITAL LETTER N WITH CARON
-0149; F; 02BC 006E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
-014A; C; 014B; # LATIN CAPITAL LETTER ENG
-014C; C; 014D; # LATIN CAPITAL LETTER O WITH MACRON
-014E; C; 014F; # LATIN CAPITAL LETTER O WITH BREVE
-0150; C; 0151; # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0152; C; 0153; # LATIN CAPITAL LIGATURE OE
-0154; C; 0155; # LATIN CAPITAL LETTER R WITH ACUTE
-0156; C; 0157; # LATIN CAPITAL LETTER R WITH CEDILLA
-0158; C; 0159; # LATIN CAPITAL LETTER R WITH CARON
-015A; C; 015B; # LATIN CAPITAL LETTER S WITH ACUTE
-015C; C; 015D; # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
-015E; C; 015F; # LATIN CAPITAL LETTER S WITH CEDILLA
-0160; C; 0161; # LATIN CAPITAL LETTER S WITH CARON
-0162; C; 0163; # LATIN CAPITAL LETTER T WITH CEDILLA
-0164; C; 0165; # LATIN CAPITAL LETTER T WITH CARON
-0166; C; 0167; # LATIN CAPITAL LETTER T WITH STROKE
-0168; C; 0169; # LATIN CAPITAL LETTER U WITH TILDE
-016A; C; 016B; # LATIN CAPITAL LETTER U WITH MACRON
-016C; C; 016D; # LATIN CAPITAL LETTER U WITH BREVE
-016E; C; 016F; # LATIN CAPITAL LETTER U WITH RING ABOVE
-0170; C; 0171; # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0172; C; 0173; # LATIN CAPITAL LETTER U WITH OGONEK
-0174; C; 0175; # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
-0176; C; 0177; # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
-0178; C; 00FF; # LATIN CAPITAL LETTER Y WITH DIAERESIS
-0179; C; 017A; # LATIN CAPITAL LETTER Z WITH ACUTE
-017B; C; 017C; # LATIN CAPITAL LETTER Z WITH DOT ABOVE
-017D; C; 017E; # LATIN CAPITAL LETTER Z WITH CARON
-017F; C; 0073; # LATIN SMALL LETTER LONG S
-0181; C; 0253; # LATIN CAPITAL LETTER B WITH HOOK
-0182; C; 0183; # LATIN CAPITAL LETTER B WITH TOPBAR
-0184; C; 0185; # LATIN CAPITAL LETTER TONE SIX
-0186; C; 0254; # LATIN CAPITAL LETTER OPEN O
-0187; C; 0188; # LATIN CAPITAL LETTER C WITH HOOK
-0189; C; 0256; # LATIN CAPITAL LETTER AFRICAN D
-018A; C; 0257; # LATIN CAPITAL LETTER D WITH HOOK
-018B; C; 018C; # LATIN CAPITAL LETTER D WITH TOPBAR
-018E; C; 01DD; # LATIN CAPITAL LETTER REVERSED E
-018F; C; 0259; # LATIN CAPITAL LETTER SCHWA
-0190; C; 025B; # LATIN CAPITAL LETTER OPEN E
-0191; C; 0192; # LATIN CAPITAL LETTER F WITH HOOK
-0193; C; 0260; # LATIN CAPITAL LETTER G WITH HOOK
-0194; C; 0263; # LATIN CAPITAL LETTER GAMMA
-0196; C; 0269; # LATIN CAPITAL LETTER IOTA
-0197; C; 0268; # LATIN CAPITAL LETTER I WITH STROKE
-0198; C; 0199; # LATIN CAPITAL LETTER K WITH HOOK
-019C; C; 026F; # LATIN CAPITAL LETTER TURNED M
-019D; C; 0272; # LATIN CAPITAL LETTER N WITH LEFT HOOK
-019F; C; 0275; # LATIN CAPITAL LETTER O WITH MIDDLE TILDE
-01A0; C; 01A1; # LATIN CAPITAL LETTER O WITH HORN
-01A2; C; 01A3; # LATIN CAPITAL LETTER OI
-01A4; C; 01A5; # LATIN CAPITAL LETTER P WITH HOOK
-01A6; C; 0280; # LATIN LETTER YR
-01A7; C; 01A8; # LATIN CAPITAL LETTER TONE TWO
-01A9; C; 0283; # LATIN CAPITAL LETTER ESH
-01AC; C; 01AD; # LATIN CAPITAL LETTER T WITH HOOK
-01AE; C; 0288; # LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
-01AF; C; 01B0; # LATIN CAPITAL LETTER U WITH HORN
-01B1; C; 028A; # LATIN CAPITAL LETTER UPSILON
-01B2; C; 028B; # LATIN CAPITAL LETTER V WITH HOOK
-01B3; C; 01B4; # LATIN CAPITAL LETTER Y WITH HOOK
-01B5; C; 01B6; # LATIN CAPITAL LETTER Z WITH STROKE
-01B7; C; 0292; # LATIN CAPITAL LETTER EZH
-01B8; C; 01B9; # LATIN CAPITAL LETTER EZH REVERSED
-01BC; C; 01BD; # LATIN CAPITAL LETTER TONE FIVE
-01C4; C; 01C6; # LATIN CAPITAL LETTER DZ WITH CARON
-01C5; C; 01C6; # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
-01C7; C; 01C9; # LATIN CAPITAL LETTER LJ
-01C8; C; 01C9; # LATIN CAPITAL LETTER L WITH SMALL LETTER J
-01CA; C; 01CC; # LATIN CAPITAL LETTER NJ
-01CB; C; 01CC; # LATIN CAPITAL LETTER N WITH SMALL LETTER J
-01CD; C; 01CE; # LATIN CAPITAL LETTER A WITH CARON
-01CF; C; 01D0; # LATIN CAPITAL LETTER I WITH CARON
-01D1; C; 01D2; # LATIN CAPITAL LETTER O WITH CARON
-01D3; C; 01D4; # LATIN CAPITAL LETTER U WITH CARON
-01D5; C; 01D6; # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01D7; C; 01D8; # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D9; C; 01DA; # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-01DB; C; 01DC; # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01DE; C; 01DF; # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-01E0; C; 01E1; # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
-01E2; C; 01E3; # LATIN CAPITAL LETTER AE WITH MACRON
-01E4; C; 01E5; # LATIN CAPITAL LETTER G WITH STROKE
-01E6; C; 01E7; # LATIN CAPITAL LETTER G WITH CARON
-01E8; C; 01E9; # LATIN CAPITAL LETTER K WITH CARON
-01EA; C; 01EB; # LATIN CAPITAL LETTER O WITH OGONEK
-01EC; C; 01ED; # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
-01EE; C; 01EF; # LATIN CAPITAL LETTER EZH WITH CARON
-01F0; F; 006A 030C; # LATIN SMALL LETTER J WITH CARON
-01F1; C; 01F3; # LATIN CAPITAL LETTER DZ
-01F2; C; 01F3; # LATIN CAPITAL LETTER D WITH SMALL LETTER Z
-01F4; C; 01F5; # LATIN CAPITAL LETTER G WITH ACUTE
-01F6; C; 0195; # LATIN CAPITAL LETTER HWAIR
-01F7; C; 01BF; # LATIN CAPITAL LETTER WYNN
-01F8; C; 01F9; # LATIN CAPITAL LETTER N WITH GRAVE
-01FA; C; 01FB; # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
-01FC; C; 01FD; # LATIN CAPITAL LETTER AE WITH ACUTE
-01FE; C; 01FF; # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
-0200; C; 0201; # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
-0202; C; 0203; # LATIN CAPITAL LETTER A WITH INVERTED BREVE
-0204; C; 0205; # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
-0206; C; 0207; # LATIN CAPITAL LETTER E WITH INVERTED BREVE
-0208; C; 0209; # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
-020A; C; 020B; # LATIN CAPITAL LETTER I WITH INVERTED BREVE
-020C; C; 020D; # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
-020E; C; 020F; # LATIN CAPITAL LETTER O WITH INVERTED BREVE
-0210; C; 0211; # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
-0212; C; 0213; # LATIN CAPITAL LETTER R WITH INVERTED BREVE
-0214; C; 0215; # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
-0216; C; 0217; # LATIN CAPITAL LETTER U WITH INVERTED BREVE
-0218; C; 0219; # LATIN CAPITAL LETTER S WITH COMMA BELOW
-021A; C; 021B; # LATIN CAPITAL LETTER T WITH COMMA BELOW
-021C; C; 021D; # LATIN CAPITAL LETTER YOGH
-021E; C; 021F; # LATIN CAPITAL LETTER H WITH CARON
-0220; C; 019E; # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
-0222; C; 0223; # LATIN CAPITAL LETTER OU
-0224; C; 0225; # LATIN CAPITAL LETTER Z WITH HOOK
-0226; C; 0227; # LATIN CAPITAL LETTER A WITH DOT ABOVE
-0228; C; 0229; # LATIN CAPITAL LETTER E WITH CEDILLA
-022A; C; 022B; # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-022C; C; 022D; # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
-022E; C; 022F; # LATIN CAPITAL LETTER O WITH DOT ABOVE
-0230; C; 0231; # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
-0232; C; 0233; # LATIN CAPITAL LETTER Y WITH MACRON
-023B; C; 023C; # LATIN CAPITAL LETTER C WITH STROKE
-023D; C; 019A; # LATIN CAPITAL LETTER L WITH BAR
-0241; C; 0294; # LATIN CAPITAL LETTER GLOTTAL STOP
-0345; C; 03B9; # COMBINING GREEK YPOGEGRAMMENI
-0386; C; 03AC; # GREEK CAPITAL LETTER ALPHA WITH TONOS
-0388; C; 03AD; # GREEK CAPITAL LETTER EPSILON WITH TONOS
-0389; C; 03AE; # GREEK CAPITAL LETTER ETA WITH TONOS
-038A; C; 03AF; # GREEK CAPITAL LETTER IOTA WITH TONOS
-038C; C; 03CC; # GREEK CAPITAL LETTER OMICRON WITH TONOS
-038E; C; 03CD; # GREEK CAPITAL LETTER UPSILON WITH TONOS
-038F; C; 03CE; # GREEK CAPITAL LETTER OMEGA WITH TONOS
-0390; F; 03B9 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-0391; C; 03B1; # GREEK CAPITAL LETTER ALPHA
-0392; C; 03B2; # GREEK CAPITAL LETTER BETA
-0393; C; 03B3; # GREEK CAPITAL LETTER GAMMA
-0394; C; 03B4; # GREEK CAPITAL LETTER DELTA
-0395; C; 03B5; # GREEK CAPITAL LETTER EPSILON
-0396; C; 03B6; # GREEK CAPITAL LETTER ZETA
-0397; C; 03B7; # GREEK CAPITAL LETTER ETA
-0398; C; 03B8; # GREEK CAPITAL LETTER THETA
-0399; C; 03B9; # GREEK CAPITAL LETTER IOTA
-039A; C; 03BA; # GREEK CAPITAL LETTER KAPPA
-039B; C; 03BB; # GREEK CAPITAL LETTER LAMDA
-039C; C; 03BC; # GREEK CAPITAL LETTER MU
-039D; C; 03BD; # GREEK CAPITAL LETTER NU
-039E; C; 03BE; # GREEK CAPITAL LETTER XI
-039F; C; 03BF; # GREEK CAPITAL LETTER OMICRON
-03A0; C; 03C0; # GREEK CAPITAL LETTER PI
-03A1; C; 03C1; # GREEK CAPITAL LETTER RHO
-03A3; C; 03C3; # GREEK CAPITAL LETTER SIGMA
-03A4; C; 03C4; # GREEK CAPITAL LETTER TAU
-03A5; C; 03C5; # GREEK CAPITAL LETTER UPSILON
-03A6; C; 03C6; # GREEK CAPITAL LETTER PHI
-03A7; C; 03C7; # GREEK CAPITAL LETTER CHI
-03A8; C; 03C8; # GREEK CAPITAL LETTER PSI
-03A9; C; 03C9; # GREEK CAPITAL LETTER OMEGA
-03AA; C; 03CA; # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-03AB; C; 03CB; # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-03B0; F; 03C5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-03C2; C; 03C3; # GREEK SMALL LETTER FINAL SIGMA
-03D0; C; 03B2; # GREEK BETA SYMBOL
-03D1; C; 03B8; # GREEK THETA SYMBOL
-03D5; C; 03C6; # GREEK PHI SYMBOL
-03D6; C; 03C0; # GREEK PI SYMBOL
-03D8; C; 03D9; # GREEK LETTER ARCHAIC KOPPA
-03DA; C; 03DB; # GREEK LETTER STIGMA
-03DC; C; 03DD; # GREEK LETTER DIGAMMA
-03DE; C; 03DF; # GREEK LETTER KOPPA
-03E0; C; 03E1; # GREEK LETTER SAMPI
-03E2; C; 03E3; # COPTIC CAPITAL LETTER SHEI
-03E4; C; 03E5; # COPTIC CAPITAL LETTER FEI
-03E6; C; 03E7; # COPTIC CAPITAL LETTER KHEI
-03E8; C; 03E9; # COPTIC CAPITAL LETTER HORI
-03EA; C; 03EB; # COPTIC CAPITAL LETTER GANGIA
-03EC; C; 03ED; # COPTIC CAPITAL LETTER SHIMA
-03EE; C; 03EF; # COPTIC CAPITAL LETTER DEI
-03F0; C; 03BA; # GREEK KAPPA SYMBOL
-03F1; C; 03C1; # GREEK RHO SYMBOL
-03F4; C; 03B8; # GREEK CAPITAL THETA SYMBOL
-03F5; C; 03B5; # GREEK LUNATE EPSILON SYMBOL
-03F7; C; 03F8; # GREEK CAPITAL LETTER SHO
-03F9; C; 03F2; # GREEK CAPITAL LUNATE SIGMA SYMBOL
-03FA; C; 03FB; # GREEK CAPITAL LETTER SAN
-0400; C; 0450; # CYRILLIC CAPITAL LETTER IE WITH GRAVE
-0401; C; 0451; # CYRILLIC CAPITAL LETTER IO
-0402; C; 0452; # CYRILLIC CAPITAL LETTER DJE
-0403; C; 0453; # CYRILLIC CAPITAL LETTER GJE
-0404; C; 0454; # CYRILLIC CAPITAL LETTER UKRAINIAN IE
-0405; C; 0455; # CYRILLIC CAPITAL LETTER DZE
-0406; C; 0456; # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-0407; C; 0457; # CYRILLIC CAPITAL LETTER YI
-0408; C; 0458; # CYRILLIC CAPITAL LETTER JE
-0409; C; 0459; # CYRILLIC CAPITAL LETTER LJE
-040A; C; 045A; # CYRILLIC CAPITAL LETTER NJE
-040B; C; 045B; # CYRILLIC CAPITAL LETTER TSHE
-040C; C; 045C; # CYRILLIC CAPITAL LETTER KJE
-040D; C; 045D; # CYRILLIC CAPITAL LETTER I WITH GRAVE
-040E; C; 045E; # CYRILLIC CAPITAL LETTER SHORT U
-040F; C; 045F; # CYRILLIC CAPITAL LETTER DZHE
-0410; C; 0430; # CYRILLIC CAPITAL LETTER A
-0411; C; 0431; # CYRILLIC CAPITAL LETTER BE
-0412; C; 0432; # CYRILLIC CAPITAL LETTER VE
-0413; C; 0433; # CYRILLIC CAPITAL LETTER GHE
-0414; C; 0434; # CYRILLIC CAPITAL LETTER DE
-0415; C; 0435; # CYRILLIC CAPITAL LETTER IE
-0416; C; 0436; # CYRILLIC CAPITAL LETTER ZHE
-0417; C; 0437; # CYRILLIC CAPITAL LETTER ZE
-0418; C; 0438; # CYRILLIC CAPITAL LETTER I
-0419; C; 0439; # CYRILLIC CAPITAL LETTER SHORT I
-041A; C; 043A; # CYRILLIC CAPITAL LETTER KA
-041B; C; 043B; # CYRILLIC CAPITAL LETTER EL
-041C; C; 043C; # CYRILLIC CAPITAL LETTER EM
-041D; C; 043D; # CYRILLIC CAPITAL LETTER EN
-041E; C; 043E; # CYRILLIC CAPITAL LETTER O
-041F; C; 043F; # CYRILLIC CAPITAL LETTER PE
-0420; C; 0440; # CYRILLIC CAPITAL LETTER ER
-0421; C; 0441; # CYRILLIC CAPITAL LETTER ES
-0422; C; 0442; # CYRILLIC CAPITAL LETTER TE
-0423; C; 0443; # CYRILLIC CAPITAL LETTER U
-0424; C; 0444; # CYRILLIC CAPITAL LETTER EF
-0425; C; 0445; # CYRILLIC CAPITAL LETTER HA
-0426; C; 0446; # CYRILLIC CAPITAL LETTER TSE
-0427; C; 0447; # CYRILLIC CAPITAL LETTER CHE
-0428; C; 0448; # CYRILLIC CAPITAL LETTER SHA
-0429; C; 0449; # CYRILLIC CAPITAL LETTER SHCHA
-042A; C; 044A; # CYRILLIC CAPITAL LETTER HARD SIGN
-042B; C; 044B; # CYRILLIC CAPITAL LETTER YERU
-042C; C; 044C; # CYRILLIC CAPITAL LETTER SOFT SIGN
-042D; C; 044D; # CYRILLIC CAPITAL LETTER E
-042E; C; 044E; # CYRILLIC CAPITAL LETTER YU
-042F; C; 044F; # CYRILLIC CAPITAL LETTER YA
-0460; C; 0461; # CYRILLIC CAPITAL LETTER OMEGA
-0462; C; 0463; # CYRILLIC CAPITAL LETTER YAT
-0464; C; 0465; # CYRILLIC CAPITAL LETTER IOTIFIED E
-0466; C; 0467; # CYRILLIC CAPITAL LETTER LITTLE YUS
-0468; C; 0469; # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
-046A; C; 046B; # CYRILLIC CAPITAL LETTER BIG YUS
-046C; C; 046D; # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
-046E; C; 046F; # CYRILLIC CAPITAL LETTER KSI
-0470; C; 0471; # CYRILLIC CAPITAL LETTER PSI
-0472; C; 0473; # CYRILLIC CAPITAL LETTER FITA
-0474; C; 0475; # CYRILLIC CAPITAL LETTER IZHITSA
-0476; C; 0477; # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0478; C; 0479; # CYRILLIC CAPITAL LETTER UK
-047A; C; 047B; # CYRILLIC CAPITAL LETTER ROUND OMEGA
-047C; C; 047D; # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
-047E; C; 047F; # CYRILLIC CAPITAL LETTER OT
-0480; C; 0481; # CYRILLIC CAPITAL LETTER KOPPA
-048A; C; 048B; # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
-048C; C; 048D; # CYRILLIC CAPITAL LETTER SEMISOFT SIGN
-048E; C; 048F; # CYRILLIC CAPITAL LETTER ER WITH TICK
-0490; C; 0491; # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-0492; C; 0493; # CYRILLIC CAPITAL LETTER GHE WITH STROKE
-0494; C; 0495; # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
-0496; C; 0497; # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
-0498; C; 0499; # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
-049A; C; 049B; # CYRILLIC CAPITAL LETTER KA WITH DESCENDER
-049C; C; 049D; # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
-049E; C; 049F; # CYRILLIC CAPITAL LETTER KA WITH STROKE
-04A0; C; 04A1; # CYRILLIC CAPITAL LETTER BASHKIR KA
-04A2; C; 04A3; # CYRILLIC CAPITAL LETTER EN WITH DESCENDER
-04A4; C; 04A5; # CYRILLIC CAPITAL LIGATURE EN GHE
-04A6; C; 04A7; # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
-04A8; C; 04A9; # CYRILLIC CAPITAL LETTER ABKHASIAN HA
-04AA; C; 04AB; # CYRILLIC CAPITAL LETTER ES WITH DESCENDER
-04AC; C; 04AD; # CYRILLIC CAPITAL LETTER TE WITH DESCENDER
-04AE; C; 04AF; # CYRILLIC CAPITAL LETTER STRAIGHT U
-04B0; C; 04B1; # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
-04B2; C; 04B3; # CYRILLIC CAPITAL LETTER HA WITH DESCENDER
-04B4; C; 04B5; # CYRILLIC CAPITAL LIGATURE TE TSE
-04B6; C; 04B7; # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
-04B8; C; 04B9; # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
-04BA; C; 04BB; # CYRILLIC CAPITAL LETTER SHHA
-04BC; C; 04BD; # CYRILLIC CAPITAL LETTER ABKHASIAN CHE
-04BE; C; 04BF; # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
-04C1; C; 04C2; # CYRILLIC CAPITAL LETTER ZHE WITH BREVE
-04C3; C; 04C4; # CYRILLIC CAPITAL LETTER KA WITH HOOK
-04C5; C; 04C6; # CYRILLIC CAPITAL LETTER EL WITH TAIL
-04C7; C; 04C8; # CYRILLIC CAPITAL LETTER EN WITH HOOK
-04C9; C; 04CA; # CYRILLIC CAPITAL LETTER EN WITH TAIL
-04CB; C; 04CC; # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
-04CD; C; 04CE; # CYRILLIC CAPITAL LETTER EM WITH TAIL
-04D0; C; 04D1; # CYRILLIC CAPITAL LETTER A WITH BREVE
-04D2; C; 04D3; # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
-04D4; C; 04D5; # CYRILLIC CAPITAL LIGATURE A IE
-04D6; C; 04D7; # CYRILLIC CAPITAL LETTER IE WITH BREVE
-04D8; C; 04D9; # CYRILLIC CAPITAL LETTER SCHWA
-04DA; C; 04DB; # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
-04DC; C; 04DD; # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
-04DE; C; 04DF; # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
-04E0; C; 04E1; # CYRILLIC CAPITAL LETTER ABKHASIAN DZE
-04E2; C; 04E3; # CYRILLIC CAPITAL LETTER I WITH MACRON
-04E4; C; 04E5; # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
-04E6; C; 04E7; # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
-04E8; C; 04E9; # CYRILLIC CAPITAL LETTER BARRED O
-04EA; C; 04EB; # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
-04EC; C; 04ED; # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
-04EE; C; 04EF; # CYRILLIC CAPITAL LETTER U WITH MACRON
-04F0; C; 04F1; # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
-04F2; C; 04F3; # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
-04F4; C; 04F5; # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
-04F6; C; 04F7; # CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
-04F8; C; 04F9; # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
-0500; C; 0501; # CYRILLIC CAPITAL LETTER KOMI DE
-0502; C; 0503; # CYRILLIC CAPITAL LETTER KOMI DJE
-0504; C; 0505; # CYRILLIC CAPITAL LETTER KOMI ZJE
-0506; C; 0507; # CYRILLIC CAPITAL LETTER KOMI DZJE
-0508; C; 0509; # CYRILLIC CAPITAL LETTER KOMI LJE
-050A; C; 050B; # CYRILLIC CAPITAL LETTER KOMI NJE
-050C; C; 050D; # CYRILLIC CAPITAL LETTER KOMI SJE
-050E; C; 050F; # CYRILLIC CAPITAL LETTER KOMI TJE
-0531; C; 0561; # ARMENIAN CAPITAL LETTER AYB
-0532; C; 0562; # ARMENIAN CAPITAL LETTER BEN
-0533; C; 0563; # ARMENIAN CAPITAL LETTER GIM
-0534; C; 0564; # ARMENIAN CAPITAL LETTER DA
-0535; C; 0565; # ARMENIAN CAPITAL LETTER ECH
-0536; C; 0566; # ARMENIAN CAPITAL LETTER ZA
-0537; C; 0567; # ARMENIAN CAPITAL LETTER EH
-0538; C; 0568; # ARMENIAN CAPITAL LETTER ET
-0539; C; 0569; # ARMENIAN CAPITAL LETTER TO
-053A; C; 056A; # ARMENIAN CAPITAL LETTER ZHE
-053B; C; 056B; # ARMENIAN CAPITAL LETTER INI
-053C; C; 056C; # ARMENIAN CAPITAL LETTER LIWN
-053D; C; 056D; # ARMENIAN CAPITAL LETTER XEH
-053E; C; 056E; # ARMENIAN CAPITAL LETTER CA
-053F; C; 056F; # ARMENIAN CAPITAL LETTER KEN
-0540; C; 0570; # ARMENIAN CAPITAL LETTER HO
-0541; C; 0571; # ARMENIAN CAPITAL LETTER JA
-0542; C; 0572; # ARMENIAN CAPITAL LETTER GHAD
-0543; C; 0573; # ARMENIAN CAPITAL LETTER CHEH
-0544; C; 0574; # ARMENIAN CAPITAL LETTER MEN
-0545; C; 0575; # ARMENIAN CAPITAL LETTER YI
-0546; C; 0576; # ARMENIAN CAPITAL LETTER NOW
-0547; C; 0577; # ARMENIAN CAPITAL LETTER SHA
-0548; C; 0578; # ARMENIAN CAPITAL LETTER VO
-0549; C; 0579; # ARMENIAN CAPITAL LETTER CHA
-054A; C; 057A; # ARMENIAN CAPITAL LETTER PEH
-054B; C; 057B; # ARMENIAN CAPITAL LETTER JHEH
-054C; C; 057C; # ARMENIAN CAPITAL LETTER RA
-054D; C; 057D; # ARMENIAN CAPITAL LETTER SEH
-054E; C; 057E; # ARMENIAN CAPITAL LETTER VEW
-054F; C; 057F; # ARMENIAN CAPITAL LETTER TIWN
-0550; C; 0580; # ARMENIAN CAPITAL LETTER REH
-0551; C; 0581; # ARMENIAN CAPITAL LETTER CO
-0552; C; 0582; # ARMENIAN CAPITAL LETTER YIWN
-0553; C; 0583; # ARMENIAN CAPITAL LETTER PIWR
-0554; C; 0584; # ARMENIAN CAPITAL LETTER KEH
-0555; C; 0585; # ARMENIAN CAPITAL LETTER OH
-0556; C; 0586; # ARMENIAN CAPITAL LETTER FEH
-0587; F; 0565 0582; # ARMENIAN SMALL LIGATURE ECH YIWN
-10A0; C; 2D00; # GEORGIAN CAPITAL LETTER AN
-10A1; C; 2D01; # GEORGIAN CAPITAL LETTER BAN
-10A2; C; 2D02; # GEORGIAN CAPITAL LETTER GAN
-10A3; C; 2D03; # GEORGIAN CAPITAL LETTER DON
-10A4; C; 2D04; # GEORGIAN CAPITAL LETTER EN
-10A5; C; 2D05; # GEORGIAN CAPITAL LETTER VIN
-10A6; C; 2D06; # GEORGIAN CAPITAL LETTER ZEN
-10A7; C; 2D07; # GEORGIAN CAPITAL LETTER TAN
-10A8; C; 2D08; # GEORGIAN CAPITAL LETTER IN
-10A9; C; 2D09; # GEORGIAN CAPITAL LETTER KAN
-10AA; C; 2D0A; # GEORGIAN CAPITAL LETTER LAS
-10AB; C; 2D0B; # GEORGIAN CAPITAL LETTER MAN
-10AC; C; 2D0C; # GEORGIAN CAPITAL LETTER NAR
-10AD; C; 2D0D; # GEORGIAN CAPITAL LETTER ON
-10AE; C; 2D0E; # GEORGIAN CAPITAL LETTER PAR
-10AF; C; 2D0F; # GEORGIAN CAPITAL LETTER ZHAR
-10B0; C; 2D10; # GEORGIAN CAPITAL LETTER RAE
-10B1; C; 2D11; # GEORGIAN CAPITAL LETTER SAN
-10B2; C; 2D12; # GEORGIAN CAPITAL LETTER TAR
-10B3; C; 2D13; # GEORGIAN CAPITAL LETTER UN
-10B4; C; 2D14; # GEORGIAN CAPITAL LETTER PHAR
-10B5; C; 2D15; # GEORGIAN CAPITAL LETTER KHAR
-10B6; C; 2D16; # GEORGIAN CAPITAL LETTER GHAN
-10B7; C; 2D17; # GEORGIAN CAPITAL LETTER QAR
-10B8; C; 2D18; # GEORGIAN CAPITAL LETTER SHIN
-10B9; C; 2D19; # GEORGIAN CAPITAL LETTER CHIN
-10BA; C; 2D1A; # GEORGIAN CAPITAL LETTER CAN
-10BB; C; 2D1B; # GEORGIAN CAPITAL LETTER JIL
-10BC; C; 2D1C; # GEORGIAN CAPITAL LETTER CIL
-10BD; C; 2D1D; # GEORGIAN CAPITAL LETTER CHAR
-10BE; C; 2D1E; # GEORGIAN CAPITAL LETTER XAN
-10BF; C; 2D1F; # GEORGIAN CAPITAL LETTER JHAN
-10C0; C; 2D20; # GEORGIAN CAPITAL LETTER HAE
-10C1; C; 2D21; # GEORGIAN CAPITAL LETTER HE
-10C2; C; 2D22; # GEORGIAN CAPITAL LETTER HIE
-10C3; C; 2D23; # GEORGIAN CAPITAL LETTER WE
-10C4; C; 2D24; # GEORGIAN CAPITAL LETTER HAR
-10C5; C; 2D25; # GEORGIAN CAPITAL LETTER HOE
-1E00; C; 1E01; # LATIN CAPITAL LETTER A WITH RING BELOW
-1E02; C; 1E03; # LATIN CAPITAL LETTER B WITH DOT ABOVE
-1E04; C; 1E05; # LATIN CAPITAL LETTER B WITH DOT BELOW
-1E06; C; 1E07; # LATIN CAPITAL LETTER B WITH LINE BELOW
-1E08; C; 1E09; # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
-1E0A; C; 1E0B; # LATIN CAPITAL LETTER D WITH DOT ABOVE
-1E0C; C; 1E0D; # LATIN CAPITAL LETTER D WITH DOT BELOW
-1E0E; C; 1E0F; # LATIN CAPITAL LETTER D WITH LINE BELOW
-1E10; C; 1E11; # LATIN CAPITAL LETTER D WITH CEDILLA
-1E12; C; 1E13; # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
-1E14; C; 1E15; # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
-1E16; C; 1E17; # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
-1E18; C; 1E19; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
-1E1A; C; 1E1B; # LATIN CAPITAL LETTER E WITH TILDE BELOW
-1E1C; C; 1E1D; # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
-1E1E; C; 1E1F; # LATIN CAPITAL LETTER F WITH DOT ABOVE
-1E20; C; 1E21; # LATIN CAPITAL LETTER G WITH MACRON
-1E22; C; 1E23; # LATIN CAPITAL LETTER H WITH DOT ABOVE
-1E24; C; 1E25; # LATIN CAPITAL LETTER H WITH DOT BELOW
-1E26; C; 1E27; # LATIN CAPITAL LETTER H WITH DIAERESIS
-1E28; C; 1E29; # LATIN CAPITAL LETTER H WITH CEDILLA
-1E2A; C; 1E2B; # LATIN CAPITAL LETTER H WITH BREVE BELOW
-1E2C; C; 1E2D; # LATIN CAPITAL LETTER I WITH TILDE BELOW
-1E2E; C; 1E2F; # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
-1E30; C; 1E31; # LATIN CAPITAL LETTER K WITH ACUTE
-1E32; C; 1E33; # LATIN CAPITAL LETTER K WITH DOT BELOW
-1E34; C; 1E35; # LATIN CAPITAL LETTER K WITH LINE BELOW
-1E36; C; 1E37; # LATIN CAPITAL LETTER L WITH DOT BELOW
-1E38; C; 1E39; # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
-1E3A; C; 1E3B; # LATIN CAPITAL LETTER L WITH LINE BELOW
-1E3C; C; 1E3D; # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
-1E3E; C; 1E3F; # LATIN CAPITAL LETTER M WITH ACUTE
-1E40; C; 1E41; # LATIN CAPITAL LETTER M WITH DOT ABOVE
-1E42; C; 1E43; # LATIN CAPITAL LETTER M WITH DOT BELOW
-1E44; C; 1E45; # LATIN CAPITAL LETTER N WITH DOT ABOVE
-1E46; C; 1E47; # LATIN CAPITAL LETTER N WITH DOT BELOW
-1E48; C; 1E49; # LATIN CAPITAL LETTER N WITH LINE BELOW
-1E4A; C; 1E4B; # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
-1E4C; C; 1E4D; # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
-1E4E; C; 1E4F; # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
-1E50; C; 1E51; # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
-1E52; C; 1E53; # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
-1E54; C; 1E55; # LATIN CAPITAL LETTER P WITH ACUTE
-1E56; C; 1E57; # LATIN CAPITAL LETTER P WITH DOT ABOVE
-1E58; C; 1E59; # LATIN CAPITAL LETTER R WITH DOT ABOVE
-1E5A; C; 1E5B; # LATIN CAPITAL LETTER R WITH DOT BELOW
-1E5C; C; 1E5D; # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
-1E5E; C; 1E5F; # LATIN CAPITAL LETTER R WITH LINE BELOW
-1E60; C; 1E61; # LATIN CAPITAL LETTER S WITH DOT ABOVE
-1E62; C; 1E63; # LATIN CAPITAL LETTER S WITH DOT BELOW
-1E64; C; 1E65; # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
-1E66; C; 1E67; # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
-1E68; C; 1E69; # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
-1E6A; C; 1E6B; # LATIN CAPITAL LETTER T WITH DOT ABOVE
-1E6C; C; 1E6D; # LATIN CAPITAL LETTER T WITH DOT BELOW
-1E6E; C; 1E6F; # LATIN CAPITAL LETTER T WITH LINE BELOW
-1E70; C; 1E71; # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
-1E72; C; 1E73; # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
-1E74; C; 1E75; # LATIN CAPITAL LETTER U WITH TILDE BELOW
-1E76; C; 1E77; # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
-1E78; C; 1E79; # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
-1E7A; C; 1E7B; # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
-1E7C; C; 1E7D; # LATIN CAPITAL LETTER V WITH TILDE
-1E7E; C; 1E7F; # LATIN CAPITAL LETTER V WITH DOT BELOW
-1E80; C; 1E81; # LATIN CAPITAL LETTER W WITH GRAVE
-1E82; C; 1E83; # LATIN CAPITAL LETTER W WITH ACUTE
-1E84; C; 1E85; # LATIN CAPITAL LETTER W WITH DIAERESIS
-1E86; C; 1E87; # LATIN CAPITAL LETTER W WITH DOT ABOVE
-1E88; C; 1E89; # LATIN CAPITAL LETTER W WITH DOT BELOW
-1E8A; C; 1E8B; # LATIN CAPITAL LETTER X WITH DOT ABOVE
-1E8C; C; 1E8D; # LATIN CAPITAL LETTER X WITH DIAERESIS
-1E8E; C; 1E8F; # LATIN CAPITAL LETTER Y WITH DOT ABOVE
-1E90; C; 1E91; # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
-1E92; C; 1E93; # LATIN CAPITAL LETTER Z WITH DOT BELOW
-1E94; C; 1E95; # LATIN CAPITAL LETTER Z WITH LINE BELOW
-1E96; F; 0068 0331; # LATIN SMALL LETTER H WITH LINE BELOW
-1E97; F; 0074 0308; # LATIN SMALL LETTER T WITH DIAERESIS
-1E98; F; 0077 030A; # LATIN SMALL LETTER W WITH RING ABOVE
-1E99; F; 0079 030A; # LATIN SMALL LETTER Y WITH RING ABOVE
-1E9A; F; 0061 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING
-1E9B; C; 1E61; # LATIN SMALL LETTER LONG S WITH DOT ABOVE
-1EA0; C; 1EA1; # LATIN CAPITAL LETTER A WITH DOT BELOW
-1EA2; C; 1EA3; # LATIN CAPITAL LETTER A WITH HOOK ABOVE
-1EA4; C; 1EA5; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
-1EA6; C; 1EA7; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
-1EA8; C; 1EA9; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-1EAA; C; 1EAB; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
-1EAC; C; 1EAD; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-1EAE; C; 1EAF; # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
-1EB0; C; 1EB1; # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
-1EB2; C; 1EB3; # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
-1EB4; C; 1EB5; # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
-1EB6; C; 1EB7; # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
-1EB8; C; 1EB9; # LATIN CAPITAL LETTER E WITH DOT BELOW
-1EBA; C; 1EBB; # LATIN CAPITAL LETTER E WITH HOOK ABOVE
-1EBC; C; 1EBD; # LATIN CAPITAL LETTER E WITH TILDE
-1EBE; C; 1EBF; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EC0; C; 1EC1; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC2; C; 1EC3; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC4; C; 1EC5; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC6; C; 1EC7; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC8; C; 1EC9; # LATIN CAPITAL LETTER I WITH HOOK ABOVE
-1ECA; C; 1ECB; # LATIN CAPITAL LETTER I WITH DOT BELOW
-1ECC; C; 1ECD; # LATIN CAPITAL LETTER O WITH DOT BELOW
-1ECE; C; 1ECF; # LATIN CAPITAL LETTER O WITH HOOK ABOVE
-1ED0; C; 1ED1; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED2; C; 1ED3; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED4; C; 1ED5; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED6; C; 1ED7; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED8; C; 1ED9; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1EDA; C; 1EDB; # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
-1EDC; C; 1EDD; # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
-1EDE; C; 1EDF; # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
-1EE0; C; 1EE1; # LATIN CAPITAL LETTER O WITH HORN AND TILDE
-1EE2; C; 1EE3; # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
-1EE4; C; 1EE5; # LATIN CAPITAL LETTER U WITH DOT BELOW
-1EE6; C; 1EE7; # LATIN CAPITAL LETTER U WITH HOOK ABOVE
-1EE8; C; 1EE9; # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
-1EEA; C; 1EEB; # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
-1EEC; C; 1EED; # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
-1EEE; C; 1EEF; # LATIN CAPITAL LETTER U WITH HORN AND TILDE
-1EF0; C; 1EF1; # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
-1EF2; C; 1EF3; # LATIN CAPITAL LETTER Y WITH GRAVE
-1EF4; C; 1EF5; # LATIN CAPITAL LETTER Y WITH DOT BELOW
-1EF6; C; 1EF7; # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
-1EF8; C; 1EF9; # LATIN CAPITAL LETTER Y WITH TILDE
-1F08; C; 1F00; # GREEK CAPITAL LETTER ALPHA WITH PSILI
-1F09; C; 1F01; # GREEK CAPITAL LETTER ALPHA WITH DASIA
-1F0A; C; 1F02; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
-1F0B; C; 1F03; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
-1F0C; C; 1F04; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
-1F0D; C; 1F05; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
-1F0E; C; 1F06; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
-1F0F; C; 1F07; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
-1F18; C; 1F10; # GREEK CAPITAL LETTER EPSILON WITH PSILI
-1F19; C; 1F11; # GREEK CAPITAL LETTER EPSILON WITH DASIA
-1F1A; C; 1F12; # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
-1F1B; C; 1F13; # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
-1F1C; C; 1F14; # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
-1F1D; C; 1F15; # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
-1F28; C; 1F20; # GREEK CAPITAL LETTER ETA WITH PSILI
-1F29; C; 1F21; # GREEK CAPITAL LETTER ETA WITH DASIA
-1F2A; C; 1F22; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
-1F2B; C; 1F23; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
-1F2C; C; 1F24; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
-1F2D; C; 1F25; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
-1F2E; C; 1F26; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
-1F2F; C; 1F27; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
-1F38; C; 1F30; # GREEK CAPITAL LETTER IOTA WITH PSILI
-1F39; C; 1F31; # GREEK CAPITAL LETTER IOTA WITH DASIA
-1F3A; C; 1F32; # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
-1F3B; C; 1F33; # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
-1F3C; C; 1F34; # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
-1F3D; C; 1F35; # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
-1F3E; C; 1F36; # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
-1F3F; C; 1F37; # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
-1F48; C; 1F40; # GREEK CAPITAL LETTER OMICRON WITH PSILI
-1F49; C; 1F41; # GREEK CAPITAL LETTER OMICRON WITH DASIA
-1F4A; C; 1F42; # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
-1F4B; C; 1F43; # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
-1F4C; C; 1F44; # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
-1F4D; C; 1F45; # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
-1F50; F; 03C5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI
-1F52; F; 03C5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
-1F54; F; 03C5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
-1F56; F; 03C5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
-1F59; C; 1F51; # GREEK CAPITAL LETTER UPSILON WITH DASIA
-1F5B; C; 1F53; # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
-1F5D; C; 1F55; # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
-1F5F; C; 1F57; # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
-1F68; C; 1F60; # GREEK CAPITAL LETTER OMEGA WITH PSILI
-1F69; C; 1F61; # GREEK CAPITAL LETTER OMEGA WITH DASIA
-1F6A; C; 1F62; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
-1F6B; C; 1F63; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
-1F6C; C; 1F64; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
-1F6D; C; 1F65; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
-1F6E; C; 1F66; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
-1F6F; C; 1F67; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
-1F80; F; 1F00 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
-1F81; F; 1F01 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
-1F82; F; 1F02 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1F83; F; 1F03 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1F84; F; 1F04 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1F85; F; 1F05 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1F86; F; 1F06 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1F87; F; 1F07 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1F88; F; 1F00 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
-1F88; S; 1F80; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
-1F89; F; 1F01 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
-1F89; S; 1F81; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
-1F8A; F; 1F02 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1F8A; S; 1F82; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1F8B; F; 1F03 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1F8B; S; 1F83; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1F8C; F; 1F04 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1F8C; S; 1F84; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1F8D; F; 1F05 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1F8D; S; 1F85; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1F8E; F; 1F06 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1F8E; S; 1F86; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1F8F; F; 1F07 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1F8F; S; 1F87; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1F90; F; 1F20 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
-1F91; F; 1F21 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
-1F92; F; 1F22 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1F93; F; 1F23 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1F94; F; 1F24 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1F95; F; 1F25 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1F96; F; 1F26 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1F97; F; 1F27 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1F98; F; 1F20 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
-1F98; S; 1F90; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
-1F99; F; 1F21 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
-1F99; S; 1F91; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
-1F9A; F; 1F22 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1F9A; S; 1F92; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1F9B; F; 1F23 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1F9B; S; 1F93; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1F9C; F; 1F24 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1F9C; S; 1F94; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1F9D; F; 1F25 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1F9D; S; 1F95; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1F9E; F; 1F26 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1F9E; S; 1F96; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1F9F; F; 1F27 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1F9F; S; 1F97; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1FA0; F; 1F60 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
-1FA1; F; 1F61 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
-1FA2; F; 1F62 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1FA3; F; 1F63 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1FA4; F; 1F64 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1FA5; F; 1F65 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1FA6; F; 1F66 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1FA7; F; 1F67 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1FA8; F; 1F60 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
-1FA8; S; 1FA0; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
-1FA9; F; 1F61 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
-1FA9; S; 1FA1; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
-1FAA; F; 1F62 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1FAA; S; 1FA2; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1FAB; F; 1F63 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1FAB; S; 1FA3; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1FAC; F; 1F64 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1FAC; S; 1FA4; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1FAD; F; 1F65 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1FAD; S; 1FA5; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1FAE; F; 1F66 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1FAE; S; 1FA6; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1FAF; F; 1F67 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1FAF; S; 1FA7; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1FB2; F; 1F70 03B9; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
-1FB3; F; 03B1 03B9; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
-1FB4; F; 03AC 03B9; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
-1FB6; F; 03B1 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
-1FB7; F; 03B1 0342 03B9; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FB8; C; 1FB0; # GREEK CAPITAL LETTER ALPHA WITH VRACHY
-1FB9; C; 1FB1; # GREEK CAPITAL LETTER ALPHA WITH MACRON
-1FBA; C; 1F70; # GREEK CAPITAL LETTER ALPHA WITH VARIA
-1FBB; C; 1F71; # GREEK CAPITAL LETTER ALPHA WITH OXIA
-1FBC; F; 03B1 03B9; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
-1FBC; S; 1FB3; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
-1FBE; C; 03B9; # GREEK PROSGEGRAMMENI
-1FC2; F; 1F74 03B9; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
-1FC3; F; 03B7 03B9; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
-1FC4; F; 03AE 03B9; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
-1FC6; F; 03B7 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI
-1FC7; F; 03B7 0342 03B9; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FC8; C; 1F72; # GREEK CAPITAL LETTER EPSILON WITH VARIA
-1FC9; C; 1F73; # GREEK CAPITAL LETTER EPSILON WITH OXIA
-1FCA; C; 1F74; # GREEK CAPITAL LETTER ETA WITH VARIA
-1FCB; C; 1F75; # GREEK CAPITAL LETTER ETA WITH OXIA
-1FCC; F; 03B7 03B9; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
-1FCC; S; 1FC3; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
-1FD2; F; 03B9 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
-1FD3; F; 03B9 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
-1FD6; F; 03B9 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI
-1FD7; F; 03B9 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
-1FD8; C; 1FD0; # GREEK CAPITAL LETTER IOTA WITH VRACHY
-1FD9; C; 1FD1; # GREEK CAPITAL LETTER IOTA WITH MACRON
-1FDA; C; 1F76; # GREEK CAPITAL LETTER IOTA WITH VARIA
-1FDB; C; 1F77; # GREEK CAPITAL LETTER IOTA WITH OXIA
-1FE2; F; 03C5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
-1FE3; F; 03C5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
-1FE4; F; 03C1 0313; # GREEK SMALL LETTER RHO WITH PSILI
-1FE6; F; 03C5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
-1FE7; F; 03C5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
-1FE8; C; 1FE0; # GREEK CAPITAL LETTER UPSILON WITH VRACHY
-1FE9; C; 1FE1; # GREEK CAPITAL LETTER UPSILON WITH MACRON
-1FEA; C; 1F7A; # GREEK CAPITAL LETTER UPSILON WITH VARIA
-1FEB; C; 1F7B; # GREEK CAPITAL LETTER UPSILON WITH OXIA
-1FEC; C; 1FE5; # GREEK CAPITAL LETTER RHO WITH DASIA
-1FF2; F; 1F7C 03B9; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
-1FF3; F; 03C9 03B9; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
-1FF4; F; 03CE 03B9; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
-1FF6; F; 03C9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
-1FF7; F; 03C9 0342 03B9; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FF8; C; 1F78; # GREEK CAPITAL LETTER OMICRON WITH VARIA
-1FF9; C; 1F79; # GREEK CAPITAL LETTER OMICRON WITH OXIA
-1FFA; C; 1F7C; # GREEK CAPITAL LETTER OMEGA WITH VARIA
-1FFB; C; 1F7D; # GREEK CAPITAL LETTER OMEGA WITH OXIA
-1FFC; F; 03C9 03B9; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
-1FFC; S; 1FF3; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
-2126; C; 03C9; # OHM SIGN
-212A; C; 006B; # KELVIN SIGN
-212B; C; 00E5; # ANGSTROM SIGN
-2160; C; 2170; # ROMAN NUMERAL ONE
-2161; C; 2171; # ROMAN NUMERAL TWO
-2162; C; 2172; # ROMAN NUMERAL THREE
-2163; C; 2173; # ROMAN NUMERAL FOUR
-2164; C; 2174; # ROMAN NUMERAL FIVE
-2165; C; 2175; # ROMAN NUMERAL SIX
-2166; C; 2176; # ROMAN NUMERAL SEVEN
-2167; C; 2177; # ROMAN NUMERAL EIGHT
-2168; C; 2178; # ROMAN NUMERAL NINE
-2169; C; 2179; # ROMAN NUMERAL TEN
-216A; C; 217A; # ROMAN NUMERAL ELEVEN
-216B; C; 217B; # ROMAN NUMERAL TWELVE
-216C; C; 217C; # ROMAN NUMERAL FIFTY
-216D; C; 217D; # ROMAN NUMERAL ONE HUNDRED
-216E; C; 217E; # ROMAN NUMERAL FIVE HUNDRED
-216F; C; 217F; # ROMAN NUMERAL ONE THOUSAND
-24B6; C; 24D0; # CIRCLED LATIN CAPITAL LETTER A
-24B7; C; 24D1; # CIRCLED LATIN CAPITAL LETTER B
-24B8; C; 24D2; # CIRCLED LATIN CAPITAL LETTER C
-24B9; C; 24D3; # CIRCLED LATIN CAPITAL LETTER D
-24BA; C; 24D4; # CIRCLED LATIN CAPITAL LETTER E
-24BB; C; 24D5; # CIRCLED LATIN CAPITAL LETTER F
-24BC; C; 24D6; # CIRCLED LATIN CAPITAL LETTER G
-24BD; C; 24D7; # CIRCLED LATIN CAPITAL LETTER H
-24BE; C; 24D8; # CIRCLED LATIN CAPITAL LETTER I
-24BF; C; 24D9; # CIRCLED LATIN CAPITAL LETTER J
-24C0; C; 24DA; # CIRCLED LATIN CAPITAL LETTER K
-24C1; C; 24DB; # CIRCLED LATIN CAPITAL LETTER L
-24C2; C; 24DC; # CIRCLED LATIN CAPITAL LETTER M
-24C3; C; 24DD; # CIRCLED LATIN CAPITAL LETTER N
-24C4; C; 24DE; # CIRCLED LATIN CAPITAL LETTER O
-24C5; C; 24DF; # CIRCLED LATIN CAPITAL LETTER P
-24C6; C; 24E0; # CIRCLED LATIN CAPITAL LETTER Q
-24C7; C; 24E1; # CIRCLED LATIN CAPITAL LETTER R
-24C8; C; 24E2; # CIRCLED LATIN CAPITAL LETTER S
-24C9; C; 24E3; # CIRCLED LATIN CAPITAL LETTER T
-24CA; C; 24E4; # CIRCLED LATIN CAPITAL LETTER U
-24CB; C; 24E5; # CIRCLED LATIN CAPITAL LETTER V
-24CC; C; 24E6; # CIRCLED LATIN CAPITAL LETTER W
-24CD; C; 24E7; # CIRCLED LATIN CAPITAL LETTER X
-24CE; C; 24E8; # CIRCLED LATIN CAPITAL LETTER Y
-24CF; C; 24E9; # CIRCLED LATIN CAPITAL LETTER Z
-2C00; C; 2C30; # GLAGOLITIC CAPITAL LETTER AZU
-2C01; C; 2C31; # GLAGOLITIC CAPITAL LETTER BUKY
-2C02; C; 2C32; # GLAGOLITIC CAPITAL LETTER VEDE
-2C03; C; 2C33; # GLAGOLITIC CAPITAL LETTER GLAGOLI
-2C04; C; 2C34; # GLAGOLITIC CAPITAL LETTER DOBRO
-2C05; C; 2C35; # GLAGOLITIC CAPITAL LETTER YESTU
-2C06; C; 2C36; # GLAGOLITIC CAPITAL LETTER ZHIVETE
-2C07; C; 2C37; # GLAGOLITIC CAPITAL LETTER DZELO
-2C08; C; 2C38; # GLAGOLITIC CAPITAL LETTER ZEMLJA
-2C09; C; 2C39; # GLAGOLITIC CAPITAL LETTER IZHE
-2C0A; C; 2C3A; # GLAGOLITIC CAPITAL LETTER INITIAL IZHE
-2C0B; C; 2C3B; # GLAGOLITIC CAPITAL LETTER I
-2C0C; C; 2C3C; # GLAGOLITIC CAPITAL LETTER DJERVI
-2C0D; C; 2C3D; # GLAGOLITIC CAPITAL LETTER KAKO
-2C0E; C; 2C3E; # GLAGOLITIC CAPITAL LETTER LJUDIJE
-2C0F; C; 2C3F; # GLAGOLITIC CAPITAL LETTER MYSLITE
-2C10; C; 2C40; # GLAGOLITIC CAPITAL LETTER NASHI
-2C11; C; 2C41; # GLAGOLITIC CAPITAL LETTER ONU
-2C12; C; 2C42; # GLAGOLITIC CAPITAL LETTER POKOJI
-2C13; C; 2C43; # GLAGOLITIC CAPITAL LETTER RITSI
-2C14; C; 2C44; # GLAGOLITIC CAPITAL LETTER SLOVO
-2C15; C; 2C45; # GLAGOLITIC CAPITAL LETTER TVRIDO
-2C16; C; 2C46; # GLAGOLITIC CAPITAL LETTER UKU
-2C17; C; 2C47; # GLAGOLITIC CAPITAL LETTER FRITU
-2C18; C; 2C48; # GLAGOLITIC CAPITAL LETTER HERU
-2C19; C; 2C49; # GLAGOLITIC CAPITAL LETTER OTU
-2C1A; C; 2C4A; # GLAGOLITIC CAPITAL LETTER PE
-2C1B; C; 2C4B; # GLAGOLITIC CAPITAL LETTER SHTA
-2C1C; C; 2C4C; # GLAGOLITIC CAPITAL LETTER TSI
-2C1D; C; 2C4D; # GLAGOLITIC CAPITAL LETTER CHRIVI
-2C1E; C; 2C4E; # GLAGOLITIC CAPITAL LETTER SHA
-2C1F; C; 2C4F; # GLAGOLITIC CAPITAL LETTER YERU
-2C20; C; 2C50; # GLAGOLITIC CAPITAL LETTER YERI
-2C21; C; 2C51; # GLAGOLITIC CAPITAL LETTER YATI
-2C22; C; 2C52; # GLAGOLITIC CAPITAL LETTER SPIDERY HA
-2C23; C; 2C53; # GLAGOLITIC CAPITAL LETTER YU
-2C24; C; 2C54; # GLAGOLITIC CAPITAL LETTER SMALL YUS
-2C25; C; 2C55; # GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL
-2C26; C; 2C56; # GLAGOLITIC CAPITAL LETTER YO
-2C27; C; 2C57; # GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS
-2C28; C; 2C58; # GLAGOLITIC CAPITAL LETTER BIG YUS
-2C29; C; 2C59; # GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS
-2C2A; C; 2C5A; # GLAGOLITIC CAPITAL LETTER FITA
-2C2B; C; 2C5B; # GLAGOLITIC CAPITAL LETTER IZHITSA
-2C2C; C; 2C5C; # GLAGOLITIC CAPITAL LETTER SHTAPIC
-2C2D; C; 2C5D; # GLAGOLITIC CAPITAL LETTER TROKUTASTI A
-2C2E; C; 2C5E; # GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
-2C80; C; 2C81; # COPTIC CAPITAL LETTER ALFA
-2C82; C; 2C83; # COPTIC CAPITAL LETTER VIDA
-2C84; C; 2C85; # COPTIC CAPITAL LETTER GAMMA
-2C86; C; 2C87; # COPTIC CAPITAL LETTER DALDA
-2C88; C; 2C89; # COPTIC CAPITAL LETTER EIE
-2C8A; C; 2C8B; # COPTIC CAPITAL LETTER SOU
-2C8C; C; 2C8D; # COPTIC CAPITAL LETTER ZATA
-2C8E; C; 2C8F; # COPTIC CAPITAL LETTER HATE
-2C90; C; 2C91; # COPTIC CAPITAL LETTER THETHE
-2C92; C; 2C93; # COPTIC CAPITAL LETTER IAUDA
-2C94; C; 2C95; # COPTIC CAPITAL LETTER KAPA
-2C96; C; 2C97; # COPTIC CAPITAL LETTER LAULA
-2C98; C; 2C99; # COPTIC CAPITAL LETTER MI
-2C9A; C; 2C9B; # COPTIC CAPITAL LETTER NI
-2C9C; C; 2C9D; # COPTIC CAPITAL LETTER KSI
-2C9E; C; 2C9F; # COPTIC CAPITAL LETTER O
-2CA0; C; 2CA1; # COPTIC CAPITAL LETTER PI
-2CA2; C; 2CA3; # COPTIC CAPITAL LETTER RO
-2CA4; C; 2CA5; # COPTIC CAPITAL LETTER SIMA
-2CA6; C; 2CA7; # COPTIC CAPITAL LETTER TAU
-2CA8; C; 2CA9; # COPTIC CAPITAL LETTER UA
-2CAA; C; 2CAB; # COPTIC CAPITAL LETTER FI
-2CAC; C; 2CAD; # COPTIC CAPITAL LETTER KHI
-2CAE; C; 2CAF; # COPTIC CAPITAL LETTER PSI
-2CB0; C; 2CB1; # COPTIC CAPITAL LETTER OOU
-2CB2; C; 2CB3; # COPTIC CAPITAL LETTER DIALECT-P ALEF
-2CB4; C; 2CB5; # COPTIC CAPITAL LETTER OLD COPTIC AIN
-2CB6; C; 2CB7; # COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
-2CB8; C; 2CB9; # COPTIC CAPITAL LETTER DIALECT-P KAPA
-2CBA; C; 2CBB; # COPTIC CAPITAL LETTER DIALECT-P NI
-2CBC; C; 2CBD; # COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
-2CBE; C; 2CBF; # COPTIC CAPITAL LETTER OLD COPTIC OOU
-2CC0; C; 2CC1; # COPTIC CAPITAL LETTER SAMPI
-2CC2; C; 2CC3; # COPTIC CAPITAL LETTER CROSSED SHEI
-2CC4; C; 2CC5; # COPTIC CAPITAL LETTER OLD COPTIC SHEI
-2CC6; C; 2CC7; # COPTIC CAPITAL LETTER OLD COPTIC ESH
-2CC8; C; 2CC9; # COPTIC CAPITAL LETTER AKHMIMIC KHEI
-2CCA; C; 2CCB; # COPTIC CAPITAL LETTER DIALECT-P HORI
-2CCC; C; 2CCD; # COPTIC CAPITAL LETTER OLD COPTIC HORI
-2CCE; C; 2CCF; # COPTIC CAPITAL LETTER OLD COPTIC HA
-2CD0; C; 2CD1; # COPTIC CAPITAL LETTER L-SHAPED HA
-2CD2; C; 2CD3; # COPTIC CAPITAL LETTER OLD COPTIC HEI
-2CD4; C; 2CD5; # COPTIC CAPITAL LETTER OLD COPTIC HAT
-2CD6; C; 2CD7; # COPTIC CAPITAL LETTER OLD COPTIC GANGIA
-2CD8; C; 2CD9; # COPTIC CAPITAL LETTER OLD COPTIC DJA
-2CDA; C; 2CDB; # COPTIC CAPITAL LETTER OLD COPTIC SHIMA
-2CDC; C; 2CDD; # COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
-2CDE; C; 2CDF; # COPTIC CAPITAL LETTER OLD NUBIAN NGI
-2CE0; C; 2CE1; # COPTIC CAPITAL LETTER OLD NUBIAN NYI
-2CE2; C; 2CE3; # COPTIC CAPITAL LETTER OLD NUBIAN WAU
-FB00; F; 0066 0066; # LATIN SMALL LIGATURE FF
-FB01; F; 0066 0069; # LATIN SMALL LIGATURE FI
-FB02; F; 0066 006C; # LATIN SMALL LIGATURE FL
-FB03; F; 0066 0066 0069; # LATIN SMALL LIGATURE FFI
-FB04; F; 0066 0066 006C; # LATIN SMALL LIGATURE FFL
-FB05; F; 0073 0074; # LATIN SMALL LIGATURE LONG S T
-FB06; F; 0073 0074; # LATIN SMALL LIGATURE ST
-FB13; F; 0574 0576; # ARMENIAN SMALL LIGATURE MEN NOW
-FB14; F; 0574 0565; # ARMENIAN SMALL LIGATURE MEN ECH
-FB15; F; 0574 056B; # ARMENIAN SMALL LIGATURE MEN INI
-FB16; F; 057E 0576; # ARMENIAN SMALL LIGATURE VEW NOW
-FB17; F; 0574 056D; # ARMENIAN SMALL LIGATURE MEN XEH
-FF21; C; FF41; # FULLWIDTH LATIN CAPITAL LETTER A
-FF22; C; FF42; # FULLWIDTH LATIN CAPITAL LETTER B
-FF23; C; FF43; # FULLWIDTH LATIN CAPITAL LETTER C
-FF24; C; FF44; # FULLWIDTH LATIN CAPITAL LETTER D
-FF25; C; FF45; # FULLWIDTH LATIN CAPITAL LETTER E
-FF26; C; FF46; # FULLWIDTH LATIN CAPITAL LETTER F
-FF27; C; FF47; # FULLWIDTH LATIN CAPITAL LETTER G
-FF28; C; FF48; # FULLWIDTH LATIN CAPITAL LETTER H
-FF29; C; FF49; # FULLWIDTH LATIN CAPITAL LETTER I
-FF2A; C; FF4A; # FULLWIDTH LATIN CAPITAL LETTER J
-FF2B; C; FF4B; # FULLWIDTH LATIN CAPITAL LETTER K
-FF2C; C; FF4C; # FULLWIDTH LATIN CAPITAL LETTER L
-FF2D; C; FF4D; # FULLWIDTH LATIN CAPITAL LETTER M
-FF2E; C; FF4E; # FULLWIDTH LATIN CAPITAL LETTER N
-FF2F; C; FF4F; # FULLWIDTH LATIN CAPITAL LETTER O
-FF30; C; FF50; # FULLWIDTH LATIN CAPITAL LETTER P
-FF31; C; FF51; # FULLWIDTH LATIN CAPITAL LETTER Q
-FF32; C; FF52; # FULLWIDTH LATIN CAPITAL LETTER R
-FF33; C; FF53; # FULLWIDTH LATIN CAPITAL LETTER S
-FF34; C; FF54; # FULLWIDTH LATIN CAPITAL LETTER T
-FF35; C; FF55; # FULLWIDTH LATIN CAPITAL LETTER U
-FF36; C; FF56; # FULLWIDTH LATIN CAPITAL LETTER V
-FF37; C; FF57; # FULLWIDTH LATIN CAPITAL LETTER W
-FF38; C; FF58; # FULLWIDTH LATIN CAPITAL LETTER X
-FF39; C; FF59; # FULLWIDTH LATIN CAPITAL LETTER Y
-FF3A; C; FF5A; # FULLWIDTH LATIN CAPITAL LETTER Z
-10400; C; 10428; # DESERET CAPITAL LETTER LONG I
-10401; C; 10429; # DESERET CAPITAL LETTER LONG E
-10402; C; 1042A; # DESERET CAPITAL LETTER LONG A
-10403; C; 1042B; # DESERET CAPITAL LETTER LONG AH
-10404; C; 1042C; # DESERET CAPITAL LETTER LONG O
-10405; C; 1042D; # DESERET CAPITAL LETTER LONG OO
-10406; C; 1042E; # DESERET CAPITAL LETTER SHORT I
-10407; C; 1042F; # DESERET CAPITAL LETTER SHORT E
-10408; C; 10430; # DESERET CAPITAL LETTER SHORT A
-10409; C; 10431; # DESERET CAPITAL LETTER SHORT AH
-1040A; C; 10432; # DESERET CAPITAL LETTER SHORT O
-1040B; C; 10433; # DESERET CAPITAL LETTER SHORT OO
-1040C; C; 10434; # DESERET CAPITAL LETTER AY
-1040D; C; 10435; # DESERET CAPITAL LETTER OW
-1040E; C; 10436; # DESERET CAPITAL LETTER WU
-1040F; C; 10437; # DESERET CAPITAL LETTER YEE
-10410; C; 10438; # DESERET CAPITAL LETTER H
-10411; C; 10439; # DESERET CAPITAL LETTER PEE
-10412; C; 1043A; # DESERET CAPITAL LETTER BEE
-10413; C; 1043B; # DESERET CAPITAL LETTER TEE
-10414; C; 1043C; # DESERET CAPITAL LETTER DEE
-10415; C; 1043D; # DESERET CAPITAL LETTER CHEE
-10416; C; 1043E; # DESERET CAPITAL LETTER JEE
-10417; C; 1043F; # DESERET CAPITAL LETTER KAY
-10418; C; 10440; # DESERET CAPITAL LETTER GAY
-10419; C; 10441; # DESERET CAPITAL LETTER EF
-1041A; C; 10442; # DESERET CAPITAL LETTER VEE
-1041B; C; 10443; # DESERET CAPITAL LETTER ETH
-1041C; C; 10444; # DESERET CAPITAL LETTER THEE
-1041D; C; 10445; # DESERET CAPITAL LETTER ES
-1041E; C; 10446; # DESERET CAPITAL LETTER ZEE
-1041F; C; 10447; # DESERET CAPITAL LETTER ESH
-10420; C; 10448; # DESERET CAPITAL LETTER ZHEE
-10421; C; 10449; # DESERET CAPITAL LETTER ER
-10422; C; 1044A; # DESERET CAPITAL LETTER EL
-10423; C; 1044B; # DESERET CAPITAL LETTER EM
-10424; C; 1044C; # DESERET CAPITAL LETTER EN
-10425; C; 1044D; # DESERET CAPITAL LETTER ENG
-10426; C; 1044E; # DESERET CAPITAL LETTER OI
-10427; C; 1044F; # DESERET CAPITAL LETTER EW
diff --git a/Master/tlpkg/tlperl/lib/unicore/CombiningClass.pl b/Master/tlpkg/tlperl/lib/unicore/CombiningClass.pl
deleted file mode 100644
index 7d4b8085c57..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/CombiningClass.pl
+++ /dev/null
@@ -1,203 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# 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
-0350 0352 230
-0353 0356 220
-0357 230
-0358 232
-0359 035A 220
-035B 230
-035C 233
-035D 035E 234
-035F 233
-0360 0361 234
-0362 233
-0363 036F 230
-0483 0486 230
-0591 220
-0592 0595 230
-0596 220
-0597 0599 230
-059A 222
-059B 220
-059C 05A1 230
-05A2 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
-05C5 220
-05C7 18
-0610 0615 230
-064B 27
-064C 28
-064D 29
-064E 30
-064F 31
-0650 32
-0651 33
-0652 34
-0653 0654 230
-0655 0656 220
-0657 065B 230
-065C 220
-065D 065E 230
-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
-0CBC 7
-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
-135F 230
-1714 9
-1734 9
-17D2 9
-17DD 230
-18A9 228
-1939 222
-193A 230
-193B 220
-1A17 230
-1A18 220
-1DC0 1DC1 230
-1DC2 220
-1DC3 230
-20D0 20D1 230
-20D2 20D3 1
-20D4 20D7 230
-20D8 20DA 1
-20DB 20DC 230
-20E1 230
-20E5 20E6 1
-20E7 230
-20E8 220
-20E9 230
-20EA 20EB 1
-302A 218
-302B 228
-302C 232
-302D 222
-302E 302F 224
-3099 309A 8
-A806 9
-FB1E 26
-FE20 FE23 230
-10A0D 220
-10A0F 230
-10A38 230
-10A39 1
-10A3A 220
-10A3F 9
-1D165 1D166 216
-1D167 1D169 1
-1D16D 226
-1D16E 1D172 216
-1D17B 1D182 220
-1D185 1D189 230
-1D18A 1D18B 220
-1D1AA 1D1AD 230
-1D242 1D244 230
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/CompositionExclusions.txt b/Master/tlpkg/tlperl/lib/unicore/CompositionExclusions.txt
deleted file mode 100644
index f20528b091e..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/CompositionExclusions.txt
+++ /dev/null
@@ -1,179 +0,0 @@
-# CompositionExclusions-4.1.0.txt
-# Date: 2005-03-17, 15:21:00 PST [KW]
-#
-# This file lists the characters from the UAX #15 Composition Exclusion Table.
-#
-# This file is a normative contributory data file in the
-# Unicode Character Database.
-#
-# Copyright (c) 1991-2005 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-#
-# For more information, see
-# http://www.unicode.org/unicode/reports/tr15/#Primary Exclusion List Table
-# ================================================
-
-# (1) Script Specifics
-# This list of characters cannot be derived from the UnicodeData file.
-# ================================================
-
-0958 # DEVANAGARI LETTER QA
-0959 # DEVANAGARI LETTER KHHA
-095A # DEVANAGARI LETTER GHHA
-095B # DEVANAGARI LETTER ZA
-095C # DEVANAGARI LETTER DDDHA
-095D # DEVANAGARI LETTER RHA
-095E # DEVANAGARI LETTER FA
-095F # DEVANAGARI LETTER YYA
-09DC # BENGALI LETTER RRA
-09DD # BENGALI LETTER RHA
-09DF # BENGALI LETTER YYA
-0A33 # GURMUKHI LETTER LLA
-0A36 # GURMUKHI LETTER SHA
-0A59 # GURMUKHI LETTER KHHA
-0A5A # GURMUKHI LETTER GHHA
-0A5B # GURMUKHI LETTER ZA
-0A5E # GURMUKHI LETTER FA
-0B5C # ORIYA LETTER RRA
-0B5D # ORIYA LETTER RHA
-0F43 # TIBETAN LETTER GHA
-0F4D # TIBETAN LETTER DDHA
-0F52 # TIBETAN LETTER DHA
-0F57 # TIBETAN LETTER BHA
-0F5C # TIBETAN LETTER DZHA
-0F69 # TIBETAN LETTER KSSA
-0F76 # TIBETAN VOWEL SIGN VOCALIC R
-0F78 # TIBETAN VOWEL SIGN VOCALIC L
-0F93 # TIBETAN SUBJOINED LETTER GHA
-0F9D # TIBETAN SUBJOINED LETTER DDHA
-0FA2 # TIBETAN SUBJOINED LETTER DHA
-0FA7 # TIBETAN SUBJOINED LETTER BHA
-0FAC # TIBETAN SUBJOINED LETTER DZHA
-0FB9 # TIBETAN SUBJOINED LETTER KSSA
-FB1D # HEBREW LETTER YOD WITH HIRIQ
-FB1F # HEBREW LIGATURE YIDDISH YOD YOD PATAH
-FB2A # HEBREW LETTER SHIN WITH SHIN DOT
-FB2B # HEBREW LETTER SHIN WITH SIN DOT
-FB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
-FB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
-FB2E # HEBREW LETTER ALEF WITH PATAH
-FB2F # HEBREW LETTER ALEF WITH QAMATS
-FB30 # HEBREW LETTER ALEF WITH MAPIQ
-FB31 # HEBREW LETTER BET WITH DAGESH
-FB32 # HEBREW LETTER GIMEL WITH DAGESH
-FB33 # HEBREW LETTER DALET WITH DAGESH
-FB34 # HEBREW LETTER HE WITH MAPIQ
-FB35 # HEBREW LETTER VAV WITH DAGESH
-FB36 # HEBREW LETTER ZAYIN WITH DAGESH
-FB38 # HEBREW LETTER TET WITH DAGESH
-FB39 # HEBREW LETTER YOD WITH DAGESH
-FB3A # HEBREW LETTER FINAL KAF WITH DAGESH
-FB3B # HEBREW LETTER KAF WITH DAGESH
-FB3C # HEBREW LETTER LAMED WITH DAGESH
-FB3E # HEBREW LETTER MEM WITH DAGESH
-FB40 # HEBREW LETTER NUN WITH DAGESH
-FB41 # HEBREW LETTER SAMEKH WITH DAGESH
-FB43 # HEBREW LETTER FINAL PE WITH DAGESH
-FB44 # HEBREW LETTER PE WITH DAGESH
-FB46 # HEBREW LETTER TSADI WITH DAGESH
-FB47 # HEBREW LETTER QOF WITH DAGESH
-FB48 # HEBREW LETTER RESH WITH DAGESH
-FB49 # HEBREW LETTER SHIN WITH DAGESH
-FB4A # HEBREW LETTER TAV WITH DAGESH
-FB4B # HEBREW LETTER VAV WITH HOLAM
-FB4C # HEBREW LETTER BET WITH RAFE
-FB4D # HEBREW LETTER KAF WITH RAFE
-FB4E # HEBREW LETTER PE WITH RAFE
-
-# Total code points: 67
-
-# ================================================
-# (2) Post Composition Version precomposed characters
-# These characters cannot be derived solely from the UnicodeData.txt file
-# in this version of Unicode.
-# ================================================
-
-2ADC # FORKING
-1D15E # MUSICAL SYMBOL HALF NOTE
-1D15F # MUSICAL SYMBOL QUARTER NOTE
-1D160 # MUSICAL SYMBOL EIGHTH NOTE
-1D161 # MUSICAL SYMBOL SIXTEENTH NOTE
-1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE
-1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE
-1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
-1D1BB # MUSICAL SYMBOL MINIMA
-1D1BC # MUSICAL SYMBOL MINIMA BLACK
-1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE
-1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK
-1D1BF # MUSICAL SYMBOL FUSA WHITE
-1D1C0 # MUSICAL SYMBOL FUSA BLACK
-
-# Total code points: 14
-
-# ================================================
-# (3) Singleton Decompositions
-# These characters can be derived from the UnicodeData file
-# by including all characters whose canonical decomposition
-# consists of a single character.
-# These characters are simply quoted here for reference.
-# ================================================
-
-# 0340..0341 [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
-# 0343 COMBINING GREEK KORONIS
-# 0374 GREEK NUMERAL SIGN
-# 037E GREEK QUESTION MARK
-# 0387 GREEK ANO TELEIA
-# 1F71 GREEK SMALL LETTER ALPHA WITH OXIA
-# 1F73 GREEK SMALL LETTER EPSILON WITH OXIA
-# 1F75 GREEK SMALL LETTER ETA WITH OXIA
-# 1F77 GREEK SMALL LETTER IOTA WITH OXIA
-# 1F79 GREEK SMALL LETTER OMICRON WITH OXIA
-# 1F7B GREEK SMALL LETTER UPSILON WITH OXIA
-# 1F7D GREEK SMALL LETTER OMEGA WITH OXIA
-# 1FBB GREEK CAPITAL LETTER ALPHA WITH OXIA
-# 1FBE GREEK PROSGEGRAMMENI
-# 1FC9 GREEK CAPITAL LETTER EPSILON WITH OXIA
-# 1FCB GREEK CAPITAL LETTER ETA WITH OXIA
-# 1FD3 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
-# 1FDB GREEK CAPITAL LETTER IOTA WITH OXIA
-# 1FE3 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
-# 1FEB GREEK CAPITAL LETTER UPSILON WITH OXIA
-# 1FEE..1FEF [2] GREEK DIALYTIKA AND OXIA..GREEK VARIA
-# 1FF9 GREEK CAPITAL LETTER OMICRON WITH OXIA
-# 1FFB GREEK CAPITAL LETTER OMEGA WITH OXIA
-# 1FFD GREEK OXIA
-# 2000..2001 [2] EN QUAD..EM QUAD
-# 2126 OHM SIGN
-# 212A..212B [2] KELVIN SIGN..ANGSTROM SIGN
-# 2329 LEFT-POINTING ANGLE BRACKET
-# 232A RIGHT-POINTING ANGLE BRACKET
-# F900..FA0D [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
-# FA10 CJK COMPATIBILITY IDEOGRAPH-FA10
-# FA12 CJK COMPATIBILITY IDEOGRAPH-FA12
-# FA15..FA1E [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
-# FA20 CJK COMPATIBILITY IDEOGRAPH-FA20
-# FA22 CJK COMPATIBILITY IDEOGRAPH-FA22
-# FA25..FA26 [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
-# FA2A..FA2D [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D
-# FA30..FA6A [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
-# FA70..FAD9 [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
-# 2F800..2FA1D [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
-
-# Total code points: 924
-
-# ================================================
-# (4) Non-Starter Decompositions
-# These characters can be derived from the UnicodeData file
-# by including all characters whose canonical decomposition consists
-# of a sequence of characters, the first of which has a non-zero
-# combining class.
-# These characters are simply quoted here for reference.
-# ================================================
-
-# 0344 COMBINING GREEK DIALYTIKA TONOS
-# 0F73 TIBETAN VOWEL SIGN II
-# 0F75 TIBETAN VOWEL SIGN UU
-# 0F81 TIBETAN VOWEL SIGN REVERSED II
-
-# Total code points: 4
-
diff --git a/Master/tlpkg/tlperl/lib/unicore/Decomposition.pl b/Master/tlpkg/tlperl/lib/unicore/Decomposition.pl
deleted file mode 100644
index ba6b304c15e..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/Decomposition.pl
+++ /dev/null
@@ -1,5366 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# 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
-03F4 <compat> 0398
-03F5 <compat> 03B5
-03F9 <compat> 03A3
-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
-10FC <super> 10DC
-1D2C <super> 0041
-1D2D <super> 00C6
-1D2E <super> 0042
-1D30 <super> 0044
-1D31 <super> 0045
-1D32 <super> 018E
-1D33 <super> 0047
-1D34 <super> 0048
-1D35 <super> 0049
-1D36 <super> 004A
-1D37 <super> 004B
-1D38 <super> 004C
-1D39 <super> 004D
-1D3A <super> 004E
-1D3C <super> 004F
-1D3D <super> 0222
-1D3E <super> 0050
-1D3F <super> 0052
-1D40 <super> 0054
-1D41 <super> 0055
-1D42 <super> 0057
-1D43 <super> 0061
-1D44 <super> 0250
-1D45 <super> 0251
-1D46 <super> 1D02
-1D47 <super> 0062
-1D48 <super> 0064
-1D49 <super> 0065
-1D4A <super> 0259
-1D4B <super> 025B
-1D4C <super> 025C
-1D4D <super> 0067
-1D4F <super> 006B
-1D50 <super> 006D
-1D51 <super> 014B
-1D52 <super> 006F
-1D53 <super> 0254
-1D54 <super> 1D16
-1D55 <super> 1D17
-1D56 <super> 0070
-1D57 <super> 0074
-1D58 <super> 0075
-1D59 <super> 1D1D
-1D5A <super> 026F
-1D5B <super> 0076
-1D5C <super> 1D25
-1D5D <super> 03B2
-1D5E <super> 03B3
-1D5F <super> 03B4
-1D60 <super> 03C6
-1D61 <super> 03C7
-1D62 <sub> 0069
-1D63 <sub> 0072
-1D64 <sub> 0075
-1D65 <sub> 0076
-1D66 <sub> 03B2
-1D67 <sub> 03B3
-1D68 <sub> 03C1
-1D69 <sub> 03C6
-1D6A <sub> 03C7
-1D78 <super> 043D
-1D9B <super> 0252
-1D9C <super> 0063
-1D9D <super> 0255
-1D9E <super> 00F0
-1D9F <super> 025C
-1DA0 <super> 0066
-1DA1 <super> 025F
-1DA2 <super> 0261
-1DA3 <super> 0265
-1DA4 <super> 0268
-1DA5 <super> 0269
-1DA6 <super> 026A
-1DA7 <super> 1D7B
-1DA8 <super> 029D
-1DA9 <super> 026D
-1DAA <super> 1D85
-1DAB <super> 029F
-1DAC <super> 0271
-1DAD <super> 0270
-1DAE <super> 0272
-1DAF <super> 0273
-1DB0 <super> 0274
-1DB1 <super> 0275
-1DB2 <super> 0278
-1DB3 <super> 0282
-1DB4 <super> 0283
-1DB5 <super> 01AB
-1DB6 <super> 0289
-1DB7 <super> 028A
-1DB8 <super> 1D1C
-1DB9 <super> 028B
-1DBA <super> 028C
-1DBB <super> 007A
-1DBC <super> 0290
-1DBD <super> 0291
-1DBE <super> 0292
-1DBF <super> 03B8
-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
-2047 <compat> 003F 003F
-2048 <compat> 003F 0021
-2049 <compat> 0021 003F
-2057 <compat> 2032 2032 2032 2032
-205F <compat> 0020
-2070 <super> 0030
-2071 <super> 0069
-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
-2090 <sub> 0061
-2091 <sub> 0065
-2092 <sub> 006F
-2093 <sub> 0078
-2094 <sub> 0259
-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
-213B <compat> 0046 0041 0058
-213C <font> 03C0
-213D <font> 03B3
-213E <font> 0393
-213F <font> 03A0
-2140 <font> 2211
-2145 <font> 0044
-2146 <font> 0064
-2147 <font> 0065
-2148 <font> 0069
-2149 <font> 006A
-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
-2A0C <compat> 222B 222B 222B 222B
-2A74 <compat> 003A 003A 003D
-2A75 <compat> 003D 003D
-2A76 <compat> 003D 003D 003D
-2ADC 2ADD 0338
-2D6F <super> 2D61
-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
-309F <vertical> 3088 308A
-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
-30FF <vertical> 30B3 30C8
-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
-321D <compat> 0028 110B 1169 110C 1165 11AB 0029
-321E <compat> 0028 110B 1169 1112 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
-3250 <square> 0050 0054 0045
-3251 <circle> 0032 0031
-3252 <circle> 0032 0032
-3253 <circle> 0032 0033
-3254 <circle> 0032 0034
-3255 <circle> 0032 0035
-3256 <circle> 0032 0036
-3257 <circle> 0032 0037
-3258 <circle> 0032 0038
-3259 <circle> 0032 0039
-325A <circle> 0033 0030
-325B <circle> 0033 0031
-325C <circle> 0033 0032
-325D <circle> 0033 0033
-325E <circle> 0033 0034
-325F <circle> 0033 0035
-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
-327C <circle> 110E 1161 11B7 1100 1169
-327D <circle> 110C 116E 110B 1174
-327E <circle> 110B 116E
-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
-32B1 <circle> 0033 0036
-32B2 <circle> 0033 0037
-32B3 <circle> 0033 0038
-32B4 <circle> 0033 0039
-32B5 <circle> 0034 0030
-32B6 <circle> 0034 0031
-32B7 <circle> 0034 0032
-32B8 <circle> 0034 0033
-32B9 <circle> 0034 0034
-32BA <circle> 0034 0035
-32BB <circle> 0034 0036
-32BC <circle> 0034 0037
-32BD <circle> 0034 0038
-32BE <circle> 0034 0039
-32BF <circle> 0035 0030
-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
-32CC <square> 0048 0067
-32CD <square> 0065 0072 0067
-32CE <square> 0065 0056
-32CF <square> 004C 0054 0044
-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
-3377 <square> 0064 006D
-3378 <square> 0064 006D 00B2
-3379 <square> 0064 006D 00B3
-337A <square> 0049 0055
-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
-33DE <square> 0056 2215 006D
-33DF <square> 0041 2215 006D
-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
-33FF <square> 0067 0061 006C
-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 964B
-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
-FA30 4FAE
-FA31 50E7
-FA32 514D
-FA33 52C9
-FA34 52E4
-FA35 5351
-FA36 559D
-FA37 5606
-FA38 5668
-FA39 5840
-FA3A 58A8
-FA3B 5C64
-FA3C 5C6E
-FA3D 6094
-FA3E 6168
-FA3F 618E
-FA40 61F2
-FA41 654F
-FA42 65E2
-FA43 6691
-FA44 6885
-FA45 6D77
-FA46 6E1A
-FA47 6F22
-FA48 716E
-FA49 722B
-FA4A 7422
-FA4B 7891
-FA4C 793E
-FA4D 7949
-FA4E 7948
-FA4F 7950
-FA50 7956
-FA51 795D
-FA52 798D
-FA53 798E
-FA54 7A40
-FA55 7A81
-FA56 7BC0
-FA57 7DF4
-FA58 7E09
-FA59 7E41
-FA5A 7F72
-FA5B 8005
-FA5C 81ED
-FA5D FA5E 8279
-FA5F 8457
-FA60 8910
-FA61 8996
-FA62 8B01
-FA63 8B39
-FA64 8CD3
-FA65 8D08
-FA66 8FB6
-FA67 9038
-FA68 96E3
-FA69 97FF
-FA6A 983B
-FA70 4E26
-FA71 51B5
-FA72 5168
-FA73 4F80
-FA74 5145
-FA75 5180
-FA76 52C7
-FA77 52FA
-FA78 559D
-FA79 5555
-FA7A 5599
-FA7B 55E2
-FA7C 585A
-FA7D 58B3
-FA7E 5944
-FA7F 5954
-FA80 5A62
-FA81 5B28
-FA82 5ED2
-FA83 5ED9
-FA84 5F69
-FA85 5FAD
-FA86 60D8
-FA87 614E
-FA88 6108
-FA89 618E
-FA8A 6160
-FA8B 61F2
-FA8C 6234
-FA8D 63C4
-FA8E 641C
-FA8F 6452
-FA90 6556
-FA91 6674
-FA92 6717
-FA93 671B
-FA94 6756
-FA95 6B79
-FA96 6BBA
-FA97 6D41
-FA98 6EDB
-FA99 6ECB
-FA9A 6F22
-FA9B 701E
-FA9C 716E
-FA9D 77A7
-FA9E 7235
-FA9F 72AF
-FAA0 732A
-FAA1 7471
-FAA2 7506
-FAA3 753B
-FAA4 761D
-FAA5 761F
-FAA6 76CA
-FAA7 76DB
-FAA8 76F4
-FAA9 774A
-FAAA 7740
-FAAB 78CC
-FAAC 7AB1
-FAAD 7BC0
-FAAE 7C7B
-FAAF 7D5B
-FAB0 7DF4
-FAB1 7F3E
-FAB2 8005
-FAB3 8352
-FAB4 83EF
-FAB5 8779
-FAB6 8941
-FAB7 8986
-FAB8 8996
-FAB9 8ABF
-FABA 8AF8
-FABB 8ACB
-FABC 8B01
-FABD 8AFE
-FABE 8AED
-FABF 8B39
-FAC0 8B8A
-FAC1 8D08
-FAC2 8F38
-FAC3 9072
-FAC4 9199
-FAC5 9276
-FAC6 967C
-FAC7 96E3
-FAC8 9756
-FAC9 97DB
-FACA 97FF
-FACB 980B
-FACC 983B
-FACD 9B12
-FACE 9F9C
-FACF 2284A
-FAD0 22844
-FAD1 233D5
-FAD2 3B9D
-FAD3 4018
-FAD4 4039
-FAD5 25249
-FAD6 25CD0
-FAD7 27ED3
-FAD8 9F43
-FAD9 9F8E
-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
-FDFC <isolated> 0631 06CC 0627 0644
-FE10 <vertical> 002C
-FE11 <vertical> 3001
-FE12 <vertical> 3002
-FE13 <vertical> 003A
-FE14 <vertical> 003B
-FE15 <vertical> 0021
-FE16 <vertical> 003F
-FE17 <vertical> 3016
-FE18 <vertical> 3017
-FE19 <vertical> 2026
-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
-FE47 <vertical> 005B
-FE48 <vertical> 005D
-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
-FF5F <wide> 2985
-FF60 <wide> 2986
-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
-1D15E 1D157 1D165
-1D15F 1D158 1D165
-1D160 1D15F 1D16E
-1D161 1D15F 1D16F
-1D162 1D15F 1D170
-1D163 1D15F 1D171
-1D164 1D15F 1D172
-1D1BB 1D1B9 1D165
-1D1BC 1D1BA 1D165
-1D1BD 1D1BB 1D16E
-1D1BE 1D1BC 1D16E
-1D1BF 1D1BB 1D16F
-1D1C0 1D1BC 1D16F
-1D400 <font> 0041
-1D401 <font> 0042
-1D402 <font> 0043
-1D403 <font> 0044
-1D404 <font> 0045
-1D405 <font> 0046
-1D406 <font> 0047
-1D407 <font> 0048
-1D408 <font> 0049
-1D409 <font> 004A
-1D40A <font> 004B
-1D40B <font> 004C
-1D40C <font> 004D
-1D40D <font> 004E
-1D40E <font> 004F
-1D40F <font> 0050
-1D410 <font> 0051
-1D411 <font> 0052
-1D412 <font> 0053
-1D413 <font> 0054
-1D414 <font> 0055
-1D415 <font> 0056
-1D416 <font> 0057
-1D417 <font> 0058
-1D418 <font> 0059
-1D419 <font> 005A
-1D41A <font> 0061
-1D41B <font> 0062
-1D41C <font> 0063
-1D41D <font> 0064
-1D41E <font> 0065
-1D41F <font> 0066
-1D420 <font> 0067
-1D421 <font> 0068
-1D422 <font> 0069
-1D423 <font> 006A
-1D424 <font> 006B
-1D425 <font> 006C
-1D426 <font> 006D
-1D427 <font> 006E
-1D428 <font> 006F
-1D429 <font> 0070
-1D42A <font> 0071
-1D42B <font> 0072
-1D42C <font> 0073
-1D42D <font> 0074
-1D42E <font> 0075
-1D42F <font> 0076
-1D430 <font> 0077
-1D431 <font> 0078
-1D432 <font> 0079
-1D433 <font> 007A
-1D434 <font> 0041
-1D435 <font> 0042
-1D436 <font> 0043
-1D437 <font> 0044
-1D438 <font> 0045
-1D439 <font> 0046
-1D43A <font> 0047
-1D43B <font> 0048
-1D43C <font> 0049
-1D43D <font> 004A
-1D43E <font> 004B
-1D43F <font> 004C
-1D440 <font> 004D
-1D441 <font> 004E
-1D442 <font> 004F
-1D443 <font> 0050
-1D444 <font> 0051
-1D445 <font> 0052
-1D446 <font> 0053
-1D447 <font> 0054
-1D448 <font> 0055
-1D449 <font> 0056
-1D44A <font> 0057
-1D44B <font> 0058
-1D44C <font> 0059
-1D44D <font> 005A
-1D44E <font> 0061
-1D44F <font> 0062
-1D450 <font> 0063
-1D451 <font> 0064
-1D452 <font> 0065
-1D453 <font> 0066
-1D454 <font> 0067
-1D456 <font> 0069
-1D457 <font> 006A
-1D458 <font> 006B
-1D459 <font> 006C
-1D45A <font> 006D
-1D45B <font> 006E
-1D45C <font> 006F
-1D45D <font> 0070
-1D45E <font> 0071
-1D45F <font> 0072
-1D460 <font> 0073
-1D461 <font> 0074
-1D462 <font> 0075
-1D463 <font> 0076
-1D464 <font> 0077
-1D465 <font> 0078
-1D466 <font> 0079
-1D467 <font> 007A
-1D468 <font> 0041
-1D469 <font> 0042
-1D46A <font> 0043
-1D46B <font> 0044
-1D46C <font> 0045
-1D46D <font> 0046
-1D46E <font> 0047
-1D46F <font> 0048
-1D470 <font> 0049
-1D471 <font> 004A
-1D472 <font> 004B
-1D473 <font> 004C
-1D474 <font> 004D
-1D475 <font> 004E
-1D476 <font> 004F
-1D477 <font> 0050
-1D478 <font> 0051
-1D479 <font> 0052
-1D47A <font> 0053
-1D47B <font> 0054
-1D47C <font> 0055
-1D47D <font> 0056
-1D47E <font> 0057
-1D47F <font> 0058
-1D480 <font> 0059
-1D481 <font> 005A
-1D482 <font> 0061
-1D483 <font> 0062
-1D484 <font> 0063
-1D485 <font> 0064
-1D486 <font> 0065
-1D487 <font> 0066
-1D488 <font> 0067
-1D489 <font> 0068
-1D48A <font> 0069
-1D48B <font> 006A
-1D48C <font> 006B
-1D48D <font> 006C
-1D48E <font> 006D
-1D48F <font> 006E
-1D490 <font> 006F
-1D491 <font> 0070
-1D492 <font> 0071
-1D493 <font> 0072
-1D494 <font> 0073
-1D495 <font> 0074
-1D496 <font> 0075
-1D497 <font> 0076
-1D498 <font> 0077
-1D499 <font> 0078
-1D49A <font> 0079
-1D49B <font> 007A
-1D49C <font> 0041
-1D49E <font> 0043
-1D49F <font> 0044
-1D4A2 <font> 0047
-1D4A5 <font> 004A
-1D4A6 <font> 004B
-1D4A9 <font> 004E
-1D4AA <font> 004F
-1D4AB <font> 0050
-1D4AC <font> 0051
-1D4AE <font> 0053
-1D4AF <font> 0054
-1D4B0 <font> 0055
-1D4B1 <font> 0056
-1D4B2 <font> 0057
-1D4B3 <font> 0058
-1D4B4 <font> 0059
-1D4B5 <font> 005A
-1D4B6 <font> 0061
-1D4B7 <font> 0062
-1D4B8 <font> 0063
-1D4B9 <font> 0064
-1D4BB <font> 0066
-1D4BD <font> 0068
-1D4BE <font> 0069
-1D4BF <font> 006A
-1D4C0 <font> 006B
-1D4C1 <font> 006C
-1D4C2 <font> 006D
-1D4C3 <font> 006E
-1D4C5 <font> 0070
-1D4C6 <font> 0071
-1D4C7 <font> 0072
-1D4C8 <font> 0073
-1D4C9 <font> 0074
-1D4CA <font> 0075
-1D4CB <font> 0076
-1D4CC <font> 0077
-1D4CD <font> 0078
-1D4CE <font> 0079
-1D4CF <font> 007A
-1D4D0 <font> 0041
-1D4D1 <font> 0042
-1D4D2 <font> 0043
-1D4D3 <font> 0044
-1D4D4 <font> 0045
-1D4D5 <font> 0046
-1D4D6 <font> 0047
-1D4D7 <font> 0048
-1D4D8 <font> 0049
-1D4D9 <font> 004A
-1D4DA <font> 004B
-1D4DB <font> 004C
-1D4DC <font> 004D
-1D4DD <font> 004E
-1D4DE <font> 004F
-1D4DF <font> 0050
-1D4E0 <font> 0051
-1D4E1 <font> 0052
-1D4E2 <font> 0053
-1D4E3 <font> 0054
-1D4E4 <font> 0055
-1D4E5 <font> 0056
-1D4E6 <font> 0057
-1D4E7 <font> 0058
-1D4E8 <font> 0059
-1D4E9 <font> 005A
-1D4EA <font> 0061
-1D4EB <font> 0062
-1D4EC <font> 0063
-1D4ED <font> 0064
-1D4EE <font> 0065
-1D4EF <font> 0066
-1D4F0 <font> 0067
-1D4F1 <font> 0068
-1D4F2 <font> 0069
-1D4F3 <font> 006A
-1D4F4 <font> 006B
-1D4F5 <font> 006C
-1D4F6 <font> 006D
-1D4F7 <font> 006E
-1D4F8 <font> 006F
-1D4F9 <font> 0070
-1D4FA <font> 0071
-1D4FB <font> 0072
-1D4FC <font> 0073
-1D4FD <font> 0074
-1D4FE <font> 0075
-1D4FF <font> 0076
-1D500 <font> 0077
-1D501 <font> 0078
-1D502 <font> 0079
-1D503 <font> 007A
-1D504 <font> 0041
-1D505 <font> 0042
-1D507 <font> 0044
-1D508 <font> 0045
-1D509 <font> 0046
-1D50A <font> 0047
-1D50D <font> 004A
-1D50E <font> 004B
-1D50F <font> 004C
-1D510 <font> 004D
-1D511 <font> 004E
-1D512 <font> 004F
-1D513 <font> 0050
-1D514 <font> 0051
-1D516 <font> 0053
-1D517 <font> 0054
-1D518 <font> 0055
-1D519 <font> 0056
-1D51A <font> 0057
-1D51B <font> 0058
-1D51C <font> 0059
-1D51E <font> 0061
-1D51F <font> 0062
-1D520 <font> 0063
-1D521 <font> 0064
-1D522 <font> 0065
-1D523 <font> 0066
-1D524 <font> 0067
-1D525 <font> 0068
-1D526 <font> 0069
-1D527 <font> 006A
-1D528 <font> 006B
-1D529 <font> 006C
-1D52A <font> 006D
-1D52B <font> 006E
-1D52C <font> 006F
-1D52D <font> 0070
-1D52E <font> 0071
-1D52F <font> 0072
-1D530 <font> 0073
-1D531 <font> 0074
-1D532 <font> 0075
-1D533 <font> 0076
-1D534 <font> 0077
-1D535 <font> 0078
-1D536 <font> 0079
-1D537 <font> 007A
-1D538 <font> 0041
-1D539 <font> 0042
-1D53B <font> 0044
-1D53C <font> 0045
-1D53D <font> 0046
-1D53E <font> 0047
-1D540 <font> 0049
-1D541 <font> 004A
-1D542 <font> 004B
-1D543 <font> 004C
-1D544 <font> 004D
-1D546 <font> 004F
-1D54A <font> 0053
-1D54B <font> 0054
-1D54C <font> 0055
-1D54D <font> 0056
-1D54E <font> 0057
-1D54F <font> 0058
-1D550 <font> 0059
-1D552 <font> 0061
-1D553 <font> 0062
-1D554 <font> 0063
-1D555 <font> 0064
-1D556 <font> 0065
-1D557 <font> 0066
-1D558 <font> 0067
-1D559 <font> 0068
-1D55A <font> 0069
-1D55B <font> 006A
-1D55C <font> 006B
-1D55D <font> 006C
-1D55E <font> 006D
-1D55F <font> 006E
-1D560 <font> 006F
-1D561 <font> 0070
-1D562 <font> 0071
-1D563 <font> 0072
-1D564 <font> 0073
-1D565 <font> 0074
-1D566 <font> 0075
-1D567 <font> 0076
-1D568 <font> 0077
-1D569 <font> 0078
-1D56A <font> 0079
-1D56B <font> 007A
-1D56C <font> 0041
-1D56D <font> 0042
-1D56E <font> 0043
-1D56F <font> 0044
-1D570 <font> 0045
-1D571 <font> 0046
-1D572 <font> 0047
-1D573 <font> 0048
-1D574 <font> 0049
-1D575 <font> 004A
-1D576 <font> 004B
-1D577 <font> 004C
-1D578 <font> 004D
-1D579 <font> 004E
-1D57A <font> 004F
-1D57B <font> 0050
-1D57C <font> 0051
-1D57D <font> 0052
-1D57E <font> 0053
-1D57F <font> 0054
-1D580 <font> 0055
-1D581 <font> 0056
-1D582 <font> 0057
-1D583 <font> 0058
-1D584 <font> 0059
-1D585 <font> 005A
-1D586 <font> 0061
-1D587 <font> 0062
-1D588 <font> 0063
-1D589 <font> 0064
-1D58A <font> 0065
-1D58B <font> 0066
-1D58C <font> 0067
-1D58D <font> 0068
-1D58E <font> 0069
-1D58F <font> 006A
-1D590 <font> 006B
-1D591 <font> 006C
-1D592 <font> 006D
-1D593 <font> 006E
-1D594 <font> 006F
-1D595 <font> 0070
-1D596 <font> 0071
-1D597 <font> 0072
-1D598 <font> 0073
-1D599 <font> 0074
-1D59A <font> 0075
-1D59B <font> 0076
-1D59C <font> 0077
-1D59D <font> 0078
-1D59E <font> 0079
-1D59F <font> 007A
-1D5A0 <font> 0041
-1D5A1 <font> 0042
-1D5A2 <font> 0043
-1D5A3 <font> 0044
-1D5A4 <font> 0045
-1D5A5 <font> 0046
-1D5A6 <font> 0047
-1D5A7 <font> 0048
-1D5A8 <font> 0049
-1D5A9 <font> 004A
-1D5AA <font> 004B
-1D5AB <font> 004C
-1D5AC <font> 004D
-1D5AD <font> 004E
-1D5AE <font> 004F
-1D5AF <font> 0050
-1D5B0 <font> 0051
-1D5B1 <font> 0052
-1D5B2 <font> 0053
-1D5B3 <font> 0054
-1D5B4 <font> 0055
-1D5B5 <font> 0056
-1D5B6 <font> 0057
-1D5B7 <font> 0058
-1D5B8 <font> 0059
-1D5B9 <font> 005A
-1D5BA <font> 0061
-1D5BB <font> 0062
-1D5BC <font> 0063
-1D5BD <font> 0064
-1D5BE <font> 0065
-1D5BF <font> 0066
-1D5C0 <font> 0067
-1D5C1 <font> 0068
-1D5C2 <font> 0069
-1D5C3 <font> 006A
-1D5C4 <font> 006B
-1D5C5 <font> 006C
-1D5C6 <font> 006D
-1D5C7 <font> 006E
-1D5C8 <font> 006F
-1D5C9 <font> 0070
-1D5CA <font> 0071
-1D5CB <font> 0072
-1D5CC <font> 0073
-1D5CD <font> 0074
-1D5CE <font> 0075
-1D5CF <font> 0076
-1D5D0 <font> 0077
-1D5D1 <font> 0078
-1D5D2 <font> 0079
-1D5D3 <font> 007A
-1D5D4 <font> 0041
-1D5D5 <font> 0042
-1D5D6 <font> 0043
-1D5D7 <font> 0044
-1D5D8 <font> 0045
-1D5D9 <font> 0046
-1D5DA <font> 0047
-1D5DB <font> 0048
-1D5DC <font> 0049
-1D5DD <font> 004A
-1D5DE <font> 004B
-1D5DF <font> 004C
-1D5E0 <font> 004D
-1D5E1 <font> 004E
-1D5E2 <font> 004F
-1D5E3 <font> 0050
-1D5E4 <font> 0051
-1D5E5 <font> 0052
-1D5E6 <font> 0053
-1D5E7 <font> 0054
-1D5E8 <font> 0055
-1D5E9 <font> 0056
-1D5EA <font> 0057
-1D5EB <font> 0058
-1D5EC <font> 0059
-1D5ED <font> 005A
-1D5EE <font> 0061
-1D5EF <font> 0062
-1D5F0 <font> 0063
-1D5F1 <font> 0064
-1D5F2 <font> 0065
-1D5F3 <font> 0066
-1D5F4 <font> 0067
-1D5F5 <font> 0068
-1D5F6 <font> 0069
-1D5F7 <font> 006A
-1D5F8 <font> 006B
-1D5F9 <font> 006C
-1D5FA <font> 006D
-1D5FB <font> 006E
-1D5FC <font> 006F
-1D5FD <font> 0070
-1D5FE <font> 0071
-1D5FF <font> 0072
-1D600 <font> 0073
-1D601 <font> 0074
-1D602 <font> 0075
-1D603 <font> 0076
-1D604 <font> 0077
-1D605 <font> 0078
-1D606 <font> 0079
-1D607 <font> 007A
-1D608 <font> 0041
-1D609 <font> 0042
-1D60A <font> 0043
-1D60B <font> 0044
-1D60C <font> 0045
-1D60D <font> 0046
-1D60E <font> 0047
-1D60F <font> 0048
-1D610 <font> 0049
-1D611 <font> 004A
-1D612 <font> 004B
-1D613 <font> 004C
-1D614 <font> 004D
-1D615 <font> 004E
-1D616 <font> 004F
-1D617 <font> 0050
-1D618 <font> 0051
-1D619 <font> 0052
-1D61A <font> 0053
-1D61B <font> 0054
-1D61C <font> 0055
-1D61D <font> 0056
-1D61E <font> 0057
-1D61F <font> 0058
-1D620 <font> 0059
-1D621 <font> 005A
-1D622 <font> 0061
-1D623 <font> 0062
-1D624 <font> 0063
-1D625 <font> 0064
-1D626 <font> 0065
-1D627 <font> 0066
-1D628 <font> 0067
-1D629 <font> 0068
-1D62A <font> 0069
-1D62B <font> 006A
-1D62C <font> 006B
-1D62D <font> 006C
-1D62E <font> 006D
-1D62F <font> 006E
-1D630 <font> 006F
-1D631 <font> 0070
-1D632 <font> 0071
-1D633 <font> 0072
-1D634 <font> 0073
-1D635 <font> 0074
-1D636 <font> 0075
-1D637 <font> 0076
-1D638 <font> 0077
-1D639 <font> 0078
-1D63A <font> 0079
-1D63B <font> 007A
-1D63C <font> 0041
-1D63D <font> 0042
-1D63E <font> 0043
-1D63F <font> 0044
-1D640 <font> 0045
-1D641 <font> 0046
-1D642 <font> 0047
-1D643 <font> 0048
-1D644 <font> 0049
-1D645 <font> 004A
-1D646 <font> 004B
-1D647 <font> 004C
-1D648 <font> 004D
-1D649 <font> 004E
-1D64A <font> 004F
-1D64B <font> 0050
-1D64C <font> 0051
-1D64D <font> 0052
-1D64E <font> 0053
-1D64F <font> 0054
-1D650 <font> 0055
-1D651 <font> 0056
-1D652 <font> 0057
-1D653 <font> 0058
-1D654 <font> 0059
-1D655 <font> 005A
-1D656 <font> 0061
-1D657 <font> 0062
-1D658 <font> 0063
-1D659 <font> 0064
-1D65A <font> 0065
-1D65B <font> 0066
-1D65C <font> 0067
-1D65D <font> 0068
-1D65E <font> 0069
-1D65F <font> 006A
-1D660 <font> 006B
-1D661 <font> 006C
-1D662 <font> 006D
-1D663 <font> 006E
-1D664 <font> 006F
-1D665 <font> 0070
-1D666 <font> 0071
-1D667 <font> 0072
-1D668 <font> 0073
-1D669 <font> 0074
-1D66A <font> 0075
-1D66B <font> 0076
-1D66C <font> 0077
-1D66D <font> 0078
-1D66E <font> 0079
-1D66F <font> 007A
-1D670 <font> 0041
-1D671 <font> 0042
-1D672 <font> 0043
-1D673 <font> 0044
-1D674 <font> 0045
-1D675 <font> 0046
-1D676 <font> 0047
-1D677 <font> 0048
-1D678 <font> 0049
-1D679 <font> 004A
-1D67A <font> 004B
-1D67B <font> 004C
-1D67C <font> 004D
-1D67D <font> 004E
-1D67E <font> 004F
-1D67F <font> 0050
-1D680 <font> 0051
-1D681 <font> 0052
-1D682 <font> 0053
-1D683 <font> 0054
-1D684 <font> 0055
-1D685 <font> 0056
-1D686 <font> 0057
-1D687 <font> 0058
-1D688 <font> 0059
-1D689 <font> 005A
-1D68A <font> 0061
-1D68B <font> 0062
-1D68C <font> 0063
-1D68D <font> 0064
-1D68E <font> 0065
-1D68F <font> 0066
-1D690 <font> 0067
-1D691 <font> 0068
-1D692 <font> 0069
-1D693 <font> 006A
-1D694 <font> 006B
-1D695 <font> 006C
-1D696 <font> 006D
-1D697 <font> 006E
-1D698 <font> 006F
-1D699 <font> 0070
-1D69A <font> 0071
-1D69B <font> 0072
-1D69C <font> 0073
-1D69D <font> 0074
-1D69E <font> 0075
-1D69F <font> 0076
-1D6A0 <font> 0077
-1D6A1 <font> 0078
-1D6A2 <font> 0079
-1D6A3 <font> 007A
-1D6A4 <font> 0131
-1D6A5 <font> 0237
-1D6A8 <font> 0391
-1D6A9 <font> 0392
-1D6AA <font> 0393
-1D6AB <font> 0394
-1D6AC <font> 0395
-1D6AD <font> 0396
-1D6AE <font> 0397
-1D6AF <font> 0398
-1D6B0 <font> 0399
-1D6B1 <font> 039A
-1D6B2 <font> 039B
-1D6B3 <font> 039C
-1D6B4 <font> 039D
-1D6B5 <font> 039E
-1D6B6 <font> 039F
-1D6B7 <font> 03A0
-1D6B8 <font> 03A1
-1D6B9 <font> 03F4
-1D6BA <font> 03A3
-1D6BB <font> 03A4
-1D6BC <font> 03A5
-1D6BD <font> 03A6
-1D6BE <font> 03A7
-1D6BF <font> 03A8
-1D6C0 <font> 03A9
-1D6C1 <font> 2207
-1D6C2 <font> 03B1
-1D6C3 <font> 03B2
-1D6C4 <font> 03B3
-1D6C5 <font> 03B4
-1D6C6 <font> 03B5
-1D6C7 <font> 03B6
-1D6C8 <font> 03B7
-1D6C9 <font> 03B8
-1D6CA <font> 03B9
-1D6CB <font> 03BA
-1D6CC <font> 03BB
-1D6CD <font> 03BC
-1D6CE <font> 03BD
-1D6CF <font> 03BE
-1D6D0 <font> 03BF
-1D6D1 <font> 03C0
-1D6D2 <font> 03C1
-1D6D3 <font> 03C2
-1D6D4 <font> 03C3
-1D6D5 <font> 03C4
-1D6D6 <font> 03C5
-1D6D7 <font> 03C6
-1D6D8 <font> 03C7
-1D6D9 <font> 03C8
-1D6DA <font> 03C9
-1D6DB <font> 2202
-1D6DC <font> 03F5
-1D6DD <font> 03D1
-1D6DE <font> 03F0
-1D6DF <font> 03D5
-1D6E0 <font> 03F1
-1D6E1 <font> 03D6
-1D6E2 <font> 0391
-1D6E3 <font> 0392
-1D6E4 <font> 0393
-1D6E5 <font> 0394
-1D6E6 <font> 0395
-1D6E7 <font> 0396
-1D6E8 <font> 0397
-1D6E9 <font> 0398
-1D6EA <font> 0399
-1D6EB <font> 039A
-1D6EC <font> 039B
-1D6ED <font> 039C
-1D6EE <font> 039D
-1D6EF <font> 039E
-1D6F0 <font> 039F
-1D6F1 <font> 03A0
-1D6F2 <font> 03A1
-1D6F3 <font> 03F4
-1D6F4 <font> 03A3
-1D6F5 <font> 03A4
-1D6F6 <font> 03A5
-1D6F7 <font> 03A6
-1D6F8 <font> 03A7
-1D6F9 <font> 03A8
-1D6FA <font> 03A9
-1D6FB <font> 2207
-1D6FC <font> 03B1
-1D6FD <font> 03B2
-1D6FE <font> 03B3
-1D6FF <font> 03B4
-1D700 <font> 03B5
-1D701 <font> 03B6
-1D702 <font> 03B7
-1D703 <font> 03B8
-1D704 <font> 03B9
-1D705 <font> 03BA
-1D706 <font> 03BB
-1D707 <font> 03BC
-1D708 <font> 03BD
-1D709 <font> 03BE
-1D70A <font> 03BF
-1D70B <font> 03C0
-1D70C <font> 03C1
-1D70D <font> 03C2
-1D70E <font> 03C3
-1D70F <font> 03C4
-1D710 <font> 03C5
-1D711 <font> 03C6
-1D712 <font> 03C7
-1D713 <font> 03C8
-1D714 <font> 03C9
-1D715 <font> 2202
-1D716 <font> 03F5
-1D717 <font> 03D1
-1D718 <font> 03F0
-1D719 <font> 03D5
-1D71A <font> 03F1
-1D71B <font> 03D6
-1D71C <font> 0391
-1D71D <font> 0392
-1D71E <font> 0393
-1D71F <font> 0394
-1D720 <font> 0395
-1D721 <font> 0396
-1D722 <font> 0397
-1D723 <font> 0398
-1D724 <font> 0399
-1D725 <font> 039A
-1D726 <font> 039B
-1D727 <font> 039C
-1D728 <font> 039D
-1D729 <font> 039E
-1D72A <font> 039F
-1D72B <font> 03A0
-1D72C <font> 03A1
-1D72D <font> 03F4
-1D72E <font> 03A3
-1D72F <font> 03A4
-1D730 <font> 03A5
-1D731 <font> 03A6
-1D732 <font> 03A7
-1D733 <font> 03A8
-1D734 <font> 03A9
-1D735 <font> 2207
-1D736 <font> 03B1
-1D737 <font> 03B2
-1D738 <font> 03B3
-1D739 <font> 03B4
-1D73A <font> 03B5
-1D73B <font> 03B6
-1D73C <font> 03B7
-1D73D <font> 03B8
-1D73E <font> 03B9
-1D73F <font> 03BA
-1D740 <font> 03BB
-1D741 <font> 03BC
-1D742 <font> 03BD
-1D743 <font> 03BE
-1D744 <font> 03BF
-1D745 <font> 03C0
-1D746 <font> 03C1
-1D747 <font> 03C2
-1D748 <font> 03C3
-1D749 <font> 03C4
-1D74A <font> 03C5
-1D74B <font> 03C6
-1D74C <font> 03C7
-1D74D <font> 03C8
-1D74E <font> 03C9
-1D74F <font> 2202
-1D750 <font> 03F5
-1D751 <font> 03D1
-1D752 <font> 03F0
-1D753 <font> 03D5
-1D754 <font> 03F1
-1D755 <font> 03D6
-1D756 <font> 0391
-1D757 <font> 0392
-1D758 <font> 0393
-1D759 <font> 0394
-1D75A <font> 0395
-1D75B <font> 0396
-1D75C <font> 0397
-1D75D <font> 0398
-1D75E <font> 0399
-1D75F <font> 039A
-1D760 <font> 039B
-1D761 <font> 039C
-1D762 <font> 039D
-1D763 <font> 039E
-1D764 <font> 039F
-1D765 <font> 03A0
-1D766 <font> 03A1
-1D767 <font> 03F4
-1D768 <font> 03A3
-1D769 <font> 03A4
-1D76A <font> 03A5
-1D76B <font> 03A6
-1D76C <font> 03A7
-1D76D <font> 03A8
-1D76E <font> 03A9
-1D76F <font> 2207
-1D770 <font> 03B1
-1D771 <font> 03B2
-1D772 <font> 03B3
-1D773 <font> 03B4
-1D774 <font> 03B5
-1D775 <font> 03B6
-1D776 <font> 03B7
-1D777 <font> 03B8
-1D778 <font> 03B9
-1D779 <font> 03BA
-1D77A <font> 03BB
-1D77B <font> 03BC
-1D77C <font> 03BD
-1D77D <font> 03BE
-1D77E <font> 03BF
-1D77F <font> 03C0
-1D780 <font> 03C1
-1D781 <font> 03C2
-1D782 <font> 03C3
-1D783 <font> 03C4
-1D784 <font> 03C5
-1D785 <font> 03C6
-1D786 <font> 03C7
-1D787 <font> 03C8
-1D788 <font> 03C9
-1D789 <font> 2202
-1D78A <font> 03F5
-1D78B <font> 03D1
-1D78C <font> 03F0
-1D78D <font> 03D5
-1D78E <font> 03F1
-1D78F <font> 03D6
-1D790 <font> 0391
-1D791 <font> 0392
-1D792 <font> 0393
-1D793 <font> 0394
-1D794 <font> 0395
-1D795 <font> 0396
-1D796 <font> 0397
-1D797 <font> 0398
-1D798 <font> 0399
-1D799 <font> 039A
-1D79A <font> 039B
-1D79B <font> 039C
-1D79C <font> 039D
-1D79D <font> 039E
-1D79E <font> 039F
-1D79F <font> 03A0
-1D7A0 <font> 03A1
-1D7A1 <font> 03F4
-1D7A2 <font> 03A3
-1D7A3 <font> 03A4
-1D7A4 <font> 03A5
-1D7A5 <font> 03A6
-1D7A6 <font> 03A7
-1D7A7 <font> 03A8
-1D7A8 <font> 03A9
-1D7A9 <font> 2207
-1D7AA <font> 03B1
-1D7AB <font> 03B2
-1D7AC <font> 03B3
-1D7AD <font> 03B4
-1D7AE <font> 03B5
-1D7AF <font> 03B6
-1D7B0 <font> 03B7
-1D7B1 <font> 03B8
-1D7B2 <font> 03B9
-1D7B3 <font> 03BA
-1D7B4 <font> 03BB
-1D7B5 <font> 03BC
-1D7B6 <font> 03BD
-1D7B7 <font> 03BE
-1D7B8 <font> 03BF
-1D7B9 <font> 03C0
-1D7BA <font> 03C1
-1D7BB <font> 03C2
-1D7BC <font> 03C3
-1D7BD <font> 03C4
-1D7BE <font> 03C5
-1D7BF <font> 03C6
-1D7C0 <font> 03C7
-1D7C1 <font> 03C8
-1D7C2 <font> 03C9
-1D7C3 <font> 2202
-1D7C4 <font> 03F5
-1D7C5 <font> 03D1
-1D7C6 <font> 03F0
-1D7C7 <font> 03D5
-1D7C8 <font> 03F1
-1D7C9 <font> 03D6
-1D7CE <font> 0030
-1D7CF <font> 0031
-1D7D0 <font> 0032
-1D7D1 <font> 0033
-1D7D2 <font> 0034
-1D7D3 <font> 0035
-1D7D4 <font> 0036
-1D7D5 <font> 0037
-1D7D6 <font> 0038
-1D7D7 <font> 0039
-1D7D8 <font> 0030
-1D7D9 <font> 0031
-1D7DA <font> 0032
-1D7DB <font> 0033
-1D7DC <font> 0034
-1D7DD <font> 0035
-1D7DE <font> 0036
-1D7DF <font> 0037
-1D7E0 <font> 0038
-1D7E1 <font> 0039
-1D7E2 <font> 0030
-1D7E3 <font> 0031
-1D7E4 <font> 0032
-1D7E5 <font> 0033
-1D7E6 <font> 0034
-1D7E7 <font> 0035
-1D7E8 <font> 0036
-1D7E9 <font> 0037
-1D7EA <font> 0038
-1D7EB <font> 0039
-1D7EC <font> 0030
-1D7ED <font> 0031
-1D7EE <font> 0032
-1D7EF <font> 0033
-1D7F0 <font> 0034
-1D7F1 <font> 0035
-1D7F2 <font> 0036
-1D7F3 <font> 0037
-1D7F4 <font> 0038
-1D7F5 <font> 0039
-1D7F6 <font> 0030
-1D7F7 <font> 0031
-1D7F8 <font> 0032
-1D7F9 <font> 0033
-1D7FA <font> 0034
-1D7FB <font> 0035
-1D7FC <font> 0036
-1D7FD <font> 0037
-1D7FE <font> 0038
-1D7FF <font> 0039
-2F800 4E3D
-2F801 4E38
-2F802 4E41
-2F803 20122
-2F804 4F60
-2F805 4FAE
-2F806 4FBB
-2F807 5002
-2F808 507A
-2F809 5099
-2F80A 50E7
-2F80B 50CF
-2F80C 349E
-2F80D 2063A
-2F80E 514D
-2F80F 5154
-2F810 5164
-2F811 5177
-2F812 2051C
-2F813 34B9
-2F814 5167
-2F815 518D
-2F816 2054B
-2F817 5197
-2F818 51A4
-2F819 4ECC
-2F81A 51AC
-2F81B 51B5
-2F81C 291DF
-2F81D 51F5
-2F81E 5203
-2F81F 34DF
-2F820 523B
-2F821 5246
-2F822 5272
-2F823 5277
-2F824 3515
-2F825 52C7
-2F826 52C9
-2F827 52E4
-2F828 52FA
-2F829 5305
-2F82A 5306
-2F82B 5317
-2F82C 5349
-2F82D 5351
-2F82E 535A
-2F82F 5373
-2F830 537D
-2F831 2F833 537F
-2F834 20A2C
-2F835 7070
-2F836 53CA
-2F837 53DF
-2F838 20B63
-2F839 53EB
-2F83A 53F1
-2F83B 5406
-2F83C 549E
-2F83D 5438
-2F83E 5448
-2F83F 5468
-2F840 54A2
-2F841 54F6
-2F842 5510
-2F843 5553
-2F844 5563
-2F845 2F846 5584
-2F847 5599
-2F848 55AB
-2F849 55B3
-2F84A 55C2
-2F84B 5716
-2F84C 5606
-2F84D 5717
-2F84E 5651
-2F84F 5674
-2F850 5207
-2F851 58EE
-2F852 57CE
-2F853 57F4
-2F854 580D
-2F855 578B
-2F856 5832
-2F857 5831
-2F858 58AC
-2F859 214E4
-2F85A 58F2
-2F85B 58F7
-2F85C 5906
-2F85D 591A
-2F85E 5922
-2F85F 5962
-2F860 216A8
-2F861 216EA
-2F862 59EC
-2F863 5A1B
-2F864 5A27
-2F865 59D8
-2F866 5A66
-2F867 36EE
-2F868 36FC
-2F869 5B08
-2F86A 2F86B 5B3E
-2F86C 219C8
-2F86D 5BC3
-2F86E 5BD8
-2F86F 5BE7
-2F870 5BF3
-2F871 21B18
-2F872 5BFF
-2F873 5C06
-2F874 5F53
-2F875 5C22
-2F876 3781
-2F877 5C60
-2F878 5C6E
-2F879 5CC0
-2F87A 5C8D
-2F87B 21DE4
-2F87C 5D43
-2F87D 21DE6
-2F87E 5D6E
-2F87F 5D6B
-2F880 5D7C
-2F881 5DE1
-2F882 5DE2
-2F883 382F
-2F884 5DFD
-2F885 5E28
-2F886 5E3D
-2F887 5E69
-2F888 3862
-2F889 22183
-2F88A 387C
-2F88B 5EB0
-2F88C 5EB3
-2F88D 5EB6
-2F88E 5ECA
-2F88F 2A392
-2F890 5EFE
-2F891 2F892 22331
-2F893 8201
-2F894 2F895 5F22
-2F896 38C7
-2F897 232B8
-2F898 261DA
-2F899 5F62
-2F89A 5F6B
-2F89B 38E3
-2F89C 5F9A
-2F89D 5FCD
-2F89E 5FD7
-2F89F 5FF9
-2F8A0 6081
-2F8A1 393A
-2F8A2 391C
-2F8A3 6094
-2F8A4 226D4
-2F8A5 60C7
-2F8A6 6148
-2F8A7 614C
-2F8A8 614E
-2F8A9 614C
-2F8AA 617A
-2F8AB 618E
-2F8AC 61B2
-2F8AD 61A4
-2F8AE 61AF
-2F8AF 61DE
-2F8B0 61F2
-2F8B1 61F6
-2F8B2 6210
-2F8B3 621B
-2F8B4 625D
-2F8B5 62B1
-2F8B6 62D4
-2F8B7 6350
-2F8B8 22B0C
-2F8B9 633D
-2F8BA 62FC
-2F8BB 6368
-2F8BC 6383
-2F8BD 63E4
-2F8BE 22BF1
-2F8BF 6422
-2F8C0 63C5
-2F8C1 63A9
-2F8C2 3A2E
-2F8C3 6469
-2F8C4 647E
-2F8C5 649D
-2F8C6 6477
-2F8C7 3A6C
-2F8C8 654F
-2F8C9 656C
-2F8CA 2300A
-2F8CB 65E3
-2F8CC 66F8
-2F8CD 6649
-2F8CE 3B19
-2F8CF 6691
-2F8D0 3B08
-2F8D1 3AE4
-2F8D2 5192
-2F8D3 5195
-2F8D4 6700
-2F8D5 669C
-2F8D6 80AD
-2F8D7 43D9
-2F8D8 6717
-2F8D9 671B
-2F8DA 6721
-2F8DB 675E
-2F8DC 6753
-2F8DD 233C3
-2F8DE 3B49
-2F8DF 67FA
-2F8E0 6785
-2F8E1 6852
-2F8E2 6885
-2F8E3 2346D
-2F8E4 688E
-2F8E5 681F
-2F8E6 6914
-2F8E7 3B9D
-2F8E8 6942
-2F8E9 69A3
-2F8EA 69EA
-2F8EB 6AA8
-2F8EC 236A3
-2F8ED 6ADB
-2F8EE 3C18
-2F8EF 6B21
-2F8F0 238A7
-2F8F1 6B54
-2F8F2 3C4E
-2F8F3 6B72
-2F8F4 6B9F
-2F8F5 6BBA
-2F8F6 6BBB
-2F8F7 23A8D
-2F8F8 21D0B
-2F8F9 23AFA
-2F8FA 6C4E
-2F8FB 23CBC
-2F8FC 6CBF
-2F8FD 6CCD
-2F8FE 6C67
-2F8FF 6D16
-2F900 6D3E
-2F901 6D77
-2F902 6D41
-2F903 6D69
-2F904 6D78
-2F905 6D85
-2F906 23D1E
-2F907 6D34
-2F908 6E2F
-2F909 6E6E
-2F90A 3D33
-2F90B 6ECB
-2F90C 6EC7
-2F90D 23ED1
-2F90E 6DF9
-2F90F 6F6E
-2F910 23F5E
-2F911 23F8E
-2F912 6FC6
-2F913 7039
-2F914 701E
-2F915 701B
-2F916 3D96
-2F917 704A
-2F918 707D
-2F919 7077
-2F91A 70AD
-2F91B 20525
-2F91C 7145
-2F91D 24263
-2F91E 719C
-2F91F 243AB
-2F920 7228
-2F921 7235
-2F922 7250
-2F923 24608
-2F924 7280
-2F925 7295
-2F926 24735
-2F927 24814
-2F928 737A
-2F929 738B
-2F92A 3EAC
-2F92B 73A5
-2F92C 2F92D 3EB8
-2F92E 7447
-2F92F 745C
-2F930 7471
-2F931 7485
-2F932 74CA
-2F933 3F1B
-2F934 7524
-2F935 24C36
-2F936 753E
-2F937 24C92
-2F938 7570
-2F939 2219F
-2F93A 7610
-2F93B 24FA1
-2F93C 24FB8
-2F93D 25044
-2F93E 3FFC
-2F93F 4008
-2F940 76F4
-2F941 250F3
-2F942 250F2
-2F943 25119
-2F944 25133
-2F945 771E
-2F946 2F947 771F
-2F948 774A
-2F949 4039
-2F94A 778B
-2F94B 4046
-2F94C 4096
-2F94D 2541D
-2F94E 784E
-2F94F 788C
-2F950 78CC
-2F951 40E3
-2F952 25626
-2F953 7956
-2F954 2569A
-2F955 256C5
-2F956 798F
-2F957 79EB
-2F958 412F
-2F959 7A40
-2F95A 7A4A
-2F95B 7A4F
-2F95C 2597C
-2F95D 2F95E 25AA7
-2F95F 7AEE
-2F960 4202
-2F961 25BAB
-2F962 7BC6
-2F963 7BC9
-2F964 4227
-2F965 25C80
-2F966 7CD2
-2F967 42A0
-2F968 7CE8
-2F969 7CE3
-2F96A 7D00
-2F96B 25F86
-2F96C 7D63
-2F96D 4301
-2F96E 7DC7
-2F96F 7E02
-2F970 7E45
-2F971 4334
-2F972 26228
-2F973 26247
-2F974 4359
-2F975 262D9
-2F976 7F7A
-2F977 2633E
-2F978 7F95
-2F979 7FFA
-2F97A 8005
-2F97B 264DA
-2F97C 26523
-2F97D 8060
-2F97E 265A8
-2F97F 8070
-2F980 2335F
-2F981 43D5
-2F982 80B2
-2F983 8103
-2F984 440B
-2F985 813E
-2F986 5AB5
-2F987 267A7
-2F988 267B5
-2F989 23393
-2F98A 2339C
-2F98B 8201
-2F98C 8204
-2F98D 8F9E
-2F98E 446B
-2F98F 8291
-2F990 828B
-2F991 829D
-2F992 52B3
-2F993 82B1
-2F994 82B3
-2F995 82BD
-2F996 82E6
-2F997 26B3C
-2F998 82E5
-2F999 831D
-2F99A 8363
-2F99B 83AD
-2F99C 8323
-2F99D 83BD
-2F99E 83E7
-2F99F 8457
-2F9A0 8353
-2F9A1 83CA
-2F9A2 83CC
-2F9A3 83DC
-2F9A4 26C36
-2F9A5 26D6B
-2F9A6 26CD5
-2F9A7 452B
-2F9A8 84F1
-2F9A9 84F3
-2F9AA 8516
-2F9AB 273CA
-2F9AC 8564
-2F9AD 26F2C
-2F9AE 455D
-2F9AF 4561
-2F9B0 26FB1
-2F9B1 270D2
-2F9B2 456B
-2F9B3 8650
-2F9B4 865C
-2F9B5 8667
-2F9B6 8669
-2F9B7 86A9
-2F9B8 8688
-2F9B9 870E
-2F9BA 86E2
-2F9BB 8779
-2F9BC 8728
-2F9BD 876B
-2F9BE 8786
-2F9BF 45D7
-2F9C0 87E1
-2F9C1 8801
-2F9C2 45F9
-2F9C3 8860
-2F9C4 8863
-2F9C5 27667
-2F9C6 88D7
-2F9C7 88DE
-2F9C8 4635
-2F9C9 88FA
-2F9CA 34BB
-2F9CB 278AE
-2F9CC 27966
-2F9CD 46BE
-2F9CE 46C7
-2F9CF 8AA0
-2F9D0 8AED
-2F9D1 8B8A
-2F9D2 8C55
-2F9D3 27CA8
-2F9D4 8CAB
-2F9D5 8CC1
-2F9D6 8D1B
-2F9D7 8D77
-2F9D8 27F2F
-2F9D9 20804
-2F9DA 8DCB
-2F9DB 8DBC
-2F9DC 8DF0
-2F9DD 208DE
-2F9DE 8ED4
-2F9DF 8F38
-2F9E0 285D2
-2F9E1 285ED
-2F9E2 9094
-2F9E3 90F1
-2F9E4 9111
-2F9E5 2872E
-2F9E6 911B
-2F9E7 9238
-2F9E8 92D7
-2F9E9 92D8
-2F9EA 927C
-2F9EB 93F9
-2F9EC 9415
-2F9ED 28BFA
-2F9EE 958B
-2F9EF 4995
-2F9F0 95B7
-2F9F1 28D77
-2F9F2 49E6
-2F9F3 96C3
-2F9F4 5DB2
-2F9F5 9723
-2F9F6 29145
-2F9F7 2921A
-2F9F8 4A6E
-2F9F9 4A76
-2F9FA 97E0
-2F9FB 2940A
-2F9FC 4AB2
-2F9FD 29496
-2F9FE 2F9FF 980B
-2FA00 9829
-2FA01 295B6
-2FA02 98E2
-2FA03 4B33
-2FA04 9929
-2FA05 99A7
-2FA06 99C2
-2FA07 99FE
-2FA08 4BCE
-2FA09 29B30
-2FA0A 9B12
-2FA0B 9C40
-2FA0C 9CFD
-2FA0D 4CCE
-2FA0E 4CED
-2FA0F 9D67
-2FA10 2A0CE
-2FA11 4CF8
-2FA12 2A105
-2FA13 2A20E
-2FA14 2A291
-2FA15 9EBB
-2FA16 4D56
-2FA17 9EF9
-2FA18 9EFE
-2FA19 9F05
-2FA1A 9F0F
-2FA1B 9F16
-2FA1C 9F3B
-2FA1D 2A600
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/EastAsianWidth.txt b/Master/tlpkg/tlperl/lib/unicore/EastAsianWidth.txt
deleted file mode 100644
index 935d041eacd..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/EastAsianWidth.txt
+++ /dev/null
@@ -1,16368 +0,0 @@
-# EastAsianWidth-4.1.0.txt
-# Date: 2005-03-17, 15:21:00 PST [KW]
-#
-# East Asian Width Properties
-#
-# This file is an informative contributory data file in the
-# Unicode Character Database.
-#
-# Copyright (c) 1991-2005 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-#
-# The format is two fields separated by a semicolon.
-# Field 0: Unicode value
-# Field 1: East Asian Width property, consisting of one of the following values:
-# "N", "A", "H", "W", "F", "Na"
-# - All code points, assigned or unassigned, that are not listed
-# explicitly are given the value "N".
-# - Characters ranges are specified as for other property files in
-# the Unicode Character Database.
-#
-# The Unicode name of each character is provided in a comment for help
-# in identifying the characters.
-#
-# See UAX #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;A # 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;A # 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
-0220;N # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
-0221;N # LATIN SMALL LETTER D WITH CURL
-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
-0234;N # LATIN SMALL LETTER L WITH CURL
-0235;N # LATIN SMALL LETTER N WITH CURL
-0236;N # LATIN SMALL LETTER T WITH CURL
-0237;N # LATIN SMALL LETTER DOTLESS J
-0238;N # LATIN SMALL LETTER DB DIGRAPH
-0239;N # LATIN SMALL LETTER QP DIGRAPH
-023A;N # LATIN CAPITAL LETTER A WITH STROKE
-023B;N # LATIN CAPITAL LETTER C WITH STROKE
-023C;N # LATIN SMALL LETTER C WITH STROKE
-023D;N # LATIN CAPITAL LETTER L WITH BAR
-023E;N # LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
-023F;N # LATIN SMALL LETTER S WITH SWASH TAIL
-0240;N # LATIN SMALL LETTER Z WITH SWASH TAIL
-0241;N # LATIN CAPITAL LETTER GLOTTAL STOP
-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
-02AE;N # LATIN SMALL LETTER TURNED H WITH FISHHOOK
-02AF;N # LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
-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;A # 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;A # 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
-02EF;N # MODIFIER LETTER LOW DOWN ARROWHEAD
-02F0;N # MODIFIER LETTER LOW UP ARROWHEAD
-02F1;N # MODIFIER LETTER LOW LEFT ARROWHEAD
-02F2;N # MODIFIER LETTER LOW RIGHT ARROWHEAD
-02F3;N # MODIFIER LETTER LOW RING
-02F4;N # MODIFIER LETTER MIDDLE GRAVE ACCENT
-02F5;N # MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT
-02F6;N # MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT
-02F7;N # MODIFIER LETTER LOW TILDE
-02F8;N # MODIFIER LETTER RAISED COLON
-02F9;N # MODIFIER LETTER BEGIN HIGH TONE
-02FA;N # MODIFIER LETTER END HIGH TONE
-02FB;N # MODIFIER LETTER BEGIN LOW TONE
-02FC;N # MODIFIER LETTER END LOW TONE
-02FD;N # MODIFIER LETTER SHELF
-02FE;N # MODIFIER LETTER OPEN SHELF
-02FF;N # MODIFIER LETTER LOW LEFT ARROW
-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
-034F;A # COMBINING GRAPHEME JOINER
-0350;A # COMBINING RIGHT ARROWHEAD ABOVE
-0351;A # COMBINING LEFT HALF RING ABOVE
-0352;A # COMBINING FERMATA
-0353;A # COMBINING X BELOW
-0354;A # COMBINING LEFT ARROWHEAD BELOW
-0355;A # COMBINING RIGHT ARROWHEAD BELOW
-0356;A # COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW
-0357;A # COMBINING RIGHT HALF RING ABOVE
-0358;A # COMBINING DOT ABOVE RIGHT
-0359;A # COMBINING ASTERISK BELOW
-035A;A # COMBINING DOUBLE RING BELOW
-035B;A # COMBINING ZIGZAG ABOVE
-035C;A # COMBINING DOUBLE BREVE BELOW
-035D;A # COMBINING DOUBLE BREVE
-035E;A # COMBINING DOUBLE MACRON
-035F;A # COMBINING DOUBLE MACRON BELOW
-0360;A # COMBINING DOUBLE TILDE
-0361;A # COMBINING DOUBLE INVERTED BREVE
-0362;A # COMBINING DOUBLE RIGHTWARDS ARROW BELOW
-0363;A # COMBINING LATIN SMALL LETTER A
-0364;A # COMBINING LATIN SMALL LETTER E
-0365;A # COMBINING LATIN SMALL LETTER I
-0366;A # COMBINING LATIN SMALL LETTER O
-0367;A # COMBINING LATIN SMALL LETTER U
-0368;A # COMBINING LATIN SMALL LETTER C
-0369;A # COMBINING LATIN SMALL LETTER D
-036A;A # COMBINING LATIN SMALL LETTER H
-036B;A # COMBINING LATIN SMALL LETTER M
-036C;A # COMBINING LATIN SMALL LETTER R
-036D;A # COMBINING LATIN SMALL LETTER T
-036E;A # COMBINING LATIN SMALL LETTER V
-036F;A # COMBINING LATIN SMALL LETTER X
-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
-03D8;N # GREEK LETTER ARCHAIC KOPPA
-03D9;N # GREEK SMALL LETTER ARCHAIC KOPPA
-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
-03F4;N # GREEK CAPITAL THETA SYMBOL
-03F5;N # GREEK LUNATE EPSILON SYMBOL
-03F6;N # GREEK REVERSED LUNATE EPSILON SYMBOL
-03F7;N # GREEK CAPITAL LETTER SHO
-03F8;N # GREEK SMALL LETTER SHO
-03F9;N # GREEK CAPITAL LUNATE SIGMA SYMBOL
-03FA;N # GREEK CAPITAL LETTER SAN
-03FB;N # GREEK SMALL LETTER SAN
-03FC;N # GREEK RHO WITH STROKE SYMBOL
-03FD;N # GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL
-03FE;N # GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL
-03FF;N # GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL
-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
-048A;N # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
-048B;N # CYRILLIC SMALL LETTER SHORT I WITH TAIL
-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
-04C5;N # CYRILLIC CAPITAL LETTER EL WITH TAIL
-04C6;N # CYRILLIC SMALL LETTER EL WITH TAIL
-04C7;N # CYRILLIC CAPITAL LETTER EN WITH HOOK
-04C8;N # CYRILLIC SMALL LETTER EN WITH HOOK
-04C9;N # CYRILLIC CAPITAL LETTER EN WITH TAIL
-04CA;N # CYRILLIC SMALL LETTER EN WITH TAIL
-04CB;N # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
-04CC;N # CYRILLIC SMALL LETTER KHAKASSIAN CHE
-04CD;N # CYRILLIC CAPITAL LETTER EM WITH TAIL
-04CE;N # CYRILLIC SMALL LETTER EM WITH TAIL
-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
-04F6;N # CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
-04F7;N # CYRILLIC SMALL LETTER GHE WITH DESCENDER
-04F8;N # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
-04F9;N # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
-0500;N # CYRILLIC CAPITAL LETTER KOMI DE
-0501;N # CYRILLIC SMALL LETTER KOMI DE
-0502;N # CYRILLIC CAPITAL LETTER KOMI DJE
-0503;N # CYRILLIC SMALL LETTER KOMI DJE
-0504;N # CYRILLIC CAPITAL LETTER KOMI ZJE
-0505;N # CYRILLIC SMALL LETTER KOMI ZJE
-0506;N # CYRILLIC CAPITAL LETTER KOMI DZJE
-0507;N # CYRILLIC SMALL LETTER KOMI DZJE
-0508;N # CYRILLIC CAPITAL LETTER KOMI LJE
-0509;N # CYRILLIC SMALL LETTER KOMI LJE
-050A;N # CYRILLIC CAPITAL LETTER KOMI NJE
-050B;N # CYRILLIC SMALL LETTER KOMI NJE
-050C;N # CYRILLIC CAPITAL LETTER KOMI SJE
-050D;N # CYRILLIC SMALL LETTER KOMI SJE
-050E;N # CYRILLIC CAPITAL LETTER KOMI TJE
-050F;N # CYRILLIC SMALL LETTER KOMI TJE
-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
-05A2;N # HEBREW ACCENT ATNAH HAFUKH
-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
-05C5;N # HEBREW MARK LOWER DOT
-05C6;N # HEBREW PUNCTUATION NUN HAFUKHA
-05C7;N # HEBREW POINT QAMATS QATAN
-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
-0600;N # ARABIC NUMBER SIGN
-0601;N # ARABIC SIGN SANAH
-0602;N # ARABIC FOOTNOTE MARKER
-0603;N # ARABIC SIGN SAFHA
-060B;N # AFGHANI SIGN
-060C;N # ARABIC COMMA
-060D;N # ARABIC DATE SEPARATOR
-060E;N # ARABIC POETIC VERSE SIGN
-060F;N # ARABIC SIGN MISRA
-0610;N # ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM
-0611;N # ARABIC SIGN ALAYHE ASSALLAM
-0612;N # ARABIC SIGN RAHMATULLAH ALAYHE
-0613;N # ARABIC SIGN RADI ALLAHOU ANHU
-0614;N # ARABIC SIGN TAKHALLUS
-0615;N # ARABIC SMALL HIGH TAH
-061B;N # ARABIC SEMICOLON
-061E;N # ARABIC TRIPLE DOT PUNCTUATION MARK
-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
-0656;N # ARABIC SUBSCRIPT ALEF
-0657;N # ARABIC INVERTED DAMMA
-0658;N # ARABIC MARK NOON GHUNNA
-0659;N # ARABIC ZWARAKAY
-065A;N # ARABIC VOWEL SIGN SMALL V ABOVE
-065B;N # ARABIC VOWEL SIGN INVERTED SMALL V ABOVE
-065C;N # ARABIC VOWEL SIGN DOT BELOW
-065D;N # ARABIC REVERSED DAMMA
-065E;N # ARABIC FATHA WITH TWO DOTS
-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
-066E;N # ARABIC LETTER DOTLESS BEH
-066F;N # ARABIC LETTER DOTLESS QAF
-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
-06EE;N # ARABIC LETTER DAL WITH INVERTED V
-06EF;N # ARABIC LETTER REH WITH INVERTED V
-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
-06FF;N # ARABIC LETTER HEH WITH INVERTED V
-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
-072D;N # SYRIAC LETTER PERSIAN BHETH
-072E;N # SYRIAC LETTER PERSIAN GHAMAL
-072F;N # SYRIAC LETTER PERSIAN DHALATH
-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
-074D;N # SYRIAC LETTER SOGDIAN ZHAIN
-074E;N # SYRIAC LETTER SOGDIAN KHAPH
-074F;N # SYRIAC LETTER SOGDIAN FE
-0750;N # ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW
-0751;N # ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE
-0752;N # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW
-0753;N # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE
-0754;N # ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE
-0755;N # ARABIC LETTER BEH WITH INVERTED SMALL V BELOW
-0756;N # ARABIC LETTER BEH WITH SMALL V
-0757;N # ARABIC LETTER HAH WITH TWO DOTS ABOVE
-0758;N # ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW
-0759;N # ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH
-075A;N # ARABIC LETTER DAL WITH INVERTED SMALL V BELOW
-075B;N # ARABIC LETTER REH WITH STROKE
-075C;N # ARABIC LETTER SEEN WITH FOUR DOTS ABOVE
-075D;N # ARABIC LETTER AIN WITH TWO DOTS ABOVE
-075E;N # ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE
-075F;N # ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE
-0760;N # ARABIC LETTER FEH WITH TWO DOTS BELOW
-0761;N # ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW
-0762;N # ARABIC LETTER KEHEH WITH DOT ABOVE
-0763;N # ARABIC LETTER KEHEH WITH THREE DOTS ABOVE
-0764;N # ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW
-0765;N # ARABIC LETTER MEEM WITH DOT ABOVE
-0766;N # ARABIC LETTER MEEM WITH DOT BELOW
-0767;N # ARABIC LETTER NOON WITH TWO DOTS BELOW
-0768;N # ARABIC LETTER NOON WITH SMALL TAH
-0769;N # ARABIC LETTER NOON WITH SMALL V
-076A;N # ARABIC LETTER LAM WITH BAR
-076B;N # ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE
-076C;N # ARABIC LETTER REH WITH HAMZA ABOVE
-076D;N # ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE
-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
-07B1;N # THAANA LETTER NAA
-0901;N # DEVANAGARI SIGN CANDRABINDU
-0902;N # DEVANAGARI SIGN ANUSVARA
-0903;N # DEVANAGARI SIGN VISARGA
-0904;N # DEVANAGARI LETTER SHORT A
-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
-097D;N # DEVANAGARI LETTER GLOTTAL STOP
-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
-09BD;N # BENGALI SIGN AVAGRAHA
-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
-09CE;N # BENGALI LETTER KHANDA TA
-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
-0A01;N # GURMUKHI SIGN ADAK BINDI
-0A02;N # GURMUKHI SIGN BINDI
-0A03;N # GURMUKHI SIGN VISARGA
-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
-0A8C;N # GUJARATI LETTER VOCALIC L
-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
-0AE1;N # GUJARATI LETTER VOCALIC LL
-0AE2;N # GUJARATI VOWEL SIGN VOCALIC L
-0AE3;N # GUJARATI VOWEL SIGN VOCALIC LL
-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
-0AF1;N # GUJARATI RUPEE SIGN
-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
-0B35;N # ORIYA LETTER VA
-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
-0B71;N # ORIYA LETTER WA
-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
-0BB6;N # TAMIL LETTER SHA
-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
-0BE6;N # TAMIL DIGIT ZERO
-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
-0BF3;N # TAMIL DAY SIGN
-0BF4;N # TAMIL MONTH SIGN
-0BF5;N # TAMIL YEAR SIGN
-0BF6;N # TAMIL DEBIT SIGN
-0BF7;N # TAMIL CREDIT SIGN
-0BF8;N # TAMIL AS ABOVE SIGN
-0BF9;N # TAMIL RUPEE SIGN
-0BFA;N # TAMIL NUMBER SIGN
-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
-0CBC;N # KANNADA SIGN NUKTA
-0CBD;N # KANNADA SIGN AVAGRAHA
-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
-0FD0;N # TIBETAN MARK BSKA- SHOG GI MGO RGYAN
-0FD1;N # TIBETAN MARK MNYAM YIG GI MGO RGYAN
-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
-10F7;N # GEORGIAN LETTER YN
-10F8;N # GEORGIAN LETTER ELIFI
-10F9;N # GEORGIAN LETTER TURNED GAN
-10FA;N # GEORGIAN LETTER AIN
-10FB;N # GEORGIAN PARAGRAPH SEPARATOR
-10FC;N # MODIFIER LETTER GEORGIAN NAR
-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
-1207;N # ETHIOPIC SYLLABLE HOA
-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
-1247;N # ETHIOPIC SYLLABLE QOA
-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
-1287;N # ETHIOPIC SYLLABLE XOA
-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
-12AF;N # ETHIOPIC SYLLABLE KOA
-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
-12CF;N # ETHIOPIC SYLLABLE WOA
-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
-12EF;N # ETHIOPIC SYLLABLE YOA
-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
-130F;N # ETHIOPIC SYLLABLE GOA
-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
-131F;N # ETHIOPIC SYLLABLE GGWAA
-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
-1347;N # ETHIOPIC SYLLABLE TZOA
-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
-135F;N # ETHIOPIC COMBINING GEMINATION MARK
-1360;N # ETHIOPIC SECTION MARK
-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
-1380;N # ETHIOPIC SYLLABLE SEBATBEIT MWA
-1381;N # ETHIOPIC SYLLABLE MWI
-1382;N # ETHIOPIC SYLLABLE MWEE
-1383;N # ETHIOPIC SYLLABLE MWE
-1384;N # ETHIOPIC SYLLABLE SEBATBEIT BWA
-1385;N # ETHIOPIC SYLLABLE BWI
-1386;N # ETHIOPIC SYLLABLE BWEE
-1387;N # ETHIOPIC SYLLABLE BWE
-1388;N # ETHIOPIC SYLLABLE SEBATBEIT FWA
-1389;N # ETHIOPIC SYLLABLE FWI
-138A;N # ETHIOPIC SYLLABLE FWEE
-138B;N # ETHIOPIC SYLLABLE FWE
-138C;N # ETHIOPIC SYLLABLE SEBATBEIT PWA
-138D;N # ETHIOPIC SYLLABLE PWI
-138E;N # ETHIOPIC SYLLABLE PWEE
-138F;N # ETHIOPIC SYLLABLE PWE
-1390;N # ETHIOPIC TONAL MARK YIZET
-1391;N # ETHIOPIC TONAL MARK DERET
-1392;N # ETHIOPIC TONAL MARK RIKRIK
-1393;N # ETHIOPIC TONAL MARK SHORT RIKRIK
-1394;N # ETHIOPIC TONAL MARK DIFAT
-1395;N # ETHIOPIC TONAL MARK KENAT
-1396;N # ETHIOPIC TONAL MARK CHIRET
-1397;N # ETHIOPIC TONAL MARK HIDET
-1398;N # ETHIOPIC TONAL MARK DERET-HIDET
-1399;N # ETHIOPIC TONAL MARK KURT
-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
-1700;N # TAGALOG LETTER A
-1701;N # TAGALOG LETTER I
-1702;N # TAGALOG LETTER U
-1703;N # TAGALOG LETTER KA
-1704;N # TAGALOG LETTER GA
-1705;N # TAGALOG LETTER NGA
-1706;N # TAGALOG LETTER TA
-1707;N # TAGALOG LETTER DA
-1708;N # TAGALOG LETTER NA
-1709;N # TAGALOG LETTER PA
-170A;N # TAGALOG LETTER BA
-170B;N # TAGALOG LETTER MA
-170C;N # TAGALOG LETTER YA
-170E;N # TAGALOG LETTER LA
-170F;N # TAGALOG LETTER WA
-1710;N # TAGALOG LETTER SA
-1711;N # TAGALOG LETTER HA
-1712;N # TAGALOG VOWEL SIGN I
-1713;N # TAGALOG VOWEL SIGN U
-1714;N # TAGALOG SIGN VIRAMA
-1720;N # HANUNOO LETTER A
-1721;N # HANUNOO LETTER I
-1722;N # HANUNOO LETTER U
-1723;N # HANUNOO LETTER KA
-1724;N # HANUNOO LETTER GA
-1725;N # HANUNOO LETTER NGA
-1726;N # HANUNOO LETTER TA
-1727;N # HANUNOO LETTER DA
-1728;N # HANUNOO LETTER NA
-1729;N # HANUNOO LETTER PA
-172A;N # HANUNOO LETTER BA
-172B;N # HANUNOO LETTER MA
-172C;N # HANUNOO LETTER YA
-172D;N # HANUNOO LETTER RA
-172E;N # HANUNOO LETTER LA
-172F;N # HANUNOO LETTER WA
-1730;N # HANUNOO LETTER SA
-1731;N # HANUNOO LETTER HA
-1732;N # HANUNOO VOWEL SIGN I
-1733;N # HANUNOO VOWEL SIGN U
-1734;N # HANUNOO SIGN PAMUDPOD
-1735;N # PHILIPPINE SINGLE PUNCTUATION
-1736;N # PHILIPPINE DOUBLE PUNCTUATION
-1740;N # BUHID LETTER A
-1741;N # BUHID LETTER I
-1742;N # BUHID LETTER U
-1743;N # BUHID LETTER KA
-1744;N # BUHID LETTER GA
-1745;N # BUHID LETTER NGA
-1746;N # BUHID LETTER TA
-1747;N # BUHID LETTER DA
-1748;N # BUHID LETTER NA
-1749;N # BUHID LETTER PA
-174A;N # BUHID LETTER BA
-174B;N # BUHID LETTER MA
-174C;N # BUHID LETTER YA
-174D;N # BUHID LETTER RA
-174E;N # BUHID LETTER LA
-174F;N # BUHID LETTER WA
-1750;N # BUHID LETTER SA
-1751;N # BUHID LETTER HA
-1752;N # BUHID VOWEL SIGN I
-1753;N # BUHID VOWEL SIGN U
-1760;N # TAGBANWA LETTER A
-1761;N # TAGBANWA LETTER I
-1762;N # TAGBANWA LETTER U
-1763;N # TAGBANWA LETTER KA
-1764;N # TAGBANWA LETTER GA
-1765;N # TAGBANWA LETTER NGA
-1766;N # TAGBANWA LETTER TA
-1767;N # TAGBANWA LETTER DA
-1768;N # TAGBANWA LETTER NA
-1769;N # TAGBANWA LETTER PA
-176A;N # TAGBANWA LETTER BA
-176B;N # TAGBANWA LETTER MA
-176C;N # TAGBANWA LETTER YA
-176E;N # TAGBANWA LETTER LA
-176F;N # TAGBANWA LETTER WA
-1770;N # TAGBANWA LETTER SA
-1772;N # TAGBANWA VOWEL SIGN I
-1773;N # TAGBANWA VOWEL SIGN U
-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
-17DD;N # KHMER SIGN ATTHACAN
-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
-17F0;N # KHMER SYMBOL LEK ATTAK SON
-17F1;N # KHMER SYMBOL LEK ATTAK MUOY
-17F2;N # KHMER SYMBOL LEK ATTAK PII
-17F3;N # KHMER SYMBOL LEK ATTAK BEI
-17F4;N # KHMER SYMBOL LEK ATTAK BUON
-17F5;N # KHMER SYMBOL LEK ATTAK PRAM
-17F6;N # KHMER SYMBOL LEK ATTAK PRAM-MUOY
-17F7;N # KHMER SYMBOL LEK ATTAK PRAM-PII
-17F8;N # KHMER SYMBOL LEK ATTAK PRAM-BEI
-17F9;N # KHMER SYMBOL LEK ATTAK PRAM-BUON
-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
-1900;N # LIMBU VOWEL-CARRIER LETTER
-1901;N # LIMBU LETTER KA
-1902;N # LIMBU LETTER KHA
-1903;N # LIMBU LETTER GA
-1904;N # LIMBU LETTER GHA
-1905;N # LIMBU LETTER NGA
-1906;N # LIMBU LETTER CA
-1907;N # LIMBU LETTER CHA
-1908;N # LIMBU LETTER JA
-1909;N # LIMBU LETTER JHA
-190A;N # LIMBU LETTER YAN
-190B;N # LIMBU LETTER TA
-190C;N # LIMBU LETTER THA
-190D;N # LIMBU LETTER DA
-190E;N # LIMBU LETTER DHA
-190F;N # LIMBU LETTER NA
-1910;N # LIMBU LETTER PA
-1911;N # LIMBU LETTER PHA
-1912;N # LIMBU LETTER BA
-1913;N # LIMBU LETTER BHA
-1914;N # LIMBU LETTER MA
-1915;N # LIMBU LETTER YA
-1916;N # LIMBU LETTER RA
-1917;N # LIMBU LETTER LA
-1918;N # LIMBU LETTER WA
-1919;N # LIMBU LETTER SHA
-191A;N # LIMBU LETTER SSA
-191B;N # LIMBU LETTER SA
-191C;N # LIMBU LETTER HA
-1920;N # LIMBU VOWEL SIGN A
-1921;N # LIMBU VOWEL SIGN I
-1922;N # LIMBU VOWEL SIGN U
-1923;N # LIMBU VOWEL SIGN EE
-1924;N # LIMBU VOWEL SIGN AI
-1925;N # LIMBU VOWEL SIGN OO
-1926;N # LIMBU VOWEL SIGN AU
-1927;N # LIMBU VOWEL SIGN E
-1928;N # LIMBU VOWEL SIGN O
-1929;N # LIMBU SUBJOINED LETTER YA
-192A;N # LIMBU SUBJOINED LETTER RA
-192B;N # LIMBU SUBJOINED LETTER WA
-1930;N # LIMBU SMALL LETTER KA
-1931;N # LIMBU SMALL LETTER NGA
-1932;N # LIMBU SMALL LETTER ANUSVARA
-1933;N # LIMBU SMALL LETTER TA
-1934;N # LIMBU SMALL LETTER NA
-1935;N # LIMBU SMALL LETTER PA
-1936;N # LIMBU SMALL LETTER MA
-1937;N # LIMBU SMALL LETTER RA
-1938;N # LIMBU SMALL LETTER LA
-1939;N # LIMBU SIGN MUKPHRENG
-193A;N # LIMBU SIGN KEMPHRENG
-193B;N # LIMBU SIGN SA-I
-1940;N # LIMBU SIGN LOO
-1944;N # LIMBU EXCLAMATION MARK
-1945;N # LIMBU QUESTION MARK
-1946;N # LIMBU DIGIT ZERO
-1947;N # LIMBU DIGIT ONE
-1948;N # LIMBU DIGIT TWO
-1949;N # LIMBU DIGIT THREE
-194A;N # LIMBU DIGIT FOUR
-194B;N # LIMBU DIGIT FIVE
-194C;N # LIMBU DIGIT SIX
-194D;N # LIMBU DIGIT SEVEN
-194E;N # LIMBU DIGIT EIGHT
-194F;N # LIMBU DIGIT NINE
-1950;N # TAI LE LETTER KA
-1951;N # TAI LE LETTER XA
-1952;N # TAI LE LETTER NGA
-1953;N # TAI LE LETTER TSA
-1954;N # TAI LE LETTER SA
-1955;N # TAI LE LETTER YA
-1956;N # TAI LE LETTER TA
-1957;N # TAI LE LETTER THA
-1958;N # TAI LE LETTER LA
-1959;N # TAI LE LETTER PA
-195A;N # TAI LE LETTER PHA
-195B;N # TAI LE LETTER MA
-195C;N # TAI LE LETTER FA
-195D;N # TAI LE LETTER VA
-195E;N # TAI LE LETTER HA
-195F;N # TAI LE LETTER QA
-1960;N # TAI LE LETTER KHA
-1961;N # TAI LE LETTER TSHA
-1962;N # TAI LE LETTER NA
-1963;N # TAI LE LETTER A
-1964;N # TAI LE LETTER I
-1965;N # TAI LE LETTER EE
-1966;N # TAI LE LETTER EH
-1967;N # TAI LE LETTER U
-1968;N # TAI LE LETTER OO
-1969;N # TAI LE LETTER O
-196A;N # TAI LE LETTER UE
-196B;N # TAI LE LETTER E
-196C;N # TAI LE LETTER AUE
-196D;N # TAI LE LETTER AI
-1970;N # TAI LE LETTER TONE-2
-1971;N # TAI LE LETTER TONE-3
-1972;N # TAI LE LETTER TONE-4
-1973;N # TAI LE LETTER TONE-5
-1974;N # TAI LE LETTER TONE-6
-1980;N # NEW TAI LUE LETTER HIGH QA
-1981;N # NEW TAI LUE LETTER LOW QA
-1982;N # NEW TAI LUE LETTER HIGH KA
-1983;N # NEW TAI LUE LETTER HIGH XA
-1984;N # NEW TAI LUE LETTER HIGH NGA
-1985;N # NEW TAI LUE LETTER LOW KA
-1986;N # NEW TAI LUE LETTER LOW XA
-1987;N # NEW TAI LUE LETTER LOW NGA
-1988;N # NEW TAI LUE LETTER HIGH TSA
-1989;N # NEW TAI LUE LETTER HIGH SA
-198A;N # NEW TAI LUE LETTER HIGH YA
-198B;N # NEW TAI LUE LETTER LOW TSA
-198C;N # NEW TAI LUE LETTER LOW SA
-198D;N # NEW TAI LUE LETTER LOW YA
-198E;N # NEW TAI LUE LETTER HIGH TA
-198F;N # NEW TAI LUE LETTER HIGH THA
-1990;N # NEW TAI LUE LETTER HIGH NA
-1991;N # NEW TAI LUE LETTER LOW TA
-1992;N # NEW TAI LUE LETTER LOW THA
-1993;N # NEW TAI LUE LETTER LOW NA
-1994;N # NEW TAI LUE LETTER HIGH PA
-1995;N # NEW TAI LUE LETTER HIGH PHA
-1996;N # NEW TAI LUE LETTER HIGH MA
-1997;N # NEW TAI LUE LETTER LOW PA
-1998;N # NEW TAI LUE LETTER LOW PHA
-1999;N # NEW TAI LUE LETTER LOW MA
-199A;N # NEW TAI LUE LETTER HIGH FA
-199B;N # NEW TAI LUE LETTER HIGH VA
-199C;N # NEW TAI LUE LETTER HIGH LA
-199D;N # NEW TAI LUE LETTER LOW FA
-199E;N # NEW TAI LUE LETTER LOW VA
-199F;N # NEW TAI LUE LETTER LOW LA
-19A0;N # NEW TAI LUE LETTER HIGH HA
-19A1;N # NEW TAI LUE LETTER HIGH DA
-19A2;N # NEW TAI LUE LETTER HIGH BA
-19A3;N # NEW TAI LUE LETTER LOW HA
-19A4;N # NEW TAI LUE LETTER LOW DA
-19A5;N # NEW TAI LUE LETTER LOW BA
-19A6;N # NEW TAI LUE LETTER HIGH KVA
-19A7;N # NEW TAI LUE LETTER HIGH XVA
-19A8;N # NEW TAI LUE LETTER LOW KVA
-19A9;N # NEW TAI LUE LETTER LOW XVA
-19B0;N # NEW TAI LUE VOWEL SIGN VOWEL SHORTENER
-19B1;N # NEW TAI LUE VOWEL SIGN AA
-19B2;N # NEW TAI LUE VOWEL SIGN II
-19B3;N # NEW TAI LUE VOWEL SIGN U
-19B4;N # NEW TAI LUE VOWEL SIGN UU
-19B5;N # NEW TAI LUE VOWEL SIGN E
-19B6;N # NEW TAI LUE VOWEL SIGN AE
-19B7;N # NEW TAI LUE VOWEL SIGN O
-19B8;N # NEW TAI LUE VOWEL SIGN OA
-19B9;N # NEW TAI LUE VOWEL SIGN UE
-19BA;N # NEW TAI LUE VOWEL SIGN AY
-19BB;N # NEW TAI LUE VOWEL SIGN AAY
-19BC;N # NEW TAI LUE VOWEL SIGN UY
-19BD;N # NEW TAI LUE VOWEL SIGN OY
-19BE;N # NEW TAI LUE VOWEL SIGN OAY
-19BF;N # NEW TAI LUE VOWEL SIGN UEY
-19C0;N # NEW TAI LUE VOWEL SIGN IY
-19C1;N # NEW TAI LUE LETTER FINAL V
-19C2;N # NEW TAI LUE LETTER FINAL NG
-19C3;N # NEW TAI LUE LETTER FINAL N
-19C4;N # NEW TAI LUE LETTER FINAL M
-19C5;N # NEW TAI LUE LETTER FINAL K
-19C6;N # NEW TAI LUE LETTER FINAL D
-19C7;N # NEW TAI LUE LETTER FINAL B
-19C8;N # NEW TAI LUE TONE MARK-1
-19C9;N # NEW TAI LUE TONE MARK-2
-19D0;N # NEW TAI LUE DIGIT ZERO
-19D1;N # NEW TAI LUE DIGIT ONE
-19D2;N # NEW TAI LUE DIGIT TWO
-19D3;N # NEW TAI LUE DIGIT THREE
-19D4;N # NEW TAI LUE DIGIT FOUR
-19D5;N # NEW TAI LUE DIGIT FIVE
-19D6;N # NEW TAI LUE DIGIT SIX
-19D7;N # NEW TAI LUE DIGIT SEVEN
-19D8;N # NEW TAI LUE DIGIT EIGHT
-19D9;N # NEW TAI LUE DIGIT NINE
-19DE;N # NEW TAI LUE SIGN LAE
-19DF;N # NEW TAI LUE SIGN LAEV
-19E0;N # KHMER SYMBOL PATHAMASAT
-19E1;N # KHMER SYMBOL MUOY KOET
-19E2;N # KHMER SYMBOL PII KOET
-19E3;N # KHMER SYMBOL BEI KOET
-19E4;N # KHMER SYMBOL BUON KOET
-19E5;N # KHMER SYMBOL PRAM KOET
-19E6;N # KHMER SYMBOL PRAM-MUOY KOET
-19E7;N # KHMER SYMBOL PRAM-PII KOET
-19E8;N # KHMER SYMBOL PRAM-BEI KOET
-19E9;N # KHMER SYMBOL PRAM-BUON KOET
-19EA;N # KHMER SYMBOL DAP KOET
-19EB;N # KHMER SYMBOL DAP-MUOY KOET
-19EC;N # KHMER SYMBOL DAP-PII KOET
-19ED;N # KHMER SYMBOL DAP-BEI KOET
-19EE;N # KHMER SYMBOL DAP-BUON KOET
-19EF;N # KHMER SYMBOL DAP-PRAM KOET
-19F0;N # KHMER SYMBOL TUTEYASAT
-19F1;N # KHMER SYMBOL MUOY ROC
-19F2;N # KHMER SYMBOL PII ROC
-19F3;N # KHMER SYMBOL BEI ROC
-19F4;N # KHMER SYMBOL BUON ROC
-19F5;N # KHMER SYMBOL PRAM ROC
-19F6;N # KHMER SYMBOL PRAM-MUOY ROC
-19F7;N # KHMER SYMBOL PRAM-PII ROC
-19F8;N # KHMER SYMBOL PRAM-BEI ROC
-19F9;N # KHMER SYMBOL PRAM-BUON ROC
-19FA;N # KHMER SYMBOL DAP ROC
-19FB;N # KHMER SYMBOL DAP-MUOY ROC
-19FC;N # KHMER SYMBOL DAP-PII ROC
-19FD;N # KHMER SYMBOL DAP-BEI ROC
-19FE;N # KHMER SYMBOL DAP-BUON ROC
-19FF;N # KHMER SYMBOL DAP-PRAM ROC
-1A00;N # BUGINESE LETTER KA
-1A01;N # BUGINESE LETTER GA
-1A02;N # BUGINESE LETTER NGA
-1A03;N # BUGINESE LETTER NGKA
-1A04;N # BUGINESE LETTER PA
-1A05;N # BUGINESE LETTER BA
-1A06;N # BUGINESE LETTER MA
-1A07;N # BUGINESE LETTER MPA
-1A08;N # BUGINESE LETTER TA
-1A09;N # BUGINESE LETTER DA
-1A0A;N # BUGINESE LETTER NA
-1A0B;N # BUGINESE LETTER NRA
-1A0C;N # BUGINESE LETTER CA
-1A0D;N # BUGINESE LETTER JA
-1A0E;N # BUGINESE LETTER NYA
-1A0F;N # BUGINESE LETTER NYCA
-1A10;N # BUGINESE LETTER YA
-1A11;N # BUGINESE LETTER RA
-1A12;N # BUGINESE LETTER LA
-1A13;N # BUGINESE LETTER VA
-1A14;N # BUGINESE LETTER SA
-1A15;N # BUGINESE LETTER A
-1A16;N # BUGINESE LETTER HA
-1A17;N # BUGINESE VOWEL SIGN I
-1A18;N # BUGINESE VOWEL SIGN U
-1A19;N # BUGINESE VOWEL SIGN E
-1A1A;N # BUGINESE VOWEL SIGN O
-1A1B;N # BUGINESE VOWEL SIGN AE
-1A1E;N # BUGINESE PALLAWA
-1A1F;N # BUGINESE END OF SECTION
-1D00;N # LATIN LETTER SMALL CAPITAL A
-1D01;N # LATIN LETTER SMALL CAPITAL AE
-1D02;N # LATIN SMALL LETTER TURNED AE
-1D03;N # LATIN LETTER SMALL CAPITAL BARRED B
-1D04;N # LATIN LETTER SMALL CAPITAL C
-1D05;N # LATIN LETTER SMALL CAPITAL D
-1D06;N # LATIN LETTER SMALL CAPITAL ETH
-1D07;N # LATIN LETTER SMALL CAPITAL E
-1D08;N # LATIN SMALL LETTER TURNED OPEN E
-1D09;N # LATIN SMALL LETTER TURNED I
-1D0A;N # LATIN LETTER SMALL CAPITAL J
-1D0B;N # LATIN LETTER SMALL CAPITAL K
-1D0C;N # LATIN LETTER SMALL CAPITAL L WITH STROKE
-1D0D;N # LATIN LETTER SMALL CAPITAL M
-1D0E;N # LATIN LETTER SMALL CAPITAL REVERSED N
-1D0F;N # LATIN LETTER SMALL CAPITAL O
-1D10;N # LATIN LETTER SMALL CAPITAL OPEN O
-1D11;N # LATIN SMALL LETTER SIDEWAYS O
-1D12;N # LATIN SMALL LETTER SIDEWAYS OPEN O
-1D13;N # LATIN SMALL LETTER SIDEWAYS O WITH STROKE
-1D14;N # LATIN SMALL LETTER TURNED OE
-1D15;N # LATIN LETTER SMALL CAPITAL OU
-1D16;N # LATIN SMALL LETTER TOP HALF O
-1D17;N # LATIN SMALL LETTER BOTTOM HALF O
-1D18;N # LATIN LETTER SMALL CAPITAL P
-1D19;N # LATIN LETTER SMALL CAPITAL REVERSED R
-1D1A;N # LATIN LETTER SMALL CAPITAL TURNED R
-1D1B;N # LATIN LETTER SMALL CAPITAL T
-1D1C;N # LATIN LETTER SMALL CAPITAL U
-1D1D;N # LATIN SMALL LETTER SIDEWAYS U
-1D1E;N # LATIN SMALL LETTER SIDEWAYS DIAERESIZED U
-1D1F;N # LATIN SMALL LETTER SIDEWAYS TURNED M
-1D20;N # LATIN LETTER SMALL CAPITAL V
-1D21;N # LATIN LETTER SMALL CAPITAL W
-1D22;N # LATIN LETTER SMALL CAPITAL Z
-1D23;N # LATIN LETTER SMALL CAPITAL EZH
-1D24;N # LATIN LETTER VOICED LARYNGEAL SPIRANT
-1D25;N # LATIN LETTER AIN
-1D26;N # GREEK LETTER SMALL CAPITAL GAMMA
-1D27;N # GREEK LETTER SMALL CAPITAL LAMDA
-1D28;N # GREEK LETTER SMALL CAPITAL PI
-1D29;N # GREEK LETTER SMALL CAPITAL RHO
-1D2A;N # GREEK LETTER SMALL CAPITAL PSI
-1D2B;N # CYRILLIC LETTER SMALL CAPITAL EL
-1D2C;N # MODIFIER LETTER CAPITAL A
-1D2D;N # MODIFIER LETTER CAPITAL AE
-1D2E;N # MODIFIER LETTER CAPITAL B
-1D2F;N # MODIFIER LETTER CAPITAL BARRED B
-1D30;N # MODIFIER LETTER CAPITAL D
-1D31;N # MODIFIER LETTER CAPITAL E
-1D32;N # MODIFIER LETTER CAPITAL REVERSED E
-1D33;N # MODIFIER LETTER CAPITAL G
-1D34;N # MODIFIER LETTER CAPITAL H
-1D35;N # MODIFIER LETTER CAPITAL I
-1D36;N # MODIFIER LETTER CAPITAL J
-1D37;N # MODIFIER LETTER CAPITAL K
-1D38;N # MODIFIER LETTER CAPITAL L
-1D39;N # MODIFIER LETTER CAPITAL M
-1D3A;N # MODIFIER LETTER CAPITAL N
-1D3B;N # MODIFIER LETTER CAPITAL REVERSED N
-1D3C;N # MODIFIER LETTER CAPITAL O
-1D3D;N # MODIFIER LETTER CAPITAL OU
-1D3E;N # MODIFIER LETTER CAPITAL P
-1D3F;N # MODIFIER LETTER CAPITAL R
-1D40;N # MODIFIER LETTER CAPITAL T
-1D41;N # MODIFIER LETTER CAPITAL U
-1D42;N # MODIFIER LETTER CAPITAL W
-1D43;N # MODIFIER LETTER SMALL A
-1D44;N # MODIFIER LETTER SMALL TURNED A
-1D45;N # MODIFIER LETTER SMALL ALPHA
-1D46;N # MODIFIER LETTER SMALL TURNED AE
-1D47;N # MODIFIER LETTER SMALL B
-1D48;N # MODIFIER LETTER SMALL D
-1D49;N # MODIFIER LETTER SMALL E
-1D4A;N # MODIFIER LETTER SMALL SCHWA
-1D4B;N # MODIFIER LETTER SMALL OPEN E
-1D4C;N # MODIFIER LETTER SMALL TURNED OPEN E
-1D4D;N # MODIFIER LETTER SMALL G
-1D4E;N # MODIFIER LETTER SMALL TURNED I
-1D4F;N # MODIFIER LETTER SMALL K
-1D50;N # MODIFIER LETTER SMALL M
-1D51;N # MODIFIER LETTER SMALL ENG
-1D52;N # MODIFIER LETTER SMALL O
-1D53;N # MODIFIER LETTER SMALL OPEN O
-1D54;N # MODIFIER LETTER SMALL TOP HALF O
-1D55;N # MODIFIER LETTER SMALL BOTTOM HALF O
-1D56;N # MODIFIER LETTER SMALL P
-1D57;N # MODIFIER LETTER SMALL T
-1D58;N # MODIFIER LETTER SMALL U
-1D59;N # MODIFIER LETTER SMALL SIDEWAYS U
-1D5A;N # MODIFIER LETTER SMALL TURNED M
-1D5B;N # MODIFIER LETTER SMALL V
-1D5C;N # MODIFIER LETTER SMALL AIN
-1D5D;N # MODIFIER LETTER SMALL BETA
-1D5E;N # MODIFIER LETTER SMALL GREEK GAMMA
-1D5F;N # MODIFIER LETTER SMALL DELTA
-1D60;N # MODIFIER LETTER SMALL GREEK PHI
-1D61;N # MODIFIER LETTER SMALL CHI
-1D62;N # LATIN SUBSCRIPT SMALL LETTER I
-1D63;N # LATIN SUBSCRIPT SMALL LETTER R
-1D64;N # LATIN SUBSCRIPT SMALL LETTER U
-1D65;N # LATIN SUBSCRIPT SMALL LETTER V
-1D66;N # GREEK SUBSCRIPT SMALL LETTER BETA
-1D67;N # GREEK SUBSCRIPT SMALL LETTER GAMMA
-1D68;N # GREEK SUBSCRIPT SMALL LETTER RHO
-1D69;N # GREEK SUBSCRIPT SMALL LETTER PHI
-1D6A;N # GREEK SUBSCRIPT SMALL LETTER CHI
-1D6B;N # LATIN SMALL LETTER UE
-1D6C;N # LATIN SMALL LETTER B WITH MIDDLE TILDE
-1D6D;N # LATIN SMALL LETTER D WITH MIDDLE TILDE
-1D6E;N # LATIN SMALL LETTER F WITH MIDDLE TILDE
-1D6F;N # LATIN SMALL LETTER M WITH MIDDLE TILDE
-1D70;N # LATIN SMALL LETTER N WITH MIDDLE TILDE
-1D71;N # LATIN SMALL LETTER P WITH MIDDLE TILDE
-1D72;N # LATIN SMALL LETTER R WITH MIDDLE TILDE
-1D73;N # LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE
-1D74;N # LATIN SMALL LETTER S WITH MIDDLE TILDE
-1D75;N # LATIN SMALL LETTER T WITH MIDDLE TILDE
-1D76;N # LATIN SMALL LETTER Z WITH MIDDLE TILDE
-1D77;N # LATIN SMALL LETTER TURNED G
-1D78;N # MODIFIER LETTER CYRILLIC EN
-1D79;N # LATIN SMALL LETTER INSULAR G
-1D7A;N # LATIN SMALL LETTER TH WITH STRIKETHROUGH
-1D7B;N # LATIN SMALL CAPITAL LETTER I WITH STROKE
-1D7C;N # LATIN SMALL LETTER IOTA WITH STROKE
-1D7D;N # LATIN SMALL LETTER P WITH STROKE
-1D7E;N # LATIN SMALL CAPITAL LETTER U WITH STROKE
-1D7F;N # LATIN SMALL LETTER UPSILON WITH STROKE
-1D80;N # LATIN SMALL LETTER B WITH PALATAL HOOK
-1D81;N # LATIN SMALL LETTER D WITH PALATAL HOOK
-1D82;N # LATIN SMALL LETTER F WITH PALATAL HOOK
-1D83;N # LATIN SMALL LETTER G WITH PALATAL HOOK
-1D84;N # LATIN SMALL LETTER K WITH PALATAL HOOK
-1D85;N # LATIN SMALL LETTER L WITH PALATAL HOOK
-1D86;N # LATIN SMALL LETTER M WITH PALATAL HOOK
-1D87;N # LATIN SMALL LETTER N WITH PALATAL HOOK
-1D88;N # LATIN SMALL LETTER P WITH PALATAL HOOK
-1D89;N # LATIN SMALL LETTER R WITH PALATAL HOOK
-1D8A;N # LATIN SMALL LETTER S WITH PALATAL HOOK
-1D8B;N # LATIN SMALL LETTER ESH WITH PALATAL HOOK
-1D8C;N # LATIN SMALL LETTER V WITH PALATAL HOOK
-1D8D;N # LATIN SMALL LETTER X WITH PALATAL HOOK
-1D8E;N # LATIN SMALL LETTER Z WITH PALATAL HOOK
-1D8F;N # LATIN SMALL LETTER A WITH RETROFLEX HOOK
-1D90;N # LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK
-1D91;N # LATIN SMALL LETTER D WITH HOOK AND TAIL
-1D92;N # LATIN SMALL LETTER E WITH RETROFLEX HOOK
-1D93;N # LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK
-1D94;N # LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK
-1D95;N # LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK
-1D96;N # LATIN SMALL LETTER I WITH RETROFLEX HOOK
-1D97;N # LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK
-1D98;N # LATIN SMALL LETTER ESH WITH RETROFLEX HOOK
-1D99;N # LATIN SMALL LETTER U WITH RETROFLEX HOOK
-1D9A;N # LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
-1D9B;N # MODIFIER LETTER SMALL TURNED ALPHA
-1D9C;N # MODIFIER LETTER SMALL C
-1D9D;N # MODIFIER LETTER SMALL C WITH CURL
-1D9E;N # MODIFIER LETTER SMALL ETH
-1D9F;N # MODIFIER LETTER SMALL REVERSED OPEN E
-1DA0;N # MODIFIER LETTER SMALL F
-1DA1;N # MODIFIER LETTER SMALL DOTLESS J WITH STROKE
-1DA2;N # MODIFIER LETTER SMALL SCRIPT G
-1DA3;N # MODIFIER LETTER SMALL TURNED H
-1DA4;N # MODIFIER LETTER SMALL I WITH STROKE
-1DA5;N # MODIFIER LETTER SMALL IOTA
-1DA6;N # MODIFIER LETTER SMALL CAPITAL I
-1DA7;N # MODIFIER LETTER SMALL CAPITAL I WITH STROKE
-1DA8;N # MODIFIER LETTER SMALL J WITH CROSSED-TAIL
-1DA9;N # MODIFIER LETTER SMALL L WITH RETROFLEX HOOK
-1DAA;N # MODIFIER LETTER SMALL L WITH PALATAL HOOK
-1DAB;N # MODIFIER LETTER SMALL CAPITAL L
-1DAC;N # MODIFIER LETTER SMALL M WITH HOOK
-1DAD;N # MODIFIER LETTER SMALL TURNED M WITH LONG LEG
-1DAE;N # MODIFIER LETTER SMALL N WITH LEFT HOOK
-1DAF;N # MODIFIER LETTER SMALL N WITH RETROFLEX HOOK
-1DB0;N # MODIFIER LETTER SMALL CAPITAL N
-1DB1;N # MODIFIER LETTER SMALL BARRED O
-1DB2;N # MODIFIER LETTER SMALL PHI
-1DB3;N # MODIFIER LETTER SMALL S WITH HOOK
-1DB4;N # MODIFIER LETTER SMALL ESH
-1DB5;N # MODIFIER LETTER SMALL T WITH PALATAL HOOK
-1DB6;N # MODIFIER LETTER SMALL U BAR
-1DB7;N # MODIFIER LETTER SMALL UPSILON
-1DB8;N # MODIFIER LETTER SMALL CAPITAL U
-1DB9;N # MODIFIER LETTER SMALL V WITH HOOK
-1DBA;N # MODIFIER LETTER SMALL TURNED V
-1DBB;N # MODIFIER LETTER SMALL Z
-1DBC;N # MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK
-1DBD;N # MODIFIER LETTER SMALL Z WITH CURL
-1DBE;N # MODIFIER LETTER SMALL EZH
-1DBF;N # MODIFIER LETTER SMALL THETA
-1DC0;N # COMBINING DOTTED GRAVE ACCENT
-1DC1;N # COMBINING DOTTED ACUTE ACCENT
-1DC2;N # COMBINING SNAKE BELOW
-1DC3;N # COMBINING SUSPENSION MARK
-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;A # BULLET
-2023;N # TRIANGULAR BULLET
-2024;A # 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;A # 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
-2047;N # DOUBLE QUESTION MARK
-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
-204E;N # LOW ASTERISK
-204F;N # REVERSED SEMICOLON
-2050;N # CLOSE UP
-2051;N # TWO ASTERISKS ALIGNED VERTICALLY
-2052;N # COMMERCIAL MINUS SIGN
-2053;N # SWUNG DASH
-2054;N # INVERTED UNDERTIE
-2055;N # FLOWER PUNCTUATION MARK
-2056;N # THREE DOT PUNCTUATION
-2057;N # QUADRUPLE PRIME
-2058;N # FOUR DOT PUNCTUATION
-2059;N # FIVE DOT PUNCTUATION
-205A;N # TWO DOT PUNCTUATION
-205B;N # FOUR DOT MARK
-205C;N # DOTTED CROSS
-205D;N # TRICOLON
-205E;N # VERTICAL FOUR DOTS
-205F;N # MEDIUM MATHEMATICAL SPACE
-2060;N # WORD JOINER
-2061;N # FUNCTION APPLICATION
-2062;N # INVISIBLE TIMES
-2063;N # INVISIBLE SEPARATOR
-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
-2071;N # SUPERSCRIPT LATIN SMALL LETTER I
-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
-2090;N # LATIN SUBSCRIPT SMALL LETTER A
-2091;N # LATIN SUBSCRIPT SMALL LETTER E
-2092;N # LATIN SUBSCRIPT SMALL LETTER O
-2093;N # LATIN SUBSCRIPT SMALL LETTER X
-2094;N # LATIN SUBSCRIPT SMALL LETTER SCHWA
-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
-20B0;N # GERMAN PENNY SIGN
-20B1;N # PESO SIGN
-20B2;N # GUARANI SIGN
-20B3;N # AUSTRAL SIGN
-20B4;N # HRYVNIA SIGN
-20B5;N # CEDI 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
-20E4;N # COMBINING ENCLOSING UPWARD POINTING TRIANGLE
-20E5;N # COMBINING REVERSE SOLIDUS OVERLAY
-20E6;N # COMBINING DOUBLE VERTICAL STROKE OVERLAY
-20E7;N # COMBINING ANNUITY SYMBOL
-20E8;N # COMBINING TRIPLE UNDERDOT
-20E9;N # COMBINING WIDE BRIDGE ABOVE
-20EA;N # COMBINING LEFTWARDS ARROW OVERLAY
-20EB;N # COMBINING LONG DOUBLE SOLIDUS OVERLAY
-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;A # 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
-213B;N # FACSIMILE SIGN
-213C;N # DOUBLE-STRUCK SMALL PI
-213D;N # DOUBLE-STRUCK SMALL GAMMA
-213E;N # DOUBLE-STRUCK CAPITAL GAMMA
-213F;N # DOUBLE-STRUCK CAPITAL PI
-2140;N # DOUBLE-STRUCK N-ARY SUMMATION
-2141;N # TURNED SANS-SERIF CAPITAL G
-2142;N # TURNED SANS-SERIF CAPITAL L
-2143;N # REVERSED SANS-SERIF CAPITAL L
-2144;N # TURNED SANS-SERIF CAPITAL Y
-2145;N # DOUBLE-STRUCK ITALIC CAPITAL D
-2146;N # DOUBLE-STRUCK ITALIC SMALL D
-2147;N # DOUBLE-STRUCK ITALIC SMALL E
-2148;N # DOUBLE-STRUCK ITALIC SMALL I
-2149;N # DOUBLE-STRUCK ITALIC SMALL J
-214A;N # PROPERTY LINE
-214B;N # TURNED AMPERSAND
-214C;N # PER SIGN
-2153;A # VULGAR FRACTION ONE THIRD
-2154;A # VULGAR FRACTION TWO THIRDS
-2155;N # 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;A # VULGAR FRACTION THREE EIGHTHS
-215D;A # 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;A # NORTH WEST ARROW TO LONG BAR
-21B9;A # 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;A # 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
-21F4;N # RIGHT ARROW WITH SMALL CIRCLE
-21F5;N # DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW
-21F6;N # THREE RIGHTWARDS ARROWS
-21F7;N # LEFTWARDS ARROW WITH VERTICAL STROKE
-21F8;N # RIGHTWARDS ARROW WITH VERTICAL STROKE
-21F9;N # LEFT RIGHT ARROW WITH VERTICAL STROKE
-21FA;N # LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE
-21FB;N # RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE
-21FC;N # LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE
-21FD;N # LEFTWARDS OPEN-HEADED ARROW
-21FE;N # RIGHTWARDS OPEN-HEADED ARROW
-21FF;N # LEFT RIGHT OPEN-HEADED 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
-22F2;N # ELEMENT OF WITH LONG HORIZONTAL STROKE
-22F3;N # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22F4;N # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22F5;N # ELEMENT OF WITH DOT ABOVE
-22F6;N # ELEMENT OF WITH OVERBAR
-22F7;N # SMALL ELEMENT OF WITH OVERBAR
-22F8;N # ELEMENT OF WITH UNDERBAR
-22F9;N # ELEMENT OF WITH TWO HORIZONTAL STROKES
-22FA;N # CONTAINS WITH LONG HORIZONTAL STROKE
-22FB;N # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22FC;N # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22FD;N # CONTAINS WITH OVERBAR
-22FE;N # SMALL CONTAINS WITH OVERBAR
-22FF;N # Z NOTATION BAG MEMBERSHIP
-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;W # LEFT-POINTING ANGLE BRACKET
-232A;W # 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
-237C;N # RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
-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
-239B;N # LEFT PARENTHESIS UPPER HOOK
-239C;N # LEFT PARENTHESIS EXTENSION
-239D;N # LEFT PARENTHESIS LOWER HOOK
-239E;N # RIGHT PARENTHESIS UPPER HOOK
-239F;N # RIGHT PARENTHESIS EXTENSION
-23A0;N # RIGHT PARENTHESIS LOWER HOOK
-23A1;N # LEFT SQUARE BRACKET UPPER CORNER
-23A2;N # LEFT SQUARE BRACKET EXTENSION
-23A3;N # LEFT SQUARE BRACKET LOWER CORNER
-23A4;N # RIGHT SQUARE BRACKET UPPER CORNER
-23A5;N # RIGHT SQUARE BRACKET EXTENSION
-23A6;N # RIGHT SQUARE BRACKET LOWER CORNER
-23A7;N # LEFT CURLY BRACKET UPPER HOOK
-23A8;N # LEFT CURLY BRACKET MIDDLE PIECE
-23A9;N # LEFT CURLY BRACKET LOWER HOOK
-23AA;N # CURLY BRACKET EXTENSION
-23AB;N # RIGHT CURLY BRACKET UPPER HOOK
-23AC;N # RIGHT CURLY BRACKET MIDDLE PIECE
-23AD;N # RIGHT CURLY BRACKET LOWER HOOK
-23AE;N # INTEGRAL EXTENSION
-23AF;N # HORIZONTAL LINE EXTENSION
-23B0;N # UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION
-23B1;N # UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION
-23B2;N # SUMMATION TOP
-23B3;N # SUMMATION BOTTOM
-23B4;N # TOP SQUARE BRACKET
-23B5;N # BOTTOM SQUARE BRACKET
-23B6;N # BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET
-23B7;N # RADICAL SYMBOL BOTTOM
-23B8;N # LEFT VERTICAL BOX LINE
-23B9;N # RIGHT VERTICAL BOX LINE
-23BA;N # HORIZONTAL SCAN LINE-1
-23BB;N # HORIZONTAL SCAN LINE-3
-23BC;N # HORIZONTAL SCAN LINE-7
-23BD;N # HORIZONTAL SCAN LINE-9
-23BE;N # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT
-23BF;N # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT
-23C0;N # DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE
-23C1;N # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE
-23C2;N # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE
-23C3;N # DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE
-23C4;N # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE
-23C5;N # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE
-23C6;N # DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE
-23C7;N # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE
-23C8;N # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE
-23C9;N # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL
-23CA;N # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL
-23CB;N # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT
-23CC;N # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT
-23CD;N # SQUARE FOOT
-23CE;N # RETURN SYMBOL
-23CF;N # EJECT SYMBOL
-23D0;N # VERTICAL LINE EXTENSION
-23D1;N # METRICAL BREVE
-23D2;N # METRICAL LONG OVER SHORT
-23D3;N # METRICAL SHORT OVER LONG
-23D4;N # METRICAL LONG OVER TWO SHORTS
-23D5;N # METRICAL TWO SHORTS OVER LONG
-23D6;N # METRICAL TWO SHORTS JOINED
-23D7;N # METRICAL TRISEME
-23D8;N # METRICAL TETRASEME
-23D9;N # METRICAL PENTASEME
-23DA;N # EARTH GROUND
-23DB;N # FUSE
-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;A # CIRCLED LATIN CAPITAL LETTER K
-24C1;A # CIRCLED LATIN CAPITAL LETTER L
-24C2;A # CIRCLED LATIN CAPITAL LETTER M
-24C3;A # CIRCLED LATIN CAPITAL LETTER N
-24C4;A # CIRCLED LATIN CAPITAL LETTER O
-24C5;A # CIRCLED LATIN CAPITAL LETTER P
-24C6;A # CIRCLED LATIN CAPITAL LETTER Q
-24C7;A # CIRCLED LATIN CAPITAL LETTER R
-24C8;A # CIRCLED LATIN CAPITAL LETTER S
-24C9;A # CIRCLED LATIN CAPITAL LETTER T
-24CA;A # CIRCLED LATIN CAPITAL LETTER U
-24CB;A # CIRCLED LATIN CAPITAL LETTER V
-24CC;A # CIRCLED LATIN CAPITAL LETTER W
-24CD;A # CIRCLED LATIN CAPITAL LETTER X
-24CE;A # CIRCLED LATIN CAPITAL LETTER Y
-24CF;A # 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
-24EB;A # NEGATIVE CIRCLED NUMBER ELEVEN
-24EC;A # NEGATIVE CIRCLED NUMBER TWELVE
-24ED;A # NEGATIVE CIRCLED NUMBER THIRTEEN
-24EE;A # NEGATIVE CIRCLED NUMBER FOURTEEN
-24EF;A # NEGATIVE CIRCLED NUMBER FIFTEEN
-24F0;A # NEGATIVE CIRCLED NUMBER SIXTEEN
-24F1;A # NEGATIVE CIRCLED NUMBER SEVENTEEN
-24F2;A # NEGATIVE CIRCLED NUMBER EIGHTEEN
-24F3;A # NEGATIVE CIRCLED NUMBER NINETEEN
-24F4;A # NEGATIVE CIRCLED NUMBER TWENTY
-24F5;A # DOUBLE CIRCLED DIGIT ONE
-24F6;A # DOUBLE CIRCLED DIGIT TWO
-24F7;A # DOUBLE CIRCLED DIGIT THREE
-24F8;A # DOUBLE CIRCLED DIGIT FOUR
-24F9;A # DOUBLE CIRCLED DIGIT FIVE
-24FA;A # DOUBLE CIRCLED DIGIT SIX
-24FB;A # DOUBLE CIRCLED DIGIT SEVEN
-24FC;A # DOUBLE CIRCLED DIGIT EIGHT
-24FD;A # DOUBLE CIRCLED DIGIT NINE
-24FE;A # DOUBLE CIRCLED NUMBER TEN
-24FF;A # NEGATIVE 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;N # 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
-2596;N # QUADRANT LOWER LEFT
-2597;N # QUADRANT LOWER RIGHT
-2598;N # QUADRANT UPPER LEFT
-2599;N # QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT
-259A;N # QUADRANT UPPER LEFT AND LOWER RIGHT
-259B;N # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT
-259C;N # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT
-259D;N # QUADRANT UPPER RIGHT
-259E;N # QUADRANT UPPER RIGHT AND LOWER LEFT
-259F;N # QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT
-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
-25F8;N # UPPER LEFT TRIANGLE
-25F9;N # UPPER RIGHT TRIANGLE
-25FA;N # LOWER LEFT TRIANGLE
-25FB;N # WHITE MEDIUM SQUARE
-25FC;N # BLACK MEDIUM SQUARE
-25FD;N # WHITE MEDIUM SMALL SQUARE
-25FE;N # BLACK MEDIUM SMALL SQUARE
-25FF;N # LOWER RIGHT TRIANGLE
-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
-2614;A # UMBRELLA WITH RAIN DROPS
-2615;A # HOT BEVERAGE
-2616;N # WHITE SHOGI PIECE
-2617;N # BLACK SHOGI PIECE
-2618;N # SHAMROCK
-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
-2672;N # UNIVERSAL RECYCLING SYMBOL
-2673;N # RECYCLING SYMBOL FOR TYPE-1 PLASTICS
-2674;N # RECYCLING SYMBOL FOR TYPE-2 PLASTICS
-2675;N # RECYCLING SYMBOL FOR TYPE-3 PLASTICS
-2676;N # RECYCLING SYMBOL FOR TYPE-4 PLASTICS
-2677;N # RECYCLING SYMBOL FOR TYPE-5 PLASTICS
-2678;N # RECYCLING SYMBOL FOR TYPE-6 PLASTICS
-2679;N # RECYCLING SYMBOL FOR TYPE-7 PLASTICS
-267A;N # RECYCLING SYMBOL FOR GENERIC MATERIALS
-267B;N # BLACK UNIVERSAL RECYCLING SYMBOL
-267C;N # RECYCLED PAPER SYMBOL
-267D;N # PARTIALLY-RECYCLED PAPER SYMBOL
-267E;N # PERMANENT PAPER SIGN
-267F;N # WHEELCHAIR SYMBOL
-2680;N # DIE FACE-1
-2681;N # DIE FACE-2
-2682;N # DIE FACE-3
-2683;N # DIE FACE-4
-2684;N # DIE FACE-5
-2685;N # DIE FACE-6
-2686;N # WHITE CIRCLE WITH DOT RIGHT
-2687;N # WHITE CIRCLE WITH TWO DOTS
-2688;N # BLACK CIRCLE WITH WHITE DOT RIGHT
-2689;N # BLACK CIRCLE WITH TWO WHITE DOTS
-268A;N # MONOGRAM FOR YANG
-268B;N # MONOGRAM FOR YIN
-268C;N # DIGRAM FOR GREATER YANG
-268D;N # DIGRAM FOR LESSER YIN
-268E;N # DIGRAM FOR LESSER YANG
-268F;N # DIGRAM FOR GREATER YIN
-2690;N # WHITE FLAG
-2691;N # BLACK FLAG
-2692;N # HAMMER AND PICK
-2693;N # ANCHOR
-2694;N # CROSSED SWORDS
-2695;N # STAFF OF AESCULAPIUS
-2696;N # SCALES
-2697;N # ALEMBIC
-2698;N # FLOWER
-2699;N # GEAR
-269A;N # STAFF OF HERMES
-269B;N # ATOM SYMBOL
-269C;N # FLEUR-DE-LIS
-26A0;N # WARNING SIGN
-26A1;N # HIGH VOLTAGE SIGN
-26A2;N # DOUBLED FEMALE SIGN
-26A3;N # DOUBLED MALE SIGN
-26A4;N # INTERLOCKED FEMALE AND MALE SIGN
-26A5;N # MALE AND FEMALE SIGN
-26A6;N # MALE WITH STROKE SIGN
-26A7;N # MALE WITH STROKE AND MALE AND FEMALE SIGN
-26A8;N # VERTICAL MALE WITH STROKE SIGN
-26A9;N # HORIZONTAL MALE WITH STROKE SIGN
-26AA;N # MEDIUM WHITE CIRCLE
-26AB;N # MEDIUM BLACK CIRCLE
-26AC;N # MEDIUM SMALL WHITE CIRCLE
-26AD;N # MARRIAGE SYMBOL
-26AE;N # DIVORCE SYMBOL
-26AF;N # UNMARRIED PARTNERSHIP SYMBOL
-26B0;N # COFFIN
-26B1;N # FUNERAL URN
-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;A # 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
-2768;N # MEDIUM LEFT PARENTHESIS ORNAMENT
-2769;N # MEDIUM RIGHT PARENTHESIS ORNAMENT
-276A;N # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
-276B;N # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
-276C;N # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
-276D;N # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
-276E;N # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
-276F;N # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
-2770;N # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
-2771;N # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
-2772;N # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
-2773;N # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
-2774;N # MEDIUM LEFT CURLY BRACKET ORNAMENT
-2775;N # MEDIUM RIGHT CURLY BRACKET ORNAMENT
-2776;A # DINGBAT NEGATIVE CIRCLED DIGIT ONE
-2777;A # DINGBAT NEGATIVE CIRCLED DIGIT TWO
-2778;A # DINGBAT NEGATIVE CIRCLED DIGIT THREE
-2779;A # DINGBAT NEGATIVE CIRCLED DIGIT FOUR
-277A;A # DINGBAT NEGATIVE CIRCLED DIGIT FIVE
-277B;A # DINGBAT NEGATIVE CIRCLED DIGIT SIX
-277C;A # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
-277D;A # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
-277E;A # DINGBAT NEGATIVE CIRCLED DIGIT NINE
-277F;A # 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
-27C0;N # THREE DIMENSIONAL ANGLE
-27C1;N # WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE
-27C2;N # PERPENDICULAR
-27C3;N # OPEN SUBSET
-27C4;N # OPEN SUPERSET
-27C5;N # LEFT S-SHAPED BAG DELIMITER
-27C6;N # RIGHT S-SHAPED BAG DELIMITER
-27D0;N # WHITE DIAMOND WITH CENTRED DOT
-27D1;N # AND WITH DOT
-27D2;N # ELEMENT OF OPENING UPWARDS
-27D3;N # LOWER RIGHT CORNER WITH DOT
-27D4;N # UPPER LEFT CORNER WITH DOT
-27D5;N # LEFT OUTER JOIN
-27D6;N # RIGHT OUTER JOIN
-27D7;N # FULL OUTER JOIN
-27D8;N # LARGE UP TACK
-27D9;N # LARGE DOWN TACK
-27DA;N # LEFT AND RIGHT DOUBLE TURNSTILE
-27DB;N # LEFT AND RIGHT TACK
-27DC;N # LEFT MULTIMAP
-27DD;N # LONG RIGHT TACK
-27DE;N # LONG LEFT TACK
-27DF;N # UP TACK WITH CIRCLE ABOVE
-27E0;N # LOZENGE DIVIDED BY HORIZONTAL RULE
-27E1;N # WHITE CONCAVE-SIDED DIAMOND
-27E2;N # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK
-27E3;N # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK
-27E4;N # WHITE SQUARE WITH LEFTWARDS TICK
-27E5;N # WHITE SQUARE WITH RIGHTWARDS TICK
-27E6;Na # MATHEMATICAL LEFT WHITE SQUARE BRACKET
-27E7;Na # MATHEMATICAL RIGHT WHITE SQUARE BRACKET
-27E8;Na # MATHEMATICAL LEFT ANGLE BRACKET
-27E9;Na # MATHEMATICAL RIGHT ANGLE BRACKET
-27EA;Na # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
-27EB;Na # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
-27F0;N # UPWARDS QUADRUPLE ARROW
-27F1;N # DOWNWARDS QUADRUPLE ARROW
-27F2;N # ANTICLOCKWISE GAPPED CIRCLE ARROW
-27F3;N # CLOCKWISE GAPPED CIRCLE ARROW
-27F4;N # RIGHT ARROW WITH CIRCLED PLUS
-27F5;N # LONG LEFTWARDS ARROW
-27F6;N # LONG RIGHTWARDS ARROW
-27F7;N # LONG LEFT RIGHT ARROW
-27F8;N # LONG LEFTWARDS DOUBLE ARROW
-27F9;N # LONG RIGHTWARDS DOUBLE ARROW
-27FA;N # LONG LEFT RIGHT DOUBLE ARROW
-27FB;N # LONG LEFTWARDS ARROW FROM BAR
-27FC;N # LONG RIGHTWARDS ARROW FROM BAR
-27FD;N # LONG LEFTWARDS DOUBLE ARROW FROM BAR
-27FE;N # LONG RIGHTWARDS DOUBLE ARROW FROM BAR
-27FF;N # LONG RIGHTWARDS SQUIGGLE 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
-2900;N # RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
-2901;N # RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE
-2902;N # LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE
-2903;N # RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE
-2904;N # LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE
-2905;N # RIGHTWARDS TWO-HEADED ARROW FROM BAR
-2906;N # LEFTWARDS DOUBLE ARROW FROM BAR
-2907;N # RIGHTWARDS DOUBLE ARROW FROM BAR
-2908;N # DOWNWARDS ARROW WITH HORIZONTAL STROKE
-2909;N # UPWARDS ARROW WITH HORIZONTAL STROKE
-290A;N # UPWARDS TRIPLE ARROW
-290B;N # DOWNWARDS TRIPLE ARROW
-290C;N # LEFTWARDS DOUBLE DASH ARROW
-290D;N # RIGHTWARDS DOUBLE DASH ARROW
-290E;N # LEFTWARDS TRIPLE DASH ARROW
-290F;N # RIGHTWARDS TRIPLE DASH ARROW
-2910;N # RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW
-2911;N # RIGHTWARDS ARROW WITH DOTTED STEM
-2912;N # UPWARDS ARROW TO BAR
-2913;N # DOWNWARDS ARROW TO BAR
-2914;N # RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE
-2915;N # RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
-2916;N # RIGHTWARDS TWO-HEADED ARROW WITH TAIL
-2917;N # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE
-2918;N # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
-2919;N # LEFTWARDS ARROW-TAIL
-291A;N # RIGHTWARDS ARROW-TAIL
-291B;N # LEFTWARDS DOUBLE ARROW-TAIL
-291C;N # RIGHTWARDS DOUBLE ARROW-TAIL
-291D;N # LEFTWARDS ARROW TO BLACK DIAMOND
-291E;N # RIGHTWARDS ARROW TO BLACK DIAMOND
-291F;N # LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND
-2920;N # RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND
-2921;N # NORTH WEST AND SOUTH EAST ARROW
-2922;N # NORTH EAST AND SOUTH WEST ARROW
-2923;N # NORTH WEST ARROW WITH HOOK
-2924;N # NORTH EAST ARROW WITH HOOK
-2925;N # SOUTH EAST ARROW WITH HOOK
-2926;N # SOUTH WEST ARROW WITH HOOK
-2927;N # NORTH WEST ARROW AND NORTH EAST ARROW
-2928;N # NORTH EAST ARROW AND SOUTH EAST ARROW
-2929;N # SOUTH EAST ARROW AND SOUTH WEST ARROW
-292A;N # SOUTH WEST ARROW AND NORTH WEST ARROW
-292B;N # RISING DIAGONAL CROSSING FALLING DIAGONAL
-292C;N # FALLING DIAGONAL CROSSING RISING DIAGONAL
-292D;N # SOUTH EAST ARROW CROSSING NORTH EAST ARROW
-292E;N # NORTH EAST ARROW CROSSING SOUTH EAST ARROW
-292F;N # FALLING DIAGONAL CROSSING NORTH EAST ARROW
-2930;N # RISING DIAGONAL CROSSING SOUTH EAST ARROW
-2931;N # NORTH EAST ARROW CROSSING NORTH WEST ARROW
-2932;N # NORTH WEST ARROW CROSSING NORTH EAST ARROW
-2933;N # WAVE ARROW POINTING DIRECTLY RIGHT
-2934;N # ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS
-2935;N # ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS
-2936;N # ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS
-2937;N # ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS
-2938;N # RIGHT-SIDE ARC CLOCKWISE ARROW
-2939;N # LEFT-SIDE ARC ANTICLOCKWISE ARROW
-293A;N # TOP ARC ANTICLOCKWISE ARROW
-293B;N # BOTTOM ARC ANTICLOCKWISE ARROW
-293C;N # TOP ARC CLOCKWISE ARROW WITH MINUS
-293D;N # TOP ARC ANTICLOCKWISE ARROW WITH PLUS
-293E;N # LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW
-293F;N # LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW
-2940;N # ANTICLOCKWISE CLOSED CIRCLE ARROW
-2941;N # CLOCKWISE CLOSED CIRCLE ARROW
-2942;N # RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW
-2943;N # LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW
-2944;N # SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW
-2945;N # RIGHTWARDS ARROW WITH PLUS BELOW
-2946;N # LEFTWARDS ARROW WITH PLUS BELOW
-2947;N # RIGHTWARDS ARROW THROUGH X
-2948;N # LEFT RIGHT ARROW THROUGH SMALL CIRCLE
-2949;N # UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE
-294A;N # LEFT BARB UP RIGHT BARB DOWN HARPOON
-294B;N # LEFT BARB DOWN RIGHT BARB UP HARPOON
-294C;N # UP BARB RIGHT DOWN BARB LEFT HARPOON
-294D;N # UP BARB LEFT DOWN BARB RIGHT HARPOON
-294E;N # LEFT BARB UP RIGHT BARB UP HARPOON
-294F;N # UP BARB RIGHT DOWN BARB RIGHT HARPOON
-2950;N # LEFT BARB DOWN RIGHT BARB DOWN HARPOON
-2951;N # UP BARB LEFT DOWN BARB LEFT HARPOON
-2952;N # LEFTWARDS HARPOON WITH BARB UP TO BAR
-2953;N # RIGHTWARDS HARPOON WITH BARB UP TO BAR
-2954;N # UPWARDS HARPOON WITH BARB RIGHT TO BAR
-2955;N # DOWNWARDS HARPOON WITH BARB RIGHT TO BAR
-2956;N # LEFTWARDS HARPOON WITH BARB DOWN TO BAR
-2957;N # RIGHTWARDS HARPOON WITH BARB DOWN TO BAR
-2958;N # UPWARDS HARPOON WITH BARB LEFT TO BAR
-2959;N # DOWNWARDS HARPOON WITH BARB LEFT TO BAR
-295A;N # LEFTWARDS HARPOON WITH BARB UP FROM BAR
-295B;N # RIGHTWARDS HARPOON WITH BARB UP FROM BAR
-295C;N # UPWARDS HARPOON WITH BARB RIGHT FROM BAR
-295D;N # DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR
-295E;N # LEFTWARDS HARPOON WITH BARB DOWN FROM BAR
-295F;N # RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR
-2960;N # UPWARDS HARPOON WITH BARB LEFT FROM BAR
-2961;N # DOWNWARDS HARPOON WITH BARB LEFT FROM BAR
-2962;N # LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN
-2963;N # UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
-2964;N # RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
-2965;N # DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
-2966;N # LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP
-2967;N # LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
-2968;N # RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP
-2969;N # RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN
-296A;N # LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
-296B;N # LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
-296C;N # RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
-296D;N # RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
-296E;N # UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
-296F;N # DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
-2970;N # RIGHT DOUBLE ARROW WITH ROUNDED HEAD
-2971;N # EQUALS SIGN ABOVE RIGHTWARDS ARROW
-2972;N # TILDE OPERATOR ABOVE RIGHTWARDS ARROW
-2973;N # LEFTWARDS ARROW ABOVE TILDE OPERATOR
-2974;N # RIGHTWARDS ARROW ABOVE TILDE OPERATOR
-2975;N # RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO
-2976;N # LESS-THAN ABOVE LEFTWARDS ARROW
-2977;N # LEFTWARDS ARROW THROUGH LESS-THAN
-2978;N # GREATER-THAN ABOVE RIGHTWARDS ARROW
-2979;N # SUBSET ABOVE RIGHTWARDS ARROW
-297A;N # LEFTWARDS ARROW THROUGH SUBSET
-297B;N # SUPERSET ABOVE LEFTWARDS ARROW
-297C;N # LEFT FISH TAIL
-297D;N # RIGHT FISH TAIL
-297E;N # UP FISH TAIL
-297F;N # DOWN FISH TAIL
-2980;N # TRIPLE VERTICAL BAR DELIMITER
-2981;N # Z NOTATION SPOT
-2982;N # Z NOTATION TYPE COLON
-2983;N # LEFT WHITE CURLY BRACKET
-2984;N # RIGHT WHITE CURLY BRACKET
-2985;Na # LEFT WHITE PARENTHESIS
-2986;Na # RIGHT WHITE PARENTHESIS
-2987;N # Z NOTATION LEFT IMAGE BRACKET
-2988;N # Z NOTATION RIGHT IMAGE BRACKET
-2989;N # Z NOTATION LEFT BINDING BRACKET
-298A;N # Z NOTATION RIGHT BINDING BRACKET
-298B;N # LEFT SQUARE BRACKET WITH UNDERBAR
-298C;N # RIGHT SQUARE BRACKET WITH UNDERBAR
-298D;N # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
-298E;N # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-298F;N # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-2990;N # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
-2991;N # LEFT ANGLE BRACKET WITH DOT
-2992;N # RIGHT ANGLE BRACKET WITH DOT
-2993;N # LEFT ARC LESS-THAN BRACKET
-2994;N # RIGHT ARC GREATER-THAN BRACKET
-2995;N # DOUBLE LEFT ARC GREATER-THAN BRACKET
-2996;N # DOUBLE RIGHT ARC LESS-THAN BRACKET
-2997;N # LEFT BLACK TORTOISE SHELL BRACKET
-2998;N # RIGHT BLACK TORTOISE SHELL BRACKET
-2999;N # DOTTED FENCE
-299A;N # VERTICAL ZIGZAG LINE
-299B;N # MEASURED ANGLE OPENING LEFT
-299C;N # RIGHT ANGLE VARIANT WITH SQUARE
-299D;N # MEASURED RIGHT ANGLE WITH DOT
-299E;N # ANGLE WITH S INSIDE
-299F;N # ACUTE ANGLE
-29A0;N # SPHERICAL ANGLE OPENING LEFT
-29A1;N # SPHERICAL ANGLE OPENING UP
-29A2;N # TURNED ANGLE
-29A3;N # REVERSED ANGLE
-29A4;N # ANGLE WITH UNDERBAR
-29A5;N # REVERSED ANGLE WITH UNDERBAR
-29A6;N # OBLIQUE ANGLE OPENING UP
-29A7;N # OBLIQUE ANGLE OPENING DOWN
-29A8;N # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT
-29A9;N # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT
-29AA;N # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT
-29AB;N # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT
-29AC;N # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP
-29AD;N # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP
-29AE;N # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN
-29AF;N # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN
-29B0;N # REVERSED EMPTY SET
-29B1;N # EMPTY SET WITH OVERBAR
-29B2;N # EMPTY SET WITH SMALL CIRCLE ABOVE
-29B3;N # EMPTY SET WITH RIGHT ARROW ABOVE
-29B4;N # EMPTY SET WITH LEFT ARROW ABOVE
-29B5;N # CIRCLE WITH HORIZONTAL BAR
-29B6;N # CIRCLED VERTICAL BAR
-29B7;N # CIRCLED PARALLEL
-29B8;N # CIRCLED REVERSE SOLIDUS
-29B9;N # CIRCLED PERPENDICULAR
-29BA;N # CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR
-29BB;N # CIRCLE WITH SUPERIMPOSED X
-29BC;N # CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN
-29BD;N # UP ARROW THROUGH CIRCLE
-29BE;N # CIRCLED WHITE BULLET
-29BF;N # CIRCLED BULLET
-29C0;N # CIRCLED LESS-THAN
-29C1;N # CIRCLED GREATER-THAN
-29C2;N # CIRCLE WITH SMALL CIRCLE TO THE RIGHT
-29C3;N # CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT
-29C4;N # SQUARED RISING DIAGONAL SLASH
-29C5;N # SQUARED FALLING DIAGONAL SLASH
-29C6;N # SQUARED ASTERISK
-29C7;N # SQUARED SMALL CIRCLE
-29C8;N # SQUARED SQUARE
-29C9;N # TWO JOINED SQUARES
-29CA;N # TRIANGLE WITH DOT ABOVE
-29CB;N # TRIANGLE WITH UNDERBAR
-29CC;N # S IN TRIANGLE
-29CD;N # TRIANGLE WITH SERIFS AT BOTTOM
-29CE;N # RIGHT TRIANGLE ABOVE LEFT TRIANGLE
-29CF;N # LEFT TRIANGLE BESIDE VERTICAL BAR
-29D0;N # VERTICAL BAR BESIDE RIGHT TRIANGLE
-29D1;N # BOWTIE WITH LEFT HALF BLACK
-29D2;N # BOWTIE WITH RIGHT HALF BLACK
-29D3;N # BLACK BOWTIE
-29D4;N # TIMES WITH LEFT HALF BLACK
-29D5;N # TIMES WITH RIGHT HALF BLACK
-29D6;N # WHITE HOURGLASS
-29D7;N # BLACK HOURGLASS
-29D8;N # LEFT WIGGLY FENCE
-29D9;N # RIGHT WIGGLY FENCE
-29DA;N # LEFT DOUBLE WIGGLY FENCE
-29DB;N # RIGHT DOUBLE WIGGLY FENCE
-29DC;N # INCOMPLETE INFINITY
-29DD;N # TIE OVER INFINITY
-29DE;N # INFINITY NEGATED WITH VERTICAL BAR
-29DF;N # DOUBLE-ENDED MULTIMAP
-29E0;N # SQUARE WITH CONTOURED OUTLINE
-29E1;N # INCREASES AS
-29E2;N # SHUFFLE PRODUCT
-29E3;N # EQUALS SIGN AND SLANTED PARALLEL
-29E4;N # EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE
-29E5;N # IDENTICAL TO AND SLANTED PARALLEL
-29E6;N # GLEICH STARK
-29E7;N # THERMODYNAMIC
-29E8;N # DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK
-29E9;N # DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK
-29EA;N # BLACK DIAMOND WITH DOWN ARROW
-29EB;N # BLACK LOZENGE
-29EC;N # WHITE CIRCLE WITH DOWN ARROW
-29ED;N # BLACK CIRCLE WITH DOWN ARROW
-29EE;N # ERROR-BARRED WHITE SQUARE
-29EF;N # ERROR-BARRED BLACK SQUARE
-29F0;N # ERROR-BARRED WHITE DIAMOND
-29F1;N # ERROR-BARRED BLACK DIAMOND
-29F2;N # ERROR-BARRED WHITE CIRCLE
-29F3;N # ERROR-BARRED BLACK CIRCLE
-29F4;N # RULE-DELAYED
-29F5;N # REVERSE SOLIDUS OPERATOR
-29F6;N # SOLIDUS WITH OVERBAR
-29F7;N # REVERSE SOLIDUS WITH HORIZONTAL STROKE
-29F8;N # BIG SOLIDUS
-29F9;N # BIG REVERSE SOLIDUS
-29FA;N # DOUBLE PLUS
-29FB;N # TRIPLE PLUS
-29FC;N # LEFT-POINTING CURVED ANGLE BRACKET
-29FD;N # RIGHT-POINTING CURVED ANGLE BRACKET
-29FE;N # TINY
-29FF;N # MINY
-2A00;N # N-ARY CIRCLED DOT OPERATOR
-2A01;N # N-ARY CIRCLED PLUS OPERATOR
-2A02;N # N-ARY CIRCLED TIMES OPERATOR
-2A03;N # N-ARY UNION OPERATOR WITH DOT
-2A04;N # N-ARY UNION OPERATOR WITH PLUS
-2A05;N # N-ARY SQUARE INTERSECTION OPERATOR
-2A06;N # N-ARY SQUARE UNION OPERATOR
-2A07;N # TWO LOGICAL AND OPERATOR
-2A08;N # TWO LOGICAL OR OPERATOR
-2A09;N # N-ARY TIMES OPERATOR
-2A0A;N # MODULO TWO SUM
-2A0B;N # SUMMATION WITH INTEGRAL
-2A0C;N # QUADRUPLE INTEGRAL OPERATOR
-2A0D;N # FINITE PART INTEGRAL
-2A0E;N # INTEGRAL WITH DOUBLE STROKE
-2A0F;N # INTEGRAL AVERAGE WITH SLASH
-2A10;N # CIRCULATION FUNCTION
-2A11;N # ANTICLOCKWISE INTEGRATION
-2A12;N # LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE
-2A13;N # LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE
-2A14;N # LINE INTEGRATION NOT INCLUDING THE POLE
-2A15;N # INTEGRAL AROUND A POINT OPERATOR
-2A16;N # QUATERNION INTEGRAL OPERATOR
-2A17;N # INTEGRAL WITH LEFTWARDS ARROW WITH HOOK
-2A18;N # INTEGRAL WITH TIMES SIGN
-2A19;N # INTEGRAL WITH INTERSECTION
-2A1A;N # INTEGRAL WITH UNION
-2A1B;N # INTEGRAL WITH OVERBAR
-2A1C;N # INTEGRAL WITH UNDERBAR
-2A1D;N # JOIN
-2A1E;N # LARGE LEFT TRIANGLE OPERATOR
-2A1F;N # Z NOTATION SCHEMA COMPOSITION
-2A20;N # Z NOTATION SCHEMA PIPING
-2A21;N # Z NOTATION SCHEMA PROJECTION
-2A22;N # PLUS SIGN WITH SMALL CIRCLE ABOVE
-2A23;N # PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE
-2A24;N # PLUS SIGN WITH TILDE ABOVE
-2A25;N # PLUS SIGN WITH DOT BELOW
-2A26;N # PLUS SIGN WITH TILDE BELOW
-2A27;N # PLUS SIGN WITH SUBSCRIPT TWO
-2A28;N # PLUS SIGN WITH BLACK TRIANGLE
-2A29;N # MINUS SIGN WITH COMMA ABOVE
-2A2A;N # MINUS SIGN WITH DOT BELOW
-2A2B;N # MINUS SIGN WITH FALLING DOTS
-2A2C;N # MINUS SIGN WITH RISING DOTS
-2A2D;N # PLUS SIGN IN LEFT HALF CIRCLE
-2A2E;N # PLUS SIGN IN RIGHT HALF CIRCLE
-2A2F;N # VECTOR OR CROSS PRODUCT
-2A30;N # MULTIPLICATION SIGN WITH DOT ABOVE
-2A31;N # MULTIPLICATION SIGN WITH UNDERBAR
-2A32;N # SEMIDIRECT PRODUCT WITH BOTTOM CLOSED
-2A33;N # SMASH PRODUCT
-2A34;N # MULTIPLICATION SIGN IN LEFT HALF CIRCLE
-2A35;N # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE
-2A36;N # CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT
-2A37;N # MULTIPLICATION SIGN IN DOUBLE CIRCLE
-2A38;N # CIRCLED DIVISION SIGN
-2A39;N # PLUS SIGN IN TRIANGLE
-2A3A;N # MINUS SIGN IN TRIANGLE
-2A3B;N # MULTIPLICATION SIGN IN TRIANGLE
-2A3C;N # INTERIOR PRODUCT
-2A3D;N # RIGHTHAND INTERIOR PRODUCT
-2A3E;N # Z NOTATION RELATIONAL COMPOSITION
-2A3F;N # AMALGAMATION OR COPRODUCT
-2A40;N # INTERSECTION WITH DOT
-2A41;N # UNION WITH MINUS SIGN
-2A42;N # UNION WITH OVERBAR
-2A43;N # INTERSECTION WITH OVERBAR
-2A44;N # INTERSECTION WITH LOGICAL AND
-2A45;N # UNION WITH LOGICAL OR
-2A46;N # UNION ABOVE INTERSECTION
-2A47;N # INTERSECTION ABOVE UNION
-2A48;N # UNION ABOVE BAR ABOVE INTERSECTION
-2A49;N # INTERSECTION ABOVE BAR ABOVE UNION
-2A4A;N # UNION BESIDE AND JOINED WITH UNION
-2A4B;N # INTERSECTION BESIDE AND JOINED WITH INTERSECTION
-2A4C;N # CLOSED UNION WITH SERIFS
-2A4D;N # CLOSED INTERSECTION WITH SERIFS
-2A4E;N # DOUBLE SQUARE INTERSECTION
-2A4F;N # DOUBLE SQUARE UNION
-2A50;N # CLOSED UNION WITH SERIFS AND SMASH PRODUCT
-2A51;N # LOGICAL AND WITH DOT ABOVE
-2A52;N # LOGICAL OR WITH DOT ABOVE
-2A53;N # DOUBLE LOGICAL AND
-2A54;N # DOUBLE LOGICAL OR
-2A55;N # TWO INTERSECTING LOGICAL AND
-2A56;N # TWO INTERSECTING LOGICAL OR
-2A57;N # SLOPING LARGE OR
-2A58;N # SLOPING LARGE AND
-2A59;N # LOGICAL OR OVERLAPPING LOGICAL AND
-2A5A;N # LOGICAL AND WITH MIDDLE STEM
-2A5B;N # LOGICAL OR WITH MIDDLE STEM
-2A5C;N # LOGICAL AND WITH HORIZONTAL DASH
-2A5D;N # LOGICAL OR WITH HORIZONTAL DASH
-2A5E;N # LOGICAL AND WITH DOUBLE OVERBAR
-2A5F;N # LOGICAL AND WITH UNDERBAR
-2A60;N # LOGICAL AND WITH DOUBLE UNDERBAR
-2A61;N # SMALL VEE WITH UNDERBAR
-2A62;N # LOGICAL OR WITH DOUBLE OVERBAR
-2A63;N # LOGICAL OR WITH DOUBLE UNDERBAR
-2A64;N # Z NOTATION DOMAIN ANTIRESTRICTION
-2A65;N # Z NOTATION RANGE ANTIRESTRICTION
-2A66;N # EQUALS SIGN WITH DOT BELOW
-2A67;N # IDENTICAL WITH DOT ABOVE
-2A68;N # TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE
-2A69;N # TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE
-2A6A;N # TILDE OPERATOR WITH DOT ABOVE
-2A6B;N # TILDE OPERATOR WITH RISING DOTS
-2A6C;N # SIMILAR MINUS SIMILAR
-2A6D;N # CONGRUENT WITH DOT ABOVE
-2A6E;N # EQUALS WITH ASTERISK
-2A6F;N # ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT
-2A70;N # APPROXIMATELY EQUAL OR EQUAL TO
-2A71;N # EQUALS SIGN ABOVE PLUS SIGN
-2A72;N # PLUS SIGN ABOVE EQUALS SIGN
-2A73;N # EQUALS SIGN ABOVE TILDE OPERATOR
-2A74;N # DOUBLE COLON EQUAL
-2A75;N # TWO CONSECUTIVE EQUALS SIGNS
-2A76;N # THREE CONSECUTIVE EQUALS SIGNS
-2A77;N # EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW
-2A78;N # EQUIVALENT WITH FOUR DOTS ABOVE
-2A79;N # LESS-THAN WITH CIRCLE INSIDE
-2A7A;N # GREATER-THAN WITH CIRCLE INSIDE
-2A7B;N # LESS-THAN WITH QUESTION MARK ABOVE
-2A7C;N # GREATER-THAN WITH QUESTION MARK ABOVE
-2A7D;N # LESS-THAN OR SLANTED EQUAL TO
-2A7E;N # GREATER-THAN OR SLANTED EQUAL TO
-2A7F;N # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
-2A80;N # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
-2A81;N # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
-2A82;N # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
-2A83;N # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT
-2A84;N # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT
-2A85;N # LESS-THAN OR APPROXIMATE
-2A86;N # GREATER-THAN OR APPROXIMATE
-2A87;N # LESS-THAN AND SINGLE-LINE NOT EQUAL TO
-2A88;N # GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
-2A89;N # LESS-THAN AND NOT APPROXIMATE
-2A8A;N # GREATER-THAN AND NOT APPROXIMATE
-2A8B;N # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
-2A8C;N # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
-2A8D;N # LESS-THAN ABOVE SIMILAR OR EQUAL
-2A8E;N # GREATER-THAN ABOVE SIMILAR OR EQUAL
-2A8F;N # LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN
-2A90;N # GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN
-2A91;N # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL
-2A92;N # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL
-2A93;N # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL
-2A94;N # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL
-2A95;N # SLANTED EQUAL TO OR LESS-THAN
-2A96;N # SLANTED EQUAL TO OR GREATER-THAN
-2A97;N # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE
-2A98;N # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE
-2A99;N # DOUBLE-LINE EQUAL TO OR LESS-THAN
-2A9A;N # DOUBLE-LINE EQUAL TO OR GREATER-THAN
-2A9B;N # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN
-2A9C;N # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN
-2A9D;N # SIMILAR OR LESS-THAN
-2A9E;N # SIMILAR OR GREATER-THAN
-2A9F;N # SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN
-2AA0;N # SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN
-2AA1;N # DOUBLE NESTED LESS-THAN
-2AA2;N # DOUBLE NESTED GREATER-THAN
-2AA3;N # DOUBLE NESTED LESS-THAN WITH UNDERBAR
-2AA4;N # GREATER-THAN OVERLAPPING LESS-THAN
-2AA5;N # GREATER-THAN BESIDE LESS-THAN
-2AA6;N # LESS-THAN CLOSED BY CURVE
-2AA7;N # GREATER-THAN CLOSED BY CURVE
-2AA8;N # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
-2AA9;N # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
-2AAA;N # SMALLER THAN
-2AAB;N # LARGER THAN
-2AAC;N # SMALLER THAN OR EQUAL TO
-2AAD;N # LARGER THAN OR EQUAL TO
-2AAE;N # EQUALS SIGN WITH BUMPY ABOVE
-2AAF;N # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
-2AB0;N # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
-2AB1;N # PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO
-2AB2;N # SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO
-2AB3;N # PRECEDES ABOVE EQUALS SIGN
-2AB4;N # SUCCEEDS ABOVE EQUALS SIGN
-2AB5;N # PRECEDES ABOVE NOT EQUAL TO
-2AB6;N # SUCCEEDS ABOVE NOT EQUAL TO
-2AB7;N # PRECEDES ABOVE ALMOST EQUAL TO
-2AB8;N # SUCCEEDS ABOVE ALMOST EQUAL TO
-2AB9;N # PRECEDES ABOVE NOT ALMOST EQUAL TO
-2ABA;N # SUCCEEDS ABOVE NOT ALMOST EQUAL TO
-2ABB;N # DOUBLE PRECEDES
-2ABC;N # DOUBLE SUCCEEDS
-2ABD;N # SUBSET WITH DOT
-2ABE;N # SUPERSET WITH DOT
-2ABF;N # SUBSET WITH PLUS SIGN BELOW
-2AC0;N # SUPERSET WITH PLUS SIGN BELOW
-2AC1;N # SUBSET WITH MULTIPLICATION SIGN BELOW
-2AC2;N # SUPERSET WITH MULTIPLICATION SIGN BELOW
-2AC3;N # SUBSET OF OR EQUAL TO WITH DOT ABOVE
-2AC4;N # SUPERSET OF OR EQUAL TO WITH DOT ABOVE
-2AC5;N # SUBSET OF ABOVE EQUALS SIGN
-2AC6;N # SUPERSET OF ABOVE EQUALS SIGN
-2AC7;N # SUBSET OF ABOVE TILDE OPERATOR
-2AC8;N # SUPERSET OF ABOVE TILDE OPERATOR
-2AC9;N # SUBSET OF ABOVE ALMOST EQUAL TO
-2ACA;N # SUPERSET OF ABOVE ALMOST EQUAL TO
-2ACB;N # SUBSET OF ABOVE NOT EQUAL TO
-2ACC;N # SUPERSET OF ABOVE NOT EQUAL TO
-2ACD;N # SQUARE LEFT OPEN BOX OPERATOR
-2ACE;N # SQUARE RIGHT OPEN BOX OPERATOR
-2ACF;N # CLOSED SUBSET
-2AD0;N # CLOSED SUPERSET
-2AD1;N # CLOSED SUBSET OR EQUAL TO
-2AD2;N # CLOSED SUPERSET OR EQUAL TO
-2AD3;N # SUBSET ABOVE SUPERSET
-2AD4;N # SUPERSET ABOVE SUBSET
-2AD5;N # SUBSET ABOVE SUBSET
-2AD6;N # SUPERSET ABOVE SUPERSET
-2AD7;N # SUPERSET BESIDE SUBSET
-2AD8;N # SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET
-2AD9;N # ELEMENT OF OPENING DOWNWARDS
-2ADA;N # PITCHFORK WITH TEE TOP
-2ADB;N # TRANSVERSAL INTERSECTION
-2ADC;N # FORKING
-2ADD;N # NONFORKING
-2ADE;N # SHORT LEFT TACK
-2ADF;N # SHORT DOWN TACK
-2AE0;N # SHORT UP TACK
-2AE1;N # PERPENDICULAR WITH S
-2AE2;N # VERTICAL BAR TRIPLE RIGHT TURNSTILE
-2AE3;N # DOUBLE VERTICAL BAR LEFT TURNSTILE
-2AE4;N # VERTICAL BAR DOUBLE LEFT TURNSTILE
-2AE5;N # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE
-2AE6;N # LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL
-2AE7;N # SHORT DOWN TACK WITH OVERBAR
-2AE8;N # SHORT UP TACK WITH UNDERBAR
-2AE9;N # SHORT UP TACK ABOVE SHORT DOWN TACK
-2AEA;N # DOUBLE DOWN TACK
-2AEB;N # DOUBLE UP TACK
-2AEC;N # DOUBLE STROKE NOT SIGN
-2AED;N # REVERSED DOUBLE STROKE NOT SIGN
-2AEE;N # DOES NOT DIVIDE WITH REVERSED NEGATION SLASH
-2AEF;N # VERTICAL LINE WITH CIRCLE ABOVE
-2AF0;N # VERTICAL LINE WITH CIRCLE BELOW
-2AF1;N # DOWN TACK WITH CIRCLE BELOW
-2AF2;N # PARALLEL WITH HORIZONTAL STROKE
-2AF3;N # PARALLEL WITH TILDE OPERATOR
-2AF4;N # TRIPLE VERTICAL BAR BINARY RELATION
-2AF5;N # TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE
-2AF6;N # TRIPLE COLON OPERATOR
-2AF7;N # TRIPLE NESTED LESS-THAN
-2AF8;N # TRIPLE NESTED GREATER-THAN
-2AF9;N # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO
-2AFA;N # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO
-2AFB;N # TRIPLE SOLIDUS BINARY RELATION
-2AFC;N # LARGE TRIPLE VERTICAL BAR OPERATOR
-2AFD;N # DOUBLE SOLIDUS OPERATOR
-2AFE;N # WHITE VERTICAL BAR
-2AFF;N # N-ARY WHITE VERTICAL BAR
-2B00;N # NORTH EAST WHITE ARROW
-2B01;N # NORTH WEST WHITE ARROW
-2B02;N # SOUTH EAST WHITE ARROW
-2B03;N # SOUTH WEST WHITE ARROW
-2B04;N # LEFT RIGHT WHITE ARROW
-2B05;N # LEFTWARDS BLACK ARROW
-2B06;N # UPWARDS BLACK ARROW
-2B07;N # DOWNWARDS BLACK ARROW
-2B08;N # NORTH EAST BLACK ARROW
-2B09;N # NORTH WEST BLACK ARROW
-2B0A;N # SOUTH EAST BLACK ARROW
-2B0B;N # SOUTH WEST BLACK ARROW
-2B0C;N # LEFT RIGHT BLACK ARROW
-2B0D;N # UP DOWN BLACK ARROW
-2B0E;N # RIGHTWARDS ARROW WITH TIP DOWNWARDS
-2B0F;N # RIGHTWARDS ARROW WITH TIP UPWARDS
-2B10;N # LEFTWARDS ARROW WITH TIP DOWNWARDS
-2B11;N # LEFTWARDS ARROW WITH TIP UPWARDS
-2B12;N # SQUARE WITH TOP HALF BLACK
-2B13;N # SQUARE WITH BOTTOM HALF BLACK
-2C00;N # GLAGOLITIC CAPITAL LETTER AZU
-2C01;N # GLAGOLITIC CAPITAL LETTER BUKY
-2C02;N # GLAGOLITIC CAPITAL LETTER VEDE
-2C03;N # GLAGOLITIC CAPITAL LETTER GLAGOLI
-2C04;N # GLAGOLITIC CAPITAL LETTER DOBRO
-2C05;N # GLAGOLITIC CAPITAL LETTER YESTU
-2C06;N # GLAGOLITIC CAPITAL LETTER ZHIVETE
-2C07;N # GLAGOLITIC CAPITAL LETTER DZELO
-2C08;N # GLAGOLITIC CAPITAL LETTER ZEMLJA
-2C09;N # GLAGOLITIC CAPITAL LETTER IZHE
-2C0A;N # GLAGOLITIC CAPITAL LETTER INITIAL IZHE
-2C0B;N # GLAGOLITIC CAPITAL LETTER I
-2C0C;N # GLAGOLITIC CAPITAL LETTER DJERVI
-2C0D;N # GLAGOLITIC CAPITAL LETTER KAKO
-2C0E;N # GLAGOLITIC CAPITAL LETTER LJUDIJE
-2C0F;N # GLAGOLITIC CAPITAL LETTER MYSLITE
-2C10;N # GLAGOLITIC CAPITAL LETTER NASHI
-2C11;N # GLAGOLITIC CAPITAL LETTER ONU
-2C12;N # GLAGOLITIC CAPITAL LETTER POKOJI
-2C13;N # GLAGOLITIC CAPITAL LETTER RITSI
-2C14;N # GLAGOLITIC CAPITAL LETTER SLOVO
-2C15;N # GLAGOLITIC CAPITAL LETTER TVRIDO
-2C16;N # GLAGOLITIC CAPITAL LETTER UKU
-2C17;N # GLAGOLITIC CAPITAL LETTER FRITU
-2C18;N # GLAGOLITIC CAPITAL LETTER HERU
-2C19;N # GLAGOLITIC CAPITAL LETTER OTU
-2C1A;N # GLAGOLITIC CAPITAL LETTER PE
-2C1B;N # GLAGOLITIC CAPITAL LETTER SHTA
-2C1C;N # GLAGOLITIC CAPITAL LETTER TSI
-2C1D;N # GLAGOLITIC CAPITAL LETTER CHRIVI
-2C1E;N # GLAGOLITIC CAPITAL LETTER SHA
-2C1F;N # GLAGOLITIC CAPITAL LETTER YERU
-2C20;N # GLAGOLITIC CAPITAL LETTER YERI
-2C21;N # GLAGOLITIC CAPITAL LETTER YATI
-2C22;N # GLAGOLITIC CAPITAL LETTER SPIDERY HA
-2C23;N # GLAGOLITIC CAPITAL LETTER YU
-2C24;N # GLAGOLITIC CAPITAL LETTER SMALL YUS
-2C25;N # GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL
-2C26;N # GLAGOLITIC CAPITAL LETTER YO
-2C27;N # GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS
-2C28;N # GLAGOLITIC CAPITAL LETTER BIG YUS
-2C29;N # GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS
-2C2A;N # GLAGOLITIC CAPITAL LETTER FITA
-2C2B;N # GLAGOLITIC CAPITAL LETTER IZHITSA
-2C2C;N # GLAGOLITIC CAPITAL LETTER SHTAPIC
-2C2D;N # GLAGOLITIC CAPITAL LETTER TROKUTASTI A
-2C2E;N # GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
-2C30;N # GLAGOLITIC SMALL LETTER AZU
-2C31;N # GLAGOLITIC SMALL LETTER BUKY
-2C32;N # GLAGOLITIC SMALL LETTER VEDE
-2C33;N # GLAGOLITIC SMALL LETTER GLAGOLI
-2C34;N # GLAGOLITIC SMALL LETTER DOBRO
-2C35;N # GLAGOLITIC SMALL LETTER YESTU
-2C36;N # GLAGOLITIC SMALL LETTER ZHIVETE
-2C37;N # GLAGOLITIC SMALL LETTER DZELO
-2C38;N # GLAGOLITIC SMALL LETTER ZEMLJA
-2C39;N # GLAGOLITIC SMALL LETTER IZHE
-2C3A;N # GLAGOLITIC SMALL LETTER INITIAL IZHE
-2C3B;N # GLAGOLITIC SMALL LETTER I
-2C3C;N # GLAGOLITIC SMALL LETTER DJERVI
-2C3D;N # GLAGOLITIC SMALL LETTER KAKO
-2C3E;N # GLAGOLITIC SMALL LETTER LJUDIJE
-2C3F;N # GLAGOLITIC SMALL LETTER MYSLITE
-2C40;N # GLAGOLITIC SMALL LETTER NASHI
-2C41;N # GLAGOLITIC SMALL LETTER ONU
-2C42;N # GLAGOLITIC SMALL LETTER POKOJI
-2C43;N # GLAGOLITIC SMALL LETTER RITSI
-2C44;N # GLAGOLITIC SMALL LETTER SLOVO
-2C45;N # GLAGOLITIC SMALL LETTER TVRIDO
-2C46;N # GLAGOLITIC SMALL LETTER UKU
-2C47;N # GLAGOLITIC SMALL LETTER FRITU
-2C48;N # GLAGOLITIC SMALL LETTER HERU
-2C49;N # GLAGOLITIC SMALL LETTER OTU
-2C4A;N # GLAGOLITIC SMALL LETTER PE
-2C4B;N # GLAGOLITIC SMALL LETTER SHTA
-2C4C;N # GLAGOLITIC SMALL LETTER TSI
-2C4D;N # GLAGOLITIC SMALL LETTER CHRIVI
-2C4E;N # GLAGOLITIC SMALL LETTER SHA
-2C4F;N # GLAGOLITIC SMALL LETTER YERU
-2C50;N # GLAGOLITIC SMALL LETTER YERI
-2C51;N # GLAGOLITIC SMALL LETTER YATI
-2C52;N # GLAGOLITIC SMALL LETTER SPIDERY HA
-2C53;N # GLAGOLITIC SMALL LETTER YU
-2C54;N # GLAGOLITIC SMALL LETTER SMALL YUS
-2C55;N # GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL
-2C56;N # GLAGOLITIC SMALL LETTER YO
-2C57;N # GLAGOLITIC SMALL LETTER IOTATED SMALL YUS
-2C58;N # GLAGOLITIC SMALL LETTER BIG YUS
-2C59;N # GLAGOLITIC SMALL LETTER IOTATED BIG YUS
-2C5A;N # GLAGOLITIC SMALL LETTER FITA
-2C5B;N # GLAGOLITIC SMALL LETTER IZHITSA
-2C5C;N # GLAGOLITIC SMALL LETTER SHTAPIC
-2C5D;N # GLAGOLITIC SMALL LETTER TROKUTASTI A
-2C5E;N # GLAGOLITIC SMALL LETTER LATINATE MYSLITE
-2C80;N # COPTIC CAPITAL LETTER ALFA
-2C81;N # COPTIC SMALL LETTER ALFA
-2C82;N # COPTIC CAPITAL LETTER VIDA
-2C83;N # COPTIC SMALL LETTER VIDA
-2C84;N # COPTIC CAPITAL LETTER GAMMA
-2C85;N # COPTIC SMALL LETTER GAMMA
-2C86;N # COPTIC CAPITAL LETTER DALDA
-2C87;N # COPTIC SMALL LETTER DALDA
-2C88;N # COPTIC CAPITAL LETTER EIE
-2C89;N # COPTIC SMALL LETTER EIE
-2C8A;N # COPTIC CAPITAL LETTER SOU
-2C8B;N # COPTIC SMALL LETTER SOU
-2C8C;N # COPTIC CAPITAL LETTER ZATA
-2C8D;N # COPTIC SMALL LETTER ZATA
-2C8E;N # COPTIC CAPITAL LETTER HATE
-2C8F;N # COPTIC SMALL LETTER HATE
-2C90;N # COPTIC CAPITAL LETTER THETHE
-2C91;N # COPTIC SMALL LETTER THETHE
-2C92;N # COPTIC CAPITAL LETTER IAUDA
-2C93;N # COPTIC SMALL LETTER IAUDA
-2C94;N # COPTIC CAPITAL LETTER KAPA
-2C95;N # COPTIC SMALL LETTER KAPA
-2C96;N # COPTIC CAPITAL LETTER LAULA
-2C97;N # COPTIC SMALL LETTER LAULA
-2C98;N # COPTIC CAPITAL LETTER MI
-2C99;N # COPTIC SMALL LETTER MI
-2C9A;N # COPTIC CAPITAL LETTER NI
-2C9B;N # COPTIC SMALL LETTER NI
-2C9C;N # COPTIC CAPITAL LETTER KSI
-2C9D;N # COPTIC SMALL LETTER KSI
-2C9E;N # COPTIC CAPITAL LETTER O
-2C9F;N # COPTIC SMALL LETTER O
-2CA0;N # COPTIC CAPITAL LETTER PI
-2CA1;N # COPTIC SMALL LETTER PI
-2CA2;N # COPTIC CAPITAL LETTER RO
-2CA3;N # COPTIC SMALL LETTER RO
-2CA4;N # COPTIC CAPITAL LETTER SIMA
-2CA5;N # COPTIC SMALL LETTER SIMA
-2CA6;N # COPTIC CAPITAL LETTER TAU
-2CA7;N # COPTIC SMALL LETTER TAU
-2CA8;N # COPTIC CAPITAL LETTER UA
-2CA9;N # COPTIC SMALL LETTER UA
-2CAA;N # COPTIC CAPITAL LETTER FI
-2CAB;N # COPTIC SMALL LETTER FI
-2CAC;N # COPTIC CAPITAL LETTER KHI
-2CAD;N # COPTIC SMALL LETTER KHI
-2CAE;N # COPTIC CAPITAL LETTER PSI
-2CAF;N # COPTIC SMALL LETTER PSI
-2CB0;N # COPTIC CAPITAL LETTER OOU
-2CB1;N # COPTIC SMALL LETTER OOU
-2CB2;N # COPTIC CAPITAL LETTER DIALECT-P ALEF
-2CB3;N # COPTIC SMALL LETTER DIALECT-P ALEF
-2CB4;N # COPTIC CAPITAL LETTER OLD COPTIC AIN
-2CB5;N # COPTIC SMALL LETTER OLD COPTIC AIN
-2CB6;N # COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
-2CB7;N # COPTIC SMALL LETTER CRYPTOGRAMMIC EIE
-2CB8;N # COPTIC CAPITAL LETTER DIALECT-P KAPA
-2CB9;N # COPTIC SMALL LETTER DIALECT-P KAPA
-2CBA;N # COPTIC CAPITAL LETTER DIALECT-P NI
-2CBB;N # COPTIC SMALL LETTER DIALECT-P NI
-2CBC;N # COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
-2CBD;N # COPTIC SMALL LETTER CRYPTOGRAMMIC NI
-2CBE;N # COPTIC CAPITAL LETTER OLD COPTIC OOU
-2CBF;N # COPTIC SMALL LETTER OLD COPTIC OOU
-2CC0;N # COPTIC CAPITAL LETTER SAMPI
-2CC1;N # COPTIC SMALL LETTER SAMPI
-2CC2;N # COPTIC CAPITAL LETTER CROSSED SHEI
-2CC3;N # COPTIC SMALL LETTER CROSSED SHEI
-2CC4;N # COPTIC CAPITAL LETTER OLD COPTIC SHEI
-2CC5;N # COPTIC SMALL LETTER OLD COPTIC SHEI
-2CC6;N # COPTIC CAPITAL LETTER OLD COPTIC ESH
-2CC7;N # COPTIC SMALL LETTER OLD COPTIC ESH
-2CC8;N # COPTIC CAPITAL LETTER AKHMIMIC KHEI
-2CC9;N # COPTIC SMALL LETTER AKHMIMIC KHEI
-2CCA;N # COPTIC CAPITAL LETTER DIALECT-P HORI
-2CCB;N # COPTIC SMALL LETTER DIALECT-P HORI
-2CCC;N # COPTIC CAPITAL LETTER OLD COPTIC HORI
-2CCD;N # COPTIC SMALL LETTER OLD COPTIC HORI
-2CCE;N # COPTIC CAPITAL LETTER OLD COPTIC HA
-2CCF;N # COPTIC SMALL LETTER OLD COPTIC HA
-2CD0;N # COPTIC CAPITAL LETTER L-SHAPED HA
-2CD1;N # COPTIC SMALL LETTER L-SHAPED HA
-2CD2;N # COPTIC CAPITAL LETTER OLD COPTIC HEI
-2CD3;N # COPTIC SMALL LETTER OLD COPTIC HEI
-2CD4;N # COPTIC CAPITAL LETTER OLD COPTIC HAT
-2CD5;N # COPTIC SMALL LETTER OLD COPTIC HAT
-2CD6;N # COPTIC CAPITAL LETTER OLD COPTIC GANGIA
-2CD7;N # COPTIC SMALL LETTER OLD COPTIC GANGIA
-2CD8;N # COPTIC CAPITAL LETTER OLD COPTIC DJA
-2CD9;N # COPTIC SMALL LETTER OLD COPTIC DJA
-2CDA;N # COPTIC CAPITAL LETTER OLD COPTIC SHIMA
-2CDB;N # COPTIC SMALL LETTER OLD COPTIC SHIMA
-2CDC;N # COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
-2CDD;N # COPTIC SMALL LETTER OLD NUBIAN SHIMA
-2CDE;N # COPTIC CAPITAL LETTER OLD NUBIAN NGI
-2CDF;N # COPTIC SMALL LETTER OLD NUBIAN NGI
-2CE0;N # COPTIC CAPITAL LETTER OLD NUBIAN NYI
-2CE1;N # COPTIC SMALL LETTER OLD NUBIAN NYI
-2CE2;N # COPTIC CAPITAL LETTER OLD NUBIAN WAU
-2CE3;N # COPTIC SMALL LETTER OLD NUBIAN WAU
-2CE4;N # COPTIC SYMBOL KAI
-2CE5;N # COPTIC SYMBOL MI RO
-2CE6;N # COPTIC SYMBOL PI RO
-2CE7;N # COPTIC SYMBOL STAUROS
-2CE8;N # COPTIC SYMBOL TAU RO
-2CE9;N # COPTIC SYMBOL KHI RO
-2CEA;N # COPTIC SYMBOL SHIMA SIMA
-2CF9;N # COPTIC OLD NUBIAN FULL STOP
-2CFA;N # COPTIC OLD NUBIAN DIRECT QUESTION MARK
-2CFB;N # COPTIC OLD NUBIAN INDIRECT QUESTION MARK
-2CFC;N # COPTIC OLD NUBIAN VERSE DIVIDER
-2CFD;N # COPTIC FRACTION ONE HALF
-2CFE;N # COPTIC FULL STOP
-2CFF;N # COPTIC MORPHOLOGICAL DIVIDER
-2D00;N # GEORGIAN SMALL LETTER AN
-2D01;N # GEORGIAN SMALL LETTER BAN
-2D02;N # GEORGIAN SMALL LETTER GAN
-2D03;N # GEORGIAN SMALL LETTER DON
-2D04;N # GEORGIAN SMALL LETTER EN
-2D05;N # GEORGIAN SMALL LETTER VIN
-2D06;N # GEORGIAN SMALL LETTER ZEN
-2D07;N # GEORGIAN SMALL LETTER TAN
-2D08;N # GEORGIAN SMALL LETTER IN
-2D09;N # GEORGIAN SMALL LETTER KAN
-2D0A;N # GEORGIAN SMALL LETTER LAS
-2D0B;N # GEORGIAN SMALL LETTER MAN
-2D0C;N # GEORGIAN SMALL LETTER NAR
-2D0D;N # GEORGIAN SMALL LETTER ON
-2D0E;N # GEORGIAN SMALL LETTER PAR
-2D0F;N # GEORGIAN SMALL LETTER ZHAR
-2D10;N # GEORGIAN SMALL LETTER RAE
-2D11;N # GEORGIAN SMALL LETTER SAN
-2D12;N # GEORGIAN SMALL LETTER TAR
-2D13;N # GEORGIAN SMALL LETTER UN
-2D14;N # GEORGIAN SMALL LETTER PHAR
-2D15;N # GEORGIAN SMALL LETTER KHAR
-2D16;N # GEORGIAN SMALL LETTER GHAN
-2D17;N # GEORGIAN SMALL LETTER QAR
-2D18;N # GEORGIAN SMALL LETTER SHIN
-2D19;N # GEORGIAN SMALL LETTER CHIN
-2D1A;N # GEORGIAN SMALL LETTER CAN
-2D1B;N # GEORGIAN SMALL LETTER JIL
-2D1C;N # GEORGIAN SMALL LETTER CIL
-2D1D;N # GEORGIAN SMALL LETTER CHAR
-2D1E;N # GEORGIAN SMALL LETTER XAN
-2D1F;N # GEORGIAN SMALL LETTER JHAN
-2D20;N # GEORGIAN SMALL LETTER HAE
-2D21;N # GEORGIAN SMALL LETTER HE
-2D22;N # GEORGIAN SMALL LETTER HIE
-2D23;N # GEORGIAN SMALL LETTER WE
-2D24;N # GEORGIAN SMALL LETTER HAR
-2D25;N # GEORGIAN SMALL LETTER HOE
-2D30;N # TIFINAGH LETTER YA
-2D31;N # TIFINAGH LETTER YAB
-2D32;N # TIFINAGH LETTER YABH
-2D33;N # TIFINAGH LETTER YAG
-2D34;N # TIFINAGH LETTER YAGHH
-2D35;N # TIFINAGH LETTER BERBER ACADEMY YAJ
-2D36;N # TIFINAGH LETTER YAJ
-2D37;N # TIFINAGH LETTER YAD
-2D38;N # TIFINAGH LETTER YADH
-2D39;N # TIFINAGH LETTER YADD
-2D3A;N # TIFINAGH LETTER YADDH
-2D3B;N # TIFINAGH LETTER YEY
-2D3C;N # TIFINAGH LETTER YAF
-2D3D;N # TIFINAGH LETTER YAK
-2D3E;N # TIFINAGH LETTER TUAREG YAK
-2D3F;N # TIFINAGH LETTER YAKHH
-2D40;N # TIFINAGH LETTER YAH
-2D41;N # TIFINAGH LETTER BERBER ACADEMY YAH
-2D42;N # TIFINAGH LETTER TUAREG YAH
-2D43;N # TIFINAGH LETTER YAHH
-2D44;N # TIFINAGH LETTER YAA
-2D45;N # TIFINAGH LETTER YAKH
-2D46;N # TIFINAGH LETTER TUAREG YAKH
-2D47;N # TIFINAGH LETTER YAQ
-2D48;N # TIFINAGH LETTER TUAREG YAQ
-2D49;N # TIFINAGH LETTER YI
-2D4A;N # TIFINAGH LETTER YAZH
-2D4B;N # TIFINAGH LETTER AHAGGAR YAZH
-2D4C;N # TIFINAGH LETTER TUAREG YAZH
-2D4D;N # TIFINAGH LETTER YAL
-2D4E;N # TIFINAGH LETTER YAM
-2D4F;N # TIFINAGH LETTER YAN
-2D50;N # TIFINAGH LETTER TUAREG YAGN
-2D51;N # TIFINAGH LETTER TUAREG YANG
-2D52;N # TIFINAGH LETTER YAP
-2D53;N # TIFINAGH LETTER YU
-2D54;N # TIFINAGH LETTER YAR
-2D55;N # TIFINAGH LETTER YARR
-2D56;N # TIFINAGH LETTER YAGH
-2D57;N # TIFINAGH LETTER TUAREG YAGH
-2D58;N # TIFINAGH LETTER AYER YAGH
-2D59;N # TIFINAGH LETTER YAS
-2D5A;N # TIFINAGH LETTER YASS
-2D5B;N # TIFINAGH LETTER YASH
-2D5C;N # TIFINAGH LETTER YAT
-2D5D;N # TIFINAGH LETTER YATH
-2D5E;N # TIFINAGH LETTER YACH
-2D5F;N # TIFINAGH LETTER YATT
-2D60;N # TIFINAGH LETTER YAV
-2D61;N # TIFINAGH LETTER YAW
-2D62;N # TIFINAGH LETTER YAY
-2D63;N # TIFINAGH LETTER YAZ
-2D64;N # TIFINAGH LETTER TAWELLEMET YAZ
-2D65;N # TIFINAGH LETTER YAZZ
-2D6F;N # TIFINAGH MODIFIER LETTER LABIALIZATION MARK
-2D80;N # ETHIOPIC SYLLABLE LOA
-2D81;N # ETHIOPIC SYLLABLE MOA
-2D82;N # ETHIOPIC SYLLABLE ROA
-2D83;N # ETHIOPIC SYLLABLE SOA
-2D84;N # ETHIOPIC SYLLABLE SHOA
-2D85;N # ETHIOPIC SYLLABLE BOA
-2D86;N # ETHIOPIC SYLLABLE TOA
-2D87;N # ETHIOPIC SYLLABLE COA
-2D88;N # ETHIOPIC SYLLABLE NOA
-2D89;N # ETHIOPIC SYLLABLE NYOA
-2D8A;N # ETHIOPIC SYLLABLE GLOTTAL OA
-2D8B;N # ETHIOPIC SYLLABLE ZOA
-2D8C;N # ETHIOPIC SYLLABLE DOA
-2D8D;N # ETHIOPIC SYLLABLE DDOA
-2D8E;N # ETHIOPIC SYLLABLE JOA
-2D8F;N # ETHIOPIC SYLLABLE THOA
-2D90;N # ETHIOPIC SYLLABLE CHOA
-2D91;N # ETHIOPIC SYLLABLE PHOA
-2D92;N # ETHIOPIC SYLLABLE POA
-2D93;N # ETHIOPIC SYLLABLE GGWA
-2D94;N # ETHIOPIC SYLLABLE GGWI
-2D95;N # ETHIOPIC SYLLABLE GGWEE
-2D96;N # ETHIOPIC SYLLABLE GGWE
-2DA0;N # ETHIOPIC SYLLABLE SSA
-2DA1;N # ETHIOPIC SYLLABLE SSU
-2DA2;N # ETHIOPIC SYLLABLE SSI
-2DA3;N # ETHIOPIC SYLLABLE SSAA
-2DA4;N # ETHIOPIC SYLLABLE SSEE
-2DA5;N # ETHIOPIC SYLLABLE SSE
-2DA6;N # ETHIOPIC SYLLABLE SSO
-2DA8;N # ETHIOPIC SYLLABLE CCA
-2DA9;N # ETHIOPIC SYLLABLE CCU
-2DAA;N # ETHIOPIC SYLLABLE CCI
-2DAB;N # ETHIOPIC SYLLABLE CCAA
-2DAC;N # ETHIOPIC SYLLABLE CCEE
-2DAD;N # ETHIOPIC SYLLABLE CCE
-2DAE;N # ETHIOPIC SYLLABLE CCO
-2DB0;N # ETHIOPIC SYLLABLE ZZA
-2DB1;N # ETHIOPIC SYLLABLE ZZU
-2DB2;N # ETHIOPIC SYLLABLE ZZI
-2DB3;N # ETHIOPIC SYLLABLE ZZAA
-2DB4;N # ETHIOPIC SYLLABLE ZZEE
-2DB5;N # ETHIOPIC SYLLABLE ZZE
-2DB6;N # ETHIOPIC SYLLABLE ZZO
-2DB8;N # ETHIOPIC SYLLABLE CCHA
-2DB9;N # ETHIOPIC SYLLABLE CCHU
-2DBA;N # ETHIOPIC SYLLABLE CCHI
-2DBB;N # ETHIOPIC SYLLABLE CCHAA
-2DBC;N # ETHIOPIC SYLLABLE CCHEE
-2DBD;N # ETHIOPIC SYLLABLE CCHE
-2DBE;N # ETHIOPIC SYLLABLE CCHO
-2DC0;N # ETHIOPIC SYLLABLE QYA
-2DC1;N # ETHIOPIC SYLLABLE QYU
-2DC2;N # ETHIOPIC SYLLABLE QYI
-2DC3;N # ETHIOPIC SYLLABLE QYAA
-2DC4;N # ETHIOPIC SYLLABLE QYEE
-2DC5;N # ETHIOPIC SYLLABLE QYE
-2DC6;N # ETHIOPIC SYLLABLE QYO
-2DC8;N # ETHIOPIC SYLLABLE KYA
-2DC9;N # ETHIOPIC SYLLABLE KYU
-2DCA;N # ETHIOPIC SYLLABLE KYI
-2DCB;N # ETHIOPIC SYLLABLE KYAA
-2DCC;N # ETHIOPIC SYLLABLE KYEE
-2DCD;N # ETHIOPIC SYLLABLE KYE
-2DCE;N # ETHIOPIC SYLLABLE KYO
-2DD0;N # ETHIOPIC SYLLABLE XYA
-2DD1;N # ETHIOPIC SYLLABLE XYU
-2DD2;N # ETHIOPIC SYLLABLE XYI
-2DD3;N # ETHIOPIC SYLLABLE XYAA
-2DD4;N # ETHIOPIC SYLLABLE XYEE
-2DD5;N # ETHIOPIC SYLLABLE XYE
-2DD6;N # ETHIOPIC SYLLABLE XYO
-2DD8;N # ETHIOPIC SYLLABLE GYA
-2DD9;N # ETHIOPIC SYLLABLE GYU
-2DDA;N # ETHIOPIC SYLLABLE GYI
-2DDB;N # ETHIOPIC SYLLABLE GYAA
-2DDC;N # ETHIOPIC SYLLABLE GYEE
-2DDD;N # ETHIOPIC SYLLABLE GYE
-2DDE;N # ETHIOPIC SYLLABLE GYO
-2E00;N # RIGHT ANGLE SUBSTITUTION MARKER
-2E01;N # RIGHT ANGLE DOTTED SUBSTITUTION MARKER
-2E02;N # LEFT SUBSTITUTION BRACKET
-2E03;N # RIGHT SUBSTITUTION BRACKET
-2E04;N # LEFT DOTTED SUBSTITUTION BRACKET
-2E05;N # RIGHT DOTTED SUBSTITUTION BRACKET
-2E06;N # RAISED INTERPOLATION MARKER
-2E07;N # RAISED DOTTED INTERPOLATION MARKER
-2E08;N # DOTTED TRANSPOSITION MARKER
-2E09;N # LEFT TRANSPOSITION BRACKET
-2E0A;N # RIGHT TRANSPOSITION BRACKET
-2E0B;N # RAISED SQUARE
-2E0C;N # LEFT RAISED OMISSION BRACKET
-2E0D;N # RIGHT RAISED OMISSION BRACKET
-2E0E;N # EDITORIAL CORONIS
-2E0F;N # PARAGRAPHOS
-2E10;N # FORKED PARAGRAPHOS
-2E11;N # REVERSED FORKED PARAGRAPHOS
-2E12;N # HYPODIASTOLE
-2E13;N # DOTTED OBELOS
-2E14;N # DOWNWARDS ANCORA
-2E15;N # UPWARDS ANCORA
-2E16;N # DOTTED RIGHT-POINTING ANGLE
-2E17;N # DOUBLE OBLIQUE HYPHEN
-2E1C;N # LEFT LOW PARAPHRASE BRACKET
-2E1D;N # RIGHT LOW PARAPHRASE BRACKET
-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;F # 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;W # LEFT DOUBLE ANGLE BRACKET
-300B;W # 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;W # LEFT WHITE SQUARE BRACKET
-301B;W # 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
-303B;W # VERTICAL IDEOGRAPHIC ITERATION MARK
-303C;W # MASU MARK
-303D;W # PART ALTERNATION MARK
-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
-3095;W # HIRAGANA LETTER SMALL KA
-3096;W # HIRAGANA LETTER SMALL KE
-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
-309F;W # HIRAGANA DIGRAPH YORI
-30A0;W # KATAKANA-HIRAGANA DOUBLE HYPHEN
-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
-30FF;W # KATAKANA DIGRAPH KOTO
-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
-31C0;W # CJK STROKE T
-31C1;W # CJK STROKE WG
-31C2;W # CJK STROKE XG
-31C3;W # CJK STROKE BXG
-31C4;W # CJK STROKE SW
-31C5;W # CJK STROKE HZZ
-31C6;W # CJK STROKE HZG
-31C7;W # CJK STROKE HP
-31C8;W # CJK STROKE HZWG
-31C9;W # CJK STROKE SZWG
-31CA;W # CJK STROKE HZT
-31CB;W # CJK STROKE HZZP
-31CC;W # CJK STROKE HPWG
-31CD;W # CJK STROKE HZW
-31CE;W # CJK STROKE HZZZ
-31CF;W # CJK STROKE N
-31F0;W # KATAKANA LETTER SMALL KU
-31F1;W # KATAKANA LETTER SMALL SI
-31F2;W # KATAKANA LETTER SMALL SU
-31F3;W # KATAKANA LETTER SMALL TO
-31F4;W # KATAKANA LETTER SMALL NU
-31F5;W # KATAKANA LETTER SMALL HA
-31F6;W # KATAKANA LETTER SMALL HI
-31F7;W # KATAKANA LETTER SMALL HU
-31F8;W # KATAKANA LETTER SMALL HE
-31F9;W # KATAKANA LETTER SMALL HO
-31FA;W # KATAKANA LETTER SMALL MU
-31FB;W # KATAKANA LETTER SMALL RA
-31FC;W # KATAKANA LETTER SMALL RI
-31FD;W # KATAKANA LETTER SMALL RU
-31FE;W # KATAKANA LETTER SMALL RE
-31FF;W # KATAKANA LETTER SMALL RO
-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
-321D;W # PARENTHESIZED KOREAN CHARACTER OJEON
-321E;W # PARENTHESIZED KOREAN CHARACTER O HU
-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
-3250;W # PARTNERSHIP SIGN
-3251;W # CIRCLED NUMBER TWENTY ONE
-3252;W # CIRCLED NUMBER TWENTY TWO
-3253;W # CIRCLED NUMBER TWENTY THREE
-3254;W # CIRCLED NUMBER TWENTY FOUR
-3255;W # CIRCLED NUMBER TWENTY FIVE
-3256;W # CIRCLED NUMBER TWENTY SIX
-3257;W # CIRCLED NUMBER TWENTY SEVEN
-3258;W # CIRCLED NUMBER TWENTY EIGHT
-3259;W # CIRCLED NUMBER TWENTY NINE
-325A;W # CIRCLED NUMBER THIRTY
-325B;W # CIRCLED NUMBER THIRTY ONE
-325C;W # CIRCLED NUMBER THIRTY TWO
-325D;W # CIRCLED NUMBER THIRTY THREE
-325E;W # CIRCLED NUMBER THIRTY FOUR
-325F;W # CIRCLED NUMBER THIRTY FIVE
-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
-327C;W # CIRCLED KOREAN CHARACTER CHAMKO
-327D;W # CIRCLED KOREAN CHARACTER JUEUI
-327E;W # CIRCLED HANGUL IEUNG U
-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
-32B1;W # CIRCLED NUMBER THIRTY SIX
-32B2;W # CIRCLED NUMBER THIRTY SEVEN
-32B3;W # CIRCLED NUMBER THIRTY EIGHT
-32B4;W # CIRCLED NUMBER THIRTY NINE
-32B5;W # CIRCLED NUMBER FORTY
-32B6;W # CIRCLED NUMBER FORTY ONE
-32B7;W # CIRCLED NUMBER FORTY TWO
-32B8;W # CIRCLED NUMBER FORTY THREE
-32B9;W # CIRCLED NUMBER FORTY FOUR
-32BA;W # CIRCLED NUMBER FORTY FIVE
-32BB;W # CIRCLED NUMBER FORTY SIX
-32BC;W # CIRCLED NUMBER FORTY SEVEN
-32BD;W # CIRCLED NUMBER FORTY EIGHT
-32BE;W # CIRCLED NUMBER FORTY NINE
-32BF;W # CIRCLED NUMBER FIFTY
-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
-32CC;W # SQUARE HG
-32CD;W # SQUARE ERG
-32CE;W # SQUARE EV
-32CF;W # LIMITED LIABILITY SIGN
-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
-3377;W # SQUARE DM
-3378;W # SQUARE DM SQUARED
-3379;W # SQUARE DM CUBED
-337A;W # SQUARE IU
-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
-33DE;W # SQUARE V OVER M
-33DF;W # SQUARE A OVER M
-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
-33FF;W # SQUARE GAL
-3400..4DB5;W # <CJK Ideograph Extension A, First>..<CJK Ideograph Extension A, Last>
-4DC0;N # HEXAGRAM FOR THE CREATIVE HEAVEN
-4DC1;N # HEXAGRAM FOR THE RECEPTIVE EARTH
-4DC2;N # HEXAGRAM FOR DIFFICULTY AT THE BEGINNING
-4DC3;N # HEXAGRAM FOR YOUTHFUL FOLLY
-4DC4;N # HEXAGRAM FOR WAITING
-4DC5;N # HEXAGRAM FOR CONFLICT
-4DC6;N # HEXAGRAM FOR THE ARMY
-4DC7;N # HEXAGRAM FOR HOLDING TOGETHER
-4DC8;N # HEXAGRAM FOR SMALL TAMING
-4DC9;N # HEXAGRAM FOR TREADING
-4DCA;N # HEXAGRAM FOR PEACE
-4DCB;N # HEXAGRAM FOR STANDSTILL
-4DCC;N # HEXAGRAM FOR FELLOWSHIP
-4DCD;N # HEXAGRAM FOR GREAT POSSESSION
-4DCE;N # HEXAGRAM FOR MODESTY
-4DCF;N # HEXAGRAM FOR ENTHUSIASM
-4DD0;N # HEXAGRAM FOR FOLLOWING
-4DD1;N # HEXAGRAM FOR WORK ON THE DECAYED
-4DD2;N # HEXAGRAM FOR APPROACH
-4DD3;N # HEXAGRAM FOR CONTEMPLATION
-4DD4;N # HEXAGRAM FOR BITING THROUGH
-4DD5;N # HEXAGRAM FOR GRACE
-4DD6;N # HEXAGRAM FOR SPLITTING APART
-4DD7;N # HEXAGRAM FOR RETURN
-4DD8;N # HEXAGRAM FOR INNOCENCE
-4DD9;N # HEXAGRAM FOR GREAT TAMING
-4DDA;N # HEXAGRAM FOR MOUTH CORNERS
-4DDB;N # HEXAGRAM FOR GREAT PREPONDERANCE
-4DDC;N # HEXAGRAM FOR THE ABYSMAL WATER
-4DDD;N # HEXAGRAM FOR THE CLINGING FIRE
-4DDE;N # HEXAGRAM FOR INFLUENCE
-4DDF;N # HEXAGRAM FOR DURATION
-4DE0;N # HEXAGRAM FOR RETREAT
-4DE1;N # HEXAGRAM FOR GREAT POWER
-4DE2;N # HEXAGRAM FOR PROGRESS
-4DE3;N # HEXAGRAM FOR DARKENING OF THE LIGHT
-4DE4;N # HEXAGRAM FOR THE FAMILY
-4DE5;N # HEXAGRAM FOR OPPOSITION
-4DE6;N # HEXAGRAM FOR OBSTRUCTION
-4DE7;N # HEXAGRAM FOR DELIVERANCE
-4DE8;N # HEXAGRAM FOR DECREASE
-4DE9;N # HEXAGRAM FOR INCREASE
-4DEA;N # HEXAGRAM FOR BREAKTHROUGH
-4DEB;N # HEXAGRAM FOR COMING TO MEET
-4DEC;N # HEXAGRAM FOR GATHERING TOGETHER
-4DED;N # HEXAGRAM FOR PUSHING UPWARD
-4DEE;N # HEXAGRAM FOR OPPRESSION
-4DEF;N # HEXAGRAM FOR THE WELL
-4DF0;N # HEXAGRAM FOR REVOLUTION
-4DF1;N # HEXAGRAM FOR THE CAULDRON
-4DF2;N # HEXAGRAM FOR THE AROUSING THUNDER
-4DF3;N # HEXAGRAM FOR THE KEEPING STILL MOUNTAIN
-4DF4;N # HEXAGRAM FOR DEVELOPMENT
-4DF5;N # HEXAGRAM FOR THE MARRYING MAIDEN
-4DF6;N # HEXAGRAM FOR ABUNDANCE
-4DF7;N # HEXAGRAM FOR THE WANDERER
-4DF8;N # HEXAGRAM FOR THE GENTLE WIND
-4DF9;N # HEXAGRAM FOR THE JOYOUS LAKE
-4DFA;N # HEXAGRAM FOR DISPERSION
-4DFB;N # HEXAGRAM FOR LIMITATION
-4DFC;N # HEXAGRAM FOR INNER TRUTH
-4DFD;N # HEXAGRAM FOR SMALL PREPONDERANCE
-4DFE;N # HEXAGRAM FOR AFTER COMPLETION
-4DFF;N # HEXAGRAM FOR BEFORE COMPLETION
-4E00..9FBB;W # <CJK Ideograph, First>..<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
-A4A2;W # YI RADICAL ZUP
-A4A3;W # YI RADICAL CYT
-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
-A4B4;W # YI RADICAL NZUP
-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
-A4C1;W # YI RADICAL ZUR
-A4C2;W # YI RADICAL SHOP
-A4C3;W # YI RADICAL CHE
-A4C4;W # YI RADICAL ZZIET
-A4C5;W # YI RADICAL NBIE
-A4C6;W # YI RADICAL KE
-A700;N # MODIFIER LETTER CHINESE TONE YIN PING
-A701;N # MODIFIER LETTER CHINESE TONE YANG PING
-A702;N # MODIFIER LETTER CHINESE TONE YIN SHANG
-A703;N # MODIFIER LETTER CHINESE TONE YANG SHANG
-A704;N # MODIFIER LETTER CHINESE TONE YIN QU
-A705;N # MODIFIER LETTER CHINESE TONE YANG QU
-A706;N # MODIFIER LETTER CHINESE TONE YIN RU
-A707;N # MODIFIER LETTER CHINESE TONE YANG RU
-A708;N # MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR
-A709;N # MODIFIER LETTER HIGH DOTTED TONE BAR
-A70A;N # MODIFIER LETTER MID DOTTED TONE BAR
-A70B;N # MODIFIER LETTER LOW DOTTED TONE BAR
-A70C;N # MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR
-A70D;N # MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR
-A70E;N # MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR
-A70F;N # MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR
-A710;N # MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR
-A711;N # MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR
-A712;N # MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR
-A713;N # MODIFIER LETTER HIGH LEFT-STEM TONE BAR
-A714;N # MODIFIER LETTER MID LEFT-STEM TONE BAR
-A715;N # MODIFIER LETTER LOW LEFT-STEM TONE BAR
-A716;N # MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
-A800;N # SYLOTI NAGRI LETTER A
-A801;N # SYLOTI NAGRI LETTER I
-A802;N # SYLOTI NAGRI SIGN DVISVARA
-A803;N # SYLOTI NAGRI LETTER U
-A804;N # SYLOTI NAGRI LETTER E
-A805;N # SYLOTI NAGRI LETTER O
-A806;N # SYLOTI NAGRI SIGN HASANTA
-A807;N # SYLOTI NAGRI LETTER KO
-A808;N # SYLOTI NAGRI LETTER KHO
-A809;N # SYLOTI NAGRI LETTER GO
-A80A;N # SYLOTI NAGRI LETTER GHO
-A80B;N # SYLOTI NAGRI SIGN ANUSVARA
-A80C;N # SYLOTI NAGRI LETTER CO
-A80D;N # SYLOTI NAGRI LETTER CHO
-A80E;N # SYLOTI NAGRI LETTER JO
-A80F;N # SYLOTI NAGRI LETTER JHO
-A810;N # SYLOTI NAGRI LETTER TTO
-A811;N # SYLOTI NAGRI LETTER TTHO
-A812;N # SYLOTI NAGRI LETTER DDO
-A813;N # SYLOTI NAGRI LETTER DDHO
-A814;N # SYLOTI NAGRI LETTER TO
-A815;N # SYLOTI NAGRI LETTER THO
-A816;N # SYLOTI NAGRI LETTER DO
-A817;N # SYLOTI NAGRI LETTER DHO
-A818;N # SYLOTI NAGRI LETTER NO
-A819;N # SYLOTI NAGRI LETTER PO
-A81A;N # SYLOTI NAGRI LETTER PHO
-A81B;N # SYLOTI NAGRI LETTER BO
-A81C;N # SYLOTI NAGRI LETTER BHO
-A81D;N # SYLOTI NAGRI LETTER MO
-A81E;N # SYLOTI NAGRI LETTER RO
-A81F;N # SYLOTI NAGRI LETTER LO
-A820;N # SYLOTI NAGRI LETTER RRO
-A821;N # SYLOTI NAGRI LETTER SO
-A822;N # SYLOTI NAGRI LETTER HO
-A823;N # SYLOTI NAGRI VOWEL SIGN A
-A824;N # SYLOTI NAGRI VOWEL SIGN I
-A825;N # SYLOTI NAGRI VOWEL SIGN U
-A826;N # SYLOTI NAGRI VOWEL SIGN E
-A827;N # SYLOTI NAGRI VOWEL SIGN OO
-A828;N # SYLOTI NAGRI POETRY MARK-1
-A829;N # SYLOTI NAGRI POETRY MARK-2
-A82A;N # SYLOTI NAGRI POETRY MARK-3
-A82B;N # SYLOTI NAGRI POETRY MARK-4
-AC00..D7A3;W # <Hangul Syllable, First>..<Hangul Syllable, Last>
-D800..DB7F;N # <Non Private Use High Surrogate, First>..<Non Private Use High Surrogate, Last>
-DB80..DBFF;N # <Private Use High Surrogate, First>..<Private Use High Surrogate, Last>
-DC00..DFFF;N # <Low Surrogate, First>..<Low Surrogate, Last>
-E000..F8FF;A # <Private Use, First>..<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
-FA30;W # CJK COMPATIBILITY IDEOGRAPH-FA30
-FA31;W # CJK COMPATIBILITY IDEOGRAPH-FA31
-FA32;W # CJK COMPATIBILITY IDEOGRAPH-FA32
-FA33;W # CJK COMPATIBILITY IDEOGRAPH-FA33
-FA34;W # CJK COMPATIBILITY IDEOGRAPH-FA34
-FA35;W # CJK COMPATIBILITY IDEOGRAPH-FA35
-FA36;W # CJK COMPATIBILITY IDEOGRAPH-FA36
-FA37;W # CJK COMPATIBILITY IDEOGRAPH-FA37
-FA38;W # CJK COMPATIBILITY IDEOGRAPH-FA38
-FA39;W # CJK COMPATIBILITY IDEOGRAPH-FA39
-FA3A;W # CJK COMPATIBILITY IDEOGRAPH-FA3A
-FA3B;W # CJK COMPATIBILITY IDEOGRAPH-FA3B
-FA3C;W # CJK COMPATIBILITY IDEOGRAPH-FA3C
-FA3D;W # CJK COMPATIBILITY IDEOGRAPH-FA3D
-FA3E;W # CJK COMPATIBILITY IDEOGRAPH-FA3E
-FA3F;W # CJK COMPATIBILITY IDEOGRAPH-FA3F
-FA40;W # CJK COMPATIBILITY IDEOGRAPH-FA40
-FA41;W # CJK COMPATIBILITY IDEOGRAPH-FA41
-FA42;W # CJK COMPATIBILITY IDEOGRAPH-FA42
-FA43;W # CJK COMPATIBILITY IDEOGRAPH-FA43
-FA44;W # CJK COMPATIBILITY IDEOGRAPH-FA44
-FA45;W # CJK COMPATIBILITY IDEOGRAPH-FA45
-FA46;W # CJK COMPATIBILITY IDEOGRAPH-FA46
-FA47;W # CJK COMPATIBILITY IDEOGRAPH-FA47
-FA48;W # CJK COMPATIBILITY IDEOGRAPH-FA48
-FA49;W # CJK COMPATIBILITY IDEOGRAPH-FA49
-FA4A;W # CJK COMPATIBILITY IDEOGRAPH-FA4A
-FA4B;W # CJK COMPATIBILITY IDEOGRAPH-FA4B
-FA4C;W # CJK COMPATIBILITY IDEOGRAPH-FA4C
-FA4D;W # CJK COMPATIBILITY IDEOGRAPH-FA4D
-FA4E;W # CJK COMPATIBILITY IDEOGRAPH-FA4E
-FA4F;W # CJK COMPATIBILITY IDEOGRAPH-FA4F
-FA50;W # CJK COMPATIBILITY IDEOGRAPH-FA50
-FA51;W # CJK COMPATIBILITY IDEOGRAPH-FA51
-FA52;W # CJK COMPATIBILITY IDEOGRAPH-FA52
-FA53;W # CJK COMPATIBILITY IDEOGRAPH-FA53
-FA54;W # CJK COMPATIBILITY IDEOGRAPH-FA54
-FA55;W # CJK COMPATIBILITY IDEOGRAPH-FA55
-FA56;W # CJK COMPATIBILITY IDEOGRAPH-FA56
-FA57;W # CJK COMPATIBILITY IDEOGRAPH-FA57
-FA58;W # CJK COMPATIBILITY IDEOGRAPH-FA58
-FA59;W # CJK COMPATIBILITY IDEOGRAPH-FA59
-FA5A;W # CJK COMPATIBILITY IDEOGRAPH-FA5A
-FA5B;W # CJK COMPATIBILITY IDEOGRAPH-FA5B
-FA5C;W # CJK COMPATIBILITY IDEOGRAPH-FA5C
-FA5D;W # CJK COMPATIBILITY IDEOGRAPH-FA5D
-FA5E;W # CJK COMPATIBILITY IDEOGRAPH-FA5E
-FA5F;W # CJK COMPATIBILITY IDEOGRAPH-FA5F
-FA60;W # CJK COMPATIBILITY IDEOGRAPH-FA60
-FA61;W # CJK COMPATIBILITY IDEOGRAPH-FA61
-FA62;W # CJK COMPATIBILITY IDEOGRAPH-FA62
-FA63;W # CJK COMPATIBILITY IDEOGRAPH-FA63
-FA64;W # CJK COMPATIBILITY IDEOGRAPH-FA64
-FA65;W # CJK COMPATIBILITY IDEOGRAPH-FA65
-FA66;W # CJK COMPATIBILITY IDEOGRAPH-FA66
-FA67;W # CJK COMPATIBILITY IDEOGRAPH-FA67
-FA68;W # CJK COMPATIBILITY IDEOGRAPH-FA68
-FA69;W # CJK COMPATIBILITY IDEOGRAPH-FA69
-FA6A;W # CJK COMPATIBILITY IDEOGRAPH-FA6A
-FA70;W # CJK COMPATIBILITY IDEOGRAPH-FA70
-FA71;W # CJK COMPATIBILITY IDEOGRAPH-FA71
-FA72;W # CJK COMPATIBILITY IDEOGRAPH-FA72
-FA73;W # CJK COMPATIBILITY IDEOGRAPH-FA73
-FA74;W # CJK COMPATIBILITY IDEOGRAPH-FA74
-FA75;W # CJK COMPATIBILITY IDEOGRAPH-FA75
-FA76;W # CJK COMPATIBILITY IDEOGRAPH-FA76
-FA77;W # CJK COMPATIBILITY IDEOGRAPH-FA77
-FA78;W # CJK COMPATIBILITY IDEOGRAPH-FA78
-FA79;W # CJK COMPATIBILITY IDEOGRAPH-FA79
-FA7A;W # CJK COMPATIBILITY IDEOGRAPH-FA7A
-FA7B;W # CJK COMPATIBILITY IDEOGRAPH-FA7B
-FA7C;W # CJK COMPATIBILITY IDEOGRAPH-FA7C
-FA7D;W # CJK COMPATIBILITY IDEOGRAPH-FA7D
-FA7E;W # CJK COMPATIBILITY IDEOGRAPH-FA7E
-FA7F;W # CJK COMPATIBILITY IDEOGRAPH-FA7F
-FA80;W # CJK COMPATIBILITY IDEOGRAPH-FA80
-FA81;W # CJK COMPATIBILITY IDEOGRAPH-FA81
-FA82;W # CJK COMPATIBILITY IDEOGRAPH-FA82
-FA83;W # CJK COMPATIBILITY IDEOGRAPH-FA83
-FA84;W # CJK COMPATIBILITY IDEOGRAPH-FA84
-FA85;W # CJK COMPATIBILITY IDEOGRAPH-FA85
-FA86;W # CJK COMPATIBILITY IDEOGRAPH-FA86
-FA87;W # CJK COMPATIBILITY IDEOGRAPH-FA87
-FA88;W # CJK COMPATIBILITY IDEOGRAPH-FA88
-FA89;W # CJK COMPATIBILITY IDEOGRAPH-FA89
-FA8A;W # CJK COMPATIBILITY IDEOGRAPH-FA8A
-FA8B;W # CJK COMPATIBILITY IDEOGRAPH-FA8B
-FA8C;W # CJK COMPATIBILITY IDEOGRAPH-FA8C
-FA8D;W # CJK COMPATIBILITY IDEOGRAPH-FA8D
-FA8E;W # CJK COMPATIBILITY IDEOGRAPH-FA8E
-FA8F;W # CJK COMPATIBILITY IDEOGRAPH-FA8F
-FA90;W # CJK COMPATIBILITY IDEOGRAPH-FA90
-FA91;W # CJK COMPATIBILITY IDEOGRAPH-FA91
-FA92;W # CJK COMPATIBILITY IDEOGRAPH-FA92
-FA93;W # CJK COMPATIBILITY IDEOGRAPH-FA93
-FA94;W # CJK COMPATIBILITY IDEOGRAPH-FA94
-FA95;W # CJK COMPATIBILITY IDEOGRAPH-FA95
-FA96;W # CJK COMPATIBILITY IDEOGRAPH-FA96
-FA97;W # CJK COMPATIBILITY IDEOGRAPH-FA97
-FA98;W # CJK COMPATIBILITY IDEOGRAPH-FA98
-FA99;W # CJK COMPATIBILITY IDEOGRAPH-FA99
-FA9A;W # CJK COMPATIBILITY IDEOGRAPH-FA9A
-FA9B;W # CJK COMPATIBILITY IDEOGRAPH-FA9B
-FA9C;W # CJK COMPATIBILITY IDEOGRAPH-FA9C
-FA9D;W # CJK COMPATIBILITY IDEOGRAPH-FA9D
-FA9E;W # CJK COMPATIBILITY IDEOGRAPH-FA9E
-FA9F;W # CJK COMPATIBILITY IDEOGRAPH-FA9F
-FAA0;W # CJK COMPATIBILITY IDEOGRAPH-FAA0
-FAA1;W # CJK COMPATIBILITY IDEOGRAPH-FAA1
-FAA2;W # CJK COMPATIBILITY IDEOGRAPH-FAA2
-FAA3;W # CJK COMPATIBILITY IDEOGRAPH-FAA3
-FAA4;W # CJK COMPATIBILITY IDEOGRAPH-FAA4
-FAA5;W # CJK COMPATIBILITY IDEOGRAPH-FAA5
-FAA6;W # CJK COMPATIBILITY IDEOGRAPH-FAA6
-FAA7;W # CJK COMPATIBILITY IDEOGRAPH-FAA7
-FAA8;W # CJK COMPATIBILITY IDEOGRAPH-FAA8
-FAA9;W # CJK COMPATIBILITY IDEOGRAPH-FAA9
-FAAA;W # CJK COMPATIBILITY IDEOGRAPH-FAAA
-FAAB;W # CJK COMPATIBILITY IDEOGRAPH-FAAB
-FAAC;W # CJK COMPATIBILITY IDEOGRAPH-FAAC
-FAAD;W # CJK COMPATIBILITY IDEOGRAPH-FAAD
-FAAE;W # CJK COMPATIBILITY IDEOGRAPH-FAAE
-FAAF;W # CJK COMPATIBILITY IDEOGRAPH-FAAF
-FAB0;W # CJK COMPATIBILITY IDEOGRAPH-FAB0
-FAB1;W # CJK COMPATIBILITY IDEOGRAPH-FAB1
-FAB2;W # CJK COMPATIBILITY IDEOGRAPH-FAB2
-FAB3;W # CJK COMPATIBILITY IDEOGRAPH-FAB3
-FAB4;W # CJK COMPATIBILITY IDEOGRAPH-FAB4
-FAB5;W # CJK COMPATIBILITY IDEOGRAPH-FAB5
-FAB6;W # CJK COMPATIBILITY IDEOGRAPH-FAB6
-FAB7;W # CJK COMPATIBILITY IDEOGRAPH-FAB7
-FAB8;W # CJK COMPATIBILITY IDEOGRAPH-FAB8
-FAB9;W # CJK COMPATIBILITY IDEOGRAPH-FAB9
-FABA;W # CJK COMPATIBILITY IDEOGRAPH-FABA
-FABB;W # CJK COMPATIBILITY IDEOGRAPH-FABB
-FABC;W # CJK COMPATIBILITY IDEOGRAPH-FABC
-FABD;W # CJK COMPATIBILITY IDEOGRAPH-FABD
-FABE;W # CJK COMPATIBILITY IDEOGRAPH-FABE
-FABF;W # CJK COMPATIBILITY IDEOGRAPH-FABF
-FAC0;W # CJK COMPATIBILITY IDEOGRAPH-FAC0
-FAC1;W # CJK COMPATIBILITY IDEOGRAPH-FAC1
-FAC2;W # CJK COMPATIBILITY IDEOGRAPH-FAC2
-FAC3;W # CJK COMPATIBILITY IDEOGRAPH-FAC3
-FAC4;W # CJK COMPATIBILITY IDEOGRAPH-FAC4
-FAC5;W # CJK COMPATIBILITY IDEOGRAPH-FAC5
-FAC6;W # CJK COMPATIBILITY IDEOGRAPH-FAC6
-FAC7;W # CJK COMPATIBILITY IDEOGRAPH-FAC7
-FAC8;W # CJK COMPATIBILITY IDEOGRAPH-FAC8
-FAC9;W # CJK COMPATIBILITY IDEOGRAPH-FAC9
-FACA;W # CJK COMPATIBILITY IDEOGRAPH-FACA
-FACB;W # CJK COMPATIBILITY IDEOGRAPH-FACB
-FACC;W # CJK COMPATIBILITY IDEOGRAPH-FACC
-FACD;W # CJK COMPATIBILITY IDEOGRAPH-FACD
-FACE;W # CJK COMPATIBILITY IDEOGRAPH-FACE
-FACF;W # CJK COMPATIBILITY IDEOGRAPH-FACF
-FAD0;W # CJK COMPATIBILITY IDEOGRAPH-FAD0
-FAD1;W # CJK COMPATIBILITY IDEOGRAPH-FAD1
-FAD2;W # CJK COMPATIBILITY IDEOGRAPH-FAD2
-FAD3;W # CJK COMPATIBILITY IDEOGRAPH-FAD3
-FAD4;W # CJK COMPATIBILITY IDEOGRAPH-FAD4
-FAD5;W # CJK COMPATIBILITY IDEOGRAPH-FAD5
-FAD6;W # CJK COMPATIBILITY IDEOGRAPH-FAD6
-FAD7;W # CJK COMPATIBILITY IDEOGRAPH-FAD7
-FAD8;W # CJK COMPATIBILITY IDEOGRAPH-FAD8
-FAD9;W # CJK COMPATIBILITY IDEOGRAPH-FAD9
-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
-FDFC;N # RIAL SIGN
-FDFD;N # ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
-FE00;A # VARIATION SELECTOR-1
-FE01;A # VARIATION SELECTOR-2
-FE02;A # VARIATION SELECTOR-3
-FE03;A # VARIATION SELECTOR-4
-FE04;A # VARIATION SELECTOR-5
-FE05;A # VARIATION SELECTOR-6
-FE06;A # VARIATION SELECTOR-7
-FE07;A # VARIATION SELECTOR-8
-FE08;A # VARIATION SELECTOR-9
-FE09;A # VARIATION SELECTOR-10
-FE0A;A # VARIATION SELECTOR-11
-FE0B;A # VARIATION SELECTOR-12
-FE0C;A # VARIATION SELECTOR-13
-FE0D;A # VARIATION SELECTOR-14
-FE0E;A # VARIATION SELECTOR-15
-FE0F;A # VARIATION SELECTOR-16
-FE10;W # PRESENTATION FORM FOR VERTICAL COMMA
-FE11;W # PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA
-FE12;W # PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP
-FE13;W # PRESENTATION FORM FOR VERTICAL COLON
-FE14;W # PRESENTATION FORM FOR VERTICAL SEMICOLON
-FE15;W # PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK
-FE16;W # PRESENTATION FORM FOR VERTICAL QUESTION MARK
-FE17;W # PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
-FE18;W # PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
-FE19;W # PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
-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
-FE45;W # SESAME DOT
-FE46;W # WHITE SESAME DOT
-FE47;W # PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
-FE48;W # PRESENTATION FORM FOR VERTICAL RIGHT SQUARE 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
-FE73;N # ARABIC TAIL FRAGMENT
-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
-FF5F;F # FULLWIDTH LEFT WHITE PARENTHESIS
-FF60;F # FULLWIDTH RIGHT WHITE PARENTHESIS
-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
-10000;N # LINEAR B SYLLABLE B008 A
-10001;N # LINEAR B SYLLABLE B038 E
-10002;N # LINEAR B SYLLABLE B028 I
-10003;N # LINEAR B SYLLABLE B061 O
-10004;N # LINEAR B SYLLABLE B010 U
-10005;N # LINEAR B SYLLABLE B001 DA
-10006;N # LINEAR B SYLLABLE B045 DE
-10007;N # LINEAR B SYLLABLE B007 DI
-10008;N # LINEAR B SYLLABLE B014 DO
-10009;N # LINEAR B SYLLABLE B051 DU
-1000A;N # LINEAR B SYLLABLE B057 JA
-1000B;N # LINEAR B SYLLABLE B046 JE
-1000D;N # LINEAR B SYLLABLE B036 JO
-1000E;N # LINEAR B SYLLABLE B065 JU
-1000F;N # LINEAR B SYLLABLE B077 KA
-10010;N # LINEAR B SYLLABLE B044 KE
-10011;N # LINEAR B SYLLABLE B067 KI
-10012;N # LINEAR B SYLLABLE B070 KO
-10013;N # LINEAR B SYLLABLE B081 KU
-10014;N # LINEAR B SYLLABLE B080 MA
-10015;N # LINEAR B SYLLABLE B013 ME
-10016;N # LINEAR B SYLLABLE B073 MI
-10017;N # LINEAR B SYLLABLE B015 MO
-10018;N # LINEAR B SYLLABLE B023 MU
-10019;N # LINEAR B SYLLABLE B006 NA
-1001A;N # LINEAR B SYLLABLE B024 NE
-1001B;N # LINEAR B SYLLABLE B030 NI
-1001C;N # LINEAR B SYLLABLE B052 NO
-1001D;N # LINEAR B SYLLABLE B055 NU
-1001E;N # LINEAR B SYLLABLE B003 PA
-1001F;N # LINEAR B SYLLABLE B072 PE
-10020;N # LINEAR B SYLLABLE B039 PI
-10021;N # LINEAR B SYLLABLE B011 PO
-10022;N # LINEAR B SYLLABLE B050 PU
-10023;N # LINEAR B SYLLABLE B016 QA
-10024;N # LINEAR B SYLLABLE B078 QE
-10025;N # LINEAR B SYLLABLE B021 QI
-10026;N # LINEAR B SYLLABLE B032 QO
-10028;N # LINEAR B SYLLABLE B060 RA
-10029;N # LINEAR B SYLLABLE B027 RE
-1002A;N # LINEAR B SYLLABLE B053 RI
-1002B;N # LINEAR B SYLLABLE B002 RO
-1002C;N # LINEAR B SYLLABLE B026 RU
-1002D;N # LINEAR B SYLLABLE B031 SA
-1002E;N # LINEAR B SYLLABLE B009 SE
-1002F;N # LINEAR B SYLLABLE B041 SI
-10030;N # LINEAR B SYLLABLE B012 SO
-10031;N # LINEAR B SYLLABLE B058 SU
-10032;N # LINEAR B SYLLABLE B059 TA
-10033;N # LINEAR B SYLLABLE B004 TE
-10034;N # LINEAR B SYLLABLE B037 TI
-10035;N # LINEAR B SYLLABLE B005 TO
-10036;N # LINEAR B SYLLABLE B069 TU
-10037;N # LINEAR B SYLLABLE B054 WA
-10038;N # LINEAR B SYLLABLE B075 WE
-10039;N # LINEAR B SYLLABLE B040 WI
-1003A;N # LINEAR B SYLLABLE B042 WO
-1003C;N # LINEAR B SYLLABLE B017 ZA
-1003D;N # LINEAR B SYLLABLE B074 ZE
-1003F;N # LINEAR B SYLLABLE B020 ZO
-10040;N # LINEAR B SYLLABLE B025 A2
-10041;N # LINEAR B SYLLABLE B043 A3
-10042;N # LINEAR B SYLLABLE B085 AU
-10043;N # LINEAR B SYLLABLE B071 DWE
-10044;N # LINEAR B SYLLABLE B090 DWO
-10045;N # LINEAR B SYLLABLE B048 NWA
-10046;N # LINEAR B SYLLABLE B029 PU2
-10047;N # LINEAR B SYLLABLE B062 PTE
-10048;N # LINEAR B SYLLABLE B076 RA2
-10049;N # LINEAR B SYLLABLE B033 RA3
-1004A;N # LINEAR B SYLLABLE B068 RO2
-1004B;N # LINEAR B SYLLABLE B066 TA2
-1004C;N # LINEAR B SYLLABLE B087 TWE
-1004D;N # LINEAR B SYLLABLE B091 TWO
-10050;N # LINEAR B SYMBOL B018
-10051;N # LINEAR B SYMBOL B019
-10052;N # LINEAR B SYMBOL B022
-10053;N # LINEAR B SYMBOL B034
-10054;N # LINEAR B SYMBOL B047
-10055;N # LINEAR B SYMBOL B049
-10056;N # LINEAR B SYMBOL B056
-10057;N # LINEAR B SYMBOL B063
-10058;N # LINEAR B SYMBOL B064
-10059;N # LINEAR B SYMBOL B079
-1005A;N # LINEAR B SYMBOL B082
-1005B;N # LINEAR B SYMBOL B083
-1005C;N # LINEAR B SYMBOL B086
-1005D;N # LINEAR B SYMBOL B089
-10080;N # LINEAR B IDEOGRAM B100 MAN
-10081;N # LINEAR B IDEOGRAM B102 WOMAN
-10082;N # LINEAR B IDEOGRAM B104 DEER
-10083;N # LINEAR B IDEOGRAM B105 EQUID
-10084;N # LINEAR B IDEOGRAM B105F MARE
-10085;N # LINEAR B IDEOGRAM B105M STALLION
-10086;N # LINEAR B IDEOGRAM B106F EWE
-10087;N # LINEAR B IDEOGRAM B106M RAM
-10088;N # LINEAR B IDEOGRAM B107F SHE-GOAT
-10089;N # LINEAR B IDEOGRAM B107M HE-GOAT
-1008A;N # LINEAR B IDEOGRAM B108F SOW
-1008B;N # LINEAR B IDEOGRAM B108M BOAR
-1008C;N # LINEAR B IDEOGRAM B109F COW
-1008D;N # LINEAR B IDEOGRAM B109M BULL
-1008E;N # LINEAR B IDEOGRAM B120 WHEAT
-1008F;N # LINEAR B IDEOGRAM B121 BARLEY
-10090;N # LINEAR B IDEOGRAM B122 OLIVE
-10091;N # LINEAR B IDEOGRAM B123 SPICE
-10092;N # LINEAR B IDEOGRAM B125 CYPERUS
-10093;N # LINEAR B MONOGRAM B127 KAPO
-10094;N # LINEAR B MONOGRAM B128 KANAKO
-10095;N # LINEAR B IDEOGRAM B130 OIL
-10096;N # LINEAR B IDEOGRAM B131 WINE
-10097;N # LINEAR B IDEOGRAM B132
-10098;N # LINEAR B MONOGRAM B133 AREPA
-10099;N # LINEAR B MONOGRAM B135 MERI
-1009A;N # LINEAR B IDEOGRAM B140 BRONZE
-1009B;N # LINEAR B IDEOGRAM B141 GOLD
-1009C;N # LINEAR B IDEOGRAM B142
-1009D;N # LINEAR B IDEOGRAM B145 WOOL
-1009E;N # LINEAR B IDEOGRAM B146
-1009F;N # LINEAR B IDEOGRAM B150
-100A0;N # LINEAR B IDEOGRAM B151 HORN
-100A1;N # LINEAR B IDEOGRAM B152
-100A2;N # LINEAR B IDEOGRAM B153
-100A3;N # LINEAR B IDEOGRAM B154
-100A4;N # LINEAR B MONOGRAM B156 TURO2
-100A5;N # LINEAR B IDEOGRAM B157
-100A6;N # LINEAR B IDEOGRAM B158
-100A7;N # LINEAR B IDEOGRAM B159 CLOTH
-100A8;N # LINEAR B IDEOGRAM B160
-100A9;N # LINEAR B IDEOGRAM B161
-100AA;N # LINEAR B IDEOGRAM B162 GARMENT
-100AB;N # LINEAR B IDEOGRAM B163 ARMOUR
-100AC;N # LINEAR B IDEOGRAM B164
-100AD;N # LINEAR B IDEOGRAM B165
-100AE;N # LINEAR B IDEOGRAM B166
-100AF;N # LINEAR B IDEOGRAM B167
-100B0;N # LINEAR B IDEOGRAM B168
-100B1;N # LINEAR B IDEOGRAM B169
-100B2;N # LINEAR B IDEOGRAM B170
-100B3;N # LINEAR B IDEOGRAM B171
-100B4;N # LINEAR B IDEOGRAM B172
-100B5;N # LINEAR B IDEOGRAM B173 MONTH
-100B6;N # LINEAR B IDEOGRAM B174
-100B7;N # LINEAR B IDEOGRAM B176 TREE
-100B8;N # LINEAR B IDEOGRAM B177
-100B9;N # LINEAR B IDEOGRAM B178
-100BA;N # LINEAR B IDEOGRAM B179
-100BB;N # LINEAR B IDEOGRAM B180
-100BC;N # LINEAR B IDEOGRAM B181
-100BD;N # LINEAR B IDEOGRAM B182
-100BE;N # LINEAR B IDEOGRAM B183
-100BF;N # LINEAR B IDEOGRAM B184
-100C0;N # LINEAR B IDEOGRAM B185
-100C1;N # LINEAR B IDEOGRAM B189
-100C2;N # LINEAR B IDEOGRAM B190
-100C3;N # LINEAR B IDEOGRAM B191 HELMET
-100C4;N # LINEAR B IDEOGRAM B220 FOOTSTOOL
-100C5;N # LINEAR B IDEOGRAM B225 BATHTUB
-100C6;N # LINEAR B IDEOGRAM B230 SPEAR
-100C7;N # LINEAR B IDEOGRAM B231 ARROW
-100C8;N # LINEAR B IDEOGRAM B232
-100C9;N # LINEAR B IDEOGRAM B233 SWORD
-100CA;N # LINEAR B IDEOGRAM B234
-100CB;N # LINEAR B IDEOGRAM B236
-100CC;N # LINEAR B IDEOGRAM B240 WHEELED CHARIOT
-100CD;N # LINEAR B IDEOGRAM B241 CHARIOT
-100CE;N # LINEAR B IDEOGRAM B242 CHARIOT FRAME
-100CF;N # LINEAR B IDEOGRAM B243 WHEEL
-100D0;N # LINEAR B IDEOGRAM B245
-100D1;N # LINEAR B IDEOGRAM B246
-100D2;N # LINEAR B MONOGRAM B247 DIPTE
-100D3;N # LINEAR B IDEOGRAM B248
-100D4;N # LINEAR B IDEOGRAM B249
-100D5;N # LINEAR B IDEOGRAM B251
-100D6;N # LINEAR B IDEOGRAM B252
-100D7;N # LINEAR B IDEOGRAM B253
-100D8;N # LINEAR B IDEOGRAM B254 DART
-100D9;N # LINEAR B IDEOGRAM B255
-100DA;N # LINEAR B IDEOGRAM B256
-100DB;N # LINEAR B IDEOGRAM B257
-100DC;N # LINEAR B IDEOGRAM B258
-100DD;N # LINEAR B IDEOGRAM B259
-100DE;N # LINEAR B IDEOGRAM VESSEL B155
-100DF;N # LINEAR B IDEOGRAM VESSEL B200
-100E0;N # LINEAR B IDEOGRAM VESSEL B201
-100E1;N # LINEAR B IDEOGRAM VESSEL B202
-100E2;N # LINEAR B IDEOGRAM VESSEL B203
-100E3;N # LINEAR B IDEOGRAM VESSEL B204
-100E4;N # LINEAR B IDEOGRAM VESSEL B205
-100E5;N # LINEAR B IDEOGRAM VESSEL B206
-100E6;N # LINEAR B IDEOGRAM VESSEL B207
-100E7;N # LINEAR B IDEOGRAM VESSEL B208
-100E8;N # LINEAR B IDEOGRAM VESSEL B209
-100E9;N # LINEAR B IDEOGRAM VESSEL B210
-100EA;N # LINEAR B IDEOGRAM VESSEL B211
-100EB;N # LINEAR B IDEOGRAM VESSEL B212
-100EC;N # LINEAR B IDEOGRAM VESSEL B213
-100ED;N # LINEAR B IDEOGRAM VESSEL B214
-100EE;N # LINEAR B IDEOGRAM VESSEL B215
-100EF;N # LINEAR B IDEOGRAM VESSEL B216
-100F0;N # LINEAR B IDEOGRAM VESSEL B217
-100F1;N # LINEAR B IDEOGRAM VESSEL B218
-100F2;N # LINEAR B IDEOGRAM VESSEL B219
-100F3;N # LINEAR B IDEOGRAM VESSEL B221
-100F4;N # LINEAR B IDEOGRAM VESSEL B222
-100F5;N # LINEAR B IDEOGRAM VESSEL B226
-100F6;N # LINEAR B IDEOGRAM VESSEL B227
-100F7;N # LINEAR B IDEOGRAM VESSEL B228
-100F8;N # LINEAR B IDEOGRAM VESSEL B229
-100F9;N # LINEAR B IDEOGRAM VESSEL B250
-100FA;N # LINEAR B IDEOGRAM VESSEL B305
-10100;N # AEGEAN WORD SEPARATOR LINE
-10101;N # AEGEAN WORD SEPARATOR DOT
-10102;N # AEGEAN CHECK MARK
-10107;N # AEGEAN NUMBER ONE
-10108;N # AEGEAN NUMBER TWO
-10109;N # AEGEAN NUMBER THREE
-1010A;N # AEGEAN NUMBER FOUR
-1010B;N # AEGEAN NUMBER FIVE
-1010C;N # AEGEAN NUMBER SIX
-1010D;N # AEGEAN NUMBER SEVEN
-1010E;N # AEGEAN NUMBER EIGHT
-1010F;N # AEGEAN NUMBER NINE
-10110;N # AEGEAN NUMBER TEN
-10111;N # AEGEAN NUMBER TWENTY
-10112;N # AEGEAN NUMBER THIRTY
-10113;N # AEGEAN NUMBER FORTY
-10114;N # AEGEAN NUMBER FIFTY
-10115;N # AEGEAN NUMBER SIXTY
-10116;N # AEGEAN NUMBER SEVENTY
-10117;N # AEGEAN NUMBER EIGHTY
-10118;N # AEGEAN NUMBER NINETY
-10119;N # AEGEAN NUMBER ONE HUNDRED
-1011A;N # AEGEAN NUMBER TWO HUNDRED
-1011B;N # AEGEAN NUMBER THREE HUNDRED
-1011C;N # AEGEAN NUMBER FOUR HUNDRED
-1011D;N # AEGEAN NUMBER FIVE HUNDRED
-1011E;N # AEGEAN NUMBER SIX HUNDRED
-1011F;N # AEGEAN NUMBER SEVEN HUNDRED
-10120;N # AEGEAN NUMBER EIGHT HUNDRED
-10121;N # AEGEAN NUMBER NINE HUNDRED
-10122;N # AEGEAN NUMBER ONE THOUSAND
-10123;N # AEGEAN NUMBER TWO THOUSAND
-10124;N # AEGEAN NUMBER THREE THOUSAND
-10125;N # AEGEAN NUMBER FOUR THOUSAND
-10126;N # AEGEAN NUMBER FIVE THOUSAND
-10127;N # AEGEAN NUMBER SIX THOUSAND
-10128;N # AEGEAN NUMBER SEVEN THOUSAND
-10129;N # AEGEAN NUMBER EIGHT THOUSAND
-1012A;N # AEGEAN NUMBER NINE THOUSAND
-1012B;N # AEGEAN NUMBER TEN THOUSAND
-1012C;N # AEGEAN NUMBER TWENTY THOUSAND
-1012D;N # AEGEAN NUMBER THIRTY THOUSAND
-1012E;N # AEGEAN NUMBER FORTY THOUSAND
-1012F;N # AEGEAN NUMBER FIFTY THOUSAND
-10130;N # AEGEAN NUMBER SIXTY THOUSAND
-10131;N # AEGEAN NUMBER SEVENTY THOUSAND
-10132;N # AEGEAN NUMBER EIGHTY THOUSAND
-10133;N # AEGEAN NUMBER NINETY THOUSAND
-10137;N # AEGEAN WEIGHT BASE UNIT
-10138;N # AEGEAN WEIGHT FIRST SUBUNIT
-10139;N # AEGEAN WEIGHT SECOND SUBUNIT
-1013A;N # AEGEAN WEIGHT THIRD SUBUNIT
-1013B;N # AEGEAN WEIGHT FOURTH SUBUNIT
-1013C;N # AEGEAN DRY MEASURE FIRST SUBUNIT
-1013D;N # AEGEAN LIQUID MEASURE FIRST SUBUNIT
-1013E;N # AEGEAN MEASURE SECOND SUBUNIT
-1013F;N # AEGEAN MEASURE THIRD SUBUNIT
-10140;N # GREEK ACROPHONIC ATTIC ONE QUARTER
-10141;N # GREEK ACROPHONIC ATTIC ONE HALF
-10142;N # GREEK ACROPHONIC ATTIC ONE DRACHMA
-10143;N # GREEK ACROPHONIC ATTIC FIVE
-10144;N # GREEK ACROPHONIC ATTIC FIFTY
-10145;N # GREEK ACROPHONIC ATTIC FIVE HUNDRED
-10146;N # GREEK ACROPHONIC ATTIC FIVE THOUSAND
-10147;N # GREEK ACROPHONIC ATTIC FIFTY THOUSAND
-10148;N # GREEK ACROPHONIC ATTIC FIVE TALENTS
-10149;N # GREEK ACROPHONIC ATTIC TEN TALENTS
-1014A;N # GREEK ACROPHONIC ATTIC FIFTY TALENTS
-1014B;N # GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS
-1014C;N # GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS
-1014D;N # GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS
-1014E;N # GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS
-1014F;N # GREEK ACROPHONIC ATTIC FIVE STATERS
-10150;N # GREEK ACROPHONIC ATTIC TEN STATERS
-10151;N # GREEK ACROPHONIC ATTIC FIFTY STATERS
-10152;N # GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS
-10153;N # GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS
-10154;N # GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS
-10155;N # GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS
-10156;N # GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS
-10157;N # GREEK ACROPHONIC ATTIC TEN MNAS
-10158;N # GREEK ACROPHONIC HERAEUM ONE PLETHRON
-10159;N # GREEK ACROPHONIC THESPIAN ONE
-1015A;N # GREEK ACROPHONIC HERMIONIAN ONE
-1015B;N # GREEK ACROPHONIC EPIDAUREAN TWO
-1015C;N # GREEK ACROPHONIC THESPIAN TWO
-1015D;N # GREEK ACROPHONIC CYRENAIC TWO DRACHMAS
-1015E;N # GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS
-1015F;N # GREEK ACROPHONIC TROEZENIAN FIVE
-10160;N # GREEK ACROPHONIC TROEZENIAN TEN
-10161;N # GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM
-10162;N # GREEK ACROPHONIC HERMIONIAN TEN
-10163;N # GREEK ACROPHONIC MESSENIAN TEN
-10164;N # GREEK ACROPHONIC THESPIAN TEN
-10165;N # GREEK ACROPHONIC THESPIAN THIRTY
-10166;N # GREEK ACROPHONIC TROEZENIAN FIFTY
-10167;N # GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM
-10168;N # GREEK ACROPHONIC HERMIONIAN FIFTY
-10169;N # GREEK ACROPHONIC THESPIAN FIFTY
-1016A;N # GREEK ACROPHONIC THESPIAN ONE HUNDRED
-1016B;N # GREEK ACROPHONIC THESPIAN THREE HUNDRED
-1016C;N # GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED
-1016D;N # GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED
-1016E;N # GREEK ACROPHONIC THESPIAN FIVE HUNDRED
-1016F;N # GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED
-10170;N # GREEK ACROPHONIC NAXIAN FIVE HUNDRED
-10171;N # GREEK ACROPHONIC THESPIAN ONE THOUSAND
-10172;N # GREEK ACROPHONIC THESPIAN FIVE THOUSAND
-10173;N # GREEK ACROPHONIC DELPHIC FIVE MNAS
-10174;N # GREEK ACROPHONIC STRATIAN FIFTY MNAS
-10175;N # GREEK ONE HALF SIGN
-10176;N # GREEK ONE HALF SIGN ALTERNATE FORM
-10177;N # GREEK TWO THIRDS SIGN
-10178;N # GREEK THREE QUARTERS SIGN
-10179;N # GREEK YEAR SIGN
-1017A;N # GREEK TALENT SIGN
-1017B;N # GREEK DRACHMA SIGN
-1017C;N # GREEK OBOL SIGN
-1017D;N # GREEK TWO OBOLS SIGN
-1017E;N # GREEK THREE OBOLS SIGN
-1017F;N # GREEK FOUR OBOLS SIGN
-10180;N # GREEK FIVE OBOLS SIGN
-10181;N # GREEK METRETES SIGN
-10182;N # GREEK KYATHOS BASE SIGN
-10183;N # GREEK LITRA SIGN
-10184;N # GREEK OUNKIA SIGN
-10185;N # GREEK XESTES SIGN
-10186;N # GREEK ARTABE SIGN
-10187;N # GREEK AROURA SIGN
-10188;N # GREEK GRAMMA SIGN
-10189;N # GREEK TRYBLION BASE SIGN
-1018A;N # GREEK ZERO SIGN
-10300;N # OLD ITALIC LETTER A
-10301;N # OLD ITALIC LETTER BE
-10302;N # OLD ITALIC LETTER KE
-10303;N # OLD ITALIC LETTER DE
-10304;N # OLD ITALIC LETTER E
-10305;N # OLD ITALIC LETTER VE
-10306;N # OLD ITALIC LETTER ZE
-10307;N # OLD ITALIC LETTER HE
-10308;N # OLD ITALIC LETTER THE
-10309;N # OLD ITALIC LETTER I
-1030A;N # OLD ITALIC LETTER KA
-1030B;N # OLD ITALIC LETTER EL
-1030C;N # OLD ITALIC LETTER EM
-1030D;N # OLD ITALIC LETTER EN
-1030E;N # OLD ITALIC LETTER ESH
-1030F;N # OLD ITALIC LETTER O
-10310;N # OLD ITALIC LETTER PE
-10311;N # OLD ITALIC LETTER SHE
-10312;N # OLD ITALIC LETTER KU
-10313;N # OLD ITALIC LETTER ER
-10314;N # OLD ITALIC LETTER ES
-10315;N # OLD ITALIC LETTER TE
-10316;N # OLD ITALIC LETTER U
-10317;N # OLD ITALIC LETTER EKS
-10318;N # OLD ITALIC LETTER PHE
-10319;N # OLD ITALIC LETTER KHE
-1031A;N # OLD ITALIC LETTER EF
-1031B;N # OLD ITALIC LETTER ERS
-1031C;N # OLD ITALIC LETTER CHE
-1031D;N # OLD ITALIC LETTER II
-1031E;N # OLD ITALIC LETTER UU
-10320;N # OLD ITALIC NUMERAL ONE
-10321;N # OLD ITALIC NUMERAL FIVE
-10322;N # OLD ITALIC NUMERAL TEN
-10323;N # OLD ITALIC NUMERAL FIFTY
-10330;N # GOTHIC LETTER AHSA
-10331;N # GOTHIC LETTER BAIRKAN
-10332;N # GOTHIC LETTER GIBA
-10333;N # GOTHIC LETTER DAGS
-10334;N # GOTHIC LETTER AIHVUS
-10335;N # GOTHIC LETTER QAIRTHRA
-10336;N # GOTHIC LETTER IUJA
-10337;N # GOTHIC LETTER HAGL
-10338;N # GOTHIC LETTER THIUTH
-10339;N # GOTHIC LETTER EIS
-1033A;N # GOTHIC LETTER KUSMA
-1033B;N # GOTHIC LETTER LAGUS
-1033C;N # GOTHIC LETTER MANNA
-1033D;N # GOTHIC LETTER NAUTHS
-1033E;N # GOTHIC LETTER JER
-1033F;N # GOTHIC LETTER URUS
-10340;N # GOTHIC LETTER PAIRTHRA
-10341;N # GOTHIC LETTER NINETY
-10342;N # GOTHIC LETTER RAIDA
-10343;N # GOTHIC LETTER SAUIL
-10344;N # GOTHIC LETTER TEIWS
-10345;N # GOTHIC LETTER WINJA
-10346;N # GOTHIC LETTER FAIHU
-10347;N # GOTHIC LETTER IGGWS
-10348;N # GOTHIC LETTER HWAIR
-10349;N # GOTHIC LETTER OTHAL
-1034A;N # GOTHIC LETTER NINE HUNDRED
-10380;N # UGARITIC LETTER ALPA
-10381;N # UGARITIC LETTER BETA
-10382;N # UGARITIC LETTER GAMLA
-10383;N # UGARITIC LETTER KHA
-10384;N # UGARITIC LETTER DELTA
-10385;N # UGARITIC LETTER HO
-10386;N # UGARITIC LETTER WO
-10387;N # UGARITIC LETTER ZETA
-10388;N # UGARITIC LETTER HOTA
-10389;N # UGARITIC LETTER TET
-1038A;N # UGARITIC LETTER YOD
-1038B;N # UGARITIC LETTER KAF
-1038C;N # UGARITIC LETTER SHIN
-1038D;N # UGARITIC LETTER LAMDA
-1038E;N # UGARITIC LETTER MEM
-1038F;N # UGARITIC LETTER DHAL
-10390;N # UGARITIC LETTER NUN
-10391;N # UGARITIC LETTER ZU
-10392;N # UGARITIC LETTER SAMKA
-10393;N # UGARITIC LETTER AIN
-10394;N # UGARITIC LETTER PU
-10395;N # UGARITIC LETTER SADE
-10396;N # UGARITIC LETTER QOPA
-10397;N # UGARITIC LETTER RASHA
-10398;N # UGARITIC LETTER THANNA
-10399;N # UGARITIC LETTER GHAIN
-1039A;N # UGARITIC LETTER TO
-1039B;N # UGARITIC LETTER I
-1039C;N # UGARITIC LETTER U
-1039D;N # UGARITIC LETTER SSU
-1039F;N # UGARITIC WORD DIVIDER
-103A0;N # OLD PERSIAN SIGN A
-103A1;N # OLD PERSIAN SIGN I
-103A2;N # OLD PERSIAN SIGN U
-103A3;N # OLD PERSIAN SIGN KA
-103A4;N # OLD PERSIAN SIGN KU
-103A5;N # OLD PERSIAN SIGN GA
-103A6;N # OLD PERSIAN SIGN GU
-103A7;N # OLD PERSIAN SIGN XA
-103A8;N # OLD PERSIAN SIGN CA
-103A9;N # OLD PERSIAN SIGN JA
-103AA;N # OLD PERSIAN SIGN JI
-103AB;N # OLD PERSIAN SIGN TA
-103AC;N # OLD PERSIAN SIGN TU
-103AD;N # OLD PERSIAN SIGN DA
-103AE;N # OLD PERSIAN SIGN DI
-103AF;N # OLD PERSIAN SIGN DU
-103B0;N # OLD PERSIAN SIGN THA
-103B1;N # OLD PERSIAN SIGN PA
-103B2;N # OLD PERSIAN SIGN BA
-103B3;N # OLD PERSIAN SIGN FA
-103B4;N # OLD PERSIAN SIGN NA
-103B5;N # OLD PERSIAN SIGN NU
-103B6;N # OLD PERSIAN SIGN MA
-103B7;N # OLD PERSIAN SIGN MI
-103B8;N # OLD PERSIAN SIGN MU
-103B9;N # OLD PERSIAN SIGN YA
-103BA;N # OLD PERSIAN SIGN VA
-103BB;N # OLD PERSIAN SIGN VI
-103BC;N # OLD PERSIAN SIGN RA
-103BD;N # OLD PERSIAN SIGN RU
-103BE;N # OLD PERSIAN SIGN LA
-103BF;N # OLD PERSIAN SIGN SA
-103C0;N # OLD PERSIAN SIGN ZA
-103C1;N # OLD PERSIAN SIGN SHA
-103C2;N # OLD PERSIAN SIGN SSA
-103C3;N # OLD PERSIAN SIGN HA
-103C8;N # OLD PERSIAN SIGN AURAMAZDAA
-103C9;N # OLD PERSIAN SIGN AURAMAZDAA-2
-103CA;N # OLD PERSIAN SIGN AURAMAZDAAHA
-103CB;N # OLD PERSIAN SIGN XSHAAYATHIYA
-103CC;N # OLD PERSIAN SIGN DAHYAAUSH
-103CD;N # OLD PERSIAN SIGN DAHYAAUSH-2
-103CE;N # OLD PERSIAN SIGN BAGA
-103CF;N # OLD PERSIAN SIGN BUUMISH
-103D0;N # OLD PERSIAN WORD DIVIDER
-103D1;N # OLD PERSIAN NUMBER ONE
-103D2;N # OLD PERSIAN NUMBER TWO
-103D3;N # OLD PERSIAN NUMBER TEN
-103D4;N # OLD PERSIAN NUMBER TWENTY
-103D5;N # OLD PERSIAN NUMBER HUNDRED
-10400;N # DESERET CAPITAL LETTER LONG I
-10401;N # DESERET CAPITAL LETTER LONG E
-10402;N # DESERET CAPITAL LETTER LONG A
-10403;N # DESERET CAPITAL LETTER LONG AH
-10404;N # DESERET CAPITAL LETTER LONG O
-10405;N # DESERET CAPITAL LETTER LONG OO
-10406;N # DESERET CAPITAL LETTER SHORT I
-10407;N # DESERET CAPITAL LETTER SHORT E
-10408;N # DESERET CAPITAL LETTER SHORT A
-10409;N # DESERET CAPITAL LETTER SHORT AH
-1040A;N # DESERET CAPITAL LETTER SHORT O
-1040B;N # DESERET CAPITAL LETTER SHORT OO
-1040C;N # DESERET CAPITAL LETTER AY
-1040D;N # DESERET CAPITAL LETTER OW
-1040E;N # DESERET CAPITAL LETTER WU
-1040F;N # DESERET CAPITAL LETTER YEE
-10410;N # DESERET CAPITAL LETTER H
-10411;N # DESERET CAPITAL LETTER PEE
-10412;N # DESERET CAPITAL LETTER BEE
-10413;N # DESERET CAPITAL LETTER TEE
-10414;N # DESERET CAPITAL LETTER DEE
-10415;N # DESERET CAPITAL LETTER CHEE
-10416;N # DESERET CAPITAL LETTER JEE
-10417;N # DESERET CAPITAL LETTER KAY
-10418;N # DESERET CAPITAL LETTER GAY
-10419;N # DESERET CAPITAL LETTER EF
-1041A;N # DESERET CAPITAL LETTER VEE
-1041B;N # DESERET CAPITAL LETTER ETH
-1041C;N # DESERET CAPITAL LETTER THEE
-1041D;N # DESERET CAPITAL LETTER ES
-1041E;N # DESERET CAPITAL LETTER ZEE
-1041F;N # DESERET CAPITAL LETTER ESH
-10420;N # DESERET CAPITAL LETTER ZHEE
-10421;N # DESERET CAPITAL LETTER ER
-10422;N # DESERET CAPITAL LETTER EL
-10423;N # DESERET CAPITAL LETTER EM
-10424;N # DESERET CAPITAL LETTER EN
-10425;N # DESERET CAPITAL LETTER ENG
-10426;N # DESERET CAPITAL LETTER OI
-10427;N # DESERET CAPITAL LETTER EW
-10428;N # DESERET SMALL LETTER LONG I
-10429;N # DESERET SMALL LETTER LONG E
-1042A;N # DESERET SMALL LETTER LONG A
-1042B;N # DESERET SMALL LETTER LONG AH
-1042C;N # DESERET SMALL LETTER LONG O
-1042D;N # DESERET SMALL LETTER LONG OO
-1042E;N # DESERET SMALL LETTER SHORT I
-1042F;N # DESERET SMALL LETTER SHORT E
-10430;N # DESERET SMALL LETTER SHORT A
-10431;N # DESERET SMALL LETTER SHORT AH
-10432;N # DESERET SMALL LETTER SHORT O
-10433;N # DESERET SMALL LETTER SHORT OO
-10434;N # DESERET SMALL LETTER AY
-10435;N # DESERET SMALL LETTER OW
-10436;N # DESERET SMALL LETTER WU
-10437;N # DESERET SMALL LETTER YEE
-10438;N # DESERET SMALL LETTER H
-10439;N # DESERET SMALL LETTER PEE
-1043A;N # DESERET SMALL LETTER BEE
-1043B;N # DESERET SMALL LETTER TEE
-1043C;N # DESERET SMALL LETTER DEE
-1043D;N # DESERET SMALL LETTER CHEE
-1043E;N # DESERET SMALL LETTER JEE
-1043F;N # DESERET SMALL LETTER KAY
-10440;N # DESERET SMALL LETTER GAY
-10441;N # DESERET SMALL LETTER EF
-10442;N # DESERET SMALL LETTER VEE
-10443;N # DESERET SMALL LETTER ETH
-10444;N # DESERET SMALL LETTER THEE
-10445;N # DESERET SMALL LETTER ES
-10446;N # DESERET SMALL LETTER ZEE
-10447;N # DESERET SMALL LETTER ESH
-10448;N # DESERET SMALL LETTER ZHEE
-10449;N # DESERET SMALL LETTER ER
-1044A;N # DESERET SMALL LETTER EL
-1044B;N # DESERET SMALL LETTER EM
-1044C;N # DESERET SMALL LETTER EN
-1044D;N # DESERET SMALL LETTER ENG
-1044E;N # DESERET SMALL LETTER OI
-1044F;N # DESERET SMALL LETTER EW
-10450;N # SHAVIAN LETTER PEEP
-10451;N # SHAVIAN LETTER TOT
-10452;N # SHAVIAN LETTER KICK
-10453;N # SHAVIAN LETTER FEE
-10454;N # SHAVIAN LETTER THIGH
-10455;N # SHAVIAN LETTER SO
-10456;N # SHAVIAN LETTER SURE
-10457;N # SHAVIAN LETTER CHURCH
-10458;N # SHAVIAN LETTER YEA
-10459;N # SHAVIAN LETTER HUNG
-1045A;N # SHAVIAN LETTER BIB
-1045B;N # SHAVIAN LETTER DEAD
-1045C;N # SHAVIAN LETTER GAG
-1045D;N # SHAVIAN LETTER VOW
-1045E;N # SHAVIAN LETTER THEY
-1045F;N # SHAVIAN LETTER ZOO
-10460;N # SHAVIAN LETTER MEASURE
-10461;N # SHAVIAN LETTER JUDGE
-10462;N # SHAVIAN LETTER WOE
-10463;N # SHAVIAN LETTER HA-HA
-10464;N # SHAVIAN LETTER LOLL
-10465;N # SHAVIAN LETTER MIME
-10466;N # SHAVIAN LETTER IF
-10467;N # SHAVIAN LETTER EGG
-10468;N # SHAVIAN LETTER ASH
-10469;N # SHAVIAN LETTER ADO
-1046A;N # SHAVIAN LETTER ON
-1046B;N # SHAVIAN LETTER WOOL
-1046C;N # SHAVIAN LETTER OUT
-1046D;N # SHAVIAN LETTER AH
-1046E;N # SHAVIAN LETTER ROAR
-1046F;N # SHAVIAN LETTER NUN
-10470;N # SHAVIAN LETTER EAT
-10471;N # SHAVIAN LETTER AGE
-10472;N # SHAVIAN LETTER ICE
-10473;N # SHAVIAN LETTER UP
-10474;N # SHAVIAN LETTER OAK
-10475;N # SHAVIAN LETTER OOZE
-10476;N # SHAVIAN LETTER OIL
-10477;N # SHAVIAN LETTER AWE
-10478;N # SHAVIAN LETTER ARE
-10479;N # SHAVIAN LETTER OR
-1047A;N # SHAVIAN LETTER AIR
-1047B;N # SHAVIAN LETTER ERR
-1047C;N # SHAVIAN LETTER ARRAY
-1047D;N # SHAVIAN LETTER EAR
-1047E;N # SHAVIAN LETTER IAN
-1047F;N # SHAVIAN LETTER YEW
-10480;N # OSMANYA LETTER ALEF
-10481;N # OSMANYA LETTER BA
-10482;N # OSMANYA LETTER TA
-10483;N # OSMANYA LETTER JA
-10484;N # OSMANYA LETTER XA
-10485;N # OSMANYA LETTER KHA
-10486;N # OSMANYA LETTER DEEL
-10487;N # OSMANYA LETTER RA
-10488;N # OSMANYA LETTER SA
-10489;N # OSMANYA LETTER SHIIN
-1048A;N # OSMANYA LETTER DHA
-1048B;N # OSMANYA LETTER CAYN
-1048C;N # OSMANYA LETTER GA
-1048D;N # OSMANYA LETTER FA
-1048E;N # OSMANYA LETTER QAAF
-1048F;N # OSMANYA LETTER KAAF
-10490;N # OSMANYA LETTER LAAN
-10491;N # OSMANYA LETTER MIIN
-10492;N # OSMANYA LETTER NUUN
-10493;N # OSMANYA LETTER WAW
-10494;N # OSMANYA LETTER HA
-10495;N # OSMANYA LETTER YA
-10496;N # OSMANYA LETTER A
-10497;N # OSMANYA LETTER E
-10498;N # OSMANYA LETTER I
-10499;N # OSMANYA LETTER O
-1049A;N # OSMANYA LETTER U
-1049B;N # OSMANYA LETTER AA
-1049C;N # OSMANYA LETTER EE
-1049D;N # OSMANYA LETTER OO
-104A0;N # OSMANYA DIGIT ZERO
-104A1;N # OSMANYA DIGIT ONE
-104A2;N # OSMANYA DIGIT TWO
-104A3;N # OSMANYA DIGIT THREE
-104A4;N # OSMANYA DIGIT FOUR
-104A5;N # OSMANYA DIGIT FIVE
-104A6;N # OSMANYA DIGIT SIX
-104A7;N # OSMANYA DIGIT SEVEN
-104A8;N # OSMANYA DIGIT EIGHT
-104A9;N # OSMANYA DIGIT NINE
-10800;N # CYPRIOT SYLLABLE A
-10801;N # CYPRIOT SYLLABLE E
-10802;N # CYPRIOT SYLLABLE I
-10803;N # CYPRIOT SYLLABLE O
-10804;N # CYPRIOT SYLLABLE U
-10805;N # CYPRIOT SYLLABLE JA
-10808;N # CYPRIOT SYLLABLE JO
-1080A;N # CYPRIOT SYLLABLE KA
-1080B;N # CYPRIOT SYLLABLE KE
-1080C;N # CYPRIOT SYLLABLE KI
-1080D;N # CYPRIOT SYLLABLE KO
-1080E;N # CYPRIOT SYLLABLE KU
-1080F;N # CYPRIOT SYLLABLE LA
-10810;N # CYPRIOT SYLLABLE LE
-10811;N # CYPRIOT SYLLABLE LI
-10812;N # CYPRIOT SYLLABLE LO
-10813;N # CYPRIOT SYLLABLE LU
-10814;N # CYPRIOT SYLLABLE MA
-10815;N # CYPRIOT SYLLABLE ME
-10816;N # CYPRIOT SYLLABLE MI
-10817;N # CYPRIOT SYLLABLE MO
-10818;N # CYPRIOT SYLLABLE MU
-10819;N # CYPRIOT SYLLABLE NA
-1081A;N # CYPRIOT SYLLABLE NE
-1081B;N # CYPRIOT SYLLABLE NI
-1081C;N # CYPRIOT SYLLABLE NO
-1081D;N # CYPRIOT SYLLABLE NU
-1081E;N # CYPRIOT SYLLABLE PA
-1081F;N # CYPRIOT SYLLABLE PE
-10820;N # CYPRIOT SYLLABLE PI
-10821;N # CYPRIOT SYLLABLE PO
-10822;N # CYPRIOT SYLLABLE PU
-10823;N # CYPRIOT SYLLABLE RA
-10824;N # CYPRIOT SYLLABLE RE
-10825;N # CYPRIOT SYLLABLE RI
-10826;N # CYPRIOT SYLLABLE RO
-10827;N # CYPRIOT SYLLABLE RU
-10828;N # CYPRIOT SYLLABLE SA
-10829;N # CYPRIOT SYLLABLE SE
-1082A;N # CYPRIOT SYLLABLE SI
-1082B;N # CYPRIOT SYLLABLE SO
-1082C;N # CYPRIOT SYLLABLE SU
-1082D;N # CYPRIOT SYLLABLE TA
-1082E;N # CYPRIOT SYLLABLE TE
-1082F;N # CYPRIOT SYLLABLE TI
-10830;N # CYPRIOT SYLLABLE TO
-10831;N # CYPRIOT SYLLABLE TU
-10832;N # CYPRIOT SYLLABLE WA
-10833;N # CYPRIOT SYLLABLE WE
-10834;N # CYPRIOT SYLLABLE WI
-10835;N # CYPRIOT SYLLABLE WO
-10837;N # CYPRIOT SYLLABLE XA
-10838;N # CYPRIOT SYLLABLE XE
-1083C;N # CYPRIOT SYLLABLE ZA
-1083F;N # CYPRIOT SYLLABLE ZO
-10A00;N # KHAROSHTHI LETTER A
-10A01;N # KHAROSHTHI VOWEL SIGN I
-10A02;N # KHAROSHTHI VOWEL SIGN U
-10A03;N # KHAROSHTHI VOWEL SIGN VOCALIC R
-10A05;N # KHAROSHTHI VOWEL SIGN E
-10A06;N # KHAROSHTHI VOWEL SIGN O
-10A0C;N # KHAROSHTHI VOWEL LENGTH MARK
-10A0D;N # KHAROSHTHI SIGN DOUBLE RING BELOW
-10A0E;N # KHAROSHTHI SIGN ANUSVARA
-10A0F;N # KHAROSHTHI SIGN VISARGA
-10A10;N # KHAROSHTHI LETTER KA
-10A11;N # KHAROSHTHI LETTER KHA
-10A12;N # KHAROSHTHI LETTER GA
-10A13;N # KHAROSHTHI LETTER GHA
-10A15;N # KHAROSHTHI LETTER CA
-10A16;N # KHAROSHTHI LETTER CHA
-10A17;N # KHAROSHTHI LETTER JA
-10A19;N # KHAROSHTHI LETTER NYA
-10A1A;N # KHAROSHTHI LETTER TTA
-10A1B;N # KHAROSHTHI LETTER TTHA
-10A1C;N # KHAROSHTHI LETTER DDA
-10A1D;N # KHAROSHTHI LETTER DDHA
-10A1E;N # KHAROSHTHI LETTER NNA
-10A1F;N # KHAROSHTHI LETTER TA
-10A20;N # KHAROSHTHI LETTER THA
-10A21;N # KHAROSHTHI LETTER DA
-10A22;N # KHAROSHTHI LETTER DHA
-10A23;N # KHAROSHTHI LETTER NA
-10A24;N # KHAROSHTHI LETTER PA
-10A25;N # KHAROSHTHI LETTER PHA
-10A26;N # KHAROSHTHI LETTER BA
-10A27;N # KHAROSHTHI LETTER BHA
-10A28;N # KHAROSHTHI LETTER MA
-10A29;N # KHAROSHTHI LETTER YA
-10A2A;N # KHAROSHTHI LETTER RA
-10A2B;N # KHAROSHTHI LETTER LA
-10A2C;N # KHAROSHTHI LETTER VA
-10A2D;N # KHAROSHTHI LETTER SHA
-10A2E;N # KHAROSHTHI LETTER SSA
-10A2F;N # KHAROSHTHI LETTER SA
-10A30;N # KHAROSHTHI LETTER ZA
-10A31;N # KHAROSHTHI LETTER HA
-10A32;N # KHAROSHTHI LETTER KKA
-10A33;N # KHAROSHTHI LETTER TTTHA
-10A38;N # KHAROSHTHI SIGN BAR ABOVE
-10A39;N # KHAROSHTHI SIGN CAUDA
-10A3A;N # KHAROSHTHI SIGN DOT BELOW
-10A3F;N # KHAROSHTHI VIRAMA
-10A40;N # KHAROSHTHI DIGIT ONE
-10A41;N # KHAROSHTHI DIGIT TWO
-10A42;N # KHAROSHTHI DIGIT THREE
-10A43;N # KHAROSHTHI DIGIT FOUR
-10A44;N # KHAROSHTHI NUMBER TEN
-10A45;N # KHAROSHTHI NUMBER TWENTY
-10A46;N # KHAROSHTHI NUMBER ONE HUNDRED
-10A47;N # KHAROSHTHI NUMBER ONE THOUSAND
-10A50;N # KHAROSHTHI PUNCTUATION DOT
-10A51;N # KHAROSHTHI PUNCTUATION SMALL CIRCLE
-10A52;N # KHAROSHTHI PUNCTUATION CIRCLE
-10A53;N # KHAROSHTHI PUNCTUATION CRESCENT BAR
-10A54;N # KHAROSHTHI PUNCTUATION MANGALAM
-10A55;N # KHAROSHTHI PUNCTUATION LOTUS
-10A56;N # KHAROSHTHI PUNCTUATION DANDA
-10A57;N # KHAROSHTHI PUNCTUATION DOUBLE DANDA
-10A58;N # KHAROSHTHI PUNCTUATION LINES
-1D000;N # BYZANTINE MUSICAL SYMBOL PSILI
-1D001;N # BYZANTINE MUSICAL SYMBOL DASEIA
-1D002;N # BYZANTINE MUSICAL SYMBOL PERISPOMENI
-1D003;N # BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON
-1D004;N # BYZANTINE MUSICAL SYMBOL OXEIA DIPLI
-1D005;N # BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON
-1D006;N # BYZANTINE MUSICAL SYMBOL VAREIA DIPLI
-1D007;N # BYZANTINE MUSICAL SYMBOL KATHISTI
-1D008;N # BYZANTINE MUSICAL SYMBOL SYRMATIKI
-1D009;N # BYZANTINE MUSICAL SYMBOL PARAKLITIKI
-1D00A;N # BYZANTINE MUSICAL SYMBOL YPOKRISIS
-1D00B;N # BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI
-1D00C;N # BYZANTINE MUSICAL SYMBOL KREMASTI
-1D00D;N # BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON
-1D00E;N # BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON
-1D00F;N # BYZANTINE MUSICAL SYMBOL TELEIA
-1D010;N # BYZANTINE MUSICAL SYMBOL KENTIMATA
-1D011;N # BYZANTINE MUSICAL SYMBOL APOSTROFOS
-1D012;N # BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI
-1D013;N # BYZANTINE MUSICAL SYMBOL SYNEVMA
-1D014;N # BYZANTINE MUSICAL SYMBOL THITA
-1D015;N # BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION
-1D016;N # BYZANTINE MUSICAL SYMBOL GORGON ARCHAION
-1D017;N # BYZANTINE MUSICAL SYMBOL PSILON
-1D018;N # BYZANTINE MUSICAL SYMBOL CHAMILON
-1D019;N # BYZANTINE MUSICAL SYMBOL VATHY
-1D01A;N # BYZANTINE MUSICAL SYMBOL ISON ARCHAION
-1D01B;N # BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION
-1D01C;N # BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION
-1D01D;N # BYZANTINE MUSICAL SYMBOL SAXIMATA
-1D01E;N # BYZANTINE MUSICAL SYMBOL PARICHON
-1D01F;N # BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA
-1D020;N # BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION
-1D021;N # BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION
-1D022;N # BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION
-1D023;N # BYZANTINE MUSICAL SYMBOL APOTHEMA
-1D024;N # BYZANTINE MUSICAL SYMBOL KLASMA
-1D025;N # BYZANTINE MUSICAL SYMBOL REVMA
-1D026;N # BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION
-1D027;N # BYZANTINE MUSICAL SYMBOL TINAGMA
-1D028;N # BYZANTINE MUSICAL SYMBOL ANATRICHISMA
-1D029;N # BYZANTINE MUSICAL SYMBOL SEISMA
-1D02A;N # BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION
-1D02B;N # BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU
-1D02C;N # BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION
-1D02D;N # BYZANTINE MUSICAL SYMBOL THEMA
-1D02E;N # BYZANTINE MUSICAL SYMBOL LEMOI
-1D02F;N # BYZANTINE MUSICAL SYMBOL DYO
-1D030;N # BYZANTINE MUSICAL SYMBOL TRIA
-1D031;N # BYZANTINE MUSICAL SYMBOL TESSERA
-1D032;N # BYZANTINE MUSICAL SYMBOL KRATIMATA
-1D033;N # BYZANTINE MUSICAL SYMBOL APESO EXO NEO
-1D034;N # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION
-1D035;N # BYZANTINE MUSICAL SYMBOL IMIFTHORA
-1D036;N # BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION
-1D037;N # BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON
-1D038;N # BYZANTINE MUSICAL SYMBOL PELASTON
-1D039;N # BYZANTINE MUSICAL SYMBOL PSIFISTON
-1D03A;N # BYZANTINE MUSICAL SYMBOL KONTEVMA
-1D03B;N # BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION
-1D03C;N # BYZANTINE MUSICAL SYMBOL RAPISMA
-1D03D;N # BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION
-1D03E;N # BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION
-1D03F;N # BYZANTINE MUSICAL SYMBOL ICHADIN
-1D040;N # BYZANTINE MUSICAL SYMBOL NANA
-1D041;N # BYZANTINE MUSICAL SYMBOL PETASMA
-1D042;N # BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO
-1D043;N # BYZANTINE MUSICAL SYMBOL TROMIKON ALLO
-1D044;N # BYZANTINE MUSICAL SYMBOL STRAGGISMATA
-1D045;N # BYZANTINE MUSICAL SYMBOL GRONTHISMATA
-1D046;N # BYZANTINE MUSICAL SYMBOL ISON NEO
-1D047;N # BYZANTINE MUSICAL SYMBOL OLIGON NEO
-1D048;N # BYZANTINE MUSICAL SYMBOL OXEIA NEO
-1D049;N # BYZANTINE MUSICAL SYMBOL PETASTI
-1D04A;N # BYZANTINE MUSICAL SYMBOL KOUFISMA
-1D04B;N # BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA
-1D04C;N # BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA
-1D04D;N # BYZANTINE MUSICAL SYMBOL PELASTON NEO
-1D04E;N # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO
-1D04F;N # BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO
-1D050;N # BYZANTINE MUSICAL SYMBOL YPSILI
-1D051;N # BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO
-1D052;N # BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO
-1D053;N # BYZANTINE MUSICAL SYMBOL YPORROI
-1D054;N # BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON
-1D055;N # BYZANTINE MUSICAL SYMBOL ELAFRON
-1D056;N # BYZANTINE MUSICAL SYMBOL CHAMILI
-1D057;N # BYZANTINE MUSICAL SYMBOL MIKRON ISON
-1D058;N # BYZANTINE MUSICAL SYMBOL VAREIA NEO
-1D059;N # BYZANTINE MUSICAL SYMBOL PIASMA NEO
-1D05A;N # BYZANTINE MUSICAL SYMBOL PSIFISTON NEO
-1D05B;N # BYZANTINE MUSICAL SYMBOL OMALON
-1D05C;N # BYZANTINE MUSICAL SYMBOL ANTIKENOMA
-1D05D;N # BYZANTINE MUSICAL SYMBOL LYGISMA
-1D05E;N # BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO
-1D05F;N # BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO
-1D060;N # BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA
-1D061;N # BYZANTINE MUSICAL SYMBOL KYLISMA
-1D062;N # BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA
-1D063;N # BYZANTINE MUSICAL SYMBOL TROMIKON NEO
-1D064;N # BYZANTINE MUSICAL SYMBOL EKSTREPTON
-1D065;N # BYZANTINE MUSICAL SYMBOL SYNAGMA NEO
-1D066;N # BYZANTINE MUSICAL SYMBOL SYRMA
-1D067;N # BYZANTINE MUSICAL SYMBOL CHOREVMA NEO
-1D068;N # BYZANTINE MUSICAL SYMBOL EPEGERMA
-1D069;N # BYZANTINE MUSICAL SYMBOL SEISMA NEO
-1D06A;N # BYZANTINE MUSICAL SYMBOL XIRON KLASMA
-1D06B;N # BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON
-1D06C;N # BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA
-1D06D;N # BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA
-1D06E;N # BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA
-1D06F;N # BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA
-1D070;N # BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA
-1D071;N # BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA
-1D072;N # BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON
-1D073;N # BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON
-1D074;N # BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON
-1D075;N # BYZANTINE MUSICAL SYMBOL OYRANISMA NEO
-1D076;N # BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO
-1D077;N # BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO
-1D078;N # BYZANTINE MUSICAL SYMBOL THEMA APLOUN
-1D079;N # BYZANTINE MUSICAL SYMBOL THES KAI APOTHES
-1D07A;N # BYZANTINE MUSICAL SYMBOL KATAVASMA
-1D07B;N # BYZANTINE MUSICAL SYMBOL ENDOFONON
-1D07C;N # BYZANTINE MUSICAL SYMBOL YFEN KATO
-1D07D;N # BYZANTINE MUSICAL SYMBOL YFEN ANO
-1D07E;N # BYZANTINE MUSICAL SYMBOL STAVROS
-1D07F;N # BYZANTINE MUSICAL SYMBOL KLASMA ANO
-1D080;N # BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION
-1D081;N # BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION
-1D082;N # BYZANTINE MUSICAL SYMBOL KRATIMA ALLO
-1D083;N # BYZANTINE MUSICAL SYMBOL KRATIMA NEO
-1D084;N # BYZANTINE MUSICAL SYMBOL APODERMA NEO
-1D085;N # BYZANTINE MUSICAL SYMBOL APLI
-1D086;N # BYZANTINE MUSICAL SYMBOL DIPLI
-1D087;N # BYZANTINE MUSICAL SYMBOL TRIPLI
-1D088;N # BYZANTINE MUSICAL SYMBOL TETRAPLI
-1D089;N # BYZANTINE MUSICAL SYMBOL KORONIS
-1D08A;N # BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU
-1D08B;N # BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON
-1D08C;N # BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON
-1D08D;N # BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON
-1D08E;N # BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU
-1D08F;N # BYZANTINE MUSICAL SYMBOL GORGON NEO ANO
-1D090;N # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA
-1D091;N # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA
-1D092;N # BYZANTINE MUSICAL SYMBOL DIGORGON
-1D093;N # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO
-1D094;N # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO
-1D095;N # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA
-1D096;N # BYZANTINE MUSICAL SYMBOL TRIGORGON
-1D097;N # BYZANTINE MUSICAL SYMBOL ARGON
-1D098;N # BYZANTINE MUSICAL SYMBOL IMIDIARGON
-1D099;N # BYZANTINE MUSICAL SYMBOL DIARGON
-1D09A;N # BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI
-1D09B;N # BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI
-1D09C;N # BYZANTINE MUSICAL SYMBOL AGOGI ARGI
-1D09D;N # BYZANTINE MUSICAL SYMBOL AGOGI METRIA
-1D09E;N # BYZANTINE MUSICAL SYMBOL AGOGI MESI
-1D09F;N # BYZANTINE MUSICAL SYMBOL AGOGI GORGI
-1D0A0;N # BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI
-1D0A1;N # BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI
-1D0A2;N # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS
-1D0A3;N # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS
-1D0A4;N # BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS
-1D0A5;N # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS
-1D0A6;N # BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS
-1D0A7;N # BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS
-1D0A8;N # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS
-1D0A9;N # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS
-1D0AA;N # BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS
-1D0AB;N # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS
-1D0AC;N # BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS
-1D0AD;N # BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS
-1D0AE;N # BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS
-1D0AF;N # BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS
-1D0B0;N # BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS
-1D0B1;N # BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS
-1D0B2;N # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS
-1D0B3;N # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS
-1D0B4;N # BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN
-1D0B5;N # BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN
-1D0B6;N # BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU
-1D0B7;N # BYZANTINE MUSICAL SYMBOL IMIFONON
-1D0B8;N # BYZANTINE MUSICAL SYMBOL IMIFTHORON
-1D0B9;N # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU
-1D0BA;N # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA
-1D0BB;N # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA
-1D0BC;N # BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS
-1D0BD;N # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI
-1D0BE;N # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI
-1D0BF;N # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE
-1D0C0;N # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO
-1D0C1;N # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO
-1D0C2;N # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO
-1D0C3;N # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS
-1D0C4;N # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS
-1D0C5;N # BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS
-1D0C6;N # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI
-1D0C7;N # BYZANTINE MUSICAL SYMBOL FTHORA NENANO
-1D0C8;N # BYZANTINE MUSICAL SYMBOL CHROA ZYGOS
-1D0C9;N # BYZANTINE MUSICAL SYMBOL CHROA KLITON
-1D0CA;N # BYZANTINE MUSICAL SYMBOL CHROA SPATHI
-1D0CB;N # BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION
-1D0CC;N # BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA
-1D0CD;N # BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION
-1D0CE;N # BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION
-1D0CF;N # BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION
-1D0D0;N # BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA
-1D0D1;N # BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA
-1D0D2;N # BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA
-1D0D3;N # BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA
-1D0D4;N # BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA
-1D0D5;N # BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA
-1D0D6;N # BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA
-1D0D7;N # BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA
-1D0D8;N # BYZANTINE MUSICAL SYMBOL GENIKI DIESIS
-1D0D9;N # BYZANTINE MUSICAL SYMBOL GENIKI YFESIS
-1D0DA;N # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI
-1D0DB;N # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI
-1D0DC;N # BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI
-1D0DD;N # BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS
-1D0DE;N # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS
-1D0DF;N # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU
-1D0E0;N # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU
-1D0E1;N # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU
-1D0E2;N # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS
-1D0E3;N # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU
-1D0E4;N # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU
-1D0E5;N # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU
-1D0E6;N # BYZANTINE MUSICAL SYMBOL DIGRAMMA GG
-1D0E7;N # BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU
-1D0E8;N # BYZANTINE MUSICAL SYMBOL STIGMA
-1D0E9;N # BYZANTINE MUSICAL SYMBOL ARKTIKO PA
-1D0EA;N # BYZANTINE MUSICAL SYMBOL ARKTIKO VOU
-1D0EB;N # BYZANTINE MUSICAL SYMBOL ARKTIKO GA
-1D0EC;N # BYZANTINE MUSICAL SYMBOL ARKTIKO DI
-1D0ED;N # BYZANTINE MUSICAL SYMBOL ARKTIKO KE
-1D0EE;N # BYZANTINE MUSICAL SYMBOL ARKTIKO ZO
-1D0EF;N # BYZANTINE MUSICAL SYMBOL ARKTIKO NI
-1D0F0;N # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO
-1D0F1;N # BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO
-1D0F2;N # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO
-1D0F3;N # BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO
-1D0F4;N # BYZANTINE MUSICAL SYMBOL KLASMA KATO
-1D0F5;N # BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
-1D100;N # MUSICAL SYMBOL SINGLE BARLINE
-1D101;N # MUSICAL SYMBOL DOUBLE BARLINE
-1D102;N # MUSICAL SYMBOL FINAL BARLINE
-1D103;N # MUSICAL SYMBOL REVERSE FINAL BARLINE
-1D104;N # MUSICAL SYMBOL DASHED BARLINE
-1D105;N # MUSICAL SYMBOL SHORT BARLINE
-1D106;N # MUSICAL SYMBOL LEFT REPEAT SIGN
-1D107;N # MUSICAL SYMBOL RIGHT REPEAT SIGN
-1D108;N # MUSICAL SYMBOL REPEAT DOTS
-1D109;N # MUSICAL SYMBOL DAL SEGNO
-1D10A;N # MUSICAL SYMBOL DA CAPO
-1D10B;N # MUSICAL SYMBOL SEGNO
-1D10C;N # MUSICAL SYMBOL CODA
-1D10D;N # MUSICAL SYMBOL REPEATED FIGURE-1
-1D10E;N # MUSICAL SYMBOL REPEATED FIGURE-2
-1D10F;N # MUSICAL SYMBOL REPEATED FIGURE-3
-1D110;N # MUSICAL SYMBOL FERMATA
-1D111;N # MUSICAL SYMBOL FERMATA BELOW
-1D112;N # MUSICAL SYMBOL BREATH MARK
-1D113;N # MUSICAL SYMBOL CAESURA
-1D114;N # MUSICAL SYMBOL BRACE
-1D115;N # MUSICAL SYMBOL BRACKET
-1D116;N # MUSICAL SYMBOL ONE-LINE STAFF
-1D117;N # MUSICAL SYMBOL TWO-LINE STAFF
-1D118;N # MUSICAL SYMBOL THREE-LINE STAFF
-1D119;N # MUSICAL SYMBOL FOUR-LINE STAFF
-1D11A;N # MUSICAL SYMBOL FIVE-LINE STAFF
-1D11B;N # MUSICAL SYMBOL SIX-LINE STAFF
-1D11C;N # MUSICAL SYMBOL SIX-STRING FRETBOARD
-1D11D;N # MUSICAL SYMBOL FOUR-STRING FRETBOARD
-1D11E;N # MUSICAL SYMBOL G CLEF
-1D11F;N # MUSICAL SYMBOL G CLEF OTTAVA ALTA
-1D120;N # MUSICAL SYMBOL G CLEF OTTAVA BASSA
-1D121;N # MUSICAL SYMBOL C CLEF
-1D122;N # MUSICAL SYMBOL F CLEF
-1D123;N # MUSICAL SYMBOL F CLEF OTTAVA ALTA
-1D124;N # MUSICAL SYMBOL F CLEF OTTAVA BASSA
-1D125;N # MUSICAL SYMBOL DRUM CLEF-1
-1D126;N # MUSICAL SYMBOL DRUM CLEF-2
-1D12A;N # MUSICAL SYMBOL DOUBLE SHARP
-1D12B;N # MUSICAL SYMBOL DOUBLE FLAT
-1D12C;N # MUSICAL SYMBOL FLAT UP
-1D12D;N # MUSICAL SYMBOL FLAT DOWN
-1D12E;N # MUSICAL SYMBOL NATURAL UP
-1D12F;N # MUSICAL SYMBOL NATURAL DOWN
-1D130;N # MUSICAL SYMBOL SHARP UP
-1D131;N # MUSICAL SYMBOL SHARP DOWN
-1D132;N # MUSICAL SYMBOL QUARTER TONE SHARP
-1D133;N # MUSICAL SYMBOL QUARTER TONE FLAT
-1D134;N # MUSICAL SYMBOL COMMON TIME
-1D135;N # MUSICAL SYMBOL CUT TIME
-1D136;N # MUSICAL SYMBOL OTTAVA ALTA
-1D137;N # MUSICAL SYMBOL OTTAVA BASSA
-1D138;N # MUSICAL SYMBOL QUINDICESIMA ALTA
-1D139;N # MUSICAL SYMBOL QUINDICESIMA BASSA
-1D13A;N # MUSICAL SYMBOL MULTI REST
-1D13B;N # MUSICAL SYMBOL WHOLE REST
-1D13C;N # MUSICAL SYMBOL HALF REST
-1D13D;N # MUSICAL SYMBOL QUARTER REST
-1D13E;N # MUSICAL SYMBOL EIGHTH REST
-1D13F;N # MUSICAL SYMBOL SIXTEENTH REST
-1D140;N # MUSICAL SYMBOL THIRTY-SECOND REST
-1D141;N # MUSICAL SYMBOL SIXTY-FOURTH REST
-1D142;N # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST
-1D143;N # MUSICAL SYMBOL X NOTEHEAD
-1D144;N # MUSICAL SYMBOL PLUS NOTEHEAD
-1D145;N # MUSICAL SYMBOL CIRCLE X NOTEHEAD
-1D146;N # MUSICAL SYMBOL SQUARE NOTEHEAD WHITE
-1D147;N # MUSICAL SYMBOL SQUARE NOTEHEAD BLACK
-1D148;N # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE
-1D149;N # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK
-1D14A;N # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE
-1D14B;N # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK
-1D14C;N # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE
-1D14D;N # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK
-1D14E;N # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE
-1D14F;N # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK
-1D150;N # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE
-1D151;N # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK
-1D152;N # MUSICAL SYMBOL MOON NOTEHEAD WHITE
-1D153;N # MUSICAL SYMBOL MOON NOTEHEAD BLACK
-1D154;N # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE
-1D155;N # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK
-1D156;N # MUSICAL SYMBOL PARENTHESIS NOTEHEAD
-1D157;N # MUSICAL SYMBOL VOID NOTEHEAD
-1D158;N # MUSICAL SYMBOL NOTEHEAD BLACK
-1D159;N # MUSICAL SYMBOL NULL NOTEHEAD
-1D15A;N # MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE
-1D15B;N # MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK
-1D15C;N # MUSICAL SYMBOL BREVE
-1D15D;N # MUSICAL SYMBOL WHOLE NOTE
-1D15E;N # MUSICAL SYMBOL HALF NOTE
-1D15F;N # MUSICAL SYMBOL QUARTER NOTE
-1D160;N # MUSICAL SYMBOL EIGHTH NOTE
-1D161;N # MUSICAL SYMBOL SIXTEENTH NOTE
-1D162;N # MUSICAL SYMBOL THIRTY-SECOND NOTE
-1D163;N # MUSICAL SYMBOL SIXTY-FOURTH NOTE
-1D164;N # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
-1D165;N # MUSICAL SYMBOL COMBINING STEM
-1D166;N # MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
-1D167;N # MUSICAL SYMBOL COMBINING TREMOLO-1
-1D168;N # MUSICAL SYMBOL COMBINING TREMOLO-2
-1D169;N # MUSICAL SYMBOL COMBINING TREMOLO-3
-1D16A;N # MUSICAL SYMBOL FINGERED TREMOLO-1
-1D16B;N # MUSICAL SYMBOL FINGERED TREMOLO-2
-1D16C;N # MUSICAL SYMBOL FINGERED TREMOLO-3
-1D16D;N # MUSICAL SYMBOL COMBINING AUGMENTATION DOT
-1D16E;N # MUSICAL SYMBOL COMBINING FLAG-1
-1D16F;N # MUSICAL SYMBOL COMBINING FLAG-2
-1D170;N # MUSICAL SYMBOL COMBINING FLAG-3
-1D171;N # MUSICAL SYMBOL COMBINING FLAG-4
-1D172;N # MUSICAL SYMBOL COMBINING FLAG-5
-1D173;N # MUSICAL SYMBOL BEGIN BEAM
-1D174;N # MUSICAL SYMBOL END BEAM
-1D175;N # MUSICAL SYMBOL BEGIN TIE
-1D176;N # MUSICAL SYMBOL END TIE
-1D177;N # MUSICAL SYMBOL BEGIN SLUR
-1D178;N # MUSICAL SYMBOL END SLUR
-1D179;N # MUSICAL SYMBOL BEGIN PHRASE
-1D17A;N # MUSICAL SYMBOL END PHRASE
-1D17B;N # MUSICAL SYMBOL COMBINING ACCENT
-1D17C;N # MUSICAL SYMBOL COMBINING STACCATO
-1D17D;N # MUSICAL SYMBOL COMBINING TENUTO
-1D17E;N # MUSICAL SYMBOL COMBINING STACCATISSIMO
-1D17F;N # MUSICAL SYMBOL COMBINING MARCATO
-1D180;N # MUSICAL SYMBOL COMBINING MARCATO-STACCATO
-1D181;N # MUSICAL SYMBOL COMBINING ACCENT-STACCATO
-1D182;N # MUSICAL SYMBOL COMBINING LOURE
-1D183;N # MUSICAL SYMBOL ARPEGGIATO UP
-1D184;N # MUSICAL SYMBOL ARPEGGIATO DOWN
-1D185;N # MUSICAL SYMBOL COMBINING DOIT
-1D186;N # MUSICAL SYMBOL COMBINING RIP
-1D187;N # MUSICAL SYMBOL COMBINING FLIP
-1D188;N # MUSICAL SYMBOL COMBINING SMEAR
-1D189;N # MUSICAL SYMBOL COMBINING BEND
-1D18A;N # MUSICAL SYMBOL COMBINING DOUBLE TONGUE
-1D18B;N # MUSICAL SYMBOL COMBINING TRIPLE TONGUE
-1D18C;N # MUSICAL SYMBOL RINFORZANDO
-1D18D;N # MUSICAL SYMBOL SUBITO
-1D18E;N # MUSICAL SYMBOL Z
-1D18F;N # MUSICAL SYMBOL PIANO
-1D190;N # MUSICAL SYMBOL MEZZO
-1D191;N # MUSICAL SYMBOL FORTE
-1D192;N # MUSICAL SYMBOL CRESCENDO
-1D193;N # MUSICAL SYMBOL DECRESCENDO
-1D194;N # MUSICAL SYMBOL GRACE NOTE SLASH
-1D195;N # MUSICAL SYMBOL GRACE NOTE NO SLASH
-1D196;N # MUSICAL SYMBOL TR
-1D197;N # MUSICAL SYMBOL TURN
-1D198;N # MUSICAL SYMBOL INVERTED TURN
-1D199;N # MUSICAL SYMBOL TURN SLASH
-1D19A;N # MUSICAL SYMBOL TURN UP
-1D19B;N # MUSICAL SYMBOL ORNAMENT STROKE-1
-1D19C;N # MUSICAL SYMBOL ORNAMENT STROKE-2
-1D19D;N # MUSICAL SYMBOL ORNAMENT STROKE-3
-1D19E;N # MUSICAL SYMBOL ORNAMENT STROKE-4
-1D19F;N # MUSICAL SYMBOL ORNAMENT STROKE-5
-1D1A0;N # MUSICAL SYMBOL ORNAMENT STROKE-6
-1D1A1;N # MUSICAL SYMBOL ORNAMENT STROKE-7
-1D1A2;N # MUSICAL SYMBOL ORNAMENT STROKE-8
-1D1A3;N # MUSICAL SYMBOL ORNAMENT STROKE-9
-1D1A4;N # MUSICAL SYMBOL ORNAMENT STROKE-10
-1D1A5;N # MUSICAL SYMBOL ORNAMENT STROKE-11
-1D1A6;N # MUSICAL SYMBOL HAUPTSTIMME
-1D1A7;N # MUSICAL SYMBOL NEBENSTIMME
-1D1A8;N # MUSICAL SYMBOL END OF STIMME
-1D1A9;N # MUSICAL SYMBOL DEGREE SLASH
-1D1AA;N # MUSICAL SYMBOL COMBINING DOWN BOW
-1D1AB;N # MUSICAL SYMBOL COMBINING UP BOW
-1D1AC;N # MUSICAL SYMBOL COMBINING HARMONIC
-1D1AD;N # MUSICAL SYMBOL COMBINING SNAP PIZZICATO
-1D1AE;N # MUSICAL SYMBOL PEDAL MARK
-1D1AF;N # MUSICAL SYMBOL PEDAL UP MARK
-1D1B0;N # MUSICAL SYMBOL HALF PEDAL MARK
-1D1B1;N # MUSICAL SYMBOL GLISSANDO UP
-1D1B2;N # MUSICAL SYMBOL GLISSANDO DOWN
-1D1B3;N # MUSICAL SYMBOL WITH FINGERNAILS
-1D1B4;N # MUSICAL SYMBOL DAMP
-1D1B5;N # MUSICAL SYMBOL DAMP ALL
-1D1B6;N # MUSICAL SYMBOL MAXIMA
-1D1B7;N # MUSICAL SYMBOL LONGA
-1D1B8;N # MUSICAL SYMBOL BREVIS
-1D1B9;N # MUSICAL SYMBOL SEMIBREVIS WHITE
-1D1BA;N # MUSICAL SYMBOL SEMIBREVIS BLACK
-1D1BB;N # MUSICAL SYMBOL MINIMA
-1D1BC;N # MUSICAL SYMBOL MINIMA BLACK
-1D1BD;N # MUSICAL SYMBOL SEMIMINIMA WHITE
-1D1BE;N # MUSICAL SYMBOL SEMIMINIMA BLACK
-1D1BF;N # MUSICAL SYMBOL FUSA WHITE
-1D1C0;N # MUSICAL SYMBOL FUSA BLACK
-1D1C1;N # MUSICAL SYMBOL LONGA PERFECTA REST
-1D1C2;N # MUSICAL SYMBOL LONGA IMPERFECTA REST
-1D1C3;N # MUSICAL SYMBOL BREVIS REST
-1D1C4;N # MUSICAL SYMBOL SEMIBREVIS REST
-1D1C5;N # MUSICAL SYMBOL MINIMA REST
-1D1C6;N # MUSICAL SYMBOL SEMIMINIMA REST
-1D1C7;N # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA
-1D1C8;N # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA
-1D1C9;N # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1
-1D1CA;N # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA
-1D1CB;N # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA
-1D1CC;N # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1
-1D1CD;N # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2
-1D1CE;N # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3
-1D1CF;N # MUSICAL SYMBOL CROIX
-1D1D0;N # MUSICAL SYMBOL GREGORIAN C CLEF
-1D1D1;N # MUSICAL SYMBOL GREGORIAN F CLEF
-1D1D2;N # MUSICAL SYMBOL SQUARE B
-1D1D3;N # MUSICAL SYMBOL VIRGA
-1D1D4;N # MUSICAL SYMBOL PODATUS
-1D1D5;N # MUSICAL SYMBOL CLIVIS
-1D1D6;N # MUSICAL SYMBOL SCANDICUS
-1D1D7;N # MUSICAL SYMBOL CLIMACUS
-1D1D8;N # MUSICAL SYMBOL TORCULUS
-1D1D9;N # MUSICAL SYMBOL PORRECTUS
-1D1DA;N # MUSICAL SYMBOL PORRECTUS FLEXUS
-1D1DB;N # MUSICAL SYMBOL SCANDICUS FLEXUS
-1D1DC;N # MUSICAL SYMBOL TORCULUS RESUPINUS
-1D1DD;N # MUSICAL SYMBOL PES SUBPUNCTIS
-1D200;N # GREEK VOCAL NOTATION SYMBOL-1
-1D201;N # GREEK VOCAL NOTATION SYMBOL-2
-1D202;N # GREEK VOCAL NOTATION SYMBOL-3
-1D203;N # GREEK VOCAL NOTATION SYMBOL-4
-1D204;N # GREEK VOCAL NOTATION SYMBOL-5
-1D205;N # GREEK VOCAL NOTATION SYMBOL-6
-1D206;N # GREEK VOCAL NOTATION SYMBOL-7
-1D207;N # GREEK VOCAL NOTATION SYMBOL-8
-1D208;N # GREEK VOCAL NOTATION SYMBOL-9
-1D209;N # GREEK VOCAL NOTATION SYMBOL-10
-1D20A;N # GREEK VOCAL NOTATION SYMBOL-11
-1D20B;N # GREEK VOCAL NOTATION SYMBOL-12
-1D20C;N # GREEK VOCAL NOTATION SYMBOL-13
-1D20D;N # GREEK VOCAL NOTATION SYMBOL-14
-1D20E;N # GREEK VOCAL NOTATION SYMBOL-15
-1D20F;N # GREEK VOCAL NOTATION SYMBOL-16
-1D210;N # GREEK VOCAL NOTATION SYMBOL-17
-1D211;N # GREEK VOCAL NOTATION SYMBOL-18
-1D212;N # GREEK VOCAL NOTATION SYMBOL-19
-1D213;N # GREEK VOCAL NOTATION SYMBOL-20
-1D214;N # GREEK VOCAL NOTATION SYMBOL-21
-1D215;N # GREEK VOCAL NOTATION SYMBOL-22
-1D216;N # GREEK VOCAL NOTATION SYMBOL-23
-1D217;N # GREEK VOCAL NOTATION SYMBOL-24
-1D218;N # GREEK VOCAL NOTATION SYMBOL-50
-1D219;N # GREEK VOCAL NOTATION SYMBOL-51
-1D21A;N # GREEK VOCAL NOTATION SYMBOL-52
-1D21B;N # GREEK VOCAL NOTATION SYMBOL-53
-1D21C;N # GREEK VOCAL NOTATION SYMBOL-54
-1D21D;N # GREEK INSTRUMENTAL NOTATION SYMBOL-1
-1D21E;N # GREEK INSTRUMENTAL NOTATION SYMBOL-2
-1D21F;N # GREEK INSTRUMENTAL NOTATION SYMBOL-4
-1D220;N # GREEK INSTRUMENTAL NOTATION SYMBOL-5
-1D221;N # GREEK INSTRUMENTAL NOTATION SYMBOL-7
-1D222;N # GREEK INSTRUMENTAL NOTATION SYMBOL-8
-1D223;N # GREEK INSTRUMENTAL NOTATION SYMBOL-11
-1D224;N # GREEK INSTRUMENTAL NOTATION SYMBOL-12
-1D225;N # GREEK INSTRUMENTAL NOTATION SYMBOL-13
-1D226;N # GREEK INSTRUMENTAL NOTATION SYMBOL-14
-1D227;N # GREEK INSTRUMENTAL NOTATION SYMBOL-17
-1D228;N # GREEK INSTRUMENTAL NOTATION SYMBOL-18
-1D229;N # GREEK INSTRUMENTAL NOTATION SYMBOL-19
-1D22A;N # GREEK INSTRUMENTAL NOTATION SYMBOL-23
-1D22B;N # GREEK INSTRUMENTAL NOTATION SYMBOL-24
-1D22C;N # GREEK INSTRUMENTAL NOTATION SYMBOL-25
-1D22D;N # GREEK INSTRUMENTAL NOTATION SYMBOL-26
-1D22E;N # GREEK INSTRUMENTAL NOTATION SYMBOL-27
-1D22F;N # GREEK INSTRUMENTAL NOTATION SYMBOL-29
-1D230;N # GREEK INSTRUMENTAL NOTATION SYMBOL-30
-1D231;N # GREEK INSTRUMENTAL NOTATION SYMBOL-32
-1D232;N # GREEK INSTRUMENTAL NOTATION SYMBOL-36
-1D233;N # GREEK INSTRUMENTAL NOTATION SYMBOL-37
-1D234;N # GREEK INSTRUMENTAL NOTATION SYMBOL-38
-1D235;N # GREEK INSTRUMENTAL NOTATION SYMBOL-39
-1D236;N # GREEK INSTRUMENTAL NOTATION SYMBOL-40
-1D237;N # GREEK INSTRUMENTAL NOTATION SYMBOL-42
-1D238;N # GREEK INSTRUMENTAL NOTATION SYMBOL-43
-1D239;N # GREEK INSTRUMENTAL NOTATION SYMBOL-45
-1D23A;N # GREEK INSTRUMENTAL NOTATION SYMBOL-47
-1D23B;N # GREEK INSTRUMENTAL NOTATION SYMBOL-48
-1D23C;N # GREEK INSTRUMENTAL NOTATION SYMBOL-49
-1D23D;N # GREEK INSTRUMENTAL NOTATION SYMBOL-50
-1D23E;N # GREEK INSTRUMENTAL NOTATION SYMBOL-51
-1D23F;N # GREEK INSTRUMENTAL NOTATION SYMBOL-52
-1D240;N # GREEK INSTRUMENTAL NOTATION SYMBOL-53
-1D241;N # GREEK INSTRUMENTAL NOTATION SYMBOL-54
-1D242;N # COMBINING GREEK MUSICAL TRISEME
-1D243;N # COMBINING GREEK MUSICAL TETRASEME
-1D244;N # COMBINING GREEK MUSICAL PENTASEME
-1D245;N # GREEK MUSICAL LEIMMA
-1D300;N # MONOGRAM FOR EARTH
-1D301;N # DIGRAM FOR HEAVENLY EARTH
-1D302;N # DIGRAM FOR HUMAN EARTH
-1D303;N # DIGRAM FOR EARTHLY HEAVEN
-1D304;N # DIGRAM FOR EARTHLY HUMAN
-1D305;N # DIGRAM FOR EARTH
-1D306;N # TETRAGRAM FOR CENTRE
-1D307;N # TETRAGRAM FOR FULL CIRCLE
-1D308;N # TETRAGRAM FOR MIRED
-1D309;N # TETRAGRAM FOR BARRIER
-1D30A;N # TETRAGRAM FOR KEEPING SMALL
-1D30B;N # TETRAGRAM FOR CONTRARIETY
-1D30C;N # TETRAGRAM FOR ASCENT
-1D30D;N # TETRAGRAM FOR OPPOSITION
-1D30E;N # TETRAGRAM FOR BRANCHING OUT
-1D30F;N # TETRAGRAM FOR DEFECTIVENESS OR DISTORTION
-1D310;N # TETRAGRAM FOR DIVERGENCE
-1D311;N # TETRAGRAM FOR YOUTHFULNESS
-1D312;N # TETRAGRAM FOR INCREASE
-1D313;N # TETRAGRAM FOR PENETRATION
-1D314;N # TETRAGRAM FOR REACH
-1D315;N # TETRAGRAM FOR CONTACT
-1D316;N # TETRAGRAM FOR HOLDING BACK
-1D317;N # TETRAGRAM FOR WAITING
-1D318;N # TETRAGRAM FOR FOLLOWING
-1D319;N # TETRAGRAM FOR ADVANCE
-1D31A;N # TETRAGRAM FOR RELEASE
-1D31B;N # TETRAGRAM FOR RESISTANCE
-1D31C;N # TETRAGRAM FOR EASE
-1D31D;N # TETRAGRAM FOR JOY
-1D31E;N # TETRAGRAM FOR CONTENTION
-1D31F;N # TETRAGRAM FOR ENDEAVOUR
-1D320;N # TETRAGRAM FOR DUTIES
-1D321;N # TETRAGRAM FOR CHANGE
-1D322;N # TETRAGRAM FOR DECISIVENESS
-1D323;N # TETRAGRAM FOR BOLD RESOLUTION
-1D324;N # TETRAGRAM FOR PACKING
-1D325;N # TETRAGRAM FOR LEGION
-1D326;N # TETRAGRAM FOR CLOSENESS
-1D327;N # TETRAGRAM FOR KINSHIP
-1D328;N # TETRAGRAM FOR GATHERING
-1D329;N # TETRAGRAM FOR STRENGTH
-1D32A;N # TETRAGRAM FOR PURITY
-1D32B;N # TETRAGRAM FOR FULLNESS
-1D32C;N # TETRAGRAM FOR RESIDENCE
-1D32D;N # TETRAGRAM FOR LAW OR MODEL
-1D32E;N # TETRAGRAM FOR RESPONSE
-1D32F;N # TETRAGRAM FOR GOING TO MEET
-1D330;N # TETRAGRAM FOR ENCOUNTERS
-1D331;N # TETRAGRAM FOR STOVE
-1D332;N # TETRAGRAM FOR GREATNESS
-1D333;N # TETRAGRAM FOR ENLARGEMENT
-1D334;N # TETRAGRAM FOR PATTERN
-1D335;N # TETRAGRAM FOR RITUAL
-1D336;N # TETRAGRAM FOR FLIGHT
-1D337;N # TETRAGRAM FOR VASTNESS OR WASTING
-1D338;N # TETRAGRAM FOR CONSTANCY
-1D339;N # TETRAGRAM FOR MEASURE
-1D33A;N # TETRAGRAM FOR ETERNITY
-1D33B;N # TETRAGRAM FOR UNITY
-1D33C;N # TETRAGRAM FOR DIMINISHMENT
-1D33D;N # TETRAGRAM FOR CLOSED MOUTH
-1D33E;N # TETRAGRAM FOR GUARDEDNESS
-1D33F;N # TETRAGRAM FOR GATHERING IN
-1D340;N # TETRAGRAM FOR MASSING
-1D341;N # TETRAGRAM FOR ACCUMULATION
-1D342;N # TETRAGRAM FOR EMBELLISHMENT
-1D343;N # TETRAGRAM FOR DOUBT
-1D344;N # TETRAGRAM FOR WATCH
-1D345;N # TETRAGRAM FOR SINKING
-1D346;N # TETRAGRAM FOR INNER
-1D347;N # TETRAGRAM FOR DEPARTURE
-1D348;N # TETRAGRAM FOR DARKENING
-1D349;N # TETRAGRAM FOR DIMMING
-1D34A;N # TETRAGRAM FOR EXHAUSTION
-1D34B;N # TETRAGRAM FOR SEVERANCE
-1D34C;N # TETRAGRAM FOR STOPPAGE
-1D34D;N # TETRAGRAM FOR HARDNESS
-1D34E;N # TETRAGRAM FOR COMPLETION
-1D34F;N # TETRAGRAM FOR CLOSURE
-1D350;N # TETRAGRAM FOR FAILURE
-1D351;N # TETRAGRAM FOR AGGRAVATION
-1D352;N # TETRAGRAM FOR COMPLIANCE
-1D353;N # TETRAGRAM FOR ON THE VERGE
-1D354;N # TETRAGRAM FOR DIFFICULTIES
-1D355;N # TETRAGRAM FOR LABOURING
-1D356;N # TETRAGRAM FOR FOSTERING
-1D400;N # MATHEMATICAL BOLD CAPITAL A
-1D401;N # MATHEMATICAL BOLD CAPITAL B
-1D402;N # MATHEMATICAL BOLD CAPITAL C
-1D403;N # MATHEMATICAL BOLD CAPITAL D
-1D404;N # MATHEMATICAL BOLD CAPITAL E
-1D405;N # MATHEMATICAL BOLD CAPITAL F
-1D406;N # MATHEMATICAL BOLD CAPITAL G
-1D407;N # MATHEMATICAL BOLD CAPITAL H
-1D408;N # MATHEMATICAL BOLD CAPITAL I
-1D409;N # MATHEMATICAL BOLD CAPITAL J
-1D40A;N # MATHEMATICAL BOLD CAPITAL K
-1D40B;N # MATHEMATICAL BOLD CAPITAL L
-1D40C;N # MATHEMATICAL BOLD CAPITAL M
-1D40D;N # MATHEMATICAL BOLD CAPITAL N
-1D40E;N # MATHEMATICAL BOLD CAPITAL O
-1D40F;N # MATHEMATICAL BOLD CAPITAL P
-1D410;N # MATHEMATICAL BOLD CAPITAL Q
-1D411;N # MATHEMATICAL BOLD CAPITAL R
-1D412;N # MATHEMATICAL BOLD CAPITAL S
-1D413;N # MATHEMATICAL BOLD CAPITAL T
-1D414;N # MATHEMATICAL BOLD CAPITAL U
-1D415;N # MATHEMATICAL BOLD CAPITAL V
-1D416;N # MATHEMATICAL BOLD CAPITAL W
-1D417;N # MATHEMATICAL BOLD CAPITAL X
-1D418;N # MATHEMATICAL BOLD CAPITAL Y
-1D419;N # MATHEMATICAL BOLD CAPITAL Z
-1D41A;N # MATHEMATICAL BOLD SMALL A
-1D41B;N # MATHEMATICAL BOLD SMALL B
-1D41C;N # MATHEMATICAL BOLD SMALL C
-1D41D;N # MATHEMATICAL BOLD SMALL D
-1D41E;N # MATHEMATICAL BOLD SMALL E
-1D41F;N # MATHEMATICAL BOLD SMALL F
-1D420;N # MATHEMATICAL BOLD SMALL G
-1D421;N # MATHEMATICAL BOLD SMALL H
-1D422;N # MATHEMATICAL BOLD SMALL I
-1D423;N # MATHEMATICAL BOLD SMALL J
-1D424;N # MATHEMATICAL BOLD SMALL K
-1D425;N # MATHEMATICAL BOLD SMALL L
-1D426;N # MATHEMATICAL BOLD SMALL M
-1D427;N # MATHEMATICAL BOLD SMALL N
-1D428;N # MATHEMATICAL BOLD SMALL O
-1D429;N # MATHEMATICAL BOLD SMALL P
-1D42A;N # MATHEMATICAL BOLD SMALL Q
-1D42B;N # MATHEMATICAL BOLD SMALL R
-1D42C;N # MATHEMATICAL BOLD SMALL S
-1D42D;N # MATHEMATICAL BOLD SMALL T
-1D42E;N # MATHEMATICAL BOLD SMALL U
-1D42F;N # MATHEMATICAL BOLD SMALL V
-1D430;N # MATHEMATICAL BOLD SMALL W
-1D431;N # MATHEMATICAL BOLD SMALL X
-1D432;N # MATHEMATICAL BOLD SMALL Y
-1D433;N # MATHEMATICAL BOLD SMALL Z
-1D434;N # MATHEMATICAL ITALIC CAPITAL A
-1D435;N # MATHEMATICAL ITALIC CAPITAL B
-1D436;N # MATHEMATICAL ITALIC CAPITAL C
-1D437;N # MATHEMATICAL ITALIC CAPITAL D
-1D438;N # MATHEMATICAL ITALIC CAPITAL E
-1D439;N # MATHEMATICAL ITALIC CAPITAL F
-1D43A;N # MATHEMATICAL ITALIC CAPITAL G
-1D43B;N # MATHEMATICAL ITALIC CAPITAL H
-1D43C;N # MATHEMATICAL ITALIC CAPITAL I
-1D43D;N # MATHEMATICAL ITALIC CAPITAL J
-1D43E;N # MATHEMATICAL ITALIC CAPITAL K
-1D43F;N # MATHEMATICAL ITALIC CAPITAL L
-1D440;N # MATHEMATICAL ITALIC CAPITAL M
-1D441;N # MATHEMATICAL ITALIC CAPITAL N
-1D442;N # MATHEMATICAL ITALIC CAPITAL O
-1D443;N # MATHEMATICAL ITALIC CAPITAL P
-1D444;N # MATHEMATICAL ITALIC CAPITAL Q
-1D445;N # MATHEMATICAL ITALIC CAPITAL R
-1D446;N # MATHEMATICAL ITALIC CAPITAL S
-1D447;N # MATHEMATICAL ITALIC CAPITAL T
-1D448;N # MATHEMATICAL ITALIC CAPITAL U
-1D449;N # MATHEMATICAL ITALIC CAPITAL V
-1D44A;N # MATHEMATICAL ITALIC CAPITAL W
-1D44B;N # MATHEMATICAL ITALIC CAPITAL X
-1D44C;N # MATHEMATICAL ITALIC CAPITAL Y
-1D44D;N # MATHEMATICAL ITALIC CAPITAL Z
-1D44E;N # MATHEMATICAL ITALIC SMALL A
-1D44F;N # MATHEMATICAL ITALIC SMALL B
-1D450;N # MATHEMATICAL ITALIC SMALL C
-1D451;N # MATHEMATICAL ITALIC SMALL D
-1D452;N # MATHEMATICAL ITALIC SMALL E
-1D453;N # MATHEMATICAL ITALIC SMALL F
-1D454;N # MATHEMATICAL ITALIC SMALL G
-1D456;N # MATHEMATICAL ITALIC SMALL I
-1D457;N # MATHEMATICAL ITALIC SMALL J
-1D458;N # MATHEMATICAL ITALIC SMALL K
-1D459;N # MATHEMATICAL ITALIC SMALL L
-1D45A;N # MATHEMATICAL ITALIC SMALL M
-1D45B;N # MATHEMATICAL ITALIC SMALL N
-1D45C;N # MATHEMATICAL ITALIC SMALL O
-1D45D;N # MATHEMATICAL ITALIC SMALL P
-1D45E;N # MATHEMATICAL ITALIC SMALL Q
-1D45F;N # MATHEMATICAL ITALIC SMALL R
-1D460;N # MATHEMATICAL ITALIC SMALL S
-1D461;N # MATHEMATICAL ITALIC SMALL T
-1D462;N # MATHEMATICAL ITALIC SMALL U
-1D463;N # MATHEMATICAL ITALIC SMALL V
-1D464;N # MATHEMATICAL ITALIC SMALL W
-1D465;N # MATHEMATICAL ITALIC SMALL X
-1D466;N # MATHEMATICAL ITALIC SMALL Y
-1D467;N # MATHEMATICAL ITALIC SMALL Z
-1D468;N # MATHEMATICAL BOLD ITALIC CAPITAL A
-1D469;N # MATHEMATICAL BOLD ITALIC CAPITAL B
-1D46A;N # MATHEMATICAL BOLD ITALIC CAPITAL C
-1D46B;N # MATHEMATICAL BOLD ITALIC CAPITAL D
-1D46C;N # MATHEMATICAL BOLD ITALIC CAPITAL E
-1D46D;N # MATHEMATICAL BOLD ITALIC CAPITAL F
-1D46E;N # MATHEMATICAL BOLD ITALIC CAPITAL G
-1D46F;N # MATHEMATICAL BOLD ITALIC CAPITAL H
-1D470;N # MATHEMATICAL BOLD ITALIC CAPITAL I
-1D471;N # MATHEMATICAL BOLD ITALIC CAPITAL J
-1D472;N # MATHEMATICAL BOLD ITALIC CAPITAL K
-1D473;N # MATHEMATICAL BOLD ITALIC CAPITAL L
-1D474;N # MATHEMATICAL BOLD ITALIC CAPITAL M
-1D475;N # MATHEMATICAL BOLD ITALIC CAPITAL N
-1D476;N # MATHEMATICAL BOLD ITALIC CAPITAL O
-1D477;N # MATHEMATICAL BOLD ITALIC CAPITAL P
-1D478;N # MATHEMATICAL BOLD ITALIC CAPITAL Q
-1D479;N # MATHEMATICAL BOLD ITALIC CAPITAL R
-1D47A;N # MATHEMATICAL BOLD ITALIC CAPITAL S
-1D47B;N # MATHEMATICAL BOLD ITALIC CAPITAL T
-1D47C;N # MATHEMATICAL BOLD ITALIC CAPITAL U
-1D47D;N # MATHEMATICAL BOLD ITALIC CAPITAL V
-1D47E;N # MATHEMATICAL BOLD ITALIC CAPITAL W
-1D47F;N # MATHEMATICAL BOLD ITALIC CAPITAL X
-1D480;N # MATHEMATICAL BOLD ITALIC CAPITAL Y
-1D481;N # MATHEMATICAL BOLD ITALIC CAPITAL Z
-1D482;N # MATHEMATICAL BOLD ITALIC SMALL A
-1D483;N # MATHEMATICAL BOLD ITALIC SMALL B
-1D484;N # MATHEMATICAL BOLD ITALIC SMALL C
-1D485;N # MATHEMATICAL BOLD ITALIC SMALL D
-1D486;N # MATHEMATICAL BOLD ITALIC SMALL E
-1D487;N # MATHEMATICAL BOLD ITALIC SMALL F
-1D488;N # MATHEMATICAL BOLD ITALIC SMALL G
-1D489;N # MATHEMATICAL BOLD ITALIC SMALL H
-1D48A;N # MATHEMATICAL BOLD ITALIC SMALL I
-1D48B;N # MATHEMATICAL BOLD ITALIC SMALL J
-1D48C;N # MATHEMATICAL BOLD ITALIC SMALL K
-1D48D;N # MATHEMATICAL BOLD ITALIC SMALL L
-1D48E;N # MATHEMATICAL BOLD ITALIC SMALL M
-1D48F;N # MATHEMATICAL BOLD ITALIC SMALL N
-1D490;N # MATHEMATICAL BOLD ITALIC SMALL O
-1D491;N # MATHEMATICAL BOLD ITALIC SMALL P
-1D492;N # MATHEMATICAL BOLD ITALIC SMALL Q
-1D493;N # MATHEMATICAL BOLD ITALIC SMALL R
-1D494;N # MATHEMATICAL BOLD ITALIC SMALL S
-1D495;N # MATHEMATICAL BOLD ITALIC SMALL T
-1D496;N # MATHEMATICAL BOLD ITALIC SMALL U
-1D497;N # MATHEMATICAL BOLD ITALIC SMALL V
-1D498;N # MATHEMATICAL BOLD ITALIC SMALL W
-1D499;N # MATHEMATICAL BOLD ITALIC SMALL X
-1D49A;N # MATHEMATICAL BOLD ITALIC SMALL Y
-1D49B;N # MATHEMATICAL BOLD ITALIC SMALL Z
-1D49C;N # MATHEMATICAL SCRIPT CAPITAL A
-1D49E;N # MATHEMATICAL SCRIPT CAPITAL C
-1D49F;N # MATHEMATICAL SCRIPT CAPITAL D
-1D4A2;N # MATHEMATICAL SCRIPT CAPITAL G
-1D4A5;N # MATHEMATICAL SCRIPT CAPITAL J
-1D4A6;N # MATHEMATICAL SCRIPT CAPITAL K
-1D4A9;N # MATHEMATICAL SCRIPT CAPITAL N
-1D4AA;N # MATHEMATICAL SCRIPT CAPITAL O
-1D4AB;N # MATHEMATICAL SCRIPT CAPITAL P
-1D4AC;N # MATHEMATICAL SCRIPT CAPITAL Q
-1D4AE;N # MATHEMATICAL SCRIPT CAPITAL S
-1D4AF;N # MATHEMATICAL SCRIPT CAPITAL T
-1D4B0;N # MATHEMATICAL SCRIPT CAPITAL U
-1D4B1;N # MATHEMATICAL SCRIPT CAPITAL V
-1D4B2;N # MATHEMATICAL SCRIPT CAPITAL W
-1D4B3;N # MATHEMATICAL SCRIPT CAPITAL X
-1D4B4;N # MATHEMATICAL SCRIPT CAPITAL Y
-1D4B5;N # MATHEMATICAL SCRIPT CAPITAL Z
-1D4B6;N # MATHEMATICAL SCRIPT SMALL A
-1D4B7;N # MATHEMATICAL SCRIPT SMALL B
-1D4B8;N # MATHEMATICAL SCRIPT SMALL C
-1D4B9;N # MATHEMATICAL SCRIPT SMALL D
-1D4BB;N # MATHEMATICAL SCRIPT SMALL F
-1D4BD;N # MATHEMATICAL SCRIPT SMALL H
-1D4BE;N # MATHEMATICAL SCRIPT SMALL I
-1D4BF;N # MATHEMATICAL SCRIPT SMALL J
-1D4C0;N # MATHEMATICAL SCRIPT SMALL K
-1D4C1;N # MATHEMATICAL SCRIPT SMALL L
-1D4C2;N # MATHEMATICAL SCRIPT SMALL M
-1D4C3;N # MATHEMATICAL SCRIPT SMALL N
-1D4C5;N # MATHEMATICAL SCRIPT SMALL P
-1D4C6;N # MATHEMATICAL SCRIPT SMALL Q
-1D4C7;N # MATHEMATICAL SCRIPT SMALL R
-1D4C8;N # MATHEMATICAL SCRIPT SMALL S
-1D4C9;N # MATHEMATICAL SCRIPT SMALL T
-1D4CA;N # MATHEMATICAL SCRIPT SMALL U
-1D4CB;N # MATHEMATICAL SCRIPT SMALL V
-1D4CC;N # MATHEMATICAL SCRIPT SMALL W
-1D4CD;N # MATHEMATICAL SCRIPT SMALL X
-1D4CE;N # MATHEMATICAL SCRIPT SMALL Y
-1D4CF;N # MATHEMATICAL SCRIPT SMALL Z
-1D4D0;N # MATHEMATICAL BOLD SCRIPT CAPITAL A
-1D4D1;N # MATHEMATICAL BOLD SCRIPT CAPITAL B
-1D4D2;N # MATHEMATICAL BOLD SCRIPT CAPITAL C
-1D4D3;N # MATHEMATICAL BOLD SCRIPT CAPITAL D
-1D4D4;N # MATHEMATICAL BOLD SCRIPT CAPITAL E
-1D4D5;N # MATHEMATICAL BOLD SCRIPT CAPITAL F
-1D4D6;N # MATHEMATICAL BOLD SCRIPT CAPITAL G
-1D4D7;N # MATHEMATICAL BOLD SCRIPT CAPITAL H
-1D4D8;N # MATHEMATICAL BOLD SCRIPT CAPITAL I
-1D4D9;N # MATHEMATICAL BOLD SCRIPT CAPITAL J
-1D4DA;N # MATHEMATICAL BOLD SCRIPT CAPITAL K
-1D4DB;N # MATHEMATICAL BOLD SCRIPT CAPITAL L
-1D4DC;N # MATHEMATICAL BOLD SCRIPT CAPITAL M
-1D4DD;N # MATHEMATICAL BOLD SCRIPT CAPITAL N
-1D4DE;N # MATHEMATICAL BOLD SCRIPT CAPITAL O
-1D4DF;N # MATHEMATICAL BOLD SCRIPT CAPITAL P
-1D4E0;N # MATHEMATICAL BOLD SCRIPT CAPITAL Q
-1D4E1;N # MATHEMATICAL BOLD SCRIPT CAPITAL R
-1D4E2;N # MATHEMATICAL BOLD SCRIPT CAPITAL S
-1D4E3;N # MATHEMATICAL BOLD SCRIPT CAPITAL T
-1D4E4;N # MATHEMATICAL BOLD SCRIPT CAPITAL U
-1D4E5;N # MATHEMATICAL BOLD SCRIPT CAPITAL V
-1D4E6;N # MATHEMATICAL BOLD SCRIPT CAPITAL W
-1D4E7;N # MATHEMATICAL BOLD SCRIPT CAPITAL X
-1D4E8;N # MATHEMATICAL BOLD SCRIPT CAPITAL Y
-1D4E9;N # MATHEMATICAL BOLD SCRIPT CAPITAL Z
-1D4EA;N # MATHEMATICAL BOLD SCRIPT SMALL A
-1D4EB;N # MATHEMATICAL BOLD SCRIPT SMALL B
-1D4EC;N # MATHEMATICAL BOLD SCRIPT SMALL C
-1D4ED;N # MATHEMATICAL BOLD SCRIPT SMALL D
-1D4EE;N # MATHEMATICAL BOLD SCRIPT SMALL E
-1D4EF;N # MATHEMATICAL BOLD SCRIPT SMALL F
-1D4F0;N # MATHEMATICAL BOLD SCRIPT SMALL G
-1D4F1;N # MATHEMATICAL BOLD SCRIPT SMALL H
-1D4F2;N # MATHEMATICAL BOLD SCRIPT SMALL I
-1D4F3;N # MATHEMATICAL BOLD SCRIPT SMALL J
-1D4F4;N # MATHEMATICAL BOLD SCRIPT SMALL K
-1D4F5;N # MATHEMATICAL BOLD SCRIPT SMALL L
-1D4F6;N # MATHEMATICAL BOLD SCRIPT SMALL M
-1D4F7;N # MATHEMATICAL BOLD SCRIPT SMALL N
-1D4F8;N # MATHEMATICAL BOLD SCRIPT SMALL O
-1D4F9;N # MATHEMATICAL BOLD SCRIPT SMALL P
-1D4FA;N # MATHEMATICAL BOLD SCRIPT SMALL Q
-1D4FB;N # MATHEMATICAL BOLD SCRIPT SMALL R
-1D4FC;N # MATHEMATICAL BOLD SCRIPT SMALL S
-1D4FD;N # MATHEMATICAL BOLD SCRIPT SMALL T
-1D4FE;N # MATHEMATICAL BOLD SCRIPT SMALL U
-1D4FF;N # MATHEMATICAL BOLD SCRIPT SMALL V
-1D500;N # MATHEMATICAL BOLD SCRIPT SMALL W
-1D501;N # MATHEMATICAL BOLD SCRIPT SMALL X
-1D502;N # MATHEMATICAL BOLD SCRIPT SMALL Y
-1D503;N # MATHEMATICAL BOLD SCRIPT SMALL Z
-1D504;N # MATHEMATICAL FRAKTUR CAPITAL A
-1D505;N # MATHEMATICAL FRAKTUR CAPITAL B
-1D507;N # MATHEMATICAL FRAKTUR CAPITAL D
-1D508;N # MATHEMATICAL FRAKTUR CAPITAL E
-1D509;N # MATHEMATICAL FRAKTUR CAPITAL F
-1D50A;N # MATHEMATICAL FRAKTUR CAPITAL G
-1D50D;N # MATHEMATICAL FRAKTUR CAPITAL J
-1D50E;N # MATHEMATICAL FRAKTUR CAPITAL K
-1D50F;N # MATHEMATICAL FRAKTUR CAPITAL L
-1D510;N # MATHEMATICAL FRAKTUR CAPITAL M
-1D511;N # MATHEMATICAL FRAKTUR CAPITAL N
-1D512;N # MATHEMATICAL FRAKTUR CAPITAL O
-1D513;N # MATHEMATICAL FRAKTUR CAPITAL P
-1D514;N # MATHEMATICAL FRAKTUR CAPITAL Q
-1D516;N # MATHEMATICAL FRAKTUR CAPITAL S
-1D517;N # MATHEMATICAL FRAKTUR CAPITAL T
-1D518;N # MATHEMATICAL FRAKTUR CAPITAL U
-1D519;N # MATHEMATICAL FRAKTUR CAPITAL V
-1D51A;N # MATHEMATICAL FRAKTUR CAPITAL W
-1D51B;N # MATHEMATICAL FRAKTUR CAPITAL X
-1D51C;N # MATHEMATICAL FRAKTUR CAPITAL Y
-1D51E;N # MATHEMATICAL FRAKTUR SMALL A
-1D51F;N # MATHEMATICAL FRAKTUR SMALL B
-1D520;N # MATHEMATICAL FRAKTUR SMALL C
-1D521;N # MATHEMATICAL FRAKTUR SMALL D
-1D522;N # MATHEMATICAL FRAKTUR SMALL E
-1D523;N # MATHEMATICAL FRAKTUR SMALL F
-1D524;N # MATHEMATICAL FRAKTUR SMALL G
-1D525;N # MATHEMATICAL FRAKTUR SMALL H
-1D526;N # MATHEMATICAL FRAKTUR SMALL I
-1D527;N # MATHEMATICAL FRAKTUR SMALL J
-1D528;N # MATHEMATICAL FRAKTUR SMALL K
-1D529;N # MATHEMATICAL FRAKTUR SMALL L
-1D52A;N # MATHEMATICAL FRAKTUR SMALL M
-1D52B;N # MATHEMATICAL FRAKTUR SMALL N
-1D52C;N # MATHEMATICAL FRAKTUR SMALL O
-1D52D;N # MATHEMATICAL FRAKTUR SMALL P
-1D52E;N # MATHEMATICAL FRAKTUR SMALL Q
-1D52F;N # MATHEMATICAL FRAKTUR SMALL R
-1D530;N # MATHEMATICAL FRAKTUR SMALL S
-1D531;N # MATHEMATICAL FRAKTUR SMALL T
-1D532;N # MATHEMATICAL FRAKTUR SMALL U
-1D533;N # MATHEMATICAL FRAKTUR SMALL V
-1D534;N # MATHEMATICAL FRAKTUR SMALL W
-1D535;N # MATHEMATICAL FRAKTUR SMALL X
-1D536;N # MATHEMATICAL FRAKTUR SMALL Y
-1D537;N # MATHEMATICAL FRAKTUR SMALL Z
-1D538;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL A
-1D539;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL B
-1D53B;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL D
-1D53C;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL E
-1D53D;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL F
-1D53E;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL G
-1D540;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL I
-1D541;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL J
-1D542;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL K
-1D543;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL L
-1D544;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL M
-1D546;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL O
-1D54A;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL S
-1D54B;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL T
-1D54C;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL U
-1D54D;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL V
-1D54E;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL W
-1D54F;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL X
-1D550;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
-1D552;N # MATHEMATICAL DOUBLE-STRUCK SMALL A
-1D553;N # MATHEMATICAL DOUBLE-STRUCK SMALL B
-1D554;N # MATHEMATICAL DOUBLE-STRUCK SMALL C
-1D555;N # MATHEMATICAL DOUBLE-STRUCK SMALL D
-1D556;N # MATHEMATICAL DOUBLE-STRUCK SMALL E
-1D557;N # MATHEMATICAL DOUBLE-STRUCK SMALL F
-1D558;N # MATHEMATICAL DOUBLE-STRUCK SMALL G
-1D559;N # MATHEMATICAL DOUBLE-STRUCK SMALL H
-1D55A;N # MATHEMATICAL DOUBLE-STRUCK SMALL I
-1D55B;N # MATHEMATICAL DOUBLE-STRUCK SMALL J
-1D55C;N # MATHEMATICAL DOUBLE-STRUCK SMALL K
-1D55D;N # MATHEMATICAL DOUBLE-STRUCK SMALL L
-1D55E;N # MATHEMATICAL DOUBLE-STRUCK SMALL M
-1D55F;N # MATHEMATICAL DOUBLE-STRUCK SMALL N
-1D560;N # MATHEMATICAL DOUBLE-STRUCK SMALL O
-1D561;N # MATHEMATICAL DOUBLE-STRUCK SMALL P
-1D562;N # MATHEMATICAL DOUBLE-STRUCK SMALL Q
-1D563;N # MATHEMATICAL DOUBLE-STRUCK SMALL R
-1D564;N # MATHEMATICAL DOUBLE-STRUCK SMALL S
-1D565;N # MATHEMATICAL DOUBLE-STRUCK SMALL T
-1D566;N # MATHEMATICAL DOUBLE-STRUCK SMALL U
-1D567;N # MATHEMATICAL DOUBLE-STRUCK SMALL V
-1D568;N # MATHEMATICAL DOUBLE-STRUCK SMALL W
-1D569;N # MATHEMATICAL DOUBLE-STRUCK SMALL X
-1D56A;N # MATHEMATICAL DOUBLE-STRUCK SMALL Y
-1D56B;N # MATHEMATICAL DOUBLE-STRUCK SMALL Z
-1D56C;N # MATHEMATICAL BOLD FRAKTUR CAPITAL A
-1D56D;N # MATHEMATICAL BOLD FRAKTUR CAPITAL B
-1D56E;N # MATHEMATICAL BOLD FRAKTUR CAPITAL C
-1D56F;N # MATHEMATICAL BOLD FRAKTUR CAPITAL D
-1D570;N # MATHEMATICAL BOLD FRAKTUR CAPITAL E
-1D571;N # MATHEMATICAL BOLD FRAKTUR CAPITAL F
-1D572;N # MATHEMATICAL BOLD FRAKTUR CAPITAL G
-1D573;N # MATHEMATICAL BOLD FRAKTUR CAPITAL H
-1D574;N # MATHEMATICAL BOLD FRAKTUR CAPITAL I
-1D575;N # MATHEMATICAL BOLD FRAKTUR CAPITAL J
-1D576;N # MATHEMATICAL BOLD FRAKTUR CAPITAL K
-1D577;N # MATHEMATICAL BOLD FRAKTUR CAPITAL L
-1D578;N # MATHEMATICAL BOLD FRAKTUR CAPITAL M
-1D579;N # MATHEMATICAL BOLD FRAKTUR CAPITAL N
-1D57A;N # MATHEMATICAL BOLD FRAKTUR CAPITAL O
-1D57B;N # MATHEMATICAL BOLD FRAKTUR CAPITAL P
-1D57C;N # MATHEMATICAL BOLD FRAKTUR CAPITAL Q
-1D57D;N # MATHEMATICAL BOLD FRAKTUR CAPITAL R
-1D57E;N # MATHEMATICAL BOLD FRAKTUR CAPITAL S
-1D57F;N # MATHEMATICAL BOLD FRAKTUR CAPITAL T
-1D580;N # MATHEMATICAL BOLD FRAKTUR CAPITAL U
-1D581;N # MATHEMATICAL BOLD FRAKTUR CAPITAL V
-1D582;N # MATHEMATICAL BOLD FRAKTUR CAPITAL W
-1D583;N # MATHEMATICAL BOLD FRAKTUR CAPITAL X
-1D584;N # MATHEMATICAL BOLD FRAKTUR CAPITAL Y
-1D585;N # MATHEMATICAL BOLD FRAKTUR CAPITAL Z
-1D586;N # MATHEMATICAL BOLD FRAKTUR SMALL A
-1D587;N # MATHEMATICAL BOLD FRAKTUR SMALL B
-1D588;N # MATHEMATICAL BOLD FRAKTUR SMALL C
-1D589;N # MATHEMATICAL BOLD FRAKTUR SMALL D
-1D58A;N # MATHEMATICAL BOLD FRAKTUR SMALL E
-1D58B;N # MATHEMATICAL BOLD FRAKTUR SMALL F
-1D58C;N # MATHEMATICAL BOLD FRAKTUR SMALL G
-1D58D;N # MATHEMATICAL BOLD FRAKTUR SMALL H
-1D58E;N # MATHEMATICAL BOLD FRAKTUR SMALL I
-1D58F;N # MATHEMATICAL BOLD FRAKTUR SMALL J
-1D590;N # MATHEMATICAL BOLD FRAKTUR SMALL K
-1D591;N # MATHEMATICAL BOLD FRAKTUR SMALL L
-1D592;N # MATHEMATICAL BOLD FRAKTUR SMALL M
-1D593;N # MATHEMATICAL BOLD FRAKTUR SMALL N
-1D594;N # MATHEMATICAL BOLD FRAKTUR SMALL O
-1D595;N # MATHEMATICAL BOLD FRAKTUR SMALL P
-1D596;N # MATHEMATICAL BOLD FRAKTUR SMALL Q
-1D597;N # MATHEMATICAL BOLD FRAKTUR SMALL R
-1D598;N # MATHEMATICAL BOLD FRAKTUR SMALL S
-1D599;N # MATHEMATICAL BOLD FRAKTUR SMALL T
-1D59A;N # MATHEMATICAL BOLD FRAKTUR SMALL U
-1D59B;N # MATHEMATICAL BOLD FRAKTUR SMALL V
-1D59C;N # MATHEMATICAL BOLD FRAKTUR SMALL W
-1D59D;N # MATHEMATICAL BOLD FRAKTUR SMALL X
-1D59E;N # MATHEMATICAL BOLD FRAKTUR SMALL Y
-1D59F;N # MATHEMATICAL BOLD FRAKTUR SMALL Z
-1D5A0;N # MATHEMATICAL SANS-SERIF CAPITAL A
-1D5A1;N # MATHEMATICAL SANS-SERIF CAPITAL B
-1D5A2;N # MATHEMATICAL SANS-SERIF CAPITAL C
-1D5A3;N # MATHEMATICAL SANS-SERIF CAPITAL D
-1D5A4;N # MATHEMATICAL SANS-SERIF CAPITAL E
-1D5A5;N # MATHEMATICAL SANS-SERIF CAPITAL F
-1D5A6;N # MATHEMATICAL SANS-SERIF CAPITAL G
-1D5A7;N # MATHEMATICAL SANS-SERIF CAPITAL H
-1D5A8;N # MATHEMATICAL SANS-SERIF CAPITAL I
-1D5A9;N # MATHEMATICAL SANS-SERIF CAPITAL J
-1D5AA;N # MATHEMATICAL SANS-SERIF CAPITAL K
-1D5AB;N # MATHEMATICAL SANS-SERIF CAPITAL L
-1D5AC;N # MATHEMATICAL SANS-SERIF CAPITAL M
-1D5AD;N # MATHEMATICAL SANS-SERIF CAPITAL N
-1D5AE;N # MATHEMATICAL SANS-SERIF CAPITAL O
-1D5AF;N # MATHEMATICAL SANS-SERIF CAPITAL P
-1D5B0;N # MATHEMATICAL SANS-SERIF CAPITAL Q
-1D5B1;N # MATHEMATICAL SANS-SERIF CAPITAL R
-1D5B2;N # MATHEMATICAL SANS-SERIF CAPITAL S
-1D5B3;N # MATHEMATICAL SANS-SERIF CAPITAL T
-1D5B4;N # MATHEMATICAL SANS-SERIF CAPITAL U
-1D5B5;N # MATHEMATICAL SANS-SERIF CAPITAL V
-1D5B6;N # MATHEMATICAL SANS-SERIF CAPITAL W
-1D5B7;N # MATHEMATICAL SANS-SERIF CAPITAL X
-1D5B8;N # MATHEMATICAL SANS-SERIF CAPITAL Y
-1D5B9;N # MATHEMATICAL SANS-SERIF CAPITAL Z
-1D5BA;N # MATHEMATICAL SANS-SERIF SMALL A
-1D5BB;N # MATHEMATICAL SANS-SERIF SMALL B
-1D5BC;N # MATHEMATICAL SANS-SERIF SMALL C
-1D5BD;N # MATHEMATICAL SANS-SERIF SMALL D
-1D5BE;N # MATHEMATICAL SANS-SERIF SMALL E
-1D5BF;N # MATHEMATICAL SANS-SERIF SMALL F
-1D5C0;N # MATHEMATICAL SANS-SERIF SMALL G
-1D5C1;N # MATHEMATICAL SANS-SERIF SMALL H
-1D5C2;N # MATHEMATICAL SANS-SERIF SMALL I
-1D5C3;N # MATHEMATICAL SANS-SERIF SMALL J
-1D5C4;N # MATHEMATICAL SANS-SERIF SMALL K
-1D5C5;N # MATHEMATICAL SANS-SERIF SMALL L
-1D5C6;N # MATHEMATICAL SANS-SERIF SMALL M
-1D5C7;N # MATHEMATICAL SANS-SERIF SMALL N
-1D5C8;N # MATHEMATICAL SANS-SERIF SMALL O
-1D5C9;N # MATHEMATICAL SANS-SERIF SMALL P
-1D5CA;N # MATHEMATICAL SANS-SERIF SMALL Q
-1D5CB;N # MATHEMATICAL SANS-SERIF SMALL R
-1D5CC;N # MATHEMATICAL SANS-SERIF SMALL S
-1D5CD;N # MATHEMATICAL SANS-SERIF SMALL T
-1D5CE;N # MATHEMATICAL SANS-SERIF SMALL U
-1D5CF;N # MATHEMATICAL SANS-SERIF SMALL V
-1D5D0;N # MATHEMATICAL SANS-SERIF SMALL W
-1D5D1;N # MATHEMATICAL SANS-SERIF SMALL X
-1D5D2;N # MATHEMATICAL SANS-SERIF SMALL Y
-1D5D3;N # MATHEMATICAL SANS-SERIF SMALL Z
-1D5D4;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL A
-1D5D5;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL B
-1D5D6;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL C
-1D5D7;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL D
-1D5D8;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL E
-1D5D9;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL F
-1D5DA;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL G
-1D5DB;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL H
-1D5DC;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL I
-1D5DD;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL J
-1D5DE;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL K
-1D5DF;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL L
-1D5E0;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL M
-1D5E1;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL N
-1D5E2;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL O
-1D5E3;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL P
-1D5E4;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL Q
-1D5E5;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL R
-1D5E6;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL S
-1D5E7;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL T
-1D5E8;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL U
-1D5E9;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL V
-1D5EA;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL W
-1D5EB;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL X
-1D5EC;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL Y
-1D5ED;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
-1D5EE;N # MATHEMATICAL SANS-SERIF BOLD SMALL A
-1D5EF;N # MATHEMATICAL SANS-SERIF BOLD SMALL B
-1D5F0;N # MATHEMATICAL SANS-SERIF BOLD SMALL C
-1D5F1;N # MATHEMATICAL SANS-SERIF BOLD SMALL D
-1D5F2;N # MATHEMATICAL SANS-SERIF BOLD SMALL E
-1D5F3;N # MATHEMATICAL SANS-SERIF BOLD SMALL F
-1D5F4;N # MATHEMATICAL SANS-SERIF BOLD SMALL G
-1D5F5;N # MATHEMATICAL SANS-SERIF BOLD SMALL H
-1D5F6;N # MATHEMATICAL SANS-SERIF BOLD SMALL I
-1D5F7;N # MATHEMATICAL SANS-SERIF BOLD SMALL J
-1D5F8;N # MATHEMATICAL SANS-SERIF BOLD SMALL K
-1D5F9;N # MATHEMATICAL SANS-SERIF BOLD SMALL L
-1D5FA;N # MATHEMATICAL SANS-SERIF BOLD SMALL M
-1D5FB;N # MATHEMATICAL SANS-SERIF BOLD SMALL N
-1D5FC;N # MATHEMATICAL SANS-SERIF BOLD SMALL O
-1D5FD;N # MATHEMATICAL SANS-SERIF BOLD SMALL P
-1D5FE;N # MATHEMATICAL SANS-SERIF BOLD SMALL Q
-1D5FF;N # MATHEMATICAL SANS-SERIF BOLD SMALL R
-1D600;N # MATHEMATICAL SANS-SERIF BOLD SMALL S
-1D601;N # MATHEMATICAL SANS-SERIF BOLD SMALL T
-1D602;N # MATHEMATICAL SANS-SERIF BOLD SMALL U
-1D603;N # MATHEMATICAL SANS-SERIF BOLD SMALL V
-1D604;N # MATHEMATICAL SANS-SERIF BOLD SMALL W
-1D605;N # MATHEMATICAL SANS-SERIF BOLD SMALL X
-1D606;N # MATHEMATICAL SANS-SERIF BOLD SMALL Y
-1D607;N # MATHEMATICAL SANS-SERIF BOLD SMALL Z
-1D608;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
-1D609;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
-1D60A;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
-1D60B;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL D
-1D60C;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL E
-1D60D;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL F
-1D60E;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL G
-1D60F;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL H
-1D610;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL I
-1D611;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL J
-1D612;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL K
-1D613;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL L
-1D614;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL M
-1D615;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL N
-1D616;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL O
-1D617;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL P
-1D618;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q
-1D619;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL R
-1D61A;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL S
-1D61B;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL T
-1D61C;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL U
-1D61D;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL V
-1D61E;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL W
-1D61F;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL X
-1D620;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y
-1D621;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
-1D622;N # MATHEMATICAL SANS-SERIF ITALIC SMALL A
-1D623;N # MATHEMATICAL SANS-SERIF ITALIC SMALL B
-1D624;N # MATHEMATICAL SANS-SERIF ITALIC SMALL C
-1D625;N # MATHEMATICAL SANS-SERIF ITALIC SMALL D
-1D626;N # MATHEMATICAL SANS-SERIF ITALIC SMALL E
-1D627;N # MATHEMATICAL SANS-SERIF ITALIC SMALL F
-1D628;N # MATHEMATICAL SANS-SERIF ITALIC SMALL G
-1D629;N # MATHEMATICAL SANS-SERIF ITALIC SMALL H
-1D62A;N # MATHEMATICAL SANS-SERIF ITALIC SMALL I
-1D62B;N # MATHEMATICAL SANS-SERIF ITALIC SMALL J
-1D62C;N # MATHEMATICAL SANS-SERIF ITALIC SMALL K
-1D62D;N # MATHEMATICAL SANS-SERIF ITALIC SMALL L
-1D62E;N # MATHEMATICAL SANS-SERIF ITALIC SMALL M
-1D62F;N # MATHEMATICAL SANS-SERIF ITALIC SMALL N
-1D630;N # MATHEMATICAL SANS-SERIF ITALIC SMALL O
-1D631;N # MATHEMATICAL SANS-SERIF ITALIC SMALL P
-1D632;N # MATHEMATICAL SANS-SERIF ITALIC SMALL Q
-1D633;N # MATHEMATICAL SANS-SERIF ITALIC SMALL R
-1D634;N # MATHEMATICAL SANS-SERIF ITALIC SMALL S
-1D635;N # MATHEMATICAL SANS-SERIF ITALIC SMALL T
-1D636;N # MATHEMATICAL SANS-SERIF ITALIC SMALL U
-1D637;N # MATHEMATICAL SANS-SERIF ITALIC SMALL V
-1D638;N # MATHEMATICAL SANS-SERIF ITALIC SMALL W
-1D639;N # MATHEMATICAL SANS-SERIF ITALIC SMALL X
-1D63A;N # MATHEMATICAL SANS-SERIF ITALIC SMALL Y
-1D63B;N # MATHEMATICAL SANS-SERIF ITALIC SMALL Z
-1D63C;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
-1D63D;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
-1D63E;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
-1D63F;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
-1D640;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
-1D641;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F
-1D642;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
-1D643;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H
-1D644;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
-1D645;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J
-1D646;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
-1D647;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
-1D648;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
-1D649;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
-1D64A;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
-1D64B;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
-1D64C;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q
-1D64D;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
-1D64E;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
-1D64F;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
-1D650;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
-1D651;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V
-1D652;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W
-1D653;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
-1D654;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y
-1D655;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
-1D656;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A
-1D657;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B
-1D658;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C
-1D659;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D
-1D65A;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E
-1D65B;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F
-1D65C;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G
-1D65D;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H
-1D65E;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I
-1D65F;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
-1D660;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K
-1D661;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L
-1D662;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M
-1D663;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N
-1D664;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O
-1D665;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P
-1D666;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q
-1D667;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R
-1D668;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S
-1D669;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T
-1D66A;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U
-1D66B;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V
-1D66C;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W
-1D66D;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X
-1D66E;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y
-1D66F;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
-1D670;N # MATHEMATICAL MONOSPACE CAPITAL A
-1D671;N # MATHEMATICAL MONOSPACE CAPITAL B
-1D672;N # MATHEMATICAL MONOSPACE CAPITAL C
-1D673;N # MATHEMATICAL MONOSPACE CAPITAL D
-1D674;N # MATHEMATICAL MONOSPACE CAPITAL E
-1D675;N # MATHEMATICAL MONOSPACE CAPITAL F
-1D676;N # MATHEMATICAL MONOSPACE CAPITAL G
-1D677;N # MATHEMATICAL MONOSPACE CAPITAL H
-1D678;N # MATHEMATICAL MONOSPACE CAPITAL I
-1D679;N # MATHEMATICAL MONOSPACE CAPITAL J
-1D67A;N # MATHEMATICAL MONOSPACE CAPITAL K
-1D67B;N # MATHEMATICAL MONOSPACE CAPITAL L
-1D67C;N # MATHEMATICAL MONOSPACE CAPITAL M
-1D67D;N # MATHEMATICAL MONOSPACE CAPITAL N
-1D67E;N # MATHEMATICAL MONOSPACE CAPITAL O
-1D67F;N # MATHEMATICAL MONOSPACE CAPITAL P
-1D680;N # MATHEMATICAL MONOSPACE CAPITAL Q
-1D681;N # MATHEMATICAL MONOSPACE CAPITAL R
-1D682;N # MATHEMATICAL MONOSPACE CAPITAL S
-1D683;N # MATHEMATICAL MONOSPACE CAPITAL T
-1D684;N # MATHEMATICAL MONOSPACE CAPITAL U
-1D685;N # MATHEMATICAL MONOSPACE CAPITAL V
-1D686;N # MATHEMATICAL MONOSPACE CAPITAL W
-1D687;N # MATHEMATICAL MONOSPACE CAPITAL X
-1D688;N # MATHEMATICAL MONOSPACE CAPITAL Y
-1D689;N # MATHEMATICAL MONOSPACE CAPITAL Z
-1D68A;N # MATHEMATICAL MONOSPACE SMALL A
-1D68B;N # MATHEMATICAL MONOSPACE SMALL B
-1D68C;N # MATHEMATICAL MONOSPACE SMALL C
-1D68D;N # MATHEMATICAL MONOSPACE SMALL D
-1D68E;N # MATHEMATICAL MONOSPACE SMALL E
-1D68F;N # MATHEMATICAL MONOSPACE SMALL F
-1D690;N # MATHEMATICAL MONOSPACE SMALL G
-1D691;N # MATHEMATICAL MONOSPACE SMALL H
-1D692;N # MATHEMATICAL MONOSPACE SMALL I
-1D693;N # MATHEMATICAL MONOSPACE SMALL J
-1D694;N # MATHEMATICAL MONOSPACE SMALL K
-1D695;N # MATHEMATICAL MONOSPACE SMALL L
-1D696;N # MATHEMATICAL MONOSPACE SMALL M
-1D697;N # MATHEMATICAL MONOSPACE SMALL N
-1D698;N # MATHEMATICAL MONOSPACE SMALL O
-1D699;N # MATHEMATICAL MONOSPACE SMALL P
-1D69A;N # MATHEMATICAL MONOSPACE SMALL Q
-1D69B;N # MATHEMATICAL MONOSPACE SMALL R
-1D69C;N # MATHEMATICAL MONOSPACE SMALL S
-1D69D;N # MATHEMATICAL MONOSPACE SMALL T
-1D69E;N # MATHEMATICAL MONOSPACE SMALL U
-1D69F;N # MATHEMATICAL MONOSPACE SMALL V
-1D6A0;N # MATHEMATICAL MONOSPACE SMALL W
-1D6A1;N # MATHEMATICAL MONOSPACE SMALL X
-1D6A2;N # MATHEMATICAL MONOSPACE SMALL Y
-1D6A3;N # MATHEMATICAL MONOSPACE SMALL Z
-1D6A4;N # MATHEMATICAL ITALIC SMALL DOTLESS I
-1D6A5;N # MATHEMATICAL ITALIC SMALL DOTLESS J
-1D6A8;N # MATHEMATICAL BOLD CAPITAL ALPHA
-1D6A9;N # MATHEMATICAL BOLD CAPITAL BETA
-1D6AA;N # MATHEMATICAL BOLD CAPITAL GAMMA
-1D6AB;N # MATHEMATICAL BOLD CAPITAL DELTA
-1D6AC;N # MATHEMATICAL BOLD CAPITAL EPSILON
-1D6AD;N # MATHEMATICAL BOLD CAPITAL ZETA
-1D6AE;N # MATHEMATICAL BOLD CAPITAL ETA
-1D6AF;N # MATHEMATICAL BOLD CAPITAL THETA
-1D6B0;N # MATHEMATICAL BOLD CAPITAL IOTA
-1D6B1;N # MATHEMATICAL BOLD CAPITAL KAPPA
-1D6B2;N # MATHEMATICAL BOLD CAPITAL LAMDA
-1D6B3;N # MATHEMATICAL BOLD CAPITAL MU
-1D6B4;N # MATHEMATICAL BOLD CAPITAL NU
-1D6B5;N # MATHEMATICAL BOLD CAPITAL XI
-1D6B6;N # MATHEMATICAL BOLD CAPITAL OMICRON
-1D6B7;N # MATHEMATICAL BOLD CAPITAL PI
-1D6B8;N # MATHEMATICAL BOLD CAPITAL RHO
-1D6B9;N # MATHEMATICAL BOLD CAPITAL THETA SYMBOL
-1D6BA;N # MATHEMATICAL BOLD CAPITAL SIGMA
-1D6BB;N # MATHEMATICAL BOLD CAPITAL TAU
-1D6BC;N # MATHEMATICAL BOLD CAPITAL UPSILON
-1D6BD;N # MATHEMATICAL BOLD CAPITAL PHI
-1D6BE;N # MATHEMATICAL BOLD CAPITAL CHI
-1D6BF;N # MATHEMATICAL BOLD CAPITAL PSI
-1D6C0;N # MATHEMATICAL BOLD CAPITAL OMEGA
-1D6C1;N # MATHEMATICAL BOLD NABLA
-1D6C2;N # MATHEMATICAL BOLD SMALL ALPHA
-1D6C3;N # MATHEMATICAL BOLD SMALL BETA
-1D6C4;N # MATHEMATICAL BOLD SMALL GAMMA
-1D6C5;N # MATHEMATICAL BOLD SMALL DELTA
-1D6C6;N # MATHEMATICAL BOLD SMALL EPSILON
-1D6C7;N # MATHEMATICAL BOLD SMALL ZETA
-1D6C8;N # MATHEMATICAL BOLD SMALL ETA
-1D6C9;N # MATHEMATICAL BOLD SMALL THETA
-1D6CA;N # MATHEMATICAL BOLD SMALL IOTA
-1D6CB;N # MATHEMATICAL BOLD SMALL KAPPA
-1D6CC;N # MATHEMATICAL BOLD SMALL LAMDA
-1D6CD;N # MATHEMATICAL BOLD SMALL MU
-1D6CE;N # MATHEMATICAL BOLD SMALL NU
-1D6CF;N # MATHEMATICAL BOLD SMALL XI
-1D6D0;N # MATHEMATICAL BOLD SMALL OMICRON
-1D6D1;N # MATHEMATICAL BOLD SMALL PI
-1D6D2;N # MATHEMATICAL BOLD SMALL RHO
-1D6D3;N # MATHEMATICAL BOLD SMALL FINAL SIGMA
-1D6D4;N # MATHEMATICAL BOLD SMALL SIGMA
-1D6D5;N # MATHEMATICAL BOLD SMALL TAU
-1D6D6;N # MATHEMATICAL BOLD SMALL UPSILON
-1D6D7;N # MATHEMATICAL BOLD SMALL PHI
-1D6D8;N # MATHEMATICAL BOLD SMALL CHI
-1D6D9;N # MATHEMATICAL BOLD SMALL PSI
-1D6DA;N # MATHEMATICAL BOLD SMALL OMEGA
-1D6DB;N # MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
-1D6DC;N # MATHEMATICAL BOLD EPSILON SYMBOL
-1D6DD;N # MATHEMATICAL BOLD THETA SYMBOL
-1D6DE;N # MATHEMATICAL BOLD KAPPA SYMBOL
-1D6DF;N # MATHEMATICAL BOLD PHI SYMBOL
-1D6E0;N # MATHEMATICAL BOLD RHO SYMBOL
-1D6E1;N # MATHEMATICAL BOLD PI SYMBOL
-1D6E2;N # MATHEMATICAL ITALIC CAPITAL ALPHA
-1D6E3;N # MATHEMATICAL ITALIC CAPITAL BETA
-1D6E4;N # MATHEMATICAL ITALIC CAPITAL GAMMA
-1D6E5;N # MATHEMATICAL ITALIC CAPITAL DELTA
-1D6E6;N # MATHEMATICAL ITALIC CAPITAL EPSILON
-1D6E7;N # MATHEMATICAL ITALIC CAPITAL ZETA
-1D6E8;N # MATHEMATICAL ITALIC CAPITAL ETA
-1D6E9;N # MATHEMATICAL ITALIC CAPITAL THETA
-1D6EA;N # MATHEMATICAL ITALIC CAPITAL IOTA
-1D6EB;N # MATHEMATICAL ITALIC CAPITAL KAPPA
-1D6EC;N # MATHEMATICAL ITALIC CAPITAL LAMDA
-1D6ED;N # MATHEMATICAL ITALIC CAPITAL MU
-1D6EE;N # MATHEMATICAL ITALIC CAPITAL NU
-1D6EF;N # MATHEMATICAL ITALIC CAPITAL XI
-1D6F0;N # MATHEMATICAL ITALIC CAPITAL OMICRON
-1D6F1;N # MATHEMATICAL ITALIC CAPITAL PI
-1D6F2;N # MATHEMATICAL ITALIC CAPITAL RHO
-1D6F3;N # MATHEMATICAL ITALIC CAPITAL THETA SYMBOL
-1D6F4;N # MATHEMATICAL ITALIC CAPITAL SIGMA
-1D6F5;N # MATHEMATICAL ITALIC CAPITAL TAU
-1D6F6;N # MATHEMATICAL ITALIC CAPITAL UPSILON
-1D6F7;N # MATHEMATICAL ITALIC CAPITAL PHI
-1D6F8;N # MATHEMATICAL ITALIC CAPITAL CHI
-1D6F9;N # MATHEMATICAL ITALIC CAPITAL PSI
-1D6FA;N # MATHEMATICAL ITALIC CAPITAL OMEGA
-1D6FB;N # MATHEMATICAL ITALIC NABLA
-1D6FC;N # MATHEMATICAL ITALIC SMALL ALPHA
-1D6FD;N # MATHEMATICAL ITALIC SMALL BETA
-1D6FE;N # MATHEMATICAL ITALIC SMALL GAMMA
-1D6FF;N # MATHEMATICAL ITALIC SMALL DELTA
-1D700;N # MATHEMATICAL ITALIC SMALL EPSILON
-1D701;N # MATHEMATICAL ITALIC SMALL ZETA
-1D702;N # MATHEMATICAL ITALIC SMALL ETA
-1D703;N # MATHEMATICAL ITALIC SMALL THETA
-1D704;N # MATHEMATICAL ITALIC SMALL IOTA
-1D705;N # MATHEMATICAL ITALIC SMALL KAPPA
-1D706;N # MATHEMATICAL ITALIC SMALL LAMDA
-1D707;N # MATHEMATICAL ITALIC SMALL MU
-1D708;N # MATHEMATICAL ITALIC SMALL NU
-1D709;N # MATHEMATICAL ITALIC SMALL XI
-1D70A;N # MATHEMATICAL ITALIC SMALL OMICRON
-1D70B;N # MATHEMATICAL ITALIC SMALL PI
-1D70C;N # MATHEMATICAL ITALIC SMALL RHO
-1D70D;N # MATHEMATICAL ITALIC SMALL FINAL SIGMA
-1D70E;N # MATHEMATICAL ITALIC SMALL SIGMA
-1D70F;N # MATHEMATICAL ITALIC SMALL TAU
-1D710;N # MATHEMATICAL ITALIC SMALL UPSILON
-1D711;N # MATHEMATICAL ITALIC SMALL PHI
-1D712;N # MATHEMATICAL ITALIC SMALL CHI
-1D713;N # MATHEMATICAL ITALIC SMALL PSI
-1D714;N # MATHEMATICAL ITALIC SMALL OMEGA
-1D715;N # MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
-1D716;N # MATHEMATICAL ITALIC EPSILON SYMBOL
-1D717;N # MATHEMATICAL ITALIC THETA SYMBOL
-1D718;N # MATHEMATICAL ITALIC KAPPA SYMBOL
-1D719;N # MATHEMATICAL ITALIC PHI SYMBOL
-1D71A;N # MATHEMATICAL ITALIC RHO SYMBOL
-1D71B;N # MATHEMATICAL ITALIC PI SYMBOL
-1D71C;N # MATHEMATICAL BOLD ITALIC CAPITAL ALPHA
-1D71D;N # MATHEMATICAL BOLD ITALIC CAPITAL BETA
-1D71E;N # MATHEMATICAL BOLD ITALIC CAPITAL GAMMA
-1D71F;N # MATHEMATICAL BOLD ITALIC CAPITAL DELTA
-1D720;N # MATHEMATICAL BOLD ITALIC CAPITAL EPSILON
-1D721;N # MATHEMATICAL BOLD ITALIC CAPITAL ZETA
-1D722;N # MATHEMATICAL BOLD ITALIC CAPITAL ETA
-1D723;N # MATHEMATICAL BOLD ITALIC CAPITAL THETA
-1D724;N # MATHEMATICAL BOLD ITALIC CAPITAL IOTA
-1D725;N # MATHEMATICAL BOLD ITALIC CAPITAL KAPPA
-1D726;N # MATHEMATICAL BOLD ITALIC CAPITAL LAMDA
-1D727;N # MATHEMATICAL BOLD ITALIC CAPITAL MU
-1D728;N # MATHEMATICAL BOLD ITALIC CAPITAL NU
-1D729;N # MATHEMATICAL BOLD ITALIC CAPITAL XI
-1D72A;N # MATHEMATICAL BOLD ITALIC CAPITAL OMICRON
-1D72B;N # MATHEMATICAL BOLD ITALIC CAPITAL PI
-1D72C;N # MATHEMATICAL BOLD ITALIC CAPITAL RHO
-1D72D;N # MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL
-1D72E;N # MATHEMATICAL BOLD ITALIC CAPITAL SIGMA
-1D72F;N # MATHEMATICAL BOLD ITALIC CAPITAL TAU
-1D730;N # MATHEMATICAL BOLD ITALIC CAPITAL UPSILON
-1D731;N # MATHEMATICAL BOLD ITALIC CAPITAL PHI
-1D732;N # MATHEMATICAL BOLD ITALIC CAPITAL CHI
-1D733;N # MATHEMATICAL BOLD ITALIC CAPITAL PSI
-1D734;N # MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
-1D735;N # MATHEMATICAL BOLD ITALIC NABLA
-1D736;N # MATHEMATICAL BOLD ITALIC SMALL ALPHA
-1D737;N # MATHEMATICAL BOLD ITALIC SMALL BETA
-1D738;N # MATHEMATICAL BOLD ITALIC SMALL GAMMA
-1D739;N # MATHEMATICAL BOLD ITALIC SMALL DELTA
-1D73A;N # MATHEMATICAL BOLD ITALIC SMALL EPSILON
-1D73B;N # MATHEMATICAL BOLD ITALIC SMALL ZETA
-1D73C;N # MATHEMATICAL BOLD ITALIC SMALL ETA
-1D73D;N # MATHEMATICAL BOLD ITALIC SMALL THETA
-1D73E;N # MATHEMATICAL BOLD ITALIC SMALL IOTA
-1D73F;N # MATHEMATICAL BOLD ITALIC SMALL KAPPA
-1D740;N # MATHEMATICAL BOLD ITALIC SMALL LAMDA
-1D741;N # MATHEMATICAL BOLD ITALIC SMALL MU
-1D742;N # MATHEMATICAL BOLD ITALIC SMALL NU
-1D743;N # MATHEMATICAL BOLD ITALIC SMALL XI
-1D744;N # MATHEMATICAL BOLD ITALIC SMALL OMICRON
-1D745;N # MATHEMATICAL BOLD ITALIC SMALL PI
-1D746;N # MATHEMATICAL BOLD ITALIC SMALL RHO
-1D747;N # MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA
-1D748;N # MATHEMATICAL BOLD ITALIC SMALL SIGMA
-1D749;N # MATHEMATICAL BOLD ITALIC SMALL TAU
-1D74A;N # MATHEMATICAL BOLD ITALIC SMALL UPSILON
-1D74B;N # MATHEMATICAL BOLD ITALIC SMALL PHI
-1D74C;N # MATHEMATICAL BOLD ITALIC SMALL CHI
-1D74D;N # MATHEMATICAL BOLD ITALIC SMALL PSI
-1D74E;N # MATHEMATICAL BOLD ITALIC SMALL OMEGA
-1D74F;N # MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
-1D750;N # MATHEMATICAL BOLD ITALIC EPSILON SYMBOL
-1D751;N # MATHEMATICAL BOLD ITALIC THETA SYMBOL
-1D752;N # MATHEMATICAL BOLD ITALIC KAPPA SYMBOL
-1D753;N # MATHEMATICAL BOLD ITALIC PHI SYMBOL
-1D754;N # MATHEMATICAL BOLD ITALIC RHO SYMBOL
-1D755;N # MATHEMATICAL BOLD ITALIC PI SYMBOL
-1D756;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA
-1D757;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA
-1D758;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA
-1D759;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA
-1D75A;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON
-1D75B;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA
-1D75C;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA
-1D75D;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA
-1D75E;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA
-1D75F;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA
-1D760;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA
-1D761;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL MU
-1D762;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL NU
-1D763;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL XI
-1D764;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON
-1D765;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL PI
-1D766;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO
-1D767;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL
-1D768;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA
-1D769;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU
-1D76A;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON
-1D76B;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI
-1D76C;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI
-1D76D;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI
-1D76E;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
-1D76F;N # MATHEMATICAL SANS-SERIF BOLD NABLA
-1D770;N # MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA
-1D771;N # MATHEMATICAL SANS-SERIF BOLD SMALL BETA
-1D772;N # MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA
-1D773;N # MATHEMATICAL SANS-SERIF BOLD SMALL DELTA
-1D774;N # MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON
-1D775;N # MATHEMATICAL SANS-SERIF BOLD SMALL ZETA
-1D776;N # MATHEMATICAL SANS-SERIF BOLD SMALL ETA
-1D777;N # MATHEMATICAL SANS-SERIF BOLD SMALL THETA
-1D778;N # MATHEMATICAL SANS-SERIF BOLD SMALL IOTA
-1D779;N # MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA
-1D77A;N # MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA
-1D77B;N # MATHEMATICAL SANS-SERIF BOLD SMALL MU
-1D77C;N # MATHEMATICAL SANS-SERIF BOLD SMALL NU
-1D77D;N # MATHEMATICAL SANS-SERIF BOLD SMALL XI
-1D77E;N # MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON
-1D77F;N # MATHEMATICAL SANS-SERIF BOLD SMALL PI
-1D780;N # MATHEMATICAL SANS-SERIF BOLD SMALL RHO
-1D781;N # MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA
-1D782;N # MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA
-1D783;N # MATHEMATICAL SANS-SERIF BOLD SMALL TAU
-1D784;N # MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON
-1D785;N # MATHEMATICAL SANS-SERIF BOLD SMALL PHI
-1D786;N # MATHEMATICAL SANS-SERIF BOLD SMALL CHI
-1D787;N # MATHEMATICAL SANS-SERIF BOLD SMALL PSI
-1D788;N # MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
-1D789;N # MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
-1D78A;N # MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL
-1D78B;N # MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL
-1D78C;N # MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL
-1D78D;N # MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL
-1D78E;N # MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL
-1D78F;N # MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
-1D790;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA
-1D791;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA
-1D792;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA
-1D793;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA
-1D794;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON
-1D795;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA
-1D796;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA
-1D797;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA
-1D798;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA
-1D799;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA
-1D79A;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA
-1D79B;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU
-1D79C;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU
-1D79D;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI
-1D79E;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON
-1D79F;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI
-1D7A0;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO
-1D7A1;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL
-1D7A2;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA
-1D7A3;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU
-1D7A4;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON
-1D7A5;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI
-1D7A6;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI
-1D7A7;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI
-1D7A8;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
-1D7A9;N # MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
-1D7AA;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA
-1D7AB;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA
-1D7AC;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA
-1D7AD;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA
-1D7AE;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON
-1D7AF;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA
-1D7B0;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA
-1D7B1;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA
-1D7B2;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA
-1D7B3;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA
-1D7B4;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA
-1D7B5;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU
-1D7B6;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU
-1D7B7;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI
-1D7B8;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON
-1D7B9;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI
-1D7BA;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO
-1D7BB;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA
-1D7BC;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA
-1D7BD;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU
-1D7BE;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON
-1D7BF;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI
-1D7C0;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI
-1D7C1;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI
-1D7C2;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
-1D7C3;N # MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
-1D7C4;N # MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL
-1D7C5;N # MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL
-1D7C6;N # MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL
-1D7C7;N # MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL
-1D7C8;N # MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL
-1D7C9;N # MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
-1D7CE;N # MATHEMATICAL BOLD DIGIT ZERO
-1D7CF;N # MATHEMATICAL BOLD DIGIT ONE
-1D7D0;N # MATHEMATICAL BOLD DIGIT TWO
-1D7D1;N # MATHEMATICAL BOLD DIGIT THREE
-1D7D2;N # MATHEMATICAL BOLD DIGIT FOUR
-1D7D3;N # MATHEMATICAL BOLD DIGIT FIVE
-1D7D4;N # MATHEMATICAL BOLD DIGIT SIX
-1D7D5;N # MATHEMATICAL BOLD DIGIT SEVEN
-1D7D6;N # MATHEMATICAL BOLD DIGIT EIGHT
-1D7D7;N # MATHEMATICAL BOLD DIGIT NINE
-1D7D8;N # MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO
-1D7D9;N # MATHEMATICAL DOUBLE-STRUCK DIGIT ONE
-1D7DA;N # MATHEMATICAL DOUBLE-STRUCK DIGIT TWO
-1D7DB;N # MATHEMATICAL DOUBLE-STRUCK DIGIT THREE
-1D7DC;N # MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR
-1D7DD;N # MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE
-1D7DE;N # MATHEMATICAL DOUBLE-STRUCK DIGIT SIX
-1D7DF;N # MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN
-1D7E0;N # MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT
-1D7E1;N # MATHEMATICAL DOUBLE-STRUCK DIGIT NINE
-1D7E2;N # MATHEMATICAL SANS-SERIF DIGIT ZERO
-1D7E3;N # MATHEMATICAL SANS-SERIF DIGIT ONE
-1D7E4;N # MATHEMATICAL SANS-SERIF DIGIT TWO
-1D7E5;N # MATHEMATICAL SANS-SERIF DIGIT THREE
-1D7E6;N # MATHEMATICAL SANS-SERIF DIGIT FOUR
-1D7E7;N # MATHEMATICAL SANS-SERIF DIGIT FIVE
-1D7E8;N # MATHEMATICAL SANS-SERIF DIGIT SIX
-1D7E9;N # MATHEMATICAL SANS-SERIF DIGIT SEVEN
-1D7EA;N # MATHEMATICAL SANS-SERIF DIGIT EIGHT
-1D7EB;N # MATHEMATICAL SANS-SERIF DIGIT NINE
-1D7EC;N # MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO
-1D7ED;N # MATHEMATICAL SANS-SERIF BOLD DIGIT ONE
-1D7EE;N # MATHEMATICAL SANS-SERIF BOLD DIGIT TWO
-1D7EF;N # MATHEMATICAL SANS-SERIF BOLD DIGIT THREE
-1D7F0;N # MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR
-1D7F1;N # MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE
-1D7F2;N # MATHEMATICAL SANS-SERIF BOLD DIGIT SIX
-1D7F3;N # MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN
-1D7F4;N # MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT
-1D7F5;N # MATHEMATICAL SANS-SERIF BOLD DIGIT NINE
-1D7F6;N # MATHEMATICAL MONOSPACE DIGIT ZERO
-1D7F7;N # MATHEMATICAL MONOSPACE DIGIT ONE
-1D7F8;N # MATHEMATICAL MONOSPACE DIGIT TWO
-1D7F9;N # MATHEMATICAL MONOSPACE DIGIT THREE
-1D7FA;N # MATHEMATICAL MONOSPACE DIGIT FOUR
-1D7FB;N # MATHEMATICAL MONOSPACE DIGIT FIVE
-1D7FC;N # MATHEMATICAL MONOSPACE DIGIT SIX
-1D7FD;N # MATHEMATICAL MONOSPACE DIGIT SEVEN
-1D7FE;N # MATHEMATICAL MONOSPACE DIGIT EIGHT
-1D7FF;N # MATHEMATICAL MONOSPACE DIGIT NINE
-20000..2A6D6;W # <CJK Ideograph Extension B, First>..<CJK Ideograph Extension B, Last>
-2A6D7..2F7FF;W # <reserved>
-2F800;W # CJK COMPATIBILITY IDEOGRAPH-2F800
-2F801;W # CJK COMPATIBILITY IDEOGRAPH-2F801
-2F802;W # CJK COMPATIBILITY IDEOGRAPH-2F802
-2F803;W # CJK COMPATIBILITY IDEOGRAPH-2F803
-2F804;W # CJK COMPATIBILITY IDEOGRAPH-2F804
-2F805;W # CJK COMPATIBILITY IDEOGRAPH-2F805
-2F806;W # CJK COMPATIBILITY IDEOGRAPH-2F806
-2F807;W # CJK COMPATIBILITY IDEOGRAPH-2F807
-2F808;W # CJK COMPATIBILITY IDEOGRAPH-2F808
-2F809;W # CJK COMPATIBILITY IDEOGRAPH-2F809
-2F80A;W # CJK COMPATIBILITY IDEOGRAPH-2F80A
-2F80B;W # CJK COMPATIBILITY IDEOGRAPH-2F80B
-2F80C;W # CJK COMPATIBILITY IDEOGRAPH-2F80C
-2F80D;W # CJK COMPATIBILITY IDEOGRAPH-2F80D
-2F80E;W # CJK COMPATIBILITY IDEOGRAPH-2F80E
-2F80F;W # CJK COMPATIBILITY IDEOGRAPH-2F80F
-2F810;W # CJK COMPATIBILITY IDEOGRAPH-2F810
-2F811;W # CJK COMPATIBILITY IDEOGRAPH-2F811
-2F812;W # CJK COMPATIBILITY IDEOGRAPH-2F812
-2F813;W # CJK COMPATIBILITY IDEOGRAPH-2F813
-2F814;W # CJK COMPATIBILITY IDEOGRAPH-2F814
-2F815;W # CJK COMPATIBILITY IDEOGRAPH-2F815
-2F816;W # CJK COMPATIBILITY IDEOGRAPH-2F816
-2F817;W # CJK COMPATIBILITY IDEOGRAPH-2F817
-2F818;W # CJK COMPATIBILITY IDEOGRAPH-2F818
-2F819;W # CJK COMPATIBILITY IDEOGRAPH-2F819
-2F81A;W # CJK COMPATIBILITY IDEOGRAPH-2F81A
-2F81B;W # CJK COMPATIBILITY IDEOGRAPH-2F81B
-2F81C;W # CJK COMPATIBILITY IDEOGRAPH-2F81C
-2F81D;W # CJK COMPATIBILITY IDEOGRAPH-2F81D
-2F81E;W # CJK COMPATIBILITY IDEOGRAPH-2F81E
-2F81F;W # CJK COMPATIBILITY IDEOGRAPH-2F81F
-2F820;W # CJK COMPATIBILITY IDEOGRAPH-2F820
-2F821;W # CJK COMPATIBILITY IDEOGRAPH-2F821
-2F822;W # CJK COMPATIBILITY IDEOGRAPH-2F822
-2F823;W # CJK COMPATIBILITY IDEOGRAPH-2F823
-2F824;W # CJK COMPATIBILITY IDEOGRAPH-2F824
-2F825;W # CJK COMPATIBILITY IDEOGRAPH-2F825
-2F826;W # CJK COMPATIBILITY IDEOGRAPH-2F826
-2F827;W # CJK COMPATIBILITY IDEOGRAPH-2F827
-2F828;W # CJK COMPATIBILITY IDEOGRAPH-2F828
-2F829;W # CJK COMPATIBILITY IDEOGRAPH-2F829
-2F82A;W # CJK COMPATIBILITY IDEOGRAPH-2F82A
-2F82B;W # CJK COMPATIBILITY IDEOGRAPH-2F82B
-2F82C;W # CJK COMPATIBILITY IDEOGRAPH-2F82C
-2F82D;W # CJK COMPATIBILITY IDEOGRAPH-2F82D
-2F82E;W # CJK COMPATIBILITY IDEOGRAPH-2F82E
-2F82F;W # CJK COMPATIBILITY IDEOGRAPH-2F82F
-2F830;W # CJK COMPATIBILITY IDEOGRAPH-2F830
-2F831;W # CJK COMPATIBILITY IDEOGRAPH-2F831
-2F832;W # CJK COMPATIBILITY IDEOGRAPH-2F832
-2F833;W # CJK COMPATIBILITY IDEOGRAPH-2F833
-2F834;W # CJK COMPATIBILITY IDEOGRAPH-2F834
-2F835;W # CJK COMPATIBILITY IDEOGRAPH-2F835
-2F836;W # CJK COMPATIBILITY IDEOGRAPH-2F836
-2F837;W # CJK COMPATIBILITY IDEOGRAPH-2F837
-2F838;W # CJK COMPATIBILITY IDEOGRAPH-2F838
-2F839;W # CJK COMPATIBILITY IDEOGRAPH-2F839
-2F83A;W # CJK COMPATIBILITY IDEOGRAPH-2F83A
-2F83B;W # CJK COMPATIBILITY IDEOGRAPH-2F83B
-2F83C;W # CJK COMPATIBILITY IDEOGRAPH-2F83C
-2F83D;W # CJK COMPATIBILITY IDEOGRAPH-2F83D
-2F83E;W # CJK COMPATIBILITY IDEOGRAPH-2F83E
-2F83F;W # CJK COMPATIBILITY IDEOGRAPH-2F83F
-2F840;W # CJK COMPATIBILITY IDEOGRAPH-2F840
-2F841;W # CJK COMPATIBILITY IDEOGRAPH-2F841
-2F842;W # CJK COMPATIBILITY IDEOGRAPH-2F842
-2F843;W # CJK COMPATIBILITY IDEOGRAPH-2F843
-2F844;W # CJK COMPATIBILITY IDEOGRAPH-2F844
-2F845;W # CJK COMPATIBILITY IDEOGRAPH-2F845
-2F846;W # CJK COMPATIBILITY IDEOGRAPH-2F846
-2F847;W # CJK COMPATIBILITY IDEOGRAPH-2F847
-2F848;W # CJK COMPATIBILITY IDEOGRAPH-2F848
-2F849;W # CJK COMPATIBILITY IDEOGRAPH-2F849
-2F84A;W # CJK COMPATIBILITY IDEOGRAPH-2F84A
-2F84B;W # CJK COMPATIBILITY IDEOGRAPH-2F84B
-2F84C;W # CJK COMPATIBILITY IDEOGRAPH-2F84C
-2F84D;W # CJK COMPATIBILITY IDEOGRAPH-2F84D
-2F84E;W # CJK COMPATIBILITY IDEOGRAPH-2F84E
-2F84F;W # CJK COMPATIBILITY IDEOGRAPH-2F84F
-2F850;W # CJK COMPATIBILITY IDEOGRAPH-2F850
-2F851;W # CJK COMPATIBILITY IDEOGRAPH-2F851
-2F852;W # CJK COMPATIBILITY IDEOGRAPH-2F852
-2F853;W # CJK COMPATIBILITY IDEOGRAPH-2F853
-2F854;W # CJK COMPATIBILITY IDEOGRAPH-2F854
-2F855;W # CJK COMPATIBILITY IDEOGRAPH-2F855
-2F856;W # CJK COMPATIBILITY IDEOGRAPH-2F856
-2F857;W # CJK COMPATIBILITY IDEOGRAPH-2F857
-2F858;W # CJK COMPATIBILITY IDEOGRAPH-2F858
-2F859;W # CJK COMPATIBILITY IDEOGRAPH-2F859
-2F85A;W # CJK COMPATIBILITY IDEOGRAPH-2F85A
-2F85B;W # CJK COMPATIBILITY IDEOGRAPH-2F85B
-2F85C;W # CJK COMPATIBILITY IDEOGRAPH-2F85C
-2F85D;W # CJK COMPATIBILITY IDEOGRAPH-2F85D
-2F85E;W # CJK COMPATIBILITY IDEOGRAPH-2F85E
-2F85F;W # CJK COMPATIBILITY IDEOGRAPH-2F85F
-2F860;W # CJK COMPATIBILITY IDEOGRAPH-2F860
-2F861;W # CJK COMPATIBILITY IDEOGRAPH-2F861
-2F862;W # CJK COMPATIBILITY IDEOGRAPH-2F862
-2F863;W # CJK COMPATIBILITY IDEOGRAPH-2F863
-2F864;W # CJK COMPATIBILITY IDEOGRAPH-2F864
-2F865;W # CJK COMPATIBILITY IDEOGRAPH-2F865
-2F866;W # CJK COMPATIBILITY IDEOGRAPH-2F866
-2F867;W # CJK COMPATIBILITY IDEOGRAPH-2F867
-2F868;W # CJK COMPATIBILITY IDEOGRAPH-2F868
-2F869;W # CJK COMPATIBILITY IDEOGRAPH-2F869
-2F86A;W # CJK COMPATIBILITY IDEOGRAPH-2F86A
-2F86B;W # CJK COMPATIBILITY IDEOGRAPH-2F86B
-2F86C;W # CJK COMPATIBILITY IDEOGRAPH-2F86C
-2F86D;W # CJK COMPATIBILITY IDEOGRAPH-2F86D
-2F86E;W # CJK COMPATIBILITY IDEOGRAPH-2F86E
-2F86F;W # CJK COMPATIBILITY IDEOGRAPH-2F86F
-2F870;W # CJK COMPATIBILITY IDEOGRAPH-2F870
-2F871;W # CJK COMPATIBILITY IDEOGRAPH-2F871
-2F872;W # CJK COMPATIBILITY IDEOGRAPH-2F872
-2F873;W # CJK COMPATIBILITY IDEOGRAPH-2F873
-2F874;W # CJK COMPATIBILITY IDEOGRAPH-2F874
-2F875;W # CJK COMPATIBILITY IDEOGRAPH-2F875
-2F876;W # CJK COMPATIBILITY IDEOGRAPH-2F876
-2F877;W # CJK COMPATIBILITY IDEOGRAPH-2F877
-2F878;W # CJK COMPATIBILITY IDEOGRAPH-2F878
-2F879;W # CJK COMPATIBILITY IDEOGRAPH-2F879
-2F87A;W # CJK COMPATIBILITY IDEOGRAPH-2F87A
-2F87B;W # CJK COMPATIBILITY IDEOGRAPH-2F87B
-2F87C;W # CJK COMPATIBILITY IDEOGRAPH-2F87C
-2F87D;W # CJK COMPATIBILITY IDEOGRAPH-2F87D
-2F87E;W # CJK COMPATIBILITY IDEOGRAPH-2F87E
-2F87F;W # CJK COMPATIBILITY IDEOGRAPH-2F87F
-2F880;W # CJK COMPATIBILITY IDEOGRAPH-2F880
-2F881;W # CJK COMPATIBILITY IDEOGRAPH-2F881
-2F882;W # CJK COMPATIBILITY IDEOGRAPH-2F882
-2F883;W # CJK COMPATIBILITY IDEOGRAPH-2F883
-2F884;W # CJK COMPATIBILITY IDEOGRAPH-2F884
-2F885;W # CJK COMPATIBILITY IDEOGRAPH-2F885
-2F886;W # CJK COMPATIBILITY IDEOGRAPH-2F886
-2F887;W # CJK COMPATIBILITY IDEOGRAPH-2F887
-2F888;W # CJK COMPATIBILITY IDEOGRAPH-2F888
-2F889;W # CJK COMPATIBILITY IDEOGRAPH-2F889
-2F88A;W # CJK COMPATIBILITY IDEOGRAPH-2F88A
-2F88B;W # CJK COMPATIBILITY IDEOGRAPH-2F88B
-2F88C;W # CJK COMPATIBILITY IDEOGRAPH-2F88C
-2F88D;W # CJK COMPATIBILITY IDEOGRAPH-2F88D
-2F88E;W # CJK COMPATIBILITY IDEOGRAPH-2F88E
-2F88F;W # CJK COMPATIBILITY IDEOGRAPH-2F88F
-2F890;W # CJK COMPATIBILITY IDEOGRAPH-2F890
-2F891;W # CJK COMPATIBILITY IDEOGRAPH-2F891
-2F892;W # CJK COMPATIBILITY IDEOGRAPH-2F892
-2F893;W # CJK COMPATIBILITY IDEOGRAPH-2F893
-2F894;W # CJK COMPATIBILITY IDEOGRAPH-2F894
-2F895;W # CJK COMPATIBILITY IDEOGRAPH-2F895
-2F896;W # CJK COMPATIBILITY IDEOGRAPH-2F896
-2F897;W # CJK COMPATIBILITY IDEOGRAPH-2F897
-2F898;W # CJK COMPATIBILITY IDEOGRAPH-2F898
-2F899;W # CJK COMPATIBILITY IDEOGRAPH-2F899
-2F89A;W # CJK COMPATIBILITY IDEOGRAPH-2F89A
-2F89B;W # CJK COMPATIBILITY IDEOGRAPH-2F89B
-2F89C;W # CJK COMPATIBILITY IDEOGRAPH-2F89C
-2F89D;W # CJK COMPATIBILITY IDEOGRAPH-2F89D
-2F89E;W # CJK COMPATIBILITY IDEOGRAPH-2F89E
-2F89F;W # CJK COMPATIBILITY IDEOGRAPH-2F89F
-2F8A0;W # CJK COMPATIBILITY IDEOGRAPH-2F8A0
-2F8A1;W # CJK COMPATIBILITY IDEOGRAPH-2F8A1
-2F8A2;W # CJK COMPATIBILITY IDEOGRAPH-2F8A2
-2F8A3;W # CJK COMPATIBILITY IDEOGRAPH-2F8A3
-2F8A4;W # CJK COMPATIBILITY IDEOGRAPH-2F8A4
-2F8A5;W # CJK COMPATIBILITY IDEOGRAPH-2F8A5
-2F8A6;W # CJK COMPATIBILITY IDEOGRAPH-2F8A6
-2F8A7;W # CJK COMPATIBILITY IDEOGRAPH-2F8A7
-2F8A8;W # CJK COMPATIBILITY IDEOGRAPH-2F8A8
-2F8A9;W # CJK COMPATIBILITY IDEOGRAPH-2F8A9
-2F8AA;W # CJK COMPATIBILITY IDEOGRAPH-2F8AA
-2F8AB;W # CJK COMPATIBILITY IDEOGRAPH-2F8AB
-2F8AC;W # CJK COMPATIBILITY IDEOGRAPH-2F8AC
-2F8AD;W # CJK COMPATIBILITY IDEOGRAPH-2F8AD
-2F8AE;W # CJK COMPATIBILITY IDEOGRAPH-2F8AE
-2F8AF;W # CJK COMPATIBILITY IDEOGRAPH-2F8AF
-2F8B0;W # CJK COMPATIBILITY IDEOGRAPH-2F8B0
-2F8B1;W # CJK COMPATIBILITY IDEOGRAPH-2F8B1
-2F8B2;W # CJK COMPATIBILITY IDEOGRAPH-2F8B2
-2F8B3;W # CJK COMPATIBILITY IDEOGRAPH-2F8B3
-2F8B4;W # CJK COMPATIBILITY IDEOGRAPH-2F8B4
-2F8B5;W # CJK COMPATIBILITY IDEOGRAPH-2F8B5
-2F8B6;W # CJK COMPATIBILITY IDEOGRAPH-2F8B6
-2F8B7;W # CJK COMPATIBILITY IDEOGRAPH-2F8B7
-2F8B8;W # CJK COMPATIBILITY IDEOGRAPH-2F8B8
-2F8B9;W # CJK COMPATIBILITY IDEOGRAPH-2F8B9
-2F8BA;W # CJK COMPATIBILITY IDEOGRAPH-2F8BA
-2F8BB;W # CJK COMPATIBILITY IDEOGRAPH-2F8BB
-2F8BC;W # CJK COMPATIBILITY IDEOGRAPH-2F8BC
-2F8BD;W # CJK COMPATIBILITY IDEOGRAPH-2F8BD
-2F8BE;W # CJK COMPATIBILITY IDEOGRAPH-2F8BE
-2F8BF;W # CJK COMPATIBILITY IDEOGRAPH-2F8BF
-2F8C0;W # CJK COMPATIBILITY IDEOGRAPH-2F8C0
-2F8C1;W # CJK COMPATIBILITY IDEOGRAPH-2F8C1
-2F8C2;W # CJK COMPATIBILITY IDEOGRAPH-2F8C2
-2F8C3;W # CJK COMPATIBILITY IDEOGRAPH-2F8C3
-2F8C4;W # CJK COMPATIBILITY IDEOGRAPH-2F8C4
-2F8C5;W # CJK COMPATIBILITY IDEOGRAPH-2F8C5
-2F8C6;W # CJK COMPATIBILITY IDEOGRAPH-2F8C6
-2F8C7;W # CJK COMPATIBILITY IDEOGRAPH-2F8C7
-2F8C8;W # CJK COMPATIBILITY IDEOGRAPH-2F8C8
-2F8C9;W # CJK COMPATIBILITY IDEOGRAPH-2F8C9
-2F8CA;W # CJK COMPATIBILITY IDEOGRAPH-2F8CA
-2F8CB;W # CJK COMPATIBILITY IDEOGRAPH-2F8CB
-2F8CC;W # CJK COMPATIBILITY IDEOGRAPH-2F8CC
-2F8CD;W # CJK COMPATIBILITY IDEOGRAPH-2F8CD
-2F8CE;W # CJK COMPATIBILITY IDEOGRAPH-2F8CE
-2F8CF;W # CJK COMPATIBILITY IDEOGRAPH-2F8CF
-2F8D0;W # CJK COMPATIBILITY IDEOGRAPH-2F8D0
-2F8D1;W # CJK COMPATIBILITY IDEOGRAPH-2F8D1
-2F8D2;W # CJK COMPATIBILITY IDEOGRAPH-2F8D2
-2F8D3;W # CJK COMPATIBILITY IDEOGRAPH-2F8D3
-2F8D4;W # CJK COMPATIBILITY IDEOGRAPH-2F8D4
-2F8D5;W # CJK COMPATIBILITY IDEOGRAPH-2F8D5
-2F8D6;W # CJK COMPATIBILITY IDEOGRAPH-2F8D6
-2F8D7;W # CJK COMPATIBILITY IDEOGRAPH-2F8D7
-2F8D8;W # CJK COMPATIBILITY IDEOGRAPH-2F8D8
-2F8D9;W # CJK COMPATIBILITY IDEOGRAPH-2F8D9
-2F8DA;W # CJK COMPATIBILITY IDEOGRAPH-2F8DA
-2F8DB;W # CJK COMPATIBILITY IDEOGRAPH-2F8DB
-2F8DC;W # CJK COMPATIBILITY IDEOGRAPH-2F8DC
-2F8DD;W # CJK COMPATIBILITY IDEOGRAPH-2F8DD
-2F8DE;W # CJK COMPATIBILITY IDEOGRAPH-2F8DE
-2F8DF;W # CJK COMPATIBILITY IDEOGRAPH-2F8DF
-2F8E0;W # CJK COMPATIBILITY IDEOGRAPH-2F8E0
-2F8E1;W # CJK COMPATIBILITY IDEOGRAPH-2F8E1
-2F8E2;W # CJK COMPATIBILITY IDEOGRAPH-2F8E2
-2F8E3;W # CJK COMPATIBILITY IDEOGRAPH-2F8E3
-2F8E4;W # CJK COMPATIBILITY IDEOGRAPH-2F8E4
-2F8E5;W # CJK COMPATIBILITY IDEOGRAPH-2F8E5
-2F8E6;W # CJK COMPATIBILITY IDEOGRAPH-2F8E6
-2F8E7;W # CJK COMPATIBILITY IDEOGRAPH-2F8E7
-2F8E8;W # CJK COMPATIBILITY IDEOGRAPH-2F8E8
-2F8E9;W # CJK COMPATIBILITY IDEOGRAPH-2F8E9
-2F8EA;W # CJK COMPATIBILITY IDEOGRAPH-2F8EA
-2F8EB;W # CJK COMPATIBILITY IDEOGRAPH-2F8EB
-2F8EC;W # CJK COMPATIBILITY IDEOGRAPH-2F8EC
-2F8ED;W # CJK COMPATIBILITY IDEOGRAPH-2F8ED
-2F8EE;W # CJK COMPATIBILITY IDEOGRAPH-2F8EE
-2F8EF;W # CJK COMPATIBILITY IDEOGRAPH-2F8EF
-2F8F0;W # CJK COMPATIBILITY IDEOGRAPH-2F8F0
-2F8F1;W # CJK COMPATIBILITY IDEOGRAPH-2F8F1
-2F8F2;W # CJK COMPATIBILITY IDEOGRAPH-2F8F2
-2F8F3;W # CJK COMPATIBILITY IDEOGRAPH-2F8F3
-2F8F4;W # CJK COMPATIBILITY IDEOGRAPH-2F8F4
-2F8F5;W # CJK COMPATIBILITY IDEOGRAPH-2F8F5
-2F8F6;W # CJK COMPATIBILITY IDEOGRAPH-2F8F6
-2F8F7;W # CJK COMPATIBILITY IDEOGRAPH-2F8F7
-2F8F8;W # CJK COMPATIBILITY IDEOGRAPH-2F8F8
-2F8F9;W # CJK COMPATIBILITY IDEOGRAPH-2F8F9
-2F8FA;W # CJK COMPATIBILITY IDEOGRAPH-2F8FA
-2F8FB;W # CJK COMPATIBILITY IDEOGRAPH-2F8FB
-2F8FC;W # CJK COMPATIBILITY IDEOGRAPH-2F8FC
-2F8FD;W # CJK COMPATIBILITY IDEOGRAPH-2F8FD
-2F8FE;W # CJK COMPATIBILITY IDEOGRAPH-2F8FE
-2F8FF;W # CJK COMPATIBILITY IDEOGRAPH-2F8FF
-2F900;W # CJK COMPATIBILITY IDEOGRAPH-2F900
-2F901;W # CJK COMPATIBILITY IDEOGRAPH-2F901
-2F902;W # CJK COMPATIBILITY IDEOGRAPH-2F902
-2F903;W # CJK COMPATIBILITY IDEOGRAPH-2F903
-2F904;W # CJK COMPATIBILITY IDEOGRAPH-2F904
-2F905;W # CJK COMPATIBILITY IDEOGRAPH-2F905
-2F906;W # CJK COMPATIBILITY IDEOGRAPH-2F906
-2F907;W # CJK COMPATIBILITY IDEOGRAPH-2F907
-2F908;W # CJK COMPATIBILITY IDEOGRAPH-2F908
-2F909;W # CJK COMPATIBILITY IDEOGRAPH-2F909
-2F90A;W # CJK COMPATIBILITY IDEOGRAPH-2F90A
-2F90B;W # CJK COMPATIBILITY IDEOGRAPH-2F90B
-2F90C;W # CJK COMPATIBILITY IDEOGRAPH-2F90C
-2F90D;W # CJK COMPATIBILITY IDEOGRAPH-2F90D
-2F90E;W # CJK COMPATIBILITY IDEOGRAPH-2F90E
-2F90F;W # CJK COMPATIBILITY IDEOGRAPH-2F90F
-2F910;W # CJK COMPATIBILITY IDEOGRAPH-2F910
-2F911;W # CJK COMPATIBILITY IDEOGRAPH-2F911
-2F912;W # CJK COMPATIBILITY IDEOGRAPH-2F912
-2F913;W # CJK COMPATIBILITY IDEOGRAPH-2F913
-2F914;W # CJK COMPATIBILITY IDEOGRAPH-2F914
-2F915;W # CJK COMPATIBILITY IDEOGRAPH-2F915
-2F916;W # CJK COMPATIBILITY IDEOGRAPH-2F916
-2F917;W # CJK COMPATIBILITY IDEOGRAPH-2F917
-2F918;W # CJK COMPATIBILITY IDEOGRAPH-2F918
-2F919;W # CJK COMPATIBILITY IDEOGRAPH-2F919
-2F91A;W # CJK COMPATIBILITY IDEOGRAPH-2F91A
-2F91B;W # CJK COMPATIBILITY IDEOGRAPH-2F91B
-2F91C;W # CJK COMPATIBILITY IDEOGRAPH-2F91C
-2F91D;W # CJK COMPATIBILITY IDEOGRAPH-2F91D
-2F91E;W # CJK COMPATIBILITY IDEOGRAPH-2F91E
-2F91F;W # CJK COMPATIBILITY IDEOGRAPH-2F91F
-2F920;W # CJK COMPATIBILITY IDEOGRAPH-2F920
-2F921;W # CJK COMPATIBILITY IDEOGRAPH-2F921
-2F922;W # CJK COMPATIBILITY IDEOGRAPH-2F922
-2F923;W # CJK COMPATIBILITY IDEOGRAPH-2F923
-2F924;W # CJK COMPATIBILITY IDEOGRAPH-2F924
-2F925;W # CJK COMPATIBILITY IDEOGRAPH-2F925
-2F926;W # CJK COMPATIBILITY IDEOGRAPH-2F926
-2F927;W # CJK COMPATIBILITY IDEOGRAPH-2F927
-2F928;W # CJK COMPATIBILITY IDEOGRAPH-2F928
-2F929;W # CJK COMPATIBILITY IDEOGRAPH-2F929
-2F92A;W # CJK COMPATIBILITY IDEOGRAPH-2F92A
-2F92B;W # CJK COMPATIBILITY IDEOGRAPH-2F92B
-2F92C;W # CJK COMPATIBILITY IDEOGRAPH-2F92C
-2F92D;W # CJK COMPATIBILITY IDEOGRAPH-2F92D
-2F92E;W # CJK COMPATIBILITY IDEOGRAPH-2F92E
-2F92F;W # CJK COMPATIBILITY IDEOGRAPH-2F92F
-2F930;W # CJK COMPATIBILITY IDEOGRAPH-2F930
-2F931;W # CJK COMPATIBILITY IDEOGRAPH-2F931
-2F932;W # CJK COMPATIBILITY IDEOGRAPH-2F932
-2F933;W # CJK COMPATIBILITY IDEOGRAPH-2F933
-2F934;W # CJK COMPATIBILITY IDEOGRAPH-2F934
-2F935;W # CJK COMPATIBILITY IDEOGRAPH-2F935
-2F936;W # CJK COMPATIBILITY IDEOGRAPH-2F936
-2F937;W # CJK COMPATIBILITY IDEOGRAPH-2F937
-2F938;W # CJK COMPATIBILITY IDEOGRAPH-2F938
-2F939;W # CJK COMPATIBILITY IDEOGRAPH-2F939
-2F93A;W # CJK COMPATIBILITY IDEOGRAPH-2F93A
-2F93B;W # CJK COMPATIBILITY IDEOGRAPH-2F93B
-2F93C;W # CJK COMPATIBILITY IDEOGRAPH-2F93C
-2F93D;W # CJK COMPATIBILITY IDEOGRAPH-2F93D
-2F93E;W # CJK COMPATIBILITY IDEOGRAPH-2F93E
-2F93F;W # CJK COMPATIBILITY IDEOGRAPH-2F93F
-2F940;W # CJK COMPATIBILITY IDEOGRAPH-2F940
-2F941;W # CJK COMPATIBILITY IDEOGRAPH-2F941
-2F942;W # CJK COMPATIBILITY IDEOGRAPH-2F942
-2F943;W # CJK COMPATIBILITY IDEOGRAPH-2F943
-2F944;W # CJK COMPATIBILITY IDEOGRAPH-2F944
-2F945;W # CJK COMPATIBILITY IDEOGRAPH-2F945
-2F946;W # CJK COMPATIBILITY IDEOGRAPH-2F946
-2F947;W # CJK COMPATIBILITY IDEOGRAPH-2F947
-2F948;W # CJK COMPATIBILITY IDEOGRAPH-2F948
-2F949;W # CJK COMPATIBILITY IDEOGRAPH-2F949
-2F94A;W # CJK COMPATIBILITY IDEOGRAPH-2F94A
-2F94B;W # CJK COMPATIBILITY IDEOGRAPH-2F94B
-2F94C;W # CJK COMPATIBILITY IDEOGRAPH-2F94C
-2F94D;W # CJK COMPATIBILITY IDEOGRAPH-2F94D
-2F94E;W # CJK COMPATIBILITY IDEOGRAPH-2F94E
-2F94F;W # CJK COMPATIBILITY IDEOGRAPH-2F94F
-2F950;W # CJK COMPATIBILITY IDEOGRAPH-2F950
-2F951;W # CJK COMPATIBILITY IDEOGRAPH-2F951
-2F952;W # CJK COMPATIBILITY IDEOGRAPH-2F952
-2F953;W # CJK COMPATIBILITY IDEOGRAPH-2F953
-2F954;W # CJK COMPATIBILITY IDEOGRAPH-2F954
-2F955;W # CJK COMPATIBILITY IDEOGRAPH-2F955
-2F956;W # CJK COMPATIBILITY IDEOGRAPH-2F956
-2F957;W # CJK COMPATIBILITY IDEOGRAPH-2F957
-2F958;W # CJK COMPATIBILITY IDEOGRAPH-2F958
-2F959;W # CJK COMPATIBILITY IDEOGRAPH-2F959
-2F95A;W # CJK COMPATIBILITY IDEOGRAPH-2F95A
-2F95B;W # CJK COMPATIBILITY IDEOGRAPH-2F95B
-2F95C;W # CJK COMPATIBILITY IDEOGRAPH-2F95C
-2F95D;W # CJK COMPATIBILITY IDEOGRAPH-2F95D
-2F95E;W # CJK COMPATIBILITY IDEOGRAPH-2F95E
-2F95F;W # CJK COMPATIBILITY IDEOGRAPH-2F95F
-2F960;W # CJK COMPATIBILITY IDEOGRAPH-2F960
-2F961;W # CJK COMPATIBILITY IDEOGRAPH-2F961
-2F962;W # CJK COMPATIBILITY IDEOGRAPH-2F962
-2F963;W # CJK COMPATIBILITY IDEOGRAPH-2F963
-2F964;W # CJK COMPATIBILITY IDEOGRAPH-2F964
-2F965;W # CJK COMPATIBILITY IDEOGRAPH-2F965
-2F966;W # CJK COMPATIBILITY IDEOGRAPH-2F966
-2F967;W # CJK COMPATIBILITY IDEOGRAPH-2F967
-2F968;W # CJK COMPATIBILITY IDEOGRAPH-2F968
-2F969;W # CJK COMPATIBILITY IDEOGRAPH-2F969
-2F96A;W # CJK COMPATIBILITY IDEOGRAPH-2F96A
-2F96B;W # CJK COMPATIBILITY IDEOGRAPH-2F96B
-2F96C;W # CJK COMPATIBILITY IDEOGRAPH-2F96C
-2F96D;W # CJK COMPATIBILITY IDEOGRAPH-2F96D
-2F96E;W # CJK COMPATIBILITY IDEOGRAPH-2F96E
-2F96F;W # CJK COMPATIBILITY IDEOGRAPH-2F96F
-2F970;W # CJK COMPATIBILITY IDEOGRAPH-2F970
-2F971;W # CJK COMPATIBILITY IDEOGRAPH-2F971
-2F972;W # CJK COMPATIBILITY IDEOGRAPH-2F972
-2F973;W # CJK COMPATIBILITY IDEOGRAPH-2F973
-2F974;W # CJK COMPATIBILITY IDEOGRAPH-2F974
-2F975;W # CJK COMPATIBILITY IDEOGRAPH-2F975
-2F976;W # CJK COMPATIBILITY IDEOGRAPH-2F976
-2F977;W # CJK COMPATIBILITY IDEOGRAPH-2F977
-2F978;W # CJK COMPATIBILITY IDEOGRAPH-2F978
-2F979;W # CJK COMPATIBILITY IDEOGRAPH-2F979
-2F97A;W # CJK COMPATIBILITY IDEOGRAPH-2F97A
-2F97B;W # CJK COMPATIBILITY IDEOGRAPH-2F97B
-2F97C;W # CJK COMPATIBILITY IDEOGRAPH-2F97C
-2F97D;W # CJK COMPATIBILITY IDEOGRAPH-2F97D
-2F97E;W # CJK COMPATIBILITY IDEOGRAPH-2F97E
-2F97F;W # CJK COMPATIBILITY IDEOGRAPH-2F97F
-2F980;W # CJK COMPATIBILITY IDEOGRAPH-2F980
-2F981;W # CJK COMPATIBILITY IDEOGRAPH-2F981
-2F982;W # CJK COMPATIBILITY IDEOGRAPH-2F982
-2F983;W # CJK COMPATIBILITY IDEOGRAPH-2F983
-2F984;W # CJK COMPATIBILITY IDEOGRAPH-2F984
-2F985;W # CJK COMPATIBILITY IDEOGRAPH-2F985
-2F986;W # CJK COMPATIBILITY IDEOGRAPH-2F986
-2F987;W # CJK COMPATIBILITY IDEOGRAPH-2F987
-2F988;W # CJK COMPATIBILITY IDEOGRAPH-2F988
-2F989;W # CJK COMPATIBILITY IDEOGRAPH-2F989
-2F98A;W # CJK COMPATIBILITY IDEOGRAPH-2F98A
-2F98B;W # CJK COMPATIBILITY IDEOGRAPH-2F98B
-2F98C;W # CJK COMPATIBILITY IDEOGRAPH-2F98C
-2F98D;W # CJK COMPATIBILITY IDEOGRAPH-2F98D
-2F98E;W # CJK COMPATIBILITY IDEOGRAPH-2F98E
-2F98F;W # CJK COMPATIBILITY IDEOGRAPH-2F98F
-2F990;W # CJK COMPATIBILITY IDEOGRAPH-2F990
-2F991;W # CJK COMPATIBILITY IDEOGRAPH-2F991
-2F992;W # CJK COMPATIBILITY IDEOGRAPH-2F992
-2F993;W # CJK COMPATIBILITY IDEOGRAPH-2F993
-2F994;W # CJK COMPATIBILITY IDEOGRAPH-2F994
-2F995;W # CJK COMPATIBILITY IDEOGRAPH-2F995
-2F996;W # CJK COMPATIBILITY IDEOGRAPH-2F996
-2F997;W # CJK COMPATIBILITY IDEOGRAPH-2F997
-2F998;W # CJK COMPATIBILITY IDEOGRAPH-2F998
-2F999;W # CJK COMPATIBILITY IDEOGRAPH-2F999
-2F99A;W # CJK COMPATIBILITY IDEOGRAPH-2F99A
-2F99B;W # CJK COMPATIBILITY IDEOGRAPH-2F99B
-2F99C;W # CJK COMPATIBILITY IDEOGRAPH-2F99C
-2F99D;W # CJK COMPATIBILITY IDEOGRAPH-2F99D
-2F99E;W # CJK COMPATIBILITY IDEOGRAPH-2F99E
-2F99F;W # CJK COMPATIBILITY IDEOGRAPH-2F99F
-2F9A0;W # CJK COMPATIBILITY IDEOGRAPH-2F9A0
-2F9A1;W # CJK COMPATIBILITY IDEOGRAPH-2F9A1
-2F9A2;W # CJK COMPATIBILITY IDEOGRAPH-2F9A2
-2F9A3;W # CJK COMPATIBILITY IDEOGRAPH-2F9A3
-2F9A4;W # CJK COMPATIBILITY IDEOGRAPH-2F9A4
-2F9A5;W # CJK COMPATIBILITY IDEOGRAPH-2F9A5
-2F9A6;W # CJK COMPATIBILITY IDEOGRAPH-2F9A6
-2F9A7;W # CJK COMPATIBILITY IDEOGRAPH-2F9A7
-2F9A8;W # CJK COMPATIBILITY IDEOGRAPH-2F9A8
-2F9A9;W # CJK COMPATIBILITY IDEOGRAPH-2F9A9
-2F9AA;W # CJK COMPATIBILITY IDEOGRAPH-2F9AA
-2F9AB;W # CJK COMPATIBILITY IDEOGRAPH-2F9AB
-2F9AC;W # CJK COMPATIBILITY IDEOGRAPH-2F9AC
-2F9AD;W # CJK COMPATIBILITY IDEOGRAPH-2F9AD
-2F9AE;W # CJK COMPATIBILITY IDEOGRAPH-2F9AE
-2F9AF;W # CJK COMPATIBILITY IDEOGRAPH-2F9AF
-2F9B0;W # CJK COMPATIBILITY IDEOGRAPH-2F9B0
-2F9B1;W # CJK COMPATIBILITY IDEOGRAPH-2F9B1
-2F9B2;W # CJK COMPATIBILITY IDEOGRAPH-2F9B2
-2F9B3;W # CJK COMPATIBILITY IDEOGRAPH-2F9B3
-2F9B4;W # CJK COMPATIBILITY IDEOGRAPH-2F9B4
-2F9B5;W # CJK COMPATIBILITY IDEOGRAPH-2F9B5
-2F9B6;W # CJK COMPATIBILITY IDEOGRAPH-2F9B6
-2F9B7;W # CJK COMPATIBILITY IDEOGRAPH-2F9B7
-2F9B8;W # CJK COMPATIBILITY IDEOGRAPH-2F9B8
-2F9B9;W # CJK COMPATIBILITY IDEOGRAPH-2F9B9
-2F9BA;W # CJK COMPATIBILITY IDEOGRAPH-2F9BA
-2F9BB;W # CJK COMPATIBILITY IDEOGRAPH-2F9BB
-2F9BC;W # CJK COMPATIBILITY IDEOGRAPH-2F9BC
-2F9BD;W # CJK COMPATIBILITY IDEOGRAPH-2F9BD
-2F9BE;W # CJK COMPATIBILITY IDEOGRAPH-2F9BE
-2F9BF;W # CJK COMPATIBILITY IDEOGRAPH-2F9BF
-2F9C0;W # CJK COMPATIBILITY IDEOGRAPH-2F9C0
-2F9C1;W # CJK COMPATIBILITY IDEOGRAPH-2F9C1
-2F9C2;W # CJK COMPATIBILITY IDEOGRAPH-2F9C2
-2F9C3;W # CJK COMPATIBILITY IDEOGRAPH-2F9C3
-2F9C4;W # CJK COMPATIBILITY IDEOGRAPH-2F9C4
-2F9C5;W # CJK COMPATIBILITY IDEOGRAPH-2F9C5
-2F9C6;W # CJK COMPATIBILITY IDEOGRAPH-2F9C6
-2F9C7;W # CJK COMPATIBILITY IDEOGRAPH-2F9C7
-2F9C8;W # CJK COMPATIBILITY IDEOGRAPH-2F9C8
-2F9C9;W # CJK COMPATIBILITY IDEOGRAPH-2F9C9
-2F9CA;W # CJK COMPATIBILITY IDEOGRAPH-2F9CA
-2F9CB;W # CJK COMPATIBILITY IDEOGRAPH-2F9CB
-2F9CC;W # CJK COMPATIBILITY IDEOGRAPH-2F9CC
-2F9CD;W # CJK COMPATIBILITY IDEOGRAPH-2F9CD
-2F9CE;W # CJK COMPATIBILITY IDEOGRAPH-2F9CE
-2F9CF;W # CJK COMPATIBILITY IDEOGRAPH-2F9CF
-2F9D0;W # CJK COMPATIBILITY IDEOGRAPH-2F9D0
-2F9D1;W # CJK COMPATIBILITY IDEOGRAPH-2F9D1
-2F9D2;W # CJK COMPATIBILITY IDEOGRAPH-2F9D2
-2F9D3;W # CJK COMPATIBILITY IDEOGRAPH-2F9D3
-2F9D4;W # CJK COMPATIBILITY IDEOGRAPH-2F9D4
-2F9D5;W # CJK COMPATIBILITY IDEOGRAPH-2F9D5
-2F9D6;W # CJK COMPATIBILITY IDEOGRAPH-2F9D6
-2F9D7;W # CJK COMPATIBILITY IDEOGRAPH-2F9D7
-2F9D8;W # CJK COMPATIBILITY IDEOGRAPH-2F9D8
-2F9D9;W # CJK COMPATIBILITY IDEOGRAPH-2F9D9
-2F9DA;W # CJK COMPATIBILITY IDEOGRAPH-2F9DA
-2F9DB;W # CJK COMPATIBILITY IDEOGRAPH-2F9DB
-2F9DC;W # CJK COMPATIBILITY IDEOGRAPH-2F9DC
-2F9DD;W # CJK COMPATIBILITY IDEOGRAPH-2F9DD
-2F9DE;W # CJK COMPATIBILITY IDEOGRAPH-2F9DE
-2F9DF;W # CJK COMPATIBILITY IDEOGRAPH-2F9DF
-2F9E0;W # CJK COMPATIBILITY IDEOGRAPH-2F9E0
-2F9E1;W # CJK COMPATIBILITY IDEOGRAPH-2F9E1
-2F9E2;W # CJK COMPATIBILITY IDEOGRAPH-2F9E2
-2F9E3;W # CJK COMPATIBILITY IDEOGRAPH-2F9E3
-2F9E4;W # CJK COMPATIBILITY IDEOGRAPH-2F9E4
-2F9E5;W # CJK COMPATIBILITY IDEOGRAPH-2F9E5
-2F9E6;W # CJK COMPATIBILITY IDEOGRAPH-2F9E6
-2F9E7;W # CJK COMPATIBILITY IDEOGRAPH-2F9E7
-2F9E8;W # CJK COMPATIBILITY IDEOGRAPH-2F9E8
-2F9E9;W # CJK COMPATIBILITY IDEOGRAPH-2F9E9
-2F9EA;W # CJK COMPATIBILITY IDEOGRAPH-2F9EA
-2F9EB;W # CJK COMPATIBILITY IDEOGRAPH-2F9EB
-2F9EC;W # CJK COMPATIBILITY IDEOGRAPH-2F9EC
-2F9ED;W # CJK COMPATIBILITY IDEOGRAPH-2F9ED
-2F9EE;W # CJK COMPATIBILITY IDEOGRAPH-2F9EE
-2F9EF;W # CJK COMPATIBILITY IDEOGRAPH-2F9EF
-2F9F0;W # CJK COMPATIBILITY IDEOGRAPH-2F9F0
-2F9F1;W # CJK COMPATIBILITY IDEOGRAPH-2F9F1
-2F9F2;W # CJK COMPATIBILITY IDEOGRAPH-2F9F2
-2F9F3;W # CJK COMPATIBILITY IDEOGRAPH-2F9F3
-2F9F4;W # CJK COMPATIBILITY IDEOGRAPH-2F9F4
-2F9F5;W # CJK COMPATIBILITY IDEOGRAPH-2F9F5
-2F9F6;W # CJK COMPATIBILITY IDEOGRAPH-2F9F6
-2F9F7;W # CJK COMPATIBILITY IDEOGRAPH-2F9F7
-2F9F8;W # CJK COMPATIBILITY IDEOGRAPH-2F9F8
-2F9F9;W # CJK COMPATIBILITY IDEOGRAPH-2F9F9
-2F9FA;W # CJK COMPATIBILITY IDEOGRAPH-2F9FA
-2F9FB;W # CJK COMPATIBILITY IDEOGRAPH-2F9FB
-2F9FC;W # CJK COMPATIBILITY IDEOGRAPH-2F9FC
-2F9FD;W # CJK COMPATIBILITY IDEOGRAPH-2F9FD
-2F9FE;W # CJK COMPATIBILITY IDEOGRAPH-2F9FE
-2F9FF;W # CJK COMPATIBILITY IDEOGRAPH-2F9FF
-2FA00;W # CJK COMPATIBILITY IDEOGRAPH-2FA00
-2FA01;W # CJK COMPATIBILITY IDEOGRAPH-2FA01
-2FA02;W # CJK COMPATIBILITY IDEOGRAPH-2FA02
-2FA03;W # CJK COMPATIBILITY IDEOGRAPH-2FA03
-2FA04;W # CJK COMPATIBILITY IDEOGRAPH-2FA04
-2FA05;W # CJK COMPATIBILITY IDEOGRAPH-2FA05
-2FA06;W # CJK COMPATIBILITY IDEOGRAPH-2FA06
-2FA07;W # CJK COMPATIBILITY IDEOGRAPH-2FA07
-2FA08;W # CJK COMPATIBILITY IDEOGRAPH-2FA08
-2FA09;W # CJK COMPATIBILITY IDEOGRAPH-2FA09
-2FA0A;W # CJK COMPATIBILITY IDEOGRAPH-2FA0A
-2FA0B;W # CJK COMPATIBILITY IDEOGRAPH-2FA0B
-2FA0C;W # CJK COMPATIBILITY IDEOGRAPH-2FA0C
-2FA0D;W # CJK COMPATIBILITY IDEOGRAPH-2FA0D
-2FA0E;W # CJK COMPATIBILITY IDEOGRAPH-2FA0E
-2FA0F;W # CJK COMPATIBILITY IDEOGRAPH-2FA0F
-2FA10;W # CJK COMPATIBILITY IDEOGRAPH-2FA10
-2FA11;W # CJK COMPATIBILITY IDEOGRAPH-2FA11
-2FA12;W # CJK COMPATIBILITY IDEOGRAPH-2FA12
-2FA13;W # CJK COMPATIBILITY IDEOGRAPH-2FA13
-2FA14;W # CJK COMPATIBILITY IDEOGRAPH-2FA14
-2FA15;W # CJK COMPATIBILITY IDEOGRAPH-2FA15
-2FA16;W # CJK COMPATIBILITY IDEOGRAPH-2FA16
-2FA17;W # CJK COMPATIBILITY IDEOGRAPH-2FA17
-2FA18;W # CJK COMPATIBILITY IDEOGRAPH-2FA18
-2FA19;W # CJK COMPATIBILITY IDEOGRAPH-2FA19
-2FA1A;W # CJK COMPATIBILITY IDEOGRAPH-2FA1A
-2FA1B;W # CJK COMPATIBILITY IDEOGRAPH-2FA1B
-2FA1C;W # CJK COMPATIBILITY IDEOGRAPH-2FA1C
-2FA1D;W # CJK COMPATIBILITY IDEOGRAPH-2FA1D
-2FA1E..2FFFD;W # <reserved>
-30000..3FFFD;W # <reserved>
-E0001;N # LANGUAGE TAG
-E0020;N # TAG SPACE
-E0021;N # TAG EXCLAMATION MARK
-E0022;N # TAG QUOTATION MARK
-E0023;N # TAG NUMBER SIGN
-E0024;N # TAG DOLLAR SIGN
-E0025;N # TAG PERCENT SIGN
-E0026;N # TAG AMPERSAND
-E0027;N # TAG APOSTROPHE
-E0028;N # TAG LEFT PARENTHESIS
-E0029;N # TAG RIGHT PARENTHESIS
-E002A;N # TAG ASTERISK
-E002B;N # TAG PLUS SIGN
-E002C;N # TAG COMMA
-E002D;N # TAG HYPHEN-MINUS
-E002E;N # TAG FULL STOP
-E002F;N # TAG SOLIDUS
-E0030;N # TAG DIGIT ZERO
-E0031;N # TAG DIGIT ONE
-E0032;N # TAG DIGIT TWO
-E0033;N # TAG DIGIT THREE
-E0034;N # TAG DIGIT FOUR
-E0035;N # TAG DIGIT FIVE
-E0036;N # TAG DIGIT SIX
-E0037;N # TAG DIGIT SEVEN
-E0038;N # TAG DIGIT EIGHT
-E0039;N # TAG DIGIT NINE
-E003A;N # TAG COLON
-E003B;N # TAG SEMICOLON
-E003C;N # TAG LESS-THAN SIGN
-E003D;N # TAG EQUALS SIGN
-E003E;N # TAG GREATER-THAN SIGN
-E003F;N # TAG QUESTION MARK
-E0040;N # TAG COMMERCIAL AT
-E0041;N # TAG LATIN CAPITAL LETTER A
-E0042;N # TAG LATIN CAPITAL LETTER B
-E0043;N # TAG LATIN CAPITAL LETTER C
-E0044;N # TAG LATIN CAPITAL LETTER D
-E0045;N # TAG LATIN CAPITAL LETTER E
-E0046;N # TAG LATIN CAPITAL LETTER F
-E0047;N # TAG LATIN CAPITAL LETTER G
-E0048;N # TAG LATIN CAPITAL LETTER H
-E0049;N # TAG LATIN CAPITAL LETTER I
-E004A;N # TAG LATIN CAPITAL LETTER J
-E004B;N # TAG LATIN CAPITAL LETTER K
-E004C;N # TAG LATIN CAPITAL LETTER L
-E004D;N # TAG LATIN CAPITAL LETTER M
-E004E;N # TAG LATIN CAPITAL LETTER N
-E004F;N # TAG LATIN CAPITAL LETTER O
-E0050;N # TAG LATIN CAPITAL LETTER P
-E0051;N # TAG LATIN CAPITAL LETTER Q
-E0052;N # TAG LATIN CAPITAL LETTER R
-E0053;N # TAG LATIN CAPITAL LETTER S
-E0054;N # TAG LATIN CAPITAL LETTER T
-E0055;N # TAG LATIN CAPITAL LETTER U
-E0056;N # TAG LATIN CAPITAL LETTER V
-E0057;N # TAG LATIN CAPITAL LETTER W
-E0058;N # TAG LATIN CAPITAL LETTER X
-E0059;N # TAG LATIN CAPITAL LETTER Y
-E005A;N # TAG LATIN CAPITAL LETTER Z
-E005B;N # TAG LEFT SQUARE BRACKET
-E005C;N # TAG REVERSE SOLIDUS
-E005D;N # TAG RIGHT SQUARE BRACKET
-E005E;N # TAG CIRCUMFLEX ACCENT
-E005F;N # TAG LOW LINE
-E0060;N # TAG GRAVE ACCENT
-E0061;N # TAG LATIN SMALL LETTER A
-E0062;N # TAG LATIN SMALL LETTER B
-E0063;N # TAG LATIN SMALL LETTER C
-E0064;N # TAG LATIN SMALL LETTER D
-E0065;N # TAG LATIN SMALL LETTER E
-E0066;N # TAG LATIN SMALL LETTER F
-E0067;N # TAG LATIN SMALL LETTER G
-E0068;N # TAG LATIN SMALL LETTER H
-E0069;N # TAG LATIN SMALL LETTER I
-E006A;N # TAG LATIN SMALL LETTER J
-E006B;N # TAG LATIN SMALL LETTER K
-E006C;N # TAG LATIN SMALL LETTER L
-E006D;N # TAG LATIN SMALL LETTER M
-E006E;N # TAG LATIN SMALL LETTER N
-E006F;N # TAG LATIN SMALL LETTER O
-E0070;N # TAG LATIN SMALL LETTER P
-E0071;N # TAG LATIN SMALL LETTER Q
-E0072;N # TAG LATIN SMALL LETTER R
-E0073;N # TAG LATIN SMALL LETTER S
-E0074;N # TAG LATIN SMALL LETTER T
-E0075;N # TAG LATIN SMALL LETTER U
-E0076;N # TAG LATIN SMALL LETTER V
-E0077;N # TAG LATIN SMALL LETTER W
-E0078;N # TAG LATIN SMALL LETTER X
-E0079;N # TAG LATIN SMALL LETTER Y
-E007A;N # TAG LATIN SMALL LETTER Z
-E007B;N # TAG LEFT CURLY BRACKET
-E007C;N # TAG VERTICAL LINE
-E007D;N # TAG RIGHT CURLY BRACKET
-E007E;N # TAG TILDE
-E007F;N # CANCEL TAG
-E0100;A # VARIATION SELECTOR-17
-E0101;A # VARIATION SELECTOR-18
-E0102;A # VARIATION SELECTOR-19
-E0103;A # VARIATION SELECTOR-20
-E0104;A # VARIATION SELECTOR-21
-E0105;A # VARIATION SELECTOR-22
-E0106;A # VARIATION SELECTOR-23
-E0107;A # VARIATION SELECTOR-24
-E0108;A # VARIATION SELECTOR-25
-E0109;A # VARIATION SELECTOR-26
-E010A;A # VARIATION SELECTOR-27
-E010B;A # VARIATION SELECTOR-28
-E010C;A # VARIATION SELECTOR-29
-E010D;A # VARIATION SELECTOR-30
-E010E;A # VARIATION SELECTOR-31
-E010F;A # VARIATION SELECTOR-32
-E0110;A # VARIATION SELECTOR-33
-E0111;A # VARIATION SELECTOR-34
-E0112;A # VARIATION SELECTOR-35
-E0113;A # VARIATION SELECTOR-36
-E0114;A # VARIATION SELECTOR-37
-E0115;A # VARIATION SELECTOR-38
-E0116;A # VARIATION SELECTOR-39
-E0117;A # VARIATION SELECTOR-40
-E0118;A # VARIATION SELECTOR-41
-E0119;A # VARIATION SELECTOR-42
-E011A;A # VARIATION SELECTOR-43
-E011B;A # VARIATION SELECTOR-44
-E011C;A # VARIATION SELECTOR-45
-E011D;A # VARIATION SELECTOR-46
-E011E;A # VARIATION SELECTOR-47
-E011F;A # VARIATION SELECTOR-48
-E0120;A # VARIATION SELECTOR-49
-E0121;A # VARIATION SELECTOR-50
-E0122;A # VARIATION SELECTOR-51
-E0123;A # VARIATION SELECTOR-52
-E0124;A # VARIATION SELECTOR-53
-E0125;A # VARIATION SELECTOR-54
-E0126;A # VARIATION SELECTOR-55
-E0127;A # VARIATION SELECTOR-56
-E0128;A # VARIATION SELECTOR-57
-E0129;A # VARIATION SELECTOR-58
-E012A;A # VARIATION SELECTOR-59
-E012B;A # VARIATION SELECTOR-60
-E012C;A # VARIATION SELECTOR-61
-E012D;A # VARIATION SELECTOR-62
-E012E;A # VARIATION SELECTOR-63
-E012F;A # VARIATION SELECTOR-64
-E0130;A # VARIATION SELECTOR-65
-E0131;A # VARIATION SELECTOR-66
-E0132;A # VARIATION SELECTOR-67
-E0133;A # VARIATION SELECTOR-68
-E0134;A # VARIATION SELECTOR-69
-E0135;A # VARIATION SELECTOR-70
-E0136;A # VARIATION SELECTOR-71
-E0137;A # VARIATION SELECTOR-72
-E0138;A # VARIATION SELECTOR-73
-E0139;A # VARIATION SELECTOR-74
-E013A;A # VARIATION SELECTOR-75
-E013B;A # VARIATION SELECTOR-76
-E013C;A # VARIATION SELECTOR-77
-E013D;A # VARIATION SELECTOR-78
-E013E;A # VARIATION SELECTOR-79
-E013F;A # VARIATION SELECTOR-80
-E0140;A # VARIATION SELECTOR-81
-E0141;A # VARIATION SELECTOR-82
-E0142;A # VARIATION SELECTOR-83
-E0143;A # VARIATION SELECTOR-84
-E0144;A # VARIATION SELECTOR-85
-E0145;A # VARIATION SELECTOR-86
-E0146;A # VARIATION SELECTOR-87
-E0147;A # VARIATION SELECTOR-88
-E0148;A # VARIATION SELECTOR-89
-E0149;A # VARIATION SELECTOR-90
-E014A;A # VARIATION SELECTOR-91
-E014B;A # VARIATION SELECTOR-92
-E014C;A # VARIATION SELECTOR-93
-E014D;A # VARIATION SELECTOR-94
-E014E;A # VARIATION SELECTOR-95
-E014F;A # VARIATION SELECTOR-96
-E0150;A # VARIATION SELECTOR-97
-E0151;A # VARIATION SELECTOR-98
-E0152;A # VARIATION SELECTOR-99
-E0153;A # VARIATION SELECTOR-100
-E0154;A # VARIATION SELECTOR-101
-E0155;A # VARIATION SELECTOR-102
-E0156;A # VARIATION SELECTOR-103
-E0157;A # VARIATION SELECTOR-104
-E0158;A # VARIATION SELECTOR-105
-E0159;A # VARIATION SELECTOR-106
-E015A;A # VARIATION SELECTOR-107
-E015B;A # VARIATION SELECTOR-108
-E015C;A # VARIATION SELECTOR-109
-E015D;A # VARIATION SELECTOR-110
-E015E;A # VARIATION SELECTOR-111
-E015F;A # VARIATION SELECTOR-112
-E0160;A # VARIATION SELECTOR-113
-E0161;A # VARIATION SELECTOR-114
-E0162;A # VARIATION SELECTOR-115
-E0163;A # VARIATION SELECTOR-116
-E0164;A # VARIATION SELECTOR-117
-E0165;A # VARIATION SELECTOR-118
-E0166;A # VARIATION SELECTOR-119
-E0167;A # VARIATION SELECTOR-120
-E0168;A # VARIATION SELECTOR-121
-E0169;A # VARIATION SELECTOR-122
-E016A;A # VARIATION SELECTOR-123
-E016B;A # VARIATION SELECTOR-124
-E016C;A # VARIATION SELECTOR-125
-E016D;A # VARIATION SELECTOR-126
-E016E;A # VARIATION SELECTOR-127
-E016F;A # VARIATION SELECTOR-128
-E0170;A # VARIATION SELECTOR-129
-E0171;A # VARIATION SELECTOR-130
-E0172;A # VARIATION SELECTOR-131
-E0173;A # VARIATION SELECTOR-132
-E0174;A # VARIATION SELECTOR-133
-E0175;A # VARIATION SELECTOR-134
-E0176;A # VARIATION SELECTOR-135
-E0177;A # VARIATION SELECTOR-136
-E0178;A # VARIATION SELECTOR-137
-E0179;A # VARIATION SELECTOR-138
-E017A;A # VARIATION SELECTOR-139
-E017B;A # VARIATION SELECTOR-140
-E017C;A # VARIATION SELECTOR-141
-E017D;A # VARIATION SELECTOR-142
-E017E;A # VARIATION SELECTOR-143
-E017F;A # VARIATION SELECTOR-144
-E0180;A # VARIATION SELECTOR-145
-E0181;A # VARIATION SELECTOR-146
-E0182;A # VARIATION SELECTOR-147
-E0183;A # VARIATION SELECTOR-148
-E0184;A # VARIATION SELECTOR-149
-E0185;A # VARIATION SELECTOR-150
-E0186;A # VARIATION SELECTOR-151
-E0187;A # VARIATION SELECTOR-152
-E0188;A # VARIATION SELECTOR-153
-E0189;A # VARIATION SELECTOR-154
-E018A;A # VARIATION SELECTOR-155
-E018B;A # VARIATION SELECTOR-156
-E018C;A # VARIATION SELECTOR-157
-E018D;A # VARIATION SELECTOR-158
-E018E;A # VARIATION SELECTOR-159
-E018F;A # VARIATION SELECTOR-160
-E0190;A # VARIATION SELECTOR-161
-E0191;A # VARIATION SELECTOR-162
-E0192;A # VARIATION SELECTOR-163
-E0193;A # VARIATION SELECTOR-164
-E0194;A # VARIATION SELECTOR-165
-E0195;A # VARIATION SELECTOR-166
-E0196;A # VARIATION SELECTOR-167
-E0197;A # VARIATION SELECTOR-168
-E0198;A # VARIATION SELECTOR-169
-E0199;A # VARIATION SELECTOR-170
-E019A;A # VARIATION SELECTOR-171
-E019B;A # VARIATION SELECTOR-172
-E019C;A # VARIATION SELECTOR-173
-E019D;A # VARIATION SELECTOR-174
-E019E;A # VARIATION SELECTOR-175
-E019F;A # VARIATION SELECTOR-176
-E01A0;A # VARIATION SELECTOR-177
-E01A1;A # VARIATION SELECTOR-178
-E01A2;A # VARIATION SELECTOR-179
-E01A3;A # VARIATION SELECTOR-180
-E01A4;A # VARIATION SELECTOR-181
-E01A5;A # VARIATION SELECTOR-182
-E01A6;A # VARIATION SELECTOR-183
-E01A7;A # VARIATION SELECTOR-184
-E01A8;A # VARIATION SELECTOR-185
-E01A9;A # VARIATION SELECTOR-186
-E01AA;A # VARIATION SELECTOR-187
-E01AB;A # VARIATION SELECTOR-188
-E01AC;A # VARIATION SELECTOR-189
-E01AD;A # VARIATION SELECTOR-190
-E01AE;A # VARIATION SELECTOR-191
-E01AF;A # VARIATION SELECTOR-192
-E01B0;A # VARIATION SELECTOR-193
-E01B1;A # VARIATION SELECTOR-194
-E01B2;A # VARIATION SELECTOR-195
-E01B3;A # VARIATION SELECTOR-196
-E01B4;A # VARIATION SELECTOR-197
-E01B5;A # VARIATION SELECTOR-198
-E01B6;A # VARIATION SELECTOR-199
-E01B7;A # VARIATION SELECTOR-200
-E01B8;A # VARIATION SELECTOR-201
-E01B9;A # VARIATION SELECTOR-202
-E01BA;A # VARIATION SELECTOR-203
-E01BB;A # VARIATION SELECTOR-204
-E01BC;A # VARIATION SELECTOR-205
-E01BD;A # VARIATION SELECTOR-206
-E01BE;A # VARIATION SELECTOR-207
-E01BF;A # VARIATION SELECTOR-208
-E01C0;A # VARIATION SELECTOR-209
-E01C1;A # VARIATION SELECTOR-210
-E01C2;A # VARIATION SELECTOR-211
-E01C3;A # VARIATION SELECTOR-212
-E01C4;A # VARIATION SELECTOR-213
-E01C5;A # VARIATION SELECTOR-214
-E01C6;A # VARIATION SELECTOR-215
-E01C7;A # VARIATION SELECTOR-216
-E01C8;A # VARIATION SELECTOR-217
-E01C9;A # VARIATION SELECTOR-218
-E01CA;A # VARIATION SELECTOR-219
-E01CB;A # VARIATION SELECTOR-220
-E01CC;A # VARIATION SELECTOR-221
-E01CD;A # VARIATION SELECTOR-222
-E01CE;A # VARIATION SELECTOR-223
-E01CF;A # VARIATION SELECTOR-224
-E01D0;A # VARIATION SELECTOR-225
-E01D1;A # VARIATION SELECTOR-226
-E01D2;A # VARIATION SELECTOR-227
-E01D3;A # VARIATION SELECTOR-228
-E01D4;A # VARIATION SELECTOR-229
-E01D5;A # VARIATION SELECTOR-230
-E01D6;A # VARIATION SELECTOR-231
-E01D7;A # VARIATION SELECTOR-232
-E01D8;A # VARIATION SELECTOR-233
-E01D9;A # VARIATION SELECTOR-234
-E01DA;A # VARIATION SELECTOR-235
-E01DB;A # VARIATION SELECTOR-236
-E01DC;A # VARIATION SELECTOR-237
-E01DD;A # VARIATION SELECTOR-238
-E01DE;A # VARIATION SELECTOR-239
-E01DF;A # VARIATION SELECTOR-240
-E01E0;A # VARIATION SELECTOR-241
-E01E1;A # VARIATION SELECTOR-242
-E01E2;A # VARIATION SELECTOR-243
-E01E3;A # VARIATION SELECTOR-244
-E01E4;A # VARIATION SELECTOR-245
-E01E5;A # VARIATION SELECTOR-246
-E01E6;A # VARIATION SELECTOR-247
-E01E7;A # VARIATION SELECTOR-248
-E01E8;A # VARIATION SELECTOR-249
-E01E9;A # VARIATION SELECTOR-250
-E01EA;A # VARIATION SELECTOR-251
-E01EB;A # VARIATION SELECTOR-252
-E01EC;A # VARIATION SELECTOR-253
-E01ED;A # VARIATION SELECTOR-254
-E01EE;A # VARIATION SELECTOR-255
-E01EF;A # VARIATION SELECTOR-256
-F0000..FFFFD;A # <Plane 15 Private Use, First>..<Plane 15 Private Use, Last>
-100000..10FFFD;A # <Plane 16 Private Use, First>..<Plane 16 Private Use, Last>
diff --git a/Master/tlpkg/tlperl/lib/unicore/Exact.pl b/Master/tlpkg/tlperl/lib/unicore/Exact.pl
deleted file mode 100644
index 42312b054cc..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/Exact.pl
+++ /dev/null
@@ -1,73 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-##
-## Data in this file used by ../utf8_heavy.pl
-##
-
-## Mapping from name to filename in ./lib/gc_sc
-%utf8::Exact = (
- ASCII => 'ASCII',
- All => 'Any',
- Alnum => 'Alnum',
- Alpha => 'Alpha',
- Any => 'Any',
- Assigned => 'Assigned',
- Blank => 'Blank',
- C => 'C',
- Cc => 'Cc',
- Cf => 'Cf',
- Cn => 'Cn',
- Cntrl => 'Cntrl',
- Co => 'Co',
- Cs => 'Cs',
- Digit => 'Digit',
- Graph => 'Graph',
- InGreek => 'InGreekA',
- L => 'L',
- LC => 'LC',
- Ll => 'Ll',
- Lm => 'Lm',
- Lo => 'Lo',
- Lower => 'Lower',
- Lt => 'Lt',
- Lu => 'Lu',
- M => 'M',
- Mc => 'Mc',
- Me => 'Me',
- Mn => 'Mn',
- N => 'N',
- Nd => 'Nd',
- Nl => 'Nl',
- No => 'No',
- P => 'P',
- Pc => 'Pc',
- Pd => 'Pd',
- Pe => 'Pe',
- Pf => 'Pf',
- Pi => 'Pi',
- Po => 'Po',
- Print => 'Print',
- Ps => 'Ps',
- Punct => 'Punct',
- S => 'S',
- Sc => 'Sc',
- Sk => 'Sk',
- Sm => 'Sm',
- So => 'So',
- Space => 'Space',
- SpacePerl => 'SpacePer',
- Title => 'Title',
- Upper => 'Upper',
- Word => 'Word',
- XDigit => 'XDigit',
- Z => 'Z',
- Zl => 'Zl',
- Zp => 'Zp',
- Zs => 'Zs',
- _CanonDCIJ => '_CanonDC',
- _CaseIgnorable => '_CaseIgn',
- _CombAbove => '_CombAbo',
-);
-1;
diff --git a/Master/tlpkg/tlperl/lib/unicore/HangulSyllableType.txt b/Master/tlpkg/tlperl/lib/unicore/HangulSyllableType.txt
deleted file mode 100644
index 5c4b1f47116..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/HangulSyllableType.txt
+++ /dev/null
@@ -1,851 +0,0 @@
-# HangulSyllableType-4.1.0.txt
-# Date: 2004-12-11, 05:44:43 GMT [MD]
-#
-# Unicode Character Database
-# Copyright (c) 1991-2005 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see UCD.html
-
-# ================================================
-
-# Property: Hangul_Syllable_Type
-
-# All code points not explicitly listed for Hangul_Syllable_Type
-# have the value Not_Applicable (NA).
-
-# ================================================
-
-# Hangul_Syllable_Type=Leading_Jamo
-
-1100..1159 ; L # Lo [90] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH
-115F ; L # Lo HANGUL CHOSEONG FILLER
-
-# Total code points: 91
-
-# ================================================
-
-# Hangul_Syllable_Type=Vowel_Jamo
-
-1160..11A2 ; V # Lo [67] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG SSANGARAEA
-
-# Total code points: 67
-
-# ================================================
-
-# Hangul_Syllable_Type=Trailing_Jamo
-
-11A8..11F9 ; T # Lo [82] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH
-
-# Total code points: 82
-
-# ================================================
-
-# Hangul_Syllable_Type=LV_Syllable
-
-AC00 ; LV # Lo HANGUL SYLLABLE GA
-AC1C ; LV # Lo HANGUL SYLLABLE GAE
-AC38 ; LV # Lo HANGUL SYLLABLE GYA
-AC54 ; LV # Lo HANGUL SYLLABLE GYAE
-AC70 ; LV # Lo HANGUL SYLLABLE GEO
-AC8C ; LV # Lo HANGUL SYLLABLE GE
-ACA8 ; LV # Lo HANGUL SYLLABLE GYEO
-ACC4 ; LV # Lo HANGUL SYLLABLE GYE
-ACE0 ; LV # Lo HANGUL SYLLABLE GO
-ACFC ; LV # Lo HANGUL SYLLABLE GWA
-AD18 ; LV # Lo HANGUL SYLLABLE GWAE
-AD34 ; LV # Lo HANGUL SYLLABLE GOE
-AD50 ; LV # Lo HANGUL SYLLABLE GYO
-AD6C ; LV # Lo HANGUL SYLLABLE GU
-AD88 ; LV # Lo HANGUL SYLLABLE GWEO
-ADA4 ; LV # Lo HANGUL SYLLABLE GWE
-ADC0 ; LV # Lo HANGUL SYLLABLE GWI
-ADDC ; LV # Lo HANGUL SYLLABLE GYU
-ADF8 ; LV # Lo HANGUL SYLLABLE GEU
-AE14 ; LV # Lo HANGUL SYLLABLE GYI
-AE30 ; LV # Lo HANGUL SYLLABLE GI
-AE4C ; LV # Lo HANGUL SYLLABLE GGA
-AE68 ; LV # Lo HANGUL SYLLABLE GGAE
-AE84 ; LV # Lo HANGUL SYLLABLE GGYA
-AEA0 ; LV # Lo HANGUL SYLLABLE GGYAE
-AEBC ; LV # Lo HANGUL SYLLABLE GGEO
-AED8 ; LV # Lo HANGUL SYLLABLE GGE
-AEF4 ; LV # Lo HANGUL SYLLABLE GGYEO
-AF10 ; LV # Lo HANGUL SYLLABLE GGYE
-AF2C ; LV # Lo HANGUL SYLLABLE GGO
-AF48 ; LV # Lo HANGUL SYLLABLE GGWA
-AF64 ; LV # Lo HANGUL SYLLABLE GGWAE
-AF80 ; LV # Lo HANGUL SYLLABLE GGOE
-AF9C ; LV # Lo HANGUL SYLLABLE GGYO
-AFB8 ; LV # Lo HANGUL SYLLABLE GGU
-AFD4 ; LV # Lo HANGUL SYLLABLE GGWEO
-AFF0 ; LV # Lo HANGUL SYLLABLE GGWE
-B00C ; LV # Lo HANGUL SYLLABLE GGWI
-B028 ; LV # Lo HANGUL SYLLABLE GGYU
-B044 ; LV # Lo HANGUL SYLLABLE GGEU
-B060 ; LV # Lo HANGUL SYLLABLE GGYI
-B07C ; LV # Lo HANGUL SYLLABLE GGI
-B098 ; LV # Lo HANGUL SYLLABLE NA
-B0B4 ; LV # Lo HANGUL SYLLABLE NAE
-B0D0 ; LV # Lo HANGUL SYLLABLE NYA
-B0EC ; LV # Lo HANGUL SYLLABLE NYAE
-B108 ; LV # Lo HANGUL SYLLABLE NEO
-B124 ; LV # Lo HANGUL SYLLABLE NE
-B140 ; LV # Lo HANGUL SYLLABLE NYEO
-B15C ; LV # Lo HANGUL SYLLABLE NYE
-B178 ; LV # Lo HANGUL SYLLABLE NO
-B194 ; LV # Lo HANGUL SYLLABLE NWA
-B1B0 ; LV # Lo HANGUL SYLLABLE NWAE
-B1CC ; LV # Lo HANGUL SYLLABLE NOE
-B1E8 ; LV # Lo HANGUL SYLLABLE NYO
-B204 ; LV # Lo HANGUL SYLLABLE NU
-B220 ; LV # Lo HANGUL SYLLABLE NWEO
-B23C ; LV # Lo HANGUL SYLLABLE NWE
-B258 ; LV # Lo HANGUL SYLLABLE NWI
-B274 ; LV # Lo HANGUL SYLLABLE NYU
-B290 ; LV # Lo HANGUL SYLLABLE NEU
-B2AC ; LV # Lo HANGUL SYLLABLE NYI
-B2C8 ; LV # Lo HANGUL SYLLABLE NI
-B2E4 ; LV # Lo HANGUL SYLLABLE DA
-B300 ; LV # Lo HANGUL SYLLABLE DAE
-B31C ; LV # Lo HANGUL SYLLABLE DYA
-B338 ; LV # Lo HANGUL SYLLABLE DYAE
-B354 ; LV # Lo HANGUL SYLLABLE DEO
-B370 ; LV # Lo HANGUL SYLLABLE DE
-B38C ; LV # Lo HANGUL SYLLABLE DYEO
-B3A8 ; LV # Lo HANGUL SYLLABLE DYE
-B3C4 ; LV # Lo HANGUL SYLLABLE DO
-B3E0 ; LV # Lo HANGUL SYLLABLE DWA
-B3FC ; LV # Lo HANGUL SYLLABLE DWAE
-B418 ; LV # Lo HANGUL SYLLABLE DOE
-B434 ; LV # Lo HANGUL SYLLABLE DYO
-B450 ; LV # Lo HANGUL SYLLABLE DU
-B46C ; LV # Lo HANGUL SYLLABLE DWEO
-B488 ; LV # Lo HANGUL SYLLABLE DWE
-B4A4 ; LV # Lo HANGUL SYLLABLE DWI
-B4C0 ; LV # Lo HANGUL SYLLABLE DYU
-B4DC ; LV # Lo HANGUL SYLLABLE DEU
-B4F8 ; LV # Lo HANGUL SYLLABLE DYI
-B514 ; LV # Lo HANGUL SYLLABLE DI
-B530 ; LV # Lo HANGUL SYLLABLE DDA
-B54C ; LV # Lo HANGUL SYLLABLE DDAE
-B568 ; LV # Lo HANGUL SYLLABLE DDYA
-B584 ; LV # Lo HANGUL SYLLABLE DDYAE
-B5A0 ; LV # Lo HANGUL SYLLABLE DDEO
-B5BC ; LV # Lo HANGUL SYLLABLE DDE
-B5D8 ; LV # Lo HANGUL SYLLABLE DDYEO
-B5F4 ; LV # Lo HANGUL SYLLABLE DDYE
-B610 ; LV # Lo HANGUL SYLLABLE DDO
-B62C ; LV # Lo HANGUL SYLLABLE DDWA
-B648 ; LV # Lo HANGUL SYLLABLE DDWAE
-B664 ; LV # Lo HANGUL SYLLABLE DDOE
-B680 ; LV # Lo HANGUL SYLLABLE DDYO
-B69C ; LV # Lo HANGUL SYLLABLE DDU
-B6B8 ; LV # Lo HANGUL SYLLABLE DDWEO
-B6D4 ; LV # Lo HANGUL SYLLABLE DDWE
-B6F0 ; LV # Lo HANGUL SYLLABLE DDWI
-B70C ; LV # Lo HANGUL SYLLABLE DDYU
-B728 ; LV # Lo HANGUL SYLLABLE DDEU
-B744 ; LV # Lo HANGUL SYLLABLE DDYI
-B760 ; LV # Lo HANGUL SYLLABLE DDI
-B77C ; LV # Lo HANGUL SYLLABLE RA
-B798 ; LV # Lo HANGUL SYLLABLE RAE
-B7B4 ; LV # Lo HANGUL SYLLABLE RYA
-B7D0 ; LV # Lo HANGUL SYLLABLE RYAE
-B7EC ; LV # Lo HANGUL SYLLABLE REO
-B808 ; LV # Lo HANGUL SYLLABLE RE
-B824 ; LV # Lo HANGUL SYLLABLE RYEO
-B840 ; LV # Lo HANGUL SYLLABLE RYE
-B85C ; LV # Lo HANGUL SYLLABLE RO
-B878 ; LV # Lo HANGUL SYLLABLE RWA
-B894 ; LV # Lo HANGUL SYLLABLE RWAE
-B8B0 ; LV # Lo HANGUL SYLLABLE ROE
-B8CC ; LV # Lo HANGUL SYLLABLE RYO
-B8E8 ; LV # Lo HANGUL SYLLABLE RU
-B904 ; LV # Lo HANGUL SYLLABLE RWEO
-B920 ; LV # Lo HANGUL SYLLABLE RWE
-B93C ; LV # Lo HANGUL SYLLABLE RWI
-B958 ; LV # Lo HANGUL SYLLABLE RYU
-B974 ; LV # Lo HANGUL SYLLABLE REU
-B990 ; LV # Lo HANGUL SYLLABLE RYI
-B9AC ; LV # Lo HANGUL SYLLABLE RI
-B9C8 ; LV # Lo HANGUL SYLLABLE MA
-B9E4 ; LV # Lo HANGUL SYLLABLE MAE
-BA00 ; LV # Lo HANGUL SYLLABLE MYA
-BA1C ; LV # Lo HANGUL SYLLABLE MYAE
-BA38 ; LV # Lo HANGUL SYLLABLE MEO
-BA54 ; LV # Lo HANGUL SYLLABLE ME
-BA70 ; LV # Lo HANGUL SYLLABLE MYEO
-BA8C ; LV # Lo HANGUL SYLLABLE MYE
-BAA8 ; LV # Lo HANGUL SYLLABLE MO
-BAC4 ; LV # Lo HANGUL SYLLABLE MWA
-BAE0 ; LV # Lo HANGUL SYLLABLE MWAE
-BAFC ; LV # Lo HANGUL SYLLABLE MOE
-BB18 ; LV # Lo HANGUL SYLLABLE MYO
-BB34 ; LV # Lo HANGUL SYLLABLE MU
-BB50 ; LV # Lo HANGUL SYLLABLE MWEO
-BB6C ; LV # Lo HANGUL SYLLABLE MWE
-BB88 ; LV # Lo HANGUL SYLLABLE MWI
-BBA4 ; LV # Lo HANGUL SYLLABLE MYU
-BBC0 ; LV # Lo HANGUL SYLLABLE MEU
-BBDC ; LV # Lo HANGUL SYLLABLE MYI
-BBF8 ; LV # Lo HANGUL SYLLABLE MI
-BC14 ; LV # Lo HANGUL SYLLABLE BA
-BC30 ; LV # Lo HANGUL SYLLABLE BAE
-BC4C ; LV # Lo HANGUL SYLLABLE BYA
-BC68 ; LV # Lo HANGUL SYLLABLE BYAE
-BC84 ; LV # Lo HANGUL SYLLABLE BEO
-BCA0 ; LV # Lo HANGUL SYLLABLE BE
-BCBC ; LV # Lo HANGUL SYLLABLE BYEO
-BCD8 ; LV # Lo HANGUL SYLLABLE BYE
-BCF4 ; LV # Lo HANGUL SYLLABLE BO
-BD10 ; LV # Lo HANGUL SYLLABLE BWA
-BD2C ; LV # Lo HANGUL SYLLABLE BWAE
-BD48 ; LV # Lo HANGUL SYLLABLE BOE
-BD64 ; LV # Lo HANGUL SYLLABLE BYO
-BD80 ; LV # Lo HANGUL SYLLABLE BU
-BD9C ; LV # Lo HANGUL SYLLABLE BWEO
-BDB8 ; LV # Lo HANGUL SYLLABLE BWE
-BDD4 ; LV # Lo HANGUL SYLLABLE BWI
-BDF0 ; LV # Lo HANGUL SYLLABLE BYU
-BE0C ; LV # Lo HANGUL SYLLABLE BEU
-BE28 ; LV # Lo HANGUL SYLLABLE BYI
-BE44 ; LV # Lo HANGUL SYLLABLE BI
-BE60 ; LV # Lo HANGUL SYLLABLE BBA
-BE7C ; LV # Lo HANGUL SYLLABLE BBAE
-BE98 ; LV # Lo HANGUL SYLLABLE BBYA
-BEB4 ; LV # Lo HANGUL SYLLABLE BBYAE
-BED0 ; LV # Lo HANGUL SYLLABLE BBEO
-BEEC ; LV # Lo HANGUL SYLLABLE BBE
-BF08 ; LV # Lo HANGUL SYLLABLE BBYEO
-BF24 ; LV # Lo HANGUL SYLLABLE BBYE
-BF40 ; LV # Lo HANGUL SYLLABLE BBO
-BF5C ; LV # Lo HANGUL SYLLABLE BBWA
-BF78 ; LV # Lo HANGUL SYLLABLE BBWAE
-BF94 ; LV # Lo HANGUL SYLLABLE BBOE
-BFB0 ; LV # Lo HANGUL SYLLABLE BBYO
-BFCC ; LV # Lo HANGUL SYLLABLE BBU
-BFE8 ; LV # Lo HANGUL SYLLABLE BBWEO
-C004 ; LV # Lo HANGUL SYLLABLE BBWE
-C020 ; LV # Lo HANGUL SYLLABLE BBWI
-C03C ; LV # Lo HANGUL SYLLABLE BBYU
-C058 ; LV # Lo HANGUL SYLLABLE BBEU
-C074 ; LV # Lo HANGUL SYLLABLE BBYI
-C090 ; LV # Lo HANGUL SYLLABLE BBI
-C0AC ; LV # Lo HANGUL SYLLABLE SA
-C0C8 ; LV # Lo HANGUL SYLLABLE SAE
-C0E4 ; LV # Lo HANGUL SYLLABLE SYA
-C100 ; LV # Lo HANGUL SYLLABLE SYAE
-C11C ; LV # Lo HANGUL SYLLABLE SEO
-C138 ; LV # Lo HANGUL SYLLABLE SE
-C154 ; LV # Lo HANGUL SYLLABLE SYEO
-C170 ; LV # Lo HANGUL SYLLABLE SYE
-C18C ; LV # Lo HANGUL SYLLABLE SO
-C1A8 ; LV # Lo HANGUL SYLLABLE SWA
-C1C4 ; LV # Lo HANGUL SYLLABLE SWAE
-C1E0 ; LV # Lo HANGUL SYLLABLE SOE
-C1FC ; LV # Lo HANGUL SYLLABLE SYO
-C218 ; LV # Lo HANGUL SYLLABLE SU
-C234 ; LV # Lo HANGUL SYLLABLE SWEO
-C250 ; LV # Lo HANGUL SYLLABLE SWE
-C26C ; LV # Lo HANGUL SYLLABLE SWI
-C288 ; LV # Lo HANGUL SYLLABLE SYU
-C2A4 ; LV # Lo HANGUL SYLLABLE SEU
-C2C0 ; LV # Lo HANGUL SYLLABLE SYI
-C2DC ; LV # Lo HANGUL SYLLABLE SI
-C2F8 ; LV # Lo HANGUL SYLLABLE SSA
-C314 ; LV # Lo HANGUL SYLLABLE SSAE
-C330 ; LV # Lo HANGUL SYLLABLE SSYA
-C34C ; LV # Lo HANGUL SYLLABLE SSYAE
-C368 ; LV # Lo HANGUL SYLLABLE SSEO
-C384 ; LV # Lo HANGUL SYLLABLE SSE
-C3A0 ; LV # Lo HANGUL SYLLABLE SSYEO
-C3BC ; LV # Lo HANGUL SYLLABLE SSYE
-C3D8 ; LV # Lo HANGUL SYLLABLE SSO
-C3F4 ; LV # Lo HANGUL SYLLABLE SSWA
-C410 ; LV # Lo HANGUL SYLLABLE SSWAE
-C42C ; LV # Lo HANGUL SYLLABLE SSOE
-C448 ; LV # Lo HANGUL SYLLABLE SSYO
-C464 ; LV # Lo HANGUL SYLLABLE SSU
-C480 ; LV # Lo HANGUL SYLLABLE SSWEO
-C49C ; LV # Lo HANGUL SYLLABLE SSWE
-C4B8 ; LV # Lo HANGUL SYLLABLE SSWI
-C4D4 ; LV # Lo HANGUL SYLLABLE SSYU
-C4F0 ; LV # Lo HANGUL SYLLABLE SSEU
-C50C ; LV # Lo HANGUL SYLLABLE SSYI
-C528 ; LV # Lo HANGUL SYLLABLE SSI
-C544 ; LV # Lo HANGUL SYLLABLE A
-C560 ; LV # Lo HANGUL SYLLABLE AE
-C57C ; LV # Lo HANGUL SYLLABLE YA
-C598 ; LV # Lo HANGUL SYLLABLE YAE
-C5B4 ; LV # Lo HANGUL SYLLABLE EO
-C5D0 ; LV # Lo HANGUL SYLLABLE E
-C5EC ; LV # Lo HANGUL SYLLABLE YEO
-C608 ; LV # Lo HANGUL SYLLABLE YE
-C624 ; LV # Lo HANGUL SYLLABLE O
-C640 ; LV # Lo HANGUL SYLLABLE WA
-C65C ; LV # Lo HANGUL SYLLABLE WAE
-C678 ; LV # Lo HANGUL SYLLABLE OE
-C694 ; LV # Lo HANGUL SYLLABLE YO
-C6B0 ; LV # Lo HANGUL SYLLABLE U
-C6CC ; LV # Lo HANGUL SYLLABLE WEO
-C6E8 ; LV # Lo HANGUL SYLLABLE WE
-C704 ; LV # Lo HANGUL SYLLABLE WI
-C720 ; LV # Lo HANGUL SYLLABLE YU
-C73C ; LV # Lo HANGUL SYLLABLE EU
-C758 ; LV # Lo HANGUL SYLLABLE YI
-C774 ; LV # Lo HANGUL SYLLABLE I
-C790 ; LV # Lo HANGUL SYLLABLE JA
-C7AC ; LV # Lo HANGUL SYLLABLE JAE
-C7C8 ; LV # Lo HANGUL SYLLABLE JYA
-C7E4 ; LV # Lo HANGUL SYLLABLE JYAE
-C800 ; LV # Lo HANGUL SYLLABLE JEO
-C81C ; LV # Lo HANGUL SYLLABLE JE
-C838 ; LV # Lo HANGUL SYLLABLE JYEO
-C854 ; LV # Lo HANGUL SYLLABLE JYE
-C870 ; LV # Lo HANGUL SYLLABLE JO
-C88C ; LV # Lo HANGUL SYLLABLE JWA
-C8A8 ; LV # Lo HANGUL SYLLABLE JWAE
-C8C4 ; LV # Lo HANGUL SYLLABLE JOE
-C8E0 ; LV # Lo HANGUL SYLLABLE JYO
-C8FC ; LV # Lo HANGUL SYLLABLE JU
-C918 ; LV # Lo HANGUL SYLLABLE JWEO
-C934 ; LV # Lo HANGUL SYLLABLE JWE
-C950 ; LV # Lo HANGUL SYLLABLE JWI
-C96C ; LV # Lo HANGUL SYLLABLE JYU
-C988 ; LV # Lo HANGUL SYLLABLE JEU
-C9A4 ; LV # Lo HANGUL SYLLABLE JYI
-C9C0 ; LV # Lo HANGUL SYLLABLE JI
-C9DC ; LV # Lo HANGUL SYLLABLE JJA
-C9F8 ; LV # Lo HANGUL SYLLABLE JJAE
-CA14 ; LV # Lo HANGUL SYLLABLE JJYA
-CA30 ; LV # Lo HANGUL SYLLABLE JJYAE
-CA4C ; LV # Lo HANGUL SYLLABLE JJEO
-CA68 ; LV # Lo HANGUL SYLLABLE JJE
-CA84 ; LV # Lo HANGUL SYLLABLE JJYEO
-CAA0 ; LV # Lo HANGUL SYLLABLE JJYE
-CABC ; LV # Lo HANGUL SYLLABLE JJO
-CAD8 ; LV # Lo HANGUL SYLLABLE JJWA
-CAF4 ; LV # Lo HANGUL SYLLABLE JJWAE
-CB10 ; LV # Lo HANGUL SYLLABLE JJOE
-CB2C ; LV # Lo HANGUL SYLLABLE JJYO
-CB48 ; LV # Lo HANGUL SYLLABLE JJU
-CB64 ; LV # Lo HANGUL SYLLABLE JJWEO
-CB80 ; LV # Lo HANGUL SYLLABLE JJWE
-CB9C ; LV # Lo HANGUL SYLLABLE JJWI
-CBB8 ; LV # Lo HANGUL SYLLABLE JJYU
-CBD4 ; LV # Lo HANGUL SYLLABLE JJEU
-CBF0 ; LV # Lo HANGUL SYLLABLE JJYI
-CC0C ; LV # Lo HANGUL SYLLABLE JJI
-CC28 ; LV # Lo HANGUL SYLLABLE CA
-CC44 ; LV # Lo HANGUL SYLLABLE CAE
-CC60 ; LV # Lo HANGUL SYLLABLE CYA
-CC7C ; LV # Lo HANGUL SYLLABLE CYAE
-CC98 ; LV # Lo HANGUL SYLLABLE CEO
-CCB4 ; LV # Lo HANGUL SYLLABLE CE
-CCD0 ; LV # Lo HANGUL SYLLABLE CYEO
-CCEC ; LV # Lo HANGUL SYLLABLE CYE
-CD08 ; LV # Lo HANGUL SYLLABLE CO
-CD24 ; LV # Lo HANGUL SYLLABLE CWA
-CD40 ; LV # Lo HANGUL SYLLABLE CWAE
-CD5C ; LV # Lo HANGUL SYLLABLE COE
-CD78 ; LV # Lo HANGUL SYLLABLE CYO
-CD94 ; LV # Lo HANGUL SYLLABLE CU
-CDB0 ; LV # Lo HANGUL SYLLABLE CWEO
-CDCC ; LV # Lo HANGUL SYLLABLE CWE
-CDE8 ; LV # Lo HANGUL SYLLABLE CWI
-CE04 ; LV # Lo HANGUL SYLLABLE CYU
-CE20 ; LV # Lo HANGUL SYLLABLE CEU
-CE3C ; LV # Lo HANGUL SYLLABLE CYI
-CE58 ; LV # Lo HANGUL SYLLABLE CI
-CE74 ; LV # Lo HANGUL SYLLABLE KA
-CE90 ; LV # Lo HANGUL SYLLABLE KAE
-CEAC ; LV # Lo HANGUL SYLLABLE KYA
-CEC8 ; LV # Lo HANGUL SYLLABLE KYAE
-CEE4 ; LV # Lo HANGUL SYLLABLE KEO
-CF00 ; LV # Lo HANGUL SYLLABLE KE
-CF1C ; LV # Lo HANGUL SYLLABLE KYEO
-CF38 ; LV # Lo HANGUL SYLLABLE KYE
-CF54 ; LV # Lo HANGUL SYLLABLE KO
-CF70 ; LV # Lo HANGUL SYLLABLE KWA
-CF8C ; LV # Lo HANGUL SYLLABLE KWAE
-CFA8 ; LV # Lo HANGUL SYLLABLE KOE
-CFC4 ; LV # Lo HANGUL SYLLABLE KYO
-CFE0 ; LV # Lo HANGUL SYLLABLE KU
-CFFC ; LV # Lo HANGUL SYLLABLE KWEO
-D018 ; LV # Lo HANGUL SYLLABLE KWE
-D034 ; LV # Lo HANGUL SYLLABLE KWI
-D050 ; LV # Lo HANGUL SYLLABLE KYU
-D06C ; LV # Lo HANGUL SYLLABLE KEU
-D088 ; LV # Lo HANGUL SYLLABLE KYI
-D0A4 ; LV # Lo HANGUL SYLLABLE KI
-D0C0 ; LV # Lo HANGUL SYLLABLE TA
-D0DC ; LV # Lo HANGUL SYLLABLE TAE
-D0F8 ; LV # Lo HANGUL SYLLABLE TYA
-D114 ; LV # Lo HANGUL SYLLABLE TYAE
-D130 ; LV # Lo HANGUL SYLLABLE TEO
-D14C ; LV # Lo HANGUL SYLLABLE TE
-D168 ; LV # Lo HANGUL SYLLABLE TYEO
-D184 ; LV # Lo HANGUL SYLLABLE TYE
-D1A0 ; LV # Lo HANGUL SYLLABLE TO
-D1BC ; LV # Lo HANGUL SYLLABLE TWA
-D1D8 ; LV # Lo HANGUL SYLLABLE TWAE
-D1F4 ; LV # Lo HANGUL SYLLABLE TOE
-D210 ; LV # Lo HANGUL SYLLABLE TYO
-D22C ; LV # Lo HANGUL SYLLABLE TU
-D248 ; LV # Lo HANGUL SYLLABLE TWEO
-D264 ; LV # Lo HANGUL SYLLABLE TWE
-D280 ; LV # Lo HANGUL SYLLABLE TWI
-D29C ; LV # Lo HANGUL SYLLABLE TYU
-D2B8 ; LV # Lo HANGUL SYLLABLE TEU
-D2D4 ; LV # Lo HANGUL SYLLABLE TYI
-D2F0 ; LV # Lo HANGUL SYLLABLE TI
-D30C ; LV # Lo HANGUL SYLLABLE PA
-D328 ; LV # Lo HANGUL SYLLABLE PAE
-D344 ; LV # Lo HANGUL SYLLABLE PYA
-D360 ; LV # Lo HANGUL SYLLABLE PYAE
-D37C ; LV # Lo HANGUL SYLLABLE PEO
-D398 ; LV # Lo HANGUL SYLLABLE PE
-D3B4 ; LV # Lo HANGUL SYLLABLE PYEO
-D3D0 ; LV # Lo HANGUL SYLLABLE PYE
-D3EC ; LV # Lo HANGUL SYLLABLE PO
-D408 ; LV # Lo HANGUL SYLLABLE PWA
-D424 ; LV # Lo HANGUL SYLLABLE PWAE
-D440 ; LV # Lo HANGUL SYLLABLE POE
-D45C ; LV # Lo HANGUL SYLLABLE PYO
-D478 ; LV # Lo HANGUL SYLLABLE PU
-D494 ; LV # Lo HANGUL SYLLABLE PWEO
-D4B0 ; LV # Lo HANGUL SYLLABLE PWE
-D4CC ; LV # Lo HANGUL SYLLABLE PWI
-D4E8 ; LV # Lo HANGUL SYLLABLE PYU
-D504 ; LV # Lo HANGUL SYLLABLE PEU
-D520 ; LV # Lo HANGUL SYLLABLE PYI
-D53C ; LV # Lo HANGUL SYLLABLE PI
-D558 ; LV # Lo HANGUL SYLLABLE HA
-D574 ; LV # Lo HANGUL SYLLABLE HAE
-D590 ; LV # Lo HANGUL SYLLABLE HYA
-D5AC ; LV # Lo HANGUL SYLLABLE HYAE
-D5C8 ; LV # Lo HANGUL SYLLABLE HEO
-D5E4 ; LV # Lo HANGUL SYLLABLE HE
-D600 ; LV # Lo HANGUL SYLLABLE HYEO
-D61C ; LV # Lo HANGUL SYLLABLE HYE
-D638 ; LV # Lo HANGUL SYLLABLE HO
-D654 ; LV # Lo HANGUL SYLLABLE HWA
-D670 ; LV # Lo HANGUL SYLLABLE HWAE
-D68C ; LV # Lo HANGUL SYLLABLE HOE
-D6A8 ; LV # Lo HANGUL SYLLABLE HYO
-D6C4 ; LV # Lo HANGUL SYLLABLE HU
-D6E0 ; LV # Lo HANGUL SYLLABLE HWEO
-D6FC ; LV # Lo HANGUL SYLLABLE HWE
-D718 ; LV # Lo HANGUL SYLLABLE HWI
-D734 ; LV # Lo HANGUL SYLLABLE HYU
-D750 ; LV # Lo HANGUL SYLLABLE HEU
-D76C ; LV # Lo HANGUL SYLLABLE HYI
-D788 ; LV # Lo HANGUL SYLLABLE HI
-
-# Total code points: 399
-
-# ================================================
-
-# Hangul_Syllable_Type=LVT_Syllable
-
-AC01..AC1B ; LVT # Lo [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH
-AC1D..AC37 ; LVT # Lo [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH
-AC39..AC53 ; LVT # Lo [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH
-AC55..AC6F ; LVT # Lo [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH
-AC71..AC8B ; LVT # Lo [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH
-AC8D..ACA7 ; LVT # Lo [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH
-ACA9..ACC3 ; LVT # Lo [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH
-ACC5..ACDF ; LVT # Lo [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH
-ACE1..ACFB ; LVT # Lo [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH
-ACFD..AD17 ; LVT # Lo [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH
-AD19..AD33 ; LVT # Lo [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH
-AD35..AD4F ; LVT # Lo [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH
-AD51..AD6B ; LVT # Lo [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH
-AD6D..AD87 ; LVT # Lo [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH
-AD89..ADA3 ; LVT # Lo [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH
-ADA5..ADBF ; LVT # Lo [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH
-ADC1..ADDB ; LVT # Lo [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH
-ADDD..ADF7 ; LVT # Lo [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH
-ADF9..AE13 ; LVT # Lo [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH
-AE15..AE2F ; LVT # Lo [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH
-AE31..AE4B ; LVT # Lo [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH
-AE4D..AE67 ; LVT # Lo [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH
-AE69..AE83 ; LVT # Lo [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH
-AE85..AE9F ; LVT # Lo [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH
-AEA1..AEBB ; LVT # Lo [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH
-AEBD..AED7 ; LVT # Lo [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH
-AED9..AEF3 ; LVT # Lo [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH
-AEF5..AF0F ; LVT # Lo [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH
-AF11..AF2B ; LVT # Lo [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH
-AF2D..AF47 ; LVT # Lo [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH
-AF49..AF63 ; LVT # Lo [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH
-AF65..AF7F ; LVT # Lo [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH
-AF81..AF9B ; LVT # Lo [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH
-AF9D..AFB7 ; LVT # Lo [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH
-AFB9..AFD3 ; LVT # Lo [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH
-AFD5..AFEF ; LVT # Lo [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH
-AFF1..B00B ; LVT # Lo [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH
-B00D..B027 ; LVT # Lo [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH
-B029..B043 ; LVT # Lo [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH
-B045..B05F ; LVT # Lo [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH
-B061..B07B ; LVT # Lo [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH
-B07D..B097 ; LVT # Lo [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH
-B099..B0B3 ; LVT # Lo [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH
-B0B5..B0CF ; LVT # Lo [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH
-B0D1..B0EB ; LVT # Lo [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH
-B0ED..B107 ; LVT # Lo [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH
-B109..B123 ; LVT # Lo [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH
-B125..B13F ; LVT # Lo [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH
-B141..B15B ; LVT # Lo [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH
-B15D..B177 ; LVT # Lo [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH
-B179..B193 ; LVT # Lo [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH
-B195..B1AF ; LVT # Lo [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH
-B1B1..B1CB ; LVT # Lo [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH
-B1CD..B1E7 ; LVT # Lo [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH
-B1E9..B203 ; LVT # Lo [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH
-B205..B21F ; LVT # Lo [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH
-B221..B23B ; LVT # Lo [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH
-B23D..B257 ; LVT # Lo [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH
-B259..B273 ; LVT # Lo [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH
-B275..B28F ; LVT # Lo [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH
-B291..B2AB ; LVT # Lo [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH
-B2AD..B2C7 ; LVT # Lo [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH
-B2C9..B2E3 ; LVT # Lo [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH
-B2E5..B2FF ; LVT # Lo [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH
-B301..B31B ; LVT # Lo [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH
-B31D..B337 ; LVT # Lo [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH
-B339..B353 ; LVT # Lo [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH
-B355..B36F ; LVT # Lo [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH
-B371..B38B ; LVT # Lo [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH
-B38D..B3A7 ; LVT # Lo [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH
-B3A9..B3C3 ; LVT # Lo [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH
-B3C5..B3DF ; LVT # Lo [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH
-B3E1..B3FB ; LVT # Lo [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH
-B3FD..B417 ; LVT # Lo [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH
-B419..B433 ; LVT # Lo [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH
-B435..B44F ; LVT # Lo [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH
-B451..B46B ; LVT # Lo [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH
-B46D..B487 ; LVT # Lo [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH
-B489..B4A3 ; LVT # Lo [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH
-B4A5..B4BF ; LVT # Lo [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH
-B4C1..B4DB ; LVT # Lo [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH
-B4DD..B4F7 ; LVT # Lo [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH
-B4F9..B513 ; LVT # Lo [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH
-B515..B52F ; LVT # Lo [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH
-B531..B54B ; LVT # Lo [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH
-B54D..B567 ; LVT # Lo [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH
-B569..B583 ; LVT # Lo [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH
-B585..B59F ; LVT # Lo [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH
-B5A1..B5BB ; LVT # Lo [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH
-B5BD..B5D7 ; LVT # Lo [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH
-B5D9..B5F3 ; LVT # Lo [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH
-B5F5..B60F ; LVT # Lo [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH
-B611..B62B ; LVT # Lo [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH
-B62D..B647 ; LVT # Lo [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH
-B649..B663 ; LVT # Lo [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH
-B665..B67F ; LVT # Lo [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH
-B681..B69B ; LVT # Lo [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH
-B69D..B6B7 ; LVT # Lo [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH
-B6B9..B6D3 ; LVT # Lo [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH
-B6D5..B6EF ; LVT # Lo [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH
-B6F1..B70B ; LVT # Lo [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH
-B70D..B727 ; LVT # Lo [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH
-B729..B743 ; LVT # Lo [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH
-B745..B75F ; LVT # Lo [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH
-B761..B77B ; LVT # Lo [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH
-B77D..B797 ; LVT # Lo [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH
-B799..B7B3 ; LVT # Lo [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH
-B7B5..B7CF ; LVT # Lo [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH
-B7D1..B7EB ; LVT # Lo [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH
-B7ED..B807 ; LVT # Lo [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH
-B809..B823 ; LVT # Lo [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH
-B825..B83F ; LVT # Lo [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH
-B841..B85B ; LVT # Lo [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH
-B85D..B877 ; LVT # Lo [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH
-B879..B893 ; LVT # Lo [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH
-B895..B8AF ; LVT # Lo [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH
-B8B1..B8CB ; LVT # Lo [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH
-B8CD..B8E7 ; LVT # Lo [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH
-B8E9..B903 ; LVT # Lo [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH
-B905..B91F ; LVT # Lo [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH
-B921..B93B ; LVT # Lo [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH
-B93D..B957 ; LVT # Lo [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH
-B959..B973 ; LVT # Lo [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH
-B975..B98F ; LVT # Lo [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH
-B991..B9AB ; LVT # Lo [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH
-B9AD..B9C7 ; LVT # Lo [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH
-B9C9..B9E3 ; LVT # Lo [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH
-B9E5..B9FF ; LVT # Lo [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH
-BA01..BA1B ; LVT # Lo [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH
-BA1D..BA37 ; LVT # Lo [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH
-BA39..BA53 ; LVT # Lo [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH
-BA55..BA6F ; LVT # Lo [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH
-BA71..BA8B ; LVT # Lo [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH
-BA8D..BAA7 ; LVT # Lo [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH
-BAA9..BAC3 ; LVT # Lo [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH
-BAC5..BADF ; LVT # Lo [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH
-BAE1..BAFB ; LVT # Lo [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH
-BAFD..BB17 ; LVT # Lo [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH
-BB19..BB33 ; LVT # Lo [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH
-BB35..BB4F ; LVT # Lo [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH
-BB51..BB6B ; LVT # Lo [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH
-BB6D..BB87 ; LVT # Lo [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH
-BB89..BBA3 ; LVT # Lo [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH
-BBA5..BBBF ; LVT # Lo [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH
-BBC1..BBDB ; LVT # Lo [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH
-BBDD..BBF7 ; LVT # Lo [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH
-BBF9..BC13 ; LVT # Lo [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH
-BC15..BC2F ; LVT # Lo [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH
-BC31..BC4B ; LVT # Lo [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH
-BC4D..BC67 ; LVT # Lo [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH
-BC69..BC83 ; LVT # Lo [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH
-BC85..BC9F ; LVT # Lo [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH
-BCA1..BCBB ; LVT # Lo [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH
-BCBD..BCD7 ; LVT # Lo [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH
-BCD9..BCF3 ; LVT # Lo [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH
-BCF5..BD0F ; LVT # Lo [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH
-BD11..BD2B ; LVT # Lo [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH
-BD2D..BD47 ; LVT # Lo [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH
-BD49..BD63 ; LVT # Lo [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH
-BD65..BD7F ; LVT # Lo [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH
-BD81..BD9B ; LVT # Lo [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH
-BD9D..BDB7 ; LVT # Lo [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH
-BDB9..BDD3 ; LVT # Lo [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH
-BDD5..BDEF ; LVT # Lo [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH
-BDF1..BE0B ; LVT # Lo [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH
-BE0D..BE27 ; LVT # Lo [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH
-BE29..BE43 ; LVT # Lo [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH
-BE45..BE5F ; LVT # Lo [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH
-BE61..BE7B ; LVT # Lo [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH
-BE7D..BE97 ; LVT # Lo [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH
-BE99..BEB3 ; LVT # Lo [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH
-BEB5..BECF ; LVT # Lo [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH
-BED1..BEEB ; LVT # Lo [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH
-BEED..BF07 ; LVT # Lo [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH
-BF09..BF23 ; LVT # Lo [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH
-BF25..BF3F ; LVT # Lo [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH
-BF41..BF5B ; LVT # Lo [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH
-BF5D..BF77 ; LVT # Lo [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH
-BF79..BF93 ; LVT # Lo [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH
-BF95..BFAF ; LVT # Lo [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH
-BFB1..BFCB ; LVT # Lo [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH
-BFCD..BFE7 ; LVT # Lo [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH
-BFE9..C003 ; LVT # Lo [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH
-C005..C01F ; LVT # Lo [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH
-C021..C03B ; LVT # Lo [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH
-C03D..C057 ; LVT # Lo [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH
-C059..C073 ; LVT # Lo [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH
-C075..C08F ; LVT # Lo [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH
-C091..C0AB ; LVT # Lo [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH
-C0AD..C0C7 ; LVT # Lo [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH
-C0C9..C0E3 ; LVT # Lo [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH
-C0E5..C0FF ; LVT # Lo [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH
-C101..C11B ; LVT # Lo [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH
-C11D..C137 ; LVT # Lo [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH
-C139..C153 ; LVT # Lo [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH
-C155..C16F ; LVT # Lo [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH
-C171..C18B ; LVT # Lo [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH
-C18D..C1A7 ; LVT # Lo [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH
-C1A9..C1C3 ; LVT # Lo [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH
-C1C5..C1DF ; LVT # Lo [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH
-C1E1..C1FB ; LVT # Lo [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH
-C1FD..C217 ; LVT # Lo [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH
-C219..C233 ; LVT # Lo [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH
-C235..C24F ; LVT # Lo [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH
-C251..C26B ; LVT # Lo [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH
-C26D..C287 ; LVT # Lo [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH
-C289..C2A3 ; LVT # Lo [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH
-C2A5..C2BF ; LVT # Lo [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH
-C2C1..C2DB ; LVT # Lo [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH
-C2DD..C2F7 ; LVT # Lo [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH
-C2F9..C313 ; LVT # Lo [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH
-C315..C32F ; LVT # Lo [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH
-C331..C34B ; LVT # Lo [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH
-C34D..C367 ; LVT # Lo [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH
-C369..C383 ; LVT # Lo [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH
-C385..C39F ; LVT # Lo [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH
-C3A1..C3BB ; LVT # Lo [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH
-C3BD..C3D7 ; LVT # Lo [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH
-C3D9..C3F3 ; LVT # Lo [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH
-C3F5..C40F ; LVT # Lo [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH
-C411..C42B ; LVT # Lo [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH
-C42D..C447 ; LVT # Lo [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH
-C449..C463 ; LVT # Lo [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH
-C465..C47F ; LVT # Lo [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH
-C481..C49B ; LVT # Lo [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH
-C49D..C4B7 ; LVT # Lo [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH
-C4B9..C4D3 ; LVT # Lo [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH
-C4D5..C4EF ; LVT # Lo [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH
-C4F1..C50B ; LVT # Lo [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH
-C50D..C527 ; LVT # Lo [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH
-C529..C543 ; LVT # Lo [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH
-C545..C55F ; LVT # Lo [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH
-C561..C57B ; LVT # Lo [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH
-C57D..C597 ; LVT # Lo [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH
-C599..C5B3 ; LVT # Lo [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH
-C5B5..C5CF ; LVT # Lo [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH
-C5D1..C5EB ; LVT # Lo [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH
-C5ED..C607 ; LVT # Lo [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH
-C609..C623 ; LVT # Lo [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH
-C625..C63F ; LVT # Lo [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH
-C641..C65B ; LVT # Lo [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH
-C65D..C677 ; LVT # Lo [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH
-C679..C693 ; LVT # Lo [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH
-C695..C6AF ; LVT # Lo [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH
-C6B1..C6CB ; LVT # Lo [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH
-C6CD..C6E7 ; LVT # Lo [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH
-C6E9..C703 ; LVT # Lo [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH
-C705..C71F ; LVT # Lo [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH
-C721..C73B ; LVT # Lo [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH
-C73D..C757 ; LVT # Lo [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH
-C759..C773 ; LVT # Lo [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH
-C775..C78F ; LVT # Lo [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH
-C791..C7AB ; LVT # Lo [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH
-C7AD..C7C7 ; LVT # Lo [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH
-C7C9..C7E3 ; LVT # Lo [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH
-C7E5..C7FF ; LVT # Lo [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH
-C801..C81B ; LVT # Lo [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH
-C81D..C837 ; LVT # Lo [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH
-C839..C853 ; LVT # Lo [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH
-C855..C86F ; LVT # Lo [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH
-C871..C88B ; LVT # Lo [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH
-C88D..C8A7 ; LVT # Lo [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH
-C8A9..C8C3 ; LVT # Lo [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH
-C8C5..C8DF ; LVT # Lo [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH
-C8E1..C8FB ; LVT # Lo [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH
-C8FD..C917 ; LVT # Lo [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH
-C919..C933 ; LVT # Lo [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH
-C935..C94F ; LVT # Lo [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH
-C951..C96B ; LVT # Lo [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH
-C96D..C987 ; LVT # Lo [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH
-C989..C9A3 ; LVT # Lo [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH
-C9A5..C9BF ; LVT # Lo [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH
-C9C1..C9DB ; LVT # Lo [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH
-C9DD..C9F7 ; LVT # Lo [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH
-C9F9..CA13 ; LVT # Lo [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH
-CA15..CA2F ; LVT # Lo [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH
-CA31..CA4B ; LVT # Lo [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH
-CA4D..CA67 ; LVT # Lo [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH
-CA69..CA83 ; LVT # Lo [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH
-CA85..CA9F ; LVT # Lo [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH
-CAA1..CABB ; LVT # Lo [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH
-CABD..CAD7 ; LVT # Lo [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH
-CAD9..CAF3 ; LVT # Lo [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH
-CAF5..CB0F ; LVT # Lo [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH
-CB11..CB2B ; LVT # Lo [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH
-CB2D..CB47 ; LVT # Lo [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH
-CB49..CB63 ; LVT # Lo [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH
-CB65..CB7F ; LVT # Lo [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH
-CB81..CB9B ; LVT # Lo [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH
-CB9D..CBB7 ; LVT # Lo [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH
-CBB9..CBD3 ; LVT # Lo [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH
-CBD5..CBEF ; LVT # Lo [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH
-CBF1..CC0B ; LVT # Lo [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH
-CC0D..CC27 ; LVT # Lo [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH
-CC29..CC43 ; LVT # Lo [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH
-CC45..CC5F ; LVT # Lo [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH
-CC61..CC7B ; LVT # Lo [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH
-CC7D..CC97 ; LVT # Lo [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH
-CC99..CCB3 ; LVT # Lo [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH
-CCB5..CCCF ; LVT # Lo [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH
-CCD1..CCEB ; LVT # Lo [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH
-CCED..CD07 ; LVT # Lo [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH
-CD09..CD23 ; LVT # Lo [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH
-CD25..CD3F ; LVT # Lo [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH
-CD41..CD5B ; LVT # Lo [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH
-CD5D..CD77 ; LVT # Lo [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH
-CD79..CD93 ; LVT # Lo [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH
-CD95..CDAF ; LVT # Lo [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH
-CDB1..CDCB ; LVT # Lo [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH
-CDCD..CDE7 ; LVT # Lo [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH
-CDE9..CE03 ; LVT # Lo [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH
-CE05..CE1F ; LVT # Lo [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH
-CE21..CE3B ; LVT # Lo [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH
-CE3D..CE57 ; LVT # Lo [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH
-CE59..CE73 ; LVT # Lo [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH
-CE75..CE8F ; LVT # Lo [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH
-CE91..CEAB ; LVT # Lo [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH
-CEAD..CEC7 ; LVT # Lo [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH
-CEC9..CEE3 ; LVT # Lo [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH
-CEE5..CEFF ; LVT # Lo [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH
-CF01..CF1B ; LVT # Lo [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH
-CF1D..CF37 ; LVT # Lo [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH
-CF39..CF53 ; LVT # Lo [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH
-CF55..CF6F ; LVT # Lo [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH
-CF71..CF8B ; LVT # Lo [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH
-CF8D..CFA7 ; LVT # Lo [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH
-CFA9..CFC3 ; LVT # Lo [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH
-CFC5..CFDF ; LVT # Lo [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH
-CFE1..CFFB ; LVT # Lo [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH
-CFFD..D017 ; LVT # Lo [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH
-D019..D033 ; LVT # Lo [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH
-D035..D04F ; LVT # Lo [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH
-D051..D06B ; LVT # Lo [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH
-D06D..D087 ; LVT # Lo [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH
-D089..D0A3 ; LVT # Lo [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH
-D0A5..D0BF ; LVT # Lo [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH
-D0C1..D0DB ; LVT # Lo [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH
-D0DD..D0F7 ; LVT # Lo [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH
-D0F9..D113 ; LVT # Lo [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH
-D115..D12F ; LVT # Lo [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH
-D131..D14B ; LVT # Lo [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH
-D14D..D167 ; LVT # Lo [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH
-D169..D183 ; LVT # Lo [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH
-D185..D19F ; LVT # Lo [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH
-D1A1..D1BB ; LVT # Lo [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH
-D1BD..D1D7 ; LVT # Lo [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH
-D1D9..D1F3 ; LVT # Lo [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH
-D1F5..D20F ; LVT # Lo [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH
-D211..D22B ; LVT # Lo [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH
-D22D..D247 ; LVT # Lo [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH
-D249..D263 ; LVT # Lo [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH
-D265..D27F ; LVT # Lo [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH
-D281..D29B ; LVT # Lo [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH
-D29D..D2B7 ; LVT # Lo [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH
-D2B9..D2D3 ; LVT # Lo [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH
-D2D5..D2EF ; LVT # Lo [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH
-D2F1..D30B ; LVT # Lo [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH
-D30D..D327 ; LVT # Lo [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH
-D329..D343 ; LVT # Lo [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH
-D345..D35F ; LVT # Lo [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH
-D361..D37B ; LVT # Lo [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH
-D37D..D397 ; LVT # Lo [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH
-D399..D3B3 ; LVT # Lo [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH
-D3B5..D3CF ; LVT # Lo [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH
-D3D1..D3EB ; LVT # Lo [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH
-D3ED..D407 ; LVT # Lo [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH
-D409..D423 ; LVT # Lo [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH
-D425..D43F ; LVT # Lo [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH
-D441..D45B ; LVT # Lo [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH
-D45D..D477 ; LVT # Lo [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH
-D479..D493 ; LVT # Lo [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH
-D495..D4AF ; LVT # Lo [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH
-D4B1..D4CB ; LVT # Lo [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH
-D4CD..D4E7 ; LVT # Lo [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH
-D4E9..D503 ; LVT # Lo [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH
-D505..D51F ; LVT # Lo [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH
-D521..D53B ; LVT # Lo [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH
-D53D..D557 ; LVT # Lo [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH
-D559..D573 ; LVT # Lo [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH
-D575..D58F ; LVT # Lo [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH
-D591..D5AB ; LVT # Lo [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH
-D5AD..D5C7 ; LVT # Lo [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH
-D5C9..D5E3 ; LVT # Lo [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH
-D5E5..D5FF ; LVT # Lo [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH
-D601..D61B ; LVT # Lo [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH
-D61D..D637 ; LVT # Lo [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH
-D639..D653 ; LVT # Lo [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH
-D655..D66F ; LVT # Lo [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH
-D671..D68B ; LVT # Lo [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH
-D68D..D6A7 ; LVT # Lo [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH
-D6A9..D6C3 ; LVT # Lo [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH
-D6C5..D6DF ; LVT # Lo [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH
-D6E1..D6FB ; LVT # Lo [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH
-D6FD..D717 ; LVT # Lo [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH
-D719..D733 ; LVT # Lo [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH
-D735..D74F ; LVT # Lo [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH
-D751..D76B ; LVT # Lo [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH
-D76D..D787 ; LVT # Lo [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH
-D789..D7A3 ; LVT # Lo [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH
-
-# Total code points: 10773
diff --git a/Master/tlpkg/tlperl/lib/unicore/Index.txt b/Master/tlpkg/tlperl/lib/unicore/Index.txt
deleted file mode 100644
index c55a1f8bca4..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/Index.txt
+++ /dev/null
@@ -1,4307 +0,0 @@
-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, COMBINING LATIN SMALL LETTER 0363
-a, latin small letter script 0251
-A, LATIN SMALL LETTER TURNED 0250
-ABBREVIATION MARK, ARMENIAN 055F
-ABBREVIATION MARK, SYRIAC 070F
-ABBREVIATION SIGN, DEVANAGARI 0970
-Abbreviations, Squared Latin 3371
-Aboriginal Syllabics, Unified Canadian 1400
-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 WIDE BRIDGE 20E9
-ABOVE, COMBINING X 033D
-ABOVE, DOT 02D9
-above, double dot 0308
-ABOVE, RING 02DA
-above, vee 030C
-ABOVE RIGHT, COMBINING COMMA 0315
-absolute continuity 2AA1
-ACCENT, ACUTE 00B4
-ACCENT, ALMOST EQUAL TO WITH CIRCUMFLEX 2A6F
-ACCENT, CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX 2A36
-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
-ACCENT ABOVE, PLUS SIGN WITH CIRCUMFLEX 2A23
-ACCENT BELOW, COMBINING ACUTE 0317
-ACCENT BELOW, COMBINING CIRCUMFLEX 032D
-ACCENT BELOW, COMBINING GRAVE 0316
-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
-actuarial bend 20E7
-acute, spacing 00B4
-ACUTE ACCENT 00B4
-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 ACCENT BELOW, COMBINING 0317
-ACUTE ANGLE 299F
-ACUTE TONE MARK, COMBINING 0341
-ADDRESSED TO THE SUBJECT 2101
-Addu dialect, consonant for 0780
-AE, LATIN SMALL LETTER 00E6
-Aegean Numbers 10100
-AEGEAN CHECK MARK 10102
-AEGEAN WORD SEPARATOR DOT 10101
-AEGEAN WORD SEPARATOR LINE 10100
-Ainu, Phonetic Extensions For 31F0
-AIRPLANE 2708
-aldus leaf 2766
-ALEF SYMBOL 2135
-ALL, FOR 2200
-ALL AROUND-PROFILE 232E
-ALL EQUAL TO 224C
-ALMOST EQUAL TO 2248
-ALMOST EQUAL TO, PRECEDES ABOVE 2AB7
-ALMOST EQUAL TO, PRECEDES ABOVE NOT 2AB9
-ALMOST EQUAL TO, SUBSET OF ABOVE 2AC9
-ALMOST EQUAL TO, SUCCEEDS ABOVE 2AB8
-ALMOST EQUAL TO, SUCCEEDS ABOVE NOT 2ABA
-ALMOST EQUAL TO, SUPERSET OF ABOVE 2ACA
-ALMOST EQUAL TO ABOVE, COMBINING 034C
-ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT 2A6F
-ALPHA, LATIN SMALL LETTER 0251
-ALPHA, LATIN SMALL LETTER TURNED 0252
-Alphabetic Presentation Forms FB00
-Alphanumerics, Enclosed 2460
-alternating current 223F
-ALTERNATION MARK, PART 303D
-ALTERNATIVE KEY SYMBOL 2387
-ALVEOLAR CLICK, LATIN LETTER 01C2
-always (modal operator) 25FB
-always (modal operator), was 27E4
-always be (modal operator), will 27E5
-AMALGAMATION OR COPRODUCT 2A3F
-AMPERSAND 0026
-AMPERSAND, TURNED 214B
-AND, CURLY LOGICAL 22CF
-AND, LOGICAL 2227
-AND, N-ARY LOGICAL 22C0
-andrew's, cross st. 2613
-Ands and Ors, Logical 2A51
-ANGLE 2220
-ANGLE, ACUTE 299F
-ANGLE, MEASURED 2221
-ANGLE, RIGHT 221F
-ANGLE, SPHERICAL 2222
-ANGLE, TURNED 29A2
-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, MATHEMATICAL LEFT 27E8
-ANGLE BRACKET, MATHEMATICAL LEFT DOUBLE 27EA
-ANGLE BRACKET, RIGHT-POINTING 232A
-ANGLE OPENING LEFT, SPHERICAL 29A0
-ANGLE OPENING UP, SPHERICAL 29A1
-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 Quotation Marks, Ornamental 276E
-ANGLE WITH ARC, RIGHT 22BE
-ANGLE WITH DOWNWARDS ZIGZAG ARROW, RIGHT 237C
-angled dash 00AC
-Angles and Measured Angles 299B
-ANGSTROM SIGN 212B
-ANKH 2625
-Annotation, Interlinear FFF9
-Annotation, Kanbun Ideographic 3190
-Annotation Signs, Koranic 06D6
-ANNUITY SYMBOL, COMBINING 20E7
-ano teleia 00B7
-ANTICLOCKWISE INTEGRATION 2A11
-ANTICLOCKWISE-ROTATED DIVISION SIGN, CIRCLED 29BC
-ANTIRESTRICTION, Z NOTATION DOMAIN 2A64
-ANTIRESTRICTION, Z NOTATION RANGE 2A65
-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, FUNCTION 2061
-application program command 009F
-APPROACHES THE LIMIT 2250
-APPROXIMATE, GREATER-THAN AND NOT 2A8A
-APPROXIMATE, GREATER-THAN OR 2A86
-APPROXIMATE, LESS-THAN AND NOT 2A89
-APPROXIMATE, LESS-THAN OR 2A85
-APPROXIMATELY EQUAL OR EQUAL TO 2A70
-APPROXIMATELY EQUAL TO 2245
-approximately equal to 2257
-AQUARIUS 2652
-Arabic 0600
-Arabic, Extended 0671
-ARABIC COMMA 060C
-ARABIC DECIMAL SEPARATOR 066B
-ARABIC END OF AYAH 06DD
-ARABIC FIVE POINTED STAR 066D
-ARABIC FOOTNOTE MARKER 0602
-ARABIC FORM SHAPING, ACTIVATE 206D
-ARABIC FORM SHAPING, INHIBIT 206C
-ARABIC FULL STOP 06D4
-Arabic Honorifics 0610
-ARABIC LETTER DOTLESS BEH 066E
-ARABIC LETTER DOTLESS QAF 066F
-Arabic Letters 0627
-ARABIC NUMBER SIGN 0600
-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 SIGN SAFHA 0603
-ARABIC SIGN SANAH 0601
-Arabic Poetic Marks 0610
-Arabic Subtending Marks 0600
-ARABIC TAIL FRAGMENT FE73
-ARABIC THOUSANDS SEPARATOR 066C
-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, BLACK CIRCLE WITH DOWN 29ED
-ARROW, BLACK DIAMOND WITH DOWN 29EA
-arrow, colon right 29F4
-ARROW, ELECTRIC 2301
-ARROW, RIGHT ANGLE WITH DOWNWARDS ZIGZAG 237C
-ARROW, WHITE CIRCLE WITH DOWN 29EC
-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 OVERLAY, COMBINING LEFTWARDS 20EA
-ARROW THROUGH CIRCLE, UP 29BD
-ARROW WITH HOOK, INTEGRAL WITH LEFTWARDS 2A17
-ARROWHEAD, UP 2303
-Arrowheads, Modifier Letter 02C2
-Arrows 2190
-Arrows, Long 27F5
-Arrows, Other White and Black 2B00
-arrows extension 23AF
-Arrows-A, Supplemental 27F0
-Arrows-B, Supplemental 2900
-ASCENDING NODE 260A
-ASCII 0020
-ASCII C0 Control Codes 0000
-ASCII Digits 0030
-ASCII Variants, Fullwidth FF01
-ash 00E6
-ASSERTION 22A6
-ASTERISK 002A
-ASTERISK, EQUALS WITH 2A6E
-ASTERISK, LOW 204E
-ASTERISK, SQUARED 29C6
-Asterisk Dingbats 2722
-ASTERISK OPERATOR 2217
-ASTERISK OPERATOR, CIRCLED 229B
-ASTERISKS ALIGNED VERTICALLY, TWO 2051
-Asterisks and Snowflakes, Stars, 2721
-ASTERISM 2042
-Astrological Symbols 263D
-asymptotic to 2248
-ASYMPTOTICALLY EQUAL TO 2243
-AT, COMMERCIAL 0040
-AVERAGE WITH SLASH, INTEGRAL 2A0F
-AYAH, ARABIC END OF 06DD
-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
-bag bracket, z notation left 27E6
-BAG MEMBERSHIP, Z NOTATION 22FF
-bag subtraction, z notation 2A41
-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, broken vertical 00A6
-BAR, CIRCLED VERTICAL 29B6
-BAR, HORIZONTAL 2015
-BAR, N-ARY WHITE VERTICAL 2AFF
-bar, vertical 007C
-BAR, WHITE VERTICAL 2AFE
-BAR BINARY RELATION, TRIPLE VERTICAL 2AF4
-BAR DELIMITER, TRIPLE VERTICAL 2980
-Bar Dingbats, Vertical 2758
-BAR OPERATOR, LARGE TRIPLE VERTICAL 2AFC
-Bar Symbols, Error 29EE
-BAR WITH DOUBLE VERTICAL STROKE, TRIPLE HORIZONTAL 2A68
-BAR WITH HORIZONTAL STROKE, TRIPLE VERTICAL 2AF5
-BAR WITH TRIPLE VERTICAL STROKE, TRIPLE HORIZONTAL 2A69
-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 FOR 2407
-BELL SYMBOL 237E
-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
-bend, actuarial 20E7
-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 263A
-BETWEEN 226C
-BEVERAGE, HOT 2615
-BIDENTAL PERCUSSIVE, LATIN LETTER 02AD
-Bidirectional Formatting Controls 202A
-Big 5, Duplicates from FA0C
-BIG REVERSE SOLIDUS 29F9
-BIG SOLIDUS 29F8
-bijection, z notation 2917
-bijective mapping 2916
-BILABIAL CLICK, LATIN LETTER 0298
-BILABIAL PERCUSSIVE, LATIN LETTER 02AC
-BINARY RELATION, TRIPLE SOLIDUS 2AFB
-BINARY RELATION, TRIPLE VERTICAL BAR 2AF4
-BIOHAZARD SIGN 2623
-BLACK, BOWTIE WITH LEFT HALF 29D1
-BLACK, BOWTIE WITH RIGHT HALF 29D2
-BLACK, DOWN-POINTING TRIANGLE WITH LEFT HALF 29E8
-BLACK, DOWN-POINTING TRIANGLE WITH RIGHT HALF 29E9
-BLACK, TIMES WITH LEFT HALF 29D4
-BLACK, TIMES WITH RIGHT HALF 29D5
-BLACK BOWTIE 29D3
-BLACK CIRCLE WITH DOWN ARROW 29ED
-BLACK CIRCLE WITH TWO WHITE DOTS 2689
-BLACK CIRCLE WITH WHITE DOT RIGHT 2688
-Black Circled Numbers, White On 24EB
-BLACK DIAMOND WITH DOWN ARROW 29EA
-BLACK FLAG 2691
-BLACK HOURGLASS 29D7
-BLACK LEFT POINTING INDEX 261A
-BLACK LEFTWARDS BULLET 204C
-BLACK LENTICULAR BRACKET, LEFT 3010
-BLACK LOZENGE 29EB
-BLACK MEDIUM SMALL SQUARE 25FE
-BLACK MEDIUM SQUARE 25FC
-BLACK NIB 2712
-BLACK PARALLELOGRAM 25B0
-BLACK SCISSORS 2702
-BLACK SHOGI PIECE 2617
-black small circle 2022
-BLACK SMILING FACE 263B
-BLACK STAR 2605
-BLACK SUN WITH RAYS 2600
-BLACK TELEPHONE 260E
-BLACK TRIANGLE, PLUS SIGN WITH 2A28
-BLACK UNIVERSAL RECYCLING SYMBOL 267B
-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, end of transmission 0017
-BLOCK, SYMBOL FOR END OF TRANSMISSION 2417
-Block Elements 2580
-bom FEFF
-Bopomofo, Chinese 3100
-Bopomofo Extended for Minnan and Hakka, Chinese 31A0
-BOWTIE 22C8
-bowtie, large 2A1D
-Bowtie Symbols 29D1
-BOX, BALLOT 2610
-BOX, OPEN 2423
-BOX, SHOULDERED OPEN 237D
-BOX, X IN A RECTANGLE 2327
-Box Drawing 2500
-BOX LINE, LEFT VERTICAL 23B8
-BOX LINE, RIGHT VERTICAL 23B9
-BOX OPERATOR, SQUARE LEFT OPEN 2ACD
-BOX OPERATOR, SQUARE RIGHT OPEN 2ACE
-BOX WITH CHECK, BALLOT 2611
-BOX WITH X, BALLOT 2612
-bra 27E6
-brace, closing 007D
-brace, opening 007B
-bracket, z notation left bag 27E6
-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
-Bracket Pieces 239B
-Bracket Pieces 23B0
-BRACKET WITH QUILL, LEFT SQUARE 2045
-Brackets 2983
-Brackets, CJK Angle 3008
-Brackets, Corner 2308
-Brackets, CJK Corner 300C
-Brackets, CJK 3010
-Brackets, CJK 3014
-Brackets, Fullwidth FF5F
-Brackets, Mathematical 27E6
-Brackets, Ornamental 2768
-Brackets, Ornamental 2770
-Brackets, Vertical 23B4
-Braille Patterns 2800
-brazilian currency 20A2
-break here, no 0083
-break permitted here 0082
-breathing, rough 0314
-breathing, smooth 0313
-BREVE 02D8
-BREVE, COMBINING 0306
-BREVE, COMBINING DOUBLE INVERTED 0361
-BREVE, COMBINING INVERTED 0311
-BREVE BELOW, COMBINING 032E
-BREVE BELOW, COMBINING INVERTED 032F
-BRIDGE ABOVE, COMBINING 0346
-BRIDGE ABOVE, COMBINING WIDE 20E9
-BRIDGE BELOW, COMBINING 032A
-BRIDGE BELOW, COMBINING INVERTED 033A
-broken vertical bar 00A6
-Buhid 1740
-BULLET 2022
-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
-BULLET OPERATOR 2219
-BULLSEYE 25CE
-bullseye, latin letter 0298
-BUMPY ABOVE, EQUALS SIGN WITH 2AAE
-BY, MEASURED 225E
-by definition, equal to 225C
-BY DEFINITION, EQUAL TO 225D
-byte order mark FEFF
-C, BLACK-LETTER CAPITAL 212D
-C, COMBINING LATIN SMALL LETTER 0368
-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, SYMBOL FOR 2418
-cancel character 0094
-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, COMBINING 030C
-CARON BELOW, COMBINING 032C
-carriage return 000D
-carriage return 21B5
-CARRIAGE RETURN, SYMBOL FOR 240D
-CAUTION SIGN 2621
-CEDILLA 00B8
-CEDILLA, COMBINING 0327
-cedilla, spacing 00B8
-cedilla above 0312
-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
-cgj 034F
-character introducer, single 009A
-character tabulation set 0088
-character tabulation with justification 0089
-CHARACTER TIE 2040
-Chart Components, Form and 2500
-CHECK, BALLOT BOX WITH 2611
-CHECK MARK 2713
-CHECK MARK, AEGEAN 10102
-CHECK MARK, HEAVY 2714
-CHECK MARK, NOT 237B
-Cherokee 13A0
-Chess Pieces 2654
-Chess Symbols, Japanese 2616
-chevrons 00AB
-CHI RHO 2627
-Chinese Bopomofo 3100
-Chinese Bopomofo Extended for Minnan and Hakka 31A0
-choice, dijkstra 2AFE
-choice, n-ary dijkstra 2AFF
-CIRCLE, BLACK 25CF
-circle, black small 2022
-CIRCLE, COMBINING ENCLOSING 20DD
-CIRCLE, DOTTED 25CC
-circle, jis composition 20DD
-CIRCLE, LARGE 25EF
-CIRCLE, MULTIPLICATION SIGN IN DOUBLE 2A37
-CIRCLE, MULTIPLICATION SIGN IN LEFT HALF 2A34
-CIRCLE, MULTIPLICATION SIGN IN RIGHT HALF 2A35
-CIRCLE, PLUS SIGN IN LEFT HALF 2A2D
-CIRCLE, PLUS SIGN IN RIGHT HALF 2A2E
-CIRCLE, SQUARED SMALL 29C7
-CIRCLE ABOVE, PLUS SIGN WITH SMALL 2A22
-CIRCLE ABOVE, UP TACK WITH 27DF
-CIRCLE ABOVE, VERTICAL LINE WITH 2AEF
-CIRCLE BACKSLASH, COMBINING ENCLOSING 20E0
-CIRCLE BELOW, DOWN TACK WITH 2AF1
-CIRCLE BELOW, VERTICAL LINE WITH 2AF0
-CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR 29BA
-CIRCLE INSIDE, GREATER-THAN WITH 2A7A
-CIRCLE INSIDE, LESS-THAN WITH 2A79
-Circle Symbols 29B5
-CIRCLE WITH DOT RIGHT, WHITE 2686
-CIRCLE WITH DOWN ARROW, BLACK 29ED
-CIRCLE WITH DOWN ARROW, WHITE 29EC
-CIRCLE WITH TWO DOTS, WHITE 2687
-CIRCLE WITH TWO WHITE DOTS, BLACK 2689
-CIRCLE WITH WHITE DOT RIGHT, BLACK 2688
-CIRCLED ASTERISK OPERATOR 229B
-CIRCLED DASH 229D
-CIRCLED DIGIT ZERO 24EA
-Circled Digits, Dingbat 2776
-CIRCLED DIVISION SIGN 2A38
-CIRCLED DIVISION SLASH 2298
-CIRCLED DOT OPERATOR 2299
-CIRCLED DOT OPERATOR, N-ARY 2A00
-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 MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT 2A36
-Circled Numbers 2460
-Circled Numbers 3251
-Circled Numbers 32B1
-Circled Numbers, Double 24F5
-Circled Numbers, White On Black 24EB
-CIRCLED PLUS 2295
-CIRCLED PLUS OPERATOR, N-ARY 2A01
-CIRCLED POSTAL MARK 3036
-CIRCLED RING OPERATOR 229A
-CIRCLED TIMES 2297
-CIRCLED TIMES OPERATOR, N-ARY 2A02
-Circles 25CB
-CIRCULATION FUNCTION 2A10
-circumflex, spacing 005E
-CIRCUMFLEX ACCENT 005E
-CIRCUMFLEX ACCENT, ALMOST EQUAL TO WITH 2A6F
-CIRCUMFLEX ACCENT, CIRCLED MULTIPLICATION SIGN WITH 2A36
-CIRCUMFLEX ACCENT, COMBINING 0302
-CIRCUMFLEX ACCENT, MODIFIER LETTER 02C6
-CIRCUMFLEX ACCENT ABOVE, PLUS SIGN WITH 2A23
-CIRCUMFLEX ACCENT BELOW, COMBINING 032D
-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
-CLOSE UP 2050
-closed epsilon, latin small letter 029A
-CLOSED INTERSECTION WITH SERIFS 2A4D
-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
-CLOSED SUBSET 2ACF
-CLOSED SUBSET OR EQUAL TO 2AD1
-CLOSED SUPERSET 2AD0
-CLOSED SUPERSET OR EQUAL TO 2AD2
-CLOSED UNION WITH SERIFS 2A4C
-CLOSED UNION WITH SERIFS AND SMASH PRODUCT 2A50
-closing brace 007D
-closing curly bracket 007D
-CLOSING MARK, IDEOGRAPHIC 3006
-closing parenthesis 0029
-closing square bracket 005D
-CLOUD 2601
-cloudy weather 2601
-Codes, Process Internal FDD0
-coffee 2615
-COLON 003A
-COLON, ETHIOPIC 1365
-COLON, MODIFIER LETTER HALF TRIANGULAR 02D1
-COLON, MODIFIER LETTER TRIANGULAR 02D0
-COLON, MONGOLIAN 1804
-COLON, Z NOTATION TYPE 2982
-COLON EQUAL, DOUBLE 2A74
-COLON EQUALS 2254
-COLON OPERATOR, TRIPLE 2AF6
-colon right arrow 29F4
-COLON SIGN 20A1
-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 ANNUITY SYMBOL 20E7
-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 DOUBLE VERTICAL STROKE OVERLAY 20E6
-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 ENCLOSING UPWARD POINTING TRIANGLE 20E4
-COMBINING EQUALS SIGN BELOW 0347
-COMBINING FOUR DOTS ABOVE 20DC
-COMBINING GRAPHEME JOINER 034F
-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 Latin Small Letters 0363
-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 LEFTWARDS ARROW OVERLAY 20EA
-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 REVERSE SOLIDUS OVERLAY 20E5
-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 TRIPLE UNDERDOT 20E8
-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 WIDE BRIDGE ABOVE 20E9
-COMBINING X ABOVE 033D
-COMET 2604
-COMMA 002C
-COMMA, ARABIC 060C
-COMMA, ARMENIAN 055D
-COMMA, ETHIOPIC 1363
-comma, georgian 00B7
-COMMA, IDEOGRAPHIC 3001
-comma, invisible 2063
-COMMA, MODIFIER LETTER REVERSED 02BD
-COMMA, MODIFIER LETTER TURNED 02BB
-COMMA, MONGOLIAN 1802
-COMMA ABOVE, COMBINING 0313
-COMMA ABOVE, COMBINING REVERSED 0314
-COMMA ABOVE, COMBINING TURNED 0312
-COMMA ABOVE, MINUS SIGN WITH 2A29
-COMMA ABOVE RIGHT, COMBINING 0315
-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
-command, application program 009F
-command, operating system 009D
-command key 2318
-COMMERCIAL AT 0040
-COMMERCIAL MINUS SIGN 2052
-compass 263C
-Compatibility, CJK 3300
-Compatibility and Specials Area F900
-Compatibility Forms, CJK FE30
-Compatibility Ideographs, CJK F900
-Compatibility Ideographs, IBM CJK FA0E
-Compatibility Jamo, Korean Hangul 3130
-COMPLEMENT 2201
-complex numbers, the set of 2102
-component, radial 27DF
-Components, Form and Chart 2500
-composite function 2218
-COMPOSITION, Z NOTATION RELATIONAL 2A3E
-COMPOSITION, Z NOTATION SCHEMA 2A1F
-composition circle, jis 20DD
-COMPOSITION SYMBOL 2384
-concatenation, z notation sequence 2040
-CONCAVE-SIDED DIAMOND, WHITE 27E1
-CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK, WHITE 27E2
-CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK, WHITE 27E3
-conductance 2127
-CONGRUENT WITH DOT ABOVE 2A6D
-CONICAL TAPER 2332
-CONJUGATE MATRIX, HERMITIAN 22B9
-conjunction 2227
-CONJUNCTION 260C
-CONSECUTIVE EQUALS SIGNS, THREE 2A76
-CONSECUTIVE EQUALS SIGNS, TWO 2A75
-consonant for Addu dialect 0780
-CONTAINS AS MEMBER 220B
-CONTAINS AS MEMBER, SMALL 220D
-CONTAINS AS NORMAL SUBGROUP 22B3
-CONTAINS WITH LONG HORIZONTAL STROKE 22FA
-CONTAINS WITH OVERBAR 22FD
-CONTAINS WITH OVERBAR, SMALL 22FE
-CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE 22FB
-CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE, SMALL 22FC
-continuity, absolute 2AA1
-CONTINUOUS UNDERLINE SYMBOL 2381
-continuum, second transfinite cardinal 2136
-CONTOUR INTEGRAL 222E
-CONTOUR INTEGRAL, CLOCKWISE 2232
-CONTOURED OUTLINE, SQUARE WITH 29E0
-contraction operator 20E9
-control, graphic for 2388
-Control, Syriac Format 070F
-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
-Controls, Bidirectional Formatting 202A
-Controls, Mongolian Format 180B
-Controls and Basic Latin, C0 0000
-Controls and Latin-1 Supplement, C1 0080
-COPRODUCT, AMALGAMATION OR 2A3F
-COPRODUCT, N-ARY 2210
-Coptic, Greek and 0370
-Coptic-unique Letters 03E2
-COPYRIGHT, SOUND RECORDING 2117
-COPYRIGHT SIGN 00A9
-CORNER, TOP LEFT 231C
-CORNER BRACKET, LEFT 300C
-CORNER BRACKET, LEFT WHITE 300E
-Corner brackets 2308
-Corner brackets, CJK 300C
-CORNER WITH DOT, LOWER RIGHT 27D3
-CORNER WITH DOT, UPPER LEFT 27D4
-corners, Quine 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, Additions for Slovenian and 0200
-Croatian Digraphs Matching Serbian Cyrillic Letters 01C4
-CROP, TOP LEFT 230F
-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
-CROSS ACCENT, MODIFIER LETTER 02DF
-Cross Dingbats 2719
-CROSS OF JERUSALEM 2629
-CROSS OF LORRAINE 2628
-CROSS PRODUCT, VECTOR OR 2A2F
-cross ratio 211E
-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, 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, iranian FDFC
-currency, israeli 20AA
-currency, italian 20A4
-currency, korean 20A9
-currency, laotian 20AD
-currency, mongolian 20AE
-currency, nigerian 20A6
-currency, phillipine 20B1
-currency, spanish 20A7
-currency, turkish 20A4
-currency, vietnamese 20AB
-CURRENCY SIGN 00A4
-Currency Signs, Bengali 09F2
-currency symbol, florin 0192
-CURRENCY SYMBOL BAHT, THAI 0E3F
-Currency Symbols 20A0
-current, alternating 223F
-CURRENT SYMBOL FORM TWO, DIRECT 2393
-cycle 223C
-CYLINDRICITY 232D
-Cypriot Syllabary 10800
-Cyrillic 0400
-Cyrillic, Extended 048C
-Cyrillic Capital Letters 0401
-Cyrillic Combining Characters 0483
-Cyrillic Extensions 0450
-Cyrillic Historic Letters 0460
-Cyrillic Komi Letters 0500
-Cyrillic Small Letters 0430
-Cyrillic Supplementary 0500
-D, COMBINING LATIN SMALL LETTER 0369
-D, DOUBLE-STRUCK ITALIC CAPITAL 2145
-D, DOUBLE-STRUCK ITALIC SMALL 2146
-D, LATIN CAPITAL LETTER AFRICAN 0189
-d retroflex hook, latin small letter 0256
-D WITH TAIL, LATIN SMALL LETTER 0256
-DAGGER 2020
-DAGGER, DOUBLE 2021
-d'alembertian 29E0
-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 2053
-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
-Database Theory Operators 27D5
-DAVID, STAR OF 2721
-Days, Telegraph Symbols for 33E0
-DAY SIGN, TAMIL 0BF3
-decimal point 002E
-decimal separator 002C
-DECIMAL SEPARATOR, ARABIC 066B
-DECIMAL SEPARATOR KEY SYMBOL 2396
-deergh viram 0965
-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, SYMBOL FOR 2421
-delete, undoable 2425
-DELETE FORM TWO, SYMBOL FOR 2425
-delete to the left key 232B
-delete to the right key 2326
-DELIMITER, TRIPLE VERTICAL BAR 2980
-DELTA, LATIN SMALL LETTER TURNED 018D
-DELTA EQUAL TO 225C
-DENTAL CLICK, LATIN LETTER 01C0
-Dentistry Notation Symbols 23BE
-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, Combining 0300
-Diacritical Marks for Symbols, Combining 20D0
-Diacritics, Double 0360
-Diacritics, Enclosing 20DD
-Diacritics, Medieval Superscript Letter 0363
-Diacritics, Overstruck 0334
-Diacritics, Spacing Clones of 02D8
-Diacritics for Greek 0342
-Diacritics for IPA 0346
-DIAERESIS 00A8
-DIAERESIS, COMBINING 0308
-diaeresis, greek capital letter upsilon hook 03D4
-diaeresis, spacing 00A8
-DIAERESIS AND HOOK SYMBOL, GREEK UPSILON WITH 03D4
-DIAERESIS BELOW, COMBINING 0324
-DIAGONAL ELLIPSIS, UP RIGHT 22F0
-DIAGONAL SLASH, SQUARED FALLING 29C5
-DIAGONAL SLASH, SQUARED RISING 29C4
-dialytika 0308
-DIALYTIKA TONOS, COMBINING GREEK 0344
-DIAMETER SIGN 2300
-diameter symbol 2205
-DIAMOND, COMBINING ENCLOSING 20DF
-DIAMOND, WHITE CONCAVE-SIDED 27E1
-DIAMOND OPERATOR 22C4
-DIAMOND WITH CENTRED DOT, WHITE 27D0
-DIAMOND WITH DOWN ARROW, BLACK 29EA
-DIAMOND WITH LEFTWARDS TICK, WHITE CONCAVE-SIDED 27E2
-DIAMOND WITH RIGHTWARDS TICK, WHITE CONCAVE-SIDED 27E3
-Diamonds 25C6
-Dice 2680
-diesis 2021
-difference, backward 2207
-difference, forward 2206
-difference, sum or positive 2A26
-difference, symmetric 2238
-difference, symmetric 2296
-difference between 223C
-DIFFERENCE BETWEEN 224F
-difference or sum, positive 2A24
-DIFFERENTIAL, PARTIAL 2202
-DIGIT SHAPES, NATIONAL 206E
-DIGIT SHAPES, NOMINAL 206F
-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, Osmanya 104A0
-Digits, Subscript 2080
-Digits, Superscript 2070
-Digits, Tamil 0BE7
-Digits, Telugu 0C66
-Digits, Thai 0E50
-Digits, Tibetan 0F20
-Digits for Persian and Urdu, Eastern Arabic-Indic 06F0
-DIGRAPH KOTO, KATAKANA 30FF
-DIGRAPH YORI, HIRAGANA 309F
-Digraphs, Phonetic 02A3
-Digraphs, Yiddish 05F0
-Digraphs Matching Serbian Cyrillic Letters, Croatian 01C4
-Digram Symbols, Yijing Monogram and 268A
-Digram Symbols, Tai Xuan Jing 1D301
-dijkstra choice 2AFE
-dijkstra choice, n-ary 2AFF
-DIMENSION ORIGIN 2331
-Dingbat Circled Digits 2776
-Dingbats 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
-Dingbats Series 100, ITC Zapf 2700
-DIRECT CURRENT SYMBOL FORM TWO 2393
-direct product 2299
-direct sum 2295
-DIRECTIONAL FORMATTING, POP 202C
-Directional Formatting Controls 202A
-DISCONTINUOUS UNDERLINE SYMBOL 2382
-discretionary hyphen 00AD
-disjunction 2228
-DITTO MARK 3003
-DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR, CIRCLE 29BA
-DIVIDED BY HORIZONTAL RULE, LOZENGE 27E0
-DIVIDED BY VERTICAL BAR, CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF 29BA
-DIVIDES 2223
-Divination Lore, Khmer Symbols for 17F0
-DIVISION SIGN 00F7
-DIVISION SIGN, CIRCLED 2A38
-DIVISION SIGN, CIRCLED ANTICLOCKWISE-ROTATED 29BC
-Division Sign Operators, Multiplication and 2A2F
-DIVISION SLASH 2215
-DIVISION SLASH, CIRCLED 2298
-DIVISION TIMES 22C7
-DOES NOT DIVIDE WITH REVERSED NEGATION SLASH 2AEE
-does not yield 22A3
-DOLLAR SIGN 0024
-DOMAIN ANTIRESTRICTION, Z NOTATION 2A64
-DONG SIGN 20AB
-dot 002E
-DOT, AEGEAN LINE SEPARATOR 10101
-dot, greek middle 00B7
-DOT, KATAKANA MIDDLE 30FB
-DOT, MIDDLE 00B7
-DOT, SESAME FE45
-DOT, WHITE SESAME FE46
-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, N-ARY CIRCLED 2A00
-DOT OPERATOR, SQUARED 22A1
-DOT PLUS 2214
-DOTLESS BEH, ARABIC LETTER 066E
-DOTLESS I, LATIN SMALL LETTER 0131
-DOTLESS QAF, ARABIC LETTER 066F
-DOTS ABOVE, COMBINING FOUR 20DC
-DOTS ABOVE, COMBINING THREE 20DB
-DOTTED CIRCLE 25CC
-DOTTED FENCE 2999
-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 CIRCLE, MULTIPLICATION SIGN IN 2A37
-Double Circled Numbers 24F5
-DOUBLE COLON EQUAL 2A74
-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 DOWN TACK 2AEA
-DOUBLE EXCLAMATION MARK 203C
-DOUBLE GRAVE ACCENT, COMBINING 030F
-DOUBLE HIGH-REVERSED-9 QUOTATION MARK 201F
-DOUBLE HYPHEN, KATAKANA-HIRAGANA 30A0
-DOUBLE INTEGRAL 222C
-DOUBLE INTERSECTION 22D2
-DOUBLE INVERTED BREVE, COMBINING 0361
-DOUBLE LEFT TURNSTILE, DOUBLE VERTICAL BAR 2AE5
-DOUBLE LEFT TURNSTILE, VERTICAL BAR 2AE4
-DOUBLE LOGICAL AND 2A53
-DOUBLE LOGICAL OR 2A54
-DOUBLE LOW LINE 2017
-DOUBLE LOW LINE, COMBINING 0333
-DOUBLE LOW-9 QUOTATION MARK 201E
-DOUBLE NESTED GREATER-THAN 2AA2
-DOUBLE NESTED LESS-THAN 2AA1
-DOUBLE NESTED LESS-THAN WITH UNDERBAR 2AA3
-double obelisk 2021
-DOUBLE OVERBAR, LOGICAL AND WITH 2A5E
-DOUBLE OVERBAR, LOGICAL OR WITH 2A62
-DOUBLE OVERLINE, COMBINING 033F
-double pipe 01C1
-DOUBLE PLUS 29FA
-DOUBLE PRECEDES 2ABB
-DOUBLE PRIME 2033
-DOUBLE PRIME, MODIFIER LETTER 02BA
-DOUBLE PRIME, REVERSED 2036
-DOUBLE PRIME QUOTATION MARK 301E
-DOUBLE PRIME QUOTATION MARK, LOW 301F
-DOUBLE PRIME QUOTATION MARK, REVERSED 301D
-DOUBLE PUNCTUATION, PHILIPPINE 1736
-Double punctuation for vertical text 2047
-DOUBLE QUESTION MARK 2047
-DOUBLE QUOTATION MARK, LEFT 201C
-DOUBLE QUOTATION MARK, RIGHT 201D
-double reversed comma quotation mark 201F
-DOUBLE RIGHTWARDS ARROW BELOW, COMBINING 0362
-DOUBLE SOLIDUS OPERATOR 2AFD
-DOUBLE SQUARE INTERSECTION 2A4E
-DOUBLE SQUARE UNION 2A4F
-DOUBLE STROKE, INTEGRAL WITH 2A0E
-DOUBLE STROKE NOT SIGN 2AEC
-DOUBLE STROKE NOT SIGN, REVERSED 2AED
-DOUBLE SUBSET 22D0
-DOUBLE SUCCEEDS 2ABC
-DOUBLE SUPERSET 22D1
-DOUBLE TILDE, COMBINING 0360
-DOUBLE TILDE LEFT HALF, COMBINING FE22
-double turned comma quotation mark 201C
-DOUBLE TURNSTILE, LEFT AND RIGHT 27DA
-DOUBLE UNDERBAR, LOGICAL AND WITH 2A60
-DOUBLE UNDERBAR, LOGICAL OR WITH 2A63
-double underline 0333
-double underscore 0333
-double underscore, spacing 2017
-DOUBLE UNION 22D3
-DOUBLE UP TACK 2AEB
-DOUBLE VERTICAL, LONG DASH FROM LEFT MEMBER OF 2AE6
-DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE 2AE5
-DOUBLE VERTICAL BAR LEFT TURNSTILE 2AE3
-DOUBLE VERTICAL LINE 2016
-DOUBLE VERTICAL LINE ABOVE, COMBINING 030E
-DOUBLE VERTICAL LINE BELOW, COMBINING 0348
-DOUBLE VERTICAL STROKE, RIGHTWARDS ARROW WITH TAIL WITH 2915
-DOUBLE VERTICAL STROKE, TRIPLE HORIZONTAL BAR WITH 2A68
-DOUBLE VERTICAL STROKE OVERLAY, COMBINING 20E6
-DOUBLE WAVY OVERLINE FE4C
-DOUBLE WIGGLY FENCE, LEFT 29DA
-DOUBLE WIGGLY FENCE, RIGHT 29DB
-double-barred pipe 01C2
-DOUBLE-ENDED MULTIMAP 29DF
-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
-Double-struck Greek Letters 213D
-Double-Struck Italic Mathematical Symbols 2145
-DOUBLE-STRUCK N-ARY SUMMATION 2140
-down, page 21DF
-DOWN TACK 22A4
-DOWN TACK BELOW, COMBINING 031E
-DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK 29E8
-DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK 29E9
-DRACHMA SIGN 20AF
-Drafting Symbols 232D
-dram 0292
-drop 264F
-Duplicates from Big 5 FA0C
-E, COMBINING LATIN SMALL LETTER 0364
-E, DOUBLE-STRUCK ITALIC SMALL 2147
-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
-EJECT SYMBOL 23CF
-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, unique 2129
-ELEMENT OF 2208
-ELEMENT OF, NOT AN 2209
-ELEMENT OF, SMALL 220A
-ELEMENT OF OPENING DOWNWARDS 2AD9
-ELEMENT OF OPENING UPWARDS 27D2
-ELEMENT OF WITH DOT ABOVE 22F5
-ELEMENT OF WITH LONG HORIZONTAL STROKE 22F2
-ELEMENT OF WITH OVERBAR 22F6
-ELEMENT OF WITH OVERBAR, SMALL 22F7
-ELEMENT OF WITH TWO HORIZONTAL STROKES 22F9
-ELEMENT OF WITH UNDERBAR 22F8
-ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE 22F3
-ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE, SMALL 22F4
-ell, mathematical symbol 2113
-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 Marks, Sidelining FE45
-EMPHASIS SYMBOL 2383
-EMPTY SET 2205
-Empty Sets 29B0
-EN DASH 2013
-EN QUAD 2000
-EN SPACE 2002
-Enclosed Alphanumerics 2460
-Enclosed CJK Letters and Ideographs 3200
-ENCLOSING CIRCLE, COMBINING 20DD
-ENCLOSING CIRCLE BACKSLASH, COMBINING 20E0
-Enclosing Diacritics 20DD
-ENCLOSING DIAMOND, COMBINING 20DF
-ENCLOSING KEYCAP, COMBINING 20E3
-ENCLOSING SCREEN, COMBINING 20E2
-ENCLOSING SQUARE, COMBINING 20DE
-ENCLOSING UPWARD POINTING TRIANGLE, COMBINING 20E4
-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, graphic for 2301
-END OF TRANSMISSION, SYMBOL FOR 2404
-end of transmission block 0017
-END OF TRANSMISSION BLOCK, SYMBOL FOR 2417
-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 03F6
-epsilon, reversed straight 220D
-epsilon, straight 03F5
-epsilon, straight 220A
-EPSILON SYMBOL, GREEK LUNATE 03F5
-EPSILON SYMBOL, GREEK REVERSED LUNATE 03F6
-EQUAL, DOUBLE COLON 2A74
-EQUAL, GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE 2A92
-EQUAL, GREATER-THAN ABOVE SIMILAR OR 2A8E
-EQUAL, GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED 2A94
-EQUAL, GREATER-THAN CLOSED BY CURVE ABOVE SLANTED 2AA9
-EQUAL, LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE 2A91
-EQUAL, LESS-THAN ABOVE SIMILAR OR 2A8D
-EQUAL, LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED 2A93
-EQUAL, LESS-THAN CLOSED BY CURVE ABOVE SLANTED 2AA8
-EQUAL ABOVE GREATER-THAN, LESS-THAN ABOVE DOUBLE-LINE 2A8B
-EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL, LESS-THAN ABOVE SLANTED 2A93
-EQUAL ABOVE LESS-THAN, GREATER-THAN ABOVE DOUBLE-LINE 2A8C
-EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL, GREATER-THAN ABOVE SLANTED 2A94
-EQUAL OR EQUAL TO, APPROXIMATELY 2A70
-EQUAL TO, ALL 224C
-EQUAL TO, ALMOST 2248
-EQUAL TO, APPROXIMATELY 2245
-equal to, approximately 2257
-EQUAL TO, APPROXIMATELY EQUAL OR 2A70
-EQUAL TO, ASYMPTOTICALLY 2243
-EQUAL TO, CLOSED SUBSET OR 2AD1
-EQUAL TO, CLOSED SUPERSET OR 2AD2
-EQUAL TO, DELTA 225C
-EQUAL TO, DOUBLE-LINE SLANTED GREATER-THAN OR 2AFA
-EQUAL TO, DOUBLE-LINE SLANTED LESS-THAN OR 2AF9
-EQUAL TO, GEOMETRICALLY 2251
-EQUAL TO, GREATER-THAN AND SINGLE-LINE NOT 2A88
-EQUAL TO, GREATER-THAN OR 2265
-EQUAL TO, GREATER-THAN OR SLANTED 2A7E
-EQUAL TO, LARGER THAN OR 2AAD
-EQUAL TO, LESS-THAN AND SINGLE-LINE NOT 2A87
-EQUAL TO, LESS-THAN OR 2264
-EQUAL TO, LESS-THAN OR SLANTED 2A7D
-EQUAL TO, NOT 2260
-EQUAL TO, PRECEDES ABOVE ALMOST 2AB7
-EQUAL TO, PRECEDES ABOVE NOT 2AB5
-EQUAL TO, PRECEDES ABOVE NOT ALMOST 2AB9
-EQUAL TO, PRECEDES ABOVE SINGLE-LINE NOT 2AB1
-EQUAL TO, QUESTIONED 225F
-EQUAL TO, RING 2257
-EQUAL TO, RING IN 2256
-EQUAL TO, SMALLER THAN OR 2AAC
-EQUAL TO, SUBSET OF ABOVE ALMOST 2AC9
-EQUAL TO, SUBSET OF ABOVE NOT 2ACB
-EQUAL TO, SUCCEEDS ABOVE ALMOST 2AB8
-EQUAL TO, SUCCEEDS ABOVE NOT 2AB6
-EQUAL TO, SUCCEEDS ABOVE NOT ALMOST 2ABA
-EQUAL TO, SUCCEEDS ABOVE SINGLE-LINE NOT 2AB2
-EQUAL TO, SUPERSET OF ABOVE ALMOST 2ACA
-EQUAL TO, SUPERSET OF ABOVE NOT 2ACC
-EQUAL TO ABOVE, COMBINING ALMOST 034C
-equal to by definition 225C
-EQUAL TO BY DEFINITION 225D
-EQUAL TO OR GREATER-THAN, DOUBLE-LINE 2A9A
-EQUAL TO OR GREATER-THAN, DOUBLE-LINE SLANTED 2A9C
-EQUAL TO OR GREATER-THAN, SLANTED 2A96
-EQUAL TO OR GREATER-THAN WITH DOT INSIDE, SLANTED 2A98
-EQUAL TO OR LESS-THAN, DOUBLE-LINE 2A99
-EQUAL TO OR LESS-THAN, DOUBLE-LINE SLANTED 2A9B
-EQUAL TO OR LESS-THAN, SLANTED 2A95
-EQUAL TO OR LESS-THAN WITH DOT INSIDE, SLANTED 2A97
-EQUAL TO WITH CIRCUMFLEX ACCENT, ALMOST 2A6F
-EQUAL TO WITH DOT ABOVE, GREATER-THAN OR SLANTED 2A82
-EQUAL TO WITH DOT ABOVE, LESS-THAN OR SLANTED 2A81
-EQUAL TO WITH DOT ABOVE, SUBSET OF OR 2AC3
-EQUAL TO WITH DOT ABOVE, SUPERSET OF OR 2AC4
-EQUAL TO WITH DOT ABOVE LEFT, GREATER-THAN OR SLANTED 2A84
-EQUAL TO WITH DOT ABOVE RIGHT, LESS-THAN OR SLANTED 2A83
-EQUAL TO WITH DOT INSIDE, GREATER-THAN OR SLANTED 2A80
-EQUAL TO WITH DOT INSIDE, LESS-THAN OR SLANTED 2A7F
-EQUALS, CIRCLED 229C
-EQUALS, REVERSED TILDE 22CD
-EQUALS, STAR 225B
-EQUALS COLON 2255
-EQUALS SIGN 003D
-EQUALS SIGN, PLUS SIGN ABOVE 2A72
-EQUALS SIGN, PRECEDES ABOVE 2AB3
-EQUALS SIGN, PRECEDES ABOVE SINGLE-LINE 2AAF
-EQUALS SIGN, SIMILAR ABOVE GREATER-THAN ABOVE 2AA0
-EQUALS SIGN, SIMILAR ABOVE LESS-THAN ABOVE 2A9F
-EQUALS SIGN, SUBSCRIPT 208C
-EQUALS SIGN, SUBSET OF ABOVE 2AC5
-EQUALS SIGN, SUCCEEDS ABOVE 2AB4
-EQUALS SIGN, SUCCEEDS ABOVE SINGLE-LINE 2AB0
-EQUALS SIGN, SUPERSCRIPT 207C
-EQUALS SIGN, SUPERSET OF ABOVE 2AC6
-EQUALS SIGN ABOVE PLUS SIGN 2A71
-EQUALS SIGN ABOVE TILDE OPERATOR 2A73
-EQUALS SIGN AND SLANTED PARALLEL 29E3
-EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE 29E4
-EQUALS SIGN BELOW, COMBINING 0347
-EQUALS SIGN WITH BUMPY ABOVE 2AAE
-EQUALS SIGN WITH DOT BELOW 2A66
-EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW 2A77
-EQUALS SIGNS, THREE CONSECUTIVE 2A76
-EQUALS SIGNS, TWO CONSECUTIVE 2A75
-EQUALS WITH ASTERISK 2A6E
-equiangular 225C
-EQUIANGULAR TO 225A
-equivalent, tautological 29E6
-EQUIVALENT TO 224D
-EQUIVALENT TO, GEOMETRICALLY 224E
-EQUIVALENT TO, STRICTLY 2263
-EQUIVALENT WITH FOUR DOTS ABOVE 2A78
-Era Names, Japanese 337B
-ERASE TO THE LEFT 232B
-ERASE TO THE RIGHT 2326
-error 212F
-Error Bar Symbols 29EE
-escape 001B
-escape, data link 0010
-ESCAPE, SYMBOL FOR 241B
-ESCAPE, SYMBOL FOR DATA LINK 2410
-escudo 0024
-ESH, LATIN CAPITAL LETTER 01A9
-ESH, LATIN SMALL LETTER 0283
-ESH, LATIN SMALL LETTER SQUAT REVERSED 0285
-ESH LOOP, LATIN LETTER REVERSED 01AA
-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, ARMENIAN 055C
-EXCLAMATION MARK, DOUBLE 203C
-EXCLAMATION MARK, INVERTED 00A1
-exclamation mark, latin letter 01C3
-EXCLAMATION MARK, QUESTION 2048
-EXCLAMATION MARK ORNAMENT, HEAVY 2762
-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, arrows 23AF
-EXTENSION, HORIZONTAL LINE 23AF
-EXTENSION, INTEGRAL 23AE
-EXTENSION, VERTICAL LINE 23D0
-Extension A, CJK Unified Ideographs 3400
-Extensions, Cyrillic 0450
-Extensions, IPA 0250
-Extensions, Katakana Phonetic 31F0
-Extensions, Special Characters 23AE
-Extensions for Sanskrit and Tibetan, Mongolian 1880
-Extensions for Vietnamese, Latin 1EA0
-EZH, LATIN CAPITAL LETTER 01B7
-EZH, LATIN SMALL LETTER 0292
-EZH REVERSED, LATIN SMALL LETTER 01B9
-F, SCRIPT CAPITAL 2131
-F, TURNED CAPITAL 2132
-F WITH HOOK, LATIN SMALL LETTER 0192
-FACE, BLACK SMILING 263B
-FACE, POSTAL MARK 3020
-FACE, WHITE FROWNING 2639
-FACE, WHITE SMILING 263A
-FACSIMILE SIGN 213B
-factorial 0021
-FAHRENHEIT, DEGREE 2109
-FALLING DIAGONAL SLASH, SQUARED 29C5
-FALLING DOTS, MINUS SIGN WITH 2A2B
-feet 2032
-FEMALE SIGN 2640
-FEMININE ORDINAL INDICATOR 00AA
-FENCE, DOTTED 2999
-FENCE, LEFT DOUBLE WIGGLY 29DA
-FENCE, LEFT WIGGLY 29D8
-FENCE, RIGHT DOUBLE WIGGLY 29DB
-FENCE, RIGHT WIGGLY 29D9
-Fences 2999
-Fences 29D8
-Fifths, Fractions 2155
-FIGURE DASH 2012
-FIGURE SPACE 2007
-file separator 001C
-FILE SEPARATOR, SYMBOL FOR 241C
-Finger Dingbats, Pointing Index 261A
-finite function, z notation 20E6
-finite function, z notation 21FB
-finite injection, z notation 2915
-FINITE PART INTEGRAL 2A0D
-finite relation, z notation 21FC
-finite surjection, z notation 2901
-finite surjective injection, z notation 2918
-FIRST QUARTER MOON 263D
-first transfinite cardinal (countable) 2135
-Fish Tails 297C
-FISHEYE 25C9
-fist 261E
-FIVE, LATIN SMALL LETTER TONE 01BD
-FIVE POINTED STAR, ARABIC 066D
-FLAG, BLACK 2691
-FLAT SIGN, MUSIC 266D
-FLOOR, LEFT 230A
-FLORAL HEART BULLET, REVERSED ROTATED 2619
-florin currency symbol 0192
-folder 0192
-FOOT, SQUARE 23CD
-FOONOTE MARKER, ARABIC 0602
-FOR ALL 2200
-FORCES 22A9
-FORKING 2ADC
-Forks 2AD9
-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, POP DIRECTIONAL 202C
-Formatting Characters 200C
-Formatting Characters 2028
-Formatting Controls, Bidirectional 202A
-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
-FRAGMENT, ARABIC TAIL FE73
-framus, white 29D6
-FRANC SIGN, FRENCH 20A3
-FRICATIVE, LATIN LETTER PHARYNGEAL VOICED 0295
-FROWN 2322
-FROWNING FACE, WHITE 2639
-FULL BLOCK 2588
-FULL OUTER JOIN 27D7
-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 Brackets FF5F
-Fullwidth Forms, Halfwidth and FF00
-Fullwidth Symbol Variants FFE0
-FUNCTION, CIRCULATION 2A10
-function, gamma 0393
-function, z notation finite 20E6
-function, z notation finite 21FB
-function, z notation partial 21F8
-FUNCTION APPLICATION 2061
-function symbol 0192
-fvs 180B
-G, LATIN LETTER SMALL CAPITAL 0262
-G, LATIN SMALL LETTER SCRIPT 0261
-G, SCRIPT SMALL 210A
-G, TURNED SANS-SERIF CAPITAL 2141
-game 2141
-GAMMA, DOUBLE-STRUCK CAPITAL 213E
-GAMMA, DOUBLE-STRUCK SMALL 213D
-GAMMA, LATIN CAPITAL LETTER 0194
-GAMMA, LATIN SMALL LETTER 0263
-gamma, latin small letter baby 0264
-GAMMA, MODIFIER LETTER SMALL 02E0
-gamma function 0393
-GB 2312 (Chinese), Based on 3100
-GEMINI 264A
-General Punctuation 2000
-General Scripts Area 0000
-GENERIC MATERIALS, RECYCLING SYMBOL FOR 267A
-Generic punctuation for Philippine scripts 1735
-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
-GERMAN PENNY SIGN 20B0
-GETA MARK 3013
-GIMEL SYMBOL 2137
-GLEICH STARK 29E6
-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
-Go Markers 2686
-Golden Number Runes 16EE
-GRAPHEME JOINER, COMBINING 034F
-Graphic Characters, Terminal 23B7
-Graphic Characters, Terminal 2596
-Graphic Pictures for Control Codes 2400
-Graphics, Control Code 25F0
-Graphics, Scan Lines For Terminal 23BA
-Graphics for Control Codes 237B
-grave, spacing 0060
-GRAVE ACCENT 0060
-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 ACCENT BELOW, COMBINING 0316
-GRAVE TONE MARK, COMBINING 0340
-GREATER-THAN, CIRCLED 29C1
-GREATER-THAN, DOUBLE NESTED 2AA2
-GREATER-THAN, DOUBLE-LINE EQUAL TO OR 2A9A
-GREATER-THAN, DOUBLE-LINE SLANTED EQUAL TO OR 2A9C
-GREATER-THAN, LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE 2A8B
-GREATER-THAN, LESS-THAN ABOVE SIMILAR ABOVE 2A8F
-GREATER-THAN, MUCH 226B
-GREATER-THAN, SIMILAR OR 2A9E
-GREATER-THAN, SLANTED EQUAL TO OR 2A96
-GREATER-THAN, TRIPLE NESTED 2AF8
-GREATER-THAN, VERY MUCH 22D9
-GREATER-THAN ABOVE DOUBLE-LINE EQUAL, LESS-THAN ABOVE 2A91
-GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN 2A8C
-GREATER-THAN ABOVE EQUALS SIGN, SIMILAR ABOVE 2AA0
-GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL 2A92
-GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN 2A90
-GREATER-THAN ABOVE SIMILAR OR EQUAL 2A8E
-GREATER-THAN ABOVE SLANTED EQUAL, LESS-THAN ABOVE SLANTED EQUAL ABOVE 2A93
-GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL 2A94
-GREATER-THAN AND NOT APPROXIMATE 2A8A
-GREATER-THAN AND SINGLE-LINE NOT EQUAL TO 2A88
-GREATER-THAN BESIDE LESS-THAN 2AA5
-GREATER-THAN CLOSED BY CURVE 2AA7
-GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL 2AA9
-GREATER-THAN OR APPROXIMATE 2A86
-GREATER-THAN OR EQUAL TO 2265
-GREATER-THAN OR EQUAL TO, DOUBLE-LINE SLANTED 2AFA
-GREATER-THAN OR SLANTED EQUAL TO 2A7E
-GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE 2A82
-GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT 2A84
-GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE 2A80
-GREATER-THAN OVERLAPPING LESS-THAN 2AA4
-GREATER-THAN SIGN 003E
-GREATER-THAN WITH CIRCLE INSIDE 2A7A
-GREATER-THAN WITH DOT INSIDE, SLANTED EQUAL TO OR 2A98
-GREATER-THAN WITH QUESTION MARK ABOVE 2A7C
-Greek, Diacritics for 0342
-Greek, Extended 1F00
-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
-group lock 21F0
-group separator 001D
-GROUP SEPARATOR, SYMBOL FOR 241D
-guarded area, end of 0097
-guarded area, start of 0096
-gui icons 231A
-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
-GUJARATI RUPEE SIGN 0AF1
-Gurmukhi 0A00
-Gurmukhi Digits 0A66
-Gurmukhi Letters 0A05
-H, BLACK-LETTER CAPITAL 210C
-H, COMBINING LATIN SMALL LETTER 036A
-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, COMBINING DOUBLE TILDE LEFT FE22
-HALF, COMBINING LIGATURE LEFT FE20
-HALF, VULGAR FRACTION ONE 00BD
-HALF CIRCLE, MULTIPLICATION SIGN IN LEFT 2A34
-HALF CIRCLE, MULTIPLICATION SIGN IN RIGHT 2A35
-HALF CIRCLE, PLUS SIGN IN LEFT 2A2D
-HALF CIRCLE, PLUS SIGN IN RIGHT 2A2E
-HALF FILL SPACE, IDEOGRAPHIC 303F
-HALF INTEGRAL, TOP 2320
-Half Marks, Combining FE20
-HALF RING, MODIFIER LETTER CENTRED LEFT 02D3
-HALF RING, MODIFIER LETTER LEFT 02BF
-HALF RING BELOW, COMBINING LEFT 031C
-HALF RING BELOW, COMBINING RIGHT 0339
-HALF TRIANGULAR COLON, MODIFIER LETTER 02D1
-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, VICTORY 270C
-HAND, WRITING 270D
-Hand Symbols, Pointing 261A
-Hangul, Based on KS C 5601 (Korean) 3130
-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, Circled Korean 326E
-Hangul Syllables, Parenthesized Korean 320E
-Hangul Syllables Area, Korean AC00
-Hangul Variants, Halfwidth Korean FFA0
-Hangzhou-style Numerals 3021
-Hanunoo 1720
-HANUNOO SIGN PAMUDPOD 1734
-Hanunóo-specific punctuation 1734
-HARPOON ABOVE, COMBINING LEFT 20D0
-hasant 09CD
-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
-Hexagram Symbols, Yijing 4DC0
-hiding, z notation schema 29F9
-High Surrogates D800
-HIGH VOLTAGE SIGN 26A1
-HIGH-REVERSED-9 QUOTATION MARK, DOUBLE 201F
-HIGH-REVERSED-9 QUOTATION MARK, SINGLE 201B
-higher rank than 227B
-hilbert space 210C
-Hiragana, Based on JIS X 0208 (Japanese) 3040
-HIRAGANA DIGRAPH YORI 309F
-HIRAGANA ITERATION MARK 309D
-histogram marker 25AE
-Historic Letters, Cyrillic 0460
-home 21B8
-home 21F1
-HOMOTHETIC 223B
-HOMOTHETIC ABOVE, COMBINING 034B
-Honorific Signs, Arabic 0610
-HOOK, MODIFIER LETTER RHOTIC 02DE
-hook, nasal 0328
-HOOK ABOVE, COMBINING 0309
-HOOK BELOW, COMBINING PALATALIZED 0321
-HOOK BELOW, COMBINING RETROFLEX 0322
-HORIZONTAL BAR 2015
-HORIZONTAL BAR, CIRCLE WITH 29B5
-HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE, TRIPLE 2A68
-HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE, TRIPLE 2A69
-HORIZONTAL ELLIPSIS 2026
-HORIZONTAL ELLIPSIS, MIDLINE 22EF
-HORIZONTAL LINE EXTENSION 23AF
-HORIZONTAL RULE, LOZENGE DIVIDED BY 27E0
-horizontal tabulation 0009
-HORIZONTAL TABULATION, SYMBOL FOR 2409
-HORN, COMBINING 031B
-HORN, LATIN SMALL LETTER RAMS 0264
-HOT BEVERAGE 2615
-HOT SPRINGS 2668
-HOURGLASS 231B
-HOURGLASS, BLACK 29D7
-HOURGLASS, WHITE 29D6
-Hours, Telegraph Symbols for 3358
-HOUSE 2302
-HV, LATIN SMALL LETTER 0195
-HWAIR, LATIN CAPITAL LETTER 01F6
-HYPHEN 2010
-HYPHEN, ARMENIAN 058A
-hyphen, discretionary 00AD
-HYPHEN, KATAKANA-HIRAGANA DOUBLE 30A0
-HYPHEN, NON-BREAKING 2011
-HYPHEN, SOFT 00AD
-HYPHEN BULLET 2043
-hyphen or minus sign 002D
-HYPHEN-MINUS 002D
-HYPHENATION POINT 2027
-hyphus 002D
-HYSTERESIS SYMBOL 238E
-I, BLACK-LETTER CAPITAL 2111
-I, COMBINING LATIN SMALL LETTER 0365
-I, DOUBLE-STRUCK ITALIC SMALL 2148
-I, LATIN LETTER SMALL CAPITAL 026A
-I, LATIN SMALL LETTER DOTLESS 0131
-I, SCRIPT CAPITAL 2110
-I, SUPERSCRIPT LATIN SMALL LETTER 2071
-I WITH DOT ABOVE, LATIN CAPITAL LETTER 0130
-IBM CJK Compatibility Ideographs FA0E
-icons, gui 231A
-identical and parallel to 2A68
-IDENTICAL TO 2261
-IDENTICAL TO AND SLANTED PARALLEL 29E5
-IDENTICAL WITH DOT ABOVE 2A67
-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 ITERATION MARK, VERTICAL 303B
-IDEOGRAPHIC NUMBER ZERO 3007
-IDEOGRAPHIC SPACE 3000
-Ideographic Tone Marks 302A
-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
-Ideographs Area, CJK 3400
-Ideographs Extension A, CJK Unified 3400
-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
-INCOMPLETE INFINITY 29DC
-incorporated, japanese 337F
-INCREASES AS 29E1
-INCREMENT 2206
-independence 2AEB
-independent 2ADD
-independent, not 2ADC
-index 0084
-Index Finger Dingbats, Pointing 261A
-indian currency 20A8
-inferior order to, of 2134
-INFINITY 221E
-INFINITY, INCOMPLETE 29DC
-INFINITY, TIE OVER 29DD
-INFINITY NEGATED WITH VERTICAL BAR 29DE
-INFORMATION SOURCE 2139
-INHIBIT ARABIC FORM SHAPING 206C
-INHIBIT SYMMETRIC SWAPPING 206A
-injection, z notation finite 2915
-injection, z notation finite surjective 2918
-injection, z notation partial 2914
-injection, z notation surjective 2917
-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
-Integrals, Summations and 2A0A
-INTERCALATE 22BA
-INTERIOR PRODUCT 2A3C
-INTERIOR PRODUCT, RIGHTHAND 2A3D
-interleave 2AF4
-Interlinear Annotation FFF9
-Internal Codes, Process FDD0
-International Phonetic Alphabet 0250
-INTERROBANG 203D
-INTERSECTION 2229
-INTERSECTION, DOUBLE 22D2
-INTERSECTION, INTEGRAL WITH 2A19
-INTERSECTION, N-ARY 22C2
-intersection, proper 22D4
-INTERSECTION, TRANSVERSAL 2ADB
-INTERSECTION OPERATOR, N-ARY SQUARE 2A05
-INTERSECTION WITH DOT 2A40
-Intersections and Unions 2A40
-introducer, control sequence 009B
-introducer, single character 009A
-Inverse Numbers, Circled 2776
-INVERTED BREVE, COMBINING 0311
-INVERTED BREVE, COMBINING DOUBLE 0361
-INVERTED BREVE BELOW, COMBINING 032F
-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
-INVERTED UNDERTIE 2054
-Invisible Operators 2063
-IOTA, LATIN CAPITAL LETTER 0196
-IOTA, LATIN SMALL LETTER 0269
-IOTA, TURNED GREEK SMALL LETTER 2129
-iota below, greek non-spacing 0345
-IPA, Diacritics for 0346
-IPA Extensions 0250
-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
-Italic Mathematical Symbols, Double-Struck 2145
-ITC Zapf Dingbats Series 100 2700
-ITERATION MARK, HIRAGANA 309D
-ITERATION MARK, IDEOGRAPHIC 3005
-ITERATION MARK, KATAKANA 30FD
-ITERATION MARK, VERTICAL IDEOGRAPHIC 303B
-ivy leaf 2767
-J, DOUBLE-STRUCK ITALIC SMALL 2149
-J, MODIFIER LETTER SMALL 02B2
-jack 2749
-Jamo, Korean Hangul Compatibility 3130
-Jamo Combining Alphabet, Korean Hangul 1100
-Japanese Chess Symbols 2616
-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, Circled 32D0
-Japanese Katakana Variants, Halfwidth FF61
-Japanese Katakana Words, Squared 3300
-japanese kome 203B
-JERUSALEM, CROSS OF 2629
-jis composition circle 20DD
-JIS X 0208, Based on 3040
-JIS X 0213 Compatibility Ideographs FA30
-JOIN 2A1D
-JOIN, FULL OUTER 27D7
-JOIN, LEFT OUTER 27D5
-JOIN, RIGHT OUTER 27D6
-JOINER, COMBINING GRAPHEME 034F
-JOINER, WORD 2060
-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, Circled Japanese 32D0
-Katakana, Japanese 30A0
-KATAKANA DIGRAPH KOTO 30FF
-KATAKANA ITERATION MARK 30FD
-KATAKANA MIDDLE DOT 30FB
-Katakana Phonetic Extensions 31F0
-Katakana Variants, Halfwidth Japanese FF61
-Katakana Words, Squared Japanese 3300
-KATAKANA-HIRAGANA DOUBLE HYPHEN 30A0
-KATAKANA-HIRAGANA PROLONGED SOUND MARK 30FC
-KATAKANA-HIRAGANA VOICED SOUND MARK 309B
-KATAKANA-HIRAGANA VOICED SOUND MARK, COMBINING 3099
-KELVIN SIGN 212A
-ket 27E7
-key, clear 2327
-key, command 2318
-key, delete to the left 232B
-key, delete to the right 2326
-key, enter 2324
-KEY, OPTION 2325
-KEY SYMBOL, ALTERNATIVE 2387
-KEY SYMBOL, DECIMAL SEPARATOR 2396
-KEYBOARD 2328
-Keyboard Symbols 2324
-Keyboard Symbols from ISO 9995-7 2380
-Keyboard Symbols from ISO 9995-7 2396
-Keyboard and UI Symbols 23CE
-KEYCAP, COMBINING ENCLOSING 20E3
-Khmer 1780
-Khmer Digits 17E0
-Khmer Lunar Date Symbols 19E0
-Khmer Symbols 19E0
-Khmer Symbols for Divination Lore 17F0
-KIP SIGN 20AD
-kome, japanese 203B
-Komi Letters, Cyrillic 0500
-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, Circled 326E
-Korean Hangul Syllables, Parenthesized 320E
-Korean Hangul Syllables Area AC00
-Korean Hangul Variants, Halfwidth FFA0
-KOREAN STANDARD SYMBOL 327F
-KORONIS, COMBINING GREEK 0343
-KOTO, KATAKANA DIGRAPH 30FF
-KRA, LATIN SMALL LETTER 0138
-KS C 5601 (Korean Hangul), Based on 3130
-L, LATIN LETTER SMALL CAPITAL 029F
-L, MODIFIER LETTER SMALL 02E1
-L, REVERSED SANS-SERIF CAPITAL 2143
-L, SCRIPT CAPITAL 2112
-L, SCRIPT SMALL 2113
-L, TURNED SANS-SERIF CAPITAL 2142
-L B BAR SYMBOL 2114
-L WITH MIDDLE DOT, LATIN SMALL LETTER 0140
-L WITH MIDDLE TILDE, LATIN SMALL LETTER 026B
-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
-LARGE AND, SLOPING 2A58
-large bowtie 2A1D
-LARGE DOWN TACK 27D9
-LARGE LEFT TRIANGLE OPERATOR 2A1E
-LARGE OR, SLOPING 2A57
-LARGE TRIPLE VERTICAL BAR OPERATOR 2AFC
-LARGE UP TACK 27D8
-LARGER THAN 2AAB
-LARGER THAN OR EQUAL TO 2AAD
-LAST QUARTER MOON 263E
-LATERAL CLICK, LATIN LETTER 01C1
-Latin, Based on ISO 8859-2, -3, -4, -9 (European) 0100
-Latin, C0 Controls and Basic 0000
-Latin, European 0100
-Latin Abbreviations, Squared 3371
-LATIN CAPITAL LETTER N WITH LONG RIGHT LEG 0220
-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 Small Letters, Combining 0363
-Latin-1, ISO 8859-1 aka 00A0
-Latin-1 Supplement, C1 Controls and 0080
-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-TO-RIGHT EMBEDDING 202A
-LEFT-TO-RIGHT MARK 200E
-LEFT-TO-RIGHT OVERRIDE 202D
-leftward tab 21E4
-LEG, LATIN CAPITAL LETTER N WITH LONG RIGHT 0220
-LENTICULAR BRACKET, LEFT BLACK 3010
-LENTICULAR BRACKET, LEFT WHITE 3016
-LEO 264C
-LESS-THAN, CIRCLED 29C0
-LESS-THAN, DOUBLE NESTED 2AA1
-LESS-THAN, DOUBLE-LINE EQUAL TO OR 2A99
-LESS-THAN, DOUBLE-LINE SLANTED EQUAL TO OR 2A9B
-LESS-THAN, GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE 2A8C
-LESS-THAN, GREATER-THAN ABOVE SIMILAR ABOVE 2A90
-LESS-THAN, GREATER-THAN BESIDE 2AA5
-LESS-THAN, GREATER-THAN OVERLAPPING 2AA4
-LESS-THAN, MUCH 226A
-LESS-THAN, SIMILAR OR 2A9D
-LESS-THAN, SLANTED EQUAL TO OR 2A95
-LESS-THAN, TRIPLE NESTED 2AF7
-LESS-THAN, VERY MUCH 22D8
-LESS-THAN ABOVE DOUBLE-LINE EQUAL, GREATER-THAN ABOVE 2A92
-LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN 2A8B
-LESS-THAN ABOVE EQUALS SIGN, SIMILAR ABOVE 2A9F
-LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL 2A91
-LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN 2A8F
-LESS-THAN ABOVE SIMILAR OR EQUAL 2A8D
-LESS-THAN ABOVE SLANTED EQUAL, GREATER-THAN ABOVE SLANTED EQUAL ABOVE 2A94
-LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL 2A93
-LESS-THAN AND NOT APPROXIMATE 2A89
-LESS-THAN AND SINGLE-LINE NOT EQUAL TO 2A87
-LESS-THAN CLOSED BY CURVE 2AA6
-LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL 2AA8
-LESS-THAN OR APPROXIMATE 2A85
-LESS-THAN OR EQUAL TO 2264
-LESS-THAN OR EQUAL TO, DOUBLE-LINE SLANTED 2AF9
-LESS-THAN OR SLANTED EQUAL TO 2A7D
-LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE 2A81
-LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT 2A83
-LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE 2A7F
-LESS-THAN SIGN 003C
-LESS-THAN WITH CIRCLE INSIDE 2A79
-LESS-THAN WITH DOT INSIDE, SLANTED EQUAL TO OR 2A97
-LESS-THAN WITH QUESTION MARK ABOVE 2A7B
-LESS-THAN WITH UNDERBAR, DOUBLE NESTED 2AA3
-Letterlike Symbols 2100
-level 2 lock 21EB
-level 3 lock 21EF
-level 3 select 21EE
-LEZH, LATIN SMALL LETTER 026E
-lf 000A
-LIABILITY SIGN, LIMITED 32CF
-LIBRA 264E
-ligature ae, latin small 00E6
-LIGATURE IJ, LATIN SMALL 0133
-LIGATURE LEFT HALF, COMBINING FE20
-LIGATURE OE, LATIN SMALL 0153
-ligature tie 0361
-Ligatures, Armenian FB13
-Ligatures, Latin FB00
-LIGHTNING 2607
-LIMIT, APPROACHES THE 2250
-Limbu 1900
-Limbu Digits 1946
-LIMITED LIABILITY SIGN 32CF
-LINE, AEGEAN WORD SEPARATOR 10100
-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
-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
-Linear B Ideograms 10080
-Linear B Syllabary 10000
-Lines For Terminal Graphics, Scan 23BA
-Lira, Italian 00A3
-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
-Logic Operators, Modal 27E0
-LOGICAL AND 2227
-LOGICAL AND, CURLY 22CF
-LOGICAL AND, INTERSECTION WITH 2A44
-LOGICAL AND, N-ARY 22C0
-LOGICAL AND OPERATOR, TWO 2A07
-Logical Ands and Ors 2A51
-LOGICAL OR 2228
-LOGICAL OR, CURLY 22CE
-LOGICAL OR, N-ARY 22C1
-LOGICAL OR, UNION WITH 2A45
-LOGICAL OR OPERATOR, TWO 2A08
-long 0304
-Long Arrows 27F5
-long cross 2020
-long dash 2015
-LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL 2AE6
-LONG HORIZONTAL STROKE, CONTAINS WITH 22FA
-LONG HORIZONTAL STROKE, ELEMENT OF WITH 22F2
-LONG LEFT TACK 27DE
-LONG RIGHT LEG, LATIN CAPITAL LETTER N WITH 0220
-LONG RIGHT TACK 27DD
-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 ASTERISK 204E
-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, BLACK 29EB
-LOZENGE, SQUARE 2311
-LOZENGE DIVIDED BY HORIZONTAL RULE 27E0
-lre 202A
-lrm 200E
-lro 202D
-M, COMBINING LATIN SMALL LETTER 036B
-M, LATIN CAPITAL LETTER TURNED 019C
-M, LATIN SMALL LETTER TURNED 026F
-M, SCRIPT CAPITAL 2133
-m-matrix 2133
-MACRON 00AF
-MACRON, COMBINING 0304
-MACRON, MODIFIER LETTER 02C9
-MACRON, MODIFIER LETTER LOW 02CD
-macron, spacing 00AF
-MACRON BELOW, COMBINING 0331
-Malayalam 0D00
-Malayalam Digits 0D66
-Malayalam Letters 0D05
-MALE SIGN 2642
-MALTESE CROSS 2720
-Manchu Letters, Mongolian 1873
-Map Markers 2690
-mapping, bijective 2916
-maps from 27FB
-maps from 2906
-maps to 27FC
-maps to 2905
-maps to 2907
-mark, german 2133
-marker, histogram 25AE
-Markers, Go 2686
-Markers, Map 2690
-mars 2642
-MASCULINE ORDINAL INDICATOR 00BA
-MASU MARK 303C
-MATERIALS, RECYCLING SYMBOL FOR GENERIC 267A
-Mathematical Brackets 27E6
-Mathematical Operators 2200
-Mathematical Operators, Supplemental 2A00
-MATHEMATICAL SPACE, MEDIUM 205F
-Mathematical Symbols, Double-Struck Italic 2145
-Mathematical Symbols-A, Miscellaneous 27C0
-Mathematical Symbols-B, Miscellaneous 2980
-MATRIX, HERMITIAN CONJUGATE 22B9
-MEASURED ANGLE 2221
-Measured Angles, Angles and 299B
-MEASURED BY 225E
-Medieval Superscript Letter Diacritics 0363
-medium, end of 0019
-MEDIUM, SYMBOL FOR END OF 2419
-MEDIUM MATHEMATICAL SPACE 205F
-MEDIUM SMALL SQUARE, BLACK 25FE
-MEDIUM SMALL SQUARE, WHITE 25FD
-MEDIUM SQUARE, BLACK 25FC
-MEDIUM SQUARE, WHITE 25FB
-MEMBER, CONTAINS AS 220B
-MEMBER, SMALL CONTAINS AS 220D
-MEMBER OF DOUBLE VERTICAL, LONG DASH FROM LEFT 2AE6
-MEMBERSHIP, Z NOTATION BAG 22FF
-MERCURY 263F
-merge 2A07
-message, privacy 009E
-message waiting 0095
-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, CIRCLED 2296
-MINUS, DOT 2238
-MINUS, SET 2216
-MINUS, SQUARED 229F
-MINUS, SUBSCRIPT 208B
-MINUS, SUPERSCRIPT 207B
-MINUS SIGN 2212
-MINUS SIGN, COMMERCIAL 2052
-minus sign, hyphen or 002D
-MINUS SIGN, MODIFIER LETTER 02D7
-MINUS SIGN, UNION WITH 2A41
-MINUS SIGN BELOW, COMBINING 0320
-MINUS SIGN IN TRIANGLE 2A3A
-Minus Sign Operators, Plus and 2A22
-MINUS SIMILAR, SIMILAR 2A6C
-MINUS TILDE 2242
-MINUS-OR-PLUS SIGN 2213
-minutes 2032
-MINY 29FF
-Miscellaneous Mathematical Symbols-A 27C0
-Miscellaneous Mathematical Symbols-B 2980
-Miscellaneous Symbols 2600
-Miscellaneous Symbols and Arrows 2B00
-Miscellaneous Technical 2300
-MISRA, ARABIC SIGN 060F
-mmsp 205F
-Modal Logic Operators 27E0
-MODELS 22A7
-Modifier Letters, Spacing 02B0
-MODULO TWO SUM 2A0A
-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
-Monogram and Digram Symbols, Yijing 268C
-Monogram Symbol, Tai Xuan Jing 1D300
-MONOSTABLE SYMBOL 238D
-MONTH SIGN, TAMIL 0BF4
-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
-MULTIMAP, DOUBLE-ENDED 29DF
-MULTIMAP, LEFT 27DC
-MULTIPLICATION, MULTISET 228D
-Multiplication and Division Sign Operators 2A2F
-MULTIPLICATION SIGN 00D7
-MULTIPLICATION SIGN BELOW, SUBSET WITH 2AC1
-MULTIPLICATION SIGN BELOW, SUPERSET WITH 2AC2
-MULTIPLICATION X 2715
-MULTIPLICATION X, HEAVY 2716
-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
-mvs 180E
-Myanmar 1000
-Myanmar Digits 1040
-N, DOUBLE-STRUCK CAPITAL 2115
-N, LATIN LETTER SMALL CAPITAL 0274
-N WITH LONG RIGHT LEG, LATIN CAPITAL LETTER 0220
-N-ARY COPRODUCT 2210
-n-ary dijkstra choice 2AFF
-N-ARY INTERSECTION 22C2
-N-ARY LOGICAL AND 22C0
-N-ARY LOGICAL OR 22C1
-N-ary Operators 2A00
-N-ARY PRODUCT 220F
-N-ARY SUMMATION 2211
-N-ARY SUMMATION, DOUBLE-STRUCK 2140
-N-ARY UNION 22C3
-N-ARY WHITE VERTICAL BAR 2AFF
-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
-nbsp 0080
-necessarily satisfies 2AF1
-NEGATED WITH VERTICAL BAR, INFINITY 29DE
-negation 20D3
-NEGATION SLASH, DOES NOT DIVIDE WITH REVERSED 2AEE
-negative acknowledge 0015
-negative acknowledge, graphic for 237B
-NEGATIVE ACKNOWLEDGE, SYMBOL FOR 2415
-NEPTUNE 2646
-never (modal operator) 27E1
-never (modal operator), was 27E2
-never be (modal operator), will 27E3
-new line 21B5
-NEW SHEQEL SIGN 20AA
-NEWLINE, SYMBOL FOR 2424
-next line 0085
-NEXT PAGE 2398
-NIB, BLACK 2712
-nigerian currency 20A6
-nim-addition 2A27
-nnbsp 202F
-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
-Noncharacters FDD0
-Noncharacters FFFE
-Noncharacters 1FFFE
-Noncharacters 2FFFE
-Noncharacters 3FFFE
-Noncharacters 4FFFE
-Noncharacters 5FFFE
-Noncharacters 6FFFE
-Noncharacters 7FFFE
-Noncharacters 8FFFE
-Noncharacters 9FFFE
-Noncharacters AFFFE
-Noncharacters BFFFE
-Noncharacters CFFFE
-Noncharacters DFFFE
-Noncharacters EFFFE
-Noncharacters FFFFE
-Noncharacters 10FFFE
-NONFORKING 2ADD
-NOR 22BD
-NORMAL SUBGROUP, CONTAINS AS 22B3
-NORMAL SUBGROUP OF 22B2
-not 223C
-Not a Character FFFE
-Not a Character FFFF
-NOT ALMOST EQUAL TO, PRECEDES ABOVE 2AB9
-NOT ALMOST EQUAL TO, SUCCEEDS ABOVE 2ABA
-NOT AN ELEMENT OF 2209
-NOT APPROXIMATE, GREATER-THAN AND 2A8A
-NOT APPROXIMATE, LESS-THAN AND 2A89
-NOT CHECK MARK 237B
-NOT DIVIDE WITH REVERSED NEGATION SLASH, DOES 2AEE
-NOT EQUAL TO 2260
-NOT EQUAL TO, GREATER-THAN AND SINGLE-LINE 2A88
-NOT EQUAL TO, LESS-THAN AND SINGLE-LINE 2A87
-NOT EQUAL TO, PRECEDES ABOVE 2AB5
-NOT EQUAL TO, PRECEDES ABOVE SINGLE-LINE 2AB1
-NOT EQUAL TO, SUBSET OF ABOVE 2ACB
-NOT EQUAL TO, SUCCEEDS ABOVE 2AB6
-NOT EQUAL TO, SUCCEEDS ABOVE SINGLE-LINE 2AB2
-NOT EQUAL TO, SUPERSET OF ABOVE 2ACC
-not independent 2ADC
-NOT SIGN 00AC
-NOT SIGN, DOUBLE STROKE 2AEC
-NOT SIGN, REVERSED 2310
-NOT SIGN, REVERSED DOUBLE STROKE 2AED
-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, SYMBOL FOR 2400
-null set 2205
-number, natural 2115
-Number Forms 2150
-Number Runes, Golden 16EE
-NUMBER SIGN 0023
-NUBMER SIGN, ARABIC 0600
-NUMBER SIGN, TAMIl 0BFA
-number symbol, real 210A
-NUMBER ZERO, IDEOGRAPHIC 3007
-Numbers, Aegean 10100
-Numbers, Circled 2460
-Numbers, Circled 3251
-Numbers, Circled 32B1
-Numbers, Circled Inverse 2776
-Numbers, Double Circled 24F5
-Numbers, Parenthesized 2474
-numbers, the set of complex 2102
-numbers, the set of rational 211A
-numbers, the set of real 211D
-Numbers, White On Black Circled 24EB
-Numbers Period 2488
-Numerals, Hangzhou-style 3021
-Numerals, Old Italic 10320
-Numerals, Roman 2160
-NUMERATOR ONE, FRACTION 215F
-numerics lock 21ED
-NUMERO SIGN 2116
-nut 2002
-O, COMBINING LATIN SMALL LETTER 0366
-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
-o bar 019F
-o bar 0275
-o e, latin small letter 0153
-O WITH MIDDLE TILDE, LATIN CAPITAL LETTER 019F
-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, FRACTION NUMERATOR 215F
-ONE, SUPERSCRIPT 00B9
-ONE DOT LEADER 2024
-ONE HALF, VULGAR FRACTION 00BD
-ONE QUARTER, VULGAR FRACTION 00BC
-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, Database Theory 27D5
-Operators, Invisible 2063
-Operators, Mathematical 2200
-Operators, Modal Logic 27E0
-Operators, Multiplication and Division Sign 2A2F
-Operators, N-Ary 2A00
-Operators, Plus and Minus Sign 2A22
-Operators, Relational 2A66
-Operators, Specialized plus sign 29FA
-Operators, Supplemental Mathematical 2A00
-Operators, Vertical Line 2AEE
-OPPOSITION 260D
-Optical Character Recognition (OCR) 2440
-OPTION KEY 2325
-OR, CURLY LOGICAL 22CE
-OR, DOUBLE LOGICAL 2A54
-OR, LOGICAL 2228
-OR, N-ARY LOGICAL 22C1
-OR, SLOPING LARGE 2A57
-OR, TWO INTERSECTING LOGICAL 2A56
-OR, UNION WITH LOGICAL 2A45
-OR OPERATOR, TWO LOGICAL 2A08
-OR WITH DOT ABOVE, LOGICAL 2A52
-OR WITH DOUBLE OVERBAR, LOGICAL 2A62
-OR WITH DOUBLE UNDERBAR, LOGICAL 2A63
-OR WITH HORIZONTAL DASH, LOGICAL 2A5D
-OR WITH MIDDLE STEM, LOGICAL 2A5B
-order 2134
-ORDINAL INDICATOR, FEMININE 00AA
-ORDINAL INDICATOR, MASCULINE 00BA
-ordinarily satisfies 2AE2
-ORIGIN, DIMENSION 2331
-ORIGINAL OF 22B6
-ORIGINAL OF, SQUARE 2290
-Oriya 0B00
-Oriya Digits 0B66
-Oriya Letters 0B05
-Ornamental Angle Quotation Marks 276E
-Ornamental Brackets 2768
-Ornamental Brackets 2770
-Ornaments, Heart 2763
-Ornaments, Punctuation 275B
-ORNATE LEFT PARENTHESIS FD3E
-ors, logical ands and 2A51
-ORTHODOX CROSS 2626
-orthogonal to 22A5
-Osmanya 10480
-Osmanya Digits 104A0
-OU, LATIN SMALL LETTER 0223
-OUNCE SIGN 2125
-OUTER JOIN, FULL 27D7
-OUTER JOIN, LEFT 27D5
-OUTER JOIN, RIGHT 27D6
-OUTLINE, SQUARE WITH CONTOURED 29E0
-OVER INFINITY, TIE 29DD
-OVER TOP SQUARE BRACKET, BOTTOM SQUARE BRACKET 23B6
-overbar, apl 00AF
-OVERLAPPING LESS-THAN, GREATER-THAN 2AA4
-OVERLAPPING LOGICAL AND, LOGICAL OR 2A59
-OVERLAY, COMBINING CLOCKWISE RING 20D9
-OVERLAY, COMBINING DOUBLE VERTICAL STROKE 20E6
-OVERLAY, COMBINING LEFTWARDS ARROW 20EA
-OVERLAY, COMBINING LONG SOLIDUS 0338
-OVERLAY, COMBINING LONG STROKE 0336
-OVERLAY, COMBINING LONG VERTICAL LINE 20D2
-OVERLAY, COMBINING REVERSE SOLIDUS 20E5
-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, NEXT 2398
-PAGE, PREVIOUS 2397
-page down 21DF
-page up 21DE
-PALATALIZED HOOK BELOW, COMBINING 0321
-PAMUDPOD, HANUNOO SIGN 1734
-PAPER SYMBOL, PARTIALLY-RECYCLED 267D
-PAPER SYMBOL, RECYCLED 267C
-PARAGRAPH SEPARATOR 2029
-PARAGRAPH SEPARATOR, GEORGIAN 10FB
-paragraph separator, urdu 203B
-paragraph sign 00B6
-paragraph sign, european 00A7
-PARAGRAPH SIGN ORNAMENT, CURVED STEM 2761
-PARALLEL, CIRCLED 29B7
-PARALLEL, EQUALS SIGN AND SLANTED 29E3
-PARALLEL, IDENTICAL TO AND SLANTED 29E5
-PARALLEL TO 2225
-parallel to, identical and 2A68
-PARALLEL WITH HORIZONTAL STROKE 2AF2
-PARALLEL WITH TILDE ABOVE, EQUALS SIGN AND SLANTED 29E4
-PARALLEL WITH TILDE OPERATOR 2AF3
-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
-PART ALTERNATION MARK 303D
-PART INTEGRAL, FINITE 2A0D
-parted rule 00A6
-PARTIAL DIFFERENTIAL 2202
-partial function, z notation 21F8
-partial injection, z notation 2914
-partial line down 008B
-partial line up 008C
-partial relation, z notation 21F9
-partial surjection, z notation 2900
-PARTIALLY-RECYCLED PAPER SYMBOL 267D
-PARTNERSHIP SIGN 3250
-Parts, Summation Sign 23B2
-pdf 202C
-PEACE SYMBOL 262E
-PENCIL, UPPER RIGHT 2710
-Pencil Dingbats 270E
-PENNY SIGN, GERMAN 20B0
-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
-PERPENDICULAR, CIRCLED 29B9
-PERPENDICULAR WITH S 2AE1
-Persian and Urdu, Eastern Arabic-Indic Digits for 06F0
-PERSPECTIVE 2306
-PESETA SIGN 20A7
-PESO SIGN 20B1
-PHARYNGEAL VOICED FRICATIVE, LATIN LETTER 0295
-PHI, LATIN SMALL LETTER 0278
-Philippine Scripts, Generic Punctuation For 1735
-Phonetic Alphabet, International 0250
-Phonetic Extensions 1D00
-Phonetic Extensions, Katakana 31F0
-Phonetic Extensions, non-IPA 1D00
-Phonetic Extensions for Ainu 31F0
-Phonetic Modifiers Derived from Latin Letters 02B0
-Phonetics and Symbols Area, CJK 2E00
-phonorecord sign 2117
-PI, DOUBLE-STRUCK CAPITAL 213F
-pi, mathematical constant 03C0
-Pictures for Control Codes, Graphic 2400
-Pieces, Bracket 239B
-Pieces, Bracket 23B0
-PILCROW SIGN 00B6
-PILCROW SIGN, REVERSED 204B
-Pinyin Diacritic-vowel Combinations 01CD
-pipe 01C0
-pipe, double 01C1
-pipe, double-barred 01C2
-PIPING, Z NOTATION SCHEMA 2A20
-PISCES 2653
-PITCHFORK 22D4
-PITCHFORK WITH TEE TOP 2ADA
-PLACE OF INTEREST SIGN 2318
-plaintiff 226C
-PLANCK CONSTANT 210E
-PLANCK CONSTANT OVER TWO PI 210F
-Planet Symbols 263F
-Playing Card Suits 2660
-PLUS, CIRCLED 2295
-PLUS, DOT 2214
-PLUS, DOUBLE 29FA
-PLUS, N-ARY UNION OPERATOR WITH 2A04
-PLUS, SQUARED 229E
-PLUS, TRIPLE 29FB
-Plus and Minus Sign Operators 2A22
-PLUS OPERATOR, N-ARY CIRCLED 2A01
-PLUS SIGN 002B
-PLUS SIGN, EQUALS SIGN ABOVE 2A71
-PLUS SIGN, MODIFIER LETTER 02D6
-PLUS SIGN, SUBSCRIPT 208A
-PLUS SIGN, SUPERSCRIPT 207A
-PLUS SIGN ABOVE EQUALS SIGN 2A72
-PLUS SIGN BELOW, COMBINING 031F
-PLUS SIGN BELOW, SUBSET WITH 2ABF
-PLUS SIGN BELOW, SUPERSET WITH 2AC0
-PLUS SIGN IN LEFT HALF CIRCLE 2A2D
-PLUS SIGN IN RIGHT HALF CIRCLE 2A2E
-PLUS SIGN IN TRIANGLE 2A39
-Plus Sign Operators, Specialized 29FA
-PLUS-MINUS SIGN 00B1
-PLUTO 2647
-POETIC VERSE SIGN, ARABIC 060E
-POINT OPERATOR, INTEGRAL AROUND A 2A15
-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
-positive difference, sum or 2A26
-positive difference or sum 2A24
-POSTAL MARK 3012
-POSTAL MARK, CIRCLED 3036
-POSTAL MARK FACE 3020
-pound sign 0023
-POUND SIGN 00A3
-pound sterling 00A3
-pounds 2114
-power set 2118
-PRECEDES 227A
-PRECEDES, DOUBLE 2ABB
-PRECEDES ABOVE ALMOST EQUAL TO 2AB7
-PRECEDES ABOVE EQUALS SIGN 2AB3
-PRECEDES ABOVE NOT ALMOST EQUAL TO 2AB9
-PRECEDES ABOVE NOT EQUAL TO 2AB5
-PRECEDES ABOVE SINGLE-LINE EQUALS SIGN 2AAF
-PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO 2AB1
-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, DOUBLE 2033
-PRIME, MODIFIER LETTER 02B9
-PRIME, MODIFIER LETTER DOUBLE 02BA
-PRIME, QUADRUPLE 2057
-PRIME, REVERSED 2035
-PRIME, REVERSED DOUBLE 2036
-PRIME, REVERSED TRIPLE 2037
-PRIME, TRIPLE 2034
-PRIME QUOTATION MARK, DOUBLE 301E
-PRIME QUOTATION MARK, LOW DOUBLE 301F
-PRIME QUOTATION MARK, REVERSED DOUBLE 301D
-PRINT SCREEN SYMBOL 2399
-privacy message 009E
-Private Use Area E000
-Private Use Area-A, Supplementary F0000
-Private Use Area-B, Supplementary 100000
-private use one 0091
-private use two 0092
-PRODUCT, CLOSED UNION WITH SERIFS AND SMASH 2A50
-product, direct 2299
-PRODUCT, INTERIOR 2A3C
-PRODUCT, LEFT SEMIDIRECT 22CB
-PRODUCT, N-ARY 220F
-PRODUCT, RIGHTHAND INTERIOR 2A3D
-PRODUCT, SHUFFLE 29E2
-PRODUCT, SMASH 2A33
-product, tensor 2297
-PRODUCT, VECTOR OR CROSS 2A2F
-PRODUCT, WREATH 2240
-PRODUCT WITH BOTTOM CLOSED, SEMIDIRECT 2A32
-PROFILE, ALL AROUND- 232E
-prohibition 20E0
-PROJECTION, Z NOTATION SCHEMA 2A21
-PROJECTIVE 2305
-PROOF, END OF 220E
-PROPERTY LINE 214A
-PROPORTION 2237
-PROPORTION, GEOMETRIC 223A
-PROPORTIONAL TO 221D
-proportional to, varies with 223C
-proves 22A2
-psili 0313
-published 2117
-pullback 27D3
-Punctuation, CJK Symbols and 3000
-Punctuation, General 2000
-Punctuation, Hanunóo-Specific 1734
-Punctuation, Katakana 30A0
-PUNCTUATION, PHILIPPINE DOUBLE 1736
-PUNCTUATION, PHILIPPINE SINGLE 1735
-Punctuation For Philippine Scripts, Generic 1735
-Punctuation For Vertical Text, Double 2047
-Punctuation Ornaments 275B
-PUNCTUATION SPACE 2008
-punt, irish 00A3
-purna viram 0964
-pushout 27D4
-Q, DOUBLE-STRUCK CAPITAL 211A
-Q, ROTATED CAPITAL 213A
-QAF, ARABIC LETTER DOTLESS 066F
-qed 220E
-QUAD, EM 2001
-QUAD, EN 2000
-quad, mutton 2001
-Quadrants 2596
-quadrature 25A1
-QUADRUPLE INTEGRAL OPERATOR 2A0C
-QUADRUPLE PRIME 2057
-quantic 226C
-QUARTER MOON, FIRST 263D
-QUARTER MOON, LAST 263E
-QUARTER NOTE 2669
-Quarters, Fractions 00BC
-QUATERNION INTEGRAL OPERATOR 2A16
-QUESTION EXCLAMATION MARK 2048
-QUESTION MARK 003F
-QUESTION MARK, ARABIC 061F
-QUESTION MARK, ARMENIAN 055E
-QUESTION MARK, DOUBLE 2047
-QUESTION MARK, ETHIOPIC 1367
-QUESTION MARK, EXCLAMATION 2049
-QUESTION MARK, GREEK 037E
-QUESTION MARK, INVERTED 00BF
-QUESTION MARK ABOVE, GREATER-THAN WITH 2A7C
-QUESTION MARK ABOVE, LESS-THAN WITH 2A7B
-QUESTIONED EQUAL TO 225F
-QUILL, LEFT SQUARE BRACKET WITH 2045
-Quine Corners 231C
-quotation dash 2015
-QUOTATION MARK 0022
-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
-Quotation Mark Ornaments 275B
-Quotation Marks, Ornamental Angle 276E
-quote, apl 0022
-R, BLACK-LETTER CAPITAL 211C
-R, COMBINING LATIN SMALL LETTER 036C
-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
-radial component 27DF
-radical sign 221A
-Radicals, Kangxi 2F00
-Radicals, Yi A490
-Radicals Supplement, CJK 2E80
-RADIOACTIVE SIGN 2622
-RAIN DROPS, UMBRELLA WITH 2614
-rainy weather 2602
-RAMS HORN, LATIN SMALL LETTER 0264
-RANGE ANTIRESTRICTION, Z NOTATION 2A65
-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
-RECTANGULAR PATH AROUND POLE, LINE INTEGRATION WITH 2A12
-RECYCLED PAPER SYMBOL 267C
-RECYCLING SYMBOL, BLACK UNIVERSAL 267B
-RECYCLING SYMBOL, UNIVERSAL 2672
-RECYCLING SYMBOL FOR GENERIC MATERIALS 267A
-Recycling Symbols 2672
-Recycling Symbols For Plastics 2673
-reduces to 22A6
-reducible 22A2
-REFERENCE MARK 203B
-registered trade mark sign 00AE
-RELATION, TRIPLE SOLIDUS BINARY 2AFB
-RELATION, TRIPLE VERTICAL BAR BINARY 2AF4
-relation, z notation finite 21FC
-relation, z notation partial 21F9
-RELATIONAL COMPOSITION, Z NOTATION 2A3E
-Relational Operators 2A66
-Relations 29E3
-Relations 2AF7
-Relations, Subset and superset 2ABD
-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, latin small letter d 0256
-RETROFLEX HOOK BELOW, COMBINING 0322
-return, carriage 000D
-return, carriage 21B5
-RETURN, SYMBOL FOR CARRIAGE 240D
-RETURN SYMBOL 23CE
-reverse line feed 008D
-REVERSE SOLIDUS 005C
-REVERSE SOLIDUS, BIG 29F9
-REVERSE SOLIDUS, CIRCLED 29B8
-REVERSE SOLIDUS OPERATOR 29F5
-REVERSE SOLIDUS OVERLAY, COMBINING 20E5
-REVERSE SOLIDUS WITH HORIZONTAL STROKE 29F7
-reverse turnstile 22A3
-REVERSED, LATIN SMALL LETTER EZH 01B9
-REVERSED COMMA, MODIFIER LETTER 02BD
-REVERSED COMMA ABOVE, COMBINING 0314
-reversed comma quotation mark, double 201F
-reversed comma quotation mark, single 201B
-REVERSED DOUBLE PRIME 2036
-REVERSED DOUBLE PRIME QUOTATION MARK 301D
-REVERSED DOUBLE STROKE NOT SIGN 2AED
-REVERSED E, LATIN CAPITAL LETTER 018E
-REVERSED E, LATIN SMALL LETTER 0258
-reversed epsilon, latin small letter closed 025E
-REVERSED ESH, LATIN SMALL LETTER SQUAT 0285
-REVERSED ESH LOOP, LATIN LETTER 01AA
-reversed glottal stop, latin letter 0295
-REVERSED GLOTTAL STOP, MODIFIER LETTER 02C1
-REVERSED GLOTTAL STOP, MODIFIER LETTER SMALL 02E4
-REVERSED NEGATION SLASH, DOES NOT DIVIDE WITH 2AEE
-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 SANS-SERIF CAPITAL L 2143
-REVERSED SEMICOLON 204F
-reversed straight epsilon 220D
-REVERSED TILDE 223D
-REVERSED TILDE EQUALS 22CD
-REVERSED TRIPLE PRIME 2037
-RHOTIC HOOK, MODIFIER LETTER 02DE
-riemann integral 211B
-RIGHT ANGLE 221F
-RIGHT ANGLE WITH ARC 22BE
-RIGHT TRIANGLE 22BF
-RIGHT-TO-LEFT EMBEDDING 202B
-RIGHT-TO-LEFT MARK 200F
-RIGHT-TO-LEFT OVERRIDE 202E
-RIGHTHAND INTERIOR PRODUCT 2A3D
-RING, BENZENE 232C
-RING, MODIFIER LETTER CENTRED LEFT HALF 02D3
-RING, MODIFIER LETTER LEFT HALF 02BF
-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
-RISING DIAGONAL SLASH, SQUARED 29C4
-RISING DOTS, MINUS SIGN WITH 2A2C
-RISING DOTS, TILDE OPERATOR WITH 2A6B
-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, LOZENGE DIVIDED BY HORIZONTAL 27E0
-rule, parted 00A6
-RULE-DELAYED 29F4
-Runes, Golden Number 16EE
-Runic 16A0
-RUNOUT, TOTAL 2330
-RUPEE MARK, BENGALI 09F2
-RUPEE SIGN 20A8
-RUPEE SIGN, BENGALI 09F3
-RUPEE SIGN, GUJARATI 0AF1
-RUPEE SIGN, TAMIL 0BF9
-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
-S, PERPENDICULAR WITH 2AE1
-S IN TRIANGLE 29CC
-SAFHA, ARABIC SIGN 0603
-SAGITTARIUS 2650
-SALTIRE 2613
-sam 070F
-SANAH, ARABIC SIGN 0601
-SANS-SERIF CAPITAL G, TURNED 2141
-SANS-SERIF CAPITAL L, REVERSED 2143
-SANS-SERIF CAPITAL L, TURNED 2142
-SANS-SERIF CAPITAL Y, TURNED 2144
-Sanskrit and Tibetan, Mongolian Extensions for 1880
-satisfies 22A8
-satisfies, necessarily 2AF1
-satisfies, ordinarily 2AE2
-SATURN 2644
-SCHEMA COMPOSITION, Z NOTATION 2A1F
-schema hiding, z notation 29F9
-SCHEMA PIPING, Z NOTATION 2A20
-SCHEMA PROJECTION, Z NOTATION 2A21
-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
-Selectors, Variation FE00
-SEMICIRCULAR PATH AROUND POLE, LINE INTEGRATION WITH 2A13
-SEMICOLON 003B
-SEMICOLON, ARABIC 061B
-SEMICOLON, ETHIOPIC 1364
-SEMICOLON, REVERSED 204F
-SEMIDIRECT PRODUCT, LEFT 22CB
-SEMIDIRECT PRODUCT WITH BOTTOM CLOSED 2A32
-SEPARATOR DOT, AEGEAN WORD 10101
-SEPARATOR LINE, AEGEAN WORD 10100
-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, INVISIBLE 2063
-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
-SEPARATOR KEY SYMBOL, DECIMAL 2396
-sequence concatenation, z notation 2040
-sequence introducer, control 009B
-Serbian Cyrillic Letters, Croatian Digraphs Matching 01C4
-SERIFS, CLOSED INTERSECTION WITH 2A4D
-SERIFS, CLOSED UNION WITH 2A4C
-SERIFS AND SMASH PRODUCT, CLOSED UNION WITH 2A50
-SERIFS AT BOTTOM, TRIANGLE WITH 29CD
-SERVICE MARK 2120
-SESAME DOT FE45
-SESAME DOT, WHITE FE46
-SET, EMPTY 2205
-set, included in 2282
-set, includes in 2283
-set, null 2205
-set, power 2118
-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
-Sets, Empty 29B0
-sextile 2736
-Shade Characters 2591
-shamrock 2663
-Shapes, Geometric 25A0
-SHARP S, LATIN SMALL LETTER 00DF
-SHARP SIGN, MUSIC 266F
-Shavian 10450
-SHEQEL SIGN, NEW 20AA
-shift 21E7
-shift in 000F
-SHIFT IN, SYMBOL FOR 240F
-shift out 000E
-SHIFT OUT, SYMBOL FOR 240E
-shilling 002F
-SHOGI PIECE, BLACK 2617
-SHOGI PIECE, WHITE 2616
-short 0306
-SHORT DOWN TACK 2ADF
-SHORT DOWN TACK, SHORT UP TACK ABOVE 2AE9
-SHORT DOWN TACK WITH OVERBAR 2AE7
-SHORT I WITH TAIL, CYRILLIC CAPITAL LETTER 048A
-SHORT I WITH TAIL, CYRILLIC SMALL LETTER 048B
-SHORT LEFT TACK 2ADE
-short slash overlay 0337
-SHORT SOLIDUS OVERLAY, COMBINING 0337
-SHORT STROKE OVERLAY, COMBINING 0335
-SHORT UP TACK 2AE0
-SHORT UP TACK ABOVE SHORT DOWN TACK 2AE9
-SHORT UP TACK WITH UNDERBAR 2AE8
-SHORT VERTICAL LINE OVERLAY, COMBINING 20D3
-SHOULDERED OPEN BOX 237D
-SHUFFLE PRODUCT 29E2
-shy 00AD
-Sibe Letters, Mongolian 185D
-Sidelining Emphasis Marks FE45
-SIMILAR, SIMILAR MINUS 2A6C
-SIMILAR ABOVE GREATER-THAN, LESS-THAN ABOVE 2A8F
-SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN 2AA0
-SIMILAR ABOVE LESS-THAN, GREATER-THAN ABOVE 2A90
-SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN 2A9F
-SIMILAR MINUS SIMILAR 2A6C
-SIMILAR OR EQUAL, GREATER-THAN ABOVE 2A8E
-SIMILAR OR EQUAL, LESS-THAN ABOVE 2A8D
-SIMILAR OR GREATER-THAN 2A9E
-SIMILAR OR LESS-THAN 2A9D
-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 PUNCTUATION, PHILIPPINE 1735
-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, CIRCLED DIVISION 2298
-SLASH, DIVISION 2215
-SLASH, DOES NOT DIVIDE WITH REVERSED NEGATION 2AEE
-SLASH, FRACTION 2044
-SLASH, INTEGRAL AVERAGE WITH 2A0F
-SLASH, SQUARED FALLING DIAGONAL 29C5
-SLASH, SQUARED RISING DIAGONAL 29C4
-slash overlay, long 0338
-slash overlay, short 0337
-SLOPE 2333
-SLOPING LARGE AND 2A58
-SLOPING LARGE OR 2A57
-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 CIRCLE, SQUARED 29C7
-SMALL CIRCLE ABOVE, PLUS SIGN WITH 2A22
-SMALL CIRCLE TO THE RIGHT, CIRCLE WITH 29C2
-SMALL CONTAINS AS MEMBER 220D
-SMALL CONTAINS WITH OVERBAR 22FE
-SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE 22FC
-SMALL D, DOUBLE-STRUCK ITALIC 2146
-SMALL E, DOUBLE-STRUCK ITALIC 2147
-SMALL ELEMENT OF 220A
-SMALL ELEMENT OF WITH OVERBAR 22F7
-SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE 22F4
-Small Form Variants FE50
-SMALL GAMMA, DOUBLE-STRUCK 213D
-SMALL I, DOUBLE-STRUCK ITALIC 2148
-SMALL J, DOUBLE-STRUCK ITALIC 2149
-Small Letters, Armenian 0561
-Small Letters, Combining Latin 0363
-Small Letters, Cyrillic 0430
-Small Letters, Georgian 10D0
-Small Letters, Greek 03B1
-Small Letters, Latin 0061
-SMALL SQUARE, BLACK MEDIUM 25FE
-SMALL SQUARE, WHITE MEDIUM 25FD
-SMALL VEE WITH UNDERBAR 2A61
-SMALLER THAN 2AAA
-SMALLER THAN OR EQUAL TO 2AAC
-SMASH PRODUCT 2A33
-SMASH PRODUCT, CLOSED UNION WITH SERIFS AND 2A50
-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, BIG 29F8
-SOLIDUS, BIG REVERSE 29F9
-SOLIDUS, CIRCLED REVERSE 29B8
-SOLIDUS, REVERSE 005C
-SOLIDUS BINARY RELATION, TRIPLE 2AFB
-SOLIDUS OPERATOR, DOUBLE 2AFD
-SOLIDUS OPERATOR, REVERSE 29F5
-SOLIDUS OVERLAY, COMBINING LONG 0338
-SOLIDUS OVERLAY, COMBINING REVERSE 20E5
-SOLIDUS OVERLAY, COMBINING SHORT 0337
-SOLIDUS WITH HORIZONTAL STROKE, REVERSE 29F7
-SOLIDUS WITH OVERBAR 29F6
-SOUND RECORDING COPYRIGHT 2117
-SOURCE, INFORMATION 2139
-SPACE 0020
-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, MEDIUM MATHEMATICAL 205F
-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
-SPACE MARK, OGHAM 1680
-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
-Special character extensions 23AE
-Specialized plus sign operators 29FA
-Specials FFF0
-Specials Area, Compatibility and F900
-SPHERICAL ANGLE 2222
-SPHERICAL ANGLE OPENING LEFT 29A0
-SPHERICAL ANGLE OPENING UP 29A1
-SPOT, Z NOTATION 2981
-SQUARE, BLACK MEDIUM 25FC
-SQUARE, BLACK MEDIUM SMALL 25FE
-SQUARE, COMBINING ENCLOSING 20DE
-SQUARE, VIEWDATA 2317
-SQUARE, WHITE MEDIUM 25FB
-SQUARE, WHITE MEDIUM SMALL 25FD
-SQUARE BELOW, COMBINING 033B
-square bracket, closing 005D
-SQUARE BRACKET, LEFT 005B
-SQUARE BRACKET, LEFT WHITE 301A
-square bracket, opening 005B
-SQUARE BRACKET, RIGHT 005D
-SQUARE BRACKET WITH QUILL, LEFT 2045
-SQUARE CAP 2293
-SQUARE CORPORATION 337F
-SQUARE CUP 2294
-SQUARE FOOT 23CD
-SQUARE IMAGE OF 228F
-SQUARE INTERSECTION, DOUBLE 2A4E
-SQUARE INTERSECTION OPERATOR, N-ARY 2A05
-SQUARE LEFT OPEN BOX OPERATOR 2ACD
-SQUARE LOZENGE 2311
-SQUARE ORIGINAL OF 2290
-SQUARE RIGHT OPEN BOX OPERATOR 2ACE
-SQUARE ROOT 221A
-Square Symbols 29C4
-SQUARE UNION, DOUBLE 2A4F
-SQUARE UNION OPERATOR, N-ARY 2A06
-SQUARE WITH CONTOURED OUTLINE 29E0
-SQUARE WITH LEFTWARDS TICK, WHITE 27E4
-SQUARE WITH RIGHTWARDS TICK, WHITE 27E5
-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, ARABIC FIVE POINTED 066D
-STAR, BLACK 2605
-STAR AND CRESCENT 262A
-Star Dingbats 2726
-STAR EQUALS 225B
-STAR OF DAVID 2721
-STAR OPERATOR 22C6
-starburst 273A
-STARK, GLEICH 29E6
-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, device control 0090
-string, start of 0098
-string terminator 009C
-STROKE OVERLAY, COMBINING LONG 0336
-STROKE OVERLAY, COMBINING SHORT 0335
-SUBGROUP, CONTAINS AS NORMAL 22B3
-SUBGROUP OF, NORMAL 22B2
-subscript, iota 0345
-Subscript Digits 2080
-SUBSCRIPT EQUALS SIGN 208C
-SUBSCRIPT LEFT PARENTHESIS 208D
-SUBSCRIPT MINUS 208B
-SUBSCRIPT PLUS SIGN 208A
-SUBSCRIPT TWO, PLUS SIGN WITH 2A27
-Subscripts 2080
-SUBSET, DOUBLE 22D0
-Subset and Superset Relations 2ABD
-SUBSET OF 2282
-substitute 001A
-SUBSTITUTE, SYMBOL FOR 241A
-SUBSTITUTE FORM TWO, SYMBOL FOR 2426
-Subtending Marks, Arabic 0600
-subtraction, z notation bag 2A41
-SUCCEEDS 227B
-SUCCEEDS, DOUBLE 2ABC
-SUCCEEDS ABOVE ALMOST EQUAL TO 2AB8
-SUCCEEDS ABOVE EQUALS SIGN 2AB4
-SUCCEEDS ABOVE NOT ALMOST EQUAL TO 2ABA
-SUCCEEDS ABOVE NOT EQUAL TO 2AB6
-SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN 2AB0
-SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO 2AB2
-SUCCEEDS UNDER RELATION 22B1
-such that 220B
-such that 2223
-Suits, Playing Card 2660
-sum, direct 2295
-SUM, MODULO TWO 2A0A
-sum, positive difference or 2A24
-sum or positive difference 2A26
-SUMMATION, DOUBLE-STRUCK N-ARY 2140
-SUMMATION, N-ARY 2211
-SUMMATION BOTTOM 23B3
-Summation Sign Parts 23B2
-SUMMATION TOP 23B2
-Summations and Integrals 2A0A
-SUN 2609
-SUN WITH RAYS, BLACK 2600
-SUPERIMPOSED X, CIRCLE WITH 29BB
-SUPERSCRIPT ALEF, ARABIC LETTER 0670
-Superscript Digits 2070
-SUPERSCRIPT EQUALS SIGN 207C
-SUPERSCRIPT LATIN SMALL LETTER I 2071
-SUPERSCRIPT LEFT PARENTHESIS 207D
-Superscript Letter Diacritics, Medieval 0363
-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, DOUBLE 22D1
-SUPERSET OF 2283
-Superset Relations, Subset and 2ABD
-Supplemental Arrows-A 27F0
-Supplemental Arrows-B 2900
-Supplemental Mathematical Operators 2A00
-Supplementary, Cyrillic 0500
-Supplementary Private Use Area-A F0000
-Supplementary Private Use Area-B 100000
-SURFACE INTEGRAL 222F
-surjection, z notation finite 2901
-surjection, z notation partial 2900
-surjective injection, z notation 2917
-surjective injection, z notation finite 2918
-Surrogates, High D800
-Surrogates, Low DC00
-Surrogates Area D800
-swedish grave accent 02DF
-SWUNG DASH 2053
-Syllabics, Unified Canadian Aboriginal 1400
-Syllables, Yi A000
-Syllables Area, Korean Hangul AC00
-Symbol Variants, Fullwidth FFE0
-Symbols, Bowtie 29D1
-Symbols, Circle 29B5
-Symbols, Combining Diacritical Marks for 20D0
-Symbols, Dentistry Notation 23BE
-Symbols, Double-Struck Italic Mathematical 2145
-Symbols, Error Bar 29EE
-Symbols, Greek 03D0
-Symbols, Japanese Chess 2616
-Symbols, Letterlike 2100
-Symbols, Miscellaneous 2600
-Symbols, Recycling 2672
-Symbols, Square 29C4
-Symbols, Triangle 29CA
-Symbols and Arrows, Miscellaneous 2B00
-Symbols and Punctuation, CJK 3000
-Symbols Area 2000
-Symbols Area, CJK Phonetics and 2E00
-Symbols for Control Codes, Graphic 2400
-Symbols For Plastics, Recycling 2673
-Symbols-A, Miscellaneous Mathematical 27C0
-Symbols-B, Miscellaneous Mathematical 2980
-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 ABBREVIATION MARK 070F
-SYRIAC CROSS, EAST 2671
-SYRIAC CROSS, WEST 2670
-Syriac Format Control 070F
-T, COMBINING LATIN SMALL LETTER 036D
-T, LATIN SMALL LETTER TURNED 0287
-tab 0009
-tab, leftward 21E4
-tab, rightward 21E5
-tab, symbol for 2409
-tab with shift tab 21B9
-tabulation, horizontal 0009
-TABULATION, SYMBOL FOR HORIZONTAL 2409
-TABULATION, SYMBOL FOR VERTICAL 240B
-tabulation, vertical 000B
-tabulation set, character 0088
-tabulation set, line 008A
-tabulation with justification, character 0089
-TACK, LEFT 22A3
-TACK, MODIFIER LETTER UP 02D4
-TACK, RIGHT 22A2
-TACK, UP 22A5
-TACK BELOW, COMBINING LEFT 0318
-TACK BELOW, COMBINING UP 031D
-Tacks and Turnstiles 27D8
-Tacks and Turnstiles 2ADE
-Tagalog 1700
-TAGALOG SIGN VIRAMA 1714
-Tagbanwa 1760
-Tai Le 1950
-Tai Xuan Jing Symbols 1D300
-TAIL FRAGMENT, ARABIC FE73
-Tails, Fish 297C
-tainome (japanese, a kind of bullet) 25C9
-TAKE, PRESCRIPTION 211E
-Tamil 0B80
-Tamil Digits 0BE7
-Tamil Letters 0B85
-TAMIL RUPEE SIGN 0BF9
-TAMIL NUMBER SIGN 0BFA
-Tamil Symbols 0BF3
-TAPE DRIVE 2707
-TAPER, CONICAL 2332
-TAURUS 2649
-tautological equivalent 29E6
-tautology 22A8
-tea 2615
-Technical, Miscellaneous 2300
-TEE TOP, PITCHFORK WITH 2ADA
-Telegraph Symbols for Days 33E0
-Telegraph Symbols for Hours 3358
-Telegraph Symbols for Months 32C0
-TELEPHONE, BLACK 260E
-TELEPHONE LOCATION SIGN 2706
-TELEPHONE RECORDER 2315
-TELEPHONE SIGN 2121
-Telugu 0C00
-Telugu Digits 0C66
-Telugu Letters 0C05
-TEN THOUSAND SIGN, PER 2031
-tensor 20E1
-tensor product 2297
-Terminal graphic characters 23B7
-Terminal Graphic Characters 2596
-Terminal Graphics, Scan Lines For 23BA
-terminator, string 009C
-Tetragram Symbols, Tai Xuan Jing 1D306
-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
-THERMODYNAMIC 29E7
-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, SUPERSCRIPT 00B3
-three dot leader 2026
-THREE DOTS ABOVE, COMBINING 20DB
-THREE QUARTERS, VULGAR FRACTION 00BE
-THREE-PER-EM SPACE 2004
-THUNDERSTORM 2608
-Tibetan 0F00
-Tibetan, Mongolian Extensions for Sanskrit and 1880
-Tibetan Digits 0F20
-Tibetan Letters 0F40
-TICK, WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS 27E2
-TICK, WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS 27E3
-TICK, WHITE SQUARE WITH LEFTWARDS 27E4
-TICK, WHITE SQUARE WITH RIGHTWARDS 27E5
-TIE, CHARACTER 2040
-tie, ligature 0361
-TIE OVER INFINITY 29DD
-TILDE 007E
-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
-TILDE ABOVE, COMBINING NOT 034A
-TILDE BELOW, COMBINING 0330
-TILDE EQUALS, REVERSED 22CD
-TILDE LEFT HALF, COMBINING DOUBLE FE22
-TILDE OPERATOR 223C
-TILDE OPERATOR, EQUALS SIGN ABOVE 2A73
-TILDE OPERATOR, PARALLEL WITH 2AF3
-TILDE OPERATOR, SUBSET OF ABOVE 2AC7
-TILDE OPERATOR, SUPERSET OF ABOVE 2AC8
-TILDE OPERATOR WITH DOT ABOVE 2A6A
-TILDE OPERATOR WITH RISING DOTS 2A6B
-TILDE OVERLAY, COMBINING 0334
-TIMES, CIRCLED 2297
-TIMES, DIVISION 22C7
-TIMES, INVISIBLE 2062
-TIMES, SQUARED 22A0
-TIMES OPERATOR, N-ARY 2A09
-TIMES OPERATOR, N-ARY CIRCLED 2A02
-TIMES SIGN, INTEGRAL WITH 2A18
-TIMES WITH LEFT HALF BLACK 29D4
-TIMES WITH RIGHT HALF BLACK 29D5
-TINY 29FE
-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, fourth 2138
-transfinite cardinal (countable), first 2135
-transfinite cardinal (functions of a real variable), third 2137
-transfinite cardinal (the continuum), second 2136
-transmission, end of 0004
-transmission, graphic for end of 2301
-TRANSMISSION, SYMBOL FOR END OF 2404
-transmission block, end of 0017
-TRANSMISSION BLOCK, SYMBOL FOR END OF 2417
-transmit state, set 0093
-TRANSVERSAL INTERSECTION 2ADB
-TRIANGLE, COMBINING ENCLOSING UPWARD POINTING 20E4
-TRIANGLE, LOWER LEFT 25FA
-TRIANGLE, LOWER RIGHT 25FF
-TRIANGLE, MINUS SIGN IN 2A3A
-TRIANGLE, MULTIPLICATION SIGN IN 2A3B
-TRIANGLE, PLUS SIGN IN 2A39
-TRIANGLE, PLUS SIGN WITH BLACK 2A28
-TRIANGLE, RIGHT 22BF
-TRIANGLE, UPPER LEFT 25F8
-TRIANGLE, UPPER RIGHT 25F9
-TRIANGLE, VERTICAL BAR BESIDE RIGHT 29D0
-TRIANGLE OPERATOR, LARGE LEFT 2A1E
-Triangle symbols 29CA
-TRIANGLE WITH LEFT HALF BLACK, DOWN-POINTING 29E8
-TRIANGLE WITH RIGHT HALF BLACK, DOWN-POINTING 29E9
-Triangles 25B2
-TRIANGULAR BULLET 2023
-TRIANGULAR COLON, MODIFIER LETTER 02D0
-TRIANGULAR COLON, MODIFIER LETTER HALF 02D1
-Trigram Symbols, Yijing 2630
-trine 25B3
-TRIPLE COLON OPERATOR 2AF6
-TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE 2A68
-TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE 2A69
-TRIPLE INTEGRAL 222D
-TRIPLE NESTED GREATER-THAN 2AF8
-TRIPLE NESTED LESS-THAN 2AF7
-TRIPLE PLUS 29FB
-TRIPLE PRIME 2034
-TRIPLE PRIME, REVERSED 2037
-TRIPLE RIGHT TURNSTILE, VERTICAL BAR 2AE2
-TRIPLE SOLIDUS BINARY RELATION 2AFB
-TRIPLE TILDE 224B
-TRIPLE UNDERDOT, COMBINING 20E8
-TRIPLE VERTICAL BAR BINARY RELATION 2AF4
-TRIPLE VERTICAL BAR DELIMITER 2980
-TRIPLE VERTICAL BAR OPERATOR, LARGE 2AFC
-TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE 2AF5
-TRIPLE VERTICAL STROKE, TRIPLE HORIZONTAL BAR WITH 2A69
-TRUE 22A8
-TUGRIK SIGN 20AE
-turbofan 274B
-turkish currency 20A4
-TURNED A, LATIN SMALL LETTER 0250
-TURNED ALPHA, LATIN SMALL LETTER 0252
-TURNED AMPERSAND 214B
-TURNED ANGLE 29A2
-TURNED CAPITAL F 2132
-TURNED COMMA, MODIFIER LETTER 02BB
-TURNED COMMA ABOVE, COMBINING 0312
-turned comma quotation mark, double 201C
-turned comma quotation mark, single 2018
-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 SANS-SERIF CAPITAL G 2141
-TURNED SANS-SERIF CAPITAL L 2142
-TURNED SANS-SERIF CAPITAL Y 2144
-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
-Turnstiles, Tacks and 27D8
-Turnstiles, Tacks and 2ADE
-TWO, SUPERSCRIPT 00B2
-TWO DOT LEADER 2025
-TWO-HEADED ARROW FROM BAR, RIGHTWARDS 2905
-TWO-HEADED ARROW WITH TAIL, RIGHTWARDS 2916
-TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE, RIGHTWARDS 2917
-TYPE COLON, Z NOTATION 2982
-U, COMBINING LATIN SMALL LETTER 0367
-Ugaritic 10380
-UMBRELLA 2602
-UMBRELLA WITH RAIN DROPS 2614
-umlaut 0308
-UNASPIRATED, MODIFIER LETTER 02ED
-UNDERDOT, COMBINING TRIPLE 20E8
-underline 0332
-underline, double 0333
-UNDERLINE SYMBOL, CONTINUOUS 2381
-UNDERLINE SYMBOL, DISCONTINUOUS 2382
-underscore 0332
-underscore, double 0333
-underscore, spacing 005F
-underscore, spacing double 2017
-Underscores, Overscores and FE49
-UNDERTIE 203F
-UNDERTIE, INVERTED 2054
-UNDO SYMBOL 238C
-undoable delete 2425
-UNION 222A
-UNION, DOUBLE 22D3
-UNION, DOUBLE SQUARE 2A4F
-UNION, INTEGRAL WITH 2A1A
-UNION, INTERSECTION ABOVE 2A47
-UNION, INTERSECTION ABOVE BAR ABOVE 2A49
-UNION, MULTISET 228E
-UNION, N-ARY 22C3
-UNION, UNION BESIDE AND JOINED WITH 2A4A
-UNION ABOVE BAR ABOVE INTERSECTION 2A48
-UNION ABOVE INTERSECTION 2A46
-UNION BESIDE AND JOINED WITH UNION 2A4A
-UNION OPERATOR, N-ARY SQUARE 2A06
-UNION OPERATOR WITH DOT, N-ARY 2A03
-UNION OPERATOR WITH PLUS, N-ARY 2A04
-UNION WITH LOGICAL OR 2A45
-UNION WITH MINUS SIGN 2A41
-UNION WITH OVERBAR 2A42
-UNION WITH SERIFS, CLOSED 2A4C
-UNION WITH SERIFS AND SMASH PRODUCT, CLOSED 2A50
-Unions, Intersections and 2A40
-unique element 2129
-unit separator 001F
-UNIT SEPARATOR, SYMBOL FOR 241F
-UNIVERSAL RECYCLING SYMBOL 2672
-UNIVERSAL RECYCLING SYMBOL, BLACK 267B
-up, page 21DE
-UP ARROWHEAD 2303
-UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS 2324
-UP RIGHT DIAGONAL ELLIPSIS 22F0
-UP TACK 22A5
-UP TACK, MODIFIER LETTER 02D4
-UP TACK BELOW, COMBINING 031D
-UPA Modifiers 02EF
-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, Eastern Arabic-Indic Digits for Persian and 06F0
-urdu paragraph separator 203B
-V, COMBINING LATIN SMALL LETTER 036E
-v, latin capital letter script 01B2
-v, latin small letter script 028B
-V, LATIN SMALL LETTER TURNED 028C
-V WITH HOOK, LATIN CAPITAL LETTER 01B2
-valentine 2665
-valid 22A8
-varia 0300
-Variation Selectors FE00
-Variation Selectors Supplement E0100
-varies with (proportional to) 223C
-vector 20D0
-vector 20D6
-VECTOR OR CROSS PRODUCT 2A2F
-vector pointing into page 2295
-vector pointing into page 2297
-vector pointing out of page 2299
-vee 2228
-vee above 030C
-VEE WITH UNDERBAR, SMALL 2A61
-venus 2640
-VERSICLE 2123
-VERTICAL, LONG DASH FROM LEFT MEMBER OF DOUBLE 2AE6
-vertical bar 007C
-vertical bar, broken 00A6
-VERTICAL BAR, CIRCLED 29B6
-VERTICAL BAR, N-ARY WHITE 2AFF
-VERTICAL BAR, WHITE 2AFE
-VERTICAL BAR BINARY RELATION, TRIPLE 2AF4
-VERTICAL BAR DELIMITER, TRIPLE 2980
-Vertical Bar Dingbats 2758
-VERTICAL BAR OPERATOR, LARGE TRIPLE 2AFC
-VERTICAL BAR WITH HORIZONTAL STROKE, TRIPLE 2AF5
-vertical bowtie 29D6
-VERTICAL BOX LINE, LEFT 23B8
-VERTICAL BOX LINE, RIGHT 23B9
-Vertical brackets 23B4
-VERTICAL ELLIPSIS 22EE
-VERTICAL IDEOGRAPHIC ITERATION MARK 303B
-VERTICAL KANA REPEAT MARK 3031
-VERTICAL LINE 007C
-VERTICAL LINE, DOUBLE 2016
-VERTICAL LINE, MODIFIER LETTER 02C8
-VERTICAL LINE, MODIFIER LETTER LOW 02CC
-VERTICAL LINE ABOVE, COMBINING 030D
-VERTICAL LINE ABOVE, COMBINING DOUBLE 030E
-VERTICAL LINE BELOW, COMBINING 0329
-VERTICAL LINE BELOW, COMBINING DOUBLE 0348
-VERTICAL LINE EXTENSION 23D0
-Vertical Line Operators 2AEE
-VERTICAL LINE OVERLAY, COMBINING LONG 20D2
-VERTICAL LINE OVERLAY, COMBINING SHORT 20D3
-VERTICAL LINE WITH CIRCLE ABOVE 2AEF
-VERTICAL LINE WITH CIRCLE BELOW 2AF0
-VERTICAL LINE WITH MIDDLE DOT 237F
-VERTICAL STROKE OVERLAY, COMBINING DOUBLE 20E6
-vertical tabulation 000B
-VERTICAL TABULATION, SYMBOL FOR 240B
-Vertical Text, Double Punctuation For 2047
-VERTICAL TILDE, COMBINING 033E
-Vertical Variants, Glyphs for FE30
-VERTICAL ZIGZAG LINE 299A
-VERY MUCH GREATER-THAN 22D9
-VERY MUCH LESS-THAN 22D8
-VICTORY HAND 270C
-Vietnamese, Latin Extensions for 1EA0
-vietnamese currency 20AB
-Vietnamese Tone Marks 0340
-VIEWDATA SQUARE 2317
-vinculum 0305
-viram, deergh 0965
-viram, purna 0964
-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, TAGALOG SIGN 1714
-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
-VOLTAGE SIGN, HIGH 26A1
-vrachy 0306
-VS1 FE00
-W, LATIN SMALL LETTER TURNED 028D
-W, MODIFIER LETTER SMALL 02B7
-WARNING SIGN 26A0
-Warning Signs 2620
-Warning Signs 26A0
-WATCH 231A
-WAVE, SINE 223F
-WAVE DASH 301C
-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
-WHITE BULLET, CIRCLED 29BE
-WHITE CIRCLE WITH DOT RIGHT 2686
-WHITE CIRCLE WITH DOWN ARROW 29EC
-WHITE CIRCLE WITH TWO DOTS 2687
-WHITE CONCAVE-SIDED DIAMOND 27E1
-WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK 27E2
-WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK 27E3
-WHITE DIAMOND WITH CENTRED DOT 27D0
-WHITE DOT RIGHT, BLACK CIRCLE WITH 2688
-WHITE DOTS, BLACK CIRCLE WITH TWO 2689
-WHITE FLAG 2690
-white framus 29D6
-WHITE HOURGLASS 29D6
-WHITE MEDIUM SMALL SQUARE 25FD
-WHITE MEDIUM SQUARE 25FB
-White On Black Circled Numbers 24EB
-WHITE SESAME DOT FE46
-WHITE SHOGI PIECE 2616
-WHITE SQUARE WITH LEFTWARDS TICK 27E4
-WHITE SQUARE WITH RIGHTWARDS TICK 27E5
-WHITE VERTICAL BAR 2AFE
-WHITE VERTICAL BAR, N-ARY 2AFF
-WIDE BRIDGE ABOVE, COMBINING 20E9
-WIGGLY FENCE, LEFT 29D8
-WIGGLY FENCE, LEFT DOUBLE 29DA
-WIGGLY FENCE, RIGHT 29D9
-WIGGLY FENCE, RIGHT DOUBLE 29DB
-wj 2060
-WON SIGN 20A9
-WORD DIVIDER, UGARITIC 1039F
-WORD JOINER 2060
-Word Separators, Aegean 10100
-Words, Squared Japanese Katakana 3300
-WORDSPACE, ETHIOPIC 1361
-WREATH PRODUCT 2240
-WRITING HAND 270D
-WYNN, LATIN CAPITAL LETTER 01F7
-WYNN, LATIN LETTER 01BF
-X, BALLOT 2717
-X, BALLOT BOX WITH 2612
-X, CIRCLE WITH SUPERIMPOSED 29BB
-X, COMBINING LATIN SMALL LETTER 036F
-X, HEAVY BALLOT 2718
-X, HEAVY MULTIPLICATION 2716
-X, MODIFIER LETTER SMALL 02E3
-X, MULTIPLICATION 2715
-X ABOVE, COMBINING 033D
-X IN A RECTANGLE BOX 2327
-XOR 22BB
-Y, LATIN LETTER SMALL CAPITAL 028F
-Y, LATIN SMALL LETTER TURNED 028E
-Y, MODIFIER LETTER SMALL 02B8
-Y, TURNED SANS-SERIF CAPITAL 2144
-YANG, YIN 262F
-YEN SIGN 00A5
-Yi Radicals A490
-Yi Syllables A000
-Yiddish Digraphs 05F0
-yields 22A2
-Yijing Monogram and Digram Symbols 268A
-Yijing Hexagram Symbols 4DC0
-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
-Z NOTATION BAG MEMBERSHIP 22FF
-z notation bag subtraction 2A41
-z notation bijection 2917
-Z Notation Binding Brackets 2989
-Z NOTATION DOMAIN ANTIRESTRICTION 2A64
-z notation finite function 20E6
-z notation finite function 21FB
-z notation finite injection 2915
-z notation finite relation 21FC
-z notation finite surjection 2901
-z notation finite surjective injection 2918
-Z Notation Image Brackets 2987
-z notation left bag bracket 27E6
-z notation partial function 21F8
-z notation partial injection 2914
-z notation partial relation 21F9
-z notation partial surjection 2900
-Z NOTATION RANGE ANTIRESTRICTION 2A65
-Z NOTATION RELATIONAL COMPOSITION 2A3E
-Z NOTATION SCHEMA COMPOSITION 2A1F
-z notation schema hiding 29F9
-Z NOTATION SCHEMA PIPING 2A20
-Z NOTATION SCHEMA PROJECTION 2A21
-z notations sequence concatenation 2040
-Z NOTATION SPOT 2981
-z notation surjective injection 2917
-Z NOTATION TYPE COLON 2982
-Zapf Dingbats Series 100, ITC 2700
-ZERO, CIRCLED DIGIT 24EA
-ZERO, IDEOGRAPHIC NUMBER 3007
-ZERO, SUPERSCRIPT 2070
-ZERO WIDTH JOINER 200D
-ZERO WIDTH NO-BREAK SPACE FEFF
-ZERO WIDTH NON-JOINER 200C
-ZERO WIDTH SPACE 200B
-ZIGZAG ARROW, RIGHT ANGLE WITH DOWNWARDS 237C
-ZIGZAG LINE, VERTICAL 299A
-Zodiacal Symbols 2648
-zwj 200D
-zwnbsp FEFF
-zwnj 200C
-zwsp 200B
-
diff --git a/Master/tlpkg/tlperl/lib/unicore/Jamo.txt b/Master/tlpkg/tlperl/lib/unicore/Jamo.txt
deleted file mode 100644
index 84f54bea902..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/Jamo.txt
+++ /dev/null
@@ -1,92 +0,0 @@
-# Jamo-4.1.0.txt
-# Date: 2004-12-09, 17:48 PST [KW]
-#
-# Unicode Character Database
-# Copyright (c) 1991-2004 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see UCD.html
-#
-# This file defines the Jamo Short Name property.
-#
-# See Section 3.12 of The Unicode Standard, Version 4.0
-# for more information.
-#
-# Each line contains two fields, separated by a semicolon.
-#
-# The first field gives the code point, in 4-digit hexadecimal
-# form, of a combining jamo character that participates in
-# the algorithmic determination Hangul syllable character names.
-# The second field gives the Jamo Short Name as a one-, two-,
-# or three-character ASCII string (or in one case, for U+110B,
-# the null string).
-#
-# #############################################################
-
-1100; G # HANGUL CHOSEONG KIYEOK
-1101; GG # HANGUL CHOSEONG SSANGKIYEOK
-1102; N # HANGUL CHOSEONG NIEUN
-1103; D # HANGUL CHOSEONG TIKEUT
-1104; DD # HANGUL CHOSEONG SSANGTIKEUT
-1105; R # HANGUL CHOSEONG RIEUL
-1106; M # HANGUL CHOSEONG MIEUM
-1107; B # HANGUL CHOSEONG PIEUP
-1108; BB # HANGUL CHOSEONG SSANGPIEUP
-1109; S # HANGUL CHOSEONG SIOS
-110A; SS # HANGUL CHOSEONG SSANGSIOS
-110B; # HANGUL CHOSEONG IEUNG
-110C; J # HANGUL CHOSEONG CIEUC
-110D; JJ # HANGUL CHOSEONG SSANGCIEUC
-110E; C # HANGUL CHOSEONG CHIEUCH
-110F; K # HANGUL CHOSEONG KHIEUKH
-1110; T # HANGUL CHOSEONG THIEUTH
-1111; P # HANGUL CHOSEONG PHIEUPH
-1112; H # HANGUL CHOSEONG HIEUH
-1161; A # HANGUL JUNGSEONG A
-1162; AE # HANGUL JUNGSEONG AE
-1163; YA # HANGUL JUNGSEONG YA
-1164; YAE # HANGUL JUNGSEONG YAE
-1165; EO # HANGUL JUNGSEONG EO
-1166; E # HANGUL JUNGSEONG E
-1167; YEO # HANGUL JUNGSEONG YEO
-1168; YE # HANGUL JUNGSEONG YE
-1169; O # HANGUL JUNGSEONG O
-116A; WA # HANGUL JUNGSEONG WA
-116B; WAE # HANGUL JUNGSEONG WAE
-116C; OE # HANGUL JUNGSEONG OE
-116D; YO # HANGUL JUNGSEONG YO
-116E; U # HANGUL JUNGSEONG U
-116F; WEO # HANGUL JUNGSEONG WEO
-1170; WE # HANGUL JUNGSEONG WE
-1171; WI # HANGUL JUNGSEONG WI
-1172; YU # HANGUL JUNGSEONG YU
-1173; EU # HANGUL JUNGSEONG EU
-1174; YI # HANGUL JUNGSEONG YI
-1175; I # HANGUL JUNGSEONG I
-11A8; G # HANGUL JONGSEONG KIYEOK
-11A9; GG # HANGUL JONGSEONG SSANGKIYEOK
-11AA; GS # HANGUL JONGSEONG KIYEOK-SIOS
-11AB; N # HANGUL JONGSEONG NIEUN
-11AC; NJ # HANGUL JONGSEONG NIEUN-CIEUC
-11AD; NH # HANGUL JONGSEONG NIEUN-HIEUH
-11AE; D # HANGUL JONGSEONG TIKEUT
-11AF; L # HANGUL JONGSEONG RIEUL
-11B0; LG # HANGUL JONGSEONG RIEUL-KIYEOK
-11B1; LM # HANGUL JONGSEONG RIEUL-MIEUM
-11B2; LB # HANGUL JONGSEONG RIEUL-PIEUP
-11B3; LS # HANGUL JONGSEONG RIEUL-SIOS
-11B4; LT # HANGUL JONGSEONG RIEUL-THIEUTH
-11B5; LP # HANGUL JONGSEONG RIEUL-PHIEUPH
-11B6; LH # HANGUL JONGSEONG RIEUL-HIEUH
-11B7; M # HANGUL JONGSEONG MIEUM
-11B8; B # HANGUL JONGSEONG PIEUP
-11B9; BS # HANGUL JONGSEONG PIEUP-SIOS
-11BA; S # HANGUL JONGSEONG SIOS
-11BB; SS # HANGUL JONGSEONG SSANGSIOS
-11BC; NG # HANGUL JONGSEONG IEUNG
-11BD; J # HANGUL JONGSEONG CIEUC
-11BE; C # HANGUL JONGSEONG CHIEUCH
-11BF; K # HANGUL JONGSEONG KHIEUKH
-11C0; T # HANGUL JONGSEONG THIEUTH
-11C1; P # HANGUL JONGSEONG PHIEUPH
-11C2; H # HANGUL JONGSEONG HIEUH
-
diff --git a/Master/tlpkg/tlperl/lib/unicore/LineBreak.txt b/Master/tlpkg/tlperl/lib/unicore/LineBreak.txt
deleted file mode 100644
index 988f1caf866..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/LineBreak.txt
+++ /dev/null
@@ -1,17169 +0,0 @@
-# LineBreak-4.1.0.txt
-# Date: 2005-03-17, 15:21:00 PST [KW]
-#
-# Line Break Properties
-#
-# This file is a normative contributory data file in the
-# Unicode Character Database.
-# It contains both normative and informative data.
-#
-# Copyright (c) 1991-2005 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-#
-# The format is two fields separated by a semicolon.
-# Field 0: Unicode value
-# Field 1: LineBreak property, consisting of one of the following values:
-# Normative:
-# "BK", "CR", "LF", "CM", "SG", "GL", "CB", "SP", "ZW",
-# "NL", "WJ", "JL", "JV", "JT", "H2", "H3"
-# Informative:
-# "XX", "OP", "CL", "QU", "NS", "EX", "SY",
-# "IS", "PR", "PO", "NU", "AL", "ID", "IN", "HY",
-# "BB", "BA", "SA", "AI", "B2"
-# - All code points, assigned and unassigned, that are not listed
-# explicitly are given the value "XX".
-# - Characters ranges are specified as for other property files in
-# the Unicode Character Database.
-#
-# The Unicode name of each character is provided in a comment for help
-# in identifying the characters.
-#
-# See UAX #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;NL # <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;BB # ACUTE ACCENT
-00B5;AL # MICRO SIGN
-00B6;AI # PILCROW SIGN
-00B7;AI # MIDDLE DOT
-00B8;AI # CEDILLA
-00B9;AI # SUPERSCRIPT ONE
-00BA;AI # MASCULINE ORDINAL INDICATOR
-00BB;QU # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-00BC;AI # VULGAR FRACTION ONE QUARTER
-00BD;AI # VULGAR FRACTION ONE HALF
-00BE;AI # VULGAR FRACTION THREE QUARTERS
-00BF;AI # INVERTED QUESTION MARK
-00C0;AL # LATIN CAPITAL LETTER A WITH GRAVE
-00C1;AL # LATIN CAPITAL LETTER A WITH ACUTE
-00C2;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-00C3;AL # LATIN CAPITAL LETTER A WITH TILDE
-00C4;AL # LATIN CAPITAL LETTER A WITH DIAERESIS
-00C5;AL # LATIN CAPITAL LETTER A WITH RING ABOVE
-00C6;AL # 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;AL # 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;AL # 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;AL # LATIN CAPITAL LETTER THORN
-00DF;AL # LATIN SMALL LETTER SHARP S
-00E0;AL # LATIN SMALL LETTER A WITH GRAVE
-00E1;AL # 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;AL # LATIN SMALL LETTER AE
-00E7;AL # LATIN SMALL LETTER C WITH CEDILLA
-00E8;AL # LATIN SMALL LETTER E WITH GRAVE
-00E9;AL # LATIN SMALL LETTER E WITH ACUTE
-00EA;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX
-00EB;AL # LATIN SMALL LETTER E WITH DIAERESIS
-00EC;AL # LATIN SMALL LETTER I WITH GRAVE
-00ED;AL # LATIN SMALL LETTER I WITH ACUTE
-00EE;AL # LATIN SMALL LETTER I WITH CIRCUMFLEX
-00EF;AL # LATIN SMALL LETTER I WITH DIAERESIS
-00F0;AL # LATIN SMALL LETTER ETH
-00F1;AL # LATIN SMALL LETTER N WITH TILDE
-00F2;AL # LATIN SMALL LETTER O WITH GRAVE
-00F3;AL # 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;AL # LATIN SMALL LETTER O WITH STROKE
-00F9;AL # LATIN SMALL LETTER U WITH GRAVE
-00FA;AL # LATIN SMALL LETTER U WITH ACUTE
-00FB;AL # LATIN SMALL LETTER U WITH CIRCUMFLEX
-00FC;AL # LATIN SMALL LETTER U WITH DIAERESIS
-00FD;AL # LATIN SMALL LETTER Y WITH ACUTE
-00FE;AL # LATIN SMALL LETTER THORN
-00FF;AL # LATIN SMALL LETTER Y WITH DIAERESIS
-0100;AL # LATIN CAPITAL LETTER A WITH MACRON
-0101;AL # 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;AL # LATIN SMALL LETTER D WITH STROKE
-0112;AL # LATIN CAPITAL LETTER E WITH MACRON
-0113;AL # 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;AL # 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;AL # LATIN CAPITAL LETTER H WITH STROKE
-0127;AL # 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;AL # 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;AL # LATIN SMALL LETTER DOTLESS I
-0132;AL # LATIN CAPITAL LIGATURE IJ
-0133;AL # 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;AL # 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;AL # LATIN CAPITAL LETTER L WITH MIDDLE DOT
-0140;AL # LATIN SMALL LETTER L WITH MIDDLE DOT
-0141;AL # LATIN CAPITAL LETTER L WITH STROKE
-0142;AL # LATIN SMALL LETTER L WITH STROKE
-0143;AL # LATIN CAPITAL LETTER N WITH ACUTE
-0144;AL # 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;AL # LATIN SMALL LETTER N WITH CARON
-0149;AL # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
-014A;AL # LATIN CAPITAL LETTER ENG
-014B;AL # LATIN SMALL LETTER ENG
-014C;AL # LATIN CAPITAL LETTER O WITH MACRON
-014D;AL # 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;AL # LATIN CAPITAL LIGATURE OE
-0153;AL # 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;AL # LATIN CAPITAL LETTER T WITH STROKE
-0167;AL # 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;AL # 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;AL # LATIN SMALL LETTER A WITH CARON
-01CF;AL # LATIN CAPITAL LETTER I WITH CARON
-01D0;AL # LATIN SMALL LETTER I WITH CARON
-01D1;AL # LATIN CAPITAL LETTER O WITH CARON
-01D2;AL # LATIN SMALL LETTER O WITH CARON
-01D3;AL # LATIN CAPITAL LETTER U WITH CARON
-01D4;AL # LATIN SMALL LETTER U WITH CARON
-01D5;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01D6;AL # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D7;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D8;AL # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D9;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-01DA;AL # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01DB;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01DC;AL # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DD;AL # LATIN SMALL LETTER TURNED E
-01DE;AL # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-01DF;AL # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-01E0;AL # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
-01E1;AL # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
-01E2;AL # LATIN CAPITAL LETTER AE WITH MACRON
-01E3;AL # LATIN SMALL LETTER AE WITH MACRON
-01E4;AL # LATIN CAPITAL LETTER G WITH STROKE
-01E5;AL # LATIN SMALL LETTER G WITH STROKE
-01E6;AL # LATIN CAPITAL LETTER G WITH CARON
-01E7;AL # LATIN SMALL LETTER G WITH CARON
-01E8;AL # LATIN CAPITAL LETTER K WITH CARON
-01E9;AL # LATIN SMALL LETTER K WITH CARON
-01EA;AL # LATIN CAPITAL LETTER O WITH OGONEK
-01EB;AL # LATIN SMALL LETTER O WITH OGONEK
-01EC;AL # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
-01ED;AL # LATIN SMALL LETTER O WITH OGONEK AND MACRON
-01EE;AL # LATIN CAPITAL LETTER EZH WITH CARON
-01EF;AL # LATIN SMALL LETTER EZH WITH CARON
-01F0;AL # LATIN SMALL LETTER J WITH CARON
-01F1;AL # LATIN CAPITAL LETTER DZ
-01F2;AL # LATIN CAPITAL LETTER D WITH SMALL LETTER Z
-01F3;AL # LATIN SMALL LETTER DZ
-01F4;AL # LATIN CAPITAL LETTER G WITH ACUTE
-01F5;AL # LATIN SMALL LETTER G WITH ACUTE
-01F6;AL # LATIN CAPITAL LETTER HWAIR
-01F7;AL # LATIN CAPITAL LETTER WYNN
-01F8;AL # LATIN CAPITAL LETTER N WITH GRAVE
-01F9;AL # LATIN SMALL LETTER N WITH GRAVE
-01FA;AL # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
-01FB;AL # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
-01FC;AL # LATIN CAPITAL LETTER AE WITH ACUTE
-01FD;AL # LATIN SMALL LETTER AE WITH ACUTE
-01FE;AL # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
-01FF;AL # LATIN SMALL LETTER O WITH STROKE AND ACUTE
-0200;AL # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
-0201;AL # LATIN SMALL LETTER A WITH DOUBLE GRAVE
-0202;AL # LATIN CAPITAL LETTER A WITH INVERTED BREVE
-0203;AL # LATIN SMALL LETTER A WITH INVERTED BREVE
-0204;AL # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
-0205;AL # LATIN SMALL LETTER E WITH DOUBLE GRAVE
-0206;AL # LATIN CAPITAL LETTER E WITH INVERTED BREVE
-0207;AL # LATIN SMALL LETTER E WITH INVERTED BREVE
-0208;AL # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
-0209;AL # LATIN SMALL LETTER I WITH DOUBLE GRAVE
-020A;AL # LATIN CAPITAL LETTER I WITH INVERTED BREVE
-020B;AL # LATIN SMALL LETTER I WITH INVERTED BREVE
-020C;AL # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
-020D;AL # LATIN SMALL LETTER O WITH DOUBLE GRAVE
-020E;AL # LATIN CAPITAL LETTER O WITH INVERTED BREVE
-020F;AL # LATIN SMALL LETTER O WITH INVERTED BREVE
-0210;AL # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
-0211;AL # LATIN SMALL LETTER R WITH DOUBLE GRAVE
-0212;AL # LATIN CAPITAL LETTER R WITH INVERTED BREVE
-0213;AL # LATIN SMALL LETTER R WITH INVERTED BREVE
-0214;AL # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
-0215;AL # LATIN SMALL LETTER U WITH DOUBLE GRAVE
-0216;AL # LATIN CAPITAL LETTER U WITH INVERTED BREVE
-0217;AL # LATIN SMALL LETTER U WITH INVERTED BREVE
-0218;AL # LATIN CAPITAL LETTER S WITH COMMA BELOW
-0219;AL # LATIN SMALL LETTER S WITH COMMA BELOW
-021A;AL # LATIN CAPITAL LETTER T WITH COMMA BELOW
-021B;AL # LATIN SMALL LETTER T WITH COMMA BELOW
-021C;AL # LATIN CAPITAL LETTER YOGH
-021D;AL # LATIN SMALL LETTER YOGH
-021E;AL # LATIN CAPITAL LETTER H WITH CARON
-021F;AL # LATIN SMALL LETTER H WITH CARON
-0220;AL # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
-0221;AL # LATIN SMALL LETTER D WITH CURL
-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
-0234;AL # LATIN SMALL LETTER L WITH CURL
-0235;AL # LATIN SMALL LETTER N WITH CURL
-0236;AL # LATIN SMALL LETTER T WITH CURL
-0237;AL # LATIN SMALL LETTER DOTLESS J
-0238;AL # LATIN SMALL LETTER DB DIGRAPH
-0239;AL # LATIN SMALL LETTER QP DIGRAPH
-023A;AL # LATIN CAPITAL LETTER A WITH STROKE
-023B;AL # LATIN CAPITAL LETTER C WITH STROKE
-023C;AL # LATIN SMALL LETTER C WITH STROKE
-023D;AL # LATIN CAPITAL LETTER L WITH BAR
-023E;AL # LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
-023F;AL # LATIN SMALL LETTER S WITH SWASH TAIL
-0240;AL # LATIN SMALL LETTER Z WITH SWASH TAIL
-0241;AL # LATIN CAPITAL LETTER GLOTTAL STOP
-0250;AL # LATIN SMALL LETTER TURNED A
-0251;AL # 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;AL # 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
-02AE;AL # LATIN SMALL LETTER TURNED H WITH FISHHOOK
-02AF;AL # LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
-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
-02EF;AL # MODIFIER LETTER LOW DOWN ARROWHEAD
-02F0;AL # MODIFIER LETTER LOW UP ARROWHEAD
-02F1;AL # MODIFIER LETTER LOW LEFT ARROWHEAD
-02F2;AL # MODIFIER LETTER LOW RIGHT ARROWHEAD
-02F3;AL # MODIFIER LETTER LOW RING
-02F4;AL # MODIFIER LETTER MIDDLE GRAVE ACCENT
-02F5;AL # MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT
-02F6;AL # MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT
-02F7;AL # MODIFIER LETTER LOW TILDE
-02F8;AL # MODIFIER LETTER RAISED COLON
-02F9;AL # MODIFIER LETTER BEGIN HIGH TONE
-02FA;AL # MODIFIER LETTER END HIGH TONE
-02FB;AL # MODIFIER LETTER BEGIN LOW TONE
-02FC;AL # MODIFIER LETTER END LOW TONE
-02FD;AL # MODIFIER LETTER SHELF
-02FE;AL # MODIFIER LETTER OPEN SHELF
-02FF;AL # MODIFIER LETTER LOW LEFT ARROW
-0300;CM # COMBINING GRAVE ACCENT
-0301;CM # COMBINING ACUTE ACCENT
-0302;CM # COMBINING CIRCUMFLEX ACCENT
-0303;CM # COMBINING TILDE
-0304;CM # COMBINING MACRON
-0305;CM # COMBINING OVERLINE
-0306;CM # COMBINING BREVE
-0307;CM # COMBINING DOT ABOVE
-0308;CM # COMBINING DIAERESIS
-0309;CM # COMBINING HOOK ABOVE
-030A;CM # COMBINING RING ABOVE
-030B;CM # COMBINING DOUBLE ACUTE ACCENT
-030C;CM # COMBINING CARON
-030D;CM # COMBINING VERTICAL LINE ABOVE
-030E;CM # COMBINING DOUBLE VERTICAL LINE ABOVE
-030F;CM # COMBINING DOUBLE GRAVE ACCENT
-0310;CM # COMBINING CANDRABINDU
-0311;CM # COMBINING INVERTED BREVE
-0312;CM # COMBINING TURNED COMMA ABOVE
-0313;CM # COMBINING COMMA ABOVE
-0314;CM # COMBINING REVERSED COMMA ABOVE
-0315;CM # COMBINING COMMA ABOVE RIGHT
-0316;CM # COMBINING GRAVE ACCENT BELOW
-0317;CM # COMBINING ACUTE ACCENT BELOW
-0318;CM # COMBINING LEFT TACK BELOW
-0319;CM # COMBINING RIGHT TACK BELOW
-031A;CM # COMBINING LEFT ANGLE ABOVE
-031B;CM # COMBINING HORN
-031C;CM # COMBINING LEFT HALF RING BELOW
-031D;CM # COMBINING UP TACK BELOW
-031E;CM # COMBINING DOWN TACK BELOW
-031F;CM # COMBINING PLUS SIGN BELOW
-0320;CM # COMBINING MINUS SIGN BELOW
-0321;CM # COMBINING PALATALIZED HOOK BELOW
-0322;CM # COMBINING RETROFLEX HOOK BELOW
-0323;CM # COMBINING DOT BELOW
-0324;CM # COMBINING DIAERESIS BELOW
-0325;CM # COMBINING RING BELOW
-0326;CM # COMBINING COMMA BELOW
-0327;CM # COMBINING CEDILLA
-0328;CM # COMBINING OGONEK
-0329;CM # COMBINING VERTICAL LINE BELOW
-032A;CM # COMBINING BRIDGE BELOW
-032B;CM # COMBINING INVERTED DOUBLE ARCH BELOW
-032C;CM # COMBINING CARON BELOW
-032D;CM # COMBINING CIRCUMFLEX ACCENT BELOW
-032E;CM # COMBINING BREVE BELOW
-032F;CM # COMBINING INVERTED BREVE BELOW
-0330;CM # COMBINING TILDE BELOW
-0331;CM # COMBINING MACRON BELOW
-0332;CM # COMBINING LOW LINE
-0333;CM # COMBINING DOUBLE LOW LINE
-0334;CM # COMBINING TILDE OVERLAY
-0335;CM # COMBINING SHORT STROKE OVERLAY
-0336;CM # COMBINING LONG STROKE OVERLAY
-0337;CM # COMBINING SHORT SOLIDUS OVERLAY
-0338;CM # COMBINING LONG SOLIDUS OVERLAY
-0339;CM # COMBINING RIGHT HALF RING BELOW
-033A;CM # COMBINING INVERTED BRIDGE BELOW
-033B;CM # COMBINING SQUARE BELOW
-033C;CM # COMBINING SEAGULL BELOW
-033D;CM # COMBINING X ABOVE
-033E;CM # COMBINING VERTICAL TILDE
-033F;CM # COMBINING DOUBLE OVERLINE
-0340;CM # COMBINING GRAVE TONE MARK
-0341;CM # COMBINING ACUTE TONE MARK
-0342;CM # COMBINING GREEK PERISPOMENI
-0343;CM # COMBINING GREEK KORONIS
-0344;CM # COMBINING GREEK DIALYTIKA TONOS
-0345;CM # COMBINING GREEK YPOGEGRAMMENI
-0346;CM # COMBINING BRIDGE ABOVE
-0347;CM # COMBINING EQUALS SIGN BELOW
-0348;CM # COMBINING DOUBLE VERTICAL LINE BELOW
-0349;CM # COMBINING LEFT ANGLE BELOW
-034A;CM # COMBINING NOT TILDE ABOVE
-034B;CM # COMBINING HOMOTHETIC ABOVE
-034C;CM # COMBINING ALMOST EQUAL TO ABOVE
-034D;CM # COMBINING LEFT RIGHT ARROW BELOW
-034E;CM # COMBINING UPWARDS ARROW BELOW
-034F;GL # COMBINING GRAPHEME JOINER
-0350;CM # COMBINING RIGHT ARROWHEAD ABOVE
-0351;CM # COMBINING LEFT HALF RING ABOVE
-0352;CM # COMBINING FERMATA
-0353;CM # COMBINING X BELOW
-0354;CM # COMBINING LEFT ARROWHEAD BELOW
-0355;CM # COMBINING RIGHT ARROWHEAD BELOW
-0356;CM # COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW
-0357;CM # COMBINING RIGHT HALF RING ABOVE
-0358;CM # COMBINING DOT ABOVE RIGHT
-0359;CM # COMBINING ASTERISK BELOW
-035A;CM # COMBINING DOUBLE RING BELOW
-035B;CM # COMBINING ZIGZAG ABOVE
-035C;CM # COMBINING DOUBLE BREVE BELOW
-035D;GL # COMBINING DOUBLE BREVE
-035E;GL # COMBINING DOUBLE MACRON
-035F;GL # COMBINING DOUBLE MACRON BELOW
-0360;GL # COMBINING DOUBLE TILDE
-0361;GL # COMBINING DOUBLE INVERTED BREVE
-0362;GL # COMBINING DOUBLE RIGHTWARDS ARROW BELOW
-0363;CM # COMBINING LATIN SMALL LETTER A
-0364;CM # COMBINING LATIN SMALL LETTER E
-0365;CM # COMBINING LATIN SMALL LETTER I
-0366;CM # COMBINING LATIN SMALL LETTER O
-0367;CM # COMBINING LATIN SMALL LETTER U
-0368;CM # COMBINING LATIN SMALL LETTER C
-0369;CM # COMBINING LATIN SMALL LETTER D
-036A;CM # COMBINING LATIN SMALL LETTER H
-036B;CM # COMBINING LATIN SMALL LETTER M
-036C;CM # COMBINING LATIN SMALL LETTER R
-036D;CM # COMBINING LATIN SMALL LETTER T
-036E;CM # COMBINING LATIN SMALL LETTER V
-036F;CM # COMBINING LATIN SMALL LETTER X
-0374;AL # GREEK NUMERAL SIGN
-0375;AL # GREEK LOWER NUMERAL SIGN
-037A;AL # GREEK YPOGEGRAMMENI
-037E;IS # 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;AL # GREEK CAPITAL LETTER ALPHA
-0392;AL # GREEK CAPITAL LETTER BETA
-0393;AL # GREEK CAPITAL LETTER GAMMA
-0394;AL # GREEK CAPITAL LETTER DELTA
-0395;AL # GREEK CAPITAL LETTER EPSILON
-0396;AL # GREEK CAPITAL LETTER ZETA
-0397;AL # GREEK CAPITAL LETTER ETA
-0398;AL # GREEK CAPITAL LETTER THETA
-0399;AL # GREEK CAPITAL LETTER IOTA
-039A;AL # GREEK CAPITAL LETTER KAPPA
-039B;AL # GREEK CAPITAL LETTER LAMDA
-039C;AL # GREEK CAPITAL LETTER MU
-039D;AL # GREEK CAPITAL LETTER NU
-039E;AL # GREEK CAPITAL LETTER XI
-039F;AL # GREEK CAPITAL LETTER OMICRON
-03A0;AL # GREEK CAPITAL LETTER PI
-03A1;AL # GREEK CAPITAL LETTER RHO
-03A3;AL # GREEK CAPITAL LETTER SIGMA
-03A4;AL # GREEK CAPITAL LETTER TAU
-03A5;AL # GREEK CAPITAL LETTER UPSILON
-03A6;AL # GREEK CAPITAL LETTER PHI
-03A7;AL # GREEK CAPITAL LETTER CHI
-03A8;AL # GREEK CAPITAL LETTER PSI
-03A9;AL # 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;AL # GREEK SMALL LETTER ALPHA
-03B2;AL # GREEK SMALL LETTER BETA
-03B3;AL # GREEK SMALL LETTER GAMMA
-03B4;AL # GREEK SMALL LETTER DELTA
-03B5;AL # GREEK SMALL LETTER EPSILON
-03B6;AL # GREEK SMALL LETTER ZETA
-03B7;AL # GREEK SMALL LETTER ETA
-03B8;AL # GREEK SMALL LETTER THETA
-03B9;AL # GREEK SMALL LETTER IOTA
-03BA;AL # GREEK SMALL LETTER KAPPA
-03BB;AL # GREEK SMALL LETTER LAMDA
-03BC;AL # GREEK SMALL LETTER MU
-03BD;AL # GREEK SMALL LETTER NU
-03BE;AL # GREEK SMALL LETTER XI
-03BF;AL # GREEK SMALL LETTER OMICRON
-03C0;AL # GREEK SMALL LETTER PI
-03C1;AL # GREEK SMALL LETTER RHO
-03C2;AL # GREEK SMALL LETTER FINAL SIGMA
-03C3;AL # GREEK SMALL LETTER SIGMA
-03C4;AL # GREEK SMALL LETTER TAU
-03C5;AL # GREEK SMALL LETTER UPSILON
-03C6;AL # GREEK SMALL LETTER PHI
-03C7;AL # GREEK SMALL LETTER CHI
-03C8;AL # GREEK SMALL LETTER PSI
-03C9;AL # GREEK SMALL LETTER OMEGA
-03CA;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA
-03CB;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-03CC;AL # GREEK SMALL LETTER OMICRON WITH TONOS
-03CD;AL # GREEK SMALL LETTER UPSILON WITH TONOS
-03CE;AL # GREEK SMALL LETTER OMEGA WITH TONOS
-03D0;AL # GREEK BETA SYMBOL
-03D1;AL # GREEK THETA SYMBOL
-03D2;AL # GREEK UPSILON WITH HOOK SYMBOL
-03D3;AL # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
-03D4;AL # GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
-03D5;AL # GREEK PHI SYMBOL
-03D6;AL # GREEK PI SYMBOL
-03D7;AL # GREEK KAI SYMBOL
-03D8;AL # GREEK LETTER ARCHAIC KOPPA
-03D9;AL # GREEK SMALL LETTER ARCHAIC KOPPA
-03DA;AL # GREEK LETTER STIGMA
-03DB;AL # GREEK SMALL LETTER STIGMA
-03DC;AL # GREEK LETTER DIGAMMA
-03DD;AL # GREEK SMALL LETTER DIGAMMA
-03DE;AL # GREEK LETTER KOPPA
-03DF;AL # GREEK SMALL LETTER KOPPA
-03E0;AL # GREEK LETTER SAMPI
-03E1;AL # GREEK SMALL LETTER SAMPI
-03E2;AL # COPTIC CAPITAL LETTER SHEI
-03E3;AL # COPTIC SMALL LETTER SHEI
-03E4;AL # COPTIC CAPITAL LETTER FEI
-03E5;AL # COPTIC SMALL LETTER FEI
-03E6;AL # COPTIC CAPITAL LETTER KHEI
-03E7;AL # COPTIC SMALL LETTER KHEI
-03E8;AL # COPTIC CAPITAL LETTER HORI
-03E9;AL # COPTIC SMALL LETTER HORI
-03EA;AL # COPTIC CAPITAL LETTER GANGIA
-03EB;AL # COPTIC SMALL LETTER GANGIA
-03EC;AL # COPTIC CAPITAL LETTER SHIMA
-03ED;AL # COPTIC SMALL LETTER SHIMA
-03EE;AL # COPTIC CAPITAL LETTER DEI
-03EF;AL # COPTIC SMALL LETTER DEI
-03F0;AL # GREEK KAPPA SYMBOL
-03F1;AL # GREEK RHO SYMBOL
-03F2;AL # GREEK LUNATE SIGMA SYMBOL
-03F3;AL # GREEK LETTER YOT
-03F4;AL # GREEK CAPITAL THETA SYMBOL
-03F5;AL # GREEK LUNATE EPSILON SYMBOL
-03F6;AL # GREEK REVERSED LUNATE EPSILON SYMBOL
-03F7;AL # GREEK CAPITAL LETTER SHO
-03F8;AL # GREEK SMALL LETTER SHO
-03F9;AL # GREEK CAPITAL LUNATE SIGMA SYMBOL
-03FA;AL # GREEK CAPITAL LETTER SAN
-03FB;AL # GREEK SMALL LETTER SAN
-03FC;AL # GREEK RHO WITH STROKE SYMBOL
-03FD;AL # GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL
-03FE;AL # GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL
-03FF;AL # GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL
-0400;AL # CYRILLIC CAPITAL LETTER IE WITH GRAVE
-0401;AL # 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;AL # CYRILLIC CAPITAL LETTER A
-0411;AL # CYRILLIC CAPITAL LETTER BE
-0412;AL # CYRILLIC CAPITAL LETTER VE
-0413;AL # CYRILLIC CAPITAL LETTER GHE
-0414;AL # CYRILLIC CAPITAL LETTER DE
-0415;AL # CYRILLIC CAPITAL LETTER IE
-0416;AL # CYRILLIC CAPITAL LETTER ZHE
-0417;AL # CYRILLIC CAPITAL LETTER ZE
-0418;AL # CYRILLIC CAPITAL LETTER I
-0419;AL # CYRILLIC CAPITAL LETTER SHORT I
-041A;AL # CYRILLIC CAPITAL LETTER KA
-041B;AL # CYRILLIC CAPITAL LETTER EL
-041C;AL # CYRILLIC CAPITAL LETTER EM
-041D;AL # CYRILLIC CAPITAL LETTER EN
-041E;AL # CYRILLIC CAPITAL LETTER O
-041F;AL # CYRILLIC CAPITAL LETTER PE
-0420;AL # CYRILLIC CAPITAL LETTER ER
-0421;AL # CYRILLIC CAPITAL LETTER ES
-0422;AL # CYRILLIC CAPITAL LETTER TE
-0423;AL # CYRILLIC CAPITAL LETTER U
-0424;AL # CYRILLIC CAPITAL LETTER EF
-0425;AL # CYRILLIC CAPITAL LETTER HA
-0426;AL # CYRILLIC CAPITAL LETTER TSE
-0427;AL # CYRILLIC CAPITAL LETTER CHE
-0428;AL # CYRILLIC CAPITAL LETTER SHA
-0429;AL # CYRILLIC CAPITAL LETTER SHCHA
-042A;AL # CYRILLIC CAPITAL LETTER HARD SIGN
-042B;AL # CYRILLIC CAPITAL LETTER YERU
-042C;AL # CYRILLIC CAPITAL LETTER SOFT SIGN
-042D;AL # CYRILLIC CAPITAL LETTER E
-042E;AL # CYRILLIC CAPITAL LETTER YU
-042F;AL # CYRILLIC CAPITAL LETTER YA
-0430;AL # CYRILLIC SMALL LETTER A
-0431;AL # CYRILLIC SMALL LETTER BE
-0432;AL # CYRILLIC SMALL LETTER VE
-0433;AL # CYRILLIC SMALL LETTER GHE
-0434;AL # CYRILLIC SMALL LETTER DE
-0435;AL # CYRILLIC SMALL LETTER IE
-0436;AL # CYRILLIC SMALL LETTER ZHE
-0437;AL # CYRILLIC SMALL LETTER ZE
-0438;AL # CYRILLIC SMALL LETTER I
-0439;AL # CYRILLIC SMALL LETTER SHORT I
-043A;AL # CYRILLIC SMALL LETTER KA
-043B;AL # CYRILLIC SMALL LETTER EL
-043C;AL # CYRILLIC SMALL LETTER EM
-043D;AL # CYRILLIC SMALL LETTER EN
-043E;AL # CYRILLIC SMALL LETTER O
-043F;AL # CYRILLIC SMALL LETTER PE
-0440;AL # CYRILLIC SMALL LETTER ER
-0441;AL # CYRILLIC SMALL LETTER ES
-0442;AL # CYRILLIC SMALL LETTER TE
-0443;AL # CYRILLIC SMALL LETTER U
-0444;AL # CYRILLIC SMALL LETTER EF
-0445;AL # CYRILLIC SMALL LETTER HA
-0446;AL # CYRILLIC SMALL LETTER TSE
-0447;AL # CYRILLIC SMALL LETTER CHE
-0448;AL # CYRILLIC SMALL LETTER SHA
-0449;AL # CYRILLIC SMALL LETTER SHCHA
-044A;AL # CYRILLIC SMALL LETTER HARD SIGN
-044B;AL # CYRILLIC SMALL LETTER YERU
-044C;AL # CYRILLIC SMALL LETTER SOFT SIGN
-044D;AL # CYRILLIC SMALL LETTER E
-044E;AL # CYRILLIC SMALL LETTER YU
-044F;AL # CYRILLIC SMALL LETTER YA
-0450;AL # CYRILLIC SMALL LETTER IE WITH GRAVE
-0451;AL # CYRILLIC SMALL LETTER IO
-0452;AL # CYRILLIC SMALL LETTER DJE
-0453;AL # CYRILLIC SMALL LETTER GJE
-0454;AL # CYRILLIC SMALL LETTER UKRAINIAN IE
-0455;AL # CYRILLIC SMALL LETTER DZE
-0456;AL # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-0457;AL # CYRILLIC SMALL LETTER YI
-0458;AL # CYRILLIC SMALL LETTER JE
-0459;AL # CYRILLIC SMALL LETTER LJE
-045A;AL # CYRILLIC SMALL LETTER NJE
-045B;AL # CYRILLIC SMALL LETTER TSHE
-045C;AL # CYRILLIC SMALL LETTER KJE
-045D;AL # CYRILLIC SMALL LETTER I WITH GRAVE
-045E;AL # CYRILLIC SMALL LETTER SHORT U
-045F;AL # CYRILLIC SMALL LETTER DZHE
-0460;AL # CYRILLIC CAPITAL LETTER OMEGA
-0461;AL # CYRILLIC SMALL LETTER OMEGA
-0462;AL # CYRILLIC CAPITAL LETTER YAT
-0463;AL # CYRILLIC SMALL LETTER YAT
-0464;AL # CYRILLIC CAPITAL LETTER IOTIFIED E
-0465;AL # CYRILLIC SMALL LETTER IOTIFIED E
-0466;AL # CYRILLIC CAPITAL LETTER LITTLE YUS
-0467;AL # CYRILLIC SMALL LETTER LITTLE YUS
-0468;AL # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
-0469;AL # CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
-046A;AL # CYRILLIC CAPITAL LETTER BIG YUS
-046B;AL # CYRILLIC SMALL LETTER BIG YUS
-046C;AL # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
-046D;AL # CYRILLIC SMALL LETTER IOTIFIED BIG YUS
-046E;AL # CYRILLIC CAPITAL LETTER KSI
-046F;AL # CYRILLIC SMALL LETTER KSI
-0470;AL # CYRILLIC CAPITAL LETTER PSI
-0471;AL # CYRILLIC SMALL LETTER PSI
-0472;AL # CYRILLIC CAPITAL LETTER FITA
-0473;AL # CYRILLIC SMALL LETTER FITA
-0474;AL # CYRILLIC CAPITAL LETTER IZHITSA
-0475;AL # CYRILLIC SMALL LETTER IZHITSA
-0476;AL # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0477;AL # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0478;AL # CYRILLIC CAPITAL LETTER UK
-0479;AL # CYRILLIC SMALL LETTER UK
-047A;AL # CYRILLIC CAPITAL LETTER ROUND OMEGA
-047B;AL # CYRILLIC SMALL LETTER ROUND OMEGA
-047C;AL # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
-047D;AL # CYRILLIC SMALL LETTER OMEGA WITH TITLO
-047E;AL # CYRILLIC CAPITAL LETTER OT
-047F;AL # CYRILLIC SMALL LETTER OT
-0480;AL # CYRILLIC CAPITAL LETTER KOPPA
-0481;AL # CYRILLIC SMALL LETTER KOPPA
-0482;AL # CYRILLIC THOUSANDS SIGN
-0483;CM # COMBINING CYRILLIC TITLO
-0484;CM # COMBINING CYRILLIC PALATALIZATION
-0485;CM # COMBINING CYRILLIC DASIA PNEUMATA
-0486;CM # COMBINING CYRILLIC PSILI PNEUMATA
-0488;CM # COMBINING CYRILLIC HUNDRED THOUSANDS SIGN
-0489;CM # COMBINING CYRILLIC MILLIONS SIGN
-048A;AL # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
-048B;AL # CYRILLIC SMALL LETTER SHORT I WITH TAIL
-048C;AL # CYRILLIC CAPITAL LETTER SEMISOFT SIGN
-048D;AL # CYRILLIC SMALL LETTER SEMISOFT SIGN
-048E;AL # CYRILLIC CAPITAL LETTER ER WITH TICK
-048F;AL # CYRILLIC SMALL LETTER ER WITH TICK
-0490;AL # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-0491;AL # CYRILLIC SMALL LETTER GHE WITH UPTURN
-0492;AL # CYRILLIC CAPITAL LETTER GHE WITH STROKE
-0493;AL # CYRILLIC SMALL LETTER GHE WITH STROKE
-0494;AL # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
-0495;AL # CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
-0496;AL # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
-0497;AL # CYRILLIC SMALL LETTER ZHE WITH DESCENDER
-0498;AL # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
-0499;AL # CYRILLIC SMALL LETTER ZE WITH DESCENDER
-049A;AL # CYRILLIC CAPITAL LETTER KA WITH DESCENDER
-049B;AL # CYRILLIC SMALL LETTER KA WITH DESCENDER
-049C;AL # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
-049D;AL # CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
-049E;AL # CYRILLIC CAPITAL LETTER KA WITH STROKE
-049F;AL # CYRILLIC SMALL LETTER KA WITH STROKE
-04A0;AL # CYRILLIC CAPITAL LETTER BASHKIR KA
-04A1;AL # CYRILLIC SMALL LETTER BASHKIR KA
-04A2;AL # CYRILLIC CAPITAL LETTER EN WITH DESCENDER
-04A3;AL # CYRILLIC SMALL LETTER EN WITH DESCENDER
-04A4;AL # CYRILLIC CAPITAL LIGATURE EN GHE
-04A5;AL # CYRILLIC SMALL LIGATURE EN GHE
-04A6;AL # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
-04A7;AL # CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
-04A8;AL # CYRILLIC CAPITAL LETTER ABKHASIAN HA
-04A9;AL # CYRILLIC SMALL LETTER ABKHASIAN HA
-04AA;AL # CYRILLIC CAPITAL LETTER ES WITH DESCENDER
-04AB;AL # CYRILLIC SMALL LETTER ES WITH DESCENDER
-04AC;AL # CYRILLIC CAPITAL LETTER TE WITH DESCENDER
-04AD;AL # CYRILLIC SMALL LETTER TE WITH DESCENDER
-04AE;AL # CYRILLIC CAPITAL LETTER STRAIGHT U
-04AF;AL # CYRILLIC SMALL LETTER STRAIGHT U
-04B0;AL # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
-04B1;AL # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
-04B2;AL # CYRILLIC CAPITAL LETTER HA WITH DESCENDER
-04B3;AL # CYRILLIC SMALL LETTER HA WITH DESCENDER
-04B4;AL # CYRILLIC CAPITAL LIGATURE TE TSE
-04B5;AL # CYRILLIC SMALL LIGATURE TE TSE
-04B6;AL # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
-04B7;AL # CYRILLIC SMALL LETTER CHE WITH DESCENDER
-04B8;AL # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
-04B9;AL # CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
-04BA;AL # CYRILLIC CAPITAL LETTER SHHA
-04BB;AL # CYRILLIC SMALL LETTER SHHA
-04BC;AL # CYRILLIC CAPITAL LETTER ABKHASIAN CHE
-04BD;AL # CYRILLIC SMALL LETTER ABKHASIAN CHE
-04BE;AL # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
-04BF;AL # CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
-04C0;AL # CYRILLIC LETTER PALOCHKA
-04C1;AL # CYRILLIC CAPITAL LETTER ZHE WITH BREVE
-04C2;AL # CYRILLIC SMALL LETTER ZHE WITH BREVE
-04C3;AL # CYRILLIC CAPITAL LETTER KA WITH HOOK
-04C4;AL # CYRILLIC SMALL LETTER KA WITH HOOK
-04C5;AL # CYRILLIC CAPITAL LETTER EL WITH TAIL
-04C6;AL # CYRILLIC SMALL LETTER EL WITH TAIL
-04C7;AL # CYRILLIC CAPITAL LETTER EN WITH HOOK
-04C8;AL # CYRILLIC SMALL LETTER EN WITH HOOK
-04C9;AL # CYRILLIC CAPITAL LETTER EN WITH TAIL
-04CA;AL # CYRILLIC SMALL LETTER EN WITH TAIL
-04CB;AL # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
-04CC;AL # CYRILLIC SMALL LETTER KHAKASSIAN CHE
-04CD;AL # CYRILLIC CAPITAL LETTER EM WITH TAIL
-04CE;AL # CYRILLIC SMALL LETTER EM WITH TAIL
-04D0;AL # CYRILLIC CAPITAL LETTER A WITH BREVE
-04D1;AL # CYRILLIC SMALL LETTER A WITH BREVE
-04D2;AL # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
-04D3;AL # CYRILLIC SMALL LETTER A WITH DIAERESIS
-04D4;AL # CYRILLIC CAPITAL LIGATURE A IE
-04D5;AL # CYRILLIC SMALL LIGATURE A IE
-04D6;AL # CYRILLIC CAPITAL LETTER IE WITH BREVE
-04D7;AL # CYRILLIC SMALL LETTER IE WITH BREVE
-04D8;AL # CYRILLIC CAPITAL LETTER SCHWA
-04D9;AL # CYRILLIC SMALL LETTER SCHWA
-04DA;AL # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
-04DB;AL # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
-04DC;AL # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
-04DD;AL # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
-04DE;AL # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
-04DF;AL # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
-04E0;AL # CYRILLIC CAPITAL LETTER ABKHASIAN DZE
-04E1;AL # CYRILLIC SMALL LETTER ABKHASIAN DZE
-04E2;AL # CYRILLIC CAPITAL LETTER I WITH MACRON
-04E3;AL # CYRILLIC SMALL LETTER I WITH MACRON
-04E4;AL # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
-04E5;AL # CYRILLIC SMALL LETTER I WITH DIAERESIS
-04E6;AL # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
-04E7;AL # CYRILLIC SMALL LETTER O WITH DIAERESIS
-04E8;AL # CYRILLIC CAPITAL LETTER BARRED O
-04E9;AL # CYRILLIC SMALL LETTER BARRED O
-04EA;AL # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
-04EB;AL # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
-04EC;AL # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
-04ED;AL # CYRILLIC SMALL LETTER E WITH DIAERESIS
-04EE;AL # CYRILLIC CAPITAL LETTER U WITH MACRON
-04EF;AL # CYRILLIC SMALL LETTER U WITH MACRON
-04F0;AL # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
-04F1;AL # CYRILLIC SMALL LETTER U WITH DIAERESIS
-04F2;AL # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
-04F3;AL # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
-04F4;AL # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
-04F5;AL # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
-04F6;AL # CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
-04F7;AL # CYRILLIC SMALL LETTER GHE WITH DESCENDER
-04F8;AL # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
-04F9;AL # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
-0500;AL # CYRILLIC CAPITAL LETTER KOMI DE
-0501;AL # CYRILLIC SMALL LETTER KOMI DE
-0502;AL # CYRILLIC CAPITAL LETTER KOMI DJE
-0503;AL # CYRILLIC SMALL LETTER KOMI DJE
-0504;AL # CYRILLIC CAPITAL LETTER KOMI ZJE
-0505;AL # CYRILLIC SMALL LETTER KOMI ZJE
-0506;AL # CYRILLIC CAPITAL LETTER KOMI DZJE
-0507;AL # CYRILLIC SMALL LETTER KOMI DZJE
-0508;AL # CYRILLIC CAPITAL LETTER KOMI LJE
-0509;AL # CYRILLIC SMALL LETTER KOMI LJE
-050A;AL # CYRILLIC CAPITAL LETTER KOMI NJE
-050B;AL # CYRILLIC SMALL LETTER KOMI NJE
-050C;AL # CYRILLIC CAPITAL LETTER KOMI SJE
-050D;AL # CYRILLIC SMALL LETTER KOMI SJE
-050E;AL # CYRILLIC CAPITAL LETTER KOMI TJE
-050F;AL # CYRILLIC SMALL LETTER KOMI TJE
-0531;AL # ARMENIAN CAPITAL LETTER AYB
-0532;AL # ARMENIAN CAPITAL LETTER BEN
-0533;AL # ARMENIAN CAPITAL LETTER GIM
-0534;AL # ARMENIAN CAPITAL LETTER DA
-0535;AL # ARMENIAN CAPITAL LETTER ECH
-0536;AL # ARMENIAN CAPITAL LETTER ZA
-0537;AL # ARMENIAN CAPITAL LETTER EH
-0538;AL # ARMENIAN CAPITAL LETTER ET
-0539;AL # ARMENIAN CAPITAL LETTER TO
-053A;AL # ARMENIAN CAPITAL LETTER ZHE
-053B;AL # ARMENIAN CAPITAL LETTER INI
-053C;AL # ARMENIAN CAPITAL LETTER LIWN
-053D;AL # ARMENIAN CAPITAL LETTER XEH
-053E;AL # ARMENIAN CAPITAL LETTER CA
-053F;AL # ARMENIAN CAPITAL LETTER KEN
-0540;AL # ARMENIAN CAPITAL LETTER HO
-0541;AL # ARMENIAN CAPITAL LETTER JA
-0542;AL # ARMENIAN CAPITAL LETTER GHAD
-0543;AL # ARMENIAN CAPITAL LETTER CHEH
-0544;AL # ARMENIAN CAPITAL LETTER MEN
-0545;AL # ARMENIAN CAPITAL LETTER YI
-0546;AL # ARMENIAN CAPITAL LETTER NOW
-0547;AL # ARMENIAN CAPITAL LETTER SHA
-0548;AL # ARMENIAN CAPITAL LETTER VO
-0549;AL # ARMENIAN CAPITAL LETTER CHA
-054A;AL # ARMENIAN CAPITAL LETTER PEH
-054B;AL # ARMENIAN CAPITAL LETTER JHEH
-054C;AL # ARMENIAN CAPITAL LETTER RA
-054D;AL # ARMENIAN CAPITAL LETTER SEH
-054E;AL # ARMENIAN CAPITAL LETTER VEW
-054F;AL # ARMENIAN CAPITAL LETTER TIWN
-0550;AL # ARMENIAN CAPITAL LETTER REH
-0551;AL # ARMENIAN CAPITAL LETTER CO
-0552;AL # ARMENIAN CAPITAL LETTER YIWN
-0553;AL # ARMENIAN CAPITAL LETTER PIWR
-0554;AL # ARMENIAN CAPITAL LETTER KEH
-0555;AL # ARMENIAN CAPITAL LETTER OH
-0556;AL # ARMENIAN CAPITAL LETTER FEH
-0559;AL # ARMENIAN MODIFIER LETTER LEFT HALF RING
-055A;AL # ARMENIAN APOSTROPHE
-055B;AL # ARMENIAN EMPHASIS MARK
-055C;AL # ARMENIAN EXCLAMATION MARK
-055D;AL # ARMENIAN COMMA
-055E;AL # ARMENIAN QUESTION MARK
-055F;AL # ARMENIAN ABBREVIATION MARK
-0561;AL # ARMENIAN SMALL LETTER AYB
-0562;AL # ARMENIAN SMALL LETTER BEN
-0563;AL # ARMENIAN SMALL LETTER GIM
-0564;AL # ARMENIAN SMALL LETTER DA
-0565;AL # ARMENIAN SMALL LETTER ECH
-0566;AL # ARMENIAN SMALL LETTER ZA
-0567;AL # ARMENIAN SMALL LETTER EH
-0568;AL # ARMENIAN SMALL LETTER ET
-0569;AL # ARMENIAN SMALL LETTER TO
-056A;AL # ARMENIAN SMALL LETTER ZHE
-056B;AL # ARMENIAN SMALL LETTER INI
-056C;AL # ARMENIAN SMALL LETTER LIWN
-056D;AL # ARMENIAN SMALL LETTER XEH
-056E;AL # ARMENIAN SMALL LETTER CA
-056F;AL # ARMENIAN SMALL LETTER KEN
-0570;AL # ARMENIAN SMALL LETTER HO
-0571;AL # ARMENIAN SMALL LETTER JA
-0572;AL # ARMENIAN SMALL LETTER GHAD
-0573;AL # ARMENIAN SMALL LETTER CHEH
-0574;AL # ARMENIAN SMALL LETTER MEN
-0575;AL # ARMENIAN SMALL LETTER YI
-0576;AL # ARMENIAN SMALL LETTER NOW
-0577;AL # ARMENIAN SMALL LETTER SHA
-0578;AL # ARMENIAN SMALL LETTER VO
-0579;AL # ARMENIAN SMALL LETTER CHA
-057A;AL # ARMENIAN SMALL LETTER PEH
-057B;AL # ARMENIAN SMALL LETTER JHEH
-057C;AL # ARMENIAN SMALL LETTER RA
-057D;AL # ARMENIAN SMALL LETTER SEH
-057E;AL # ARMENIAN SMALL LETTER VEW
-057F;AL # ARMENIAN SMALL LETTER TIWN
-0580;AL # ARMENIAN SMALL LETTER REH
-0581;AL # ARMENIAN SMALL LETTER CO
-0582;AL # ARMENIAN SMALL LETTER YIWN
-0583;AL # ARMENIAN SMALL LETTER PIWR
-0584;AL # ARMENIAN SMALL LETTER KEH
-0585;AL # ARMENIAN SMALL LETTER OH
-0586;AL # ARMENIAN SMALL LETTER FEH
-0587;AL # ARMENIAN SMALL LIGATURE ECH YIWN
-0589;IS # ARMENIAN FULL STOP
-058A;BA # ARMENIAN HYPHEN
-0591;CM # HEBREW ACCENT ETNAHTA
-0592;CM # HEBREW ACCENT SEGOL
-0593;CM # HEBREW ACCENT SHALSHELET
-0594;CM # HEBREW ACCENT ZAQEF QATAN
-0595;CM # HEBREW ACCENT ZAQEF GADOL
-0596;CM # HEBREW ACCENT TIPEHA
-0597;CM # HEBREW ACCENT REVIA
-0598;CM # HEBREW ACCENT ZARQA
-0599;CM # HEBREW ACCENT PASHTA
-059A;CM # HEBREW ACCENT YETIV
-059B;CM # HEBREW ACCENT TEVIR
-059C;CM # HEBREW ACCENT GERESH
-059D;CM # HEBREW ACCENT GERESH MUQDAM
-059E;CM # HEBREW ACCENT GERSHAYIM
-059F;CM # HEBREW ACCENT QARNEY PARA
-05A0;CM # HEBREW ACCENT TELISHA GEDOLA
-05A1;CM # HEBREW ACCENT PAZER
-05A2;CM # HEBREW ACCENT ATNAH HAFUKH
-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
-05C5;CM # HEBREW MARK LOWER DOT
-05C6;EX # HEBREW PUNCTUATION NUN HAFUKHA
-05C7;CM # HEBREW POINT QAMATS QATAN
-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
-0600;AL # ARABIC NUMBER SIGN
-0601;AL # ARABIC SIGN SANAH
-0602;AL # ARABIC FOOTNOTE MARKER
-0603;AL # ARABIC SIGN SAFHA
-060B;PO # AFGHANI SIGN
-060C;EX # ARABIC COMMA
-060D;IS # ARABIC DATE SEPARATOR
-060E;AL # ARABIC POETIC VERSE SIGN
-060F;AL # ARABIC SIGN MISRA
-0610;CM # ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM
-0611;CM # ARABIC SIGN ALAYHE ASSALLAM
-0612;CM # ARABIC SIGN RAHMATULLAH ALAYHE
-0613;CM # ARABIC SIGN RADI ALLAHOU ANHU
-0614;CM # ARABIC SIGN TAKHALLUS
-0615;CM # ARABIC SMALL HIGH TAH
-061B;EX # ARABIC SEMICOLON
-061E;EX # ARABIC TRIPLE DOT PUNCTUATION MARK
-061F;EX # 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
-0656;CM # ARABIC SUBSCRIPT ALEF
-0657;CM # ARABIC INVERTED DAMMA
-0658;CM # ARABIC MARK NOON GHUNNA
-0659;CM # ARABIC ZWARAKAY
-065A;CM # ARABIC VOWEL SIGN SMALL V ABOVE
-065B;CM # ARABIC VOWEL SIGN INVERTED SMALL V ABOVE
-065C;CM # ARABIC VOWEL SIGN DOT BELOW
-065D;CM # ARABIC REVERSED DAMMA
-065E;CM # ARABIC FATHA WITH TWO DOTS
-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;EX # ARABIC PERCENT SIGN
-066B;NU # ARABIC DECIMAL SEPARATOR
-066C;NU # ARABIC THOUSANDS SEPARATOR
-066D;AL # ARABIC FIVE POINTED STAR
-066E;AL # ARABIC LETTER DOTLESS BEH
-066F;AL # ARABIC LETTER DOTLESS QAF
-0670;CM # ARABIC LETTER SUPERSCRIPT ALEF
-0671;AL # ARABIC LETTER ALEF WASLA
-0672;AL # ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
-0673;AL # ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
-0674;AL # ARABIC LETTER HIGH HAMZA
-0675;AL # ARABIC LETTER HIGH HAMZA ALEF
-0676;AL # ARABIC LETTER HIGH HAMZA WAW
-0677;AL # ARABIC LETTER U WITH HAMZA ABOVE
-0678;AL # ARABIC LETTER HIGH HAMZA YEH
-0679;AL # ARABIC LETTER TTEH
-067A;AL # ARABIC LETTER TTEHEH
-067B;AL # ARABIC LETTER BEEH
-067C;AL # ARABIC LETTER TEH WITH RING
-067D;AL # ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS
-067E;AL # ARABIC LETTER PEH
-067F;AL # ARABIC LETTER TEHEH
-0680;AL # ARABIC LETTER BEHEH
-0681;AL # ARABIC LETTER HAH WITH HAMZA ABOVE
-0682;AL # ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE
-0683;AL # ARABIC LETTER NYEH
-0684;AL # ARABIC LETTER DYEH
-0685;AL # ARABIC LETTER HAH WITH THREE DOTS ABOVE
-0686;AL # ARABIC LETTER TCHEH
-0687;AL # ARABIC LETTER TCHEHEH
-0688;AL # ARABIC LETTER DDAL
-0689;AL # ARABIC LETTER DAL WITH RING
-068A;AL # ARABIC LETTER DAL WITH DOT BELOW
-068B;AL # ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH
-068C;AL # ARABIC LETTER DAHAL
-068D;AL # ARABIC LETTER DDAHAL
-068E;AL # ARABIC LETTER DUL
-068F;AL # ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS
-0690;AL # ARABIC LETTER DAL WITH FOUR DOTS ABOVE
-0691;AL # ARABIC LETTER RREH
-0692;AL # ARABIC LETTER REH WITH SMALL V
-0693;AL # ARABIC LETTER REH WITH RING
-0694;AL # ARABIC LETTER REH WITH DOT BELOW
-0695;AL # ARABIC LETTER REH WITH SMALL V BELOW
-0696;AL # ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE
-0697;AL # ARABIC LETTER REH WITH TWO DOTS ABOVE
-0698;AL # ARABIC LETTER JEH
-0699;AL # ARABIC LETTER REH WITH FOUR DOTS ABOVE
-069A;AL # ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE
-069B;AL # ARABIC LETTER SEEN WITH THREE DOTS BELOW
-069C;AL # ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE
-069D;AL # ARABIC LETTER SAD WITH TWO DOTS BELOW
-069E;AL # ARABIC LETTER SAD WITH THREE DOTS ABOVE
-069F;AL # ARABIC LETTER TAH WITH THREE DOTS ABOVE
-06A0;AL # ARABIC LETTER AIN WITH THREE DOTS ABOVE
-06A1;AL # ARABIC LETTER DOTLESS FEH
-06A2;AL # ARABIC LETTER FEH WITH DOT MOVED BELOW
-06A3;AL # ARABIC LETTER FEH WITH DOT BELOW
-06A4;AL # ARABIC LETTER VEH
-06A5;AL # ARABIC LETTER FEH WITH THREE DOTS BELOW
-06A6;AL # ARABIC LETTER PEHEH
-06A7;AL # ARABIC LETTER QAF WITH DOT ABOVE
-06A8;AL # ARABIC LETTER QAF WITH THREE DOTS ABOVE
-06A9;AL # ARABIC LETTER KEHEH
-06AA;AL # ARABIC LETTER SWASH KAF
-06AB;AL # ARABIC LETTER KAF WITH RING
-06AC;AL # ARABIC LETTER KAF WITH DOT ABOVE
-06AD;AL # ARABIC LETTER NG
-06AE;AL # ARABIC LETTER KAF WITH THREE DOTS BELOW
-06AF;AL # ARABIC LETTER GAF
-06B0;AL # ARABIC LETTER GAF WITH RING
-06B1;AL # ARABIC LETTER NGOEH
-06B2;AL # ARABIC LETTER GAF WITH TWO DOTS BELOW
-06B3;AL # ARABIC LETTER GUEH
-06B4;AL # ARABIC LETTER GAF WITH THREE DOTS ABOVE
-06B5;AL # ARABIC LETTER LAM WITH SMALL V
-06B6;AL # ARABIC LETTER LAM WITH DOT ABOVE
-06B7;AL # ARABIC LETTER LAM WITH THREE DOTS ABOVE
-06B8;AL # ARABIC LETTER LAM WITH THREE DOTS BELOW
-06B9;AL # ARABIC LETTER NOON WITH DOT BELOW
-06BA;AL # ARABIC LETTER NOON GHUNNA
-06BB;AL # ARABIC LETTER RNOON
-06BC;AL # ARABIC LETTER NOON WITH RING
-06BD;AL # ARABIC LETTER NOON WITH THREE DOTS ABOVE
-06BE;AL # ARABIC LETTER HEH DOACHASHMEE
-06BF;AL # ARABIC LETTER TCHEH WITH DOT ABOVE
-06C0;AL # ARABIC LETTER HEH WITH YEH ABOVE
-06C1;AL # ARABIC LETTER HEH GOAL
-06C2;AL # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
-06C3;AL # ARABIC LETTER TEH MARBUTA GOAL
-06C4;AL # ARABIC LETTER WAW WITH RING
-06C5;AL # ARABIC LETTER KIRGHIZ OE
-06C6;AL # ARABIC LETTER OE
-06C7;AL # ARABIC LETTER U
-06C8;AL # ARABIC LETTER YU
-06C9;AL # ARABIC LETTER KIRGHIZ YU
-06CA;AL # ARABIC LETTER WAW WITH TWO DOTS ABOVE
-06CB;AL # ARABIC LETTER VE
-06CC;AL # ARABIC LETTER FARSI YEH
-06CD;AL # ARABIC LETTER YEH WITH TAIL
-06CE;AL # ARABIC LETTER YEH WITH SMALL V
-06CF;AL # ARABIC LETTER WAW WITH DOT ABOVE
-06D0;AL # ARABIC LETTER E
-06D1;AL # ARABIC LETTER YEH WITH THREE DOTS BELOW
-06D2;AL # ARABIC LETTER YEH BARREE
-06D3;AL # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
-06D4;EX # 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;AL # 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
-06EE;AL # ARABIC LETTER DAL WITH INVERTED V
-06EF;AL # ARABIC LETTER REH WITH INVERTED V
-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
-06FF;AL # ARABIC LETTER HEH WITH INVERTED V
-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;AL # 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
-072D;AL # SYRIAC LETTER PERSIAN BHETH
-072E;AL # SYRIAC LETTER PERSIAN GHAMAL
-072F;AL # SYRIAC LETTER PERSIAN DHALATH
-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
-074D;AL # SYRIAC LETTER SOGDIAN ZHAIN
-074E;AL # SYRIAC LETTER SOGDIAN KHAPH
-074F;AL # SYRIAC LETTER SOGDIAN FE
-0750;AL # ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW
-0751;AL # ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE
-0752;AL # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW
-0753;AL # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE
-0754;AL # ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE
-0755;AL # ARABIC LETTER BEH WITH INVERTED SMALL V BELOW
-0756;AL # ARABIC LETTER BEH WITH SMALL V
-0757;AL # ARABIC LETTER HAH WITH TWO DOTS ABOVE
-0758;AL # ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW
-0759;AL # ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH
-075A;AL # ARABIC LETTER DAL WITH INVERTED SMALL V BELOW
-075B;AL # ARABIC LETTER REH WITH STROKE
-075C;AL # ARABIC LETTER SEEN WITH FOUR DOTS ABOVE
-075D;AL # ARABIC LETTER AIN WITH TWO DOTS ABOVE
-075E;AL # ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE
-075F;AL # ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE
-0760;AL # ARABIC LETTER FEH WITH TWO DOTS BELOW
-0761;AL # ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW
-0762;AL # ARABIC LETTER KEHEH WITH DOT ABOVE
-0763;AL # ARABIC LETTER KEHEH WITH THREE DOTS ABOVE
-0764;AL # ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW
-0765;AL # ARABIC LETTER MEEM WITH DOT ABOVE
-0766;AL # ARABIC LETTER MEEM WITH DOT BELOW
-0767;AL # ARABIC LETTER NOON WITH TWO DOTS BELOW
-0768;AL # ARABIC LETTER NOON WITH SMALL TAH
-0769;AL # ARABIC LETTER NOON WITH SMALL V
-076A;AL # ARABIC LETTER LAM WITH BAR
-076B;AL # ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE
-076C;AL # ARABIC LETTER REH WITH HAMZA ABOVE
-076D;AL # ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE
-0780;AL # THAANA LETTER HAA
-0781;AL # THAANA LETTER SHAVIYANI
-0782;AL # THAANA LETTER NOONU
-0783;AL # THAANA LETTER RAA
-0784;AL # THAANA LETTER BAA
-0785;AL # THAANA LETTER LHAVIYANI
-0786;AL # THAANA LETTER KAAFU
-0787;AL # THAANA LETTER ALIFU
-0788;AL # THAANA LETTER VAAVU
-0789;AL # THAANA LETTER MEEMU
-078A;AL # THAANA LETTER FAAFU
-078B;AL # THAANA LETTER DHAALU
-078C;AL # THAANA LETTER THAA
-078D;AL # THAANA LETTER LAAMU
-078E;AL # THAANA LETTER GAAFU
-078F;AL # THAANA LETTER GNAVIYANI
-0790;AL # THAANA LETTER SEENU
-0791;AL # THAANA LETTER DAVIYANI
-0792;AL # THAANA LETTER ZAVIYANI
-0793;AL # THAANA LETTER TAVIYANI
-0794;AL # THAANA LETTER YAA
-0795;AL # THAANA LETTER PAVIYANI
-0796;AL # THAANA LETTER JAVIYANI
-0797;AL # THAANA LETTER CHAVIYANI
-0798;AL # THAANA LETTER TTAA
-0799;AL # THAANA LETTER HHAA
-079A;AL # THAANA LETTER KHAA
-079B;AL # THAANA LETTER THAALU
-079C;AL # THAANA LETTER ZAA
-079D;AL # THAANA LETTER SHEENU
-079E;AL # THAANA LETTER SAADHU
-079F;AL # THAANA LETTER DAADHU
-07A0;AL # THAANA LETTER TO
-07A1;AL # THAANA LETTER ZO
-07A2;AL # THAANA LETTER AINU
-07A3;AL # THAANA LETTER GHAINU
-07A4;AL # THAANA LETTER QAAFU
-07A5;AL # THAANA LETTER WAAVU
-07A6;CM # THAANA ABAFILI
-07A7;CM # THAANA AABAAFILI
-07A8;CM # THAANA IBIFILI
-07A9;CM # THAANA EEBEEFILI
-07AA;CM # THAANA UBUFILI
-07AB;CM # THAANA OOBOOFILI
-07AC;CM # THAANA EBEFILI
-07AD;CM # THAANA EYBEYFILI
-07AE;CM # THAANA OBOFILI
-07AF;CM # THAANA OABOAFILI
-07B0;CM # THAANA SUKUN
-07B1;AL # THAANA LETTER NAA
-0901;CM # DEVANAGARI SIGN CANDRABINDU
-0902;CM # DEVANAGARI SIGN ANUSVARA
-0903;CM # DEVANAGARI SIGN VISARGA
-0904;AL # DEVANAGARI LETTER SHORT A
-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;BA # DEVANAGARI DANDA
-0965;BA # 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
-097D;AL # DEVANAGARI LETTER GLOTTAL STOP
-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
-09BD;AL # BENGALI SIGN AVAGRAHA
-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
-09CE;AL # BENGALI LETTER KHANDA TA
-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
-0A01;CM # GURMUKHI SIGN ADAK BINDI
-0A02;CM # GURMUKHI SIGN BINDI
-0A03;CM # GURMUKHI SIGN VISARGA
-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
-0A8C;AL # GUJARATI LETTER VOCALIC L
-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
-0AE1;AL # GUJARATI LETTER VOCALIC LL
-0AE2;CM # GUJARATI VOWEL SIGN VOCALIC L
-0AE3;CM # GUJARATI VOWEL SIGN VOCALIC LL
-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
-0AF1;PR # GUJARATI RUPEE SIGN
-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
-0B35;AL # ORIYA LETTER VA
-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
-0B71;AL # ORIYA LETTER WA
-0B82;CM # TAMIL SIGN ANUSVARA
-0B83;AL # TAMIL SIGN VISARGA
-0B85;AL # TAMIL LETTER A
-0B86;AL # TAMIL LETTER AA
-0B87;AL # TAMIL LETTER I
-0B88;AL # TAMIL LETTER II
-0B89;AL # TAMIL LETTER U
-0B8A;AL # TAMIL LETTER UU
-0B8E;AL # TAMIL LETTER E
-0B8F;AL # TAMIL LETTER EE
-0B90;AL # TAMIL LETTER AI
-0B92;AL # TAMIL LETTER O
-0B93;AL # TAMIL LETTER OO
-0B94;AL # TAMIL LETTER AU
-0B95;AL # TAMIL LETTER KA
-0B99;AL # TAMIL LETTER NGA
-0B9A;AL # TAMIL LETTER CA
-0B9C;AL # TAMIL LETTER JA
-0B9E;AL # TAMIL LETTER NYA
-0B9F;AL # TAMIL LETTER TTA
-0BA3;AL # TAMIL LETTER NNA
-0BA4;AL # TAMIL LETTER TA
-0BA8;AL # TAMIL LETTER NA
-0BA9;AL # TAMIL LETTER NNNA
-0BAA;AL # TAMIL LETTER PA
-0BAE;AL # TAMIL LETTER MA
-0BAF;AL # TAMIL LETTER YA
-0BB0;AL # TAMIL LETTER RA
-0BB1;AL # TAMIL LETTER RRA
-0BB2;AL # TAMIL LETTER LA
-0BB3;AL # TAMIL LETTER LLA
-0BB4;AL # TAMIL LETTER LLLA
-0BB5;AL # TAMIL LETTER VA
-0BB6;AL # TAMIL LETTER SHA
-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
-0BE6;NU # TAMIL DIGIT ZERO
-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
-0BF3;AL # TAMIL DAY SIGN
-0BF4;AL # TAMIL MONTH SIGN
-0BF5;AL # TAMIL YEAR SIGN
-0BF6;AL # TAMIL DEBIT SIGN
-0BF7;AL # TAMIL CREDIT SIGN
-0BF8;AL # TAMIL AS ABOVE SIGN
-0BF9;PR # TAMIL RUPEE SIGN
-0BFA;AL # TAMIL NUMBER SIGN
-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
-0CBC;CM # KANNADA SIGN NUKTA
-0CBD;AL # KANNADA SIGN AVAGRAHA
-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;BA # THAI CHARACTER ANGKHANKHU
-0E5B;BA # 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;BB # TIBETAN MARK GTER YIG MGO TRUNCATED A
-0F02;BB # TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA
-0F03;BB # TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA
-0F04;BB # TIBETAN MARK INITIAL YIG MGO MDUN MA
-0F05;AL # TIBETAN MARK CLOSING YIG MGO SGAB MA
-0F06;BB # TIBETAN MARK CARET YIG MGO PHUR SHAD MA
-0F07;BB # TIBETAN MARK YIG MGO TSHEG SHAD MA
-0F08;GL # TIBETAN MARK SBRUL SHAD
-0F09;BB # TIBETAN MARK BSKUR YIG MGO
-0F0A;BB # TIBETAN MARK BKA- SHOG YIG MGO
-0F0B;BA # TIBETAN MARK INTERSYLLABIC TSHEG
-0F0C;GL # TIBETAN MARK DELIMITER TSHEG BSTAR
-0F0D;EX # TIBETAN MARK SHAD
-0F0E;EX # TIBETAN MARK NYIS SHAD
-0F0F;EX # TIBETAN MARK TSHEG SHAD
-0F10;EX # TIBETAN MARK NYIS TSHEG SHAD
-0F11;EX # TIBETAN MARK RIN CHEN SPUNGS SHAD
-0F12;GL # TIBETAN MARK RGYA GRAM SHAD
-0F13;AL # TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN
-0F14;EX # 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;BA # 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;BA # 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;BA # 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;BA # TIBETAN KU RU KHA
-0FBF;BA # 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
-0FD0;BB # TIBETAN MARK BSKA- SHOG GI MGO RGYAN
-0FD1;BB # TIBETAN MARK MNYAM YIG GI MGO RGYAN
-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;BA # MYANMAR SIGN LITTLE SECTION
-104B;BA # MYANMAR SIGN SECTION
-104C;AL # MYANMAR SYMBOL LOCATIVE
-104D;AL # MYANMAR SYMBOL COMPLETED
-104E;AL # MYANMAR SYMBOL AFOREMENTIONED
-104F;AL # MYANMAR SYMBOL GENITIVE
-1050;SA # MYANMAR LETTER SHA
-1051;SA # MYANMAR LETTER SSA
-1052;SA # MYANMAR LETTER VOCALIC R
-1053;SA # MYANMAR LETTER VOCALIC RR
-1054;SA # MYANMAR LETTER VOCALIC L
-1055;SA # MYANMAR LETTER VOCALIC LL
-1056;CM # MYANMAR VOWEL SIGN VOCALIC R
-1057;CM # MYANMAR VOWEL SIGN VOCALIC RR
-1058;CM # MYANMAR VOWEL SIGN VOCALIC L
-1059;CM # MYANMAR VOWEL SIGN VOCALIC LL
-10A0;AL # GEORGIAN CAPITAL LETTER AN
-10A1;AL # GEORGIAN CAPITAL LETTER BAN
-10A2;AL # GEORGIAN CAPITAL LETTER GAN
-10A3;AL # GEORGIAN CAPITAL LETTER DON
-10A4;AL # GEORGIAN CAPITAL LETTER EN
-10A5;AL # GEORGIAN CAPITAL LETTER VIN
-10A6;AL # GEORGIAN CAPITAL LETTER ZEN
-10A7;AL # GEORGIAN CAPITAL LETTER TAN
-10A8;AL # GEORGIAN CAPITAL LETTER IN
-10A9;AL # GEORGIAN CAPITAL LETTER KAN
-10AA;AL # GEORGIAN CAPITAL LETTER LAS
-10AB;AL # GEORGIAN CAPITAL LETTER MAN
-10AC;AL # GEORGIAN CAPITAL LETTER NAR
-10AD;AL # GEORGIAN CAPITAL LETTER ON
-10AE;AL # GEORGIAN CAPITAL LETTER PAR
-10AF;AL # GEORGIAN CAPITAL LETTER ZHAR
-10B0;AL # GEORGIAN CAPITAL LETTER RAE
-10B1;AL # GEORGIAN CAPITAL LETTER SAN
-10B2;AL # GEORGIAN CAPITAL LETTER TAR
-10B3;AL # GEORGIAN CAPITAL LETTER UN
-10B4;AL # GEORGIAN CAPITAL LETTER PHAR
-10B5;AL # GEORGIAN CAPITAL LETTER KHAR
-10B6;AL # GEORGIAN CAPITAL LETTER GHAN
-10B7;AL # GEORGIAN CAPITAL LETTER QAR
-10B8;AL # GEORGIAN CAPITAL LETTER SHIN
-10B9;AL # GEORGIAN CAPITAL LETTER CHIN
-10BA;AL # GEORGIAN CAPITAL LETTER CAN
-10BB;AL # GEORGIAN CAPITAL LETTER JIL
-10BC;AL # GEORGIAN CAPITAL LETTER CIL
-10BD;AL # GEORGIAN CAPITAL LETTER CHAR
-10BE;AL # GEORGIAN CAPITAL LETTER XAN
-10BF;AL # GEORGIAN CAPITAL LETTER JHAN
-10C0;AL # GEORGIAN CAPITAL LETTER HAE
-10C1;AL # GEORGIAN CAPITAL LETTER HE
-10C2;AL # GEORGIAN CAPITAL LETTER HIE
-10C3;AL # GEORGIAN CAPITAL LETTER WE
-10C4;AL # GEORGIAN CAPITAL LETTER HAR
-10C5;AL # GEORGIAN CAPITAL LETTER HOE
-10D0;AL # GEORGIAN LETTER AN
-10D1;AL # GEORGIAN LETTER BAN
-10D2;AL # GEORGIAN LETTER GAN
-10D3;AL # GEORGIAN LETTER DON
-10D4;AL # GEORGIAN LETTER EN
-10D5;AL # GEORGIAN LETTER VIN
-10D6;AL # GEORGIAN LETTER ZEN
-10D7;AL # GEORGIAN LETTER TAN
-10D8;AL # GEORGIAN LETTER IN
-10D9;AL # GEORGIAN LETTER KAN
-10DA;AL # GEORGIAN LETTER LAS
-10DB;AL # GEORGIAN LETTER MAN
-10DC;AL # GEORGIAN LETTER NAR
-10DD;AL # GEORGIAN LETTER ON
-10DE;AL # GEORGIAN LETTER PAR
-10DF;AL # GEORGIAN LETTER ZHAR
-10E0;AL # GEORGIAN LETTER RAE
-10E1;AL # GEORGIAN LETTER SAN
-10E2;AL # GEORGIAN LETTER TAR
-10E3;AL # GEORGIAN LETTER UN
-10E4;AL # GEORGIAN LETTER PHAR
-10E5;AL # GEORGIAN LETTER KHAR
-10E6;AL # GEORGIAN LETTER GHAN
-10E7;AL # GEORGIAN LETTER QAR
-10E8;AL # GEORGIAN LETTER SHIN
-10E9;AL # GEORGIAN LETTER CHIN
-10EA;AL # GEORGIAN LETTER CAN
-10EB;AL # GEORGIAN LETTER JIL
-10EC;AL # GEORGIAN LETTER CIL
-10ED;AL # GEORGIAN LETTER CHAR
-10EE;AL # GEORGIAN LETTER XAN
-10EF;AL # GEORGIAN LETTER JHAN
-10F0;AL # GEORGIAN LETTER HAE
-10F1;AL # GEORGIAN LETTER HE
-10F2;AL # GEORGIAN LETTER HIE
-10F3;AL # GEORGIAN LETTER WE
-10F4;AL # GEORGIAN LETTER HAR
-10F5;AL # GEORGIAN LETTER HOE
-10F6;AL # GEORGIAN LETTER FI
-10F7;AL # GEORGIAN LETTER YN
-10F8;AL # GEORGIAN LETTER ELIFI
-10F9;AL # GEORGIAN LETTER TURNED GAN
-10FA;AL # GEORGIAN LETTER AIN
-10FB;AL # GEORGIAN PARAGRAPH SEPARATOR
-10FC;AL # MODIFIER LETTER GEORGIAN NAR
-1100;JL # HANGUL CHOSEONG KIYEOK
-1101;JL # HANGUL CHOSEONG SSANGKIYEOK
-1102;JL # HANGUL CHOSEONG NIEUN
-1103;JL # HANGUL CHOSEONG TIKEUT
-1104;JL # HANGUL CHOSEONG SSANGTIKEUT
-1105;JL # HANGUL CHOSEONG RIEUL
-1106;JL # HANGUL CHOSEONG MIEUM
-1107;JL # HANGUL CHOSEONG PIEUP
-1108;JL # HANGUL CHOSEONG SSANGPIEUP
-1109;JL # HANGUL CHOSEONG SIOS
-110A;JL # HANGUL CHOSEONG SSANGSIOS
-110B;JL # HANGUL CHOSEONG IEUNG
-110C;JL # HANGUL CHOSEONG CIEUC
-110D;JL # HANGUL CHOSEONG SSANGCIEUC
-110E;JL # HANGUL CHOSEONG CHIEUCH
-110F;JL # HANGUL CHOSEONG KHIEUKH
-1110;JL # HANGUL CHOSEONG THIEUTH
-1111;JL # HANGUL CHOSEONG PHIEUPH
-1112;JL # HANGUL CHOSEONG HIEUH
-1113;JL # HANGUL CHOSEONG NIEUN-KIYEOK
-1114;JL # HANGUL CHOSEONG SSANGNIEUN
-1115;JL # HANGUL CHOSEONG NIEUN-TIKEUT
-1116;JL # HANGUL CHOSEONG NIEUN-PIEUP
-1117;JL # HANGUL CHOSEONG TIKEUT-KIYEOK
-1118;JL # HANGUL CHOSEONG RIEUL-NIEUN
-1119;JL # HANGUL CHOSEONG SSANGRIEUL
-111A;JL # HANGUL CHOSEONG RIEUL-HIEUH
-111B;JL # HANGUL CHOSEONG KAPYEOUNRIEUL
-111C;JL # HANGUL CHOSEONG MIEUM-PIEUP
-111D;JL # HANGUL CHOSEONG KAPYEOUNMIEUM
-111E;JL # HANGUL CHOSEONG PIEUP-KIYEOK
-111F;JL # HANGUL CHOSEONG PIEUP-NIEUN
-1120;JL # HANGUL CHOSEONG PIEUP-TIKEUT
-1121;JL # HANGUL CHOSEONG PIEUP-SIOS
-1122;JL # HANGUL CHOSEONG PIEUP-SIOS-KIYEOK
-1123;JL # HANGUL CHOSEONG PIEUP-SIOS-TIKEUT
-1124;JL # HANGUL CHOSEONG PIEUP-SIOS-PIEUP
-1125;JL # HANGUL CHOSEONG PIEUP-SSANGSIOS
-1126;JL # HANGUL CHOSEONG PIEUP-SIOS-CIEUC
-1127;JL # HANGUL CHOSEONG PIEUP-CIEUC
-1128;JL # HANGUL CHOSEONG PIEUP-CHIEUCH
-1129;JL # HANGUL CHOSEONG PIEUP-THIEUTH
-112A;JL # HANGUL CHOSEONG PIEUP-PHIEUPH
-112B;JL # HANGUL CHOSEONG KAPYEOUNPIEUP
-112C;JL # HANGUL CHOSEONG KAPYEOUNSSANGPIEUP
-112D;JL # HANGUL CHOSEONG SIOS-KIYEOK
-112E;JL # HANGUL CHOSEONG SIOS-NIEUN
-112F;JL # HANGUL CHOSEONG SIOS-TIKEUT
-1130;JL # HANGUL CHOSEONG SIOS-RIEUL
-1131;JL # HANGUL CHOSEONG SIOS-MIEUM
-1132;JL # HANGUL CHOSEONG SIOS-PIEUP
-1133;JL # HANGUL CHOSEONG SIOS-PIEUP-KIYEOK
-1134;JL # HANGUL CHOSEONG SIOS-SSANGSIOS
-1135;JL # HANGUL CHOSEONG SIOS-IEUNG
-1136;JL # HANGUL CHOSEONG SIOS-CIEUC
-1137;JL # HANGUL CHOSEONG SIOS-CHIEUCH
-1138;JL # HANGUL CHOSEONG SIOS-KHIEUKH
-1139;JL # HANGUL CHOSEONG SIOS-THIEUTH
-113A;JL # HANGUL CHOSEONG SIOS-PHIEUPH
-113B;JL # HANGUL CHOSEONG SIOS-HIEUH
-113C;JL # HANGUL CHOSEONG CHITUEUMSIOS
-113D;JL # HANGUL CHOSEONG CHITUEUMSSANGSIOS
-113E;JL # HANGUL CHOSEONG CEONGCHIEUMSIOS
-113F;JL # HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS
-1140;JL # HANGUL CHOSEONG PANSIOS
-1141;JL # HANGUL CHOSEONG IEUNG-KIYEOK
-1142;JL # HANGUL CHOSEONG IEUNG-TIKEUT
-1143;JL # HANGUL CHOSEONG IEUNG-MIEUM
-1144;JL # HANGUL CHOSEONG IEUNG-PIEUP
-1145;JL # HANGUL CHOSEONG IEUNG-SIOS
-1146;JL # HANGUL CHOSEONG IEUNG-PANSIOS
-1147;JL # HANGUL CHOSEONG SSANGIEUNG
-1148;JL # HANGUL CHOSEONG IEUNG-CIEUC
-1149;JL # HANGUL CHOSEONG IEUNG-CHIEUCH
-114A;JL # HANGUL CHOSEONG IEUNG-THIEUTH
-114B;JL # HANGUL CHOSEONG IEUNG-PHIEUPH
-114C;JL # HANGUL CHOSEONG YESIEUNG
-114D;JL # HANGUL CHOSEONG CIEUC-IEUNG
-114E;JL # HANGUL CHOSEONG CHITUEUMCIEUC
-114F;JL # HANGUL CHOSEONG CHITUEUMSSANGCIEUC
-1150;JL # HANGUL CHOSEONG CEONGCHIEUMCIEUC
-1151;JL # HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC
-1152;JL # HANGUL CHOSEONG CHIEUCH-KHIEUKH
-1153;JL # HANGUL CHOSEONG CHIEUCH-HIEUH
-1154;JL # HANGUL CHOSEONG CHITUEUMCHIEUCH
-1155;JL # HANGUL CHOSEONG CEONGCHIEUMCHIEUCH
-1156;JL # HANGUL CHOSEONG PHIEUPH-PIEUP
-1157;JL # HANGUL CHOSEONG KAPYEOUNPHIEUPH
-1158;JL # HANGUL CHOSEONG SSANGHIEUH
-1159;JL # HANGUL CHOSEONG YEORINHIEUH
-115F;JL # HANGUL CHOSEONG FILLER
-1160;JV # HANGUL JUNGSEONG FILLER
-1161;JV # HANGUL JUNGSEONG A
-1162;JV # HANGUL JUNGSEONG AE
-1163;JV # HANGUL JUNGSEONG YA
-1164;JV # HANGUL JUNGSEONG YAE
-1165;JV # HANGUL JUNGSEONG EO
-1166;JV # HANGUL JUNGSEONG E
-1167;JV # HANGUL JUNGSEONG YEO
-1168;JV # HANGUL JUNGSEONG YE
-1169;JV # HANGUL JUNGSEONG O
-116A;JV # HANGUL JUNGSEONG WA
-116B;JV # HANGUL JUNGSEONG WAE
-116C;JV # HANGUL JUNGSEONG OE
-116D;JV # HANGUL JUNGSEONG YO
-116E;JV # HANGUL JUNGSEONG U
-116F;JV # HANGUL JUNGSEONG WEO
-1170;JV # HANGUL JUNGSEONG WE
-1171;JV # HANGUL JUNGSEONG WI
-1172;JV # HANGUL JUNGSEONG YU
-1173;JV # HANGUL JUNGSEONG EU
-1174;JV # HANGUL JUNGSEONG YI
-1175;JV # HANGUL JUNGSEONG I
-1176;JV # HANGUL JUNGSEONG A-O
-1177;JV # HANGUL JUNGSEONG A-U
-1178;JV # HANGUL JUNGSEONG YA-O
-1179;JV # HANGUL JUNGSEONG YA-YO
-117A;JV # HANGUL JUNGSEONG EO-O
-117B;JV # HANGUL JUNGSEONG EO-U
-117C;JV # HANGUL JUNGSEONG EO-EU
-117D;JV # HANGUL JUNGSEONG YEO-O
-117E;JV # HANGUL JUNGSEONG YEO-U
-117F;JV # HANGUL JUNGSEONG O-EO
-1180;JV # HANGUL JUNGSEONG O-E
-1181;JV # HANGUL JUNGSEONG O-YE
-1182;JV # HANGUL JUNGSEONG O-O
-1183;JV # HANGUL JUNGSEONG O-U
-1184;JV # HANGUL JUNGSEONG YO-YA
-1185;JV # HANGUL JUNGSEONG YO-YAE
-1186;JV # HANGUL JUNGSEONG YO-YEO
-1187;JV # HANGUL JUNGSEONG YO-O
-1188;JV # HANGUL JUNGSEONG YO-I
-1189;JV # HANGUL JUNGSEONG U-A
-118A;JV # HANGUL JUNGSEONG U-AE
-118B;JV # HANGUL JUNGSEONG U-EO-EU
-118C;JV # HANGUL JUNGSEONG U-YE
-118D;JV # HANGUL JUNGSEONG U-U
-118E;JV # HANGUL JUNGSEONG YU-A
-118F;JV # HANGUL JUNGSEONG YU-EO
-1190;JV # HANGUL JUNGSEONG YU-E
-1191;JV # HANGUL JUNGSEONG YU-YEO
-1192;JV # HANGUL JUNGSEONG YU-YE
-1193;JV # HANGUL JUNGSEONG YU-U
-1194;JV # HANGUL JUNGSEONG YU-I
-1195;JV # HANGUL JUNGSEONG EU-U
-1196;JV # HANGUL JUNGSEONG EU-EU
-1197;JV # HANGUL JUNGSEONG YI-U
-1198;JV # HANGUL JUNGSEONG I-A
-1199;JV # HANGUL JUNGSEONG I-YA
-119A;JV # HANGUL JUNGSEONG I-O
-119B;JV # HANGUL JUNGSEONG I-U
-119C;JV # HANGUL JUNGSEONG I-EU
-119D;JV # HANGUL JUNGSEONG I-ARAEA
-119E;JV # HANGUL JUNGSEONG ARAEA
-119F;JV # HANGUL JUNGSEONG ARAEA-EO
-11A0;JV # HANGUL JUNGSEONG ARAEA-U
-11A1;JV # HANGUL JUNGSEONG ARAEA-I
-11A2;JV # HANGUL JUNGSEONG SSANGARAEA
-11A8;JT # HANGUL JONGSEONG KIYEOK
-11A9;JT # HANGUL JONGSEONG SSANGKIYEOK
-11AA;JT # HANGUL JONGSEONG KIYEOK-SIOS
-11AB;JT # HANGUL JONGSEONG NIEUN
-11AC;JT # HANGUL JONGSEONG NIEUN-CIEUC
-11AD;JT # HANGUL JONGSEONG NIEUN-HIEUH
-11AE;JT # HANGUL JONGSEONG TIKEUT
-11AF;JT # HANGUL JONGSEONG RIEUL
-11B0;JT # HANGUL JONGSEONG RIEUL-KIYEOK
-11B1;JT # HANGUL JONGSEONG RIEUL-MIEUM
-11B2;JT # HANGUL JONGSEONG RIEUL-PIEUP
-11B3;JT # HANGUL JONGSEONG RIEUL-SIOS
-11B4;JT # HANGUL JONGSEONG RIEUL-THIEUTH
-11B5;JT # HANGUL JONGSEONG RIEUL-PHIEUPH
-11B6;JT # HANGUL JONGSEONG RIEUL-HIEUH
-11B7;JT # HANGUL JONGSEONG MIEUM
-11B8;JT # HANGUL JONGSEONG PIEUP
-11B9;JT # HANGUL JONGSEONG PIEUP-SIOS
-11BA;JT # HANGUL JONGSEONG SIOS
-11BB;JT # HANGUL JONGSEONG SSANGSIOS
-11BC;JT # HANGUL JONGSEONG IEUNG
-11BD;JT # HANGUL JONGSEONG CIEUC
-11BE;JT # HANGUL JONGSEONG CHIEUCH
-11BF;JT # HANGUL JONGSEONG KHIEUKH
-11C0;JT # HANGUL JONGSEONG THIEUTH
-11C1;JT # HANGUL JONGSEONG PHIEUPH
-11C2;JT # HANGUL JONGSEONG HIEUH
-11C3;JT # HANGUL JONGSEONG KIYEOK-RIEUL
-11C4;JT # HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK
-11C5;JT # HANGUL JONGSEONG NIEUN-KIYEOK
-11C6;JT # HANGUL JONGSEONG NIEUN-TIKEUT
-11C7;JT # HANGUL JONGSEONG NIEUN-SIOS
-11C8;JT # HANGUL JONGSEONG NIEUN-PANSIOS
-11C9;JT # HANGUL JONGSEONG NIEUN-THIEUTH
-11CA;JT # HANGUL JONGSEONG TIKEUT-KIYEOK
-11CB;JT # HANGUL JONGSEONG TIKEUT-RIEUL
-11CC;JT # HANGUL JONGSEONG RIEUL-KIYEOK-SIOS
-11CD;JT # HANGUL JONGSEONG RIEUL-NIEUN
-11CE;JT # HANGUL JONGSEONG RIEUL-TIKEUT
-11CF;JT # HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH
-11D0;JT # HANGUL JONGSEONG SSANGRIEUL
-11D1;JT # HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK
-11D2;JT # HANGUL JONGSEONG RIEUL-MIEUM-SIOS
-11D3;JT # HANGUL JONGSEONG RIEUL-PIEUP-SIOS
-11D4;JT # HANGUL JONGSEONG RIEUL-PIEUP-HIEUH
-11D5;JT # HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP
-11D6;JT # HANGUL JONGSEONG RIEUL-SSANGSIOS
-11D7;JT # HANGUL JONGSEONG RIEUL-PANSIOS
-11D8;JT # HANGUL JONGSEONG RIEUL-KHIEUKH
-11D9;JT # HANGUL JONGSEONG RIEUL-YEORINHIEUH
-11DA;JT # HANGUL JONGSEONG MIEUM-KIYEOK
-11DB;JT # HANGUL JONGSEONG MIEUM-RIEUL
-11DC;JT # HANGUL JONGSEONG MIEUM-PIEUP
-11DD;JT # HANGUL JONGSEONG MIEUM-SIOS
-11DE;JT # HANGUL JONGSEONG MIEUM-SSANGSIOS
-11DF;JT # HANGUL JONGSEONG MIEUM-PANSIOS
-11E0;JT # HANGUL JONGSEONG MIEUM-CHIEUCH
-11E1;JT # HANGUL JONGSEONG MIEUM-HIEUH
-11E2;JT # HANGUL JONGSEONG KAPYEOUNMIEUM
-11E3;JT # HANGUL JONGSEONG PIEUP-RIEUL
-11E4;JT # HANGUL JONGSEONG PIEUP-PHIEUPH
-11E5;JT # HANGUL JONGSEONG PIEUP-HIEUH
-11E6;JT # HANGUL JONGSEONG KAPYEOUNPIEUP
-11E7;JT # HANGUL JONGSEONG SIOS-KIYEOK
-11E8;JT # HANGUL JONGSEONG SIOS-TIKEUT
-11E9;JT # HANGUL JONGSEONG SIOS-RIEUL
-11EA;JT # HANGUL JONGSEONG SIOS-PIEUP
-11EB;JT # HANGUL JONGSEONG PANSIOS
-11EC;JT # HANGUL JONGSEONG IEUNG-KIYEOK
-11ED;JT # HANGUL JONGSEONG IEUNG-SSANGKIYEOK
-11EE;JT # HANGUL JONGSEONG SSANGIEUNG
-11EF;JT # HANGUL JONGSEONG IEUNG-KHIEUKH
-11F0;JT # HANGUL JONGSEONG YESIEUNG
-11F1;JT # HANGUL JONGSEONG YESIEUNG-SIOS
-11F2;JT # HANGUL JONGSEONG YESIEUNG-PANSIOS
-11F3;JT # HANGUL JONGSEONG PHIEUPH-PIEUP
-11F4;JT # HANGUL JONGSEONG KAPYEOUNPHIEUPH
-11F5;JT # HANGUL JONGSEONG HIEUH-NIEUN
-11F6;JT # HANGUL JONGSEONG HIEUH-RIEUL
-11F7;JT # HANGUL JONGSEONG HIEUH-MIEUM
-11F8;JT # HANGUL JONGSEONG HIEUH-PIEUP
-11F9;JT # 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
-1207;AL # ETHIOPIC SYLLABLE HOA
-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
-1247;AL # ETHIOPIC SYLLABLE QOA
-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
-1287;AL # ETHIOPIC SYLLABLE XOA
-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
-12AF;AL # ETHIOPIC SYLLABLE KOA
-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
-12CF;AL # ETHIOPIC SYLLABLE WOA
-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
-12EF;AL # ETHIOPIC SYLLABLE YOA
-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
-130F;AL # ETHIOPIC SYLLABLE GOA
-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
-131F;AL # ETHIOPIC SYLLABLE GGWAA
-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
-1347;AL # ETHIOPIC SYLLABLE TZOA
-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
-135F;CM # ETHIOPIC COMBINING GEMINATION MARK
-1360;AL # ETHIOPIC SECTION MARK
-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;AL # ETHIOPIC DIGIT ONE
-136A;AL # ETHIOPIC DIGIT TWO
-136B;AL # ETHIOPIC DIGIT THREE
-136C;AL # ETHIOPIC DIGIT FOUR
-136D;AL # ETHIOPIC DIGIT FIVE
-136E;AL # ETHIOPIC DIGIT SIX
-136F;AL # ETHIOPIC DIGIT SEVEN
-1370;AL # ETHIOPIC DIGIT EIGHT
-1371;AL # 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
-1380;AL # ETHIOPIC SYLLABLE SEBATBEIT MWA
-1381;AL # ETHIOPIC SYLLABLE MWI
-1382;AL # ETHIOPIC SYLLABLE MWEE
-1383;AL # ETHIOPIC SYLLABLE MWE
-1384;AL # ETHIOPIC SYLLABLE SEBATBEIT BWA
-1385;AL # ETHIOPIC SYLLABLE BWI
-1386;AL # ETHIOPIC SYLLABLE BWEE
-1387;AL # ETHIOPIC SYLLABLE BWE
-1388;AL # ETHIOPIC SYLLABLE SEBATBEIT FWA
-1389;AL # ETHIOPIC SYLLABLE FWI
-138A;AL # ETHIOPIC SYLLABLE FWEE
-138B;AL # ETHIOPIC SYLLABLE FWE
-138C;AL # ETHIOPIC SYLLABLE SEBATBEIT PWA
-138D;AL # ETHIOPIC SYLLABLE PWI
-138E;AL # ETHIOPIC SYLLABLE PWEE
-138F;AL # ETHIOPIC SYLLABLE PWE
-1390;AL # ETHIOPIC TONAL MARK YIZET
-1391;AL # ETHIOPIC TONAL MARK DERET
-1392;AL # ETHIOPIC TONAL MARK RIKRIK
-1393;AL # ETHIOPIC TONAL MARK SHORT RIKRIK
-1394;AL # ETHIOPIC TONAL MARK DIFAT
-1395;AL # ETHIOPIC TONAL MARK KENAT
-1396;AL # ETHIOPIC TONAL MARK CHIRET
-1397;AL # ETHIOPIC TONAL MARK HIDET
-1398;AL # ETHIOPIC TONAL MARK DERET-HIDET
-1399;AL # ETHIOPIC TONAL MARK KURT
-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;BA # RUNIC SINGLE PUNCTUATION
-16EC;BA # RUNIC MULTIPLE PUNCTUATION
-16ED;BA # RUNIC CROSS PUNCTUATION
-16EE;AL # RUNIC ARLAUG SYMBOL
-16EF;AL # RUNIC TVIMADUR SYMBOL
-16F0;AL # RUNIC BELGTHOR SYMBOL
-1700;AL # TAGALOG LETTER A
-1701;AL # TAGALOG LETTER I
-1702;AL # TAGALOG LETTER U
-1703;AL # TAGALOG LETTER KA
-1704;AL # TAGALOG LETTER GA
-1705;AL # TAGALOG LETTER NGA
-1706;AL # TAGALOG LETTER TA
-1707;AL # TAGALOG LETTER DA
-1708;AL # TAGALOG LETTER NA
-1709;AL # TAGALOG LETTER PA
-170A;AL # TAGALOG LETTER BA
-170B;AL # TAGALOG LETTER MA
-170C;AL # TAGALOG LETTER YA
-170E;AL # TAGALOG LETTER LA
-170F;AL # TAGALOG LETTER WA
-1710;AL # TAGALOG LETTER SA
-1711;AL # TAGALOG LETTER HA
-1712;CM # TAGALOG VOWEL SIGN I
-1713;CM # TAGALOG VOWEL SIGN U
-1714;CM # TAGALOG SIGN VIRAMA
-1720;AL # HANUNOO LETTER A
-1721;AL # HANUNOO LETTER I
-1722;AL # HANUNOO LETTER U
-1723;AL # HANUNOO LETTER KA
-1724;AL # HANUNOO LETTER GA
-1725;AL # HANUNOO LETTER NGA
-1726;AL # HANUNOO LETTER TA
-1727;AL # HANUNOO LETTER DA
-1728;AL # HANUNOO LETTER NA
-1729;AL # HANUNOO LETTER PA
-172A;AL # HANUNOO LETTER BA
-172B;AL # HANUNOO LETTER MA
-172C;AL # HANUNOO LETTER YA
-172D;AL # HANUNOO LETTER RA
-172E;AL # HANUNOO LETTER LA
-172F;AL # HANUNOO LETTER WA
-1730;AL # HANUNOO LETTER SA
-1731;AL # HANUNOO LETTER HA
-1732;CM # HANUNOO VOWEL SIGN I
-1733;CM # HANUNOO VOWEL SIGN U
-1734;CM # HANUNOO SIGN PAMUDPOD
-1735;AL # PHILIPPINE SINGLE PUNCTUATION
-1736;AL # PHILIPPINE DOUBLE PUNCTUATION
-1740;AL # BUHID LETTER A
-1741;AL # BUHID LETTER I
-1742;AL # BUHID LETTER U
-1743;AL # BUHID LETTER KA
-1744;AL # BUHID LETTER GA
-1745;AL # BUHID LETTER NGA
-1746;AL # BUHID LETTER TA
-1747;AL # BUHID LETTER DA
-1748;AL # BUHID LETTER NA
-1749;AL # BUHID LETTER PA
-174A;AL # BUHID LETTER BA
-174B;AL # BUHID LETTER MA
-174C;AL # BUHID LETTER YA
-174D;AL # BUHID LETTER RA
-174E;AL # BUHID LETTER LA
-174F;AL # BUHID LETTER WA
-1750;AL # BUHID LETTER SA
-1751;AL # BUHID LETTER HA
-1752;CM # BUHID VOWEL SIGN I
-1753;CM # BUHID VOWEL SIGN U
-1760;AL # TAGBANWA LETTER A
-1761;AL # TAGBANWA LETTER I
-1762;AL # TAGBANWA LETTER U
-1763;AL # TAGBANWA LETTER KA
-1764;AL # TAGBANWA LETTER GA
-1765;AL # TAGBANWA LETTER NGA
-1766;AL # TAGBANWA LETTER TA
-1767;AL # TAGBANWA LETTER DA
-1768;AL # TAGBANWA LETTER NA
-1769;AL # TAGBANWA LETTER PA
-176A;AL # TAGBANWA LETTER BA
-176B;AL # TAGBANWA LETTER MA
-176C;AL # TAGBANWA LETTER YA
-176E;AL # TAGBANWA LETTER LA
-176F;AL # TAGBANWA LETTER WA
-1770;AL # TAGBANWA LETTER SA
-1772;CM # TAGBANWA VOWEL SIGN I
-1773;CM # TAGBANWA VOWEL SIGN U
-1780;SA # KHMER LETTER KA
-1781;SA # KHMER LETTER KHA
-1782;SA # KHMER LETTER KO
-1783;SA # KHMER LETTER KHO
-1784;SA # KHMER LETTER NGO
-1785;SA # KHMER LETTER CA
-1786;SA # KHMER LETTER CHA
-1787;SA # KHMER LETTER CO
-1788;SA # KHMER LETTER CHO
-1789;SA # KHMER LETTER NYO
-178A;SA # KHMER LETTER DA
-178B;SA # KHMER LETTER TTHA
-178C;SA # KHMER LETTER DO
-178D;SA # KHMER LETTER TTHO
-178E;SA # KHMER LETTER NNO
-178F;SA # KHMER LETTER TA
-1790;SA # KHMER LETTER THA
-1791;SA # KHMER LETTER TO
-1792;SA # KHMER LETTER THO
-1793;SA # KHMER LETTER NO
-1794;SA # KHMER LETTER BA
-1795;SA # KHMER LETTER PHA
-1796;SA # KHMER LETTER PO
-1797;SA # KHMER LETTER PHO
-1798;SA # KHMER LETTER MO
-1799;SA # KHMER LETTER YO
-179A;SA # KHMER LETTER RO
-179B;SA # KHMER LETTER LO
-179C;SA # KHMER LETTER VO
-179D;SA # KHMER LETTER SHA
-179E;SA # KHMER LETTER SSO
-179F;SA # KHMER LETTER SA
-17A0;SA # KHMER LETTER HA
-17A1;SA # KHMER LETTER LA
-17A2;SA # KHMER LETTER QA
-17A3;SA # KHMER INDEPENDENT VOWEL QAQ
-17A4;SA # KHMER INDEPENDENT VOWEL QAA
-17A5;SA # KHMER INDEPENDENT VOWEL QI
-17A6;SA # KHMER INDEPENDENT VOWEL QII
-17A7;SA # KHMER INDEPENDENT VOWEL QU
-17A8;SA # KHMER INDEPENDENT VOWEL QUK
-17A9;SA # KHMER INDEPENDENT VOWEL QUU
-17AA;SA # KHMER INDEPENDENT VOWEL QUUV
-17AB;SA # KHMER INDEPENDENT VOWEL RY
-17AC;SA # KHMER INDEPENDENT VOWEL RYY
-17AD;SA # KHMER INDEPENDENT VOWEL LY
-17AE;SA # KHMER INDEPENDENT VOWEL LYY
-17AF;SA # KHMER INDEPENDENT VOWEL QE
-17B0;SA # KHMER INDEPENDENT VOWEL QAI
-17B1;SA # KHMER INDEPENDENT VOWEL QOO TYPE ONE
-17B2;SA # KHMER INDEPENDENT VOWEL QOO TYPE TWO
-17B3;SA # KHMER INDEPENDENT VOWEL QAU
-17B4;SA # KHMER VOWEL INHERENT AQ
-17B5;SA # 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;BA # KHMER SIGN KHAN
-17D5;BA # KHMER SIGN BARIYOOSAN
-17D6;NS # KHMER SIGN CAMNUC PII KUUH
-17D7;NS # KHMER SIGN LEK TOO
-17D8;BA # KHMER SIGN BEYYAL
-17D9;NS # KHMER SIGN PHNAEK MUAN
-17DA;BA # KHMER SIGN KOOMUUT
-17DB;PR # KHMER CURRENCY SYMBOL RIEL
-17DC;AL # KHMER SIGN AVAKRAHASANYA
-17DD;CM # KHMER SIGN ATTHACAN
-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
-17F0;AL # KHMER SYMBOL LEK ATTAK SON
-17F1;AL # KHMER SYMBOL LEK ATTAK MUOY
-17F2;AL # KHMER SYMBOL LEK ATTAK PII
-17F3;AL # KHMER SYMBOL LEK ATTAK BEI
-17F4;AL # KHMER SYMBOL LEK ATTAK BUON
-17F5;AL # KHMER SYMBOL LEK ATTAK PRAM
-17F6;AL # KHMER SYMBOL LEK ATTAK PRAM-MUOY
-17F7;AL # KHMER SYMBOL LEK ATTAK PRAM-PII
-17F8;AL # KHMER SYMBOL LEK ATTAK PRAM-BEI
-17F9;AL # KHMER SYMBOL LEK ATTAK PRAM-BUON
-1800;AL # MONGOLIAN BIRGA
-1801;AL # MONGOLIAN ELLIPSIS
-1802;BA # MONGOLIAN COMMA
-1803;BA # MONGOLIAN FULL STOP
-1804;BA # MONGOLIAN COLON
-1805;BA # MONGOLIAN FOUR DOTS
-1806;BB # MONGOLIAN TODO SOFT HYPHEN
-1807;AL # MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER
-1808;BA # MONGOLIAN MANCHU COMMA
-1809;BA # 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;GL # 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
-1900;AL # LIMBU VOWEL-CARRIER LETTER
-1901;AL # LIMBU LETTER KA
-1902;AL # LIMBU LETTER KHA
-1903;AL # LIMBU LETTER GA
-1904;AL # LIMBU LETTER GHA
-1905;AL # LIMBU LETTER NGA
-1906;AL # LIMBU LETTER CA
-1907;AL # LIMBU LETTER CHA
-1908;AL # LIMBU LETTER JA
-1909;AL # LIMBU LETTER JHA
-190A;AL # LIMBU LETTER YAN
-190B;AL # LIMBU LETTER TA
-190C;AL # LIMBU LETTER THA
-190D;AL # LIMBU LETTER DA
-190E;AL # LIMBU LETTER DHA
-190F;AL # LIMBU LETTER NA
-1910;AL # LIMBU LETTER PA
-1911;AL # LIMBU LETTER PHA
-1912;AL # LIMBU LETTER BA
-1913;AL # LIMBU LETTER BHA
-1914;AL # LIMBU LETTER MA
-1915;AL # LIMBU LETTER YA
-1916;AL # LIMBU LETTER RA
-1917;AL # LIMBU LETTER LA
-1918;AL # LIMBU LETTER WA
-1919;AL # LIMBU LETTER SHA
-191A;AL # LIMBU LETTER SSA
-191B;AL # LIMBU LETTER SA
-191C;AL # LIMBU LETTER HA
-1920;CM # LIMBU VOWEL SIGN A
-1921;CM # LIMBU VOWEL SIGN I
-1922;CM # LIMBU VOWEL SIGN U
-1923;CM # LIMBU VOWEL SIGN EE
-1924;CM # LIMBU VOWEL SIGN AI
-1925;CM # LIMBU VOWEL SIGN OO
-1926;CM # LIMBU VOWEL SIGN AU
-1927;CM # LIMBU VOWEL SIGN E
-1928;CM # LIMBU VOWEL SIGN O
-1929;CM # LIMBU SUBJOINED LETTER YA
-192A;CM # LIMBU SUBJOINED LETTER RA
-192B;CM # LIMBU SUBJOINED LETTER WA
-1930;CM # LIMBU SMALL LETTER KA
-1931;CM # LIMBU SMALL LETTER NGA
-1932;CM # LIMBU SMALL LETTER ANUSVARA
-1933;CM # LIMBU SMALL LETTER TA
-1934;CM # LIMBU SMALL LETTER NA
-1935;CM # LIMBU SMALL LETTER PA
-1936;CM # LIMBU SMALL LETTER MA
-1937;CM # LIMBU SMALL LETTER RA
-1938;CM # LIMBU SMALL LETTER LA
-1939;CM # LIMBU SIGN MUKPHRENG
-193A;CM # LIMBU SIGN KEMPHRENG
-193B;CM # LIMBU SIGN SA-I
-1940;AL # LIMBU SIGN LOO
-1944;EX # LIMBU EXCLAMATION MARK
-1945;EX # LIMBU QUESTION MARK
-1946;NU # LIMBU DIGIT ZERO
-1947;NU # LIMBU DIGIT ONE
-1948;NU # LIMBU DIGIT TWO
-1949;NU # LIMBU DIGIT THREE
-194A;NU # LIMBU DIGIT FOUR
-194B;NU # LIMBU DIGIT FIVE
-194C;NU # LIMBU DIGIT SIX
-194D;NU # LIMBU DIGIT SEVEN
-194E;NU # LIMBU DIGIT EIGHT
-194F;NU # LIMBU DIGIT NINE
-1950;AL # TAI LE LETTER KA
-1951;AL # TAI LE LETTER XA
-1952;AL # TAI LE LETTER NGA
-1953;AL # TAI LE LETTER TSA
-1954;AL # TAI LE LETTER SA
-1955;AL # TAI LE LETTER YA
-1956;AL # TAI LE LETTER TA
-1957;AL # TAI LE LETTER THA
-1958;AL # TAI LE LETTER LA
-1959;AL # TAI LE LETTER PA
-195A;AL # TAI LE LETTER PHA
-195B;AL # TAI LE LETTER MA
-195C;AL # TAI LE LETTER FA
-195D;AL # TAI LE LETTER VA
-195E;AL # TAI LE LETTER HA
-195F;AL # TAI LE LETTER QA
-1960;AL # TAI LE LETTER KHA
-1961;AL # TAI LE LETTER TSHA
-1962;AL # TAI LE LETTER NA
-1963;AL # TAI LE LETTER A
-1964;AL # TAI LE LETTER I
-1965;AL # TAI LE LETTER EE
-1966;AL # TAI LE LETTER EH
-1967;AL # TAI LE LETTER U
-1968;AL # TAI LE LETTER OO
-1969;AL # TAI LE LETTER O
-196A;AL # TAI LE LETTER UE
-196B;AL # TAI LE LETTER E
-196C;AL # TAI LE LETTER AUE
-196D;AL # TAI LE LETTER AI
-1970;AL # TAI LE LETTER TONE-2
-1971;AL # TAI LE LETTER TONE-3
-1972;AL # TAI LE LETTER TONE-4
-1973;AL # TAI LE LETTER TONE-5
-1974;AL # TAI LE LETTER TONE-6
-1980;AL # NEW TAI LUE LETTER HIGH QA
-1981;AL # NEW TAI LUE LETTER LOW QA
-1982;AL # NEW TAI LUE LETTER HIGH KA
-1983;AL # NEW TAI LUE LETTER HIGH XA
-1984;AL # NEW TAI LUE LETTER HIGH NGA
-1985;AL # NEW TAI LUE LETTER LOW KA
-1986;AL # NEW TAI LUE LETTER LOW XA
-1987;AL # NEW TAI LUE LETTER LOW NGA
-1988;AL # NEW TAI LUE LETTER HIGH TSA
-1989;AL # NEW TAI LUE LETTER HIGH SA
-198A;AL # NEW TAI LUE LETTER HIGH YA
-198B;AL # NEW TAI LUE LETTER LOW TSA
-198C;AL # NEW TAI LUE LETTER LOW SA
-198D;AL # NEW TAI LUE LETTER LOW YA
-198E;AL # NEW TAI LUE LETTER HIGH TA
-198F;AL # NEW TAI LUE LETTER HIGH THA
-1990;AL # NEW TAI LUE LETTER HIGH NA
-1991;AL # NEW TAI LUE LETTER LOW TA
-1992;AL # NEW TAI LUE LETTER LOW THA
-1993;AL # NEW TAI LUE LETTER LOW NA
-1994;AL # NEW TAI LUE LETTER HIGH PA
-1995;AL # NEW TAI LUE LETTER HIGH PHA
-1996;AL # NEW TAI LUE LETTER HIGH MA
-1997;AL # NEW TAI LUE LETTER LOW PA
-1998;AL # NEW TAI LUE LETTER LOW PHA
-1999;AL # NEW TAI LUE LETTER LOW MA
-199A;AL # NEW TAI LUE LETTER HIGH FA
-199B;AL # NEW TAI LUE LETTER HIGH VA
-199C;AL # NEW TAI LUE LETTER HIGH LA
-199D;AL # NEW TAI LUE LETTER LOW FA
-199E;AL # NEW TAI LUE LETTER LOW VA
-199F;AL # NEW TAI LUE LETTER LOW LA
-19A0;AL # NEW TAI LUE LETTER HIGH HA
-19A1;AL # NEW TAI LUE LETTER HIGH DA
-19A2;AL # NEW TAI LUE LETTER HIGH BA
-19A3;AL # NEW TAI LUE LETTER LOW HA
-19A4;AL # NEW TAI LUE LETTER LOW DA
-19A5;AL # NEW TAI LUE LETTER LOW BA
-19A6;AL # NEW TAI LUE LETTER HIGH KVA
-19A7;AL # NEW TAI LUE LETTER HIGH XVA
-19A8;AL # NEW TAI LUE LETTER LOW KVA
-19A9;AL # NEW TAI LUE LETTER LOW XVA
-19B0;CM # NEW TAI LUE VOWEL SIGN VOWEL SHORTENER
-19B1;CM # NEW TAI LUE VOWEL SIGN AA
-19B2;CM # NEW TAI LUE VOWEL SIGN II
-19B3;CM # NEW TAI LUE VOWEL SIGN U
-19B4;CM # NEW TAI LUE VOWEL SIGN UU
-19B5;CM # NEW TAI LUE VOWEL SIGN E
-19B6;CM # NEW TAI LUE VOWEL SIGN AE
-19B7;CM # NEW TAI LUE VOWEL SIGN O
-19B8;CM # NEW TAI LUE VOWEL SIGN OA
-19B9;CM # NEW TAI LUE VOWEL SIGN UE
-19BA;CM # NEW TAI LUE VOWEL SIGN AY
-19BB;CM # NEW TAI LUE VOWEL SIGN AAY
-19BC;CM # NEW TAI LUE VOWEL SIGN UY
-19BD;CM # NEW TAI LUE VOWEL SIGN OY
-19BE;CM # NEW TAI LUE VOWEL SIGN OAY
-19BF;CM # NEW TAI LUE VOWEL SIGN UEY
-19C0;CM # NEW TAI LUE VOWEL SIGN IY
-19C1;AL # NEW TAI LUE LETTER FINAL V
-19C2;AL # NEW TAI LUE LETTER FINAL NG
-19C3;AL # NEW TAI LUE LETTER FINAL N
-19C4;AL # NEW TAI LUE LETTER FINAL M
-19C5;AL # NEW TAI LUE LETTER FINAL K
-19C6;AL # NEW TAI LUE LETTER FINAL D
-19C7;AL # NEW TAI LUE LETTER FINAL B
-19C8;CM # NEW TAI LUE TONE MARK-1
-19C9;CM # NEW TAI LUE TONE MARK-2
-19D0;NU # NEW TAI LUE DIGIT ZERO
-19D1;NU # NEW TAI LUE DIGIT ONE
-19D2;NU # NEW TAI LUE DIGIT TWO
-19D3;NU # NEW TAI LUE DIGIT THREE
-19D4;NU # NEW TAI LUE DIGIT FOUR
-19D5;NU # NEW TAI LUE DIGIT FIVE
-19D6;NU # NEW TAI LUE DIGIT SIX
-19D7;NU # NEW TAI LUE DIGIT SEVEN
-19D8;NU # NEW TAI LUE DIGIT EIGHT
-19D9;NU # NEW TAI LUE DIGIT NINE
-19DE;AL # NEW TAI LUE SIGN LAE
-19DF;AL # NEW TAI LUE SIGN LAEV
-19E0;AL # KHMER SYMBOL PATHAMASAT
-19E1;AL # KHMER SYMBOL MUOY KOET
-19E2;AL # KHMER SYMBOL PII KOET
-19E3;AL # KHMER SYMBOL BEI KOET
-19E4;AL # KHMER SYMBOL BUON KOET
-19E5;AL # KHMER SYMBOL PRAM KOET
-19E6;AL # KHMER SYMBOL PRAM-MUOY KOET
-19E7;AL # KHMER SYMBOL PRAM-PII KOET
-19E8;AL # KHMER SYMBOL PRAM-BEI KOET
-19E9;AL # KHMER SYMBOL PRAM-BUON KOET
-19EA;AL # KHMER SYMBOL DAP KOET
-19EB;AL # KHMER SYMBOL DAP-MUOY KOET
-19EC;AL # KHMER SYMBOL DAP-PII KOET
-19ED;AL # KHMER SYMBOL DAP-BEI KOET
-19EE;AL # KHMER SYMBOL DAP-BUON KOET
-19EF;AL # KHMER SYMBOL DAP-PRAM KOET
-19F0;AL # KHMER SYMBOL TUTEYASAT
-19F1;AL # KHMER SYMBOL MUOY ROC
-19F2;AL # KHMER SYMBOL PII ROC
-19F3;AL # KHMER SYMBOL BEI ROC
-19F4;AL # KHMER SYMBOL BUON ROC
-19F5;AL # KHMER SYMBOL PRAM ROC
-19F6;AL # KHMER SYMBOL PRAM-MUOY ROC
-19F7;AL # KHMER SYMBOL PRAM-PII ROC
-19F8;AL # KHMER SYMBOL PRAM-BEI ROC
-19F9;AL # KHMER SYMBOL PRAM-BUON ROC
-19FA;AL # KHMER SYMBOL DAP ROC
-19FB;AL # KHMER SYMBOL DAP-MUOY ROC
-19FC;AL # KHMER SYMBOL DAP-PII ROC
-19FD;AL # KHMER SYMBOL DAP-BEI ROC
-19FE;AL # KHMER SYMBOL DAP-BUON ROC
-19FF;AL # KHMER SYMBOL DAP-PRAM ROC
-1A00;AL # BUGINESE LETTER KA
-1A01;AL # BUGINESE LETTER GA
-1A02;AL # BUGINESE LETTER NGA
-1A03;AL # BUGINESE LETTER NGKA
-1A04;AL # BUGINESE LETTER PA
-1A05;AL # BUGINESE LETTER BA
-1A06;AL # BUGINESE LETTER MA
-1A07;AL # BUGINESE LETTER MPA
-1A08;AL # BUGINESE LETTER TA
-1A09;AL # BUGINESE LETTER DA
-1A0A;AL # BUGINESE LETTER NA
-1A0B;AL # BUGINESE LETTER NRA
-1A0C;AL # BUGINESE LETTER CA
-1A0D;AL # BUGINESE LETTER JA
-1A0E;AL # BUGINESE LETTER NYA
-1A0F;AL # BUGINESE LETTER NYCA
-1A10;AL # BUGINESE LETTER YA
-1A11;AL # BUGINESE LETTER RA
-1A12;AL # BUGINESE LETTER LA
-1A13;AL # BUGINESE LETTER VA
-1A14;AL # BUGINESE LETTER SA
-1A15;AL # BUGINESE LETTER A
-1A16;AL # BUGINESE LETTER HA
-1A17;CM # BUGINESE VOWEL SIGN I
-1A18;CM # BUGINESE VOWEL SIGN U
-1A19;CM # BUGINESE VOWEL SIGN E
-1A1A;CM # BUGINESE VOWEL SIGN O
-1A1B;CM # BUGINESE VOWEL SIGN AE
-1A1E;BA # BUGINESE PALLAWA
-1A1F;AL # BUGINESE END OF SECTION
-1D00;AL # LATIN LETTER SMALL CAPITAL A
-1D01;AL # LATIN LETTER SMALL CAPITAL AE
-1D02;AL # LATIN SMALL LETTER TURNED AE
-1D03;AL # LATIN LETTER SMALL CAPITAL BARRED B
-1D04;AL # LATIN LETTER SMALL CAPITAL C
-1D05;AL # LATIN LETTER SMALL CAPITAL D
-1D06;AL # LATIN LETTER SMALL CAPITAL ETH
-1D07;AL # LATIN LETTER SMALL CAPITAL E
-1D08;AL # LATIN SMALL LETTER TURNED OPEN E
-1D09;AL # LATIN SMALL LETTER TURNED I
-1D0A;AL # LATIN LETTER SMALL CAPITAL J
-1D0B;AL # LATIN LETTER SMALL CAPITAL K
-1D0C;AL # LATIN LETTER SMALL CAPITAL L WITH STROKE
-1D0D;AL # LATIN LETTER SMALL CAPITAL M
-1D0E;AL # LATIN LETTER SMALL CAPITAL REVERSED N
-1D0F;AL # LATIN LETTER SMALL CAPITAL O
-1D10;AL # LATIN LETTER SMALL CAPITAL OPEN O
-1D11;AL # LATIN SMALL LETTER SIDEWAYS O
-1D12;AL # LATIN SMALL LETTER SIDEWAYS OPEN O
-1D13;AL # LATIN SMALL LETTER SIDEWAYS O WITH STROKE
-1D14;AL # LATIN SMALL LETTER TURNED OE
-1D15;AL # LATIN LETTER SMALL CAPITAL OU
-1D16;AL # LATIN SMALL LETTER TOP HALF O
-1D17;AL # LATIN SMALL LETTER BOTTOM HALF O
-1D18;AL # LATIN LETTER SMALL CAPITAL P
-1D19;AL # LATIN LETTER SMALL CAPITAL REVERSED R
-1D1A;AL # LATIN LETTER SMALL CAPITAL TURNED R
-1D1B;AL # LATIN LETTER SMALL CAPITAL T
-1D1C;AL # LATIN LETTER SMALL CAPITAL U
-1D1D;AL # LATIN SMALL LETTER SIDEWAYS U
-1D1E;AL # LATIN SMALL LETTER SIDEWAYS DIAERESIZED U
-1D1F;AL # LATIN SMALL LETTER SIDEWAYS TURNED M
-1D20;AL # LATIN LETTER SMALL CAPITAL V
-1D21;AL # LATIN LETTER SMALL CAPITAL W
-1D22;AL # LATIN LETTER SMALL CAPITAL Z
-1D23;AL # LATIN LETTER SMALL CAPITAL EZH
-1D24;AL # LATIN LETTER VOICED LARYNGEAL SPIRANT
-1D25;AL # LATIN LETTER AIN
-1D26;AL # GREEK LETTER SMALL CAPITAL GAMMA
-1D27;AL # GREEK LETTER SMALL CAPITAL LAMDA
-1D28;AL # GREEK LETTER SMALL CAPITAL PI
-1D29;AL # GREEK LETTER SMALL CAPITAL RHO
-1D2A;AL # GREEK LETTER SMALL CAPITAL PSI
-1D2B;AL # CYRILLIC LETTER SMALL CAPITAL EL
-1D2C;AL # MODIFIER LETTER CAPITAL A
-1D2D;AL # MODIFIER LETTER CAPITAL AE
-1D2E;AL # MODIFIER LETTER CAPITAL B
-1D2F;AL # MODIFIER LETTER CAPITAL BARRED B
-1D30;AL # MODIFIER LETTER CAPITAL D
-1D31;AL # MODIFIER LETTER CAPITAL E
-1D32;AL # MODIFIER LETTER CAPITAL REVERSED E
-1D33;AL # MODIFIER LETTER CAPITAL G
-1D34;AL # MODIFIER LETTER CAPITAL H
-1D35;AL # MODIFIER LETTER CAPITAL I
-1D36;AL # MODIFIER LETTER CAPITAL J
-1D37;AL # MODIFIER LETTER CAPITAL K
-1D38;AL # MODIFIER LETTER CAPITAL L
-1D39;AL # MODIFIER LETTER CAPITAL M
-1D3A;AL # MODIFIER LETTER CAPITAL N
-1D3B;AL # MODIFIER LETTER CAPITAL REVERSED N
-1D3C;AL # MODIFIER LETTER CAPITAL O
-1D3D;AL # MODIFIER LETTER CAPITAL OU
-1D3E;AL # MODIFIER LETTER CAPITAL P
-1D3F;AL # MODIFIER LETTER CAPITAL R
-1D40;AL # MODIFIER LETTER CAPITAL T
-1D41;AL # MODIFIER LETTER CAPITAL U
-1D42;AL # MODIFIER LETTER CAPITAL W
-1D43;AL # MODIFIER LETTER SMALL A
-1D44;AL # MODIFIER LETTER SMALL TURNED A
-1D45;AL # MODIFIER LETTER SMALL ALPHA
-1D46;AL # MODIFIER LETTER SMALL TURNED AE
-1D47;AL # MODIFIER LETTER SMALL B
-1D48;AL # MODIFIER LETTER SMALL D
-1D49;AL # MODIFIER LETTER SMALL E
-1D4A;AL # MODIFIER LETTER SMALL SCHWA
-1D4B;AL # MODIFIER LETTER SMALL OPEN E
-1D4C;AL # MODIFIER LETTER SMALL TURNED OPEN E
-1D4D;AL # MODIFIER LETTER SMALL G
-1D4E;AL # MODIFIER LETTER SMALL TURNED I
-1D4F;AL # MODIFIER LETTER SMALL K
-1D50;AL # MODIFIER LETTER SMALL M
-1D51;AL # MODIFIER LETTER SMALL ENG
-1D52;AL # MODIFIER LETTER SMALL O
-1D53;AL # MODIFIER LETTER SMALL OPEN O
-1D54;AL # MODIFIER LETTER SMALL TOP HALF O
-1D55;AL # MODIFIER LETTER SMALL BOTTOM HALF O
-1D56;AL # MODIFIER LETTER SMALL P
-1D57;AL # MODIFIER LETTER SMALL T
-1D58;AL # MODIFIER LETTER SMALL U
-1D59;AL # MODIFIER LETTER SMALL SIDEWAYS U
-1D5A;AL # MODIFIER LETTER SMALL TURNED M
-1D5B;AL # MODIFIER LETTER SMALL V
-1D5C;AL # MODIFIER LETTER SMALL AIN
-1D5D;AL # MODIFIER LETTER SMALL BETA
-1D5E;AL # MODIFIER LETTER SMALL GREEK GAMMA
-1D5F;AL # MODIFIER LETTER SMALL DELTA
-1D60;AL # MODIFIER LETTER SMALL GREEK PHI
-1D61;AL # MODIFIER LETTER SMALL CHI
-1D62;AL # LATIN SUBSCRIPT SMALL LETTER I
-1D63;AL # LATIN SUBSCRIPT SMALL LETTER R
-1D64;AL # LATIN SUBSCRIPT SMALL LETTER U
-1D65;AL # LATIN SUBSCRIPT SMALL LETTER V
-1D66;AL # GREEK SUBSCRIPT SMALL LETTER BETA
-1D67;AL # GREEK SUBSCRIPT SMALL LETTER GAMMA
-1D68;AL # GREEK SUBSCRIPT SMALL LETTER RHO
-1D69;AL # GREEK SUBSCRIPT SMALL LETTER PHI
-1D6A;AL # GREEK SUBSCRIPT SMALL LETTER CHI
-1D6B;AL # LATIN SMALL LETTER UE
-1D6C;AL # LATIN SMALL LETTER B WITH MIDDLE TILDE
-1D6D;AL # LATIN SMALL LETTER D WITH MIDDLE TILDE
-1D6E;AL # LATIN SMALL LETTER F WITH MIDDLE TILDE
-1D6F;AL # LATIN SMALL LETTER M WITH MIDDLE TILDE
-1D70;AL # LATIN SMALL LETTER N WITH MIDDLE TILDE
-1D71;AL # LATIN SMALL LETTER P WITH MIDDLE TILDE
-1D72;AL # LATIN SMALL LETTER R WITH MIDDLE TILDE
-1D73;AL # LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE
-1D74;AL # LATIN SMALL LETTER S WITH MIDDLE TILDE
-1D75;AL # LATIN SMALL LETTER T WITH MIDDLE TILDE
-1D76;AL # LATIN SMALL LETTER Z WITH MIDDLE TILDE
-1D77;AL # LATIN SMALL LETTER TURNED G
-1D78;AL # MODIFIER LETTER CYRILLIC EN
-1D79;AL # LATIN SMALL LETTER INSULAR G
-1D7A;AL # LATIN SMALL LETTER TH WITH STRIKETHROUGH
-1D7B;AL # LATIN SMALL CAPITAL LETTER I WITH STROKE
-1D7C;AL # LATIN SMALL LETTER IOTA WITH STROKE
-1D7D;AL # LATIN SMALL LETTER P WITH STROKE
-1D7E;AL # LATIN SMALL CAPITAL LETTER U WITH STROKE
-1D7F;AL # LATIN SMALL LETTER UPSILON WITH STROKE
-1D80;AL # LATIN SMALL LETTER B WITH PALATAL HOOK
-1D81;AL # LATIN SMALL LETTER D WITH PALATAL HOOK
-1D82;AL # LATIN SMALL LETTER F WITH PALATAL HOOK
-1D83;AL # LATIN SMALL LETTER G WITH PALATAL HOOK
-1D84;AL # LATIN SMALL LETTER K WITH PALATAL HOOK
-1D85;AL # LATIN SMALL LETTER L WITH PALATAL HOOK
-1D86;AL # LATIN SMALL LETTER M WITH PALATAL HOOK
-1D87;AL # LATIN SMALL LETTER N WITH PALATAL HOOK
-1D88;AL # LATIN SMALL LETTER P WITH PALATAL HOOK
-1D89;AL # LATIN SMALL LETTER R WITH PALATAL HOOK
-1D8A;AL # LATIN SMALL LETTER S WITH PALATAL HOOK
-1D8B;AL # LATIN SMALL LETTER ESH WITH PALATAL HOOK
-1D8C;AL # LATIN SMALL LETTER V WITH PALATAL HOOK
-1D8D;AL # LATIN SMALL LETTER X WITH PALATAL HOOK
-1D8E;AL # LATIN SMALL LETTER Z WITH PALATAL HOOK
-1D8F;AL # LATIN SMALL LETTER A WITH RETROFLEX HOOK
-1D90;AL # LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK
-1D91;AL # LATIN SMALL LETTER D WITH HOOK AND TAIL
-1D92;AL # LATIN SMALL LETTER E WITH RETROFLEX HOOK
-1D93;AL # LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK
-1D94;AL # LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK
-1D95;AL # LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK
-1D96;AL # LATIN SMALL LETTER I WITH RETROFLEX HOOK
-1D97;AL # LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK
-1D98;AL # LATIN SMALL LETTER ESH WITH RETROFLEX HOOK
-1D99;AL # LATIN SMALL LETTER U WITH RETROFLEX HOOK
-1D9A;AL # LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
-1D9B;AL # MODIFIER LETTER SMALL TURNED ALPHA
-1D9C;AL # MODIFIER LETTER SMALL C
-1D9D;AL # MODIFIER LETTER SMALL C WITH CURL
-1D9E;AL # MODIFIER LETTER SMALL ETH
-1D9F;AL # MODIFIER LETTER SMALL REVERSED OPEN E
-1DA0;AL # MODIFIER LETTER SMALL F
-1DA1;AL # MODIFIER LETTER SMALL DOTLESS J WITH STROKE
-1DA2;AL # MODIFIER LETTER SMALL SCRIPT G
-1DA3;AL # MODIFIER LETTER SMALL TURNED H
-1DA4;AL # MODIFIER LETTER SMALL I WITH STROKE
-1DA5;AL # MODIFIER LETTER SMALL IOTA
-1DA6;AL # MODIFIER LETTER SMALL CAPITAL I
-1DA7;AL # MODIFIER LETTER SMALL CAPITAL I WITH STROKE
-1DA8;AL # MODIFIER LETTER SMALL J WITH CROSSED-TAIL
-1DA9;AL # MODIFIER LETTER SMALL L WITH RETROFLEX HOOK
-1DAA;AL # MODIFIER LETTER SMALL L WITH PALATAL HOOK
-1DAB;AL # MODIFIER LETTER SMALL CAPITAL L
-1DAC;AL # MODIFIER LETTER SMALL M WITH HOOK
-1DAD;AL # MODIFIER LETTER SMALL TURNED M WITH LONG LEG
-1DAE;AL # MODIFIER LETTER SMALL N WITH LEFT HOOK
-1DAF;AL # MODIFIER LETTER SMALL N WITH RETROFLEX HOOK
-1DB0;AL # MODIFIER LETTER SMALL CAPITAL N
-1DB1;AL # MODIFIER LETTER SMALL BARRED O
-1DB2;AL # MODIFIER LETTER SMALL PHI
-1DB3;AL # MODIFIER LETTER SMALL S WITH HOOK
-1DB4;AL # MODIFIER LETTER SMALL ESH
-1DB5;AL # MODIFIER LETTER SMALL T WITH PALATAL HOOK
-1DB6;AL # MODIFIER LETTER SMALL U BAR
-1DB7;AL # MODIFIER LETTER SMALL UPSILON
-1DB8;AL # MODIFIER LETTER SMALL CAPITAL U
-1DB9;AL # MODIFIER LETTER SMALL V WITH HOOK
-1DBA;AL # MODIFIER LETTER SMALL TURNED V
-1DBB;AL # MODIFIER LETTER SMALL Z
-1DBC;AL # MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK
-1DBD;AL # MODIFIER LETTER SMALL Z WITH CURL
-1DBE;AL # MODIFIER LETTER SMALL EZH
-1DBF;AL # MODIFIER LETTER SMALL THETA
-1DC0;CM # COMBINING DOTTED GRAVE ACCENT
-1DC1;CM # COMBINING DOTTED ACUTE ACCENT
-1DC2;CM # COMBINING SNAKE BELOW
-1DC3;CM # COMBINING SUSPENSION MARK
-1E00;AL # LATIN CAPITAL LETTER A WITH RING BELOW
-1E01;AL # LATIN SMALL LETTER A WITH RING BELOW
-1E02;AL # LATIN CAPITAL LETTER B WITH DOT ABOVE
-1E03;AL # LATIN SMALL LETTER B WITH DOT ABOVE
-1E04;AL # LATIN CAPITAL LETTER B WITH DOT BELOW
-1E05;AL # LATIN SMALL LETTER B WITH DOT BELOW
-1E06;AL # LATIN CAPITAL LETTER B WITH LINE BELOW
-1E07;AL # LATIN SMALL LETTER B WITH LINE BELOW
-1E08;AL # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
-1E09;AL # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
-1E0A;AL # LATIN CAPITAL LETTER D WITH DOT ABOVE
-1E0B;AL # LATIN SMALL LETTER D WITH DOT ABOVE
-1E0C;AL # LATIN CAPITAL LETTER D WITH DOT BELOW
-1E0D;AL # LATIN SMALL LETTER D WITH DOT BELOW
-1E0E;AL # LATIN CAPITAL LETTER D WITH LINE BELOW
-1E0F;AL # LATIN SMALL LETTER D WITH LINE BELOW
-1E10;AL # LATIN CAPITAL LETTER D WITH CEDILLA
-1E11;AL # LATIN SMALL LETTER D WITH CEDILLA
-1E12;AL # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
-1E13;AL # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
-1E14;AL # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
-1E15;AL # LATIN SMALL LETTER E WITH MACRON AND GRAVE
-1E16;AL # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
-1E17;AL # LATIN SMALL LETTER E WITH MACRON AND ACUTE
-1E18;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
-1E19;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
-1E1A;AL # LATIN CAPITAL LETTER E WITH TILDE BELOW
-1E1B;AL # LATIN SMALL LETTER E WITH TILDE BELOW
-1E1C;AL # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
-1E1D;AL # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
-1E1E;AL # LATIN CAPITAL LETTER F WITH DOT ABOVE
-1E1F;AL # LATIN SMALL LETTER F WITH DOT ABOVE
-1E20;AL # LATIN CAPITAL LETTER G WITH MACRON
-1E21;AL # LATIN SMALL LETTER G WITH MACRON
-1E22;AL # LATIN CAPITAL LETTER H WITH DOT ABOVE
-1E23;AL # LATIN SMALL LETTER H WITH DOT ABOVE
-1E24;AL # LATIN CAPITAL LETTER H WITH DOT BELOW
-1E25;AL # LATIN SMALL LETTER H WITH DOT BELOW
-1E26;AL # LATIN CAPITAL LETTER H WITH DIAERESIS
-1E27;AL # LATIN SMALL LETTER H WITH DIAERESIS
-1E28;AL # LATIN CAPITAL LETTER H WITH CEDILLA
-1E29;AL # LATIN SMALL LETTER H WITH CEDILLA
-1E2A;AL # LATIN CAPITAL LETTER H WITH BREVE BELOW
-1E2B;AL # LATIN SMALL LETTER H WITH BREVE BELOW
-1E2C;AL # LATIN CAPITAL LETTER I WITH TILDE BELOW
-1E2D;AL # LATIN SMALL LETTER I WITH TILDE BELOW
-1E2E;AL # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
-1E2F;AL # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
-1E30;AL # LATIN CAPITAL LETTER K WITH ACUTE
-1E31;AL # LATIN SMALL LETTER K WITH ACUTE
-1E32;AL # LATIN CAPITAL LETTER K WITH DOT BELOW
-1E33;AL # LATIN SMALL LETTER K WITH DOT BELOW
-1E34;AL # LATIN CAPITAL LETTER K WITH LINE BELOW
-1E35;AL # LATIN SMALL LETTER K WITH LINE BELOW
-1E36;AL # LATIN CAPITAL LETTER L WITH DOT BELOW
-1E37;AL # LATIN SMALL LETTER L WITH DOT BELOW
-1E38;AL # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
-1E39;AL # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
-1E3A;AL # LATIN CAPITAL LETTER L WITH LINE BELOW
-1E3B;AL # LATIN SMALL LETTER L WITH LINE BELOW
-1E3C;AL # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
-1E3D;AL # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
-1E3E;AL # LATIN CAPITAL LETTER M WITH ACUTE
-1E3F;AL # LATIN SMALL LETTER M WITH ACUTE
-1E40;AL # LATIN CAPITAL LETTER M WITH DOT ABOVE
-1E41;AL # LATIN SMALL LETTER M WITH DOT ABOVE
-1E42;AL # LATIN CAPITAL LETTER M WITH DOT BELOW
-1E43;AL # LATIN SMALL LETTER M WITH DOT BELOW
-1E44;AL # LATIN CAPITAL LETTER N WITH DOT ABOVE
-1E45;AL # LATIN SMALL LETTER N WITH DOT ABOVE
-1E46;AL # LATIN CAPITAL LETTER N WITH DOT BELOW
-1E47;AL # LATIN SMALL LETTER N WITH DOT BELOW
-1E48;AL # LATIN CAPITAL LETTER N WITH LINE BELOW
-1E49;AL # LATIN SMALL LETTER N WITH LINE BELOW
-1E4A;AL # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
-1E4B;AL # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
-1E4C;AL # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
-1E4D;AL # LATIN SMALL LETTER O WITH TILDE AND ACUTE
-1E4E;AL # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
-1E4F;AL # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
-1E50;AL # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
-1E51;AL # LATIN SMALL LETTER O WITH MACRON AND GRAVE
-1E52;AL # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
-1E53;AL # LATIN SMALL LETTER O WITH MACRON AND ACUTE
-1E54;AL # LATIN CAPITAL LETTER P WITH ACUTE
-1E55;AL # LATIN SMALL LETTER P WITH ACUTE
-1E56;AL # LATIN CAPITAL LETTER P WITH DOT ABOVE
-1E57;AL # LATIN SMALL LETTER P WITH DOT ABOVE
-1E58;AL # LATIN CAPITAL LETTER R WITH DOT ABOVE
-1E59;AL # LATIN SMALL LETTER R WITH DOT ABOVE
-1E5A;AL # LATIN CAPITAL LETTER R WITH DOT BELOW
-1E5B;AL # LATIN SMALL LETTER R WITH DOT BELOW
-1E5C;AL # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
-1E5D;AL # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
-1E5E;AL # LATIN CAPITAL LETTER R WITH LINE BELOW
-1E5F;AL # LATIN SMALL LETTER R WITH LINE BELOW
-1E60;AL # LATIN CAPITAL LETTER S WITH DOT ABOVE
-1E61;AL # LATIN SMALL LETTER S WITH DOT ABOVE
-1E62;AL # LATIN CAPITAL LETTER S WITH DOT BELOW
-1E63;AL # LATIN SMALL LETTER S WITH DOT BELOW
-1E64;AL # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
-1E65;AL # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
-1E66;AL # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
-1E67;AL # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
-1E68;AL # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
-1E69;AL # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
-1E6A;AL # LATIN CAPITAL LETTER T WITH DOT ABOVE
-1E6B;AL # LATIN SMALL LETTER T WITH DOT ABOVE
-1E6C;AL # LATIN CAPITAL LETTER T WITH DOT BELOW
-1E6D;AL # LATIN SMALL LETTER T WITH DOT BELOW
-1E6E;AL # LATIN CAPITAL LETTER T WITH LINE BELOW
-1E6F;AL # LATIN SMALL LETTER T WITH LINE BELOW
-1E70;AL # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
-1E71;AL # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
-1E72;AL # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
-1E73;AL # LATIN SMALL LETTER U WITH DIAERESIS BELOW
-1E74;AL # LATIN CAPITAL LETTER U WITH TILDE BELOW
-1E75;AL # LATIN SMALL LETTER U WITH TILDE BELOW
-1E76;AL # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
-1E77;AL # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
-1E78;AL # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
-1E79;AL # LATIN SMALL LETTER U WITH TILDE AND ACUTE
-1E7A;AL # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
-1E7B;AL # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
-1E7C;AL # LATIN CAPITAL LETTER V WITH TILDE
-1E7D;AL # LATIN SMALL LETTER V WITH TILDE
-1E7E;AL # LATIN CAPITAL LETTER V WITH DOT BELOW
-1E7F;AL # LATIN SMALL LETTER V WITH DOT BELOW
-1E80;AL # LATIN CAPITAL LETTER W WITH GRAVE
-1E81;AL # LATIN SMALL LETTER W WITH GRAVE
-1E82;AL # LATIN CAPITAL LETTER W WITH ACUTE
-1E83;AL # LATIN SMALL LETTER W WITH ACUTE
-1E84;AL # LATIN CAPITAL LETTER W WITH DIAERESIS
-1E85;AL # LATIN SMALL LETTER W WITH DIAERESIS
-1E86;AL # LATIN CAPITAL LETTER W WITH DOT ABOVE
-1E87;AL # LATIN SMALL LETTER W WITH DOT ABOVE
-1E88;AL # LATIN CAPITAL LETTER W WITH DOT BELOW
-1E89;AL # LATIN SMALL LETTER W WITH DOT BELOW
-1E8A;AL # LATIN CAPITAL LETTER X WITH DOT ABOVE
-1E8B;AL # LATIN SMALL LETTER X WITH DOT ABOVE
-1E8C;AL # LATIN CAPITAL LETTER X WITH DIAERESIS
-1E8D;AL # LATIN SMALL LETTER X WITH DIAERESIS
-1E8E;AL # LATIN CAPITAL LETTER Y WITH DOT ABOVE
-1E8F;AL # LATIN SMALL LETTER Y WITH DOT ABOVE
-1E90;AL # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
-1E91;AL # LATIN SMALL LETTER Z WITH CIRCUMFLEX
-1E92;AL # LATIN CAPITAL LETTER Z WITH DOT BELOW
-1E93;AL # LATIN SMALL LETTER Z WITH DOT BELOW
-1E94;AL # LATIN CAPITAL LETTER Z WITH LINE BELOW
-1E95;AL # LATIN SMALL LETTER Z WITH LINE BELOW
-1E96;AL # LATIN SMALL LETTER H WITH LINE BELOW
-1E97;AL # LATIN SMALL LETTER T WITH DIAERESIS
-1E98;AL # LATIN SMALL LETTER W WITH RING ABOVE
-1E99;AL # LATIN SMALL LETTER Y WITH RING ABOVE
-1E9A;AL # LATIN SMALL LETTER A WITH RIGHT HALF RING
-1E9B;AL # LATIN SMALL LETTER LONG S WITH DOT ABOVE
-1EA0;AL # LATIN CAPITAL LETTER A WITH DOT BELOW
-1EA1;AL # LATIN SMALL LETTER A WITH DOT BELOW
-1EA2;AL # LATIN CAPITAL LETTER A WITH HOOK ABOVE
-1EA3;AL # LATIN SMALL LETTER A WITH HOOK ABOVE
-1EA4;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
-1EA5;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
-1EA6;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
-1EA7;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
-1EA8;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-1EA9;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-1EAA;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
-1EAB;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
-1EAC;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-1EAD;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-1EAE;AL # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
-1EAF;AL # LATIN SMALL LETTER A WITH BREVE AND ACUTE
-1EB0;AL # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
-1EB1;AL # LATIN SMALL LETTER A WITH BREVE AND GRAVE
-1EB2;AL # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
-1EB3;AL # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
-1EB4;AL # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
-1EB5;AL # LATIN SMALL LETTER A WITH BREVE AND TILDE
-1EB6;AL # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
-1EB7;AL # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
-1EB8;AL # LATIN CAPITAL LETTER E WITH DOT BELOW
-1EB9;AL # LATIN SMALL LETTER E WITH DOT BELOW
-1EBA;AL # LATIN CAPITAL LETTER E WITH HOOK ABOVE
-1EBB;AL # LATIN SMALL LETTER E WITH HOOK ABOVE
-1EBC;AL # LATIN CAPITAL LETTER E WITH TILDE
-1EBD;AL # LATIN SMALL LETTER E WITH TILDE
-1EBE;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EBF;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EC0;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC1;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC2;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC3;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC4;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC5;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC6;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC7;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC8;AL # LATIN CAPITAL LETTER I WITH HOOK ABOVE
-1EC9;AL # LATIN SMALL LETTER I WITH HOOK ABOVE
-1ECA;AL # LATIN CAPITAL LETTER I WITH DOT BELOW
-1ECB;AL # LATIN SMALL LETTER I WITH DOT BELOW
-1ECC;AL # LATIN CAPITAL LETTER O WITH DOT BELOW
-1ECD;AL # LATIN SMALL LETTER O WITH DOT BELOW
-1ECE;AL # LATIN CAPITAL LETTER O WITH HOOK ABOVE
-1ECF;AL # LATIN SMALL LETTER O WITH HOOK ABOVE
-1ED0;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED1;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED2;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED3;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED4;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED5;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED6;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED7;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED8;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1ED9;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1EDA;AL # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
-1EDB;AL # LATIN SMALL LETTER O WITH HORN AND ACUTE
-1EDC;AL # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
-1EDD;AL # LATIN SMALL LETTER O WITH HORN AND GRAVE
-1EDE;AL # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
-1EDF;AL # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
-1EE0;AL # LATIN CAPITAL LETTER O WITH HORN AND TILDE
-1EE1;AL # LATIN SMALL LETTER O WITH HORN AND TILDE
-1EE2;AL # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
-1EE3;AL # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
-1EE4;AL # LATIN CAPITAL LETTER U WITH DOT BELOW
-1EE5;AL # LATIN SMALL LETTER U WITH DOT BELOW
-1EE6;AL # LATIN CAPITAL LETTER U WITH HOOK ABOVE
-1EE7;AL # LATIN SMALL LETTER U WITH HOOK ABOVE
-1EE8;AL # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
-1EE9;AL # LATIN SMALL LETTER U WITH HORN AND ACUTE
-1EEA;AL # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
-1EEB;AL # LATIN SMALL LETTER U WITH HORN AND GRAVE
-1EEC;AL # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
-1EED;AL # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
-1EEE;AL # LATIN CAPITAL LETTER U WITH HORN AND TILDE
-1EEF;AL # LATIN SMALL LETTER U WITH HORN AND TILDE
-1EF0;AL # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
-1EF1;AL # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
-1EF2;AL # LATIN CAPITAL LETTER Y WITH GRAVE
-1EF3;AL # LATIN SMALL LETTER Y WITH GRAVE
-1EF4;AL # LATIN CAPITAL LETTER Y WITH DOT BELOW
-1EF5;AL # LATIN SMALL LETTER Y WITH DOT BELOW
-1EF6;AL # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
-1EF7;AL # LATIN SMALL LETTER Y WITH HOOK ABOVE
-1EF8;AL # LATIN CAPITAL LETTER Y WITH TILDE
-1EF9;AL # LATIN SMALL LETTER Y WITH TILDE
-1F00;AL # GREEK SMALL LETTER ALPHA WITH PSILI
-1F01;AL # GREEK SMALL LETTER ALPHA WITH DASIA
-1F02;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
-1F03;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
-1F04;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
-1F05;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
-1F06;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
-1F07;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
-1F08;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI
-1F09;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA
-1F0A;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
-1F0B;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
-1F0C;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
-1F0D;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
-1F0E;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
-1F0F;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
-1F10;AL # GREEK SMALL LETTER EPSILON WITH PSILI
-1F11;AL # GREEK SMALL LETTER EPSILON WITH DASIA
-1F12;AL # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
-1F13;AL # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
-1F14;AL # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
-1F15;AL # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
-1F18;AL # GREEK CAPITAL LETTER EPSILON WITH PSILI
-1F19;AL # GREEK CAPITAL LETTER EPSILON WITH DASIA
-1F1A;AL # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
-1F1B;AL # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
-1F1C;AL # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
-1F1D;AL # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
-1F20;AL # GREEK SMALL LETTER ETA WITH PSILI
-1F21;AL # GREEK SMALL LETTER ETA WITH DASIA
-1F22;AL # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
-1F23;AL # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
-1F24;AL # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
-1F25;AL # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
-1F26;AL # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
-1F27;AL # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
-1F28;AL # GREEK CAPITAL LETTER ETA WITH PSILI
-1F29;AL # GREEK CAPITAL LETTER ETA WITH DASIA
-1F2A;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
-1F2B;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
-1F2C;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
-1F2D;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
-1F2E;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
-1F2F;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
-1F30;AL # GREEK SMALL LETTER IOTA WITH PSILI
-1F31;AL # GREEK SMALL LETTER IOTA WITH DASIA
-1F32;AL # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
-1F33;AL # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
-1F34;AL # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
-1F35;AL # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
-1F36;AL # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
-1F37;AL # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
-1F38;AL # GREEK CAPITAL LETTER IOTA WITH PSILI
-1F39;AL # GREEK CAPITAL LETTER IOTA WITH DASIA
-1F3A;AL # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
-1F3B;AL # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
-1F3C;AL # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
-1F3D;AL # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
-1F3E;AL # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
-1F3F;AL # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
-1F40;AL # GREEK SMALL LETTER OMICRON WITH PSILI
-1F41;AL # GREEK SMALL LETTER OMICRON WITH DASIA
-1F42;AL # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
-1F43;AL # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
-1F44;AL # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
-1F45;AL # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
-1F48;AL # GREEK CAPITAL LETTER OMICRON WITH PSILI
-1F49;AL # GREEK CAPITAL LETTER OMICRON WITH DASIA
-1F4A;AL # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
-1F4B;AL # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
-1F4C;AL # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
-1F4D;AL # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
-1F50;AL # GREEK SMALL LETTER UPSILON WITH PSILI
-1F51;AL # GREEK SMALL LETTER UPSILON WITH DASIA
-1F52;AL # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
-1F53;AL # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
-1F54;AL # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
-1F55;AL # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
-1F56;AL # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
-1F57;AL # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
-1F59;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA
-1F5B;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
-1F5D;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
-1F5F;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
-1F60;AL # GREEK SMALL LETTER OMEGA WITH PSILI
-1F61;AL # GREEK SMALL LETTER OMEGA WITH DASIA
-1F62;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
-1F63;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
-1F64;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
-1F65;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
-1F66;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
-1F67;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
-1F68;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI
-1F69;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA
-1F6A;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
-1F6B;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
-1F6C;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
-1F6D;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
-1F6E;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
-1F6F;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
-1F70;AL # GREEK SMALL LETTER ALPHA WITH VARIA
-1F71;AL # GREEK SMALL LETTER ALPHA WITH OXIA
-1F72;AL # GREEK SMALL LETTER EPSILON WITH VARIA
-1F73;AL # GREEK SMALL LETTER EPSILON WITH OXIA
-1F74;AL # GREEK SMALL LETTER ETA WITH VARIA
-1F75;AL # GREEK SMALL LETTER ETA WITH OXIA
-1F76;AL # GREEK SMALL LETTER IOTA WITH VARIA
-1F77;AL # GREEK SMALL LETTER IOTA WITH OXIA
-1F78;AL # GREEK SMALL LETTER OMICRON WITH VARIA
-1F79;AL # GREEK SMALL LETTER OMICRON WITH OXIA
-1F7A;AL # GREEK SMALL LETTER UPSILON WITH VARIA
-1F7B;AL # GREEK SMALL LETTER UPSILON WITH OXIA
-1F7C;AL # GREEK SMALL LETTER OMEGA WITH VARIA
-1F7D;AL # GREEK SMALL LETTER OMEGA WITH OXIA
-1F80;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
-1F81;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
-1F82;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1F83;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1F84;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1F85;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1F86;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1F87;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1F88;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
-1F89;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
-1F8A;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1F8B;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1F8C;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1F8D;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1F8E;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1F8F;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1F90;AL # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
-1F91;AL # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
-1F92;AL # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1F93;AL # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1F94;AL # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1F95;AL # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1F96;AL # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1F97;AL # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1F98;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
-1F99;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
-1F9A;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1F9B;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1F9C;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1F9D;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1F9E;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1F9F;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1FA0;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
-1FA1;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
-1FA2;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1FA3;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1FA4;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1FA5;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1FA6;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1FA7;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1FA8;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
-1FA9;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
-1FAA;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1FAB;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1FAC;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1FAD;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1FAE;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1FAF;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1FB0;AL # GREEK SMALL LETTER ALPHA WITH VRACHY
-1FB1;AL # GREEK SMALL LETTER ALPHA WITH MACRON
-1FB2;AL # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
-1FB3;AL # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
-1FB4;AL # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
-1FB6;AL # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
-1FB7;AL # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FB8;AL # GREEK CAPITAL LETTER ALPHA WITH VRACHY
-1FB9;AL # GREEK CAPITAL LETTER ALPHA WITH MACRON
-1FBA;AL # GREEK CAPITAL LETTER ALPHA WITH VARIA
-1FBB;AL # GREEK CAPITAL LETTER ALPHA WITH OXIA
-1FBC;AL # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
-1FBD;AL # GREEK KORONIS
-1FBE;AL # GREEK PROSGEGRAMMENI
-1FBF;AL # GREEK PSILI
-1FC0;AL # GREEK PERISPOMENI
-1FC1;AL # GREEK DIALYTIKA AND PERISPOMENI
-1FC2;AL # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
-1FC3;AL # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
-1FC4;AL # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
-1FC6;AL # GREEK SMALL LETTER ETA WITH PERISPOMENI
-1FC7;AL # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FC8;AL # GREEK CAPITAL LETTER EPSILON WITH VARIA
-1FC9;AL # GREEK CAPITAL LETTER EPSILON WITH OXIA
-1FCA;AL # GREEK CAPITAL LETTER ETA WITH VARIA
-1FCB;AL # GREEK CAPITAL LETTER ETA WITH OXIA
-1FCC;AL # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
-1FCD;AL # GREEK PSILI AND VARIA
-1FCE;AL # GREEK PSILI AND OXIA
-1FCF;AL # GREEK PSILI AND PERISPOMENI
-1FD0;AL # GREEK SMALL LETTER IOTA WITH VRACHY
-1FD1;AL # GREEK SMALL LETTER IOTA WITH MACRON
-1FD2;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
-1FD3;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
-1FD6;AL # GREEK SMALL LETTER IOTA WITH PERISPOMENI
-1FD7;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
-1FD8;AL # GREEK CAPITAL LETTER IOTA WITH VRACHY
-1FD9;AL # GREEK CAPITAL LETTER IOTA WITH MACRON
-1FDA;AL # GREEK CAPITAL LETTER IOTA WITH VARIA
-1FDB;AL # GREEK CAPITAL LETTER IOTA WITH OXIA
-1FDD;AL # GREEK DASIA AND VARIA
-1FDE;AL # GREEK DASIA AND OXIA
-1FDF;AL # GREEK DASIA AND PERISPOMENI
-1FE0;AL # GREEK SMALL LETTER UPSILON WITH VRACHY
-1FE1;AL # GREEK SMALL LETTER UPSILON WITH MACRON
-1FE2;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
-1FE3;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
-1FE4;AL # GREEK SMALL LETTER RHO WITH PSILI
-1FE5;AL # GREEK SMALL LETTER RHO WITH DASIA
-1FE6;AL # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
-1FE7;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
-1FE8;AL # GREEK CAPITAL LETTER UPSILON WITH VRACHY
-1FE9;AL # GREEK CAPITAL LETTER UPSILON WITH MACRON
-1FEA;AL # GREEK CAPITAL LETTER UPSILON WITH VARIA
-1FEB;AL # GREEK CAPITAL LETTER UPSILON WITH OXIA
-1FEC;AL # GREEK CAPITAL LETTER RHO WITH DASIA
-1FED;AL # GREEK DIALYTIKA AND VARIA
-1FEE;AL # GREEK DIALYTIKA AND OXIA
-1FEF;AL # GREEK VARIA
-1FF2;AL # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
-1FF3;AL # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
-1FF4;AL # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
-1FF6;AL # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
-1FF7;AL # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FF8;AL # GREEK CAPITAL LETTER OMICRON WITH VARIA
-1FF9;AL # GREEK CAPITAL LETTER OMICRON WITH OXIA
-1FFA;AL # GREEK CAPITAL LETTER OMEGA WITH VARIA
-1FFB;AL # GREEK CAPITAL LETTER OMEGA WITH OXIA
-1FFC;AL # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
-1FFD;AL # GREEK OXIA
-1FFE;AL # GREEK DASIA
-2000;BA # EN QUAD
-2001;BA # EM QUAD
-2002;BA # EN SPACE
-2003;BA # EM SPACE
-2004;BA # THREE-PER-EM SPACE
-2005;BA # FOUR-PER-EM SPACE
-2006;BA # SIX-PER-EM SPACE
-2007;GL # FIGURE SPACE
-2008;BA # PUNCTUATION SPACE
-2009;BA # THIN SPACE
-200A;BA # HAIR SPACE
-200B;ZW # ZERO WIDTH SPACE
-200C;CM # ZERO WIDTH NON-JOINER
-200D;CM # ZERO WIDTH JOINER
-200E;CM # LEFT-TO-RIGHT MARK
-200F;CM # RIGHT-TO-LEFT MARK
-2010;BA # HYPHEN
-2011;GL # NON-BREAKING HYPHEN
-2012;BA # FIGURE DASH
-2013;BA # EN DASH
-2014;B2 # EM DASH
-2015;AI # HORIZONTAL BAR
-2016;AI # DOUBLE VERTICAL LINE
-2017;AL # DOUBLE LOW LINE
-2018;QU # LEFT SINGLE QUOTATION MARK
-2019;QU # RIGHT SINGLE QUOTATION MARK
-201A;OP # SINGLE LOW-9 QUOTATION MARK
-201B;QU # SINGLE HIGH-REVERSED-9 QUOTATION MARK
-201C;QU # LEFT DOUBLE QUOTATION MARK
-201D;QU # RIGHT DOUBLE QUOTATION MARK
-201E;OP # DOUBLE LOW-9 QUOTATION MARK
-201F;QU # DOUBLE HIGH-REVERSED-9 QUOTATION MARK
-2020;AI # DAGGER
-2021;AI # DOUBLE DAGGER
-2022;AL # BULLET
-2023;AL # TRIANGULAR BULLET
-2024;IN # ONE DOT LEADER
-2025;IN # TWO DOT LEADER
-2026;IN # HORIZONTAL ELLIPSIS
-2027;BA # HYPHENATION POINT
-2028;BK # LINE SEPARATOR
-2029;BK # PARAGRAPH SEPARATOR
-202A;CM # LEFT-TO-RIGHT EMBEDDING
-202B;CM # RIGHT-TO-LEFT EMBEDDING
-202C;CM # POP DIRECTIONAL FORMATTING
-202D;CM # LEFT-TO-RIGHT OVERRIDE
-202E;CM # RIGHT-TO-LEFT OVERRIDE
-202F;GL # NARROW NO-BREAK SPACE
-2030;PO # PER MILLE SIGN
-2031;PO # PER TEN THOUSAND SIGN
-2032;PO # PRIME
-2033;PO # DOUBLE PRIME
-2034;PO # TRIPLE PRIME
-2035;PO # REVERSED PRIME
-2036;PO # REVERSED DOUBLE PRIME
-2037;PO # REVERSED TRIPLE PRIME
-2038;AL # CARET
-2039;QU # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-203A;QU # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-203B;AI # REFERENCE MARK
-203C;NS # DOUBLE EXCLAMATION MARK
-203D;AL # INTERROBANG
-203E;AL # OVERLINE
-203F;AL # UNDERTIE
-2040;AL # CHARACTER TIE
-2041;AL # CARET INSERTION POINT
-2042;AL # ASTERISM
-2043;AL # HYPHEN BULLET
-2044;IS # FRACTION SLASH
-2045;OP # LEFT SQUARE BRACKET WITH QUILL
-2046;CL # RIGHT SQUARE BRACKET WITH QUILL
-2047;AL # DOUBLE QUESTION MARK
-2048;AL # QUESTION EXCLAMATION MARK
-2049;AL # EXCLAMATION QUESTION MARK
-204A;AL # TIRONIAN SIGN ET
-204B;AL # REVERSED PILCROW SIGN
-204C;AL # BLACK LEFTWARDS BULLET
-204D;AL # BLACK RIGHTWARDS BULLET
-204E;AL # LOW ASTERISK
-204F;AL # REVERSED SEMICOLON
-2050;AL # CLOSE UP
-2051;AL # TWO ASTERISKS ALIGNED VERTICALLY
-2052;AL # COMMERCIAL MINUS SIGN
-2053;AL # SWUNG DASH
-2054;AL # INVERTED UNDERTIE
-2055;AL # FLOWER PUNCTUATION MARK
-2056;BA # THREE DOT PUNCTUATION
-2057;AL # QUADRUPLE PRIME
-2058;BA # FOUR DOT PUNCTUATION
-2059;BA # FIVE DOT PUNCTUATION
-205A;BA # TWO DOT PUNCTUATION
-205B;BA # FOUR DOT MARK
-205C;AL # DOTTED CROSS
-205D;BA # TRICOLON
-205E;BA # VERTICAL FOUR DOTS
-205F;BA # MEDIUM MATHEMATICAL SPACE
-2060;WJ # WORD JOINER
-2061;AL # FUNCTION APPLICATION
-2062;AL # INVISIBLE TIMES
-2063;AL # INVISIBLE SEPARATOR
-206A;CM # INHIBIT SYMMETRIC SWAPPING
-206B;CM # ACTIVATE SYMMETRIC SWAPPING
-206C;CM # INHIBIT ARABIC FORM SHAPING
-206D;CM # ACTIVATE ARABIC FORM SHAPING
-206E;CM # NATIONAL DIGIT SHAPES
-206F;CM # NOMINAL DIGIT SHAPES
-2070;AL # SUPERSCRIPT ZERO
-2071;AL # SUPERSCRIPT LATIN SMALL LETTER I
-2074;AI # SUPERSCRIPT FOUR
-2075;AL # SUPERSCRIPT FIVE
-2076;AL # SUPERSCRIPT SIX
-2077;AL # SUPERSCRIPT SEVEN
-2078;AL # SUPERSCRIPT EIGHT
-2079;AL # SUPERSCRIPT NINE
-207A;AL # SUPERSCRIPT PLUS SIGN
-207B;AL # SUPERSCRIPT MINUS
-207C;AL # SUPERSCRIPT EQUALS SIGN
-207D;OP # SUPERSCRIPT LEFT PARENTHESIS
-207E;CL # SUPERSCRIPT RIGHT PARENTHESIS
-207F;AI # SUPERSCRIPT LATIN SMALL LETTER N
-2080;AL # SUBSCRIPT ZERO
-2081;AI # SUBSCRIPT ONE
-2082;AI # SUBSCRIPT TWO
-2083;AI # SUBSCRIPT THREE
-2084;AI # SUBSCRIPT FOUR
-2085;AL # SUBSCRIPT FIVE
-2086;AL # SUBSCRIPT SIX
-2087;AL # SUBSCRIPT SEVEN
-2088;AL # SUBSCRIPT EIGHT
-2089;AL # SUBSCRIPT NINE
-208A;AL # SUBSCRIPT PLUS SIGN
-208B;AL # SUBSCRIPT MINUS
-208C;AL # SUBSCRIPT EQUALS SIGN
-208D;OP # SUBSCRIPT LEFT PARENTHESIS
-208E;CL # SUBSCRIPT RIGHT PARENTHESIS
-2090;AL # LATIN SUBSCRIPT SMALL LETTER A
-2091;AL # LATIN SUBSCRIPT SMALL LETTER E
-2092;AL # LATIN SUBSCRIPT SMALL LETTER O
-2093;AL # LATIN SUBSCRIPT SMALL LETTER X
-2094;AL # LATIN SUBSCRIPT SMALL LETTER SCHWA
-20A0;PR # EURO-CURRENCY SIGN
-20A1;PR # COLON SIGN
-20A2;PR # CRUZEIRO SIGN
-20A3;PR # FRENCH FRANC SIGN
-20A4;PR # LIRA SIGN
-20A5;PR # MILL SIGN
-20A6;PR # NAIRA SIGN
-20A7;PO # PESETA SIGN
-20A8;PR # RUPEE SIGN
-20A9;PR # WON SIGN
-20AA;PR # NEW SHEQEL SIGN
-20AB;PR # DONG SIGN
-20AC;PR # EURO SIGN
-20AD;PR # KIP SIGN
-20AE;PR # TUGRIK SIGN
-20AF;PR # DRACHMA SIGN
-20B0;PR # GERMAN PENNY SIGN
-20B1;PR # PESO SIGN
-20B2;PR # GUARANI SIGN
-20B3;PR # AUSTRAL SIGN
-20B4;PR # HRYVNIA SIGN
-20B5;PR # CEDI SIGN
-20D0;CM # COMBINING LEFT HARPOON ABOVE
-20D1;CM # COMBINING RIGHT HARPOON ABOVE
-20D2;CM # COMBINING LONG VERTICAL LINE OVERLAY
-20D3;CM # COMBINING SHORT VERTICAL LINE OVERLAY
-20D4;CM # COMBINING ANTICLOCKWISE ARROW ABOVE
-20D5;CM # COMBINING CLOCKWISE ARROW ABOVE
-20D6;CM # COMBINING LEFT ARROW ABOVE
-20D7;CM # COMBINING RIGHT ARROW ABOVE
-20D8;CM # COMBINING RING OVERLAY
-20D9;CM # COMBINING CLOCKWISE RING OVERLAY
-20DA;CM # COMBINING ANTICLOCKWISE RING OVERLAY
-20DB;CM # COMBINING THREE DOTS ABOVE
-20DC;CM # COMBINING FOUR DOTS ABOVE
-20DD;CM # COMBINING ENCLOSING CIRCLE
-20DE;CM # COMBINING ENCLOSING SQUARE
-20DF;CM # COMBINING ENCLOSING DIAMOND
-20E0;CM # COMBINING ENCLOSING CIRCLE BACKSLASH
-20E1;CM # COMBINING LEFT RIGHT ARROW ABOVE
-20E2;CM # COMBINING ENCLOSING SCREEN
-20E3;CM # COMBINING ENCLOSING KEYCAP
-20E4;CM # COMBINING ENCLOSING UPWARD POINTING TRIANGLE
-20E5;CM # COMBINING REVERSE SOLIDUS OVERLAY
-20E6;CM # COMBINING DOUBLE VERTICAL STROKE OVERLAY
-20E7;CM # COMBINING ANNUITY SYMBOL
-20E8;CM # COMBINING TRIPLE UNDERDOT
-20E9;CM # COMBINING WIDE BRIDGE ABOVE
-20EA;CM # COMBINING LEFTWARDS ARROW OVERLAY
-20EB;CM # COMBINING LONG DOUBLE SOLIDUS OVERLAY
-2100;AL # ACCOUNT OF
-2101;AL # ADDRESSED TO THE SUBJECT
-2102;AL # DOUBLE-STRUCK CAPITAL C
-2103;PO # DEGREE CELSIUS
-2104;AL # CENTRE LINE SYMBOL
-2105;AI # CARE OF
-2106;AL # CADA UNA
-2107;AL # EULER CONSTANT
-2108;AL # SCRUPLE
-2109;PO # DEGREE FAHRENHEIT
-210A;AL # SCRIPT SMALL G
-210B;AL # SCRIPT CAPITAL H
-210C;AL # BLACK-LETTER CAPITAL H
-210D;AL # DOUBLE-STRUCK CAPITAL H
-210E;AL # PLANCK CONSTANT
-210F;AL # PLANCK CONSTANT OVER TWO PI
-2110;AL # SCRIPT CAPITAL I
-2111;AL # BLACK-LETTER CAPITAL I
-2112;AL # SCRIPT CAPITAL L
-2113;AI # SCRIPT SMALL L
-2114;AL # L B BAR SYMBOL
-2115;AL # DOUBLE-STRUCK CAPITAL N
-2116;PR # NUMERO SIGN
-2117;AL # SOUND RECORDING COPYRIGHT
-2118;AL # SCRIPT CAPITAL P
-2119;AL # DOUBLE-STRUCK CAPITAL P
-211A;AL # DOUBLE-STRUCK CAPITAL Q
-211B;AL # SCRIPT CAPITAL R
-211C;AL # BLACK-LETTER CAPITAL R
-211D;AL # DOUBLE-STRUCK CAPITAL R
-211E;AL # PRESCRIPTION TAKE
-211F;AL # RESPONSE
-2120;AL # SERVICE MARK
-2121;AI # TELEPHONE SIGN
-2122;AI # TRADE MARK SIGN
-2123;AL # VERSICLE
-2124;AL # DOUBLE-STRUCK CAPITAL Z
-2125;AL # OUNCE SIGN
-2126;AL # 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
-213B;AL # FACSIMILE SIGN
-213C;AL # DOUBLE-STRUCK SMALL PI
-213D;AL # DOUBLE-STRUCK SMALL GAMMA
-213E;AL # DOUBLE-STRUCK CAPITAL GAMMA
-213F;AL # DOUBLE-STRUCK CAPITAL PI
-2140;AL # DOUBLE-STRUCK N-ARY SUMMATION
-2141;AL # TURNED SANS-SERIF CAPITAL G
-2142;AL # TURNED SANS-SERIF CAPITAL L
-2143;AL # REVERSED SANS-SERIF CAPITAL L
-2144;AL # TURNED SANS-SERIF CAPITAL Y
-2145;AL # DOUBLE-STRUCK ITALIC CAPITAL D
-2146;AL # DOUBLE-STRUCK ITALIC SMALL D
-2147;AL # DOUBLE-STRUCK ITALIC SMALL E
-2148;AL # DOUBLE-STRUCK ITALIC SMALL I
-2149;AL # DOUBLE-STRUCK ITALIC SMALL J
-214A;AL # PROPERTY LINE
-214B;AL # TURNED AMPERSAND
-214C;AL # PER SIGN
-2153;AL # VULGAR FRACTION ONE THIRD
-2154;AI # VULGAR FRACTION TWO THIRDS
-2155;AI # VULGAR FRACTION ONE FIFTH
-2156;AL # VULGAR FRACTION TWO FIFTHS
-2157;AL # VULGAR FRACTION THREE FIFTHS
-2158;AL # VULGAR FRACTION FOUR FIFTHS
-2159;AL # VULGAR FRACTION ONE SIXTH
-215A;AL # VULGAR FRACTION FIVE SIXTHS
-215B;AI # VULGAR FRACTION ONE EIGHTH
-215C;AL # VULGAR FRACTION THREE EIGHTHS
-215D;AL # VULGAR FRACTION FIVE EIGHTHS
-215E;AI # VULGAR FRACTION SEVEN EIGHTHS
-215F;AL # FRACTION NUMERATOR ONE
-2160;AI # ROMAN NUMERAL ONE
-2161;AI # ROMAN NUMERAL TWO
-2162;AI # ROMAN NUMERAL THREE
-2163;AI # ROMAN NUMERAL FOUR
-2164;AI # ROMAN NUMERAL FIVE
-2165;AI # ROMAN NUMERAL SIX
-2166;AI # ROMAN NUMERAL SEVEN
-2167;AI # ROMAN NUMERAL EIGHT
-2168;AI # ROMAN NUMERAL NINE
-2169;AI # ROMAN NUMERAL TEN
-216A;AI # ROMAN NUMERAL ELEVEN
-216B;AI # ROMAN NUMERAL TWELVE
-216C;AL # ROMAN NUMERAL FIFTY
-216D;AL # ROMAN NUMERAL ONE HUNDRED
-216E;AL # ROMAN NUMERAL FIVE HUNDRED
-216F;AL # ROMAN NUMERAL ONE THOUSAND
-2170;AI # SMALL ROMAN NUMERAL ONE
-2171;AI # SMALL ROMAN NUMERAL TWO
-2172;AI # SMALL ROMAN NUMERAL THREE
-2173;AI # SMALL ROMAN NUMERAL FOUR
-2174;AI # SMALL ROMAN NUMERAL FIVE
-2175;AI # SMALL ROMAN NUMERAL SIX
-2176;AI # SMALL ROMAN NUMERAL SEVEN
-2177;AI # SMALL ROMAN NUMERAL EIGHT
-2178;AI # SMALL ROMAN NUMERAL NINE
-2179;AI # SMALL ROMAN NUMERAL TEN
-217A;AL # SMALL ROMAN NUMERAL ELEVEN
-217B;AL # SMALL ROMAN NUMERAL TWELVE
-217C;AL # SMALL ROMAN NUMERAL FIFTY
-217D;AL # SMALL ROMAN NUMERAL ONE HUNDRED
-217E;AL # SMALL ROMAN NUMERAL FIVE HUNDRED
-217F;AL # SMALL ROMAN NUMERAL ONE THOUSAND
-2180;AL # ROMAN NUMERAL ONE THOUSAND C D
-2181;AL # ROMAN NUMERAL FIVE THOUSAND
-2182;AL # ROMAN NUMERAL TEN THOUSAND
-2183;AL # ROMAN NUMERAL REVERSED ONE HUNDRED
-2190;AI # LEFTWARDS ARROW
-2191;AI # UPWARDS ARROW
-2192;AI # RIGHTWARDS ARROW
-2193;AI # DOWNWARDS ARROW
-2194;AI # LEFT RIGHT ARROW
-2195;AI # UP DOWN ARROW
-2196;AI # NORTH WEST ARROW
-2197;AI # NORTH EAST ARROW
-2198;AI # SOUTH EAST ARROW
-2199;AI # SOUTH WEST ARROW
-219A;AL # LEFTWARDS ARROW WITH STROKE
-219B;AL # RIGHTWARDS ARROW WITH STROKE
-219C;AL # LEFTWARDS WAVE ARROW
-219D;AL # RIGHTWARDS WAVE ARROW
-219E;AL # LEFTWARDS TWO HEADED ARROW
-219F;AL # UPWARDS TWO HEADED ARROW
-21A0;AL # RIGHTWARDS TWO HEADED ARROW
-21A1;AL # DOWNWARDS TWO HEADED ARROW
-21A2;AL # LEFTWARDS ARROW WITH TAIL
-21A3;AL # RIGHTWARDS ARROW WITH TAIL
-21A4;AL # LEFTWARDS ARROW FROM BAR
-21A5;AL # UPWARDS ARROW FROM BAR
-21A6;AL # RIGHTWARDS ARROW FROM BAR
-21A7;AL # DOWNWARDS ARROW FROM BAR
-21A8;AL # UP DOWN ARROW WITH BASE
-21A9;AL # LEFTWARDS ARROW WITH HOOK
-21AA;AL # RIGHTWARDS ARROW WITH HOOK
-21AB;AL # LEFTWARDS ARROW WITH LOOP
-21AC;AL # RIGHTWARDS ARROW WITH LOOP
-21AD;AL # LEFT RIGHT WAVE ARROW
-21AE;AL # LEFT RIGHT ARROW WITH STROKE
-21AF;AL # DOWNWARDS ZIGZAG ARROW
-21B0;AL # UPWARDS ARROW WITH TIP LEFTWARDS
-21B1;AL # UPWARDS ARROW WITH TIP RIGHTWARDS
-21B2;AL # DOWNWARDS ARROW WITH TIP LEFTWARDS
-21B3;AL # DOWNWARDS ARROW WITH TIP RIGHTWARDS
-21B4;AL # RIGHTWARDS ARROW WITH CORNER DOWNWARDS
-21B5;AL # DOWNWARDS ARROW WITH CORNER LEFTWARDS
-21B6;AL # ANTICLOCKWISE TOP SEMICIRCLE ARROW
-21B7;AL # CLOCKWISE TOP SEMICIRCLE ARROW
-21B8;AL # NORTH WEST ARROW TO LONG BAR
-21B9;AL # LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR
-21BA;AL # ANTICLOCKWISE OPEN CIRCLE ARROW
-21BB;AL # CLOCKWISE OPEN CIRCLE ARROW
-21BC;AL # LEFTWARDS HARPOON WITH BARB UPWARDS
-21BD;AL # LEFTWARDS HARPOON WITH BARB DOWNWARDS
-21BE;AL # UPWARDS HARPOON WITH BARB RIGHTWARDS
-21BF;AL # UPWARDS HARPOON WITH BARB LEFTWARDS
-21C0;AL # RIGHTWARDS HARPOON WITH BARB UPWARDS
-21C1;AL # RIGHTWARDS HARPOON WITH BARB DOWNWARDS
-21C2;AL # DOWNWARDS HARPOON WITH BARB RIGHTWARDS
-21C3;AL # DOWNWARDS HARPOON WITH BARB LEFTWARDS
-21C4;AL # RIGHTWARDS ARROW OVER LEFTWARDS ARROW
-21C5;AL # UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW
-21C6;AL # LEFTWARDS ARROW OVER RIGHTWARDS ARROW
-21C7;AL # LEFTWARDS PAIRED ARROWS
-21C8;AL # UPWARDS PAIRED ARROWS
-21C9;AL # RIGHTWARDS PAIRED ARROWS
-21CA;AL # DOWNWARDS PAIRED ARROWS
-21CB;AL # LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
-21CC;AL # RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
-21CD;AL # LEFTWARDS DOUBLE ARROW WITH STROKE
-21CE;AL # LEFT RIGHT DOUBLE ARROW WITH STROKE
-21CF;AL # RIGHTWARDS DOUBLE ARROW WITH STROKE
-21D0;AL # LEFTWARDS DOUBLE ARROW
-21D1;AL # UPWARDS DOUBLE ARROW
-21D2;AI # RIGHTWARDS DOUBLE ARROW
-21D3;AL # DOWNWARDS DOUBLE ARROW
-21D4;AI # LEFT RIGHT DOUBLE ARROW
-21D5;AL # UP DOWN DOUBLE ARROW
-21D6;AL # NORTH WEST DOUBLE ARROW
-21D7;AL # NORTH EAST DOUBLE ARROW
-21D8;AL # SOUTH EAST DOUBLE ARROW
-21D9;AL # SOUTH WEST DOUBLE ARROW
-21DA;AL # LEFTWARDS TRIPLE ARROW
-21DB;AL # RIGHTWARDS TRIPLE ARROW
-21DC;AL # LEFTWARDS SQUIGGLE ARROW
-21DD;AL # RIGHTWARDS SQUIGGLE ARROW
-21DE;AL # UPWARDS ARROW WITH DOUBLE STROKE
-21DF;AL # DOWNWARDS ARROW WITH DOUBLE STROKE
-21E0;AL # LEFTWARDS DASHED ARROW
-21E1;AL # UPWARDS DASHED ARROW
-21E2;AL # RIGHTWARDS DASHED ARROW
-21E3;AL # DOWNWARDS DASHED ARROW
-21E4;AL # LEFTWARDS ARROW TO BAR
-21E5;AL # RIGHTWARDS ARROW TO BAR
-21E6;AL # LEFTWARDS WHITE ARROW
-21E7;AL # UPWARDS WHITE ARROW
-21E8;AL # RIGHTWARDS WHITE ARROW
-21E9;AL # DOWNWARDS WHITE ARROW
-21EA;AL # UPWARDS WHITE ARROW FROM BAR
-21EB;AL # UPWARDS WHITE ARROW ON PEDESTAL
-21EC;AL # UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR
-21ED;AL # UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR
-21EE;AL # UPWARDS WHITE DOUBLE ARROW
-21EF;AL # UPWARDS WHITE DOUBLE ARROW ON PEDESTAL
-21F0;AL # RIGHTWARDS WHITE ARROW FROM WALL
-21F1;AL # NORTH WEST ARROW TO CORNER
-21F2;AL # SOUTH EAST ARROW TO CORNER
-21F3;AL # UP DOWN WHITE ARROW
-21F4;AL # RIGHT ARROW WITH SMALL CIRCLE
-21F5;AL # DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW
-21F6;AL # THREE RIGHTWARDS ARROWS
-21F7;AL # LEFTWARDS ARROW WITH VERTICAL STROKE
-21F8;AL # RIGHTWARDS ARROW WITH VERTICAL STROKE
-21F9;AL # LEFT RIGHT ARROW WITH VERTICAL STROKE
-21FA;AL # LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE
-21FB;AL # RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE
-21FC;AL # LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE
-21FD;AL # LEFTWARDS OPEN-HEADED ARROW
-21FE;AL # RIGHTWARDS OPEN-HEADED ARROW
-21FF;AL # LEFT RIGHT OPEN-HEADED ARROW
-2200;AI # FOR ALL
-2201;AL # COMPLEMENT
-2202;AI # PARTIAL DIFFERENTIAL
-2203;AI # THERE EXISTS
-2204;AL # THERE DOES NOT EXIST
-2205;AL # EMPTY SET
-2206;AL # INCREMENT
-2207;AI # NABLA
-2208;AI # ELEMENT OF
-2209;AL # NOT AN ELEMENT OF
-220A;AL # SMALL ELEMENT OF
-220B;AI # CONTAINS AS MEMBER
-220C;AL # DOES NOT CONTAIN AS MEMBER
-220D;AL # SMALL CONTAINS AS MEMBER
-220E;AL # END OF PROOF
-220F;AI # N-ARY PRODUCT
-2210;AL # N-ARY COPRODUCT
-2211;AI # N-ARY SUMMATION
-2212;PR # MINUS SIGN
-2213;PR # MINUS-OR-PLUS SIGN
-2214;AL # DOT PLUS
-2215;AI # DIVISION SLASH
-2216;AL # SET MINUS
-2217;AL # ASTERISK OPERATOR
-2218;AL # RING OPERATOR
-2219;AL # BULLET OPERATOR
-221A;AI # SQUARE ROOT
-221B;AL # CUBE ROOT
-221C;AL # FOURTH ROOT
-221D;AI # PROPORTIONAL TO
-221E;AI # INFINITY
-221F;AI # RIGHT ANGLE
-2220;AI # ANGLE
-2221;AL # MEASURED ANGLE
-2222;AL # SPHERICAL ANGLE
-2223;AI # DIVIDES
-2224;AL # DOES NOT DIVIDE
-2225;AI # PARALLEL TO
-2226;AL # NOT PARALLEL TO
-2227;AI # LOGICAL AND
-2228;AI # LOGICAL OR
-2229;AI # INTERSECTION
-222A;AI # UNION
-222B;AI # INTEGRAL
-222C;AI # DOUBLE INTEGRAL
-222D;AL # TRIPLE INTEGRAL
-222E;AI # CONTOUR INTEGRAL
-222F;AL # SURFACE INTEGRAL
-2230;AL # VOLUME INTEGRAL
-2231;AL # CLOCKWISE INTEGRAL
-2232;AL # CLOCKWISE CONTOUR INTEGRAL
-2233;AL # ANTICLOCKWISE CONTOUR INTEGRAL
-2234;AI # THEREFORE
-2235;AI # BECAUSE
-2236;AI # RATIO
-2237;AI # PROPORTION
-2238;AL # DOT MINUS
-2239;AL # EXCESS
-223A;AL # GEOMETRIC PROPORTION
-223B;AL # HOMOTHETIC
-223C;AI # TILDE OPERATOR
-223D;AI # REVERSED TILDE
-223E;AL # INVERTED LAZY S
-223F;AL # SINE WAVE
-2240;AL # WREATH PRODUCT
-2241;AL # NOT TILDE
-2242;AL # MINUS TILDE
-2243;AL # ASYMPTOTICALLY EQUAL TO
-2244;AL # NOT ASYMPTOTICALLY EQUAL TO
-2245;AL # APPROXIMATELY EQUAL TO
-2246;AL # APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
-2247;AL # NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
-2248;AI # ALMOST EQUAL TO
-2249;AL # NOT ALMOST EQUAL TO
-224A;AL # ALMOST EQUAL OR EQUAL TO
-224B;AL # TRIPLE TILDE
-224C;AI # ALL EQUAL TO
-224D;AL # EQUIVALENT TO
-224E;AL # GEOMETRICALLY EQUIVALENT TO
-224F;AL # DIFFERENCE BETWEEN
-2250;AL # APPROACHES THE LIMIT
-2251;AL # GEOMETRICALLY EQUAL TO
-2252;AI # APPROXIMATELY EQUAL TO OR THE IMAGE OF
-2253;AL # IMAGE OF OR APPROXIMATELY EQUAL TO
-2254;AL # COLON EQUALS
-2255;AL # EQUALS COLON
-2256;AL # RING IN EQUAL TO
-2257;AL # RING EQUAL TO
-2258;AL # CORRESPONDS TO
-2259;AL # ESTIMATES
-225A;AL # EQUIANGULAR TO
-225B;AL # STAR EQUALS
-225C;AL # DELTA EQUAL TO
-225D;AL # EQUAL TO BY DEFINITION
-225E;AL # MEASURED BY
-225F;AL # QUESTIONED EQUAL TO
-2260;AI # NOT EQUAL TO
-2261;AI # IDENTICAL TO
-2262;AL # NOT IDENTICAL TO
-2263;AL # STRICTLY EQUIVALENT TO
-2264;AI # LESS-THAN OR EQUAL TO
-2265;AI # GREATER-THAN OR EQUAL TO
-2266;AI # LESS-THAN OVER EQUAL TO
-2267;AI # GREATER-THAN OVER EQUAL TO
-2268;AL # LESS-THAN BUT NOT EQUAL TO
-2269;AL # GREATER-THAN BUT NOT EQUAL TO
-226A;AI # MUCH LESS-THAN
-226B;AI # MUCH GREATER-THAN
-226C;AL # BETWEEN
-226D;AL # NOT EQUIVALENT TO
-226E;AI # NOT LESS-THAN
-226F;AI # NOT GREATER-THAN
-2270;AL # NEITHER LESS-THAN NOR EQUAL TO
-2271;AL # NEITHER GREATER-THAN NOR EQUAL TO
-2272;AL # LESS-THAN OR EQUIVALENT TO
-2273;AL # GREATER-THAN OR EQUIVALENT TO
-2274;AL # NEITHER LESS-THAN NOR EQUIVALENT TO
-2275;AL # NEITHER GREATER-THAN NOR EQUIVALENT TO
-2276;AL # LESS-THAN OR GREATER-THAN
-2277;AL # GREATER-THAN OR LESS-THAN
-2278;AL # NEITHER LESS-THAN NOR GREATER-THAN
-2279;AL # NEITHER GREATER-THAN NOR LESS-THAN
-227A;AL # PRECEDES
-227B;AL # SUCCEEDS
-227C;AL # PRECEDES OR EQUAL TO
-227D;AL # SUCCEEDS OR EQUAL TO
-227E;AL # PRECEDES OR EQUIVALENT TO
-227F;AL # SUCCEEDS OR EQUIVALENT TO
-2280;AL # DOES NOT PRECEDE
-2281;AL # DOES NOT SUCCEED
-2282;AI # SUBSET OF
-2283;AI # SUPERSET OF
-2284;AL # NOT A SUBSET OF
-2285;AL # NOT A SUPERSET OF
-2286;AI # SUBSET OF OR EQUAL TO
-2287;AI # SUPERSET OF OR EQUAL TO
-2288;AL # NEITHER A SUBSET OF NOR EQUAL TO
-2289;AL # NEITHER A SUPERSET OF NOR EQUAL TO
-228A;AL # SUBSET OF WITH NOT EQUAL TO
-228B;AL # SUPERSET OF WITH NOT EQUAL TO
-228C;AL # MULTISET
-228D;AL # MULTISET MULTIPLICATION
-228E;AL # MULTISET UNION
-228F;AL # SQUARE IMAGE OF
-2290;AL # SQUARE ORIGINAL OF
-2291;AL # SQUARE IMAGE OF OR EQUAL TO
-2292;AL # SQUARE ORIGINAL OF OR EQUAL TO
-2293;AL # SQUARE CAP
-2294;AL # SQUARE CUP
-2295;AI # CIRCLED PLUS
-2296;AL # CIRCLED MINUS
-2297;AL # CIRCLED TIMES
-2298;AL # CIRCLED DIVISION SLASH
-2299;AI # CIRCLED DOT OPERATOR
-229A;AL # CIRCLED RING OPERATOR
-229B;AL # CIRCLED ASTERISK OPERATOR
-229C;AL # CIRCLED EQUALS
-229D;AL # CIRCLED DASH
-229E;AL # SQUARED PLUS
-229F;AL # SQUARED MINUS
-22A0;AL # SQUARED TIMES
-22A1;AL # SQUARED DOT OPERATOR
-22A2;AL # RIGHT TACK
-22A3;AL # LEFT TACK
-22A4;AL # DOWN TACK
-22A5;AI # UP TACK
-22A6;AL # ASSERTION
-22A7;AL # MODELS
-22A8;AL # TRUE
-22A9;AL # FORCES
-22AA;AL # TRIPLE VERTICAL BAR RIGHT TURNSTILE
-22AB;AL # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
-22AC;AL # DOES NOT PROVE
-22AD;AL # NOT TRUE
-22AE;AL # DOES NOT FORCE
-22AF;AL # NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
-22B0;AL # PRECEDES UNDER RELATION
-22B1;AL # SUCCEEDS UNDER RELATION
-22B2;AL # NORMAL SUBGROUP OF
-22B3;AL # CONTAINS AS NORMAL SUBGROUP
-22B4;AL # NORMAL SUBGROUP OF OR EQUAL TO
-22B5;AL # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
-22B6;AL # ORIGINAL OF
-22B7;AL # IMAGE OF
-22B8;AL # MULTIMAP
-22B9;AL # HERMITIAN CONJUGATE MATRIX
-22BA;AL # INTERCALATE
-22BB;AL # XOR
-22BC;AL # NAND
-22BD;AL # NOR
-22BE;AL # RIGHT ANGLE WITH ARC
-22BF;AI # RIGHT TRIANGLE
-22C0;AL # N-ARY LOGICAL AND
-22C1;AL # N-ARY LOGICAL OR
-22C2;AL # N-ARY INTERSECTION
-22C3;AL # N-ARY UNION
-22C4;AL # DIAMOND OPERATOR
-22C5;AL # DOT OPERATOR
-22C6;AL # STAR OPERATOR
-22C7;AL # DIVISION TIMES
-22C8;AL # BOWTIE
-22C9;AL # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
-22CA;AL # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
-22CB;AL # LEFT SEMIDIRECT PRODUCT
-22CC;AL # RIGHT SEMIDIRECT PRODUCT
-22CD;AL # REVERSED TILDE EQUALS
-22CE;AL # CURLY LOGICAL OR
-22CF;AL # CURLY LOGICAL AND
-22D0;AL # DOUBLE SUBSET
-22D1;AL # DOUBLE SUPERSET
-22D2;AL # DOUBLE INTERSECTION
-22D3;AL # DOUBLE UNION
-22D4;AL # PITCHFORK
-22D5;AL # EQUAL AND PARALLEL TO
-22D6;AL # LESS-THAN WITH DOT
-22D7;AL # GREATER-THAN WITH DOT
-22D8;AL # VERY MUCH LESS-THAN
-22D9;AL # VERY MUCH GREATER-THAN
-22DA;AL # LESS-THAN EQUAL TO OR GREATER-THAN
-22DB;AL # GREATER-THAN EQUAL TO OR LESS-THAN
-22DC;AL # EQUAL TO OR LESS-THAN
-22DD;AL # EQUAL TO OR GREATER-THAN
-22DE;AL # EQUAL TO OR PRECEDES
-22DF;AL # EQUAL TO OR SUCCEEDS
-22E0;AL # DOES NOT PRECEDE OR EQUAL
-22E1;AL # DOES NOT SUCCEED OR EQUAL
-22E2;AL # NOT SQUARE IMAGE OF OR EQUAL TO
-22E3;AL # NOT SQUARE ORIGINAL OF OR EQUAL TO
-22E4;AL # SQUARE IMAGE OF OR NOT EQUAL TO
-22E5;AL # SQUARE ORIGINAL OF OR NOT EQUAL TO
-22E6;AL # LESS-THAN BUT NOT EQUIVALENT TO
-22E7;AL # GREATER-THAN BUT NOT EQUIVALENT TO
-22E8;AL # PRECEDES BUT NOT EQUIVALENT TO
-22E9;AL # SUCCEEDS BUT NOT EQUIVALENT TO
-22EA;AL # NOT NORMAL SUBGROUP OF
-22EB;AL # DOES NOT CONTAIN AS NORMAL SUBGROUP
-22EC;AL # NOT NORMAL SUBGROUP OF OR EQUAL TO
-22ED;AL # DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
-22EE;AL # VERTICAL ELLIPSIS
-22EF;AL # MIDLINE HORIZONTAL ELLIPSIS
-22F0;AL # UP RIGHT DIAGONAL ELLIPSIS
-22F1;AL # DOWN RIGHT DIAGONAL ELLIPSIS
-22F2;AL # ELEMENT OF WITH LONG HORIZONTAL STROKE
-22F3;AL # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22F4;AL # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22F5;AL # ELEMENT OF WITH DOT ABOVE
-22F6;AL # ELEMENT OF WITH OVERBAR
-22F7;AL # SMALL ELEMENT OF WITH OVERBAR
-22F8;AL # ELEMENT OF WITH UNDERBAR
-22F9;AL # ELEMENT OF WITH TWO HORIZONTAL STROKES
-22FA;AL # CONTAINS WITH LONG HORIZONTAL STROKE
-22FB;AL # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22FC;AL # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22FD;AL # CONTAINS WITH OVERBAR
-22FE;AL # SMALL CONTAINS WITH OVERBAR
-22FF;AL # Z NOTATION BAG MEMBERSHIP
-2300;AL # DIAMETER SIGN
-2301;AL # ELECTRIC ARROW
-2302;AL # HOUSE
-2303;AL # UP ARROWHEAD
-2304;AL # DOWN ARROWHEAD
-2305;AL # PROJECTIVE
-2306;AL # PERSPECTIVE
-2307;AL # WAVY LINE
-2308;AL # LEFT CEILING
-2309;AL # RIGHT CEILING
-230A;AL # LEFT FLOOR
-230B;AL # RIGHT FLOOR
-230C;AL # BOTTOM RIGHT CROP
-230D;AL # BOTTOM LEFT CROP
-230E;AL # TOP RIGHT CROP
-230F;AL # TOP LEFT CROP
-2310;AL # REVERSED NOT SIGN
-2311;AL # SQUARE LOZENGE
-2312;AI # ARC
-2313;AL # SEGMENT
-2314;AL # SECTOR
-2315;AL # TELEPHONE RECORDER
-2316;AL # POSITION INDICATOR
-2317;AL # VIEWDATA SQUARE
-2318;AL # PLACE OF INTEREST SIGN
-2319;AL # TURNED NOT SIGN
-231A;AL # WATCH
-231B;AL # HOURGLASS
-231C;AL # TOP LEFT CORNER
-231D;AL # TOP RIGHT CORNER
-231E;AL # BOTTOM LEFT CORNER
-231F;AL # BOTTOM RIGHT CORNER
-2320;AL # TOP HALF INTEGRAL
-2321;AL # BOTTOM HALF INTEGRAL
-2322;AL # FROWN
-2323;AL # SMILE
-2324;AL # UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS
-2325;AL # OPTION KEY
-2326;AL # ERASE TO THE RIGHT
-2327;AL # X IN A RECTANGLE BOX
-2328;AL # KEYBOARD
-2329;OP # LEFT-POINTING ANGLE BRACKET
-232A;CL # RIGHT-POINTING ANGLE BRACKET
-232B;AL # ERASE TO THE LEFT
-232C;AL # BENZENE RING
-232D;AL # CYLINDRICITY
-232E;AL # ALL AROUND-PROFILE
-232F;AL # SYMMETRY
-2330;AL # TOTAL RUNOUT
-2331;AL # DIMENSION ORIGIN
-2332;AL # CONICAL TAPER
-2333;AL # SLOPE
-2334;AL # COUNTERBORE
-2335;AL # COUNTERSINK
-2336;AL # APL FUNCTIONAL SYMBOL I-BEAM
-2337;AL # APL FUNCTIONAL SYMBOL SQUISH QUAD
-2338;AL # APL FUNCTIONAL SYMBOL QUAD EQUAL
-2339;AL # APL FUNCTIONAL SYMBOL QUAD DIVIDE
-233A;AL # APL FUNCTIONAL SYMBOL QUAD DIAMOND
-233B;AL # APL FUNCTIONAL SYMBOL QUAD JOT
-233C;AL # APL FUNCTIONAL SYMBOL QUAD CIRCLE
-233D;AL # APL FUNCTIONAL SYMBOL CIRCLE STILE
-233E;AL # APL FUNCTIONAL SYMBOL CIRCLE JOT
-233F;AL # APL FUNCTIONAL SYMBOL SLASH BAR
-2340;AL # APL FUNCTIONAL SYMBOL BACKSLASH BAR
-2341;AL # APL FUNCTIONAL SYMBOL QUAD SLASH
-2342;AL # APL FUNCTIONAL SYMBOL QUAD BACKSLASH
-2343;AL # APL FUNCTIONAL SYMBOL QUAD LESS-THAN
-2344;AL # APL FUNCTIONAL SYMBOL QUAD GREATER-THAN
-2345;AL # APL FUNCTIONAL SYMBOL LEFTWARDS VANE
-2346;AL # APL FUNCTIONAL SYMBOL RIGHTWARDS VANE
-2347;AL # APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW
-2348;AL # APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW
-2349;AL # APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH
-234A;AL # APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR
-234B;AL # APL FUNCTIONAL SYMBOL DELTA STILE
-234C;AL # APL FUNCTIONAL SYMBOL QUAD DOWN CARET
-234D;AL # APL FUNCTIONAL SYMBOL QUAD DELTA
-234E;AL # APL FUNCTIONAL SYMBOL DOWN TACK JOT
-234F;AL # APL FUNCTIONAL SYMBOL UPWARDS VANE
-2350;AL # APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW
-2351;AL # APL FUNCTIONAL SYMBOL UP TACK OVERBAR
-2352;AL # APL FUNCTIONAL SYMBOL DEL STILE
-2353;AL # APL FUNCTIONAL SYMBOL QUAD UP CARET
-2354;AL # APL FUNCTIONAL SYMBOL QUAD DEL
-2355;AL # APL FUNCTIONAL SYMBOL UP TACK JOT
-2356;AL # APL FUNCTIONAL SYMBOL DOWNWARDS VANE
-2357;AL # APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW
-2358;AL # APL FUNCTIONAL SYMBOL QUOTE UNDERBAR
-2359;AL # APL FUNCTIONAL SYMBOL DELTA UNDERBAR
-235A;AL # APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR
-235B;AL # APL FUNCTIONAL SYMBOL JOT UNDERBAR
-235C;AL # APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR
-235D;AL # APL FUNCTIONAL SYMBOL UP SHOE JOT
-235E;AL # APL FUNCTIONAL SYMBOL QUOTE QUAD
-235F;AL # APL FUNCTIONAL SYMBOL CIRCLE STAR
-2360;AL # APL FUNCTIONAL SYMBOL QUAD COLON
-2361;AL # APL FUNCTIONAL SYMBOL UP TACK DIAERESIS
-2362;AL # APL FUNCTIONAL SYMBOL DEL DIAERESIS
-2363;AL # APL FUNCTIONAL SYMBOL STAR DIAERESIS
-2364;AL # APL FUNCTIONAL SYMBOL JOT DIAERESIS
-2365;AL # APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS
-2366;AL # APL FUNCTIONAL SYMBOL DOWN SHOE STILE
-2367;AL # APL FUNCTIONAL SYMBOL LEFT SHOE STILE
-2368;AL # APL FUNCTIONAL SYMBOL TILDE DIAERESIS
-2369;AL # APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS
-236A;AL # APL FUNCTIONAL SYMBOL COMMA BAR
-236B;AL # APL FUNCTIONAL SYMBOL DEL TILDE
-236C;AL # APL FUNCTIONAL SYMBOL ZILDE
-236D;AL # APL FUNCTIONAL SYMBOL STILE TILDE
-236E;AL # APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR
-236F;AL # APL FUNCTIONAL SYMBOL QUAD NOT EQUAL
-2370;AL # APL FUNCTIONAL SYMBOL QUAD QUESTION
-2371;AL # APL FUNCTIONAL SYMBOL DOWN CARET TILDE
-2372;AL # APL FUNCTIONAL SYMBOL UP CARET TILDE
-2373;AL # APL FUNCTIONAL SYMBOL IOTA
-2374;AL # APL FUNCTIONAL SYMBOL RHO
-2375;AL # APL FUNCTIONAL SYMBOL OMEGA
-2376;AL # APL FUNCTIONAL SYMBOL ALPHA UNDERBAR
-2377;AL # APL FUNCTIONAL SYMBOL EPSILON UNDERBAR
-2378;AL # APL FUNCTIONAL SYMBOL IOTA UNDERBAR
-2379;AL # APL FUNCTIONAL SYMBOL OMEGA UNDERBAR
-237A;AL # APL FUNCTIONAL SYMBOL ALPHA
-237B;AL # NOT CHECK MARK
-237C;AL # RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
-237D;AL # SHOULDERED OPEN BOX
-237E;AL # BELL SYMBOL
-237F;AL # VERTICAL LINE WITH MIDDLE DOT
-2380;AL # INSERTION SYMBOL
-2381;AL # CONTINUOUS UNDERLINE SYMBOL
-2382;AL # DISCONTINUOUS UNDERLINE SYMBOL
-2383;AL # EMPHASIS SYMBOL
-2384;AL # COMPOSITION SYMBOL
-2385;AL # WHITE SQUARE WITH CENTRE VERTICAL LINE
-2386;AL # ENTER SYMBOL
-2387;AL # ALTERNATIVE KEY SYMBOL
-2388;AL # HELM SYMBOL
-2389;AL # CIRCLED HORIZONTAL BAR WITH NOTCH
-238A;AL # CIRCLED TRIANGLE DOWN
-238B;AL # BROKEN CIRCLE WITH NORTHWEST ARROW
-238C;AL # UNDO SYMBOL
-238D;AL # MONOSTABLE SYMBOL
-238E;AL # HYSTERESIS SYMBOL
-238F;AL # OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL
-2390;AL # OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL
-2391;AL # PASSIVE-PULL-DOWN-OUTPUT SYMBOL
-2392;AL # PASSIVE-PULL-UP-OUTPUT SYMBOL
-2393;AL # DIRECT CURRENT SYMBOL FORM TWO
-2394;AL # SOFTWARE-FUNCTION SYMBOL
-2395;AL # APL FUNCTIONAL SYMBOL QUAD
-2396;AL # DECIMAL SEPARATOR KEY SYMBOL
-2397;AL # PREVIOUS PAGE
-2398;AL # NEXT PAGE
-2399;AL # PRINT SCREEN SYMBOL
-239A;AL # CLEAR SCREEN SYMBOL
-239B;AL # LEFT PARENTHESIS UPPER HOOK
-239C;AL # LEFT PARENTHESIS EXTENSION
-239D;AL # LEFT PARENTHESIS LOWER HOOK
-239E;AL # RIGHT PARENTHESIS UPPER HOOK
-239F;AL # RIGHT PARENTHESIS EXTENSION
-23A0;AL # RIGHT PARENTHESIS LOWER HOOK
-23A1;AL # LEFT SQUARE BRACKET UPPER CORNER
-23A2;AL # LEFT SQUARE BRACKET EXTENSION
-23A3;AL # LEFT SQUARE BRACKET LOWER CORNER
-23A4;AL # RIGHT SQUARE BRACKET UPPER CORNER
-23A5;AL # RIGHT SQUARE BRACKET EXTENSION
-23A6;AL # RIGHT SQUARE BRACKET LOWER CORNER
-23A7;AL # LEFT CURLY BRACKET UPPER HOOK
-23A8;AL # LEFT CURLY BRACKET MIDDLE PIECE
-23A9;AL # LEFT CURLY BRACKET LOWER HOOK
-23AA;AL # CURLY BRACKET EXTENSION
-23AB;AL # RIGHT CURLY BRACKET UPPER HOOK
-23AC;AL # RIGHT CURLY BRACKET MIDDLE PIECE
-23AD;AL # RIGHT CURLY BRACKET LOWER HOOK
-23AE;AL # INTEGRAL EXTENSION
-23AF;AL # HORIZONTAL LINE EXTENSION
-23B0;AL # UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION
-23B1;AL # UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION
-23B2;AL # SUMMATION TOP
-23B3;AL # SUMMATION BOTTOM
-23B4;OP # TOP SQUARE BRACKET
-23B5;CL # BOTTOM SQUARE BRACKET
-23B6;QU # BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET
-23B7;AL # RADICAL SYMBOL BOTTOM
-23B8;AL # LEFT VERTICAL BOX LINE
-23B9;AL # RIGHT VERTICAL BOX LINE
-23BA;AL # HORIZONTAL SCAN LINE-1
-23BB;AL # HORIZONTAL SCAN LINE-3
-23BC;AL # HORIZONTAL SCAN LINE-7
-23BD;AL # HORIZONTAL SCAN LINE-9
-23BE;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT
-23BF;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT
-23C0;AL # DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE
-23C1;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE
-23C2;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE
-23C3;AL # DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE
-23C4;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE
-23C5;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE
-23C6;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE
-23C7;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE
-23C8;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE
-23C9;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL
-23CA;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL
-23CB;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT
-23CC;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT
-23CD;AL # SQUARE FOOT
-23CE;AL # RETURN SYMBOL
-23CF;AL # EJECT SYMBOL
-23D0;AL # VERTICAL LINE EXTENSION
-23D1;AL # METRICAL BREVE
-23D2;AL # METRICAL LONG OVER SHORT
-23D3;AL # METRICAL SHORT OVER LONG
-23D4;AL # METRICAL LONG OVER TWO SHORTS
-23D5;AL # METRICAL TWO SHORTS OVER LONG
-23D6;AL # METRICAL TWO SHORTS JOINED
-23D7;AL # METRICAL TRISEME
-23D8;AL # METRICAL TETRASEME
-23D9;AL # METRICAL PENTASEME
-23DA;AL # EARTH GROUND
-23DB;AL # FUSE
-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;AI # CIRCLED LATIN CAPITAL LETTER K
-24C1;AI # CIRCLED LATIN CAPITAL LETTER L
-24C2;AI # CIRCLED LATIN CAPITAL LETTER M
-24C3;AI # CIRCLED LATIN CAPITAL LETTER N
-24C4;AI # CIRCLED LATIN CAPITAL LETTER O
-24C5;AI # CIRCLED LATIN CAPITAL LETTER P
-24C6;AI # CIRCLED LATIN CAPITAL LETTER Q
-24C7;AI # CIRCLED LATIN CAPITAL LETTER R
-24C8;AI # CIRCLED LATIN CAPITAL LETTER S
-24C9;AI # CIRCLED LATIN CAPITAL LETTER T
-24CA;AI # CIRCLED LATIN CAPITAL LETTER U
-24CB;AI # CIRCLED LATIN CAPITAL LETTER V
-24CC;AI # CIRCLED LATIN CAPITAL LETTER W
-24CD;AI # CIRCLED LATIN CAPITAL LETTER X
-24CE;AI # CIRCLED LATIN CAPITAL LETTER Y
-24CF;AI # 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;AI # CIRCLED DIGIT ZERO
-24EB;AI # NEGATIVE CIRCLED NUMBER ELEVEN
-24EC;AI # NEGATIVE CIRCLED NUMBER TWELVE
-24ED;AI # NEGATIVE CIRCLED NUMBER THIRTEEN
-24EE;AI # NEGATIVE CIRCLED NUMBER FOURTEEN
-24EF;AI # NEGATIVE CIRCLED NUMBER FIFTEEN
-24F0;AI # NEGATIVE CIRCLED NUMBER SIXTEEN
-24F1;AI # NEGATIVE CIRCLED NUMBER SEVENTEEN
-24F2;AI # NEGATIVE CIRCLED NUMBER EIGHTEEN
-24F3;AI # NEGATIVE CIRCLED NUMBER NINETEEN
-24F4;AI # NEGATIVE CIRCLED NUMBER TWENTY
-24F5;AI # DOUBLE CIRCLED DIGIT ONE
-24F6;AI # DOUBLE CIRCLED DIGIT TWO
-24F7;AI # DOUBLE CIRCLED DIGIT THREE
-24F8;AI # DOUBLE CIRCLED DIGIT FOUR
-24F9;AI # DOUBLE CIRCLED DIGIT FIVE
-24FA;AI # DOUBLE CIRCLED DIGIT SIX
-24FB;AI # DOUBLE CIRCLED DIGIT SEVEN
-24FC;AI # DOUBLE CIRCLED DIGIT EIGHT
-24FD;AI # DOUBLE CIRCLED DIGIT NINE
-24FE;AI # DOUBLE CIRCLED NUMBER TEN
-24FF;AL # NEGATIVE 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
-2596;AL # QUADRANT LOWER LEFT
-2597;AL # QUADRANT LOWER RIGHT
-2598;AL # QUADRANT UPPER LEFT
-2599;AL # QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT
-259A;AL # QUADRANT UPPER LEFT AND LOWER RIGHT
-259B;AL # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT
-259C;AL # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT
-259D;AL # QUADRANT UPPER RIGHT
-259E;AL # QUADRANT UPPER RIGHT AND LOWER LEFT
-259F;AL # QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT
-25A0;AI # BLACK SQUARE
-25A1;AI # WHITE SQUARE
-25A2;AL # WHITE SQUARE WITH ROUNDED CORNERS
-25A3;AI # WHITE SQUARE CONTAINING BLACK SMALL SQUARE
-25A4;AI # SQUARE WITH HORIZONTAL FILL
-25A5;AI # SQUARE WITH VERTICAL FILL
-25A6;AI # SQUARE WITH ORTHOGONAL CROSSHATCH FILL
-25A7;AI # SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL
-25A8;AI # SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL
-25A9;AI # SQUARE WITH DIAGONAL CROSSHATCH FILL
-25AA;AL # BLACK SMALL SQUARE
-25AB;AL # WHITE SMALL SQUARE
-25AC;AL # BLACK RECTANGLE
-25AD;AL # WHITE RECTANGLE
-25AE;AL # BLACK VERTICAL RECTANGLE
-25AF;AL # WHITE VERTICAL RECTANGLE
-25B0;AL # BLACK PARALLELOGRAM
-25B1;AL # WHITE PARALLELOGRAM
-25B2;AI # BLACK UP-POINTING TRIANGLE
-25B3;AI # WHITE UP-POINTING TRIANGLE
-25B4;AL # BLACK UP-POINTING SMALL TRIANGLE
-25B5;AL # WHITE UP-POINTING SMALL TRIANGLE
-25B6;AI # BLACK RIGHT-POINTING TRIANGLE
-25B7;AI # WHITE RIGHT-POINTING TRIANGLE
-25B8;AL # BLACK RIGHT-POINTING SMALL TRIANGLE
-25B9;AL # WHITE RIGHT-POINTING SMALL TRIANGLE
-25BA;AL # BLACK RIGHT-POINTING POINTER
-25BB;AL # WHITE RIGHT-POINTING POINTER
-25BC;AI # BLACK DOWN-POINTING TRIANGLE
-25BD;AI # WHITE DOWN-POINTING TRIANGLE
-25BE;AL # BLACK DOWN-POINTING SMALL TRIANGLE
-25BF;AL # WHITE DOWN-POINTING SMALL TRIANGLE
-25C0;AI # BLACK LEFT-POINTING TRIANGLE
-25C1;AI # WHITE LEFT-POINTING TRIANGLE
-25C2;AL # BLACK LEFT-POINTING SMALL TRIANGLE
-25C3;AL # WHITE LEFT-POINTING SMALL TRIANGLE
-25C4;AL # BLACK LEFT-POINTING POINTER
-25C5;AL # WHITE LEFT-POINTING POINTER
-25C6;AI # BLACK DIAMOND
-25C7;AI # WHITE DIAMOND
-25C8;AI # WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND
-25C9;AL # FISHEYE
-25CA;AL # LOZENGE
-25CB;AI # WHITE CIRCLE
-25CC;AL # DOTTED CIRCLE
-25CD;AL # CIRCLE WITH VERTICAL FILL
-25CE;AI # BULLSEYE
-25CF;AI # BLACK CIRCLE
-25D0;AI # CIRCLE WITH LEFT HALF BLACK
-25D1;AI # CIRCLE WITH RIGHT HALF BLACK
-25D2;AL # CIRCLE WITH LOWER HALF BLACK
-25D3;AL # CIRCLE WITH UPPER HALF BLACK
-25D4;AL # CIRCLE WITH UPPER RIGHT QUADRANT BLACK
-25D5;AL # CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK
-25D6;AL # LEFT HALF BLACK CIRCLE
-25D7;AL # RIGHT HALF BLACK CIRCLE
-25D8;AL # INVERSE BULLET
-25D9;AL # INVERSE WHITE CIRCLE
-25DA;AL # UPPER HALF INVERSE WHITE CIRCLE
-25DB;AL # LOWER HALF INVERSE WHITE CIRCLE
-25DC;AL # UPPER LEFT QUADRANT CIRCULAR ARC
-25DD;AL # UPPER RIGHT QUADRANT CIRCULAR ARC
-25DE;AL # LOWER RIGHT QUADRANT CIRCULAR ARC
-25DF;AL # LOWER LEFT QUADRANT CIRCULAR ARC
-25E0;AL # UPPER HALF CIRCLE
-25E1;AL # LOWER HALF CIRCLE
-25E2;AI # BLACK LOWER RIGHT TRIANGLE
-25E3;AI # BLACK LOWER LEFT TRIANGLE
-25E4;AI # BLACK UPPER LEFT TRIANGLE
-25E5;AI # BLACK UPPER RIGHT TRIANGLE
-25E6;AL # WHITE BULLET
-25E7;AL # SQUARE WITH LEFT HALF BLACK
-25E8;AL # SQUARE WITH RIGHT HALF BLACK
-25E9;AL # SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK
-25EA;AL # SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK
-25EB;AL # WHITE SQUARE WITH VERTICAL BISECTING LINE
-25EC;AL # WHITE UP-POINTING TRIANGLE WITH DOT
-25ED;AL # UP-POINTING TRIANGLE WITH LEFT HALF BLACK
-25EE;AL # UP-POINTING TRIANGLE WITH RIGHT HALF BLACK
-25EF;AI # LARGE CIRCLE
-25F0;AL # WHITE SQUARE WITH UPPER LEFT QUADRANT
-25F1;AL # WHITE SQUARE WITH LOWER LEFT QUADRANT
-25F2;AL # WHITE SQUARE WITH LOWER RIGHT QUADRANT
-25F3;AL # WHITE SQUARE WITH UPPER RIGHT QUADRANT
-25F4;AL # WHITE CIRCLE WITH UPPER LEFT QUADRANT
-25F5;AL # WHITE CIRCLE WITH LOWER LEFT QUADRANT
-25F6;AL # WHITE CIRCLE WITH LOWER RIGHT QUADRANT
-25F7;AL # WHITE CIRCLE WITH UPPER RIGHT QUADRANT
-25F8;AL # UPPER LEFT TRIANGLE
-25F9;AL # UPPER RIGHT TRIANGLE
-25FA;AL # LOWER LEFT TRIANGLE
-25FB;AL # WHITE MEDIUM SQUARE
-25FC;AL # BLACK MEDIUM SQUARE
-25FD;AL # WHITE MEDIUM SMALL SQUARE
-25FE;AL # BLACK MEDIUM SMALL SQUARE
-25FF;AL # LOWER RIGHT TRIANGLE
-2600;AL # BLACK SUN WITH RAYS
-2601;AL # CLOUD
-2602;AL # UMBRELLA
-2603;AL # SNOWMAN
-2604;AL # COMET
-2605;AI # BLACK STAR
-2606;AI # WHITE STAR
-2607;AL # LIGHTNING
-2608;AL # THUNDERSTORM
-2609;AI # SUN
-260A;AL # ASCENDING NODE
-260B;AL # DESCENDING NODE
-260C;AL # CONJUNCTION
-260D;AL # OPPOSITION
-260E;AI # BLACK TELEPHONE
-260F;AI # WHITE TELEPHONE
-2610;AL # BALLOT BOX
-2611;AL # BALLOT BOX WITH CHECK
-2612;AL # BALLOT BOX WITH X
-2613;AL # SALTIRE
-2614;AI # UMBRELLA WITH RAIN DROPS
-2615;AI # HOT BEVERAGE
-2616;AI # WHITE SHOGI PIECE
-2617;AI # BLACK SHOGI PIECE
-2618;AL # SHAMROCK
-2619;AL # REVERSED ROTATED FLORAL HEART BULLET
-261A;AL # BLACK LEFT POINTING INDEX
-261B;AL # BLACK RIGHT POINTING INDEX
-261C;AI # WHITE LEFT POINTING INDEX
-261D;AL # WHITE UP POINTING INDEX
-261E;AI # WHITE RIGHT POINTING INDEX
-261F;AL # WHITE DOWN POINTING INDEX
-2620;AL # SKULL AND CROSSBONES
-2621;AL # CAUTION SIGN
-2622;AL # RADIOACTIVE SIGN
-2623;AL # BIOHAZARD SIGN
-2624;AL # CADUCEUS
-2625;AL # ANKH
-2626;AL # ORTHODOX CROSS
-2627;AL # CHI RHO
-2628;AL # CROSS OF LORRAINE
-2629;AL # CROSS OF JERUSALEM
-262A;AL # STAR AND CRESCENT
-262B;AL # FARSI SYMBOL
-262C;AL # ADI SHAKTI
-262D;AL # HAMMER AND SICKLE
-262E;AL # PEACE SYMBOL
-262F;AL # YIN YANG
-2630;AL # TRIGRAM FOR HEAVEN
-2631;AL # TRIGRAM FOR LAKE
-2632;AL # TRIGRAM FOR FIRE
-2633;AL # TRIGRAM FOR THUNDER
-2634;AL # TRIGRAM FOR WIND
-2635;AL # TRIGRAM FOR WATER
-2636;AL # TRIGRAM FOR MOUNTAIN
-2637;AL # TRIGRAM FOR EARTH
-2638;AL # WHEEL OF DHARMA
-2639;AL # WHITE FROWNING FACE
-263A;AL # WHITE SMILING FACE
-263B;AL # BLACK SMILING FACE
-263C;AL # WHITE SUN WITH RAYS
-263D;AL # FIRST QUARTER MOON
-263E;AL # LAST QUARTER MOON
-263F;AL # MERCURY
-2640;AI # FEMALE SIGN
-2641;AL # EARTH
-2642;AI # MALE SIGN
-2643;AL # JUPITER
-2644;AL # SATURN
-2645;AL # URANUS
-2646;AL # NEPTUNE
-2647;AL # PLUTO
-2648;AL # ARIES
-2649;AL # TAURUS
-264A;AL # GEMINI
-264B;AL # CANCER
-264C;AL # LEO
-264D;AL # VIRGO
-264E;AL # LIBRA
-264F;AL # SCORPIUS
-2650;AL # SAGITTARIUS
-2651;AL # CAPRICORN
-2652;AL # AQUARIUS
-2653;AL # PISCES
-2654;AL # WHITE CHESS KING
-2655;AL # WHITE CHESS QUEEN
-2656;AL # WHITE CHESS ROOK
-2657;AL # WHITE CHESS BISHOP
-2658;AL # WHITE CHESS KNIGHT
-2659;AL # WHITE CHESS PAWN
-265A;AL # BLACK CHESS KING
-265B;AL # BLACK CHESS QUEEN
-265C;AL # BLACK CHESS ROOK
-265D;AL # BLACK CHESS BISHOP
-265E;AL # BLACK CHESS KNIGHT
-265F;AL # BLACK CHESS PAWN
-2660;AI # BLACK SPADE SUIT
-2661;AI # WHITE HEART SUIT
-2662;AL # WHITE DIAMOND SUIT
-2663;AI # BLACK CLUB SUIT
-2664;AI # WHITE SPADE SUIT
-2665;AI # BLACK HEART SUIT
-2666;AL # BLACK DIAMOND SUIT
-2667;AI # WHITE CLUB SUIT
-2668;AI # HOT SPRINGS
-2669;AI # QUARTER NOTE
-266A;AI # EIGHTH NOTE
-266B;AL # BEAMED EIGHTH NOTES
-266C;AI # BEAMED SIXTEENTH NOTES
-266D;AI # MUSIC FLAT SIGN
-266E;AL # MUSIC NATURAL SIGN
-266F;AI # MUSIC SHARP SIGN
-2670;AL # WEST SYRIAC CROSS
-2671;AL # EAST SYRIAC CROSS
-2672;AL # UNIVERSAL RECYCLING SYMBOL
-2673;AL # RECYCLING SYMBOL FOR TYPE-1 PLASTICS
-2674;AL # RECYCLING SYMBOL FOR TYPE-2 PLASTICS
-2675;AL # RECYCLING SYMBOL FOR TYPE-3 PLASTICS
-2676;AL # RECYCLING SYMBOL FOR TYPE-4 PLASTICS
-2677;AL # RECYCLING SYMBOL FOR TYPE-5 PLASTICS
-2678;AL # RECYCLING SYMBOL FOR TYPE-6 PLASTICS
-2679;AL # RECYCLING SYMBOL FOR TYPE-7 PLASTICS
-267A;AL # RECYCLING SYMBOL FOR GENERIC MATERIALS
-267B;AL # BLACK UNIVERSAL RECYCLING SYMBOL
-267C;AL # RECYCLED PAPER SYMBOL
-267D;AL # PARTIALLY-RECYCLED PAPER SYMBOL
-267E;AL # PERMANENT PAPER SIGN
-267F;AL # WHEELCHAIR SYMBOL
-2680;AL # DIE FACE-1
-2681;AL # DIE FACE-2
-2682;AL # DIE FACE-3
-2683;AL # DIE FACE-4
-2684;AL # DIE FACE-5
-2685;AL # DIE FACE-6
-2686;AL # WHITE CIRCLE WITH DOT RIGHT
-2687;AL # WHITE CIRCLE WITH TWO DOTS
-2688;AL # BLACK CIRCLE WITH WHITE DOT RIGHT
-2689;AL # BLACK CIRCLE WITH TWO WHITE DOTS
-268A;AL # MONOGRAM FOR YANG
-268B;AL # MONOGRAM FOR YIN
-268C;AL # DIGRAM FOR GREATER YANG
-268D;AL # DIGRAM FOR LESSER YIN
-268E;AL # DIGRAM FOR LESSER YANG
-268F;AL # DIGRAM FOR GREATER YIN
-2690;AL # WHITE FLAG
-2691;AL # BLACK FLAG
-2692;AL # HAMMER AND PICK
-2693;AL # ANCHOR
-2694;AL # CROSSED SWORDS
-2695;AL # STAFF OF AESCULAPIUS
-2696;AL # SCALES
-2697;AL # ALEMBIC
-2698;AL # FLOWER
-2699;AL # GEAR
-269A;AL # STAFF OF HERMES
-269B;AL # ATOM SYMBOL
-269C;AL # FLEUR-DE-LIS
-26A0;AL # WARNING SIGN
-26A1;AL # HIGH VOLTAGE SIGN
-26A2;AL # DOUBLED FEMALE SIGN
-26A3;AL # DOUBLED MALE SIGN
-26A4;AL # INTERLOCKED FEMALE AND MALE SIGN
-26A5;AL # MALE AND FEMALE SIGN
-26A6;AL # MALE WITH STROKE SIGN
-26A7;AL # MALE WITH STROKE AND MALE AND FEMALE SIGN
-26A8;AL # VERTICAL MALE WITH STROKE SIGN
-26A9;AL # HORIZONTAL MALE WITH STROKE SIGN
-26AA;AL # MEDIUM WHITE CIRCLE
-26AB;AL # MEDIUM BLACK CIRCLE
-26AC;AL # MEDIUM SMALL WHITE CIRCLE
-26AD;AL # MARRIAGE SYMBOL
-26AE;AL # DIVORCE SYMBOL
-26AF;AL # UNMARRIED PARTNERSHIP SYMBOL
-26B0;AL # COFFIN
-26B1;AL # FUNERAL URN
-2701;AL # UPPER BLADE SCISSORS
-2702;AL # BLACK SCISSORS
-2703;AL # LOWER BLADE SCISSORS
-2704;AL # WHITE SCISSORS
-2706;AL # TELEPHONE LOCATION SIGN
-2707;AL # TAPE DRIVE
-2708;AL # AIRPLANE
-2709;AL # ENVELOPE
-270C;AL # VICTORY HAND
-270D;AL # WRITING HAND
-270E;AL # LOWER RIGHT PENCIL
-270F;AL # PENCIL
-2710;AL # UPPER RIGHT PENCIL
-2711;AL # WHITE NIB
-2712;AL # BLACK NIB
-2713;AL # CHECK MARK
-2714;AL # HEAVY CHECK MARK
-2715;AL # MULTIPLICATION X
-2716;AL # HEAVY MULTIPLICATION X
-2717;AL # BALLOT X
-2718;AL # HEAVY BALLOT X
-2719;AL # OUTLINED GREEK CROSS
-271A;AL # HEAVY GREEK CROSS
-271B;AL # OPEN CENTRE CROSS
-271C;AL # HEAVY OPEN CENTRE CROSS
-271D;AL # LATIN CROSS
-271E;AL # SHADOWED WHITE LATIN CROSS
-271F;AL # OUTLINED LATIN CROSS
-2720;AL # MALTESE CROSS
-2721;AL # STAR OF DAVID
-2722;AL # FOUR TEARDROP-SPOKED ASTERISK
-2723;AL # FOUR BALLOON-SPOKED ASTERISK
-2724;AL # HEAVY FOUR BALLOON-SPOKED ASTERISK
-2725;AL # FOUR CLUB-SPOKED ASTERISK
-2726;AL # BLACK FOUR POINTED STAR
-2727;AL # WHITE FOUR POINTED STAR
-2729;AL # STRESS OUTLINED WHITE STAR
-272A;AL # CIRCLED WHITE STAR
-272B;AL # OPEN CENTRE BLACK STAR
-272C;AL # BLACK CENTRE WHITE STAR
-272D;AL # OUTLINED BLACK STAR
-272E;AL # HEAVY OUTLINED BLACK STAR
-272F;AL # PINWHEEL STAR
-2730;AL # SHADOWED WHITE STAR
-2731;AL # HEAVY ASTERISK
-2732;AL # OPEN CENTRE ASTERISK
-2733;AL # EIGHT SPOKED ASTERISK
-2734;AL # EIGHT POINTED BLACK STAR
-2735;AL # EIGHT POINTED PINWHEEL STAR
-2736;AL # SIX POINTED BLACK STAR
-2737;AL # EIGHT POINTED RECTILINEAR BLACK STAR
-2738;AL # HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
-2739;AL # TWELVE POINTED BLACK STAR
-273A;AL # SIXTEEN POINTED ASTERISK
-273B;AL # TEARDROP-SPOKED ASTERISK
-273C;AL # OPEN CENTRE TEARDROP-SPOKED ASTERISK
-273D;AL # HEAVY TEARDROP-SPOKED ASTERISK
-273E;AL # SIX PETALLED BLACK AND WHITE FLORETTE
-273F;AL # BLACK FLORETTE
-2740;AL # WHITE FLORETTE
-2741;AL # EIGHT PETALLED OUTLINED BLACK FLORETTE
-2742;AL # CIRCLED OPEN CENTRE EIGHT POINTED STAR
-2743;AL # HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
-2744;AL # SNOWFLAKE
-2745;AL # TIGHT TRIFOLIATE SNOWFLAKE
-2746;AL # HEAVY CHEVRON SNOWFLAKE
-2747;AL # SPARKLE
-2748;AL # HEAVY SPARKLE
-2749;AL # BALLOON-SPOKED ASTERISK
-274A;AL # EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
-274B;AL # HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
-274D;AL # SHADOWED WHITE CIRCLE
-274F;AL # LOWER RIGHT DROP-SHADOWED WHITE SQUARE
-2750;AL # UPPER RIGHT DROP-SHADOWED WHITE SQUARE
-2751;AL # LOWER RIGHT SHADOWED WHITE SQUARE
-2752;AL # UPPER RIGHT SHADOWED WHITE SQUARE
-2756;AL # BLACK DIAMOND MINUS WHITE X
-2758;AL # LIGHT VERTICAL BAR
-2759;AL # MEDIUM VERTICAL BAR
-275A;AL # HEAVY VERTICAL BAR
-275B;QU # HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT
-275C;QU # HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT
-275D;QU # HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
-275E;QU # HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
-2761;AL # CURVED STEM PARAGRAPH SIGN ORNAMENT
-2762;EX # HEAVY EXCLAMATION MARK ORNAMENT
-2763;EX # HEAVY HEART EXCLAMATION MARK ORNAMENT
-2764;AL # HEAVY BLACK HEART
-2765;AL # ROTATED HEAVY BLACK HEART BULLET
-2766;AL # FLORAL HEART
-2767;AL # ROTATED FLORAL HEART BULLET
-2768;OP # MEDIUM LEFT PARENTHESIS ORNAMENT
-2769;CL # MEDIUM RIGHT PARENTHESIS ORNAMENT
-276A;OP # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
-276B;CL # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
-276C;OP # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
-276D;CL # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
-276E;OP # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
-276F;CL # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
-2770;OP # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
-2771;CL # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
-2772;OP # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
-2773;CL # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
-2774;OP # MEDIUM LEFT CURLY BRACKET ORNAMENT
-2775;CL # MEDIUM RIGHT CURLY BRACKET ORNAMENT
-2776;AI # DINGBAT NEGATIVE CIRCLED DIGIT ONE
-2777;AI # DINGBAT NEGATIVE CIRCLED DIGIT TWO
-2778;AI # DINGBAT NEGATIVE CIRCLED DIGIT THREE
-2779;AI # DINGBAT NEGATIVE CIRCLED DIGIT FOUR
-277A;AI # DINGBAT NEGATIVE CIRCLED DIGIT FIVE
-277B;AI # DINGBAT NEGATIVE CIRCLED DIGIT SIX
-277C;AI # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
-277D;AI # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
-277E;AI # DINGBAT NEGATIVE CIRCLED DIGIT NINE
-277F;AI # DINGBAT NEGATIVE CIRCLED NUMBER TEN
-2780;AI # DINGBAT CIRCLED SANS-SERIF DIGIT ONE
-2781;AI # DINGBAT CIRCLED SANS-SERIF DIGIT TWO
-2782;AI # DINGBAT CIRCLED SANS-SERIF DIGIT THREE
-2783;AI # DINGBAT CIRCLED SANS-SERIF DIGIT FOUR
-2784;AI # DINGBAT CIRCLED SANS-SERIF DIGIT FIVE
-2785;AI # DINGBAT CIRCLED SANS-SERIF DIGIT SIX
-2786;AI # DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN
-2787;AI # DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT
-2788;AI # DINGBAT CIRCLED SANS-SERIF DIGIT NINE
-2789;AI # DINGBAT CIRCLED SANS-SERIF NUMBER TEN
-278A;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE
-278B;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO
-278C;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE
-278D;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR
-278E;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE
-278F;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX
-2790;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN
-2791;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT
-2792;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE
-2793;AI # 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
-27C0;AL # THREE DIMENSIONAL ANGLE
-27C1;AL # WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE
-27C2;AL # PERPENDICULAR
-27C3;AL # OPEN SUBSET
-27C4;AL # OPEN SUPERSET
-27C5;OP # LEFT S-SHAPED BAG DELIMITER
-27C6;CL # RIGHT S-SHAPED BAG DELIMITER
-27D0;AL # WHITE DIAMOND WITH CENTRED DOT
-27D1;AL # AND WITH DOT
-27D2;AL # ELEMENT OF OPENING UPWARDS
-27D3;AL # LOWER RIGHT CORNER WITH DOT
-27D4;AL # UPPER LEFT CORNER WITH DOT
-27D5;AL # LEFT OUTER JOIN
-27D6;AL # RIGHT OUTER JOIN
-27D7;AL # FULL OUTER JOIN
-27D8;AL # LARGE UP TACK
-27D9;AL # LARGE DOWN TACK
-27DA;AL # LEFT AND RIGHT DOUBLE TURNSTILE
-27DB;AL # LEFT AND RIGHT TACK
-27DC;AL # LEFT MULTIMAP
-27DD;AL # LONG RIGHT TACK
-27DE;AL # LONG LEFT TACK
-27DF;AL # UP TACK WITH CIRCLE ABOVE
-27E0;AL # LOZENGE DIVIDED BY HORIZONTAL RULE
-27E1;AL # WHITE CONCAVE-SIDED DIAMOND
-27E2;AL # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK
-27E3;AL # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK
-27E4;AL # WHITE SQUARE WITH LEFTWARDS TICK
-27E5;AL # WHITE SQUARE WITH RIGHTWARDS TICK
-27E6;OP # MATHEMATICAL LEFT WHITE SQUARE BRACKET
-27E7;CL # MATHEMATICAL RIGHT WHITE SQUARE BRACKET
-27E8;OP # MATHEMATICAL LEFT ANGLE BRACKET
-27E9;CL # MATHEMATICAL RIGHT ANGLE BRACKET
-27EA;OP # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
-27EB;CL # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
-27F0;AL # UPWARDS QUADRUPLE ARROW
-27F1;AL # DOWNWARDS QUADRUPLE ARROW
-27F2;AL # ANTICLOCKWISE GAPPED CIRCLE ARROW
-27F3;AL # CLOCKWISE GAPPED CIRCLE ARROW
-27F4;AL # RIGHT ARROW WITH CIRCLED PLUS
-27F5;AL # LONG LEFTWARDS ARROW
-27F6;AL # LONG RIGHTWARDS ARROW
-27F7;AL # LONG LEFT RIGHT ARROW
-27F8;AL # LONG LEFTWARDS DOUBLE ARROW
-27F9;AL # LONG RIGHTWARDS DOUBLE ARROW
-27FA;AL # LONG LEFT RIGHT DOUBLE ARROW
-27FB;AL # LONG LEFTWARDS ARROW FROM BAR
-27FC;AL # LONG RIGHTWARDS ARROW FROM BAR
-27FD;AL # LONG LEFTWARDS DOUBLE ARROW FROM BAR
-27FE;AL # LONG RIGHTWARDS DOUBLE ARROW FROM BAR
-27FF;AL # LONG RIGHTWARDS SQUIGGLE ARROW
-2800;AL # BRAILLE PATTERN BLANK
-2801;AL # BRAILLE PATTERN DOTS-1
-2802;AL # BRAILLE PATTERN DOTS-2
-2803;AL # BRAILLE PATTERN DOTS-12
-2804;AL # BRAILLE PATTERN DOTS-3
-2805;AL # BRAILLE PATTERN DOTS-13
-2806;AL # BRAILLE PATTERN DOTS-23
-2807;AL # BRAILLE PATTERN DOTS-123
-2808;AL # BRAILLE PATTERN DOTS-4
-2809;AL # BRAILLE PATTERN DOTS-14
-280A;AL # BRAILLE PATTERN DOTS-24
-280B;AL # BRAILLE PATTERN DOTS-124
-280C;AL # BRAILLE PATTERN DOTS-34
-280D;AL # BRAILLE PATTERN DOTS-134
-280E;AL # BRAILLE PATTERN DOTS-234
-280F;AL # BRAILLE PATTERN DOTS-1234
-2810;AL # BRAILLE PATTERN DOTS-5
-2811;AL # BRAILLE PATTERN DOTS-15
-2812;AL # BRAILLE PATTERN DOTS-25
-2813;AL # BRAILLE PATTERN DOTS-125
-2814;AL # BRAILLE PATTERN DOTS-35
-2815;AL # BRAILLE PATTERN DOTS-135
-2816;AL # BRAILLE PATTERN DOTS-235
-2817;AL # BRAILLE PATTERN DOTS-1235
-2818;AL # BRAILLE PATTERN DOTS-45
-2819;AL # BRAILLE PATTERN DOTS-145
-281A;AL # BRAILLE PATTERN DOTS-245
-281B;AL # BRAILLE PATTERN DOTS-1245
-281C;AL # BRAILLE PATTERN DOTS-345
-281D;AL # BRAILLE PATTERN DOTS-1345
-281E;AL # BRAILLE PATTERN DOTS-2345
-281F;AL # BRAILLE PATTERN DOTS-12345
-2820;AL # BRAILLE PATTERN DOTS-6
-2821;AL # BRAILLE PATTERN DOTS-16
-2822;AL # BRAILLE PATTERN DOTS-26
-2823;AL # BRAILLE PATTERN DOTS-126
-2824;AL # BRAILLE PATTERN DOTS-36
-2825;AL # BRAILLE PATTERN DOTS-136
-2826;AL # BRAILLE PATTERN DOTS-236
-2827;AL # BRAILLE PATTERN DOTS-1236
-2828;AL # BRAILLE PATTERN DOTS-46
-2829;AL # BRAILLE PATTERN DOTS-146
-282A;AL # BRAILLE PATTERN DOTS-246
-282B;AL # BRAILLE PATTERN DOTS-1246
-282C;AL # BRAILLE PATTERN DOTS-346
-282D;AL # BRAILLE PATTERN DOTS-1346
-282E;AL # BRAILLE PATTERN DOTS-2346
-282F;AL # BRAILLE PATTERN DOTS-12346
-2830;AL # BRAILLE PATTERN DOTS-56
-2831;AL # BRAILLE PATTERN DOTS-156
-2832;AL # BRAILLE PATTERN DOTS-256
-2833;AL # BRAILLE PATTERN DOTS-1256
-2834;AL # BRAILLE PATTERN DOTS-356
-2835;AL # BRAILLE PATTERN DOTS-1356
-2836;AL # BRAILLE PATTERN DOTS-2356
-2837;AL # BRAILLE PATTERN DOTS-12356
-2838;AL # BRAILLE PATTERN DOTS-456
-2839;AL # BRAILLE PATTERN DOTS-1456
-283A;AL # BRAILLE PATTERN DOTS-2456
-283B;AL # BRAILLE PATTERN DOTS-12456
-283C;AL # BRAILLE PATTERN DOTS-3456
-283D;AL # BRAILLE PATTERN DOTS-13456
-283E;AL # BRAILLE PATTERN DOTS-23456
-283F;AL # BRAILLE PATTERN DOTS-123456
-2840;AL # BRAILLE PATTERN DOTS-7
-2841;AL # BRAILLE PATTERN DOTS-17
-2842;AL # BRAILLE PATTERN DOTS-27
-2843;AL # BRAILLE PATTERN DOTS-127
-2844;AL # BRAILLE PATTERN DOTS-37
-2845;AL # BRAILLE PATTERN DOTS-137
-2846;AL # BRAILLE PATTERN DOTS-237
-2847;AL # BRAILLE PATTERN DOTS-1237
-2848;AL # BRAILLE PATTERN DOTS-47
-2849;AL # BRAILLE PATTERN DOTS-147
-284A;AL # BRAILLE PATTERN DOTS-247
-284B;AL # BRAILLE PATTERN DOTS-1247
-284C;AL # BRAILLE PATTERN DOTS-347
-284D;AL # BRAILLE PATTERN DOTS-1347
-284E;AL # BRAILLE PATTERN DOTS-2347
-284F;AL # BRAILLE PATTERN DOTS-12347
-2850;AL # BRAILLE PATTERN DOTS-57
-2851;AL # BRAILLE PATTERN DOTS-157
-2852;AL # BRAILLE PATTERN DOTS-257
-2853;AL # BRAILLE PATTERN DOTS-1257
-2854;AL # BRAILLE PATTERN DOTS-357
-2855;AL # BRAILLE PATTERN DOTS-1357
-2856;AL # BRAILLE PATTERN DOTS-2357
-2857;AL # BRAILLE PATTERN DOTS-12357
-2858;AL # BRAILLE PATTERN DOTS-457
-2859;AL # BRAILLE PATTERN DOTS-1457
-285A;AL # BRAILLE PATTERN DOTS-2457
-285B;AL # BRAILLE PATTERN DOTS-12457
-285C;AL # BRAILLE PATTERN DOTS-3457
-285D;AL # BRAILLE PATTERN DOTS-13457
-285E;AL # BRAILLE PATTERN DOTS-23457
-285F;AL # BRAILLE PATTERN DOTS-123457
-2860;AL # BRAILLE PATTERN DOTS-67
-2861;AL # BRAILLE PATTERN DOTS-167
-2862;AL # BRAILLE PATTERN DOTS-267
-2863;AL # BRAILLE PATTERN DOTS-1267
-2864;AL # BRAILLE PATTERN DOTS-367
-2865;AL # BRAILLE PATTERN DOTS-1367
-2866;AL # BRAILLE PATTERN DOTS-2367
-2867;AL # BRAILLE PATTERN DOTS-12367
-2868;AL # BRAILLE PATTERN DOTS-467
-2869;AL # BRAILLE PATTERN DOTS-1467
-286A;AL # BRAILLE PATTERN DOTS-2467
-286B;AL # BRAILLE PATTERN DOTS-12467
-286C;AL # BRAILLE PATTERN DOTS-3467
-286D;AL # BRAILLE PATTERN DOTS-13467
-286E;AL # BRAILLE PATTERN DOTS-23467
-286F;AL # BRAILLE PATTERN DOTS-123467
-2870;AL # BRAILLE PATTERN DOTS-567
-2871;AL # BRAILLE PATTERN DOTS-1567
-2872;AL # BRAILLE PATTERN DOTS-2567
-2873;AL # BRAILLE PATTERN DOTS-12567
-2874;AL # BRAILLE PATTERN DOTS-3567
-2875;AL # BRAILLE PATTERN DOTS-13567
-2876;AL # BRAILLE PATTERN DOTS-23567
-2877;AL # BRAILLE PATTERN DOTS-123567
-2878;AL # BRAILLE PATTERN DOTS-4567
-2879;AL # BRAILLE PATTERN DOTS-14567
-287A;AL # BRAILLE PATTERN DOTS-24567
-287B;AL # BRAILLE PATTERN DOTS-124567
-287C;AL # BRAILLE PATTERN DOTS-34567
-287D;AL # BRAILLE PATTERN DOTS-134567
-287E;AL # BRAILLE PATTERN DOTS-234567
-287F;AL # BRAILLE PATTERN DOTS-1234567
-2880;AL # BRAILLE PATTERN DOTS-8
-2881;AL # BRAILLE PATTERN DOTS-18
-2882;AL # BRAILLE PATTERN DOTS-28
-2883;AL # BRAILLE PATTERN DOTS-128
-2884;AL # BRAILLE PATTERN DOTS-38
-2885;AL # BRAILLE PATTERN DOTS-138
-2886;AL # BRAILLE PATTERN DOTS-238
-2887;AL # BRAILLE PATTERN DOTS-1238
-2888;AL # BRAILLE PATTERN DOTS-48
-2889;AL # BRAILLE PATTERN DOTS-148
-288A;AL # BRAILLE PATTERN DOTS-248
-288B;AL # BRAILLE PATTERN DOTS-1248
-288C;AL # BRAILLE PATTERN DOTS-348
-288D;AL # BRAILLE PATTERN DOTS-1348
-288E;AL # BRAILLE PATTERN DOTS-2348
-288F;AL # BRAILLE PATTERN DOTS-12348
-2890;AL # BRAILLE PATTERN DOTS-58
-2891;AL # BRAILLE PATTERN DOTS-158
-2892;AL # BRAILLE PATTERN DOTS-258
-2893;AL # BRAILLE PATTERN DOTS-1258
-2894;AL # BRAILLE PATTERN DOTS-358
-2895;AL # BRAILLE PATTERN DOTS-1358
-2896;AL # BRAILLE PATTERN DOTS-2358
-2897;AL # BRAILLE PATTERN DOTS-12358
-2898;AL # BRAILLE PATTERN DOTS-458
-2899;AL # BRAILLE PATTERN DOTS-1458
-289A;AL # BRAILLE PATTERN DOTS-2458
-289B;AL # BRAILLE PATTERN DOTS-12458
-289C;AL # BRAILLE PATTERN DOTS-3458
-289D;AL # BRAILLE PATTERN DOTS-13458
-289E;AL # BRAILLE PATTERN DOTS-23458
-289F;AL # BRAILLE PATTERN DOTS-123458
-28A0;AL # BRAILLE PATTERN DOTS-68
-28A1;AL # BRAILLE PATTERN DOTS-168
-28A2;AL # BRAILLE PATTERN DOTS-268
-28A3;AL # BRAILLE PATTERN DOTS-1268
-28A4;AL # BRAILLE PATTERN DOTS-368
-28A5;AL # BRAILLE PATTERN DOTS-1368
-28A6;AL # BRAILLE PATTERN DOTS-2368
-28A7;AL # BRAILLE PATTERN DOTS-12368
-28A8;AL # BRAILLE PATTERN DOTS-468
-28A9;AL # BRAILLE PATTERN DOTS-1468
-28AA;AL # BRAILLE PATTERN DOTS-2468
-28AB;AL # BRAILLE PATTERN DOTS-12468
-28AC;AL # BRAILLE PATTERN DOTS-3468
-28AD;AL # BRAILLE PATTERN DOTS-13468
-28AE;AL # BRAILLE PATTERN DOTS-23468
-28AF;AL # BRAILLE PATTERN DOTS-123468
-28B0;AL # BRAILLE PATTERN DOTS-568
-28B1;AL # BRAILLE PATTERN DOTS-1568
-28B2;AL # BRAILLE PATTERN DOTS-2568
-28B3;AL # BRAILLE PATTERN DOTS-12568
-28B4;AL # BRAILLE PATTERN DOTS-3568
-28B5;AL # BRAILLE PATTERN DOTS-13568
-28B6;AL # BRAILLE PATTERN DOTS-23568
-28B7;AL # BRAILLE PATTERN DOTS-123568
-28B8;AL # BRAILLE PATTERN DOTS-4568
-28B9;AL # BRAILLE PATTERN DOTS-14568
-28BA;AL # BRAILLE PATTERN DOTS-24568
-28BB;AL # BRAILLE PATTERN DOTS-124568
-28BC;AL # BRAILLE PATTERN DOTS-34568
-28BD;AL # BRAILLE PATTERN DOTS-134568
-28BE;AL # BRAILLE PATTERN DOTS-234568
-28BF;AL # BRAILLE PATTERN DOTS-1234568
-28C0;AL # BRAILLE PATTERN DOTS-78
-28C1;AL # BRAILLE PATTERN DOTS-178
-28C2;AL # BRAILLE PATTERN DOTS-278
-28C3;AL # BRAILLE PATTERN DOTS-1278
-28C4;AL # BRAILLE PATTERN DOTS-378
-28C5;AL # BRAILLE PATTERN DOTS-1378
-28C6;AL # BRAILLE PATTERN DOTS-2378
-28C7;AL # BRAILLE PATTERN DOTS-12378
-28C8;AL # BRAILLE PATTERN DOTS-478
-28C9;AL # BRAILLE PATTERN DOTS-1478
-28CA;AL # BRAILLE PATTERN DOTS-2478
-28CB;AL # BRAILLE PATTERN DOTS-12478
-28CC;AL # BRAILLE PATTERN DOTS-3478
-28CD;AL # BRAILLE PATTERN DOTS-13478
-28CE;AL # BRAILLE PATTERN DOTS-23478
-28CF;AL # BRAILLE PATTERN DOTS-123478
-28D0;AL # BRAILLE PATTERN DOTS-578
-28D1;AL # BRAILLE PATTERN DOTS-1578
-28D2;AL # BRAILLE PATTERN DOTS-2578
-28D3;AL # BRAILLE PATTERN DOTS-12578
-28D4;AL # BRAILLE PATTERN DOTS-3578
-28D5;AL # BRAILLE PATTERN DOTS-13578
-28D6;AL # BRAILLE PATTERN DOTS-23578
-28D7;AL # BRAILLE PATTERN DOTS-123578
-28D8;AL # BRAILLE PATTERN DOTS-4578
-28D9;AL # BRAILLE PATTERN DOTS-14578
-28DA;AL # BRAILLE PATTERN DOTS-24578
-28DB;AL # BRAILLE PATTERN DOTS-124578
-28DC;AL # BRAILLE PATTERN DOTS-34578
-28DD;AL # BRAILLE PATTERN DOTS-134578
-28DE;AL # BRAILLE PATTERN DOTS-234578
-28DF;AL # BRAILLE PATTERN DOTS-1234578
-28E0;AL # BRAILLE PATTERN DOTS-678
-28E1;AL # BRAILLE PATTERN DOTS-1678
-28E2;AL # BRAILLE PATTERN DOTS-2678
-28E3;AL # BRAILLE PATTERN DOTS-12678
-28E4;AL # BRAILLE PATTERN DOTS-3678
-28E5;AL # BRAILLE PATTERN DOTS-13678
-28E6;AL # BRAILLE PATTERN DOTS-23678
-28E7;AL # BRAILLE PATTERN DOTS-123678
-28E8;AL # BRAILLE PATTERN DOTS-4678
-28E9;AL # BRAILLE PATTERN DOTS-14678
-28EA;AL # BRAILLE PATTERN DOTS-24678
-28EB;AL # BRAILLE PATTERN DOTS-124678
-28EC;AL # BRAILLE PATTERN DOTS-34678
-28ED;AL # BRAILLE PATTERN DOTS-134678
-28EE;AL # BRAILLE PATTERN DOTS-234678
-28EF;AL # BRAILLE PATTERN DOTS-1234678
-28F0;AL # BRAILLE PATTERN DOTS-5678
-28F1;AL # BRAILLE PATTERN DOTS-15678
-28F2;AL # BRAILLE PATTERN DOTS-25678
-28F3;AL # BRAILLE PATTERN DOTS-125678
-28F4;AL # BRAILLE PATTERN DOTS-35678
-28F5;AL # BRAILLE PATTERN DOTS-135678
-28F6;AL # BRAILLE PATTERN DOTS-235678
-28F7;AL # BRAILLE PATTERN DOTS-1235678
-28F8;AL # BRAILLE PATTERN DOTS-45678
-28F9;AL # BRAILLE PATTERN DOTS-145678
-28FA;AL # BRAILLE PATTERN DOTS-245678
-28FB;AL # BRAILLE PATTERN DOTS-1245678
-28FC;AL # BRAILLE PATTERN DOTS-345678
-28FD;AL # BRAILLE PATTERN DOTS-1345678
-28FE;AL # BRAILLE PATTERN DOTS-2345678
-28FF;AL # BRAILLE PATTERN DOTS-12345678
-2900;AL # RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
-2901;AL # RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE
-2902;AL # LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE
-2903;AL # RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE
-2904;AL # LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE
-2905;AL # RIGHTWARDS TWO-HEADED ARROW FROM BAR
-2906;AL # LEFTWARDS DOUBLE ARROW FROM BAR
-2907;AL # RIGHTWARDS DOUBLE ARROW FROM BAR
-2908;AL # DOWNWARDS ARROW WITH HORIZONTAL STROKE
-2909;AL # UPWARDS ARROW WITH HORIZONTAL STROKE
-290A;AL # UPWARDS TRIPLE ARROW
-290B;AL # DOWNWARDS TRIPLE ARROW
-290C;AL # LEFTWARDS DOUBLE DASH ARROW
-290D;AL # RIGHTWARDS DOUBLE DASH ARROW
-290E;AL # LEFTWARDS TRIPLE DASH ARROW
-290F;AL # RIGHTWARDS TRIPLE DASH ARROW
-2910;AL # RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW
-2911;AL # RIGHTWARDS ARROW WITH DOTTED STEM
-2912;AL # UPWARDS ARROW TO BAR
-2913;AL # DOWNWARDS ARROW TO BAR
-2914;AL # RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE
-2915;AL # RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
-2916;AL # RIGHTWARDS TWO-HEADED ARROW WITH TAIL
-2917;AL # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE
-2918;AL # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
-2919;AL # LEFTWARDS ARROW-TAIL
-291A;AL # RIGHTWARDS ARROW-TAIL
-291B;AL # LEFTWARDS DOUBLE ARROW-TAIL
-291C;AL # RIGHTWARDS DOUBLE ARROW-TAIL
-291D;AL # LEFTWARDS ARROW TO BLACK DIAMOND
-291E;AL # RIGHTWARDS ARROW TO BLACK DIAMOND
-291F;AL # LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND
-2920;AL # RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND
-2921;AL # NORTH WEST AND SOUTH EAST ARROW
-2922;AL # NORTH EAST AND SOUTH WEST ARROW
-2923;AL # NORTH WEST ARROW WITH HOOK
-2924;AL # NORTH EAST ARROW WITH HOOK
-2925;AL # SOUTH EAST ARROW WITH HOOK
-2926;AL # SOUTH WEST ARROW WITH HOOK
-2927;AL # NORTH WEST ARROW AND NORTH EAST ARROW
-2928;AL # NORTH EAST ARROW AND SOUTH EAST ARROW
-2929;AL # SOUTH EAST ARROW AND SOUTH WEST ARROW
-292A;AL # SOUTH WEST ARROW AND NORTH WEST ARROW
-292B;AL # RISING DIAGONAL CROSSING FALLING DIAGONAL
-292C;AL # FALLING DIAGONAL CROSSING RISING DIAGONAL
-292D;AL # SOUTH EAST ARROW CROSSING NORTH EAST ARROW
-292E;AL # NORTH EAST ARROW CROSSING SOUTH EAST ARROW
-292F;AL # FALLING DIAGONAL CROSSING NORTH EAST ARROW
-2930;AL # RISING DIAGONAL CROSSING SOUTH EAST ARROW
-2931;AL # NORTH EAST ARROW CROSSING NORTH WEST ARROW
-2932;AL # NORTH WEST ARROW CROSSING NORTH EAST ARROW
-2933;AL # WAVE ARROW POINTING DIRECTLY RIGHT
-2934;AL # ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS
-2935;AL # ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS
-2936;AL # ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS
-2937;AL # ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS
-2938;AL # RIGHT-SIDE ARC CLOCKWISE ARROW
-2939;AL # LEFT-SIDE ARC ANTICLOCKWISE ARROW
-293A;AL # TOP ARC ANTICLOCKWISE ARROW
-293B;AL # BOTTOM ARC ANTICLOCKWISE ARROW
-293C;AL # TOP ARC CLOCKWISE ARROW WITH MINUS
-293D;AL # TOP ARC ANTICLOCKWISE ARROW WITH PLUS
-293E;AL # LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW
-293F;AL # LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW
-2940;AL # ANTICLOCKWISE CLOSED CIRCLE ARROW
-2941;AL # CLOCKWISE CLOSED CIRCLE ARROW
-2942;AL # RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW
-2943;AL # LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW
-2944;AL # SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW
-2945;AL # RIGHTWARDS ARROW WITH PLUS BELOW
-2946;AL # LEFTWARDS ARROW WITH PLUS BELOW
-2947;AL # RIGHTWARDS ARROW THROUGH X
-2948;AL # LEFT RIGHT ARROW THROUGH SMALL CIRCLE
-2949;AL # UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE
-294A;AL # LEFT BARB UP RIGHT BARB DOWN HARPOON
-294B;AL # LEFT BARB DOWN RIGHT BARB UP HARPOON
-294C;AL # UP BARB RIGHT DOWN BARB LEFT HARPOON
-294D;AL # UP BARB LEFT DOWN BARB RIGHT HARPOON
-294E;AL # LEFT BARB UP RIGHT BARB UP HARPOON
-294F;AL # UP BARB RIGHT DOWN BARB RIGHT HARPOON
-2950;AL # LEFT BARB DOWN RIGHT BARB DOWN HARPOON
-2951;AL # UP BARB LEFT DOWN BARB LEFT HARPOON
-2952;AL # LEFTWARDS HARPOON WITH BARB UP TO BAR
-2953;AL # RIGHTWARDS HARPOON WITH BARB UP TO BAR
-2954;AL # UPWARDS HARPOON WITH BARB RIGHT TO BAR
-2955;AL # DOWNWARDS HARPOON WITH BARB RIGHT TO BAR
-2956;AL # LEFTWARDS HARPOON WITH BARB DOWN TO BAR
-2957;AL # RIGHTWARDS HARPOON WITH BARB DOWN TO BAR
-2958;AL # UPWARDS HARPOON WITH BARB LEFT TO BAR
-2959;AL # DOWNWARDS HARPOON WITH BARB LEFT TO BAR
-295A;AL # LEFTWARDS HARPOON WITH BARB UP FROM BAR
-295B;AL # RIGHTWARDS HARPOON WITH BARB UP FROM BAR
-295C;AL # UPWARDS HARPOON WITH BARB RIGHT FROM BAR
-295D;AL # DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR
-295E;AL # LEFTWARDS HARPOON WITH BARB DOWN FROM BAR
-295F;AL # RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR
-2960;AL # UPWARDS HARPOON WITH BARB LEFT FROM BAR
-2961;AL # DOWNWARDS HARPOON WITH BARB LEFT FROM BAR
-2962;AL # LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN
-2963;AL # UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
-2964;AL # RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
-2965;AL # DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
-2966;AL # LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP
-2967;AL # LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
-2968;AL # RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP
-2969;AL # RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN
-296A;AL # LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
-296B;AL # LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
-296C;AL # RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
-296D;AL # RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
-296E;AL # UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
-296F;AL # DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
-2970;AL # RIGHT DOUBLE ARROW WITH ROUNDED HEAD
-2971;AL # EQUALS SIGN ABOVE RIGHTWARDS ARROW
-2972;AL # TILDE OPERATOR ABOVE RIGHTWARDS ARROW
-2973;AL # LEFTWARDS ARROW ABOVE TILDE OPERATOR
-2974;AL # RIGHTWARDS ARROW ABOVE TILDE OPERATOR
-2975;AL # RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO
-2976;AL # LESS-THAN ABOVE LEFTWARDS ARROW
-2977;AL # LEFTWARDS ARROW THROUGH LESS-THAN
-2978;AL # GREATER-THAN ABOVE RIGHTWARDS ARROW
-2979;AL # SUBSET ABOVE RIGHTWARDS ARROW
-297A;AL # LEFTWARDS ARROW THROUGH SUBSET
-297B;AL # SUPERSET ABOVE LEFTWARDS ARROW
-297C;AL # LEFT FISH TAIL
-297D;AL # RIGHT FISH TAIL
-297E;AL # UP FISH TAIL
-297F;AL # DOWN FISH TAIL
-2980;AL # TRIPLE VERTICAL BAR DELIMITER
-2981;AL # Z NOTATION SPOT
-2982;AL # Z NOTATION TYPE COLON
-2983;OP # LEFT WHITE CURLY BRACKET
-2984;CL # RIGHT WHITE CURLY BRACKET
-2985;OP # LEFT WHITE PARENTHESIS
-2986;CL # RIGHT WHITE PARENTHESIS
-2987;OP # Z NOTATION LEFT IMAGE BRACKET
-2988;CL # Z NOTATION RIGHT IMAGE BRACKET
-2989;OP # Z NOTATION LEFT BINDING BRACKET
-298A;CL # Z NOTATION RIGHT BINDING BRACKET
-298B;OP # LEFT SQUARE BRACKET WITH UNDERBAR
-298C;CL # RIGHT SQUARE BRACKET WITH UNDERBAR
-298D;OP # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
-298E;CL # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-298F;OP # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-2990;CL # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
-2991;OP # LEFT ANGLE BRACKET WITH DOT
-2992;CL # RIGHT ANGLE BRACKET WITH DOT
-2993;OP # LEFT ARC LESS-THAN BRACKET
-2994;CL # RIGHT ARC GREATER-THAN BRACKET
-2995;OP # DOUBLE LEFT ARC GREATER-THAN BRACKET
-2996;CL # DOUBLE RIGHT ARC LESS-THAN BRACKET
-2997;OP # LEFT BLACK TORTOISE SHELL BRACKET
-2998;CL # RIGHT BLACK TORTOISE SHELL BRACKET
-2999;AL # DOTTED FENCE
-299A;AL # VERTICAL ZIGZAG LINE
-299B;AL # MEASURED ANGLE OPENING LEFT
-299C;AL # RIGHT ANGLE VARIANT WITH SQUARE
-299D;AL # MEASURED RIGHT ANGLE WITH DOT
-299E;AL # ANGLE WITH S INSIDE
-299F;AL # ACUTE ANGLE
-29A0;AL # SPHERICAL ANGLE OPENING LEFT
-29A1;AL # SPHERICAL ANGLE OPENING UP
-29A2;AL # TURNED ANGLE
-29A3;AL # REVERSED ANGLE
-29A4;AL # ANGLE WITH UNDERBAR
-29A5;AL # REVERSED ANGLE WITH UNDERBAR
-29A6;AL # OBLIQUE ANGLE OPENING UP
-29A7;AL # OBLIQUE ANGLE OPENING DOWN
-29A8;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT
-29A9;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT
-29AA;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT
-29AB;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT
-29AC;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP
-29AD;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP
-29AE;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN
-29AF;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN
-29B0;AL # REVERSED EMPTY SET
-29B1;AL # EMPTY SET WITH OVERBAR
-29B2;AL # EMPTY SET WITH SMALL CIRCLE ABOVE
-29B3;AL # EMPTY SET WITH RIGHT ARROW ABOVE
-29B4;AL # EMPTY SET WITH LEFT ARROW ABOVE
-29B5;AL # CIRCLE WITH HORIZONTAL BAR
-29B6;AL # CIRCLED VERTICAL BAR
-29B7;AL # CIRCLED PARALLEL
-29B8;AL # CIRCLED REVERSE SOLIDUS
-29B9;AL # CIRCLED PERPENDICULAR
-29BA;AL # CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR
-29BB;AL # CIRCLE WITH SUPERIMPOSED X
-29BC;AL # CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN
-29BD;AL # UP ARROW THROUGH CIRCLE
-29BE;AL # CIRCLED WHITE BULLET
-29BF;AL # CIRCLED BULLET
-29C0;AL # CIRCLED LESS-THAN
-29C1;AL # CIRCLED GREATER-THAN
-29C2;AL # CIRCLE WITH SMALL CIRCLE TO THE RIGHT
-29C3;AL # CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT
-29C4;AL # SQUARED RISING DIAGONAL SLASH
-29C5;AL # SQUARED FALLING DIAGONAL SLASH
-29C6;AL # SQUARED ASTERISK
-29C7;AL # SQUARED SMALL CIRCLE
-29C8;AL # SQUARED SQUARE
-29C9;AL # TWO JOINED SQUARES
-29CA;AL # TRIANGLE WITH DOT ABOVE
-29CB;AL # TRIANGLE WITH UNDERBAR
-29CC;AL # S IN TRIANGLE
-29CD;AL # TRIANGLE WITH SERIFS AT BOTTOM
-29CE;AL # RIGHT TRIANGLE ABOVE LEFT TRIANGLE
-29CF;AL # LEFT TRIANGLE BESIDE VERTICAL BAR
-29D0;AL # VERTICAL BAR BESIDE RIGHT TRIANGLE
-29D1;AL # BOWTIE WITH LEFT HALF BLACK
-29D2;AL # BOWTIE WITH RIGHT HALF BLACK
-29D3;AL # BLACK BOWTIE
-29D4;AL # TIMES WITH LEFT HALF BLACK
-29D5;AL # TIMES WITH RIGHT HALF BLACK
-29D6;AL # WHITE HOURGLASS
-29D7;AL # BLACK HOURGLASS
-29D8;OP # LEFT WIGGLY FENCE
-29D9;CL # RIGHT WIGGLY FENCE
-29DA;OP # LEFT DOUBLE WIGGLY FENCE
-29DB;CL # RIGHT DOUBLE WIGGLY FENCE
-29DC;AL # INCOMPLETE INFINITY
-29DD;AL # TIE OVER INFINITY
-29DE;AL # INFINITY NEGATED WITH VERTICAL BAR
-29DF;AL # DOUBLE-ENDED MULTIMAP
-29E0;AL # SQUARE WITH CONTOURED OUTLINE
-29E1;AL # INCREASES AS
-29E2;AL # SHUFFLE PRODUCT
-29E3;AL # EQUALS SIGN AND SLANTED PARALLEL
-29E4;AL # EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE
-29E5;AL # IDENTICAL TO AND SLANTED PARALLEL
-29E6;AL # GLEICH STARK
-29E7;AL # THERMODYNAMIC
-29E8;AL # DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK
-29E9;AL # DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK
-29EA;AL # BLACK DIAMOND WITH DOWN ARROW
-29EB;AL # BLACK LOZENGE
-29EC;AL # WHITE CIRCLE WITH DOWN ARROW
-29ED;AL # BLACK CIRCLE WITH DOWN ARROW
-29EE;AL # ERROR-BARRED WHITE SQUARE
-29EF;AL # ERROR-BARRED BLACK SQUARE
-29F0;AL # ERROR-BARRED WHITE DIAMOND
-29F1;AL # ERROR-BARRED BLACK DIAMOND
-29F2;AL # ERROR-BARRED WHITE CIRCLE
-29F3;AL # ERROR-BARRED BLACK CIRCLE
-29F4;AL # RULE-DELAYED
-29F5;AL # REVERSE SOLIDUS OPERATOR
-29F6;AL # SOLIDUS WITH OVERBAR
-29F7;AL # REVERSE SOLIDUS WITH HORIZONTAL STROKE
-29F8;AL # BIG SOLIDUS
-29F9;AL # BIG REVERSE SOLIDUS
-29FA;AL # DOUBLE PLUS
-29FB;AL # TRIPLE PLUS
-29FC;OP # LEFT-POINTING CURVED ANGLE BRACKET
-29FD;CL # RIGHT-POINTING CURVED ANGLE BRACKET
-29FE;AL # TINY
-29FF;AL # MINY
-2A00;AL # N-ARY CIRCLED DOT OPERATOR
-2A01;AL # N-ARY CIRCLED PLUS OPERATOR
-2A02;AL # N-ARY CIRCLED TIMES OPERATOR
-2A03;AL # N-ARY UNION OPERATOR WITH DOT
-2A04;AL # N-ARY UNION OPERATOR WITH PLUS
-2A05;AL # N-ARY SQUARE INTERSECTION OPERATOR
-2A06;AL # N-ARY SQUARE UNION OPERATOR
-2A07;AL # TWO LOGICAL AND OPERATOR
-2A08;AL # TWO LOGICAL OR OPERATOR
-2A09;AL # N-ARY TIMES OPERATOR
-2A0A;AL # MODULO TWO SUM
-2A0B;AL # SUMMATION WITH INTEGRAL
-2A0C;AL # QUADRUPLE INTEGRAL OPERATOR
-2A0D;AL # FINITE PART INTEGRAL
-2A0E;AL # INTEGRAL WITH DOUBLE STROKE
-2A0F;AL # INTEGRAL AVERAGE WITH SLASH
-2A10;AL # CIRCULATION FUNCTION
-2A11;AL # ANTICLOCKWISE INTEGRATION
-2A12;AL # LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE
-2A13;AL # LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE
-2A14;AL # LINE INTEGRATION NOT INCLUDING THE POLE
-2A15;AL # INTEGRAL AROUND A POINT OPERATOR
-2A16;AL # QUATERNION INTEGRAL OPERATOR
-2A17;AL # INTEGRAL WITH LEFTWARDS ARROW WITH HOOK
-2A18;AL # INTEGRAL WITH TIMES SIGN
-2A19;AL # INTEGRAL WITH INTERSECTION
-2A1A;AL # INTEGRAL WITH UNION
-2A1B;AL # INTEGRAL WITH OVERBAR
-2A1C;AL # INTEGRAL WITH UNDERBAR
-2A1D;AL # JOIN
-2A1E;AL # LARGE LEFT TRIANGLE OPERATOR
-2A1F;AL # Z NOTATION SCHEMA COMPOSITION
-2A20;AL # Z NOTATION SCHEMA PIPING
-2A21;AL # Z NOTATION SCHEMA PROJECTION
-2A22;AL # PLUS SIGN WITH SMALL CIRCLE ABOVE
-2A23;AL # PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE
-2A24;AL # PLUS SIGN WITH TILDE ABOVE
-2A25;AL # PLUS SIGN WITH DOT BELOW
-2A26;AL # PLUS SIGN WITH TILDE BELOW
-2A27;AL # PLUS SIGN WITH SUBSCRIPT TWO
-2A28;AL # PLUS SIGN WITH BLACK TRIANGLE
-2A29;AL # MINUS SIGN WITH COMMA ABOVE
-2A2A;AL # MINUS SIGN WITH DOT BELOW
-2A2B;AL # MINUS SIGN WITH FALLING DOTS
-2A2C;AL # MINUS SIGN WITH RISING DOTS
-2A2D;AL # PLUS SIGN IN LEFT HALF CIRCLE
-2A2E;AL # PLUS SIGN IN RIGHT HALF CIRCLE
-2A2F;AL # VECTOR OR CROSS PRODUCT
-2A30;AL # MULTIPLICATION SIGN WITH DOT ABOVE
-2A31;AL # MULTIPLICATION SIGN WITH UNDERBAR
-2A32;AL # SEMIDIRECT PRODUCT WITH BOTTOM CLOSED
-2A33;AL # SMASH PRODUCT
-2A34;AL # MULTIPLICATION SIGN IN LEFT HALF CIRCLE
-2A35;AL # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE
-2A36;AL # CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT
-2A37;AL # MULTIPLICATION SIGN IN DOUBLE CIRCLE
-2A38;AL # CIRCLED DIVISION SIGN
-2A39;AL # PLUS SIGN IN TRIANGLE
-2A3A;AL # MINUS SIGN IN TRIANGLE
-2A3B;AL # MULTIPLICATION SIGN IN TRIANGLE
-2A3C;AL # INTERIOR PRODUCT
-2A3D;AL # RIGHTHAND INTERIOR PRODUCT
-2A3E;AL # Z NOTATION RELATIONAL COMPOSITION
-2A3F;AL # AMALGAMATION OR COPRODUCT
-2A40;AL # INTERSECTION WITH DOT
-2A41;AL # UNION WITH MINUS SIGN
-2A42;AL # UNION WITH OVERBAR
-2A43;AL # INTERSECTION WITH OVERBAR
-2A44;AL # INTERSECTION WITH LOGICAL AND
-2A45;AL # UNION WITH LOGICAL OR
-2A46;AL # UNION ABOVE INTERSECTION
-2A47;AL # INTERSECTION ABOVE UNION
-2A48;AL # UNION ABOVE BAR ABOVE INTERSECTION
-2A49;AL # INTERSECTION ABOVE BAR ABOVE UNION
-2A4A;AL # UNION BESIDE AND JOINED WITH UNION
-2A4B;AL # INTERSECTION BESIDE AND JOINED WITH INTERSECTION
-2A4C;AL # CLOSED UNION WITH SERIFS
-2A4D;AL # CLOSED INTERSECTION WITH SERIFS
-2A4E;AL # DOUBLE SQUARE INTERSECTION
-2A4F;AL # DOUBLE SQUARE UNION
-2A50;AL # CLOSED UNION WITH SERIFS AND SMASH PRODUCT
-2A51;AL # LOGICAL AND WITH DOT ABOVE
-2A52;AL # LOGICAL OR WITH DOT ABOVE
-2A53;AL # DOUBLE LOGICAL AND
-2A54;AL # DOUBLE LOGICAL OR
-2A55;AL # TWO INTERSECTING LOGICAL AND
-2A56;AL # TWO INTERSECTING LOGICAL OR
-2A57;AL # SLOPING LARGE OR
-2A58;AL # SLOPING LARGE AND
-2A59;AL # LOGICAL OR OVERLAPPING LOGICAL AND
-2A5A;AL # LOGICAL AND WITH MIDDLE STEM
-2A5B;AL # LOGICAL OR WITH MIDDLE STEM
-2A5C;AL # LOGICAL AND WITH HORIZONTAL DASH
-2A5D;AL # LOGICAL OR WITH HORIZONTAL DASH
-2A5E;AL # LOGICAL AND WITH DOUBLE OVERBAR
-2A5F;AL # LOGICAL AND WITH UNDERBAR
-2A60;AL # LOGICAL AND WITH DOUBLE UNDERBAR
-2A61;AL # SMALL VEE WITH UNDERBAR
-2A62;AL # LOGICAL OR WITH DOUBLE OVERBAR
-2A63;AL # LOGICAL OR WITH DOUBLE UNDERBAR
-2A64;AL # Z NOTATION DOMAIN ANTIRESTRICTION
-2A65;AL # Z NOTATION RANGE ANTIRESTRICTION
-2A66;AL # EQUALS SIGN WITH DOT BELOW
-2A67;AL # IDENTICAL WITH DOT ABOVE
-2A68;AL # TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE
-2A69;AL # TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE
-2A6A;AL # TILDE OPERATOR WITH DOT ABOVE
-2A6B;AL # TILDE OPERATOR WITH RISING DOTS
-2A6C;AL # SIMILAR MINUS SIMILAR
-2A6D;AL # CONGRUENT WITH DOT ABOVE
-2A6E;AL # EQUALS WITH ASTERISK
-2A6F;AL # ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT
-2A70;AL # APPROXIMATELY EQUAL OR EQUAL TO
-2A71;AL # EQUALS SIGN ABOVE PLUS SIGN
-2A72;AL # PLUS SIGN ABOVE EQUALS SIGN
-2A73;AL # EQUALS SIGN ABOVE TILDE OPERATOR
-2A74;AL # DOUBLE COLON EQUAL
-2A75;AL # TWO CONSECUTIVE EQUALS SIGNS
-2A76;AL # THREE CONSECUTIVE EQUALS SIGNS
-2A77;AL # EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW
-2A78;AL # EQUIVALENT WITH FOUR DOTS ABOVE
-2A79;AL # LESS-THAN WITH CIRCLE INSIDE
-2A7A;AL # GREATER-THAN WITH CIRCLE INSIDE
-2A7B;AL # LESS-THAN WITH QUESTION MARK ABOVE
-2A7C;AL # GREATER-THAN WITH QUESTION MARK ABOVE
-2A7D;AL # LESS-THAN OR SLANTED EQUAL TO
-2A7E;AL # GREATER-THAN OR SLANTED EQUAL TO
-2A7F;AL # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
-2A80;AL # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
-2A81;AL # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
-2A82;AL # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
-2A83;AL # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT
-2A84;AL # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT
-2A85;AL # LESS-THAN OR APPROXIMATE
-2A86;AL # GREATER-THAN OR APPROXIMATE
-2A87;AL # LESS-THAN AND SINGLE-LINE NOT EQUAL TO
-2A88;AL # GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
-2A89;AL # LESS-THAN AND NOT APPROXIMATE
-2A8A;AL # GREATER-THAN AND NOT APPROXIMATE
-2A8B;AL # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
-2A8C;AL # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
-2A8D;AL # LESS-THAN ABOVE SIMILAR OR EQUAL
-2A8E;AL # GREATER-THAN ABOVE SIMILAR OR EQUAL
-2A8F;AL # LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN
-2A90;AL # GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN
-2A91;AL # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL
-2A92;AL # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL
-2A93;AL # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL
-2A94;AL # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL
-2A95;AL # SLANTED EQUAL TO OR LESS-THAN
-2A96;AL # SLANTED EQUAL TO OR GREATER-THAN
-2A97;AL # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE
-2A98;AL # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE
-2A99;AL # DOUBLE-LINE EQUAL TO OR LESS-THAN
-2A9A;AL # DOUBLE-LINE EQUAL TO OR GREATER-THAN
-2A9B;AL # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN
-2A9C;AL # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN
-2A9D;AL # SIMILAR OR LESS-THAN
-2A9E;AL # SIMILAR OR GREATER-THAN
-2A9F;AL # SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN
-2AA0;AL # SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN
-2AA1;AL # DOUBLE NESTED LESS-THAN
-2AA2;AL # DOUBLE NESTED GREATER-THAN
-2AA3;AL # DOUBLE NESTED LESS-THAN WITH UNDERBAR
-2AA4;AL # GREATER-THAN OVERLAPPING LESS-THAN
-2AA5;AL # GREATER-THAN BESIDE LESS-THAN
-2AA6;AL # LESS-THAN CLOSED BY CURVE
-2AA7;AL # GREATER-THAN CLOSED BY CURVE
-2AA8;AL # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
-2AA9;AL # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
-2AAA;AL # SMALLER THAN
-2AAB;AL # LARGER THAN
-2AAC;AL # SMALLER THAN OR EQUAL TO
-2AAD;AL # LARGER THAN OR EQUAL TO
-2AAE;AL # EQUALS SIGN WITH BUMPY ABOVE
-2AAF;AL # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
-2AB0;AL # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
-2AB1;AL # PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO
-2AB2;AL # SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO
-2AB3;AL # PRECEDES ABOVE EQUALS SIGN
-2AB4;AL # SUCCEEDS ABOVE EQUALS SIGN
-2AB5;AL # PRECEDES ABOVE NOT EQUAL TO
-2AB6;AL # SUCCEEDS ABOVE NOT EQUAL TO
-2AB7;AL # PRECEDES ABOVE ALMOST EQUAL TO
-2AB8;AL # SUCCEEDS ABOVE ALMOST EQUAL TO
-2AB9;AL # PRECEDES ABOVE NOT ALMOST EQUAL TO
-2ABA;AL # SUCCEEDS ABOVE NOT ALMOST EQUAL TO
-2ABB;AL # DOUBLE PRECEDES
-2ABC;AL # DOUBLE SUCCEEDS
-2ABD;AL # SUBSET WITH DOT
-2ABE;AL # SUPERSET WITH DOT
-2ABF;AL # SUBSET WITH PLUS SIGN BELOW
-2AC0;AL # SUPERSET WITH PLUS SIGN BELOW
-2AC1;AL # SUBSET WITH MULTIPLICATION SIGN BELOW
-2AC2;AL # SUPERSET WITH MULTIPLICATION SIGN BELOW
-2AC3;AL # SUBSET OF OR EQUAL TO WITH DOT ABOVE
-2AC4;AL # SUPERSET OF OR EQUAL TO WITH DOT ABOVE
-2AC5;AL # SUBSET OF ABOVE EQUALS SIGN
-2AC6;AL # SUPERSET OF ABOVE EQUALS SIGN
-2AC7;AL # SUBSET OF ABOVE TILDE OPERATOR
-2AC8;AL # SUPERSET OF ABOVE TILDE OPERATOR
-2AC9;AL # SUBSET OF ABOVE ALMOST EQUAL TO
-2ACA;AL # SUPERSET OF ABOVE ALMOST EQUAL TO
-2ACB;AL # SUBSET OF ABOVE NOT EQUAL TO
-2ACC;AL # SUPERSET OF ABOVE NOT EQUAL TO
-2ACD;AL # SQUARE LEFT OPEN BOX OPERATOR
-2ACE;AL # SQUARE RIGHT OPEN BOX OPERATOR
-2ACF;AL # CLOSED SUBSET
-2AD0;AL # CLOSED SUPERSET
-2AD1;AL # CLOSED SUBSET OR EQUAL TO
-2AD2;AL # CLOSED SUPERSET OR EQUAL TO
-2AD3;AL # SUBSET ABOVE SUPERSET
-2AD4;AL # SUPERSET ABOVE SUBSET
-2AD5;AL # SUBSET ABOVE SUBSET
-2AD6;AL # SUPERSET ABOVE SUPERSET
-2AD7;AL # SUPERSET BESIDE SUBSET
-2AD8;AL # SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET
-2AD9;AL # ELEMENT OF OPENING DOWNWARDS
-2ADA;AL # PITCHFORK WITH TEE TOP
-2ADB;AL # TRANSVERSAL INTERSECTION
-2ADC;AL # FORKING
-2ADD;AL # NONFORKING
-2ADE;AL # SHORT LEFT TACK
-2ADF;AL # SHORT DOWN TACK
-2AE0;AL # SHORT UP TACK
-2AE1;AL # PERPENDICULAR WITH S
-2AE2;AL # VERTICAL BAR TRIPLE RIGHT TURNSTILE
-2AE3;AL # DOUBLE VERTICAL BAR LEFT TURNSTILE
-2AE4;AL # VERTICAL BAR DOUBLE LEFT TURNSTILE
-2AE5;AL # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE
-2AE6;AL # LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL
-2AE7;AL # SHORT DOWN TACK WITH OVERBAR
-2AE8;AL # SHORT UP TACK WITH UNDERBAR
-2AE9;AL # SHORT UP TACK ABOVE SHORT DOWN TACK
-2AEA;AL # DOUBLE DOWN TACK
-2AEB;AL # DOUBLE UP TACK
-2AEC;AL # DOUBLE STROKE NOT SIGN
-2AED;AL # REVERSED DOUBLE STROKE NOT SIGN
-2AEE;AL # DOES NOT DIVIDE WITH REVERSED NEGATION SLASH
-2AEF;AL # VERTICAL LINE WITH CIRCLE ABOVE
-2AF0;AL # VERTICAL LINE WITH CIRCLE BELOW
-2AF1;AL # DOWN TACK WITH CIRCLE BELOW
-2AF2;AL # PARALLEL WITH HORIZONTAL STROKE
-2AF3;AL # PARALLEL WITH TILDE OPERATOR
-2AF4;AL # TRIPLE VERTICAL BAR BINARY RELATION
-2AF5;AL # TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE
-2AF6;AL # TRIPLE COLON OPERATOR
-2AF7;AL # TRIPLE NESTED LESS-THAN
-2AF8;AL # TRIPLE NESTED GREATER-THAN
-2AF9;AL # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO
-2AFA;AL # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO
-2AFB;AL # TRIPLE SOLIDUS BINARY RELATION
-2AFC;AL # LARGE TRIPLE VERTICAL BAR OPERATOR
-2AFD;AL # DOUBLE SOLIDUS OPERATOR
-2AFE;AL # WHITE VERTICAL BAR
-2AFF;AL # N-ARY WHITE VERTICAL BAR
-2B00;AL # NORTH EAST WHITE ARROW
-2B01;AL # NORTH WEST WHITE ARROW
-2B02;AL # SOUTH EAST WHITE ARROW
-2B03;AL # SOUTH WEST WHITE ARROW
-2B04;AL # LEFT RIGHT WHITE ARROW
-2B05;AL # LEFTWARDS BLACK ARROW
-2B06;AL # UPWARDS BLACK ARROW
-2B07;AL # DOWNWARDS BLACK ARROW
-2B08;AL # NORTH EAST BLACK ARROW
-2B09;AL # NORTH WEST BLACK ARROW
-2B0A;AL # SOUTH EAST BLACK ARROW
-2B0B;AL # SOUTH WEST BLACK ARROW
-2B0C;AL # LEFT RIGHT BLACK ARROW
-2B0D;AL # UP DOWN BLACK ARROW
-2B0E;AL # RIGHTWARDS ARROW WITH TIP DOWNWARDS
-2B0F;AL # RIGHTWARDS ARROW WITH TIP UPWARDS
-2B10;AL # LEFTWARDS ARROW WITH TIP DOWNWARDS
-2B11;AL # LEFTWARDS ARROW WITH TIP UPWARDS
-2B12;AL # SQUARE WITH TOP HALF BLACK
-2B13;AL # SQUARE WITH BOTTOM HALF BLACK
-2C00;AL # GLAGOLITIC CAPITAL LETTER AZU
-2C01;AL # GLAGOLITIC CAPITAL LETTER BUKY
-2C02;AL # GLAGOLITIC CAPITAL LETTER VEDE
-2C03;AL # GLAGOLITIC CAPITAL LETTER GLAGOLI
-2C04;AL # GLAGOLITIC CAPITAL LETTER DOBRO
-2C05;AL # GLAGOLITIC CAPITAL LETTER YESTU
-2C06;AL # GLAGOLITIC CAPITAL LETTER ZHIVETE
-2C07;AL # GLAGOLITIC CAPITAL LETTER DZELO
-2C08;AL # GLAGOLITIC CAPITAL LETTER ZEMLJA
-2C09;AL # GLAGOLITIC CAPITAL LETTER IZHE
-2C0A;AL # GLAGOLITIC CAPITAL LETTER INITIAL IZHE
-2C0B;AL # GLAGOLITIC CAPITAL LETTER I
-2C0C;AL # GLAGOLITIC CAPITAL LETTER DJERVI
-2C0D;AL # GLAGOLITIC CAPITAL LETTER KAKO
-2C0E;AL # GLAGOLITIC CAPITAL LETTER LJUDIJE
-2C0F;AL # GLAGOLITIC CAPITAL LETTER MYSLITE
-2C10;AL # GLAGOLITIC CAPITAL LETTER NASHI
-2C11;AL # GLAGOLITIC CAPITAL LETTER ONU
-2C12;AL # GLAGOLITIC CAPITAL LETTER POKOJI
-2C13;AL # GLAGOLITIC CAPITAL LETTER RITSI
-2C14;AL # GLAGOLITIC CAPITAL LETTER SLOVO
-2C15;AL # GLAGOLITIC CAPITAL LETTER TVRIDO
-2C16;AL # GLAGOLITIC CAPITAL LETTER UKU
-2C17;AL # GLAGOLITIC CAPITAL LETTER FRITU
-2C18;AL # GLAGOLITIC CAPITAL LETTER HERU
-2C19;AL # GLAGOLITIC CAPITAL LETTER OTU
-2C1A;AL # GLAGOLITIC CAPITAL LETTER PE
-2C1B;AL # GLAGOLITIC CAPITAL LETTER SHTA
-2C1C;AL # GLAGOLITIC CAPITAL LETTER TSI
-2C1D;AL # GLAGOLITIC CAPITAL LETTER CHRIVI
-2C1E;AL # GLAGOLITIC CAPITAL LETTER SHA
-2C1F;AL # GLAGOLITIC CAPITAL LETTER YERU
-2C20;AL # GLAGOLITIC CAPITAL LETTER YERI
-2C21;AL # GLAGOLITIC CAPITAL LETTER YATI
-2C22;AL # GLAGOLITIC CAPITAL LETTER SPIDERY HA
-2C23;AL # GLAGOLITIC CAPITAL LETTER YU
-2C24;AL # GLAGOLITIC CAPITAL LETTER SMALL YUS
-2C25;AL # GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL
-2C26;AL # GLAGOLITIC CAPITAL LETTER YO
-2C27;AL # GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS
-2C28;AL # GLAGOLITIC CAPITAL LETTER BIG YUS
-2C29;AL # GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS
-2C2A;AL # GLAGOLITIC CAPITAL LETTER FITA
-2C2B;AL # GLAGOLITIC CAPITAL LETTER IZHITSA
-2C2C;AL # GLAGOLITIC CAPITAL LETTER SHTAPIC
-2C2D;AL # GLAGOLITIC CAPITAL LETTER TROKUTASTI A
-2C2E;AL # GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
-2C30;AL # GLAGOLITIC SMALL LETTER AZU
-2C31;AL # GLAGOLITIC SMALL LETTER BUKY
-2C32;AL # GLAGOLITIC SMALL LETTER VEDE
-2C33;AL # GLAGOLITIC SMALL LETTER GLAGOLI
-2C34;AL # GLAGOLITIC SMALL LETTER DOBRO
-2C35;AL # GLAGOLITIC SMALL LETTER YESTU
-2C36;AL # GLAGOLITIC SMALL LETTER ZHIVETE
-2C37;AL # GLAGOLITIC SMALL LETTER DZELO
-2C38;AL # GLAGOLITIC SMALL LETTER ZEMLJA
-2C39;AL # GLAGOLITIC SMALL LETTER IZHE
-2C3A;AL # GLAGOLITIC SMALL LETTER INITIAL IZHE
-2C3B;AL # GLAGOLITIC SMALL LETTER I
-2C3C;AL # GLAGOLITIC SMALL LETTER DJERVI
-2C3D;AL # GLAGOLITIC SMALL LETTER KAKO
-2C3E;AL # GLAGOLITIC SMALL LETTER LJUDIJE
-2C3F;AL # GLAGOLITIC SMALL LETTER MYSLITE
-2C40;AL # GLAGOLITIC SMALL LETTER NASHI
-2C41;AL # GLAGOLITIC SMALL LETTER ONU
-2C42;AL # GLAGOLITIC SMALL LETTER POKOJI
-2C43;AL # GLAGOLITIC SMALL LETTER RITSI
-2C44;AL # GLAGOLITIC SMALL LETTER SLOVO
-2C45;AL # GLAGOLITIC SMALL LETTER TVRIDO
-2C46;AL # GLAGOLITIC SMALL LETTER UKU
-2C47;AL # GLAGOLITIC SMALL LETTER FRITU
-2C48;AL # GLAGOLITIC SMALL LETTER HERU
-2C49;AL # GLAGOLITIC SMALL LETTER OTU
-2C4A;AL # GLAGOLITIC SMALL LETTER PE
-2C4B;AL # GLAGOLITIC SMALL LETTER SHTA
-2C4C;AL # GLAGOLITIC SMALL LETTER TSI
-2C4D;AL # GLAGOLITIC SMALL LETTER CHRIVI
-2C4E;AL # GLAGOLITIC SMALL LETTER SHA
-2C4F;AL # GLAGOLITIC SMALL LETTER YERU
-2C50;AL # GLAGOLITIC SMALL LETTER YERI
-2C51;AL # GLAGOLITIC SMALL LETTER YATI
-2C52;AL # GLAGOLITIC SMALL LETTER SPIDERY HA
-2C53;AL # GLAGOLITIC SMALL LETTER YU
-2C54;AL # GLAGOLITIC SMALL LETTER SMALL YUS
-2C55;AL # GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL
-2C56;AL # GLAGOLITIC SMALL LETTER YO
-2C57;AL # GLAGOLITIC SMALL LETTER IOTATED SMALL YUS
-2C58;AL # GLAGOLITIC SMALL LETTER BIG YUS
-2C59;AL # GLAGOLITIC SMALL LETTER IOTATED BIG YUS
-2C5A;AL # GLAGOLITIC SMALL LETTER FITA
-2C5B;AL # GLAGOLITIC SMALL LETTER IZHITSA
-2C5C;AL # GLAGOLITIC SMALL LETTER SHTAPIC
-2C5D;AL # GLAGOLITIC SMALL LETTER TROKUTASTI A
-2C5E;AL # GLAGOLITIC SMALL LETTER LATINATE MYSLITE
-2C80;AL # COPTIC CAPITAL LETTER ALFA
-2C81;AL # COPTIC SMALL LETTER ALFA
-2C82;AL # COPTIC CAPITAL LETTER VIDA
-2C83;AL # COPTIC SMALL LETTER VIDA
-2C84;AL # COPTIC CAPITAL LETTER GAMMA
-2C85;AL # COPTIC SMALL LETTER GAMMA
-2C86;AL # COPTIC CAPITAL LETTER DALDA
-2C87;AL # COPTIC SMALL LETTER DALDA
-2C88;AL # COPTIC CAPITAL LETTER EIE
-2C89;AL # COPTIC SMALL LETTER EIE
-2C8A;AL # COPTIC CAPITAL LETTER SOU
-2C8B;AL # COPTIC SMALL LETTER SOU
-2C8C;AL # COPTIC CAPITAL LETTER ZATA
-2C8D;AL # COPTIC SMALL LETTER ZATA
-2C8E;AL # COPTIC CAPITAL LETTER HATE
-2C8F;AL # COPTIC SMALL LETTER HATE
-2C90;AL # COPTIC CAPITAL LETTER THETHE
-2C91;AL # COPTIC SMALL LETTER THETHE
-2C92;AL # COPTIC CAPITAL LETTER IAUDA
-2C93;AL # COPTIC SMALL LETTER IAUDA
-2C94;AL # COPTIC CAPITAL LETTER KAPA
-2C95;AL # COPTIC SMALL LETTER KAPA
-2C96;AL # COPTIC CAPITAL LETTER LAULA
-2C97;AL # COPTIC SMALL LETTER LAULA
-2C98;AL # COPTIC CAPITAL LETTER MI
-2C99;AL # COPTIC SMALL LETTER MI
-2C9A;AL # COPTIC CAPITAL LETTER NI
-2C9B;AL # COPTIC SMALL LETTER NI
-2C9C;AL # COPTIC CAPITAL LETTER KSI
-2C9D;AL # COPTIC SMALL LETTER KSI
-2C9E;AL # COPTIC CAPITAL LETTER O
-2C9F;AL # COPTIC SMALL LETTER O
-2CA0;AL # COPTIC CAPITAL LETTER PI
-2CA1;AL # COPTIC SMALL LETTER PI
-2CA2;AL # COPTIC CAPITAL LETTER RO
-2CA3;AL # COPTIC SMALL LETTER RO
-2CA4;AL # COPTIC CAPITAL LETTER SIMA
-2CA5;AL # COPTIC SMALL LETTER SIMA
-2CA6;AL # COPTIC CAPITAL LETTER TAU
-2CA7;AL # COPTIC SMALL LETTER TAU
-2CA8;AL # COPTIC CAPITAL LETTER UA
-2CA9;AL # COPTIC SMALL LETTER UA
-2CAA;AL # COPTIC CAPITAL LETTER FI
-2CAB;AL # COPTIC SMALL LETTER FI
-2CAC;AL # COPTIC CAPITAL LETTER KHI
-2CAD;AL # COPTIC SMALL LETTER KHI
-2CAE;AL # COPTIC CAPITAL LETTER PSI
-2CAF;AL # COPTIC SMALL LETTER PSI
-2CB0;AL # COPTIC CAPITAL LETTER OOU
-2CB1;AL # COPTIC SMALL LETTER OOU
-2CB2;AL # COPTIC CAPITAL LETTER DIALECT-P ALEF
-2CB3;AL # COPTIC SMALL LETTER DIALECT-P ALEF
-2CB4;AL # COPTIC CAPITAL LETTER OLD COPTIC AIN
-2CB5;AL # COPTIC SMALL LETTER OLD COPTIC AIN
-2CB6;AL # COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
-2CB7;AL # COPTIC SMALL LETTER CRYPTOGRAMMIC EIE
-2CB8;AL # COPTIC CAPITAL LETTER DIALECT-P KAPA
-2CB9;AL # COPTIC SMALL LETTER DIALECT-P KAPA
-2CBA;AL # COPTIC CAPITAL LETTER DIALECT-P NI
-2CBB;AL # COPTIC SMALL LETTER DIALECT-P NI
-2CBC;AL # COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
-2CBD;AL # COPTIC SMALL LETTER CRYPTOGRAMMIC NI
-2CBE;AL # COPTIC CAPITAL LETTER OLD COPTIC OOU
-2CBF;AL # COPTIC SMALL LETTER OLD COPTIC OOU
-2CC0;AL # COPTIC CAPITAL LETTER SAMPI
-2CC1;AL # COPTIC SMALL LETTER SAMPI
-2CC2;AL # COPTIC CAPITAL LETTER CROSSED SHEI
-2CC3;AL # COPTIC SMALL LETTER CROSSED SHEI
-2CC4;AL # COPTIC CAPITAL LETTER OLD COPTIC SHEI
-2CC5;AL # COPTIC SMALL LETTER OLD COPTIC SHEI
-2CC6;AL # COPTIC CAPITAL LETTER OLD COPTIC ESH
-2CC7;AL # COPTIC SMALL LETTER OLD COPTIC ESH
-2CC8;AL # COPTIC CAPITAL LETTER AKHMIMIC KHEI
-2CC9;AL # COPTIC SMALL LETTER AKHMIMIC KHEI
-2CCA;AL # COPTIC CAPITAL LETTER DIALECT-P HORI
-2CCB;AL # COPTIC SMALL LETTER DIALECT-P HORI
-2CCC;AL # COPTIC CAPITAL LETTER OLD COPTIC HORI
-2CCD;AL # COPTIC SMALL LETTER OLD COPTIC HORI
-2CCE;AL # COPTIC CAPITAL LETTER OLD COPTIC HA
-2CCF;AL # COPTIC SMALL LETTER OLD COPTIC HA
-2CD0;AL # COPTIC CAPITAL LETTER L-SHAPED HA
-2CD1;AL # COPTIC SMALL LETTER L-SHAPED HA
-2CD2;AL # COPTIC CAPITAL LETTER OLD COPTIC HEI
-2CD3;AL # COPTIC SMALL LETTER OLD COPTIC HEI
-2CD4;AL # COPTIC CAPITAL LETTER OLD COPTIC HAT
-2CD5;AL # COPTIC SMALL LETTER OLD COPTIC HAT
-2CD6;AL # COPTIC CAPITAL LETTER OLD COPTIC GANGIA
-2CD7;AL # COPTIC SMALL LETTER OLD COPTIC GANGIA
-2CD8;AL # COPTIC CAPITAL LETTER OLD COPTIC DJA
-2CD9;AL # COPTIC SMALL LETTER OLD COPTIC DJA
-2CDA;AL # COPTIC CAPITAL LETTER OLD COPTIC SHIMA
-2CDB;AL # COPTIC SMALL LETTER OLD COPTIC SHIMA
-2CDC;AL # COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
-2CDD;AL # COPTIC SMALL LETTER OLD NUBIAN SHIMA
-2CDE;AL # COPTIC CAPITAL LETTER OLD NUBIAN NGI
-2CDF;AL # COPTIC SMALL LETTER OLD NUBIAN NGI
-2CE0;AL # COPTIC CAPITAL LETTER OLD NUBIAN NYI
-2CE1;AL # COPTIC SMALL LETTER OLD NUBIAN NYI
-2CE2;AL # COPTIC CAPITAL LETTER OLD NUBIAN WAU
-2CE3;AL # COPTIC SMALL LETTER OLD NUBIAN WAU
-2CE4;AL # COPTIC SYMBOL KAI
-2CE5;AL # COPTIC SYMBOL MI RO
-2CE6;AL # COPTIC SYMBOL PI RO
-2CE7;AL # COPTIC SYMBOL STAUROS
-2CE8;AL # COPTIC SYMBOL TAU RO
-2CE9;AL # COPTIC SYMBOL KHI RO
-2CEA;AL # COPTIC SYMBOL SHIMA SIMA
-2CF9;BA # COPTIC OLD NUBIAN FULL STOP
-2CFA;BA # COPTIC OLD NUBIAN DIRECT QUESTION MARK
-2CFB;BA # COPTIC OLD NUBIAN INDIRECT QUESTION MARK
-2CFC;BA # COPTIC OLD NUBIAN VERSE DIVIDER
-2CFD;AL # COPTIC FRACTION ONE HALF
-2CFE;BA # COPTIC FULL STOP
-2CFF;BA # COPTIC MORPHOLOGICAL DIVIDER
-2D00;AL # GEORGIAN SMALL LETTER AN
-2D01;AL # GEORGIAN SMALL LETTER BAN
-2D02;AL # GEORGIAN SMALL LETTER GAN
-2D03;AL # GEORGIAN SMALL LETTER DON
-2D04;AL # GEORGIAN SMALL LETTER EN
-2D05;AL # GEORGIAN SMALL LETTER VIN
-2D06;AL # GEORGIAN SMALL LETTER ZEN
-2D07;AL # GEORGIAN SMALL LETTER TAN
-2D08;AL # GEORGIAN SMALL LETTER IN
-2D09;AL # GEORGIAN SMALL LETTER KAN
-2D0A;AL # GEORGIAN SMALL LETTER LAS
-2D0B;AL # GEORGIAN SMALL LETTER MAN
-2D0C;AL # GEORGIAN SMALL LETTER NAR
-2D0D;AL # GEORGIAN SMALL LETTER ON
-2D0E;AL # GEORGIAN SMALL LETTER PAR
-2D0F;AL # GEORGIAN SMALL LETTER ZHAR
-2D10;AL # GEORGIAN SMALL LETTER RAE
-2D11;AL # GEORGIAN SMALL LETTER SAN
-2D12;AL # GEORGIAN SMALL LETTER TAR
-2D13;AL # GEORGIAN SMALL LETTER UN
-2D14;AL # GEORGIAN SMALL LETTER PHAR
-2D15;AL # GEORGIAN SMALL LETTER KHAR
-2D16;AL # GEORGIAN SMALL LETTER GHAN
-2D17;AL # GEORGIAN SMALL LETTER QAR
-2D18;AL # GEORGIAN SMALL LETTER SHIN
-2D19;AL # GEORGIAN SMALL LETTER CHIN
-2D1A;AL # GEORGIAN SMALL LETTER CAN
-2D1B;AL # GEORGIAN SMALL LETTER JIL
-2D1C;AL # GEORGIAN SMALL LETTER CIL
-2D1D;AL # GEORGIAN SMALL LETTER CHAR
-2D1E;AL # GEORGIAN SMALL LETTER XAN
-2D1F;AL # GEORGIAN SMALL LETTER JHAN
-2D20;AL # GEORGIAN SMALL LETTER HAE
-2D21;AL # GEORGIAN SMALL LETTER HE
-2D22;AL # GEORGIAN SMALL LETTER HIE
-2D23;AL # GEORGIAN SMALL LETTER WE
-2D24;AL # GEORGIAN SMALL LETTER HAR
-2D25;AL # GEORGIAN SMALL LETTER HOE
-2D30;AL # TIFINAGH LETTER YA
-2D31;AL # TIFINAGH LETTER YAB
-2D32;AL # TIFINAGH LETTER YABH
-2D33;AL # TIFINAGH LETTER YAG
-2D34;AL # TIFINAGH LETTER YAGHH
-2D35;AL # TIFINAGH LETTER BERBER ACADEMY YAJ
-2D36;AL # TIFINAGH LETTER YAJ
-2D37;AL # TIFINAGH LETTER YAD
-2D38;AL # TIFINAGH LETTER YADH
-2D39;AL # TIFINAGH LETTER YADD
-2D3A;AL # TIFINAGH LETTER YADDH
-2D3B;AL # TIFINAGH LETTER YEY
-2D3C;AL # TIFINAGH LETTER YAF
-2D3D;AL # TIFINAGH LETTER YAK
-2D3E;AL # TIFINAGH LETTER TUAREG YAK
-2D3F;AL # TIFINAGH LETTER YAKHH
-2D40;AL # TIFINAGH LETTER YAH
-2D41;AL # TIFINAGH LETTER BERBER ACADEMY YAH
-2D42;AL # TIFINAGH LETTER TUAREG YAH
-2D43;AL # TIFINAGH LETTER YAHH
-2D44;AL # TIFINAGH LETTER YAA
-2D45;AL # TIFINAGH LETTER YAKH
-2D46;AL # TIFINAGH LETTER TUAREG YAKH
-2D47;AL # TIFINAGH LETTER YAQ
-2D48;AL # TIFINAGH LETTER TUAREG YAQ
-2D49;AL # TIFINAGH LETTER YI
-2D4A;AL # TIFINAGH LETTER YAZH
-2D4B;AL # TIFINAGH LETTER AHAGGAR YAZH
-2D4C;AL # TIFINAGH LETTER TUAREG YAZH
-2D4D;AL # TIFINAGH LETTER YAL
-2D4E;AL # TIFINAGH LETTER YAM
-2D4F;AL # TIFINAGH LETTER YAN
-2D50;AL # TIFINAGH LETTER TUAREG YAGN
-2D51;AL # TIFINAGH LETTER TUAREG YANG
-2D52;AL # TIFINAGH LETTER YAP
-2D53;AL # TIFINAGH LETTER YU
-2D54;AL # TIFINAGH LETTER YAR
-2D55;AL # TIFINAGH LETTER YARR
-2D56;AL # TIFINAGH LETTER YAGH
-2D57;AL # TIFINAGH LETTER TUAREG YAGH
-2D58;AL # TIFINAGH LETTER AYER YAGH
-2D59;AL # TIFINAGH LETTER YAS
-2D5A;AL # TIFINAGH LETTER YASS
-2D5B;AL # TIFINAGH LETTER YASH
-2D5C;AL # TIFINAGH LETTER YAT
-2D5D;AL # TIFINAGH LETTER YATH
-2D5E;AL # TIFINAGH LETTER YACH
-2D5F;AL # TIFINAGH LETTER YATT
-2D60;AL # TIFINAGH LETTER YAV
-2D61;AL # TIFINAGH LETTER YAW
-2D62;AL # TIFINAGH LETTER YAY
-2D63;AL # TIFINAGH LETTER YAZ
-2D64;AL # TIFINAGH LETTER TAWELLEMET YAZ
-2D65;AL # TIFINAGH LETTER YAZZ
-2D6F;AL # TIFINAGH MODIFIER LETTER LABIALIZATION MARK
-2D80;AL # ETHIOPIC SYLLABLE LOA
-2D81;AL # ETHIOPIC SYLLABLE MOA
-2D82;AL # ETHIOPIC SYLLABLE ROA
-2D83;AL # ETHIOPIC SYLLABLE SOA
-2D84;AL # ETHIOPIC SYLLABLE SHOA
-2D85;AL # ETHIOPIC SYLLABLE BOA
-2D86;AL # ETHIOPIC SYLLABLE TOA
-2D87;AL # ETHIOPIC SYLLABLE COA
-2D88;AL # ETHIOPIC SYLLABLE NOA
-2D89;AL # ETHIOPIC SYLLABLE NYOA
-2D8A;AL # ETHIOPIC SYLLABLE GLOTTAL OA
-2D8B;AL # ETHIOPIC SYLLABLE ZOA
-2D8C;AL # ETHIOPIC SYLLABLE DOA
-2D8D;AL # ETHIOPIC SYLLABLE DDOA
-2D8E;AL # ETHIOPIC SYLLABLE JOA
-2D8F;AL # ETHIOPIC SYLLABLE THOA
-2D90;AL # ETHIOPIC SYLLABLE CHOA
-2D91;AL # ETHIOPIC SYLLABLE PHOA
-2D92;AL # ETHIOPIC SYLLABLE POA
-2D93;AL # ETHIOPIC SYLLABLE GGWA
-2D94;AL # ETHIOPIC SYLLABLE GGWI
-2D95;AL # ETHIOPIC SYLLABLE GGWEE
-2D96;AL # ETHIOPIC SYLLABLE GGWE
-2DA0;AL # ETHIOPIC SYLLABLE SSA
-2DA1;AL # ETHIOPIC SYLLABLE SSU
-2DA2;AL # ETHIOPIC SYLLABLE SSI
-2DA3;AL # ETHIOPIC SYLLABLE SSAA
-2DA4;AL # ETHIOPIC SYLLABLE SSEE
-2DA5;AL # ETHIOPIC SYLLABLE SSE
-2DA6;AL # ETHIOPIC SYLLABLE SSO
-2DA8;AL # ETHIOPIC SYLLABLE CCA
-2DA9;AL # ETHIOPIC SYLLABLE CCU
-2DAA;AL # ETHIOPIC SYLLABLE CCI
-2DAB;AL # ETHIOPIC SYLLABLE CCAA
-2DAC;AL # ETHIOPIC SYLLABLE CCEE
-2DAD;AL # ETHIOPIC SYLLABLE CCE
-2DAE;AL # ETHIOPIC SYLLABLE CCO
-2DB0;AL # ETHIOPIC SYLLABLE ZZA
-2DB1;AL # ETHIOPIC SYLLABLE ZZU
-2DB2;AL # ETHIOPIC SYLLABLE ZZI
-2DB3;AL # ETHIOPIC SYLLABLE ZZAA
-2DB4;AL # ETHIOPIC SYLLABLE ZZEE
-2DB5;AL # ETHIOPIC SYLLABLE ZZE
-2DB6;AL # ETHIOPIC SYLLABLE ZZO
-2DB8;AL # ETHIOPIC SYLLABLE CCHA
-2DB9;AL # ETHIOPIC SYLLABLE CCHU
-2DBA;AL # ETHIOPIC SYLLABLE CCHI
-2DBB;AL # ETHIOPIC SYLLABLE CCHAA
-2DBC;AL # ETHIOPIC SYLLABLE CCHEE
-2DBD;AL # ETHIOPIC SYLLABLE CCHE
-2DBE;AL # ETHIOPIC SYLLABLE CCHO
-2DC0;AL # ETHIOPIC SYLLABLE QYA
-2DC1;AL # ETHIOPIC SYLLABLE QYU
-2DC2;AL # ETHIOPIC SYLLABLE QYI
-2DC3;AL # ETHIOPIC SYLLABLE QYAA
-2DC4;AL # ETHIOPIC SYLLABLE QYEE
-2DC5;AL # ETHIOPIC SYLLABLE QYE
-2DC6;AL # ETHIOPIC SYLLABLE QYO
-2DC8;AL # ETHIOPIC SYLLABLE KYA
-2DC9;AL # ETHIOPIC SYLLABLE KYU
-2DCA;AL # ETHIOPIC SYLLABLE KYI
-2DCB;AL # ETHIOPIC SYLLABLE KYAA
-2DCC;AL # ETHIOPIC SYLLABLE KYEE
-2DCD;AL # ETHIOPIC SYLLABLE KYE
-2DCE;AL # ETHIOPIC SYLLABLE KYO
-2DD0;AL # ETHIOPIC SYLLABLE XYA
-2DD1;AL # ETHIOPIC SYLLABLE XYU
-2DD2;AL # ETHIOPIC SYLLABLE XYI
-2DD3;AL # ETHIOPIC SYLLABLE XYAA
-2DD4;AL # ETHIOPIC SYLLABLE XYEE
-2DD5;AL # ETHIOPIC SYLLABLE XYE
-2DD6;AL # ETHIOPIC SYLLABLE XYO
-2DD8;AL # ETHIOPIC SYLLABLE GYA
-2DD9;AL # ETHIOPIC SYLLABLE GYU
-2DDA;AL # ETHIOPIC SYLLABLE GYI
-2DDB;AL # ETHIOPIC SYLLABLE GYAA
-2DDC;AL # ETHIOPIC SYLLABLE GYEE
-2DDD;AL # ETHIOPIC SYLLABLE GYE
-2DDE;AL # ETHIOPIC SYLLABLE GYO
-2E00;QU # RIGHT ANGLE SUBSTITUTION MARKER
-2E01;QU # RIGHT ANGLE DOTTED SUBSTITUTION MARKER
-2E02;QU # LEFT SUBSTITUTION BRACKET
-2E03;QU # RIGHT SUBSTITUTION BRACKET
-2E04;QU # LEFT DOTTED SUBSTITUTION BRACKET
-2E05;QU # RIGHT DOTTED SUBSTITUTION BRACKET
-2E06;QU # RAISED INTERPOLATION MARKER
-2E07;QU # RAISED DOTTED INTERPOLATION MARKER
-2E08;QU # DOTTED TRANSPOSITION MARKER
-2E09;QU # LEFT TRANSPOSITION BRACKET
-2E0A;QU # RIGHT TRANSPOSITION BRACKET
-2E0B;QU # RAISED SQUARE
-2E0C;QU # LEFT RAISED OMISSION BRACKET
-2E0D;QU # RIGHT RAISED OMISSION BRACKET
-2E0E;BA # EDITORIAL CORONIS
-2E0F;BA # PARAGRAPHOS
-2E10;BA # FORKED PARAGRAPHOS
-2E11;BA # REVERSED FORKED PARAGRAPHOS
-2E12;BA # HYPODIASTOLE
-2E13;BA # DOTTED OBELOS
-2E14;BA # DOWNWARDS ANCORA
-2E15;BA # UPWARDS ANCORA
-2E16;AL # DOTTED RIGHT-POINTING ANGLE
-2E17;BA # DOUBLE OBLIQUE HYPHEN
-2E1C;QU # LEFT LOW PARAPHRASE BRACKET
-2E1D;QU # RIGHT LOW PARAPHRASE BRACKET
-2E80;ID # CJK RADICAL REPEAT
-2E81;ID # CJK RADICAL CLIFF
-2E82;ID # CJK RADICAL SECOND ONE
-2E83;ID # CJK RADICAL SECOND TWO
-2E84;ID # CJK RADICAL SECOND THREE
-2E85;ID # CJK RADICAL PERSON
-2E86;ID # CJK RADICAL BOX
-2E87;ID # CJK RADICAL TABLE
-2E88;ID # CJK RADICAL KNIFE ONE
-2E89;ID # CJK RADICAL KNIFE TWO
-2E8A;ID # CJK RADICAL DIVINATION
-2E8B;ID # CJK RADICAL SEAL
-2E8C;ID # CJK RADICAL SMALL ONE
-2E8D;ID # CJK RADICAL SMALL TWO
-2E8E;ID # CJK RADICAL LAME ONE
-2E8F;ID # CJK RADICAL LAME TWO
-2E90;ID # CJK RADICAL LAME THREE
-2E91;ID # CJK RADICAL LAME FOUR
-2E92;ID # CJK RADICAL SNAKE
-2E93;ID # CJK RADICAL THREAD
-2E94;ID # CJK RADICAL SNOUT ONE
-2E95;ID # CJK RADICAL SNOUT TWO
-2E96;ID # CJK RADICAL HEART ONE
-2E97;ID # CJK RADICAL HEART TWO
-2E98;ID # CJK RADICAL HAND
-2E99;ID # CJK RADICAL RAP
-2E9B;ID # CJK RADICAL CHOKE
-2E9C;ID # CJK RADICAL SUN
-2E9D;ID # CJK RADICAL MOON
-2E9E;ID # CJK RADICAL DEATH
-2E9F;ID # CJK RADICAL MOTHER
-2EA0;ID # CJK RADICAL CIVILIAN
-2EA1;ID # CJK RADICAL WATER ONE
-2EA2;ID # CJK RADICAL WATER TWO
-2EA3;ID # CJK RADICAL FIRE
-2EA4;ID # CJK RADICAL PAW ONE
-2EA5;ID # CJK RADICAL PAW TWO
-2EA6;ID # CJK RADICAL SIMPLIFIED HALF TREE TRUNK
-2EA7;ID # CJK RADICAL COW
-2EA8;ID # CJK RADICAL DOG
-2EA9;ID # CJK RADICAL JADE
-2EAA;ID # CJK RADICAL BOLT OF CLOTH
-2EAB;ID # CJK RADICAL EYE
-2EAC;ID # CJK RADICAL SPIRIT ONE
-2EAD;ID # CJK RADICAL SPIRIT TWO
-2EAE;ID # CJK RADICAL BAMBOO
-2EAF;ID # CJK RADICAL SILK
-2EB0;ID # CJK RADICAL C-SIMPLIFIED SILK
-2EB1;ID # CJK RADICAL NET ONE
-2EB2;ID # CJK RADICAL NET TWO
-2EB3;ID # CJK RADICAL NET THREE
-2EB4;ID # CJK RADICAL NET FOUR
-2EB5;ID # CJK RADICAL MESH
-2EB6;ID # CJK RADICAL SHEEP
-2EB7;ID # CJK RADICAL RAM
-2EB8;ID # CJK RADICAL EWE
-2EB9;ID # CJK RADICAL OLD
-2EBA;ID # CJK RADICAL BRUSH ONE
-2EBB;ID # CJK RADICAL BRUSH TWO
-2EBC;ID # CJK RADICAL MEAT
-2EBD;ID # CJK RADICAL MORTAR
-2EBE;ID # CJK RADICAL GRASS ONE
-2EBF;ID # CJK RADICAL GRASS TWO
-2EC0;ID # CJK RADICAL GRASS THREE
-2EC1;ID # CJK RADICAL TIGER
-2EC2;ID # CJK RADICAL CLOTHES
-2EC3;ID # CJK RADICAL WEST ONE
-2EC4;ID # CJK RADICAL WEST TWO
-2EC5;ID # CJK RADICAL C-SIMPLIFIED SEE
-2EC6;ID # CJK RADICAL SIMPLIFIED HORN
-2EC7;ID # CJK RADICAL HORN
-2EC8;ID # CJK RADICAL C-SIMPLIFIED SPEECH
-2EC9;ID # CJK RADICAL C-SIMPLIFIED SHELL
-2ECA;ID # CJK RADICAL FOOT
-2ECB;ID # CJK RADICAL C-SIMPLIFIED CART
-2ECC;ID # CJK RADICAL SIMPLIFIED WALK
-2ECD;ID # CJK RADICAL WALK ONE
-2ECE;ID # CJK RADICAL WALK TWO
-2ECF;ID # CJK RADICAL CITY
-2ED0;ID # CJK RADICAL C-SIMPLIFIED GOLD
-2ED1;ID # CJK RADICAL LONG ONE
-2ED2;ID # CJK RADICAL LONG TWO
-2ED3;ID # CJK RADICAL C-SIMPLIFIED LONG
-2ED4;ID # CJK RADICAL C-SIMPLIFIED GATE
-2ED5;ID # CJK RADICAL MOUND ONE
-2ED6;ID # CJK RADICAL MOUND TWO
-2ED7;ID # CJK RADICAL RAIN
-2ED8;ID # CJK RADICAL BLUE
-2ED9;ID # CJK RADICAL C-SIMPLIFIED TANNED LEATHER
-2EDA;ID # CJK RADICAL C-SIMPLIFIED LEAF
-2EDB;ID # CJK RADICAL C-SIMPLIFIED WIND
-2EDC;ID # CJK RADICAL C-SIMPLIFIED FLY
-2EDD;ID # CJK RADICAL EAT ONE
-2EDE;ID # CJK RADICAL EAT TWO
-2EDF;ID # CJK RADICAL EAT THREE
-2EE0;ID # CJK RADICAL C-SIMPLIFIED EAT
-2EE1;ID # CJK RADICAL HEAD
-2EE2;ID # CJK RADICAL C-SIMPLIFIED HORSE
-2EE3;ID # CJK RADICAL BONE
-2EE4;ID # CJK RADICAL GHOST
-2EE5;ID # CJK RADICAL C-SIMPLIFIED FISH
-2EE6;ID # CJK RADICAL C-SIMPLIFIED BIRD
-2EE7;ID # CJK RADICAL C-SIMPLIFIED SALT
-2EE8;ID # CJK RADICAL SIMPLIFIED WHEAT
-2EE9;ID # CJK RADICAL SIMPLIFIED YELLOW
-2EEA;ID # CJK RADICAL C-SIMPLIFIED FROG
-2EEB;ID # CJK RADICAL J-SIMPLIFIED EVEN
-2EEC;ID # CJK RADICAL C-SIMPLIFIED EVEN
-2EED;ID # CJK RADICAL J-SIMPLIFIED TOOTH
-2EEE;ID # CJK RADICAL C-SIMPLIFIED TOOTH
-2EEF;ID # CJK RADICAL J-SIMPLIFIED DRAGON
-2EF0;ID # CJK RADICAL C-SIMPLIFIED DRAGON
-2EF1;ID # CJK RADICAL TURTLE
-2EF2;ID # CJK RADICAL J-SIMPLIFIED TURTLE
-2EF3;ID # CJK RADICAL C-SIMPLIFIED TURTLE
-2F00;ID # KANGXI RADICAL ONE
-2F01;ID # KANGXI RADICAL LINE
-2F02;ID # KANGXI RADICAL DOT
-2F03;ID # KANGXI RADICAL SLASH
-2F04;ID # KANGXI RADICAL SECOND
-2F05;ID # KANGXI RADICAL HOOK
-2F06;ID # KANGXI RADICAL TWO
-2F07;ID # KANGXI RADICAL LID
-2F08;ID # KANGXI RADICAL MAN
-2F09;ID # KANGXI RADICAL LEGS
-2F0A;ID # KANGXI RADICAL ENTER
-2F0B;ID # KANGXI RADICAL EIGHT
-2F0C;ID # KANGXI RADICAL DOWN BOX
-2F0D;ID # KANGXI RADICAL COVER
-2F0E;ID # KANGXI RADICAL ICE
-2F0F;ID # KANGXI RADICAL TABLE
-2F10;ID # KANGXI RADICAL OPEN BOX
-2F11;ID # KANGXI RADICAL KNIFE
-2F12;ID # KANGXI RADICAL POWER
-2F13;ID # KANGXI RADICAL WRAP
-2F14;ID # KANGXI RADICAL SPOON
-2F15;ID # KANGXI RADICAL RIGHT OPEN BOX
-2F16;ID # KANGXI RADICAL HIDING ENCLOSURE
-2F17;ID # KANGXI RADICAL TEN
-2F18;ID # KANGXI RADICAL DIVINATION
-2F19;ID # KANGXI RADICAL SEAL
-2F1A;ID # KANGXI RADICAL CLIFF
-2F1B;ID # KANGXI RADICAL PRIVATE
-2F1C;ID # KANGXI RADICAL AGAIN
-2F1D;ID # KANGXI RADICAL MOUTH
-2F1E;ID # KANGXI RADICAL ENCLOSURE
-2F1F;ID # KANGXI RADICAL EARTH
-2F20;ID # KANGXI RADICAL SCHOLAR
-2F21;ID # KANGXI RADICAL GO
-2F22;ID # KANGXI RADICAL GO SLOWLY
-2F23;ID # KANGXI RADICAL EVENING
-2F24;ID # KANGXI RADICAL BIG
-2F25;ID # KANGXI RADICAL WOMAN
-2F26;ID # KANGXI RADICAL CHILD
-2F27;ID # KANGXI RADICAL ROOF
-2F28;ID # KANGXI RADICAL INCH
-2F29;ID # KANGXI RADICAL SMALL
-2F2A;ID # KANGXI RADICAL LAME
-2F2B;ID # KANGXI RADICAL CORPSE
-2F2C;ID # KANGXI RADICAL SPROUT
-2F2D;ID # KANGXI RADICAL MOUNTAIN
-2F2E;ID # KANGXI RADICAL RIVER
-2F2F;ID # KANGXI RADICAL WORK
-2F30;ID # KANGXI RADICAL ONESELF
-2F31;ID # KANGXI RADICAL TURBAN
-2F32;ID # KANGXI RADICAL DRY
-2F33;ID # KANGXI RADICAL SHORT THREAD
-2F34;ID # KANGXI RADICAL DOTTED CLIFF
-2F35;ID # KANGXI RADICAL LONG STRIDE
-2F36;ID # KANGXI RADICAL TWO HANDS
-2F37;ID # KANGXI RADICAL SHOOT
-2F38;ID # KANGXI RADICAL BOW
-2F39;ID # KANGXI RADICAL SNOUT
-2F3A;ID # KANGXI RADICAL BRISTLE
-2F3B;ID # KANGXI RADICAL STEP
-2F3C;ID # KANGXI RADICAL HEART
-2F3D;ID # KANGXI RADICAL HALBERD
-2F3E;ID # KANGXI RADICAL DOOR
-2F3F;ID # KANGXI RADICAL HAND
-2F40;ID # KANGXI RADICAL BRANCH
-2F41;ID # KANGXI RADICAL RAP
-2F42;ID # KANGXI RADICAL SCRIPT
-2F43;ID # KANGXI RADICAL DIPPER
-2F44;ID # KANGXI RADICAL AXE
-2F45;ID # KANGXI RADICAL SQUARE
-2F46;ID # KANGXI RADICAL NOT
-2F47;ID # KANGXI RADICAL SUN
-2F48;ID # KANGXI RADICAL SAY
-2F49;ID # KANGXI RADICAL MOON
-2F4A;ID # KANGXI RADICAL TREE
-2F4B;ID # KANGXI RADICAL LACK
-2F4C;ID # KANGXI RADICAL STOP
-2F4D;ID # KANGXI RADICAL DEATH
-2F4E;ID # KANGXI RADICAL WEAPON
-2F4F;ID # KANGXI RADICAL DO NOT
-2F50;ID # KANGXI RADICAL COMPARE
-2F51;ID # KANGXI RADICAL FUR
-2F52;ID # KANGXI RADICAL CLAN
-2F53;ID # KANGXI RADICAL STEAM
-2F54;ID # KANGXI RADICAL WATER
-2F55;ID # KANGXI RADICAL FIRE
-2F56;ID # KANGXI RADICAL CLAW
-2F57;ID # KANGXI RADICAL FATHER
-2F58;ID # KANGXI RADICAL DOUBLE X
-2F59;ID # KANGXI RADICAL HALF TREE TRUNK
-2F5A;ID # KANGXI RADICAL SLICE
-2F5B;ID # KANGXI RADICAL FANG
-2F5C;ID # KANGXI RADICAL COW
-2F5D;ID # KANGXI RADICAL DOG
-2F5E;ID # KANGXI RADICAL PROFOUND
-2F5F;ID # KANGXI RADICAL JADE
-2F60;ID # KANGXI RADICAL MELON
-2F61;ID # KANGXI RADICAL TILE
-2F62;ID # KANGXI RADICAL SWEET
-2F63;ID # KANGXI RADICAL LIFE
-2F64;ID # KANGXI RADICAL USE
-2F65;ID # KANGXI RADICAL FIELD
-2F66;ID # KANGXI RADICAL BOLT OF CLOTH
-2F67;ID # KANGXI RADICAL SICKNESS
-2F68;ID # KANGXI RADICAL DOTTED TENT
-2F69;ID # KANGXI RADICAL WHITE
-2F6A;ID # KANGXI RADICAL SKIN
-2F6B;ID # KANGXI RADICAL DISH
-2F6C;ID # KANGXI RADICAL EYE
-2F6D;ID # KANGXI RADICAL SPEAR
-2F6E;ID # KANGXI RADICAL ARROW
-2F6F;ID # KANGXI RADICAL STONE
-2F70;ID # KANGXI RADICAL SPIRIT
-2F71;ID # KANGXI RADICAL TRACK
-2F72;ID # KANGXI RADICAL GRAIN
-2F73;ID # KANGXI RADICAL CAVE
-2F74;ID # KANGXI RADICAL STAND
-2F75;ID # KANGXI RADICAL BAMBOO
-2F76;ID # KANGXI RADICAL RICE
-2F77;ID # KANGXI RADICAL SILK
-2F78;ID # KANGXI RADICAL JAR
-2F79;ID # KANGXI RADICAL NET
-2F7A;ID # KANGXI RADICAL SHEEP
-2F7B;ID # KANGXI RADICAL FEATHER
-2F7C;ID # KANGXI RADICAL OLD
-2F7D;ID # KANGXI RADICAL AND
-2F7E;ID # KANGXI RADICAL PLOW
-2F7F;ID # KANGXI RADICAL EAR
-2F80;ID # KANGXI RADICAL BRUSH
-2F81;ID # KANGXI RADICAL MEAT
-2F82;ID # KANGXI RADICAL MINISTER
-2F83;ID # KANGXI RADICAL SELF
-2F84;ID # KANGXI RADICAL ARRIVE
-2F85;ID # KANGXI RADICAL MORTAR
-2F86;ID # KANGXI RADICAL TONGUE
-2F87;ID # KANGXI RADICAL OPPOSE
-2F88;ID # KANGXI RADICAL BOAT
-2F89;ID # KANGXI RADICAL STOPPING
-2F8A;ID # KANGXI RADICAL COLOR
-2F8B;ID # KANGXI RADICAL GRASS
-2F8C;ID # KANGXI RADICAL TIGER
-2F8D;ID # KANGXI RADICAL INSECT
-2F8E;ID # KANGXI RADICAL BLOOD
-2F8F;ID # KANGXI RADICAL WALK ENCLOSURE
-2F90;ID # KANGXI RADICAL CLOTHES
-2F91;ID # KANGXI RADICAL WEST
-2F92;ID # KANGXI RADICAL SEE
-2F93;ID # KANGXI RADICAL HORN
-2F94;ID # KANGXI RADICAL SPEECH
-2F95;ID # KANGXI RADICAL VALLEY
-2F96;ID # KANGXI RADICAL BEAN
-2F97;ID # KANGXI RADICAL PIG
-2F98;ID # KANGXI RADICAL BADGER
-2F99;ID # KANGXI RADICAL SHELL
-2F9A;ID # KANGXI RADICAL RED
-2F9B;ID # KANGXI RADICAL RUN
-2F9C;ID # KANGXI RADICAL FOOT
-2F9D;ID # KANGXI RADICAL BODY
-2F9E;ID # KANGXI RADICAL CART
-2F9F;ID # KANGXI RADICAL BITTER
-2FA0;ID # KANGXI RADICAL MORNING
-2FA1;ID # KANGXI RADICAL WALK
-2FA2;ID # KANGXI RADICAL CITY
-2FA3;ID # KANGXI RADICAL WINE
-2FA4;ID # KANGXI RADICAL DISTINGUISH
-2FA5;ID # KANGXI RADICAL VILLAGE
-2FA6;ID # KANGXI RADICAL GOLD
-2FA7;ID # KANGXI RADICAL LONG
-2FA8;ID # KANGXI RADICAL GATE
-2FA9;ID # KANGXI RADICAL MOUND
-2FAA;ID # KANGXI RADICAL SLAVE
-2FAB;ID # KANGXI RADICAL SHORT TAILED BIRD
-2FAC;ID # KANGXI RADICAL RAIN
-2FAD;ID # KANGXI RADICAL BLUE
-2FAE;ID # KANGXI RADICAL WRONG
-2FAF;ID # KANGXI RADICAL FACE
-2FB0;ID # KANGXI RADICAL LEATHER
-2FB1;ID # KANGXI RADICAL TANNED LEATHER
-2FB2;ID # KANGXI RADICAL LEEK
-2FB3;ID # KANGXI RADICAL SOUND
-2FB4;ID # KANGXI RADICAL LEAF
-2FB5;ID # KANGXI RADICAL WIND
-2FB6;ID # KANGXI RADICAL FLY
-2FB7;ID # KANGXI RADICAL EAT
-2FB8;ID # KANGXI RADICAL HEAD
-2FB9;ID # KANGXI RADICAL FRAGRANT
-2FBA;ID # KANGXI RADICAL HORSE
-2FBB;ID # KANGXI RADICAL BONE
-2FBC;ID # KANGXI RADICAL TALL
-2FBD;ID # KANGXI RADICAL HAIR
-2FBE;ID # KANGXI RADICAL FIGHT
-2FBF;ID # KANGXI RADICAL SACRIFICIAL WINE
-2FC0;ID # KANGXI RADICAL CAULDRON
-2FC1;ID # KANGXI RADICAL GHOST
-2FC2;ID # KANGXI RADICAL FISH
-2FC3;ID # KANGXI RADICAL BIRD
-2FC4;ID # KANGXI RADICAL SALT
-2FC5;ID # KANGXI RADICAL DEER
-2FC6;ID # KANGXI RADICAL WHEAT
-2FC7;ID # KANGXI RADICAL HEMP
-2FC8;ID # KANGXI RADICAL YELLOW
-2FC9;ID # KANGXI RADICAL MILLET
-2FCA;ID # KANGXI RADICAL BLACK
-2FCB;ID # KANGXI RADICAL EMBROIDERY
-2FCC;ID # KANGXI RADICAL FROG
-2FCD;ID # KANGXI RADICAL TRIPOD
-2FCE;ID # KANGXI RADICAL DRUM
-2FCF;ID # KANGXI RADICAL RAT
-2FD0;ID # KANGXI RADICAL NOSE
-2FD1;ID # KANGXI RADICAL EVEN
-2FD2;ID # KANGXI RADICAL TOOTH
-2FD3;ID # KANGXI RADICAL DRAGON
-2FD4;ID # KANGXI RADICAL TURTLE
-2FD5;ID # KANGXI RADICAL FLUTE
-2FF0;ID # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
-2FF1;ID # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW
-2FF2;ID # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT
-2FF3;ID # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW
-2FF4;ID # IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND
-2FF5;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE
-2FF6;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW
-2FF7;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT
-2FF8;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT
-2FF9;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT
-2FFA;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT
-2FFB;ID # IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
-3000;ID # IDEOGRAPHIC SPACE
-3001;CL # IDEOGRAPHIC COMMA
-3002;CL # IDEOGRAPHIC FULL STOP
-3003;ID # DITTO MARK
-3004;ID # JAPANESE INDUSTRIAL STANDARD SYMBOL
-3005;NS # IDEOGRAPHIC ITERATION MARK
-3006;ID # IDEOGRAPHIC CLOSING MARK
-3007;ID # IDEOGRAPHIC NUMBER ZERO
-3008;OP # LEFT ANGLE BRACKET
-3009;CL # RIGHT ANGLE BRACKET
-300A;OP # LEFT DOUBLE ANGLE BRACKET
-300B;CL # RIGHT DOUBLE ANGLE BRACKET
-300C;OP # LEFT CORNER BRACKET
-300D;CL # RIGHT CORNER BRACKET
-300E;OP # LEFT WHITE CORNER BRACKET
-300F;CL # RIGHT WHITE CORNER BRACKET
-3010;OP # LEFT BLACK LENTICULAR BRACKET
-3011;CL # RIGHT BLACK LENTICULAR BRACKET
-3012;ID # POSTAL MARK
-3013;ID # GETA MARK
-3014;OP # LEFT TORTOISE SHELL BRACKET
-3015;CL # RIGHT TORTOISE SHELL BRACKET
-3016;OP # LEFT WHITE LENTICULAR BRACKET
-3017;CL # RIGHT WHITE LENTICULAR BRACKET
-3018;OP # LEFT WHITE TORTOISE SHELL BRACKET
-3019;CL # RIGHT WHITE TORTOISE SHELL BRACKET
-301A;OP # LEFT WHITE SQUARE BRACKET
-301B;CL # RIGHT WHITE SQUARE BRACKET
-301C;NS # WAVE DASH
-301D;OP # REVERSED DOUBLE PRIME QUOTATION MARK
-301E;CL # DOUBLE PRIME QUOTATION MARK
-301F;CL # LOW DOUBLE PRIME QUOTATION MARK
-3020;ID # POSTAL MARK FACE
-3021;ID # HANGZHOU NUMERAL ONE
-3022;ID # HANGZHOU NUMERAL TWO
-3023;ID # HANGZHOU NUMERAL THREE
-3024;ID # HANGZHOU NUMERAL FOUR
-3025;ID # HANGZHOU NUMERAL FIVE
-3026;ID # HANGZHOU NUMERAL SIX
-3027;ID # HANGZHOU NUMERAL SEVEN
-3028;ID # HANGZHOU NUMERAL EIGHT
-3029;ID # HANGZHOU NUMERAL NINE
-302A;CM # IDEOGRAPHIC LEVEL TONE MARK
-302B;CM # IDEOGRAPHIC RISING TONE MARK
-302C;CM # IDEOGRAPHIC DEPARTING TONE MARK
-302D;CM # IDEOGRAPHIC ENTERING TONE MARK
-302E;CM # HANGUL SINGLE DOT TONE MARK
-302F;CM # HANGUL DOUBLE DOT TONE MARK
-3030;ID # WAVY DASH
-3031;ID # VERTICAL KANA REPEAT MARK
-3032;ID # VERTICAL KANA REPEAT WITH VOICED SOUND MARK
-3033;ID # VERTICAL KANA REPEAT MARK UPPER HALF
-3034;ID # VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF
-3035;ID # VERTICAL KANA REPEAT MARK LOWER HALF
-3036;ID # CIRCLED POSTAL MARK
-3037;ID # IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
-3038;ID # HANGZHOU NUMERAL TEN
-3039;ID # HANGZHOU NUMERAL TWENTY
-303A;ID # HANGZHOU NUMERAL THIRTY
-303B;NS # VERTICAL IDEOGRAPHIC ITERATION MARK
-303C;NS # MASU MARK
-303D;ID # PART ALTERNATION MARK
-303E;ID # IDEOGRAPHIC VARIATION INDICATOR
-303F;ID # IDEOGRAPHIC HALF FILL SPACE
-3041;NS # HIRAGANA LETTER SMALL A
-3042;ID # HIRAGANA LETTER A
-3043;NS # HIRAGANA LETTER SMALL I
-3044;ID # HIRAGANA LETTER I
-3045;NS # HIRAGANA LETTER SMALL U
-3046;ID # HIRAGANA LETTER U
-3047;NS # HIRAGANA LETTER SMALL E
-3048;ID # HIRAGANA LETTER E
-3049;NS # HIRAGANA LETTER SMALL O
-304A;ID # HIRAGANA LETTER O
-304B;ID # HIRAGANA LETTER KA
-304C;ID # HIRAGANA LETTER GA
-304D;ID # HIRAGANA LETTER KI
-304E;ID # HIRAGANA LETTER GI
-304F;ID # HIRAGANA LETTER KU
-3050;ID # HIRAGANA LETTER GU
-3051;ID # HIRAGANA LETTER KE
-3052;ID # HIRAGANA LETTER GE
-3053;ID # HIRAGANA LETTER KO
-3054;ID # HIRAGANA LETTER GO
-3055;ID # HIRAGANA LETTER SA
-3056;ID # HIRAGANA LETTER ZA
-3057;ID # HIRAGANA LETTER SI
-3058;ID # HIRAGANA LETTER ZI
-3059;ID # HIRAGANA LETTER SU
-305A;ID # HIRAGANA LETTER ZU
-305B;ID # HIRAGANA LETTER SE
-305C;ID # HIRAGANA LETTER ZE
-305D;ID # HIRAGANA LETTER SO
-305E;ID # HIRAGANA LETTER ZO
-305F;ID # HIRAGANA LETTER TA
-3060;ID # HIRAGANA LETTER DA
-3061;ID # HIRAGANA LETTER TI
-3062;ID # HIRAGANA LETTER DI
-3063;NS # HIRAGANA LETTER SMALL TU
-3064;ID # HIRAGANA LETTER TU
-3065;ID # HIRAGANA LETTER DU
-3066;ID # HIRAGANA LETTER TE
-3067;ID # HIRAGANA LETTER DE
-3068;ID # HIRAGANA LETTER TO
-3069;ID # HIRAGANA LETTER DO
-306A;ID # HIRAGANA LETTER NA
-306B;ID # HIRAGANA LETTER NI
-306C;ID # HIRAGANA LETTER NU
-306D;ID # HIRAGANA LETTER NE
-306E;ID # HIRAGANA LETTER NO
-306F;ID # HIRAGANA LETTER HA
-3070;ID # HIRAGANA LETTER BA
-3071;ID # HIRAGANA LETTER PA
-3072;ID # HIRAGANA LETTER HI
-3073;ID # HIRAGANA LETTER BI
-3074;ID # HIRAGANA LETTER PI
-3075;ID # HIRAGANA LETTER HU
-3076;ID # HIRAGANA LETTER BU
-3077;ID # HIRAGANA LETTER PU
-3078;ID # HIRAGANA LETTER HE
-3079;ID # HIRAGANA LETTER BE
-307A;ID # HIRAGANA LETTER PE
-307B;ID # HIRAGANA LETTER HO
-307C;ID # HIRAGANA LETTER BO
-307D;ID # HIRAGANA LETTER PO
-307E;ID # HIRAGANA LETTER MA
-307F;ID # HIRAGANA LETTER MI
-3080;ID # HIRAGANA LETTER MU
-3081;ID # HIRAGANA LETTER ME
-3082;ID # HIRAGANA LETTER MO
-3083;NS # HIRAGANA LETTER SMALL YA
-3084;ID # HIRAGANA LETTER YA
-3085;NS # HIRAGANA LETTER SMALL YU
-3086;ID # HIRAGANA LETTER YU
-3087;NS # HIRAGANA LETTER SMALL YO
-3088;ID # HIRAGANA LETTER YO
-3089;ID # HIRAGANA LETTER RA
-308A;ID # HIRAGANA LETTER RI
-308B;ID # HIRAGANA LETTER RU
-308C;ID # HIRAGANA LETTER RE
-308D;ID # HIRAGANA LETTER RO
-308E;NS # HIRAGANA LETTER SMALL WA
-308F;ID # HIRAGANA LETTER WA
-3090;ID # HIRAGANA LETTER WI
-3091;ID # HIRAGANA LETTER WE
-3092;ID # HIRAGANA LETTER WO
-3093;ID # HIRAGANA LETTER N
-3094;ID # HIRAGANA LETTER VU
-3095;NS # HIRAGANA LETTER SMALL KA
-3096;NS # HIRAGANA LETTER SMALL KE
-3099;CM # COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
-309A;CM # COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-309B;NS # KATAKANA-HIRAGANA VOICED SOUND MARK
-309C;NS # KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-309D;NS # HIRAGANA ITERATION MARK
-309E;NS # HIRAGANA VOICED ITERATION MARK
-309F;ID # HIRAGANA DIGRAPH YORI
-30A0;NS # KATAKANA-HIRAGANA DOUBLE HYPHEN
-30A1;NS # KATAKANA LETTER SMALL A
-30A2;ID # KATAKANA LETTER A
-30A3;NS # KATAKANA LETTER SMALL I
-30A4;ID # KATAKANA LETTER I
-30A5;NS # KATAKANA LETTER SMALL U
-30A6;ID # KATAKANA LETTER U
-30A7;NS # KATAKANA LETTER SMALL E
-30A8;ID # KATAKANA LETTER E
-30A9;NS # KATAKANA LETTER SMALL O
-30AA;ID # KATAKANA LETTER O
-30AB;ID # KATAKANA LETTER KA
-30AC;ID # KATAKANA LETTER GA
-30AD;ID # KATAKANA LETTER KI
-30AE;ID # KATAKANA LETTER GI
-30AF;ID # KATAKANA LETTER KU
-30B0;ID # KATAKANA LETTER GU
-30B1;ID # KATAKANA LETTER KE
-30B2;ID # KATAKANA LETTER GE
-30B3;ID # KATAKANA LETTER KO
-30B4;ID # KATAKANA LETTER GO
-30B5;ID # KATAKANA LETTER SA
-30B6;ID # KATAKANA LETTER ZA
-30B7;ID # KATAKANA LETTER SI
-30B8;ID # KATAKANA LETTER ZI
-30B9;ID # KATAKANA LETTER SU
-30BA;ID # KATAKANA LETTER ZU
-30BB;ID # KATAKANA LETTER SE
-30BC;ID # KATAKANA LETTER ZE
-30BD;ID # KATAKANA LETTER SO
-30BE;ID # KATAKANA LETTER ZO
-30BF;ID # KATAKANA LETTER TA
-30C0;ID # KATAKANA LETTER DA
-30C1;ID # KATAKANA LETTER TI
-30C2;ID # KATAKANA LETTER DI
-30C3;NS # KATAKANA LETTER SMALL TU
-30C4;ID # KATAKANA LETTER TU
-30C5;ID # KATAKANA LETTER DU
-30C6;ID # KATAKANA LETTER TE
-30C7;ID # KATAKANA LETTER DE
-30C8;ID # KATAKANA LETTER TO
-30C9;ID # KATAKANA LETTER DO
-30CA;ID # KATAKANA LETTER NA
-30CB;ID # KATAKANA LETTER NI
-30CC;ID # KATAKANA LETTER NU
-30CD;ID # KATAKANA LETTER NE
-30CE;ID # KATAKANA LETTER NO
-30CF;ID # KATAKANA LETTER HA
-30D0;ID # KATAKANA LETTER BA
-30D1;ID # KATAKANA LETTER PA
-30D2;ID # KATAKANA LETTER HI
-30D3;ID # KATAKANA LETTER BI
-30D4;ID # KATAKANA LETTER PI
-30D5;ID # KATAKANA LETTER HU
-30D6;ID # KATAKANA LETTER BU
-30D7;ID # KATAKANA LETTER PU
-30D8;ID # KATAKANA LETTER HE
-30D9;ID # KATAKANA LETTER BE
-30DA;ID # KATAKANA LETTER PE
-30DB;ID # KATAKANA LETTER HO
-30DC;ID # KATAKANA LETTER BO
-30DD;ID # KATAKANA LETTER PO
-30DE;ID # KATAKANA LETTER MA
-30DF;ID # KATAKANA LETTER MI
-30E0;ID # KATAKANA LETTER MU
-30E1;ID # KATAKANA LETTER ME
-30E2;ID # KATAKANA LETTER MO
-30E3;NS # KATAKANA LETTER SMALL YA
-30E4;ID # KATAKANA LETTER YA
-30E5;NS # KATAKANA LETTER SMALL YU
-30E6;ID # KATAKANA LETTER YU
-30E7;NS # KATAKANA LETTER SMALL YO
-30E8;ID # KATAKANA LETTER YO
-30E9;ID # KATAKANA LETTER RA
-30EA;ID # KATAKANA LETTER RI
-30EB;ID # KATAKANA LETTER RU
-30EC;ID # KATAKANA LETTER RE
-30ED;ID # KATAKANA LETTER RO
-30EE;NS # KATAKANA LETTER SMALL WA
-30EF;ID # KATAKANA LETTER WA
-30F0;ID # KATAKANA LETTER WI
-30F1;ID # KATAKANA LETTER WE
-30F2;ID # KATAKANA LETTER WO
-30F3;ID # KATAKANA LETTER N
-30F4;ID # KATAKANA LETTER VU
-30F5;NS # KATAKANA LETTER SMALL KA
-30F6;NS # KATAKANA LETTER SMALL KE
-30F7;ID # KATAKANA LETTER VA
-30F8;ID # KATAKANA LETTER VI
-30F9;ID # KATAKANA LETTER VE
-30FA;ID # KATAKANA LETTER VO
-30FB;NS # KATAKANA MIDDLE DOT
-30FC;NS # KATAKANA-HIRAGANA PROLONGED SOUND MARK
-30FD;NS # KATAKANA ITERATION MARK
-30FE;NS # KATAKANA VOICED ITERATION MARK
-30FF;ID # KATAKANA DIGRAPH KOTO
-3105;ID # BOPOMOFO LETTER B
-3106;ID # BOPOMOFO LETTER P
-3107;ID # BOPOMOFO LETTER M
-3108;ID # BOPOMOFO LETTER F
-3109;ID # BOPOMOFO LETTER D
-310A;ID # BOPOMOFO LETTER T
-310B;ID # BOPOMOFO LETTER N
-310C;ID # BOPOMOFO LETTER L
-310D;ID # BOPOMOFO LETTER G
-310E;ID # BOPOMOFO LETTER K
-310F;ID # BOPOMOFO LETTER H
-3110;ID # BOPOMOFO LETTER J
-3111;ID # BOPOMOFO LETTER Q
-3112;ID # BOPOMOFO LETTER X
-3113;ID # BOPOMOFO LETTER ZH
-3114;ID # BOPOMOFO LETTER CH
-3115;ID # BOPOMOFO LETTER SH
-3116;ID # BOPOMOFO LETTER R
-3117;ID # BOPOMOFO LETTER Z
-3118;ID # BOPOMOFO LETTER C
-3119;ID # BOPOMOFO LETTER S
-311A;ID # BOPOMOFO LETTER A
-311B;ID # BOPOMOFO LETTER O
-311C;ID # BOPOMOFO LETTER E
-311D;ID # BOPOMOFO LETTER EH
-311E;ID # BOPOMOFO LETTER AI
-311F;ID # BOPOMOFO LETTER EI
-3120;ID # BOPOMOFO LETTER AU
-3121;ID # BOPOMOFO LETTER OU
-3122;ID # BOPOMOFO LETTER AN
-3123;ID # BOPOMOFO LETTER EN
-3124;ID # BOPOMOFO LETTER ANG
-3125;ID # BOPOMOFO LETTER ENG
-3126;ID # BOPOMOFO LETTER ER
-3127;ID # BOPOMOFO LETTER I
-3128;ID # BOPOMOFO LETTER U
-3129;ID # BOPOMOFO LETTER IU
-312A;ID # BOPOMOFO LETTER V
-312B;ID # BOPOMOFO LETTER NG
-312C;ID # BOPOMOFO LETTER GN
-3131;ID # HANGUL LETTER KIYEOK
-3132;ID # HANGUL LETTER SSANGKIYEOK
-3133;ID # HANGUL LETTER KIYEOK-SIOS
-3134;ID # HANGUL LETTER NIEUN
-3135;ID # HANGUL LETTER NIEUN-CIEUC
-3136;ID # HANGUL LETTER NIEUN-HIEUH
-3137;ID # HANGUL LETTER TIKEUT
-3138;ID # HANGUL LETTER SSANGTIKEUT
-3139;ID # HANGUL LETTER RIEUL
-313A;ID # HANGUL LETTER RIEUL-KIYEOK
-313B;ID # HANGUL LETTER RIEUL-MIEUM
-313C;ID # HANGUL LETTER RIEUL-PIEUP
-313D;ID # HANGUL LETTER RIEUL-SIOS
-313E;ID # HANGUL LETTER RIEUL-THIEUTH
-313F;ID # HANGUL LETTER RIEUL-PHIEUPH
-3140;ID # HANGUL LETTER RIEUL-HIEUH
-3141;ID # HANGUL LETTER MIEUM
-3142;ID # HANGUL LETTER PIEUP
-3143;ID # HANGUL LETTER SSANGPIEUP
-3144;ID # HANGUL LETTER PIEUP-SIOS
-3145;ID # HANGUL LETTER SIOS
-3146;ID # HANGUL LETTER SSANGSIOS
-3147;ID # HANGUL LETTER IEUNG
-3148;ID # HANGUL LETTER CIEUC
-3149;ID # HANGUL LETTER SSANGCIEUC
-314A;ID # HANGUL LETTER CHIEUCH
-314B;ID # HANGUL LETTER KHIEUKH
-314C;ID # HANGUL LETTER THIEUTH
-314D;ID # HANGUL LETTER PHIEUPH
-314E;ID # HANGUL LETTER HIEUH
-314F;ID # HANGUL LETTER A
-3150;ID # HANGUL LETTER AE
-3151;ID # HANGUL LETTER YA
-3152;ID # HANGUL LETTER YAE
-3153;ID # HANGUL LETTER EO
-3154;ID # HANGUL LETTER E
-3155;ID # HANGUL LETTER YEO
-3156;ID # HANGUL LETTER YE
-3157;ID # HANGUL LETTER O
-3158;ID # HANGUL LETTER WA
-3159;ID # HANGUL LETTER WAE
-315A;ID # HANGUL LETTER OE
-315B;ID # HANGUL LETTER YO
-315C;ID # HANGUL LETTER U
-315D;ID # HANGUL LETTER WEO
-315E;ID # HANGUL LETTER WE
-315F;ID # HANGUL LETTER WI
-3160;ID # HANGUL LETTER YU
-3161;ID # HANGUL LETTER EU
-3162;ID # HANGUL LETTER YI
-3163;ID # HANGUL LETTER I
-3164;ID # HANGUL FILLER
-3165;ID # HANGUL LETTER SSANGNIEUN
-3166;ID # HANGUL LETTER NIEUN-TIKEUT
-3167;ID # HANGUL LETTER NIEUN-SIOS
-3168;ID # HANGUL LETTER NIEUN-PANSIOS
-3169;ID # HANGUL LETTER RIEUL-KIYEOK-SIOS
-316A;ID # HANGUL LETTER RIEUL-TIKEUT
-316B;ID # HANGUL LETTER RIEUL-PIEUP-SIOS
-316C;ID # HANGUL LETTER RIEUL-PANSIOS
-316D;ID # HANGUL LETTER RIEUL-YEORINHIEUH
-316E;ID # HANGUL LETTER MIEUM-PIEUP
-316F;ID # HANGUL LETTER MIEUM-SIOS
-3170;ID # HANGUL LETTER MIEUM-PANSIOS
-3171;ID # HANGUL LETTER KAPYEOUNMIEUM
-3172;ID # HANGUL LETTER PIEUP-KIYEOK
-3173;ID # HANGUL LETTER PIEUP-TIKEUT
-3174;ID # HANGUL LETTER PIEUP-SIOS-KIYEOK
-3175;ID # HANGUL LETTER PIEUP-SIOS-TIKEUT
-3176;ID # HANGUL LETTER PIEUP-CIEUC
-3177;ID # HANGUL LETTER PIEUP-THIEUTH
-3178;ID # HANGUL LETTER KAPYEOUNPIEUP
-3179;ID # HANGUL LETTER KAPYEOUNSSANGPIEUP
-317A;ID # HANGUL LETTER SIOS-KIYEOK
-317B;ID # HANGUL LETTER SIOS-NIEUN
-317C;ID # HANGUL LETTER SIOS-TIKEUT
-317D;ID # HANGUL LETTER SIOS-PIEUP
-317E;ID # HANGUL LETTER SIOS-CIEUC
-317F;ID # HANGUL LETTER PANSIOS
-3180;ID # HANGUL LETTER SSANGIEUNG
-3181;ID # HANGUL LETTER YESIEUNG
-3182;ID # HANGUL LETTER YESIEUNG-SIOS
-3183;ID # HANGUL LETTER YESIEUNG-PANSIOS
-3184;ID # HANGUL LETTER KAPYEOUNPHIEUPH
-3185;ID # HANGUL LETTER SSANGHIEUH
-3186;ID # HANGUL LETTER YEORINHIEUH
-3187;ID # HANGUL LETTER YO-YA
-3188;ID # HANGUL LETTER YO-YAE
-3189;ID # HANGUL LETTER YO-I
-318A;ID # HANGUL LETTER YU-YEO
-318B;ID # HANGUL LETTER YU-YE
-318C;ID # HANGUL LETTER YU-I
-318D;ID # HANGUL LETTER ARAEA
-318E;ID # HANGUL LETTER ARAEAE
-3190;ID # IDEOGRAPHIC ANNOTATION LINKING MARK
-3191;ID # IDEOGRAPHIC ANNOTATION REVERSE MARK
-3192;ID # IDEOGRAPHIC ANNOTATION ONE MARK
-3193;ID # IDEOGRAPHIC ANNOTATION TWO MARK
-3194;ID # IDEOGRAPHIC ANNOTATION THREE MARK
-3195;ID # IDEOGRAPHIC ANNOTATION FOUR MARK
-3196;ID # IDEOGRAPHIC ANNOTATION TOP MARK
-3197;ID # IDEOGRAPHIC ANNOTATION MIDDLE MARK
-3198;ID # IDEOGRAPHIC ANNOTATION BOTTOM MARK
-3199;ID # IDEOGRAPHIC ANNOTATION FIRST MARK
-319A;ID # IDEOGRAPHIC ANNOTATION SECOND MARK
-319B;ID # IDEOGRAPHIC ANNOTATION THIRD MARK
-319C;ID # IDEOGRAPHIC ANNOTATION FOURTH MARK
-319D;ID # IDEOGRAPHIC ANNOTATION HEAVEN MARK
-319E;ID # IDEOGRAPHIC ANNOTATION EARTH MARK
-319F;ID # IDEOGRAPHIC ANNOTATION MAN MARK
-31A0;ID # BOPOMOFO LETTER BU
-31A1;ID # BOPOMOFO LETTER ZI
-31A2;ID # BOPOMOFO LETTER JI
-31A3;ID # BOPOMOFO LETTER GU
-31A4;ID # BOPOMOFO LETTER EE
-31A5;ID # BOPOMOFO LETTER ENN
-31A6;ID # BOPOMOFO LETTER OO
-31A7;ID # BOPOMOFO LETTER ONN
-31A8;ID # BOPOMOFO LETTER IR
-31A9;ID # BOPOMOFO LETTER ANN
-31AA;ID # BOPOMOFO LETTER INN
-31AB;ID # BOPOMOFO LETTER UNN
-31AC;ID # BOPOMOFO LETTER IM
-31AD;ID # BOPOMOFO LETTER NGG
-31AE;ID # BOPOMOFO LETTER AINN
-31AF;ID # BOPOMOFO LETTER AUNN
-31B0;ID # BOPOMOFO LETTER AM
-31B1;ID # BOPOMOFO LETTER OM
-31B2;ID # BOPOMOFO LETTER ONG
-31B3;ID # BOPOMOFO LETTER INNN
-31B4;ID # BOPOMOFO FINAL LETTER P
-31B5;ID # BOPOMOFO FINAL LETTER T
-31B6;ID # BOPOMOFO FINAL LETTER K
-31B7;ID # BOPOMOFO FINAL LETTER H
-31C0;ID # CJK STROKE T
-31C1;ID # CJK STROKE WG
-31C2;ID # CJK STROKE XG
-31C3;ID # CJK STROKE BXG
-31C4;ID # CJK STROKE SW
-31C5;ID # CJK STROKE HZZ
-31C6;ID # CJK STROKE HZG
-31C7;ID # CJK STROKE HP
-31C8;ID # CJK STROKE HZWG
-31C9;ID # CJK STROKE SZWG
-31CA;ID # CJK STROKE HZT
-31CB;ID # CJK STROKE HZZP
-31CC;ID # CJK STROKE HPWG
-31CD;ID # CJK STROKE HZW
-31CE;ID # CJK STROKE HZZZ
-31CF;ID # CJK STROKE N
-31F0;NS # KATAKANA LETTER SMALL KU
-31F1;NS # KATAKANA LETTER SMALL SI
-31F2;NS # KATAKANA LETTER SMALL SU
-31F3;NS # KATAKANA LETTER SMALL TO
-31F4;NS # KATAKANA LETTER SMALL NU
-31F5;NS # KATAKANA LETTER SMALL HA
-31F6;NS # KATAKANA LETTER SMALL HI
-31F7;NS # KATAKANA LETTER SMALL HU
-31F8;NS # KATAKANA LETTER SMALL HE
-31F9;NS # KATAKANA LETTER SMALL HO
-31FA;NS # KATAKANA LETTER SMALL MU
-31FB;NS # KATAKANA LETTER SMALL RA
-31FC;NS # KATAKANA LETTER SMALL RI
-31FD;NS # KATAKANA LETTER SMALL RU
-31FE;NS # KATAKANA LETTER SMALL RE
-31FF;NS # KATAKANA LETTER SMALL RO
-3200;ID # PARENTHESIZED HANGUL KIYEOK
-3201;ID # PARENTHESIZED HANGUL NIEUN
-3202;ID # PARENTHESIZED HANGUL TIKEUT
-3203;ID # PARENTHESIZED HANGUL RIEUL
-3204;ID # PARENTHESIZED HANGUL MIEUM
-3205;ID # PARENTHESIZED HANGUL PIEUP
-3206;ID # PARENTHESIZED HANGUL SIOS
-3207;ID # PARENTHESIZED HANGUL IEUNG
-3208;ID # PARENTHESIZED HANGUL CIEUC
-3209;ID # PARENTHESIZED HANGUL CHIEUCH
-320A;ID # PARENTHESIZED HANGUL KHIEUKH
-320B;ID # PARENTHESIZED HANGUL THIEUTH
-320C;ID # PARENTHESIZED HANGUL PHIEUPH
-320D;ID # PARENTHESIZED HANGUL HIEUH
-320E;ID # PARENTHESIZED HANGUL KIYEOK A
-320F;ID # PARENTHESIZED HANGUL NIEUN A
-3210;ID # PARENTHESIZED HANGUL TIKEUT A
-3211;ID # PARENTHESIZED HANGUL RIEUL A
-3212;ID # PARENTHESIZED HANGUL MIEUM A
-3213;ID # PARENTHESIZED HANGUL PIEUP A
-3214;ID # PARENTHESIZED HANGUL SIOS A
-3215;ID # PARENTHESIZED HANGUL IEUNG A
-3216;ID # PARENTHESIZED HANGUL CIEUC A
-3217;ID # PARENTHESIZED HANGUL CHIEUCH A
-3218;ID # PARENTHESIZED HANGUL KHIEUKH A
-3219;ID # PARENTHESIZED HANGUL THIEUTH A
-321A;ID # PARENTHESIZED HANGUL PHIEUPH A
-321B;ID # PARENTHESIZED HANGUL HIEUH A
-321C;ID # PARENTHESIZED HANGUL CIEUC U
-321D;ID # PARENTHESIZED KOREAN CHARACTER OJEON
-321E;ID # PARENTHESIZED KOREAN CHARACTER O HU
-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
-3250;ID # PARTNERSHIP SIGN
-3251;ID # CIRCLED NUMBER TWENTY ONE
-3252;ID # CIRCLED NUMBER TWENTY TWO
-3253;ID # CIRCLED NUMBER TWENTY THREE
-3254;ID # CIRCLED NUMBER TWENTY FOUR
-3255;ID # CIRCLED NUMBER TWENTY FIVE
-3256;ID # CIRCLED NUMBER TWENTY SIX
-3257;ID # CIRCLED NUMBER TWENTY SEVEN
-3258;ID # CIRCLED NUMBER TWENTY EIGHT
-3259;ID # CIRCLED NUMBER TWENTY NINE
-325A;ID # CIRCLED NUMBER THIRTY
-325B;ID # CIRCLED NUMBER THIRTY ONE
-325C;ID # CIRCLED NUMBER THIRTY TWO
-325D;ID # CIRCLED NUMBER THIRTY THREE
-325E;ID # CIRCLED NUMBER THIRTY FOUR
-325F;ID # CIRCLED NUMBER THIRTY FIVE
-3260;ID # CIRCLED HANGUL KIYEOK
-3261;ID # CIRCLED HANGUL NIEUN
-3262;ID # CIRCLED HANGUL TIKEUT
-3263;ID # CIRCLED HANGUL RIEUL
-3264;ID # CIRCLED HANGUL MIEUM
-3265;ID # CIRCLED HANGUL PIEUP
-3266;ID # CIRCLED HANGUL SIOS
-3267;ID # CIRCLED HANGUL IEUNG
-3268;ID # CIRCLED HANGUL CIEUC
-3269;ID # CIRCLED HANGUL CHIEUCH
-326A;ID # CIRCLED HANGUL KHIEUKH
-326B;ID # CIRCLED HANGUL THIEUTH
-326C;ID # CIRCLED HANGUL PHIEUPH
-326D;ID # CIRCLED HANGUL HIEUH
-326E;ID # CIRCLED HANGUL KIYEOK A
-326F;ID # CIRCLED HANGUL NIEUN A
-3270;ID # CIRCLED HANGUL TIKEUT A
-3271;ID # CIRCLED HANGUL RIEUL A
-3272;ID # CIRCLED HANGUL MIEUM A
-3273;ID # CIRCLED HANGUL PIEUP A
-3274;ID # CIRCLED HANGUL SIOS A
-3275;ID # CIRCLED HANGUL IEUNG A
-3276;ID # CIRCLED HANGUL CIEUC A
-3277;ID # CIRCLED HANGUL CHIEUCH A
-3278;ID # CIRCLED HANGUL KHIEUKH A
-3279;ID # CIRCLED HANGUL THIEUTH A
-327A;ID # CIRCLED HANGUL PHIEUPH A
-327B;ID # CIRCLED HANGUL HIEUH A
-327C;ID # CIRCLED KOREAN CHARACTER CHAMKO
-327D;ID # CIRCLED KOREAN CHARACTER JUEUI
-327E;ID # CIRCLED HANGUL IEUNG U
-327F;ID # KOREAN STANDARD SYMBOL
-3280;ID # CIRCLED IDEOGRAPH ONE
-3281;ID # CIRCLED IDEOGRAPH TWO
-3282;ID # CIRCLED IDEOGRAPH THREE
-3283;ID # CIRCLED IDEOGRAPH FOUR
-3284;ID # CIRCLED IDEOGRAPH FIVE
-3285;ID # CIRCLED IDEOGRAPH SIX
-3286;ID # CIRCLED IDEOGRAPH SEVEN
-3287;ID # CIRCLED IDEOGRAPH EIGHT
-3288;ID # CIRCLED IDEOGRAPH NINE
-3289;ID # CIRCLED IDEOGRAPH TEN
-328A;ID # CIRCLED IDEOGRAPH MOON
-328B;ID # CIRCLED IDEOGRAPH FIRE
-328C;ID # CIRCLED IDEOGRAPH WATER
-328D;ID # CIRCLED IDEOGRAPH WOOD
-328E;ID # CIRCLED IDEOGRAPH METAL
-328F;ID # CIRCLED IDEOGRAPH EARTH
-3290;ID # CIRCLED IDEOGRAPH SUN
-3291;ID # CIRCLED IDEOGRAPH STOCK
-3292;ID # CIRCLED IDEOGRAPH HAVE
-3293;ID # CIRCLED IDEOGRAPH SOCIETY
-3294;ID # CIRCLED IDEOGRAPH NAME
-3295;ID # CIRCLED IDEOGRAPH SPECIAL
-3296;ID # CIRCLED IDEOGRAPH FINANCIAL
-3297;ID # CIRCLED IDEOGRAPH CONGRATULATION
-3298;ID # CIRCLED IDEOGRAPH LABOR
-3299;ID # CIRCLED IDEOGRAPH SECRET
-329A;ID # CIRCLED IDEOGRAPH MALE
-329B;ID # CIRCLED IDEOGRAPH FEMALE
-329C;ID # CIRCLED IDEOGRAPH SUITABLE
-329D;ID # CIRCLED IDEOGRAPH EXCELLENT
-329E;ID # CIRCLED IDEOGRAPH PRINT
-329F;ID # CIRCLED IDEOGRAPH ATTENTION
-32A0;ID # CIRCLED IDEOGRAPH ITEM
-32A1;ID # CIRCLED IDEOGRAPH REST
-32A2;ID # CIRCLED IDEOGRAPH COPY
-32A3;ID # CIRCLED IDEOGRAPH CORRECT
-32A4;ID # CIRCLED IDEOGRAPH HIGH
-32A5;ID # CIRCLED IDEOGRAPH CENTRE
-32A6;ID # CIRCLED IDEOGRAPH LOW
-32A7;ID # CIRCLED IDEOGRAPH LEFT
-32A8;ID # CIRCLED IDEOGRAPH RIGHT
-32A9;ID # CIRCLED IDEOGRAPH MEDICINE
-32AA;ID # CIRCLED IDEOGRAPH RELIGION
-32AB;ID # CIRCLED IDEOGRAPH STUDY
-32AC;ID # CIRCLED IDEOGRAPH SUPERVISE
-32AD;ID # CIRCLED IDEOGRAPH ENTERPRISE
-32AE;ID # CIRCLED IDEOGRAPH RESOURCE
-32AF;ID # CIRCLED IDEOGRAPH ALLIANCE
-32B0;ID # CIRCLED IDEOGRAPH NIGHT
-32B1;ID # CIRCLED NUMBER THIRTY SIX
-32B2;ID # CIRCLED NUMBER THIRTY SEVEN
-32B3;ID # CIRCLED NUMBER THIRTY EIGHT
-32B4;ID # CIRCLED NUMBER THIRTY NINE
-32B5;ID # CIRCLED NUMBER FORTY
-32B6;ID # CIRCLED NUMBER FORTY ONE
-32B7;ID # CIRCLED NUMBER FORTY TWO
-32B8;ID # CIRCLED NUMBER FORTY THREE
-32B9;ID # CIRCLED NUMBER FORTY FOUR
-32BA;ID # CIRCLED NUMBER FORTY FIVE
-32BB;ID # CIRCLED NUMBER FORTY SIX
-32BC;ID # CIRCLED NUMBER FORTY SEVEN
-32BD;ID # CIRCLED NUMBER FORTY EIGHT
-32BE;ID # CIRCLED NUMBER FORTY NINE
-32BF;ID # CIRCLED NUMBER FIFTY
-32C0;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
-32C1;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
-32C2;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
-32C3;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
-32C4;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
-32C5;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
-32C6;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
-32C7;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
-32C8;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
-32C9;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
-32CA;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
-32CB;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
-32CC;ID # SQUARE HG
-32CD;ID # SQUARE ERG
-32CE;ID # SQUARE EV
-32CF;ID # LIMITED LIABILITY SIGN
-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
-3377;ID # SQUARE DM
-3378;ID # SQUARE DM SQUARED
-3379;ID # SQUARE DM CUBED
-337A;ID # SQUARE IU
-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
-33DE;ID # SQUARE V OVER M
-33DF;ID # SQUARE A OVER M
-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
-33FF;ID # SQUARE GAL
-3400..4DB5;ID # <CJK Ideograph Extension A, First>..<CJK Ideograph Extension A, Last>
-4DC0;AL # HEXAGRAM FOR THE CREATIVE HEAVEN
-4DC1;AL # HEXAGRAM FOR THE RECEPTIVE EARTH
-4DC2;AL # HEXAGRAM FOR DIFFICULTY AT THE BEGINNING
-4DC3;AL # HEXAGRAM FOR YOUTHFUL FOLLY
-4DC4;AL # HEXAGRAM FOR WAITING
-4DC5;AL # HEXAGRAM FOR CONFLICT
-4DC6;AL # HEXAGRAM FOR THE ARMY
-4DC7;AL # HEXAGRAM FOR HOLDING TOGETHER
-4DC8;AL # HEXAGRAM FOR SMALL TAMING
-4DC9;AL # HEXAGRAM FOR TREADING
-4DCA;AL # HEXAGRAM FOR PEACE
-4DCB;AL # HEXAGRAM FOR STANDSTILL
-4DCC;AL # HEXAGRAM FOR FELLOWSHIP
-4DCD;AL # HEXAGRAM FOR GREAT POSSESSION
-4DCE;AL # HEXAGRAM FOR MODESTY
-4DCF;AL # HEXAGRAM FOR ENTHUSIASM
-4DD0;AL # HEXAGRAM FOR FOLLOWING
-4DD1;AL # HEXAGRAM FOR WORK ON THE DECAYED
-4DD2;AL # HEXAGRAM FOR APPROACH
-4DD3;AL # HEXAGRAM FOR CONTEMPLATION
-4DD4;AL # HEXAGRAM FOR BITING THROUGH
-4DD5;AL # HEXAGRAM FOR GRACE
-4DD6;AL # HEXAGRAM FOR SPLITTING APART
-4DD7;AL # HEXAGRAM FOR RETURN
-4DD8;AL # HEXAGRAM FOR INNOCENCE
-4DD9;AL # HEXAGRAM FOR GREAT TAMING
-4DDA;AL # HEXAGRAM FOR MOUTH CORNERS
-4DDB;AL # HEXAGRAM FOR GREAT PREPONDERANCE
-4DDC;AL # HEXAGRAM FOR THE ABYSMAL WATER
-4DDD;AL # HEXAGRAM FOR THE CLINGING FIRE
-4DDE;AL # HEXAGRAM FOR INFLUENCE
-4DDF;AL # HEXAGRAM FOR DURATION
-4DE0;AL # HEXAGRAM FOR RETREAT
-4DE1;AL # HEXAGRAM FOR GREAT POWER
-4DE2;AL # HEXAGRAM FOR PROGRESS
-4DE3;AL # HEXAGRAM FOR DARKENING OF THE LIGHT
-4DE4;AL # HEXAGRAM FOR THE FAMILY
-4DE5;AL # HEXAGRAM FOR OPPOSITION
-4DE6;AL # HEXAGRAM FOR OBSTRUCTION
-4DE7;AL # HEXAGRAM FOR DELIVERANCE
-4DE8;AL # HEXAGRAM FOR DECREASE
-4DE9;AL # HEXAGRAM FOR INCREASE
-4DEA;AL # HEXAGRAM FOR BREAKTHROUGH
-4DEB;AL # HEXAGRAM FOR COMING TO MEET
-4DEC;AL # HEXAGRAM FOR GATHERING TOGETHER
-4DED;AL # HEXAGRAM FOR PUSHING UPWARD
-4DEE;AL # HEXAGRAM FOR OPPRESSION
-4DEF;AL # HEXAGRAM FOR THE WELL
-4DF0;AL # HEXAGRAM FOR REVOLUTION
-4DF1;AL # HEXAGRAM FOR THE CAULDRON
-4DF2;AL # HEXAGRAM FOR THE AROUSING THUNDER
-4DF3;AL # HEXAGRAM FOR THE KEEPING STILL MOUNTAIN
-4DF4;AL # HEXAGRAM FOR DEVELOPMENT
-4DF5;AL # HEXAGRAM FOR THE MARRYING MAIDEN
-4DF6;AL # HEXAGRAM FOR ABUNDANCE
-4DF7;AL # HEXAGRAM FOR THE WANDERER
-4DF8;AL # HEXAGRAM FOR THE GENTLE WIND
-4DF9;AL # HEXAGRAM FOR THE JOYOUS LAKE
-4DFA;AL # HEXAGRAM FOR DISPERSION
-4DFB;AL # HEXAGRAM FOR LIMITATION
-4DFC;AL # HEXAGRAM FOR INNER TRUTH
-4DFD;AL # HEXAGRAM FOR SMALL PREPONDERANCE
-4DFE;AL # HEXAGRAM FOR AFTER COMPLETION
-4DFF;AL # HEXAGRAM FOR BEFORE COMPLETION
-4E00..9FBB;ID # <CJK Ideograph, First>..<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;NS # YI SYLLABLE WU
-A016;ID # YI SYLLABLE BIT
-A017;ID # YI SYLLABLE BIX
-A018;ID # YI SYLLABLE BI
-A019;ID # YI SYLLABLE BIP
-A01A;ID # YI SYLLABLE BIET
-A01B;ID # YI SYLLABLE BIEX
-A01C;ID # YI SYLLABLE BIE
-A01D;ID # YI SYLLABLE BIEP
-A01E;ID # YI SYLLABLE BAT
-A01F;ID # YI SYLLABLE BAX
-A020;ID # YI SYLLABLE BA
-A021;ID # YI SYLLABLE BAP
-A022;ID # YI SYLLABLE BUOX
-A023;ID # YI SYLLABLE BUO
-A024;ID # YI SYLLABLE BUOP
-A025;ID # YI SYLLABLE BOT
-A026;ID # YI SYLLABLE BOX
-A027;ID # YI SYLLABLE BO
-A028;ID # YI SYLLABLE BOP
-A029;ID # YI SYLLABLE BEX
-A02A;ID # YI SYLLABLE BE
-A02B;ID # YI SYLLABLE BEP
-A02C;ID # YI SYLLABLE BUT
-A02D;ID # YI SYLLABLE BUX
-A02E;ID # YI SYLLABLE BU
-A02F;ID # YI SYLLABLE BUP
-A030;ID # YI SYLLABLE BURX
-A031;ID # YI SYLLABLE BUR
-A032;ID # YI SYLLABLE BYT
-A033;ID # YI SYLLABLE BYX
-A034;ID # YI SYLLABLE BY
-A035;ID # YI SYLLABLE BYP
-A036;ID # YI SYLLABLE BYRX
-A037;ID # YI SYLLABLE BYR
-A038;ID # YI SYLLABLE PIT
-A039;ID # YI SYLLABLE PIX
-A03A;ID # YI SYLLABLE PI
-A03B;ID # YI SYLLABLE PIP
-A03C;ID # YI SYLLABLE PIEX
-A03D;ID # YI SYLLABLE PIE
-A03E;ID # YI SYLLABLE PIEP
-A03F;ID # YI SYLLABLE PAT
-A040;ID # YI SYLLABLE PAX
-A041;ID # YI SYLLABLE PA
-A042;ID # YI SYLLABLE PAP
-A043;ID # YI SYLLABLE PUOX
-A044;ID # YI SYLLABLE PUO
-A045;ID # YI SYLLABLE PUOP
-A046;ID # YI SYLLABLE POT
-A047;ID # YI SYLLABLE POX
-A048;ID # YI SYLLABLE PO
-A049;ID # YI SYLLABLE POP
-A04A;ID # YI SYLLABLE PUT
-A04B;ID # YI SYLLABLE PUX
-A04C;ID # YI SYLLABLE PU
-A04D;ID # YI SYLLABLE PUP
-A04E;ID # YI SYLLABLE PURX
-A04F;ID # YI SYLLABLE PUR
-A050;ID # YI SYLLABLE PYT
-A051;ID # YI SYLLABLE PYX
-A052;ID # YI SYLLABLE PY
-A053;ID # YI SYLLABLE PYP
-A054;ID # YI SYLLABLE PYRX
-A055;ID # YI SYLLABLE PYR
-A056;ID # YI SYLLABLE BBIT
-A057;ID # YI SYLLABLE BBIX
-A058;ID # YI SYLLABLE BBI
-A059;ID # YI SYLLABLE BBIP
-A05A;ID # YI SYLLABLE BBIET
-A05B;ID # YI SYLLABLE BBIEX
-A05C;ID # YI SYLLABLE BBIE
-A05D;ID # YI SYLLABLE BBIEP
-A05E;ID # YI SYLLABLE BBAT
-A05F;ID # YI SYLLABLE BBAX
-A060;ID # YI SYLLABLE BBA
-A061;ID # YI SYLLABLE BBAP
-A062;ID # YI SYLLABLE BBUOX
-A063;ID # YI SYLLABLE BBUO
-A064;ID # YI SYLLABLE BBUOP
-A065;ID # YI SYLLABLE BBOT
-A066;ID # YI SYLLABLE BBOX
-A067;ID # YI SYLLABLE BBO
-A068;ID # YI SYLLABLE BBOP
-A069;ID # YI SYLLABLE BBEX
-A06A;ID # YI SYLLABLE BBE
-A06B;ID # YI SYLLABLE BBEP
-A06C;ID # YI SYLLABLE BBUT
-A06D;ID # YI SYLLABLE BBUX
-A06E;ID # YI SYLLABLE BBU
-A06F;ID # YI SYLLABLE BBUP
-A070;ID # YI SYLLABLE BBURX
-A071;ID # YI SYLLABLE BBUR
-A072;ID # YI SYLLABLE BBYT
-A073;ID # YI SYLLABLE BBYX
-A074;ID # YI SYLLABLE BBY
-A075;ID # YI SYLLABLE BBYP
-A076;ID # YI SYLLABLE NBIT
-A077;ID # YI SYLLABLE NBIX
-A078;ID # YI SYLLABLE NBI
-A079;ID # YI SYLLABLE NBIP
-A07A;ID # YI SYLLABLE NBIEX
-A07B;ID # YI SYLLABLE NBIE
-A07C;ID # YI SYLLABLE NBIEP
-A07D;ID # YI SYLLABLE NBAT
-A07E;ID # YI SYLLABLE NBAX
-A07F;ID # YI SYLLABLE NBA
-A080;ID # YI SYLLABLE NBAP
-A081;ID # YI SYLLABLE NBOT
-A082;ID # YI SYLLABLE NBOX
-A083;ID # YI SYLLABLE NBO
-A084;ID # YI SYLLABLE NBOP
-A085;ID # YI SYLLABLE NBUT
-A086;ID # YI SYLLABLE NBUX
-A087;ID # YI SYLLABLE NBU
-A088;ID # YI SYLLABLE NBUP
-A089;ID # YI SYLLABLE NBURX
-A08A;ID # YI SYLLABLE NBUR
-A08B;ID # YI SYLLABLE NBYT
-A08C;ID # YI SYLLABLE NBYX
-A08D;ID # YI SYLLABLE NBY
-A08E;ID # YI SYLLABLE NBYP
-A08F;ID # YI SYLLABLE NBYRX
-A090;ID # YI SYLLABLE NBYR
-A091;ID # YI SYLLABLE HMIT
-A092;ID # YI SYLLABLE HMIX
-A093;ID # YI SYLLABLE HMI
-A094;ID # YI SYLLABLE HMIP
-A095;ID # YI SYLLABLE HMIEX
-A096;ID # YI SYLLABLE HMIE
-A097;ID # YI SYLLABLE HMIEP
-A098;ID # YI SYLLABLE HMAT
-A099;ID # YI SYLLABLE HMAX
-A09A;ID # YI SYLLABLE HMA
-A09B;ID # YI SYLLABLE HMAP
-A09C;ID # YI SYLLABLE HMUOX
-A09D;ID # YI SYLLABLE HMUO
-A09E;ID # YI SYLLABLE HMUOP
-A09F;ID # YI SYLLABLE HMOT
-A0A0;ID # YI SYLLABLE HMOX
-A0A1;ID # YI SYLLABLE HMO
-A0A2;ID # YI SYLLABLE HMOP
-A0A3;ID # YI SYLLABLE HMUT
-A0A4;ID # YI SYLLABLE HMUX
-A0A5;ID # YI SYLLABLE HMU
-A0A6;ID # YI SYLLABLE HMUP
-A0A7;ID # YI SYLLABLE HMURX
-A0A8;ID # YI SYLLABLE HMUR
-A0A9;ID # YI SYLLABLE HMYX
-A0AA;ID # YI SYLLABLE HMY
-A0AB;ID # YI SYLLABLE HMYP
-A0AC;ID # YI SYLLABLE HMYRX
-A0AD;ID # YI SYLLABLE HMYR
-A0AE;ID # YI SYLLABLE MIT
-A0AF;ID # YI SYLLABLE MIX
-A0B0;ID # YI SYLLABLE MI
-A0B1;ID # YI SYLLABLE MIP
-A0B2;ID # YI SYLLABLE MIEX
-A0B3;ID # YI SYLLABLE MIE
-A0B4;ID # YI SYLLABLE MIEP
-A0B5;ID # YI SYLLABLE MAT
-A0B6;ID # YI SYLLABLE MAX
-A0B7;ID # YI SYLLABLE MA
-A0B8;ID # YI SYLLABLE MAP
-A0B9;ID # YI SYLLABLE MUOT
-A0BA;ID # YI SYLLABLE MUOX
-A0BB;ID # YI SYLLABLE MUO
-A0BC;ID # YI SYLLABLE MUOP
-A0BD;ID # YI SYLLABLE MOT
-A0BE;ID # YI SYLLABLE MOX
-A0BF;ID # YI SYLLABLE MO
-A0C0;ID # YI SYLLABLE MOP
-A0C1;ID # YI SYLLABLE MEX
-A0C2;ID # YI SYLLABLE ME
-A0C3;ID # YI SYLLABLE MUT
-A0C4;ID # YI SYLLABLE MUX
-A0C5;ID # YI SYLLABLE MU
-A0C6;ID # YI SYLLABLE MUP
-A0C7;ID # YI SYLLABLE MURX
-A0C8;ID # YI SYLLABLE MUR
-A0C9;ID # YI SYLLABLE MYT
-A0CA;ID # YI SYLLABLE MYX
-A0CB;ID # YI SYLLABLE MY
-A0CC;ID # YI SYLLABLE MYP
-A0CD;ID # YI SYLLABLE FIT
-A0CE;ID # YI SYLLABLE FIX
-A0CF;ID # YI SYLLABLE FI
-A0D0;ID # YI SYLLABLE FIP
-A0D1;ID # YI SYLLABLE FAT
-A0D2;ID # YI SYLLABLE FAX
-A0D3;ID # YI SYLLABLE FA
-A0D4;ID # YI SYLLABLE FAP
-A0D5;ID # YI SYLLABLE FOX
-A0D6;ID # YI SYLLABLE FO
-A0D7;ID # YI SYLLABLE FOP
-A0D8;ID # YI SYLLABLE FUT
-A0D9;ID # YI SYLLABLE FUX
-A0DA;ID # YI SYLLABLE FU
-A0DB;ID # YI SYLLABLE FUP
-A0DC;ID # YI SYLLABLE FURX
-A0DD;ID # YI SYLLABLE FUR
-A0DE;ID # YI SYLLABLE FYT
-A0DF;ID # YI SYLLABLE FYX
-A0E0;ID # YI SYLLABLE FY
-A0E1;ID # YI SYLLABLE FYP
-A0E2;ID # YI SYLLABLE VIT
-A0E3;ID # YI SYLLABLE VIX
-A0E4;ID # YI SYLLABLE VI
-A0E5;ID # YI SYLLABLE VIP
-A0E6;ID # YI SYLLABLE VIET
-A0E7;ID # YI SYLLABLE VIEX
-A0E8;ID # YI SYLLABLE VIE
-A0E9;ID # YI SYLLABLE VIEP
-A0EA;ID # YI SYLLABLE VAT
-A0EB;ID # YI SYLLABLE VAX
-A0EC;ID # YI SYLLABLE VA
-A0ED;ID # YI SYLLABLE VAP
-A0EE;ID # YI SYLLABLE VOT
-A0EF;ID # YI SYLLABLE VOX
-A0F0;ID # YI SYLLABLE VO
-A0F1;ID # YI SYLLABLE VOP
-A0F2;ID # YI SYLLABLE VEX
-A0F3;ID # YI SYLLABLE VEP
-A0F4;ID # YI SYLLABLE VUT
-A0F5;ID # YI SYLLABLE VUX
-A0F6;ID # YI SYLLABLE VU
-A0F7;ID # YI SYLLABLE VUP
-A0F8;ID # YI SYLLABLE VURX
-A0F9;ID # YI SYLLABLE VUR
-A0FA;ID # YI SYLLABLE VYT
-A0FB;ID # YI SYLLABLE VYX
-A0FC;ID # YI SYLLABLE VY
-A0FD;ID # YI SYLLABLE VYP
-A0FE;ID # YI SYLLABLE VYRX
-A0FF;ID # YI SYLLABLE VYR
-A100;ID # YI SYLLABLE DIT
-A101;ID # YI SYLLABLE DIX
-A102;ID # YI SYLLABLE DI
-A103;ID # YI SYLLABLE DIP
-A104;ID # YI SYLLABLE DIEX
-A105;ID # YI SYLLABLE DIE
-A106;ID # YI SYLLABLE DIEP
-A107;ID # YI SYLLABLE DAT
-A108;ID # YI SYLLABLE DAX
-A109;ID # YI SYLLABLE DA
-A10A;ID # YI SYLLABLE DAP
-A10B;ID # YI SYLLABLE DUOX
-A10C;ID # YI SYLLABLE DUO
-A10D;ID # YI SYLLABLE DOT
-A10E;ID # YI SYLLABLE DOX
-A10F;ID # YI SYLLABLE DO
-A110;ID # YI SYLLABLE DOP
-A111;ID # YI SYLLABLE DEX
-A112;ID # YI SYLLABLE DE
-A113;ID # YI SYLLABLE DEP
-A114;ID # YI SYLLABLE DUT
-A115;ID # YI SYLLABLE DUX
-A116;ID # YI SYLLABLE DU
-A117;ID # YI SYLLABLE DUP
-A118;ID # YI SYLLABLE DURX
-A119;ID # YI SYLLABLE DUR
-A11A;ID # YI SYLLABLE TIT
-A11B;ID # YI SYLLABLE TIX
-A11C;ID # YI SYLLABLE TI
-A11D;ID # YI SYLLABLE TIP
-A11E;ID # YI SYLLABLE TIEX
-A11F;ID # YI SYLLABLE TIE
-A120;ID # YI SYLLABLE TIEP
-A121;ID # YI SYLLABLE TAT
-A122;ID # YI SYLLABLE TAX
-A123;ID # YI SYLLABLE TA
-A124;ID # YI SYLLABLE TAP
-A125;ID # YI SYLLABLE TUOT
-A126;ID # YI SYLLABLE TUOX
-A127;ID # YI SYLLABLE TUO
-A128;ID # YI SYLLABLE TUOP
-A129;ID # YI SYLLABLE TOT
-A12A;ID # YI SYLLABLE TOX
-A12B;ID # YI SYLLABLE TO
-A12C;ID # YI SYLLABLE TOP
-A12D;ID # YI SYLLABLE TEX
-A12E;ID # YI SYLLABLE TE
-A12F;ID # YI SYLLABLE TEP
-A130;ID # YI SYLLABLE TUT
-A131;ID # YI SYLLABLE TUX
-A132;ID # YI SYLLABLE TU
-A133;ID # YI SYLLABLE TUP
-A134;ID # YI SYLLABLE TURX
-A135;ID # YI SYLLABLE TUR
-A136;ID # YI SYLLABLE DDIT
-A137;ID # YI SYLLABLE DDIX
-A138;ID # YI SYLLABLE DDI
-A139;ID # YI SYLLABLE DDIP
-A13A;ID # YI SYLLABLE DDIEX
-A13B;ID # YI SYLLABLE DDIE
-A13C;ID # YI SYLLABLE DDIEP
-A13D;ID # YI SYLLABLE DDAT
-A13E;ID # YI SYLLABLE DDAX
-A13F;ID # YI SYLLABLE DDA
-A140;ID # YI SYLLABLE DDAP
-A141;ID # YI SYLLABLE DDUOX
-A142;ID # YI SYLLABLE DDUO
-A143;ID # YI SYLLABLE DDUOP
-A144;ID # YI SYLLABLE DDOT
-A145;ID # YI SYLLABLE DDOX
-A146;ID # YI SYLLABLE DDO
-A147;ID # YI SYLLABLE DDOP
-A148;ID # YI SYLLABLE DDEX
-A149;ID # YI SYLLABLE DDE
-A14A;ID # YI SYLLABLE DDEP
-A14B;ID # YI SYLLABLE DDUT
-A14C;ID # YI SYLLABLE DDUX
-A14D;ID # YI SYLLABLE DDU
-A14E;ID # YI SYLLABLE DDUP
-A14F;ID # YI SYLLABLE DDURX
-A150;ID # YI SYLLABLE DDUR
-A151;ID # YI SYLLABLE NDIT
-A152;ID # YI SYLLABLE NDIX
-A153;ID # YI SYLLABLE NDI
-A154;ID # YI SYLLABLE NDIP
-A155;ID # YI SYLLABLE NDIEX
-A156;ID # YI SYLLABLE NDIE
-A157;ID # YI SYLLABLE NDAT
-A158;ID # YI SYLLABLE NDAX
-A159;ID # YI SYLLABLE NDA
-A15A;ID # YI SYLLABLE NDAP
-A15B;ID # YI SYLLABLE NDOT
-A15C;ID # YI SYLLABLE NDOX
-A15D;ID # YI SYLLABLE NDO
-A15E;ID # YI SYLLABLE NDOP
-A15F;ID # YI SYLLABLE NDEX
-A160;ID # YI SYLLABLE NDE
-A161;ID # YI SYLLABLE NDEP
-A162;ID # YI SYLLABLE NDUT
-A163;ID # YI SYLLABLE NDUX
-A164;ID # YI SYLLABLE NDU
-A165;ID # YI SYLLABLE NDUP
-A166;ID # YI SYLLABLE NDURX
-A167;ID # YI SYLLABLE NDUR
-A168;ID # YI SYLLABLE HNIT
-A169;ID # YI SYLLABLE HNIX
-A16A;ID # YI SYLLABLE HNI
-A16B;ID # YI SYLLABLE HNIP
-A16C;ID # YI SYLLABLE HNIET
-A16D;ID # YI SYLLABLE HNIEX
-A16E;ID # YI SYLLABLE HNIE
-A16F;ID # YI SYLLABLE HNIEP
-A170;ID # YI SYLLABLE HNAT
-A171;ID # YI SYLLABLE HNAX
-A172;ID # YI SYLLABLE HNA
-A173;ID # YI SYLLABLE HNAP
-A174;ID # YI SYLLABLE HNUOX
-A175;ID # YI SYLLABLE HNUO
-A176;ID # YI SYLLABLE HNOT
-A177;ID # YI SYLLABLE HNOX
-A178;ID # YI SYLLABLE HNOP
-A179;ID # YI SYLLABLE HNEX
-A17A;ID # YI SYLLABLE HNE
-A17B;ID # YI SYLLABLE HNEP
-A17C;ID # YI SYLLABLE HNUT
-A17D;ID # YI SYLLABLE NIT
-A17E;ID # YI SYLLABLE NIX
-A17F;ID # YI SYLLABLE NI
-A180;ID # YI SYLLABLE NIP
-A181;ID # YI SYLLABLE NIEX
-A182;ID # YI SYLLABLE NIE
-A183;ID # YI SYLLABLE NIEP
-A184;ID # YI SYLLABLE NAX
-A185;ID # YI SYLLABLE NA
-A186;ID # YI SYLLABLE NAP
-A187;ID # YI SYLLABLE NUOX
-A188;ID # YI SYLLABLE NUO
-A189;ID # YI SYLLABLE NUOP
-A18A;ID # YI SYLLABLE NOT
-A18B;ID # YI SYLLABLE NOX
-A18C;ID # YI SYLLABLE NO
-A18D;ID # YI SYLLABLE NOP
-A18E;ID # YI SYLLABLE NEX
-A18F;ID # YI SYLLABLE NE
-A190;ID # YI SYLLABLE NEP
-A191;ID # YI SYLLABLE NUT
-A192;ID # YI SYLLABLE NUX
-A193;ID # YI SYLLABLE NU
-A194;ID # YI SYLLABLE NUP
-A195;ID # YI SYLLABLE NURX
-A196;ID # YI SYLLABLE NUR
-A197;ID # YI SYLLABLE HLIT
-A198;ID # YI SYLLABLE HLIX
-A199;ID # YI SYLLABLE HLI
-A19A;ID # YI SYLLABLE HLIP
-A19B;ID # YI SYLLABLE HLIEX
-A19C;ID # YI SYLLABLE HLIE
-A19D;ID # YI SYLLABLE HLIEP
-A19E;ID # YI SYLLABLE HLAT
-A19F;ID # YI SYLLABLE HLAX
-A1A0;ID # YI SYLLABLE HLA
-A1A1;ID # YI SYLLABLE HLAP
-A1A2;ID # YI SYLLABLE HLUOX
-A1A3;ID # YI SYLLABLE HLUO
-A1A4;ID # YI SYLLABLE HLUOP
-A1A5;ID # YI SYLLABLE HLOX
-A1A6;ID # YI SYLLABLE HLO
-A1A7;ID # YI SYLLABLE HLOP
-A1A8;ID # YI SYLLABLE HLEX
-A1A9;ID # YI SYLLABLE HLE
-A1AA;ID # YI SYLLABLE HLEP
-A1AB;ID # YI SYLLABLE HLUT
-A1AC;ID # YI SYLLABLE HLUX
-A1AD;ID # YI SYLLABLE HLU
-A1AE;ID # YI SYLLABLE HLUP
-A1AF;ID # YI SYLLABLE HLURX
-A1B0;ID # YI SYLLABLE HLUR
-A1B1;ID # YI SYLLABLE HLYT
-A1B2;ID # YI SYLLABLE HLYX
-A1B3;ID # YI SYLLABLE HLY
-A1B4;ID # YI SYLLABLE HLYP
-A1B5;ID # YI SYLLABLE HLYRX
-A1B6;ID # YI SYLLABLE HLYR
-A1B7;ID # YI SYLLABLE LIT
-A1B8;ID # YI SYLLABLE LIX
-A1B9;ID # YI SYLLABLE LI
-A1BA;ID # YI SYLLABLE LIP
-A1BB;ID # YI SYLLABLE LIET
-A1BC;ID # YI SYLLABLE LIEX
-A1BD;ID # YI SYLLABLE LIE
-A1BE;ID # YI SYLLABLE LIEP
-A1BF;ID # YI SYLLABLE LAT
-A1C0;ID # YI SYLLABLE LAX
-A1C1;ID # YI SYLLABLE LA
-A1C2;ID # YI SYLLABLE LAP
-A1C3;ID # YI SYLLABLE LUOT
-A1C4;ID # YI SYLLABLE LUOX
-A1C5;ID # YI SYLLABLE LUO
-A1C6;ID # YI SYLLABLE LUOP
-A1C7;ID # YI SYLLABLE LOT
-A1C8;ID # YI SYLLABLE LOX
-A1C9;ID # YI SYLLABLE LO
-A1CA;ID # YI SYLLABLE LOP
-A1CB;ID # YI SYLLABLE LEX
-A1CC;ID # YI SYLLABLE LE
-A1CD;ID # YI SYLLABLE LEP
-A1CE;ID # YI SYLLABLE LUT
-A1CF;ID # YI SYLLABLE LUX
-A1D0;ID # YI SYLLABLE LU
-A1D1;ID # YI SYLLABLE LUP
-A1D2;ID # YI SYLLABLE LURX
-A1D3;ID # YI SYLLABLE LUR
-A1D4;ID # YI SYLLABLE LYT
-A1D5;ID # YI SYLLABLE LYX
-A1D6;ID # YI SYLLABLE LY
-A1D7;ID # YI SYLLABLE LYP
-A1D8;ID # YI SYLLABLE LYRX
-A1D9;ID # YI SYLLABLE LYR
-A1DA;ID # YI SYLLABLE GIT
-A1DB;ID # YI SYLLABLE GIX
-A1DC;ID # YI SYLLABLE GI
-A1DD;ID # YI SYLLABLE GIP
-A1DE;ID # YI SYLLABLE GIET
-A1DF;ID # YI SYLLABLE GIEX
-A1E0;ID # YI SYLLABLE GIE
-A1E1;ID # YI SYLLABLE GIEP
-A1E2;ID # YI SYLLABLE GAT
-A1E3;ID # YI SYLLABLE GAX
-A1E4;ID # YI SYLLABLE GA
-A1E5;ID # YI SYLLABLE GAP
-A1E6;ID # YI SYLLABLE GUOT
-A1E7;ID # YI SYLLABLE GUOX
-A1E8;ID # YI SYLLABLE GUO
-A1E9;ID # YI SYLLABLE GUOP
-A1EA;ID # YI SYLLABLE GOT
-A1EB;ID # YI SYLLABLE GOX
-A1EC;ID # YI SYLLABLE GO
-A1ED;ID # YI SYLLABLE GOP
-A1EE;ID # YI SYLLABLE GET
-A1EF;ID # YI SYLLABLE GEX
-A1F0;ID # YI SYLLABLE GE
-A1F1;ID # YI SYLLABLE GEP
-A1F2;ID # YI SYLLABLE GUT
-A1F3;ID # YI SYLLABLE GUX
-A1F4;ID # YI SYLLABLE GU
-A1F5;ID # YI SYLLABLE GUP
-A1F6;ID # YI SYLLABLE GURX
-A1F7;ID # YI SYLLABLE GUR
-A1F8;ID # YI SYLLABLE KIT
-A1F9;ID # YI SYLLABLE KIX
-A1FA;ID # YI SYLLABLE KI
-A1FB;ID # YI SYLLABLE KIP
-A1FC;ID # YI SYLLABLE KIEX
-A1FD;ID # YI SYLLABLE KIE
-A1FE;ID # YI SYLLABLE KIEP
-A1FF;ID # YI SYLLABLE KAT
-A200;ID # YI SYLLABLE KAX
-A201;ID # YI SYLLABLE KA
-A202;ID # YI SYLLABLE KAP
-A203;ID # YI SYLLABLE KUOX
-A204;ID # YI SYLLABLE KUO
-A205;ID # YI SYLLABLE KUOP
-A206;ID # YI SYLLABLE KOT
-A207;ID # YI SYLLABLE KOX
-A208;ID # YI SYLLABLE KO
-A209;ID # YI SYLLABLE KOP
-A20A;ID # YI SYLLABLE KET
-A20B;ID # YI SYLLABLE KEX
-A20C;ID # YI SYLLABLE KE
-A20D;ID # YI SYLLABLE KEP
-A20E;ID # YI SYLLABLE KUT
-A20F;ID # YI SYLLABLE KUX
-A210;ID # YI SYLLABLE KU
-A211;ID # YI SYLLABLE KUP
-A212;ID # YI SYLLABLE KURX
-A213;ID # YI SYLLABLE KUR
-A214;ID # YI SYLLABLE GGIT
-A215;ID # YI SYLLABLE GGIX
-A216;ID # YI SYLLABLE GGI
-A217;ID # YI SYLLABLE GGIEX
-A218;ID # YI SYLLABLE GGIE
-A219;ID # YI SYLLABLE GGIEP
-A21A;ID # YI SYLLABLE GGAT
-A21B;ID # YI SYLLABLE GGAX
-A21C;ID # YI SYLLABLE GGA
-A21D;ID # YI SYLLABLE GGAP
-A21E;ID # YI SYLLABLE GGUOT
-A21F;ID # YI SYLLABLE GGUOX
-A220;ID # YI SYLLABLE GGUO
-A221;ID # YI SYLLABLE GGUOP
-A222;ID # YI SYLLABLE GGOT
-A223;ID # YI SYLLABLE GGOX
-A224;ID # YI SYLLABLE GGO
-A225;ID # YI SYLLABLE GGOP
-A226;ID # YI SYLLABLE GGET
-A227;ID # YI SYLLABLE GGEX
-A228;ID # YI SYLLABLE GGE
-A229;ID # YI SYLLABLE GGEP
-A22A;ID # YI SYLLABLE GGUT
-A22B;ID # YI SYLLABLE GGUX
-A22C;ID # YI SYLLABLE GGU
-A22D;ID # YI SYLLABLE GGUP
-A22E;ID # YI SYLLABLE GGURX
-A22F;ID # YI SYLLABLE GGUR
-A230;ID # YI SYLLABLE MGIEX
-A231;ID # YI SYLLABLE MGIE
-A232;ID # YI SYLLABLE MGAT
-A233;ID # YI SYLLABLE MGAX
-A234;ID # YI SYLLABLE MGA
-A235;ID # YI SYLLABLE MGAP
-A236;ID # YI SYLLABLE MGUOX
-A237;ID # YI SYLLABLE MGUO
-A238;ID # YI SYLLABLE MGUOP
-A239;ID # YI SYLLABLE MGOT
-A23A;ID # YI SYLLABLE MGOX
-A23B;ID # YI SYLLABLE MGO
-A23C;ID # YI SYLLABLE MGOP
-A23D;ID # YI SYLLABLE MGEX
-A23E;ID # YI SYLLABLE MGE
-A23F;ID # YI SYLLABLE MGEP
-A240;ID # YI SYLLABLE MGUT
-A241;ID # YI SYLLABLE MGUX
-A242;ID # YI SYLLABLE MGU
-A243;ID # YI SYLLABLE MGUP
-A244;ID # YI SYLLABLE MGURX
-A245;ID # YI SYLLABLE MGUR
-A246;ID # YI SYLLABLE HXIT
-A247;ID # YI SYLLABLE HXIX
-A248;ID # YI SYLLABLE HXI
-A249;ID # YI SYLLABLE HXIP
-A24A;ID # YI SYLLABLE HXIET
-A24B;ID # YI SYLLABLE HXIEX
-A24C;ID # YI SYLLABLE HXIE
-A24D;ID # YI SYLLABLE HXIEP
-A24E;ID # YI SYLLABLE HXAT
-A24F;ID # YI SYLLABLE HXAX
-A250;ID # YI SYLLABLE HXA
-A251;ID # YI SYLLABLE HXAP
-A252;ID # YI SYLLABLE HXUOT
-A253;ID # YI SYLLABLE HXUOX
-A254;ID # YI SYLLABLE HXUO
-A255;ID # YI SYLLABLE HXUOP
-A256;ID # YI SYLLABLE HXOT
-A257;ID # YI SYLLABLE HXOX
-A258;ID # YI SYLLABLE HXO
-A259;ID # YI SYLLABLE HXOP
-A25A;ID # YI SYLLABLE HXEX
-A25B;ID # YI SYLLABLE HXE
-A25C;ID # YI SYLLABLE HXEP
-A25D;ID # YI SYLLABLE NGIEX
-A25E;ID # YI SYLLABLE NGIE
-A25F;ID # YI SYLLABLE NGIEP
-A260;ID # YI SYLLABLE NGAT
-A261;ID # YI SYLLABLE NGAX
-A262;ID # YI SYLLABLE NGA
-A263;ID # YI SYLLABLE NGAP
-A264;ID # YI SYLLABLE NGUOT
-A265;ID # YI SYLLABLE NGUOX
-A266;ID # YI SYLLABLE NGUO
-A267;ID # YI SYLLABLE NGOT
-A268;ID # YI SYLLABLE NGOX
-A269;ID # YI SYLLABLE NGO
-A26A;ID # YI SYLLABLE NGOP
-A26B;ID # YI SYLLABLE NGEX
-A26C;ID # YI SYLLABLE NGE
-A26D;ID # YI SYLLABLE NGEP
-A26E;ID # YI SYLLABLE HIT
-A26F;ID # YI SYLLABLE HIEX
-A270;ID # YI SYLLABLE HIE
-A271;ID # YI SYLLABLE HAT
-A272;ID # YI SYLLABLE HAX
-A273;ID # YI SYLLABLE HA
-A274;ID # YI SYLLABLE HAP
-A275;ID # YI SYLLABLE HUOT
-A276;ID # YI SYLLABLE HUOX
-A277;ID # YI SYLLABLE HUO
-A278;ID # YI SYLLABLE HUOP
-A279;ID # YI SYLLABLE HOT
-A27A;ID # YI SYLLABLE HOX
-A27B;ID # YI SYLLABLE HO
-A27C;ID # YI SYLLABLE HOP
-A27D;ID # YI SYLLABLE HEX
-A27E;ID # YI SYLLABLE HE
-A27F;ID # YI SYLLABLE HEP
-A280;ID # YI SYLLABLE WAT
-A281;ID # YI SYLLABLE WAX
-A282;ID # YI SYLLABLE WA
-A283;ID # YI SYLLABLE WAP
-A284;ID # YI SYLLABLE WUOX
-A285;ID # YI SYLLABLE WUO
-A286;ID # YI SYLLABLE WUOP
-A287;ID # YI SYLLABLE WOX
-A288;ID # YI SYLLABLE WO
-A289;ID # YI SYLLABLE WOP
-A28A;ID # YI SYLLABLE WEX
-A28B;ID # YI SYLLABLE WE
-A28C;ID # YI SYLLABLE WEP
-A28D;ID # YI SYLLABLE ZIT
-A28E;ID # YI SYLLABLE ZIX
-A28F;ID # YI SYLLABLE ZI
-A290;ID # YI SYLLABLE ZIP
-A291;ID # YI SYLLABLE ZIEX
-A292;ID # YI SYLLABLE ZIE
-A293;ID # YI SYLLABLE ZIEP
-A294;ID # YI SYLLABLE ZAT
-A295;ID # YI SYLLABLE ZAX
-A296;ID # YI SYLLABLE ZA
-A297;ID # YI SYLLABLE ZAP
-A298;ID # YI SYLLABLE ZUOX
-A299;ID # YI SYLLABLE ZUO
-A29A;ID # YI SYLLABLE ZUOP
-A29B;ID # YI SYLLABLE ZOT
-A29C;ID # YI SYLLABLE ZOX
-A29D;ID # YI SYLLABLE ZO
-A29E;ID # YI SYLLABLE ZOP
-A29F;ID # YI SYLLABLE ZEX
-A2A0;ID # YI SYLLABLE ZE
-A2A1;ID # YI SYLLABLE ZEP
-A2A2;ID # YI SYLLABLE ZUT
-A2A3;ID # YI SYLLABLE ZUX
-A2A4;ID # YI SYLLABLE ZU
-A2A5;ID # YI SYLLABLE ZUP
-A2A6;ID # YI SYLLABLE ZURX
-A2A7;ID # YI SYLLABLE ZUR
-A2A8;ID # YI SYLLABLE ZYT
-A2A9;ID # YI SYLLABLE ZYX
-A2AA;ID # YI SYLLABLE ZY
-A2AB;ID # YI SYLLABLE ZYP
-A2AC;ID # YI SYLLABLE ZYRX
-A2AD;ID # YI SYLLABLE ZYR
-A2AE;ID # YI SYLLABLE CIT
-A2AF;ID # YI SYLLABLE CIX
-A2B0;ID # YI SYLLABLE CI
-A2B1;ID # YI SYLLABLE CIP
-A2B2;ID # YI SYLLABLE CIET
-A2B3;ID # YI SYLLABLE CIEX
-A2B4;ID # YI SYLLABLE CIE
-A2B5;ID # YI SYLLABLE CIEP
-A2B6;ID # YI SYLLABLE CAT
-A2B7;ID # YI SYLLABLE CAX
-A2B8;ID # YI SYLLABLE CA
-A2B9;ID # YI SYLLABLE CAP
-A2BA;ID # YI SYLLABLE CUOX
-A2BB;ID # YI SYLLABLE CUO
-A2BC;ID # YI SYLLABLE CUOP
-A2BD;ID # YI SYLLABLE COT
-A2BE;ID # YI SYLLABLE COX
-A2BF;ID # YI SYLLABLE CO
-A2C0;ID # YI SYLLABLE COP
-A2C1;ID # YI SYLLABLE CEX
-A2C2;ID # YI SYLLABLE CE
-A2C3;ID # YI SYLLABLE CEP
-A2C4;ID # YI SYLLABLE CUT
-A2C5;ID # YI SYLLABLE CUX
-A2C6;ID # YI SYLLABLE CU
-A2C7;ID # YI SYLLABLE CUP
-A2C8;ID # YI SYLLABLE CURX
-A2C9;ID # YI SYLLABLE CUR
-A2CA;ID # YI SYLLABLE CYT
-A2CB;ID # YI SYLLABLE CYX
-A2CC;ID # YI SYLLABLE CY
-A2CD;ID # YI SYLLABLE CYP
-A2CE;ID # YI SYLLABLE CYRX
-A2CF;ID # YI SYLLABLE CYR
-A2D0;ID # YI SYLLABLE ZZIT
-A2D1;ID # YI SYLLABLE ZZIX
-A2D2;ID # YI SYLLABLE ZZI
-A2D3;ID # YI SYLLABLE ZZIP
-A2D4;ID # YI SYLLABLE ZZIET
-A2D5;ID # YI SYLLABLE ZZIEX
-A2D6;ID # YI SYLLABLE ZZIE
-A2D7;ID # YI SYLLABLE ZZIEP
-A2D8;ID # YI SYLLABLE ZZAT
-A2D9;ID # YI SYLLABLE ZZAX
-A2DA;ID # YI SYLLABLE ZZA
-A2DB;ID # YI SYLLABLE ZZAP
-A2DC;ID # YI SYLLABLE ZZOX
-A2DD;ID # YI SYLLABLE ZZO
-A2DE;ID # YI SYLLABLE ZZOP
-A2DF;ID # YI SYLLABLE ZZEX
-A2E0;ID # YI SYLLABLE ZZE
-A2E1;ID # YI SYLLABLE ZZEP
-A2E2;ID # YI SYLLABLE ZZUX
-A2E3;ID # YI SYLLABLE ZZU
-A2E4;ID # YI SYLLABLE ZZUP
-A2E5;ID # YI SYLLABLE ZZURX
-A2E6;ID # YI SYLLABLE ZZUR
-A2E7;ID # YI SYLLABLE ZZYT
-A2E8;ID # YI SYLLABLE ZZYX
-A2E9;ID # YI SYLLABLE ZZY
-A2EA;ID # YI SYLLABLE ZZYP
-A2EB;ID # YI SYLLABLE ZZYRX
-A2EC;ID # YI SYLLABLE ZZYR
-A2ED;ID # YI SYLLABLE NZIT
-A2EE;ID # YI SYLLABLE NZIX
-A2EF;ID # YI SYLLABLE NZI
-A2F0;ID # YI SYLLABLE NZIP
-A2F1;ID # YI SYLLABLE NZIEX
-A2F2;ID # YI SYLLABLE NZIE
-A2F3;ID # YI SYLLABLE NZIEP
-A2F4;ID # YI SYLLABLE NZAT
-A2F5;ID # YI SYLLABLE NZAX
-A2F6;ID # YI SYLLABLE NZA
-A2F7;ID # YI SYLLABLE NZAP
-A2F8;ID # YI SYLLABLE NZUOX
-A2F9;ID # YI SYLLABLE NZUO
-A2FA;ID # YI SYLLABLE NZOX
-A2FB;ID # YI SYLLABLE NZOP
-A2FC;ID # YI SYLLABLE NZEX
-A2FD;ID # YI SYLLABLE NZE
-A2FE;ID # YI SYLLABLE NZUX
-A2FF;ID # YI SYLLABLE NZU
-A300;ID # YI SYLLABLE NZUP
-A301;ID # YI SYLLABLE NZURX
-A302;ID # YI SYLLABLE NZUR
-A303;ID # YI SYLLABLE NZYT
-A304;ID # YI SYLLABLE NZYX
-A305;ID # YI SYLLABLE NZY
-A306;ID # YI SYLLABLE NZYP
-A307;ID # YI SYLLABLE NZYRX
-A308;ID # YI SYLLABLE NZYR
-A309;ID # YI SYLLABLE SIT
-A30A;ID # YI SYLLABLE SIX
-A30B;ID # YI SYLLABLE SI
-A30C;ID # YI SYLLABLE SIP
-A30D;ID # YI SYLLABLE SIEX
-A30E;ID # YI SYLLABLE SIE
-A30F;ID # YI SYLLABLE SIEP
-A310;ID # YI SYLLABLE SAT
-A311;ID # YI SYLLABLE SAX
-A312;ID # YI SYLLABLE SA
-A313;ID # YI SYLLABLE SAP
-A314;ID # YI SYLLABLE SUOX
-A315;ID # YI SYLLABLE SUO
-A316;ID # YI SYLLABLE SUOP
-A317;ID # YI SYLLABLE SOT
-A318;ID # YI SYLLABLE SOX
-A319;ID # YI SYLLABLE SO
-A31A;ID # YI SYLLABLE SOP
-A31B;ID # YI SYLLABLE SEX
-A31C;ID # YI SYLLABLE SE
-A31D;ID # YI SYLLABLE SEP
-A31E;ID # YI SYLLABLE SUT
-A31F;ID # YI SYLLABLE SUX
-A320;ID # YI SYLLABLE SU
-A321;ID # YI SYLLABLE SUP
-A322;ID # YI SYLLABLE SURX
-A323;ID # YI SYLLABLE SUR
-A324;ID # YI SYLLABLE SYT
-A325;ID # YI SYLLABLE SYX
-A326;ID # YI SYLLABLE SY
-A327;ID # YI SYLLABLE SYP
-A328;ID # YI SYLLABLE SYRX
-A329;ID # YI SYLLABLE SYR
-A32A;ID # YI SYLLABLE SSIT
-A32B;ID # YI SYLLABLE SSIX
-A32C;ID # YI SYLLABLE SSI
-A32D;ID # YI SYLLABLE SSIP
-A32E;ID # YI SYLLABLE SSIEX
-A32F;ID # YI SYLLABLE SSIE
-A330;ID # YI SYLLABLE SSIEP
-A331;ID # YI SYLLABLE SSAT
-A332;ID # YI SYLLABLE SSAX
-A333;ID # YI SYLLABLE SSA
-A334;ID # YI SYLLABLE SSAP
-A335;ID # YI SYLLABLE SSOT
-A336;ID # YI SYLLABLE SSOX
-A337;ID # YI SYLLABLE SSO
-A338;ID # YI SYLLABLE SSOP
-A339;ID # YI SYLLABLE SSEX
-A33A;ID # YI SYLLABLE SSE
-A33B;ID # YI SYLLABLE SSEP
-A33C;ID # YI SYLLABLE SSUT
-A33D;ID # YI SYLLABLE SSUX
-A33E;ID # YI SYLLABLE SSU
-A33F;ID # YI SYLLABLE SSUP
-A340;ID # YI SYLLABLE SSYT
-A341;ID # YI SYLLABLE SSYX
-A342;ID # YI SYLLABLE SSY
-A343;ID # YI SYLLABLE SSYP
-A344;ID # YI SYLLABLE SSYRX
-A345;ID # YI SYLLABLE SSYR
-A346;ID # YI SYLLABLE ZHAT
-A347;ID # YI SYLLABLE ZHAX
-A348;ID # YI SYLLABLE ZHA
-A349;ID # YI SYLLABLE ZHAP
-A34A;ID # YI SYLLABLE ZHUOX
-A34B;ID # YI SYLLABLE ZHUO
-A34C;ID # YI SYLLABLE ZHUOP
-A34D;ID # YI SYLLABLE ZHOT
-A34E;ID # YI SYLLABLE ZHOX
-A34F;ID # YI SYLLABLE ZHO
-A350;ID # YI SYLLABLE ZHOP
-A351;ID # YI SYLLABLE ZHET
-A352;ID # YI SYLLABLE ZHEX
-A353;ID # YI SYLLABLE ZHE
-A354;ID # YI SYLLABLE ZHEP
-A355;ID # YI SYLLABLE ZHUT
-A356;ID # YI SYLLABLE ZHUX
-A357;ID # YI SYLLABLE ZHU
-A358;ID # YI SYLLABLE ZHUP
-A359;ID # YI SYLLABLE ZHURX
-A35A;ID # YI SYLLABLE ZHUR
-A35B;ID # YI SYLLABLE ZHYT
-A35C;ID # YI SYLLABLE ZHYX
-A35D;ID # YI SYLLABLE ZHY
-A35E;ID # YI SYLLABLE ZHYP
-A35F;ID # YI SYLLABLE ZHYRX
-A360;ID # YI SYLLABLE ZHYR
-A361;ID # YI SYLLABLE CHAT
-A362;ID # YI SYLLABLE CHAX
-A363;ID # YI SYLLABLE CHA
-A364;ID # YI SYLLABLE CHAP
-A365;ID # YI SYLLABLE CHUOT
-A366;ID # YI SYLLABLE CHUOX
-A367;ID # YI SYLLABLE CHUO
-A368;ID # YI SYLLABLE CHUOP
-A369;ID # YI SYLLABLE CHOT
-A36A;ID # YI SYLLABLE CHOX
-A36B;ID # YI SYLLABLE CHO
-A36C;ID # YI SYLLABLE CHOP
-A36D;ID # YI SYLLABLE CHET
-A36E;ID # YI SYLLABLE CHEX
-A36F;ID # YI SYLLABLE CHE
-A370;ID # YI SYLLABLE CHEP
-A371;ID # YI SYLLABLE CHUX
-A372;ID # YI SYLLABLE CHU
-A373;ID # YI SYLLABLE CHUP
-A374;ID # YI SYLLABLE CHURX
-A375;ID # YI SYLLABLE CHUR
-A376;ID # YI SYLLABLE CHYT
-A377;ID # YI SYLLABLE CHYX
-A378;ID # YI SYLLABLE CHY
-A379;ID # YI SYLLABLE CHYP
-A37A;ID # YI SYLLABLE CHYRX
-A37B;ID # YI SYLLABLE CHYR
-A37C;ID # YI SYLLABLE RRAX
-A37D;ID # YI SYLLABLE RRA
-A37E;ID # YI SYLLABLE RRUOX
-A37F;ID # YI SYLLABLE RRUO
-A380;ID # YI SYLLABLE RROT
-A381;ID # YI SYLLABLE RROX
-A382;ID # YI SYLLABLE RRO
-A383;ID # YI SYLLABLE RROP
-A384;ID # YI SYLLABLE RRET
-A385;ID # YI SYLLABLE RREX
-A386;ID # YI SYLLABLE RRE
-A387;ID # YI SYLLABLE RREP
-A388;ID # YI SYLLABLE RRUT
-A389;ID # YI SYLLABLE RRUX
-A38A;ID # YI SYLLABLE RRU
-A38B;ID # YI SYLLABLE RRUP
-A38C;ID # YI SYLLABLE RRURX
-A38D;ID # YI SYLLABLE RRUR
-A38E;ID # YI SYLLABLE RRYT
-A38F;ID # YI SYLLABLE RRYX
-A390;ID # YI SYLLABLE RRY
-A391;ID # YI SYLLABLE RRYP
-A392;ID # YI SYLLABLE RRYRX
-A393;ID # YI SYLLABLE RRYR
-A394;ID # YI SYLLABLE NRAT
-A395;ID # YI SYLLABLE NRAX
-A396;ID # YI SYLLABLE NRA
-A397;ID # YI SYLLABLE NRAP
-A398;ID # YI SYLLABLE NROX
-A399;ID # YI SYLLABLE NRO
-A39A;ID # YI SYLLABLE NROP
-A39B;ID # YI SYLLABLE NRET
-A39C;ID # YI SYLLABLE NREX
-A39D;ID # YI SYLLABLE NRE
-A39E;ID # YI SYLLABLE NREP
-A39F;ID # YI SYLLABLE NRUT
-A3A0;ID # YI SYLLABLE NRUX
-A3A1;ID # YI SYLLABLE NRU
-A3A2;ID # YI SYLLABLE NRUP
-A3A3;ID # YI SYLLABLE NRURX
-A3A4;ID # YI SYLLABLE NRUR
-A3A5;ID # YI SYLLABLE NRYT
-A3A6;ID # YI SYLLABLE NRYX
-A3A7;ID # YI SYLLABLE NRY
-A3A8;ID # YI SYLLABLE NRYP
-A3A9;ID # YI SYLLABLE NRYRX
-A3AA;ID # YI SYLLABLE NRYR
-A3AB;ID # YI SYLLABLE SHAT
-A3AC;ID # YI SYLLABLE SHAX
-A3AD;ID # YI SYLLABLE SHA
-A3AE;ID # YI SYLLABLE SHAP
-A3AF;ID # YI SYLLABLE SHUOX
-A3B0;ID # YI SYLLABLE SHUO
-A3B1;ID # YI SYLLABLE SHUOP
-A3B2;ID # YI SYLLABLE SHOT
-A3B3;ID # YI SYLLABLE SHOX
-A3B4;ID # YI SYLLABLE SHO
-A3B5;ID # YI SYLLABLE SHOP
-A3B6;ID # YI SYLLABLE SHET
-A3B7;ID # YI SYLLABLE SHEX
-A3B8;ID # YI SYLLABLE SHE
-A3B9;ID # YI SYLLABLE SHEP
-A3BA;ID # YI SYLLABLE SHUT
-A3BB;ID # YI SYLLABLE SHUX
-A3BC;ID # YI SYLLABLE SHU
-A3BD;ID # YI SYLLABLE SHUP
-A3BE;ID # YI SYLLABLE SHURX
-A3BF;ID # YI SYLLABLE SHUR
-A3C0;ID # YI SYLLABLE SHYT
-A3C1;ID # YI SYLLABLE SHYX
-A3C2;ID # YI SYLLABLE SHY
-A3C3;ID # YI SYLLABLE SHYP
-A3C4;ID # YI SYLLABLE SHYRX
-A3C5;ID # YI SYLLABLE SHYR
-A3C6;ID # YI SYLLABLE RAT
-A3C7;ID # YI SYLLABLE RAX
-A3C8;ID # YI SYLLABLE RA
-A3C9;ID # YI SYLLABLE RAP
-A3CA;ID # YI SYLLABLE RUOX
-A3CB;ID # YI SYLLABLE RUO
-A3CC;ID # YI SYLLABLE RUOP
-A3CD;ID # YI SYLLABLE ROT
-A3CE;ID # YI SYLLABLE ROX
-A3CF;ID # YI SYLLABLE RO
-A3D0;ID # YI SYLLABLE ROP
-A3D1;ID # YI SYLLABLE REX
-A3D2;ID # YI SYLLABLE RE
-A3D3;ID # YI SYLLABLE REP
-A3D4;ID # YI SYLLABLE RUT
-A3D5;ID # YI SYLLABLE RUX
-A3D6;ID # YI SYLLABLE RU
-A3D7;ID # YI SYLLABLE RUP
-A3D8;ID # YI SYLLABLE RURX
-A3D9;ID # YI SYLLABLE RUR
-A3DA;ID # YI SYLLABLE RYT
-A3DB;ID # YI SYLLABLE RYX
-A3DC;ID # YI SYLLABLE RY
-A3DD;ID # YI SYLLABLE RYP
-A3DE;ID # YI SYLLABLE RYRX
-A3DF;ID # YI SYLLABLE RYR
-A3E0;ID # YI SYLLABLE JIT
-A3E1;ID # YI SYLLABLE JIX
-A3E2;ID # YI SYLLABLE JI
-A3E3;ID # YI SYLLABLE JIP
-A3E4;ID # YI SYLLABLE JIET
-A3E5;ID # YI SYLLABLE JIEX
-A3E6;ID # YI SYLLABLE JIE
-A3E7;ID # YI SYLLABLE JIEP
-A3E8;ID # YI SYLLABLE JUOT
-A3E9;ID # YI SYLLABLE JUOX
-A3EA;ID # YI SYLLABLE JUO
-A3EB;ID # YI SYLLABLE JUOP
-A3EC;ID # YI SYLLABLE JOT
-A3ED;ID # YI SYLLABLE JOX
-A3EE;ID # YI SYLLABLE JO
-A3EF;ID # YI SYLLABLE JOP
-A3F0;ID # YI SYLLABLE JUT
-A3F1;ID # YI SYLLABLE JUX
-A3F2;ID # YI SYLLABLE JU
-A3F3;ID # YI SYLLABLE JUP
-A3F4;ID # YI SYLLABLE JURX
-A3F5;ID # YI SYLLABLE JUR
-A3F6;ID # YI SYLLABLE JYT
-A3F7;ID # YI SYLLABLE JYX
-A3F8;ID # YI SYLLABLE JY
-A3F9;ID # YI SYLLABLE JYP
-A3FA;ID # YI SYLLABLE JYRX
-A3FB;ID # YI SYLLABLE JYR
-A3FC;ID # YI SYLLABLE QIT
-A3FD;ID # YI SYLLABLE QIX
-A3FE;ID # YI SYLLABLE QI
-A3FF;ID # YI SYLLABLE QIP
-A400;ID # YI SYLLABLE QIET
-A401;ID # YI SYLLABLE QIEX
-A402;ID # YI SYLLABLE QIE
-A403;ID # YI SYLLABLE QIEP
-A404;ID # YI SYLLABLE QUOT
-A405;ID # YI SYLLABLE QUOX
-A406;ID # YI SYLLABLE QUO
-A407;ID # YI SYLLABLE QUOP
-A408;ID # YI SYLLABLE QOT
-A409;ID # YI SYLLABLE QOX
-A40A;ID # YI SYLLABLE QO
-A40B;ID # YI SYLLABLE QOP
-A40C;ID # YI SYLLABLE QUT
-A40D;ID # YI SYLLABLE QUX
-A40E;ID # YI SYLLABLE QU
-A40F;ID # YI SYLLABLE QUP
-A410;ID # YI SYLLABLE QURX
-A411;ID # YI SYLLABLE QUR
-A412;ID # YI SYLLABLE QYT
-A413;ID # YI SYLLABLE QYX
-A414;ID # YI SYLLABLE QY
-A415;ID # YI SYLLABLE QYP
-A416;ID # YI SYLLABLE QYRX
-A417;ID # YI SYLLABLE QYR
-A418;ID # YI SYLLABLE JJIT
-A419;ID # YI SYLLABLE JJIX
-A41A;ID # YI SYLLABLE JJI
-A41B;ID # YI SYLLABLE JJIP
-A41C;ID # YI SYLLABLE JJIET
-A41D;ID # YI SYLLABLE JJIEX
-A41E;ID # YI SYLLABLE JJIE
-A41F;ID # YI SYLLABLE JJIEP
-A420;ID # YI SYLLABLE JJUOX
-A421;ID # YI SYLLABLE JJUO
-A422;ID # YI SYLLABLE JJUOP
-A423;ID # YI SYLLABLE JJOT
-A424;ID # YI SYLLABLE JJOX
-A425;ID # YI SYLLABLE JJO
-A426;ID # YI SYLLABLE JJOP
-A427;ID # YI SYLLABLE JJUT
-A428;ID # YI SYLLABLE JJUX
-A429;ID # YI SYLLABLE JJU
-A42A;ID # YI SYLLABLE JJUP
-A42B;ID # YI SYLLABLE JJURX
-A42C;ID # YI SYLLABLE JJUR
-A42D;ID # YI SYLLABLE JJYT
-A42E;ID # YI SYLLABLE JJYX
-A42F;ID # YI SYLLABLE JJY
-A430;ID # YI SYLLABLE JJYP
-A431;ID # YI SYLLABLE NJIT
-A432;ID # YI SYLLABLE NJIX
-A433;ID # YI SYLLABLE NJI
-A434;ID # YI SYLLABLE NJIP
-A435;ID # YI SYLLABLE NJIET
-A436;ID # YI SYLLABLE NJIEX
-A437;ID # YI SYLLABLE NJIE
-A438;ID # YI SYLLABLE NJIEP
-A439;ID # YI SYLLABLE NJUOX
-A43A;ID # YI SYLLABLE NJUO
-A43B;ID # YI SYLLABLE NJOT
-A43C;ID # YI SYLLABLE NJOX
-A43D;ID # YI SYLLABLE NJO
-A43E;ID # YI SYLLABLE NJOP
-A43F;ID # YI SYLLABLE NJUX
-A440;ID # YI SYLLABLE NJU
-A441;ID # YI SYLLABLE NJUP
-A442;ID # YI SYLLABLE NJURX
-A443;ID # YI SYLLABLE NJUR
-A444;ID # YI SYLLABLE NJYT
-A445;ID # YI SYLLABLE NJYX
-A446;ID # YI SYLLABLE NJY
-A447;ID # YI SYLLABLE NJYP
-A448;ID # YI SYLLABLE NJYRX
-A449;ID # YI SYLLABLE NJYR
-A44A;ID # YI SYLLABLE NYIT
-A44B;ID # YI SYLLABLE NYIX
-A44C;ID # YI SYLLABLE NYI
-A44D;ID # YI SYLLABLE NYIP
-A44E;ID # YI SYLLABLE NYIET
-A44F;ID # YI SYLLABLE NYIEX
-A450;ID # YI SYLLABLE NYIE
-A451;ID # YI SYLLABLE NYIEP
-A452;ID # YI SYLLABLE NYUOX
-A453;ID # YI SYLLABLE NYUO
-A454;ID # YI SYLLABLE NYUOP
-A455;ID # YI SYLLABLE NYOT
-A456;ID # YI SYLLABLE NYOX
-A457;ID # YI SYLLABLE NYO
-A458;ID # YI SYLLABLE NYOP
-A459;ID # YI SYLLABLE NYUT
-A45A;ID # YI SYLLABLE NYUX
-A45B;ID # YI SYLLABLE NYU
-A45C;ID # YI SYLLABLE NYUP
-A45D;ID # YI SYLLABLE XIT
-A45E;ID # YI SYLLABLE XIX
-A45F;ID # YI SYLLABLE XI
-A460;ID # YI SYLLABLE XIP
-A461;ID # YI SYLLABLE XIET
-A462;ID # YI SYLLABLE XIEX
-A463;ID # YI SYLLABLE XIE
-A464;ID # YI SYLLABLE XIEP
-A465;ID # YI SYLLABLE XUOX
-A466;ID # YI SYLLABLE XUO
-A467;ID # YI SYLLABLE XOT
-A468;ID # YI SYLLABLE XOX
-A469;ID # YI SYLLABLE XO
-A46A;ID # YI SYLLABLE XOP
-A46B;ID # YI SYLLABLE XYT
-A46C;ID # YI SYLLABLE XYX
-A46D;ID # YI SYLLABLE XY
-A46E;ID # YI SYLLABLE XYP
-A46F;ID # YI SYLLABLE XYRX
-A470;ID # YI SYLLABLE XYR
-A471;ID # YI SYLLABLE YIT
-A472;ID # YI SYLLABLE YIX
-A473;ID # YI SYLLABLE YI
-A474;ID # YI SYLLABLE YIP
-A475;ID # YI SYLLABLE YIET
-A476;ID # YI SYLLABLE YIEX
-A477;ID # YI SYLLABLE YIE
-A478;ID # YI SYLLABLE YIEP
-A479;ID # YI SYLLABLE YUOT
-A47A;ID # YI SYLLABLE YUOX
-A47B;ID # YI SYLLABLE YUO
-A47C;ID # YI SYLLABLE YUOP
-A47D;ID # YI SYLLABLE YOT
-A47E;ID # YI SYLLABLE YOX
-A47F;ID # YI SYLLABLE YO
-A480;ID # YI SYLLABLE YOP
-A481;ID # YI SYLLABLE YUT
-A482;ID # YI SYLLABLE YUX
-A483;ID # YI SYLLABLE YU
-A484;ID # YI SYLLABLE YUP
-A485;ID # YI SYLLABLE YURX
-A486;ID # YI SYLLABLE YUR
-A487;ID # YI SYLLABLE YYT
-A488;ID # YI SYLLABLE YYX
-A489;ID # YI SYLLABLE YY
-A48A;ID # YI SYLLABLE YYP
-A48B;ID # YI SYLLABLE YYRX
-A48C;ID # YI SYLLABLE YYR
-A490;ID # YI RADICAL QOT
-A491;ID # YI RADICAL LI
-A492;ID # YI RADICAL KIT
-A493;ID # YI RADICAL NYIP
-A494;ID # YI RADICAL CYP
-A495;ID # YI RADICAL SSI
-A496;ID # YI RADICAL GGOP
-A497;ID # YI RADICAL GEP
-A498;ID # YI RADICAL MI
-A499;ID # YI RADICAL HXIT
-A49A;ID # YI RADICAL LYR
-A49B;ID # YI RADICAL BBUT
-A49C;ID # YI RADICAL MOP
-A49D;ID # YI RADICAL YO
-A49E;ID # YI RADICAL PUT
-A49F;ID # YI RADICAL HXUO
-A4A0;ID # YI RADICAL TAT
-A4A1;ID # YI RADICAL GA
-A4A2;ID # YI RADICAL ZUP
-A4A3;ID # YI RADICAL CYT
-A4A4;ID # YI RADICAL DDUR
-A4A5;ID # YI RADICAL BUR
-A4A6;ID # YI RADICAL GGUO
-A4A7;ID # YI RADICAL NYOP
-A4A8;ID # YI RADICAL TU
-A4A9;ID # YI RADICAL OP
-A4AA;ID # YI RADICAL JJUT
-A4AB;ID # YI RADICAL ZOT
-A4AC;ID # YI RADICAL PYT
-A4AD;ID # YI RADICAL HMO
-A4AE;ID # YI RADICAL YIT
-A4AF;ID # YI RADICAL VUR
-A4B0;ID # YI RADICAL SHY
-A4B1;ID # YI RADICAL VEP
-A4B2;ID # YI RADICAL ZA
-A4B3;ID # YI RADICAL JO
-A4B4;ID # YI RADICAL NZUP
-A4B5;ID # YI RADICAL JJY
-A4B6;ID # YI RADICAL GOT
-A4B7;ID # YI RADICAL JJIE
-A4B8;ID # YI RADICAL WO
-A4B9;ID # YI RADICAL DU
-A4BA;ID # YI RADICAL SHUR
-A4BB;ID # YI RADICAL LIE
-A4BC;ID # YI RADICAL CY
-A4BD;ID # YI RADICAL CUOP
-A4BE;ID # YI RADICAL CIP
-A4BF;ID # YI RADICAL HXOP
-A4C0;ID # YI RADICAL SHAT
-A4C1;ID # YI RADICAL ZUR
-A4C2;ID # YI RADICAL SHOP
-A4C3;ID # YI RADICAL CHE
-A4C4;ID # YI RADICAL ZZIET
-A4C5;ID # YI RADICAL NBIE
-A4C6;ID # YI RADICAL KE
-A700;AL # MODIFIER LETTER CHINESE TONE YIN PING
-A701;AL # MODIFIER LETTER CHINESE TONE YANG PING
-A702;AL # MODIFIER LETTER CHINESE TONE YIN SHANG
-A703;AL # MODIFIER LETTER CHINESE TONE YANG SHANG
-A704;AL # MODIFIER LETTER CHINESE TONE YIN QU
-A705;AL # MODIFIER LETTER CHINESE TONE YANG QU
-A706;AL # MODIFIER LETTER CHINESE TONE YIN RU
-A707;AL # MODIFIER LETTER CHINESE TONE YANG RU
-A708;AL # MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR
-A709;AL # MODIFIER LETTER HIGH DOTTED TONE BAR
-A70A;AL # MODIFIER LETTER MID DOTTED TONE BAR
-A70B;AL # MODIFIER LETTER LOW DOTTED TONE BAR
-A70C;AL # MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR
-A70D;AL # MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR
-A70E;AL # MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR
-A70F;AL # MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR
-A710;AL # MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR
-A711;AL # MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR
-A712;AL # MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR
-A713;AL # MODIFIER LETTER HIGH LEFT-STEM TONE BAR
-A714;AL # MODIFIER LETTER MID LEFT-STEM TONE BAR
-A715;AL # MODIFIER LETTER LOW LEFT-STEM TONE BAR
-A716;AL # MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
-A800;AL # SYLOTI NAGRI LETTER A
-A801;AL # SYLOTI NAGRI LETTER I
-A802;CM # SYLOTI NAGRI SIGN DVISVARA
-A803;AL # SYLOTI NAGRI LETTER U
-A804;AL # SYLOTI NAGRI LETTER E
-A805;AL # SYLOTI NAGRI LETTER O
-A806;CM # SYLOTI NAGRI SIGN HASANTA
-A807;AL # SYLOTI NAGRI LETTER KO
-A808;AL # SYLOTI NAGRI LETTER KHO
-A809;AL # SYLOTI NAGRI LETTER GO
-A80A;AL # SYLOTI NAGRI LETTER GHO
-A80B;CM # SYLOTI NAGRI SIGN ANUSVARA
-A80C;AL # SYLOTI NAGRI LETTER CO
-A80D;AL # SYLOTI NAGRI LETTER CHO
-A80E;AL # SYLOTI NAGRI LETTER JO
-A80F;AL # SYLOTI NAGRI LETTER JHO
-A810;AL # SYLOTI NAGRI LETTER TTO
-A811;AL # SYLOTI NAGRI LETTER TTHO
-A812;AL # SYLOTI NAGRI LETTER DDO
-A813;AL # SYLOTI NAGRI LETTER DDHO
-A814;AL # SYLOTI NAGRI LETTER TO
-A815;AL # SYLOTI NAGRI LETTER THO
-A816;AL # SYLOTI NAGRI LETTER DO
-A817;AL # SYLOTI NAGRI LETTER DHO
-A818;AL # SYLOTI NAGRI LETTER NO
-A819;AL # SYLOTI NAGRI LETTER PO
-A81A;AL # SYLOTI NAGRI LETTER PHO
-A81B;AL # SYLOTI NAGRI LETTER BO
-A81C;AL # SYLOTI NAGRI LETTER BHO
-A81D;AL # SYLOTI NAGRI LETTER MO
-A81E;AL # SYLOTI NAGRI LETTER RO
-A81F;AL # SYLOTI NAGRI LETTER LO
-A820;AL # SYLOTI NAGRI LETTER RRO
-A821;AL # SYLOTI NAGRI LETTER SO
-A822;AL # SYLOTI NAGRI LETTER HO
-A823;CM # SYLOTI NAGRI VOWEL SIGN A
-A824;CM # SYLOTI NAGRI VOWEL SIGN I
-A825;CM # SYLOTI NAGRI VOWEL SIGN U
-A826;CM # SYLOTI NAGRI VOWEL SIGN E
-A827;CM # SYLOTI NAGRI VOWEL SIGN OO
-A828;AL # SYLOTI NAGRI POETRY MARK-1
-A829;AL # SYLOTI NAGRI POETRY MARK-2
-A82A;AL # SYLOTI NAGRI POETRY MARK-3
-A82B;AL # SYLOTI NAGRI POETRY MARK-4
-AC00;H2 # HANGUL SYLLABLE GA
-AC01..AC1B;H3 # HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH
-AC1C;H2 # HANGUL SYLLABLE GAE
-AC1D..AC37;H3 # HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH
-AC38;H2 # HANGUL SYLLABLE GYA
-AC39..AC53;H3 # HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH
-AC54;H2 # HANGUL SYLLABLE GYAE
-AC55..AC6F;H3 # HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH
-AC70;H2 # HANGUL SYLLABLE GEO
-AC71..AC8B;H3 # HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH
-AC8C;H2 # HANGUL SYLLABLE GE
-AC8D..ACA7;H3 # HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH
-ACA8;H2 # HANGUL SYLLABLE GYEO
-ACA9..ACC3;H3 # HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH
-ACC4;H2 # HANGUL SYLLABLE GYE
-ACC5..ACDF;H3 # HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH
-ACE0;H2 # HANGUL SYLLABLE GO
-ACE1..ACFB;H3 # HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH
-ACFC;H2 # HANGUL SYLLABLE GWA
-ACFD..AD17;H3 # HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH
-AD18;H2 # HANGUL SYLLABLE GWAE
-AD19..AD33;H3 # HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH
-AD34;H2 # HANGUL SYLLABLE GOE
-AD35..AD4F;H3 # HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH
-AD50;H2 # HANGUL SYLLABLE GYO
-AD51..AD6B;H3 # HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH
-AD6C;H2 # HANGUL SYLLABLE GU
-AD6D..AD87;H3 # HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH
-AD88;H2 # HANGUL SYLLABLE GWEO
-AD89..ADA3;H3 # HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH
-ADA4;H2 # HANGUL SYLLABLE GWE
-ADA5..ADBF;H3 # HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH
-ADC0;H2 # HANGUL SYLLABLE GWI
-ADC1..ADDB;H3 # HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH
-ADDC;H2 # HANGUL SYLLABLE GYU
-ADDD..ADF7;H3 # HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH
-ADF8;H2 # HANGUL SYLLABLE GEU
-ADF9..AE13;H3 # HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH
-AE14;H2 # HANGUL SYLLABLE GYI
-AE15..AE2F;H3 # HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH
-AE30;H2 # HANGUL SYLLABLE GI
-AE31..AE4B;H3 # HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH
-AE4C;H2 # HANGUL SYLLABLE GGA
-AE4D..AE67;H3 # HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH
-AE68;H2 # HANGUL SYLLABLE GGAE
-AE69..AE83;H3 # HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH
-AE84;H2 # HANGUL SYLLABLE GGYA
-AE85..AE9F;H3 # HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH
-AEA0;H2 # HANGUL SYLLABLE GGYAE
-AEA1..AEBB;H3 # HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH
-AEBC;H2 # HANGUL SYLLABLE GGEO
-AEBD..AED7;H3 # HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH
-AED8;H2 # HANGUL SYLLABLE GGE
-AED9..AEF3;H3 # HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH
-AEF4;H2 # HANGUL SYLLABLE GGYEO
-AEF5..AF0F;H3 # HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH
-AF10;H2 # HANGUL SYLLABLE GGYE
-AF11..AF2B;H3 # HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH
-AF2C;H2 # HANGUL SYLLABLE GGO
-AF2D..AF47;H3 # HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH
-AF48;H2 # HANGUL SYLLABLE GGWA
-AF49..AF63;H3 # HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH
-AF64;H2 # HANGUL SYLLABLE GGWAE
-AF65..AF7F;H3 # HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH
-AF80;H2 # HANGUL SYLLABLE GGOE
-AF81..AF9B;H3 # HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH
-AF9C;H2 # HANGUL SYLLABLE GGYO
-AF9D..AFB7;H3 # HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH
-AFB8;H2 # HANGUL SYLLABLE GGU
-AFB9..AFD3;H3 # HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH
-AFD4;H2 # HANGUL SYLLABLE GGWEO
-AFD5..AFEF;H3 # HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH
-AFF0;H2 # HANGUL SYLLABLE GGWE
-AFF1..B00B;H3 # HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH
-B00C;H2 # HANGUL SYLLABLE GGWI
-B00D..B027;H3 # HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH
-B028;H2 # HANGUL SYLLABLE GGYU
-B029..B043;H3 # HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH
-B044;H2 # HANGUL SYLLABLE GGEU
-B045..B05F;H3 # HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH
-B060;H2 # HANGUL SYLLABLE GGYI
-B061..B07B;H3 # HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH
-B07C;H2 # HANGUL SYLLABLE GGI
-B07D..B097;H3 # HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH
-B098;H2 # HANGUL SYLLABLE NA
-B099..B0B3;H3 # HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH
-B0B4;H2 # HANGUL SYLLABLE NAE
-B0B5..B0CF;H3 # HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH
-B0D0;H2 # HANGUL SYLLABLE NYA
-B0D1..B0EB;H3 # HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH
-B0EC;H2 # HANGUL SYLLABLE NYAE
-B0ED..B107;H3 # HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH
-B108;H2 # HANGUL SYLLABLE NEO
-B109..B123;H3 # HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH
-B124;H2 # HANGUL SYLLABLE NE
-B125..B13F;H3 # HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH
-B140;H2 # HANGUL SYLLABLE NYEO
-B141..B15B;H3 # HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH
-B15C;H2 # HANGUL SYLLABLE NYE
-B15D..B177;H3 # HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH
-B178;H2 # HANGUL SYLLABLE NO
-B179..B193;H3 # HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH
-B194;H2 # HANGUL SYLLABLE NWA
-B195..B1AF;H3 # HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH
-B1B0;H2 # HANGUL SYLLABLE NWAE
-B1B1..B1CB;H3 # HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH
-B1CC;H2 # HANGUL SYLLABLE NOE
-B1CD..B1E7;H3 # HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH
-B1E8;H2 # HANGUL SYLLABLE NYO
-B1E9..B203;H3 # HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH
-B204;H2 # HANGUL SYLLABLE NU
-B205..B21F;H3 # HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH
-B220;H2 # HANGUL SYLLABLE NWEO
-B221..B23B;H3 # HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH
-B23C;H2 # HANGUL SYLLABLE NWE
-B23D..B257;H3 # HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH
-B258;H2 # HANGUL SYLLABLE NWI
-B259..B273;H3 # HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH
-B274;H2 # HANGUL SYLLABLE NYU
-B275..B28F;H3 # HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH
-B290;H2 # HANGUL SYLLABLE NEU
-B291..B2AB;H3 # HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH
-B2AC;H2 # HANGUL SYLLABLE NYI
-B2AD..B2C7;H3 # HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH
-B2C8;H2 # HANGUL SYLLABLE NI
-B2C9..B2E3;H3 # HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH
-B2E4;H2 # HANGUL SYLLABLE DA
-B2E5..B2FF;H3 # HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH
-B300;H2 # HANGUL SYLLABLE DAE
-B301..B31B;H3 # HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH
-B31C;H2 # HANGUL SYLLABLE DYA
-B31D..B337;H3 # HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH
-B338;H2 # HANGUL SYLLABLE DYAE
-B339..B353;H3 # HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH
-B354;H2 # HANGUL SYLLABLE DEO
-B355..B36F;H3 # HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH
-B370;H2 # HANGUL SYLLABLE DE
-B371..B38B;H3 # HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH
-B38C;H2 # HANGUL SYLLABLE DYEO
-B38D..B3A7;H3 # HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH
-B3A8;H2 # HANGUL SYLLABLE DYE
-B3A9..B3C3;H3 # HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH
-B3C4;H2 # HANGUL SYLLABLE DO
-B3C5..B3DF;H3 # HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH
-B3E0;H2 # HANGUL SYLLABLE DWA
-B3E1..B3FB;H3 # HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH
-B3FC;H2 # HANGUL SYLLABLE DWAE
-B3FD..B417;H3 # HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH
-B418;H2 # HANGUL SYLLABLE DOE
-B419..B433;H3 # HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH
-B434;H2 # HANGUL SYLLABLE DYO
-B435..B44F;H3 # HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH
-B450;H2 # HANGUL SYLLABLE DU
-B451..B46B;H3 # HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH
-B46C;H2 # HANGUL SYLLABLE DWEO
-B46D..B487;H3 # HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH
-B488;H2 # HANGUL SYLLABLE DWE
-B489..B4A3;H3 # HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH
-B4A4;H2 # HANGUL SYLLABLE DWI
-B4A5..B4BF;H3 # HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH
-B4C0;H2 # HANGUL SYLLABLE DYU
-B4C1..B4DB;H3 # HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH
-B4DC;H2 # HANGUL SYLLABLE DEU
-B4DD..B4F7;H3 # HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH
-B4F8;H2 # HANGUL SYLLABLE DYI
-B4F9..B513;H3 # HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH
-B514;H2 # HANGUL SYLLABLE DI
-B515..B52F;H3 # HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH
-B530;H2 # HANGUL SYLLABLE DDA
-B531..B54B;H3 # HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH
-B54C;H2 # HANGUL SYLLABLE DDAE
-B54D..B567;H3 # HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH
-B568;H2 # HANGUL SYLLABLE DDYA
-B569..B583;H3 # HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH
-B584;H2 # HANGUL SYLLABLE DDYAE
-B585..B59F;H3 # HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH
-B5A0;H2 # HANGUL SYLLABLE DDEO
-B5A1..B5BB;H3 # HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH
-B5BC;H2 # HANGUL SYLLABLE DDE
-B5BD..B5D7;H3 # HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH
-B5D8;H2 # HANGUL SYLLABLE DDYEO
-B5D9..B5F3;H3 # HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH
-B5F4;H2 # HANGUL SYLLABLE DDYE
-B5F5..B60F;H3 # HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH
-B610;H2 # HANGUL SYLLABLE DDO
-B611..B62B;H3 # HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH
-B62C;H2 # HANGUL SYLLABLE DDWA
-B62D..B647;H3 # HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH
-B648;H2 # HANGUL SYLLABLE DDWAE
-B649..B663;H3 # HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH
-B664;H2 # HANGUL SYLLABLE DDOE
-B665..B67F;H3 # HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH
-B680;H2 # HANGUL SYLLABLE DDYO
-B681..B69B;H3 # HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH
-B69C;H2 # HANGUL SYLLABLE DDU
-B69D..B6B7;H3 # HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH
-B6B8;H2 # HANGUL SYLLABLE DDWEO
-B6B9..B6D3;H3 # HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH
-B6D4;H2 # HANGUL SYLLABLE DDWE
-B6D5..B6EF;H3 # HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH
-B6F0;H2 # HANGUL SYLLABLE DDWI
-B6F1..B70B;H3 # HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH
-B70C;H2 # HANGUL SYLLABLE DDYU
-B70D..B727;H3 # HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH
-B728;H2 # HANGUL SYLLABLE DDEU
-B729..B743;H3 # HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH
-B744;H2 # HANGUL SYLLABLE DDYI
-B745..B75F;H3 # HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH
-B760;H2 # HANGUL SYLLABLE DDI
-B761..B77B;H3 # HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH
-B77C;H2 # HANGUL SYLLABLE RA
-B77D..B797;H3 # HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH
-B798;H2 # HANGUL SYLLABLE RAE
-B799..B7B3;H3 # HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH
-B7B4;H2 # HANGUL SYLLABLE RYA
-B7B5..B7CF;H3 # HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH
-B7D0;H2 # HANGUL SYLLABLE RYAE
-B7D1..B7EB;H3 # HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH
-B7EC;H2 # HANGUL SYLLABLE REO
-B7ED..B807;H3 # HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH
-B808;H2 # HANGUL SYLLABLE RE
-B809..B823;H3 # HANGUL SYLLABLE REG..HANGUL SYLLABLE REH
-B824;H2 # HANGUL SYLLABLE RYEO
-B825..B83F;H3 # HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH
-B840;H2 # HANGUL SYLLABLE RYE
-B841..B85B;H3 # HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH
-B85C;H2 # HANGUL SYLLABLE RO
-B85D..B877;H3 # HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH
-B878;H2 # HANGUL SYLLABLE RWA
-B879..B893;H3 # HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH
-B894;H2 # HANGUL SYLLABLE RWAE
-B895..B8AF;H3 # HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH
-B8B0;H2 # HANGUL SYLLABLE ROE
-B8B1..B8CB;H3 # HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH
-B8CC;H2 # HANGUL SYLLABLE RYO
-B8CD..B8E7;H3 # HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH
-B8E8;H2 # HANGUL SYLLABLE RU
-B8E9..B903;H3 # HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH
-B904;H2 # HANGUL SYLLABLE RWEO
-B905..B91F;H3 # HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH
-B920;H2 # HANGUL SYLLABLE RWE
-B921..B93B;H3 # HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH
-B93C;H2 # HANGUL SYLLABLE RWI
-B93D..B957;H3 # HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH
-B958;H2 # HANGUL SYLLABLE RYU
-B959..B973;H3 # HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH
-B974;H2 # HANGUL SYLLABLE REU
-B975..B98F;H3 # HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH
-B990;H2 # HANGUL SYLLABLE RYI
-B991..B9AB;H3 # HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH
-B9AC;H2 # HANGUL SYLLABLE RI
-B9AD..B9C7;H3 # HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH
-B9C8;H2 # HANGUL SYLLABLE MA
-B9C9..B9E3;H3 # HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH
-B9E4;H2 # HANGUL SYLLABLE MAE
-B9E5..B9FF;H3 # HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH
-BA00;H2 # HANGUL SYLLABLE MYA
-BA01..BA1B;H3 # HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH
-BA1C;H2 # HANGUL SYLLABLE MYAE
-BA1D..BA37;H3 # HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH
-BA38;H2 # HANGUL SYLLABLE MEO
-BA39..BA53;H3 # HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH
-BA54;H2 # HANGUL SYLLABLE ME
-BA55..BA6F;H3 # HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH
-BA70;H2 # HANGUL SYLLABLE MYEO
-BA71..BA8B;H3 # HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH
-BA8C;H2 # HANGUL SYLLABLE MYE
-BA8D..BAA7;H3 # HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH
-BAA8;H2 # HANGUL SYLLABLE MO
-BAA9..BAC3;H3 # HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH
-BAC4;H2 # HANGUL SYLLABLE MWA
-BAC5..BADF;H3 # HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH
-BAE0;H2 # HANGUL SYLLABLE MWAE
-BAE1..BAFB;H3 # HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH
-BAFC;H2 # HANGUL SYLLABLE MOE
-BAFD..BB17;H3 # HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH
-BB18;H2 # HANGUL SYLLABLE MYO
-BB19..BB33;H3 # HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH
-BB34;H2 # HANGUL SYLLABLE MU
-BB35..BB4F;H3 # HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH
-BB50;H2 # HANGUL SYLLABLE MWEO
-BB51..BB6B;H3 # HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH
-BB6C;H2 # HANGUL SYLLABLE MWE
-BB6D..BB87;H3 # HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH
-BB88;H2 # HANGUL SYLLABLE MWI
-BB89..BBA3;H3 # HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH
-BBA4;H2 # HANGUL SYLLABLE MYU
-BBA5..BBBF;H3 # HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH
-BBC0;H2 # HANGUL SYLLABLE MEU
-BBC1..BBDB;H3 # HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH
-BBDC;H2 # HANGUL SYLLABLE MYI
-BBDD..BBF7;H3 # HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH
-BBF8;H2 # HANGUL SYLLABLE MI
-BBF9..BC13;H3 # HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH
-BC14;H2 # HANGUL SYLLABLE BA
-BC15..BC2F;H3 # HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH
-BC30;H2 # HANGUL SYLLABLE BAE
-BC31..BC4B;H3 # HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH
-BC4C;H2 # HANGUL SYLLABLE BYA
-BC4D..BC67;H3 # HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH
-BC68;H2 # HANGUL SYLLABLE BYAE
-BC69..BC83;H3 # HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH
-BC84;H2 # HANGUL SYLLABLE BEO
-BC85..BC9F;H3 # HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH
-BCA0;H2 # HANGUL SYLLABLE BE
-BCA1..BCBB;H3 # HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH
-BCBC;H2 # HANGUL SYLLABLE BYEO
-BCBD..BCD7;H3 # HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH
-BCD8;H2 # HANGUL SYLLABLE BYE
-BCD9..BCF3;H3 # HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH
-BCF4;H2 # HANGUL SYLLABLE BO
-BCF5..BD0F;H3 # HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH
-BD10;H2 # HANGUL SYLLABLE BWA
-BD11..BD2B;H3 # HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH
-BD2C;H2 # HANGUL SYLLABLE BWAE
-BD2D..BD47;H3 # HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH
-BD48;H2 # HANGUL SYLLABLE BOE
-BD49..BD63;H3 # HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH
-BD64;H2 # HANGUL SYLLABLE BYO
-BD65..BD7F;H3 # HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH
-BD80;H2 # HANGUL SYLLABLE BU
-BD81..BD9B;H3 # HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH
-BD9C;H2 # HANGUL SYLLABLE BWEO
-BD9D..BDB7;H3 # HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH
-BDB8;H2 # HANGUL SYLLABLE BWE
-BDB9..BDD3;H3 # HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH
-BDD4;H2 # HANGUL SYLLABLE BWI
-BDD5..BDEF;H3 # HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH
-BDF0;H2 # HANGUL SYLLABLE BYU
-BDF1..BE0B;H3 # HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH
-BE0C;H2 # HANGUL SYLLABLE BEU
-BE0D..BE27;H3 # HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH
-BE28;H2 # HANGUL SYLLABLE BYI
-BE29..BE43;H3 # HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH
-BE44;H2 # HANGUL SYLLABLE BI
-BE45..BE5F;H3 # HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH
-BE60;H2 # HANGUL SYLLABLE BBA
-BE61..BE7B;H3 # HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH
-BE7C;H2 # HANGUL SYLLABLE BBAE
-BE7D..BE97;H3 # HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH
-BE98;H2 # HANGUL SYLLABLE BBYA
-BE99..BEB3;H3 # HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH
-BEB4;H2 # HANGUL SYLLABLE BBYAE
-BEB5..BECF;H3 # HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH
-BED0;H2 # HANGUL SYLLABLE BBEO
-BED1..BEEB;H3 # HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH
-BEEC;H2 # HANGUL SYLLABLE BBE
-BEED..BF07;H3 # HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH
-BF08;H2 # HANGUL SYLLABLE BBYEO
-BF09..BF23;H3 # HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH
-BF24;H2 # HANGUL SYLLABLE BBYE
-BF25..BF3F;H3 # HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH
-BF40;H2 # HANGUL SYLLABLE BBO
-BF41..BF5B;H3 # HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH
-BF5C;H2 # HANGUL SYLLABLE BBWA
-BF5D..BF77;H3 # HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH
-BF78;H2 # HANGUL SYLLABLE BBWAE
-BF79..BF93;H3 # HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH
-BF94;H2 # HANGUL SYLLABLE BBOE
-BF95..BFAF;H3 # HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH
-BFB0;H2 # HANGUL SYLLABLE BBYO
-BFB1..BFCB;H3 # HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH
-BFCC;H2 # HANGUL SYLLABLE BBU
-BFCD..BFE7;H3 # HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH
-BFE8;H2 # HANGUL SYLLABLE BBWEO
-BFE9..C003;H3 # HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH
-C004;H2 # HANGUL SYLLABLE BBWE
-C005..C01F;H3 # HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH
-C020;H2 # HANGUL SYLLABLE BBWI
-C021..C03B;H3 # HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH
-C03C;H2 # HANGUL SYLLABLE BBYU
-C03D..C057;H3 # HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH
-C058;H2 # HANGUL SYLLABLE BBEU
-C059..C073;H3 # HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH
-C074;H2 # HANGUL SYLLABLE BBYI
-C075..C08F;H3 # HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH
-C090;H2 # HANGUL SYLLABLE BBI
-C091..C0AB;H3 # HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH
-C0AC;H2 # HANGUL SYLLABLE SA
-C0AD..C0C7;H3 # HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH
-C0C8;H2 # HANGUL SYLLABLE SAE
-C0C9..C0E3;H3 # HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH
-C0E4;H2 # HANGUL SYLLABLE SYA
-C0E5..C0FF;H3 # HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH
-C100;H2 # HANGUL SYLLABLE SYAE
-C101..C11B;H3 # HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH
-C11C;H2 # HANGUL SYLLABLE SEO
-C11D..C137;H3 # HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH
-C138;H2 # HANGUL SYLLABLE SE
-C139..C153;H3 # HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH
-C154;H2 # HANGUL SYLLABLE SYEO
-C155..C16F;H3 # HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH
-C170;H2 # HANGUL SYLLABLE SYE
-C171..C18B;H3 # HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH
-C18C;H2 # HANGUL SYLLABLE SO
-C18D..C1A7;H3 # HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH
-C1A8;H2 # HANGUL SYLLABLE SWA
-C1A9..C1C3;H3 # HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH
-C1C4;H2 # HANGUL SYLLABLE SWAE
-C1C5..C1DF;H3 # HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH
-C1E0;H2 # HANGUL SYLLABLE SOE
-C1E1..C1FB;H3 # HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH
-C1FC;H2 # HANGUL SYLLABLE SYO
-C1FD..C217;H3 # HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH
-C218;H2 # HANGUL SYLLABLE SU
-C219..C233;H3 # HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH
-C234;H2 # HANGUL SYLLABLE SWEO
-C235..C24F;H3 # HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH
-C250;H2 # HANGUL SYLLABLE SWE
-C251..C26B;H3 # HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH
-C26C;H2 # HANGUL SYLLABLE SWI
-C26D..C287;H3 # HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH
-C288;H2 # HANGUL SYLLABLE SYU
-C289..C2A3;H3 # HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH
-C2A4;H2 # HANGUL SYLLABLE SEU
-C2A5..C2BF;H3 # HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH
-C2C0;H2 # HANGUL SYLLABLE SYI
-C2C1..C2DB;H3 # HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH
-C2DC;H2 # HANGUL SYLLABLE SI
-C2DD..C2F7;H3 # HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH
-C2F8;H2 # HANGUL SYLLABLE SSA
-C2F9..C313;H3 # HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH
-C314;H2 # HANGUL SYLLABLE SSAE
-C315..C32F;H3 # HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH
-C330;H2 # HANGUL SYLLABLE SSYA
-C331..C34B;H3 # HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH
-C34C;H2 # HANGUL SYLLABLE SSYAE
-C34D..C367;H3 # HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH
-C368;H2 # HANGUL SYLLABLE SSEO
-C369..C383;H3 # HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH
-C384;H2 # HANGUL SYLLABLE SSE
-C385..C39F;H3 # HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH
-C3A0;H2 # HANGUL SYLLABLE SSYEO
-C3A1..C3BB;H3 # HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH
-C3BC;H2 # HANGUL SYLLABLE SSYE
-C3BD..C3D7;H3 # HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH
-C3D8;H2 # HANGUL SYLLABLE SSO
-C3D9..C3F3;H3 # HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH
-C3F4;H2 # HANGUL SYLLABLE SSWA
-C3F5..C40F;H3 # HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH
-C410;H2 # HANGUL SYLLABLE SSWAE
-C411..C42B;H3 # HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH
-C42C;H2 # HANGUL SYLLABLE SSOE
-C42D..C447;H3 # HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH
-C448;H2 # HANGUL SYLLABLE SSYO
-C449..C463;H3 # HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH
-C464;H2 # HANGUL SYLLABLE SSU
-C465..C47F;H3 # HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH
-C480;H2 # HANGUL SYLLABLE SSWEO
-C481..C49B;H3 # HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH
-C49C;H2 # HANGUL SYLLABLE SSWE
-C49D..C4B7;H3 # HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH
-C4B8;H2 # HANGUL SYLLABLE SSWI
-C4B9..C4D3;H3 # HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH
-C4D4;H2 # HANGUL SYLLABLE SSYU
-C4D5..C4EF;H3 # HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH
-C4F0;H2 # HANGUL SYLLABLE SSEU
-C4F1..C50B;H3 # HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH
-C50C;H2 # HANGUL SYLLABLE SSYI
-C50D..C527;H3 # HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH
-C528;H2 # HANGUL SYLLABLE SSI
-C529..C543;H3 # HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH
-C544;H2 # HANGUL SYLLABLE A
-C545..C55F;H3 # HANGUL SYLLABLE AG..HANGUL SYLLABLE AH
-C560;H2 # HANGUL SYLLABLE AE
-C561..C57B;H3 # HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH
-C57C;H2 # HANGUL SYLLABLE YA
-C57D..C597;H3 # HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH
-C598;H2 # HANGUL SYLLABLE YAE
-C599..C5B3;H3 # HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH
-C5B4;H2 # HANGUL SYLLABLE EO
-C5B5..C5CF;H3 # HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH
-C5D0;H2 # HANGUL SYLLABLE E
-C5D1..C5EB;H3 # HANGUL SYLLABLE EG..HANGUL SYLLABLE EH
-C5EC;H2 # HANGUL SYLLABLE YEO
-C5ED..C607;H3 # HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH
-C608;H2 # HANGUL SYLLABLE YE
-C609..C623;H3 # HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH
-C624;H2 # HANGUL SYLLABLE O
-C625..C63F;H3 # HANGUL SYLLABLE OG..HANGUL SYLLABLE OH
-C640;H2 # HANGUL SYLLABLE WA
-C641..C65B;H3 # HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH
-C65C;H2 # HANGUL SYLLABLE WAE
-C65D..C677;H3 # HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH
-C678;H2 # HANGUL SYLLABLE OE
-C679..C693;H3 # HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH
-C694;H2 # HANGUL SYLLABLE YO
-C695..C6AF;H3 # HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH
-C6B0;H2 # HANGUL SYLLABLE U
-C6B1..C6CB;H3 # HANGUL SYLLABLE UG..HANGUL SYLLABLE UH
-C6CC;H2 # HANGUL SYLLABLE WEO
-C6CD..C6E7;H3 # HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH
-C6E8;H2 # HANGUL SYLLABLE WE
-C6E9..C703;H3 # HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH
-C704;H2 # HANGUL SYLLABLE WI
-C705..C71F;H3 # HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH
-C720;H2 # HANGUL SYLLABLE YU
-C721..C73B;H3 # HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH
-C73C;H2 # HANGUL SYLLABLE EU
-C73D..C757;H3 # HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH
-C758;H2 # HANGUL SYLLABLE YI
-C759..C773;H3 # HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH
-C774;H2 # HANGUL SYLLABLE I
-C775..C78F;H3 # HANGUL SYLLABLE IG..HANGUL SYLLABLE IH
-C790;H2 # HANGUL SYLLABLE JA
-C791..C7AB;H3 # HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH
-C7AC;H2 # HANGUL SYLLABLE JAE
-C7AD..C7C7;H3 # HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH
-C7C8;H2 # HANGUL SYLLABLE JYA
-C7C9..C7E3;H3 # HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH
-C7E4;H2 # HANGUL SYLLABLE JYAE
-C7E5..C7FF;H3 # HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH
-C800;H2 # HANGUL SYLLABLE JEO
-C801..C81B;H3 # HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH
-C81C;H2 # HANGUL SYLLABLE JE
-C81D..C837;H3 # HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH
-C838;H2 # HANGUL SYLLABLE JYEO
-C839..C853;H3 # HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH
-C854;H2 # HANGUL SYLLABLE JYE
-C855..C86F;H3 # HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH
-C870;H2 # HANGUL SYLLABLE JO
-C871..C88B;H3 # HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH
-C88C;H2 # HANGUL SYLLABLE JWA
-C88D..C8A7;H3 # HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH
-C8A8;H2 # HANGUL SYLLABLE JWAE
-C8A9..C8C3;H3 # HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH
-C8C4;H2 # HANGUL SYLLABLE JOE
-C8C5..C8DF;H3 # HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH
-C8E0;H2 # HANGUL SYLLABLE JYO
-C8E1..C8FB;H3 # HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH
-C8FC;H2 # HANGUL SYLLABLE JU
-C8FD..C917;H3 # HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH
-C918;H2 # HANGUL SYLLABLE JWEO
-C919..C933;H3 # HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH
-C934;H2 # HANGUL SYLLABLE JWE
-C935..C94F;H3 # HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH
-C950;H2 # HANGUL SYLLABLE JWI
-C951..C96B;H3 # HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH
-C96C;H2 # HANGUL SYLLABLE JYU
-C96D..C987;H3 # HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH
-C988;H2 # HANGUL SYLLABLE JEU
-C989..C9A3;H3 # HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH
-C9A4;H2 # HANGUL SYLLABLE JYI
-C9A5..C9BF;H3 # HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH
-C9C0;H2 # HANGUL SYLLABLE JI
-C9C1..C9DB;H3 # HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH
-C9DC;H2 # HANGUL SYLLABLE JJA
-C9DD..C9F7;H3 # HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH
-C9F8;H2 # HANGUL SYLLABLE JJAE
-C9F9..CA13;H3 # HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH
-CA14;H2 # HANGUL SYLLABLE JJYA
-CA15..CA2F;H3 # HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH
-CA30;H2 # HANGUL SYLLABLE JJYAE
-CA31..CA4B;H3 # HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH
-CA4C;H2 # HANGUL SYLLABLE JJEO
-CA4D..CA67;H3 # HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH
-CA68;H2 # HANGUL SYLLABLE JJE
-CA69..CA83;H3 # HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH
-CA84;H2 # HANGUL SYLLABLE JJYEO
-CA85..CA9F;H3 # HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH
-CAA0;H2 # HANGUL SYLLABLE JJYE
-CAA1..CABB;H3 # HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH
-CABC;H2 # HANGUL SYLLABLE JJO
-CABD..CAD7;H3 # HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH
-CAD8;H2 # HANGUL SYLLABLE JJWA
-CAD9..CAF3;H3 # HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH
-CAF4;H2 # HANGUL SYLLABLE JJWAE
-CAF5..CB0F;H3 # HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH
-CB10;H2 # HANGUL SYLLABLE JJOE
-CB11..CB2B;H3 # HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH
-CB2C;H2 # HANGUL SYLLABLE JJYO
-CB2D..CB47;H3 # HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH
-CB48;H2 # HANGUL SYLLABLE JJU
-CB49..CB63;H3 # HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH
-CB64;H2 # HANGUL SYLLABLE JJWEO
-CB65..CB7F;H3 # HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH
-CB80;H2 # HANGUL SYLLABLE JJWE
-CB81..CB9B;H3 # HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH
-CB9C;H2 # HANGUL SYLLABLE JJWI
-CB9D..CBB7;H3 # HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH
-CBB8;H2 # HANGUL SYLLABLE JJYU
-CBB9..CBD3;H3 # HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH
-CBD4;H2 # HANGUL SYLLABLE JJEU
-CBD5..CBEF;H3 # HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH
-CBF0;H2 # HANGUL SYLLABLE JJYI
-CBF1..CC0B;H3 # HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH
-CC0C;H2 # HANGUL SYLLABLE JJI
-CC0D..CC27;H3 # HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH
-CC28;H2 # HANGUL SYLLABLE CA
-CC29..CC43;H3 # HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH
-CC44;H2 # HANGUL SYLLABLE CAE
-CC45..CC5F;H3 # HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH
-CC60;H2 # HANGUL SYLLABLE CYA
-CC61..CC7B;H3 # HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH
-CC7C;H2 # HANGUL SYLLABLE CYAE
-CC7D..CC97;H3 # HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH
-CC98;H2 # HANGUL SYLLABLE CEO
-CC99..CCB3;H3 # HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH
-CCB4;H2 # HANGUL SYLLABLE CE
-CCB5..CCCF;H3 # HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH
-CCD0;H2 # HANGUL SYLLABLE CYEO
-CCD1..CCEB;H3 # HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH
-CCEC;H2 # HANGUL SYLLABLE CYE
-CCED..CD07;H3 # HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH
-CD08;H2 # HANGUL SYLLABLE CO
-CD09..CD23;H3 # HANGUL SYLLABLE COG..HANGUL SYLLABLE COH
-CD24;H2 # HANGUL SYLLABLE CWA
-CD25..CD3F;H3 # HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH
-CD40;H2 # HANGUL SYLLABLE CWAE
-CD41..CD5B;H3 # HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH
-CD5C;H2 # HANGUL SYLLABLE COE
-CD5D..CD77;H3 # HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH
-CD78;H2 # HANGUL SYLLABLE CYO
-CD79..CD93;H3 # HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH
-CD94;H2 # HANGUL SYLLABLE CU
-CD95..CDAF;H3 # HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH
-CDB0;H2 # HANGUL SYLLABLE CWEO
-CDB1..CDCB;H3 # HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH
-CDCC;H2 # HANGUL SYLLABLE CWE
-CDCD..CDE7;H3 # HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH
-CDE8;H2 # HANGUL SYLLABLE CWI
-CDE9..CE03;H3 # HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH
-CE04;H2 # HANGUL SYLLABLE CYU
-CE05..CE1F;H3 # HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH
-CE20;H2 # HANGUL SYLLABLE CEU
-CE21..CE3B;H3 # HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH
-CE3C;H2 # HANGUL SYLLABLE CYI
-CE3D..CE57;H3 # HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH
-CE58;H2 # HANGUL SYLLABLE CI
-CE59..CE73;H3 # HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH
-CE74;H2 # HANGUL SYLLABLE KA
-CE75..CE8F;H3 # HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH
-CE90;H2 # HANGUL SYLLABLE KAE
-CE91..CEAB;H3 # HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH
-CEAC;H2 # HANGUL SYLLABLE KYA
-CEAD..CEC7;H3 # HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH
-CEC8;H2 # HANGUL SYLLABLE KYAE
-CEC9..CEE3;H3 # HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH
-CEE4;H2 # HANGUL SYLLABLE KEO
-CEE5..CEFF;H3 # HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH
-CF00;H2 # HANGUL SYLLABLE KE
-CF01..CF1B;H3 # HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH
-CF1C;H2 # HANGUL SYLLABLE KYEO
-CF1D..CF37;H3 # HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH
-CF38;H2 # HANGUL SYLLABLE KYE
-CF39..CF53;H3 # HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH
-CF54;H2 # HANGUL SYLLABLE KO
-CF55..CF6F;H3 # HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH
-CF70;H2 # HANGUL SYLLABLE KWA
-CF71..CF8B;H3 # HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH
-CF8C;H2 # HANGUL SYLLABLE KWAE
-CF8D..CFA7;H3 # HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH
-CFA8;H2 # HANGUL SYLLABLE KOE
-CFA9..CFC3;H3 # HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH
-CFC4;H2 # HANGUL SYLLABLE KYO
-CFC5..CFDF;H3 # HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH
-CFE0;H2 # HANGUL SYLLABLE KU
-CFE1..CFFB;H3 # HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH
-CFFC;H2 # HANGUL SYLLABLE KWEO
-CFFD..D017;H3 # HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH
-D018;H2 # HANGUL SYLLABLE KWE
-D019..D033;H3 # HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH
-D034;H2 # HANGUL SYLLABLE KWI
-D035..D04F;H3 # HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH
-D050;H2 # HANGUL SYLLABLE KYU
-D051..D06B;H3 # HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH
-D06C;H2 # HANGUL SYLLABLE KEU
-D06D..D087;H3 # HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH
-D088;H2 # HANGUL SYLLABLE KYI
-D089..D0A3;H3 # HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH
-D0A4;H2 # HANGUL SYLLABLE KI
-D0A5..D0BF;H3 # HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH
-D0C0;H2 # HANGUL SYLLABLE TA
-D0C1..D0DB;H3 # HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH
-D0DC;H2 # HANGUL SYLLABLE TAE
-D0DD..D0F7;H3 # HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH
-D0F8;H2 # HANGUL SYLLABLE TYA
-D0F9..D113;H3 # HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH
-D114;H2 # HANGUL SYLLABLE TYAE
-D115..D12F;H3 # HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH
-D130;H2 # HANGUL SYLLABLE TEO
-D131..D14B;H3 # HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH
-D14C;H2 # HANGUL SYLLABLE TE
-D14D..D167;H3 # HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH
-D168;H2 # HANGUL SYLLABLE TYEO
-D169..D183;H3 # HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH
-D184;H2 # HANGUL SYLLABLE TYE
-D185..D19F;H3 # HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH
-D1A0;H2 # HANGUL SYLLABLE TO
-D1A1..D1BB;H3 # HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH
-D1BC;H2 # HANGUL SYLLABLE TWA
-D1BD..D1D7;H3 # HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH
-D1D8;H2 # HANGUL SYLLABLE TWAE
-D1D9..D1F3;H3 # HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH
-D1F4;H2 # HANGUL SYLLABLE TOE
-D1F5..D20F;H3 # HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH
-D210;H2 # HANGUL SYLLABLE TYO
-D211..D22B;H3 # HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH
-D22C;H2 # HANGUL SYLLABLE TU
-D22D..D247;H3 # HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH
-D248;H2 # HANGUL SYLLABLE TWEO
-D249..D263;H3 # HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH
-D264;H2 # HANGUL SYLLABLE TWE
-D265..D27F;H3 # HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH
-D280;H2 # HANGUL SYLLABLE TWI
-D281..D29B;H3 # HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH
-D29C;H2 # HANGUL SYLLABLE TYU
-D29D..D2B7;H3 # HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH
-D2B8;H2 # HANGUL SYLLABLE TEU
-D2B9..D2D3;H3 # HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH
-D2D4;H2 # HANGUL SYLLABLE TYI
-D2D5..D2EF;H3 # HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH
-D2F0;H2 # HANGUL SYLLABLE TI
-D2F1..D30B;H3 # HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH
-D30C;H2 # HANGUL SYLLABLE PA
-D30D..D327;H3 # HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH
-D328;H2 # HANGUL SYLLABLE PAE
-D329..D343;H3 # HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH
-D344;H2 # HANGUL SYLLABLE PYA
-D345..D35F;H3 # HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH
-D360;H2 # HANGUL SYLLABLE PYAE
-D361..D37B;H3 # HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH
-D37C;H2 # HANGUL SYLLABLE PEO
-D37D..D397;H3 # HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH
-D398;H2 # HANGUL SYLLABLE PE
-D399..D3B3;H3 # HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH
-D3B4;H2 # HANGUL SYLLABLE PYEO
-D3B5..D3CF;H3 # HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH
-D3D0;H2 # HANGUL SYLLABLE PYE
-D3D1..D3EB;H3 # HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH
-D3EC;H2 # HANGUL SYLLABLE PO
-D3ED..D407;H3 # HANGUL SYLLABLE POG..HANGUL SYLLABLE POH
-D408;H2 # HANGUL SYLLABLE PWA
-D409..D423;H3 # HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH
-D424;H2 # HANGUL SYLLABLE PWAE
-D425..D43F;H3 # HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH
-D440;H2 # HANGUL SYLLABLE POE
-D441..D45B;H3 # HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH
-D45C;H2 # HANGUL SYLLABLE PYO
-D45D..D477;H3 # HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH
-D478;H2 # HANGUL SYLLABLE PU
-D479..D493;H3 # HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH
-D494;H2 # HANGUL SYLLABLE PWEO
-D495..D4AF;H3 # HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH
-D4B0;H2 # HANGUL SYLLABLE PWE
-D4B1..D4CB;H3 # HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH
-D4CC;H2 # HANGUL SYLLABLE PWI
-D4CD..D4E7;H3 # HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH
-D4E8;H2 # HANGUL SYLLABLE PYU
-D4E9..D503;H3 # HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH
-D504;H2 # HANGUL SYLLABLE PEU
-D505..D51F;H3 # HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH
-D520;H2 # HANGUL SYLLABLE PYI
-D521..D53B;H3 # HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH
-D53C;H2 # HANGUL SYLLABLE PI
-D53D..D557;H3 # HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH
-D558;H2 # HANGUL SYLLABLE HA
-D559..D573;H3 # HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH
-D574;H2 # HANGUL SYLLABLE HAE
-D575..D58F;H3 # HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH
-D590;H2 # HANGUL SYLLABLE HYA
-D591..D5AB;H3 # HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH
-D5AC;H2 # HANGUL SYLLABLE HYAE
-D5AD..D5C7;H3 # HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH
-D5C8;H2 # HANGUL SYLLABLE HEO
-D5C9..D5E3;H3 # HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH
-D5E4;H2 # HANGUL SYLLABLE HE
-D5E5..D5FF;H3 # HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH
-D600;H2 # HANGUL SYLLABLE HYEO
-D601..D61B;H3 # HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH
-D61C;H2 # HANGUL SYLLABLE HYE
-D61D..D637;H3 # HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH
-D638;H2 # HANGUL SYLLABLE HO
-D639..D653;H3 # HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH
-D654;H2 # HANGUL SYLLABLE HWA
-D655..D66F;H3 # HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH
-D670;H2 # HANGUL SYLLABLE HWAE
-D671..D68B;H3 # HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH
-D68C;H2 # HANGUL SYLLABLE HOE
-D68D..D6A7;H3 # HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH
-D6A8;H2 # HANGUL SYLLABLE HYO
-D6A9..D6C3;H3 # HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH
-D6C4;H2 # HANGUL SYLLABLE HU
-D6C5..D6DF;H3 # HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH
-D6E0;H2 # HANGUL SYLLABLE HWEO
-D6E1..D6FB;H3 # HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH
-D6FC;H2 # HANGUL SYLLABLE HWE
-D6FD..D717;H3 # HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH
-D718;H2 # HANGUL SYLLABLE HWI
-D719..D733;H3 # HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH
-D734;H2 # HANGUL SYLLABLE HYU
-D735..D74F;H3 # HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH
-D750;H2 # HANGUL SYLLABLE HEU
-D751..D76B;H3 # HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH
-D76C;H2 # HANGUL SYLLABLE HYI
-D76D..D787;H3 # HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH
-D788;H2 # HANGUL SYLLABLE HI
-D789..D7A3;H3 # HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH
-D800..DB7F;SG # <Non Private Use High Surrogate, First>..<Non Private Use High Surrogate, Last>
-DB80..DBFF;SG # <Private Use High Surrogate, First>..<Private Use High Surrogate, Last>
-DC00..DFFF;SG # <Low Surrogate, First>..<Low Surrogate, Last>
-E000..F8FF;XX # <Private Use, First>..<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
-FA30;ID # CJK COMPATIBILITY IDEOGRAPH-FA30
-FA31;ID # CJK COMPATIBILITY IDEOGRAPH-FA31
-FA32;ID # CJK COMPATIBILITY IDEOGRAPH-FA32
-FA33;ID # CJK COMPATIBILITY IDEOGRAPH-FA33
-FA34;ID # CJK COMPATIBILITY IDEOGRAPH-FA34
-FA35;ID # CJK COMPATIBILITY IDEOGRAPH-FA35
-FA36;ID # CJK COMPATIBILITY IDEOGRAPH-FA36
-FA37;ID # CJK COMPATIBILITY IDEOGRAPH-FA37
-FA38;ID # CJK COMPATIBILITY IDEOGRAPH-FA38
-FA39;ID # CJK COMPATIBILITY IDEOGRAPH-FA39
-FA3A;ID # CJK COMPATIBILITY IDEOGRAPH-FA3A
-FA3B;ID # CJK COMPATIBILITY IDEOGRAPH-FA3B
-FA3C;ID # CJK COMPATIBILITY IDEOGRAPH-FA3C
-FA3D;ID # CJK COMPATIBILITY IDEOGRAPH-FA3D
-FA3E;ID # CJK COMPATIBILITY IDEOGRAPH-FA3E
-FA3F;ID # CJK COMPATIBILITY IDEOGRAPH-FA3F
-FA40;ID # CJK COMPATIBILITY IDEOGRAPH-FA40
-FA41;ID # CJK COMPATIBILITY IDEOGRAPH-FA41
-FA42;ID # CJK COMPATIBILITY IDEOGRAPH-FA42
-FA43;ID # CJK COMPATIBILITY IDEOGRAPH-FA43
-FA44;ID # CJK COMPATIBILITY IDEOGRAPH-FA44
-FA45;ID # CJK COMPATIBILITY IDEOGRAPH-FA45
-FA46;ID # CJK COMPATIBILITY IDEOGRAPH-FA46
-FA47;ID # CJK COMPATIBILITY IDEOGRAPH-FA47
-FA48;ID # CJK COMPATIBILITY IDEOGRAPH-FA48
-FA49;ID # CJK COMPATIBILITY IDEOGRAPH-FA49
-FA4A;ID # CJK COMPATIBILITY IDEOGRAPH-FA4A
-FA4B;ID # CJK COMPATIBILITY IDEOGRAPH-FA4B
-FA4C;ID # CJK COMPATIBILITY IDEOGRAPH-FA4C
-FA4D;ID # CJK COMPATIBILITY IDEOGRAPH-FA4D
-FA4E;ID # CJK COMPATIBILITY IDEOGRAPH-FA4E
-FA4F;ID # CJK COMPATIBILITY IDEOGRAPH-FA4F
-FA50;ID # CJK COMPATIBILITY IDEOGRAPH-FA50
-FA51;ID # CJK COMPATIBILITY IDEOGRAPH-FA51
-FA52;ID # CJK COMPATIBILITY IDEOGRAPH-FA52
-FA53;ID # CJK COMPATIBILITY IDEOGRAPH-FA53
-FA54;ID # CJK COMPATIBILITY IDEOGRAPH-FA54
-FA55;ID # CJK COMPATIBILITY IDEOGRAPH-FA55
-FA56;ID # CJK COMPATIBILITY IDEOGRAPH-FA56
-FA57;ID # CJK COMPATIBILITY IDEOGRAPH-FA57
-FA58;ID # CJK COMPATIBILITY IDEOGRAPH-FA58
-FA59;ID # CJK COMPATIBILITY IDEOGRAPH-FA59
-FA5A;ID # CJK COMPATIBILITY IDEOGRAPH-FA5A
-FA5B;ID # CJK COMPATIBILITY IDEOGRAPH-FA5B
-FA5C;ID # CJK COMPATIBILITY IDEOGRAPH-FA5C
-FA5D;ID # CJK COMPATIBILITY IDEOGRAPH-FA5D
-FA5E;ID # CJK COMPATIBILITY IDEOGRAPH-FA5E
-FA5F;ID # CJK COMPATIBILITY IDEOGRAPH-FA5F
-FA60;ID # CJK COMPATIBILITY IDEOGRAPH-FA60
-FA61;ID # CJK COMPATIBILITY IDEOGRAPH-FA61
-FA62;ID # CJK COMPATIBILITY IDEOGRAPH-FA62
-FA63;ID # CJK COMPATIBILITY IDEOGRAPH-FA63
-FA64;ID # CJK COMPATIBILITY IDEOGRAPH-FA64
-FA65;ID # CJK COMPATIBILITY IDEOGRAPH-FA65
-FA66;ID # CJK COMPATIBILITY IDEOGRAPH-FA66
-FA67;ID # CJK COMPATIBILITY IDEOGRAPH-FA67
-FA68;ID # CJK COMPATIBILITY IDEOGRAPH-FA68
-FA69;ID # CJK COMPATIBILITY IDEOGRAPH-FA69
-FA6A;ID # CJK COMPATIBILITY IDEOGRAPH-FA6A
-FA70;ID # CJK COMPATIBILITY IDEOGRAPH-FA70
-FA71;ID # CJK COMPATIBILITY IDEOGRAPH-FA71
-FA72;ID # CJK COMPATIBILITY IDEOGRAPH-FA72
-FA73;ID # CJK COMPATIBILITY IDEOGRAPH-FA73
-FA74;ID # CJK COMPATIBILITY IDEOGRAPH-FA74
-FA75;ID # CJK COMPATIBILITY IDEOGRAPH-FA75
-FA76;ID # CJK COMPATIBILITY IDEOGRAPH-FA76
-FA77;ID # CJK COMPATIBILITY IDEOGRAPH-FA77
-FA78;ID # CJK COMPATIBILITY IDEOGRAPH-FA78
-FA79;ID # CJK COMPATIBILITY IDEOGRAPH-FA79
-FA7A;ID # CJK COMPATIBILITY IDEOGRAPH-FA7A
-FA7B;ID # CJK COMPATIBILITY IDEOGRAPH-FA7B
-FA7C;ID # CJK COMPATIBILITY IDEOGRAPH-FA7C
-FA7D;ID # CJK COMPATIBILITY IDEOGRAPH-FA7D
-FA7E;ID # CJK COMPATIBILITY IDEOGRAPH-FA7E
-FA7F;ID # CJK COMPATIBILITY IDEOGRAPH-FA7F
-FA80;ID # CJK COMPATIBILITY IDEOGRAPH-FA80
-FA81;ID # CJK COMPATIBILITY IDEOGRAPH-FA81
-FA82;ID # CJK COMPATIBILITY IDEOGRAPH-FA82
-FA83;ID # CJK COMPATIBILITY IDEOGRAPH-FA83
-FA84;ID # CJK COMPATIBILITY IDEOGRAPH-FA84
-FA85;ID # CJK COMPATIBILITY IDEOGRAPH-FA85
-FA86;ID # CJK COMPATIBILITY IDEOGRAPH-FA86
-FA87;ID # CJK COMPATIBILITY IDEOGRAPH-FA87
-FA88;ID # CJK COMPATIBILITY IDEOGRAPH-FA88
-FA89;ID # CJK COMPATIBILITY IDEOGRAPH-FA89
-FA8A;ID # CJK COMPATIBILITY IDEOGRAPH-FA8A
-FA8B;ID # CJK COMPATIBILITY IDEOGRAPH-FA8B
-FA8C;ID # CJK COMPATIBILITY IDEOGRAPH-FA8C
-FA8D;ID # CJK COMPATIBILITY IDEOGRAPH-FA8D
-FA8E;ID # CJK COMPATIBILITY IDEOGRAPH-FA8E
-FA8F;ID # CJK COMPATIBILITY IDEOGRAPH-FA8F
-FA90;ID # CJK COMPATIBILITY IDEOGRAPH-FA90
-FA91;ID # CJK COMPATIBILITY IDEOGRAPH-FA91
-FA92;ID # CJK COMPATIBILITY IDEOGRAPH-FA92
-FA93;ID # CJK COMPATIBILITY IDEOGRAPH-FA93
-FA94;ID # CJK COMPATIBILITY IDEOGRAPH-FA94
-FA95;ID # CJK COMPATIBILITY IDEOGRAPH-FA95
-FA96;ID # CJK COMPATIBILITY IDEOGRAPH-FA96
-FA97;ID # CJK COMPATIBILITY IDEOGRAPH-FA97
-FA98;ID # CJK COMPATIBILITY IDEOGRAPH-FA98
-FA99;ID # CJK COMPATIBILITY IDEOGRAPH-FA99
-FA9A;ID # CJK COMPATIBILITY IDEOGRAPH-FA9A
-FA9B;ID # CJK COMPATIBILITY IDEOGRAPH-FA9B
-FA9C;ID # CJK COMPATIBILITY IDEOGRAPH-FA9C
-FA9D;ID # CJK COMPATIBILITY IDEOGRAPH-FA9D
-FA9E;ID # CJK COMPATIBILITY IDEOGRAPH-FA9E
-FA9F;ID # CJK COMPATIBILITY IDEOGRAPH-FA9F
-FAA0;ID # CJK COMPATIBILITY IDEOGRAPH-FAA0
-FAA1;ID # CJK COMPATIBILITY IDEOGRAPH-FAA1
-FAA2;ID # CJK COMPATIBILITY IDEOGRAPH-FAA2
-FAA3;ID # CJK COMPATIBILITY IDEOGRAPH-FAA3
-FAA4;ID # CJK COMPATIBILITY IDEOGRAPH-FAA4
-FAA5;ID # CJK COMPATIBILITY IDEOGRAPH-FAA5
-FAA6;ID # CJK COMPATIBILITY IDEOGRAPH-FAA6
-FAA7;ID # CJK COMPATIBILITY IDEOGRAPH-FAA7
-FAA8;ID # CJK COMPATIBILITY IDEOGRAPH-FAA8
-FAA9;ID # CJK COMPATIBILITY IDEOGRAPH-FAA9
-FAAA;ID # CJK COMPATIBILITY IDEOGRAPH-FAAA
-FAAB;ID # CJK COMPATIBILITY IDEOGRAPH-FAAB
-FAAC;ID # CJK COMPATIBILITY IDEOGRAPH-FAAC
-FAAD;ID # CJK COMPATIBILITY IDEOGRAPH-FAAD
-FAAE;ID # CJK COMPATIBILITY IDEOGRAPH-FAAE
-FAAF;ID # CJK COMPATIBILITY IDEOGRAPH-FAAF
-FAB0;ID # CJK COMPATIBILITY IDEOGRAPH-FAB0
-FAB1;ID # CJK COMPATIBILITY IDEOGRAPH-FAB1
-FAB2;ID # CJK COMPATIBILITY IDEOGRAPH-FAB2
-FAB3;ID # CJK COMPATIBILITY IDEOGRAPH-FAB3
-FAB4;ID # CJK COMPATIBILITY IDEOGRAPH-FAB4
-FAB5;ID # CJK COMPATIBILITY IDEOGRAPH-FAB5
-FAB6;ID # CJK COMPATIBILITY IDEOGRAPH-FAB6
-FAB7;ID # CJK COMPATIBILITY IDEOGRAPH-FAB7
-FAB8;ID # CJK COMPATIBILITY IDEOGRAPH-FAB8
-FAB9;ID # CJK COMPATIBILITY IDEOGRAPH-FAB9
-FABA;ID # CJK COMPATIBILITY IDEOGRAPH-FABA
-FABB;ID # CJK COMPATIBILITY IDEOGRAPH-FABB
-FABC;ID # CJK COMPATIBILITY IDEOGRAPH-FABC
-FABD;ID # CJK COMPATIBILITY IDEOGRAPH-FABD
-FABE;ID # CJK COMPATIBILITY IDEOGRAPH-FABE
-FABF;ID # CJK COMPATIBILITY IDEOGRAPH-FABF
-FAC0;ID # CJK COMPATIBILITY IDEOGRAPH-FAC0
-FAC1;ID # CJK COMPATIBILITY IDEOGRAPH-FAC1
-FAC2;ID # CJK COMPATIBILITY IDEOGRAPH-FAC2
-FAC3;ID # CJK COMPATIBILITY IDEOGRAPH-FAC3
-FAC4;ID # CJK COMPATIBILITY IDEOGRAPH-FAC4
-FAC5;ID # CJK COMPATIBILITY IDEOGRAPH-FAC5
-FAC6;ID # CJK COMPATIBILITY IDEOGRAPH-FAC6
-FAC7;ID # CJK COMPATIBILITY IDEOGRAPH-FAC7
-FAC8;ID # CJK COMPATIBILITY IDEOGRAPH-FAC8
-FAC9;ID # CJK COMPATIBILITY IDEOGRAPH-FAC9
-FACA;ID # CJK COMPATIBILITY IDEOGRAPH-FACA
-FACB;ID # CJK COMPATIBILITY IDEOGRAPH-FACB
-FACC;ID # CJK COMPATIBILITY IDEOGRAPH-FACC
-FACD;ID # CJK COMPATIBILITY IDEOGRAPH-FACD
-FACE;ID # CJK COMPATIBILITY IDEOGRAPH-FACE
-FACF;ID # CJK COMPATIBILITY IDEOGRAPH-FACF
-FAD0;ID # CJK COMPATIBILITY IDEOGRAPH-FAD0
-FAD1;ID # CJK COMPATIBILITY IDEOGRAPH-FAD1
-FAD2;ID # CJK COMPATIBILITY IDEOGRAPH-FAD2
-FAD3;ID # CJK COMPATIBILITY IDEOGRAPH-FAD3
-FAD4;ID # CJK COMPATIBILITY IDEOGRAPH-FAD4
-FAD5;ID # CJK COMPATIBILITY IDEOGRAPH-FAD5
-FAD6;ID # CJK COMPATIBILITY IDEOGRAPH-FAD6
-FAD7;ID # CJK COMPATIBILITY IDEOGRAPH-FAD7
-FAD8;ID # CJK COMPATIBILITY IDEOGRAPH-FAD8
-FAD9;ID # CJK COMPATIBILITY IDEOGRAPH-FAD9
-FB00;AL # LATIN SMALL LIGATURE FF
-FB01;AL # LATIN SMALL LIGATURE FI
-FB02;AL # LATIN SMALL LIGATURE FL
-FB03;AL # LATIN SMALL LIGATURE FFI
-FB04;AL # LATIN SMALL LIGATURE FFL
-FB05;AL # LATIN SMALL LIGATURE LONG S T
-FB06;AL # LATIN SMALL LIGATURE ST
-FB13;AL # ARMENIAN SMALL LIGATURE MEN NOW
-FB14;AL # ARMENIAN SMALL LIGATURE MEN ECH
-FB15;AL # ARMENIAN SMALL LIGATURE MEN INI
-FB16;AL # ARMENIAN SMALL LIGATURE VEW NOW
-FB17;AL # ARMENIAN SMALL LIGATURE MEN XEH
-FB1D;AL # HEBREW LETTER YOD WITH HIRIQ
-FB1E;CM # HEBREW POINT JUDEO-SPANISH VARIKA
-FB1F;AL # HEBREW LIGATURE YIDDISH YOD YOD PATAH
-FB20;AL # HEBREW LETTER ALTERNATIVE AYIN
-FB21;AL # HEBREW LETTER WIDE ALEF
-FB22;AL # HEBREW LETTER WIDE DALET
-FB23;AL # HEBREW LETTER WIDE HE
-FB24;AL # HEBREW LETTER WIDE KAF
-FB25;AL # HEBREW LETTER WIDE LAMED
-FB26;AL # HEBREW LETTER WIDE FINAL MEM
-FB27;AL # HEBREW LETTER WIDE RESH
-FB28;AL # HEBREW LETTER WIDE TAV
-FB29;AL # HEBREW LETTER ALTERNATIVE PLUS SIGN
-FB2A;AL # HEBREW LETTER SHIN WITH SHIN DOT
-FB2B;AL # HEBREW LETTER SHIN WITH SIN DOT
-FB2C;AL # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
-FB2D;AL # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
-FB2E;AL # HEBREW LETTER ALEF WITH PATAH
-FB2F;AL # HEBREW LETTER ALEF WITH QAMATS
-FB30;AL # HEBREW LETTER ALEF WITH MAPIQ
-FB31;AL # HEBREW LETTER BET WITH DAGESH
-FB32;AL # HEBREW LETTER GIMEL WITH DAGESH
-FB33;AL # HEBREW LETTER DALET WITH DAGESH
-FB34;AL # HEBREW LETTER HE WITH MAPIQ
-FB35;AL # HEBREW LETTER VAV WITH DAGESH
-FB36;AL # HEBREW LETTER ZAYIN WITH DAGESH
-FB38;AL # HEBREW LETTER TET WITH DAGESH
-FB39;AL # HEBREW LETTER YOD WITH DAGESH
-FB3A;AL # HEBREW LETTER FINAL KAF WITH DAGESH
-FB3B;AL # HEBREW LETTER KAF WITH DAGESH
-FB3C;AL # HEBREW LETTER LAMED WITH DAGESH
-FB3E;AL # HEBREW LETTER MEM WITH DAGESH
-FB40;AL # HEBREW LETTER NUN WITH DAGESH
-FB41;AL # HEBREW LETTER SAMEKH WITH DAGESH
-FB43;AL # HEBREW LETTER FINAL PE WITH DAGESH
-FB44;AL # HEBREW LETTER PE WITH DAGESH
-FB46;AL # HEBREW LETTER TSADI WITH DAGESH
-FB47;AL # HEBREW LETTER QOF WITH DAGESH
-FB48;AL # HEBREW LETTER RESH WITH DAGESH
-FB49;AL # HEBREW LETTER SHIN WITH DAGESH
-FB4A;AL # HEBREW LETTER TAV WITH DAGESH
-FB4B;AL # HEBREW LETTER VAV WITH HOLAM
-FB4C;AL # HEBREW LETTER BET WITH RAFE
-FB4D;AL # HEBREW LETTER KAF WITH RAFE
-FB4E;AL # HEBREW LETTER PE WITH RAFE
-FB4F;AL # HEBREW LIGATURE ALEF LAMED
-FB50;AL # ARABIC LETTER ALEF WASLA ISOLATED FORM
-FB51;AL # ARABIC LETTER ALEF WASLA FINAL FORM
-FB52;AL # ARABIC LETTER BEEH ISOLATED FORM
-FB53;AL # ARABIC LETTER BEEH FINAL FORM
-FB54;AL # ARABIC LETTER BEEH INITIAL FORM
-FB55;AL # ARABIC LETTER BEEH MEDIAL FORM
-FB56;AL # ARABIC LETTER PEH ISOLATED FORM
-FB57;AL # ARABIC LETTER PEH FINAL FORM
-FB58;AL # ARABIC LETTER PEH INITIAL FORM
-FB59;AL # ARABIC LETTER PEH MEDIAL FORM
-FB5A;AL # ARABIC LETTER BEHEH ISOLATED FORM
-FB5B;AL # ARABIC LETTER BEHEH FINAL FORM
-FB5C;AL # ARABIC LETTER BEHEH INITIAL FORM
-FB5D;AL # ARABIC LETTER BEHEH MEDIAL FORM
-FB5E;AL # ARABIC LETTER TTEHEH ISOLATED FORM
-FB5F;AL # ARABIC LETTER TTEHEH FINAL FORM
-FB60;AL # ARABIC LETTER TTEHEH INITIAL FORM
-FB61;AL # ARABIC LETTER TTEHEH MEDIAL FORM
-FB62;AL # ARABIC LETTER TEHEH ISOLATED FORM
-FB63;AL # ARABIC LETTER TEHEH FINAL FORM
-FB64;AL # ARABIC LETTER TEHEH INITIAL FORM
-FB65;AL # ARABIC LETTER TEHEH MEDIAL FORM
-FB66;AL # ARABIC LETTER TTEH ISOLATED FORM
-FB67;AL # ARABIC LETTER TTEH FINAL FORM
-FB68;AL # ARABIC LETTER TTEH INITIAL FORM
-FB69;AL # ARABIC LETTER TTEH MEDIAL FORM
-FB6A;AL # ARABIC LETTER VEH ISOLATED FORM
-FB6B;AL # ARABIC LETTER VEH FINAL FORM
-FB6C;AL # ARABIC LETTER VEH INITIAL FORM
-FB6D;AL # ARABIC LETTER VEH MEDIAL FORM
-FB6E;AL # ARABIC LETTER PEHEH ISOLATED FORM
-FB6F;AL # ARABIC LETTER PEHEH FINAL FORM
-FB70;AL # ARABIC LETTER PEHEH INITIAL FORM
-FB71;AL # ARABIC LETTER PEHEH MEDIAL FORM
-FB72;AL # ARABIC LETTER DYEH ISOLATED FORM
-FB73;AL # ARABIC LETTER DYEH FINAL FORM
-FB74;AL # ARABIC LETTER DYEH INITIAL FORM
-FB75;AL # ARABIC LETTER DYEH MEDIAL FORM
-FB76;AL # ARABIC LETTER NYEH ISOLATED FORM
-FB77;AL # ARABIC LETTER NYEH FINAL FORM
-FB78;AL # ARABIC LETTER NYEH INITIAL FORM
-FB79;AL # ARABIC LETTER NYEH MEDIAL FORM
-FB7A;AL # ARABIC LETTER TCHEH ISOLATED FORM
-FB7B;AL # ARABIC LETTER TCHEH FINAL FORM
-FB7C;AL # ARABIC LETTER TCHEH INITIAL FORM
-FB7D;AL # ARABIC LETTER TCHEH MEDIAL FORM
-FB7E;AL # ARABIC LETTER TCHEHEH ISOLATED FORM
-FB7F;AL # ARABIC LETTER TCHEHEH FINAL FORM
-FB80;AL # ARABIC LETTER TCHEHEH INITIAL FORM
-FB81;AL # ARABIC LETTER TCHEHEH MEDIAL FORM
-FB82;AL # ARABIC LETTER DDAHAL ISOLATED FORM
-FB83;AL # ARABIC LETTER DDAHAL FINAL FORM
-FB84;AL # ARABIC LETTER DAHAL ISOLATED FORM
-FB85;AL # ARABIC LETTER DAHAL FINAL FORM
-FB86;AL # ARABIC LETTER DUL ISOLATED FORM
-FB87;AL # ARABIC LETTER DUL FINAL FORM
-FB88;AL # ARABIC LETTER DDAL ISOLATED FORM
-FB89;AL # ARABIC LETTER DDAL FINAL FORM
-FB8A;AL # ARABIC LETTER JEH ISOLATED FORM
-FB8B;AL # ARABIC LETTER JEH FINAL FORM
-FB8C;AL # ARABIC LETTER RREH ISOLATED FORM
-FB8D;AL # ARABIC LETTER RREH FINAL FORM
-FB8E;AL # ARABIC LETTER KEHEH ISOLATED FORM
-FB8F;AL # ARABIC LETTER KEHEH FINAL FORM
-FB90;AL # ARABIC LETTER KEHEH INITIAL FORM
-FB91;AL # ARABIC LETTER KEHEH MEDIAL FORM
-FB92;AL # ARABIC LETTER GAF ISOLATED FORM
-FB93;AL # ARABIC LETTER GAF FINAL FORM
-FB94;AL # ARABIC LETTER GAF INITIAL FORM
-FB95;AL # ARABIC LETTER GAF MEDIAL FORM
-FB96;AL # ARABIC LETTER GUEH ISOLATED FORM
-FB97;AL # ARABIC LETTER GUEH FINAL FORM
-FB98;AL # ARABIC LETTER GUEH INITIAL FORM
-FB99;AL # ARABIC LETTER GUEH MEDIAL FORM
-FB9A;AL # ARABIC LETTER NGOEH ISOLATED FORM
-FB9B;AL # ARABIC LETTER NGOEH FINAL FORM
-FB9C;AL # ARABIC LETTER NGOEH INITIAL FORM
-FB9D;AL # ARABIC LETTER NGOEH MEDIAL FORM
-FB9E;AL # ARABIC LETTER NOON GHUNNA ISOLATED FORM
-FB9F;AL # ARABIC LETTER NOON GHUNNA FINAL FORM
-FBA0;AL # ARABIC LETTER RNOON ISOLATED FORM
-FBA1;AL # ARABIC LETTER RNOON FINAL FORM
-FBA2;AL # ARABIC LETTER RNOON INITIAL FORM
-FBA3;AL # ARABIC LETTER RNOON MEDIAL FORM
-FBA4;AL # ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM
-FBA5;AL # ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
-FBA6;AL # ARABIC LETTER HEH GOAL ISOLATED FORM
-FBA7;AL # ARABIC LETTER HEH GOAL FINAL FORM
-FBA8;AL # ARABIC LETTER HEH GOAL INITIAL FORM
-FBA9;AL # ARABIC LETTER HEH GOAL MEDIAL FORM
-FBAA;AL # ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
-FBAB;AL # ARABIC LETTER HEH DOACHASHMEE FINAL FORM
-FBAC;AL # ARABIC LETTER HEH DOACHASHMEE INITIAL FORM
-FBAD;AL # ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM
-FBAE;AL # ARABIC LETTER YEH BARREE ISOLATED FORM
-FBAF;AL # ARABIC LETTER YEH BARREE FINAL FORM
-FBB0;AL # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
-FBB1;AL # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
-FBD3;AL # ARABIC LETTER NG ISOLATED FORM
-FBD4;AL # ARABIC LETTER NG FINAL FORM
-FBD5;AL # ARABIC LETTER NG INITIAL FORM
-FBD6;AL # ARABIC LETTER NG MEDIAL FORM
-FBD7;AL # ARABIC LETTER U ISOLATED FORM
-FBD8;AL # ARABIC LETTER U FINAL FORM
-FBD9;AL # ARABIC LETTER OE ISOLATED FORM
-FBDA;AL # ARABIC LETTER OE FINAL FORM
-FBDB;AL # ARABIC LETTER YU ISOLATED FORM
-FBDC;AL # ARABIC LETTER YU FINAL FORM
-FBDD;AL # ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
-FBDE;AL # ARABIC LETTER VE ISOLATED FORM
-FBDF;AL # ARABIC LETTER VE FINAL FORM
-FBE0;AL # ARABIC LETTER KIRGHIZ OE ISOLATED FORM
-FBE1;AL # ARABIC LETTER KIRGHIZ OE FINAL FORM
-FBE2;AL # ARABIC LETTER KIRGHIZ YU ISOLATED FORM
-FBE3;AL # ARABIC LETTER KIRGHIZ YU FINAL FORM
-FBE4;AL # ARABIC LETTER E ISOLATED FORM
-FBE5;AL # ARABIC LETTER E FINAL FORM
-FBE6;AL # ARABIC LETTER E INITIAL FORM
-FBE7;AL # ARABIC LETTER E MEDIAL FORM
-FBE8;AL # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
-FBE9;AL # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
-FBEA;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM
-FBEB;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM
-FBEC;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM
-FBED;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM
-FBEE;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM
-FBEF;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM
-FBF0;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM
-FBF1;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM
-FBF2;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM
-FBF3;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM
-FBF4;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM
-FBF5;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM
-FBF6;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM
-FBF7;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM
-FBF8;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM
-FBF9;AL # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
-FBFA;AL # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
-FBFB;AL # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
-FBFC;AL # ARABIC LETTER FARSI YEH ISOLATED FORM
-FBFD;AL # ARABIC LETTER FARSI YEH FINAL FORM
-FBFE;AL # ARABIC LETTER FARSI YEH INITIAL FORM
-FBFF;AL # ARABIC LETTER FARSI YEH MEDIAL FORM
-FC00;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM
-FC01;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM
-FC02;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM
-FC03;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
-FC04;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM
-FC05;AL # ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM
-FC06;AL # ARABIC LIGATURE BEH WITH HAH ISOLATED FORM
-FC07;AL # ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM
-FC08;AL # ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM
-FC09;AL # ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM
-FC0A;AL # ARABIC LIGATURE BEH WITH YEH ISOLATED FORM
-FC0B;AL # ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM
-FC0C;AL # ARABIC LIGATURE TEH WITH HAH ISOLATED FORM
-FC0D;AL # ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM
-FC0E;AL # ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM
-FC0F;AL # ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM
-FC10;AL # ARABIC LIGATURE TEH WITH YEH ISOLATED FORM
-FC11;AL # ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM
-FC12;AL # ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM
-FC13;AL # ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM
-FC14;AL # ARABIC LIGATURE THEH WITH YEH ISOLATED FORM
-FC15;AL # ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM
-FC16;AL # ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM
-FC17;AL # ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM
-FC18;AL # ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM
-FC19;AL # ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM
-FC1A;AL # ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM
-FC1B;AL # ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM
-FC1C;AL # ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM
-FC1D;AL # ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM
-FC1E;AL # ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM
-FC1F;AL # ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM
-FC20;AL # ARABIC LIGATURE SAD WITH HAH ISOLATED FORM
-FC21;AL # ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM
-FC22;AL # ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM
-FC23;AL # ARABIC LIGATURE DAD WITH HAH ISOLATED FORM
-FC24;AL # ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM
-FC25;AL # ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM
-FC26;AL # ARABIC LIGATURE TAH WITH HAH ISOLATED FORM
-FC27;AL # ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM
-FC28;AL # ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM
-FC29;AL # ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM
-FC2A;AL # ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM
-FC2B;AL # ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM
-FC2C;AL # ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM
-FC2D;AL # ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM
-FC2E;AL # ARABIC LIGATURE FEH WITH HAH ISOLATED FORM
-FC2F;AL # ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM
-FC30;AL # ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM
-FC31;AL # ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM
-FC32;AL # ARABIC LIGATURE FEH WITH YEH ISOLATED FORM
-FC33;AL # ARABIC LIGATURE QAF WITH HAH ISOLATED FORM
-FC34;AL # ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM
-FC35;AL # ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM
-FC36;AL # ARABIC LIGATURE QAF WITH YEH ISOLATED FORM
-FC37;AL # ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM
-FC38;AL # ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM
-FC39;AL # ARABIC LIGATURE KAF WITH HAH ISOLATED FORM
-FC3A;AL # ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM
-FC3B;AL # ARABIC LIGATURE KAF WITH LAM ISOLATED FORM
-FC3C;AL # ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM
-FC3D;AL # ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM
-FC3E;AL # ARABIC LIGATURE KAF WITH YEH ISOLATED FORM
-FC3F;AL # ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM
-FC40;AL # ARABIC LIGATURE LAM WITH HAH ISOLATED FORM
-FC41;AL # ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM
-FC42;AL # ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM
-FC43;AL # ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM
-FC44;AL # ARABIC LIGATURE LAM WITH YEH ISOLATED FORM
-FC45;AL # ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM
-FC46;AL # ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM
-FC47;AL # ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM
-FC48;AL # ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM
-FC49;AL # ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM
-FC4A;AL # ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM
-FC4B;AL # ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM
-FC4C;AL # ARABIC LIGATURE NOON WITH HAH ISOLATED FORM
-FC4D;AL # ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM
-FC4E;AL # ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM
-FC4F;AL # ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM
-FC50;AL # ARABIC LIGATURE NOON WITH YEH ISOLATED FORM
-FC51;AL # ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM
-FC52;AL # ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM
-FC53;AL # ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM
-FC54;AL # ARABIC LIGATURE HEH WITH YEH ISOLATED FORM
-FC55;AL # ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM
-FC56;AL # ARABIC LIGATURE YEH WITH HAH ISOLATED FORM
-FC57;AL # ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM
-FC58;AL # ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM
-FC59;AL # ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM
-FC5A;AL # ARABIC LIGATURE YEH WITH YEH ISOLATED FORM
-FC5B;AL # ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM
-FC5C;AL # ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM
-FC5D;AL # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
-FC5E;AL # ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM
-FC5F;AL # ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM
-FC60;AL # ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM
-FC61;AL # ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM
-FC62;AL # ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM
-FC63;AL # ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM
-FC64;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM
-FC65;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM
-FC66;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM
-FC67;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM
-FC68;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
-FC69;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM
-FC6A;AL # ARABIC LIGATURE BEH WITH REH FINAL FORM
-FC6B;AL # ARABIC LIGATURE BEH WITH ZAIN FINAL FORM
-FC6C;AL # ARABIC LIGATURE BEH WITH MEEM FINAL FORM
-FC6D;AL # ARABIC LIGATURE BEH WITH NOON FINAL FORM
-FC6E;AL # ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM
-FC6F;AL # ARABIC LIGATURE BEH WITH YEH FINAL FORM
-FC70;AL # ARABIC LIGATURE TEH WITH REH FINAL FORM
-FC71;AL # ARABIC LIGATURE TEH WITH ZAIN FINAL FORM
-FC72;AL # ARABIC LIGATURE TEH WITH MEEM FINAL FORM
-FC73;AL # ARABIC LIGATURE TEH WITH NOON FINAL FORM
-FC74;AL # ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM
-FC75;AL # ARABIC LIGATURE TEH WITH YEH FINAL FORM
-FC76;AL # ARABIC LIGATURE THEH WITH REH FINAL FORM
-FC77;AL # ARABIC LIGATURE THEH WITH ZAIN FINAL FORM
-FC78;AL # ARABIC LIGATURE THEH WITH MEEM FINAL FORM
-FC79;AL # ARABIC LIGATURE THEH WITH NOON FINAL FORM
-FC7A;AL # ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM
-FC7B;AL # ARABIC LIGATURE THEH WITH YEH FINAL FORM
-FC7C;AL # ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM
-FC7D;AL # ARABIC LIGATURE FEH WITH YEH FINAL FORM
-FC7E;AL # ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM
-FC7F;AL # ARABIC LIGATURE QAF WITH YEH FINAL FORM
-FC80;AL # ARABIC LIGATURE KAF WITH ALEF FINAL FORM
-FC81;AL # ARABIC LIGATURE KAF WITH LAM FINAL FORM
-FC82;AL # ARABIC LIGATURE KAF WITH MEEM FINAL FORM
-FC83;AL # ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM
-FC84;AL # ARABIC LIGATURE KAF WITH YEH FINAL FORM
-FC85;AL # ARABIC LIGATURE LAM WITH MEEM FINAL FORM
-FC86;AL # ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM
-FC87;AL # ARABIC LIGATURE LAM WITH YEH FINAL FORM
-FC88;AL # ARABIC LIGATURE MEEM WITH ALEF FINAL FORM
-FC89;AL # ARABIC LIGATURE MEEM WITH MEEM FINAL FORM
-FC8A;AL # ARABIC LIGATURE NOON WITH REH FINAL FORM
-FC8B;AL # ARABIC LIGATURE NOON WITH ZAIN FINAL FORM
-FC8C;AL # ARABIC LIGATURE NOON WITH MEEM FINAL FORM
-FC8D;AL # ARABIC LIGATURE NOON WITH NOON FINAL FORM
-FC8E;AL # ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM
-FC8F;AL # ARABIC LIGATURE NOON WITH YEH FINAL FORM
-FC90;AL # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
-FC91;AL # ARABIC LIGATURE YEH WITH REH FINAL FORM
-FC92;AL # ARABIC LIGATURE YEH WITH ZAIN FINAL FORM
-FC93;AL # ARABIC LIGATURE YEH WITH MEEM FINAL FORM
-FC94;AL # ARABIC LIGATURE YEH WITH NOON FINAL FORM
-FC95;AL # ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM
-FC96;AL # ARABIC LIGATURE YEH WITH YEH FINAL FORM
-FC97;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM
-FC98;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM
-FC99;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM
-FC9A;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM
-FC9B;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM
-FC9C;AL # ARABIC LIGATURE BEH WITH JEEM INITIAL FORM
-FC9D;AL # ARABIC LIGATURE BEH WITH HAH INITIAL FORM
-FC9E;AL # ARABIC LIGATURE BEH WITH KHAH INITIAL FORM
-FC9F;AL # ARABIC LIGATURE BEH WITH MEEM INITIAL FORM
-FCA0;AL # ARABIC LIGATURE BEH WITH HEH INITIAL FORM
-FCA1;AL # ARABIC LIGATURE TEH WITH JEEM INITIAL FORM
-FCA2;AL # ARABIC LIGATURE TEH WITH HAH INITIAL FORM
-FCA3;AL # ARABIC LIGATURE TEH WITH KHAH INITIAL FORM
-FCA4;AL # ARABIC LIGATURE TEH WITH MEEM INITIAL FORM
-FCA5;AL # ARABIC LIGATURE TEH WITH HEH INITIAL FORM
-FCA6;AL # ARABIC LIGATURE THEH WITH MEEM INITIAL FORM
-FCA7;AL # ARABIC LIGATURE JEEM WITH HAH INITIAL FORM
-FCA8;AL # ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM
-FCA9;AL # ARABIC LIGATURE HAH WITH JEEM INITIAL FORM
-FCAA;AL # ARABIC LIGATURE HAH WITH MEEM INITIAL FORM
-FCAB;AL # ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM
-FCAC;AL # ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM
-FCAD;AL # ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM
-FCAE;AL # ARABIC LIGATURE SEEN WITH HAH INITIAL FORM
-FCAF;AL # ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM
-FCB0;AL # ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM
-FCB1;AL # ARABIC LIGATURE SAD WITH HAH INITIAL FORM
-FCB2;AL # ARABIC LIGATURE SAD WITH KHAH INITIAL FORM
-FCB3;AL # ARABIC LIGATURE SAD WITH MEEM INITIAL FORM
-FCB4;AL # ARABIC LIGATURE DAD WITH JEEM INITIAL FORM
-FCB5;AL # ARABIC LIGATURE DAD WITH HAH INITIAL FORM
-FCB6;AL # ARABIC LIGATURE DAD WITH KHAH INITIAL FORM
-FCB7;AL # ARABIC LIGATURE DAD WITH MEEM INITIAL FORM
-FCB8;AL # ARABIC LIGATURE TAH WITH HAH INITIAL FORM
-FCB9;AL # ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM
-FCBA;AL # ARABIC LIGATURE AIN WITH JEEM INITIAL FORM
-FCBB;AL # ARABIC LIGATURE AIN WITH MEEM INITIAL FORM
-FCBC;AL # ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM
-FCBD;AL # ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM
-FCBE;AL # ARABIC LIGATURE FEH WITH JEEM INITIAL FORM
-FCBF;AL # ARABIC LIGATURE FEH WITH HAH INITIAL FORM
-FCC0;AL # ARABIC LIGATURE FEH WITH KHAH INITIAL FORM
-FCC1;AL # ARABIC LIGATURE FEH WITH MEEM INITIAL FORM
-FCC2;AL # ARABIC LIGATURE QAF WITH HAH INITIAL FORM
-FCC3;AL # ARABIC LIGATURE QAF WITH MEEM INITIAL FORM
-FCC4;AL # ARABIC LIGATURE KAF WITH JEEM INITIAL FORM
-FCC5;AL # ARABIC LIGATURE KAF WITH HAH INITIAL FORM
-FCC6;AL # ARABIC LIGATURE KAF WITH KHAH INITIAL FORM
-FCC7;AL # ARABIC LIGATURE KAF WITH LAM INITIAL FORM
-FCC8;AL # ARABIC LIGATURE KAF WITH MEEM INITIAL FORM
-FCC9;AL # ARABIC LIGATURE LAM WITH JEEM INITIAL FORM
-FCCA;AL # ARABIC LIGATURE LAM WITH HAH INITIAL FORM
-FCCB;AL # ARABIC LIGATURE LAM WITH KHAH INITIAL FORM
-FCCC;AL # ARABIC LIGATURE LAM WITH MEEM INITIAL FORM
-FCCD;AL # ARABIC LIGATURE LAM WITH HEH INITIAL FORM
-FCCE;AL # ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM
-FCCF;AL # ARABIC LIGATURE MEEM WITH HAH INITIAL FORM
-FCD0;AL # ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM
-FCD1;AL # ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM
-FCD2;AL # ARABIC LIGATURE NOON WITH JEEM INITIAL FORM
-FCD3;AL # ARABIC LIGATURE NOON WITH HAH INITIAL FORM
-FCD4;AL # ARABIC LIGATURE NOON WITH KHAH INITIAL FORM
-FCD5;AL # ARABIC LIGATURE NOON WITH MEEM INITIAL FORM
-FCD6;AL # ARABIC LIGATURE NOON WITH HEH INITIAL FORM
-FCD7;AL # ARABIC LIGATURE HEH WITH JEEM INITIAL FORM
-FCD8;AL # ARABIC LIGATURE HEH WITH MEEM INITIAL FORM
-FCD9;AL # ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM
-FCDA;AL # ARABIC LIGATURE YEH WITH JEEM INITIAL FORM
-FCDB;AL # ARABIC LIGATURE YEH WITH HAH INITIAL FORM
-FCDC;AL # ARABIC LIGATURE YEH WITH KHAH INITIAL FORM
-FCDD;AL # ARABIC LIGATURE YEH WITH MEEM INITIAL FORM
-FCDE;AL # ARABIC LIGATURE YEH WITH HEH INITIAL FORM
-FCDF;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM
-FCE0;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM
-FCE1;AL # ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM
-FCE2;AL # ARABIC LIGATURE BEH WITH HEH MEDIAL FORM
-FCE3;AL # ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM
-FCE4;AL # ARABIC LIGATURE TEH WITH HEH MEDIAL FORM
-FCE5;AL # ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM
-FCE6;AL # ARABIC LIGATURE THEH WITH HEH MEDIAL FORM
-FCE7;AL # ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM
-FCE8;AL # ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM
-FCE9;AL # ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM
-FCEA;AL # ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM
-FCEB;AL # ARABIC LIGATURE KAF WITH LAM MEDIAL FORM
-FCEC;AL # ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM
-FCED;AL # ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM
-FCEE;AL # ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM
-FCEF;AL # ARABIC LIGATURE NOON WITH HEH MEDIAL FORM
-FCF0;AL # ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM
-FCF1;AL # ARABIC LIGATURE YEH WITH HEH MEDIAL FORM
-FCF2;AL # ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM
-FCF3;AL # ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM
-FCF4;AL # ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM
-FCF5;AL # ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM
-FCF6;AL # ARABIC LIGATURE TAH WITH YEH ISOLATED FORM
-FCF7;AL # ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM
-FCF8;AL # ARABIC LIGATURE AIN WITH YEH ISOLATED FORM
-FCF9;AL # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM
-FCFA;AL # ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM
-FCFB;AL # ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM
-FCFC;AL # ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM
-FCFD;AL # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM
-FCFE;AL # ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM
-FCFF;AL # ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM
-FD00;AL # ARABIC LIGATURE HAH WITH YEH ISOLATED FORM
-FD01;AL # ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM
-FD02;AL # ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM
-FD03;AL # ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM
-FD04;AL # ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM
-FD05;AL # ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM
-FD06;AL # ARABIC LIGATURE SAD WITH YEH ISOLATED FORM
-FD07;AL # ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM
-FD08;AL # ARABIC LIGATURE DAD WITH YEH ISOLATED FORM
-FD09;AL # ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM
-FD0A;AL # ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM
-FD0B;AL # ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM
-FD0C;AL # ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM
-FD0D;AL # ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM
-FD0E;AL # ARABIC LIGATURE SEEN WITH REH ISOLATED FORM
-FD0F;AL # ARABIC LIGATURE SAD WITH REH ISOLATED FORM
-FD10;AL # ARABIC LIGATURE DAD WITH REH ISOLATED FORM
-FD11;AL # ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM
-FD12;AL # ARABIC LIGATURE TAH WITH YEH FINAL FORM
-FD13;AL # ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM
-FD14;AL # ARABIC LIGATURE AIN WITH YEH FINAL FORM
-FD15;AL # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM
-FD16;AL # ARABIC LIGATURE GHAIN WITH YEH FINAL FORM
-FD17;AL # ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM
-FD18;AL # ARABIC LIGATURE SEEN WITH YEH FINAL FORM
-FD19;AL # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM
-FD1A;AL # ARABIC LIGATURE SHEEN WITH YEH FINAL FORM
-FD1B;AL # ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM
-FD1C;AL # ARABIC LIGATURE HAH WITH YEH FINAL FORM
-FD1D;AL # ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM
-FD1E;AL # ARABIC LIGATURE JEEM WITH YEH FINAL FORM
-FD1F;AL # ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM
-FD20;AL # ARABIC LIGATURE KHAH WITH YEH FINAL FORM
-FD21;AL # ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM
-FD22;AL # ARABIC LIGATURE SAD WITH YEH FINAL FORM
-FD23;AL # ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM
-FD24;AL # ARABIC LIGATURE DAD WITH YEH FINAL FORM
-FD25;AL # ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM
-FD26;AL # ARABIC LIGATURE SHEEN WITH HAH FINAL FORM
-FD27;AL # ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM
-FD28;AL # ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM
-FD29;AL # ARABIC LIGATURE SHEEN WITH REH FINAL FORM
-FD2A;AL # ARABIC LIGATURE SEEN WITH REH FINAL FORM
-FD2B;AL # ARABIC LIGATURE SAD WITH REH FINAL FORM
-FD2C;AL # ARABIC LIGATURE DAD WITH REH FINAL FORM
-FD2D;AL # ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM
-FD2E;AL # ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM
-FD2F;AL # ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM
-FD30;AL # ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM
-FD31;AL # ARABIC LIGATURE SEEN WITH HEH INITIAL FORM
-FD32;AL # ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM
-FD33;AL # ARABIC LIGATURE TAH WITH MEEM INITIAL FORM
-FD34;AL # ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM
-FD35;AL # ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM
-FD36;AL # ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM
-FD37;AL # ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM
-FD38;AL # ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM
-FD39;AL # ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM
-FD3A;AL # ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM
-FD3B;AL # ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM
-FD3C;AL # ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM
-FD3D;AL # ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
-FD3E;OP # ORNATE LEFT PARENTHESIS
-FD3F;CL # ORNATE RIGHT PARENTHESIS
-FD50;AL # ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
-FD51;AL # ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM
-FD52;AL # ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM
-FD53;AL # ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM
-FD54;AL # ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM
-FD55;AL # ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM
-FD56;AL # ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM
-FD57;AL # ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM
-FD58;AL # ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM
-FD59;AL # ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM
-FD5A;AL # ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM
-FD5B;AL # ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FD5C;AL # ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM
-FD5D;AL # ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM
-FD5E;AL # ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM
-FD5F;AL # ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM
-FD60;AL # ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM
-FD61;AL # ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM
-FD62;AL # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM
-FD63;AL # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM
-FD64;AL # ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM
-FD65;AL # ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM
-FD66;AL # ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM
-FD67;AL # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM
-FD68;AL # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM
-FD69;AL # ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM
-FD6A;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM
-FD6B;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM
-FD6C;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM
-FD6D;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM
-FD6E;AL # ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM
-FD6F;AL # ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM
-FD70;AL # ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM
-FD71;AL # ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM
-FD72;AL # ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM
-FD73;AL # ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM
-FD74;AL # ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM
-FD75;AL # ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM
-FD76;AL # ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM
-FD77;AL # ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM
-FD78;AL # ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FD79;AL # ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM
-FD7A;AL # ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM
-FD7B;AL # ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FD7C;AL # ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM
-FD7D;AL # ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM
-FD7E;AL # ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM
-FD7F;AL # ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM
-FD80;AL # ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM
-FD81;AL # ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM
-FD82;AL # ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM
-FD83;AL # ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM
-FD84;AL # ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM
-FD85;AL # ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM
-FD86;AL # ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM
-FD87;AL # ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM
-FD88;AL # ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM
-FD89;AL # ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM
-FD8A;AL # ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM
-FD8B;AL # ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM
-FD8C;AL # ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM
-FD8D;AL # ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM
-FD8E;AL # ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM
-FD8F;AL # ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
-FD92;AL # ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
-FD93;AL # ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM
-FD94;AL # ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM
-FD95;AL # ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM
-FD96;AL # ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM
-FD97;AL # ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM
-FD98;AL # ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM
-FD99;AL # ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM
-FD9A;AL # ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM
-FD9B;AL # ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FD9C;AL # ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM
-FD9D;AL # ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM
-FD9E;AL # ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM
-FD9F;AL # ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM
-FDA0;AL # ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM
-FDA1;AL # ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM
-FDA2;AL # ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM
-FDA3;AL # ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM
-FDA4;AL # ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FDA5;AL # ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM
-FDA6;AL # ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM
-FDA7;AL # ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FDA8;AL # ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM
-FDA9;AL # ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM
-FDAA;AL # ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM
-FDAB;AL # ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM
-FDAC;AL # ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM
-FDAD;AL # ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM
-FDAE;AL # ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM
-FDAF;AL # ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM
-FDB0;AL # ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM
-FDB1;AL # ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM
-FDB2;AL # ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM
-FDB3;AL # ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM
-FDB4;AL # ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM
-FDB5;AL # ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM
-FDB6;AL # ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM
-FDB7;AL # ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM
-FDB8;AL # ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM
-FDB9;AL # ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM
-FDBA;AL # ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM
-FDBB;AL # ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM
-FDBC;AL # ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM
-FDBD;AL # ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM
-FDBE;AL # ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM
-FDBF;AL # ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM
-FDC0;AL # ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM
-FDC1;AL # ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM
-FDC2;AL # ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM
-FDC3;AL # ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM
-FDC4;AL # ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM
-FDC5;AL # ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM
-FDC6;AL # ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM
-FDC7;AL # ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
-FDF0;AL # ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
-FDF1;AL # ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM
-FDF2;AL # ARABIC LIGATURE ALLAH ISOLATED FORM
-FDF3;AL # ARABIC LIGATURE AKBAR ISOLATED FORM
-FDF4;AL # ARABIC LIGATURE MOHAMMAD ISOLATED FORM
-FDF5;AL # ARABIC LIGATURE SALAM ISOLATED FORM
-FDF6;AL # ARABIC LIGATURE RASOUL ISOLATED FORM
-FDF7;AL # ARABIC LIGATURE ALAYHE ISOLATED FORM
-FDF8;AL # ARABIC LIGATURE WASALLAM ISOLATED FORM
-FDF9;AL # ARABIC LIGATURE SALLA ISOLATED FORM
-FDFA;AL # ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM
-FDFB;AL # ARABIC LIGATURE JALLAJALALOUHOU
-FDFC;PO # RIAL SIGN
-FDFD;AL # ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
-FE00;CM # VARIATION SELECTOR-1
-FE01;CM # VARIATION SELECTOR-2
-FE02;CM # VARIATION SELECTOR-3
-FE03;CM # VARIATION SELECTOR-4
-FE04;CM # VARIATION SELECTOR-5
-FE05;CM # VARIATION SELECTOR-6
-FE06;CM # VARIATION SELECTOR-7
-FE07;CM # VARIATION SELECTOR-8
-FE08;CM # VARIATION SELECTOR-9
-FE09;CM # VARIATION SELECTOR-10
-FE0A;CM # VARIATION SELECTOR-11
-FE0B;CM # VARIATION SELECTOR-12
-FE0C;CM # VARIATION SELECTOR-13
-FE0D;CM # VARIATION SELECTOR-14
-FE0E;CM # VARIATION SELECTOR-15
-FE0F;CM # VARIATION SELECTOR-16
-FE10;IS # PRESENTATION FORM FOR VERTICAL COMMA
-FE11;CL # PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA
-FE12;CL # PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP
-FE13;IS # PRESENTATION FORM FOR VERTICAL COLON
-FE14;IS # PRESENTATION FORM FOR VERTICAL SEMICOLON
-FE15;EX # PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK
-FE16;EX # PRESENTATION FORM FOR VERTICAL QUESTION MARK
-FE17;OP # PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
-FE18;CL # PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
-FE19;IN # PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
-FE20;CM # COMBINING LIGATURE LEFT HALF
-FE21;CM # COMBINING LIGATURE RIGHT HALF
-FE22;CM # COMBINING DOUBLE TILDE LEFT HALF
-FE23;CM # COMBINING DOUBLE TILDE RIGHT HALF
-FE30;ID # PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
-FE31;ID # PRESENTATION FORM FOR VERTICAL EM DASH
-FE32;ID # PRESENTATION FORM FOR VERTICAL EN DASH
-FE33;ID # PRESENTATION FORM FOR VERTICAL LOW LINE
-FE34;ID # PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
-FE35;OP # PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
-FE36;CL # PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
-FE37;OP # PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
-FE38;CL # PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
-FE39;OP # PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
-FE3A;CL # PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
-FE3B;OP # PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
-FE3C;CL # PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
-FE3D;OP # PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
-FE3E;CL # PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
-FE3F;OP # PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
-FE40;CL # PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
-FE41;OP # PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
-FE42;CL # PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
-FE43;OP # PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
-FE44;CL # PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
-FE45;ID # SESAME DOT
-FE46;ID # WHITE SESAME DOT
-FE47;OP # PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
-FE48;CL # PRESENTATION FORM FOR VERTICAL RIGHT SQUARE 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;ID # SMALL COMMERCIAL AT
-FE70;AL # ARABIC FATHATAN ISOLATED FORM
-FE71;AL # ARABIC TATWEEL WITH FATHATAN ABOVE
-FE72;AL # ARABIC DAMMATAN ISOLATED FORM
-FE73;AL # ARABIC TAIL FRAGMENT
-FE74;AL # ARABIC KASRATAN ISOLATED FORM
-FE76;AL # ARABIC FATHA ISOLATED FORM
-FE77;AL # ARABIC FATHA MEDIAL FORM
-FE78;AL # ARABIC DAMMA ISOLATED FORM
-FE79;AL # ARABIC DAMMA MEDIAL FORM
-FE7A;AL # ARABIC KASRA ISOLATED FORM
-FE7B;AL # ARABIC KASRA MEDIAL FORM
-FE7C;AL # ARABIC SHADDA ISOLATED FORM
-FE7D;AL # ARABIC SHADDA MEDIAL FORM
-FE7E;AL # ARABIC SUKUN ISOLATED FORM
-FE7F;AL # ARABIC SUKUN MEDIAL FORM
-FE80;AL # ARABIC LETTER HAMZA ISOLATED FORM
-FE81;AL # ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
-FE82;AL # ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
-FE83;AL # ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
-FE84;AL # ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
-FE85;AL # ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
-FE86;AL # ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM
-FE87;AL # ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM
-FE88;AL # ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM
-FE89;AL # ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
-FE8A;AL # ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
-FE8B;AL # ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
-FE8C;AL # ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
-FE8D;AL # ARABIC LETTER ALEF ISOLATED FORM
-FE8E;AL # ARABIC LETTER ALEF FINAL FORM
-FE8F;AL # ARABIC LETTER BEH ISOLATED FORM
-FE90;AL # ARABIC LETTER BEH FINAL FORM
-FE91;AL # ARABIC LETTER BEH INITIAL FORM
-FE92;AL # ARABIC LETTER BEH MEDIAL FORM
-FE93;AL # ARABIC LETTER TEH MARBUTA ISOLATED FORM
-FE94;AL # ARABIC LETTER TEH MARBUTA FINAL FORM
-FE95;AL # ARABIC LETTER TEH ISOLATED FORM
-FE96;AL # ARABIC LETTER TEH FINAL FORM
-FE97;AL # ARABIC LETTER TEH INITIAL FORM
-FE98;AL # ARABIC LETTER TEH MEDIAL FORM
-FE99;AL # ARABIC LETTER THEH ISOLATED FORM
-FE9A;AL # ARABIC LETTER THEH FINAL FORM
-FE9B;AL # ARABIC LETTER THEH INITIAL FORM
-FE9C;AL # ARABIC LETTER THEH MEDIAL FORM
-FE9D;AL # ARABIC LETTER JEEM ISOLATED FORM
-FE9E;AL # ARABIC LETTER JEEM FINAL FORM
-FE9F;AL # ARABIC LETTER JEEM INITIAL FORM
-FEA0;AL # ARABIC LETTER JEEM MEDIAL FORM
-FEA1;AL # ARABIC LETTER HAH ISOLATED FORM
-FEA2;AL # ARABIC LETTER HAH FINAL FORM
-FEA3;AL # ARABIC LETTER HAH INITIAL FORM
-FEA4;AL # ARABIC LETTER HAH MEDIAL FORM
-FEA5;AL # ARABIC LETTER KHAH ISOLATED FORM
-FEA6;AL # ARABIC LETTER KHAH FINAL FORM
-FEA7;AL # ARABIC LETTER KHAH INITIAL FORM
-FEA8;AL # ARABIC LETTER KHAH MEDIAL FORM
-FEA9;AL # ARABIC LETTER DAL ISOLATED FORM
-FEAA;AL # ARABIC LETTER DAL FINAL FORM
-FEAB;AL # ARABIC LETTER THAL ISOLATED FORM
-FEAC;AL # ARABIC LETTER THAL FINAL FORM
-FEAD;AL # ARABIC LETTER REH ISOLATED FORM
-FEAE;AL # ARABIC LETTER REH FINAL FORM
-FEAF;AL # ARABIC LETTER ZAIN ISOLATED FORM
-FEB0;AL # ARABIC LETTER ZAIN FINAL FORM
-FEB1;AL # ARABIC LETTER SEEN ISOLATED FORM
-FEB2;AL # ARABIC LETTER SEEN FINAL FORM
-FEB3;AL # ARABIC LETTER SEEN INITIAL FORM
-FEB4;AL # ARABIC LETTER SEEN MEDIAL FORM
-FEB5;AL # ARABIC LETTER SHEEN ISOLATED FORM
-FEB6;AL # ARABIC LETTER SHEEN FINAL FORM
-FEB7;AL # ARABIC LETTER SHEEN INITIAL FORM
-FEB8;AL # ARABIC LETTER SHEEN MEDIAL FORM
-FEB9;AL # ARABIC LETTER SAD ISOLATED FORM
-FEBA;AL # ARABIC LETTER SAD FINAL FORM
-FEBB;AL # ARABIC LETTER SAD INITIAL FORM
-FEBC;AL # ARABIC LETTER SAD MEDIAL FORM
-FEBD;AL # ARABIC LETTER DAD ISOLATED FORM
-FEBE;AL # ARABIC LETTER DAD FINAL FORM
-FEBF;AL # ARABIC LETTER DAD INITIAL FORM
-FEC0;AL # ARABIC LETTER DAD MEDIAL FORM
-FEC1;AL # ARABIC LETTER TAH ISOLATED FORM
-FEC2;AL # ARABIC LETTER TAH FINAL FORM
-FEC3;AL # ARABIC LETTER TAH INITIAL FORM
-FEC4;AL # ARABIC LETTER TAH MEDIAL FORM
-FEC5;AL # ARABIC LETTER ZAH ISOLATED FORM
-FEC6;AL # ARABIC LETTER ZAH FINAL FORM
-FEC7;AL # ARABIC LETTER ZAH INITIAL FORM
-FEC8;AL # ARABIC LETTER ZAH MEDIAL FORM
-FEC9;AL # ARABIC LETTER AIN ISOLATED FORM
-FECA;AL # ARABIC LETTER AIN FINAL FORM
-FECB;AL # ARABIC LETTER AIN INITIAL FORM
-FECC;AL # ARABIC LETTER AIN MEDIAL FORM
-FECD;AL # ARABIC LETTER GHAIN ISOLATED FORM
-FECE;AL # ARABIC LETTER GHAIN FINAL FORM
-FECF;AL # ARABIC LETTER GHAIN INITIAL FORM
-FED0;AL # ARABIC LETTER GHAIN MEDIAL FORM
-FED1;AL # ARABIC LETTER FEH ISOLATED FORM
-FED2;AL # ARABIC LETTER FEH FINAL FORM
-FED3;AL # ARABIC LETTER FEH INITIAL FORM
-FED4;AL # ARABIC LETTER FEH MEDIAL FORM
-FED5;AL # ARABIC LETTER QAF ISOLATED FORM
-FED6;AL # ARABIC LETTER QAF FINAL FORM
-FED7;AL # ARABIC LETTER QAF INITIAL FORM
-FED8;AL # ARABIC LETTER QAF MEDIAL FORM
-FED9;AL # ARABIC LETTER KAF ISOLATED FORM
-FEDA;AL # ARABIC LETTER KAF FINAL FORM
-FEDB;AL # ARABIC LETTER KAF INITIAL FORM
-FEDC;AL # ARABIC LETTER KAF MEDIAL FORM
-FEDD;AL # ARABIC LETTER LAM ISOLATED FORM
-FEDE;AL # ARABIC LETTER LAM FINAL FORM
-FEDF;AL # ARABIC LETTER LAM INITIAL FORM
-FEE0;AL # ARABIC LETTER LAM MEDIAL FORM
-FEE1;AL # ARABIC LETTER MEEM ISOLATED FORM
-FEE2;AL # ARABIC LETTER MEEM FINAL FORM
-FEE3;AL # ARABIC LETTER MEEM INITIAL FORM
-FEE4;AL # ARABIC LETTER MEEM MEDIAL FORM
-FEE5;AL # ARABIC LETTER NOON ISOLATED FORM
-FEE6;AL # ARABIC LETTER NOON FINAL FORM
-FEE7;AL # ARABIC LETTER NOON INITIAL FORM
-FEE8;AL # ARABIC LETTER NOON MEDIAL FORM
-FEE9;AL # ARABIC LETTER HEH ISOLATED FORM
-FEEA;AL # ARABIC LETTER HEH FINAL FORM
-FEEB;AL # ARABIC LETTER HEH INITIAL FORM
-FEEC;AL # ARABIC LETTER HEH MEDIAL FORM
-FEED;AL # ARABIC LETTER WAW ISOLATED FORM
-FEEE;AL # ARABIC LETTER WAW FINAL FORM
-FEEF;AL # ARABIC LETTER ALEF MAKSURA ISOLATED FORM
-FEF0;AL # ARABIC LETTER ALEF MAKSURA FINAL FORM
-FEF1;AL # ARABIC LETTER YEH ISOLATED FORM
-FEF2;AL # ARABIC LETTER YEH FINAL FORM
-FEF3;AL # ARABIC LETTER YEH INITIAL FORM
-FEF4;AL # ARABIC LETTER YEH MEDIAL FORM
-FEF5;AL # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
-FEF6;AL # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
-FEF7;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
-FEF8;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
-FEF9;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM
-FEFA;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM
-FEFB;AL # ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
-FEFC;AL # ARABIC LIGATURE LAM WITH ALEF FINAL FORM
-FEFF;WJ # ZERO WIDTH NO-BREAK SPACE
-FF01;EX # FULLWIDTH EXCLAMATION MARK
-FF02;ID # FULLWIDTH QUOTATION MARK
-FF03;ID # FULLWIDTH NUMBER SIGN
-FF04;PR # FULLWIDTH DOLLAR SIGN
-FF05;PO # FULLWIDTH PERCENT SIGN
-FF06;ID # FULLWIDTH AMPERSAND
-FF07;ID # FULLWIDTH APOSTROPHE
-FF08;OP # FULLWIDTH LEFT PARENTHESIS
-FF09;CL # FULLWIDTH RIGHT PARENTHESIS
-FF0A;ID # FULLWIDTH ASTERISK
-FF0B;ID # FULLWIDTH PLUS SIGN
-FF0C;CL # FULLWIDTH COMMA
-FF0D;ID # FULLWIDTH HYPHEN-MINUS
-FF0E;CL # FULLWIDTH FULL STOP
-FF0F;ID # FULLWIDTH SOLIDUS
-FF10;ID # FULLWIDTH DIGIT ZERO
-FF11;ID # FULLWIDTH DIGIT ONE
-FF12;ID # FULLWIDTH DIGIT TWO
-FF13;ID # FULLWIDTH DIGIT THREE
-FF14;ID # FULLWIDTH DIGIT FOUR
-FF15;ID # FULLWIDTH DIGIT FIVE
-FF16;ID # FULLWIDTH DIGIT SIX
-FF17;ID # FULLWIDTH DIGIT SEVEN
-FF18;ID # FULLWIDTH DIGIT EIGHT
-FF19;ID # FULLWIDTH DIGIT NINE
-FF1A;NS # FULLWIDTH COLON
-FF1B;NS # FULLWIDTH SEMICOLON
-FF1C;ID # FULLWIDTH LESS-THAN SIGN
-FF1D;ID # FULLWIDTH EQUALS SIGN
-FF1E;ID # FULLWIDTH GREATER-THAN SIGN
-FF1F;EX # FULLWIDTH QUESTION MARK
-FF20;ID # FULLWIDTH COMMERCIAL AT
-FF21;ID # FULLWIDTH LATIN CAPITAL LETTER A
-FF22;ID # FULLWIDTH LATIN CAPITAL LETTER B
-FF23;ID # FULLWIDTH LATIN CAPITAL LETTER C
-FF24;ID # FULLWIDTH LATIN CAPITAL LETTER D
-FF25;ID # FULLWIDTH LATIN CAPITAL LETTER E
-FF26;ID # FULLWIDTH LATIN CAPITAL LETTER F
-FF27;ID # FULLWIDTH LATIN CAPITAL LETTER G
-FF28;ID # FULLWIDTH LATIN CAPITAL LETTER H
-FF29;ID # FULLWIDTH LATIN CAPITAL LETTER I
-FF2A;ID # FULLWIDTH LATIN CAPITAL LETTER J
-FF2B;ID # FULLWIDTH LATIN CAPITAL LETTER K
-FF2C;ID # FULLWIDTH LATIN CAPITAL LETTER L
-FF2D;ID # FULLWIDTH LATIN CAPITAL LETTER M
-FF2E;ID # FULLWIDTH LATIN CAPITAL LETTER N
-FF2F;ID # FULLWIDTH LATIN CAPITAL LETTER O
-FF30;ID # FULLWIDTH LATIN CAPITAL LETTER P
-FF31;ID # FULLWIDTH LATIN CAPITAL LETTER Q
-FF32;ID # FULLWIDTH LATIN CAPITAL LETTER R
-FF33;ID # FULLWIDTH LATIN CAPITAL LETTER S
-FF34;ID # FULLWIDTH LATIN CAPITAL LETTER T
-FF35;ID # FULLWIDTH LATIN CAPITAL LETTER U
-FF36;ID # FULLWIDTH LATIN CAPITAL LETTER V
-FF37;ID # FULLWIDTH LATIN CAPITAL LETTER W
-FF38;ID # FULLWIDTH LATIN CAPITAL LETTER X
-FF39;ID # FULLWIDTH LATIN CAPITAL LETTER Y
-FF3A;ID # FULLWIDTH LATIN CAPITAL LETTER Z
-FF3B;OP # FULLWIDTH LEFT SQUARE BRACKET
-FF3C;ID # FULLWIDTH REVERSE SOLIDUS
-FF3D;CL # FULLWIDTH RIGHT SQUARE BRACKET
-FF3E;ID # FULLWIDTH CIRCUMFLEX ACCENT
-FF3F;ID # FULLWIDTH LOW LINE
-FF40;ID # FULLWIDTH GRAVE ACCENT
-FF41;ID # FULLWIDTH LATIN SMALL LETTER A
-FF42;ID # FULLWIDTH LATIN SMALL LETTER B
-FF43;ID # FULLWIDTH LATIN SMALL LETTER C
-FF44;ID # FULLWIDTH LATIN SMALL LETTER D
-FF45;ID # FULLWIDTH LATIN SMALL LETTER E
-FF46;ID # FULLWIDTH LATIN SMALL LETTER F
-FF47;ID # FULLWIDTH LATIN SMALL LETTER G
-FF48;ID # FULLWIDTH LATIN SMALL LETTER H
-FF49;ID # FULLWIDTH LATIN SMALL LETTER I
-FF4A;ID # FULLWIDTH LATIN SMALL LETTER J
-FF4B;ID # FULLWIDTH LATIN SMALL LETTER K
-FF4C;ID # FULLWIDTH LATIN SMALL LETTER L
-FF4D;ID # FULLWIDTH LATIN SMALL LETTER M
-FF4E;ID # FULLWIDTH LATIN SMALL LETTER N
-FF4F;ID # FULLWIDTH LATIN SMALL LETTER O
-FF50;ID # FULLWIDTH LATIN SMALL LETTER P
-FF51;ID # FULLWIDTH LATIN SMALL LETTER Q
-FF52;ID # FULLWIDTH LATIN SMALL LETTER R
-FF53;ID # FULLWIDTH LATIN SMALL LETTER S
-FF54;ID # FULLWIDTH LATIN SMALL LETTER T
-FF55;ID # FULLWIDTH LATIN SMALL LETTER U
-FF56;ID # FULLWIDTH LATIN SMALL LETTER V
-FF57;ID # FULLWIDTH LATIN SMALL LETTER W
-FF58;ID # FULLWIDTH LATIN SMALL LETTER X
-FF59;ID # FULLWIDTH LATIN SMALL LETTER Y
-FF5A;ID # FULLWIDTH LATIN SMALL LETTER Z
-FF5B;OP # FULLWIDTH LEFT CURLY BRACKET
-FF5C;ID # FULLWIDTH VERTICAL LINE
-FF5D;CL # FULLWIDTH RIGHT CURLY BRACKET
-FF5E;ID # FULLWIDTH TILDE
-FF5F;OP # FULLWIDTH LEFT WHITE PARENTHESIS
-FF60;CL # FULLWIDTH RIGHT WHITE PARENTHESIS
-FF61;CL # HALFWIDTH IDEOGRAPHIC FULL STOP
-FF62;OP # HALFWIDTH LEFT CORNER BRACKET
-FF63;CL # HALFWIDTH RIGHT CORNER BRACKET
-FF64;CL # HALFWIDTH IDEOGRAPHIC COMMA
-FF65;NS # HALFWIDTH KATAKANA MIDDLE DOT
-FF66;AL # HALFWIDTH KATAKANA LETTER WO
-FF67;NS # HALFWIDTH KATAKANA LETTER SMALL A
-FF68;NS # HALFWIDTH KATAKANA LETTER SMALL I
-FF69;NS # HALFWIDTH KATAKANA LETTER SMALL U
-FF6A;NS # HALFWIDTH KATAKANA LETTER SMALL E
-FF6B;NS # HALFWIDTH KATAKANA LETTER SMALL O
-FF6C;NS # HALFWIDTH KATAKANA LETTER SMALL YA
-FF6D;NS # HALFWIDTH KATAKANA LETTER SMALL YU
-FF6E;NS # HALFWIDTH KATAKANA LETTER SMALL YO
-FF6F;NS # HALFWIDTH KATAKANA LETTER SMALL TU
-FF70;NS # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
-FF71;AL # HALFWIDTH KATAKANA LETTER A
-FF72;AL # HALFWIDTH KATAKANA LETTER I
-FF73;AL # HALFWIDTH KATAKANA LETTER U
-FF74;AL # HALFWIDTH KATAKANA LETTER E
-FF75;AL # HALFWIDTH KATAKANA LETTER O
-FF76;AL # HALFWIDTH KATAKANA LETTER KA
-FF77;AL # HALFWIDTH KATAKANA LETTER KI
-FF78;AL # HALFWIDTH KATAKANA LETTER KU
-FF79;AL # HALFWIDTH KATAKANA LETTER KE
-FF7A;AL # HALFWIDTH KATAKANA LETTER KO
-FF7B;AL # HALFWIDTH KATAKANA LETTER SA
-FF7C;AL # HALFWIDTH KATAKANA LETTER SI
-FF7D;AL # HALFWIDTH KATAKANA LETTER SU
-FF7E;AL # HALFWIDTH KATAKANA LETTER SE
-FF7F;AL # HALFWIDTH KATAKANA LETTER SO
-FF80;AL # HALFWIDTH KATAKANA LETTER TA
-FF81;AL # HALFWIDTH KATAKANA LETTER TI
-FF82;AL # HALFWIDTH KATAKANA LETTER TU
-FF83;AL # HALFWIDTH KATAKANA LETTER TE
-FF84;AL # HALFWIDTH KATAKANA LETTER TO
-FF85;AL # HALFWIDTH KATAKANA LETTER NA
-FF86;AL # HALFWIDTH KATAKANA LETTER NI
-FF87;AL # HALFWIDTH KATAKANA LETTER NU
-FF88;AL # HALFWIDTH KATAKANA LETTER NE
-FF89;AL # HALFWIDTH KATAKANA LETTER NO
-FF8A;AL # HALFWIDTH KATAKANA LETTER HA
-FF8B;AL # HALFWIDTH KATAKANA LETTER HI
-FF8C;AL # HALFWIDTH KATAKANA LETTER HU
-FF8D;AL # HALFWIDTH KATAKANA LETTER HE
-FF8E;AL # HALFWIDTH KATAKANA LETTER HO
-FF8F;AL # HALFWIDTH KATAKANA LETTER MA
-FF90;AL # HALFWIDTH KATAKANA LETTER MI
-FF91;AL # HALFWIDTH KATAKANA LETTER MU
-FF92;AL # HALFWIDTH KATAKANA LETTER ME
-FF93;AL # HALFWIDTH KATAKANA LETTER MO
-FF94;AL # HALFWIDTH KATAKANA LETTER YA
-FF95;AL # HALFWIDTH KATAKANA LETTER YU
-FF96;AL # HALFWIDTH KATAKANA LETTER YO
-FF97;AL # HALFWIDTH KATAKANA LETTER RA
-FF98;AL # HALFWIDTH KATAKANA LETTER RI
-FF99;AL # HALFWIDTH KATAKANA LETTER RU
-FF9A;AL # HALFWIDTH KATAKANA LETTER RE
-FF9B;AL # HALFWIDTH KATAKANA LETTER RO
-FF9C;AL # HALFWIDTH KATAKANA LETTER WA
-FF9D;AL # HALFWIDTH KATAKANA LETTER N
-FF9E;NS # HALFWIDTH KATAKANA VOICED SOUND MARK
-FF9F;NS # HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
-FFA0;AL # HALFWIDTH HANGUL FILLER
-FFA1;AL # HALFWIDTH HANGUL LETTER KIYEOK
-FFA2;AL # HALFWIDTH HANGUL LETTER SSANGKIYEOK
-FFA3;AL # HALFWIDTH HANGUL LETTER KIYEOK-SIOS
-FFA4;AL # HALFWIDTH HANGUL LETTER NIEUN
-FFA5;AL # HALFWIDTH HANGUL LETTER NIEUN-CIEUC
-FFA6;AL # HALFWIDTH HANGUL LETTER NIEUN-HIEUH
-FFA7;AL # HALFWIDTH HANGUL LETTER TIKEUT
-FFA8;AL # HALFWIDTH HANGUL LETTER SSANGTIKEUT
-FFA9;AL # HALFWIDTH HANGUL LETTER RIEUL
-FFAA;AL # HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
-FFAB;AL # HALFWIDTH HANGUL LETTER RIEUL-MIEUM
-FFAC;AL # HALFWIDTH HANGUL LETTER RIEUL-PIEUP
-FFAD;AL # HALFWIDTH HANGUL LETTER RIEUL-SIOS
-FFAE;AL # HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
-FFAF;AL # HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
-FFB0;AL # HALFWIDTH HANGUL LETTER RIEUL-HIEUH
-FFB1;AL # HALFWIDTH HANGUL LETTER MIEUM
-FFB2;AL # HALFWIDTH HANGUL LETTER PIEUP
-FFB3;AL # HALFWIDTH HANGUL LETTER SSANGPIEUP
-FFB4;AL # HALFWIDTH HANGUL LETTER PIEUP-SIOS
-FFB5;AL # HALFWIDTH HANGUL LETTER SIOS
-FFB6;AL # HALFWIDTH HANGUL LETTER SSANGSIOS
-FFB7;AL # HALFWIDTH HANGUL LETTER IEUNG
-FFB8;AL # HALFWIDTH HANGUL LETTER CIEUC
-FFB9;AL # HALFWIDTH HANGUL LETTER SSANGCIEUC
-FFBA;AL # HALFWIDTH HANGUL LETTER CHIEUCH
-FFBB;AL # HALFWIDTH HANGUL LETTER KHIEUKH
-FFBC;AL # HALFWIDTH HANGUL LETTER THIEUTH
-FFBD;AL # HALFWIDTH HANGUL LETTER PHIEUPH
-FFBE;AL # HALFWIDTH HANGUL LETTER HIEUH
-FFC2;AL # HALFWIDTH HANGUL LETTER A
-FFC3;AL # HALFWIDTH HANGUL LETTER AE
-FFC4;AL # HALFWIDTH HANGUL LETTER YA
-FFC5;AL # HALFWIDTH HANGUL LETTER YAE
-FFC6;AL # HALFWIDTH HANGUL LETTER EO
-FFC7;AL # HALFWIDTH HANGUL LETTER E
-FFCA;AL # HALFWIDTH HANGUL LETTER YEO
-FFCB;AL # HALFWIDTH HANGUL LETTER YE
-FFCC;AL # HALFWIDTH HANGUL LETTER O
-FFCD;AL # HALFWIDTH HANGUL LETTER WA
-FFCE;AL # HALFWIDTH HANGUL LETTER WAE
-FFCF;AL # HALFWIDTH HANGUL LETTER OE
-FFD2;AL # HALFWIDTH HANGUL LETTER YO
-FFD3;AL # HALFWIDTH HANGUL LETTER U
-FFD4;AL # HALFWIDTH HANGUL LETTER WEO
-FFD5;AL # HALFWIDTH HANGUL LETTER WE
-FFD6;AL # HALFWIDTH HANGUL LETTER WI
-FFD7;AL # HALFWIDTH HANGUL LETTER YU
-FFDA;AL # HALFWIDTH HANGUL LETTER EU
-FFDB;AL # HALFWIDTH HANGUL LETTER YI
-FFDC;AL # HALFWIDTH HANGUL LETTER I
-FFE0;PO # FULLWIDTH CENT SIGN
-FFE1;PR # FULLWIDTH POUND SIGN
-FFE2;ID # FULLWIDTH NOT SIGN
-FFE3;ID # FULLWIDTH MACRON
-FFE4;ID # FULLWIDTH BROKEN BAR
-FFE5;PR # FULLWIDTH YEN SIGN
-FFE6;PR # FULLWIDTH WON SIGN
-FFE8;AL # HALFWIDTH FORMS LIGHT VERTICAL
-FFE9;AL # HALFWIDTH LEFTWARDS ARROW
-FFEA;AL # HALFWIDTH UPWARDS ARROW
-FFEB;AL # HALFWIDTH RIGHTWARDS ARROW
-FFEC;AL # HALFWIDTH DOWNWARDS ARROW
-FFED;AL # HALFWIDTH BLACK SQUARE
-FFEE;AL # HALFWIDTH WHITE CIRCLE
-FFF9;CM # INTERLINEAR ANNOTATION ANCHOR
-FFFA;CM # INTERLINEAR ANNOTATION SEPARATOR
-FFFB;CM # INTERLINEAR ANNOTATION TERMINATOR
-FFFC;CB # OBJECT REPLACEMENT CHARACTER
-FFFD;AI # REPLACEMENT CHARACTER
-10000;AL # LINEAR B SYLLABLE B008 A
-10001;AL # LINEAR B SYLLABLE B038 E
-10002;AL # LINEAR B SYLLABLE B028 I
-10003;AL # LINEAR B SYLLABLE B061 O
-10004;AL # LINEAR B SYLLABLE B010 U
-10005;AL # LINEAR B SYLLABLE B001 DA
-10006;AL # LINEAR B SYLLABLE B045 DE
-10007;AL # LINEAR B SYLLABLE B007 DI
-10008;AL # LINEAR B SYLLABLE B014 DO
-10009;AL # LINEAR B SYLLABLE B051 DU
-1000A;AL # LINEAR B SYLLABLE B057 JA
-1000B;AL # LINEAR B SYLLABLE B046 JE
-1000D;AL # LINEAR B SYLLABLE B036 JO
-1000E;AL # LINEAR B SYLLABLE B065 JU
-1000F;AL # LINEAR B SYLLABLE B077 KA
-10010;AL # LINEAR B SYLLABLE B044 KE
-10011;AL # LINEAR B SYLLABLE B067 KI
-10012;AL # LINEAR B SYLLABLE B070 KO
-10013;AL # LINEAR B SYLLABLE B081 KU
-10014;AL # LINEAR B SYLLABLE B080 MA
-10015;AL # LINEAR B SYLLABLE B013 ME
-10016;AL # LINEAR B SYLLABLE B073 MI
-10017;AL # LINEAR B SYLLABLE B015 MO
-10018;AL # LINEAR B SYLLABLE B023 MU
-10019;AL # LINEAR B SYLLABLE B006 NA
-1001A;AL # LINEAR B SYLLABLE B024 NE
-1001B;AL # LINEAR B SYLLABLE B030 NI
-1001C;AL # LINEAR B SYLLABLE B052 NO
-1001D;AL # LINEAR B SYLLABLE B055 NU
-1001E;AL # LINEAR B SYLLABLE B003 PA
-1001F;AL # LINEAR B SYLLABLE B072 PE
-10020;AL # LINEAR B SYLLABLE B039 PI
-10021;AL # LINEAR B SYLLABLE B011 PO
-10022;AL # LINEAR B SYLLABLE B050 PU
-10023;AL # LINEAR B SYLLABLE B016 QA
-10024;AL # LINEAR B SYLLABLE B078 QE
-10025;AL # LINEAR B SYLLABLE B021 QI
-10026;AL # LINEAR B SYLLABLE B032 QO
-10028;AL # LINEAR B SYLLABLE B060 RA
-10029;AL # LINEAR B SYLLABLE B027 RE
-1002A;AL # LINEAR B SYLLABLE B053 RI
-1002B;AL # LINEAR B SYLLABLE B002 RO
-1002C;AL # LINEAR B SYLLABLE B026 RU
-1002D;AL # LINEAR B SYLLABLE B031 SA
-1002E;AL # LINEAR B SYLLABLE B009 SE
-1002F;AL # LINEAR B SYLLABLE B041 SI
-10030;AL # LINEAR B SYLLABLE B012 SO
-10031;AL # LINEAR B SYLLABLE B058 SU
-10032;AL # LINEAR B SYLLABLE B059 TA
-10033;AL # LINEAR B SYLLABLE B004 TE
-10034;AL # LINEAR B SYLLABLE B037 TI
-10035;AL # LINEAR B SYLLABLE B005 TO
-10036;AL # LINEAR B SYLLABLE B069 TU
-10037;AL # LINEAR B SYLLABLE B054 WA
-10038;AL # LINEAR B SYLLABLE B075 WE
-10039;AL # LINEAR B SYLLABLE B040 WI
-1003A;AL # LINEAR B SYLLABLE B042 WO
-1003C;AL # LINEAR B SYLLABLE B017 ZA
-1003D;AL # LINEAR B SYLLABLE B074 ZE
-1003F;AL # LINEAR B SYLLABLE B020 ZO
-10040;AL # LINEAR B SYLLABLE B025 A2
-10041;AL # LINEAR B SYLLABLE B043 A3
-10042;AL # LINEAR B SYLLABLE B085 AU
-10043;AL # LINEAR B SYLLABLE B071 DWE
-10044;AL # LINEAR B SYLLABLE B090 DWO
-10045;AL # LINEAR B SYLLABLE B048 NWA
-10046;AL # LINEAR B SYLLABLE B029 PU2
-10047;AL # LINEAR B SYLLABLE B062 PTE
-10048;AL # LINEAR B SYLLABLE B076 RA2
-10049;AL # LINEAR B SYLLABLE B033 RA3
-1004A;AL # LINEAR B SYLLABLE B068 RO2
-1004B;AL # LINEAR B SYLLABLE B066 TA2
-1004C;AL # LINEAR B SYLLABLE B087 TWE
-1004D;AL # LINEAR B SYLLABLE B091 TWO
-10050;AL # LINEAR B SYMBOL B018
-10051;AL # LINEAR B SYMBOL B019
-10052;AL # LINEAR B SYMBOL B022
-10053;AL # LINEAR B SYMBOL B034
-10054;AL # LINEAR B SYMBOL B047
-10055;AL # LINEAR B SYMBOL B049
-10056;AL # LINEAR B SYMBOL B056
-10057;AL # LINEAR B SYMBOL B063
-10058;AL # LINEAR B SYMBOL B064
-10059;AL # LINEAR B SYMBOL B079
-1005A;AL # LINEAR B SYMBOL B082
-1005B;AL # LINEAR B SYMBOL B083
-1005C;AL # LINEAR B SYMBOL B086
-1005D;AL # LINEAR B SYMBOL B089
-10080;AL # LINEAR B IDEOGRAM B100 MAN
-10081;AL # LINEAR B IDEOGRAM B102 WOMAN
-10082;AL # LINEAR B IDEOGRAM B104 DEER
-10083;AL # LINEAR B IDEOGRAM B105 EQUID
-10084;AL # LINEAR B IDEOGRAM B105F MARE
-10085;AL # LINEAR B IDEOGRAM B105M STALLION
-10086;AL # LINEAR B IDEOGRAM B106F EWE
-10087;AL # LINEAR B IDEOGRAM B106M RAM
-10088;AL # LINEAR B IDEOGRAM B107F SHE-GOAT
-10089;AL # LINEAR B IDEOGRAM B107M HE-GOAT
-1008A;AL # LINEAR B IDEOGRAM B108F SOW
-1008B;AL # LINEAR B IDEOGRAM B108M BOAR
-1008C;AL # LINEAR B IDEOGRAM B109F COW
-1008D;AL # LINEAR B IDEOGRAM B109M BULL
-1008E;AL # LINEAR B IDEOGRAM B120 WHEAT
-1008F;AL # LINEAR B IDEOGRAM B121 BARLEY
-10090;AL # LINEAR B IDEOGRAM B122 OLIVE
-10091;AL # LINEAR B IDEOGRAM B123 SPICE
-10092;AL # LINEAR B IDEOGRAM B125 CYPERUS
-10093;AL # LINEAR B MONOGRAM B127 KAPO
-10094;AL # LINEAR B MONOGRAM B128 KANAKO
-10095;AL # LINEAR B IDEOGRAM B130 OIL
-10096;AL # LINEAR B IDEOGRAM B131 WINE
-10097;AL # LINEAR B IDEOGRAM B132
-10098;AL # LINEAR B MONOGRAM B133 AREPA
-10099;AL # LINEAR B MONOGRAM B135 MERI
-1009A;AL # LINEAR B IDEOGRAM B140 BRONZE
-1009B;AL # LINEAR B IDEOGRAM B141 GOLD
-1009C;AL # LINEAR B IDEOGRAM B142
-1009D;AL # LINEAR B IDEOGRAM B145 WOOL
-1009E;AL # LINEAR B IDEOGRAM B146
-1009F;AL # LINEAR B IDEOGRAM B150
-100A0;AL # LINEAR B IDEOGRAM B151 HORN
-100A1;AL # LINEAR B IDEOGRAM B152
-100A2;AL # LINEAR B IDEOGRAM B153
-100A3;AL # LINEAR B IDEOGRAM B154
-100A4;AL # LINEAR B MONOGRAM B156 TURO2
-100A5;AL # LINEAR B IDEOGRAM B157
-100A6;AL # LINEAR B IDEOGRAM B158
-100A7;AL # LINEAR B IDEOGRAM B159 CLOTH
-100A8;AL # LINEAR B IDEOGRAM B160
-100A9;AL # LINEAR B IDEOGRAM B161
-100AA;AL # LINEAR B IDEOGRAM B162 GARMENT
-100AB;AL # LINEAR B IDEOGRAM B163 ARMOUR
-100AC;AL # LINEAR B IDEOGRAM B164
-100AD;AL # LINEAR B IDEOGRAM B165
-100AE;AL # LINEAR B IDEOGRAM B166
-100AF;AL # LINEAR B IDEOGRAM B167
-100B0;AL # LINEAR B IDEOGRAM B168
-100B1;AL # LINEAR B IDEOGRAM B169
-100B2;AL # LINEAR B IDEOGRAM B170
-100B3;AL # LINEAR B IDEOGRAM B171
-100B4;AL # LINEAR B IDEOGRAM B172
-100B5;AL # LINEAR B IDEOGRAM B173 MONTH
-100B6;AL # LINEAR B IDEOGRAM B174
-100B7;AL # LINEAR B IDEOGRAM B176 TREE
-100B8;AL # LINEAR B IDEOGRAM B177
-100B9;AL # LINEAR B IDEOGRAM B178
-100BA;AL # LINEAR B IDEOGRAM B179
-100BB;AL # LINEAR B IDEOGRAM B180
-100BC;AL # LINEAR B IDEOGRAM B181
-100BD;AL # LINEAR B IDEOGRAM B182
-100BE;AL # LINEAR B IDEOGRAM B183
-100BF;AL # LINEAR B IDEOGRAM B184
-100C0;AL # LINEAR B IDEOGRAM B185
-100C1;AL # LINEAR B IDEOGRAM B189
-100C2;AL # LINEAR B IDEOGRAM B190
-100C3;AL # LINEAR B IDEOGRAM B191 HELMET
-100C4;AL # LINEAR B IDEOGRAM B220 FOOTSTOOL
-100C5;AL # LINEAR B IDEOGRAM B225 BATHTUB
-100C6;AL # LINEAR B IDEOGRAM B230 SPEAR
-100C7;AL # LINEAR B IDEOGRAM B231 ARROW
-100C8;AL # LINEAR B IDEOGRAM B232
-100C9;AL # LINEAR B IDEOGRAM B233 SWORD
-100CA;AL # LINEAR B IDEOGRAM B234
-100CB;AL # LINEAR B IDEOGRAM B236
-100CC;AL # LINEAR B IDEOGRAM B240 WHEELED CHARIOT
-100CD;AL # LINEAR B IDEOGRAM B241 CHARIOT
-100CE;AL # LINEAR B IDEOGRAM B242 CHARIOT FRAME
-100CF;AL # LINEAR B IDEOGRAM B243 WHEEL
-100D0;AL # LINEAR B IDEOGRAM B245
-100D1;AL # LINEAR B IDEOGRAM B246
-100D2;AL # LINEAR B MONOGRAM B247 DIPTE
-100D3;AL # LINEAR B IDEOGRAM B248
-100D4;AL # LINEAR B IDEOGRAM B249
-100D5;AL # LINEAR B IDEOGRAM B251
-100D6;AL # LINEAR B IDEOGRAM B252
-100D7;AL # LINEAR B IDEOGRAM B253
-100D8;AL # LINEAR B IDEOGRAM B254 DART
-100D9;AL # LINEAR B IDEOGRAM B255
-100DA;AL # LINEAR B IDEOGRAM B256
-100DB;AL # LINEAR B IDEOGRAM B257
-100DC;AL # LINEAR B IDEOGRAM B258
-100DD;AL # LINEAR B IDEOGRAM B259
-100DE;AL # LINEAR B IDEOGRAM VESSEL B155
-100DF;AL # LINEAR B IDEOGRAM VESSEL B200
-100E0;AL # LINEAR B IDEOGRAM VESSEL B201
-100E1;AL # LINEAR B IDEOGRAM VESSEL B202
-100E2;AL # LINEAR B IDEOGRAM VESSEL B203
-100E3;AL # LINEAR B IDEOGRAM VESSEL B204
-100E4;AL # LINEAR B IDEOGRAM VESSEL B205
-100E5;AL # LINEAR B IDEOGRAM VESSEL B206
-100E6;AL # LINEAR B IDEOGRAM VESSEL B207
-100E7;AL # LINEAR B IDEOGRAM VESSEL B208
-100E8;AL # LINEAR B IDEOGRAM VESSEL B209
-100E9;AL # LINEAR B IDEOGRAM VESSEL B210
-100EA;AL # LINEAR B IDEOGRAM VESSEL B211
-100EB;AL # LINEAR B IDEOGRAM VESSEL B212
-100EC;AL # LINEAR B IDEOGRAM VESSEL B213
-100ED;AL # LINEAR B IDEOGRAM VESSEL B214
-100EE;AL # LINEAR B IDEOGRAM VESSEL B215
-100EF;AL # LINEAR B IDEOGRAM VESSEL B216
-100F0;AL # LINEAR B IDEOGRAM VESSEL B217
-100F1;AL # LINEAR B IDEOGRAM VESSEL B218
-100F2;AL # LINEAR B IDEOGRAM VESSEL B219
-100F3;AL # LINEAR B IDEOGRAM VESSEL B221
-100F4;AL # LINEAR B IDEOGRAM VESSEL B222
-100F5;AL # LINEAR B IDEOGRAM VESSEL B226
-100F6;AL # LINEAR B IDEOGRAM VESSEL B227
-100F7;AL # LINEAR B IDEOGRAM VESSEL B228
-100F8;AL # LINEAR B IDEOGRAM VESSEL B229
-100F9;AL # LINEAR B IDEOGRAM VESSEL B250
-100FA;AL # LINEAR B IDEOGRAM VESSEL B305
-10100;BA # AEGEAN WORD SEPARATOR LINE
-10101;BA # AEGEAN WORD SEPARATOR DOT
-10102;BA # AEGEAN CHECK MARK
-10107;AL # AEGEAN NUMBER ONE
-10108;AL # AEGEAN NUMBER TWO
-10109;AL # AEGEAN NUMBER THREE
-1010A;AL # AEGEAN NUMBER FOUR
-1010B;AL # AEGEAN NUMBER FIVE
-1010C;AL # AEGEAN NUMBER SIX
-1010D;AL # AEGEAN NUMBER SEVEN
-1010E;AL # AEGEAN NUMBER EIGHT
-1010F;AL # AEGEAN NUMBER NINE
-10110;AL # AEGEAN NUMBER TEN
-10111;AL # AEGEAN NUMBER TWENTY
-10112;AL # AEGEAN NUMBER THIRTY
-10113;AL # AEGEAN NUMBER FORTY
-10114;AL # AEGEAN NUMBER FIFTY
-10115;AL # AEGEAN NUMBER SIXTY
-10116;AL # AEGEAN NUMBER SEVENTY
-10117;AL # AEGEAN NUMBER EIGHTY
-10118;AL # AEGEAN NUMBER NINETY
-10119;AL # AEGEAN NUMBER ONE HUNDRED
-1011A;AL # AEGEAN NUMBER TWO HUNDRED
-1011B;AL # AEGEAN NUMBER THREE HUNDRED
-1011C;AL # AEGEAN NUMBER FOUR HUNDRED
-1011D;AL # AEGEAN NUMBER FIVE HUNDRED
-1011E;AL # AEGEAN NUMBER SIX HUNDRED
-1011F;AL # AEGEAN NUMBER SEVEN HUNDRED
-10120;AL # AEGEAN NUMBER EIGHT HUNDRED
-10121;AL # AEGEAN NUMBER NINE HUNDRED
-10122;AL # AEGEAN NUMBER ONE THOUSAND
-10123;AL # AEGEAN NUMBER TWO THOUSAND
-10124;AL # AEGEAN NUMBER THREE THOUSAND
-10125;AL # AEGEAN NUMBER FOUR THOUSAND
-10126;AL # AEGEAN NUMBER FIVE THOUSAND
-10127;AL # AEGEAN NUMBER SIX THOUSAND
-10128;AL # AEGEAN NUMBER SEVEN THOUSAND
-10129;AL # AEGEAN NUMBER EIGHT THOUSAND
-1012A;AL # AEGEAN NUMBER NINE THOUSAND
-1012B;AL # AEGEAN NUMBER TEN THOUSAND
-1012C;AL # AEGEAN NUMBER TWENTY THOUSAND
-1012D;AL # AEGEAN NUMBER THIRTY THOUSAND
-1012E;AL # AEGEAN NUMBER FORTY THOUSAND
-1012F;AL # AEGEAN NUMBER FIFTY THOUSAND
-10130;AL # AEGEAN NUMBER SIXTY THOUSAND
-10131;AL # AEGEAN NUMBER SEVENTY THOUSAND
-10132;AL # AEGEAN NUMBER EIGHTY THOUSAND
-10133;AL # AEGEAN NUMBER NINETY THOUSAND
-10137;AL # AEGEAN WEIGHT BASE UNIT
-10138;AL # AEGEAN WEIGHT FIRST SUBUNIT
-10139;AL # AEGEAN WEIGHT SECOND SUBUNIT
-1013A;AL # AEGEAN WEIGHT THIRD SUBUNIT
-1013B;AL # AEGEAN WEIGHT FOURTH SUBUNIT
-1013C;AL # AEGEAN DRY MEASURE FIRST SUBUNIT
-1013D;AL # AEGEAN LIQUID MEASURE FIRST SUBUNIT
-1013E;AL # AEGEAN MEASURE SECOND SUBUNIT
-1013F;AL # AEGEAN MEASURE THIRD SUBUNIT
-10140;AL # GREEK ACROPHONIC ATTIC ONE QUARTER
-10141;AL # GREEK ACROPHONIC ATTIC ONE HALF
-10142;AL # GREEK ACROPHONIC ATTIC ONE DRACHMA
-10143;AL # GREEK ACROPHONIC ATTIC FIVE
-10144;AL # GREEK ACROPHONIC ATTIC FIFTY
-10145;AL # GREEK ACROPHONIC ATTIC FIVE HUNDRED
-10146;AL # GREEK ACROPHONIC ATTIC FIVE THOUSAND
-10147;AL # GREEK ACROPHONIC ATTIC FIFTY THOUSAND
-10148;AL # GREEK ACROPHONIC ATTIC FIVE TALENTS
-10149;AL # GREEK ACROPHONIC ATTIC TEN TALENTS
-1014A;AL # GREEK ACROPHONIC ATTIC FIFTY TALENTS
-1014B;AL # GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS
-1014C;AL # GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS
-1014D;AL # GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS
-1014E;AL # GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS
-1014F;AL # GREEK ACROPHONIC ATTIC FIVE STATERS
-10150;AL # GREEK ACROPHONIC ATTIC TEN STATERS
-10151;AL # GREEK ACROPHONIC ATTIC FIFTY STATERS
-10152;AL # GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS
-10153;AL # GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS
-10154;AL # GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS
-10155;AL # GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS
-10156;AL # GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS
-10157;AL # GREEK ACROPHONIC ATTIC TEN MNAS
-10158;AL # GREEK ACROPHONIC HERAEUM ONE PLETHRON
-10159;AL # GREEK ACROPHONIC THESPIAN ONE
-1015A;AL # GREEK ACROPHONIC HERMIONIAN ONE
-1015B;AL # GREEK ACROPHONIC EPIDAUREAN TWO
-1015C;AL # GREEK ACROPHONIC THESPIAN TWO
-1015D;AL # GREEK ACROPHONIC CYRENAIC TWO DRACHMAS
-1015E;AL # GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS
-1015F;AL # GREEK ACROPHONIC TROEZENIAN FIVE
-10160;AL # GREEK ACROPHONIC TROEZENIAN TEN
-10161;AL # GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM
-10162;AL # GREEK ACROPHONIC HERMIONIAN TEN
-10163;AL # GREEK ACROPHONIC MESSENIAN TEN
-10164;AL # GREEK ACROPHONIC THESPIAN TEN
-10165;AL # GREEK ACROPHONIC THESPIAN THIRTY
-10166;AL # GREEK ACROPHONIC TROEZENIAN FIFTY
-10167;AL # GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM
-10168;AL # GREEK ACROPHONIC HERMIONIAN FIFTY
-10169;AL # GREEK ACROPHONIC THESPIAN FIFTY
-1016A;AL # GREEK ACROPHONIC THESPIAN ONE HUNDRED
-1016B;AL # GREEK ACROPHONIC THESPIAN THREE HUNDRED
-1016C;AL # GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED
-1016D;AL # GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED
-1016E;AL # GREEK ACROPHONIC THESPIAN FIVE HUNDRED
-1016F;AL # GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED
-10170;AL # GREEK ACROPHONIC NAXIAN FIVE HUNDRED
-10171;AL # GREEK ACROPHONIC THESPIAN ONE THOUSAND
-10172;AL # GREEK ACROPHONIC THESPIAN FIVE THOUSAND
-10173;AL # GREEK ACROPHONIC DELPHIC FIVE MNAS
-10174;AL # GREEK ACROPHONIC STRATIAN FIFTY MNAS
-10175;AL # GREEK ONE HALF SIGN
-10176;AL # GREEK ONE HALF SIGN ALTERNATE FORM
-10177;AL # GREEK TWO THIRDS SIGN
-10178;AL # GREEK THREE QUARTERS SIGN
-10179;AL # GREEK YEAR SIGN
-1017A;AL # GREEK TALENT SIGN
-1017B;AL # GREEK DRACHMA SIGN
-1017C;AL # GREEK OBOL SIGN
-1017D;AL # GREEK TWO OBOLS SIGN
-1017E;AL # GREEK THREE OBOLS SIGN
-1017F;AL # GREEK FOUR OBOLS SIGN
-10180;AL # GREEK FIVE OBOLS SIGN
-10181;AL # GREEK METRETES SIGN
-10182;AL # GREEK KYATHOS BASE SIGN
-10183;AL # GREEK LITRA SIGN
-10184;AL # GREEK OUNKIA SIGN
-10185;AL # GREEK XESTES SIGN
-10186;AL # GREEK ARTABE SIGN
-10187;AL # GREEK AROURA SIGN
-10188;AL # GREEK GRAMMA SIGN
-10189;AL # GREEK TRYBLION BASE SIGN
-1018A;AL # GREEK ZERO SIGN
-10300;AL # OLD ITALIC LETTER A
-10301;AL # OLD ITALIC LETTER BE
-10302;AL # OLD ITALIC LETTER KE
-10303;AL # OLD ITALIC LETTER DE
-10304;AL # OLD ITALIC LETTER E
-10305;AL # OLD ITALIC LETTER VE
-10306;AL # OLD ITALIC LETTER ZE
-10307;AL # OLD ITALIC LETTER HE
-10308;AL # OLD ITALIC LETTER THE
-10309;AL # OLD ITALIC LETTER I
-1030A;AL # OLD ITALIC LETTER KA
-1030B;AL # OLD ITALIC LETTER EL
-1030C;AL # OLD ITALIC LETTER EM
-1030D;AL # OLD ITALIC LETTER EN
-1030E;AL # OLD ITALIC LETTER ESH
-1030F;AL # OLD ITALIC LETTER O
-10310;AL # OLD ITALIC LETTER PE
-10311;AL # OLD ITALIC LETTER SHE
-10312;AL # OLD ITALIC LETTER KU
-10313;AL # OLD ITALIC LETTER ER
-10314;AL # OLD ITALIC LETTER ES
-10315;AL # OLD ITALIC LETTER TE
-10316;AL # OLD ITALIC LETTER U
-10317;AL # OLD ITALIC LETTER EKS
-10318;AL # OLD ITALIC LETTER PHE
-10319;AL # OLD ITALIC LETTER KHE
-1031A;AL # OLD ITALIC LETTER EF
-1031B;AL # OLD ITALIC LETTER ERS
-1031C;AL # OLD ITALIC LETTER CHE
-1031D;AL # OLD ITALIC LETTER II
-1031E;AL # OLD ITALIC LETTER UU
-10320;AL # OLD ITALIC NUMERAL ONE
-10321;AL # OLD ITALIC NUMERAL FIVE
-10322;AL # OLD ITALIC NUMERAL TEN
-10323;AL # OLD ITALIC NUMERAL FIFTY
-10330;AL # GOTHIC LETTER AHSA
-10331;AL # GOTHIC LETTER BAIRKAN
-10332;AL # GOTHIC LETTER GIBA
-10333;AL # GOTHIC LETTER DAGS
-10334;AL # GOTHIC LETTER AIHVUS
-10335;AL # GOTHIC LETTER QAIRTHRA
-10336;AL # GOTHIC LETTER IUJA
-10337;AL # GOTHIC LETTER HAGL
-10338;AL # GOTHIC LETTER THIUTH
-10339;AL # GOTHIC LETTER EIS
-1033A;AL # GOTHIC LETTER KUSMA
-1033B;AL # GOTHIC LETTER LAGUS
-1033C;AL # GOTHIC LETTER MANNA
-1033D;AL # GOTHIC LETTER NAUTHS
-1033E;AL # GOTHIC LETTER JER
-1033F;AL # GOTHIC LETTER URUS
-10340;AL # GOTHIC LETTER PAIRTHRA
-10341;AL # GOTHIC LETTER NINETY
-10342;AL # GOTHIC LETTER RAIDA
-10343;AL # GOTHIC LETTER SAUIL
-10344;AL # GOTHIC LETTER TEIWS
-10345;AL # GOTHIC LETTER WINJA
-10346;AL # GOTHIC LETTER FAIHU
-10347;AL # GOTHIC LETTER IGGWS
-10348;AL # GOTHIC LETTER HWAIR
-10349;AL # GOTHIC LETTER OTHAL
-1034A;AL # GOTHIC LETTER NINE HUNDRED
-10380;AL # UGARITIC LETTER ALPA
-10381;AL # UGARITIC LETTER BETA
-10382;AL # UGARITIC LETTER GAMLA
-10383;AL # UGARITIC LETTER KHA
-10384;AL # UGARITIC LETTER DELTA
-10385;AL # UGARITIC LETTER HO
-10386;AL # UGARITIC LETTER WO
-10387;AL # UGARITIC LETTER ZETA
-10388;AL # UGARITIC LETTER HOTA
-10389;AL # UGARITIC LETTER TET
-1038A;AL # UGARITIC LETTER YOD
-1038B;AL # UGARITIC LETTER KAF
-1038C;AL # UGARITIC LETTER SHIN
-1038D;AL # UGARITIC LETTER LAMDA
-1038E;AL # UGARITIC LETTER MEM
-1038F;AL # UGARITIC LETTER DHAL
-10390;AL # UGARITIC LETTER NUN
-10391;AL # UGARITIC LETTER ZU
-10392;AL # UGARITIC LETTER SAMKA
-10393;AL # UGARITIC LETTER AIN
-10394;AL # UGARITIC LETTER PU
-10395;AL # UGARITIC LETTER SADE
-10396;AL # UGARITIC LETTER QOPA
-10397;AL # UGARITIC LETTER RASHA
-10398;AL # UGARITIC LETTER THANNA
-10399;AL # UGARITIC LETTER GHAIN
-1039A;AL # UGARITIC LETTER TO
-1039B;AL # UGARITIC LETTER I
-1039C;AL # UGARITIC LETTER U
-1039D;AL # UGARITIC LETTER SSU
-1039F;BA # UGARITIC WORD DIVIDER
-103A0;AL # OLD PERSIAN SIGN A
-103A1;AL # OLD PERSIAN SIGN I
-103A2;AL # OLD PERSIAN SIGN U
-103A3;AL # OLD PERSIAN SIGN KA
-103A4;AL # OLD PERSIAN SIGN KU
-103A5;AL # OLD PERSIAN SIGN GA
-103A6;AL # OLD PERSIAN SIGN GU
-103A7;AL # OLD PERSIAN SIGN XA
-103A8;AL # OLD PERSIAN SIGN CA
-103A9;AL # OLD PERSIAN SIGN JA
-103AA;AL # OLD PERSIAN SIGN JI
-103AB;AL # OLD PERSIAN SIGN TA
-103AC;AL # OLD PERSIAN SIGN TU
-103AD;AL # OLD PERSIAN SIGN DA
-103AE;AL # OLD PERSIAN SIGN DI
-103AF;AL # OLD PERSIAN SIGN DU
-103B0;AL # OLD PERSIAN SIGN THA
-103B1;AL # OLD PERSIAN SIGN PA
-103B2;AL # OLD PERSIAN SIGN BA
-103B3;AL # OLD PERSIAN SIGN FA
-103B4;AL # OLD PERSIAN SIGN NA
-103B5;AL # OLD PERSIAN SIGN NU
-103B6;AL # OLD PERSIAN SIGN MA
-103B7;AL # OLD PERSIAN SIGN MI
-103B8;AL # OLD PERSIAN SIGN MU
-103B9;AL # OLD PERSIAN SIGN YA
-103BA;AL # OLD PERSIAN SIGN VA
-103BB;AL # OLD PERSIAN SIGN VI
-103BC;AL # OLD PERSIAN SIGN RA
-103BD;AL # OLD PERSIAN SIGN RU
-103BE;AL # OLD PERSIAN SIGN LA
-103BF;AL # OLD PERSIAN SIGN SA
-103C0;AL # OLD PERSIAN SIGN ZA
-103C1;AL # OLD PERSIAN SIGN SHA
-103C2;AL # OLD PERSIAN SIGN SSA
-103C3;AL # OLD PERSIAN SIGN HA
-103C8;AL # OLD PERSIAN SIGN AURAMAZDAA
-103C9;AL # OLD PERSIAN SIGN AURAMAZDAA-2
-103CA;AL # OLD PERSIAN SIGN AURAMAZDAAHA
-103CB;AL # OLD PERSIAN SIGN XSHAAYATHIYA
-103CC;AL # OLD PERSIAN SIGN DAHYAAUSH
-103CD;AL # OLD PERSIAN SIGN DAHYAAUSH-2
-103CE;AL # OLD PERSIAN SIGN BAGA
-103CF;AL # OLD PERSIAN SIGN BUUMISH
-103D0;AL # OLD PERSIAN WORD DIVIDER
-103D1;AL # OLD PERSIAN NUMBER ONE
-103D2;AL # OLD PERSIAN NUMBER TWO
-103D3;AL # OLD PERSIAN NUMBER TEN
-103D4;AL # OLD PERSIAN NUMBER TWENTY
-103D5;AL # OLD PERSIAN NUMBER HUNDRED
-10400;AL # DESERET CAPITAL LETTER LONG I
-10401;AL # DESERET CAPITAL LETTER LONG E
-10402;AL # DESERET CAPITAL LETTER LONG A
-10403;AL # DESERET CAPITAL LETTER LONG AH
-10404;AL # DESERET CAPITAL LETTER LONG O
-10405;AL # DESERET CAPITAL LETTER LONG OO
-10406;AL # DESERET CAPITAL LETTER SHORT I
-10407;AL # DESERET CAPITAL LETTER SHORT E
-10408;AL # DESERET CAPITAL LETTER SHORT A
-10409;AL # DESERET CAPITAL LETTER SHORT AH
-1040A;AL # DESERET CAPITAL LETTER SHORT O
-1040B;AL # DESERET CAPITAL LETTER SHORT OO
-1040C;AL # DESERET CAPITAL LETTER AY
-1040D;AL # DESERET CAPITAL LETTER OW
-1040E;AL # DESERET CAPITAL LETTER WU
-1040F;AL # DESERET CAPITAL LETTER YEE
-10410;AL # DESERET CAPITAL LETTER H
-10411;AL # DESERET CAPITAL LETTER PEE
-10412;AL # DESERET CAPITAL LETTER BEE
-10413;AL # DESERET CAPITAL LETTER TEE
-10414;AL # DESERET CAPITAL LETTER DEE
-10415;AL # DESERET CAPITAL LETTER CHEE
-10416;AL # DESERET CAPITAL LETTER JEE
-10417;AL # DESERET CAPITAL LETTER KAY
-10418;AL # DESERET CAPITAL LETTER GAY
-10419;AL # DESERET CAPITAL LETTER EF
-1041A;AL # DESERET CAPITAL LETTER VEE
-1041B;AL # DESERET CAPITAL LETTER ETH
-1041C;AL # DESERET CAPITAL LETTER THEE
-1041D;AL # DESERET CAPITAL LETTER ES
-1041E;AL # DESERET CAPITAL LETTER ZEE
-1041F;AL # DESERET CAPITAL LETTER ESH
-10420;AL # DESERET CAPITAL LETTER ZHEE
-10421;AL # DESERET CAPITAL LETTER ER
-10422;AL # DESERET CAPITAL LETTER EL
-10423;AL # DESERET CAPITAL LETTER EM
-10424;AL # DESERET CAPITAL LETTER EN
-10425;AL # DESERET CAPITAL LETTER ENG
-10426;AL # DESERET CAPITAL LETTER OI
-10427;AL # DESERET CAPITAL LETTER EW
-10428;AL # DESERET SMALL LETTER LONG I
-10429;AL # DESERET SMALL LETTER LONG E
-1042A;AL # DESERET SMALL LETTER LONG A
-1042B;AL # DESERET SMALL LETTER LONG AH
-1042C;AL # DESERET SMALL LETTER LONG O
-1042D;AL # DESERET SMALL LETTER LONG OO
-1042E;AL # DESERET SMALL LETTER SHORT I
-1042F;AL # DESERET SMALL LETTER SHORT E
-10430;AL # DESERET SMALL LETTER SHORT A
-10431;AL # DESERET SMALL LETTER SHORT AH
-10432;AL # DESERET SMALL LETTER SHORT O
-10433;AL # DESERET SMALL LETTER SHORT OO
-10434;AL # DESERET SMALL LETTER AY
-10435;AL # DESERET SMALL LETTER OW
-10436;AL # DESERET SMALL LETTER WU
-10437;AL # DESERET SMALL LETTER YEE
-10438;AL # DESERET SMALL LETTER H
-10439;AL # DESERET SMALL LETTER PEE
-1043A;AL # DESERET SMALL LETTER BEE
-1043B;AL # DESERET SMALL LETTER TEE
-1043C;AL # DESERET SMALL LETTER DEE
-1043D;AL # DESERET SMALL LETTER CHEE
-1043E;AL # DESERET SMALL LETTER JEE
-1043F;AL # DESERET SMALL LETTER KAY
-10440;AL # DESERET SMALL LETTER GAY
-10441;AL # DESERET SMALL LETTER EF
-10442;AL # DESERET SMALL LETTER VEE
-10443;AL # DESERET SMALL LETTER ETH
-10444;AL # DESERET SMALL LETTER THEE
-10445;AL # DESERET SMALL LETTER ES
-10446;AL # DESERET SMALL LETTER ZEE
-10447;AL # DESERET SMALL LETTER ESH
-10448;AL # DESERET SMALL LETTER ZHEE
-10449;AL # DESERET SMALL LETTER ER
-1044A;AL # DESERET SMALL LETTER EL
-1044B;AL # DESERET SMALL LETTER EM
-1044C;AL # DESERET SMALL LETTER EN
-1044D;AL # DESERET SMALL LETTER ENG
-1044E;AL # DESERET SMALL LETTER OI
-1044F;AL # DESERET SMALL LETTER EW
-10450;AL # SHAVIAN LETTER PEEP
-10451;AL # SHAVIAN LETTER TOT
-10452;AL # SHAVIAN LETTER KICK
-10453;AL # SHAVIAN LETTER FEE
-10454;AL # SHAVIAN LETTER THIGH
-10455;AL # SHAVIAN LETTER SO
-10456;AL # SHAVIAN LETTER SURE
-10457;AL # SHAVIAN LETTER CHURCH
-10458;AL # SHAVIAN LETTER YEA
-10459;AL # SHAVIAN LETTER HUNG
-1045A;AL # SHAVIAN LETTER BIB
-1045B;AL # SHAVIAN LETTER DEAD
-1045C;AL # SHAVIAN LETTER GAG
-1045D;AL # SHAVIAN LETTER VOW
-1045E;AL # SHAVIAN LETTER THEY
-1045F;AL # SHAVIAN LETTER ZOO
-10460;AL # SHAVIAN LETTER MEASURE
-10461;AL # SHAVIAN LETTER JUDGE
-10462;AL # SHAVIAN LETTER WOE
-10463;AL # SHAVIAN LETTER HA-HA
-10464;AL # SHAVIAN LETTER LOLL
-10465;AL # SHAVIAN LETTER MIME
-10466;AL # SHAVIAN LETTER IF
-10467;AL # SHAVIAN LETTER EGG
-10468;AL # SHAVIAN LETTER ASH
-10469;AL # SHAVIAN LETTER ADO
-1046A;AL # SHAVIAN LETTER ON
-1046B;AL # SHAVIAN LETTER WOOL
-1046C;AL # SHAVIAN LETTER OUT
-1046D;AL # SHAVIAN LETTER AH
-1046E;AL # SHAVIAN LETTER ROAR
-1046F;AL # SHAVIAN LETTER NUN
-10470;AL # SHAVIAN LETTER EAT
-10471;AL # SHAVIAN LETTER AGE
-10472;AL # SHAVIAN LETTER ICE
-10473;AL # SHAVIAN LETTER UP
-10474;AL # SHAVIAN LETTER OAK
-10475;AL # SHAVIAN LETTER OOZE
-10476;AL # SHAVIAN LETTER OIL
-10477;AL # SHAVIAN LETTER AWE
-10478;AL # SHAVIAN LETTER ARE
-10479;AL # SHAVIAN LETTER OR
-1047A;AL # SHAVIAN LETTER AIR
-1047B;AL # SHAVIAN LETTER ERR
-1047C;AL # SHAVIAN LETTER ARRAY
-1047D;AL # SHAVIAN LETTER EAR
-1047E;AL # SHAVIAN LETTER IAN
-1047F;AL # SHAVIAN LETTER YEW
-10480;AL # OSMANYA LETTER ALEF
-10481;AL # OSMANYA LETTER BA
-10482;AL # OSMANYA LETTER TA
-10483;AL # OSMANYA LETTER JA
-10484;AL # OSMANYA LETTER XA
-10485;AL # OSMANYA LETTER KHA
-10486;AL # OSMANYA LETTER DEEL
-10487;AL # OSMANYA LETTER RA
-10488;AL # OSMANYA LETTER SA
-10489;AL # OSMANYA LETTER SHIIN
-1048A;AL # OSMANYA LETTER DHA
-1048B;AL # OSMANYA LETTER CAYN
-1048C;AL # OSMANYA LETTER GA
-1048D;AL # OSMANYA LETTER FA
-1048E;AL # OSMANYA LETTER QAAF
-1048F;AL # OSMANYA LETTER KAAF
-10490;AL # OSMANYA LETTER LAAN
-10491;AL # OSMANYA LETTER MIIN
-10492;AL # OSMANYA LETTER NUUN
-10493;AL # OSMANYA LETTER WAW
-10494;AL # OSMANYA LETTER HA
-10495;AL # OSMANYA LETTER YA
-10496;AL # OSMANYA LETTER A
-10497;AL # OSMANYA LETTER E
-10498;AL # OSMANYA LETTER I
-10499;AL # OSMANYA LETTER O
-1049A;AL # OSMANYA LETTER U
-1049B;AL # OSMANYA LETTER AA
-1049C;AL # OSMANYA LETTER EE
-1049D;AL # OSMANYA LETTER OO
-104A0;NU # OSMANYA DIGIT ZERO
-104A1;NU # OSMANYA DIGIT ONE
-104A2;NU # OSMANYA DIGIT TWO
-104A3;NU # OSMANYA DIGIT THREE
-104A4;NU # OSMANYA DIGIT FOUR
-104A5;NU # OSMANYA DIGIT FIVE
-104A6;NU # OSMANYA DIGIT SIX
-104A7;NU # OSMANYA DIGIT SEVEN
-104A8;NU # OSMANYA DIGIT EIGHT
-104A9;NU # OSMANYA DIGIT NINE
-10800;AL # CYPRIOT SYLLABLE A
-10801;AL # CYPRIOT SYLLABLE E
-10802;AL # CYPRIOT SYLLABLE I
-10803;AL # CYPRIOT SYLLABLE O
-10804;AL # CYPRIOT SYLLABLE U
-10805;AL # CYPRIOT SYLLABLE JA
-10808;AL # CYPRIOT SYLLABLE JO
-1080A;AL # CYPRIOT SYLLABLE KA
-1080B;AL # CYPRIOT SYLLABLE KE
-1080C;AL # CYPRIOT SYLLABLE KI
-1080D;AL # CYPRIOT SYLLABLE KO
-1080E;AL # CYPRIOT SYLLABLE KU
-1080F;AL # CYPRIOT SYLLABLE LA
-10810;AL # CYPRIOT SYLLABLE LE
-10811;AL # CYPRIOT SYLLABLE LI
-10812;AL # CYPRIOT SYLLABLE LO
-10813;AL # CYPRIOT SYLLABLE LU
-10814;AL # CYPRIOT SYLLABLE MA
-10815;AL # CYPRIOT SYLLABLE ME
-10816;AL # CYPRIOT SYLLABLE MI
-10817;AL # CYPRIOT SYLLABLE MO
-10818;AL # CYPRIOT SYLLABLE MU
-10819;AL # CYPRIOT SYLLABLE NA
-1081A;AL # CYPRIOT SYLLABLE NE
-1081B;AL # CYPRIOT SYLLABLE NI
-1081C;AL # CYPRIOT SYLLABLE NO
-1081D;AL # CYPRIOT SYLLABLE NU
-1081E;AL # CYPRIOT SYLLABLE PA
-1081F;AL # CYPRIOT SYLLABLE PE
-10820;AL # CYPRIOT SYLLABLE PI
-10821;AL # CYPRIOT SYLLABLE PO
-10822;AL # CYPRIOT SYLLABLE PU
-10823;AL # CYPRIOT SYLLABLE RA
-10824;AL # CYPRIOT SYLLABLE RE
-10825;AL # CYPRIOT SYLLABLE RI
-10826;AL # CYPRIOT SYLLABLE RO
-10827;AL # CYPRIOT SYLLABLE RU
-10828;AL # CYPRIOT SYLLABLE SA
-10829;AL # CYPRIOT SYLLABLE SE
-1082A;AL # CYPRIOT SYLLABLE SI
-1082B;AL # CYPRIOT SYLLABLE SO
-1082C;AL # CYPRIOT SYLLABLE SU
-1082D;AL # CYPRIOT SYLLABLE TA
-1082E;AL # CYPRIOT SYLLABLE TE
-1082F;AL # CYPRIOT SYLLABLE TI
-10830;AL # CYPRIOT SYLLABLE TO
-10831;AL # CYPRIOT SYLLABLE TU
-10832;AL # CYPRIOT SYLLABLE WA
-10833;AL # CYPRIOT SYLLABLE WE
-10834;AL # CYPRIOT SYLLABLE WI
-10835;AL # CYPRIOT SYLLABLE WO
-10837;AL # CYPRIOT SYLLABLE XA
-10838;AL # CYPRIOT SYLLABLE XE
-1083C;AL # CYPRIOT SYLLABLE ZA
-1083F;AL # CYPRIOT SYLLABLE ZO
-10A00;AL # KHAROSHTHI LETTER A
-10A01;CM # KHAROSHTHI VOWEL SIGN I
-10A02;CM # KHAROSHTHI VOWEL SIGN U
-10A03;CM # KHAROSHTHI VOWEL SIGN VOCALIC R
-10A05;CM # KHAROSHTHI VOWEL SIGN E
-10A06;CM # KHAROSHTHI VOWEL SIGN O
-10A0C;CM # KHAROSHTHI VOWEL LENGTH MARK
-10A0D;CM # KHAROSHTHI SIGN DOUBLE RING BELOW
-10A0E;CM # KHAROSHTHI SIGN ANUSVARA
-10A0F;CM # KHAROSHTHI SIGN VISARGA
-10A10;AL # KHAROSHTHI LETTER KA
-10A11;AL # KHAROSHTHI LETTER KHA
-10A12;AL # KHAROSHTHI LETTER GA
-10A13;AL # KHAROSHTHI LETTER GHA
-10A15;AL # KHAROSHTHI LETTER CA
-10A16;AL # KHAROSHTHI LETTER CHA
-10A17;AL # KHAROSHTHI LETTER JA
-10A19;AL # KHAROSHTHI LETTER NYA
-10A1A;AL # KHAROSHTHI LETTER TTA
-10A1B;AL # KHAROSHTHI LETTER TTHA
-10A1C;AL # KHAROSHTHI LETTER DDA
-10A1D;AL # KHAROSHTHI LETTER DDHA
-10A1E;AL # KHAROSHTHI LETTER NNA
-10A1F;AL # KHAROSHTHI LETTER TA
-10A20;AL # KHAROSHTHI LETTER THA
-10A21;AL # KHAROSHTHI LETTER DA
-10A22;AL # KHAROSHTHI LETTER DHA
-10A23;AL # KHAROSHTHI LETTER NA
-10A24;AL # KHAROSHTHI LETTER PA
-10A25;AL # KHAROSHTHI LETTER PHA
-10A26;AL # KHAROSHTHI LETTER BA
-10A27;AL # KHAROSHTHI LETTER BHA
-10A28;AL # KHAROSHTHI LETTER MA
-10A29;AL # KHAROSHTHI LETTER YA
-10A2A;AL # KHAROSHTHI LETTER RA
-10A2B;AL # KHAROSHTHI LETTER LA
-10A2C;AL # KHAROSHTHI LETTER VA
-10A2D;AL # KHAROSHTHI LETTER SHA
-10A2E;AL # KHAROSHTHI LETTER SSA
-10A2F;AL # KHAROSHTHI LETTER SA
-10A30;AL # KHAROSHTHI LETTER ZA
-10A31;AL # KHAROSHTHI LETTER HA
-10A32;AL # KHAROSHTHI LETTER KKA
-10A33;AL # KHAROSHTHI LETTER TTTHA
-10A38;CM # KHAROSHTHI SIGN BAR ABOVE
-10A39;CM # KHAROSHTHI SIGN CAUDA
-10A3A;CM # KHAROSHTHI SIGN DOT BELOW
-10A3F;CM # KHAROSHTHI VIRAMA
-10A40;AL # KHAROSHTHI DIGIT ONE
-10A41;AL # KHAROSHTHI DIGIT TWO
-10A42;AL # KHAROSHTHI DIGIT THREE
-10A43;AL # KHAROSHTHI DIGIT FOUR
-10A44;AL # KHAROSHTHI NUMBER TEN
-10A45;AL # KHAROSHTHI NUMBER TWENTY
-10A46;AL # KHAROSHTHI NUMBER ONE HUNDRED
-10A47;AL # KHAROSHTHI NUMBER ONE THOUSAND
-10A50;BA # KHAROSHTHI PUNCTUATION DOT
-10A51;BA # KHAROSHTHI PUNCTUATION SMALL CIRCLE
-10A52;BA # KHAROSHTHI PUNCTUATION CIRCLE
-10A53;BA # KHAROSHTHI PUNCTUATION CRESCENT BAR
-10A54;BA # KHAROSHTHI PUNCTUATION MANGALAM
-10A55;BA # KHAROSHTHI PUNCTUATION LOTUS
-10A56;BA # KHAROSHTHI PUNCTUATION DANDA
-10A57;BA # KHAROSHTHI PUNCTUATION DOUBLE DANDA
-10A58;AL # KHAROSHTHI PUNCTUATION LINES
-1D000;AL # BYZANTINE MUSICAL SYMBOL PSILI
-1D001;AL # BYZANTINE MUSICAL SYMBOL DASEIA
-1D002;AL # BYZANTINE MUSICAL SYMBOL PERISPOMENI
-1D003;AL # BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON
-1D004;AL # BYZANTINE MUSICAL SYMBOL OXEIA DIPLI
-1D005;AL # BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON
-1D006;AL # BYZANTINE MUSICAL SYMBOL VAREIA DIPLI
-1D007;AL # BYZANTINE MUSICAL SYMBOL KATHISTI
-1D008;AL # BYZANTINE MUSICAL SYMBOL SYRMATIKI
-1D009;AL # BYZANTINE MUSICAL SYMBOL PARAKLITIKI
-1D00A;AL # BYZANTINE MUSICAL SYMBOL YPOKRISIS
-1D00B;AL # BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI
-1D00C;AL # BYZANTINE MUSICAL SYMBOL KREMASTI
-1D00D;AL # BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON
-1D00E;AL # BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON
-1D00F;AL # BYZANTINE MUSICAL SYMBOL TELEIA
-1D010;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA
-1D011;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOS
-1D012;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI
-1D013;AL # BYZANTINE MUSICAL SYMBOL SYNEVMA
-1D014;AL # BYZANTINE MUSICAL SYMBOL THITA
-1D015;AL # BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION
-1D016;AL # BYZANTINE MUSICAL SYMBOL GORGON ARCHAION
-1D017;AL # BYZANTINE MUSICAL SYMBOL PSILON
-1D018;AL # BYZANTINE MUSICAL SYMBOL CHAMILON
-1D019;AL # BYZANTINE MUSICAL SYMBOL VATHY
-1D01A;AL # BYZANTINE MUSICAL SYMBOL ISON ARCHAION
-1D01B;AL # BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION
-1D01C;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION
-1D01D;AL # BYZANTINE MUSICAL SYMBOL SAXIMATA
-1D01E;AL # BYZANTINE MUSICAL SYMBOL PARICHON
-1D01F;AL # BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA
-1D020;AL # BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION
-1D021;AL # BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION
-1D022;AL # BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION
-1D023;AL # BYZANTINE MUSICAL SYMBOL APOTHEMA
-1D024;AL # BYZANTINE MUSICAL SYMBOL KLASMA
-1D025;AL # BYZANTINE MUSICAL SYMBOL REVMA
-1D026;AL # BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION
-1D027;AL # BYZANTINE MUSICAL SYMBOL TINAGMA
-1D028;AL # BYZANTINE MUSICAL SYMBOL ANATRICHISMA
-1D029;AL # BYZANTINE MUSICAL SYMBOL SEISMA
-1D02A;AL # BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION
-1D02B;AL # BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU
-1D02C;AL # BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION
-1D02D;AL # BYZANTINE MUSICAL SYMBOL THEMA
-1D02E;AL # BYZANTINE MUSICAL SYMBOL LEMOI
-1D02F;AL # BYZANTINE MUSICAL SYMBOL DYO
-1D030;AL # BYZANTINE MUSICAL SYMBOL TRIA
-1D031;AL # BYZANTINE MUSICAL SYMBOL TESSERA
-1D032;AL # BYZANTINE MUSICAL SYMBOL KRATIMATA
-1D033;AL # BYZANTINE MUSICAL SYMBOL APESO EXO NEO
-1D034;AL # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION
-1D035;AL # BYZANTINE MUSICAL SYMBOL IMIFTHORA
-1D036;AL # BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION
-1D037;AL # BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON
-1D038;AL # BYZANTINE MUSICAL SYMBOL PELASTON
-1D039;AL # BYZANTINE MUSICAL SYMBOL PSIFISTON
-1D03A;AL # BYZANTINE MUSICAL SYMBOL KONTEVMA
-1D03B;AL # BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION
-1D03C;AL # BYZANTINE MUSICAL SYMBOL RAPISMA
-1D03D;AL # BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION
-1D03E;AL # BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION
-1D03F;AL # BYZANTINE MUSICAL SYMBOL ICHADIN
-1D040;AL # BYZANTINE MUSICAL SYMBOL NANA
-1D041;AL # BYZANTINE MUSICAL SYMBOL PETASMA
-1D042;AL # BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO
-1D043;AL # BYZANTINE MUSICAL SYMBOL TROMIKON ALLO
-1D044;AL # BYZANTINE MUSICAL SYMBOL STRAGGISMATA
-1D045;AL # BYZANTINE MUSICAL SYMBOL GRONTHISMATA
-1D046;AL # BYZANTINE MUSICAL SYMBOL ISON NEO
-1D047;AL # BYZANTINE MUSICAL SYMBOL OLIGON NEO
-1D048;AL # BYZANTINE MUSICAL SYMBOL OXEIA NEO
-1D049;AL # BYZANTINE MUSICAL SYMBOL PETASTI
-1D04A;AL # BYZANTINE MUSICAL SYMBOL KOUFISMA
-1D04B;AL # BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA
-1D04C;AL # BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA
-1D04D;AL # BYZANTINE MUSICAL SYMBOL PELASTON NEO
-1D04E;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO
-1D04F;AL # BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO
-1D050;AL # BYZANTINE MUSICAL SYMBOL YPSILI
-1D051;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO
-1D052;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO
-1D053;AL # BYZANTINE MUSICAL SYMBOL YPORROI
-1D054;AL # BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON
-1D055;AL # BYZANTINE MUSICAL SYMBOL ELAFRON
-1D056;AL # BYZANTINE MUSICAL SYMBOL CHAMILI
-1D057;AL # BYZANTINE MUSICAL SYMBOL MIKRON ISON
-1D058;AL # BYZANTINE MUSICAL SYMBOL VAREIA NEO
-1D059;AL # BYZANTINE MUSICAL SYMBOL PIASMA NEO
-1D05A;AL # BYZANTINE MUSICAL SYMBOL PSIFISTON NEO
-1D05B;AL # BYZANTINE MUSICAL SYMBOL OMALON
-1D05C;AL # BYZANTINE MUSICAL SYMBOL ANTIKENOMA
-1D05D;AL # BYZANTINE MUSICAL SYMBOL LYGISMA
-1D05E;AL # BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO
-1D05F;AL # BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO
-1D060;AL # BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA
-1D061;AL # BYZANTINE MUSICAL SYMBOL KYLISMA
-1D062;AL # BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA
-1D063;AL # BYZANTINE MUSICAL SYMBOL TROMIKON NEO
-1D064;AL # BYZANTINE MUSICAL SYMBOL EKSTREPTON
-1D065;AL # BYZANTINE MUSICAL SYMBOL SYNAGMA NEO
-1D066;AL # BYZANTINE MUSICAL SYMBOL SYRMA
-1D067;AL # BYZANTINE MUSICAL SYMBOL CHOREVMA NEO
-1D068;AL # BYZANTINE MUSICAL SYMBOL EPEGERMA
-1D069;AL # BYZANTINE MUSICAL SYMBOL SEISMA NEO
-1D06A;AL # BYZANTINE MUSICAL SYMBOL XIRON KLASMA
-1D06B;AL # BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON
-1D06C;AL # BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA
-1D06D;AL # BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA
-1D06E;AL # BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA
-1D06F;AL # BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA
-1D070;AL # BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA
-1D071;AL # BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA
-1D072;AL # BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON
-1D073;AL # BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON
-1D074;AL # BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON
-1D075;AL # BYZANTINE MUSICAL SYMBOL OYRANISMA NEO
-1D076;AL # BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO
-1D077;AL # BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO
-1D078;AL # BYZANTINE MUSICAL SYMBOL THEMA APLOUN
-1D079;AL # BYZANTINE MUSICAL SYMBOL THES KAI APOTHES
-1D07A;AL # BYZANTINE MUSICAL SYMBOL KATAVASMA
-1D07B;AL # BYZANTINE MUSICAL SYMBOL ENDOFONON
-1D07C;AL # BYZANTINE MUSICAL SYMBOL YFEN KATO
-1D07D;AL # BYZANTINE MUSICAL SYMBOL YFEN ANO
-1D07E;AL # BYZANTINE MUSICAL SYMBOL STAVROS
-1D07F;AL # BYZANTINE MUSICAL SYMBOL KLASMA ANO
-1D080;AL # BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION
-1D081;AL # BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION
-1D082;AL # BYZANTINE MUSICAL SYMBOL KRATIMA ALLO
-1D083;AL # BYZANTINE MUSICAL SYMBOL KRATIMA NEO
-1D084;AL # BYZANTINE MUSICAL SYMBOL APODERMA NEO
-1D085;AL # BYZANTINE MUSICAL SYMBOL APLI
-1D086;AL # BYZANTINE MUSICAL SYMBOL DIPLI
-1D087;AL # BYZANTINE MUSICAL SYMBOL TRIPLI
-1D088;AL # BYZANTINE MUSICAL SYMBOL TETRAPLI
-1D089;AL # BYZANTINE MUSICAL SYMBOL KORONIS
-1D08A;AL # BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU
-1D08B;AL # BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON
-1D08C;AL # BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON
-1D08D;AL # BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON
-1D08E;AL # BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU
-1D08F;AL # BYZANTINE MUSICAL SYMBOL GORGON NEO ANO
-1D090;AL # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA
-1D091;AL # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA
-1D092;AL # BYZANTINE MUSICAL SYMBOL DIGORGON
-1D093;AL # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO
-1D094;AL # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO
-1D095;AL # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA
-1D096;AL # BYZANTINE MUSICAL SYMBOL TRIGORGON
-1D097;AL # BYZANTINE MUSICAL SYMBOL ARGON
-1D098;AL # BYZANTINE MUSICAL SYMBOL IMIDIARGON
-1D099;AL # BYZANTINE MUSICAL SYMBOL DIARGON
-1D09A;AL # BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI
-1D09B;AL # BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI
-1D09C;AL # BYZANTINE MUSICAL SYMBOL AGOGI ARGI
-1D09D;AL # BYZANTINE MUSICAL SYMBOL AGOGI METRIA
-1D09E;AL # BYZANTINE MUSICAL SYMBOL AGOGI MESI
-1D09F;AL # BYZANTINE MUSICAL SYMBOL AGOGI GORGI
-1D0A0;AL # BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI
-1D0A1;AL # BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI
-1D0A2;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS
-1D0A3;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS
-1D0A4;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS
-1D0A5;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS
-1D0A6;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS
-1D0A7;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS
-1D0A8;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS
-1D0A9;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS
-1D0AA;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS
-1D0AB;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS
-1D0AC;AL # BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS
-1D0AD;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS
-1D0AE;AL # BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS
-1D0AF;AL # BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS
-1D0B0;AL # BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS
-1D0B1;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS
-1D0B2;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS
-1D0B3;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS
-1D0B4;AL # BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN
-1D0B5;AL # BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN
-1D0B6;AL # BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU
-1D0B7;AL # BYZANTINE MUSICAL SYMBOL IMIFONON
-1D0B8;AL # BYZANTINE MUSICAL SYMBOL IMIFTHORON
-1D0B9;AL # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU
-1D0BA;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA
-1D0BB;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA
-1D0BC;AL # BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS
-1D0BD;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI
-1D0BE;AL # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI
-1D0BF;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE
-1D0C0;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO
-1D0C1;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO
-1D0C2;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO
-1D0C3;AL # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS
-1D0C4;AL # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS
-1D0C5;AL # BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS
-1D0C6;AL # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI
-1D0C7;AL # BYZANTINE MUSICAL SYMBOL FTHORA NENANO
-1D0C8;AL # BYZANTINE MUSICAL SYMBOL CHROA ZYGOS
-1D0C9;AL # BYZANTINE MUSICAL SYMBOL CHROA KLITON
-1D0CA;AL # BYZANTINE MUSICAL SYMBOL CHROA SPATHI
-1D0CB;AL # BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION
-1D0CC;AL # BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA
-1D0CD;AL # BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION
-1D0CE;AL # BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION
-1D0CF;AL # BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION
-1D0D0;AL # BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA
-1D0D1;AL # BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA
-1D0D2;AL # BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA
-1D0D3;AL # BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA
-1D0D4;AL # BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA
-1D0D5;AL # BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA
-1D0D6;AL # BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA
-1D0D7;AL # BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA
-1D0D8;AL # BYZANTINE MUSICAL SYMBOL GENIKI DIESIS
-1D0D9;AL # BYZANTINE MUSICAL SYMBOL GENIKI YFESIS
-1D0DA;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI
-1D0DB;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI
-1D0DC;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI
-1D0DD;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS
-1D0DE;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS
-1D0DF;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU
-1D0E0;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU
-1D0E1;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU
-1D0E2;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS
-1D0E3;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU
-1D0E4;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU
-1D0E5;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU
-1D0E6;AL # BYZANTINE MUSICAL SYMBOL DIGRAMMA GG
-1D0E7;AL # BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU
-1D0E8;AL # BYZANTINE MUSICAL SYMBOL STIGMA
-1D0E9;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO PA
-1D0EA;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO VOU
-1D0EB;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO GA
-1D0EC;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO DI
-1D0ED;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO KE
-1D0EE;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO ZO
-1D0EF;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO NI
-1D0F0;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO
-1D0F1;AL # BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO
-1D0F2;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO
-1D0F3;AL # BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO
-1D0F4;AL # BYZANTINE MUSICAL SYMBOL KLASMA KATO
-1D0F5;AL # BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
-1D100;AL # MUSICAL SYMBOL SINGLE BARLINE
-1D101;AL # MUSICAL SYMBOL DOUBLE BARLINE
-1D102;AL # MUSICAL SYMBOL FINAL BARLINE
-1D103;AL # MUSICAL SYMBOL REVERSE FINAL BARLINE
-1D104;AL # MUSICAL SYMBOL DASHED BARLINE
-1D105;AL # MUSICAL SYMBOL SHORT BARLINE
-1D106;AL # MUSICAL SYMBOL LEFT REPEAT SIGN
-1D107;AL # MUSICAL SYMBOL RIGHT REPEAT SIGN
-1D108;AL # MUSICAL SYMBOL REPEAT DOTS
-1D109;AL # MUSICAL SYMBOL DAL SEGNO
-1D10A;AL # MUSICAL SYMBOL DA CAPO
-1D10B;AL # MUSICAL SYMBOL SEGNO
-1D10C;AL # MUSICAL SYMBOL CODA
-1D10D;AL # MUSICAL SYMBOL REPEATED FIGURE-1
-1D10E;AL # MUSICAL SYMBOL REPEATED FIGURE-2
-1D10F;AL # MUSICAL SYMBOL REPEATED FIGURE-3
-1D110;AL # MUSICAL SYMBOL FERMATA
-1D111;AL # MUSICAL SYMBOL FERMATA BELOW
-1D112;AL # MUSICAL SYMBOL BREATH MARK
-1D113;AL # MUSICAL SYMBOL CAESURA
-1D114;AL # MUSICAL SYMBOL BRACE
-1D115;AL # MUSICAL SYMBOL BRACKET
-1D116;AL # MUSICAL SYMBOL ONE-LINE STAFF
-1D117;AL # MUSICAL SYMBOL TWO-LINE STAFF
-1D118;AL # MUSICAL SYMBOL THREE-LINE STAFF
-1D119;AL # MUSICAL SYMBOL FOUR-LINE STAFF
-1D11A;AL # MUSICAL SYMBOL FIVE-LINE STAFF
-1D11B;AL # MUSICAL SYMBOL SIX-LINE STAFF
-1D11C;AL # MUSICAL SYMBOL SIX-STRING FRETBOARD
-1D11D;AL # MUSICAL SYMBOL FOUR-STRING FRETBOARD
-1D11E;AL # MUSICAL SYMBOL G CLEF
-1D11F;AL # MUSICAL SYMBOL G CLEF OTTAVA ALTA
-1D120;AL # MUSICAL SYMBOL G CLEF OTTAVA BASSA
-1D121;AL # MUSICAL SYMBOL C CLEF
-1D122;AL # MUSICAL SYMBOL F CLEF
-1D123;AL # MUSICAL SYMBOL F CLEF OTTAVA ALTA
-1D124;AL # MUSICAL SYMBOL F CLEF OTTAVA BASSA
-1D125;AL # MUSICAL SYMBOL DRUM CLEF-1
-1D126;AL # MUSICAL SYMBOL DRUM CLEF-2
-1D12A;AL # MUSICAL SYMBOL DOUBLE SHARP
-1D12B;AL # MUSICAL SYMBOL DOUBLE FLAT
-1D12C;AL # MUSICAL SYMBOL FLAT UP
-1D12D;AL # MUSICAL SYMBOL FLAT DOWN
-1D12E;AL # MUSICAL SYMBOL NATURAL UP
-1D12F;AL # MUSICAL SYMBOL NATURAL DOWN
-1D130;AL # MUSICAL SYMBOL SHARP UP
-1D131;AL # MUSICAL SYMBOL SHARP DOWN
-1D132;AL # MUSICAL SYMBOL QUARTER TONE SHARP
-1D133;AL # MUSICAL SYMBOL QUARTER TONE FLAT
-1D134;AL # MUSICAL SYMBOL COMMON TIME
-1D135;AL # MUSICAL SYMBOL CUT TIME
-1D136;AL # MUSICAL SYMBOL OTTAVA ALTA
-1D137;AL # MUSICAL SYMBOL OTTAVA BASSA
-1D138;AL # MUSICAL SYMBOL QUINDICESIMA ALTA
-1D139;AL # MUSICAL SYMBOL QUINDICESIMA BASSA
-1D13A;AL # MUSICAL SYMBOL MULTI REST
-1D13B;AL # MUSICAL SYMBOL WHOLE REST
-1D13C;AL # MUSICAL SYMBOL HALF REST
-1D13D;AL # MUSICAL SYMBOL QUARTER REST
-1D13E;AL # MUSICAL SYMBOL EIGHTH REST
-1D13F;AL # MUSICAL SYMBOL SIXTEENTH REST
-1D140;AL # MUSICAL SYMBOL THIRTY-SECOND REST
-1D141;AL # MUSICAL SYMBOL SIXTY-FOURTH REST
-1D142;AL # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST
-1D143;AL # MUSICAL SYMBOL X NOTEHEAD
-1D144;AL # MUSICAL SYMBOL PLUS NOTEHEAD
-1D145;AL # MUSICAL SYMBOL CIRCLE X NOTEHEAD
-1D146;AL # MUSICAL SYMBOL SQUARE NOTEHEAD WHITE
-1D147;AL # MUSICAL SYMBOL SQUARE NOTEHEAD BLACK
-1D148;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE
-1D149;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK
-1D14A;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE
-1D14B;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK
-1D14C;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE
-1D14D;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK
-1D14E;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE
-1D14F;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK
-1D150;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE
-1D151;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK
-1D152;AL # MUSICAL SYMBOL MOON NOTEHEAD WHITE
-1D153;AL # MUSICAL SYMBOL MOON NOTEHEAD BLACK
-1D154;AL # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE
-1D155;AL # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK
-1D156;AL # MUSICAL SYMBOL PARENTHESIS NOTEHEAD
-1D157;AL # MUSICAL SYMBOL VOID NOTEHEAD
-1D158;AL # MUSICAL SYMBOL NOTEHEAD BLACK
-1D159;AL # MUSICAL SYMBOL NULL NOTEHEAD
-1D15A;AL # MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE
-1D15B;AL # MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK
-1D15C;AL # MUSICAL SYMBOL BREVE
-1D15D;AL # MUSICAL SYMBOL WHOLE NOTE
-1D15E;AL # MUSICAL SYMBOL HALF NOTE
-1D15F;AL # MUSICAL SYMBOL QUARTER NOTE
-1D160;AL # MUSICAL SYMBOL EIGHTH NOTE
-1D161;AL # MUSICAL SYMBOL SIXTEENTH NOTE
-1D162;AL # MUSICAL SYMBOL THIRTY-SECOND NOTE
-1D163;AL # MUSICAL SYMBOL SIXTY-FOURTH NOTE
-1D164;AL # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
-1D165;CM # MUSICAL SYMBOL COMBINING STEM
-1D166;CM # MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
-1D167;CM # MUSICAL SYMBOL COMBINING TREMOLO-1
-1D168;CM # MUSICAL SYMBOL COMBINING TREMOLO-2
-1D169;CM # MUSICAL SYMBOL COMBINING TREMOLO-3
-1D16A;AL # MUSICAL SYMBOL FINGERED TREMOLO-1
-1D16B;AL # MUSICAL SYMBOL FINGERED TREMOLO-2
-1D16C;AL # MUSICAL SYMBOL FINGERED TREMOLO-3
-1D16D;CM # MUSICAL SYMBOL COMBINING AUGMENTATION DOT
-1D16E;CM # MUSICAL SYMBOL COMBINING FLAG-1
-1D16F;CM # MUSICAL SYMBOL COMBINING FLAG-2
-1D170;CM # MUSICAL SYMBOL COMBINING FLAG-3
-1D171;CM # MUSICAL SYMBOL COMBINING FLAG-4
-1D172;CM # MUSICAL SYMBOL COMBINING FLAG-5
-1D173;CM # MUSICAL SYMBOL BEGIN BEAM
-1D174;CM # MUSICAL SYMBOL END BEAM
-1D175;CM # MUSICAL SYMBOL BEGIN TIE
-1D176;CM # MUSICAL SYMBOL END TIE
-1D177;CM # MUSICAL SYMBOL BEGIN SLUR
-1D178;CM # MUSICAL SYMBOL END SLUR
-1D179;CM # MUSICAL SYMBOL BEGIN PHRASE
-1D17A;CM # MUSICAL SYMBOL END PHRASE
-1D17B;CM # MUSICAL SYMBOL COMBINING ACCENT
-1D17C;CM # MUSICAL SYMBOL COMBINING STACCATO
-1D17D;CM # MUSICAL SYMBOL COMBINING TENUTO
-1D17E;CM # MUSICAL SYMBOL COMBINING STACCATISSIMO
-1D17F;CM # MUSICAL SYMBOL COMBINING MARCATO
-1D180;CM # MUSICAL SYMBOL COMBINING MARCATO-STACCATO
-1D181;CM # MUSICAL SYMBOL COMBINING ACCENT-STACCATO
-1D182;CM # MUSICAL SYMBOL COMBINING LOURE
-1D183;AL # MUSICAL SYMBOL ARPEGGIATO UP
-1D184;AL # MUSICAL SYMBOL ARPEGGIATO DOWN
-1D185;CM # MUSICAL SYMBOL COMBINING DOIT
-1D186;CM # MUSICAL SYMBOL COMBINING RIP
-1D187;CM # MUSICAL SYMBOL COMBINING FLIP
-1D188;CM # MUSICAL SYMBOL COMBINING SMEAR
-1D189;CM # MUSICAL SYMBOL COMBINING BEND
-1D18A;CM # MUSICAL SYMBOL COMBINING DOUBLE TONGUE
-1D18B;CM # MUSICAL SYMBOL COMBINING TRIPLE TONGUE
-1D18C;AL # MUSICAL SYMBOL RINFORZANDO
-1D18D;AL # MUSICAL SYMBOL SUBITO
-1D18E;AL # MUSICAL SYMBOL Z
-1D18F;AL # MUSICAL SYMBOL PIANO
-1D190;AL # MUSICAL SYMBOL MEZZO
-1D191;AL # MUSICAL SYMBOL FORTE
-1D192;AL # MUSICAL SYMBOL CRESCENDO
-1D193;AL # MUSICAL SYMBOL DECRESCENDO
-1D194;AL # MUSICAL SYMBOL GRACE NOTE SLASH
-1D195;AL # MUSICAL SYMBOL GRACE NOTE NO SLASH
-1D196;AL # MUSICAL SYMBOL TR
-1D197;AL # MUSICAL SYMBOL TURN
-1D198;AL # MUSICAL SYMBOL INVERTED TURN
-1D199;AL # MUSICAL SYMBOL TURN SLASH
-1D19A;AL # MUSICAL SYMBOL TURN UP
-1D19B;AL # MUSICAL SYMBOL ORNAMENT STROKE-1
-1D19C;AL # MUSICAL SYMBOL ORNAMENT STROKE-2
-1D19D;AL # MUSICAL SYMBOL ORNAMENT STROKE-3
-1D19E;AL # MUSICAL SYMBOL ORNAMENT STROKE-4
-1D19F;AL # MUSICAL SYMBOL ORNAMENT STROKE-5
-1D1A0;AL # MUSICAL SYMBOL ORNAMENT STROKE-6
-1D1A1;AL # MUSICAL SYMBOL ORNAMENT STROKE-7
-1D1A2;AL # MUSICAL SYMBOL ORNAMENT STROKE-8
-1D1A3;AL # MUSICAL SYMBOL ORNAMENT STROKE-9
-1D1A4;AL # MUSICAL SYMBOL ORNAMENT STROKE-10
-1D1A5;AL # MUSICAL SYMBOL ORNAMENT STROKE-11
-1D1A6;AL # MUSICAL SYMBOL HAUPTSTIMME
-1D1A7;AL # MUSICAL SYMBOL NEBENSTIMME
-1D1A8;AL # MUSICAL SYMBOL END OF STIMME
-1D1A9;AL # MUSICAL SYMBOL DEGREE SLASH
-1D1AA;CM # MUSICAL SYMBOL COMBINING DOWN BOW
-1D1AB;CM # MUSICAL SYMBOL COMBINING UP BOW
-1D1AC;CM # MUSICAL SYMBOL COMBINING HARMONIC
-1D1AD;CM # MUSICAL SYMBOL COMBINING SNAP PIZZICATO
-1D1AE;AL # MUSICAL SYMBOL PEDAL MARK
-1D1AF;AL # MUSICAL SYMBOL PEDAL UP MARK
-1D1B0;AL # MUSICAL SYMBOL HALF PEDAL MARK
-1D1B1;AL # MUSICAL SYMBOL GLISSANDO UP
-1D1B2;AL # MUSICAL SYMBOL GLISSANDO DOWN
-1D1B3;AL # MUSICAL SYMBOL WITH FINGERNAILS
-1D1B4;AL # MUSICAL SYMBOL DAMP
-1D1B5;AL # MUSICAL SYMBOL DAMP ALL
-1D1B6;AL # MUSICAL SYMBOL MAXIMA
-1D1B7;AL # MUSICAL SYMBOL LONGA
-1D1B8;AL # MUSICAL SYMBOL BREVIS
-1D1B9;AL # MUSICAL SYMBOL SEMIBREVIS WHITE
-1D1BA;AL # MUSICAL SYMBOL SEMIBREVIS BLACK
-1D1BB;AL # MUSICAL SYMBOL MINIMA
-1D1BC;AL # MUSICAL SYMBOL MINIMA BLACK
-1D1BD;AL # MUSICAL SYMBOL SEMIMINIMA WHITE
-1D1BE;AL # MUSICAL SYMBOL SEMIMINIMA BLACK
-1D1BF;AL # MUSICAL SYMBOL FUSA WHITE
-1D1C0;AL # MUSICAL SYMBOL FUSA BLACK
-1D1C1;AL # MUSICAL SYMBOL LONGA PERFECTA REST
-1D1C2;AL # MUSICAL SYMBOL LONGA IMPERFECTA REST
-1D1C3;AL # MUSICAL SYMBOL BREVIS REST
-1D1C4;AL # MUSICAL SYMBOL SEMIBREVIS REST
-1D1C5;AL # MUSICAL SYMBOL MINIMA REST
-1D1C6;AL # MUSICAL SYMBOL SEMIMINIMA REST
-1D1C7;AL # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA
-1D1C8;AL # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA
-1D1C9;AL # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1
-1D1CA;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA
-1D1CB;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA
-1D1CC;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1
-1D1CD;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2
-1D1CE;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3
-1D1CF;AL # MUSICAL SYMBOL CROIX
-1D1D0;AL # MUSICAL SYMBOL GREGORIAN C CLEF
-1D1D1;AL # MUSICAL SYMBOL GREGORIAN F CLEF
-1D1D2;AL # MUSICAL SYMBOL SQUARE B
-1D1D3;AL # MUSICAL SYMBOL VIRGA
-1D1D4;AL # MUSICAL SYMBOL PODATUS
-1D1D5;AL # MUSICAL SYMBOL CLIVIS
-1D1D6;AL # MUSICAL SYMBOL SCANDICUS
-1D1D7;AL # MUSICAL SYMBOL CLIMACUS
-1D1D8;AL # MUSICAL SYMBOL TORCULUS
-1D1D9;AL # MUSICAL SYMBOL PORRECTUS
-1D1DA;AL # MUSICAL SYMBOL PORRECTUS FLEXUS
-1D1DB;AL # MUSICAL SYMBOL SCANDICUS FLEXUS
-1D1DC;AL # MUSICAL SYMBOL TORCULUS RESUPINUS
-1D1DD;AL # MUSICAL SYMBOL PES SUBPUNCTIS
-1D200;AL # GREEK VOCAL NOTATION SYMBOL-1
-1D201;AL # GREEK VOCAL NOTATION SYMBOL-2
-1D202;AL # GREEK VOCAL NOTATION SYMBOL-3
-1D203;AL # GREEK VOCAL NOTATION SYMBOL-4
-1D204;AL # GREEK VOCAL NOTATION SYMBOL-5
-1D205;AL # GREEK VOCAL NOTATION SYMBOL-6
-1D206;AL # GREEK VOCAL NOTATION SYMBOL-7
-1D207;AL # GREEK VOCAL NOTATION SYMBOL-8
-1D208;AL # GREEK VOCAL NOTATION SYMBOL-9
-1D209;AL # GREEK VOCAL NOTATION SYMBOL-10
-1D20A;AL # GREEK VOCAL NOTATION SYMBOL-11
-1D20B;AL # GREEK VOCAL NOTATION SYMBOL-12
-1D20C;AL # GREEK VOCAL NOTATION SYMBOL-13
-1D20D;AL # GREEK VOCAL NOTATION SYMBOL-14
-1D20E;AL # GREEK VOCAL NOTATION SYMBOL-15
-1D20F;AL # GREEK VOCAL NOTATION SYMBOL-16
-1D210;AL # GREEK VOCAL NOTATION SYMBOL-17
-1D211;AL # GREEK VOCAL NOTATION SYMBOL-18
-1D212;AL # GREEK VOCAL NOTATION SYMBOL-19
-1D213;AL # GREEK VOCAL NOTATION SYMBOL-20
-1D214;AL # GREEK VOCAL NOTATION SYMBOL-21
-1D215;AL # GREEK VOCAL NOTATION SYMBOL-22
-1D216;AL # GREEK VOCAL NOTATION SYMBOL-23
-1D217;AL # GREEK VOCAL NOTATION SYMBOL-24
-1D218;AL # GREEK VOCAL NOTATION SYMBOL-50
-1D219;AL # GREEK VOCAL NOTATION SYMBOL-51
-1D21A;AL # GREEK VOCAL NOTATION SYMBOL-52
-1D21B;AL # GREEK VOCAL NOTATION SYMBOL-53
-1D21C;AL # GREEK VOCAL NOTATION SYMBOL-54
-1D21D;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-1
-1D21E;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-2
-1D21F;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-4
-1D220;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-5
-1D221;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-7
-1D222;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-8
-1D223;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-11
-1D224;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-12
-1D225;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-13
-1D226;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-14
-1D227;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-17
-1D228;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-18
-1D229;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-19
-1D22A;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-23
-1D22B;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-24
-1D22C;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-25
-1D22D;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-26
-1D22E;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-27
-1D22F;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-29
-1D230;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-30
-1D231;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-32
-1D232;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-36
-1D233;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-37
-1D234;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-38
-1D235;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-39
-1D236;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-40
-1D237;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-42
-1D238;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-43
-1D239;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-45
-1D23A;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-47
-1D23B;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-48
-1D23C;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-49
-1D23D;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-50
-1D23E;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-51
-1D23F;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-52
-1D240;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-53
-1D241;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-54
-1D242;CM # COMBINING GREEK MUSICAL TRISEME
-1D243;CM # COMBINING GREEK MUSICAL TETRASEME
-1D244;CM # COMBINING GREEK MUSICAL PENTASEME
-1D245;AL # GREEK MUSICAL LEIMMA
-1D300;AL # MONOGRAM FOR EARTH
-1D301;AL # DIGRAM FOR HEAVENLY EARTH
-1D302;AL # DIGRAM FOR HUMAN EARTH
-1D303;AL # DIGRAM FOR EARTHLY HEAVEN
-1D304;AL # DIGRAM FOR EARTHLY HUMAN
-1D305;AL # DIGRAM FOR EARTH
-1D306;AL # TETRAGRAM FOR CENTRE
-1D307;AL # TETRAGRAM FOR FULL CIRCLE
-1D308;AL # TETRAGRAM FOR MIRED
-1D309;AL # TETRAGRAM FOR BARRIER
-1D30A;AL # TETRAGRAM FOR KEEPING SMALL
-1D30B;AL # TETRAGRAM FOR CONTRARIETY
-1D30C;AL # TETRAGRAM FOR ASCENT
-1D30D;AL # TETRAGRAM FOR OPPOSITION
-1D30E;AL # TETRAGRAM FOR BRANCHING OUT
-1D30F;AL # TETRAGRAM FOR DEFECTIVENESS OR DISTORTION
-1D310;AL # TETRAGRAM FOR DIVERGENCE
-1D311;AL # TETRAGRAM FOR YOUTHFULNESS
-1D312;AL # TETRAGRAM FOR INCREASE
-1D313;AL # TETRAGRAM FOR PENETRATION
-1D314;AL # TETRAGRAM FOR REACH
-1D315;AL # TETRAGRAM FOR CONTACT
-1D316;AL # TETRAGRAM FOR HOLDING BACK
-1D317;AL # TETRAGRAM FOR WAITING
-1D318;AL # TETRAGRAM FOR FOLLOWING
-1D319;AL # TETRAGRAM FOR ADVANCE
-1D31A;AL # TETRAGRAM FOR RELEASE
-1D31B;AL # TETRAGRAM FOR RESISTANCE
-1D31C;AL # TETRAGRAM FOR EASE
-1D31D;AL # TETRAGRAM FOR JOY
-1D31E;AL # TETRAGRAM FOR CONTENTION
-1D31F;AL # TETRAGRAM FOR ENDEAVOUR
-1D320;AL # TETRAGRAM FOR DUTIES
-1D321;AL # TETRAGRAM FOR CHANGE
-1D322;AL # TETRAGRAM FOR DECISIVENESS
-1D323;AL # TETRAGRAM FOR BOLD RESOLUTION
-1D324;AL # TETRAGRAM FOR PACKING
-1D325;AL # TETRAGRAM FOR LEGION
-1D326;AL # TETRAGRAM FOR CLOSENESS
-1D327;AL # TETRAGRAM FOR KINSHIP
-1D328;AL # TETRAGRAM FOR GATHERING
-1D329;AL # TETRAGRAM FOR STRENGTH
-1D32A;AL # TETRAGRAM FOR PURITY
-1D32B;AL # TETRAGRAM FOR FULLNESS
-1D32C;AL # TETRAGRAM FOR RESIDENCE
-1D32D;AL # TETRAGRAM FOR LAW OR MODEL
-1D32E;AL # TETRAGRAM FOR RESPONSE
-1D32F;AL # TETRAGRAM FOR GOING TO MEET
-1D330;AL # TETRAGRAM FOR ENCOUNTERS
-1D331;AL # TETRAGRAM FOR STOVE
-1D332;AL # TETRAGRAM FOR GREATNESS
-1D333;AL # TETRAGRAM FOR ENLARGEMENT
-1D334;AL # TETRAGRAM FOR PATTERN
-1D335;AL # TETRAGRAM FOR RITUAL
-1D336;AL # TETRAGRAM FOR FLIGHT
-1D337;AL # TETRAGRAM FOR VASTNESS OR WASTING
-1D338;AL # TETRAGRAM FOR CONSTANCY
-1D339;AL # TETRAGRAM FOR MEASURE
-1D33A;AL # TETRAGRAM FOR ETERNITY
-1D33B;AL # TETRAGRAM FOR UNITY
-1D33C;AL # TETRAGRAM FOR DIMINISHMENT
-1D33D;AL # TETRAGRAM FOR CLOSED MOUTH
-1D33E;AL # TETRAGRAM FOR GUARDEDNESS
-1D33F;AL # TETRAGRAM FOR GATHERING IN
-1D340;AL # TETRAGRAM FOR MASSING
-1D341;AL # TETRAGRAM FOR ACCUMULATION
-1D342;AL # TETRAGRAM FOR EMBELLISHMENT
-1D343;AL # TETRAGRAM FOR DOUBT
-1D344;AL # TETRAGRAM FOR WATCH
-1D345;AL # TETRAGRAM FOR SINKING
-1D346;AL # TETRAGRAM FOR INNER
-1D347;AL # TETRAGRAM FOR DEPARTURE
-1D348;AL # TETRAGRAM FOR DARKENING
-1D349;AL # TETRAGRAM FOR DIMMING
-1D34A;AL # TETRAGRAM FOR EXHAUSTION
-1D34B;AL # TETRAGRAM FOR SEVERANCE
-1D34C;AL # TETRAGRAM FOR STOPPAGE
-1D34D;AL # TETRAGRAM FOR HARDNESS
-1D34E;AL # TETRAGRAM FOR COMPLETION
-1D34F;AL # TETRAGRAM FOR CLOSURE
-1D350;AL # TETRAGRAM FOR FAILURE
-1D351;AL # TETRAGRAM FOR AGGRAVATION
-1D352;AL # TETRAGRAM FOR COMPLIANCE
-1D353;AL # TETRAGRAM FOR ON THE VERGE
-1D354;AL # TETRAGRAM FOR DIFFICULTIES
-1D355;AL # TETRAGRAM FOR LABOURING
-1D356;AL # TETRAGRAM FOR FOSTERING
-1D400;AL # MATHEMATICAL BOLD CAPITAL A
-1D401;AL # MATHEMATICAL BOLD CAPITAL B
-1D402;AL # MATHEMATICAL BOLD CAPITAL C
-1D403;AL # MATHEMATICAL BOLD CAPITAL D
-1D404;AL # MATHEMATICAL BOLD CAPITAL E
-1D405;AL # MATHEMATICAL BOLD CAPITAL F
-1D406;AL # MATHEMATICAL BOLD CAPITAL G
-1D407;AL # MATHEMATICAL BOLD CAPITAL H
-1D408;AL # MATHEMATICAL BOLD CAPITAL I
-1D409;AL # MATHEMATICAL BOLD CAPITAL J
-1D40A;AL # MATHEMATICAL BOLD CAPITAL K
-1D40B;AL # MATHEMATICAL BOLD CAPITAL L
-1D40C;AL # MATHEMATICAL BOLD CAPITAL M
-1D40D;AL # MATHEMATICAL BOLD CAPITAL N
-1D40E;AL # MATHEMATICAL BOLD CAPITAL O
-1D40F;AL # MATHEMATICAL BOLD CAPITAL P
-1D410;AL # MATHEMATICAL BOLD CAPITAL Q
-1D411;AL # MATHEMATICAL BOLD CAPITAL R
-1D412;AL # MATHEMATICAL BOLD CAPITAL S
-1D413;AL # MATHEMATICAL BOLD CAPITAL T
-1D414;AL # MATHEMATICAL BOLD CAPITAL U
-1D415;AL # MATHEMATICAL BOLD CAPITAL V
-1D416;AL # MATHEMATICAL BOLD CAPITAL W
-1D417;AL # MATHEMATICAL BOLD CAPITAL X
-1D418;AL # MATHEMATICAL BOLD CAPITAL Y
-1D419;AL # MATHEMATICAL BOLD CAPITAL Z
-1D41A;AL # MATHEMATICAL BOLD SMALL A
-1D41B;AL # MATHEMATICAL BOLD SMALL B
-1D41C;AL # MATHEMATICAL BOLD SMALL C
-1D41D;AL # MATHEMATICAL BOLD SMALL D
-1D41E;AL # MATHEMATICAL BOLD SMALL E
-1D41F;AL # MATHEMATICAL BOLD SMALL F
-1D420;AL # MATHEMATICAL BOLD SMALL G
-1D421;AL # MATHEMATICAL BOLD SMALL H
-1D422;AL # MATHEMATICAL BOLD SMALL I
-1D423;AL # MATHEMATICAL BOLD SMALL J
-1D424;AL # MATHEMATICAL BOLD SMALL K
-1D425;AL # MATHEMATICAL BOLD SMALL L
-1D426;AL # MATHEMATICAL BOLD SMALL M
-1D427;AL # MATHEMATICAL BOLD SMALL N
-1D428;AL # MATHEMATICAL BOLD SMALL O
-1D429;AL # MATHEMATICAL BOLD SMALL P
-1D42A;AL # MATHEMATICAL BOLD SMALL Q
-1D42B;AL # MATHEMATICAL BOLD SMALL R
-1D42C;AL # MATHEMATICAL BOLD SMALL S
-1D42D;AL # MATHEMATICAL BOLD SMALL T
-1D42E;AL # MATHEMATICAL BOLD SMALL U
-1D42F;AL # MATHEMATICAL BOLD SMALL V
-1D430;AL # MATHEMATICAL BOLD SMALL W
-1D431;AL # MATHEMATICAL BOLD SMALL X
-1D432;AL # MATHEMATICAL BOLD SMALL Y
-1D433;AL # MATHEMATICAL BOLD SMALL Z
-1D434;AL # MATHEMATICAL ITALIC CAPITAL A
-1D435;AL # MATHEMATICAL ITALIC CAPITAL B
-1D436;AL # MATHEMATICAL ITALIC CAPITAL C
-1D437;AL # MATHEMATICAL ITALIC CAPITAL D
-1D438;AL # MATHEMATICAL ITALIC CAPITAL E
-1D439;AL # MATHEMATICAL ITALIC CAPITAL F
-1D43A;AL # MATHEMATICAL ITALIC CAPITAL G
-1D43B;AL # MATHEMATICAL ITALIC CAPITAL H
-1D43C;AL # MATHEMATICAL ITALIC CAPITAL I
-1D43D;AL # MATHEMATICAL ITALIC CAPITAL J
-1D43E;AL # MATHEMATICAL ITALIC CAPITAL K
-1D43F;AL # MATHEMATICAL ITALIC CAPITAL L
-1D440;AL # MATHEMATICAL ITALIC CAPITAL M
-1D441;AL # MATHEMATICAL ITALIC CAPITAL N
-1D442;AL # MATHEMATICAL ITALIC CAPITAL O
-1D443;AL # MATHEMATICAL ITALIC CAPITAL P
-1D444;AL # MATHEMATICAL ITALIC CAPITAL Q
-1D445;AL # MATHEMATICAL ITALIC CAPITAL R
-1D446;AL # MATHEMATICAL ITALIC CAPITAL S
-1D447;AL # MATHEMATICAL ITALIC CAPITAL T
-1D448;AL # MATHEMATICAL ITALIC CAPITAL U
-1D449;AL # MATHEMATICAL ITALIC CAPITAL V
-1D44A;AL # MATHEMATICAL ITALIC CAPITAL W
-1D44B;AL # MATHEMATICAL ITALIC CAPITAL X
-1D44C;AL # MATHEMATICAL ITALIC CAPITAL Y
-1D44D;AL # MATHEMATICAL ITALIC CAPITAL Z
-1D44E;AL # MATHEMATICAL ITALIC SMALL A
-1D44F;AL # MATHEMATICAL ITALIC SMALL B
-1D450;AL # MATHEMATICAL ITALIC SMALL C
-1D451;AL # MATHEMATICAL ITALIC SMALL D
-1D452;AL # MATHEMATICAL ITALIC SMALL E
-1D453;AL # MATHEMATICAL ITALIC SMALL F
-1D454;AL # MATHEMATICAL ITALIC SMALL G
-1D456;AL # MATHEMATICAL ITALIC SMALL I
-1D457;AL # MATHEMATICAL ITALIC SMALL J
-1D458;AL # MATHEMATICAL ITALIC SMALL K
-1D459;AL # MATHEMATICAL ITALIC SMALL L
-1D45A;AL # MATHEMATICAL ITALIC SMALL M
-1D45B;AL # MATHEMATICAL ITALIC SMALL N
-1D45C;AL # MATHEMATICAL ITALIC SMALL O
-1D45D;AL # MATHEMATICAL ITALIC SMALL P
-1D45E;AL # MATHEMATICAL ITALIC SMALL Q
-1D45F;AL # MATHEMATICAL ITALIC SMALL R
-1D460;AL # MATHEMATICAL ITALIC SMALL S
-1D461;AL # MATHEMATICAL ITALIC SMALL T
-1D462;AL # MATHEMATICAL ITALIC SMALL U
-1D463;AL # MATHEMATICAL ITALIC SMALL V
-1D464;AL # MATHEMATICAL ITALIC SMALL W
-1D465;AL # MATHEMATICAL ITALIC SMALL X
-1D466;AL # MATHEMATICAL ITALIC SMALL Y
-1D467;AL # MATHEMATICAL ITALIC SMALL Z
-1D468;AL # MATHEMATICAL BOLD ITALIC CAPITAL A
-1D469;AL # MATHEMATICAL BOLD ITALIC CAPITAL B
-1D46A;AL # MATHEMATICAL BOLD ITALIC CAPITAL C
-1D46B;AL # MATHEMATICAL BOLD ITALIC CAPITAL D
-1D46C;AL # MATHEMATICAL BOLD ITALIC CAPITAL E
-1D46D;AL # MATHEMATICAL BOLD ITALIC CAPITAL F
-1D46E;AL # MATHEMATICAL BOLD ITALIC CAPITAL G
-1D46F;AL # MATHEMATICAL BOLD ITALIC CAPITAL H
-1D470;AL # MATHEMATICAL BOLD ITALIC CAPITAL I
-1D471;AL # MATHEMATICAL BOLD ITALIC CAPITAL J
-1D472;AL # MATHEMATICAL BOLD ITALIC CAPITAL K
-1D473;AL # MATHEMATICAL BOLD ITALIC CAPITAL L
-1D474;AL # MATHEMATICAL BOLD ITALIC CAPITAL M
-1D475;AL # MATHEMATICAL BOLD ITALIC CAPITAL N
-1D476;AL # MATHEMATICAL BOLD ITALIC CAPITAL O
-1D477;AL # MATHEMATICAL BOLD ITALIC CAPITAL P
-1D478;AL # MATHEMATICAL BOLD ITALIC CAPITAL Q
-1D479;AL # MATHEMATICAL BOLD ITALIC CAPITAL R
-1D47A;AL # MATHEMATICAL BOLD ITALIC CAPITAL S
-1D47B;AL # MATHEMATICAL BOLD ITALIC CAPITAL T
-1D47C;AL # MATHEMATICAL BOLD ITALIC CAPITAL U
-1D47D;AL # MATHEMATICAL BOLD ITALIC CAPITAL V
-1D47E;AL # MATHEMATICAL BOLD ITALIC CAPITAL W
-1D47F;AL # MATHEMATICAL BOLD ITALIC CAPITAL X
-1D480;AL # MATHEMATICAL BOLD ITALIC CAPITAL Y
-1D481;AL # MATHEMATICAL BOLD ITALIC CAPITAL Z
-1D482;AL # MATHEMATICAL BOLD ITALIC SMALL A
-1D483;AL # MATHEMATICAL BOLD ITALIC SMALL B
-1D484;AL # MATHEMATICAL BOLD ITALIC SMALL C
-1D485;AL # MATHEMATICAL BOLD ITALIC SMALL D
-1D486;AL # MATHEMATICAL BOLD ITALIC SMALL E
-1D487;AL # MATHEMATICAL BOLD ITALIC SMALL F
-1D488;AL # MATHEMATICAL BOLD ITALIC SMALL G
-1D489;AL # MATHEMATICAL BOLD ITALIC SMALL H
-1D48A;AL # MATHEMATICAL BOLD ITALIC SMALL I
-1D48B;AL # MATHEMATICAL BOLD ITALIC SMALL J
-1D48C;AL # MATHEMATICAL BOLD ITALIC SMALL K
-1D48D;AL # MATHEMATICAL BOLD ITALIC SMALL L
-1D48E;AL # MATHEMATICAL BOLD ITALIC SMALL M
-1D48F;AL # MATHEMATICAL BOLD ITALIC SMALL N
-1D490;AL # MATHEMATICAL BOLD ITALIC SMALL O
-1D491;AL # MATHEMATICAL BOLD ITALIC SMALL P
-1D492;AL # MATHEMATICAL BOLD ITALIC SMALL Q
-1D493;AL # MATHEMATICAL BOLD ITALIC SMALL R
-1D494;AL # MATHEMATICAL BOLD ITALIC SMALL S
-1D495;AL # MATHEMATICAL BOLD ITALIC SMALL T
-1D496;AL # MATHEMATICAL BOLD ITALIC SMALL U
-1D497;AL # MATHEMATICAL BOLD ITALIC SMALL V
-1D498;AL # MATHEMATICAL BOLD ITALIC SMALL W
-1D499;AL # MATHEMATICAL BOLD ITALIC SMALL X
-1D49A;AL # MATHEMATICAL BOLD ITALIC SMALL Y
-1D49B;AL # MATHEMATICAL BOLD ITALIC SMALL Z
-1D49C;AL # MATHEMATICAL SCRIPT CAPITAL A
-1D49E;AL # MATHEMATICAL SCRIPT CAPITAL C
-1D49F;AL # MATHEMATICAL SCRIPT CAPITAL D
-1D4A2;AL # MATHEMATICAL SCRIPT CAPITAL G
-1D4A5;AL # MATHEMATICAL SCRIPT CAPITAL J
-1D4A6;AL # MATHEMATICAL SCRIPT CAPITAL K
-1D4A9;AL # MATHEMATICAL SCRIPT CAPITAL N
-1D4AA;AL # MATHEMATICAL SCRIPT CAPITAL O
-1D4AB;AL # MATHEMATICAL SCRIPT CAPITAL P
-1D4AC;AL # MATHEMATICAL SCRIPT CAPITAL Q
-1D4AE;AL # MATHEMATICAL SCRIPT CAPITAL S
-1D4AF;AL # MATHEMATICAL SCRIPT CAPITAL T
-1D4B0;AL # MATHEMATICAL SCRIPT CAPITAL U
-1D4B1;AL # MATHEMATICAL SCRIPT CAPITAL V
-1D4B2;AL # MATHEMATICAL SCRIPT CAPITAL W
-1D4B3;AL # MATHEMATICAL SCRIPT CAPITAL X
-1D4B4;AL # MATHEMATICAL SCRIPT CAPITAL Y
-1D4B5;AL # MATHEMATICAL SCRIPT CAPITAL Z
-1D4B6;AL # MATHEMATICAL SCRIPT SMALL A
-1D4B7;AL # MATHEMATICAL SCRIPT SMALL B
-1D4B8;AL # MATHEMATICAL SCRIPT SMALL C
-1D4B9;AL # MATHEMATICAL SCRIPT SMALL D
-1D4BB;AL # MATHEMATICAL SCRIPT SMALL F
-1D4BD;AL # MATHEMATICAL SCRIPT SMALL H
-1D4BE;AL # MATHEMATICAL SCRIPT SMALL I
-1D4BF;AL # MATHEMATICAL SCRIPT SMALL J
-1D4C0;AL # MATHEMATICAL SCRIPT SMALL K
-1D4C1;AL # MATHEMATICAL SCRIPT SMALL L
-1D4C2;AL # MATHEMATICAL SCRIPT SMALL M
-1D4C3;AL # MATHEMATICAL SCRIPT SMALL N
-1D4C5;AL # MATHEMATICAL SCRIPT SMALL P
-1D4C6;AL # MATHEMATICAL SCRIPT SMALL Q
-1D4C7;AL # MATHEMATICAL SCRIPT SMALL R
-1D4C8;AL # MATHEMATICAL SCRIPT SMALL S
-1D4C9;AL # MATHEMATICAL SCRIPT SMALL T
-1D4CA;AL # MATHEMATICAL SCRIPT SMALL U
-1D4CB;AL # MATHEMATICAL SCRIPT SMALL V
-1D4CC;AL # MATHEMATICAL SCRIPT SMALL W
-1D4CD;AL # MATHEMATICAL SCRIPT SMALL X
-1D4CE;AL # MATHEMATICAL SCRIPT SMALL Y
-1D4CF;AL # MATHEMATICAL SCRIPT SMALL Z
-1D4D0;AL # MATHEMATICAL BOLD SCRIPT CAPITAL A
-1D4D1;AL # MATHEMATICAL BOLD SCRIPT CAPITAL B
-1D4D2;AL # MATHEMATICAL BOLD SCRIPT CAPITAL C
-1D4D3;AL # MATHEMATICAL BOLD SCRIPT CAPITAL D
-1D4D4;AL # MATHEMATICAL BOLD SCRIPT CAPITAL E
-1D4D5;AL # MATHEMATICAL BOLD SCRIPT CAPITAL F
-1D4D6;AL # MATHEMATICAL BOLD SCRIPT CAPITAL G
-1D4D7;AL # MATHEMATICAL BOLD SCRIPT CAPITAL H
-1D4D8;AL # MATHEMATICAL BOLD SCRIPT CAPITAL I
-1D4D9;AL # MATHEMATICAL BOLD SCRIPT CAPITAL J
-1D4DA;AL # MATHEMATICAL BOLD SCRIPT CAPITAL K
-1D4DB;AL # MATHEMATICAL BOLD SCRIPT CAPITAL L
-1D4DC;AL # MATHEMATICAL BOLD SCRIPT CAPITAL M
-1D4DD;AL # MATHEMATICAL BOLD SCRIPT CAPITAL N
-1D4DE;AL # MATHEMATICAL BOLD SCRIPT CAPITAL O
-1D4DF;AL # MATHEMATICAL BOLD SCRIPT CAPITAL P
-1D4E0;AL # MATHEMATICAL BOLD SCRIPT CAPITAL Q
-1D4E1;AL # MATHEMATICAL BOLD SCRIPT CAPITAL R
-1D4E2;AL # MATHEMATICAL BOLD SCRIPT CAPITAL S
-1D4E3;AL # MATHEMATICAL BOLD SCRIPT CAPITAL T
-1D4E4;AL # MATHEMATICAL BOLD SCRIPT CAPITAL U
-1D4E5;AL # MATHEMATICAL BOLD SCRIPT CAPITAL V
-1D4E6;AL # MATHEMATICAL BOLD SCRIPT CAPITAL W
-1D4E7;AL # MATHEMATICAL BOLD SCRIPT CAPITAL X
-1D4E8;AL # MATHEMATICAL BOLD SCRIPT CAPITAL Y
-1D4E9;AL # MATHEMATICAL BOLD SCRIPT CAPITAL Z
-1D4EA;AL # MATHEMATICAL BOLD SCRIPT SMALL A
-1D4EB;AL # MATHEMATICAL BOLD SCRIPT SMALL B
-1D4EC;AL # MATHEMATICAL BOLD SCRIPT SMALL C
-1D4ED;AL # MATHEMATICAL BOLD SCRIPT SMALL D
-1D4EE;AL # MATHEMATICAL BOLD SCRIPT SMALL E
-1D4EF;AL # MATHEMATICAL BOLD SCRIPT SMALL F
-1D4F0;AL # MATHEMATICAL BOLD SCRIPT SMALL G
-1D4F1;AL # MATHEMATICAL BOLD SCRIPT SMALL H
-1D4F2;AL # MATHEMATICAL BOLD SCRIPT SMALL I
-1D4F3;AL # MATHEMATICAL BOLD SCRIPT SMALL J
-1D4F4;AL # MATHEMATICAL BOLD SCRIPT SMALL K
-1D4F5;AL # MATHEMATICAL BOLD SCRIPT SMALL L
-1D4F6;AL # MATHEMATICAL BOLD SCRIPT SMALL M
-1D4F7;AL # MATHEMATICAL BOLD SCRIPT SMALL N
-1D4F8;AL # MATHEMATICAL BOLD SCRIPT SMALL O
-1D4F9;AL # MATHEMATICAL BOLD SCRIPT SMALL P
-1D4FA;AL # MATHEMATICAL BOLD SCRIPT SMALL Q
-1D4FB;AL # MATHEMATICAL BOLD SCRIPT SMALL R
-1D4FC;AL # MATHEMATICAL BOLD SCRIPT SMALL S
-1D4FD;AL # MATHEMATICAL BOLD SCRIPT SMALL T
-1D4FE;AL # MATHEMATICAL BOLD SCRIPT SMALL U
-1D4FF;AL # MATHEMATICAL BOLD SCRIPT SMALL V
-1D500;AL # MATHEMATICAL BOLD SCRIPT SMALL W
-1D501;AL # MATHEMATICAL BOLD SCRIPT SMALL X
-1D502;AL # MATHEMATICAL BOLD SCRIPT SMALL Y
-1D503;AL # MATHEMATICAL BOLD SCRIPT SMALL Z
-1D504;AL # MATHEMATICAL FRAKTUR CAPITAL A
-1D505;AL # MATHEMATICAL FRAKTUR CAPITAL B
-1D507;AL # MATHEMATICAL FRAKTUR CAPITAL D
-1D508;AL # MATHEMATICAL FRAKTUR CAPITAL E
-1D509;AL # MATHEMATICAL FRAKTUR CAPITAL F
-1D50A;AL # MATHEMATICAL FRAKTUR CAPITAL G
-1D50D;AL # MATHEMATICAL FRAKTUR CAPITAL J
-1D50E;AL # MATHEMATICAL FRAKTUR CAPITAL K
-1D50F;AL # MATHEMATICAL FRAKTUR CAPITAL L
-1D510;AL # MATHEMATICAL FRAKTUR CAPITAL M
-1D511;AL # MATHEMATICAL FRAKTUR CAPITAL N
-1D512;AL # MATHEMATICAL FRAKTUR CAPITAL O
-1D513;AL # MATHEMATICAL FRAKTUR CAPITAL P
-1D514;AL # MATHEMATICAL FRAKTUR CAPITAL Q
-1D516;AL # MATHEMATICAL FRAKTUR CAPITAL S
-1D517;AL # MATHEMATICAL FRAKTUR CAPITAL T
-1D518;AL # MATHEMATICAL FRAKTUR CAPITAL U
-1D519;AL # MATHEMATICAL FRAKTUR CAPITAL V
-1D51A;AL # MATHEMATICAL FRAKTUR CAPITAL W
-1D51B;AL # MATHEMATICAL FRAKTUR CAPITAL X
-1D51C;AL # MATHEMATICAL FRAKTUR CAPITAL Y
-1D51E;AL # MATHEMATICAL FRAKTUR SMALL A
-1D51F;AL # MATHEMATICAL FRAKTUR SMALL B
-1D520;AL # MATHEMATICAL FRAKTUR SMALL C
-1D521;AL # MATHEMATICAL FRAKTUR SMALL D
-1D522;AL # MATHEMATICAL FRAKTUR SMALL E
-1D523;AL # MATHEMATICAL FRAKTUR SMALL F
-1D524;AL # MATHEMATICAL FRAKTUR SMALL G
-1D525;AL # MATHEMATICAL FRAKTUR SMALL H
-1D526;AL # MATHEMATICAL FRAKTUR SMALL I
-1D527;AL # MATHEMATICAL FRAKTUR SMALL J
-1D528;AL # MATHEMATICAL FRAKTUR SMALL K
-1D529;AL # MATHEMATICAL FRAKTUR SMALL L
-1D52A;AL # MATHEMATICAL FRAKTUR SMALL M
-1D52B;AL # MATHEMATICAL FRAKTUR SMALL N
-1D52C;AL # MATHEMATICAL FRAKTUR SMALL O
-1D52D;AL # MATHEMATICAL FRAKTUR SMALL P
-1D52E;AL # MATHEMATICAL FRAKTUR SMALL Q
-1D52F;AL # MATHEMATICAL FRAKTUR SMALL R
-1D530;AL # MATHEMATICAL FRAKTUR SMALL S
-1D531;AL # MATHEMATICAL FRAKTUR SMALL T
-1D532;AL # MATHEMATICAL FRAKTUR SMALL U
-1D533;AL # MATHEMATICAL FRAKTUR SMALL V
-1D534;AL # MATHEMATICAL FRAKTUR SMALL W
-1D535;AL # MATHEMATICAL FRAKTUR SMALL X
-1D536;AL # MATHEMATICAL FRAKTUR SMALL Y
-1D537;AL # MATHEMATICAL FRAKTUR SMALL Z
-1D538;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL A
-1D539;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL B
-1D53B;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL D
-1D53C;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL E
-1D53D;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL F
-1D53E;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL G
-1D540;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL I
-1D541;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL J
-1D542;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL K
-1D543;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL L
-1D544;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL M
-1D546;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL O
-1D54A;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL S
-1D54B;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL T
-1D54C;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL U
-1D54D;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL V
-1D54E;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL W
-1D54F;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL X
-1D550;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
-1D552;AL # MATHEMATICAL DOUBLE-STRUCK SMALL A
-1D553;AL # MATHEMATICAL DOUBLE-STRUCK SMALL B
-1D554;AL # MATHEMATICAL DOUBLE-STRUCK SMALL C
-1D555;AL # MATHEMATICAL DOUBLE-STRUCK SMALL D
-1D556;AL # MATHEMATICAL DOUBLE-STRUCK SMALL E
-1D557;AL # MATHEMATICAL DOUBLE-STRUCK SMALL F
-1D558;AL # MATHEMATICAL DOUBLE-STRUCK SMALL G
-1D559;AL # MATHEMATICAL DOUBLE-STRUCK SMALL H
-1D55A;AL # MATHEMATICAL DOUBLE-STRUCK SMALL I
-1D55B;AL # MATHEMATICAL DOUBLE-STRUCK SMALL J
-1D55C;AL # MATHEMATICAL DOUBLE-STRUCK SMALL K
-1D55D;AL # MATHEMATICAL DOUBLE-STRUCK SMALL L
-1D55E;AL # MATHEMATICAL DOUBLE-STRUCK SMALL M
-1D55F;AL # MATHEMATICAL DOUBLE-STRUCK SMALL N
-1D560;AL # MATHEMATICAL DOUBLE-STRUCK SMALL O
-1D561;AL # MATHEMATICAL DOUBLE-STRUCK SMALL P
-1D562;AL # MATHEMATICAL DOUBLE-STRUCK SMALL Q
-1D563;AL # MATHEMATICAL DOUBLE-STRUCK SMALL R
-1D564;AL # MATHEMATICAL DOUBLE-STRUCK SMALL S
-1D565;AL # MATHEMATICAL DOUBLE-STRUCK SMALL T
-1D566;AL # MATHEMATICAL DOUBLE-STRUCK SMALL U
-1D567;AL # MATHEMATICAL DOUBLE-STRUCK SMALL V
-1D568;AL # MATHEMATICAL DOUBLE-STRUCK SMALL W
-1D569;AL # MATHEMATICAL DOUBLE-STRUCK SMALL X
-1D56A;AL # MATHEMATICAL DOUBLE-STRUCK SMALL Y
-1D56B;AL # MATHEMATICAL DOUBLE-STRUCK SMALL Z
-1D56C;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL A
-1D56D;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL B
-1D56E;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL C
-1D56F;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL D
-1D570;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL E
-1D571;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL F
-1D572;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL G
-1D573;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL H
-1D574;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL I
-1D575;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL J
-1D576;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL K
-1D577;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL L
-1D578;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL M
-1D579;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL N
-1D57A;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL O
-1D57B;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL P
-1D57C;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL Q
-1D57D;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL R
-1D57E;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL S
-1D57F;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL T
-1D580;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL U
-1D581;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL V
-1D582;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL W
-1D583;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL X
-1D584;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL Y
-1D585;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL Z
-1D586;AL # MATHEMATICAL BOLD FRAKTUR SMALL A
-1D587;AL # MATHEMATICAL BOLD FRAKTUR SMALL B
-1D588;AL # MATHEMATICAL BOLD FRAKTUR SMALL C
-1D589;AL # MATHEMATICAL BOLD FRAKTUR SMALL D
-1D58A;AL # MATHEMATICAL BOLD FRAKTUR SMALL E
-1D58B;AL # MATHEMATICAL BOLD FRAKTUR SMALL F
-1D58C;AL # MATHEMATICAL BOLD FRAKTUR SMALL G
-1D58D;AL # MATHEMATICAL BOLD FRAKTUR SMALL H
-1D58E;AL # MATHEMATICAL BOLD FRAKTUR SMALL I
-1D58F;AL # MATHEMATICAL BOLD FRAKTUR SMALL J
-1D590;AL # MATHEMATICAL BOLD FRAKTUR SMALL K
-1D591;AL # MATHEMATICAL BOLD FRAKTUR SMALL L
-1D592;AL # MATHEMATICAL BOLD FRAKTUR SMALL M
-1D593;AL # MATHEMATICAL BOLD FRAKTUR SMALL N
-1D594;AL # MATHEMATICAL BOLD FRAKTUR SMALL O
-1D595;AL # MATHEMATICAL BOLD FRAKTUR SMALL P
-1D596;AL # MATHEMATICAL BOLD FRAKTUR SMALL Q
-1D597;AL # MATHEMATICAL BOLD FRAKTUR SMALL R
-1D598;AL # MATHEMATICAL BOLD FRAKTUR SMALL S
-1D599;AL # MATHEMATICAL BOLD FRAKTUR SMALL T
-1D59A;AL # MATHEMATICAL BOLD FRAKTUR SMALL U
-1D59B;AL # MATHEMATICAL BOLD FRAKTUR SMALL V
-1D59C;AL # MATHEMATICAL BOLD FRAKTUR SMALL W
-1D59D;AL # MATHEMATICAL BOLD FRAKTUR SMALL X
-1D59E;AL # MATHEMATICAL BOLD FRAKTUR SMALL Y
-1D59F;AL # MATHEMATICAL BOLD FRAKTUR SMALL Z
-1D5A0;AL # MATHEMATICAL SANS-SERIF CAPITAL A
-1D5A1;AL # MATHEMATICAL SANS-SERIF CAPITAL B
-1D5A2;AL # MATHEMATICAL SANS-SERIF CAPITAL C
-1D5A3;AL # MATHEMATICAL SANS-SERIF CAPITAL D
-1D5A4;AL # MATHEMATICAL SANS-SERIF CAPITAL E
-1D5A5;AL # MATHEMATICAL SANS-SERIF CAPITAL F
-1D5A6;AL # MATHEMATICAL SANS-SERIF CAPITAL G
-1D5A7;AL # MATHEMATICAL SANS-SERIF CAPITAL H
-1D5A8;AL # MATHEMATICAL SANS-SERIF CAPITAL I
-1D5A9;AL # MATHEMATICAL SANS-SERIF CAPITAL J
-1D5AA;AL # MATHEMATICAL SANS-SERIF CAPITAL K
-1D5AB;AL # MATHEMATICAL SANS-SERIF CAPITAL L
-1D5AC;AL # MATHEMATICAL SANS-SERIF CAPITAL M
-1D5AD;AL # MATHEMATICAL SANS-SERIF CAPITAL N
-1D5AE;AL # MATHEMATICAL SANS-SERIF CAPITAL O
-1D5AF;AL # MATHEMATICAL SANS-SERIF CAPITAL P
-1D5B0;AL # MATHEMATICAL SANS-SERIF CAPITAL Q
-1D5B1;AL # MATHEMATICAL SANS-SERIF CAPITAL R
-1D5B2;AL # MATHEMATICAL SANS-SERIF CAPITAL S
-1D5B3;AL # MATHEMATICAL SANS-SERIF CAPITAL T
-1D5B4;AL # MATHEMATICAL SANS-SERIF CAPITAL U
-1D5B5;AL # MATHEMATICAL SANS-SERIF CAPITAL V
-1D5B6;AL # MATHEMATICAL SANS-SERIF CAPITAL W
-1D5B7;AL # MATHEMATICAL SANS-SERIF CAPITAL X
-1D5B8;AL # MATHEMATICAL SANS-SERIF CAPITAL Y
-1D5B9;AL # MATHEMATICAL SANS-SERIF CAPITAL Z
-1D5BA;AL # MATHEMATICAL SANS-SERIF SMALL A
-1D5BB;AL # MATHEMATICAL SANS-SERIF SMALL B
-1D5BC;AL # MATHEMATICAL SANS-SERIF SMALL C
-1D5BD;AL # MATHEMATICAL SANS-SERIF SMALL D
-1D5BE;AL # MATHEMATICAL SANS-SERIF SMALL E
-1D5BF;AL # MATHEMATICAL SANS-SERIF SMALL F
-1D5C0;AL # MATHEMATICAL SANS-SERIF SMALL G
-1D5C1;AL # MATHEMATICAL SANS-SERIF SMALL H
-1D5C2;AL # MATHEMATICAL SANS-SERIF SMALL I
-1D5C3;AL # MATHEMATICAL SANS-SERIF SMALL J
-1D5C4;AL # MATHEMATICAL SANS-SERIF SMALL K
-1D5C5;AL # MATHEMATICAL SANS-SERIF SMALL L
-1D5C6;AL # MATHEMATICAL SANS-SERIF SMALL M
-1D5C7;AL # MATHEMATICAL SANS-SERIF SMALL N
-1D5C8;AL # MATHEMATICAL SANS-SERIF SMALL O
-1D5C9;AL # MATHEMATICAL SANS-SERIF SMALL P
-1D5CA;AL # MATHEMATICAL SANS-SERIF SMALL Q
-1D5CB;AL # MATHEMATICAL SANS-SERIF SMALL R
-1D5CC;AL # MATHEMATICAL SANS-SERIF SMALL S
-1D5CD;AL # MATHEMATICAL SANS-SERIF SMALL T
-1D5CE;AL # MATHEMATICAL SANS-SERIF SMALL U
-1D5CF;AL # MATHEMATICAL SANS-SERIF SMALL V
-1D5D0;AL # MATHEMATICAL SANS-SERIF SMALL W
-1D5D1;AL # MATHEMATICAL SANS-SERIF SMALL X
-1D5D2;AL # MATHEMATICAL SANS-SERIF SMALL Y
-1D5D3;AL # MATHEMATICAL SANS-SERIF SMALL Z
-1D5D4;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL A
-1D5D5;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL B
-1D5D6;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL C
-1D5D7;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL D
-1D5D8;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL E
-1D5D9;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL F
-1D5DA;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL G
-1D5DB;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL H
-1D5DC;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL I
-1D5DD;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL J
-1D5DE;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL K
-1D5DF;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL L
-1D5E0;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL M
-1D5E1;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL N
-1D5E2;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL O
-1D5E3;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL P
-1D5E4;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL Q
-1D5E5;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL R
-1D5E6;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL S
-1D5E7;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL T
-1D5E8;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL U
-1D5E9;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL V
-1D5EA;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL W
-1D5EB;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL X
-1D5EC;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL Y
-1D5ED;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
-1D5EE;AL # MATHEMATICAL SANS-SERIF BOLD SMALL A
-1D5EF;AL # MATHEMATICAL SANS-SERIF BOLD SMALL B
-1D5F0;AL # MATHEMATICAL SANS-SERIF BOLD SMALL C
-1D5F1;AL # MATHEMATICAL SANS-SERIF BOLD SMALL D
-1D5F2;AL # MATHEMATICAL SANS-SERIF BOLD SMALL E
-1D5F3;AL # MATHEMATICAL SANS-SERIF BOLD SMALL F
-1D5F4;AL # MATHEMATICAL SANS-SERIF BOLD SMALL G
-1D5F5;AL # MATHEMATICAL SANS-SERIF BOLD SMALL H
-1D5F6;AL # MATHEMATICAL SANS-SERIF BOLD SMALL I
-1D5F7;AL # MATHEMATICAL SANS-SERIF BOLD SMALL J
-1D5F8;AL # MATHEMATICAL SANS-SERIF BOLD SMALL K
-1D5F9;AL # MATHEMATICAL SANS-SERIF BOLD SMALL L
-1D5FA;AL # MATHEMATICAL SANS-SERIF BOLD SMALL M
-1D5FB;AL # MATHEMATICAL SANS-SERIF BOLD SMALL N
-1D5FC;AL # MATHEMATICAL SANS-SERIF BOLD SMALL O
-1D5FD;AL # MATHEMATICAL SANS-SERIF BOLD SMALL P
-1D5FE;AL # MATHEMATICAL SANS-SERIF BOLD SMALL Q
-1D5FF;AL # MATHEMATICAL SANS-SERIF BOLD SMALL R
-1D600;AL # MATHEMATICAL SANS-SERIF BOLD SMALL S
-1D601;AL # MATHEMATICAL SANS-SERIF BOLD SMALL T
-1D602;AL # MATHEMATICAL SANS-SERIF BOLD SMALL U
-1D603;AL # MATHEMATICAL SANS-SERIF BOLD SMALL V
-1D604;AL # MATHEMATICAL SANS-SERIF BOLD SMALL W
-1D605;AL # MATHEMATICAL SANS-SERIF BOLD SMALL X
-1D606;AL # MATHEMATICAL SANS-SERIF BOLD SMALL Y
-1D607;AL # MATHEMATICAL SANS-SERIF BOLD SMALL Z
-1D608;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
-1D609;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
-1D60A;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
-1D60B;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL D
-1D60C;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL E
-1D60D;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL F
-1D60E;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL G
-1D60F;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL H
-1D610;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL I
-1D611;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL J
-1D612;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL K
-1D613;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL L
-1D614;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL M
-1D615;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL N
-1D616;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL O
-1D617;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL P
-1D618;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q
-1D619;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL R
-1D61A;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL S
-1D61B;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL T
-1D61C;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL U
-1D61D;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL V
-1D61E;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL W
-1D61F;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL X
-1D620;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y
-1D621;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
-1D622;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL A
-1D623;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL B
-1D624;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL C
-1D625;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL D
-1D626;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL E
-1D627;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL F
-1D628;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL G
-1D629;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL H
-1D62A;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL I
-1D62B;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL J
-1D62C;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL K
-1D62D;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL L
-1D62E;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL M
-1D62F;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL N
-1D630;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL O
-1D631;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL P
-1D632;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL Q
-1D633;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL R
-1D634;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL S
-1D635;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL T
-1D636;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL U
-1D637;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL V
-1D638;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL W
-1D639;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL X
-1D63A;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL Y
-1D63B;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL Z
-1D63C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
-1D63D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
-1D63E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
-1D63F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
-1D640;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
-1D641;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F
-1D642;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
-1D643;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H
-1D644;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
-1D645;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J
-1D646;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
-1D647;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
-1D648;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
-1D649;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
-1D64A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
-1D64B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
-1D64C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q
-1D64D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
-1D64E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
-1D64F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
-1D650;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
-1D651;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V
-1D652;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W
-1D653;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
-1D654;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y
-1D655;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
-1D656;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A
-1D657;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B
-1D658;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C
-1D659;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D
-1D65A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E
-1D65B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F
-1D65C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G
-1D65D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H
-1D65E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I
-1D65F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
-1D660;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K
-1D661;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L
-1D662;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M
-1D663;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N
-1D664;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O
-1D665;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P
-1D666;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q
-1D667;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R
-1D668;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S
-1D669;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T
-1D66A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U
-1D66B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V
-1D66C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W
-1D66D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X
-1D66E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y
-1D66F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
-1D670;AL # MATHEMATICAL MONOSPACE CAPITAL A
-1D671;AL # MATHEMATICAL MONOSPACE CAPITAL B
-1D672;AL # MATHEMATICAL MONOSPACE CAPITAL C
-1D673;AL # MATHEMATICAL MONOSPACE CAPITAL D
-1D674;AL # MATHEMATICAL MONOSPACE CAPITAL E
-1D675;AL # MATHEMATICAL MONOSPACE CAPITAL F
-1D676;AL # MATHEMATICAL MONOSPACE CAPITAL G
-1D677;AL # MATHEMATICAL MONOSPACE CAPITAL H
-1D678;AL # MATHEMATICAL MONOSPACE CAPITAL I
-1D679;AL # MATHEMATICAL MONOSPACE CAPITAL J
-1D67A;AL # MATHEMATICAL MONOSPACE CAPITAL K
-1D67B;AL # MATHEMATICAL MONOSPACE CAPITAL L
-1D67C;AL # MATHEMATICAL MONOSPACE CAPITAL M
-1D67D;AL # MATHEMATICAL MONOSPACE CAPITAL N
-1D67E;AL # MATHEMATICAL MONOSPACE CAPITAL O
-1D67F;AL # MATHEMATICAL MONOSPACE CAPITAL P
-1D680;AL # MATHEMATICAL MONOSPACE CAPITAL Q
-1D681;AL # MATHEMATICAL MONOSPACE CAPITAL R
-1D682;AL # MATHEMATICAL MONOSPACE CAPITAL S
-1D683;AL # MATHEMATICAL MONOSPACE CAPITAL T
-1D684;AL # MATHEMATICAL MONOSPACE CAPITAL U
-1D685;AL # MATHEMATICAL MONOSPACE CAPITAL V
-1D686;AL # MATHEMATICAL MONOSPACE CAPITAL W
-1D687;AL # MATHEMATICAL MONOSPACE CAPITAL X
-1D688;AL # MATHEMATICAL MONOSPACE CAPITAL Y
-1D689;AL # MATHEMATICAL MONOSPACE CAPITAL Z
-1D68A;AL # MATHEMATICAL MONOSPACE SMALL A
-1D68B;AL # MATHEMATICAL MONOSPACE SMALL B
-1D68C;AL # MATHEMATICAL MONOSPACE SMALL C
-1D68D;AL # MATHEMATICAL MONOSPACE SMALL D
-1D68E;AL # MATHEMATICAL MONOSPACE SMALL E
-1D68F;AL # MATHEMATICAL MONOSPACE SMALL F
-1D690;AL # MATHEMATICAL MONOSPACE SMALL G
-1D691;AL # MATHEMATICAL MONOSPACE SMALL H
-1D692;AL # MATHEMATICAL MONOSPACE SMALL I
-1D693;AL # MATHEMATICAL MONOSPACE SMALL J
-1D694;AL # MATHEMATICAL MONOSPACE SMALL K
-1D695;AL # MATHEMATICAL MONOSPACE SMALL L
-1D696;AL # MATHEMATICAL MONOSPACE SMALL M
-1D697;AL # MATHEMATICAL MONOSPACE SMALL N
-1D698;AL # MATHEMATICAL MONOSPACE SMALL O
-1D699;AL # MATHEMATICAL MONOSPACE SMALL P
-1D69A;AL # MATHEMATICAL MONOSPACE SMALL Q
-1D69B;AL # MATHEMATICAL MONOSPACE SMALL R
-1D69C;AL # MATHEMATICAL MONOSPACE SMALL S
-1D69D;AL # MATHEMATICAL MONOSPACE SMALL T
-1D69E;AL # MATHEMATICAL MONOSPACE SMALL U
-1D69F;AL # MATHEMATICAL MONOSPACE SMALL V
-1D6A0;AL # MATHEMATICAL MONOSPACE SMALL W
-1D6A1;AL # MATHEMATICAL MONOSPACE SMALL X
-1D6A2;AL # MATHEMATICAL MONOSPACE SMALL Y
-1D6A3;AL # MATHEMATICAL MONOSPACE SMALL Z
-1D6A4;AL # MATHEMATICAL ITALIC SMALL DOTLESS I
-1D6A5;AL # MATHEMATICAL ITALIC SMALL DOTLESS J
-1D6A8;AL # MATHEMATICAL BOLD CAPITAL ALPHA
-1D6A9;AL # MATHEMATICAL BOLD CAPITAL BETA
-1D6AA;AL # MATHEMATICAL BOLD CAPITAL GAMMA
-1D6AB;AL # MATHEMATICAL BOLD CAPITAL DELTA
-1D6AC;AL # MATHEMATICAL BOLD CAPITAL EPSILON
-1D6AD;AL # MATHEMATICAL BOLD CAPITAL ZETA
-1D6AE;AL # MATHEMATICAL BOLD CAPITAL ETA
-1D6AF;AL # MATHEMATICAL BOLD CAPITAL THETA
-1D6B0;AL # MATHEMATICAL BOLD CAPITAL IOTA
-1D6B1;AL # MATHEMATICAL BOLD CAPITAL KAPPA
-1D6B2;AL # MATHEMATICAL BOLD CAPITAL LAMDA
-1D6B3;AL # MATHEMATICAL BOLD CAPITAL MU
-1D6B4;AL # MATHEMATICAL BOLD CAPITAL NU
-1D6B5;AL # MATHEMATICAL BOLD CAPITAL XI
-1D6B6;AL # MATHEMATICAL BOLD CAPITAL OMICRON
-1D6B7;AL # MATHEMATICAL BOLD CAPITAL PI
-1D6B8;AL # MATHEMATICAL BOLD CAPITAL RHO
-1D6B9;AL # MATHEMATICAL BOLD CAPITAL THETA SYMBOL
-1D6BA;AL # MATHEMATICAL BOLD CAPITAL SIGMA
-1D6BB;AL # MATHEMATICAL BOLD CAPITAL TAU
-1D6BC;AL # MATHEMATICAL BOLD CAPITAL UPSILON
-1D6BD;AL # MATHEMATICAL BOLD CAPITAL PHI
-1D6BE;AL # MATHEMATICAL BOLD CAPITAL CHI
-1D6BF;AL # MATHEMATICAL BOLD CAPITAL PSI
-1D6C0;AL # MATHEMATICAL BOLD CAPITAL OMEGA
-1D6C1;AL # MATHEMATICAL BOLD NABLA
-1D6C2;AL # MATHEMATICAL BOLD SMALL ALPHA
-1D6C3;AL # MATHEMATICAL BOLD SMALL BETA
-1D6C4;AL # MATHEMATICAL BOLD SMALL GAMMA
-1D6C5;AL # MATHEMATICAL BOLD SMALL DELTA
-1D6C6;AL # MATHEMATICAL BOLD SMALL EPSILON
-1D6C7;AL # MATHEMATICAL BOLD SMALL ZETA
-1D6C8;AL # MATHEMATICAL BOLD SMALL ETA
-1D6C9;AL # MATHEMATICAL BOLD SMALL THETA
-1D6CA;AL # MATHEMATICAL BOLD SMALL IOTA
-1D6CB;AL # MATHEMATICAL BOLD SMALL KAPPA
-1D6CC;AL # MATHEMATICAL BOLD SMALL LAMDA
-1D6CD;AL # MATHEMATICAL BOLD SMALL MU
-1D6CE;AL # MATHEMATICAL BOLD SMALL NU
-1D6CF;AL # MATHEMATICAL BOLD SMALL XI
-1D6D0;AL # MATHEMATICAL BOLD SMALL OMICRON
-1D6D1;AL # MATHEMATICAL BOLD SMALL PI
-1D6D2;AL # MATHEMATICAL BOLD SMALL RHO
-1D6D3;AL # MATHEMATICAL BOLD SMALL FINAL SIGMA
-1D6D4;AL # MATHEMATICAL BOLD SMALL SIGMA
-1D6D5;AL # MATHEMATICAL BOLD SMALL TAU
-1D6D6;AL # MATHEMATICAL BOLD SMALL UPSILON
-1D6D7;AL # MATHEMATICAL BOLD SMALL PHI
-1D6D8;AL # MATHEMATICAL BOLD SMALL CHI
-1D6D9;AL # MATHEMATICAL BOLD SMALL PSI
-1D6DA;AL # MATHEMATICAL BOLD SMALL OMEGA
-1D6DB;AL # MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
-1D6DC;AL # MATHEMATICAL BOLD EPSILON SYMBOL
-1D6DD;AL # MATHEMATICAL BOLD THETA SYMBOL
-1D6DE;AL # MATHEMATICAL BOLD KAPPA SYMBOL
-1D6DF;AL # MATHEMATICAL BOLD PHI SYMBOL
-1D6E0;AL # MATHEMATICAL BOLD RHO SYMBOL
-1D6E1;AL # MATHEMATICAL BOLD PI SYMBOL
-1D6E2;AL # MATHEMATICAL ITALIC CAPITAL ALPHA
-1D6E3;AL # MATHEMATICAL ITALIC CAPITAL BETA
-1D6E4;AL # MATHEMATICAL ITALIC CAPITAL GAMMA
-1D6E5;AL # MATHEMATICAL ITALIC CAPITAL DELTA
-1D6E6;AL # MATHEMATICAL ITALIC CAPITAL EPSILON
-1D6E7;AL # MATHEMATICAL ITALIC CAPITAL ZETA
-1D6E8;AL # MATHEMATICAL ITALIC CAPITAL ETA
-1D6E9;AL # MATHEMATICAL ITALIC CAPITAL THETA
-1D6EA;AL # MATHEMATICAL ITALIC CAPITAL IOTA
-1D6EB;AL # MATHEMATICAL ITALIC CAPITAL KAPPA
-1D6EC;AL # MATHEMATICAL ITALIC CAPITAL LAMDA
-1D6ED;AL # MATHEMATICAL ITALIC CAPITAL MU
-1D6EE;AL # MATHEMATICAL ITALIC CAPITAL NU
-1D6EF;AL # MATHEMATICAL ITALIC CAPITAL XI
-1D6F0;AL # MATHEMATICAL ITALIC CAPITAL OMICRON
-1D6F1;AL # MATHEMATICAL ITALIC CAPITAL PI
-1D6F2;AL # MATHEMATICAL ITALIC CAPITAL RHO
-1D6F3;AL # MATHEMATICAL ITALIC CAPITAL THETA SYMBOL
-1D6F4;AL # MATHEMATICAL ITALIC CAPITAL SIGMA
-1D6F5;AL # MATHEMATICAL ITALIC CAPITAL TAU
-1D6F6;AL # MATHEMATICAL ITALIC CAPITAL UPSILON
-1D6F7;AL # MATHEMATICAL ITALIC CAPITAL PHI
-1D6F8;AL # MATHEMATICAL ITALIC CAPITAL CHI
-1D6F9;AL # MATHEMATICAL ITALIC CAPITAL PSI
-1D6FA;AL # MATHEMATICAL ITALIC CAPITAL OMEGA
-1D6FB;AL # MATHEMATICAL ITALIC NABLA
-1D6FC;AL # MATHEMATICAL ITALIC SMALL ALPHA
-1D6FD;AL # MATHEMATICAL ITALIC SMALL BETA
-1D6FE;AL # MATHEMATICAL ITALIC SMALL GAMMA
-1D6FF;AL # MATHEMATICAL ITALIC SMALL DELTA
-1D700;AL # MATHEMATICAL ITALIC SMALL EPSILON
-1D701;AL # MATHEMATICAL ITALIC SMALL ZETA
-1D702;AL # MATHEMATICAL ITALIC SMALL ETA
-1D703;AL # MATHEMATICAL ITALIC SMALL THETA
-1D704;AL # MATHEMATICAL ITALIC SMALL IOTA
-1D705;AL # MATHEMATICAL ITALIC SMALL KAPPA
-1D706;AL # MATHEMATICAL ITALIC SMALL LAMDA
-1D707;AL # MATHEMATICAL ITALIC SMALL MU
-1D708;AL # MATHEMATICAL ITALIC SMALL NU
-1D709;AL # MATHEMATICAL ITALIC SMALL XI
-1D70A;AL # MATHEMATICAL ITALIC SMALL OMICRON
-1D70B;AL # MATHEMATICAL ITALIC SMALL PI
-1D70C;AL # MATHEMATICAL ITALIC SMALL RHO
-1D70D;AL # MATHEMATICAL ITALIC SMALL FINAL SIGMA
-1D70E;AL # MATHEMATICAL ITALIC SMALL SIGMA
-1D70F;AL # MATHEMATICAL ITALIC SMALL TAU
-1D710;AL # MATHEMATICAL ITALIC SMALL UPSILON
-1D711;AL # MATHEMATICAL ITALIC SMALL PHI
-1D712;AL # MATHEMATICAL ITALIC SMALL CHI
-1D713;AL # MATHEMATICAL ITALIC SMALL PSI
-1D714;AL # MATHEMATICAL ITALIC SMALL OMEGA
-1D715;AL # MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
-1D716;AL # MATHEMATICAL ITALIC EPSILON SYMBOL
-1D717;AL # MATHEMATICAL ITALIC THETA SYMBOL
-1D718;AL # MATHEMATICAL ITALIC KAPPA SYMBOL
-1D719;AL # MATHEMATICAL ITALIC PHI SYMBOL
-1D71A;AL # MATHEMATICAL ITALIC RHO SYMBOL
-1D71B;AL # MATHEMATICAL ITALIC PI SYMBOL
-1D71C;AL # MATHEMATICAL BOLD ITALIC CAPITAL ALPHA
-1D71D;AL # MATHEMATICAL BOLD ITALIC CAPITAL BETA
-1D71E;AL # MATHEMATICAL BOLD ITALIC CAPITAL GAMMA
-1D71F;AL # MATHEMATICAL BOLD ITALIC CAPITAL DELTA
-1D720;AL # MATHEMATICAL BOLD ITALIC CAPITAL EPSILON
-1D721;AL # MATHEMATICAL BOLD ITALIC CAPITAL ZETA
-1D722;AL # MATHEMATICAL BOLD ITALIC CAPITAL ETA
-1D723;AL # MATHEMATICAL BOLD ITALIC CAPITAL THETA
-1D724;AL # MATHEMATICAL BOLD ITALIC CAPITAL IOTA
-1D725;AL # MATHEMATICAL BOLD ITALIC CAPITAL KAPPA
-1D726;AL # MATHEMATICAL BOLD ITALIC CAPITAL LAMDA
-1D727;AL # MATHEMATICAL BOLD ITALIC CAPITAL MU
-1D728;AL # MATHEMATICAL BOLD ITALIC CAPITAL NU
-1D729;AL # MATHEMATICAL BOLD ITALIC CAPITAL XI
-1D72A;AL # MATHEMATICAL BOLD ITALIC CAPITAL OMICRON
-1D72B;AL # MATHEMATICAL BOLD ITALIC CAPITAL PI
-1D72C;AL # MATHEMATICAL BOLD ITALIC CAPITAL RHO
-1D72D;AL # MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL
-1D72E;AL # MATHEMATICAL BOLD ITALIC CAPITAL SIGMA
-1D72F;AL # MATHEMATICAL BOLD ITALIC CAPITAL TAU
-1D730;AL # MATHEMATICAL BOLD ITALIC CAPITAL UPSILON
-1D731;AL # MATHEMATICAL BOLD ITALIC CAPITAL PHI
-1D732;AL # MATHEMATICAL BOLD ITALIC CAPITAL CHI
-1D733;AL # MATHEMATICAL BOLD ITALIC CAPITAL PSI
-1D734;AL # MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
-1D735;AL # MATHEMATICAL BOLD ITALIC NABLA
-1D736;AL # MATHEMATICAL BOLD ITALIC SMALL ALPHA
-1D737;AL # MATHEMATICAL BOLD ITALIC SMALL BETA
-1D738;AL # MATHEMATICAL BOLD ITALIC SMALL GAMMA
-1D739;AL # MATHEMATICAL BOLD ITALIC SMALL DELTA
-1D73A;AL # MATHEMATICAL BOLD ITALIC SMALL EPSILON
-1D73B;AL # MATHEMATICAL BOLD ITALIC SMALL ZETA
-1D73C;AL # MATHEMATICAL BOLD ITALIC SMALL ETA
-1D73D;AL # MATHEMATICAL BOLD ITALIC SMALL THETA
-1D73E;AL # MATHEMATICAL BOLD ITALIC SMALL IOTA
-1D73F;AL # MATHEMATICAL BOLD ITALIC SMALL KAPPA
-1D740;AL # MATHEMATICAL BOLD ITALIC SMALL LAMDA
-1D741;AL # MATHEMATICAL BOLD ITALIC SMALL MU
-1D742;AL # MATHEMATICAL BOLD ITALIC SMALL NU
-1D743;AL # MATHEMATICAL BOLD ITALIC SMALL XI
-1D744;AL # MATHEMATICAL BOLD ITALIC SMALL OMICRON
-1D745;AL # MATHEMATICAL BOLD ITALIC SMALL PI
-1D746;AL # MATHEMATICAL BOLD ITALIC SMALL RHO
-1D747;AL # MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA
-1D748;AL # MATHEMATICAL BOLD ITALIC SMALL SIGMA
-1D749;AL # MATHEMATICAL BOLD ITALIC SMALL TAU
-1D74A;AL # MATHEMATICAL BOLD ITALIC SMALL UPSILON
-1D74B;AL # MATHEMATICAL BOLD ITALIC SMALL PHI
-1D74C;AL # MATHEMATICAL BOLD ITALIC SMALL CHI
-1D74D;AL # MATHEMATICAL BOLD ITALIC SMALL PSI
-1D74E;AL # MATHEMATICAL BOLD ITALIC SMALL OMEGA
-1D74F;AL # MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
-1D750;AL # MATHEMATICAL BOLD ITALIC EPSILON SYMBOL
-1D751;AL # MATHEMATICAL BOLD ITALIC THETA SYMBOL
-1D752;AL # MATHEMATICAL BOLD ITALIC KAPPA SYMBOL
-1D753;AL # MATHEMATICAL BOLD ITALIC PHI SYMBOL
-1D754;AL # MATHEMATICAL BOLD ITALIC RHO SYMBOL
-1D755;AL # MATHEMATICAL BOLD ITALIC PI SYMBOL
-1D756;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA
-1D757;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA
-1D758;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA
-1D759;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA
-1D75A;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON
-1D75B;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA
-1D75C;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA
-1D75D;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA
-1D75E;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA
-1D75F;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA
-1D760;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA
-1D761;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL MU
-1D762;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL NU
-1D763;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL XI
-1D764;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON
-1D765;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL PI
-1D766;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO
-1D767;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL
-1D768;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA
-1D769;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU
-1D76A;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON
-1D76B;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI
-1D76C;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI
-1D76D;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI
-1D76E;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
-1D76F;AL # MATHEMATICAL SANS-SERIF BOLD NABLA
-1D770;AL # MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA
-1D771;AL # MATHEMATICAL SANS-SERIF BOLD SMALL BETA
-1D772;AL # MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA
-1D773;AL # MATHEMATICAL SANS-SERIF BOLD SMALL DELTA
-1D774;AL # MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON
-1D775;AL # MATHEMATICAL SANS-SERIF BOLD SMALL ZETA
-1D776;AL # MATHEMATICAL SANS-SERIF BOLD SMALL ETA
-1D777;AL # MATHEMATICAL SANS-SERIF BOLD SMALL THETA
-1D778;AL # MATHEMATICAL SANS-SERIF BOLD SMALL IOTA
-1D779;AL # MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA
-1D77A;AL # MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA
-1D77B;AL # MATHEMATICAL SANS-SERIF BOLD SMALL MU
-1D77C;AL # MATHEMATICAL SANS-SERIF BOLD SMALL NU
-1D77D;AL # MATHEMATICAL SANS-SERIF BOLD SMALL XI
-1D77E;AL # MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON
-1D77F;AL # MATHEMATICAL SANS-SERIF BOLD SMALL PI
-1D780;AL # MATHEMATICAL SANS-SERIF BOLD SMALL RHO
-1D781;AL # MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA
-1D782;AL # MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA
-1D783;AL # MATHEMATICAL SANS-SERIF BOLD SMALL TAU
-1D784;AL # MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON
-1D785;AL # MATHEMATICAL SANS-SERIF BOLD SMALL PHI
-1D786;AL # MATHEMATICAL SANS-SERIF BOLD SMALL CHI
-1D787;AL # MATHEMATICAL SANS-SERIF BOLD SMALL PSI
-1D788;AL # MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
-1D789;AL # MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
-1D78A;AL # MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL
-1D78B;AL # MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL
-1D78C;AL # MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL
-1D78D;AL # MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL
-1D78E;AL # MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL
-1D78F;AL # MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
-1D790;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA
-1D791;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA
-1D792;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA
-1D793;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA
-1D794;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON
-1D795;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA
-1D796;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA
-1D797;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA
-1D798;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA
-1D799;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA
-1D79A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA
-1D79B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU
-1D79C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU
-1D79D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI
-1D79E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON
-1D79F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI
-1D7A0;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO
-1D7A1;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL
-1D7A2;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA
-1D7A3;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU
-1D7A4;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON
-1D7A5;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI
-1D7A6;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI
-1D7A7;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI
-1D7A8;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
-1D7A9;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
-1D7AA;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA
-1D7AB;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA
-1D7AC;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA
-1D7AD;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA
-1D7AE;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON
-1D7AF;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA
-1D7B0;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA
-1D7B1;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA
-1D7B2;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA
-1D7B3;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA
-1D7B4;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA
-1D7B5;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU
-1D7B6;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU
-1D7B7;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI
-1D7B8;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON
-1D7B9;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI
-1D7BA;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO
-1D7BB;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA
-1D7BC;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA
-1D7BD;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU
-1D7BE;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON
-1D7BF;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI
-1D7C0;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI
-1D7C1;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI
-1D7C2;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
-1D7C3;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
-1D7C4;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL
-1D7C5;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL
-1D7C6;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL
-1D7C7;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL
-1D7C8;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL
-1D7C9;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
-1D7CE;NU # MATHEMATICAL BOLD DIGIT ZERO
-1D7CF;NU # MATHEMATICAL BOLD DIGIT ONE
-1D7D0;NU # MATHEMATICAL BOLD DIGIT TWO
-1D7D1;NU # MATHEMATICAL BOLD DIGIT THREE
-1D7D2;NU # MATHEMATICAL BOLD DIGIT FOUR
-1D7D3;NU # MATHEMATICAL BOLD DIGIT FIVE
-1D7D4;NU # MATHEMATICAL BOLD DIGIT SIX
-1D7D5;NU # MATHEMATICAL BOLD DIGIT SEVEN
-1D7D6;NU # MATHEMATICAL BOLD DIGIT EIGHT
-1D7D7;NU # MATHEMATICAL BOLD DIGIT NINE
-1D7D8;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO
-1D7D9;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT ONE
-1D7DA;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT TWO
-1D7DB;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT THREE
-1D7DC;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR
-1D7DD;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE
-1D7DE;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT SIX
-1D7DF;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN
-1D7E0;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT
-1D7E1;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT NINE
-1D7E2;NU # MATHEMATICAL SANS-SERIF DIGIT ZERO
-1D7E3;NU # MATHEMATICAL SANS-SERIF DIGIT ONE
-1D7E4;NU # MATHEMATICAL SANS-SERIF DIGIT TWO
-1D7E5;NU # MATHEMATICAL SANS-SERIF DIGIT THREE
-1D7E6;NU # MATHEMATICAL SANS-SERIF DIGIT FOUR
-1D7E7;NU # MATHEMATICAL SANS-SERIF DIGIT FIVE
-1D7E8;NU # MATHEMATICAL SANS-SERIF DIGIT SIX
-1D7E9;NU # MATHEMATICAL SANS-SERIF DIGIT SEVEN
-1D7EA;NU # MATHEMATICAL SANS-SERIF DIGIT EIGHT
-1D7EB;NU # MATHEMATICAL SANS-SERIF DIGIT NINE
-1D7EC;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO
-1D7ED;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT ONE
-1D7EE;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT TWO
-1D7EF;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT THREE
-1D7F0;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR
-1D7F1;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE
-1D7F2;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT SIX
-1D7F3;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN
-1D7F4;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT
-1D7F5;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT NINE
-1D7F6;NU # MATHEMATICAL MONOSPACE DIGIT ZERO
-1D7F7;NU # MATHEMATICAL MONOSPACE DIGIT ONE
-1D7F8;NU # MATHEMATICAL MONOSPACE DIGIT TWO
-1D7F9;NU # MATHEMATICAL MONOSPACE DIGIT THREE
-1D7FA;NU # MATHEMATICAL MONOSPACE DIGIT FOUR
-1D7FB;NU # MATHEMATICAL MONOSPACE DIGIT FIVE
-1D7FC;NU # MATHEMATICAL MONOSPACE DIGIT SIX
-1D7FD;NU # MATHEMATICAL MONOSPACE DIGIT SEVEN
-1D7FE;NU # MATHEMATICAL MONOSPACE DIGIT EIGHT
-1D7FF;NU # MATHEMATICAL MONOSPACE DIGIT NINE
-20000..2A6D6;ID # <CJK Ideograph Extension B, First>..<CJK Ideograph Extension B, Last>
-2F800;ID # CJK COMPATIBILITY IDEOGRAPH-2F800
-2F801;ID # CJK COMPATIBILITY IDEOGRAPH-2F801
-2F802;ID # CJK COMPATIBILITY IDEOGRAPH-2F802
-2F803;ID # CJK COMPATIBILITY IDEOGRAPH-2F803
-2F804;ID # CJK COMPATIBILITY IDEOGRAPH-2F804
-2F805;ID # CJK COMPATIBILITY IDEOGRAPH-2F805
-2F806;ID # CJK COMPATIBILITY IDEOGRAPH-2F806
-2F807;ID # CJK COMPATIBILITY IDEOGRAPH-2F807
-2F808;ID # CJK COMPATIBILITY IDEOGRAPH-2F808
-2F809;ID # CJK COMPATIBILITY IDEOGRAPH-2F809
-2F80A;ID # CJK COMPATIBILITY IDEOGRAPH-2F80A
-2F80B;ID # CJK COMPATIBILITY IDEOGRAPH-2F80B
-2F80C;ID # CJK COMPATIBILITY IDEOGRAPH-2F80C
-2F80D;ID # CJK COMPATIBILITY IDEOGRAPH-2F80D
-2F80E;ID # CJK COMPATIBILITY IDEOGRAPH-2F80E
-2F80F;ID # CJK COMPATIBILITY IDEOGRAPH-2F80F
-2F810;ID # CJK COMPATIBILITY IDEOGRAPH-2F810
-2F811;ID # CJK COMPATIBILITY IDEOGRAPH-2F811
-2F812;ID # CJK COMPATIBILITY IDEOGRAPH-2F812
-2F813;ID # CJK COMPATIBILITY IDEOGRAPH-2F813
-2F814;ID # CJK COMPATIBILITY IDEOGRAPH-2F814
-2F815;ID # CJK COMPATIBILITY IDEOGRAPH-2F815
-2F816;ID # CJK COMPATIBILITY IDEOGRAPH-2F816
-2F817;ID # CJK COMPATIBILITY IDEOGRAPH-2F817
-2F818;ID # CJK COMPATIBILITY IDEOGRAPH-2F818
-2F819;ID # CJK COMPATIBILITY IDEOGRAPH-2F819
-2F81A;ID # CJK COMPATIBILITY IDEOGRAPH-2F81A
-2F81B;ID # CJK COMPATIBILITY IDEOGRAPH-2F81B
-2F81C;ID # CJK COMPATIBILITY IDEOGRAPH-2F81C
-2F81D;ID # CJK COMPATIBILITY IDEOGRAPH-2F81D
-2F81E;ID # CJK COMPATIBILITY IDEOGRAPH-2F81E
-2F81F;ID # CJK COMPATIBILITY IDEOGRAPH-2F81F
-2F820;ID # CJK COMPATIBILITY IDEOGRAPH-2F820
-2F821;ID # CJK COMPATIBILITY IDEOGRAPH-2F821
-2F822;ID # CJK COMPATIBILITY IDEOGRAPH-2F822
-2F823;ID # CJK COMPATIBILITY IDEOGRAPH-2F823
-2F824;ID # CJK COMPATIBILITY IDEOGRAPH-2F824
-2F825;ID # CJK COMPATIBILITY IDEOGRAPH-2F825
-2F826;ID # CJK COMPATIBILITY IDEOGRAPH-2F826
-2F827;ID # CJK COMPATIBILITY IDEOGRAPH-2F827
-2F828;ID # CJK COMPATIBILITY IDEOGRAPH-2F828
-2F829;ID # CJK COMPATIBILITY IDEOGRAPH-2F829
-2F82A;ID # CJK COMPATIBILITY IDEOGRAPH-2F82A
-2F82B;ID # CJK COMPATIBILITY IDEOGRAPH-2F82B
-2F82C;ID # CJK COMPATIBILITY IDEOGRAPH-2F82C
-2F82D;ID # CJK COMPATIBILITY IDEOGRAPH-2F82D
-2F82E;ID # CJK COMPATIBILITY IDEOGRAPH-2F82E
-2F82F;ID # CJK COMPATIBILITY IDEOGRAPH-2F82F
-2F830;ID # CJK COMPATIBILITY IDEOGRAPH-2F830
-2F831;ID # CJK COMPATIBILITY IDEOGRAPH-2F831
-2F832;ID # CJK COMPATIBILITY IDEOGRAPH-2F832
-2F833;ID # CJK COMPATIBILITY IDEOGRAPH-2F833
-2F834;ID # CJK COMPATIBILITY IDEOGRAPH-2F834
-2F835;ID # CJK COMPATIBILITY IDEOGRAPH-2F835
-2F836;ID # CJK COMPATIBILITY IDEOGRAPH-2F836
-2F837;ID # CJK COMPATIBILITY IDEOGRAPH-2F837
-2F838;ID # CJK COMPATIBILITY IDEOGRAPH-2F838
-2F839;ID # CJK COMPATIBILITY IDEOGRAPH-2F839
-2F83A;ID # CJK COMPATIBILITY IDEOGRAPH-2F83A
-2F83B;ID # CJK COMPATIBILITY IDEOGRAPH-2F83B
-2F83C;ID # CJK COMPATIBILITY IDEOGRAPH-2F83C
-2F83D;ID # CJK COMPATIBILITY IDEOGRAPH-2F83D
-2F83E;ID # CJK COMPATIBILITY IDEOGRAPH-2F83E
-2F83F;ID # CJK COMPATIBILITY IDEOGRAPH-2F83F
-2F840;ID # CJK COMPATIBILITY IDEOGRAPH-2F840
-2F841;ID # CJK COMPATIBILITY IDEOGRAPH-2F841
-2F842;ID # CJK COMPATIBILITY IDEOGRAPH-2F842
-2F843;ID # CJK COMPATIBILITY IDEOGRAPH-2F843
-2F844;ID # CJK COMPATIBILITY IDEOGRAPH-2F844
-2F845;ID # CJK COMPATIBILITY IDEOGRAPH-2F845
-2F846;ID # CJK COMPATIBILITY IDEOGRAPH-2F846
-2F847;ID # CJK COMPATIBILITY IDEOGRAPH-2F847
-2F848;ID # CJK COMPATIBILITY IDEOGRAPH-2F848
-2F849;ID # CJK COMPATIBILITY IDEOGRAPH-2F849
-2F84A;ID # CJK COMPATIBILITY IDEOGRAPH-2F84A
-2F84B;ID # CJK COMPATIBILITY IDEOGRAPH-2F84B
-2F84C;ID # CJK COMPATIBILITY IDEOGRAPH-2F84C
-2F84D;ID # CJK COMPATIBILITY IDEOGRAPH-2F84D
-2F84E;ID # CJK COMPATIBILITY IDEOGRAPH-2F84E
-2F84F;ID # CJK COMPATIBILITY IDEOGRAPH-2F84F
-2F850;ID # CJK COMPATIBILITY IDEOGRAPH-2F850
-2F851;ID # CJK COMPATIBILITY IDEOGRAPH-2F851
-2F852;ID # CJK COMPATIBILITY IDEOGRAPH-2F852
-2F853;ID # CJK COMPATIBILITY IDEOGRAPH-2F853
-2F854;ID # CJK COMPATIBILITY IDEOGRAPH-2F854
-2F855;ID # CJK COMPATIBILITY IDEOGRAPH-2F855
-2F856;ID # CJK COMPATIBILITY IDEOGRAPH-2F856
-2F857;ID # CJK COMPATIBILITY IDEOGRAPH-2F857
-2F858;ID # CJK COMPATIBILITY IDEOGRAPH-2F858
-2F859;ID # CJK COMPATIBILITY IDEOGRAPH-2F859
-2F85A;ID # CJK COMPATIBILITY IDEOGRAPH-2F85A
-2F85B;ID # CJK COMPATIBILITY IDEOGRAPH-2F85B
-2F85C;ID # CJK COMPATIBILITY IDEOGRAPH-2F85C
-2F85D;ID # CJK COMPATIBILITY IDEOGRAPH-2F85D
-2F85E;ID # CJK COMPATIBILITY IDEOGRAPH-2F85E
-2F85F;ID # CJK COMPATIBILITY IDEOGRAPH-2F85F
-2F860;ID # CJK COMPATIBILITY IDEOGRAPH-2F860
-2F861;ID # CJK COMPATIBILITY IDEOGRAPH-2F861
-2F862;ID # CJK COMPATIBILITY IDEOGRAPH-2F862
-2F863;ID # CJK COMPATIBILITY IDEOGRAPH-2F863
-2F864;ID # CJK COMPATIBILITY IDEOGRAPH-2F864
-2F865;ID # CJK COMPATIBILITY IDEOGRAPH-2F865
-2F866;ID # CJK COMPATIBILITY IDEOGRAPH-2F866
-2F867;ID # CJK COMPATIBILITY IDEOGRAPH-2F867
-2F868;ID # CJK COMPATIBILITY IDEOGRAPH-2F868
-2F869;ID # CJK COMPATIBILITY IDEOGRAPH-2F869
-2F86A;ID # CJK COMPATIBILITY IDEOGRAPH-2F86A
-2F86B;ID # CJK COMPATIBILITY IDEOGRAPH-2F86B
-2F86C;ID # CJK COMPATIBILITY IDEOGRAPH-2F86C
-2F86D;ID # CJK COMPATIBILITY IDEOGRAPH-2F86D
-2F86E;ID # CJK COMPATIBILITY IDEOGRAPH-2F86E
-2F86F;ID # CJK COMPATIBILITY IDEOGRAPH-2F86F
-2F870;ID # CJK COMPATIBILITY IDEOGRAPH-2F870
-2F871;ID # CJK COMPATIBILITY IDEOGRAPH-2F871
-2F872;ID # CJK COMPATIBILITY IDEOGRAPH-2F872
-2F873;ID # CJK COMPATIBILITY IDEOGRAPH-2F873
-2F874;ID # CJK COMPATIBILITY IDEOGRAPH-2F874
-2F875;ID # CJK COMPATIBILITY IDEOGRAPH-2F875
-2F876;ID # CJK COMPATIBILITY IDEOGRAPH-2F876
-2F877;ID # CJK COMPATIBILITY IDEOGRAPH-2F877
-2F878;ID # CJK COMPATIBILITY IDEOGRAPH-2F878
-2F879;ID # CJK COMPATIBILITY IDEOGRAPH-2F879
-2F87A;ID # CJK COMPATIBILITY IDEOGRAPH-2F87A
-2F87B;ID # CJK COMPATIBILITY IDEOGRAPH-2F87B
-2F87C;ID # CJK COMPATIBILITY IDEOGRAPH-2F87C
-2F87D;ID # CJK COMPATIBILITY IDEOGRAPH-2F87D
-2F87E;ID # CJK COMPATIBILITY IDEOGRAPH-2F87E
-2F87F;ID # CJK COMPATIBILITY IDEOGRAPH-2F87F
-2F880;ID # CJK COMPATIBILITY IDEOGRAPH-2F880
-2F881;ID # CJK COMPATIBILITY IDEOGRAPH-2F881
-2F882;ID # CJK COMPATIBILITY IDEOGRAPH-2F882
-2F883;ID # CJK COMPATIBILITY IDEOGRAPH-2F883
-2F884;ID # CJK COMPATIBILITY IDEOGRAPH-2F884
-2F885;ID # CJK COMPATIBILITY IDEOGRAPH-2F885
-2F886;ID # CJK COMPATIBILITY IDEOGRAPH-2F886
-2F887;ID # CJK COMPATIBILITY IDEOGRAPH-2F887
-2F888;ID # CJK COMPATIBILITY IDEOGRAPH-2F888
-2F889;ID # CJK COMPATIBILITY IDEOGRAPH-2F889
-2F88A;ID # CJK COMPATIBILITY IDEOGRAPH-2F88A
-2F88B;ID # CJK COMPATIBILITY IDEOGRAPH-2F88B
-2F88C;ID # CJK COMPATIBILITY IDEOGRAPH-2F88C
-2F88D;ID # CJK COMPATIBILITY IDEOGRAPH-2F88D
-2F88E;ID # CJK COMPATIBILITY IDEOGRAPH-2F88E
-2F88F;ID # CJK COMPATIBILITY IDEOGRAPH-2F88F
-2F890;ID # CJK COMPATIBILITY IDEOGRAPH-2F890
-2F891;ID # CJK COMPATIBILITY IDEOGRAPH-2F891
-2F892;ID # CJK COMPATIBILITY IDEOGRAPH-2F892
-2F893;ID # CJK COMPATIBILITY IDEOGRAPH-2F893
-2F894;ID # CJK COMPATIBILITY IDEOGRAPH-2F894
-2F895;ID # CJK COMPATIBILITY IDEOGRAPH-2F895
-2F896;ID # CJK COMPATIBILITY IDEOGRAPH-2F896
-2F897;ID # CJK COMPATIBILITY IDEOGRAPH-2F897
-2F898;ID # CJK COMPATIBILITY IDEOGRAPH-2F898
-2F899;ID # CJK COMPATIBILITY IDEOGRAPH-2F899
-2F89A;ID # CJK COMPATIBILITY IDEOGRAPH-2F89A
-2F89B;ID # CJK COMPATIBILITY IDEOGRAPH-2F89B
-2F89C;ID # CJK COMPATIBILITY IDEOGRAPH-2F89C
-2F89D;ID # CJK COMPATIBILITY IDEOGRAPH-2F89D
-2F89E;ID # CJK COMPATIBILITY IDEOGRAPH-2F89E
-2F89F;ID # CJK COMPATIBILITY IDEOGRAPH-2F89F
-2F8A0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A0
-2F8A1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A1
-2F8A2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A2
-2F8A3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A3
-2F8A4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A4
-2F8A5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A5
-2F8A6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A6
-2F8A7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A7
-2F8A8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A8
-2F8A9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A9
-2F8AA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AA
-2F8AB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AB
-2F8AC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AC
-2F8AD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AD
-2F8AE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AE
-2F8AF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AF
-2F8B0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B0
-2F8B1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B1
-2F8B2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B2
-2F8B3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B3
-2F8B4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B4
-2F8B5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B5
-2F8B6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B6
-2F8B7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B7
-2F8B8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B8
-2F8B9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B9
-2F8BA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BA
-2F8BB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BB
-2F8BC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BC
-2F8BD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BD
-2F8BE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BE
-2F8BF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BF
-2F8C0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C0
-2F8C1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C1
-2F8C2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C2
-2F8C3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C3
-2F8C4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C4
-2F8C5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C5
-2F8C6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C6
-2F8C7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C7
-2F8C8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C8
-2F8C9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C9
-2F8CA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CA
-2F8CB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CB
-2F8CC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CC
-2F8CD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CD
-2F8CE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CE
-2F8CF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CF
-2F8D0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D0
-2F8D1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D1
-2F8D2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D2
-2F8D3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D3
-2F8D4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D4
-2F8D5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D5
-2F8D6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D6
-2F8D7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D7
-2F8D8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D8
-2F8D9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D9
-2F8DA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DA
-2F8DB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DB
-2F8DC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DC
-2F8DD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DD
-2F8DE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DE
-2F8DF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DF
-2F8E0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E0
-2F8E1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E1
-2F8E2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E2
-2F8E3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E3
-2F8E4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E4
-2F8E5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E5
-2F8E6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E6
-2F8E7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E7
-2F8E8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E8
-2F8E9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E9
-2F8EA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EA
-2F8EB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EB
-2F8EC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EC
-2F8ED;ID # CJK COMPATIBILITY IDEOGRAPH-2F8ED
-2F8EE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EE
-2F8EF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EF
-2F8F0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F0
-2F8F1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F1
-2F8F2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F2
-2F8F3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F3
-2F8F4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F4
-2F8F5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F5
-2F8F6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F6
-2F8F7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F7
-2F8F8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F8
-2F8F9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F9
-2F8FA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FA
-2F8FB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FB
-2F8FC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FC
-2F8FD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FD
-2F8FE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FE
-2F8FF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FF
-2F900;ID # CJK COMPATIBILITY IDEOGRAPH-2F900
-2F901;ID # CJK COMPATIBILITY IDEOGRAPH-2F901
-2F902;ID # CJK COMPATIBILITY IDEOGRAPH-2F902
-2F903;ID # CJK COMPATIBILITY IDEOGRAPH-2F903
-2F904;ID # CJK COMPATIBILITY IDEOGRAPH-2F904
-2F905;ID # CJK COMPATIBILITY IDEOGRAPH-2F905
-2F906;ID # CJK COMPATIBILITY IDEOGRAPH-2F906
-2F907;ID # CJK COMPATIBILITY IDEOGRAPH-2F907
-2F908;ID # CJK COMPATIBILITY IDEOGRAPH-2F908
-2F909;ID # CJK COMPATIBILITY IDEOGRAPH-2F909
-2F90A;ID # CJK COMPATIBILITY IDEOGRAPH-2F90A
-2F90B;ID # CJK COMPATIBILITY IDEOGRAPH-2F90B
-2F90C;ID # CJK COMPATIBILITY IDEOGRAPH-2F90C
-2F90D;ID # CJK COMPATIBILITY IDEOGRAPH-2F90D
-2F90E;ID # CJK COMPATIBILITY IDEOGRAPH-2F90E
-2F90F;ID # CJK COMPATIBILITY IDEOGRAPH-2F90F
-2F910;ID # CJK COMPATIBILITY IDEOGRAPH-2F910
-2F911;ID # CJK COMPATIBILITY IDEOGRAPH-2F911
-2F912;ID # CJK COMPATIBILITY IDEOGRAPH-2F912
-2F913;ID # CJK COMPATIBILITY IDEOGRAPH-2F913
-2F914;ID # CJK COMPATIBILITY IDEOGRAPH-2F914
-2F915;ID # CJK COMPATIBILITY IDEOGRAPH-2F915
-2F916;ID # CJK COMPATIBILITY IDEOGRAPH-2F916
-2F917;ID # CJK COMPATIBILITY IDEOGRAPH-2F917
-2F918;ID # CJK COMPATIBILITY IDEOGRAPH-2F918
-2F919;ID # CJK COMPATIBILITY IDEOGRAPH-2F919
-2F91A;ID # CJK COMPATIBILITY IDEOGRAPH-2F91A
-2F91B;ID # CJK COMPATIBILITY IDEOGRAPH-2F91B
-2F91C;ID # CJK COMPATIBILITY IDEOGRAPH-2F91C
-2F91D;ID # CJK COMPATIBILITY IDEOGRAPH-2F91D
-2F91E;ID # CJK COMPATIBILITY IDEOGRAPH-2F91E
-2F91F;ID # CJK COMPATIBILITY IDEOGRAPH-2F91F
-2F920;ID # CJK COMPATIBILITY IDEOGRAPH-2F920
-2F921;ID # CJK COMPATIBILITY IDEOGRAPH-2F921
-2F922;ID # CJK COMPATIBILITY IDEOGRAPH-2F922
-2F923;ID # CJK COMPATIBILITY IDEOGRAPH-2F923
-2F924;ID # CJK COMPATIBILITY IDEOGRAPH-2F924
-2F925;ID # CJK COMPATIBILITY IDEOGRAPH-2F925
-2F926;ID # CJK COMPATIBILITY IDEOGRAPH-2F926
-2F927;ID # CJK COMPATIBILITY IDEOGRAPH-2F927
-2F928;ID # CJK COMPATIBILITY IDEOGRAPH-2F928
-2F929;ID # CJK COMPATIBILITY IDEOGRAPH-2F929
-2F92A;ID # CJK COMPATIBILITY IDEOGRAPH-2F92A
-2F92B;ID # CJK COMPATIBILITY IDEOGRAPH-2F92B
-2F92C;ID # CJK COMPATIBILITY IDEOGRAPH-2F92C
-2F92D;ID # CJK COMPATIBILITY IDEOGRAPH-2F92D
-2F92E;ID # CJK COMPATIBILITY IDEOGRAPH-2F92E
-2F92F;ID # CJK COMPATIBILITY IDEOGRAPH-2F92F
-2F930;ID # CJK COMPATIBILITY IDEOGRAPH-2F930
-2F931;ID # CJK COMPATIBILITY IDEOGRAPH-2F931
-2F932;ID # CJK COMPATIBILITY IDEOGRAPH-2F932
-2F933;ID # CJK COMPATIBILITY IDEOGRAPH-2F933
-2F934;ID # CJK COMPATIBILITY IDEOGRAPH-2F934
-2F935;ID # CJK COMPATIBILITY IDEOGRAPH-2F935
-2F936;ID # CJK COMPATIBILITY IDEOGRAPH-2F936
-2F937;ID # CJK COMPATIBILITY IDEOGRAPH-2F937
-2F938;ID # CJK COMPATIBILITY IDEOGRAPH-2F938
-2F939;ID # CJK COMPATIBILITY IDEOGRAPH-2F939
-2F93A;ID # CJK COMPATIBILITY IDEOGRAPH-2F93A
-2F93B;ID # CJK COMPATIBILITY IDEOGRAPH-2F93B
-2F93C;ID # CJK COMPATIBILITY IDEOGRAPH-2F93C
-2F93D;ID # CJK COMPATIBILITY IDEOGRAPH-2F93D
-2F93E;ID # CJK COMPATIBILITY IDEOGRAPH-2F93E
-2F93F;ID # CJK COMPATIBILITY IDEOGRAPH-2F93F
-2F940;ID # CJK COMPATIBILITY IDEOGRAPH-2F940
-2F941;ID # CJK COMPATIBILITY IDEOGRAPH-2F941
-2F942;ID # CJK COMPATIBILITY IDEOGRAPH-2F942
-2F943;ID # CJK COMPATIBILITY IDEOGRAPH-2F943
-2F944;ID # CJK COMPATIBILITY IDEOGRAPH-2F944
-2F945;ID # CJK COMPATIBILITY IDEOGRAPH-2F945
-2F946;ID # CJK COMPATIBILITY IDEOGRAPH-2F946
-2F947;ID # CJK COMPATIBILITY IDEOGRAPH-2F947
-2F948;ID # CJK COMPATIBILITY IDEOGRAPH-2F948
-2F949;ID # CJK COMPATIBILITY IDEOGRAPH-2F949
-2F94A;ID # CJK COMPATIBILITY IDEOGRAPH-2F94A
-2F94B;ID # CJK COMPATIBILITY IDEOGRAPH-2F94B
-2F94C;ID # CJK COMPATIBILITY IDEOGRAPH-2F94C
-2F94D;ID # CJK COMPATIBILITY IDEOGRAPH-2F94D
-2F94E;ID # CJK COMPATIBILITY IDEOGRAPH-2F94E
-2F94F;ID # CJK COMPATIBILITY IDEOGRAPH-2F94F
-2F950;ID # CJK COMPATIBILITY IDEOGRAPH-2F950
-2F951;ID # CJK COMPATIBILITY IDEOGRAPH-2F951
-2F952;ID # CJK COMPATIBILITY IDEOGRAPH-2F952
-2F953;ID # CJK COMPATIBILITY IDEOGRAPH-2F953
-2F954;ID # CJK COMPATIBILITY IDEOGRAPH-2F954
-2F955;ID # CJK COMPATIBILITY IDEOGRAPH-2F955
-2F956;ID # CJK COMPATIBILITY IDEOGRAPH-2F956
-2F957;ID # CJK COMPATIBILITY IDEOGRAPH-2F957
-2F958;ID # CJK COMPATIBILITY IDEOGRAPH-2F958
-2F959;ID # CJK COMPATIBILITY IDEOGRAPH-2F959
-2F95A;ID # CJK COMPATIBILITY IDEOGRAPH-2F95A
-2F95B;ID # CJK COMPATIBILITY IDEOGRAPH-2F95B
-2F95C;ID # CJK COMPATIBILITY IDEOGRAPH-2F95C
-2F95D;ID # CJK COMPATIBILITY IDEOGRAPH-2F95D
-2F95E;ID # CJK COMPATIBILITY IDEOGRAPH-2F95E
-2F95F;ID # CJK COMPATIBILITY IDEOGRAPH-2F95F
-2F960;ID # CJK COMPATIBILITY IDEOGRAPH-2F960
-2F961;ID # CJK COMPATIBILITY IDEOGRAPH-2F961
-2F962;ID # CJK COMPATIBILITY IDEOGRAPH-2F962
-2F963;ID # CJK COMPATIBILITY IDEOGRAPH-2F963
-2F964;ID # CJK COMPATIBILITY IDEOGRAPH-2F964
-2F965;ID # CJK COMPATIBILITY IDEOGRAPH-2F965
-2F966;ID # CJK COMPATIBILITY IDEOGRAPH-2F966
-2F967;ID # CJK COMPATIBILITY IDEOGRAPH-2F967
-2F968;ID # CJK COMPATIBILITY IDEOGRAPH-2F968
-2F969;ID # CJK COMPATIBILITY IDEOGRAPH-2F969
-2F96A;ID # CJK COMPATIBILITY IDEOGRAPH-2F96A
-2F96B;ID # CJK COMPATIBILITY IDEOGRAPH-2F96B
-2F96C;ID # CJK COMPATIBILITY IDEOGRAPH-2F96C
-2F96D;ID # CJK COMPATIBILITY IDEOGRAPH-2F96D
-2F96E;ID # CJK COMPATIBILITY IDEOGRAPH-2F96E
-2F96F;ID # CJK COMPATIBILITY IDEOGRAPH-2F96F
-2F970;ID # CJK COMPATIBILITY IDEOGRAPH-2F970
-2F971;ID # CJK COMPATIBILITY IDEOGRAPH-2F971
-2F972;ID # CJK COMPATIBILITY IDEOGRAPH-2F972
-2F973;ID # CJK COMPATIBILITY IDEOGRAPH-2F973
-2F974;ID # CJK COMPATIBILITY IDEOGRAPH-2F974
-2F975;ID # CJK COMPATIBILITY IDEOGRAPH-2F975
-2F976;ID # CJK COMPATIBILITY IDEOGRAPH-2F976
-2F977;ID # CJK COMPATIBILITY IDEOGRAPH-2F977
-2F978;ID # CJK COMPATIBILITY IDEOGRAPH-2F978
-2F979;ID # CJK COMPATIBILITY IDEOGRAPH-2F979
-2F97A;ID # CJK COMPATIBILITY IDEOGRAPH-2F97A
-2F97B;ID # CJK COMPATIBILITY IDEOGRAPH-2F97B
-2F97C;ID # CJK COMPATIBILITY IDEOGRAPH-2F97C
-2F97D;ID # CJK COMPATIBILITY IDEOGRAPH-2F97D
-2F97E;ID # CJK COMPATIBILITY IDEOGRAPH-2F97E
-2F97F;ID # CJK COMPATIBILITY IDEOGRAPH-2F97F
-2F980;ID # CJK COMPATIBILITY IDEOGRAPH-2F980
-2F981;ID # CJK COMPATIBILITY IDEOGRAPH-2F981
-2F982;ID # CJK COMPATIBILITY IDEOGRAPH-2F982
-2F983;ID # CJK COMPATIBILITY IDEOGRAPH-2F983
-2F984;ID # CJK COMPATIBILITY IDEOGRAPH-2F984
-2F985;ID # CJK COMPATIBILITY IDEOGRAPH-2F985
-2F986;ID # CJK COMPATIBILITY IDEOGRAPH-2F986
-2F987;ID # CJK COMPATIBILITY IDEOGRAPH-2F987
-2F988;ID # CJK COMPATIBILITY IDEOGRAPH-2F988
-2F989;ID # CJK COMPATIBILITY IDEOGRAPH-2F989
-2F98A;ID # CJK COMPATIBILITY IDEOGRAPH-2F98A
-2F98B;ID # CJK COMPATIBILITY IDEOGRAPH-2F98B
-2F98C;ID # CJK COMPATIBILITY IDEOGRAPH-2F98C
-2F98D;ID # CJK COMPATIBILITY IDEOGRAPH-2F98D
-2F98E;ID # CJK COMPATIBILITY IDEOGRAPH-2F98E
-2F98F;ID # CJK COMPATIBILITY IDEOGRAPH-2F98F
-2F990;ID # CJK COMPATIBILITY IDEOGRAPH-2F990
-2F991;ID # CJK COMPATIBILITY IDEOGRAPH-2F991
-2F992;ID # CJK COMPATIBILITY IDEOGRAPH-2F992
-2F993;ID # CJK COMPATIBILITY IDEOGRAPH-2F993
-2F994;ID # CJK COMPATIBILITY IDEOGRAPH-2F994
-2F995;ID # CJK COMPATIBILITY IDEOGRAPH-2F995
-2F996;ID # CJK COMPATIBILITY IDEOGRAPH-2F996
-2F997;ID # CJK COMPATIBILITY IDEOGRAPH-2F997
-2F998;ID # CJK COMPATIBILITY IDEOGRAPH-2F998
-2F999;ID # CJK COMPATIBILITY IDEOGRAPH-2F999
-2F99A;ID # CJK COMPATIBILITY IDEOGRAPH-2F99A
-2F99B;ID # CJK COMPATIBILITY IDEOGRAPH-2F99B
-2F99C;ID # CJK COMPATIBILITY IDEOGRAPH-2F99C
-2F99D;ID # CJK COMPATIBILITY IDEOGRAPH-2F99D
-2F99E;ID # CJK COMPATIBILITY IDEOGRAPH-2F99E
-2F99F;ID # CJK COMPATIBILITY IDEOGRAPH-2F99F
-2F9A0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A0
-2F9A1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A1
-2F9A2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A2
-2F9A3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A3
-2F9A4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A4
-2F9A5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A5
-2F9A6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A6
-2F9A7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A7
-2F9A8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A8
-2F9A9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A9
-2F9AA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AA
-2F9AB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AB
-2F9AC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AC
-2F9AD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AD
-2F9AE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AE
-2F9AF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AF
-2F9B0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B0
-2F9B1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B1
-2F9B2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B2
-2F9B3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B3
-2F9B4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B4
-2F9B5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B5
-2F9B6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B6
-2F9B7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B7
-2F9B8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B8
-2F9B9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B9
-2F9BA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BA
-2F9BB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BB
-2F9BC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BC
-2F9BD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BD
-2F9BE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BE
-2F9BF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BF
-2F9C0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C0
-2F9C1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C1
-2F9C2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C2
-2F9C3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C3
-2F9C4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C4
-2F9C5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C5
-2F9C6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C6
-2F9C7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C7
-2F9C8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C8
-2F9C9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C9
-2F9CA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CA
-2F9CB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CB
-2F9CC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CC
-2F9CD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CD
-2F9CE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CE
-2F9CF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CF
-2F9D0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D0
-2F9D1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D1
-2F9D2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D2
-2F9D3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D3
-2F9D4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D4
-2F9D5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D5
-2F9D6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D6
-2F9D7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D7
-2F9D8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D8
-2F9D9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D9
-2F9DA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DA
-2F9DB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DB
-2F9DC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DC
-2F9DD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DD
-2F9DE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DE
-2F9DF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DF
-2F9E0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E0
-2F9E1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E1
-2F9E2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E2
-2F9E3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E3
-2F9E4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E4
-2F9E5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E5
-2F9E6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E6
-2F9E7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E7
-2F9E8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E8
-2F9E9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E9
-2F9EA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EA
-2F9EB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EB
-2F9EC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EC
-2F9ED;ID # CJK COMPATIBILITY IDEOGRAPH-2F9ED
-2F9EE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EE
-2F9EF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EF
-2F9F0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F0
-2F9F1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F1
-2F9F2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F2
-2F9F3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F3
-2F9F4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F4
-2F9F5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F5
-2F9F6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F6
-2F9F7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F7
-2F9F8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F8
-2F9F9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F9
-2F9FA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FA
-2F9FB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FB
-2F9FC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FC
-2F9FD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FD
-2F9FE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FE
-2F9FF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FF
-2FA00;ID # CJK COMPATIBILITY IDEOGRAPH-2FA00
-2FA01;ID # CJK COMPATIBILITY IDEOGRAPH-2FA01
-2FA02;ID # CJK COMPATIBILITY IDEOGRAPH-2FA02
-2FA03;ID # CJK COMPATIBILITY IDEOGRAPH-2FA03
-2FA04;ID # CJK COMPATIBILITY IDEOGRAPH-2FA04
-2FA05;ID # CJK COMPATIBILITY IDEOGRAPH-2FA05
-2FA06;ID # CJK COMPATIBILITY IDEOGRAPH-2FA06
-2FA07;ID # CJK COMPATIBILITY IDEOGRAPH-2FA07
-2FA08;ID # CJK COMPATIBILITY IDEOGRAPH-2FA08
-2FA09;ID # CJK COMPATIBILITY IDEOGRAPH-2FA09
-2FA0A;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0A
-2FA0B;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0B
-2FA0C;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0C
-2FA0D;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0D
-2FA0E;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0E
-2FA0F;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0F
-2FA10;ID # CJK COMPATIBILITY IDEOGRAPH-2FA10
-2FA11;ID # CJK COMPATIBILITY IDEOGRAPH-2FA11
-2FA12;ID # CJK COMPATIBILITY IDEOGRAPH-2FA12
-2FA13;ID # CJK COMPATIBILITY IDEOGRAPH-2FA13
-2FA14;ID # CJK COMPATIBILITY IDEOGRAPH-2FA14
-2FA15;ID # CJK COMPATIBILITY IDEOGRAPH-2FA15
-2FA16;ID # CJK COMPATIBILITY IDEOGRAPH-2FA16
-2FA17;ID # CJK COMPATIBILITY IDEOGRAPH-2FA17
-2FA18;ID # CJK COMPATIBILITY IDEOGRAPH-2FA18
-2FA19;ID # CJK COMPATIBILITY IDEOGRAPH-2FA19
-2FA1A;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1A
-2FA1B;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1B
-2FA1C;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1C
-2FA1D;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1D
-E0001;CM # LANGUAGE TAG
-E0020;CM # TAG SPACE
-E0021;CM # TAG EXCLAMATION MARK
-E0022;CM # TAG QUOTATION MARK
-E0023;CM # TAG NUMBER SIGN
-E0024;CM # TAG DOLLAR SIGN
-E0025;CM # TAG PERCENT SIGN
-E0026;CM # TAG AMPERSAND
-E0027;CM # TAG APOSTROPHE
-E0028;CM # TAG LEFT PARENTHESIS
-E0029;CM # TAG RIGHT PARENTHESIS
-E002A;CM # TAG ASTERISK
-E002B;CM # TAG PLUS SIGN
-E002C;CM # TAG COMMA
-E002D;CM # TAG HYPHEN-MINUS
-E002E;CM # TAG FULL STOP
-E002F;CM # TAG SOLIDUS
-E0030;CM # TAG DIGIT ZERO
-E0031;CM # TAG DIGIT ONE
-E0032;CM # TAG DIGIT TWO
-E0033;CM # TAG DIGIT THREE
-E0034;CM # TAG DIGIT FOUR
-E0035;CM # TAG DIGIT FIVE
-E0036;CM # TAG DIGIT SIX
-E0037;CM # TAG DIGIT SEVEN
-E0038;CM # TAG DIGIT EIGHT
-E0039;CM # TAG DIGIT NINE
-E003A;CM # TAG COLON
-E003B;CM # TAG SEMICOLON
-E003C;CM # TAG LESS-THAN SIGN
-E003D;CM # TAG EQUALS SIGN
-E003E;CM # TAG GREATER-THAN SIGN
-E003F;CM # TAG QUESTION MARK
-E0040;CM # TAG COMMERCIAL AT
-E0041;CM # TAG LATIN CAPITAL LETTER A
-E0042;CM # TAG LATIN CAPITAL LETTER B
-E0043;CM # TAG LATIN CAPITAL LETTER C
-E0044;CM # TAG LATIN CAPITAL LETTER D
-E0045;CM # TAG LATIN CAPITAL LETTER E
-E0046;CM # TAG LATIN CAPITAL LETTER F
-E0047;CM # TAG LATIN CAPITAL LETTER G
-E0048;CM # TAG LATIN CAPITAL LETTER H
-E0049;CM # TAG LATIN CAPITAL LETTER I
-E004A;CM # TAG LATIN CAPITAL LETTER J
-E004B;CM # TAG LATIN CAPITAL LETTER K
-E004C;CM # TAG LATIN CAPITAL LETTER L
-E004D;CM # TAG LATIN CAPITAL LETTER M
-E004E;CM # TAG LATIN CAPITAL LETTER N
-E004F;CM # TAG LATIN CAPITAL LETTER O
-E0050;CM # TAG LATIN CAPITAL LETTER P
-E0051;CM # TAG LATIN CAPITAL LETTER Q
-E0052;CM # TAG LATIN CAPITAL LETTER R
-E0053;CM # TAG LATIN CAPITAL LETTER S
-E0054;CM # TAG LATIN CAPITAL LETTER T
-E0055;CM # TAG LATIN CAPITAL LETTER U
-E0056;CM # TAG LATIN CAPITAL LETTER V
-E0057;CM # TAG LATIN CAPITAL LETTER W
-E0058;CM # TAG LATIN CAPITAL LETTER X
-E0059;CM # TAG LATIN CAPITAL LETTER Y
-E005A;CM # TAG LATIN CAPITAL LETTER Z
-E005B;CM # TAG LEFT SQUARE BRACKET
-E005C;CM # TAG REVERSE SOLIDUS
-E005D;CM # TAG RIGHT SQUARE BRACKET
-E005E;CM # TAG CIRCUMFLEX ACCENT
-E005F;CM # TAG LOW LINE
-E0060;CM # TAG GRAVE ACCENT
-E0061;CM # TAG LATIN SMALL LETTER A
-E0062;CM # TAG LATIN SMALL LETTER B
-E0063;CM # TAG LATIN SMALL LETTER C
-E0064;CM # TAG LATIN SMALL LETTER D
-E0065;CM # TAG LATIN SMALL LETTER E
-E0066;CM # TAG LATIN SMALL LETTER F
-E0067;CM # TAG LATIN SMALL LETTER G
-E0068;CM # TAG LATIN SMALL LETTER H
-E0069;CM # TAG LATIN SMALL LETTER I
-E006A;CM # TAG LATIN SMALL LETTER J
-E006B;CM # TAG LATIN SMALL LETTER K
-E006C;CM # TAG LATIN SMALL LETTER L
-E006D;CM # TAG LATIN SMALL LETTER M
-E006E;CM # TAG LATIN SMALL LETTER N
-E006F;CM # TAG LATIN SMALL LETTER O
-E0070;CM # TAG LATIN SMALL LETTER P
-E0071;CM # TAG LATIN SMALL LETTER Q
-E0072;CM # TAG LATIN SMALL LETTER R
-E0073;CM # TAG LATIN SMALL LETTER S
-E0074;CM # TAG LATIN SMALL LETTER T
-E0075;CM # TAG LATIN SMALL LETTER U
-E0076;CM # TAG LATIN SMALL LETTER V
-E0077;CM # TAG LATIN SMALL LETTER W
-E0078;CM # TAG LATIN SMALL LETTER X
-E0079;CM # TAG LATIN SMALL LETTER Y
-E007A;CM # TAG LATIN SMALL LETTER Z
-E007B;CM # TAG LEFT CURLY BRACKET
-E007C;CM # TAG VERTICAL LINE
-E007D;CM # TAG RIGHT CURLY BRACKET
-E007E;CM # TAG TILDE
-E007F;CM # CANCEL TAG
-E0100;CM # VARIATION SELECTOR-17
-E0101;CM # VARIATION SELECTOR-18
-E0102;CM # VARIATION SELECTOR-19
-E0103;CM # VARIATION SELECTOR-20
-E0104;CM # VARIATION SELECTOR-21
-E0105;CM # VARIATION SELECTOR-22
-E0106;CM # VARIATION SELECTOR-23
-E0107;CM # VARIATION SELECTOR-24
-E0108;CM # VARIATION SELECTOR-25
-E0109;CM # VARIATION SELECTOR-26
-E010A;CM # VARIATION SELECTOR-27
-E010B;CM # VARIATION SELECTOR-28
-E010C;CM # VARIATION SELECTOR-29
-E010D;CM # VARIATION SELECTOR-30
-E010E;CM # VARIATION SELECTOR-31
-E010F;CM # VARIATION SELECTOR-32
-E0110;CM # VARIATION SELECTOR-33
-E0111;CM # VARIATION SELECTOR-34
-E0112;CM # VARIATION SELECTOR-35
-E0113;CM # VARIATION SELECTOR-36
-E0114;CM # VARIATION SELECTOR-37
-E0115;CM # VARIATION SELECTOR-38
-E0116;CM # VARIATION SELECTOR-39
-E0117;CM # VARIATION SELECTOR-40
-E0118;CM # VARIATION SELECTOR-41
-E0119;CM # VARIATION SELECTOR-42
-E011A;CM # VARIATION SELECTOR-43
-E011B;CM # VARIATION SELECTOR-44
-E011C;CM # VARIATION SELECTOR-45
-E011D;CM # VARIATION SELECTOR-46
-E011E;CM # VARIATION SELECTOR-47
-E011F;CM # VARIATION SELECTOR-48
-E0120;CM # VARIATION SELECTOR-49
-E0121;CM # VARIATION SELECTOR-50
-E0122;CM # VARIATION SELECTOR-51
-E0123;CM # VARIATION SELECTOR-52
-E0124;CM # VARIATION SELECTOR-53
-E0125;CM # VARIATION SELECTOR-54
-E0126;CM # VARIATION SELECTOR-55
-E0127;CM # VARIATION SELECTOR-56
-E0128;CM # VARIATION SELECTOR-57
-E0129;CM # VARIATION SELECTOR-58
-E012A;CM # VARIATION SELECTOR-59
-E012B;CM # VARIATION SELECTOR-60
-E012C;CM # VARIATION SELECTOR-61
-E012D;CM # VARIATION SELECTOR-62
-E012E;CM # VARIATION SELECTOR-63
-E012F;CM # VARIATION SELECTOR-64
-E0130;CM # VARIATION SELECTOR-65
-E0131;CM # VARIATION SELECTOR-66
-E0132;CM # VARIATION SELECTOR-67
-E0133;CM # VARIATION SELECTOR-68
-E0134;CM # VARIATION SELECTOR-69
-E0135;CM # VARIATION SELECTOR-70
-E0136;CM # VARIATION SELECTOR-71
-E0137;CM # VARIATION SELECTOR-72
-E0138;CM # VARIATION SELECTOR-73
-E0139;CM # VARIATION SELECTOR-74
-E013A;CM # VARIATION SELECTOR-75
-E013B;CM # VARIATION SELECTOR-76
-E013C;CM # VARIATION SELECTOR-77
-E013D;CM # VARIATION SELECTOR-78
-E013E;CM # VARIATION SELECTOR-79
-E013F;CM # VARIATION SELECTOR-80
-E0140;CM # VARIATION SELECTOR-81
-E0141;CM # VARIATION SELECTOR-82
-E0142;CM # VARIATION SELECTOR-83
-E0143;CM # VARIATION SELECTOR-84
-E0144;CM # VARIATION SELECTOR-85
-E0145;CM # VARIATION SELECTOR-86
-E0146;CM # VARIATION SELECTOR-87
-E0147;CM # VARIATION SELECTOR-88
-E0148;CM # VARIATION SELECTOR-89
-E0149;CM # VARIATION SELECTOR-90
-E014A;CM # VARIATION SELECTOR-91
-E014B;CM # VARIATION SELECTOR-92
-E014C;CM # VARIATION SELECTOR-93
-E014D;CM # VARIATION SELECTOR-94
-E014E;CM # VARIATION SELECTOR-95
-E014F;CM # VARIATION SELECTOR-96
-E0150;CM # VARIATION SELECTOR-97
-E0151;CM # VARIATION SELECTOR-98
-E0152;CM # VARIATION SELECTOR-99
-E0153;CM # VARIATION SELECTOR-100
-E0154;CM # VARIATION SELECTOR-101
-E0155;CM # VARIATION SELECTOR-102
-E0156;CM # VARIATION SELECTOR-103
-E0157;CM # VARIATION SELECTOR-104
-E0158;CM # VARIATION SELECTOR-105
-E0159;CM # VARIATION SELECTOR-106
-E015A;CM # VARIATION SELECTOR-107
-E015B;CM # VARIATION SELECTOR-108
-E015C;CM # VARIATION SELECTOR-109
-E015D;CM # VARIATION SELECTOR-110
-E015E;CM # VARIATION SELECTOR-111
-E015F;CM # VARIATION SELECTOR-112
-E0160;CM # VARIATION SELECTOR-113
-E0161;CM # VARIATION SELECTOR-114
-E0162;CM # VARIATION SELECTOR-115
-E0163;CM # VARIATION SELECTOR-116
-E0164;CM # VARIATION SELECTOR-117
-E0165;CM # VARIATION SELECTOR-118
-E0166;CM # VARIATION SELECTOR-119
-E0167;CM # VARIATION SELECTOR-120
-E0168;CM # VARIATION SELECTOR-121
-E0169;CM # VARIATION SELECTOR-122
-E016A;CM # VARIATION SELECTOR-123
-E016B;CM # VARIATION SELECTOR-124
-E016C;CM # VARIATION SELECTOR-125
-E016D;CM # VARIATION SELECTOR-126
-E016E;CM # VARIATION SELECTOR-127
-E016F;CM # VARIATION SELECTOR-128
-E0170;CM # VARIATION SELECTOR-129
-E0171;CM # VARIATION SELECTOR-130
-E0172;CM # VARIATION SELECTOR-131
-E0173;CM # VARIATION SELECTOR-132
-E0174;CM # VARIATION SELECTOR-133
-E0175;CM # VARIATION SELECTOR-134
-E0176;CM # VARIATION SELECTOR-135
-E0177;CM # VARIATION SELECTOR-136
-E0178;CM # VARIATION SELECTOR-137
-E0179;CM # VARIATION SELECTOR-138
-E017A;CM # VARIATION SELECTOR-139
-E017B;CM # VARIATION SELECTOR-140
-E017C;CM # VARIATION SELECTOR-141
-E017D;CM # VARIATION SELECTOR-142
-E017E;CM # VARIATION SELECTOR-143
-E017F;CM # VARIATION SELECTOR-144
-E0180;CM # VARIATION SELECTOR-145
-E0181;CM # VARIATION SELECTOR-146
-E0182;CM # VARIATION SELECTOR-147
-E0183;CM # VARIATION SELECTOR-148
-E0184;CM # VARIATION SELECTOR-149
-E0185;CM # VARIATION SELECTOR-150
-E0186;CM # VARIATION SELECTOR-151
-E0187;CM # VARIATION SELECTOR-152
-E0188;CM # VARIATION SELECTOR-153
-E0189;CM # VARIATION SELECTOR-154
-E018A;CM # VARIATION SELECTOR-155
-E018B;CM # VARIATION SELECTOR-156
-E018C;CM # VARIATION SELECTOR-157
-E018D;CM # VARIATION SELECTOR-158
-E018E;CM # VARIATION SELECTOR-159
-E018F;CM # VARIATION SELECTOR-160
-E0190;CM # VARIATION SELECTOR-161
-E0191;CM # VARIATION SELECTOR-162
-E0192;CM # VARIATION SELECTOR-163
-E0193;CM # VARIATION SELECTOR-164
-E0194;CM # VARIATION SELECTOR-165
-E0195;CM # VARIATION SELECTOR-166
-E0196;CM # VARIATION SELECTOR-167
-E0197;CM # VARIATION SELECTOR-168
-E0198;CM # VARIATION SELECTOR-169
-E0199;CM # VARIATION SELECTOR-170
-E019A;CM # VARIATION SELECTOR-171
-E019B;CM # VARIATION SELECTOR-172
-E019C;CM # VARIATION SELECTOR-173
-E019D;CM # VARIATION SELECTOR-174
-E019E;CM # VARIATION SELECTOR-175
-E019F;CM # VARIATION SELECTOR-176
-E01A0;CM # VARIATION SELECTOR-177
-E01A1;CM # VARIATION SELECTOR-178
-E01A2;CM # VARIATION SELECTOR-179
-E01A3;CM # VARIATION SELECTOR-180
-E01A4;CM # VARIATION SELECTOR-181
-E01A5;CM # VARIATION SELECTOR-182
-E01A6;CM # VARIATION SELECTOR-183
-E01A7;CM # VARIATION SELECTOR-184
-E01A8;CM # VARIATION SELECTOR-185
-E01A9;CM # VARIATION SELECTOR-186
-E01AA;CM # VARIATION SELECTOR-187
-E01AB;CM # VARIATION SELECTOR-188
-E01AC;CM # VARIATION SELECTOR-189
-E01AD;CM # VARIATION SELECTOR-190
-E01AE;CM # VARIATION SELECTOR-191
-E01AF;CM # VARIATION SELECTOR-192
-E01B0;CM # VARIATION SELECTOR-193
-E01B1;CM # VARIATION SELECTOR-194
-E01B2;CM # VARIATION SELECTOR-195
-E01B3;CM # VARIATION SELECTOR-196
-E01B4;CM # VARIATION SELECTOR-197
-E01B5;CM # VARIATION SELECTOR-198
-E01B6;CM # VARIATION SELECTOR-199
-E01B7;CM # VARIATION SELECTOR-200
-E01B8;CM # VARIATION SELECTOR-201
-E01B9;CM # VARIATION SELECTOR-202
-E01BA;CM # VARIATION SELECTOR-203
-E01BB;CM # VARIATION SELECTOR-204
-E01BC;CM # VARIATION SELECTOR-205
-E01BD;CM # VARIATION SELECTOR-206
-E01BE;CM # VARIATION SELECTOR-207
-E01BF;CM # VARIATION SELECTOR-208
-E01C0;CM # VARIATION SELECTOR-209
-E01C1;CM # VARIATION SELECTOR-210
-E01C2;CM # VARIATION SELECTOR-211
-E01C3;CM # VARIATION SELECTOR-212
-E01C4;CM # VARIATION SELECTOR-213
-E01C5;CM # VARIATION SELECTOR-214
-E01C6;CM # VARIATION SELECTOR-215
-E01C7;CM # VARIATION SELECTOR-216
-E01C8;CM # VARIATION SELECTOR-217
-E01C9;CM # VARIATION SELECTOR-218
-E01CA;CM # VARIATION SELECTOR-219
-E01CB;CM # VARIATION SELECTOR-220
-E01CC;CM # VARIATION SELECTOR-221
-E01CD;CM # VARIATION SELECTOR-222
-E01CE;CM # VARIATION SELECTOR-223
-E01CF;CM # VARIATION SELECTOR-224
-E01D0;CM # VARIATION SELECTOR-225
-E01D1;CM # VARIATION SELECTOR-226
-E01D2;CM # VARIATION SELECTOR-227
-E01D3;CM # VARIATION SELECTOR-228
-E01D4;CM # VARIATION SELECTOR-229
-E01D5;CM # VARIATION SELECTOR-230
-E01D6;CM # VARIATION SELECTOR-231
-E01D7;CM # VARIATION SELECTOR-232
-E01D8;CM # VARIATION SELECTOR-233
-E01D9;CM # VARIATION SELECTOR-234
-E01DA;CM # VARIATION SELECTOR-235
-E01DB;CM # VARIATION SELECTOR-236
-E01DC;CM # VARIATION SELECTOR-237
-E01DD;CM # VARIATION SELECTOR-238
-E01DE;CM # VARIATION SELECTOR-239
-E01DF;CM # VARIATION SELECTOR-240
-E01E0;CM # VARIATION SELECTOR-241
-E01E1;CM # VARIATION SELECTOR-242
-E01E2;CM # VARIATION SELECTOR-243
-E01E3;CM # VARIATION SELECTOR-244
-E01E4;CM # VARIATION SELECTOR-245
-E01E5;CM # VARIATION SELECTOR-246
-E01E6;CM # VARIATION SELECTOR-247
-E01E7;CM # VARIATION SELECTOR-248
-E01E8;CM # VARIATION SELECTOR-249
-E01E9;CM # VARIATION SELECTOR-250
-E01EA;CM # VARIATION SELECTOR-251
-E01EB;CM # VARIATION SELECTOR-252
-E01EC;CM # VARIATION SELECTOR-253
-E01ED;CM # VARIATION SELECTOR-254
-E01EE;CM # VARIATION SELECTOR-255
-E01EF;CM # VARIATION SELECTOR-256
-F0000..FFFFD;XX # <Plane 15 Private Use, First>..<Plane 15 Private Use, Last>
-100000..10FFFD;XX # <Plane 16 Private Use, First>..<Plane 16 Private Use, Last>
diff --git a/Master/tlpkg/tlperl/lib/unicore/Name.pl b/Master/tlpkg/tlperl/lib/unicore/Name.pl
deleted file mode 100644
index 6074a8ae3c7..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/Name.pl
+++ /dev/null
@@ -1,16346 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-return <<'END';
-0000 NULL
-0001 START OF HEADING
-0002 START OF TEXT
-0003 END OF TEXT
-0004 END OF TRANSMISSION
-0005 ENQUIRY
-0006 ACKNOWLEDGE
-0007 BELL
-0008 BACKSPACE
-0009 CHARACTER TABULATION
-000A LINE FEED (LF)
-000B LINE TABULATION
-000C FORM FEED (FF)
-000D CARRIAGE RETURN (CR)
-000E SHIFT OUT
-000F SHIFT IN
-0010 DATA LINK ESCAPE
-0011 DEVICE CONTROL ONE
-0012 DEVICE CONTROL TWO
-0013 DEVICE CONTROL THREE
-0014 DEVICE CONTROL FOUR
-0015 NEGATIVE ACKNOWLEDGE
-0016 SYNCHRONOUS IDLE
-0017 END OF TRANSMISSION BLOCK
-0018 CANCEL
-0019 END OF MEDIUM
-001A SUBSTITUTE
-001B ESCAPE
-001C INFORMATION SEPARATOR FOUR
-001D INFORMATION SEPARATOR THREE
-001E INFORMATION SEPARATOR TWO
-001F INFORMATION SEPARATOR ONE
-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 DELETE
-0080 0081 <control>
-0082 BREAK PERMITTED HERE
-0083 NO BREAK HERE
-0084 <control>
-0085 NEXT LINE (NEL)
-0086 START OF SELECTED AREA
-0087 END OF SELECTED AREA
-0088 CHARACTER TABULATION SET
-0089 CHARACTER TABULATION WITH JUSTIFICATION
-008A LINE TABULATION SET
-008B PARTIAL LINE FORWARD
-008C PARTIAL LINE BACKWARD
-008D REVERSE LINE FEED
-008E SINGLE SHIFT TWO
-008F SINGLE SHIFT THREE
-0090 DEVICE CONTROL STRING
-0091 PRIVATE USE ONE
-0092 PRIVATE USE TWO
-0093 SET TRANSMIT STATE
-0094 CANCEL CHARACTER
-0095 MESSAGE WAITING
-0096 START OF GUARDED AREA
-0097 END OF GUARDED AREA
-0098 START OF STRING
-0099 <control>
-009A SINGLE CHARACTER INTRODUCER
-009B CONTROL SEQUENCE INTRODUCER
-009C STRING TERMINATOR
-009D OPERATING SYSTEM COMMAND
-009E PRIVACY MESSAGE
-009F APPLICATION PROGRAM COMMAND
-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
-0220 LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
-0221 LATIN SMALL LETTER D WITH CURL
-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
-0234 LATIN SMALL LETTER L WITH CURL
-0235 LATIN SMALL LETTER N WITH CURL
-0236 LATIN SMALL LETTER T WITH CURL
-0237 LATIN SMALL LETTER DOTLESS J
-0238 LATIN SMALL LETTER DB DIGRAPH
-0239 LATIN SMALL LETTER QP DIGRAPH
-023A LATIN CAPITAL LETTER A WITH STROKE
-023B LATIN CAPITAL LETTER C WITH STROKE
-023C LATIN SMALL LETTER C WITH STROKE
-023D LATIN CAPITAL LETTER L WITH BAR
-023E LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
-023F LATIN SMALL LETTER S WITH SWASH TAIL
-0240 LATIN SMALL LETTER Z WITH SWASH TAIL
-0241 LATIN CAPITAL LETTER GLOTTAL STOP
-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
-02AE LATIN SMALL LETTER TURNED H WITH FISHHOOK
-02AF LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
-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
-02EF MODIFIER LETTER LOW DOWN ARROWHEAD
-02F0 MODIFIER LETTER LOW UP ARROWHEAD
-02F1 MODIFIER LETTER LOW LEFT ARROWHEAD
-02F2 MODIFIER LETTER LOW RIGHT ARROWHEAD
-02F3 MODIFIER LETTER LOW RING
-02F4 MODIFIER LETTER MIDDLE GRAVE ACCENT
-02F5 MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT
-02F6 MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT
-02F7 MODIFIER LETTER LOW TILDE
-02F8 MODIFIER LETTER RAISED COLON
-02F9 MODIFIER LETTER BEGIN HIGH TONE
-02FA MODIFIER LETTER END HIGH TONE
-02FB MODIFIER LETTER BEGIN LOW TONE
-02FC MODIFIER LETTER END LOW TONE
-02FD MODIFIER LETTER SHELF
-02FE MODIFIER LETTER OPEN SHELF
-02FF MODIFIER LETTER LOW LEFT ARROW
-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
-034F COMBINING GRAPHEME JOINER
-0350 COMBINING RIGHT ARROWHEAD ABOVE
-0351 COMBINING LEFT HALF RING ABOVE
-0352 COMBINING FERMATA
-0353 COMBINING X BELOW
-0354 COMBINING LEFT ARROWHEAD BELOW
-0355 COMBINING RIGHT ARROWHEAD BELOW
-0356 COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW
-0357 COMBINING RIGHT HALF RING ABOVE
-0358 COMBINING DOT ABOVE RIGHT
-0359 COMBINING ASTERISK BELOW
-035A COMBINING DOUBLE RING BELOW
-035B COMBINING ZIGZAG ABOVE
-035C COMBINING DOUBLE BREVE BELOW
-035D COMBINING DOUBLE BREVE
-035E COMBINING DOUBLE MACRON
-035F COMBINING DOUBLE MACRON BELOW
-0360 COMBINING DOUBLE TILDE
-0361 COMBINING DOUBLE INVERTED BREVE
-0362 COMBINING DOUBLE RIGHTWARDS ARROW BELOW
-0363 COMBINING LATIN SMALL LETTER A
-0364 COMBINING LATIN SMALL LETTER E
-0365 COMBINING LATIN SMALL LETTER I
-0366 COMBINING LATIN SMALL LETTER O
-0367 COMBINING LATIN SMALL LETTER U
-0368 COMBINING LATIN SMALL LETTER C
-0369 COMBINING LATIN SMALL LETTER D
-036A COMBINING LATIN SMALL LETTER H
-036B COMBINING LATIN SMALL LETTER M
-036C COMBINING LATIN SMALL LETTER R
-036D COMBINING LATIN SMALL LETTER T
-036E COMBINING LATIN SMALL LETTER V
-036F COMBINING LATIN SMALL LETTER X
-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
-03D8 GREEK LETTER ARCHAIC KOPPA
-03D9 GREEK SMALL LETTER ARCHAIC KOPPA
-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
-03F4 GREEK CAPITAL THETA SYMBOL
-03F5 GREEK LUNATE EPSILON SYMBOL
-03F6 GREEK REVERSED LUNATE EPSILON SYMBOL
-03F7 GREEK CAPITAL LETTER SHO
-03F8 GREEK SMALL LETTER SHO
-03F9 GREEK CAPITAL LUNATE SIGMA SYMBOL
-03FA GREEK CAPITAL LETTER SAN
-03FB GREEK SMALL LETTER SAN
-03FC GREEK RHO WITH STROKE SYMBOL
-03FD GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL
-03FE GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL
-03FF GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL
-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
-048A CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
-048B CYRILLIC SMALL LETTER SHORT I WITH TAIL
-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
-04C5 CYRILLIC CAPITAL LETTER EL WITH TAIL
-04C6 CYRILLIC SMALL LETTER EL WITH TAIL
-04C7 CYRILLIC CAPITAL LETTER EN WITH HOOK
-04C8 CYRILLIC SMALL LETTER EN WITH HOOK
-04C9 CYRILLIC CAPITAL LETTER EN WITH TAIL
-04CA CYRILLIC SMALL LETTER EN WITH TAIL
-04CB CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
-04CC CYRILLIC SMALL LETTER KHAKASSIAN CHE
-04CD CYRILLIC CAPITAL LETTER EM WITH TAIL
-04CE CYRILLIC SMALL LETTER EM WITH TAIL
-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
-04F6 CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
-04F7 CYRILLIC SMALL LETTER GHE WITH DESCENDER
-04F8 CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
-04F9 CYRILLIC SMALL LETTER YERU WITH DIAERESIS
-0500 CYRILLIC CAPITAL LETTER KOMI DE
-0501 CYRILLIC SMALL LETTER KOMI DE
-0502 CYRILLIC CAPITAL LETTER KOMI DJE
-0503 CYRILLIC SMALL LETTER KOMI DJE
-0504 CYRILLIC CAPITAL LETTER KOMI ZJE
-0505 CYRILLIC SMALL LETTER KOMI ZJE
-0506 CYRILLIC CAPITAL LETTER KOMI DZJE
-0507 CYRILLIC SMALL LETTER KOMI DZJE
-0508 CYRILLIC CAPITAL LETTER KOMI LJE
-0509 CYRILLIC SMALL LETTER KOMI LJE
-050A CYRILLIC CAPITAL LETTER KOMI NJE
-050B CYRILLIC SMALL LETTER KOMI NJE
-050C CYRILLIC CAPITAL LETTER KOMI SJE
-050D CYRILLIC SMALL LETTER KOMI SJE
-050E CYRILLIC CAPITAL LETTER KOMI TJE
-050F CYRILLIC SMALL LETTER KOMI TJE
-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
-05A2 HEBREW ACCENT ATNAH HAFUKH
-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
-05C5 HEBREW MARK LOWER DOT
-05C6 HEBREW PUNCTUATION NUN HAFUKHA
-05C7 HEBREW POINT QAMATS QATAN
-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
-0600 ARABIC NUMBER SIGN
-0601 ARABIC SIGN SANAH
-0602 ARABIC FOOTNOTE MARKER
-0603 ARABIC SIGN SAFHA
-060B AFGHANI SIGN
-060C ARABIC COMMA
-060D ARABIC DATE SEPARATOR
-060E ARABIC POETIC VERSE SIGN
-060F ARABIC SIGN MISRA
-0610 ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM
-0611 ARABIC SIGN ALAYHE ASSALLAM
-0612 ARABIC SIGN RAHMATULLAH ALAYHE
-0613 ARABIC SIGN RADI ALLAHOU ANHU
-0614 ARABIC SIGN TAKHALLUS
-0615 ARABIC SMALL HIGH TAH
-061B ARABIC SEMICOLON
-061E ARABIC TRIPLE DOT PUNCTUATION MARK
-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
-0656 ARABIC SUBSCRIPT ALEF
-0657 ARABIC INVERTED DAMMA
-0658 ARABIC MARK NOON GHUNNA
-0659 ARABIC ZWARAKAY
-065A ARABIC VOWEL SIGN SMALL V ABOVE
-065B ARABIC VOWEL SIGN INVERTED SMALL V ABOVE
-065C ARABIC VOWEL SIGN DOT BELOW
-065D ARABIC REVERSED DAMMA
-065E ARABIC FATHA WITH TWO DOTS
-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
-066E ARABIC LETTER DOTLESS BEH
-066F ARABIC LETTER DOTLESS QAF
-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
-06EE ARABIC LETTER DAL WITH INVERTED V
-06EF ARABIC LETTER REH WITH INVERTED V
-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
-06FF ARABIC LETTER HEH WITH INVERTED V
-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
-072D SYRIAC LETTER PERSIAN BHETH
-072E SYRIAC LETTER PERSIAN GHAMAL
-072F SYRIAC LETTER PERSIAN DHALATH
-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
-074D SYRIAC LETTER SOGDIAN ZHAIN
-074E SYRIAC LETTER SOGDIAN KHAPH
-074F SYRIAC LETTER SOGDIAN FE
-0750 ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW
-0751 ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE
-0752 ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW
-0753 ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE
-0754 ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE
-0755 ARABIC LETTER BEH WITH INVERTED SMALL V BELOW
-0756 ARABIC LETTER BEH WITH SMALL V
-0757 ARABIC LETTER HAH WITH TWO DOTS ABOVE
-0758 ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW
-0759 ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH
-075A ARABIC LETTER DAL WITH INVERTED SMALL V BELOW
-075B ARABIC LETTER REH WITH STROKE
-075C ARABIC LETTER SEEN WITH FOUR DOTS ABOVE
-075D ARABIC LETTER AIN WITH TWO DOTS ABOVE
-075E ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE
-075F ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE
-0760 ARABIC LETTER FEH WITH TWO DOTS BELOW
-0761 ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW
-0762 ARABIC LETTER KEHEH WITH DOT ABOVE
-0763 ARABIC LETTER KEHEH WITH THREE DOTS ABOVE
-0764 ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW
-0765 ARABIC LETTER MEEM WITH DOT ABOVE
-0766 ARABIC LETTER MEEM WITH DOT BELOW
-0767 ARABIC LETTER NOON WITH TWO DOTS BELOW
-0768 ARABIC LETTER NOON WITH SMALL TAH
-0769 ARABIC LETTER NOON WITH SMALL V
-076A ARABIC LETTER LAM WITH BAR
-076B ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE
-076C ARABIC LETTER REH WITH HAMZA ABOVE
-076D ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE
-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
-07B1 THAANA LETTER NAA
-0901 DEVANAGARI SIGN CANDRABINDU
-0902 DEVANAGARI SIGN ANUSVARA
-0903 DEVANAGARI SIGN VISARGA
-0904 DEVANAGARI LETTER SHORT A
-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
-097D DEVANAGARI LETTER GLOTTAL STOP
-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
-09BD BENGALI SIGN AVAGRAHA
-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
-09CE BENGALI LETTER KHANDA TA
-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
-0A01 GURMUKHI SIGN ADAK BINDI
-0A02 GURMUKHI SIGN BINDI
-0A03 GURMUKHI SIGN VISARGA
-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
-0A8C GUJARATI LETTER VOCALIC L
-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
-0AE1 GUJARATI LETTER VOCALIC LL
-0AE2 GUJARATI VOWEL SIGN VOCALIC L
-0AE3 GUJARATI VOWEL SIGN VOCALIC LL
-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
-0AF1 GUJARATI RUPEE SIGN
-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
-0B35 ORIYA LETTER VA
-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
-0B71 ORIYA LETTER WA
-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
-0BB6 TAMIL LETTER SHA
-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
-0BE6 TAMIL DIGIT ZERO
-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
-0BF3 TAMIL DAY SIGN
-0BF4 TAMIL MONTH SIGN
-0BF5 TAMIL YEAR SIGN
-0BF6 TAMIL DEBIT SIGN
-0BF7 TAMIL CREDIT SIGN
-0BF8 TAMIL AS ABOVE SIGN
-0BF9 TAMIL RUPEE SIGN
-0BFA TAMIL NUMBER SIGN
-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
-0CBC KANNADA SIGN NUKTA
-0CBD KANNADA SIGN AVAGRAHA
-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
-0FD0 TIBETAN MARK BSKA- SHOG GI MGO RGYAN
-0FD1 TIBETAN MARK MNYAM YIG GI MGO RGYAN
-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
-10F7 GEORGIAN LETTER YN
-10F8 GEORGIAN LETTER ELIFI
-10F9 GEORGIAN LETTER TURNED GAN
-10FA GEORGIAN LETTER AIN
-10FB GEORGIAN PARAGRAPH SEPARATOR
-10FC MODIFIER LETTER GEORGIAN NAR
-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
-1207 ETHIOPIC SYLLABLE HOA
-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
-1247 ETHIOPIC SYLLABLE QOA
-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
-1287 ETHIOPIC SYLLABLE XOA
-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
-12AF ETHIOPIC SYLLABLE KOA
-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
-12CF ETHIOPIC SYLLABLE WOA
-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
-12EF ETHIOPIC SYLLABLE YOA
-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
-130F ETHIOPIC SYLLABLE GOA
-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
-131F ETHIOPIC SYLLABLE GGWAA
-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
-1347 ETHIOPIC SYLLABLE TZOA
-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
-135F ETHIOPIC COMBINING GEMINATION MARK
-1360 ETHIOPIC SECTION MARK
-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
-1380 ETHIOPIC SYLLABLE SEBATBEIT MWA
-1381 ETHIOPIC SYLLABLE MWI
-1382 ETHIOPIC SYLLABLE MWEE
-1383 ETHIOPIC SYLLABLE MWE
-1384 ETHIOPIC SYLLABLE SEBATBEIT BWA
-1385 ETHIOPIC SYLLABLE BWI
-1386 ETHIOPIC SYLLABLE BWEE
-1387 ETHIOPIC SYLLABLE BWE
-1388 ETHIOPIC SYLLABLE SEBATBEIT FWA
-1389 ETHIOPIC SYLLABLE FWI
-138A ETHIOPIC SYLLABLE FWEE
-138B ETHIOPIC SYLLABLE FWE
-138C ETHIOPIC SYLLABLE SEBATBEIT PWA
-138D ETHIOPIC SYLLABLE PWI
-138E ETHIOPIC SYLLABLE PWEE
-138F ETHIOPIC SYLLABLE PWE
-1390 ETHIOPIC TONAL MARK YIZET
-1391 ETHIOPIC TONAL MARK DERET
-1392 ETHIOPIC TONAL MARK RIKRIK
-1393 ETHIOPIC TONAL MARK SHORT RIKRIK
-1394 ETHIOPIC TONAL MARK DIFAT
-1395 ETHIOPIC TONAL MARK KENAT
-1396 ETHIOPIC TONAL MARK CHIRET
-1397 ETHIOPIC TONAL MARK HIDET
-1398 ETHIOPIC TONAL MARK DERET-HIDET
-1399 ETHIOPIC TONAL MARK KURT
-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
-1700 TAGALOG LETTER A
-1701 TAGALOG LETTER I
-1702 TAGALOG LETTER U
-1703 TAGALOG LETTER KA
-1704 TAGALOG LETTER GA
-1705 TAGALOG LETTER NGA
-1706 TAGALOG LETTER TA
-1707 TAGALOG LETTER DA
-1708 TAGALOG LETTER NA
-1709 TAGALOG LETTER PA
-170A TAGALOG LETTER BA
-170B TAGALOG LETTER MA
-170C TAGALOG LETTER YA
-170E TAGALOG LETTER LA
-170F TAGALOG LETTER WA
-1710 TAGALOG LETTER SA
-1711 TAGALOG LETTER HA
-1712 TAGALOG VOWEL SIGN I
-1713 TAGALOG VOWEL SIGN U
-1714 TAGALOG SIGN VIRAMA
-1720 HANUNOO LETTER A
-1721 HANUNOO LETTER I
-1722 HANUNOO LETTER U
-1723 HANUNOO LETTER KA
-1724 HANUNOO LETTER GA
-1725 HANUNOO LETTER NGA
-1726 HANUNOO LETTER TA
-1727 HANUNOO LETTER DA
-1728 HANUNOO LETTER NA
-1729 HANUNOO LETTER PA
-172A HANUNOO LETTER BA
-172B HANUNOO LETTER MA
-172C HANUNOO LETTER YA
-172D HANUNOO LETTER RA
-172E HANUNOO LETTER LA
-172F HANUNOO LETTER WA
-1730 HANUNOO LETTER SA
-1731 HANUNOO LETTER HA
-1732 HANUNOO VOWEL SIGN I
-1733 HANUNOO VOWEL SIGN U
-1734 HANUNOO SIGN PAMUDPOD
-1735 PHILIPPINE SINGLE PUNCTUATION
-1736 PHILIPPINE DOUBLE PUNCTUATION
-1740 BUHID LETTER A
-1741 BUHID LETTER I
-1742 BUHID LETTER U
-1743 BUHID LETTER KA
-1744 BUHID LETTER GA
-1745 BUHID LETTER NGA
-1746 BUHID LETTER TA
-1747 BUHID LETTER DA
-1748 BUHID LETTER NA
-1749 BUHID LETTER PA
-174A BUHID LETTER BA
-174B BUHID LETTER MA
-174C BUHID LETTER YA
-174D BUHID LETTER RA
-174E BUHID LETTER LA
-174F BUHID LETTER WA
-1750 BUHID LETTER SA
-1751 BUHID LETTER HA
-1752 BUHID VOWEL SIGN I
-1753 BUHID VOWEL SIGN U
-1760 TAGBANWA LETTER A
-1761 TAGBANWA LETTER I
-1762 TAGBANWA LETTER U
-1763 TAGBANWA LETTER KA
-1764 TAGBANWA LETTER GA
-1765 TAGBANWA LETTER NGA
-1766 TAGBANWA LETTER TA
-1767 TAGBANWA LETTER DA
-1768 TAGBANWA LETTER NA
-1769 TAGBANWA LETTER PA
-176A TAGBANWA LETTER BA
-176B TAGBANWA LETTER MA
-176C TAGBANWA LETTER YA
-176E TAGBANWA LETTER LA
-176F TAGBANWA LETTER WA
-1770 TAGBANWA LETTER SA
-1772 TAGBANWA VOWEL SIGN I
-1773 TAGBANWA VOWEL SIGN U
-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
-17DD KHMER SIGN ATTHACAN
-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
-17F0 KHMER SYMBOL LEK ATTAK SON
-17F1 KHMER SYMBOL LEK ATTAK MUOY
-17F2 KHMER SYMBOL LEK ATTAK PII
-17F3 KHMER SYMBOL LEK ATTAK BEI
-17F4 KHMER SYMBOL LEK ATTAK BUON
-17F5 KHMER SYMBOL LEK ATTAK PRAM
-17F6 KHMER SYMBOL LEK ATTAK PRAM-MUOY
-17F7 KHMER SYMBOL LEK ATTAK PRAM-PII
-17F8 KHMER SYMBOL LEK ATTAK PRAM-BEI
-17F9 KHMER SYMBOL LEK ATTAK PRAM-BUON
-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
-1900 LIMBU VOWEL-CARRIER LETTER
-1901 LIMBU LETTER KA
-1902 LIMBU LETTER KHA
-1903 LIMBU LETTER GA
-1904 LIMBU LETTER GHA
-1905 LIMBU LETTER NGA
-1906 LIMBU LETTER CA
-1907 LIMBU LETTER CHA
-1908 LIMBU LETTER JA
-1909 LIMBU LETTER JHA
-190A LIMBU LETTER YAN
-190B LIMBU LETTER TA
-190C LIMBU LETTER THA
-190D LIMBU LETTER DA
-190E LIMBU LETTER DHA
-190F LIMBU LETTER NA
-1910 LIMBU LETTER PA
-1911 LIMBU LETTER PHA
-1912 LIMBU LETTER BA
-1913 LIMBU LETTER BHA
-1914 LIMBU LETTER MA
-1915 LIMBU LETTER YA
-1916 LIMBU LETTER RA
-1917 LIMBU LETTER LA
-1918 LIMBU LETTER WA
-1919 LIMBU LETTER SHA
-191A LIMBU LETTER SSA
-191B LIMBU LETTER SA
-191C LIMBU LETTER HA
-1920 LIMBU VOWEL SIGN A
-1921 LIMBU VOWEL SIGN I
-1922 LIMBU VOWEL SIGN U
-1923 LIMBU VOWEL SIGN EE
-1924 LIMBU VOWEL SIGN AI
-1925 LIMBU VOWEL SIGN OO
-1926 LIMBU VOWEL SIGN AU
-1927 LIMBU VOWEL SIGN E
-1928 LIMBU VOWEL SIGN O
-1929 LIMBU SUBJOINED LETTER YA
-192A LIMBU SUBJOINED LETTER RA
-192B LIMBU SUBJOINED LETTER WA
-1930 LIMBU SMALL LETTER KA
-1931 LIMBU SMALL LETTER NGA
-1932 LIMBU SMALL LETTER ANUSVARA
-1933 LIMBU SMALL LETTER TA
-1934 LIMBU SMALL LETTER NA
-1935 LIMBU SMALL LETTER PA
-1936 LIMBU SMALL LETTER MA
-1937 LIMBU SMALL LETTER RA
-1938 LIMBU SMALL LETTER LA
-1939 LIMBU SIGN MUKPHRENG
-193A LIMBU SIGN KEMPHRENG
-193B LIMBU SIGN SA-I
-1940 LIMBU SIGN LOO
-1944 LIMBU EXCLAMATION MARK
-1945 LIMBU QUESTION MARK
-1946 LIMBU DIGIT ZERO
-1947 LIMBU DIGIT ONE
-1948 LIMBU DIGIT TWO
-1949 LIMBU DIGIT THREE
-194A LIMBU DIGIT FOUR
-194B LIMBU DIGIT FIVE
-194C LIMBU DIGIT SIX
-194D LIMBU DIGIT SEVEN
-194E LIMBU DIGIT EIGHT
-194F LIMBU DIGIT NINE
-1950 TAI LE LETTER KA
-1951 TAI LE LETTER XA
-1952 TAI LE LETTER NGA
-1953 TAI LE LETTER TSA
-1954 TAI LE LETTER SA
-1955 TAI LE LETTER YA
-1956 TAI LE LETTER TA
-1957 TAI LE LETTER THA
-1958 TAI LE LETTER LA
-1959 TAI LE LETTER PA
-195A TAI LE LETTER PHA
-195B TAI LE LETTER MA
-195C TAI LE LETTER FA
-195D TAI LE LETTER VA
-195E TAI LE LETTER HA
-195F TAI LE LETTER QA
-1960 TAI LE LETTER KHA
-1961 TAI LE LETTER TSHA
-1962 TAI LE LETTER NA
-1963 TAI LE LETTER A
-1964 TAI LE LETTER I
-1965 TAI LE LETTER EE
-1966 TAI LE LETTER EH
-1967 TAI LE LETTER U
-1968 TAI LE LETTER OO
-1969 TAI LE LETTER O
-196A TAI LE LETTER UE
-196B TAI LE LETTER E
-196C TAI LE LETTER AUE
-196D TAI LE LETTER AI
-1970 TAI LE LETTER TONE-2
-1971 TAI LE LETTER TONE-3
-1972 TAI LE LETTER TONE-4
-1973 TAI LE LETTER TONE-5
-1974 TAI LE LETTER TONE-6
-1980 NEW TAI LUE LETTER HIGH QA
-1981 NEW TAI LUE LETTER LOW QA
-1982 NEW TAI LUE LETTER HIGH KA
-1983 NEW TAI LUE LETTER HIGH XA
-1984 NEW TAI LUE LETTER HIGH NGA
-1985 NEW TAI LUE LETTER LOW KA
-1986 NEW TAI LUE LETTER LOW XA
-1987 NEW TAI LUE LETTER LOW NGA
-1988 NEW TAI LUE LETTER HIGH TSA
-1989 NEW TAI LUE LETTER HIGH SA
-198A NEW TAI LUE LETTER HIGH YA
-198B NEW TAI LUE LETTER LOW TSA
-198C NEW TAI LUE LETTER LOW SA
-198D NEW TAI LUE LETTER LOW YA
-198E NEW TAI LUE LETTER HIGH TA
-198F NEW TAI LUE LETTER HIGH THA
-1990 NEW TAI LUE LETTER HIGH NA
-1991 NEW TAI LUE LETTER LOW TA
-1992 NEW TAI LUE LETTER LOW THA
-1993 NEW TAI LUE LETTER LOW NA
-1994 NEW TAI LUE LETTER HIGH PA
-1995 NEW TAI LUE LETTER HIGH PHA
-1996 NEW TAI LUE LETTER HIGH MA
-1997 NEW TAI LUE LETTER LOW PA
-1998 NEW TAI LUE LETTER LOW PHA
-1999 NEW TAI LUE LETTER LOW MA
-199A NEW TAI LUE LETTER HIGH FA
-199B NEW TAI LUE LETTER HIGH VA
-199C NEW TAI LUE LETTER HIGH LA
-199D NEW TAI LUE LETTER LOW FA
-199E NEW TAI LUE LETTER LOW VA
-199F NEW TAI LUE LETTER LOW LA
-19A0 NEW TAI LUE LETTER HIGH HA
-19A1 NEW TAI LUE LETTER HIGH DA
-19A2 NEW TAI LUE LETTER HIGH BA
-19A3 NEW TAI LUE LETTER LOW HA
-19A4 NEW TAI LUE LETTER LOW DA
-19A5 NEW TAI LUE LETTER LOW BA
-19A6 NEW TAI LUE LETTER HIGH KVA
-19A7 NEW TAI LUE LETTER HIGH XVA
-19A8 NEW TAI LUE LETTER LOW KVA
-19A9 NEW TAI LUE LETTER LOW XVA
-19B0 NEW TAI LUE VOWEL SIGN VOWEL SHORTENER
-19B1 NEW TAI LUE VOWEL SIGN AA
-19B2 NEW TAI LUE VOWEL SIGN II
-19B3 NEW TAI LUE VOWEL SIGN U
-19B4 NEW TAI LUE VOWEL SIGN UU
-19B5 NEW TAI LUE VOWEL SIGN E
-19B6 NEW TAI LUE VOWEL SIGN AE
-19B7 NEW TAI LUE VOWEL SIGN O
-19B8 NEW TAI LUE VOWEL SIGN OA
-19B9 NEW TAI LUE VOWEL SIGN UE
-19BA NEW TAI LUE VOWEL SIGN AY
-19BB NEW TAI LUE VOWEL SIGN AAY
-19BC NEW TAI LUE VOWEL SIGN UY
-19BD NEW TAI LUE VOWEL SIGN OY
-19BE NEW TAI LUE VOWEL SIGN OAY
-19BF NEW TAI LUE VOWEL SIGN UEY
-19C0 NEW TAI LUE VOWEL SIGN IY
-19C1 NEW TAI LUE LETTER FINAL V
-19C2 NEW TAI LUE LETTER FINAL NG
-19C3 NEW TAI LUE LETTER FINAL N
-19C4 NEW TAI LUE LETTER FINAL M
-19C5 NEW TAI LUE LETTER FINAL K
-19C6 NEW TAI LUE LETTER FINAL D
-19C7 NEW TAI LUE LETTER FINAL B
-19C8 NEW TAI LUE TONE MARK-1
-19C9 NEW TAI LUE TONE MARK-2
-19D0 NEW TAI LUE DIGIT ZERO
-19D1 NEW TAI LUE DIGIT ONE
-19D2 NEW TAI LUE DIGIT TWO
-19D3 NEW TAI LUE DIGIT THREE
-19D4 NEW TAI LUE DIGIT FOUR
-19D5 NEW TAI LUE DIGIT FIVE
-19D6 NEW TAI LUE DIGIT SIX
-19D7 NEW TAI LUE DIGIT SEVEN
-19D8 NEW TAI LUE DIGIT EIGHT
-19D9 NEW TAI LUE DIGIT NINE
-19DE NEW TAI LUE SIGN LAE
-19DF NEW TAI LUE SIGN LAEV
-19E0 KHMER SYMBOL PATHAMASAT
-19E1 KHMER SYMBOL MUOY KOET
-19E2 KHMER SYMBOL PII KOET
-19E3 KHMER SYMBOL BEI KOET
-19E4 KHMER SYMBOL BUON KOET
-19E5 KHMER SYMBOL PRAM KOET
-19E6 KHMER SYMBOL PRAM-MUOY KOET
-19E7 KHMER SYMBOL PRAM-PII KOET
-19E8 KHMER SYMBOL PRAM-BEI KOET
-19E9 KHMER SYMBOL PRAM-BUON KOET
-19EA KHMER SYMBOL DAP KOET
-19EB KHMER SYMBOL DAP-MUOY KOET
-19EC KHMER SYMBOL DAP-PII KOET
-19ED KHMER SYMBOL DAP-BEI KOET
-19EE KHMER SYMBOL DAP-BUON KOET
-19EF KHMER SYMBOL DAP-PRAM KOET
-19F0 KHMER SYMBOL TUTEYASAT
-19F1 KHMER SYMBOL MUOY ROC
-19F2 KHMER SYMBOL PII ROC
-19F3 KHMER SYMBOL BEI ROC
-19F4 KHMER SYMBOL BUON ROC
-19F5 KHMER SYMBOL PRAM ROC
-19F6 KHMER SYMBOL PRAM-MUOY ROC
-19F7 KHMER SYMBOL PRAM-PII ROC
-19F8 KHMER SYMBOL PRAM-BEI ROC
-19F9 KHMER SYMBOL PRAM-BUON ROC
-19FA KHMER SYMBOL DAP ROC
-19FB KHMER SYMBOL DAP-MUOY ROC
-19FC KHMER SYMBOL DAP-PII ROC
-19FD KHMER SYMBOL DAP-BEI ROC
-19FE KHMER SYMBOL DAP-BUON ROC
-19FF KHMER SYMBOL DAP-PRAM ROC
-1A00 BUGINESE LETTER KA
-1A01 BUGINESE LETTER GA
-1A02 BUGINESE LETTER NGA
-1A03 BUGINESE LETTER NGKA
-1A04 BUGINESE LETTER PA
-1A05 BUGINESE LETTER BA
-1A06 BUGINESE LETTER MA
-1A07 BUGINESE LETTER MPA
-1A08 BUGINESE LETTER TA
-1A09 BUGINESE LETTER DA
-1A0A BUGINESE LETTER NA
-1A0B BUGINESE LETTER NRA
-1A0C BUGINESE LETTER CA
-1A0D BUGINESE LETTER JA
-1A0E BUGINESE LETTER NYA
-1A0F BUGINESE LETTER NYCA
-1A10 BUGINESE LETTER YA
-1A11 BUGINESE LETTER RA
-1A12 BUGINESE LETTER LA
-1A13 BUGINESE LETTER VA
-1A14 BUGINESE LETTER SA
-1A15 BUGINESE LETTER A
-1A16 BUGINESE LETTER HA
-1A17 BUGINESE VOWEL SIGN I
-1A18 BUGINESE VOWEL SIGN U
-1A19 BUGINESE VOWEL SIGN E
-1A1A BUGINESE VOWEL SIGN O
-1A1B BUGINESE VOWEL SIGN AE
-1A1E BUGINESE PALLAWA
-1A1F BUGINESE END OF SECTION
-1D00 LATIN LETTER SMALL CAPITAL A
-1D01 LATIN LETTER SMALL CAPITAL AE
-1D02 LATIN SMALL LETTER TURNED AE
-1D03 LATIN LETTER SMALL CAPITAL BARRED B
-1D04 LATIN LETTER SMALL CAPITAL C
-1D05 LATIN LETTER SMALL CAPITAL D
-1D06 LATIN LETTER SMALL CAPITAL ETH
-1D07 LATIN LETTER SMALL CAPITAL E
-1D08 LATIN SMALL LETTER TURNED OPEN E
-1D09 LATIN SMALL LETTER TURNED I
-1D0A LATIN LETTER SMALL CAPITAL J
-1D0B LATIN LETTER SMALL CAPITAL K
-1D0C LATIN LETTER SMALL CAPITAL L WITH STROKE
-1D0D LATIN LETTER SMALL CAPITAL M
-1D0E LATIN LETTER SMALL CAPITAL REVERSED N
-1D0F LATIN LETTER SMALL CAPITAL O
-1D10 LATIN LETTER SMALL CAPITAL OPEN O
-1D11 LATIN SMALL LETTER SIDEWAYS O
-1D12 LATIN SMALL LETTER SIDEWAYS OPEN O
-1D13 LATIN SMALL LETTER SIDEWAYS O WITH STROKE
-1D14 LATIN SMALL LETTER TURNED OE
-1D15 LATIN LETTER SMALL CAPITAL OU
-1D16 LATIN SMALL LETTER TOP HALF O
-1D17 LATIN SMALL LETTER BOTTOM HALF O
-1D18 LATIN LETTER SMALL CAPITAL P
-1D19 LATIN LETTER SMALL CAPITAL REVERSED R
-1D1A LATIN LETTER SMALL CAPITAL TURNED R
-1D1B LATIN LETTER SMALL CAPITAL T
-1D1C LATIN LETTER SMALL CAPITAL U
-1D1D LATIN SMALL LETTER SIDEWAYS U
-1D1E LATIN SMALL LETTER SIDEWAYS DIAERESIZED U
-1D1F LATIN SMALL LETTER SIDEWAYS TURNED M
-1D20 LATIN LETTER SMALL CAPITAL V
-1D21 LATIN LETTER SMALL CAPITAL W
-1D22 LATIN LETTER SMALL CAPITAL Z
-1D23 LATIN LETTER SMALL CAPITAL EZH
-1D24 LATIN LETTER VOICED LARYNGEAL SPIRANT
-1D25 LATIN LETTER AIN
-1D26 GREEK LETTER SMALL CAPITAL GAMMA
-1D27 GREEK LETTER SMALL CAPITAL LAMDA
-1D28 GREEK LETTER SMALL CAPITAL PI
-1D29 GREEK LETTER SMALL CAPITAL RHO
-1D2A GREEK LETTER SMALL CAPITAL PSI
-1D2B CYRILLIC LETTER SMALL CAPITAL EL
-1D2C MODIFIER LETTER CAPITAL A
-1D2D MODIFIER LETTER CAPITAL AE
-1D2E MODIFIER LETTER CAPITAL B
-1D2F MODIFIER LETTER CAPITAL BARRED B
-1D30 MODIFIER LETTER CAPITAL D
-1D31 MODIFIER LETTER CAPITAL E
-1D32 MODIFIER LETTER CAPITAL REVERSED E
-1D33 MODIFIER LETTER CAPITAL G
-1D34 MODIFIER LETTER CAPITAL H
-1D35 MODIFIER LETTER CAPITAL I
-1D36 MODIFIER LETTER CAPITAL J
-1D37 MODIFIER LETTER CAPITAL K
-1D38 MODIFIER LETTER CAPITAL L
-1D39 MODIFIER LETTER CAPITAL M
-1D3A MODIFIER LETTER CAPITAL N
-1D3B MODIFIER LETTER CAPITAL REVERSED N
-1D3C MODIFIER LETTER CAPITAL O
-1D3D MODIFIER LETTER CAPITAL OU
-1D3E MODIFIER LETTER CAPITAL P
-1D3F MODIFIER LETTER CAPITAL R
-1D40 MODIFIER LETTER CAPITAL T
-1D41 MODIFIER LETTER CAPITAL U
-1D42 MODIFIER LETTER CAPITAL W
-1D43 MODIFIER LETTER SMALL A
-1D44 MODIFIER LETTER SMALL TURNED A
-1D45 MODIFIER LETTER SMALL ALPHA
-1D46 MODIFIER LETTER SMALL TURNED AE
-1D47 MODIFIER LETTER SMALL B
-1D48 MODIFIER LETTER SMALL D
-1D49 MODIFIER LETTER SMALL E
-1D4A MODIFIER LETTER SMALL SCHWA
-1D4B MODIFIER LETTER SMALL OPEN E
-1D4C MODIFIER LETTER SMALL TURNED OPEN E
-1D4D MODIFIER LETTER SMALL G
-1D4E MODIFIER LETTER SMALL TURNED I
-1D4F MODIFIER LETTER SMALL K
-1D50 MODIFIER LETTER SMALL M
-1D51 MODIFIER LETTER SMALL ENG
-1D52 MODIFIER LETTER SMALL O
-1D53 MODIFIER LETTER SMALL OPEN O
-1D54 MODIFIER LETTER SMALL TOP HALF O
-1D55 MODIFIER LETTER SMALL BOTTOM HALF O
-1D56 MODIFIER LETTER SMALL P
-1D57 MODIFIER LETTER SMALL T
-1D58 MODIFIER LETTER SMALL U
-1D59 MODIFIER LETTER SMALL SIDEWAYS U
-1D5A MODIFIER LETTER SMALL TURNED M
-1D5B MODIFIER LETTER SMALL V
-1D5C MODIFIER LETTER SMALL AIN
-1D5D MODIFIER LETTER SMALL BETA
-1D5E MODIFIER LETTER SMALL GREEK GAMMA
-1D5F MODIFIER LETTER SMALL DELTA
-1D60 MODIFIER LETTER SMALL GREEK PHI
-1D61 MODIFIER LETTER SMALL CHI
-1D62 LATIN SUBSCRIPT SMALL LETTER I
-1D63 LATIN SUBSCRIPT SMALL LETTER R
-1D64 LATIN SUBSCRIPT SMALL LETTER U
-1D65 LATIN SUBSCRIPT SMALL LETTER V
-1D66 GREEK SUBSCRIPT SMALL LETTER BETA
-1D67 GREEK SUBSCRIPT SMALL LETTER GAMMA
-1D68 GREEK SUBSCRIPT SMALL LETTER RHO
-1D69 GREEK SUBSCRIPT SMALL LETTER PHI
-1D6A GREEK SUBSCRIPT SMALL LETTER CHI
-1D6B LATIN SMALL LETTER UE
-1D6C LATIN SMALL LETTER B WITH MIDDLE TILDE
-1D6D LATIN SMALL LETTER D WITH MIDDLE TILDE
-1D6E LATIN SMALL LETTER F WITH MIDDLE TILDE
-1D6F LATIN SMALL LETTER M WITH MIDDLE TILDE
-1D70 LATIN SMALL LETTER N WITH MIDDLE TILDE
-1D71 LATIN SMALL LETTER P WITH MIDDLE TILDE
-1D72 LATIN SMALL LETTER R WITH MIDDLE TILDE
-1D73 LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE
-1D74 LATIN SMALL LETTER S WITH MIDDLE TILDE
-1D75 LATIN SMALL LETTER T WITH MIDDLE TILDE
-1D76 LATIN SMALL LETTER Z WITH MIDDLE TILDE
-1D77 LATIN SMALL LETTER TURNED G
-1D78 MODIFIER LETTER CYRILLIC EN
-1D79 LATIN SMALL LETTER INSULAR G
-1D7A LATIN SMALL LETTER TH WITH STRIKETHROUGH
-1D7B LATIN SMALL CAPITAL LETTER I WITH STROKE
-1D7C LATIN SMALL LETTER IOTA WITH STROKE
-1D7D LATIN SMALL LETTER P WITH STROKE
-1D7E LATIN SMALL CAPITAL LETTER U WITH STROKE
-1D7F LATIN SMALL LETTER UPSILON WITH STROKE
-1D80 LATIN SMALL LETTER B WITH PALATAL HOOK
-1D81 LATIN SMALL LETTER D WITH PALATAL HOOK
-1D82 LATIN SMALL LETTER F WITH PALATAL HOOK
-1D83 LATIN SMALL LETTER G WITH PALATAL HOOK
-1D84 LATIN SMALL LETTER K WITH PALATAL HOOK
-1D85 LATIN SMALL LETTER L WITH PALATAL HOOK
-1D86 LATIN SMALL LETTER M WITH PALATAL HOOK
-1D87 LATIN SMALL LETTER N WITH PALATAL HOOK
-1D88 LATIN SMALL LETTER P WITH PALATAL HOOK
-1D89 LATIN SMALL LETTER R WITH PALATAL HOOK
-1D8A LATIN SMALL LETTER S WITH PALATAL HOOK
-1D8B LATIN SMALL LETTER ESH WITH PALATAL HOOK
-1D8C LATIN SMALL LETTER V WITH PALATAL HOOK
-1D8D LATIN SMALL LETTER X WITH PALATAL HOOK
-1D8E LATIN SMALL LETTER Z WITH PALATAL HOOK
-1D8F LATIN SMALL LETTER A WITH RETROFLEX HOOK
-1D90 LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK
-1D91 LATIN SMALL LETTER D WITH HOOK AND TAIL
-1D92 LATIN SMALL LETTER E WITH RETROFLEX HOOK
-1D93 LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK
-1D94 LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK
-1D95 LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK
-1D96 LATIN SMALL LETTER I WITH RETROFLEX HOOK
-1D97 LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK
-1D98 LATIN SMALL LETTER ESH WITH RETROFLEX HOOK
-1D99 LATIN SMALL LETTER U WITH RETROFLEX HOOK
-1D9A LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
-1D9B MODIFIER LETTER SMALL TURNED ALPHA
-1D9C MODIFIER LETTER SMALL C
-1D9D MODIFIER LETTER SMALL C WITH CURL
-1D9E MODIFIER LETTER SMALL ETH
-1D9F MODIFIER LETTER SMALL REVERSED OPEN E
-1DA0 MODIFIER LETTER SMALL F
-1DA1 MODIFIER LETTER SMALL DOTLESS J WITH STROKE
-1DA2 MODIFIER LETTER SMALL SCRIPT G
-1DA3 MODIFIER LETTER SMALL TURNED H
-1DA4 MODIFIER LETTER SMALL I WITH STROKE
-1DA5 MODIFIER LETTER SMALL IOTA
-1DA6 MODIFIER LETTER SMALL CAPITAL I
-1DA7 MODIFIER LETTER SMALL CAPITAL I WITH STROKE
-1DA8 MODIFIER LETTER SMALL J WITH CROSSED-TAIL
-1DA9 MODIFIER LETTER SMALL L WITH RETROFLEX HOOK
-1DAA MODIFIER LETTER SMALL L WITH PALATAL HOOK
-1DAB MODIFIER LETTER SMALL CAPITAL L
-1DAC MODIFIER LETTER SMALL M WITH HOOK
-1DAD MODIFIER LETTER SMALL TURNED M WITH LONG LEG
-1DAE MODIFIER LETTER SMALL N WITH LEFT HOOK
-1DAF MODIFIER LETTER SMALL N WITH RETROFLEX HOOK
-1DB0 MODIFIER LETTER SMALL CAPITAL N
-1DB1 MODIFIER LETTER SMALL BARRED O
-1DB2 MODIFIER LETTER SMALL PHI
-1DB3 MODIFIER LETTER SMALL S WITH HOOK
-1DB4 MODIFIER LETTER SMALL ESH
-1DB5 MODIFIER LETTER SMALL T WITH PALATAL HOOK
-1DB6 MODIFIER LETTER SMALL U BAR
-1DB7 MODIFIER LETTER SMALL UPSILON
-1DB8 MODIFIER LETTER SMALL CAPITAL U
-1DB9 MODIFIER LETTER SMALL V WITH HOOK
-1DBA MODIFIER LETTER SMALL TURNED V
-1DBB MODIFIER LETTER SMALL Z
-1DBC MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK
-1DBD MODIFIER LETTER SMALL Z WITH CURL
-1DBE MODIFIER LETTER SMALL EZH
-1DBF MODIFIER LETTER SMALL THETA
-1DC0 COMBINING DOTTED GRAVE ACCENT
-1DC1 COMBINING DOTTED ACUTE ACCENT
-1DC2 COMBINING SNAKE BELOW
-1DC3 COMBINING SUSPENSION MARK
-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
-2047 DOUBLE QUESTION MARK
-2048 QUESTION EXCLAMATION MARK
-2049 EXCLAMATION QUESTION MARK
-204A TIRONIAN SIGN ET
-204B REVERSED PILCROW SIGN
-204C BLACK LEFTWARDS BULLET
-204D BLACK RIGHTWARDS BULLET
-204E LOW ASTERISK
-204F REVERSED SEMICOLON
-2050 CLOSE UP
-2051 TWO ASTERISKS ALIGNED VERTICALLY
-2052 COMMERCIAL MINUS SIGN
-2053 SWUNG DASH
-2054 INVERTED UNDERTIE
-2055 FLOWER PUNCTUATION MARK
-2056 THREE DOT PUNCTUATION
-2057 QUADRUPLE PRIME
-2058 FOUR DOT PUNCTUATION
-2059 FIVE DOT PUNCTUATION
-205A TWO DOT PUNCTUATION
-205B FOUR DOT MARK
-205C DOTTED CROSS
-205D TRICOLON
-205E VERTICAL FOUR DOTS
-205F MEDIUM MATHEMATICAL SPACE
-2060 WORD JOINER
-2061 FUNCTION APPLICATION
-2062 INVISIBLE TIMES
-2063 INVISIBLE SEPARATOR
-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
-2071 SUPERSCRIPT LATIN SMALL LETTER I
-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
-2090 LATIN SUBSCRIPT SMALL LETTER A
-2091 LATIN SUBSCRIPT SMALL LETTER E
-2092 LATIN SUBSCRIPT SMALL LETTER O
-2093 LATIN SUBSCRIPT SMALL LETTER X
-2094 LATIN SUBSCRIPT SMALL LETTER SCHWA
-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
-20B0 GERMAN PENNY SIGN
-20B1 PESO SIGN
-20B2 GUARANI SIGN
-20B3 AUSTRAL SIGN
-20B4 HRYVNIA SIGN
-20B5 CEDI 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
-20E4 COMBINING ENCLOSING UPWARD POINTING TRIANGLE
-20E5 COMBINING REVERSE SOLIDUS OVERLAY
-20E6 COMBINING DOUBLE VERTICAL STROKE OVERLAY
-20E7 COMBINING ANNUITY SYMBOL
-20E8 COMBINING TRIPLE UNDERDOT
-20E9 COMBINING WIDE BRIDGE ABOVE
-20EA COMBINING LEFTWARDS ARROW OVERLAY
-20EB COMBINING LONG DOUBLE SOLIDUS OVERLAY
-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
-213B FACSIMILE SIGN
-213C DOUBLE-STRUCK SMALL PI
-213D DOUBLE-STRUCK SMALL GAMMA
-213E DOUBLE-STRUCK CAPITAL GAMMA
-213F DOUBLE-STRUCK CAPITAL PI
-2140 DOUBLE-STRUCK N-ARY SUMMATION
-2141 TURNED SANS-SERIF CAPITAL G
-2142 TURNED SANS-SERIF CAPITAL L
-2143 REVERSED SANS-SERIF CAPITAL L
-2144 TURNED SANS-SERIF CAPITAL Y
-2145 DOUBLE-STRUCK ITALIC CAPITAL D
-2146 DOUBLE-STRUCK ITALIC SMALL D
-2147 DOUBLE-STRUCK ITALIC SMALL E
-2148 DOUBLE-STRUCK ITALIC SMALL I
-2149 DOUBLE-STRUCK ITALIC SMALL J
-214A PROPERTY LINE
-214B TURNED AMPERSAND
-214C PER SIGN
-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
-21F4 RIGHT ARROW WITH SMALL CIRCLE
-21F5 DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW
-21F6 THREE RIGHTWARDS ARROWS
-21F7 LEFTWARDS ARROW WITH VERTICAL STROKE
-21F8 RIGHTWARDS ARROW WITH VERTICAL STROKE
-21F9 LEFT RIGHT ARROW WITH VERTICAL STROKE
-21FA LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE
-21FB RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE
-21FC LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE
-21FD LEFTWARDS OPEN-HEADED ARROW
-21FE RIGHTWARDS OPEN-HEADED ARROW
-21FF LEFT RIGHT OPEN-HEADED 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
-22F2 ELEMENT OF WITH LONG HORIZONTAL STROKE
-22F3 ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22F4 SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22F5 ELEMENT OF WITH DOT ABOVE
-22F6 ELEMENT OF WITH OVERBAR
-22F7 SMALL ELEMENT OF WITH OVERBAR
-22F8 ELEMENT OF WITH UNDERBAR
-22F9 ELEMENT OF WITH TWO HORIZONTAL STROKES
-22FA CONTAINS WITH LONG HORIZONTAL STROKE
-22FB CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22FC SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22FD CONTAINS WITH OVERBAR
-22FE SMALL CONTAINS WITH OVERBAR
-22FF Z NOTATION BAG MEMBERSHIP
-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
-237C RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
-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
-239B LEFT PARENTHESIS UPPER HOOK
-239C LEFT PARENTHESIS EXTENSION
-239D LEFT PARENTHESIS LOWER HOOK
-239E RIGHT PARENTHESIS UPPER HOOK
-239F RIGHT PARENTHESIS EXTENSION
-23A0 RIGHT PARENTHESIS LOWER HOOK
-23A1 LEFT SQUARE BRACKET UPPER CORNER
-23A2 LEFT SQUARE BRACKET EXTENSION
-23A3 LEFT SQUARE BRACKET LOWER CORNER
-23A4 RIGHT SQUARE BRACKET UPPER CORNER
-23A5 RIGHT SQUARE BRACKET EXTENSION
-23A6 RIGHT SQUARE BRACKET LOWER CORNER
-23A7 LEFT CURLY BRACKET UPPER HOOK
-23A8 LEFT CURLY BRACKET MIDDLE PIECE
-23A9 LEFT CURLY BRACKET LOWER HOOK
-23AA CURLY BRACKET EXTENSION
-23AB RIGHT CURLY BRACKET UPPER HOOK
-23AC RIGHT CURLY BRACKET MIDDLE PIECE
-23AD RIGHT CURLY BRACKET LOWER HOOK
-23AE INTEGRAL EXTENSION
-23AF HORIZONTAL LINE EXTENSION
-23B0 UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION
-23B1 UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION
-23B2 SUMMATION TOP
-23B3 SUMMATION BOTTOM
-23B4 TOP SQUARE BRACKET
-23B5 BOTTOM SQUARE BRACKET
-23B6 BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET
-23B7 RADICAL SYMBOL BOTTOM
-23B8 LEFT VERTICAL BOX LINE
-23B9 RIGHT VERTICAL BOX LINE
-23BA HORIZONTAL SCAN LINE-1
-23BB HORIZONTAL SCAN LINE-3
-23BC HORIZONTAL SCAN LINE-7
-23BD HORIZONTAL SCAN LINE-9
-23BE DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT
-23BF DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT
-23C0 DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE
-23C1 DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE
-23C2 DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE
-23C3 DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE
-23C4 DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE
-23C5 DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE
-23C6 DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE
-23C7 DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE
-23C8 DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE
-23C9 DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL
-23CA DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL
-23CB DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT
-23CC DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT
-23CD SQUARE FOOT
-23CE RETURN SYMBOL
-23CF EJECT SYMBOL
-23D0 VERTICAL LINE EXTENSION
-23D1 METRICAL BREVE
-23D2 METRICAL LONG OVER SHORT
-23D3 METRICAL SHORT OVER LONG
-23D4 METRICAL LONG OVER TWO SHORTS
-23D5 METRICAL TWO SHORTS OVER LONG
-23D6 METRICAL TWO SHORTS JOINED
-23D7 METRICAL TRISEME
-23D8 METRICAL TETRASEME
-23D9 METRICAL PENTASEME
-23DA EARTH GROUND
-23DB FUSE
-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
-24EB NEGATIVE CIRCLED NUMBER ELEVEN
-24EC NEGATIVE CIRCLED NUMBER TWELVE
-24ED NEGATIVE CIRCLED NUMBER THIRTEEN
-24EE NEGATIVE CIRCLED NUMBER FOURTEEN
-24EF NEGATIVE CIRCLED NUMBER FIFTEEN
-24F0 NEGATIVE CIRCLED NUMBER SIXTEEN
-24F1 NEGATIVE CIRCLED NUMBER SEVENTEEN
-24F2 NEGATIVE CIRCLED NUMBER EIGHTEEN
-24F3 NEGATIVE CIRCLED NUMBER NINETEEN
-24F4 NEGATIVE CIRCLED NUMBER TWENTY
-24F5 DOUBLE CIRCLED DIGIT ONE
-24F6 DOUBLE CIRCLED DIGIT TWO
-24F7 DOUBLE CIRCLED DIGIT THREE
-24F8 DOUBLE CIRCLED DIGIT FOUR
-24F9 DOUBLE CIRCLED DIGIT FIVE
-24FA DOUBLE CIRCLED DIGIT SIX
-24FB DOUBLE CIRCLED DIGIT SEVEN
-24FC DOUBLE CIRCLED DIGIT EIGHT
-24FD DOUBLE CIRCLED DIGIT NINE
-24FE DOUBLE CIRCLED NUMBER TEN
-24FF NEGATIVE 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
-2596 QUADRANT LOWER LEFT
-2597 QUADRANT LOWER RIGHT
-2598 QUADRANT UPPER LEFT
-2599 QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT
-259A QUADRANT UPPER LEFT AND LOWER RIGHT
-259B QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT
-259C QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT
-259D QUADRANT UPPER RIGHT
-259E QUADRANT UPPER RIGHT AND LOWER LEFT
-259F QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT
-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
-25F8 UPPER LEFT TRIANGLE
-25F9 UPPER RIGHT TRIANGLE
-25FA LOWER LEFT TRIANGLE
-25FB WHITE MEDIUM SQUARE
-25FC BLACK MEDIUM SQUARE
-25FD WHITE MEDIUM SMALL SQUARE
-25FE BLACK MEDIUM SMALL SQUARE
-25FF LOWER RIGHT TRIANGLE
-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
-2614 UMBRELLA WITH RAIN DROPS
-2615 HOT BEVERAGE
-2616 WHITE SHOGI PIECE
-2617 BLACK SHOGI PIECE
-2618 SHAMROCK
-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
-2672 UNIVERSAL RECYCLING SYMBOL
-2673 RECYCLING SYMBOL FOR TYPE-1 PLASTICS
-2674 RECYCLING SYMBOL FOR TYPE-2 PLASTICS
-2675 RECYCLING SYMBOL FOR TYPE-3 PLASTICS
-2676 RECYCLING SYMBOL FOR TYPE-4 PLASTICS
-2677 RECYCLING SYMBOL FOR TYPE-5 PLASTICS
-2678 RECYCLING SYMBOL FOR TYPE-6 PLASTICS
-2679 RECYCLING SYMBOL FOR TYPE-7 PLASTICS
-267A RECYCLING SYMBOL FOR GENERIC MATERIALS
-267B BLACK UNIVERSAL RECYCLING SYMBOL
-267C RECYCLED PAPER SYMBOL
-267D PARTIALLY-RECYCLED PAPER SYMBOL
-267E PERMANENT PAPER SIGN
-267F WHEELCHAIR SYMBOL
-2680 DIE FACE-1
-2681 DIE FACE-2
-2682 DIE FACE-3
-2683 DIE FACE-4
-2684 DIE FACE-5
-2685 DIE FACE-6
-2686 WHITE CIRCLE WITH DOT RIGHT
-2687 WHITE CIRCLE WITH TWO DOTS
-2688 BLACK CIRCLE WITH WHITE DOT RIGHT
-2689 BLACK CIRCLE WITH TWO WHITE DOTS
-268A MONOGRAM FOR YANG
-268B MONOGRAM FOR YIN
-268C DIGRAM FOR GREATER YANG
-268D DIGRAM FOR LESSER YIN
-268E DIGRAM FOR LESSER YANG
-268F DIGRAM FOR GREATER YIN
-2690 WHITE FLAG
-2691 BLACK FLAG
-2692 HAMMER AND PICK
-2693 ANCHOR
-2694 CROSSED SWORDS
-2695 STAFF OF AESCULAPIUS
-2696 SCALES
-2697 ALEMBIC
-2698 FLOWER
-2699 GEAR
-269A STAFF OF HERMES
-269B ATOM SYMBOL
-269C FLEUR-DE-LIS
-26A0 WARNING SIGN
-26A1 HIGH VOLTAGE SIGN
-26A2 DOUBLED FEMALE SIGN
-26A3 DOUBLED MALE SIGN
-26A4 INTERLOCKED FEMALE AND MALE SIGN
-26A5 MALE AND FEMALE SIGN
-26A6 MALE WITH STROKE SIGN
-26A7 MALE WITH STROKE AND MALE AND FEMALE SIGN
-26A8 VERTICAL MALE WITH STROKE SIGN
-26A9 HORIZONTAL MALE WITH STROKE SIGN
-26AA MEDIUM WHITE CIRCLE
-26AB MEDIUM BLACK CIRCLE
-26AC MEDIUM SMALL WHITE CIRCLE
-26AD MARRIAGE SYMBOL
-26AE DIVORCE SYMBOL
-26AF UNMARRIED PARTNERSHIP SYMBOL
-26B0 COFFIN
-26B1 FUNERAL URN
-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
-2768 MEDIUM LEFT PARENTHESIS ORNAMENT
-2769 MEDIUM RIGHT PARENTHESIS ORNAMENT
-276A MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
-276B MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
-276C MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
-276D MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
-276E HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
-276F HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
-2770 HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
-2771 HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
-2772 LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
-2773 LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
-2774 MEDIUM LEFT CURLY BRACKET ORNAMENT
-2775 MEDIUM RIGHT CURLY BRACKET ORNAMENT
-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
-27C0 THREE DIMENSIONAL ANGLE
-27C1 WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE
-27C2 PERPENDICULAR
-27C3 OPEN SUBSET
-27C4 OPEN SUPERSET
-27C5 LEFT S-SHAPED BAG DELIMITER
-27C6 RIGHT S-SHAPED BAG DELIMITER
-27D0 WHITE DIAMOND WITH CENTRED DOT
-27D1 AND WITH DOT
-27D2 ELEMENT OF OPENING UPWARDS
-27D3 LOWER RIGHT CORNER WITH DOT
-27D4 UPPER LEFT CORNER WITH DOT
-27D5 LEFT OUTER JOIN
-27D6 RIGHT OUTER JOIN
-27D7 FULL OUTER JOIN
-27D8 LARGE UP TACK
-27D9 LARGE DOWN TACK
-27DA LEFT AND RIGHT DOUBLE TURNSTILE
-27DB LEFT AND RIGHT TACK
-27DC LEFT MULTIMAP
-27DD LONG RIGHT TACK
-27DE LONG LEFT TACK
-27DF UP TACK WITH CIRCLE ABOVE
-27E0 LOZENGE DIVIDED BY HORIZONTAL RULE
-27E1 WHITE CONCAVE-SIDED DIAMOND
-27E2 WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK
-27E3 WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK
-27E4 WHITE SQUARE WITH LEFTWARDS TICK
-27E5 WHITE SQUARE WITH RIGHTWARDS TICK
-27E6 MATHEMATICAL LEFT WHITE SQUARE BRACKET
-27E7 MATHEMATICAL RIGHT WHITE SQUARE BRACKET
-27E8 MATHEMATICAL LEFT ANGLE BRACKET
-27E9 MATHEMATICAL RIGHT ANGLE BRACKET
-27EA MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
-27EB MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
-27F0 UPWARDS QUADRUPLE ARROW
-27F1 DOWNWARDS QUADRUPLE ARROW
-27F2 ANTICLOCKWISE GAPPED CIRCLE ARROW
-27F3 CLOCKWISE GAPPED CIRCLE ARROW
-27F4 RIGHT ARROW WITH CIRCLED PLUS
-27F5 LONG LEFTWARDS ARROW
-27F6 LONG RIGHTWARDS ARROW
-27F7 LONG LEFT RIGHT ARROW
-27F8 LONG LEFTWARDS DOUBLE ARROW
-27F9 LONG RIGHTWARDS DOUBLE ARROW
-27FA LONG LEFT RIGHT DOUBLE ARROW
-27FB LONG LEFTWARDS ARROW FROM BAR
-27FC LONG RIGHTWARDS ARROW FROM BAR
-27FD LONG LEFTWARDS DOUBLE ARROW FROM BAR
-27FE LONG RIGHTWARDS DOUBLE ARROW FROM BAR
-27FF LONG RIGHTWARDS SQUIGGLE 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
-2900 RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
-2901 RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE
-2902 LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE
-2903 RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE
-2904 LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE
-2905 RIGHTWARDS TWO-HEADED ARROW FROM BAR
-2906 LEFTWARDS DOUBLE ARROW FROM BAR
-2907 RIGHTWARDS DOUBLE ARROW FROM BAR
-2908 DOWNWARDS ARROW WITH HORIZONTAL STROKE
-2909 UPWARDS ARROW WITH HORIZONTAL STROKE
-290A UPWARDS TRIPLE ARROW
-290B DOWNWARDS TRIPLE ARROW
-290C LEFTWARDS DOUBLE DASH ARROW
-290D RIGHTWARDS DOUBLE DASH ARROW
-290E LEFTWARDS TRIPLE DASH ARROW
-290F RIGHTWARDS TRIPLE DASH ARROW
-2910 RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW
-2911 RIGHTWARDS ARROW WITH DOTTED STEM
-2912 UPWARDS ARROW TO BAR
-2913 DOWNWARDS ARROW TO BAR
-2914 RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE
-2915 RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
-2916 RIGHTWARDS TWO-HEADED ARROW WITH TAIL
-2917 RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE
-2918 RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
-2919 LEFTWARDS ARROW-TAIL
-291A RIGHTWARDS ARROW-TAIL
-291B LEFTWARDS DOUBLE ARROW-TAIL
-291C RIGHTWARDS DOUBLE ARROW-TAIL
-291D LEFTWARDS ARROW TO BLACK DIAMOND
-291E RIGHTWARDS ARROW TO BLACK DIAMOND
-291F LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND
-2920 RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND
-2921 NORTH WEST AND SOUTH EAST ARROW
-2922 NORTH EAST AND SOUTH WEST ARROW
-2923 NORTH WEST ARROW WITH HOOK
-2924 NORTH EAST ARROW WITH HOOK
-2925 SOUTH EAST ARROW WITH HOOK
-2926 SOUTH WEST ARROW WITH HOOK
-2927 NORTH WEST ARROW AND NORTH EAST ARROW
-2928 NORTH EAST ARROW AND SOUTH EAST ARROW
-2929 SOUTH EAST ARROW AND SOUTH WEST ARROW
-292A SOUTH WEST ARROW AND NORTH WEST ARROW
-292B RISING DIAGONAL CROSSING FALLING DIAGONAL
-292C FALLING DIAGONAL CROSSING RISING DIAGONAL
-292D SOUTH EAST ARROW CROSSING NORTH EAST ARROW
-292E NORTH EAST ARROW CROSSING SOUTH EAST ARROW
-292F FALLING DIAGONAL CROSSING NORTH EAST ARROW
-2930 RISING DIAGONAL CROSSING SOUTH EAST ARROW
-2931 NORTH EAST ARROW CROSSING NORTH WEST ARROW
-2932 NORTH WEST ARROW CROSSING NORTH EAST ARROW
-2933 WAVE ARROW POINTING DIRECTLY RIGHT
-2934 ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS
-2935 ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS
-2936 ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS
-2937 ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS
-2938 RIGHT-SIDE ARC CLOCKWISE ARROW
-2939 LEFT-SIDE ARC ANTICLOCKWISE ARROW
-293A TOP ARC ANTICLOCKWISE ARROW
-293B BOTTOM ARC ANTICLOCKWISE ARROW
-293C TOP ARC CLOCKWISE ARROW WITH MINUS
-293D TOP ARC ANTICLOCKWISE ARROW WITH PLUS
-293E LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW
-293F LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW
-2940 ANTICLOCKWISE CLOSED CIRCLE ARROW
-2941 CLOCKWISE CLOSED CIRCLE ARROW
-2942 RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW
-2943 LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW
-2944 SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW
-2945 RIGHTWARDS ARROW WITH PLUS BELOW
-2946 LEFTWARDS ARROW WITH PLUS BELOW
-2947 RIGHTWARDS ARROW THROUGH X
-2948 LEFT RIGHT ARROW THROUGH SMALL CIRCLE
-2949 UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE
-294A LEFT BARB UP RIGHT BARB DOWN HARPOON
-294B LEFT BARB DOWN RIGHT BARB UP HARPOON
-294C UP BARB RIGHT DOWN BARB LEFT HARPOON
-294D UP BARB LEFT DOWN BARB RIGHT HARPOON
-294E LEFT BARB UP RIGHT BARB UP HARPOON
-294F UP BARB RIGHT DOWN BARB RIGHT HARPOON
-2950 LEFT BARB DOWN RIGHT BARB DOWN HARPOON
-2951 UP BARB LEFT DOWN BARB LEFT HARPOON
-2952 LEFTWARDS HARPOON WITH BARB UP TO BAR
-2953 RIGHTWARDS HARPOON WITH BARB UP TO BAR
-2954 UPWARDS HARPOON WITH BARB RIGHT TO BAR
-2955 DOWNWARDS HARPOON WITH BARB RIGHT TO BAR
-2956 LEFTWARDS HARPOON WITH BARB DOWN TO BAR
-2957 RIGHTWARDS HARPOON WITH BARB DOWN TO BAR
-2958 UPWARDS HARPOON WITH BARB LEFT TO BAR
-2959 DOWNWARDS HARPOON WITH BARB LEFT TO BAR
-295A LEFTWARDS HARPOON WITH BARB UP FROM BAR
-295B RIGHTWARDS HARPOON WITH BARB UP FROM BAR
-295C UPWARDS HARPOON WITH BARB RIGHT FROM BAR
-295D DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR
-295E LEFTWARDS HARPOON WITH BARB DOWN FROM BAR
-295F RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR
-2960 UPWARDS HARPOON WITH BARB LEFT FROM BAR
-2961 DOWNWARDS HARPOON WITH BARB LEFT FROM BAR
-2962 LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN
-2963 UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
-2964 RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
-2965 DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
-2966 LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP
-2967 LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
-2968 RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP
-2969 RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN
-296A LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
-296B LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
-296C RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
-296D RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
-296E UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
-296F DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
-2970 RIGHT DOUBLE ARROW WITH ROUNDED HEAD
-2971 EQUALS SIGN ABOVE RIGHTWARDS ARROW
-2972 TILDE OPERATOR ABOVE RIGHTWARDS ARROW
-2973 LEFTWARDS ARROW ABOVE TILDE OPERATOR
-2974 RIGHTWARDS ARROW ABOVE TILDE OPERATOR
-2975 RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO
-2976 LESS-THAN ABOVE LEFTWARDS ARROW
-2977 LEFTWARDS ARROW THROUGH LESS-THAN
-2978 GREATER-THAN ABOVE RIGHTWARDS ARROW
-2979 SUBSET ABOVE RIGHTWARDS ARROW
-297A LEFTWARDS ARROW THROUGH SUBSET
-297B SUPERSET ABOVE LEFTWARDS ARROW
-297C LEFT FISH TAIL
-297D RIGHT FISH TAIL
-297E UP FISH TAIL
-297F DOWN FISH TAIL
-2980 TRIPLE VERTICAL BAR DELIMITER
-2981 Z NOTATION SPOT
-2982 Z NOTATION TYPE COLON
-2983 LEFT WHITE CURLY BRACKET
-2984 RIGHT WHITE CURLY BRACKET
-2985 LEFT WHITE PARENTHESIS
-2986 RIGHT WHITE PARENTHESIS
-2987 Z NOTATION LEFT IMAGE BRACKET
-2988 Z NOTATION RIGHT IMAGE BRACKET
-2989 Z NOTATION LEFT BINDING BRACKET
-298A Z NOTATION RIGHT BINDING BRACKET
-298B LEFT SQUARE BRACKET WITH UNDERBAR
-298C RIGHT SQUARE BRACKET WITH UNDERBAR
-298D LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
-298E RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-298F LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-2990 RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
-2991 LEFT ANGLE BRACKET WITH DOT
-2992 RIGHT ANGLE BRACKET WITH DOT
-2993 LEFT ARC LESS-THAN BRACKET
-2994 RIGHT ARC GREATER-THAN BRACKET
-2995 DOUBLE LEFT ARC GREATER-THAN BRACKET
-2996 DOUBLE RIGHT ARC LESS-THAN BRACKET
-2997 LEFT BLACK TORTOISE SHELL BRACKET
-2998 RIGHT BLACK TORTOISE SHELL BRACKET
-2999 DOTTED FENCE
-299A VERTICAL ZIGZAG LINE
-299B MEASURED ANGLE OPENING LEFT
-299C RIGHT ANGLE VARIANT WITH SQUARE
-299D MEASURED RIGHT ANGLE WITH DOT
-299E ANGLE WITH S INSIDE
-299F ACUTE ANGLE
-29A0 SPHERICAL ANGLE OPENING LEFT
-29A1 SPHERICAL ANGLE OPENING UP
-29A2 TURNED ANGLE
-29A3 REVERSED ANGLE
-29A4 ANGLE WITH UNDERBAR
-29A5 REVERSED ANGLE WITH UNDERBAR
-29A6 OBLIQUE ANGLE OPENING UP
-29A7 OBLIQUE ANGLE OPENING DOWN
-29A8 MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT
-29A9 MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT
-29AA MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT
-29AB MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT
-29AC MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP
-29AD MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP
-29AE MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN
-29AF MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN
-29B0 REVERSED EMPTY SET
-29B1 EMPTY SET WITH OVERBAR
-29B2 EMPTY SET WITH SMALL CIRCLE ABOVE
-29B3 EMPTY SET WITH RIGHT ARROW ABOVE
-29B4 EMPTY SET WITH LEFT ARROW ABOVE
-29B5 CIRCLE WITH HORIZONTAL BAR
-29B6 CIRCLED VERTICAL BAR
-29B7 CIRCLED PARALLEL
-29B8 CIRCLED REVERSE SOLIDUS
-29B9 CIRCLED PERPENDICULAR
-29BA CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR
-29BB CIRCLE WITH SUPERIMPOSED X
-29BC CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN
-29BD UP ARROW THROUGH CIRCLE
-29BE CIRCLED WHITE BULLET
-29BF CIRCLED BULLET
-29C0 CIRCLED LESS-THAN
-29C1 CIRCLED GREATER-THAN
-29C2 CIRCLE WITH SMALL CIRCLE TO THE RIGHT
-29C3 CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT
-29C4 SQUARED RISING DIAGONAL SLASH
-29C5 SQUARED FALLING DIAGONAL SLASH
-29C6 SQUARED ASTERISK
-29C7 SQUARED SMALL CIRCLE
-29C8 SQUARED SQUARE
-29C9 TWO JOINED SQUARES
-29CA TRIANGLE WITH DOT ABOVE
-29CB TRIANGLE WITH UNDERBAR
-29CC S IN TRIANGLE
-29CD TRIANGLE WITH SERIFS AT BOTTOM
-29CE RIGHT TRIANGLE ABOVE LEFT TRIANGLE
-29CF LEFT TRIANGLE BESIDE VERTICAL BAR
-29D0 VERTICAL BAR BESIDE RIGHT TRIANGLE
-29D1 BOWTIE WITH LEFT HALF BLACK
-29D2 BOWTIE WITH RIGHT HALF BLACK
-29D3 BLACK BOWTIE
-29D4 TIMES WITH LEFT HALF BLACK
-29D5 TIMES WITH RIGHT HALF BLACK
-29D6 WHITE HOURGLASS
-29D7 BLACK HOURGLASS
-29D8 LEFT WIGGLY FENCE
-29D9 RIGHT WIGGLY FENCE
-29DA LEFT DOUBLE WIGGLY FENCE
-29DB RIGHT DOUBLE WIGGLY FENCE
-29DC INCOMPLETE INFINITY
-29DD TIE OVER INFINITY
-29DE INFINITY NEGATED WITH VERTICAL BAR
-29DF DOUBLE-ENDED MULTIMAP
-29E0 SQUARE WITH CONTOURED OUTLINE
-29E1 INCREASES AS
-29E2 SHUFFLE PRODUCT
-29E3 EQUALS SIGN AND SLANTED PARALLEL
-29E4 EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE
-29E5 IDENTICAL TO AND SLANTED PARALLEL
-29E6 GLEICH STARK
-29E7 THERMODYNAMIC
-29E8 DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK
-29E9 DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK
-29EA BLACK DIAMOND WITH DOWN ARROW
-29EB BLACK LOZENGE
-29EC WHITE CIRCLE WITH DOWN ARROW
-29ED BLACK CIRCLE WITH DOWN ARROW
-29EE ERROR-BARRED WHITE SQUARE
-29EF ERROR-BARRED BLACK SQUARE
-29F0 ERROR-BARRED WHITE DIAMOND
-29F1 ERROR-BARRED BLACK DIAMOND
-29F2 ERROR-BARRED WHITE CIRCLE
-29F3 ERROR-BARRED BLACK CIRCLE
-29F4 RULE-DELAYED
-29F5 REVERSE SOLIDUS OPERATOR
-29F6 SOLIDUS WITH OVERBAR
-29F7 REVERSE SOLIDUS WITH HORIZONTAL STROKE
-29F8 BIG SOLIDUS
-29F9 BIG REVERSE SOLIDUS
-29FA DOUBLE PLUS
-29FB TRIPLE PLUS
-29FC LEFT-POINTING CURVED ANGLE BRACKET
-29FD RIGHT-POINTING CURVED ANGLE BRACKET
-29FE TINY
-29FF MINY
-2A00 N-ARY CIRCLED DOT OPERATOR
-2A01 N-ARY CIRCLED PLUS OPERATOR
-2A02 N-ARY CIRCLED TIMES OPERATOR
-2A03 N-ARY UNION OPERATOR WITH DOT
-2A04 N-ARY UNION OPERATOR WITH PLUS
-2A05 N-ARY SQUARE INTERSECTION OPERATOR
-2A06 N-ARY SQUARE UNION OPERATOR
-2A07 TWO LOGICAL AND OPERATOR
-2A08 TWO LOGICAL OR OPERATOR
-2A09 N-ARY TIMES OPERATOR
-2A0A MODULO TWO SUM
-2A0B SUMMATION WITH INTEGRAL
-2A0C QUADRUPLE INTEGRAL OPERATOR
-2A0D FINITE PART INTEGRAL
-2A0E INTEGRAL WITH DOUBLE STROKE
-2A0F INTEGRAL AVERAGE WITH SLASH
-2A10 CIRCULATION FUNCTION
-2A11 ANTICLOCKWISE INTEGRATION
-2A12 LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE
-2A13 LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE
-2A14 LINE INTEGRATION NOT INCLUDING THE POLE
-2A15 INTEGRAL AROUND A POINT OPERATOR
-2A16 QUATERNION INTEGRAL OPERATOR
-2A17 INTEGRAL WITH LEFTWARDS ARROW WITH HOOK
-2A18 INTEGRAL WITH TIMES SIGN
-2A19 INTEGRAL WITH INTERSECTION
-2A1A INTEGRAL WITH UNION
-2A1B INTEGRAL WITH OVERBAR
-2A1C INTEGRAL WITH UNDERBAR
-2A1D JOIN
-2A1E LARGE LEFT TRIANGLE OPERATOR
-2A1F Z NOTATION SCHEMA COMPOSITION
-2A20 Z NOTATION SCHEMA PIPING
-2A21 Z NOTATION SCHEMA PROJECTION
-2A22 PLUS SIGN WITH SMALL CIRCLE ABOVE
-2A23 PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE
-2A24 PLUS SIGN WITH TILDE ABOVE
-2A25 PLUS SIGN WITH DOT BELOW
-2A26 PLUS SIGN WITH TILDE BELOW
-2A27 PLUS SIGN WITH SUBSCRIPT TWO
-2A28 PLUS SIGN WITH BLACK TRIANGLE
-2A29 MINUS SIGN WITH COMMA ABOVE
-2A2A MINUS SIGN WITH DOT BELOW
-2A2B MINUS SIGN WITH FALLING DOTS
-2A2C MINUS SIGN WITH RISING DOTS
-2A2D PLUS SIGN IN LEFT HALF CIRCLE
-2A2E PLUS SIGN IN RIGHT HALF CIRCLE
-2A2F VECTOR OR CROSS PRODUCT
-2A30 MULTIPLICATION SIGN WITH DOT ABOVE
-2A31 MULTIPLICATION SIGN WITH UNDERBAR
-2A32 SEMIDIRECT PRODUCT WITH BOTTOM CLOSED
-2A33 SMASH PRODUCT
-2A34 MULTIPLICATION SIGN IN LEFT HALF CIRCLE
-2A35 MULTIPLICATION SIGN IN RIGHT HALF CIRCLE
-2A36 CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT
-2A37 MULTIPLICATION SIGN IN DOUBLE CIRCLE
-2A38 CIRCLED DIVISION SIGN
-2A39 PLUS SIGN IN TRIANGLE
-2A3A MINUS SIGN IN TRIANGLE
-2A3B MULTIPLICATION SIGN IN TRIANGLE
-2A3C INTERIOR PRODUCT
-2A3D RIGHTHAND INTERIOR PRODUCT
-2A3E Z NOTATION RELATIONAL COMPOSITION
-2A3F AMALGAMATION OR COPRODUCT
-2A40 INTERSECTION WITH DOT
-2A41 UNION WITH MINUS SIGN
-2A42 UNION WITH OVERBAR
-2A43 INTERSECTION WITH OVERBAR
-2A44 INTERSECTION WITH LOGICAL AND
-2A45 UNION WITH LOGICAL OR
-2A46 UNION ABOVE INTERSECTION
-2A47 INTERSECTION ABOVE UNION
-2A48 UNION ABOVE BAR ABOVE INTERSECTION
-2A49 INTERSECTION ABOVE BAR ABOVE UNION
-2A4A UNION BESIDE AND JOINED WITH UNION
-2A4B INTERSECTION BESIDE AND JOINED WITH INTERSECTION
-2A4C CLOSED UNION WITH SERIFS
-2A4D CLOSED INTERSECTION WITH SERIFS
-2A4E DOUBLE SQUARE INTERSECTION
-2A4F DOUBLE SQUARE UNION
-2A50 CLOSED UNION WITH SERIFS AND SMASH PRODUCT
-2A51 LOGICAL AND WITH DOT ABOVE
-2A52 LOGICAL OR WITH DOT ABOVE
-2A53 DOUBLE LOGICAL AND
-2A54 DOUBLE LOGICAL OR
-2A55 TWO INTERSECTING LOGICAL AND
-2A56 TWO INTERSECTING LOGICAL OR
-2A57 SLOPING LARGE OR
-2A58 SLOPING LARGE AND
-2A59 LOGICAL OR OVERLAPPING LOGICAL AND
-2A5A LOGICAL AND WITH MIDDLE STEM
-2A5B LOGICAL OR WITH MIDDLE STEM
-2A5C LOGICAL AND WITH HORIZONTAL DASH
-2A5D LOGICAL OR WITH HORIZONTAL DASH
-2A5E LOGICAL AND WITH DOUBLE OVERBAR
-2A5F LOGICAL AND WITH UNDERBAR
-2A60 LOGICAL AND WITH DOUBLE UNDERBAR
-2A61 SMALL VEE WITH UNDERBAR
-2A62 LOGICAL OR WITH DOUBLE OVERBAR
-2A63 LOGICAL OR WITH DOUBLE UNDERBAR
-2A64 Z NOTATION DOMAIN ANTIRESTRICTION
-2A65 Z NOTATION RANGE ANTIRESTRICTION
-2A66 EQUALS SIGN WITH DOT BELOW
-2A67 IDENTICAL WITH DOT ABOVE
-2A68 TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE
-2A69 TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE
-2A6A TILDE OPERATOR WITH DOT ABOVE
-2A6B TILDE OPERATOR WITH RISING DOTS
-2A6C SIMILAR MINUS SIMILAR
-2A6D CONGRUENT WITH DOT ABOVE
-2A6E EQUALS WITH ASTERISK
-2A6F ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT
-2A70 APPROXIMATELY EQUAL OR EQUAL TO
-2A71 EQUALS SIGN ABOVE PLUS SIGN
-2A72 PLUS SIGN ABOVE EQUALS SIGN
-2A73 EQUALS SIGN ABOVE TILDE OPERATOR
-2A74 DOUBLE COLON EQUAL
-2A75 TWO CONSECUTIVE EQUALS SIGNS
-2A76 THREE CONSECUTIVE EQUALS SIGNS
-2A77 EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW
-2A78 EQUIVALENT WITH FOUR DOTS ABOVE
-2A79 LESS-THAN WITH CIRCLE INSIDE
-2A7A GREATER-THAN WITH CIRCLE INSIDE
-2A7B LESS-THAN WITH QUESTION MARK ABOVE
-2A7C GREATER-THAN WITH QUESTION MARK ABOVE
-2A7D LESS-THAN OR SLANTED EQUAL TO
-2A7E GREATER-THAN OR SLANTED EQUAL TO
-2A7F LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
-2A80 GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
-2A81 LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
-2A82 GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
-2A83 LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT
-2A84 GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT
-2A85 LESS-THAN OR APPROXIMATE
-2A86 GREATER-THAN OR APPROXIMATE
-2A87 LESS-THAN AND SINGLE-LINE NOT EQUAL TO
-2A88 GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
-2A89 LESS-THAN AND NOT APPROXIMATE
-2A8A GREATER-THAN AND NOT APPROXIMATE
-2A8B LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
-2A8C GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
-2A8D LESS-THAN ABOVE SIMILAR OR EQUAL
-2A8E GREATER-THAN ABOVE SIMILAR OR EQUAL
-2A8F LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN
-2A90 GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN
-2A91 LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL
-2A92 GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL
-2A93 LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL
-2A94 GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL
-2A95 SLANTED EQUAL TO OR LESS-THAN
-2A96 SLANTED EQUAL TO OR GREATER-THAN
-2A97 SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE
-2A98 SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE
-2A99 DOUBLE-LINE EQUAL TO OR LESS-THAN
-2A9A DOUBLE-LINE EQUAL TO OR GREATER-THAN
-2A9B DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN
-2A9C DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN
-2A9D SIMILAR OR LESS-THAN
-2A9E SIMILAR OR GREATER-THAN
-2A9F SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN
-2AA0 SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN
-2AA1 DOUBLE NESTED LESS-THAN
-2AA2 DOUBLE NESTED GREATER-THAN
-2AA3 DOUBLE NESTED LESS-THAN WITH UNDERBAR
-2AA4 GREATER-THAN OVERLAPPING LESS-THAN
-2AA5 GREATER-THAN BESIDE LESS-THAN
-2AA6 LESS-THAN CLOSED BY CURVE
-2AA7 GREATER-THAN CLOSED BY CURVE
-2AA8 LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
-2AA9 GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
-2AAA SMALLER THAN
-2AAB LARGER THAN
-2AAC SMALLER THAN OR EQUAL TO
-2AAD LARGER THAN OR EQUAL TO
-2AAE EQUALS SIGN WITH BUMPY ABOVE
-2AAF PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
-2AB0 SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
-2AB1 PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO
-2AB2 SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO
-2AB3 PRECEDES ABOVE EQUALS SIGN
-2AB4 SUCCEEDS ABOVE EQUALS SIGN
-2AB5 PRECEDES ABOVE NOT EQUAL TO
-2AB6 SUCCEEDS ABOVE NOT EQUAL TO
-2AB7 PRECEDES ABOVE ALMOST EQUAL TO
-2AB8 SUCCEEDS ABOVE ALMOST EQUAL TO
-2AB9 PRECEDES ABOVE NOT ALMOST EQUAL TO
-2ABA SUCCEEDS ABOVE NOT ALMOST EQUAL TO
-2ABB DOUBLE PRECEDES
-2ABC DOUBLE SUCCEEDS
-2ABD SUBSET WITH DOT
-2ABE SUPERSET WITH DOT
-2ABF SUBSET WITH PLUS SIGN BELOW
-2AC0 SUPERSET WITH PLUS SIGN BELOW
-2AC1 SUBSET WITH MULTIPLICATION SIGN BELOW
-2AC2 SUPERSET WITH MULTIPLICATION SIGN BELOW
-2AC3 SUBSET OF OR EQUAL TO WITH DOT ABOVE
-2AC4 SUPERSET OF OR EQUAL TO WITH DOT ABOVE
-2AC5 SUBSET OF ABOVE EQUALS SIGN
-2AC6 SUPERSET OF ABOVE EQUALS SIGN
-2AC7 SUBSET OF ABOVE TILDE OPERATOR
-2AC8 SUPERSET OF ABOVE TILDE OPERATOR
-2AC9 SUBSET OF ABOVE ALMOST EQUAL TO
-2ACA SUPERSET OF ABOVE ALMOST EQUAL TO
-2ACB SUBSET OF ABOVE NOT EQUAL TO
-2ACC SUPERSET OF ABOVE NOT EQUAL TO
-2ACD SQUARE LEFT OPEN BOX OPERATOR
-2ACE SQUARE RIGHT OPEN BOX OPERATOR
-2ACF CLOSED SUBSET
-2AD0 CLOSED SUPERSET
-2AD1 CLOSED SUBSET OR EQUAL TO
-2AD2 CLOSED SUPERSET OR EQUAL TO
-2AD3 SUBSET ABOVE SUPERSET
-2AD4 SUPERSET ABOVE SUBSET
-2AD5 SUBSET ABOVE SUBSET
-2AD6 SUPERSET ABOVE SUPERSET
-2AD7 SUPERSET BESIDE SUBSET
-2AD8 SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET
-2AD9 ELEMENT OF OPENING DOWNWARDS
-2ADA PITCHFORK WITH TEE TOP
-2ADB TRANSVERSAL INTERSECTION
-2ADC FORKING
-2ADD NONFORKING
-2ADE SHORT LEFT TACK
-2ADF SHORT DOWN TACK
-2AE0 SHORT UP TACK
-2AE1 PERPENDICULAR WITH S
-2AE2 VERTICAL BAR TRIPLE RIGHT TURNSTILE
-2AE3 DOUBLE VERTICAL BAR LEFT TURNSTILE
-2AE4 VERTICAL BAR DOUBLE LEFT TURNSTILE
-2AE5 DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE
-2AE6 LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL
-2AE7 SHORT DOWN TACK WITH OVERBAR
-2AE8 SHORT UP TACK WITH UNDERBAR
-2AE9 SHORT UP TACK ABOVE SHORT DOWN TACK
-2AEA DOUBLE DOWN TACK
-2AEB DOUBLE UP TACK
-2AEC DOUBLE STROKE NOT SIGN
-2AED REVERSED DOUBLE STROKE NOT SIGN
-2AEE DOES NOT DIVIDE WITH REVERSED NEGATION SLASH
-2AEF VERTICAL LINE WITH CIRCLE ABOVE
-2AF0 VERTICAL LINE WITH CIRCLE BELOW
-2AF1 DOWN TACK WITH CIRCLE BELOW
-2AF2 PARALLEL WITH HORIZONTAL STROKE
-2AF3 PARALLEL WITH TILDE OPERATOR
-2AF4 TRIPLE VERTICAL BAR BINARY RELATION
-2AF5 TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE
-2AF6 TRIPLE COLON OPERATOR
-2AF7 TRIPLE NESTED LESS-THAN
-2AF8 TRIPLE NESTED GREATER-THAN
-2AF9 DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO
-2AFA DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO
-2AFB TRIPLE SOLIDUS BINARY RELATION
-2AFC LARGE TRIPLE VERTICAL BAR OPERATOR
-2AFD DOUBLE SOLIDUS OPERATOR
-2AFE WHITE VERTICAL BAR
-2AFF N-ARY WHITE VERTICAL BAR
-2B00 NORTH EAST WHITE ARROW
-2B01 NORTH WEST WHITE ARROW
-2B02 SOUTH EAST WHITE ARROW
-2B03 SOUTH WEST WHITE ARROW
-2B04 LEFT RIGHT WHITE ARROW
-2B05 LEFTWARDS BLACK ARROW
-2B06 UPWARDS BLACK ARROW
-2B07 DOWNWARDS BLACK ARROW
-2B08 NORTH EAST BLACK ARROW
-2B09 NORTH WEST BLACK ARROW
-2B0A SOUTH EAST BLACK ARROW
-2B0B SOUTH WEST BLACK ARROW
-2B0C LEFT RIGHT BLACK ARROW
-2B0D UP DOWN BLACK ARROW
-2B0E RIGHTWARDS ARROW WITH TIP DOWNWARDS
-2B0F RIGHTWARDS ARROW WITH TIP UPWARDS
-2B10 LEFTWARDS ARROW WITH TIP DOWNWARDS
-2B11 LEFTWARDS ARROW WITH TIP UPWARDS
-2B12 SQUARE WITH TOP HALF BLACK
-2B13 SQUARE WITH BOTTOM HALF BLACK
-2C00 GLAGOLITIC CAPITAL LETTER AZU
-2C01 GLAGOLITIC CAPITAL LETTER BUKY
-2C02 GLAGOLITIC CAPITAL LETTER VEDE
-2C03 GLAGOLITIC CAPITAL LETTER GLAGOLI
-2C04 GLAGOLITIC CAPITAL LETTER DOBRO
-2C05 GLAGOLITIC CAPITAL LETTER YESTU
-2C06 GLAGOLITIC CAPITAL LETTER ZHIVETE
-2C07 GLAGOLITIC CAPITAL LETTER DZELO
-2C08 GLAGOLITIC CAPITAL LETTER ZEMLJA
-2C09 GLAGOLITIC CAPITAL LETTER IZHE
-2C0A GLAGOLITIC CAPITAL LETTER INITIAL IZHE
-2C0B GLAGOLITIC CAPITAL LETTER I
-2C0C GLAGOLITIC CAPITAL LETTER DJERVI
-2C0D GLAGOLITIC CAPITAL LETTER KAKO
-2C0E GLAGOLITIC CAPITAL LETTER LJUDIJE
-2C0F GLAGOLITIC CAPITAL LETTER MYSLITE
-2C10 GLAGOLITIC CAPITAL LETTER NASHI
-2C11 GLAGOLITIC CAPITAL LETTER ONU
-2C12 GLAGOLITIC CAPITAL LETTER POKOJI
-2C13 GLAGOLITIC CAPITAL LETTER RITSI
-2C14 GLAGOLITIC CAPITAL LETTER SLOVO
-2C15 GLAGOLITIC CAPITAL LETTER TVRIDO
-2C16 GLAGOLITIC CAPITAL LETTER UKU
-2C17 GLAGOLITIC CAPITAL LETTER FRITU
-2C18 GLAGOLITIC CAPITAL LETTER HERU
-2C19 GLAGOLITIC CAPITAL LETTER OTU
-2C1A GLAGOLITIC CAPITAL LETTER PE
-2C1B GLAGOLITIC CAPITAL LETTER SHTA
-2C1C GLAGOLITIC CAPITAL LETTER TSI
-2C1D GLAGOLITIC CAPITAL LETTER CHRIVI
-2C1E GLAGOLITIC CAPITAL LETTER SHA
-2C1F GLAGOLITIC CAPITAL LETTER YERU
-2C20 GLAGOLITIC CAPITAL LETTER YERI
-2C21 GLAGOLITIC CAPITAL LETTER YATI
-2C22 GLAGOLITIC CAPITAL LETTER SPIDERY HA
-2C23 GLAGOLITIC CAPITAL LETTER YU
-2C24 GLAGOLITIC CAPITAL LETTER SMALL YUS
-2C25 GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL
-2C26 GLAGOLITIC CAPITAL LETTER YO
-2C27 GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS
-2C28 GLAGOLITIC CAPITAL LETTER BIG YUS
-2C29 GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS
-2C2A GLAGOLITIC CAPITAL LETTER FITA
-2C2B GLAGOLITIC CAPITAL LETTER IZHITSA
-2C2C GLAGOLITIC CAPITAL LETTER SHTAPIC
-2C2D GLAGOLITIC CAPITAL LETTER TROKUTASTI A
-2C2E GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
-2C30 GLAGOLITIC SMALL LETTER AZU
-2C31 GLAGOLITIC SMALL LETTER BUKY
-2C32 GLAGOLITIC SMALL LETTER VEDE
-2C33 GLAGOLITIC SMALL LETTER GLAGOLI
-2C34 GLAGOLITIC SMALL LETTER DOBRO
-2C35 GLAGOLITIC SMALL LETTER YESTU
-2C36 GLAGOLITIC SMALL LETTER ZHIVETE
-2C37 GLAGOLITIC SMALL LETTER DZELO
-2C38 GLAGOLITIC SMALL LETTER ZEMLJA
-2C39 GLAGOLITIC SMALL LETTER IZHE
-2C3A GLAGOLITIC SMALL LETTER INITIAL IZHE
-2C3B GLAGOLITIC SMALL LETTER I
-2C3C GLAGOLITIC SMALL LETTER DJERVI
-2C3D GLAGOLITIC SMALL LETTER KAKO
-2C3E GLAGOLITIC SMALL LETTER LJUDIJE
-2C3F GLAGOLITIC SMALL LETTER MYSLITE
-2C40 GLAGOLITIC SMALL LETTER NASHI
-2C41 GLAGOLITIC SMALL LETTER ONU
-2C42 GLAGOLITIC SMALL LETTER POKOJI
-2C43 GLAGOLITIC SMALL LETTER RITSI
-2C44 GLAGOLITIC SMALL LETTER SLOVO
-2C45 GLAGOLITIC SMALL LETTER TVRIDO
-2C46 GLAGOLITIC SMALL LETTER UKU
-2C47 GLAGOLITIC SMALL LETTER FRITU
-2C48 GLAGOLITIC SMALL LETTER HERU
-2C49 GLAGOLITIC SMALL LETTER OTU
-2C4A GLAGOLITIC SMALL LETTER PE
-2C4B GLAGOLITIC SMALL LETTER SHTA
-2C4C GLAGOLITIC SMALL LETTER TSI
-2C4D GLAGOLITIC SMALL LETTER CHRIVI
-2C4E GLAGOLITIC SMALL LETTER SHA
-2C4F GLAGOLITIC SMALL LETTER YERU
-2C50 GLAGOLITIC SMALL LETTER YERI
-2C51 GLAGOLITIC SMALL LETTER YATI
-2C52 GLAGOLITIC SMALL LETTER SPIDERY HA
-2C53 GLAGOLITIC SMALL LETTER YU
-2C54 GLAGOLITIC SMALL LETTER SMALL YUS
-2C55 GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL
-2C56 GLAGOLITIC SMALL LETTER YO
-2C57 GLAGOLITIC SMALL LETTER IOTATED SMALL YUS
-2C58 GLAGOLITIC SMALL LETTER BIG YUS
-2C59 GLAGOLITIC SMALL LETTER IOTATED BIG YUS
-2C5A GLAGOLITIC SMALL LETTER FITA
-2C5B GLAGOLITIC SMALL LETTER IZHITSA
-2C5C GLAGOLITIC SMALL LETTER SHTAPIC
-2C5D GLAGOLITIC SMALL LETTER TROKUTASTI A
-2C5E GLAGOLITIC SMALL LETTER LATINATE MYSLITE
-2C80 COPTIC CAPITAL LETTER ALFA
-2C81 COPTIC SMALL LETTER ALFA
-2C82 COPTIC CAPITAL LETTER VIDA
-2C83 COPTIC SMALL LETTER VIDA
-2C84 COPTIC CAPITAL LETTER GAMMA
-2C85 COPTIC SMALL LETTER GAMMA
-2C86 COPTIC CAPITAL LETTER DALDA
-2C87 COPTIC SMALL LETTER DALDA
-2C88 COPTIC CAPITAL LETTER EIE
-2C89 COPTIC SMALL LETTER EIE
-2C8A COPTIC CAPITAL LETTER SOU
-2C8B COPTIC SMALL LETTER SOU
-2C8C COPTIC CAPITAL LETTER ZATA
-2C8D COPTIC SMALL LETTER ZATA
-2C8E COPTIC CAPITAL LETTER HATE
-2C8F COPTIC SMALL LETTER HATE
-2C90 COPTIC CAPITAL LETTER THETHE
-2C91 COPTIC SMALL LETTER THETHE
-2C92 COPTIC CAPITAL LETTER IAUDA
-2C93 COPTIC SMALL LETTER IAUDA
-2C94 COPTIC CAPITAL LETTER KAPA
-2C95 COPTIC SMALL LETTER KAPA
-2C96 COPTIC CAPITAL LETTER LAULA
-2C97 COPTIC SMALL LETTER LAULA
-2C98 COPTIC CAPITAL LETTER MI
-2C99 COPTIC SMALL LETTER MI
-2C9A COPTIC CAPITAL LETTER NI
-2C9B COPTIC SMALL LETTER NI
-2C9C COPTIC CAPITAL LETTER KSI
-2C9D COPTIC SMALL LETTER KSI
-2C9E COPTIC CAPITAL LETTER O
-2C9F COPTIC SMALL LETTER O
-2CA0 COPTIC CAPITAL LETTER PI
-2CA1 COPTIC SMALL LETTER PI
-2CA2 COPTIC CAPITAL LETTER RO
-2CA3 COPTIC SMALL LETTER RO
-2CA4 COPTIC CAPITAL LETTER SIMA
-2CA5 COPTIC SMALL LETTER SIMA
-2CA6 COPTIC CAPITAL LETTER TAU
-2CA7 COPTIC SMALL LETTER TAU
-2CA8 COPTIC CAPITAL LETTER UA
-2CA9 COPTIC SMALL LETTER UA
-2CAA COPTIC CAPITAL LETTER FI
-2CAB COPTIC SMALL LETTER FI
-2CAC COPTIC CAPITAL LETTER KHI
-2CAD COPTIC SMALL LETTER KHI
-2CAE COPTIC CAPITAL LETTER PSI
-2CAF COPTIC SMALL LETTER PSI
-2CB0 COPTIC CAPITAL LETTER OOU
-2CB1 COPTIC SMALL LETTER OOU
-2CB2 COPTIC CAPITAL LETTER DIALECT-P ALEF
-2CB3 COPTIC SMALL LETTER DIALECT-P ALEF
-2CB4 COPTIC CAPITAL LETTER OLD COPTIC AIN
-2CB5 COPTIC SMALL LETTER OLD COPTIC AIN
-2CB6 COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
-2CB7 COPTIC SMALL LETTER CRYPTOGRAMMIC EIE
-2CB8 COPTIC CAPITAL LETTER DIALECT-P KAPA
-2CB9 COPTIC SMALL LETTER DIALECT-P KAPA
-2CBA COPTIC CAPITAL LETTER DIALECT-P NI
-2CBB COPTIC SMALL LETTER DIALECT-P NI
-2CBC COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
-2CBD COPTIC SMALL LETTER CRYPTOGRAMMIC NI
-2CBE COPTIC CAPITAL LETTER OLD COPTIC OOU
-2CBF COPTIC SMALL LETTER OLD COPTIC OOU
-2CC0 COPTIC CAPITAL LETTER SAMPI
-2CC1 COPTIC SMALL LETTER SAMPI
-2CC2 COPTIC CAPITAL LETTER CROSSED SHEI
-2CC3 COPTIC SMALL LETTER CROSSED SHEI
-2CC4 COPTIC CAPITAL LETTER OLD COPTIC SHEI
-2CC5 COPTIC SMALL LETTER OLD COPTIC SHEI
-2CC6 COPTIC CAPITAL LETTER OLD COPTIC ESH
-2CC7 COPTIC SMALL LETTER OLD COPTIC ESH
-2CC8 COPTIC CAPITAL LETTER AKHMIMIC KHEI
-2CC9 COPTIC SMALL LETTER AKHMIMIC KHEI
-2CCA COPTIC CAPITAL LETTER DIALECT-P HORI
-2CCB COPTIC SMALL LETTER DIALECT-P HORI
-2CCC COPTIC CAPITAL LETTER OLD COPTIC HORI
-2CCD COPTIC SMALL LETTER OLD COPTIC HORI
-2CCE COPTIC CAPITAL LETTER OLD COPTIC HA
-2CCF COPTIC SMALL LETTER OLD COPTIC HA
-2CD0 COPTIC CAPITAL LETTER L-SHAPED HA
-2CD1 COPTIC SMALL LETTER L-SHAPED HA
-2CD2 COPTIC CAPITAL LETTER OLD COPTIC HEI
-2CD3 COPTIC SMALL LETTER OLD COPTIC HEI
-2CD4 COPTIC CAPITAL LETTER OLD COPTIC HAT
-2CD5 COPTIC SMALL LETTER OLD COPTIC HAT
-2CD6 COPTIC CAPITAL LETTER OLD COPTIC GANGIA
-2CD7 COPTIC SMALL LETTER OLD COPTIC GANGIA
-2CD8 COPTIC CAPITAL LETTER OLD COPTIC DJA
-2CD9 COPTIC SMALL LETTER OLD COPTIC DJA
-2CDA COPTIC CAPITAL LETTER OLD COPTIC SHIMA
-2CDB COPTIC SMALL LETTER OLD COPTIC SHIMA
-2CDC COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
-2CDD COPTIC SMALL LETTER OLD NUBIAN SHIMA
-2CDE COPTIC CAPITAL LETTER OLD NUBIAN NGI
-2CDF COPTIC SMALL LETTER OLD NUBIAN NGI
-2CE0 COPTIC CAPITAL LETTER OLD NUBIAN NYI
-2CE1 COPTIC SMALL LETTER OLD NUBIAN NYI
-2CE2 COPTIC CAPITAL LETTER OLD NUBIAN WAU
-2CE3 COPTIC SMALL LETTER OLD NUBIAN WAU
-2CE4 COPTIC SYMBOL KAI
-2CE5 COPTIC SYMBOL MI RO
-2CE6 COPTIC SYMBOL PI RO
-2CE7 COPTIC SYMBOL STAUROS
-2CE8 COPTIC SYMBOL TAU RO
-2CE9 COPTIC SYMBOL KHI RO
-2CEA COPTIC SYMBOL SHIMA SIMA
-2CF9 COPTIC OLD NUBIAN FULL STOP
-2CFA COPTIC OLD NUBIAN DIRECT QUESTION MARK
-2CFB COPTIC OLD NUBIAN INDIRECT QUESTION MARK
-2CFC COPTIC OLD NUBIAN VERSE DIVIDER
-2CFD COPTIC FRACTION ONE HALF
-2CFE COPTIC FULL STOP
-2CFF COPTIC MORPHOLOGICAL DIVIDER
-2D00 GEORGIAN SMALL LETTER AN
-2D01 GEORGIAN SMALL LETTER BAN
-2D02 GEORGIAN SMALL LETTER GAN
-2D03 GEORGIAN SMALL LETTER DON
-2D04 GEORGIAN SMALL LETTER EN
-2D05 GEORGIAN SMALL LETTER VIN
-2D06 GEORGIAN SMALL LETTER ZEN
-2D07 GEORGIAN SMALL LETTER TAN
-2D08 GEORGIAN SMALL LETTER IN
-2D09 GEORGIAN SMALL LETTER KAN
-2D0A GEORGIAN SMALL LETTER LAS
-2D0B GEORGIAN SMALL LETTER MAN
-2D0C GEORGIAN SMALL LETTER NAR
-2D0D GEORGIAN SMALL LETTER ON
-2D0E GEORGIAN SMALL LETTER PAR
-2D0F GEORGIAN SMALL LETTER ZHAR
-2D10 GEORGIAN SMALL LETTER RAE
-2D11 GEORGIAN SMALL LETTER SAN
-2D12 GEORGIAN SMALL LETTER TAR
-2D13 GEORGIAN SMALL LETTER UN
-2D14 GEORGIAN SMALL LETTER PHAR
-2D15 GEORGIAN SMALL LETTER KHAR
-2D16 GEORGIAN SMALL LETTER GHAN
-2D17 GEORGIAN SMALL LETTER QAR
-2D18 GEORGIAN SMALL LETTER SHIN
-2D19 GEORGIAN SMALL LETTER CHIN
-2D1A GEORGIAN SMALL LETTER CAN
-2D1B GEORGIAN SMALL LETTER JIL
-2D1C GEORGIAN SMALL LETTER CIL
-2D1D GEORGIAN SMALL LETTER CHAR
-2D1E GEORGIAN SMALL LETTER XAN
-2D1F GEORGIAN SMALL LETTER JHAN
-2D20 GEORGIAN SMALL LETTER HAE
-2D21 GEORGIAN SMALL LETTER HE
-2D22 GEORGIAN SMALL LETTER HIE
-2D23 GEORGIAN SMALL LETTER WE
-2D24 GEORGIAN SMALL LETTER HAR
-2D25 GEORGIAN SMALL LETTER HOE
-2D30 TIFINAGH LETTER YA
-2D31 TIFINAGH LETTER YAB
-2D32 TIFINAGH LETTER YABH
-2D33 TIFINAGH LETTER YAG
-2D34 TIFINAGH LETTER YAGHH
-2D35 TIFINAGH LETTER BERBER ACADEMY YAJ
-2D36 TIFINAGH LETTER YAJ
-2D37 TIFINAGH LETTER YAD
-2D38 TIFINAGH LETTER YADH
-2D39 TIFINAGH LETTER YADD
-2D3A TIFINAGH LETTER YADDH
-2D3B TIFINAGH LETTER YEY
-2D3C TIFINAGH LETTER YAF
-2D3D TIFINAGH LETTER YAK
-2D3E TIFINAGH LETTER TUAREG YAK
-2D3F TIFINAGH LETTER YAKHH
-2D40 TIFINAGH LETTER YAH
-2D41 TIFINAGH LETTER BERBER ACADEMY YAH
-2D42 TIFINAGH LETTER TUAREG YAH
-2D43 TIFINAGH LETTER YAHH
-2D44 TIFINAGH LETTER YAA
-2D45 TIFINAGH LETTER YAKH
-2D46 TIFINAGH LETTER TUAREG YAKH
-2D47 TIFINAGH LETTER YAQ
-2D48 TIFINAGH LETTER TUAREG YAQ
-2D49 TIFINAGH LETTER YI
-2D4A TIFINAGH LETTER YAZH
-2D4B TIFINAGH LETTER AHAGGAR YAZH
-2D4C TIFINAGH LETTER TUAREG YAZH
-2D4D TIFINAGH LETTER YAL
-2D4E TIFINAGH LETTER YAM
-2D4F TIFINAGH LETTER YAN
-2D50 TIFINAGH LETTER TUAREG YAGN
-2D51 TIFINAGH LETTER TUAREG YANG
-2D52 TIFINAGH LETTER YAP
-2D53 TIFINAGH LETTER YU
-2D54 TIFINAGH LETTER YAR
-2D55 TIFINAGH LETTER YARR
-2D56 TIFINAGH LETTER YAGH
-2D57 TIFINAGH LETTER TUAREG YAGH
-2D58 TIFINAGH LETTER AYER YAGH
-2D59 TIFINAGH LETTER YAS
-2D5A TIFINAGH LETTER YASS
-2D5B TIFINAGH LETTER YASH
-2D5C TIFINAGH LETTER YAT
-2D5D TIFINAGH LETTER YATH
-2D5E TIFINAGH LETTER YACH
-2D5F TIFINAGH LETTER YATT
-2D60 TIFINAGH LETTER YAV
-2D61 TIFINAGH LETTER YAW
-2D62 TIFINAGH LETTER YAY
-2D63 TIFINAGH LETTER YAZ
-2D64 TIFINAGH LETTER TAWELLEMET YAZ
-2D65 TIFINAGH LETTER YAZZ
-2D6F TIFINAGH MODIFIER LETTER LABIALIZATION MARK
-2D80 ETHIOPIC SYLLABLE LOA
-2D81 ETHIOPIC SYLLABLE MOA
-2D82 ETHIOPIC SYLLABLE ROA
-2D83 ETHIOPIC SYLLABLE SOA
-2D84 ETHIOPIC SYLLABLE SHOA
-2D85 ETHIOPIC SYLLABLE BOA
-2D86 ETHIOPIC SYLLABLE TOA
-2D87 ETHIOPIC SYLLABLE COA
-2D88 ETHIOPIC SYLLABLE NOA
-2D89 ETHIOPIC SYLLABLE NYOA
-2D8A ETHIOPIC SYLLABLE GLOTTAL OA
-2D8B ETHIOPIC SYLLABLE ZOA
-2D8C ETHIOPIC SYLLABLE DOA
-2D8D ETHIOPIC SYLLABLE DDOA
-2D8E ETHIOPIC SYLLABLE JOA
-2D8F ETHIOPIC SYLLABLE THOA
-2D90 ETHIOPIC SYLLABLE CHOA
-2D91 ETHIOPIC SYLLABLE PHOA
-2D92 ETHIOPIC SYLLABLE POA
-2D93 ETHIOPIC SYLLABLE GGWA
-2D94 ETHIOPIC SYLLABLE GGWI
-2D95 ETHIOPIC SYLLABLE GGWEE
-2D96 ETHIOPIC SYLLABLE GGWE
-2DA0 ETHIOPIC SYLLABLE SSA
-2DA1 ETHIOPIC SYLLABLE SSU
-2DA2 ETHIOPIC SYLLABLE SSI
-2DA3 ETHIOPIC SYLLABLE SSAA
-2DA4 ETHIOPIC SYLLABLE SSEE
-2DA5 ETHIOPIC SYLLABLE SSE
-2DA6 ETHIOPIC SYLLABLE SSO
-2DA8 ETHIOPIC SYLLABLE CCA
-2DA9 ETHIOPIC SYLLABLE CCU
-2DAA ETHIOPIC SYLLABLE CCI
-2DAB ETHIOPIC SYLLABLE CCAA
-2DAC ETHIOPIC SYLLABLE CCEE
-2DAD ETHIOPIC SYLLABLE CCE
-2DAE ETHIOPIC SYLLABLE CCO
-2DB0 ETHIOPIC SYLLABLE ZZA
-2DB1 ETHIOPIC SYLLABLE ZZU
-2DB2 ETHIOPIC SYLLABLE ZZI
-2DB3 ETHIOPIC SYLLABLE ZZAA
-2DB4 ETHIOPIC SYLLABLE ZZEE
-2DB5 ETHIOPIC SYLLABLE ZZE
-2DB6 ETHIOPIC SYLLABLE ZZO
-2DB8 ETHIOPIC SYLLABLE CCHA
-2DB9 ETHIOPIC SYLLABLE CCHU
-2DBA ETHIOPIC SYLLABLE CCHI
-2DBB ETHIOPIC SYLLABLE CCHAA
-2DBC ETHIOPIC SYLLABLE CCHEE
-2DBD ETHIOPIC SYLLABLE CCHE
-2DBE ETHIOPIC SYLLABLE CCHO
-2DC0 ETHIOPIC SYLLABLE QYA
-2DC1 ETHIOPIC SYLLABLE QYU
-2DC2 ETHIOPIC SYLLABLE QYI
-2DC3 ETHIOPIC SYLLABLE QYAA
-2DC4 ETHIOPIC SYLLABLE QYEE
-2DC5 ETHIOPIC SYLLABLE QYE
-2DC6 ETHIOPIC SYLLABLE QYO
-2DC8 ETHIOPIC SYLLABLE KYA
-2DC9 ETHIOPIC SYLLABLE KYU
-2DCA ETHIOPIC SYLLABLE KYI
-2DCB ETHIOPIC SYLLABLE KYAA
-2DCC ETHIOPIC SYLLABLE KYEE
-2DCD ETHIOPIC SYLLABLE KYE
-2DCE ETHIOPIC SYLLABLE KYO
-2DD0 ETHIOPIC SYLLABLE XYA
-2DD1 ETHIOPIC SYLLABLE XYU
-2DD2 ETHIOPIC SYLLABLE XYI
-2DD3 ETHIOPIC SYLLABLE XYAA
-2DD4 ETHIOPIC SYLLABLE XYEE
-2DD5 ETHIOPIC SYLLABLE XYE
-2DD6 ETHIOPIC SYLLABLE XYO
-2DD8 ETHIOPIC SYLLABLE GYA
-2DD9 ETHIOPIC SYLLABLE GYU
-2DDA ETHIOPIC SYLLABLE GYI
-2DDB ETHIOPIC SYLLABLE GYAA
-2DDC ETHIOPIC SYLLABLE GYEE
-2DDD ETHIOPIC SYLLABLE GYE
-2DDE ETHIOPIC SYLLABLE GYO
-2E00 RIGHT ANGLE SUBSTITUTION MARKER
-2E01 RIGHT ANGLE DOTTED SUBSTITUTION MARKER
-2E02 LEFT SUBSTITUTION BRACKET
-2E03 RIGHT SUBSTITUTION BRACKET
-2E04 LEFT DOTTED SUBSTITUTION BRACKET
-2E05 RIGHT DOTTED SUBSTITUTION BRACKET
-2E06 RAISED INTERPOLATION MARKER
-2E07 RAISED DOTTED INTERPOLATION MARKER
-2E08 DOTTED TRANSPOSITION MARKER
-2E09 LEFT TRANSPOSITION BRACKET
-2E0A RIGHT TRANSPOSITION BRACKET
-2E0B RAISED SQUARE
-2E0C LEFT RAISED OMISSION BRACKET
-2E0D RIGHT RAISED OMISSION BRACKET
-2E0E EDITORIAL CORONIS
-2E0F PARAGRAPHOS
-2E10 FORKED PARAGRAPHOS
-2E11 REVERSED FORKED PARAGRAPHOS
-2E12 HYPODIASTOLE
-2E13 DOTTED OBELOS
-2E14 DOWNWARDS ANCORA
-2E15 UPWARDS ANCORA
-2E16 DOTTED RIGHT-POINTING ANGLE
-2E17 DOUBLE OBLIQUE HYPHEN
-2E1C LEFT LOW PARAPHRASE BRACKET
-2E1D RIGHT LOW PARAPHRASE BRACKET
-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
-303B VERTICAL IDEOGRAPHIC ITERATION MARK
-303C MASU MARK
-303D PART ALTERNATION MARK
-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
-3095 HIRAGANA LETTER SMALL KA
-3096 HIRAGANA LETTER SMALL KE
-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
-309F HIRAGANA DIGRAPH YORI
-30A0 KATAKANA-HIRAGANA DOUBLE HYPHEN
-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
-30FF KATAKANA DIGRAPH KOTO
-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
-31C0 CJK STROKE T
-31C1 CJK STROKE WG
-31C2 CJK STROKE XG
-31C3 CJK STROKE BXG
-31C4 CJK STROKE SW
-31C5 CJK STROKE HZZ
-31C6 CJK STROKE HZG
-31C7 CJK STROKE HP
-31C8 CJK STROKE HZWG
-31C9 CJK STROKE SZWG
-31CA CJK STROKE HZT
-31CB CJK STROKE HZZP
-31CC CJK STROKE HPWG
-31CD CJK STROKE HZW
-31CE CJK STROKE HZZZ
-31CF CJK STROKE N
-31F0 KATAKANA LETTER SMALL KU
-31F1 KATAKANA LETTER SMALL SI
-31F2 KATAKANA LETTER SMALL SU
-31F3 KATAKANA LETTER SMALL TO
-31F4 KATAKANA LETTER SMALL NU
-31F5 KATAKANA LETTER SMALL HA
-31F6 KATAKANA LETTER SMALL HI
-31F7 KATAKANA LETTER SMALL HU
-31F8 KATAKANA LETTER SMALL HE
-31F9 KATAKANA LETTER SMALL HO
-31FA KATAKANA LETTER SMALL MU
-31FB KATAKANA LETTER SMALL RA
-31FC KATAKANA LETTER SMALL RI
-31FD KATAKANA LETTER SMALL RU
-31FE KATAKANA LETTER SMALL RE
-31FF KATAKANA LETTER SMALL RO
-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
-321D PARENTHESIZED KOREAN CHARACTER OJEON
-321E PARENTHESIZED KOREAN CHARACTER O HU
-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
-3250 PARTNERSHIP SIGN
-3251 CIRCLED NUMBER TWENTY ONE
-3252 CIRCLED NUMBER TWENTY TWO
-3253 CIRCLED NUMBER TWENTY THREE
-3254 CIRCLED NUMBER TWENTY FOUR
-3255 CIRCLED NUMBER TWENTY FIVE
-3256 CIRCLED NUMBER TWENTY SIX
-3257 CIRCLED NUMBER TWENTY SEVEN
-3258 CIRCLED NUMBER TWENTY EIGHT
-3259 CIRCLED NUMBER TWENTY NINE
-325A CIRCLED NUMBER THIRTY
-325B CIRCLED NUMBER THIRTY ONE
-325C CIRCLED NUMBER THIRTY TWO
-325D CIRCLED NUMBER THIRTY THREE
-325E CIRCLED NUMBER THIRTY FOUR
-325F CIRCLED NUMBER THIRTY FIVE
-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
-327C CIRCLED KOREAN CHARACTER CHAMKO
-327D CIRCLED KOREAN CHARACTER JUEUI
-327E CIRCLED HANGUL IEUNG U
-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
-32B1 CIRCLED NUMBER THIRTY SIX
-32B2 CIRCLED NUMBER THIRTY SEVEN
-32B3 CIRCLED NUMBER THIRTY EIGHT
-32B4 CIRCLED NUMBER THIRTY NINE
-32B5 CIRCLED NUMBER FORTY
-32B6 CIRCLED NUMBER FORTY ONE
-32B7 CIRCLED NUMBER FORTY TWO
-32B8 CIRCLED NUMBER FORTY THREE
-32B9 CIRCLED NUMBER FORTY FOUR
-32BA CIRCLED NUMBER FORTY FIVE
-32BB CIRCLED NUMBER FORTY SIX
-32BC CIRCLED NUMBER FORTY SEVEN
-32BD CIRCLED NUMBER FORTY EIGHT
-32BE CIRCLED NUMBER FORTY NINE
-32BF CIRCLED NUMBER FIFTY
-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
-32CC SQUARE HG
-32CD SQUARE ERG
-32CE SQUARE EV
-32CF LIMITED LIABILITY SIGN
-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
-3377 SQUARE DM
-3378 SQUARE DM SQUARED
-3379 SQUARE DM CUBED
-337A SQUARE IU
-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
-33DE SQUARE V OVER M
-33DF SQUARE A OVER M
-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
-33FF SQUARE GAL
-3400 4DB5 CJK Ideograph Extension A
-4DC0 HEXAGRAM FOR THE CREATIVE HEAVEN
-4DC1 HEXAGRAM FOR THE RECEPTIVE EARTH
-4DC2 HEXAGRAM FOR DIFFICULTY AT THE BEGINNING
-4DC3 HEXAGRAM FOR YOUTHFUL FOLLY
-4DC4 HEXAGRAM FOR WAITING
-4DC5 HEXAGRAM FOR CONFLICT
-4DC6 HEXAGRAM FOR THE ARMY
-4DC7 HEXAGRAM FOR HOLDING TOGETHER
-4DC8 HEXAGRAM FOR SMALL TAMING
-4DC9 HEXAGRAM FOR TREADING
-4DCA HEXAGRAM FOR PEACE
-4DCB HEXAGRAM FOR STANDSTILL
-4DCC HEXAGRAM FOR FELLOWSHIP
-4DCD HEXAGRAM FOR GREAT POSSESSION
-4DCE HEXAGRAM FOR MODESTY
-4DCF HEXAGRAM FOR ENTHUSIASM
-4DD0 HEXAGRAM FOR FOLLOWING
-4DD1 HEXAGRAM FOR WORK ON THE DECAYED
-4DD2 HEXAGRAM FOR APPROACH
-4DD3 HEXAGRAM FOR CONTEMPLATION
-4DD4 HEXAGRAM FOR BITING THROUGH
-4DD5 HEXAGRAM FOR GRACE
-4DD6 HEXAGRAM FOR SPLITTING APART
-4DD7 HEXAGRAM FOR RETURN
-4DD8 HEXAGRAM FOR INNOCENCE
-4DD9 HEXAGRAM FOR GREAT TAMING
-4DDA HEXAGRAM FOR MOUTH CORNERS
-4DDB HEXAGRAM FOR GREAT PREPONDERANCE
-4DDC HEXAGRAM FOR THE ABYSMAL WATER
-4DDD HEXAGRAM FOR THE CLINGING FIRE
-4DDE HEXAGRAM FOR INFLUENCE
-4DDF HEXAGRAM FOR DURATION
-4DE0 HEXAGRAM FOR RETREAT
-4DE1 HEXAGRAM FOR GREAT POWER
-4DE2 HEXAGRAM FOR PROGRESS
-4DE3 HEXAGRAM FOR DARKENING OF THE LIGHT
-4DE4 HEXAGRAM FOR THE FAMILY
-4DE5 HEXAGRAM FOR OPPOSITION
-4DE6 HEXAGRAM FOR OBSTRUCTION
-4DE7 HEXAGRAM FOR DELIVERANCE
-4DE8 HEXAGRAM FOR DECREASE
-4DE9 HEXAGRAM FOR INCREASE
-4DEA HEXAGRAM FOR BREAKTHROUGH
-4DEB HEXAGRAM FOR COMING TO MEET
-4DEC HEXAGRAM FOR GATHERING TOGETHER
-4DED HEXAGRAM FOR PUSHING UPWARD
-4DEE HEXAGRAM FOR OPPRESSION
-4DEF HEXAGRAM FOR THE WELL
-4DF0 HEXAGRAM FOR REVOLUTION
-4DF1 HEXAGRAM FOR THE CAULDRON
-4DF2 HEXAGRAM FOR THE AROUSING THUNDER
-4DF3 HEXAGRAM FOR THE KEEPING STILL MOUNTAIN
-4DF4 HEXAGRAM FOR DEVELOPMENT
-4DF5 HEXAGRAM FOR THE MARRYING MAIDEN
-4DF6 HEXAGRAM FOR ABUNDANCE
-4DF7 HEXAGRAM FOR THE WANDERER
-4DF8 HEXAGRAM FOR THE GENTLE WIND
-4DF9 HEXAGRAM FOR THE JOYOUS LAKE
-4DFA HEXAGRAM FOR DISPERSION
-4DFB HEXAGRAM FOR LIMITATION
-4DFC HEXAGRAM FOR INNER TRUTH
-4DFD HEXAGRAM FOR SMALL PREPONDERANCE
-4DFE HEXAGRAM FOR AFTER COMPLETION
-4DFF HEXAGRAM FOR BEFORE COMPLETION
-4E00 9FBB CJK Ideograph
-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
-A4A2 YI RADICAL ZUP
-A4A3 YI RADICAL CYT
-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
-A4B4 YI RADICAL NZUP
-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
-A4C1 YI RADICAL ZUR
-A4C2 YI RADICAL SHOP
-A4C3 YI RADICAL CHE
-A4C4 YI RADICAL ZZIET
-A4C5 YI RADICAL NBIE
-A4C6 YI RADICAL KE
-A700 MODIFIER LETTER CHINESE TONE YIN PING
-A701 MODIFIER LETTER CHINESE TONE YANG PING
-A702 MODIFIER LETTER CHINESE TONE YIN SHANG
-A703 MODIFIER LETTER CHINESE TONE YANG SHANG
-A704 MODIFIER LETTER CHINESE TONE YIN QU
-A705 MODIFIER LETTER CHINESE TONE YANG QU
-A706 MODIFIER LETTER CHINESE TONE YIN RU
-A707 MODIFIER LETTER CHINESE TONE YANG RU
-A708 MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR
-A709 MODIFIER LETTER HIGH DOTTED TONE BAR
-A70A MODIFIER LETTER MID DOTTED TONE BAR
-A70B MODIFIER LETTER LOW DOTTED TONE BAR
-A70C MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR
-A70D MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR
-A70E MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR
-A70F MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR
-A710 MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR
-A711 MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR
-A712 MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR
-A713 MODIFIER LETTER HIGH LEFT-STEM TONE BAR
-A714 MODIFIER LETTER MID LEFT-STEM TONE BAR
-A715 MODIFIER LETTER LOW LEFT-STEM TONE BAR
-A716 MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
-A800 SYLOTI NAGRI LETTER A
-A801 SYLOTI NAGRI LETTER I
-A802 SYLOTI NAGRI SIGN DVISVARA
-A803 SYLOTI NAGRI LETTER U
-A804 SYLOTI NAGRI LETTER E
-A805 SYLOTI NAGRI LETTER O
-A806 SYLOTI NAGRI SIGN HASANTA
-A807 SYLOTI NAGRI LETTER KO
-A808 SYLOTI NAGRI LETTER KHO
-A809 SYLOTI NAGRI LETTER GO
-A80A SYLOTI NAGRI LETTER GHO
-A80B SYLOTI NAGRI SIGN ANUSVARA
-A80C SYLOTI NAGRI LETTER CO
-A80D SYLOTI NAGRI LETTER CHO
-A80E SYLOTI NAGRI LETTER JO
-A80F SYLOTI NAGRI LETTER JHO
-A810 SYLOTI NAGRI LETTER TTO
-A811 SYLOTI NAGRI LETTER TTHO
-A812 SYLOTI NAGRI LETTER DDO
-A813 SYLOTI NAGRI LETTER DDHO
-A814 SYLOTI NAGRI LETTER TO
-A815 SYLOTI NAGRI LETTER THO
-A816 SYLOTI NAGRI LETTER DO
-A817 SYLOTI NAGRI LETTER DHO
-A818 SYLOTI NAGRI LETTER NO
-A819 SYLOTI NAGRI LETTER PO
-A81A SYLOTI NAGRI LETTER PHO
-A81B SYLOTI NAGRI LETTER BO
-A81C SYLOTI NAGRI LETTER BHO
-A81D SYLOTI NAGRI LETTER MO
-A81E SYLOTI NAGRI LETTER RO
-A81F SYLOTI NAGRI LETTER LO
-A820 SYLOTI NAGRI LETTER RRO
-A821 SYLOTI NAGRI LETTER SO
-A822 SYLOTI NAGRI LETTER HO
-A823 SYLOTI NAGRI VOWEL SIGN A
-A824 SYLOTI NAGRI VOWEL SIGN I
-A825 SYLOTI NAGRI VOWEL SIGN U
-A826 SYLOTI NAGRI VOWEL SIGN E
-A827 SYLOTI NAGRI VOWEL SIGN OO
-A828 SYLOTI NAGRI POETRY MARK-1
-A829 SYLOTI NAGRI POETRY MARK-2
-A82A SYLOTI NAGRI POETRY MARK-3
-A82B SYLOTI NAGRI POETRY MARK-4
-AC00 D7A3 Hangul Syllable
-D800 DB7F Non Private Use High Surrogate
-DB80 DBFF Private Use High Surrogate
-DC00 DFFF Low Surrogate
-E000 F8FF Private Use
-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
-FA30 CJK COMPATIBILITY IDEOGRAPH-FA30
-FA31 CJK COMPATIBILITY IDEOGRAPH-FA31
-FA32 CJK COMPATIBILITY IDEOGRAPH-FA32
-FA33 CJK COMPATIBILITY IDEOGRAPH-FA33
-FA34 CJK COMPATIBILITY IDEOGRAPH-FA34
-FA35 CJK COMPATIBILITY IDEOGRAPH-FA35
-FA36 CJK COMPATIBILITY IDEOGRAPH-FA36
-FA37 CJK COMPATIBILITY IDEOGRAPH-FA37
-FA38 CJK COMPATIBILITY IDEOGRAPH-FA38
-FA39 CJK COMPATIBILITY IDEOGRAPH-FA39
-FA3A CJK COMPATIBILITY IDEOGRAPH-FA3A
-FA3B CJK COMPATIBILITY IDEOGRAPH-FA3B
-FA3C CJK COMPATIBILITY IDEOGRAPH-FA3C
-FA3D CJK COMPATIBILITY IDEOGRAPH-FA3D
-FA3E CJK COMPATIBILITY IDEOGRAPH-FA3E
-FA3F CJK COMPATIBILITY IDEOGRAPH-FA3F
-FA40 CJK COMPATIBILITY IDEOGRAPH-FA40
-FA41 CJK COMPATIBILITY IDEOGRAPH-FA41
-FA42 CJK COMPATIBILITY IDEOGRAPH-FA42
-FA43 CJK COMPATIBILITY IDEOGRAPH-FA43
-FA44 CJK COMPATIBILITY IDEOGRAPH-FA44
-FA45 CJK COMPATIBILITY IDEOGRAPH-FA45
-FA46 CJK COMPATIBILITY IDEOGRAPH-FA46
-FA47 CJK COMPATIBILITY IDEOGRAPH-FA47
-FA48 CJK COMPATIBILITY IDEOGRAPH-FA48
-FA49 CJK COMPATIBILITY IDEOGRAPH-FA49
-FA4A CJK COMPATIBILITY IDEOGRAPH-FA4A
-FA4B CJK COMPATIBILITY IDEOGRAPH-FA4B
-FA4C CJK COMPATIBILITY IDEOGRAPH-FA4C
-FA4D CJK COMPATIBILITY IDEOGRAPH-FA4D
-FA4E CJK COMPATIBILITY IDEOGRAPH-FA4E
-FA4F CJK COMPATIBILITY IDEOGRAPH-FA4F
-FA50 CJK COMPATIBILITY IDEOGRAPH-FA50
-FA51 CJK COMPATIBILITY IDEOGRAPH-FA51
-FA52 CJK COMPATIBILITY IDEOGRAPH-FA52
-FA53 CJK COMPATIBILITY IDEOGRAPH-FA53
-FA54 CJK COMPATIBILITY IDEOGRAPH-FA54
-FA55 CJK COMPATIBILITY IDEOGRAPH-FA55
-FA56 CJK COMPATIBILITY IDEOGRAPH-FA56
-FA57 CJK COMPATIBILITY IDEOGRAPH-FA57
-FA58 CJK COMPATIBILITY IDEOGRAPH-FA58
-FA59 CJK COMPATIBILITY IDEOGRAPH-FA59
-FA5A CJK COMPATIBILITY IDEOGRAPH-FA5A
-FA5B CJK COMPATIBILITY IDEOGRAPH-FA5B
-FA5C CJK COMPATIBILITY IDEOGRAPH-FA5C
-FA5D CJK COMPATIBILITY IDEOGRAPH-FA5D
-FA5E CJK COMPATIBILITY IDEOGRAPH-FA5E
-FA5F CJK COMPATIBILITY IDEOGRAPH-FA5F
-FA60 CJK COMPATIBILITY IDEOGRAPH-FA60
-FA61 CJK COMPATIBILITY IDEOGRAPH-FA61
-FA62 CJK COMPATIBILITY IDEOGRAPH-FA62
-FA63 CJK COMPATIBILITY IDEOGRAPH-FA63
-FA64 CJK COMPATIBILITY IDEOGRAPH-FA64
-FA65 CJK COMPATIBILITY IDEOGRAPH-FA65
-FA66 CJK COMPATIBILITY IDEOGRAPH-FA66
-FA67 CJK COMPATIBILITY IDEOGRAPH-FA67
-FA68 CJK COMPATIBILITY IDEOGRAPH-FA68
-FA69 CJK COMPATIBILITY IDEOGRAPH-FA69
-FA6A CJK COMPATIBILITY IDEOGRAPH-FA6A
-FA70 CJK COMPATIBILITY IDEOGRAPH-FA70
-FA71 CJK COMPATIBILITY IDEOGRAPH-FA71
-FA72 CJK COMPATIBILITY IDEOGRAPH-FA72
-FA73 CJK COMPATIBILITY IDEOGRAPH-FA73
-FA74 CJK COMPATIBILITY IDEOGRAPH-FA74
-FA75 CJK COMPATIBILITY IDEOGRAPH-FA75
-FA76 CJK COMPATIBILITY IDEOGRAPH-FA76
-FA77 CJK COMPATIBILITY IDEOGRAPH-FA77
-FA78 CJK COMPATIBILITY IDEOGRAPH-FA78
-FA79 CJK COMPATIBILITY IDEOGRAPH-FA79
-FA7A CJK COMPATIBILITY IDEOGRAPH-FA7A
-FA7B CJK COMPATIBILITY IDEOGRAPH-FA7B
-FA7C CJK COMPATIBILITY IDEOGRAPH-FA7C
-FA7D CJK COMPATIBILITY IDEOGRAPH-FA7D
-FA7E CJK COMPATIBILITY IDEOGRAPH-FA7E
-FA7F CJK COMPATIBILITY IDEOGRAPH-FA7F
-FA80 CJK COMPATIBILITY IDEOGRAPH-FA80
-FA81 CJK COMPATIBILITY IDEOGRAPH-FA81
-FA82 CJK COMPATIBILITY IDEOGRAPH-FA82
-FA83 CJK COMPATIBILITY IDEOGRAPH-FA83
-FA84 CJK COMPATIBILITY IDEOGRAPH-FA84
-FA85 CJK COMPATIBILITY IDEOGRAPH-FA85
-FA86 CJK COMPATIBILITY IDEOGRAPH-FA86
-FA87 CJK COMPATIBILITY IDEOGRAPH-FA87
-FA88 CJK COMPATIBILITY IDEOGRAPH-FA88
-FA89 CJK COMPATIBILITY IDEOGRAPH-FA89
-FA8A CJK COMPATIBILITY IDEOGRAPH-FA8A
-FA8B CJK COMPATIBILITY IDEOGRAPH-FA8B
-FA8C CJK COMPATIBILITY IDEOGRAPH-FA8C
-FA8D CJK COMPATIBILITY IDEOGRAPH-FA8D
-FA8E CJK COMPATIBILITY IDEOGRAPH-FA8E
-FA8F CJK COMPATIBILITY IDEOGRAPH-FA8F
-FA90 CJK COMPATIBILITY IDEOGRAPH-FA90
-FA91 CJK COMPATIBILITY IDEOGRAPH-FA91
-FA92 CJK COMPATIBILITY IDEOGRAPH-FA92
-FA93 CJK COMPATIBILITY IDEOGRAPH-FA93
-FA94 CJK COMPATIBILITY IDEOGRAPH-FA94
-FA95 CJK COMPATIBILITY IDEOGRAPH-FA95
-FA96 CJK COMPATIBILITY IDEOGRAPH-FA96
-FA97 CJK COMPATIBILITY IDEOGRAPH-FA97
-FA98 CJK COMPATIBILITY IDEOGRAPH-FA98
-FA99 CJK COMPATIBILITY IDEOGRAPH-FA99
-FA9A CJK COMPATIBILITY IDEOGRAPH-FA9A
-FA9B CJK COMPATIBILITY IDEOGRAPH-FA9B
-FA9C CJK COMPATIBILITY IDEOGRAPH-FA9C
-FA9D CJK COMPATIBILITY IDEOGRAPH-FA9D
-FA9E CJK COMPATIBILITY IDEOGRAPH-FA9E
-FA9F CJK COMPATIBILITY IDEOGRAPH-FA9F
-FAA0 CJK COMPATIBILITY IDEOGRAPH-FAA0
-FAA1 CJK COMPATIBILITY IDEOGRAPH-FAA1
-FAA2 CJK COMPATIBILITY IDEOGRAPH-FAA2
-FAA3 CJK COMPATIBILITY IDEOGRAPH-FAA3
-FAA4 CJK COMPATIBILITY IDEOGRAPH-FAA4
-FAA5 CJK COMPATIBILITY IDEOGRAPH-FAA5
-FAA6 CJK COMPATIBILITY IDEOGRAPH-FAA6
-FAA7 CJK COMPATIBILITY IDEOGRAPH-FAA7
-FAA8 CJK COMPATIBILITY IDEOGRAPH-FAA8
-FAA9 CJK COMPATIBILITY IDEOGRAPH-FAA9
-FAAA CJK COMPATIBILITY IDEOGRAPH-FAAA
-FAAB CJK COMPATIBILITY IDEOGRAPH-FAAB
-FAAC CJK COMPATIBILITY IDEOGRAPH-FAAC
-FAAD CJK COMPATIBILITY IDEOGRAPH-FAAD
-FAAE CJK COMPATIBILITY IDEOGRAPH-FAAE
-FAAF CJK COMPATIBILITY IDEOGRAPH-FAAF
-FAB0 CJK COMPATIBILITY IDEOGRAPH-FAB0
-FAB1 CJK COMPATIBILITY IDEOGRAPH-FAB1
-FAB2 CJK COMPATIBILITY IDEOGRAPH-FAB2
-FAB3 CJK COMPATIBILITY IDEOGRAPH-FAB3
-FAB4 CJK COMPATIBILITY IDEOGRAPH-FAB4
-FAB5 CJK COMPATIBILITY IDEOGRAPH-FAB5
-FAB6 CJK COMPATIBILITY IDEOGRAPH-FAB6
-FAB7 CJK COMPATIBILITY IDEOGRAPH-FAB7
-FAB8 CJK COMPATIBILITY IDEOGRAPH-FAB8
-FAB9 CJK COMPATIBILITY IDEOGRAPH-FAB9
-FABA CJK COMPATIBILITY IDEOGRAPH-FABA
-FABB CJK COMPATIBILITY IDEOGRAPH-FABB
-FABC CJK COMPATIBILITY IDEOGRAPH-FABC
-FABD CJK COMPATIBILITY IDEOGRAPH-FABD
-FABE CJK COMPATIBILITY IDEOGRAPH-FABE
-FABF CJK COMPATIBILITY IDEOGRAPH-FABF
-FAC0 CJK COMPATIBILITY IDEOGRAPH-FAC0
-FAC1 CJK COMPATIBILITY IDEOGRAPH-FAC1
-FAC2 CJK COMPATIBILITY IDEOGRAPH-FAC2
-FAC3 CJK COMPATIBILITY IDEOGRAPH-FAC3
-FAC4 CJK COMPATIBILITY IDEOGRAPH-FAC4
-FAC5 CJK COMPATIBILITY IDEOGRAPH-FAC5
-FAC6 CJK COMPATIBILITY IDEOGRAPH-FAC6
-FAC7 CJK COMPATIBILITY IDEOGRAPH-FAC7
-FAC8 CJK COMPATIBILITY IDEOGRAPH-FAC8
-FAC9 CJK COMPATIBILITY IDEOGRAPH-FAC9
-FACA CJK COMPATIBILITY IDEOGRAPH-FACA
-FACB CJK COMPATIBILITY IDEOGRAPH-FACB
-FACC CJK COMPATIBILITY IDEOGRAPH-FACC
-FACD CJK COMPATIBILITY IDEOGRAPH-FACD
-FACE CJK COMPATIBILITY IDEOGRAPH-FACE
-FACF CJK COMPATIBILITY IDEOGRAPH-FACF
-FAD0 CJK COMPATIBILITY IDEOGRAPH-FAD0
-FAD1 CJK COMPATIBILITY IDEOGRAPH-FAD1
-FAD2 CJK COMPATIBILITY IDEOGRAPH-FAD2
-FAD3 CJK COMPATIBILITY IDEOGRAPH-FAD3
-FAD4 CJK COMPATIBILITY IDEOGRAPH-FAD4
-FAD5 CJK COMPATIBILITY IDEOGRAPH-FAD5
-FAD6 CJK COMPATIBILITY IDEOGRAPH-FAD6
-FAD7 CJK COMPATIBILITY IDEOGRAPH-FAD7
-FAD8 CJK COMPATIBILITY IDEOGRAPH-FAD8
-FAD9 CJK COMPATIBILITY IDEOGRAPH-FAD9
-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
-FDFC RIAL SIGN
-FDFD ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
-FE00 VARIATION SELECTOR-1
-FE01 VARIATION SELECTOR-2
-FE02 VARIATION SELECTOR-3
-FE03 VARIATION SELECTOR-4
-FE04 VARIATION SELECTOR-5
-FE05 VARIATION SELECTOR-6
-FE06 VARIATION SELECTOR-7
-FE07 VARIATION SELECTOR-8
-FE08 VARIATION SELECTOR-9
-FE09 VARIATION SELECTOR-10
-FE0A VARIATION SELECTOR-11
-FE0B VARIATION SELECTOR-12
-FE0C VARIATION SELECTOR-13
-FE0D VARIATION SELECTOR-14
-FE0E VARIATION SELECTOR-15
-FE0F VARIATION SELECTOR-16
-FE10 PRESENTATION FORM FOR VERTICAL COMMA
-FE11 PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA
-FE12 PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP
-FE13 PRESENTATION FORM FOR VERTICAL COLON
-FE14 PRESENTATION FORM FOR VERTICAL SEMICOLON
-FE15 PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK
-FE16 PRESENTATION FORM FOR VERTICAL QUESTION MARK
-FE17 PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
-FE18 PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
-FE19 PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
-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
-FE45 SESAME DOT
-FE46 WHITE SESAME DOT
-FE47 PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
-FE48 PRESENTATION FORM FOR VERTICAL RIGHT SQUARE 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
-FE73 ARABIC TAIL FRAGMENT
-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
-FF5F FULLWIDTH LEFT WHITE PARENTHESIS
-FF60 FULLWIDTH RIGHT WHITE PARENTHESIS
-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
-10000 LINEAR B SYLLABLE B008 A
-10001 LINEAR B SYLLABLE B038 E
-10002 LINEAR B SYLLABLE B028 I
-10003 LINEAR B SYLLABLE B061 O
-10004 LINEAR B SYLLABLE B010 U
-10005 LINEAR B SYLLABLE B001 DA
-10006 LINEAR B SYLLABLE B045 DE
-10007 LINEAR B SYLLABLE B007 DI
-10008 LINEAR B SYLLABLE B014 DO
-10009 LINEAR B SYLLABLE B051 DU
-1000A LINEAR B SYLLABLE B057 JA
-1000B LINEAR B SYLLABLE B046 JE
-1000D LINEAR B SYLLABLE B036 JO
-1000E LINEAR B SYLLABLE B065 JU
-1000F LINEAR B SYLLABLE B077 KA
-10010 LINEAR B SYLLABLE B044 KE
-10011 LINEAR B SYLLABLE B067 KI
-10012 LINEAR B SYLLABLE B070 KO
-10013 LINEAR B SYLLABLE B081 KU
-10014 LINEAR B SYLLABLE B080 MA
-10015 LINEAR B SYLLABLE B013 ME
-10016 LINEAR B SYLLABLE B073 MI
-10017 LINEAR B SYLLABLE B015 MO
-10018 LINEAR B SYLLABLE B023 MU
-10019 LINEAR B SYLLABLE B006 NA
-1001A LINEAR B SYLLABLE B024 NE
-1001B LINEAR B SYLLABLE B030 NI
-1001C LINEAR B SYLLABLE B052 NO
-1001D LINEAR B SYLLABLE B055 NU
-1001E LINEAR B SYLLABLE B003 PA
-1001F LINEAR B SYLLABLE B072 PE
-10020 LINEAR B SYLLABLE B039 PI
-10021 LINEAR B SYLLABLE B011 PO
-10022 LINEAR B SYLLABLE B050 PU
-10023 LINEAR B SYLLABLE B016 QA
-10024 LINEAR B SYLLABLE B078 QE
-10025 LINEAR B SYLLABLE B021 QI
-10026 LINEAR B SYLLABLE B032 QO
-10028 LINEAR B SYLLABLE B060 RA
-10029 LINEAR B SYLLABLE B027 RE
-1002A LINEAR B SYLLABLE B053 RI
-1002B LINEAR B SYLLABLE B002 RO
-1002C LINEAR B SYLLABLE B026 RU
-1002D LINEAR B SYLLABLE B031 SA
-1002E LINEAR B SYLLABLE B009 SE
-1002F LINEAR B SYLLABLE B041 SI
-10030 LINEAR B SYLLABLE B012 SO
-10031 LINEAR B SYLLABLE B058 SU
-10032 LINEAR B SYLLABLE B059 TA
-10033 LINEAR B SYLLABLE B004 TE
-10034 LINEAR B SYLLABLE B037 TI
-10035 LINEAR B SYLLABLE B005 TO
-10036 LINEAR B SYLLABLE B069 TU
-10037 LINEAR B SYLLABLE B054 WA
-10038 LINEAR B SYLLABLE B075 WE
-10039 LINEAR B SYLLABLE B040 WI
-1003A LINEAR B SYLLABLE B042 WO
-1003C LINEAR B SYLLABLE B017 ZA
-1003D LINEAR B SYLLABLE B074 ZE
-1003F LINEAR B SYLLABLE B020 ZO
-10040 LINEAR B SYLLABLE B025 A2
-10041 LINEAR B SYLLABLE B043 A3
-10042 LINEAR B SYLLABLE B085 AU
-10043 LINEAR B SYLLABLE B071 DWE
-10044 LINEAR B SYLLABLE B090 DWO
-10045 LINEAR B SYLLABLE B048 NWA
-10046 LINEAR B SYLLABLE B029 PU2
-10047 LINEAR B SYLLABLE B062 PTE
-10048 LINEAR B SYLLABLE B076 RA2
-10049 LINEAR B SYLLABLE B033 RA3
-1004A LINEAR B SYLLABLE B068 RO2
-1004B LINEAR B SYLLABLE B066 TA2
-1004C LINEAR B SYLLABLE B087 TWE
-1004D LINEAR B SYLLABLE B091 TWO
-10050 LINEAR B SYMBOL B018
-10051 LINEAR B SYMBOL B019
-10052 LINEAR B SYMBOL B022
-10053 LINEAR B SYMBOL B034
-10054 LINEAR B SYMBOL B047
-10055 LINEAR B SYMBOL B049
-10056 LINEAR B SYMBOL B056
-10057 LINEAR B SYMBOL B063
-10058 LINEAR B SYMBOL B064
-10059 LINEAR B SYMBOL B079
-1005A LINEAR B SYMBOL B082
-1005B LINEAR B SYMBOL B083
-1005C LINEAR B SYMBOL B086
-1005D LINEAR B SYMBOL B089
-10080 LINEAR B IDEOGRAM B100 MAN
-10081 LINEAR B IDEOGRAM B102 WOMAN
-10082 LINEAR B IDEOGRAM B104 DEER
-10083 LINEAR B IDEOGRAM B105 EQUID
-10084 LINEAR B IDEOGRAM B105F MARE
-10085 LINEAR B IDEOGRAM B105M STALLION
-10086 LINEAR B IDEOGRAM B106F EWE
-10087 LINEAR B IDEOGRAM B106M RAM
-10088 LINEAR B IDEOGRAM B107F SHE-GOAT
-10089 LINEAR B IDEOGRAM B107M HE-GOAT
-1008A LINEAR B IDEOGRAM B108F SOW
-1008B LINEAR B IDEOGRAM B108M BOAR
-1008C LINEAR B IDEOGRAM B109F COW
-1008D LINEAR B IDEOGRAM B109M BULL
-1008E LINEAR B IDEOGRAM B120 WHEAT
-1008F LINEAR B IDEOGRAM B121 BARLEY
-10090 LINEAR B IDEOGRAM B122 OLIVE
-10091 LINEAR B IDEOGRAM B123 SPICE
-10092 LINEAR B IDEOGRAM B125 CYPERUS
-10093 LINEAR B MONOGRAM B127 KAPO
-10094 LINEAR B MONOGRAM B128 KANAKO
-10095 LINEAR B IDEOGRAM B130 OIL
-10096 LINEAR B IDEOGRAM B131 WINE
-10097 LINEAR B IDEOGRAM B132
-10098 LINEAR B MONOGRAM B133 AREPA
-10099 LINEAR B MONOGRAM B135 MERI
-1009A LINEAR B IDEOGRAM B140 BRONZE
-1009B LINEAR B IDEOGRAM B141 GOLD
-1009C LINEAR B IDEOGRAM B142
-1009D LINEAR B IDEOGRAM B145 WOOL
-1009E LINEAR B IDEOGRAM B146
-1009F LINEAR B IDEOGRAM B150
-100A0 LINEAR B IDEOGRAM B151 HORN
-100A1 LINEAR B IDEOGRAM B152
-100A2 LINEAR B IDEOGRAM B153
-100A3 LINEAR B IDEOGRAM B154
-100A4 LINEAR B MONOGRAM B156 TURO2
-100A5 LINEAR B IDEOGRAM B157
-100A6 LINEAR B IDEOGRAM B158
-100A7 LINEAR B IDEOGRAM B159 CLOTH
-100A8 LINEAR B IDEOGRAM B160
-100A9 LINEAR B IDEOGRAM B161
-100AA LINEAR B IDEOGRAM B162 GARMENT
-100AB LINEAR B IDEOGRAM B163 ARMOUR
-100AC LINEAR B IDEOGRAM B164
-100AD LINEAR B IDEOGRAM B165
-100AE LINEAR B IDEOGRAM B166
-100AF LINEAR B IDEOGRAM B167
-100B0 LINEAR B IDEOGRAM B168
-100B1 LINEAR B IDEOGRAM B169
-100B2 LINEAR B IDEOGRAM B170
-100B3 LINEAR B IDEOGRAM B171
-100B4 LINEAR B IDEOGRAM B172
-100B5 LINEAR B IDEOGRAM B173 MONTH
-100B6 LINEAR B IDEOGRAM B174
-100B7 LINEAR B IDEOGRAM B176 TREE
-100B8 LINEAR B IDEOGRAM B177
-100B9 LINEAR B IDEOGRAM B178
-100BA LINEAR B IDEOGRAM B179
-100BB LINEAR B IDEOGRAM B180
-100BC LINEAR B IDEOGRAM B181
-100BD LINEAR B IDEOGRAM B182
-100BE LINEAR B IDEOGRAM B183
-100BF LINEAR B IDEOGRAM B184
-100C0 LINEAR B IDEOGRAM B185
-100C1 LINEAR B IDEOGRAM B189
-100C2 LINEAR B IDEOGRAM B190
-100C3 LINEAR B IDEOGRAM B191 HELMET
-100C4 LINEAR B IDEOGRAM B220 FOOTSTOOL
-100C5 LINEAR B IDEOGRAM B225 BATHTUB
-100C6 LINEAR B IDEOGRAM B230 SPEAR
-100C7 LINEAR B IDEOGRAM B231 ARROW
-100C8 LINEAR B IDEOGRAM B232
-100C9 LINEAR B IDEOGRAM B233 SWORD
-100CA LINEAR B IDEOGRAM B234
-100CB LINEAR B IDEOGRAM B236
-100CC LINEAR B IDEOGRAM B240 WHEELED CHARIOT
-100CD LINEAR B IDEOGRAM B241 CHARIOT
-100CE LINEAR B IDEOGRAM B242 CHARIOT FRAME
-100CF LINEAR B IDEOGRAM B243 WHEEL
-100D0 LINEAR B IDEOGRAM B245
-100D1 LINEAR B IDEOGRAM B246
-100D2 LINEAR B MONOGRAM B247 DIPTE
-100D3 LINEAR B IDEOGRAM B248
-100D4 LINEAR B IDEOGRAM B249
-100D5 LINEAR B IDEOGRAM B251
-100D6 LINEAR B IDEOGRAM B252
-100D7 LINEAR B IDEOGRAM B253
-100D8 LINEAR B IDEOGRAM B254 DART
-100D9 LINEAR B IDEOGRAM B255
-100DA LINEAR B IDEOGRAM B256
-100DB LINEAR B IDEOGRAM B257
-100DC LINEAR B IDEOGRAM B258
-100DD LINEAR B IDEOGRAM B259
-100DE LINEAR B IDEOGRAM VESSEL B155
-100DF LINEAR B IDEOGRAM VESSEL B200
-100E0 LINEAR B IDEOGRAM VESSEL B201
-100E1 LINEAR B IDEOGRAM VESSEL B202
-100E2 LINEAR B IDEOGRAM VESSEL B203
-100E3 LINEAR B IDEOGRAM VESSEL B204
-100E4 LINEAR B IDEOGRAM VESSEL B205
-100E5 LINEAR B IDEOGRAM VESSEL B206
-100E6 LINEAR B IDEOGRAM VESSEL B207
-100E7 LINEAR B IDEOGRAM VESSEL B208
-100E8 LINEAR B IDEOGRAM VESSEL B209
-100E9 LINEAR B IDEOGRAM VESSEL B210
-100EA LINEAR B IDEOGRAM VESSEL B211
-100EB LINEAR B IDEOGRAM VESSEL B212
-100EC LINEAR B IDEOGRAM VESSEL B213
-100ED LINEAR B IDEOGRAM VESSEL B214
-100EE LINEAR B IDEOGRAM VESSEL B215
-100EF LINEAR B IDEOGRAM VESSEL B216
-100F0 LINEAR B IDEOGRAM VESSEL B217
-100F1 LINEAR B IDEOGRAM VESSEL B218
-100F2 LINEAR B IDEOGRAM VESSEL B219
-100F3 LINEAR B IDEOGRAM VESSEL B221
-100F4 LINEAR B IDEOGRAM VESSEL B222
-100F5 LINEAR B IDEOGRAM VESSEL B226
-100F6 LINEAR B IDEOGRAM VESSEL B227
-100F7 LINEAR B IDEOGRAM VESSEL B228
-100F8 LINEAR B IDEOGRAM VESSEL B229
-100F9 LINEAR B IDEOGRAM VESSEL B250
-100FA LINEAR B IDEOGRAM VESSEL B305
-10100 AEGEAN WORD SEPARATOR LINE
-10101 AEGEAN WORD SEPARATOR DOT
-10102 AEGEAN CHECK MARK
-10107 AEGEAN NUMBER ONE
-10108 AEGEAN NUMBER TWO
-10109 AEGEAN NUMBER THREE
-1010A AEGEAN NUMBER FOUR
-1010B AEGEAN NUMBER FIVE
-1010C AEGEAN NUMBER SIX
-1010D AEGEAN NUMBER SEVEN
-1010E AEGEAN NUMBER EIGHT
-1010F AEGEAN NUMBER NINE
-10110 AEGEAN NUMBER TEN
-10111 AEGEAN NUMBER TWENTY
-10112 AEGEAN NUMBER THIRTY
-10113 AEGEAN NUMBER FORTY
-10114 AEGEAN NUMBER FIFTY
-10115 AEGEAN NUMBER SIXTY
-10116 AEGEAN NUMBER SEVENTY
-10117 AEGEAN NUMBER EIGHTY
-10118 AEGEAN NUMBER NINETY
-10119 AEGEAN NUMBER ONE HUNDRED
-1011A AEGEAN NUMBER TWO HUNDRED
-1011B AEGEAN NUMBER THREE HUNDRED
-1011C AEGEAN NUMBER FOUR HUNDRED
-1011D AEGEAN NUMBER FIVE HUNDRED
-1011E AEGEAN NUMBER SIX HUNDRED
-1011F AEGEAN NUMBER SEVEN HUNDRED
-10120 AEGEAN NUMBER EIGHT HUNDRED
-10121 AEGEAN NUMBER NINE HUNDRED
-10122 AEGEAN NUMBER ONE THOUSAND
-10123 AEGEAN NUMBER TWO THOUSAND
-10124 AEGEAN NUMBER THREE THOUSAND
-10125 AEGEAN NUMBER FOUR THOUSAND
-10126 AEGEAN NUMBER FIVE THOUSAND
-10127 AEGEAN NUMBER SIX THOUSAND
-10128 AEGEAN NUMBER SEVEN THOUSAND
-10129 AEGEAN NUMBER EIGHT THOUSAND
-1012A AEGEAN NUMBER NINE THOUSAND
-1012B AEGEAN NUMBER TEN THOUSAND
-1012C AEGEAN NUMBER TWENTY THOUSAND
-1012D AEGEAN NUMBER THIRTY THOUSAND
-1012E AEGEAN NUMBER FORTY THOUSAND
-1012F AEGEAN NUMBER FIFTY THOUSAND
-10130 AEGEAN NUMBER SIXTY THOUSAND
-10131 AEGEAN NUMBER SEVENTY THOUSAND
-10132 AEGEAN NUMBER EIGHTY THOUSAND
-10133 AEGEAN NUMBER NINETY THOUSAND
-10137 AEGEAN WEIGHT BASE UNIT
-10138 AEGEAN WEIGHT FIRST SUBUNIT
-10139 AEGEAN WEIGHT SECOND SUBUNIT
-1013A AEGEAN WEIGHT THIRD SUBUNIT
-1013B AEGEAN WEIGHT FOURTH SUBUNIT
-1013C AEGEAN DRY MEASURE FIRST SUBUNIT
-1013D AEGEAN LIQUID MEASURE FIRST SUBUNIT
-1013E AEGEAN MEASURE SECOND SUBUNIT
-1013F AEGEAN MEASURE THIRD SUBUNIT
-10140 GREEK ACROPHONIC ATTIC ONE QUARTER
-10141 GREEK ACROPHONIC ATTIC ONE HALF
-10142 GREEK ACROPHONIC ATTIC ONE DRACHMA
-10143 GREEK ACROPHONIC ATTIC FIVE
-10144 GREEK ACROPHONIC ATTIC FIFTY
-10145 GREEK ACROPHONIC ATTIC FIVE HUNDRED
-10146 GREEK ACROPHONIC ATTIC FIVE THOUSAND
-10147 GREEK ACROPHONIC ATTIC FIFTY THOUSAND
-10148 GREEK ACROPHONIC ATTIC FIVE TALENTS
-10149 GREEK ACROPHONIC ATTIC TEN TALENTS
-1014A GREEK ACROPHONIC ATTIC FIFTY TALENTS
-1014B GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS
-1014C GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS
-1014D GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS
-1014E GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS
-1014F GREEK ACROPHONIC ATTIC FIVE STATERS
-10150 GREEK ACROPHONIC ATTIC TEN STATERS
-10151 GREEK ACROPHONIC ATTIC FIFTY STATERS
-10152 GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS
-10153 GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS
-10154 GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS
-10155 GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS
-10156 GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS
-10157 GREEK ACROPHONIC ATTIC TEN MNAS
-10158 GREEK ACROPHONIC HERAEUM ONE PLETHRON
-10159 GREEK ACROPHONIC THESPIAN ONE
-1015A GREEK ACROPHONIC HERMIONIAN ONE
-1015B GREEK ACROPHONIC EPIDAUREAN TWO
-1015C GREEK ACROPHONIC THESPIAN TWO
-1015D GREEK ACROPHONIC CYRENAIC TWO DRACHMAS
-1015E GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS
-1015F GREEK ACROPHONIC TROEZENIAN FIVE
-10160 GREEK ACROPHONIC TROEZENIAN TEN
-10161 GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM
-10162 GREEK ACROPHONIC HERMIONIAN TEN
-10163 GREEK ACROPHONIC MESSENIAN TEN
-10164 GREEK ACROPHONIC THESPIAN TEN
-10165 GREEK ACROPHONIC THESPIAN THIRTY
-10166 GREEK ACROPHONIC TROEZENIAN FIFTY
-10167 GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM
-10168 GREEK ACROPHONIC HERMIONIAN FIFTY
-10169 GREEK ACROPHONIC THESPIAN FIFTY
-1016A GREEK ACROPHONIC THESPIAN ONE HUNDRED
-1016B GREEK ACROPHONIC THESPIAN THREE HUNDRED
-1016C GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED
-1016D GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED
-1016E GREEK ACROPHONIC THESPIAN FIVE HUNDRED
-1016F GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED
-10170 GREEK ACROPHONIC NAXIAN FIVE HUNDRED
-10171 GREEK ACROPHONIC THESPIAN ONE THOUSAND
-10172 GREEK ACROPHONIC THESPIAN FIVE THOUSAND
-10173 GREEK ACROPHONIC DELPHIC FIVE MNAS
-10174 GREEK ACROPHONIC STRATIAN FIFTY MNAS
-10175 GREEK ONE HALF SIGN
-10176 GREEK ONE HALF SIGN ALTERNATE FORM
-10177 GREEK TWO THIRDS SIGN
-10178 GREEK THREE QUARTERS SIGN
-10179 GREEK YEAR SIGN
-1017A GREEK TALENT SIGN
-1017B GREEK DRACHMA SIGN
-1017C GREEK OBOL SIGN
-1017D GREEK TWO OBOLS SIGN
-1017E GREEK THREE OBOLS SIGN
-1017F GREEK FOUR OBOLS SIGN
-10180 GREEK FIVE OBOLS SIGN
-10181 GREEK METRETES SIGN
-10182 GREEK KYATHOS BASE SIGN
-10183 GREEK LITRA SIGN
-10184 GREEK OUNKIA SIGN
-10185 GREEK XESTES SIGN
-10186 GREEK ARTABE SIGN
-10187 GREEK AROURA SIGN
-10188 GREEK GRAMMA SIGN
-10189 GREEK TRYBLION BASE SIGN
-1018A GREEK ZERO SIGN
-10300 OLD ITALIC LETTER A
-10301 OLD ITALIC LETTER BE
-10302 OLD ITALIC LETTER KE
-10303 OLD ITALIC LETTER DE
-10304 OLD ITALIC LETTER E
-10305 OLD ITALIC LETTER VE
-10306 OLD ITALIC LETTER ZE
-10307 OLD ITALIC LETTER HE
-10308 OLD ITALIC LETTER THE
-10309 OLD ITALIC LETTER I
-1030A OLD ITALIC LETTER KA
-1030B OLD ITALIC LETTER EL
-1030C OLD ITALIC LETTER EM
-1030D OLD ITALIC LETTER EN
-1030E OLD ITALIC LETTER ESH
-1030F OLD ITALIC LETTER O
-10310 OLD ITALIC LETTER PE
-10311 OLD ITALIC LETTER SHE
-10312 OLD ITALIC LETTER KU
-10313 OLD ITALIC LETTER ER
-10314 OLD ITALIC LETTER ES
-10315 OLD ITALIC LETTER TE
-10316 OLD ITALIC LETTER U
-10317 OLD ITALIC LETTER EKS
-10318 OLD ITALIC LETTER PHE
-10319 OLD ITALIC LETTER KHE
-1031A OLD ITALIC LETTER EF
-1031B OLD ITALIC LETTER ERS
-1031C OLD ITALIC LETTER CHE
-1031D OLD ITALIC LETTER II
-1031E OLD ITALIC LETTER UU
-10320 OLD ITALIC NUMERAL ONE
-10321 OLD ITALIC NUMERAL FIVE
-10322 OLD ITALIC NUMERAL TEN
-10323 OLD ITALIC NUMERAL FIFTY
-10330 GOTHIC LETTER AHSA
-10331 GOTHIC LETTER BAIRKAN
-10332 GOTHIC LETTER GIBA
-10333 GOTHIC LETTER DAGS
-10334 GOTHIC LETTER AIHVUS
-10335 GOTHIC LETTER QAIRTHRA
-10336 GOTHIC LETTER IUJA
-10337 GOTHIC LETTER HAGL
-10338 GOTHIC LETTER THIUTH
-10339 GOTHIC LETTER EIS
-1033A GOTHIC LETTER KUSMA
-1033B GOTHIC LETTER LAGUS
-1033C GOTHIC LETTER MANNA
-1033D GOTHIC LETTER NAUTHS
-1033E GOTHIC LETTER JER
-1033F GOTHIC LETTER URUS
-10340 GOTHIC LETTER PAIRTHRA
-10341 GOTHIC LETTER NINETY
-10342 GOTHIC LETTER RAIDA
-10343 GOTHIC LETTER SAUIL
-10344 GOTHIC LETTER TEIWS
-10345 GOTHIC LETTER WINJA
-10346 GOTHIC LETTER FAIHU
-10347 GOTHIC LETTER IGGWS
-10348 GOTHIC LETTER HWAIR
-10349 GOTHIC LETTER OTHAL
-1034A GOTHIC LETTER NINE HUNDRED
-10380 UGARITIC LETTER ALPA
-10381 UGARITIC LETTER BETA
-10382 UGARITIC LETTER GAMLA
-10383 UGARITIC LETTER KHA
-10384 UGARITIC LETTER DELTA
-10385 UGARITIC LETTER HO
-10386 UGARITIC LETTER WO
-10387 UGARITIC LETTER ZETA
-10388 UGARITIC LETTER HOTA
-10389 UGARITIC LETTER TET
-1038A UGARITIC LETTER YOD
-1038B UGARITIC LETTER KAF
-1038C UGARITIC LETTER SHIN
-1038D UGARITIC LETTER LAMDA
-1038E UGARITIC LETTER MEM
-1038F UGARITIC LETTER DHAL
-10390 UGARITIC LETTER NUN
-10391 UGARITIC LETTER ZU
-10392 UGARITIC LETTER SAMKA
-10393 UGARITIC LETTER AIN
-10394 UGARITIC LETTER PU
-10395 UGARITIC LETTER SADE
-10396 UGARITIC LETTER QOPA
-10397 UGARITIC LETTER RASHA
-10398 UGARITIC LETTER THANNA
-10399 UGARITIC LETTER GHAIN
-1039A UGARITIC LETTER TO
-1039B UGARITIC LETTER I
-1039C UGARITIC LETTER U
-1039D UGARITIC LETTER SSU
-1039F UGARITIC WORD DIVIDER
-103A0 OLD PERSIAN SIGN A
-103A1 OLD PERSIAN SIGN I
-103A2 OLD PERSIAN SIGN U
-103A3 OLD PERSIAN SIGN KA
-103A4 OLD PERSIAN SIGN KU
-103A5 OLD PERSIAN SIGN GA
-103A6 OLD PERSIAN SIGN GU
-103A7 OLD PERSIAN SIGN XA
-103A8 OLD PERSIAN SIGN CA
-103A9 OLD PERSIAN SIGN JA
-103AA OLD PERSIAN SIGN JI
-103AB OLD PERSIAN SIGN TA
-103AC OLD PERSIAN SIGN TU
-103AD OLD PERSIAN SIGN DA
-103AE OLD PERSIAN SIGN DI
-103AF OLD PERSIAN SIGN DU
-103B0 OLD PERSIAN SIGN THA
-103B1 OLD PERSIAN SIGN PA
-103B2 OLD PERSIAN SIGN BA
-103B3 OLD PERSIAN SIGN FA
-103B4 OLD PERSIAN SIGN NA
-103B5 OLD PERSIAN SIGN NU
-103B6 OLD PERSIAN SIGN MA
-103B7 OLD PERSIAN SIGN MI
-103B8 OLD PERSIAN SIGN MU
-103B9 OLD PERSIAN SIGN YA
-103BA OLD PERSIAN SIGN VA
-103BB OLD PERSIAN SIGN VI
-103BC OLD PERSIAN SIGN RA
-103BD OLD PERSIAN SIGN RU
-103BE OLD PERSIAN SIGN LA
-103BF OLD PERSIAN SIGN SA
-103C0 OLD PERSIAN SIGN ZA
-103C1 OLD PERSIAN SIGN SHA
-103C2 OLD PERSIAN SIGN SSA
-103C3 OLD PERSIAN SIGN HA
-103C8 OLD PERSIAN SIGN AURAMAZDAA
-103C9 OLD PERSIAN SIGN AURAMAZDAA-2
-103CA OLD PERSIAN SIGN AURAMAZDAAHA
-103CB OLD PERSIAN SIGN XSHAAYATHIYA
-103CC OLD PERSIAN SIGN DAHYAAUSH
-103CD OLD PERSIAN SIGN DAHYAAUSH-2
-103CE OLD PERSIAN SIGN BAGA
-103CF OLD PERSIAN SIGN BUUMISH
-103D0 OLD PERSIAN WORD DIVIDER
-103D1 OLD PERSIAN NUMBER ONE
-103D2 OLD PERSIAN NUMBER TWO
-103D3 OLD PERSIAN NUMBER TEN
-103D4 OLD PERSIAN NUMBER TWENTY
-103D5 OLD PERSIAN NUMBER HUNDRED
-10400 DESERET CAPITAL LETTER LONG I
-10401 DESERET CAPITAL LETTER LONG E
-10402 DESERET CAPITAL LETTER LONG A
-10403 DESERET CAPITAL LETTER LONG AH
-10404 DESERET CAPITAL LETTER LONG O
-10405 DESERET CAPITAL LETTER LONG OO
-10406 DESERET CAPITAL LETTER SHORT I
-10407 DESERET CAPITAL LETTER SHORT E
-10408 DESERET CAPITAL LETTER SHORT A
-10409 DESERET CAPITAL LETTER SHORT AH
-1040A DESERET CAPITAL LETTER SHORT O
-1040B DESERET CAPITAL LETTER SHORT OO
-1040C DESERET CAPITAL LETTER AY
-1040D DESERET CAPITAL LETTER OW
-1040E DESERET CAPITAL LETTER WU
-1040F DESERET CAPITAL LETTER YEE
-10410 DESERET CAPITAL LETTER H
-10411 DESERET CAPITAL LETTER PEE
-10412 DESERET CAPITAL LETTER BEE
-10413 DESERET CAPITAL LETTER TEE
-10414 DESERET CAPITAL LETTER DEE
-10415 DESERET CAPITAL LETTER CHEE
-10416 DESERET CAPITAL LETTER JEE
-10417 DESERET CAPITAL LETTER KAY
-10418 DESERET CAPITAL LETTER GAY
-10419 DESERET CAPITAL LETTER EF
-1041A DESERET CAPITAL LETTER VEE
-1041B DESERET CAPITAL LETTER ETH
-1041C DESERET CAPITAL LETTER THEE
-1041D DESERET CAPITAL LETTER ES
-1041E DESERET CAPITAL LETTER ZEE
-1041F DESERET CAPITAL LETTER ESH
-10420 DESERET CAPITAL LETTER ZHEE
-10421 DESERET CAPITAL LETTER ER
-10422 DESERET CAPITAL LETTER EL
-10423 DESERET CAPITAL LETTER EM
-10424 DESERET CAPITAL LETTER EN
-10425 DESERET CAPITAL LETTER ENG
-10426 DESERET CAPITAL LETTER OI
-10427 DESERET CAPITAL LETTER EW
-10428 DESERET SMALL LETTER LONG I
-10429 DESERET SMALL LETTER LONG E
-1042A DESERET SMALL LETTER LONG A
-1042B DESERET SMALL LETTER LONG AH
-1042C DESERET SMALL LETTER LONG O
-1042D DESERET SMALL LETTER LONG OO
-1042E DESERET SMALL LETTER SHORT I
-1042F DESERET SMALL LETTER SHORT E
-10430 DESERET SMALL LETTER SHORT A
-10431 DESERET SMALL LETTER SHORT AH
-10432 DESERET SMALL LETTER SHORT O
-10433 DESERET SMALL LETTER SHORT OO
-10434 DESERET SMALL LETTER AY
-10435 DESERET SMALL LETTER OW
-10436 DESERET SMALL LETTER WU
-10437 DESERET SMALL LETTER YEE
-10438 DESERET SMALL LETTER H
-10439 DESERET SMALL LETTER PEE
-1043A DESERET SMALL LETTER BEE
-1043B DESERET SMALL LETTER TEE
-1043C DESERET SMALL LETTER DEE
-1043D DESERET SMALL LETTER CHEE
-1043E DESERET SMALL LETTER JEE
-1043F DESERET SMALL LETTER KAY
-10440 DESERET SMALL LETTER GAY
-10441 DESERET SMALL LETTER EF
-10442 DESERET SMALL LETTER VEE
-10443 DESERET SMALL LETTER ETH
-10444 DESERET SMALL LETTER THEE
-10445 DESERET SMALL LETTER ES
-10446 DESERET SMALL LETTER ZEE
-10447 DESERET SMALL LETTER ESH
-10448 DESERET SMALL LETTER ZHEE
-10449 DESERET SMALL LETTER ER
-1044A DESERET SMALL LETTER EL
-1044B DESERET SMALL LETTER EM
-1044C DESERET SMALL LETTER EN
-1044D DESERET SMALL LETTER ENG
-1044E DESERET SMALL LETTER OI
-1044F DESERET SMALL LETTER EW
-10450 SHAVIAN LETTER PEEP
-10451 SHAVIAN LETTER TOT
-10452 SHAVIAN LETTER KICK
-10453 SHAVIAN LETTER FEE
-10454 SHAVIAN LETTER THIGH
-10455 SHAVIAN LETTER SO
-10456 SHAVIAN LETTER SURE
-10457 SHAVIAN LETTER CHURCH
-10458 SHAVIAN LETTER YEA
-10459 SHAVIAN LETTER HUNG
-1045A SHAVIAN LETTER BIB
-1045B SHAVIAN LETTER DEAD
-1045C SHAVIAN LETTER GAG
-1045D SHAVIAN LETTER VOW
-1045E SHAVIAN LETTER THEY
-1045F SHAVIAN LETTER ZOO
-10460 SHAVIAN LETTER MEASURE
-10461 SHAVIAN LETTER JUDGE
-10462 SHAVIAN LETTER WOE
-10463 SHAVIAN LETTER HA-HA
-10464 SHAVIAN LETTER LOLL
-10465 SHAVIAN LETTER MIME
-10466 SHAVIAN LETTER IF
-10467 SHAVIAN LETTER EGG
-10468 SHAVIAN LETTER ASH
-10469 SHAVIAN LETTER ADO
-1046A SHAVIAN LETTER ON
-1046B SHAVIAN LETTER WOOL
-1046C SHAVIAN LETTER OUT
-1046D SHAVIAN LETTER AH
-1046E SHAVIAN LETTER ROAR
-1046F SHAVIAN LETTER NUN
-10470 SHAVIAN LETTER EAT
-10471 SHAVIAN LETTER AGE
-10472 SHAVIAN LETTER ICE
-10473 SHAVIAN LETTER UP
-10474 SHAVIAN LETTER OAK
-10475 SHAVIAN LETTER OOZE
-10476 SHAVIAN LETTER OIL
-10477 SHAVIAN LETTER AWE
-10478 SHAVIAN LETTER ARE
-10479 SHAVIAN LETTER OR
-1047A SHAVIAN LETTER AIR
-1047B SHAVIAN LETTER ERR
-1047C SHAVIAN LETTER ARRAY
-1047D SHAVIAN LETTER EAR
-1047E SHAVIAN LETTER IAN
-1047F SHAVIAN LETTER YEW
-10480 OSMANYA LETTER ALEF
-10481 OSMANYA LETTER BA
-10482 OSMANYA LETTER TA
-10483 OSMANYA LETTER JA
-10484 OSMANYA LETTER XA
-10485 OSMANYA LETTER KHA
-10486 OSMANYA LETTER DEEL
-10487 OSMANYA LETTER RA
-10488 OSMANYA LETTER SA
-10489 OSMANYA LETTER SHIIN
-1048A OSMANYA LETTER DHA
-1048B OSMANYA LETTER CAYN
-1048C OSMANYA LETTER GA
-1048D OSMANYA LETTER FA
-1048E OSMANYA LETTER QAAF
-1048F OSMANYA LETTER KAAF
-10490 OSMANYA LETTER LAAN
-10491 OSMANYA LETTER MIIN
-10492 OSMANYA LETTER NUUN
-10493 OSMANYA LETTER WAW
-10494 OSMANYA LETTER HA
-10495 OSMANYA LETTER YA
-10496 OSMANYA LETTER A
-10497 OSMANYA LETTER E
-10498 OSMANYA LETTER I
-10499 OSMANYA LETTER O
-1049A OSMANYA LETTER U
-1049B OSMANYA LETTER AA
-1049C OSMANYA LETTER EE
-1049D OSMANYA LETTER OO
-104A0 OSMANYA DIGIT ZERO
-104A1 OSMANYA DIGIT ONE
-104A2 OSMANYA DIGIT TWO
-104A3 OSMANYA DIGIT THREE
-104A4 OSMANYA DIGIT FOUR
-104A5 OSMANYA DIGIT FIVE
-104A6 OSMANYA DIGIT SIX
-104A7 OSMANYA DIGIT SEVEN
-104A8 OSMANYA DIGIT EIGHT
-104A9 OSMANYA DIGIT NINE
-10800 CYPRIOT SYLLABLE A
-10801 CYPRIOT SYLLABLE E
-10802 CYPRIOT SYLLABLE I
-10803 CYPRIOT SYLLABLE O
-10804 CYPRIOT SYLLABLE U
-10805 CYPRIOT SYLLABLE JA
-10808 CYPRIOT SYLLABLE JO
-1080A CYPRIOT SYLLABLE KA
-1080B CYPRIOT SYLLABLE KE
-1080C CYPRIOT SYLLABLE KI
-1080D CYPRIOT SYLLABLE KO
-1080E CYPRIOT SYLLABLE KU
-1080F CYPRIOT SYLLABLE LA
-10810 CYPRIOT SYLLABLE LE
-10811 CYPRIOT SYLLABLE LI
-10812 CYPRIOT SYLLABLE LO
-10813 CYPRIOT SYLLABLE LU
-10814 CYPRIOT SYLLABLE MA
-10815 CYPRIOT SYLLABLE ME
-10816 CYPRIOT SYLLABLE MI
-10817 CYPRIOT SYLLABLE MO
-10818 CYPRIOT SYLLABLE MU
-10819 CYPRIOT SYLLABLE NA
-1081A CYPRIOT SYLLABLE NE
-1081B CYPRIOT SYLLABLE NI
-1081C CYPRIOT SYLLABLE NO
-1081D CYPRIOT SYLLABLE NU
-1081E CYPRIOT SYLLABLE PA
-1081F CYPRIOT SYLLABLE PE
-10820 CYPRIOT SYLLABLE PI
-10821 CYPRIOT SYLLABLE PO
-10822 CYPRIOT SYLLABLE PU
-10823 CYPRIOT SYLLABLE RA
-10824 CYPRIOT SYLLABLE RE
-10825 CYPRIOT SYLLABLE RI
-10826 CYPRIOT SYLLABLE RO
-10827 CYPRIOT SYLLABLE RU
-10828 CYPRIOT SYLLABLE SA
-10829 CYPRIOT SYLLABLE SE
-1082A CYPRIOT SYLLABLE SI
-1082B CYPRIOT SYLLABLE SO
-1082C CYPRIOT SYLLABLE SU
-1082D CYPRIOT SYLLABLE TA
-1082E CYPRIOT SYLLABLE TE
-1082F CYPRIOT SYLLABLE TI
-10830 CYPRIOT SYLLABLE TO
-10831 CYPRIOT SYLLABLE TU
-10832 CYPRIOT SYLLABLE WA
-10833 CYPRIOT SYLLABLE WE
-10834 CYPRIOT SYLLABLE WI
-10835 CYPRIOT SYLLABLE WO
-10837 CYPRIOT SYLLABLE XA
-10838 CYPRIOT SYLLABLE XE
-1083C CYPRIOT SYLLABLE ZA
-1083F CYPRIOT SYLLABLE ZO
-10A00 KHAROSHTHI LETTER A
-10A01 KHAROSHTHI VOWEL SIGN I
-10A02 KHAROSHTHI VOWEL SIGN U
-10A03 KHAROSHTHI VOWEL SIGN VOCALIC R
-10A05 KHAROSHTHI VOWEL SIGN E
-10A06 KHAROSHTHI VOWEL SIGN O
-10A0C KHAROSHTHI VOWEL LENGTH MARK
-10A0D KHAROSHTHI SIGN DOUBLE RING BELOW
-10A0E KHAROSHTHI SIGN ANUSVARA
-10A0F KHAROSHTHI SIGN VISARGA
-10A10 KHAROSHTHI LETTER KA
-10A11 KHAROSHTHI LETTER KHA
-10A12 KHAROSHTHI LETTER GA
-10A13 KHAROSHTHI LETTER GHA
-10A15 KHAROSHTHI LETTER CA
-10A16 KHAROSHTHI LETTER CHA
-10A17 KHAROSHTHI LETTER JA
-10A19 KHAROSHTHI LETTER NYA
-10A1A KHAROSHTHI LETTER TTA
-10A1B KHAROSHTHI LETTER TTHA
-10A1C KHAROSHTHI LETTER DDA
-10A1D KHAROSHTHI LETTER DDHA
-10A1E KHAROSHTHI LETTER NNA
-10A1F KHAROSHTHI LETTER TA
-10A20 KHAROSHTHI LETTER THA
-10A21 KHAROSHTHI LETTER DA
-10A22 KHAROSHTHI LETTER DHA
-10A23 KHAROSHTHI LETTER NA
-10A24 KHAROSHTHI LETTER PA
-10A25 KHAROSHTHI LETTER PHA
-10A26 KHAROSHTHI LETTER BA
-10A27 KHAROSHTHI LETTER BHA
-10A28 KHAROSHTHI LETTER MA
-10A29 KHAROSHTHI LETTER YA
-10A2A KHAROSHTHI LETTER RA
-10A2B KHAROSHTHI LETTER LA
-10A2C KHAROSHTHI LETTER VA
-10A2D KHAROSHTHI LETTER SHA
-10A2E KHAROSHTHI LETTER SSA
-10A2F KHAROSHTHI LETTER SA
-10A30 KHAROSHTHI LETTER ZA
-10A31 KHAROSHTHI LETTER HA
-10A32 KHAROSHTHI LETTER KKA
-10A33 KHAROSHTHI LETTER TTTHA
-10A38 KHAROSHTHI SIGN BAR ABOVE
-10A39 KHAROSHTHI SIGN CAUDA
-10A3A KHAROSHTHI SIGN DOT BELOW
-10A3F KHAROSHTHI VIRAMA
-10A40 KHAROSHTHI DIGIT ONE
-10A41 KHAROSHTHI DIGIT TWO
-10A42 KHAROSHTHI DIGIT THREE
-10A43 KHAROSHTHI DIGIT FOUR
-10A44 KHAROSHTHI NUMBER TEN
-10A45 KHAROSHTHI NUMBER TWENTY
-10A46 KHAROSHTHI NUMBER ONE HUNDRED
-10A47 KHAROSHTHI NUMBER ONE THOUSAND
-10A50 KHAROSHTHI PUNCTUATION DOT
-10A51 KHAROSHTHI PUNCTUATION SMALL CIRCLE
-10A52 KHAROSHTHI PUNCTUATION CIRCLE
-10A53 KHAROSHTHI PUNCTUATION CRESCENT BAR
-10A54 KHAROSHTHI PUNCTUATION MANGALAM
-10A55 KHAROSHTHI PUNCTUATION LOTUS
-10A56 KHAROSHTHI PUNCTUATION DANDA
-10A57 KHAROSHTHI PUNCTUATION DOUBLE DANDA
-10A58 KHAROSHTHI PUNCTUATION LINES
-1D000 BYZANTINE MUSICAL SYMBOL PSILI
-1D001 BYZANTINE MUSICAL SYMBOL DASEIA
-1D002 BYZANTINE MUSICAL SYMBOL PERISPOMENI
-1D003 BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON
-1D004 BYZANTINE MUSICAL SYMBOL OXEIA DIPLI
-1D005 BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON
-1D006 BYZANTINE MUSICAL SYMBOL VAREIA DIPLI
-1D007 BYZANTINE MUSICAL SYMBOL KATHISTI
-1D008 BYZANTINE MUSICAL SYMBOL SYRMATIKI
-1D009 BYZANTINE MUSICAL SYMBOL PARAKLITIKI
-1D00A BYZANTINE MUSICAL SYMBOL YPOKRISIS
-1D00B BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI
-1D00C BYZANTINE MUSICAL SYMBOL KREMASTI
-1D00D BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON
-1D00E BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON
-1D00F BYZANTINE MUSICAL SYMBOL TELEIA
-1D010 BYZANTINE MUSICAL SYMBOL KENTIMATA
-1D011 BYZANTINE MUSICAL SYMBOL APOSTROFOS
-1D012 BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI
-1D013 BYZANTINE MUSICAL SYMBOL SYNEVMA
-1D014 BYZANTINE MUSICAL SYMBOL THITA
-1D015 BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION
-1D016 BYZANTINE MUSICAL SYMBOL GORGON ARCHAION
-1D017 BYZANTINE MUSICAL SYMBOL PSILON
-1D018 BYZANTINE MUSICAL SYMBOL CHAMILON
-1D019 BYZANTINE MUSICAL SYMBOL VATHY
-1D01A BYZANTINE MUSICAL SYMBOL ISON ARCHAION
-1D01B BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION
-1D01C BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION
-1D01D BYZANTINE MUSICAL SYMBOL SAXIMATA
-1D01E BYZANTINE MUSICAL SYMBOL PARICHON
-1D01F BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA
-1D020 BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION
-1D021 BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION
-1D022 BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION
-1D023 BYZANTINE MUSICAL SYMBOL APOTHEMA
-1D024 BYZANTINE MUSICAL SYMBOL KLASMA
-1D025 BYZANTINE MUSICAL SYMBOL REVMA
-1D026 BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION
-1D027 BYZANTINE MUSICAL SYMBOL TINAGMA
-1D028 BYZANTINE MUSICAL SYMBOL ANATRICHISMA
-1D029 BYZANTINE MUSICAL SYMBOL SEISMA
-1D02A BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION
-1D02B BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU
-1D02C BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION
-1D02D BYZANTINE MUSICAL SYMBOL THEMA
-1D02E BYZANTINE MUSICAL SYMBOL LEMOI
-1D02F BYZANTINE MUSICAL SYMBOL DYO
-1D030 BYZANTINE MUSICAL SYMBOL TRIA
-1D031 BYZANTINE MUSICAL SYMBOL TESSERA
-1D032 BYZANTINE MUSICAL SYMBOL KRATIMATA
-1D033 BYZANTINE MUSICAL SYMBOL APESO EXO NEO
-1D034 BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION
-1D035 BYZANTINE MUSICAL SYMBOL IMIFTHORA
-1D036 BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION
-1D037 BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON
-1D038 BYZANTINE MUSICAL SYMBOL PELASTON
-1D039 BYZANTINE MUSICAL SYMBOL PSIFISTON
-1D03A BYZANTINE MUSICAL SYMBOL KONTEVMA
-1D03B BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION
-1D03C BYZANTINE MUSICAL SYMBOL RAPISMA
-1D03D BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION
-1D03E BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION
-1D03F BYZANTINE MUSICAL SYMBOL ICHADIN
-1D040 BYZANTINE MUSICAL SYMBOL NANA
-1D041 BYZANTINE MUSICAL SYMBOL PETASMA
-1D042 BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO
-1D043 BYZANTINE MUSICAL SYMBOL TROMIKON ALLO
-1D044 BYZANTINE MUSICAL SYMBOL STRAGGISMATA
-1D045 BYZANTINE MUSICAL SYMBOL GRONTHISMATA
-1D046 BYZANTINE MUSICAL SYMBOL ISON NEO
-1D047 BYZANTINE MUSICAL SYMBOL OLIGON NEO
-1D048 BYZANTINE MUSICAL SYMBOL OXEIA NEO
-1D049 BYZANTINE MUSICAL SYMBOL PETASTI
-1D04A BYZANTINE MUSICAL SYMBOL KOUFISMA
-1D04B BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA
-1D04C BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA
-1D04D BYZANTINE MUSICAL SYMBOL PELASTON NEO
-1D04E BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO
-1D04F BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO
-1D050 BYZANTINE MUSICAL SYMBOL YPSILI
-1D051 BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO
-1D052 BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO
-1D053 BYZANTINE MUSICAL SYMBOL YPORROI
-1D054 BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON
-1D055 BYZANTINE MUSICAL SYMBOL ELAFRON
-1D056 BYZANTINE MUSICAL SYMBOL CHAMILI
-1D057 BYZANTINE MUSICAL SYMBOL MIKRON ISON
-1D058 BYZANTINE MUSICAL SYMBOL VAREIA NEO
-1D059 BYZANTINE MUSICAL SYMBOL PIASMA NEO
-1D05A BYZANTINE MUSICAL SYMBOL PSIFISTON NEO
-1D05B BYZANTINE MUSICAL SYMBOL OMALON
-1D05C BYZANTINE MUSICAL SYMBOL ANTIKENOMA
-1D05D BYZANTINE MUSICAL SYMBOL LYGISMA
-1D05E BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO
-1D05F BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO
-1D060 BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA
-1D061 BYZANTINE MUSICAL SYMBOL KYLISMA
-1D062 BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA
-1D063 BYZANTINE MUSICAL SYMBOL TROMIKON NEO
-1D064 BYZANTINE MUSICAL SYMBOL EKSTREPTON
-1D065 BYZANTINE MUSICAL SYMBOL SYNAGMA NEO
-1D066 BYZANTINE MUSICAL SYMBOL SYRMA
-1D067 BYZANTINE MUSICAL SYMBOL CHOREVMA NEO
-1D068 BYZANTINE MUSICAL SYMBOL EPEGERMA
-1D069 BYZANTINE MUSICAL SYMBOL SEISMA NEO
-1D06A BYZANTINE MUSICAL SYMBOL XIRON KLASMA
-1D06B BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON
-1D06C BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA
-1D06D BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA
-1D06E BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA
-1D06F BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA
-1D070 BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA
-1D071 BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA
-1D072 BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON
-1D073 BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON
-1D074 BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON
-1D075 BYZANTINE MUSICAL SYMBOL OYRANISMA NEO
-1D076 BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO
-1D077 BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO
-1D078 BYZANTINE MUSICAL SYMBOL THEMA APLOUN
-1D079 BYZANTINE MUSICAL SYMBOL THES KAI APOTHES
-1D07A BYZANTINE MUSICAL SYMBOL KATAVASMA
-1D07B BYZANTINE MUSICAL SYMBOL ENDOFONON
-1D07C BYZANTINE MUSICAL SYMBOL YFEN KATO
-1D07D BYZANTINE MUSICAL SYMBOL YFEN ANO
-1D07E BYZANTINE MUSICAL SYMBOL STAVROS
-1D07F BYZANTINE MUSICAL SYMBOL KLASMA ANO
-1D080 BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION
-1D081 BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION
-1D082 BYZANTINE MUSICAL SYMBOL KRATIMA ALLO
-1D083 BYZANTINE MUSICAL SYMBOL KRATIMA NEO
-1D084 BYZANTINE MUSICAL SYMBOL APODERMA NEO
-1D085 BYZANTINE MUSICAL SYMBOL APLI
-1D086 BYZANTINE MUSICAL SYMBOL DIPLI
-1D087 BYZANTINE MUSICAL SYMBOL TRIPLI
-1D088 BYZANTINE MUSICAL SYMBOL TETRAPLI
-1D089 BYZANTINE MUSICAL SYMBOL KORONIS
-1D08A BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU
-1D08B BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON
-1D08C BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON
-1D08D BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON
-1D08E BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU
-1D08F BYZANTINE MUSICAL SYMBOL GORGON NEO ANO
-1D090 BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA
-1D091 BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA
-1D092 BYZANTINE MUSICAL SYMBOL DIGORGON
-1D093 BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO
-1D094 BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO
-1D095 BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA
-1D096 BYZANTINE MUSICAL SYMBOL TRIGORGON
-1D097 BYZANTINE MUSICAL SYMBOL ARGON
-1D098 BYZANTINE MUSICAL SYMBOL IMIDIARGON
-1D099 BYZANTINE MUSICAL SYMBOL DIARGON
-1D09A BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI
-1D09B BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI
-1D09C BYZANTINE MUSICAL SYMBOL AGOGI ARGI
-1D09D BYZANTINE MUSICAL SYMBOL AGOGI METRIA
-1D09E BYZANTINE MUSICAL SYMBOL AGOGI MESI
-1D09F BYZANTINE MUSICAL SYMBOL AGOGI GORGI
-1D0A0 BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI
-1D0A1 BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI
-1D0A2 BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS
-1D0A3 BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS
-1D0A4 BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS
-1D0A5 BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS
-1D0A6 BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS
-1D0A7 BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS
-1D0A8 BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS
-1D0A9 BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS
-1D0AA BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS
-1D0AB BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS
-1D0AC BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS
-1D0AD BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS
-1D0AE BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS
-1D0AF BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS
-1D0B0 BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS
-1D0B1 BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS
-1D0B2 BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS
-1D0B3 BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS
-1D0B4 BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN
-1D0B5 BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN
-1D0B6 BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU
-1D0B7 BYZANTINE MUSICAL SYMBOL IMIFONON
-1D0B8 BYZANTINE MUSICAL SYMBOL IMIFTHORON
-1D0B9 BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU
-1D0BA BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA
-1D0BB BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA
-1D0BC BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS
-1D0BD BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI
-1D0BE BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI
-1D0BF BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE
-1D0C0 BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO
-1D0C1 BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO
-1D0C2 BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO
-1D0C3 BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS
-1D0C4 BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS
-1D0C5 BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS
-1D0C6 BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI
-1D0C7 BYZANTINE MUSICAL SYMBOL FTHORA NENANO
-1D0C8 BYZANTINE MUSICAL SYMBOL CHROA ZYGOS
-1D0C9 BYZANTINE MUSICAL SYMBOL CHROA KLITON
-1D0CA BYZANTINE MUSICAL SYMBOL CHROA SPATHI
-1D0CB BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION
-1D0CC BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA
-1D0CD BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION
-1D0CE BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION
-1D0CF BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION
-1D0D0 BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA
-1D0D1 BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA
-1D0D2 BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA
-1D0D3 BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA
-1D0D4 BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA
-1D0D5 BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA
-1D0D6 BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA
-1D0D7 BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA
-1D0D8 BYZANTINE MUSICAL SYMBOL GENIKI DIESIS
-1D0D9 BYZANTINE MUSICAL SYMBOL GENIKI YFESIS
-1D0DA BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI
-1D0DB BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI
-1D0DC BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI
-1D0DD BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS
-1D0DE BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS
-1D0DF BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU
-1D0E0 BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU
-1D0E1 BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU
-1D0E2 BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS
-1D0E3 BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU
-1D0E4 BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU
-1D0E5 BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU
-1D0E6 BYZANTINE MUSICAL SYMBOL DIGRAMMA GG
-1D0E7 BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU
-1D0E8 BYZANTINE MUSICAL SYMBOL STIGMA
-1D0E9 BYZANTINE MUSICAL SYMBOL ARKTIKO PA
-1D0EA BYZANTINE MUSICAL SYMBOL ARKTIKO VOU
-1D0EB BYZANTINE MUSICAL SYMBOL ARKTIKO GA
-1D0EC BYZANTINE MUSICAL SYMBOL ARKTIKO DI
-1D0ED BYZANTINE MUSICAL SYMBOL ARKTIKO KE
-1D0EE BYZANTINE MUSICAL SYMBOL ARKTIKO ZO
-1D0EF BYZANTINE MUSICAL SYMBOL ARKTIKO NI
-1D0F0 BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO
-1D0F1 BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO
-1D0F2 BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO
-1D0F3 BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO
-1D0F4 BYZANTINE MUSICAL SYMBOL KLASMA KATO
-1D0F5 BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
-1D100 MUSICAL SYMBOL SINGLE BARLINE
-1D101 MUSICAL SYMBOL DOUBLE BARLINE
-1D102 MUSICAL SYMBOL FINAL BARLINE
-1D103 MUSICAL SYMBOL REVERSE FINAL BARLINE
-1D104 MUSICAL SYMBOL DASHED BARLINE
-1D105 MUSICAL SYMBOL SHORT BARLINE
-1D106 MUSICAL SYMBOL LEFT REPEAT SIGN
-1D107 MUSICAL SYMBOL RIGHT REPEAT SIGN
-1D108 MUSICAL SYMBOL REPEAT DOTS
-1D109 MUSICAL SYMBOL DAL SEGNO
-1D10A MUSICAL SYMBOL DA CAPO
-1D10B MUSICAL SYMBOL SEGNO
-1D10C MUSICAL SYMBOL CODA
-1D10D MUSICAL SYMBOL REPEATED FIGURE-1
-1D10E MUSICAL SYMBOL REPEATED FIGURE-2
-1D10F MUSICAL SYMBOL REPEATED FIGURE-3
-1D110 MUSICAL SYMBOL FERMATA
-1D111 MUSICAL SYMBOL FERMATA BELOW
-1D112 MUSICAL SYMBOL BREATH MARK
-1D113 MUSICAL SYMBOL CAESURA
-1D114 MUSICAL SYMBOL BRACE
-1D115 MUSICAL SYMBOL BRACKET
-1D116 MUSICAL SYMBOL ONE-LINE STAFF
-1D117 MUSICAL SYMBOL TWO-LINE STAFF
-1D118 MUSICAL SYMBOL THREE-LINE STAFF
-1D119 MUSICAL SYMBOL FOUR-LINE STAFF
-1D11A MUSICAL SYMBOL FIVE-LINE STAFF
-1D11B MUSICAL SYMBOL SIX-LINE STAFF
-1D11C MUSICAL SYMBOL SIX-STRING FRETBOARD
-1D11D MUSICAL SYMBOL FOUR-STRING FRETBOARD
-1D11E MUSICAL SYMBOL G CLEF
-1D11F MUSICAL SYMBOL G CLEF OTTAVA ALTA
-1D120 MUSICAL SYMBOL G CLEF OTTAVA BASSA
-1D121 MUSICAL SYMBOL C CLEF
-1D122 MUSICAL SYMBOL F CLEF
-1D123 MUSICAL SYMBOL F CLEF OTTAVA ALTA
-1D124 MUSICAL SYMBOL F CLEF OTTAVA BASSA
-1D125 MUSICAL SYMBOL DRUM CLEF-1
-1D126 MUSICAL SYMBOL DRUM CLEF-2
-1D12A MUSICAL SYMBOL DOUBLE SHARP
-1D12B MUSICAL SYMBOL DOUBLE FLAT
-1D12C MUSICAL SYMBOL FLAT UP
-1D12D MUSICAL SYMBOL FLAT DOWN
-1D12E MUSICAL SYMBOL NATURAL UP
-1D12F MUSICAL SYMBOL NATURAL DOWN
-1D130 MUSICAL SYMBOL SHARP UP
-1D131 MUSICAL SYMBOL SHARP DOWN
-1D132 MUSICAL SYMBOL QUARTER TONE SHARP
-1D133 MUSICAL SYMBOL QUARTER TONE FLAT
-1D134 MUSICAL SYMBOL COMMON TIME
-1D135 MUSICAL SYMBOL CUT TIME
-1D136 MUSICAL SYMBOL OTTAVA ALTA
-1D137 MUSICAL SYMBOL OTTAVA BASSA
-1D138 MUSICAL SYMBOL QUINDICESIMA ALTA
-1D139 MUSICAL SYMBOL QUINDICESIMA BASSA
-1D13A MUSICAL SYMBOL MULTI REST
-1D13B MUSICAL SYMBOL WHOLE REST
-1D13C MUSICAL SYMBOL HALF REST
-1D13D MUSICAL SYMBOL QUARTER REST
-1D13E MUSICAL SYMBOL EIGHTH REST
-1D13F MUSICAL SYMBOL SIXTEENTH REST
-1D140 MUSICAL SYMBOL THIRTY-SECOND REST
-1D141 MUSICAL SYMBOL SIXTY-FOURTH REST
-1D142 MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST
-1D143 MUSICAL SYMBOL X NOTEHEAD
-1D144 MUSICAL SYMBOL PLUS NOTEHEAD
-1D145 MUSICAL SYMBOL CIRCLE X NOTEHEAD
-1D146 MUSICAL SYMBOL SQUARE NOTEHEAD WHITE
-1D147 MUSICAL SYMBOL SQUARE NOTEHEAD BLACK
-1D148 MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE
-1D149 MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK
-1D14A MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE
-1D14B MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK
-1D14C MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE
-1D14D MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK
-1D14E MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE
-1D14F MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK
-1D150 MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE
-1D151 MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK
-1D152 MUSICAL SYMBOL MOON NOTEHEAD WHITE
-1D153 MUSICAL SYMBOL MOON NOTEHEAD BLACK
-1D154 MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE
-1D155 MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK
-1D156 MUSICAL SYMBOL PARENTHESIS NOTEHEAD
-1D157 MUSICAL SYMBOL VOID NOTEHEAD
-1D158 MUSICAL SYMBOL NOTEHEAD BLACK
-1D159 MUSICAL SYMBOL NULL NOTEHEAD
-1D15A MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE
-1D15B MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK
-1D15C MUSICAL SYMBOL BREVE
-1D15D MUSICAL SYMBOL WHOLE NOTE
-1D15E MUSICAL SYMBOL HALF NOTE
-1D15F MUSICAL SYMBOL QUARTER NOTE
-1D160 MUSICAL SYMBOL EIGHTH NOTE
-1D161 MUSICAL SYMBOL SIXTEENTH NOTE
-1D162 MUSICAL SYMBOL THIRTY-SECOND NOTE
-1D163 MUSICAL SYMBOL SIXTY-FOURTH NOTE
-1D164 MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
-1D165 MUSICAL SYMBOL COMBINING STEM
-1D166 MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
-1D167 MUSICAL SYMBOL COMBINING TREMOLO-1
-1D168 MUSICAL SYMBOL COMBINING TREMOLO-2
-1D169 MUSICAL SYMBOL COMBINING TREMOLO-3
-1D16A MUSICAL SYMBOL FINGERED TREMOLO-1
-1D16B MUSICAL SYMBOL FINGERED TREMOLO-2
-1D16C MUSICAL SYMBOL FINGERED TREMOLO-3
-1D16D MUSICAL SYMBOL COMBINING AUGMENTATION DOT
-1D16E MUSICAL SYMBOL COMBINING FLAG-1
-1D16F MUSICAL SYMBOL COMBINING FLAG-2
-1D170 MUSICAL SYMBOL COMBINING FLAG-3
-1D171 MUSICAL SYMBOL COMBINING FLAG-4
-1D172 MUSICAL SYMBOL COMBINING FLAG-5
-1D173 MUSICAL SYMBOL BEGIN BEAM
-1D174 MUSICAL SYMBOL END BEAM
-1D175 MUSICAL SYMBOL BEGIN TIE
-1D176 MUSICAL SYMBOL END TIE
-1D177 MUSICAL SYMBOL BEGIN SLUR
-1D178 MUSICAL SYMBOL END SLUR
-1D179 MUSICAL SYMBOL BEGIN PHRASE
-1D17A MUSICAL SYMBOL END PHRASE
-1D17B MUSICAL SYMBOL COMBINING ACCENT
-1D17C MUSICAL SYMBOL COMBINING STACCATO
-1D17D MUSICAL SYMBOL COMBINING TENUTO
-1D17E MUSICAL SYMBOL COMBINING STACCATISSIMO
-1D17F MUSICAL SYMBOL COMBINING MARCATO
-1D180 MUSICAL SYMBOL COMBINING MARCATO-STACCATO
-1D181 MUSICAL SYMBOL COMBINING ACCENT-STACCATO
-1D182 MUSICAL SYMBOL COMBINING LOURE
-1D183 MUSICAL SYMBOL ARPEGGIATO UP
-1D184 MUSICAL SYMBOL ARPEGGIATO DOWN
-1D185 MUSICAL SYMBOL COMBINING DOIT
-1D186 MUSICAL SYMBOL COMBINING RIP
-1D187 MUSICAL SYMBOL COMBINING FLIP
-1D188 MUSICAL SYMBOL COMBINING SMEAR
-1D189 MUSICAL SYMBOL COMBINING BEND
-1D18A MUSICAL SYMBOL COMBINING DOUBLE TONGUE
-1D18B MUSICAL SYMBOL COMBINING TRIPLE TONGUE
-1D18C MUSICAL SYMBOL RINFORZANDO
-1D18D MUSICAL SYMBOL SUBITO
-1D18E MUSICAL SYMBOL Z
-1D18F MUSICAL SYMBOL PIANO
-1D190 MUSICAL SYMBOL MEZZO
-1D191 MUSICAL SYMBOL FORTE
-1D192 MUSICAL SYMBOL CRESCENDO
-1D193 MUSICAL SYMBOL DECRESCENDO
-1D194 MUSICAL SYMBOL GRACE NOTE SLASH
-1D195 MUSICAL SYMBOL GRACE NOTE NO SLASH
-1D196 MUSICAL SYMBOL TR
-1D197 MUSICAL SYMBOL TURN
-1D198 MUSICAL SYMBOL INVERTED TURN
-1D199 MUSICAL SYMBOL TURN SLASH
-1D19A MUSICAL SYMBOL TURN UP
-1D19B MUSICAL SYMBOL ORNAMENT STROKE-1
-1D19C MUSICAL SYMBOL ORNAMENT STROKE-2
-1D19D MUSICAL SYMBOL ORNAMENT STROKE-3
-1D19E MUSICAL SYMBOL ORNAMENT STROKE-4
-1D19F MUSICAL SYMBOL ORNAMENT STROKE-5
-1D1A0 MUSICAL SYMBOL ORNAMENT STROKE-6
-1D1A1 MUSICAL SYMBOL ORNAMENT STROKE-7
-1D1A2 MUSICAL SYMBOL ORNAMENT STROKE-8
-1D1A3 MUSICAL SYMBOL ORNAMENT STROKE-9
-1D1A4 MUSICAL SYMBOL ORNAMENT STROKE-10
-1D1A5 MUSICAL SYMBOL ORNAMENT STROKE-11
-1D1A6 MUSICAL SYMBOL HAUPTSTIMME
-1D1A7 MUSICAL SYMBOL NEBENSTIMME
-1D1A8 MUSICAL SYMBOL END OF STIMME
-1D1A9 MUSICAL SYMBOL DEGREE SLASH
-1D1AA MUSICAL SYMBOL COMBINING DOWN BOW
-1D1AB MUSICAL SYMBOL COMBINING UP BOW
-1D1AC MUSICAL SYMBOL COMBINING HARMONIC
-1D1AD MUSICAL SYMBOL COMBINING SNAP PIZZICATO
-1D1AE MUSICAL SYMBOL PEDAL MARK
-1D1AF MUSICAL SYMBOL PEDAL UP MARK
-1D1B0 MUSICAL SYMBOL HALF PEDAL MARK
-1D1B1 MUSICAL SYMBOL GLISSANDO UP
-1D1B2 MUSICAL SYMBOL GLISSANDO DOWN
-1D1B3 MUSICAL SYMBOL WITH FINGERNAILS
-1D1B4 MUSICAL SYMBOL DAMP
-1D1B5 MUSICAL SYMBOL DAMP ALL
-1D1B6 MUSICAL SYMBOL MAXIMA
-1D1B7 MUSICAL SYMBOL LONGA
-1D1B8 MUSICAL SYMBOL BREVIS
-1D1B9 MUSICAL SYMBOL SEMIBREVIS WHITE
-1D1BA MUSICAL SYMBOL SEMIBREVIS BLACK
-1D1BB MUSICAL SYMBOL MINIMA
-1D1BC MUSICAL SYMBOL MINIMA BLACK
-1D1BD MUSICAL SYMBOL SEMIMINIMA WHITE
-1D1BE MUSICAL SYMBOL SEMIMINIMA BLACK
-1D1BF MUSICAL SYMBOL FUSA WHITE
-1D1C0 MUSICAL SYMBOL FUSA BLACK
-1D1C1 MUSICAL SYMBOL LONGA PERFECTA REST
-1D1C2 MUSICAL SYMBOL LONGA IMPERFECTA REST
-1D1C3 MUSICAL SYMBOL BREVIS REST
-1D1C4 MUSICAL SYMBOL SEMIBREVIS REST
-1D1C5 MUSICAL SYMBOL MINIMA REST
-1D1C6 MUSICAL SYMBOL SEMIMINIMA REST
-1D1C7 MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA
-1D1C8 MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA
-1D1C9 MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1
-1D1CA MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA
-1D1CB MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA
-1D1CC MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1
-1D1CD MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2
-1D1CE MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3
-1D1CF MUSICAL SYMBOL CROIX
-1D1D0 MUSICAL SYMBOL GREGORIAN C CLEF
-1D1D1 MUSICAL SYMBOL GREGORIAN F CLEF
-1D1D2 MUSICAL SYMBOL SQUARE B
-1D1D3 MUSICAL SYMBOL VIRGA
-1D1D4 MUSICAL SYMBOL PODATUS
-1D1D5 MUSICAL SYMBOL CLIVIS
-1D1D6 MUSICAL SYMBOL SCANDICUS
-1D1D7 MUSICAL SYMBOL CLIMACUS
-1D1D8 MUSICAL SYMBOL TORCULUS
-1D1D9 MUSICAL SYMBOL PORRECTUS
-1D1DA MUSICAL SYMBOL PORRECTUS FLEXUS
-1D1DB MUSICAL SYMBOL SCANDICUS FLEXUS
-1D1DC MUSICAL SYMBOL TORCULUS RESUPINUS
-1D1DD MUSICAL SYMBOL PES SUBPUNCTIS
-1D200 GREEK VOCAL NOTATION SYMBOL-1
-1D201 GREEK VOCAL NOTATION SYMBOL-2
-1D202 GREEK VOCAL NOTATION SYMBOL-3
-1D203 GREEK VOCAL NOTATION SYMBOL-4
-1D204 GREEK VOCAL NOTATION SYMBOL-5
-1D205 GREEK VOCAL NOTATION SYMBOL-6
-1D206 GREEK VOCAL NOTATION SYMBOL-7
-1D207 GREEK VOCAL NOTATION SYMBOL-8
-1D208 GREEK VOCAL NOTATION SYMBOL-9
-1D209 GREEK VOCAL NOTATION SYMBOL-10
-1D20A GREEK VOCAL NOTATION SYMBOL-11
-1D20B GREEK VOCAL NOTATION SYMBOL-12
-1D20C GREEK VOCAL NOTATION SYMBOL-13
-1D20D GREEK VOCAL NOTATION SYMBOL-14
-1D20E GREEK VOCAL NOTATION SYMBOL-15
-1D20F GREEK VOCAL NOTATION SYMBOL-16
-1D210 GREEK VOCAL NOTATION SYMBOL-17
-1D211 GREEK VOCAL NOTATION SYMBOL-18
-1D212 GREEK VOCAL NOTATION SYMBOL-19
-1D213 GREEK VOCAL NOTATION SYMBOL-20
-1D214 GREEK VOCAL NOTATION SYMBOL-21
-1D215 GREEK VOCAL NOTATION SYMBOL-22
-1D216 GREEK VOCAL NOTATION SYMBOL-23
-1D217 GREEK VOCAL NOTATION SYMBOL-24
-1D218 GREEK VOCAL NOTATION SYMBOL-50
-1D219 GREEK VOCAL NOTATION SYMBOL-51
-1D21A GREEK VOCAL NOTATION SYMBOL-52
-1D21B GREEK VOCAL NOTATION SYMBOL-53
-1D21C GREEK VOCAL NOTATION SYMBOL-54
-1D21D GREEK INSTRUMENTAL NOTATION SYMBOL-1
-1D21E GREEK INSTRUMENTAL NOTATION SYMBOL-2
-1D21F GREEK INSTRUMENTAL NOTATION SYMBOL-4
-1D220 GREEK INSTRUMENTAL NOTATION SYMBOL-5
-1D221 GREEK INSTRUMENTAL NOTATION SYMBOL-7
-1D222 GREEK INSTRUMENTAL NOTATION SYMBOL-8
-1D223 GREEK INSTRUMENTAL NOTATION SYMBOL-11
-1D224 GREEK INSTRUMENTAL NOTATION SYMBOL-12
-1D225 GREEK INSTRUMENTAL NOTATION SYMBOL-13
-1D226 GREEK INSTRUMENTAL NOTATION SYMBOL-14
-1D227 GREEK INSTRUMENTAL NOTATION SYMBOL-17
-1D228 GREEK INSTRUMENTAL NOTATION SYMBOL-18
-1D229 GREEK INSTRUMENTAL NOTATION SYMBOL-19
-1D22A GREEK INSTRUMENTAL NOTATION SYMBOL-23
-1D22B GREEK INSTRUMENTAL NOTATION SYMBOL-24
-1D22C GREEK INSTRUMENTAL NOTATION SYMBOL-25
-1D22D GREEK INSTRUMENTAL NOTATION SYMBOL-26
-1D22E GREEK INSTRUMENTAL NOTATION SYMBOL-27
-1D22F GREEK INSTRUMENTAL NOTATION SYMBOL-29
-1D230 GREEK INSTRUMENTAL NOTATION SYMBOL-30
-1D231 GREEK INSTRUMENTAL NOTATION SYMBOL-32
-1D232 GREEK INSTRUMENTAL NOTATION SYMBOL-36
-1D233 GREEK INSTRUMENTAL NOTATION SYMBOL-37
-1D234 GREEK INSTRUMENTAL NOTATION SYMBOL-38
-1D235 GREEK INSTRUMENTAL NOTATION SYMBOL-39
-1D236 GREEK INSTRUMENTAL NOTATION SYMBOL-40
-1D237 GREEK INSTRUMENTAL NOTATION SYMBOL-42
-1D238 GREEK INSTRUMENTAL NOTATION SYMBOL-43
-1D239 GREEK INSTRUMENTAL NOTATION SYMBOL-45
-1D23A GREEK INSTRUMENTAL NOTATION SYMBOL-47
-1D23B GREEK INSTRUMENTAL NOTATION SYMBOL-48
-1D23C GREEK INSTRUMENTAL NOTATION SYMBOL-49
-1D23D GREEK INSTRUMENTAL NOTATION SYMBOL-50
-1D23E GREEK INSTRUMENTAL NOTATION SYMBOL-51
-1D23F GREEK INSTRUMENTAL NOTATION SYMBOL-52
-1D240 GREEK INSTRUMENTAL NOTATION SYMBOL-53
-1D241 GREEK INSTRUMENTAL NOTATION SYMBOL-54
-1D242 COMBINING GREEK MUSICAL TRISEME
-1D243 COMBINING GREEK MUSICAL TETRASEME
-1D244 COMBINING GREEK MUSICAL PENTASEME
-1D245 GREEK MUSICAL LEIMMA
-1D300 MONOGRAM FOR EARTH
-1D301 DIGRAM FOR HEAVENLY EARTH
-1D302 DIGRAM FOR HUMAN EARTH
-1D303 DIGRAM FOR EARTHLY HEAVEN
-1D304 DIGRAM FOR EARTHLY HUMAN
-1D305 DIGRAM FOR EARTH
-1D306 TETRAGRAM FOR CENTRE
-1D307 TETRAGRAM FOR FULL CIRCLE
-1D308 TETRAGRAM FOR MIRED
-1D309 TETRAGRAM FOR BARRIER
-1D30A TETRAGRAM FOR KEEPING SMALL
-1D30B TETRAGRAM FOR CONTRARIETY
-1D30C TETRAGRAM FOR ASCENT
-1D30D TETRAGRAM FOR OPPOSITION
-1D30E TETRAGRAM FOR BRANCHING OUT
-1D30F TETRAGRAM FOR DEFECTIVENESS OR DISTORTION
-1D310 TETRAGRAM FOR DIVERGENCE
-1D311 TETRAGRAM FOR YOUTHFULNESS
-1D312 TETRAGRAM FOR INCREASE
-1D313 TETRAGRAM FOR PENETRATION
-1D314 TETRAGRAM FOR REACH
-1D315 TETRAGRAM FOR CONTACT
-1D316 TETRAGRAM FOR HOLDING BACK
-1D317 TETRAGRAM FOR WAITING
-1D318 TETRAGRAM FOR FOLLOWING
-1D319 TETRAGRAM FOR ADVANCE
-1D31A TETRAGRAM FOR RELEASE
-1D31B TETRAGRAM FOR RESISTANCE
-1D31C TETRAGRAM FOR EASE
-1D31D TETRAGRAM FOR JOY
-1D31E TETRAGRAM FOR CONTENTION
-1D31F TETRAGRAM FOR ENDEAVOUR
-1D320 TETRAGRAM FOR DUTIES
-1D321 TETRAGRAM FOR CHANGE
-1D322 TETRAGRAM FOR DECISIVENESS
-1D323 TETRAGRAM FOR BOLD RESOLUTION
-1D324 TETRAGRAM FOR PACKING
-1D325 TETRAGRAM FOR LEGION
-1D326 TETRAGRAM FOR CLOSENESS
-1D327 TETRAGRAM FOR KINSHIP
-1D328 TETRAGRAM FOR GATHERING
-1D329 TETRAGRAM FOR STRENGTH
-1D32A TETRAGRAM FOR PURITY
-1D32B TETRAGRAM FOR FULLNESS
-1D32C TETRAGRAM FOR RESIDENCE
-1D32D TETRAGRAM FOR LAW OR MODEL
-1D32E TETRAGRAM FOR RESPONSE
-1D32F TETRAGRAM FOR GOING TO MEET
-1D330 TETRAGRAM FOR ENCOUNTERS
-1D331 TETRAGRAM FOR STOVE
-1D332 TETRAGRAM FOR GREATNESS
-1D333 TETRAGRAM FOR ENLARGEMENT
-1D334 TETRAGRAM FOR PATTERN
-1D335 TETRAGRAM FOR RITUAL
-1D336 TETRAGRAM FOR FLIGHT
-1D337 TETRAGRAM FOR VASTNESS OR WASTING
-1D338 TETRAGRAM FOR CONSTANCY
-1D339 TETRAGRAM FOR MEASURE
-1D33A TETRAGRAM FOR ETERNITY
-1D33B TETRAGRAM FOR UNITY
-1D33C TETRAGRAM FOR DIMINISHMENT
-1D33D TETRAGRAM FOR CLOSED MOUTH
-1D33E TETRAGRAM FOR GUARDEDNESS
-1D33F TETRAGRAM FOR GATHERING IN
-1D340 TETRAGRAM FOR MASSING
-1D341 TETRAGRAM FOR ACCUMULATION
-1D342 TETRAGRAM FOR EMBELLISHMENT
-1D343 TETRAGRAM FOR DOUBT
-1D344 TETRAGRAM FOR WATCH
-1D345 TETRAGRAM FOR SINKING
-1D346 TETRAGRAM FOR INNER
-1D347 TETRAGRAM FOR DEPARTURE
-1D348 TETRAGRAM FOR DARKENING
-1D349 TETRAGRAM FOR DIMMING
-1D34A TETRAGRAM FOR EXHAUSTION
-1D34B TETRAGRAM FOR SEVERANCE
-1D34C TETRAGRAM FOR STOPPAGE
-1D34D TETRAGRAM FOR HARDNESS
-1D34E TETRAGRAM FOR COMPLETION
-1D34F TETRAGRAM FOR CLOSURE
-1D350 TETRAGRAM FOR FAILURE
-1D351 TETRAGRAM FOR AGGRAVATION
-1D352 TETRAGRAM FOR COMPLIANCE
-1D353 TETRAGRAM FOR ON THE VERGE
-1D354 TETRAGRAM FOR DIFFICULTIES
-1D355 TETRAGRAM FOR LABOURING
-1D356 TETRAGRAM FOR FOSTERING
-1D400 MATHEMATICAL BOLD CAPITAL A
-1D401 MATHEMATICAL BOLD CAPITAL B
-1D402 MATHEMATICAL BOLD CAPITAL C
-1D403 MATHEMATICAL BOLD CAPITAL D
-1D404 MATHEMATICAL BOLD CAPITAL E
-1D405 MATHEMATICAL BOLD CAPITAL F
-1D406 MATHEMATICAL BOLD CAPITAL G
-1D407 MATHEMATICAL BOLD CAPITAL H
-1D408 MATHEMATICAL BOLD CAPITAL I
-1D409 MATHEMATICAL BOLD CAPITAL J
-1D40A MATHEMATICAL BOLD CAPITAL K
-1D40B MATHEMATICAL BOLD CAPITAL L
-1D40C MATHEMATICAL BOLD CAPITAL M
-1D40D MATHEMATICAL BOLD CAPITAL N
-1D40E MATHEMATICAL BOLD CAPITAL O
-1D40F MATHEMATICAL BOLD CAPITAL P
-1D410 MATHEMATICAL BOLD CAPITAL Q
-1D411 MATHEMATICAL BOLD CAPITAL R
-1D412 MATHEMATICAL BOLD CAPITAL S
-1D413 MATHEMATICAL BOLD CAPITAL T
-1D414 MATHEMATICAL BOLD CAPITAL U
-1D415 MATHEMATICAL BOLD CAPITAL V
-1D416 MATHEMATICAL BOLD CAPITAL W
-1D417 MATHEMATICAL BOLD CAPITAL X
-1D418 MATHEMATICAL BOLD CAPITAL Y
-1D419 MATHEMATICAL BOLD CAPITAL Z
-1D41A MATHEMATICAL BOLD SMALL A
-1D41B MATHEMATICAL BOLD SMALL B
-1D41C MATHEMATICAL BOLD SMALL C
-1D41D MATHEMATICAL BOLD SMALL D
-1D41E MATHEMATICAL BOLD SMALL E
-1D41F MATHEMATICAL BOLD SMALL F
-1D420 MATHEMATICAL BOLD SMALL G
-1D421 MATHEMATICAL BOLD SMALL H
-1D422 MATHEMATICAL BOLD SMALL I
-1D423 MATHEMATICAL BOLD SMALL J
-1D424 MATHEMATICAL BOLD SMALL K
-1D425 MATHEMATICAL BOLD SMALL L
-1D426 MATHEMATICAL BOLD SMALL M
-1D427 MATHEMATICAL BOLD SMALL N
-1D428 MATHEMATICAL BOLD SMALL O
-1D429 MATHEMATICAL BOLD SMALL P
-1D42A MATHEMATICAL BOLD SMALL Q
-1D42B MATHEMATICAL BOLD SMALL R
-1D42C MATHEMATICAL BOLD SMALL S
-1D42D MATHEMATICAL BOLD SMALL T
-1D42E MATHEMATICAL BOLD SMALL U
-1D42F MATHEMATICAL BOLD SMALL V
-1D430 MATHEMATICAL BOLD SMALL W
-1D431 MATHEMATICAL BOLD SMALL X
-1D432 MATHEMATICAL BOLD SMALL Y
-1D433 MATHEMATICAL BOLD SMALL Z
-1D434 MATHEMATICAL ITALIC CAPITAL A
-1D435 MATHEMATICAL ITALIC CAPITAL B
-1D436 MATHEMATICAL ITALIC CAPITAL C
-1D437 MATHEMATICAL ITALIC CAPITAL D
-1D438 MATHEMATICAL ITALIC CAPITAL E
-1D439 MATHEMATICAL ITALIC CAPITAL F
-1D43A MATHEMATICAL ITALIC CAPITAL G
-1D43B MATHEMATICAL ITALIC CAPITAL H
-1D43C MATHEMATICAL ITALIC CAPITAL I
-1D43D MATHEMATICAL ITALIC CAPITAL J
-1D43E MATHEMATICAL ITALIC CAPITAL K
-1D43F MATHEMATICAL ITALIC CAPITAL L
-1D440 MATHEMATICAL ITALIC CAPITAL M
-1D441 MATHEMATICAL ITALIC CAPITAL N
-1D442 MATHEMATICAL ITALIC CAPITAL O
-1D443 MATHEMATICAL ITALIC CAPITAL P
-1D444 MATHEMATICAL ITALIC CAPITAL Q
-1D445 MATHEMATICAL ITALIC CAPITAL R
-1D446 MATHEMATICAL ITALIC CAPITAL S
-1D447 MATHEMATICAL ITALIC CAPITAL T
-1D448 MATHEMATICAL ITALIC CAPITAL U
-1D449 MATHEMATICAL ITALIC CAPITAL V
-1D44A MATHEMATICAL ITALIC CAPITAL W
-1D44B MATHEMATICAL ITALIC CAPITAL X
-1D44C MATHEMATICAL ITALIC CAPITAL Y
-1D44D MATHEMATICAL ITALIC CAPITAL Z
-1D44E MATHEMATICAL ITALIC SMALL A
-1D44F MATHEMATICAL ITALIC SMALL B
-1D450 MATHEMATICAL ITALIC SMALL C
-1D451 MATHEMATICAL ITALIC SMALL D
-1D452 MATHEMATICAL ITALIC SMALL E
-1D453 MATHEMATICAL ITALIC SMALL F
-1D454 MATHEMATICAL ITALIC SMALL G
-1D456 MATHEMATICAL ITALIC SMALL I
-1D457 MATHEMATICAL ITALIC SMALL J
-1D458 MATHEMATICAL ITALIC SMALL K
-1D459 MATHEMATICAL ITALIC SMALL L
-1D45A MATHEMATICAL ITALIC SMALL M
-1D45B MATHEMATICAL ITALIC SMALL N
-1D45C MATHEMATICAL ITALIC SMALL O
-1D45D MATHEMATICAL ITALIC SMALL P
-1D45E MATHEMATICAL ITALIC SMALL Q
-1D45F MATHEMATICAL ITALIC SMALL R
-1D460 MATHEMATICAL ITALIC SMALL S
-1D461 MATHEMATICAL ITALIC SMALL T
-1D462 MATHEMATICAL ITALIC SMALL U
-1D463 MATHEMATICAL ITALIC SMALL V
-1D464 MATHEMATICAL ITALIC SMALL W
-1D465 MATHEMATICAL ITALIC SMALL X
-1D466 MATHEMATICAL ITALIC SMALL Y
-1D467 MATHEMATICAL ITALIC SMALL Z
-1D468 MATHEMATICAL BOLD ITALIC CAPITAL A
-1D469 MATHEMATICAL BOLD ITALIC CAPITAL B
-1D46A MATHEMATICAL BOLD ITALIC CAPITAL C
-1D46B MATHEMATICAL BOLD ITALIC CAPITAL D
-1D46C MATHEMATICAL BOLD ITALIC CAPITAL E
-1D46D MATHEMATICAL BOLD ITALIC CAPITAL F
-1D46E MATHEMATICAL BOLD ITALIC CAPITAL G
-1D46F MATHEMATICAL BOLD ITALIC CAPITAL H
-1D470 MATHEMATICAL BOLD ITALIC CAPITAL I
-1D471 MATHEMATICAL BOLD ITALIC CAPITAL J
-1D472 MATHEMATICAL BOLD ITALIC CAPITAL K
-1D473 MATHEMATICAL BOLD ITALIC CAPITAL L
-1D474 MATHEMATICAL BOLD ITALIC CAPITAL M
-1D475 MATHEMATICAL BOLD ITALIC CAPITAL N
-1D476 MATHEMATICAL BOLD ITALIC CAPITAL O
-1D477 MATHEMATICAL BOLD ITALIC CAPITAL P
-1D478 MATHEMATICAL BOLD ITALIC CAPITAL Q
-1D479 MATHEMATICAL BOLD ITALIC CAPITAL R
-1D47A MATHEMATICAL BOLD ITALIC CAPITAL S
-1D47B MATHEMATICAL BOLD ITALIC CAPITAL T
-1D47C MATHEMATICAL BOLD ITALIC CAPITAL U
-1D47D MATHEMATICAL BOLD ITALIC CAPITAL V
-1D47E MATHEMATICAL BOLD ITALIC CAPITAL W
-1D47F MATHEMATICAL BOLD ITALIC CAPITAL X
-1D480 MATHEMATICAL BOLD ITALIC CAPITAL Y
-1D481 MATHEMATICAL BOLD ITALIC CAPITAL Z
-1D482 MATHEMATICAL BOLD ITALIC SMALL A
-1D483 MATHEMATICAL BOLD ITALIC SMALL B
-1D484 MATHEMATICAL BOLD ITALIC SMALL C
-1D485 MATHEMATICAL BOLD ITALIC SMALL D
-1D486 MATHEMATICAL BOLD ITALIC SMALL E
-1D487 MATHEMATICAL BOLD ITALIC SMALL F
-1D488 MATHEMATICAL BOLD ITALIC SMALL G
-1D489 MATHEMATICAL BOLD ITALIC SMALL H
-1D48A MATHEMATICAL BOLD ITALIC SMALL I
-1D48B MATHEMATICAL BOLD ITALIC SMALL J
-1D48C MATHEMATICAL BOLD ITALIC SMALL K
-1D48D MATHEMATICAL BOLD ITALIC SMALL L
-1D48E MATHEMATICAL BOLD ITALIC SMALL M
-1D48F MATHEMATICAL BOLD ITALIC SMALL N
-1D490 MATHEMATICAL BOLD ITALIC SMALL O
-1D491 MATHEMATICAL BOLD ITALIC SMALL P
-1D492 MATHEMATICAL BOLD ITALIC SMALL Q
-1D493 MATHEMATICAL BOLD ITALIC SMALL R
-1D494 MATHEMATICAL BOLD ITALIC SMALL S
-1D495 MATHEMATICAL BOLD ITALIC SMALL T
-1D496 MATHEMATICAL BOLD ITALIC SMALL U
-1D497 MATHEMATICAL BOLD ITALIC SMALL V
-1D498 MATHEMATICAL BOLD ITALIC SMALL W
-1D499 MATHEMATICAL BOLD ITALIC SMALL X
-1D49A MATHEMATICAL BOLD ITALIC SMALL Y
-1D49B MATHEMATICAL BOLD ITALIC SMALL Z
-1D49C MATHEMATICAL SCRIPT CAPITAL A
-1D49E MATHEMATICAL SCRIPT CAPITAL C
-1D49F MATHEMATICAL SCRIPT CAPITAL D
-1D4A2 MATHEMATICAL SCRIPT CAPITAL G
-1D4A5 MATHEMATICAL SCRIPT CAPITAL J
-1D4A6 MATHEMATICAL SCRIPT CAPITAL K
-1D4A9 MATHEMATICAL SCRIPT CAPITAL N
-1D4AA MATHEMATICAL SCRIPT CAPITAL O
-1D4AB MATHEMATICAL SCRIPT CAPITAL P
-1D4AC MATHEMATICAL SCRIPT CAPITAL Q
-1D4AE MATHEMATICAL SCRIPT CAPITAL S
-1D4AF MATHEMATICAL SCRIPT CAPITAL T
-1D4B0 MATHEMATICAL SCRIPT CAPITAL U
-1D4B1 MATHEMATICAL SCRIPT CAPITAL V
-1D4B2 MATHEMATICAL SCRIPT CAPITAL W
-1D4B3 MATHEMATICAL SCRIPT CAPITAL X
-1D4B4 MATHEMATICAL SCRIPT CAPITAL Y
-1D4B5 MATHEMATICAL SCRIPT CAPITAL Z
-1D4B6 MATHEMATICAL SCRIPT SMALL A
-1D4B7 MATHEMATICAL SCRIPT SMALL B
-1D4B8 MATHEMATICAL SCRIPT SMALL C
-1D4B9 MATHEMATICAL SCRIPT SMALL D
-1D4BB MATHEMATICAL SCRIPT SMALL F
-1D4BD MATHEMATICAL SCRIPT SMALL H
-1D4BE MATHEMATICAL SCRIPT SMALL I
-1D4BF MATHEMATICAL SCRIPT SMALL J
-1D4C0 MATHEMATICAL SCRIPT SMALL K
-1D4C1 MATHEMATICAL SCRIPT SMALL L
-1D4C2 MATHEMATICAL SCRIPT SMALL M
-1D4C3 MATHEMATICAL SCRIPT SMALL N
-1D4C5 MATHEMATICAL SCRIPT SMALL P
-1D4C6 MATHEMATICAL SCRIPT SMALL Q
-1D4C7 MATHEMATICAL SCRIPT SMALL R
-1D4C8 MATHEMATICAL SCRIPT SMALL S
-1D4C9 MATHEMATICAL SCRIPT SMALL T
-1D4CA MATHEMATICAL SCRIPT SMALL U
-1D4CB MATHEMATICAL SCRIPT SMALL V
-1D4CC MATHEMATICAL SCRIPT SMALL W
-1D4CD MATHEMATICAL SCRIPT SMALL X
-1D4CE MATHEMATICAL SCRIPT SMALL Y
-1D4CF MATHEMATICAL SCRIPT SMALL Z
-1D4D0 MATHEMATICAL BOLD SCRIPT CAPITAL A
-1D4D1 MATHEMATICAL BOLD SCRIPT CAPITAL B
-1D4D2 MATHEMATICAL BOLD SCRIPT CAPITAL C
-1D4D3 MATHEMATICAL BOLD SCRIPT CAPITAL D
-1D4D4 MATHEMATICAL BOLD SCRIPT CAPITAL E
-1D4D5 MATHEMATICAL BOLD SCRIPT CAPITAL F
-1D4D6 MATHEMATICAL BOLD SCRIPT CAPITAL G
-1D4D7 MATHEMATICAL BOLD SCRIPT CAPITAL H
-1D4D8 MATHEMATICAL BOLD SCRIPT CAPITAL I
-1D4D9 MATHEMATICAL BOLD SCRIPT CAPITAL J
-1D4DA MATHEMATICAL BOLD SCRIPT CAPITAL K
-1D4DB MATHEMATICAL BOLD SCRIPT CAPITAL L
-1D4DC MATHEMATICAL BOLD SCRIPT CAPITAL M
-1D4DD MATHEMATICAL BOLD SCRIPT CAPITAL N
-1D4DE MATHEMATICAL BOLD SCRIPT CAPITAL O
-1D4DF MATHEMATICAL BOLD SCRIPT CAPITAL P
-1D4E0 MATHEMATICAL BOLD SCRIPT CAPITAL Q
-1D4E1 MATHEMATICAL BOLD SCRIPT CAPITAL R
-1D4E2 MATHEMATICAL BOLD SCRIPT CAPITAL S
-1D4E3 MATHEMATICAL BOLD SCRIPT CAPITAL T
-1D4E4 MATHEMATICAL BOLD SCRIPT CAPITAL U
-1D4E5 MATHEMATICAL BOLD SCRIPT CAPITAL V
-1D4E6 MATHEMATICAL BOLD SCRIPT CAPITAL W
-1D4E7 MATHEMATICAL BOLD SCRIPT CAPITAL X
-1D4E8 MATHEMATICAL BOLD SCRIPT CAPITAL Y
-1D4E9 MATHEMATICAL BOLD SCRIPT CAPITAL Z
-1D4EA MATHEMATICAL BOLD SCRIPT SMALL A
-1D4EB MATHEMATICAL BOLD SCRIPT SMALL B
-1D4EC MATHEMATICAL BOLD SCRIPT SMALL C
-1D4ED MATHEMATICAL BOLD SCRIPT SMALL D
-1D4EE MATHEMATICAL BOLD SCRIPT SMALL E
-1D4EF MATHEMATICAL BOLD SCRIPT SMALL F
-1D4F0 MATHEMATICAL BOLD SCRIPT SMALL G
-1D4F1 MATHEMATICAL BOLD SCRIPT SMALL H
-1D4F2 MATHEMATICAL BOLD SCRIPT SMALL I
-1D4F3 MATHEMATICAL BOLD SCRIPT SMALL J
-1D4F4 MATHEMATICAL BOLD SCRIPT SMALL K
-1D4F5 MATHEMATICAL BOLD SCRIPT SMALL L
-1D4F6 MATHEMATICAL BOLD SCRIPT SMALL M
-1D4F7 MATHEMATICAL BOLD SCRIPT SMALL N
-1D4F8 MATHEMATICAL BOLD SCRIPT SMALL O
-1D4F9 MATHEMATICAL BOLD SCRIPT SMALL P
-1D4FA MATHEMATICAL BOLD SCRIPT SMALL Q
-1D4FB MATHEMATICAL BOLD SCRIPT SMALL R
-1D4FC MATHEMATICAL BOLD SCRIPT SMALL S
-1D4FD MATHEMATICAL BOLD SCRIPT SMALL T
-1D4FE MATHEMATICAL BOLD SCRIPT SMALL U
-1D4FF MATHEMATICAL BOLD SCRIPT SMALL V
-1D500 MATHEMATICAL BOLD SCRIPT SMALL W
-1D501 MATHEMATICAL BOLD SCRIPT SMALL X
-1D502 MATHEMATICAL BOLD SCRIPT SMALL Y
-1D503 MATHEMATICAL BOLD SCRIPT SMALL Z
-1D504 MATHEMATICAL FRAKTUR CAPITAL A
-1D505 MATHEMATICAL FRAKTUR CAPITAL B
-1D507 MATHEMATICAL FRAKTUR CAPITAL D
-1D508 MATHEMATICAL FRAKTUR CAPITAL E
-1D509 MATHEMATICAL FRAKTUR CAPITAL F
-1D50A MATHEMATICAL FRAKTUR CAPITAL G
-1D50D MATHEMATICAL FRAKTUR CAPITAL J
-1D50E MATHEMATICAL FRAKTUR CAPITAL K
-1D50F MATHEMATICAL FRAKTUR CAPITAL L
-1D510 MATHEMATICAL FRAKTUR CAPITAL M
-1D511 MATHEMATICAL FRAKTUR CAPITAL N
-1D512 MATHEMATICAL FRAKTUR CAPITAL O
-1D513 MATHEMATICAL FRAKTUR CAPITAL P
-1D514 MATHEMATICAL FRAKTUR CAPITAL Q
-1D516 MATHEMATICAL FRAKTUR CAPITAL S
-1D517 MATHEMATICAL FRAKTUR CAPITAL T
-1D518 MATHEMATICAL FRAKTUR CAPITAL U
-1D519 MATHEMATICAL FRAKTUR CAPITAL V
-1D51A MATHEMATICAL FRAKTUR CAPITAL W
-1D51B MATHEMATICAL FRAKTUR CAPITAL X
-1D51C MATHEMATICAL FRAKTUR CAPITAL Y
-1D51E MATHEMATICAL FRAKTUR SMALL A
-1D51F MATHEMATICAL FRAKTUR SMALL B
-1D520 MATHEMATICAL FRAKTUR SMALL C
-1D521 MATHEMATICAL FRAKTUR SMALL D
-1D522 MATHEMATICAL FRAKTUR SMALL E
-1D523 MATHEMATICAL FRAKTUR SMALL F
-1D524 MATHEMATICAL FRAKTUR SMALL G
-1D525 MATHEMATICAL FRAKTUR SMALL H
-1D526 MATHEMATICAL FRAKTUR SMALL I
-1D527 MATHEMATICAL FRAKTUR SMALL J
-1D528 MATHEMATICAL FRAKTUR SMALL K
-1D529 MATHEMATICAL FRAKTUR SMALL L
-1D52A MATHEMATICAL FRAKTUR SMALL M
-1D52B MATHEMATICAL FRAKTUR SMALL N
-1D52C MATHEMATICAL FRAKTUR SMALL O
-1D52D MATHEMATICAL FRAKTUR SMALL P
-1D52E MATHEMATICAL FRAKTUR SMALL Q
-1D52F MATHEMATICAL FRAKTUR SMALL R
-1D530 MATHEMATICAL FRAKTUR SMALL S
-1D531 MATHEMATICAL FRAKTUR SMALL T
-1D532 MATHEMATICAL FRAKTUR SMALL U
-1D533 MATHEMATICAL FRAKTUR SMALL V
-1D534 MATHEMATICAL FRAKTUR SMALL W
-1D535 MATHEMATICAL FRAKTUR SMALL X
-1D536 MATHEMATICAL FRAKTUR SMALL Y
-1D537 MATHEMATICAL FRAKTUR SMALL Z
-1D538 MATHEMATICAL DOUBLE-STRUCK CAPITAL A
-1D539 MATHEMATICAL DOUBLE-STRUCK CAPITAL B
-1D53B MATHEMATICAL DOUBLE-STRUCK CAPITAL D
-1D53C MATHEMATICAL DOUBLE-STRUCK CAPITAL E
-1D53D MATHEMATICAL DOUBLE-STRUCK CAPITAL F
-1D53E MATHEMATICAL DOUBLE-STRUCK CAPITAL G
-1D540 MATHEMATICAL DOUBLE-STRUCK CAPITAL I
-1D541 MATHEMATICAL DOUBLE-STRUCK CAPITAL J
-1D542 MATHEMATICAL DOUBLE-STRUCK CAPITAL K
-1D543 MATHEMATICAL DOUBLE-STRUCK CAPITAL L
-1D544 MATHEMATICAL DOUBLE-STRUCK CAPITAL M
-1D546 MATHEMATICAL DOUBLE-STRUCK CAPITAL O
-1D54A MATHEMATICAL DOUBLE-STRUCK CAPITAL S
-1D54B MATHEMATICAL DOUBLE-STRUCK CAPITAL T
-1D54C MATHEMATICAL DOUBLE-STRUCK CAPITAL U
-1D54D MATHEMATICAL DOUBLE-STRUCK CAPITAL V
-1D54E MATHEMATICAL DOUBLE-STRUCK CAPITAL W
-1D54F MATHEMATICAL DOUBLE-STRUCK CAPITAL X
-1D550 MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
-1D552 MATHEMATICAL DOUBLE-STRUCK SMALL A
-1D553 MATHEMATICAL DOUBLE-STRUCK SMALL B
-1D554 MATHEMATICAL DOUBLE-STRUCK SMALL C
-1D555 MATHEMATICAL DOUBLE-STRUCK SMALL D
-1D556 MATHEMATICAL DOUBLE-STRUCK SMALL E
-1D557 MATHEMATICAL DOUBLE-STRUCK SMALL F
-1D558 MATHEMATICAL DOUBLE-STRUCK SMALL G
-1D559 MATHEMATICAL DOUBLE-STRUCK SMALL H
-1D55A MATHEMATICAL DOUBLE-STRUCK SMALL I
-1D55B MATHEMATICAL DOUBLE-STRUCK SMALL J
-1D55C MATHEMATICAL DOUBLE-STRUCK SMALL K
-1D55D MATHEMATICAL DOUBLE-STRUCK SMALL L
-1D55E MATHEMATICAL DOUBLE-STRUCK SMALL M
-1D55F MATHEMATICAL DOUBLE-STRUCK SMALL N
-1D560 MATHEMATICAL DOUBLE-STRUCK SMALL O
-1D561 MATHEMATICAL DOUBLE-STRUCK SMALL P
-1D562 MATHEMATICAL DOUBLE-STRUCK SMALL Q
-1D563 MATHEMATICAL DOUBLE-STRUCK SMALL R
-1D564 MATHEMATICAL DOUBLE-STRUCK SMALL S
-1D565 MATHEMATICAL DOUBLE-STRUCK SMALL T
-1D566 MATHEMATICAL DOUBLE-STRUCK SMALL U
-1D567 MATHEMATICAL DOUBLE-STRUCK SMALL V
-1D568 MATHEMATICAL DOUBLE-STRUCK SMALL W
-1D569 MATHEMATICAL DOUBLE-STRUCK SMALL X
-1D56A MATHEMATICAL DOUBLE-STRUCK SMALL Y
-1D56B MATHEMATICAL DOUBLE-STRUCK SMALL Z
-1D56C MATHEMATICAL BOLD FRAKTUR CAPITAL A
-1D56D MATHEMATICAL BOLD FRAKTUR CAPITAL B
-1D56E MATHEMATICAL BOLD FRAKTUR CAPITAL C
-1D56F MATHEMATICAL BOLD FRAKTUR CAPITAL D
-1D570 MATHEMATICAL BOLD FRAKTUR CAPITAL E
-1D571 MATHEMATICAL BOLD FRAKTUR CAPITAL F
-1D572 MATHEMATICAL BOLD FRAKTUR CAPITAL G
-1D573 MATHEMATICAL BOLD FRAKTUR CAPITAL H
-1D574 MATHEMATICAL BOLD FRAKTUR CAPITAL I
-1D575 MATHEMATICAL BOLD FRAKTUR CAPITAL J
-1D576 MATHEMATICAL BOLD FRAKTUR CAPITAL K
-1D577 MATHEMATICAL BOLD FRAKTUR CAPITAL L
-1D578 MATHEMATICAL BOLD FRAKTUR CAPITAL M
-1D579 MATHEMATICAL BOLD FRAKTUR CAPITAL N
-1D57A MATHEMATICAL BOLD FRAKTUR CAPITAL O
-1D57B MATHEMATICAL BOLD FRAKTUR CAPITAL P
-1D57C MATHEMATICAL BOLD FRAKTUR CAPITAL Q
-1D57D MATHEMATICAL BOLD FRAKTUR CAPITAL R
-1D57E MATHEMATICAL BOLD FRAKTUR CAPITAL S
-1D57F MATHEMATICAL BOLD FRAKTUR CAPITAL T
-1D580 MATHEMATICAL BOLD FRAKTUR CAPITAL U
-1D581 MATHEMATICAL BOLD FRAKTUR CAPITAL V
-1D582 MATHEMATICAL BOLD FRAKTUR CAPITAL W
-1D583 MATHEMATICAL BOLD FRAKTUR CAPITAL X
-1D584 MATHEMATICAL BOLD FRAKTUR CAPITAL Y
-1D585 MATHEMATICAL BOLD FRAKTUR CAPITAL Z
-1D586 MATHEMATICAL BOLD FRAKTUR SMALL A
-1D587 MATHEMATICAL BOLD FRAKTUR SMALL B
-1D588 MATHEMATICAL BOLD FRAKTUR SMALL C
-1D589 MATHEMATICAL BOLD FRAKTUR SMALL D
-1D58A MATHEMATICAL BOLD FRAKTUR SMALL E
-1D58B MATHEMATICAL BOLD FRAKTUR SMALL F
-1D58C MATHEMATICAL BOLD FRAKTUR SMALL G
-1D58D MATHEMATICAL BOLD FRAKTUR SMALL H
-1D58E MATHEMATICAL BOLD FRAKTUR SMALL I
-1D58F MATHEMATICAL BOLD FRAKTUR SMALL J
-1D590 MATHEMATICAL BOLD FRAKTUR SMALL K
-1D591 MATHEMATICAL BOLD FRAKTUR SMALL L
-1D592 MATHEMATICAL BOLD FRAKTUR SMALL M
-1D593 MATHEMATICAL BOLD FRAKTUR SMALL N
-1D594 MATHEMATICAL BOLD FRAKTUR SMALL O
-1D595 MATHEMATICAL BOLD FRAKTUR SMALL P
-1D596 MATHEMATICAL BOLD FRAKTUR SMALL Q
-1D597 MATHEMATICAL BOLD FRAKTUR SMALL R
-1D598 MATHEMATICAL BOLD FRAKTUR SMALL S
-1D599 MATHEMATICAL BOLD FRAKTUR SMALL T
-1D59A MATHEMATICAL BOLD FRAKTUR SMALL U
-1D59B MATHEMATICAL BOLD FRAKTUR SMALL V
-1D59C MATHEMATICAL BOLD FRAKTUR SMALL W
-1D59D MATHEMATICAL BOLD FRAKTUR SMALL X
-1D59E MATHEMATICAL BOLD FRAKTUR SMALL Y
-1D59F MATHEMATICAL BOLD FRAKTUR SMALL Z
-1D5A0 MATHEMATICAL SANS-SERIF CAPITAL A
-1D5A1 MATHEMATICAL SANS-SERIF CAPITAL B
-1D5A2 MATHEMATICAL SANS-SERIF CAPITAL C
-1D5A3 MATHEMATICAL SANS-SERIF CAPITAL D
-1D5A4 MATHEMATICAL SANS-SERIF CAPITAL E
-1D5A5 MATHEMATICAL SANS-SERIF CAPITAL F
-1D5A6 MATHEMATICAL SANS-SERIF CAPITAL G
-1D5A7 MATHEMATICAL SANS-SERIF CAPITAL H
-1D5A8 MATHEMATICAL SANS-SERIF CAPITAL I
-1D5A9 MATHEMATICAL SANS-SERIF CAPITAL J
-1D5AA MATHEMATICAL SANS-SERIF CAPITAL K
-1D5AB MATHEMATICAL SANS-SERIF CAPITAL L
-1D5AC MATHEMATICAL SANS-SERIF CAPITAL M
-1D5AD MATHEMATICAL SANS-SERIF CAPITAL N
-1D5AE MATHEMATICAL SANS-SERIF CAPITAL O
-1D5AF MATHEMATICAL SANS-SERIF CAPITAL P
-1D5B0 MATHEMATICAL SANS-SERIF CAPITAL Q
-1D5B1 MATHEMATICAL SANS-SERIF CAPITAL R
-1D5B2 MATHEMATICAL SANS-SERIF CAPITAL S
-1D5B3 MATHEMATICAL SANS-SERIF CAPITAL T
-1D5B4 MATHEMATICAL SANS-SERIF CAPITAL U
-1D5B5 MATHEMATICAL SANS-SERIF CAPITAL V
-1D5B6 MATHEMATICAL SANS-SERIF CAPITAL W
-1D5B7 MATHEMATICAL SANS-SERIF CAPITAL X
-1D5B8 MATHEMATICAL SANS-SERIF CAPITAL Y
-1D5B9 MATHEMATICAL SANS-SERIF CAPITAL Z
-1D5BA MATHEMATICAL SANS-SERIF SMALL A
-1D5BB MATHEMATICAL SANS-SERIF SMALL B
-1D5BC MATHEMATICAL SANS-SERIF SMALL C
-1D5BD MATHEMATICAL SANS-SERIF SMALL D
-1D5BE MATHEMATICAL SANS-SERIF SMALL E
-1D5BF MATHEMATICAL SANS-SERIF SMALL F
-1D5C0 MATHEMATICAL SANS-SERIF SMALL G
-1D5C1 MATHEMATICAL SANS-SERIF SMALL H
-1D5C2 MATHEMATICAL SANS-SERIF SMALL I
-1D5C3 MATHEMATICAL SANS-SERIF SMALL J
-1D5C4 MATHEMATICAL SANS-SERIF SMALL K
-1D5C5 MATHEMATICAL SANS-SERIF SMALL L
-1D5C6 MATHEMATICAL SANS-SERIF SMALL M
-1D5C7 MATHEMATICAL SANS-SERIF SMALL N
-1D5C8 MATHEMATICAL SANS-SERIF SMALL O
-1D5C9 MATHEMATICAL SANS-SERIF SMALL P
-1D5CA MATHEMATICAL SANS-SERIF SMALL Q
-1D5CB MATHEMATICAL SANS-SERIF SMALL R
-1D5CC MATHEMATICAL SANS-SERIF SMALL S
-1D5CD MATHEMATICAL SANS-SERIF SMALL T
-1D5CE MATHEMATICAL SANS-SERIF SMALL U
-1D5CF MATHEMATICAL SANS-SERIF SMALL V
-1D5D0 MATHEMATICAL SANS-SERIF SMALL W
-1D5D1 MATHEMATICAL SANS-SERIF SMALL X
-1D5D2 MATHEMATICAL SANS-SERIF SMALL Y
-1D5D3 MATHEMATICAL SANS-SERIF SMALL Z
-1D5D4 MATHEMATICAL SANS-SERIF BOLD CAPITAL A
-1D5D5 MATHEMATICAL SANS-SERIF BOLD CAPITAL B
-1D5D6 MATHEMATICAL SANS-SERIF BOLD CAPITAL C
-1D5D7 MATHEMATICAL SANS-SERIF BOLD CAPITAL D
-1D5D8 MATHEMATICAL SANS-SERIF BOLD CAPITAL E
-1D5D9 MATHEMATICAL SANS-SERIF BOLD CAPITAL F
-1D5DA MATHEMATICAL SANS-SERIF BOLD CAPITAL G
-1D5DB MATHEMATICAL SANS-SERIF BOLD CAPITAL H
-1D5DC MATHEMATICAL SANS-SERIF BOLD CAPITAL I
-1D5DD MATHEMATICAL SANS-SERIF BOLD CAPITAL J
-1D5DE MATHEMATICAL SANS-SERIF BOLD CAPITAL K
-1D5DF MATHEMATICAL SANS-SERIF BOLD CAPITAL L
-1D5E0 MATHEMATICAL SANS-SERIF BOLD CAPITAL M
-1D5E1 MATHEMATICAL SANS-SERIF BOLD CAPITAL N
-1D5E2 MATHEMATICAL SANS-SERIF BOLD CAPITAL O
-1D5E3 MATHEMATICAL SANS-SERIF BOLD CAPITAL P
-1D5E4 MATHEMATICAL SANS-SERIF BOLD CAPITAL Q
-1D5E5 MATHEMATICAL SANS-SERIF BOLD CAPITAL R
-1D5E6 MATHEMATICAL SANS-SERIF BOLD CAPITAL S
-1D5E7 MATHEMATICAL SANS-SERIF BOLD CAPITAL T
-1D5E8 MATHEMATICAL SANS-SERIF BOLD CAPITAL U
-1D5E9 MATHEMATICAL SANS-SERIF BOLD CAPITAL V
-1D5EA MATHEMATICAL SANS-SERIF BOLD CAPITAL W
-1D5EB MATHEMATICAL SANS-SERIF BOLD CAPITAL X
-1D5EC MATHEMATICAL SANS-SERIF BOLD CAPITAL Y
-1D5ED MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
-1D5EE MATHEMATICAL SANS-SERIF BOLD SMALL A
-1D5EF MATHEMATICAL SANS-SERIF BOLD SMALL B
-1D5F0 MATHEMATICAL SANS-SERIF BOLD SMALL C
-1D5F1 MATHEMATICAL SANS-SERIF BOLD SMALL D
-1D5F2 MATHEMATICAL SANS-SERIF BOLD SMALL E
-1D5F3 MATHEMATICAL SANS-SERIF BOLD SMALL F
-1D5F4 MATHEMATICAL SANS-SERIF BOLD SMALL G
-1D5F5 MATHEMATICAL SANS-SERIF BOLD SMALL H
-1D5F6 MATHEMATICAL SANS-SERIF BOLD SMALL I
-1D5F7 MATHEMATICAL SANS-SERIF BOLD SMALL J
-1D5F8 MATHEMATICAL SANS-SERIF BOLD SMALL K
-1D5F9 MATHEMATICAL SANS-SERIF BOLD SMALL L
-1D5FA MATHEMATICAL SANS-SERIF BOLD SMALL M
-1D5FB MATHEMATICAL SANS-SERIF BOLD SMALL N
-1D5FC MATHEMATICAL SANS-SERIF BOLD SMALL O
-1D5FD MATHEMATICAL SANS-SERIF BOLD SMALL P
-1D5FE MATHEMATICAL SANS-SERIF BOLD SMALL Q
-1D5FF MATHEMATICAL SANS-SERIF BOLD SMALL R
-1D600 MATHEMATICAL SANS-SERIF BOLD SMALL S
-1D601 MATHEMATICAL SANS-SERIF BOLD SMALL T
-1D602 MATHEMATICAL SANS-SERIF BOLD SMALL U
-1D603 MATHEMATICAL SANS-SERIF BOLD SMALL V
-1D604 MATHEMATICAL SANS-SERIF BOLD SMALL W
-1D605 MATHEMATICAL SANS-SERIF BOLD SMALL X
-1D606 MATHEMATICAL SANS-SERIF BOLD SMALL Y
-1D607 MATHEMATICAL SANS-SERIF BOLD SMALL Z
-1D608 MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
-1D609 MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
-1D60A MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
-1D60B MATHEMATICAL SANS-SERIF ITALIC CAPITAL D
-1D60C MATHEMATICAL SANS-SERIF ITALIC CAPITAL E
-1D60D MATHEMATICAL SANS-SERIF ITALIC CAPITAL F
-1D60E MATHEMATICAL SANS-SERIF ITALIC CAPITAL G
-1D60F MATHEMATICAL SANS-SERIF ITALIC CAPITAL H
-1D610 MATHEMATICAL SANS-SERIF ITALIC CAPITAL I
-1D611 MATHEMATICAL SANS-SERIF ITALIC CAPITAL J
-1D612 MATHEMATICAL SANS-SERIF ITALIC CAPITAL K
-1D613 MATHEMATICAL SANS-SERIF ITALIC CAPITAL L
-1D614 MATHEMATICAL SANS-SERIF ITALIC CAPITAL M
-1D615 MATHEMATICAL SANS-SERIF ITALIC CAPITAL N
-1D616 MATHEMATICAL SANS-SERIF ITALIC CAPITAL O
-1D617 MATHEMATICAL SANS-SERIF ITALIC CAPITAL P
-1D618 MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q
-1D619 MATHEMATICAL SANS-SERIF ITALIC CAPITAL R
-1D61A MATHEMATICAL SANS-SERIF ITALIC CAPITAL S
-1D61B MATHEMATICAL SANS-SERIF ITALIC CAPITAL T
-1D61C MATHEMATICAL SANS-SERIF ITALIC CAPITAL U
-1D61D MATHEMATICAL SANS-SERIF ITALIC CAPITAL V
-1D61E MATHEMATICAL SANS-SERIF ITALIC CAPITAL W
-1D61F MATHEMATICAL SANS-SERIF ITALIC CAPITAL X
-1D620 MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y
-1D621 MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
-1D622 MATHEMATICAL SANS-SERIF ITALIC SMALL A
-1D623 MATHEMATICAL SANS-SERIF ITALIC SMALL B
-1D624 MATHEMATICAL SANS-SERIF ITALIC SMALL C
-1D625 MATHEMATICAL SANS-SERIF ITALIC SMALL D
-1D626 MATHEMATICAL SANS-SERIF ITALIC SMALL E
-1D627 MATHEMATICAL SANS-SERIF ITALIC SMALL F
-1D628 MATHEMATICAL SANS-SERIF ITALIC SMALL G
-1D629 MATHEMATICAL SANS-SERIF ITALIC SMALL H
-1D62A MATHEMATICAL SANS-SERIF ITALIC SMALL I
-1D62B MATHEMATICAL SANS-SERIF ITALIC SMALL J
-1D62C MATHEMATICAL SANS-SERIF ITALIC SMALL K
-1D62D MATHEMATICAL SANS-SERIF ITALIC SMALL L
-1D62E MATHEMATICAL SANS-SERIF ITALIC SMALL M
-1D62F MATHEMATICAL SANS-SERIF ITALIC SMALL N
-1D630 MATHEMATICAL SANS-SERIF ITALIC SMALL O
-1D631 MATHEMATICAL SANS-SERIF ITALIC SMALL P
-1D632 MATHEMATICAL SANS-SERIF ITALIC SMALL Q
-1D633 MATHEMATICAL SANS-SERIF ITALIC SMALL R
-1D634 MATHEMATICAL SANS-SERIF ITALIC SMALL S
-1D635 MATHEMATICAL SANS-SERIF ITALIC SMALL T
-1D636 MATHEMATICAL SANS-SERIF ITALIC SMALL U
-1D637 MATHEMATICAL SANS-SERIF ITALIC SMALL V
-1D638 MATHEMATICAL SANS-SERIF ITALIC SMALL W
-1D639 MATHEMATICAL SANS-SERIF ITALIC SMALL X
-1D63A MATHEMATICAL SANS-SERIF ITALIC SMALL Y
-1D63B MATHEMATICAL SANS-SERIF ITALIC SMALL Z
-1D63C MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
-1D63D MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
-1D63E MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
-1D63F MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
-1D640 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
-1D641 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F
-1D642 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
-1D643 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H
-1D644 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
-1D645 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J
-1D646 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
-1D647 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
-1D648 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
-1D649 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
-1D64A MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
-1D64B MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
-1D64C MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q
-1D64D MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
-1D64E MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
-1D64F MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
-1D650 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
-1D651 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V
-1D652 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W
-1D653 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
-1D654 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y
-1D655 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
-1D656 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A
-1D657 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B
-1D658 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C
-1D659 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D
-1D65A MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E
-1D65B MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F
-1D65C MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G
-1D65D MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H
-1D65E MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I
-1D65F MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
-1D660 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K
-1D661 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L
-1D662 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M
-1D663 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N
-1D664 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O
-1D665 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P
-1D666 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q
-1D667 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R
-1D668 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S
-1D669 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T
-1D66A MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U
-1D66B MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V
-1D66C MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W
-1D66D MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X
-1D66E MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y
-1D66F MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
-1D670 MATHEMATICAL MONOSPACE CAPITAL A
-1D671 MATHEMATICAL MONOSPACE CAPITAL B
-1D672 MATHEMATICAL MONOSPACE CAPITAL C
-1D673 MATHEMATICAL MONOSPACE CAPITAL D
-1D674 MATHEMATICAL MONOSPACE CAPITAL E
-1D675 MATHEMATICAL MONOSPACE CAPITAL F
-1D676 MATHEMATICAL MONOSPACE CAPITAL G
-1D677 MATHEMATICAL MONOSPACE CAPITAL H
-1D678 MATHEMATICAL MONOSPACE CAPITAL I
-1D679 MATHEMATICAL MONOSPACE CAPITAL J
-1D67A MATHEMATICAL MONOSPACE CAPITAL K
-1D67B MATHEMATICAL MONOSPACE CAPITAL L
-1D67C MATHEMATICAL MONOSPACE CAPITAL M
-1D67D MATHEMATICAL MONOSPACE CAPITAL N
-1D67E MATHEMATICAL MONOSPACE CAPITAL O
-1D67F MATHEMATICAL MONOSPACE CAPITAL P
-1D680 MATHEMATICAL MONOSPACE CAPITAL Q
-1D681 MATHEMATICAL MONOSPACE CAPITAL R
-1D682 MATHEMATICAL MONOSPACE CAPITAL S
-1D683 MATHEMATICAL MONOSPACE CAPITAL T
-1D684 MATHEMATICAL MONOSPACE CAPITAL U
-1D685 MATHEMATICAL MONOSPACE CAPITAL V
-1D686 MATHEMATICAL MONOSPACE CAPITAL W
-1D687 MATHEMATICAL MONOSPACE CAPITAL X
-1D688 MATHEMATICAL MONOSPACE CAPITAL Y
-1D689 MATHEMATICAL MONOSPACE CAPITAL Z
-1D68A MATHEMATICAL MONOSPACE SMALL A
-1D68B MATHEMATICAL MONOSPACE SMALL B
-1D68C MATHEMATICAL MONOSPACE SMALL C
-1D68D MATHEMATICAL MONOSPACE SMALL D
-1D68E MATHEMATICAL MONOSPACE SMALL E
-1D68F MATHEMATICAL MONOSPACE SMALL F
-1D690 MATHEMATICAL MONOSPACE SMALL G
-1D691 MATHEMATICAL MONOSPACE SMALL H
-1D692 MATHEMATICAL MONOSPACE SMALL I
-1D693 MATHEMATICAL MONOSPACE SMALL J
-1D694 MATHEMATICAL MONOSPACE SMALL K
-1D695 MATHEMATICAL MONOSPACE SMALL L
-1D696 MATHEMATICAL MONOSPACE SMALL M
-1D697 MATHEMATICAL MONOSPACE SMALL N
-1D698 MATHEMATICAL MONOSPACE SMALL O
-1D699 MATHEMATICAL MONOSPACE SMALL P
-1D69A MATHEMATICAL MONOSPACE SMALL Q
-1D69B MATHEMATICAL MONOSPACE SMALL R
-1D69C MATHEMATICAL MONOSPACE SMALL S
-1D69D MATHEMATICAL MONOSPACE SMALL T
-1D69E MATHEMATICAL MONOSPACE SMALL U
-1D69F MATHEMATICAL MONOSPACE SMALL V
-1D6A0 MATHEMATICAL MONOSPACE SMALL W
-1D6A1 MATHEMATICAL MONOSPACE SMALL X
-1D6A2 MATHEMATICAL MONOSPACE SMALL Y
-1D6A3 MATHEMATICAL MONOSPACE SMALL Z
-1D6A4 MATHEMATICAL ITALIC SMALL DOTLESS I
-1D6A5 MATHEMATICAL ITALIC SMALL DOTLESS J
-1D6A8 MATHEMATICAL BOLD CAPITAL ALPHA
-1D6A9 MATHEMATICAL BOLD CAPITAL BETA
-1D6AA MATHEMATICAL BOLD CAPITAL GAMMA
-1D6AB MATHEMATICAL BOLD CAPITAL DELTA
-1D6AC MATHEMATICAL BOLD CAPITAL EPSILON
-1D6AD MATHEMATICAL BOLD CAPITAL ZETA
-1D6AE MATHEMATICAL BOLD CAPITAL ETA
-1D6AF MATHEMATICAL BOLD CAPITAL THETA
-1D6B0 MATHEMATICAL BOLD CAPITAL IOTA
-1D6B1 MATHEMATICAL BOLD CAPITAL KAPPA
-1D6B2 MATHEMATICAL BOLD CAPITAL LAMDA
-1D6B3 MATHEMATICAL BOLD CAPITAL MU
-1D6B4 MATHEMATICAL BOLD CAPITAL NU
-1D6B5 MATHEMATICAL BOLD CAPITAL XI
-1D6B6 MATHEMATICAL BOLD CAPITAL OMICRON
-1D6B7 MATHEMATICAL BOLD CAPITAL PI
-1D6B8 MATHEMATICAL BOLD CAPITAL RHO
-1D6B9 MATHEMATICAL BOLD CAPITAL THETA SYMBOL
-1D6BA MATHEMATICAL BOLD CAPITAL SIGMA
-1D6BB MATHEMATICAL BOLD CAPITAL TAU
-1D6BC MATHEMATICAL BOLD CAPITAL UPSILON
-1D6BD MATHEMATICAL BOLD CAPITAL PHI
-1D6BE MATHEMATICAL BOLD CAPITAL CHI
-1D6BF MATHEMATICAL BOLD CAPITAL PSI
-1D6C0 MATHEMATICAL BOLD CAPITAL OMEGA
-1D6C1 MATHEMATICAL BOLD NABLA
-1D6C2 MATHEMATICAL BOLD SMALL ALPHA
-1D6C3 MATHEMATICAL BOLD SMALL BETA
-1D6C4 MATHEMATICAL BOLD SMALL GAMMA
-1D6C5 MATHEMATICAL BOLD SMALL DELTA
-1D6C6 MATHEMATICAL BOLD SMALL EPSILON
-1D6C7 MATHEMATICAL BOLD SMALL ZETA
-1D6C8 MATHEMATICAL BOLD SMALL ETA
-1D6C9 MATHEMATICAL BOLD SMALL THETA
-1D6CA MATHEMATICAL BOLD SMALL IOTA
-1D6CB MATHEMATICAL BOLD SMALL KAPPA
-1D6CC MATHEMATICAL BOLD SMALL LAMDA
-1D6CD MATHEMATICAL BOLD SMALL MU
-1D6CE MATHEMATICAL BOLD SMALL NU
-1D6CF MATHEMATICAL BOLD SMALL XI
-1D6D0 MATHEMATICAL BOLD SMALL OMICRON
-1D6D1 MATHEMATICAL BOLD SMALL PI
-1D6D2 MATHEMATICAL BOLD SMALL RHO
-1D6D3 MATHEMATICAL BOLD SMALL FINAL SIGMA
-1D6D4 MATHEMATICAL BOLD SMALL SIGMA
-1D6D5 MATHEMATICAL BOLD SMALL TAU
-1D6D6 MATHEMATICAL BOLD SMALL UPSILON
-1D6D7 MATHEMATICAL BOLD SMALL PHI
-1D6D8 MATHEMATICAL BOLD SMALL CHI
-1D6D9 MATHEMATICAL BOLD SMALL PSI
-1D6DA MATHEMATICAL BOLD SMALL OMEGA
-1D6DB MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
-1D6DC MATHEMATICAL BOLD EPSILON SYMBOL
-1D6DD MATHEMATICAL BOLD THETA SYMBOL
-1D6DE MATHEMATICAL BOLD KAPPA SYMBOL
-1D6DF MATHEMATICAL BOLD PHI SYMBOL
-1D6E0 MATHEMATICAL BOLD RHO SYMBOL
-1D6E1 MATHEMATICAL BOLD PI SYMBOL
-1D6E2 MATHEMATICAL ITALIC CAPITAL ALPHA
-1D6E3 MATHEMATICAL ITALIC CAPITAL BETA
-1D6E4 MATHEMATICAL ITALIC CAPITAL GAMMA
-1D6E5 MATHEMATICAL ITALIC CAPITAL DELTA
-1D6E6 MATHEMATICAL ITALIC CAPITAL EPSILON
-1D6E7 MATHEMATICAL ITALIC CAPITAL ZETA
-1D6E8 MATHEMATICAL ITALIC CAPITAL ETA
-1D6E9 MATHEMATICAL ITALIC CAPITAL THETA
-1D6EA MATHEMATICAL ITALIC CAPITAL IOTA
-1D6EB MATHEMATICAL ITALIC CAPITAL KAPPA
-1D6EC MATHEMATICAL ITALIC CAPITAL LAMDA
-1D6ED MATHEMATICAL ITALIC CAPITAL MU
-1D6EE MATHEMATICAL ITALIC CAPITAL NU
-1D6EF MATHEMATICAL ITALIC CAPITAL XI
-1D6F0 MATHEMATICAL ITALIC CAPITAL OMICRON
-1D6F1 MATHEMATICAL ITALIC CAPITAL PI
-1D6F2 MATHEMATICAL ITALIC CAPITAL RHO
-1D6F3 MATHEMATICAL ITALIC CAPITAL THETA SYMBOL
-1D6F4 MATHEMATICAL ITALIC CAPITAL SIGMA
-1D6F5 MATHEMATICAL ITALIC CAPITAL TAU
-1D6F6 MATHEMATICAL ITALIC CAPITAL UPSILON
-1D6F7 MATHEMATICAL ITALIC CAPITAL PHI
-1D6F8 MATHEMATICAL ITALIC CAPITAL CHI
-1D6F9 MATHEMATICAL ITALIC CAPITAL PSI
-1D6FA MATHEMATICAL ITALIC CAPITAL OMEGA
-1D6FB MATHEMATICAL ITALIC NABLA
-1D6FC MATHEMATICAL ITALIC SMALL ALPHA
-1D6FD MATHEMATICAL ITALIC SMALL BETA
-1D6FE MATHEMATICAL ITALIC SMALL GAMMA
-1D6FF MATHEMATICAL ITALIC SMALL DELTA
-1D700 MATHEMATICAL ITALIC SMALL EPSILON
-1D701 MATHEMATICAL ITALIC SMALL ZETA
-1D702 MATHEMATICAL ITALIC SMALL ETA
-1D703 MATHEMATICAL ITALIC SMALL THETA
-1D704 MATHEMATICAL ITALIC SMALL IOTA
-1D705 MATHEMATICAL ITALIC SMALL KAPPA
-1D706 MATHEMATICAL ITALIC SMALL LAMDA
-1D707 MATHEMATICAL ITALIC SMALL MU
-1D708 MATHEMATICAL ITALIC SMALL NU
-1D709 MATHEMATICAL ITALIC SMALL XI
-1D70A MATHEMATICAL ITALIC SMALL OMICRON
-1D70B MATHEMATICAL ITALIC SMALL PI
-1D70C MATHEMATICAL ITALIC SMALL RHO
-1D70D MATHEMATICAL ITALIC SMALL FINAL SIGMA
-1D70E MATHEMATICAL ITALIC SMALL SIGMA
-1D70F MATHEMATICAL ITALIC SMALL TAU
-1D710 MATHEMATICAL ITALIC SMALL UPSILON
-1D711 MATHEMATICAL ITALIC SMALL PHI
-1D712 MATHEMATICAL ITALIC SMALL CHI
-1D713 MATHEMATICAL ITALIC SMALL PSI
-1D714 MATHEMATICAL ITALIC SMALL OMEGA
-1D715 MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
-1D716 MATHEMATICAL ITALIC EPSILON SYMBOL
-1D717 MATHEMATICAL ITALIC THETA SYMBOL
-1D718 MATHEMATICAL ITALIC KAPPA SYMBOL
-1D719 MATHEMATICAL ITALIC PHI SYMBOL
-1D71A MATHEMATICAL ITALIC RHO SYMBOL
-1D71B MATHEMATICAL ITALIC PI SYMBOL
-1D71C MATHEMATICAL BOLD ITALIC CAPITAL ALPHA
-1D71D MATHEMATICAL BOLD ITALIC CAPITAL BETA
-1D71E MATHEMATICAL BOLD ITALIC CAPITAL GAMMA
-1D71F MATHEMATICAL BOLD ITALIC CAPITAL DELTA
-1D720 MATHEMATICAL BOLD ITALIC CAPITAL EPSILON
-1D721 MATHEMATICAL BOLD ITALIC CAPITAL ZETA
-1D722 MATHEMATICAL BOLD ITALIC CAPITAL ETA
-1D723 MATHEMATICAL BOLD ITALIC CAPITAL THETA
-1D724 MATHEMATICAL BOLD ITALIC CAPITAL IOTA
-1D725 MATHEMATICAL BOLD ITALIC CAPITAL KAPPA
-1D726 MATHEMATICAL BOLD ITALIC CAPITAL LAMDA
-1D727 MATHEMATICAL BOLD ITALIC CAPITAL MU
-1D728 MATHEMATICAL BOLD ITALIC CAPITAL NU
-1D729 MATHEMATICAL BOLD ITALIC CAPITAL XI
-1D72A MATHEMATICAL BOLD ITALIC CAPITAL OMICRON
-1D72B MATHEMATICAL BOLD ITALIC CAPITAL PI
-1D72C MATHEMATICAL BOLD ITALIC CAPITAL RHO
-1D72D MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL
-1D72E MATHEMATICAL BOLD ITALIC CAPITAL SIGMA
-1D72F MATHEMATICAL BOLD ITALIC CAPITAL TAU
-1D730 MATHEMATICAL BOLD ITALIC CAPITAL UPSILON
-1D731 MATHEMATICAL BOLD ITALIC CAPITAL PHI
-1D732 MATHEMATICAL BOLD ITALIC CAPITAL CHI
-1D733 MATHEMATICAL BOLD ITALIC CAPITAL PSI
-1D734 MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
-1D735 MATHEMATICAL BOLD ITALIC NABLA
-1D736 MATHEMATICAL BOLD ITALIC SMALL ALPHA
-1D737 MATHEMATICAL BOLD ITALIC SMALL BETA
-1D738 MATHEMATICAL BOLD ITALIC SMALL GAMMA
-1D739 MATHEMATICAL BOLD ITALIC SMALL DELTA
-1D73A MATHEMATICAL BOLD ITALIC SMALL EPSILON
-1D73B MATHEMATICAL BOLD ITALIC SMALL ZETA
-1D73C MATHEMATICAL BOLD ITALIC SMALL ETA
-1D73D MATHEMATICAL BOLD ITALIC SMALL THETA
-1D73E MATHEMATICAL BOLD ITALIC SMALL IOTA
-1D73F MATHEMATICAL BOLD ITALIC SMALL KAPPA
-1D740 MATHEMATICAL BOLD ITALIC SMALL LAMDA
-1D741 MATHEMATICAL BOLD ITALIC SMALL MU
-1D742 MATHEMATICAL BOLD ITALIC SMALL NU
-1D743 MATHEMATICAL BOLD ITALIC SMALL XI
-1D744 MATHEMATICAL BOLD ITALIC SMALL OMICRON
-1D745 MATHEMATICAL BOLD ITALIC SMALL PI
-1D746 MATHEMATICAL BOLD ITALIC SMALL RHO
-1D747 MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA
-1D748 MATHEMATICAL BOLD ITALIC SMALL SIGMA
-1D749 MATHEMATICAL BOLD ITALIC SMALL TAU
-1D74A MATHEMATICAL BOLD ITALIC SMALL UPSILON
-1D74B MATHEMATICAL BOLD ITALIC SMALL PHI
-1D74C MATHEMATICAL BOLD ITALIC SMALL CHI
-1D74D MATHEMATICAL BOLD ITALIC SMALL PSI
-1D74E MATHEMATICAL BOLD ITALIC SMALL OMEGA
-1D74F MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
-1D750 MATHEMATICAL BOLD ITALIC EPSILON SYMBOL
-1D751 MATHEMATICAL BOLD ITALIC THETA SYMBOL
-1D752 MATHEMATICAL BOLD ITALIC KAPPA SYMBOL
-1D753 MATHEMATICAL BOLD ITALIC PHI SYMBOL
-1D754 MATHEMATICAL BOLD ITALIC RHO SYMBOL
-1D755 MATHEMATICAL BOLD ITALIC PI SYMBOL
-1D756 MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA
-1D757 MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA
-1D758 MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA
-1D759 MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA
-1D75A MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON
-1D75B MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA
-1D75C MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA
-1D75D MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA
-1D75E MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA
-1D75F MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA
-1D760 MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA
-1D761 MATHEMATICAL SANS-SERIF BOLD CAPITAL MU
-1D762 MATHEMATICAL SANS-SERIF BOLD CAPITAL NU
-1D763 MATHEMATICAL SANS-SERIF BOLD CAPITAL XI
-1D764 MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON
-1D765 MATHEMATICAL SANS-SERIF BOLD CAPITAL PI
-1D766 MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO
-1D767 MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL
-1D768 MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA
-1D769 MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU
-1D76A MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON
-1D76B MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI
-1D76C MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI
-1D76D MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI
-1D76E MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
-1D76F MATHEMATICAL SANS-SERIF BOLD NABLA
-1D770 MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA
-1D771 MATHEMATICAL SANS-SERIF BOLD SMALL BETA
-1D772 MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA
-1D773 MATHEMATICAL SANS-SERIF BOLD SMALL DELTA
-1D774 MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON
-1D775 MATHEMATICAL SANS-SERIF BOLD SMALL ZETA
-1D776 MATHEMATICAL SANS-SERIF BOLD SMALL ETA
-1D777 MATHEMATICAL SANS-SERIF BOLD SMALL THETA
-1D778 MATHEMATICAL SANS-SERIF BOLD SMALL IOTA
-1D779 MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA
-1D77A MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA
-1D77B MATHEMATICAL SANS-SERIF BOLD SMALL MU
-1D77C MATHEMATICAL SANS-SERIF BOLD SMALL NU
-1D77D MATHEMATICAL SANS-SERIF BOLD SMALL XI
-1D77E MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON
-1D77F MATHEMATICAL SANS-SERIF BOLD SMALL PI
-1D780 MATHEMATICAL SANS-SERIF BOLD SMALL RHO
-1D781 MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA
-1D782 MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA
-1D783 MATHEMATICAL SANS-SERIF BOLD SMALL TAU
-1D784 MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON
-1D785 MATHEMATICAL SANS-SERIF BOLD SMALL PHI
-1D786 MATHEMATICAL SANS-SERIF BOLD SMALL CHI
-1D787 MATHEMATICAL SANS-SERIF BOLD SMALL PSI
-1D788 MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
-1D789 MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
-1D78A MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL
-1D78B MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL
-1D78C MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL
-1D78D MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL
-1D78E MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL
-1D78F MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
-1D790 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA
-1D791 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA
-1D792 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA
-1D793 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA
-1D794 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON
-1D795 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA
-1D796 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA
-1D797 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA
-1D798 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA
-1D799 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA
-1D79A MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA
-1D79B MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU
-1D79C MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU
-1D79D MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI
-1D79E MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON
-1D79F MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI
-1D7A0 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO
-1D7A1 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL
-1D7A2 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA
-1D7A3 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU
-1D7A4 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON
-1D7A5 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI
-1D7A6 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI
-1D7A7 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI
-1D7A8 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
-1D7A9 MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
-1D7AA MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA
-1D7AB MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA
-1D7AC MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA
-1D7AD MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA
-1D7AE MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON
-1D7AF MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA
-1D7B0 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA
-1D7B1 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA
-1D7B2 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA
-1D7B3 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA
-1D7B4 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA
-1D7B5 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU
-1D7B6 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU
-1D7B7 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI
-1D7B8 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON
-1D7B9 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI
-1D7BA MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO
-1D7BB MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA
-1D7BC MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA
-1D7BD MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU
-1D7BE MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON
-1D7BF MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI
-1D7C0 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI
-1D7C1 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI
-1D7C2 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
-1D7C3 MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
-1D7C4 MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL
-1D7C5 MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL
-1D7C6 MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL
-1D7C7 MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL
-1D7C8 MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL
-1D7C9 MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
-1D7CE MATHEMATICAL BOLD DIGIT ZERO
-1D7CF MATHEMATICAL BOLD DIGIT ONE
-1D7D0 MATHEMATICAL BOLD DIGIT TWO
-1D7D1 MATHEMATICAL BOLD DIGIT THREE
-1D7D2 MATHEMATICAL BOLD DIGIT FOUR
-1D7D3 MATHEMATICAL BOLD DIGIT FIVE
-1D7D4 MATHEMATICAL BOLD DIGIT SIX
-1D7D5 MATHEMATICAL BOLD DIGIT SEVEN
-1D7D6 MATHEMATICAL BOLD DIGIT EIGHT
-1D7D7 MATHEMATICAL BOLD DIGIT NINE
-1D7D8 MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO
-1D7D9 MATHEMATICAL DOUBLE-STRUCK DIGIT ONE
-1D7DA MATHEMATICAL DOUBLE-STRUCK DIGIT TWO
-1D7DB MATHEMATICAL DOUBLE-STRUCK DIGIT THREE
-1D7DC MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR
-1D7DD MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE
-1D7DE MATHEMATICAL DOUBLE-STRUCK DIGIT SIX
-1D7DF MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN
-1D7E0 MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT
-1D7E1 MATHEMATICAL DOUBLE-STRUCK DIGIT NINE
-1D7E2 MATHEMATICAL SANS-SERIF DIGIT ZERO
-1D7E3 MATHEMATICAL SANS-SERIF DIGIT ONE
-1D7E4 MATHEMATICAL SANS-SERIF DIGIT TWO
-1D7E5 MATHEMATICAL SANS-SERIF DIGIT THREE
-1D7E6 MATHEMATICAL SANS-SERIF DIGIT FOUR
-1D7E7 MATHEMATICAL SANS-SERIF DIGIT FIVE
-1D7E8 MATHEMATICAL SANS-SERIF DIGIT SIX
-1D7E9 MATHEMATICAL SANS-SERIF DIGIT SEVEN
-1D7EA MATHEMATICAL SANS-SERIF DIGIT EIGHT
-1D7EB MATHEMATICAL SANS-SERIF DIGIT NINE
-1D7EC MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO
-1D7ED MATHEMATICAL SANS-SERIF BOLD DIGIT ONE
-1D7EE MATHEMATICAL SANS-SERIF BOLD DIGIT TWO
-1D7EF MATHEMATICAL SANS-SERIF BOLD DIGIT THREE
-1D7F0 MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR
-1D7F1 MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE
-1D7F2 MATHEMATICAL SANS-SERIF BOLD DIGIT SIX
-1D7F3 MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN
-1D7F4 MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT
-1D7F5 MATHEMATICAL SANS-SERIF BOLD DIGIT NINE
-1D7F6 MATHEMATICAL MONOSPACE DIGIT ZERO
-1D7F7 MATHEMATICAL MONOSPACE DIGIT ONE
-1D7F8 MATHEMATICAL MONOSPACE DIGIT TWO
-1D7F9 MATHEMATICAL MONOSPACE DIGIT THREE
-1D7FA MATHEMATICAL MONOSPACE DIGIT FOUR
-1D7FB MATHEMATICAL MONOSPACE DIGIT FIVE
-1D7FC MATHEMATICAL MONOSPACE DIGIT SIX
-1D7FD MATHEMATICAL MONOSPACE DIGIT SEVEN
-1D7FE MATHEMATICAL MONOSPACE DIGIT EIGHT
-1D7FF MATHEMATICAL MONOSPACE DIGIT NINE
-20000 2A6D6 CJK Ideograph Extension B
-2F800 CJK COMPATIBILITY IDEOGRAPH-2F800
-2F801 CJK COMPATIBILITY IDEOGRAPH-2F801
-2F802 CJK COMPATIBILITY IDEOGRAPH-2F802
-2F803 CJK COMPATIBILITY IDEOGRAPH-2F803
-2F804 CJK COMPATIBILITY IDEOGRAPH-2F804
-2F805 CJK COMPATIBILITY IDEOGRAPH-2F805
-2F806 CJK COMPATIBILITY IDEOGRAPH-2F806
-2F807 CJK COMPATIBILITY IDEOGRAPH-2F807
-2F808 CJK COMPATIBILITY IDEOGRAPH-2F808
-2F809 CJK COMPATIBILITY IDEOGRAPH-2F809
-2F80A CJK COMPATIBILITY IDEOGRAPH-2F80A
-2F80B CJK COMPATIBILITY IDEOGRAPH-2F80B
-2F80C CJK COMPATIBILITY IDEOGRAPH-2F80C
-2F80D CJK COMPATIBILITY IDEOGRAPH-2F80D
-2F80E CJK COMPATIBILITY IDEOGRAPH-2F80E
-2F80F CJK COMPATIBILITY IDEOGRAPH-2F80F
-2F810 CJK COMPATIBILITY IDEOGRAPH-2F810
-2F811 CJK COMPATIBILITY IDEOGRAPH-2F811
-2F812 CJK COMPATIBILITY IDEOGRAPH-2F812
-2F813 CJK COMPATIBILITY IDEOGRAPH-2F813
-2F814 CJK COMPATIBILITY IDEOGRAPH-2F814
-2F815 CJK COMPATIBILITY IDEOGRAPH-2F815
-2F816 CJK COMPATIBILITY IDEOGRAPH-2F816
-2F817 CJK COMPATIBILITY IDEOGRAPH-2F817
-2F818 CJK COMPATIBILITY IDEOGRAPH-2F818
-2F819 CJK COMPATIBILITY IDEOGRAPH-2F819
-2F81A CJK COMPATIBILITY IDEOGRAPH-2F81A
-2F81B CJK COMPATIBILITY IDEOGRAPH-2F81B
-2F81C CJK COMPATIBILITY IDEOGRAPH-2F81C
-2F81D CJK COMPATIBILITY IDEOGRAPH-2F81D
-2F81E CJK COMPATIBILITY IDEOGRAPH-2F81E
-2F81F CJK COMPATIBILITY IDEOGRAPH-2F81F
-2F820 CJK COMPATIBILITY IDEOGRAPH-2F820
-2F821 CJK COMPATIBILITY IDEOGRAPH-2F821
-2F822 CJK COMPATIBILITY IDEOGRAPH-2F822
-2F823 CJK COMPATIBILITY IDEOGRAPH-2F823
-2F824 CJK COMPATIBILITY IDEOGRAPH-2F824
-2F825 CJK COMPATIBILITY IDEOGRAPH-2F825
-2F826 CJK COMPATIBILITY IDEOGRAPH-2F826
-2F827 CJK COMPATIBILITY IDEOGRAPH-2F827
-2F828 CJK COMPATIBILITY IDEOGRAPH-2F828
-2F829 CJK COMPATIBILITY IDEOGRAPH-2F829
-2F82A CJK COMPATIBILITY IDEOGRAPH-2F82A
-2F82B CJK COMPATIBILITY IDEOGRAPH-2F82B
-2F82C CJK COMPATIBILITY IDEOGRAPH-2F82C
-2F82D CJK COMPATIBILITY IDEOGRAPH-2F82D
-2F82E CJK COMPATIBILITY IDEOGRAPH-2F82E
-2F82F CJK COMPATIBILITY IDEOGRAPH-2F82F
-2F830 CJK COMPATIBILITY IDEOGRAPH-2F830
-2F831 CJK COMPATIBILITY IDEOGRAPH-2F831
-2F832 CJK COMPATIBILITY IDEOGRAPH-2F832
-2F833 CJK COMPATIBILITY IDEOGRAPH-2F833
-2F834 CJK COMPATIBILITY IDEOGRAPH-2F834
-2F835 CJK COMPATIBILITY IDEOGRAPH-2F835
-2F836 CJK COMPATIBILITY IDEOGRAPH-2F836
-2F837 CJK COMPATIBILITY IDEOGRAPH-2F837
-2F838 CJK COMPATIBILITY IDEOGRAPH-2F838
-2F839 CJK COMPATIBILITY IDEOGRAPH-2F839
-2F83A CJK COMPATIBILITY IDEOGRAPH-2F83A
-2F83B CJK COMPATIBILITY IDEOGRAPH-2F83B
-2F83C CJK COMPATIBILITY IDEOGRAPH-2F83C
-2F83D CJK COMPATIBILITY IDEOGRAPH-2F83D
-2F83E CJK COMPATIBILITY IDEOGRAPH-2F83E
-2F83F CJK COMPATIBILITY IDEOGRAPH-2F83F
-2F840 CJK COMPATIBILITY IDEOGRAPH-2F840
-2F841 CJK COMPATIBILITY IDEOGRAPH-2F841
-2F842 CJK COMPATIBILITY IDEOGRAPH-2F842
-2F843 CJK COMPATIBILITY IDEOGRAPH-2F843
-2F844 CJK COMPATIBILITY IDEOGRAPH-2F844
-2F845 CJK COMPATIBILITY IDEOGRAPH-2F845
-2F846 CJK COMPATIBILITY IDEOGRAPH-2F846
-2F847 CJK COMPATIBILITY IDEOGRAPH-2F847
-2F848 CJK COMPATIBILITY IDEOGRAPH-2F848
-2F849 CJK COMPATIBILITY IDEOGRAPH-2F849
-2F84A CJK COMPATIBILITY IDEOGRAPH-2F84A
-2F84B CJK COMPATIBILITY IDEOGRAPH-2F84B
-2F84C CJK COMPATIBILITY IDEOGRAPH-2F84C
-2F84D CJK COMPATIBILITY IDEOGRAPH-2F84D
-2F84E CJK COMPATIBILITY IDEOGRAPH-2F84E
-2F84F CJK COMPATIBILITY IDEOGRAPH-2F84F
-2F850 CJK COMPATIBILITY IDEOGRAPH-2F850
-2F851 CJK COMPATIBILITY IDEOGRAPH-2F851
-2F852 CJK COMPATIBILITY IDEOGRAPH-2F852
-2F853 CJK COMPATIBILITY IDEOGRAPH-2F853
-2F854 CJK COMPATIBILITY IDEOGRAPH-2F854
-2F855 CJK COMPATIBILITY IDEOGRAPH-2F855
-2F856 CJK COMPATIBILITY IDEOGRAPH-2F856
-2F857 CJK COMPATIBILITY IDEOGRAPH-2F857
-2F858 CJK COMPATIBILITY IDEOGRAPH-2F858
-2F859 CJK COMPATIBILITY IDEOGRAPH-2F859
-2F85A CJK COMPATIBILITY IDEOGRAPH-2F85A
-2F85B CJK COMPATIBILITY IDEOGRAPH-2F85B
-2F85C CJK COMPATIBILITY IDEOGRAPH-2F85C
-2F85D CJK COMPATIBILITY IDEOGRAPH-2F85D
-2F85E CJK COMPATIBILITY IDEOGRAPH-2F85E
-2F85F CJK COMPATIBILITY IDEOGRAPH-2F85F
-2F860 CJK COMPATIBILITY IDEOGRAPH-2F860
-2F861 CJK COMPATIBILITY IDEOGRAPH-2F861
-2F862 CJK COMPATIBILITY IDEOGRAPH-2F862
-2F863 CJK COMPATIBILITY IDEOGRAPH-2F863
-2F864 CJK COMPATIBILITY IDEOGRAPH-2F864
-2F865 CJK COMPATIBILITY IDEOGRAPH-2F865
-2F866 CJK COMPATIBILITY IDEOGRAPH-2F866
-2F867 CJK COMPATIBILITY IDEOGRAPH-2F867
-2F868 CJK COMPATIBILITY IDEOGRAPH-2F868
-2F869 CJK COMPATIBILITY IDEOGRAPH-2F869
-2F86A CJK COMPATIBILITY IDEOGRAPH-2F86A
-2F86B CJK COMPATIBILITY IDEOGRAPH-2F86B
-2F86C CJK COMPATIBILITY IDEOGRAPH-2F86C
-2F86D CJK COMPATIBILITY IDEOGRAPH-2F86D
-2F86E CJK COMPATIBILITY IDEOGRAPH-2F86E
-2F86F CJK COMPATIBILITY IDEOGRAPH-2F86F
-2F870 CJK COMPATIBILITY IDEOGRAPH-2F870
-2F871 CJK COMPATIBILITY IDEOGRAPH-2F871
-2F872 CJK COMPATIBILITY IDEOGRAPH-2F872
-2F873 CJK COMPATIBILITY IDEOGRAPH-2F873
-2F874 CJK COMPATIBILITY IDEOGRAPH-2F874
-2F875 CJK COMPATIBILITY IDEOGRAPH-2F875
-2F876 CJK COMPATIBILITY IDEOGRAPH-2F876
-2F877 CJK COMPATIBILITY IDEOGRAPH-2F877
-2F878 CJK COMPATIBILITY IDEOGRAPH-2F878
-2F879 CJK COMPATIBILITY IDEOGRAPH-2F879
-2F87A CJK COMPATIBILITY IDEOGRAPH-2F87A
-2F87B CJK COMPATIBILITY IDEOGRAPH-2F87B
-2F87C CJK COMPATIBILITY IDEOGRAPH-2F87C
-2F87D CJK COMPATIBILITY IDEOGRAPH-2F87D
-2F87E CJK COMPATIBILITY IDEOGRAPH-2F87E
-2F87F CJK COMPATIBILITY IDEOGRAPH-2F87F
-2F880 CJK COMPATIBILITY IDEOGRAPH-2F880
-2F881 CJK COMPATIBILITY IDEOGRAPH-2F881
-2F882 CJK COMPATIBILITY IDEOGRAPH-2F882
-2F883 CJK COMPATIBILITY IDEOGRAPH-2F883
-2F884 CJK COMPATIBILITY IDEOGRAPH-2F884
-2F885 CJK COMPATIBILITY IDEOGRAPH-2F885
-2F886 CJK COMPATIBILITY IDEOGRAPH-2F886
-2F887 CJK COMPATIBILITY IDEOGRAPH-2F887
-2F888 CJK COMPATIBILITY IDEOGRAPH-2F888
-2F889 CJK COMPATIBILITY IDEOGRAPH-2F889
-2F88A CJK COMPATIBILITY IDEOGRAPH-2F88A
-2F88B CJK COMPATIBILITY IDEOGRAPH-2F88B
-2F88C CJK COMPATIBILITY IDEOGRAPH-2F88C
-2F88D CJK COMPATIBILITY IDEOGRAPH-2F88D
-2F88E CJK COMPATIBILITY IDEOGRAPH-2F88E
-2F88F CJK COMPATIBILITY IDEOGRAPH-2F88F
-2F890 CJK COMPATIBILITY IDEOGRAPH-2F890
-2F891 CJK COMPATIBILITY IDEOGRAPH-2F891
-2F892 CJK COMPATIBILITY IDEOGRAPH-2F892
-2F893 CJK COMPATIBILITY IDEOGRAPH-2F893
-2F894 CJK COMPATIBILITY IDEOGRAPH-2F894
-2F895 CJK COMPATIBILITY IDEOGRAPH-2F895
-2F896 CJK COMPATIBILITY IDEOGRAPH-2F896
-2F897 CJK COMPATIBILITY IDEOGRAPH-2F897
-2F898 CJK COMPATIBILITY IDEOGRAPH-2F898
-2F899 CJK COMPATIBILITY IDEOGRAPH-2F899
-2F89A CJK COMPATIBILITY IDEOGRAPH-2F89A
-2F89B CJK COMPATIBILITY IDEOGRAPH-2F89B
-2F89C CJK COMPATIBILITY IDEOGRAPH-2F89C
-2F89D CJK COMPATIBILITY IDEOGRAPH-2F89D
-2F89E CJK COMPATIBILITY IDEOGRAPH-2F89E
-2F89F CJK COMPATIBILITY IDEOGRAPH-2F89F
-2F8A0 CJK COMPATIBILITY IDEOGRAPH-2F8A0
-2F8A1 CJK COMPATIBILITY IDEOGRAPH-2F8A1
-2F8A2 CJK COMPATIBILITY IDEOGRAPH-2F8A2
-2F8A3 CJK COMPATIBILITY IDEOGRAPH-2F8A3
-2F8A4 CJK COMPATIBILITY IDEOGRAPH-2F8A4
-2F8A5 CJK COMPATIBILITY IDEOGRAPH-2F8A5
-2F8A6 CJK COMPATIBILITY IDEOGRAPH-2F8A6
-2F8A7 CJK COMPATIBILITY IDEOGRAPH-2F8A7
-2F8A8 CJK COMPATIBILITY IDEOGRAPH-2F8A8
-2F8A9 CJK COMPATIBILITY IDEOGRAPH-2F8A9
-2F8AA CJK COMPATIBILITY IDEOGRAPH-2F8AA
-2F8AB CJK COMPATIBILITY IDEOGRAPH-2F8AB
-2F8AC CJK COMPATIBILITY IDEOGRAPH-2F8AC
-2F8AD CJK COMPATIBILITY IDEOGRAPH-2F8AD
-2F8AE CJK COMPATIBILITY IDEOGRAPH-2F8AE
-2F8AF CJK COMPATIBILITY IDEOGRAPH-2F8AF
-2F8B0 CJK COMPATIBILITY IDEOGRAPH-2F8B0
-2F8B1 CJK COMPATIBILITY IDEOGRAPH-2F8B1
-2F8B2 CJK COMPATIBILITY IDEOGRAPH-2F8B2
-2F8B3 CJK COMPATIBILITY IDEOGRAPH-2F8B3
-2F8B4 CJK COMPATIBILITY IDEOGRAPH-2F8B4
-2F8B5 CJK COMPATIBILITY IDEOGRAPH-2F8B5
-2F8B6 CJK COMPATIBILITY IDEOGRAPH-2F8B6
-2F8B7 CJK COMPATIBILITY IDEOGRAPH-2F8B7
-2F8B8 CJK COMPATIBILITY IDEOGRAPH-2F8B8
-2F8B9 CJK COMPATIBILITY IDEOGRAPH-2F8B9
-2F8BA CJK COMPATIBILITY IDEOGRAPH-2F8BA
-2F8BB CJK COMPATIBILITY IDEOGRAPH-2F8BB
-2F8BC CJK COMPATIBILITY IDEOGRAPH-2F8BC
-2F8BD CJK COMPATIBILITY IDEOGRAPH-2F8BD
-2F8BE CJK COMPATIBILITY IDEOGRAPH-2F8BE
-2F8BF CJK COMPATIBILITY IDEOGRAPH-2F8BF
-2F8C0 CJK COMPATIBILITY IDEOGRAPH-2F8C0
-2F8C1 CJK COMPATIBILITY IDEOGRAPH-2F8C1
-2F8C2 CJK COMPATIBILITY IDEOGRAPH-2F8C2
-2F8C3 CJK COMPATIBILITY IDEOGRAPH-2F8C3
-2F8C4 CJK COMPATIBILITY IDEOGRAPH-2F8C4
-2F8C5 CJK COMPATIBILITY IDEOGRAPH-2F8C5
-2F8C6 CJK COMPATIBILITY IDEOGRAPH-2F8C6
-2F8C7 CJK COMPATIBILITY IDEOGRAPH-2F8C7
-2F8C8 CJK COMPATIBILITY IDEOGRAPH-2F8C8
-2F8C9 CJK COMPATIBILITY IDEOGRAPH-2F8C9
-2F8CA CJK COMPATIBILITY IDEOGRAPH-2F8CA
-2F8CB CJK COMPATIBILITY IDEOGRAPH-2F8CB
-2F8CC CJK COMPATIBILITY IDEOGRAPH-2F8CC
-2F8CD CJK COMPATIBILITY IDEOGRAPH-2F8CD
-2F8CE CJK COMPATIBILITY IDEOGRAPH-2F8CE
-2F8CF CJK COMPATIBILITY IDEOGRAPH-2F8CF
-2F8D0 CJK COMPATIBILITY IDEOGRAPH-2F8D0
-2F8D1 CJK COMPATIBILITY IDEOGRAPH-2F8D1
-2F8D2 CJK COMPATIBILITY IDEOGRAPH-2F8D2
-2F8D3 CJK COMPATIBILITY IDEOGRAPH-2F8D3
-2F8D4 CJK COMPATIBILITY IDEOGRAPH-2F8D4
-2F8D5 CJK COMPATIBILITY IDEOGRAPH-2F8D5
-2F8D6 CJK COMPATIBILITY IDEOGRAPH-2F8D6
-2F8D7 CJK COMPATIBILITY IDEOGRAPH-2F8D7
-2F8D8 CJK COMPATIBILITY IDEOGRAPH-2F8D8
-2F8D9 CJK COMPATIBILITY IDEOGRAPH-2F8D9
-2F8DA CJK COMPATIBILITY IDEOGRAPH-2F8DA
-2F8DB CJK COMPATIBILITY IDEOGRAPH-2F8DB
-2F8DC CJK COMPATIBILITY IDEOGRAPH-2F8DC
-2F8DD CJK COMPATIBILITY IDEOGRAPH-2F8DD
-2F8DE CJK COMPATIBILITY IDEOGRAPH-2F8DE
-2F8DF CJK COMPATIBILITY IDEOGRAPH-2F8DF
-2F8E0 CJK COMPATIBILITY IDEOGRAPH-2F8E0
-2F8E1 CJK COMPATIBILITY IDEOGRAPH-2F8E1
-2F8E2 CJK COMPATIBILITY IDEOGRAPH-2F8E2
-2F8E3 CJK COMPATIBILITY IDEOGRAPH-2F8E3
-2F8E4 CJK COMPATIBILITY IDEOGRAPH-2F8E4
-2F8E5 CJK COMPATIBILITY IDEOGRAPH-2F8E5
-2F8E6 CJK COMPATIBILITY IDEOGRAPH-2F8E6
-2F8E7 CJK COMPATIBILITY IDEOGRAPH-2F8E7
-2F8E8 CJK COMPATIBILITY IDEOGRAPH-2F8E8
-2F8E9 CJK COMPATIBILITY IDEOGRAPH-2F8E9
-2F8EA CJK COMPATIBILITY IDEOGRAPH-2F8EA
-2F8EB CJK COMPATIBILITY IDEOGRAPH-2F8EB
-2F8EC CJK COMPATIBILITY IDEOGRAPH-2F8EC
-2F8ED CJK COMPATIBILITY IDEOGRAPH-2F8ED
-2F8EE CJK COMPATIBILITY IDEOGRAPH-2F8EE
-2F8EF CJK COMPATIBILITY IDEOGRAPH-2F8EF
-2F8F0 CJK COMPATIBILITY IDEOGRAPH-2F8F0
-2F8F1 CJK COMPATIBILITY IDEOGRAPH-2F8F1
-2F8F2 CJK COMPATIBILITY IDEOGRAPH-2F8F2
-2F8F3 CJK COMPATIBILITY IDEOGRAPH-2F8F3
-2F8F4 CJK COMPATIBILITY IDEOGRAPH-2F8F4
-2F8F5 CJK COMPATIBILITY IDEOGRAPH-2F8F5
-2F8F6 CJK COMPATIBILITY IDEOGRAPH-2F8F6
-2F8F7 CJK COMPATIBILITY IDEOGRAPH-2F8F7
-2F8F8 CJK COMPATIBILITY IDEOGRAPH-2F8F8
-2F8F9 CJK COMPATIBILITY IDEOGRAPH-2F8F9
-2F8FA CJK COMPATIBILITY IDEOGRAPH-2F8FA
-2F8FB CJK COMPATIBILITY IDEOGRAPH-2F8FB
-2F8FC CJK COMPATIBILITY IDEOGRAPH-2F8FC
-2F8FD CJK COMPATIBILITY IDEOGRAPH-2F8FD
-2F8FE CJK COMPATIBILITY IDEOGRAPH-2F8FE
-2F8FF CJK COMPATIBILITY IDEOGRAPH-2F8FF
-2F900 CJK COMPATIBILITY IDEOGRAPH-2F900
-2F901 CJK COMPATIBILITY IDEOGRAPH-2F901
-2F902 CJK COMPATIBILITY IDEOGRAPH-2F902
-2F903 CJK COMPATIBILITY IDEOGRAPH-2F903
-2F904 CJK COMPATIBILITY IDEOGRAPH-2F904
-2F905 CJK COMPATIBILITY IDEOGRAPH-2F905
-2F906 CJK COMPATIBILITY IDEOGRAPH-2F906
-2F907 CJK COMPATIBILITY IDEOGRAPH-2F907
-2F908 CJK COMPATIBILITY IDEOGRAPH-2F908
-2F909 CJK COMPATIBILITY IDEOGRAPH-2F909
-2F90A CJK COMPATIBILITY IDEOGRAPH-2F90A
-2F90B CJK COMPATIBILITY IDEOGRAPH-2F90B
-2F90C CJK COMPATIBILITY IDEOGRAPH-2F90C
-2F90D CJK COMPATIBILITY IDEOGRAPH-2F90D
-2F90E CJK COMPATIBILITY IDEOGRAPH-2F90E
-2F90F CJK COMPATIBILITY IDEOGRAPH-2F90F
-2F910 CJK COMPATIBILITY IDEOGRAPH-2F910
-2F911 CJK COMPATIBILITY IDEOGRAPH-2F911
-2F912 CJK COMPATIBILITY IDEOGRAPH-2F912
-2F913 CJK COMPATIBILITY IDEOGRAPH-2F913
-2F914 CJK COMPATIBILITY IDEOGRAPH-2F914
-2F915 CJK COMPATIBILITY IDEOGRAPH-2F915
-2F916 CJK COMPATIBILITY IDEOGRAPH-2F916
-2F917 CJK COMPATIBILITY IDEOGRAPH-2F917
-2F918 CJK COMPATIBILITY IDEOGRAPH-2F918
-2F919 CJK COMPATIBILITY IDEOGRAPH-2F919
-2F91A CJK COMPATIBILITY IDEOGRAPH-2F91A
-2F91B CJK COMPATIBILITY IDEOGRAPH-2F91B
-2F91C CJK COMPATIBILITY IDEOGRAPH-2F91C
-2F91D CJK COMPATIBILITY IDEOGRAPH-2F91D
-2F91E CJK COMPATIBILITY IDEOGRAPH-2F91E
-2F91F CJK COMPATIBILITY IDEOGRAPH-2F91F
-2F920 CJK COMPATIBILITY IDEOGRAPH-2F920
-2F921 CJK COMPATIBILITY IDEOGRAPH-2F921
-2F922 CJK COMPATIBILITY IDEOGRAPH-2F922
-2F923 CJK COMPATIBILITY IDEOGRAPH-2F923
-2F924 CJK COMPATIBILITY IDEOGRAPH-2F924
-2F925 CJK COMPATIBILITY IDEOGRAPH-2F925
-2F926 CJK COMPATIBILITY IDEOGRAPH-2F926
-2F927 CJK COMPATIBILITY IDEOGRAPH-2F927
-2F928 CJK COMPATIBILITY IDEOGRAPH-2F928
-2F929 CJK COMPATIBILITY IDEOGRAPH-2F929
-2F92A CJK COMPATIBILITY IDEOGRAPH-2F92A
-2F92B CJK COMPATIBILITY IDEOGRAPH-2F92B
-2F92C CJK COMPATIBILITY IDEOGRAPH-2F92C
-2F92D CJK COMPATIBILITY IDEOGRAPH-2F92D
-2F92E CJK COMPATIBILITY IDEOGRAPH-2F92E
-2F92F CJK COMPATIBILITY IDEOGRAPH-2F92F
-2F930 CJK COMPATIBILITY IDEOGRAPH-2F930
-2F931 CJK COMPATIBILITY IDEOGRAPH-2F931
-2F932 CJK COMPATIBILITY IDEOGRAPH-2F932
-2F933 CJK COMPATIBILITY IDEOGRAPH-2F933
-2F934 CJK COMPATIBILITY IDEOGRAPH-2F934
-2F935 CJK COMPATIBILITY IDEOGRAPH-2F935
-2F936 CJK COMPATIBILITY IDEOGRAPH-2F936
-2F937 CJK COMPATIBILITY IDEOGRAPH-2F937
-2F938 CJK COMPATIBILITY IDEOGRAPH-2F938
-2F939 CJK COMPATIBILITY IDEOGRAPH-2F939
-2F93A CJK COMPATIBILITY IDEOGRAPH-2F93A
-2F93B CJK COMPATIBILITY IDEOGRAPH-2F93B
-2F93C CJK COMPATIBILITY IDEOGRAPH-2F93C
-2F93D CJK COMPATIBILITY IDEOGRAPH-2F93D
-2F93E CJK COMPATIBILITY IDEOGRAPH-2F93E
-2F93F CJK COMPATIBILITY IDEOGRAPH-2F93F
-2F940 CJK COMPATIBILITY IDEOGRAPH-2F940
-2F941 CJK COMPATIBILITY IDEOGRAPH-2F941
-2F942 CJK COMPATIBILITY IDEOGRAPH-2F942
-2F943 CJK COMPATIBILITY IDEOGRAPH-2F943
-2F944 CJK COMPATIBILITY IDEOGRAPH-2F944
-2F945 CJK COMPATIBILITY IDEOGRAPH-2F945
-2F946 CJK COMPATIBILITY IDEOGRAPH-2F946
-2F947 CJK COMPATIBILITY IDEOGRAPH-2F947
-2F948 CJK COMPATIBILITY IDEOGRAPH-2F948
-2F949 CJK COMPATIBILITY IDEOGRAPH-2F949
-2F94A CJK COMPATIBILITY IDEOGRAPH-2F94A
-2F94B CJK COMPATIBILITY IDEOGRAPH-2F94B
-2F94C CJK COMPATIBILITY IDEOGRAPH-2F94C
-2F94D CJK COMPATIBILITY IDEOGRAPH-2F94D
-2F94E CJK COMPATIBILITY IDEOGRAPH-2F94E
-2F94F CJK COMPATIBILITY IDEOGRAPH-2F94F
-2F950 CJK COMPATIBILITY IDEOGRAPH-2F950
-2F951 CJK COMPATIBILITY IDEOGRAPH-2F951
-2F952 CJK COMPATIBILITY IDEOGRAPH-2F952
-2F953 CJK COMPATIBILITY IDEOGRAPH-2F953
-2F954 CJK COMPATIBILITY IDEOGRAPH-2F954
-2F955 CJK COMPATIBILITY IDEOGRAPH-2F955
-2F956 CJK COMPATIBILITY IDEOGRAPH-2F956
-2F957 CJK COMPATIBILITY IDEOGRAPH-2F957
-2F958 CJK COMPATIBILITY IDEOGRAPH-2F958
-2F959 CJK COMPATIBILITY IDEOGRAPH-2F959
-2F95A CJK COMPATIBILITY IDEOGRAPH-2F95A
-2F95B CJK COMPATIBILITY IDEOGRAPH-2F95B
-2F95C CJK COMPATIBILITY IDEOGRAPH-2F95C
-2F95D CJK COMPATIBILITY IDEOGRAPH-2F95D
-2F95E CJK COMPATIBILITY IDEOGRAPH-2F95E
-2F95F CJK COMPATIBILITY IDEOGRAPH-2F95F
-2F960 CJK COMPATIBILITY IDEOGRAPH-2F960
-2F961 CJK COMPATIBILITY IDEOGRAPH-2F961
-2F962 CJK COMPATIBILITY IDEOGRAPH-2F962
-2F963 CJK COMPATIBILITY IDEOGRAPH-2F963
-2F964 CJK COMPATIBILITY IDEOGRAPH-2F964
-2F965 CJK COMPATIBILITY IDEOGRAPH-2F965
-2F966 CJK COMPATIBILITY IDEOGRAPH-2F966
-2F967 CJK COMPATIBILITY IDEOGRAPH-2F967
-2F968 CJK COMPATIBILITY IDEOGRAPH-2F968
-2F969 CJK COMPATIBILITY IDEOGRAPH-2F969
-2F96A CJK COMPATIBILITY IDEOGRAPH-2F96A
-2F96B CJK COMPATIBILITY IDEOGRAPH-2F96B
-2F96C CJK COMPATIBILITY IDEOGRAPH-2F96C
-2F96D CJK COMPATIBILITY IDEOGRAPH-2F96D
-2F96E CJK COMPATIBILITY IDEOGRAPH-2F96E
-2F96F CJK COMPATIBILITY IDEOGRAPH-2F96F
-2F970 CJK COMPATIBILITY IDEOGRAPH-2F970
-2F971 CJK COMPATIBILITY IDEOGRAPH-2F971
-2F972 CJK COMPATIBILITY IDEOGRAPH-2F972
-2F973 CJK COMPATIBILITY IDEOGRAPH-2F973
-2F974 CJK COMPATIBILITY IDEOGRAPH-2F974
-2F975 CJK COMPATIBILITY IDEOGRAPH-2F975
-2F976 CJK COMPATIBILITY IDEOGRAPH-2F976
-2F977 CJK COMPATIBILITY IDEOGRAPH-2F977
-2F978 CJK COMPATIBILITY IDEOGRAPH-2F978
-2F979 CJK COMPATIBILITY IDEOGRAPH-2F979
-2F97A CJK COMPATIBILITY IDEOGRAPH-2F97A
-2F97B CJK COMPATIBILITY IDEOGRAPH-2F97B
-2F97C CJK COMPATIBILITY IDEOGRAPH-2F97C
-2F97D CJK COMPATIBILITY IDEOGRAPH-2F97D
-2F97E CJK COMPATIBILITY IDEOGRAPH-2F97E
-2F97F CJK COMPATIBILITY IDEOGRAPH-2F97F
-2F980 CJK COMPATIBILITY IDEOGRAPH-2F980
-2F981 CJK COMPATIBILITY IDEOGRAPH-2F981
-2F982 CJK COMPATIBILITY IDEOGRAPH-2F982
-2F983 CJK COMPATIBILITY IDEOGRAPH-2F983
-2F984 CJK COMPATIBILITY IDEOGRAPH-2F984
-2F985 CJK COMPATIBILITY IDEOGRAPH-2F985
-2F986 CJK COMPATIBILITY IDEOGRAPH-2F986
-2F987 CJK COMPATIBILITY IDEOGRAPH-2F987
-2F988 CJK COMPATIBILITY IDEOGRAPH-2F988
-2F989 CJK COMPATIBILITY IDEOGRAPH-2F989
-2F98A CJK COMPATIBILITY IDEOGRAPH-2F98A
-2F98B CJK COMPATIBILITY IDEOGRAPH-2F98B
-2F98C CJK COMPATIBILITY IDEOGRAPH-2F98C
-2F98D CJK COMPATIBILITY IDEOGRAPH-2F98D
-2F98E CJK COMPATIBILITY IDEOGRAPH-2F98E
-2F98F CJK COMPATIBILITY IDEOGRAPH-2F98F
-2F990 CJK COMPATIBILITY IDEOGRAPH-2F990
-2F991 CJK COMPATIBILITY IDEOGRAPH-2F991
-2F992 CJK COMPATIBILITY IDEOGRAPH-2F992
-2F993 CJK COMPATIBILITY IDEOGRAPH-2F993
-2F994 CJK COMPATIBILITY IDEOGRAPH-2F994
-2F995 CJK COMPATIBILITY IDEOGRAPH-2F995
-2F996 CJK COMPATIBILITY IDEOGRAPH-2F996
-2F997 CJK COMPATIBILITY IDEOGRAPH-2F997
-2F998 CJK COMPATIBILITY IDEOGRAPH-2F998
-2F999 CJK COMPATIBILITY IDEOGRAPH-2F999
-2F99A CJK COMPATIBILITY IDEOGRAPH-2F99A
-2F99B CJK COMPATIBILITY IDEOGRAPH-2F99B
-2F99C CJK COMPATIBILITY IDEOGRAPH-2F99C
-2F99D CJK COMPATIBILITY IDEOGRAPH-2F99D
-2F99E CJK COMPATIBILITY IDEOGRAPH-2F99E
-2F99F CJK COMPATIBILITY IDEOGRAPH-2F99F
-2F9A0 CJK COMPATIBILITY IDEOGRAPH-2F9A0
-2F9A1 CJK COMPATIBILITY IDEOGRAPH-2F9A1
-2F9A2 CJK COMPATIBILITY IDEOGRAPH-2F9A2
-2F9A3 CJK COMPATIBILITY IDEOGRAPH-2F9A3
-2F9A4 CJK COMPATIBILITY IDEOGRAPH-2F9A4
-2F9A5 CJK COMPATIBILITY IDEOGRAPH-2F9A5
-2F9A6 CJK COMPATIBILITY IDEOGRAPH-2F9A6
-2F9A7 CJK COMPATIBILITY IDEOGRAPH-2F9A7
-2F9A8 CJK COMPATIBILITY IDEOGRAPH-2F9A8
-2F9A9 CJK COMPATIBILITY IDEOGRAPH-2F9A9
-2F9AA CJK COMPATIBILITY IDEOGRAPH-2F9AA
-2F9AB CJK COMPATIBILITY IDEOGRAPH-2F9AB
-2F9AC CJK COMPATIBILITY IDEOGRAPH-2F9AC
-2F9AD CJK COMPATIBILITY IDEOGRAPH-2F9AD
-2F9AE CJK COMPATIBILITY IDEOGRAPH-2F9AE
-2F9AF CJK COMPATIBILITY IDEOGRAPH-2F9AF
-2F9B0 CJK COMPATIBILITY IDEOGRAPH-2F9B0
-2F9B1 CJK COMPATIBILITY IDEOGRAPH-2F9B1
-2F9B2 CJK COMPATIBILITY IDEOGRAPH-2F9B2
-2F9B3 CJK COMPATIBILITY IDEOGRAPH-2F9B3
-2F9B4 CJK COMPATIBILITY IDEOGRAPH-2F9B4
-2F9B5 CJK COMPATIBILITY IDEOGRAPH-2F9B5
-2F9B6 CJK COMPATIBILITY IDEOGRAPH-2F9B6
-2F9B7 CJK COMPATIBILITY IDEOGRAPH-2F9B7
-2F9B8 CJK COMPATIBILITY IDEOGRAPH-2F9B8
-2F9B9 CJK COMPATIBILITY IDEOGRAPH-2F9B9
-2F9BA CJK COMPATIBILITY IDEOGRAPH-2F9BA
-2F9BB CJK COMPATIBILITY IDEOGRAPH-2F9BB
-2F9BC CJK COMPATIBILITY IDEOGRAPH-2F9BC
-2F9BD CJK COMPATIBILITY IDEOGRAPH-2F9BD
-2F9BE CJK COMPATIBILITY IDEOGRAPH-2F9BE
-2F9BF CJK COMPATIBILITY IDEOGRAPH-2F9BF
-2F9C0 CJK COMPATIBILITY IDEOGRAPH-2F9C0
-2F9C1 CJK COMPATIBILITY IDEOGRAPH-2F9C1
-2F9C2 CJK COMPATIBILITY IDEOGRAPH-2F9C2
-2F9C3 CJK COMPATIBILITY IDEOGRAPH-2F9C3
-2F9C4 CJK COMPATIBILITY IDEOGRAPH-2F9C4
-2F9C5 CJK COMPATIBILITY IDEOGRAPH-2F9C5
-2F9C6 CJK COMPATIBILITY IDEOGRAPH-2F9C6
-2F9C7 CJK COMPATIBILITY IDEOGRAPH-2F9C7
-2F9C8 CJK COMPATIBILITY IDEOGRAPH-2F9C8
-2F9C9 CJK COMPATIBILITY IDEOGRAPH-2F9C9
-2F9CA CJK COMPATIBILITY IDEOGRAPH-2F9CA
-2F9CB CJK COMPATIBILITY IDEOGRAPH-2F9CB
-2F9CC CJK COMPATIBILITY IDEOGRAPH-2F9CC
-2F9CD CJK COMPATIBILITY IDEOGRAPH-2F9CD
-2F9CE CJK COMPATIBILITY IDEOGRAPH-2F9CE
-2F9CF CJK COMPATIBILITY IDEOGRAPH-2F9CF
-2F9D0 CJK COMPATIBILITY IDEOGRAPH-2F9D0
-2F9D1 CJK COMPATIBILITY IDEOGRAPH-2F9D1
-2F9D2 CJK COMPATIBILITY IDEOGRAPH-2F9D2
-2F9D3 CJK COMPATIBILITY IDEOGRAPH-2F9D3
-2F9D4 CJK COMPATIBILITY IDEOGRAPH-2F9D4
-2F9D5 CJK COMPATIBILITY IDEOGRAPH-2F9D5
-2F9D6 CJK COMPATIBILITY IDEOGRAPH-2F9D6
-2F9D7 CJK COMPATIBILITY IDEOGRAPH-2F9D7
-2F9D8 CJK COMPATIBILITY IDEOGRAPH-2F9D8
-2F9D9 CJK COMPATIBILITY IDEOGRAPH-2F9D9
-2F9DA CJK COMPATIBILITY IDEOGRAPH-2F9DA
-2F9DB CJK COMPATIBILITY IDEOGRAPH-2F9DB
-2F9DC CJK COMPATIBILITY IDEOGRAPH-2F9DC
-2F9DD CJK COMPATIBILITY IDEOGRAPH-2F9DD
-2F9DE CJK COMPATIBILITY IDEOGRAPH-2F9DE
-2F9DF CJK COMPATIBILITY IDEOGRAPH-2F9DF
-2F9E0 CJK COMPATIBILITY IDEOGRAPH-2F9E0
-2F9E1 CJK COMPATIBILITY IDEOGRAPH-2F9E1
-2F9E2 CJK COMPATIBILITY IDEOGRAPH-2F9E2
-2F9E3 CJK COMPATIBILITY IDEOGRAPH-2F9E3
-2F9E4 CJK COMPATIBILITY IDEOGRAPH-2F9E4
-2F9E5 CJK COMPATIBILITY IDEOGRAPH-2F9E5
-2F9E6 CJK COMPATIBILITY IDEOGRAPH-2F9E6
-2F9E7 CJK COMPATIBILITY IDEOGRAPH-2F9E7
-2F9E8 CJK COMPATIBILITY IDEOGRAPH-2F9E8
-2F9E9 CJK COMPATIBILITY IDEOGRAPH-2F9E9
-2F9EA CJK COMPATIBILITY IDEOGRAPH-2F9EA
-2F9EB CJK COMPATIBILITY IDEOGRAPH-2F9EB
-2F9EC CJK COMPATIBILITY IDEOGRAPH-2F9EC
-2F9ED CJK COMPATIBILITY IDEOGRAPH-2F9ED
-2F9EE CJK COMPATIBILITY IDEOGRAPH-2F9EE
-2F9EF CJK COMPATIBILITY IDEOGRAPH-2F9EF
-2F9F0 CJK COMPATIBILITY IDEOGRAPH-2F9F0
-2F9F1 CJK COMPATIBILITY IDEOGRAPH-2F9F1
-2F9F2 CJK COMPATIBILITY IDEOGRAPH-2F9F2
-2F9F3 CJK COMPATIBILITY IDEOGRAPH-2F9F3
-2F9F4 CJK COMPATIBILITY IDEOGRAPH-2F9F4
-2F9F5 CJK COMPATIBILITY IDEOGRAPH-2F9F5
-2F9F6 CJK COMPATIBILITY IDEOGRAPH-2F9F6
-2F9F7 CJK COMPATIBILITY IDEOGRAPH-2F9F7
-2F9F8 CJK COMPATIBILITY IDEOGRAPH-2F9F8
-2F9F9 CJK COMPATIBILITY IDEOGRAPH-2F9F9
-2F9FA CJK COMPATIBILITY IDEOGRAPH-2F9FA
-2F9FB CJK COMPATIBILITY IDEOGRAPH-2F9FB
-2F9FC CJK COMPATIBILITY IDEOGRAPH-2F9FC
-2F9FD CJK COMPATIBILITY IDEOGRAPH-2F9FD
-2F9FE CJK COMPATIBILITY IDEOGRAPH-2F9FE
-2F9FF CJK COMPATIBILITY IDEOGRAPH-2F9FF
-2FA00 CJK COMPATIBILITY IDEOGRAPH-2FA00
-2FA01 CJK COMPATIBILITY IDEOGRAPH-2FA01
-2FA02 CJK COMPATIBILITY IDEOGRAPH-2FA02
-2FA03 CJK COMPATIBILITY IDEOGRAPH-2FA03
-2FA04 CJK COMPATIBILITY IDEOGRAPH-2FA04
-2FA05 CJK COMPATIBILITY IDEOGRAPH-2FA05
-2FA06 CJK COMPATIBILITY IDEOGRAPH-2FA06
-2FA07 CJK COMPATIBILITY IDEOGRAPH-2FA07
-2FA08 CJK COMPATIBILITY IDEOGRAPH-2FA08
-2FA09 CJK COMPATIBILITY IDEOGRAPH-2FA09
-2FA0A CJK COMPATIBILITY IDEOGRAPH-2FA0A
-2FA0B CJK COMPATIBILITY IDEOGRAPH-2FA0B
-2FA0C CJK COMPATIBILITY IDEOGRAPH-2FA0C
-2FA0D CJK COMPATIBILITY IDEOGRAPH-2FA0D
-2FA0E CJK COMPATIBILITY IDEOGRAPH-2FA0E
-2FA0F CJK COMPATIBILITY IDEOGRAPH-2FA0F
-2FA10 CJK COMPATIBILITY IDEOGRAPH-2FA10
-2FA11 CJK COMPATIBILITY IDEOGRAPH-2FA11
-2FA12 CJK COMPATIBILITY IDEOGRAPH-2FA12
-2FA13 CJK COMPATIBILITY IDEOGRAPH-2FA13
-2FA14 CJK COMPATIBILITY IDEOGRAPH-2FA14
-2FA15 CJK COMPATIBILITY IDEOGRAPH-2FA15
-2FA16 CJK COMPATIBILITY IDEOGRAPH-2FA16
-2FA17 CJK COMPATIBILITY IDEOGRAPH-2FA17
-2FA18 CJK COMPATIBILITY IDEOGRAPH-2FA18
-2FA19 CJK COMPATIBILITY IDEOGRAPH-2FA19
-2FA1A CJK COMPATIBILITY IDEOGRAPH-2FA1A
-2FA1B CJK COMPATIBILITY IDEOGRAPH-2FA1B
-2FA1C CJK COMPATIBILITY IDEOGRAPH-2FA1C
-2FA1D CJK COMPATIBILITY IDEOGRAPH-2FA1D
-E0001 LANGUAGE TAG
-E0020 TAG SPACE
-E0021 TAG EXCLAMATION MARK
-E0022 TAG QUOTATION MARK
-E0023 TAG NUMBER SIGN
-E0024 TAG DOLLAR SIGN
-E0025 TAG PERCENT SIGN
-E0026 TAG AMPERSAND
-E0027 TAG APOSTROPHE
-E0028 TAG LEFT PARENTHESIS
-E0029 TAG RIGHT PARENTHESIS
-E002A TAG ASTERISK
-E002B TAG PLUS SIGN
-E002C TAG COMMA
-E002D TAG HYPHEN-MINUS
-E002E TAG FULL STOP
-E002F TAG SOLIDUS
-E0030 TAG DIGIT ZERO
-E0031 TAG DIGIT ONE
-E0032 TAG DIGIT TWO
-E0033 TAG DIGIT THREE
-E0034 TAG DIGIT FOUR
-E0035 TAG DIGIT FIVE
-E0036 TAG DIGIT SIX
-E0037 TAG DIGIT SEVEN
-E0038 TAG DIGIT EIGHT
-E0039 TAG DIGIT NINE
-E003A TAG COLON
-E003B TAG SEMICOLON
-E003C TAG LESS-THAN SIGN
-E003D TAG EQUALS SIGN
-E003E TAG GREATER-THAN SIGN
-E003F TAG QUESTION MARK
-E0040 TAG COMMERCIAL AT
-E0041 TAG LATIN CAPITAL LETTER A
-E0042 TAG LATIN CAPITAL LETTER B
-E0043 TAG LATIN CAPITAL LETTER C
-E0044 TAG LATIN CAPITAL LETTER D
-E0045 TAG LATIN CAPITAL LETTER E
-E0046 TAG LATIN CAPITAL LETTER F
-E0047 TAG LATIN CAPITAL LETTER G
-E0048 TAG LATIN CAPITAL LETTER H
-E0049 TAG LATIN CAPITAL LETTER I
-E004A TAG LATIN CAPITAL LETTER J
-E004B TAG LATIN CAPITAL LETTER K
-E004C TAG LATIN CAPITAL LETTER L
-E004D TAG LATIN CAPITAL LETTER M
-E004E TAG LATIN CAPITAL LETTER N
-E004F TAG LATIN CAPITAL LETTER O
-E0050 TAG LATIN CAPITAL LETTER P
-E0051 TAG LATIN CAPITAL LETTER Q
-E0052 TAG LATIN CAPITAL LETTER R
-E0053 TAG LATIN CAPITAL LETTER S
-E0054 TAG LATIN CAPITAL LETTER T
-E0055 TAG LATIN CAPITAL LETTER U
-E0056 TAG LATIN CAPITAL LETTER V
-E0057 TAG LATIN CAPITAL LETTER W
-E0058 TAG LATIN CAPITAL LETTER X
-E0059 TAG LATIN CAPITAL LETTER Y
-E005A TAG LATIN CAPITAL LETTER Z
-E005B TAG LEFT SQUARE BRACKET
-E005C TAG REVERSE SOLIDUS
-E005D TAG RIGHT SQUARE BRACKET
-E005E TAG CIRCUMFLEX ACCENT
-E005F TAG LOW LINE
-E0060 TAG GRAVE ACCENT
-E0061 TAG LATIN SMALL LETTER A
-E0062 TAG LATIN SMALL LETTER B
-E0063 TAG LATIN SMALL LETTER C
-E0064 TAG LATIN SMALL LETTER D
-E0065 TAG LATIN SMALL LETTER E
-E0066 TAG LATIN SMALL LETTER F
-E0067 TAG LATIN SMALL LETTER G
-E0068 TAG LATIN SMALL LETTER H
-E0069 TAG LATIN SMALL LETTER I
-E006A TAG LATIN SMALL LETTER J
-E006B TAG LATIN SMALL LETTER K
-E006C TAG LATIN SMALL LETTER L
-E006D TAG LATIN SMALL LETTER M
-E006E TAG LATIN SMALL LETTER N
-E006F TAG LATIN SMALL LETTER O
-E0070 TAG LATIN SMALL LETTER P
-E0071 TAG LATIN SMALL LETTER Q
-E0072 TAG LATIN SMALL LETTER R
-E0073 TAG LATIN SMALL LETTER S
-E0074 TAG LATIN SMALL LETTER T
-E0075 TAG LATIN SMALL LETTER U
-E0076 TAG LATIN SMALL LETTER V
-E0077 TAG LATIN SMALL LETTER W
-E0078 TAG LATIN SMALL LETTER X
-E0079 TAG LATIN SMALL LETTER Y
-E007A TAG LATIN SMALL LETTER Z
-E007B TAG LEFT CURLY BRACKET
-E007C TAG VERTICAL LINE
-E007D TAG RIGHT CURLY BRACKET
-E007E TAG TILDE
-E007F CANCEL TAG
-E0100 VARIATION SELECTOR-17
-E0101 VARIATION SELECTOR-18
-E0102 VARIATION SELECTOR-19
-E0103 VARIATION SELECTOR-20
-E0104 VARIATION SELECTOR-21
-E0105 VARIATION SELECTOR-22
-E0106 VARIATION SELECTOR-23
-E0107 VARIATION SELECTOR-24
-E0108 VARIATION SELECTOR-25
-E0109 VARIATION SELECTOR-26
-E010A VARIATION SELECTOR-27
-E010B VARIATION SELECTOR-28
-E010C VARIATION SELECTOR-29
-E010D VARIATION SELECTOR-30
-E010E VARIATION SELECTOR-31
-E010F VARIATION SELECTOR-32
-E0110 VARIATION SELECTOR-33
-E0111 VARIATION SELECTOR-34
-E0112 VARIATION SELECTOR-35
-E0113 VARIATION SELECTOR-36
-E0114 VARIATION SELECTOR-37
-E0115 VARIATION SELECTOR-38
-E0116 VARIATION SELECTOR-39
-E0117 VARIATION SELECTOR-40
-E0118 VARIATION SELECTOR-41
-E0119 VARIATION SELECTOR-42
-E011A VARIATION SELECTOR-43
-E011B VARIATION SELECTOR-44
-E011C VARIATION SELECTOR-45
-E011D VARIATION SELECTOR-46
-E011E VARIATION SELECTOR-47
-E011F VARIATION SELECTOR-48
-E0120 VARIATION SELECTOR-49
-E0121 VARIATION SELECTOR-50
-E0122 VARIATION SELECTOR-51
-E0123 VARIATION SELECTOR-52
-E0124 VARIATION SELECTOR-53
-E0125 VARIATION SELECTOR-54
-E0126 VARIATION SELECTOR-55
-E0127 VARIATION SELECTOR-56
-E0128 VARIATION SELECTOR-57
-E0129 VARIATION SELECTOR-58
-E012A VARIATION SELECTOR-59
-E012B VARIATION SELECTOR-60
-E012C VARIATION SELECTOR-61
-E012D VARIATION SELECTOR-62
-E012E VARIATION SELECTOR-63
-E012F VARIATION SELECTOR-64
-E0130 VARIATION SELECTOR-65
-E0131 VARIATION SELECTOR-66
-E0132 VARIATION SELECTOR-67
-E0133 VARIATION SELECTOR-68
-E0134 VARIATION SELECTOR-69
-E0135 VARIATION SELECTOR-70
-E0136 VARIATION SELECTOR-71
-E0137 VARIATION SELECTOR-72
-E0138 VARIATION SELECTOR-73
-E0139 VARIATION SELECTOR-74
-E013A VARIATION SELECTOR-75
-E013B VARIATION SELECTOR-76
-E013C VARIATION SELECTOR-77
-E013D VARIATION SELECTOR-78
-E013E VARIATION SELECTOR-79
-E013F VARIATION SELECTOR-80
-E0140 VARIATION SELECTOR-81
-E0141 VARIATION SELECTOR-82
-E0142 VARIATION SELECTOR-83
-E0143 VARIATION SELECTOR-84
-E0144 VARIATION SELECTOR-85
-E0145 VARIATION SELECTOR-86
-E0146 VARIATION SELECTOR-87
-E0147 VARIATION SELECTOR-88
-E0148 VARIATION SELECTOR-89
-E0149 VARIATION SELECTOR-90
-E014A VARIATION SELECTOR-91
-E014B VARIATION SELECTOR-92
-E014C VARIATION SELECTOR-93
-E014D VARIATION SELECTOR-94
-E014E VARIATION SELECTOR-95
-E014F VARIATION SELECTOR-96
-E0150 VARIATION SELECTOR-97
-E0151 VARIATION SELECTOR-98
-E0152 VARIATION SELECTOR-99
-E0153 VARIATION SELECTOR-100
-E0154 VARIATION SELECTOR-101
-E0155 VARIATION SELECTOR-102
-E0156 VARIATION SELECTOR-103
-E0157 VARIATION SELECTOR-104
-E0158 VARIATION SELECTOR-105
-E0159 VARIATION SELECTOR-106
-E015A VARIATION SELECTOR-107
-E015B VARIATION SELECTOR-108
-E015C VARIATION SELECTOR-109
-E015D VARIATION SELECTOR-110
-E015E VARIATION SELECTOR-111
-E015F VARIATION SELECTOR-112
-E0160 VARIATION SELECTOR-113
-E0161 VARIATION SELECTOR-114
-E0162 VARIATION SELECTOR-115
-E0163 VARIATION SELECTOR-116
-E0164 VARIATION SELECTOR-117
-E0165 VARIATION SELECTOR-118
-E0166 VARIATION SELECTOR-119
-E0167 VARIATION SELECTOR-120
-E0168 VARIATION SELECTOR-121
-E0169 VARIATION SELECTOR-122
-E016A VARIATION SELECTOR-123
-E016B VARIATION SELECTOR-124
-E016C VARIATION SELECTOR-125
-E016D VARIATION SELECTOR-126
-E016E VARIATION SELECTOR-127
-E016F VARIATION SELECTOR-128
-E0170 VARIATION SELECTOR-129
-E0171 VARIATION SELECTOR-130
-E0172 VARIATION SELECTOR-131
-E0173 VARIATION SELECTOR-132
-E0174 VARIATION SELECTOR-133
-E0175 VARIATION SELECTOR-134
-E0176 VARIATION SELECTOR-135
-E0177 VARIATION SELECTOR-136
-E0178 VARIATION SELECTOR-137
-E0179 VARIATION SELECTOR-138
-E017A VARIATION SELECTOR-139
-E017B VARIATION SELECTOR-140
-E017C VARIATION SELECTOR-141
-E017D VARIATION SELECTOR-142
-E017E VARIATION SELECTOR-143
-E017F VARIATION SELECTOR-144
-E0180 VARIATION SELECTOR-145
-E0181 VARIATION SELECTOR-146
-E0182 VARIATION SELECTOR-147
-E0183 VARIATION SELECTOR-148
-E0184 VARIATION SELECTOR-149
-E0185 VARIATION SELECTOR-150
-E0186 VARIATION SELECTOR-151
-E0187 VARIATION SELECTOR-152
-E0188 VARIATION SELECTOR-153
-E0189 VARIATION SELECTOR-154
-E018A VARIATION SELECTOR-155
-E018B VARIATION SELECTOR-156
-E018C VARIATION SELECTOR-157
-E018D VARIATION SELECTOR-158
-E018E VARIATION SELECTOR-159
-E018F VARIATION SELECTOR-160
-E0190 VARIATION SELECTOR-161
-E0191 VARIATION SELECTOR-162
-E0192 VARIATION SELECTOR-163
-E0193 VARIATION SELECTOR-164
-E0194 VARIATION SELECTOR-165
-E0195 VARIATION SELECTOR-166
-E0196 VARIATION SELECTOR-167
-E0197 VARIATION SELECTOR-168
-E0198 VARIATION SELECTOR-169
-E0199 VARIATION SELECTOR-170
-E019A VARIATION SELECTOR-171
-E019B VARIATION SELECTOR-172
-E019C VARIATION SELECTOR-173
-E019D VARIATION SELECTOR-174
-E019E VARIATION SELECTOR-175
-E019F VARIATION SELECTOR-176
-E01A0 VARIATION SELECTOR-177
-E01A1 VARIATION SELECTOR-178
-E01A2 VARIATION SELECTOR-179
-E01A3 VARIATION SELECTOR-180
-E01A4 VARIATION SELECTOR-181
-E01A5 VARIATION SELECTOR-182
-E01A6 VARIATION SELECTOR-183
-E01A7 VARIATION SELECTOR-184
-E01A8 VARIATION SELECTOR-185
-E01A9 VARIATION SELECTOR-186
-E01AA VARIATION SELECTOR-187
-E01AB VARIATION SELECTOR-188
-E01AC VARIATION SELECTOR-189
-E01AD VARIATION SELECTOR-190
-E01AE VARIATION SELECTOR-191
-E01AF VARIATION SELECTOR-192
-E01B0 VARIATION SELECTOR-193
-E01B1 VARIATION SELECTOR-194
-E01B2 VARIATION SELECTOR-195
-E01B3 VARIATION SELECTOR-196
-E01B4 VARIATION SELECTOR-197
-E01B5 VARIATION SELECTOR-198
-E01B6 VARIATION SELECTOR-199
-E01B7 VARIATION SELECTOR-200
-E01B8 VARIATION SELECTOR-201
-E01B9 VARIATION SELECTOR-202
-E01BA VARIATION SELECTOR-203
-E01BB VARIATION SELECTOR-204
-E01BC VARIATION SELECTOR-205
-E01BD VARIATION SELECTOR-206
-E01BE VARIATION SELECTOR-207
-E01BF VARIATION SELECTOR-208
-E01C0 VARIATION SELECTOR-209
-E01C1 VARIATION SELECTOR-210
-E01C2 VARIATION SELECTOR-211
-E01C3 VARIATION SELECTOR-212
-E01C4 VARIATION SELECTOR-213
-E01C5 VARIATION SELECTOR-214
-E01C6 VARIATION SELECTOR-215
-E01C7 VARIATION SELECTOR-216
-E01C8 VARIATION SELECTOR-217
-E01C9 VARIATION SELECTOR-218
-E01CA VARIATION SELECTOR-219
-E01CB VARIATION SELECTOR-220
-E01CC VARIATION SELECTOR-221
-E01CD VARIATION SELECTOR-222
-E01CE VARIATION SELECTOR-223
-E01CF VARIATION SELECTOR-224
-E01D0 VARIATION SELECTOR-225
-E01D1 VARIATION SELECTOR-226
-E01D2 VARIATION SELECTOR-227
-E01D3 VARIATION SELECTOR-228
-E01D4 VARIATION SELECTOR-229
-E01D5 VARIATION SELECTOR-230
-E01D6 VARIATION SELECTOR-231
-E01D7 VARIATION SELECTOR-232
-E01D8 VARIATION SELECTOR-233
-E01D9 VARIATION SELECTOR-234
-E01DA VARIATION SELECTOR-235
-E01DB VARIATION SELECTOR-236
-E01DC VARIATION SELECTOR-237
-E01DD VARIATION SELECTOR-238
-E01DE VARIATION SELECTOR-239
-E01DF VARIATION SELECTOR-240
-E01E0 VARIATION SELECTOR-241
-E01E1 VARIATION SELECTOR-242
-E01E2 VARIATION SELECTOR-243
-E01E3 VARIATION SELECTOR-244
-E01E4 VARIATION SELECTOR-245
-E01E5 VARIATION SELECTOR-246
-E01E6 VARIATION SELECTOR-247
-E01E7 VARIATION SELECTOR-248
-E01E8 VARIATION SELECTOR-249
-E01E9 VARIATION SELECTOR-250
-E01EA VARIATION SELECTOR-251
-E01EB VARIATION SELECTOR-252
-E01EC VARIATION SELECTOR-253
-E01ED VARIATION SELECTOR-254
-E01EE VARIATION SELECTOR-255
-E01EF VARIATION SELECTOR-256
-F0000 FFFFD Plane 15 Private Use
-100000 10FFFD Plane 16 Private Use
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/NamedSequences.txt b/Master/tlpkg/tlperl/lib/unicore/NamedSequences.txt
deleted file mode 100644
index c880c50b911..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/NamedSequences.txt
+++ /dev/null
@@ -1,95 +0,0 @@
-# NamedSequences-4.1.0.txt
-# Date: 2005-214, 13:10 PST [KW]
-#
-# Unicode Character Database
-# Copyright (c) 1991-2005 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see UCD.html
-#
-# Format:
-# Name of Sequence; Code Point Sequence for USI
-#
-# Note: The order of entries in this file is not significant.
-# However, entries are generally in script order corresponding
-# to block order in the Unicode Standard, to make it easier
-# to find entries in the list.
-
-# ================================================
-
-LATIN CAPITAL LETTER A WITH MACRON AND GRAVE;0100 0300
-LATIN SMALL LETTER A WITH MACRON AND GRAVE;0101 0300
-LATIN SMALL LETTER A WITH ACUTE AND OGONEK;00E1 0328
-LATIN CAPITAL LETTER E WITH VERTICAL LINE BELOW;0045 0329
-LATIN SMALL LETTER E WITH VERTICAL LINE BELOW;0065 0329
-LATIN CAPITAL LETTER E WITH VERTICAL LINE BELOW AND GRAVE;00C8 0329
-LATIN SMALL LETTER E WITH VERTICAL LINE BELOW AND GRAVE;00E8 0329
-LATIN CAPITAL LETTER E WITH VERTICAL LINE BELOW AND ACUTE;00C9 0329
-LATIN SMALL LETTER E WITH VERTICAL LINE BELOW AND ACUTE;00E9 0329
-LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND MACRON;00CA 0304
-LATIN SMALL LETTER E WITH CIRCUMFLEX AND MACRON;00EA 0304
-LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND CARON;00CA 030C
-LATIN SMALL LETTER E WITH CIRCUMFLEX AND CARON;00EA 030C
-LATIN CAPITAL LETTER I WITH MACRON AND GRAVE;012A 0300
-LATIN SMALL LETTER I WITH MACRON AND GRAVE;012B 0300
-LATIN SMALL LETTER I WITH DOT ABOVE AND ACUTE;0069 0307 0301
-LATIN SMALL LETTER NG WITH TILDE ABOVE;006E 0360 0067
-LATIN CAPITAL LETTER O WITH VERTICAL LINE BELOW;004F 0329
-LATIN SMALL LETTER O WITH VERTICAL LINE BELOW;006F 0329
-LATIN CAPITAL LETTER O WITH VERTICAL LINE BELOW AND GRAVE;00D2 0329
-LATIN SMALL LETTER O WITH VERTICAL LINE BELOW AND GRAVE;00F2 0329
-LATIN CAPITAL LETTER O WITH VERTICAL LINE BELOW AND ACUTE;00D3 0329
-LATIN SMALL LETTER O WITH VERTICAL LINE BELOW AND ACUTE;00F3 0329
-LATIN CAPITAL LETTER S WITH VERTICAL LINE BELOW;0053 0329
-LATIN SMALL LETTER S WITH VERTICAL LINE BELOW;0073 0329
-LATIN CAPITAL LETTER U WITH MACRON AND GRAVE;016A 0300
-LATIN SMALL LETTER U WITH MACRON AND GRAVE;016B 0300
-GURMUKHI HALF YA;0A2F 0A4D
-GURMUKHI PARI CA;0A4D 0A1A
-GURMUKHI PARI TA;0A4D 0A24
-GURMUKHI PARI NA;0A4D 0A28
-GURMUKHI PARI YA;0A4D 0A2F
-GURMUKHI PARI VA;0A4D 0A35
-GEORGIAN LETTER U-BRJGU;10E3 0302
-KHMER CONSONANT SIGN COENG KA;17D2 1780
-KHMER CONSONANT SIGN COENG KHA;17D2 1781
-KHMER CONSONANT SIGN COENG KO;17D2 1782
-KHMER CONSONANT SIGN COENG KHO;17D2 1783
-KHMER CONSONANT SIGN COENG NGO;17D2 1784
-KHMER CONSONANT SIGN COENG CA;17D2 1785
-KHMER CONSONANT SIGN COENG CHA;17D2 1786
-KHMER CONSONANT SIGN COENG CO;17D2 1787
-KHMER CONSONANT SIGN COENG CHO;17D2 1788
-KHMER CONSONANT SIGN COENG NYO;17D2 1789
-KHMER CONSONANT SIGN COENG DA;17D2 178A
-KHMER CONSONANT SIGN COENG TTHA;17D2 178B
-KHMER CONSONANT SIGN COENG DO;17D2 178C
-KHMER CONSONANT SIGN COENG TTHO;17D2 178D
-KHMER CONSONANT SIGN COENG NA;17D2 178E
-KHMER CONSONANT SIGN COENG TA;17D2 178F
-KHMER CONSONANT SIGN COENG THA;17D2 1790
-KHMER CONSONANT SIGN COENG TO;17D2 1791
-KHMER CONSONANT SIGN COENG THO;17D2 1792
-KHMER CONSONANT SIGN COENG NO;17D2 1793
-KHMER CONSONANT SIGN COENG BA;17D2 1794
-KHMER CONSONANT SIGN COENG PHA;17D2 1795
-KHMER CONSONANT SIGN COENG PO;17D2 1796
-KHMER CONSONANT SIGN COENG PHO;17D2 1797
-KHMER CONSONANT SIGN COENG MO;17D2 1798
-KHMER CONSONANT SIGN COENG YO;17D2 1799
-KHMER CONSONANT SIGN COENG RO;17D2 179A
-KHMER CONSONANT SIGN COENG LO;17D2 179B
-KHMER CONSONANT SIGN COENG VO;17D2 179C
-KHMER CONSONANT SIGN COENG SHA;17D2 179D
-KHMER CONSONANT SIGN COENG SSA;17D2 179E
-KHMER CONSONANT SIGN COENG SA;17D2 179F
-KHMER CONSONANT SIGN COENG HA;17D2 17A0
-KHMER CONSONANT SIGN COENG LA;17D2 17A1
-KHMER VOWEL SIGN COENG QA;17D2 17A2
-KHMER INDEPENDENT VOWEL SIGN COENG QU;17D2 17A7
-KHMER INDEPENDENT VOWEL SIGN COENG RY;17D2 17AB
-KHMER INDEPENDENT VOWEL SIGN COENG RYY;17D2 17AC
-KHMER INDEPENDENT VOWEL SIGN COENG QE;17D2 17AF
-KHMER VOWEL SIGN OM;17BB 17C6
-KHMER VOWEL SIGN AAM;17B6 17C6
-KATAKANA LETTER AINU P;31F7 309A
-MODIFIER LETTER EXTRA-HIGH EXTRA-LOW CONTOUR TONE BAR;02E5 02E9
diff --git a/Master/tlpkg/tlperl/lib/unicore/NamesList.txt b/Master/tlpkg/tlperl/lib/unicore/NamesList.txt
deleted file mode 100644
index 6adb13d920c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/NamesList.txt
+++ /dev/null
@@ -1,27024 +0,0 @@
-@@@ The Unicode Standard 4.1
-@@@+ U41M050317.lst
- Draft Unicode 4.1 names list.
- Major merger of post-Unicode 4.0 additions with Amd1 name file (xia050208.lst).
- Accumulation of fixes post-Unicode 4.0. (5th collection)
- Add alias for 2D53.
- Corrected alias for 2697.
- Subdivided headers for Modifier Tone Letters.
- Add xrefs for 1DC0 and 1DC3.
- Updated annotation for 301C.
- Add xref to 2026 and 22EE for FE19.
- This file is semi-automatically derived from UnicodeData.txt and
- a set of manually created annotations using a script to select
- or suppress information from the data file. The rules used
- for this process are aimed at readability for the human reader,
- at the expense of some details; therefore, this file should not
- be parsed for machine-readable information.
-@+ Copyright (c) 1991-2005 Unicode, Inc.
- For terms of use, see http://www.unicode.org/terms_of_use.html
-@@ 0000 C0 Controls and Basic Latin (Basic Latin) 007F
-@ C0 controls
-@+ Alias names are those for ISO/IEC 6429:1992. Commonly used alternative aliases are also shown.
-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>
- = CHARACTER TABULATION
- = horizontal tabulation (HT), tab
-000A <control>
- = LINE FEED (LF)
- = new line (NL), end of line (EOL)
-000B <control>
- = LINE TABULATION
- = vertical tabulation (VT)
-000C <control>
- = FORM FEED (FF)
-000D <control>
- = CARRIAGE RETURN (CR)
-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>
- = INFORMATION SEPARATOR FOUR
- = file separator (FS)
-001D <control>
- = INFORMATION SEPARATOR THREE
- = group separator (GS)
-001E <control>
- = INFORMATION SEPARATOR TWO
- = record separator (RS)
-001F <control>
- = INFORMATION SEPARATOR ONE
- = unit separator (US)
-@ ASCII punctuation and symbols
-@+ Based on ISO/IEC 646 from here.
-0020 SPACE
- * sometimes considered a control code
- * other space characters: 2000-200A
- x (no-break space - 00A0)
- x (zero width space - 200B)
- x (word joiner - 2060)
- 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
- * 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
- x (music sharp sign - 266F)
-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)
- x (commercial minus sign - 2052)
-0026 AMPERSAND
-0027 APOSTROPHE
- = APOSTROPHE-QUOTE
- = APL quote
- * neutral (vertical) glyph with mixed usage
- * 2019 is preferred for apostrophe
- * 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 (low asterisk - 204E)
- 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)
-@ ASCII digits
-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
-@ ASCII punctuation and symbols
-003A COLON
- x (armenian full stop - 0589)
- x (hebrew punctuation sof pasuq - 05C3)
- x (ratio - 2236)
-003B SEMICOLON
- * this, and not 037E, is the preferred character for 'Greek question mark'
- x (greek question mark - 037E)
- x (arabic semicolon - 061B)
- x (reversed semicolon - 204F)
-003C LESS-THAN SIGN
- x (single left-pointing angle quotation mark - 2039)
- x (left-pointing angle bracket - 2329)
- x (mathematical left angle bracket - 27E8)
- 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 (mathematical right angle bracket - 27E9)
- 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
- = Klammeraffe (common, humorous slang German name)
-@ Uppercase Latin alphabet
-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
- * invented circa 300 BCE by Spurius Carvilius Ruga, who added a stroke to the letter C
-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)
-@ ASCII punctuation and symbols
-005B LEFT SQUARE BRACKET
- = OPENING SQUARE BRACKET
- * other bracket characters: 3008-301B
-005C REVERSE SOLIDUS
- = BACKSLASH
- x (combining reverse solidus overlay - 20E5)
- 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)
-@ Lowercase Latin alphabet
-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)
-@ ASCII punctuation and symbols
-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 (hebrew punctuation paseq - 05C0)
- 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 (swung dash - 2053)
- x (tilde operator - 223C)
- x (fullwidth tilde - FF5E)
-@ Control character
-007F <control>
- = DELETE
-@@ 0080 C1 Controls and Latin-1 Supplement (Latin-1 Supplement) 00FF
-@ C1 controls
-@+ Alias names are those for ISO/IEC 6429:1992.
-0080 <control>
-0081 <control>
-0082 <control>
- = BREAK PERMITTED HERE
-0083 <control>
- = NO BREAK HERE
-0084 <control>
-0085 <control>
- = NEXT LINE (NEL)
-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 FORWARD
-008C <control>
- = PARTIAL LINE BACKWARD
-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
-@ Latin-1 punctuation and symbols
-@+ Based on ISO/IEC 8859-1 (aka Latin-1) from here.
-00A0 NO-BREAK SPACE
- = NBSP
- x (space - 0020)
- x (figure space - 2007)
- x (narrow no-break space - 202F)
- x (word joiner - 2060)
- 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, Italian lira, Turkish lira, etc.
- 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
- = SHY
- = 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 (ano teleia)
- x (greek ano teleia - 0387)
- 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
- # <fraction> 0031 2044 0034
-00BD VULGAR FRACTION ONE HALF
- * bar may be horizontal or slanted
- # <fraction> 0031 2044 0032
-00BE VULGAR FRACTION THREE QUARTERS
- * bar may be horizontal or slanted
- # <fraction> 0033 2044 0034
-00BF INVERTED QUESTION MARK
- = turned question mark
- * Spanish
- x (question mark - 003F)
-@ Letters
-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
-@ Mathematical operator
-00D7 MULTIPLICATION SIGN
- = z notation Cartesian product
-@ Letters
-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
-@ Mathematical operator
-00F7 DIVISION SIGN
- x (division slash - 2215)
- x (divides - 2223)
-@ Letters
-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, Sami
- * an alternate glyph with the stroke through the bowl is used in Americanist orthographies
- 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
- * the form using apostrophe is preferred in typesetting
- : 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)
- * Sami, 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
- * Sami
-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
- * Americanist orthographies use an alternate glyph with the stroke through the bowl
- * 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
- * African
- 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
- = reversed Polish-hook o
- * archaic phonetic for labialized alveolar 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 3093
- * recommended spelling for syllabic n is 006E 0329
- * Lakota (indicates nasalization of vowel)
- x (latin capital letter n with long right leg - 0220)
-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
- * a glyph variant with hook at the right also occurs
-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
- * a glyph variant with hook at the right also occurs
-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 Sami
- * 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)
-@ African letters for clicks
-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 Sami
-01E6 LATIN CAPITAL LETTER G WITH CARON
- : 0047 030C
-01E7 LATIN SMALL LETTER G WITH CARON
- * Skolt Sami
- 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 Sami
- : 006B 030C
-01EA LATIN CAPITAL LETTER O WITH OGONEK
- : 004F 0328
-01EB LATIN SMALL LETTER O WITH OGONEK
- * Sami, 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 Sami
- : 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
- * Macedonian and Serbian transliteration
- : 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
-0220 LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
- * Lakota
- x (latin small letter n with long right leg - 019E)
-0221 LATIN SMALL LETTER D WITH CURL
- * phonetic use in Sinology
-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
-@ Additions for Sinology
-0234 LATIN SMALL LETTER L WITH CURL
-0235 LATIN SMALL LETTER N WITH CURL
-0236 LATIN SMALL LETTER T WITH CURL
-@ Miscellaneous additions
-0237 LATIN SMALL LETTER DOTLESS J
- x (mathematical italic small dotless j - 1D6A5)
-0238 LATIN SMALL LETTER DB DIGRAPH
- * used in Africanist linguistics
-0239 LATIN SMALL LETTER QP DIGRAPH
- * used in Africanist linguistics
-023A LATIN CAPITAL LETTER A WITH STROKE
- * Sencoten
-023B LATIN CAPITAL LETTER C WITH STROKE
- * Sencoten
-023C LATIN SMALL LETTER C WITH STROKE
- * used in Americanist linguistics
-023D LATIN CAPITAL LETTER L WITH BAR
- * Sencoten
-023E LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
- * Sencoten
-023F LATIN SMALL LETTER S WITH SWASH TAIL
-0240 LATIN SMALL LETTER Z WITH SWASH TAIL
-0241 LATIN CAPITAL LETTER GLOTTAL STOP
- * lowercase is 0294
-@@ 0250 IPA Extensions 02AF
-@ IPA extensions
-@+ IPA includes basic Latin letters and a number of Latin or Greek 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
- = long leg turned iota (a misnomer)
- * apical dental vowel
- * used by linguists working on Chinese and other Sino-Tibetan languages
- * 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 by linguists working on Chinese and other Sino-Tibetan languages
- * IPA spelling - 0290 0329
- * in origin 027F plus the retroflex hook 0322, despite its name
-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
- = dram
- * voiced postalveolar fricative
- * mistakenly named yogh in Unicode 1.0
- * uppercase is 01B7
- * Skolt Sami
- 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
- * uppercase is 0241
- 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
-@ Additions for Sinology
-02AE LATIN SMALL LETTER TURNED H WITH FISHHOOK
-02AF LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
-@@ 02B0 Spacing Modifier Letters 02FF
-@ Latin superscript modifier 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 usage 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
- * 2019 is the preferred character for a punctuation apostrophe
- 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)
- x (minus sign - 2212)
-@ 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
-@ Extended Bopomofo tone marks
-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 letter
-02EE MODIFIER LETTER DOUBLE APOSTROPHE
- * Nenets
-@ UPA modifiers
-02EF MODIFIER LETTER LOW DOWN ARROWHEAD
-02F0 MODIFIER LETTER LOW UP ARROWHEAD
-02F1 MODIFIER LETTER LOW LEFT ARROWHEAD
-02F2 MODIFIER LETTER LOW RIGHT ARROWHEAD
-02F3 MODIFIER LETTER LOW RING
-02F4 MODIFIER LETTER MIDDLE GRAVE ACCENT
-02F5 MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT
-02F6 MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT
-02F7 MODIFIER LETTER LOW TILDE
-02F8 MODIFIER LETTER RAISED COLON
-02F9 MODIFIER LETTER BEGIN HIGH TONE
-02FA MODIFIER LETTER END HIGH TONE
-02FB MODIFIER LETTER BEGIN LOW TONE
-02FC MODIFIER LETTER END LOW TONE
-02FD MODIFIER LETTER SHELF
-02FE MODIFIER LETTER OPEN SHELF
-02FF MODIFIER LETTER LOW LEFT ARROW
-@@ 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, Tonos)
- = 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
- * this is not the Greek 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
-032D COMBINING CIRCUMFLEX ACCENT BELOW
- * Americanist: fronted articulation
-032E COMBINING BREVE BELOW
- * Hittite transcription
-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
- x (combining wide bridge above - 20E9)
-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
-@ Grapheme joiner
-034F COMBINING GRAPHEME JOINER
- = CGJ
- * has no visible glyph
- * indicates that adjoining characters are to be treated as a graphemic unit
-@ Additions for the Uralic Phonetic Alphabet
-0350 COMBINING RIGHT ARROWHEAD ABOVE
-0351 COMBINING LEFT HALF RING ABOVE
-0352 COMBINING FERMATA
-0353 COMBINING X BELOW
-0354 COMBINING LEFT ARROWHEAD BELOW
-0355 COMBINING RIGHT ARROWHEAD BELOW
-0356 COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW
-0357 COMBINING RIGHT HALF RING ABOVE
-@ Miscellaneous additions
-0358 COMBINING DOT ABOVE RIGHT
- * Latin transliterations of the Southern Min dialects of Chinese
-0359 COMBINING ASTERISK BELOW
-035A COMBINING DOUBLE RING BELOW
- * Kharoshthi transliteration
-035B COMBINING ZIGZAG ABOVE
- * Latin abbreviation, Lithuanian phonetics and mediaevalist transcriptions
-@ Double diacritics
-035C COMBINING DOUBLE BREVE BELOW
- = ligature tie below, papyrological hyphen
- * a common glyph alternate connects the horizontal midpoints of the characters
- x (combining double breve - 035D)
- x (combining double inverted breve - 0361)
-035D COMBINING DOUBLE BREVE
-035E COMBINING DOUBLE MACRON
-035F COMBINING DOUBLE MACRON BELOW
-0360 COMBINING DOUBLE TILDE
-0361 COMBINING DOUBLE INVERTED BREVE
- = ligature tie
-0362 COMBINING DOUBLE RIGHTWARDS ARROW BELOW
- * IPA: sliding articulation
-@ Medieval superscript letter diacritics
-@+ These are letter diacritics written directly above other letters. They appear primarily in medieval Germanic manuscripts, but saw some usage as late as the 19th century in some languages.
-0363 COMBINING LATIN SMALL LETTER A
-0364 COMBINING LATIN SMALL LETTER E
-0365 COMBINING LATIN SMALL LETTER I
-0366 COMBINING LATIN SMALL LETTER O
-0367 COMBINING LATIN SMALL LETTER U
-0368 COMBINING LATIN SMALL LETTER C
-0369 COMBINING LATIN SMALL LETTER D
-036A COMBINING LATIN SMALL LETTER H
-036B COMBINING LATIN SMALL LETTER M
-036C COMBINING LATIN SMALL LETTER R
-036D COMBINING LATIN SMALL LETTER T
-036E COMBINING LATIN SMALL LETTER V
-036F COMBINING LATIN SMALL LETTER X
-@@ 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
- * 003B is the preferred character
- 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 is the preferred character
- : 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
- = stigma (the Modern Greek name for this letterform)
- * not to be confused with the actual stigma letter
- x (greek small letter stigma - 03DB)
-03C3 GREEK SMALL LETTER SIGMA
- * used symbolically with a numeric value 200
-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)
- x (greek phi symbol - 03D5)
- * the ordinary Greek letter, showing considerable glyph variation
- * in mathematical contexts, the loopy glyph is preferred, to contrast with 03D5
-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 a 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
- * used as a technical symbol, with a stroked glyph
- * maps to "phi1" symbol entities
- # 03C6 greek small letter phi
-03D6 GREEK PI SYMBOL
- = GREEK SMALL LETTER OMEGA PI
- * used as a technical symbol
- * a variant of pi, looking like omega
- # 03C0 greek small letter pi
-03D7 GREEK KAI SYMBOL
- * used as an ampersand
- x (coptic symbol kai - 2CE4)
-@ Archaic letters
-03D8 GREEK LETTER ARCHAIC KOPPA *
-03D9 GREEK SMALL LETTER ARCHAIC KOPPA *
- * the Q-shaped archaic koppas are the ordinary alphabetic letters and can also be used as symbols with a numeric value of 90 in classical and pre-classical texts
-03DA GREEK LETTER STIGMA
- * apparently in origin a cursive form of digamma
- * the name "stigma" originally applied to a medieval sigma-tau ligature, whose shape was confusably similar to the cursive digamma
- * used as a symbol with a numeric value of 6
-03DB GREEK SMALL LETTER STIGMA
- x (greek small letter final sigma - 03C2)
-03DC GREEK LETTER DIGAMMA
-03DD GREEK SMALL LETTER DIGAMMA
- * used as a symbol with a numeric value of 6
-03DE GREEK LETTER KOPPA
-03DF GREEK SMALL LETTER KOPPA
- * used in modern Greek as a symbol with a numeric value of 90, as in the dating of legal documentation
-03E0 GREEK LETTER SAMPI
-03E1 GREEK SMALL LETTER SAMPI
- * used as a symbol with a numeric value of 900
-@ Coptic letters derived from Demotic
-@+ For other Coptic letters see the Coptic Block.
-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
-@ Variant letterforms
-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
-@ Additional letter
-03F3 GREEK LETTER YOT
-@ Variant letterforms and symbols
-03F4 GREEK CAPITAL THETA SYMBOL
- x (cyrillic capital letter fita - 0472)
- # 0398 greek capital letter theta
-03F5 GREEK LUNATE EPSILON SYMBOL
- = straight epsilon
- x (small element of - 220A)
- # 03B5 greek small letter epsilon
-03F6 GREEK REVERSED LUNATE EPSILON SYMBOL
- = reversed straight epsilon
- x (small contains as member - 220D)
-@ Additional archaic letters for Bactrian
-03F7 GREEK CAPITAL LETTER SHO
-03F8 GREEK SMALL LETTER SHO
-@ Variant letterform
-03F9 GREEK CAPITAL LUNATE SIGMA SYMBOL
- # 03A3 greek capital letter sigma
-@ Archaic letters
-03FA GREEK CAPITAL LETTER SAN
-03FB GREEK SMALL LETTER SAN
-@ Symbol
-03FC GREEK RHO WITH STROKE SYMBOL
- * used with abbreviations containing 03C1
-@ Editorial symbols
-03FD GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL
- = antisigma
-03FE GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL
- = sigma periestigmenon
-03FF GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL
- = antisigma periestigmenon
-@@ 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 small letter byelorussian-ukrainian i - 0456)
- 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
-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
-048A CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
-048B CYRILLIC SMALL LETTER SHORT I WITH TAIL
- * Kildin Sami
-048C CYRILLIC CAPITAL LETTER SEMISOFT SIGN
-048D CYRILLIC SMALL LETTER SEMISOFT SIGN
- * Kildin Sami
-048E CYRILLIC CAPITAL LETTER ER WITH TICK
-048F CYRILLIC SMALL LETTER ER WITH TICK
- * Kildin Sami
-0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-0491 CYRILLIC SMALL LETTER GHE WITH UPTURN
- * 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
-04C5 CYRILLIC CAPITAL LETTER EL WITH TAIL
-04C6 CYRILLIC SMALL LETTER EL WITH TAIL
- * Kildin Sami
-04C7 CYRILLIC CAPITAL LETTER EN WITH HOOK
-04C8 CYRILLIC SMALL LETTER EN WITH HOOK
- * Khanty, Chukchi, Nenets
-04C9 CYRILLIC CAPITAL LETTER EN WITH TAIL
-04CA CYRILLIC SMALL LETTER EN WITH TAIL
- * Kildin Sami
-04CB CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
-04CC CYRILLIC SMALL LETTER KHAKASSIAN CHE
-04CD CYRILLIC CAPITAL LETTER EM WITH TAIL
-04CE CYRILLIC SMALL LETTER EM WITH TAIL
- * Kildin Sami
-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 Sami
- : 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
-04F6 CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
-04F7 CYRILLIC SMALL LETTER GHE WITH DESCENDER
- * Yupik
-04F8 CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
- : 042B 0308
-04F9 CYRILLIC SMALL LETTER YERU WITH DIAERESIS
- : 044B 0308
-@@ 0500 Cyrillic Supplement 052F
-@ Komi letters
-0500 CYRILLIC CAPITAL LETTER KOMI DE
-0501 CYRILLIC SMALL LETTER KOMI DE
-0502 CYRILLIC CAPITAL LETTER KOMI DJE
-0503 CYRILLIC SMALL LETTER KOMI DJE
-0504 CYRILLIC CAPITAL LETTER KOMI ZJE
-0505 CYRILLIC SMALL LETTER KOMI ZJE
-0506 CYRILLIC CAPITAL LETTER KOMI DZJE
-0507 CYRILLIC SMALL LETTER KOMI DZJE
-0508 CYRILLIC CAPITAL LETTER KOMI LJE
-0509 CYRILLIC SMALL LETTER KOMI LJE
-050A CYRILLIC CAPITAL LETTER KOMI NJE
-050B CYRILLIC SMALL LETTER KOMI NJE
-050C CYRILLIC CAPITAL LETTER KOMI SJE
-050D CYRILLIC SMALL LETTER KOMI SJE
-050E CYRILLIC CAPITAL LETTER KOMI TJE
-050F CYRILLIC SMALL LETTER KOMI TJE
-@@ 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
- = atnah
-0592 HEBREW ACCENT SEGOL
- = segolta
-0593 HEBREW ACCENT SHALSHELET
-0594 HEBREW ACCENT ZAQEF QATAN
-0595 HEBREW ACCENT ZAQEF GADOL
-0596 HEBREW ACCENT TIPEHA *
- = tarha, me'ayla ~ mayla
-0597 HEBREW ACCENT REVIA
-0598 HEBREW ACCENT ZARQA *
- = tsinorit, zinorit; tsinor, zinor
- * This character is to be used when Zarqa or Tsinor are placed above, and also for Tsinorit.
- x (hebrew accent zinor - 05AE)
-0599 HEBREW ACCENT PASHTA
-059A HEBREW ACCENT YETIV
-059B HEBREW ACCENT TEVIR
-059C HEBREW ACCENT GERESH
- = teres
-059D HEBREW ACCENT GERESH MUQDAM
-059E HEBREW ACCENT GERSHAYIM
-059F HEBREW ACCENT QARNEY PARA
- = pazer gadol
-05A0 HEBREW ACCENT TELISHA GEDOLA
-05A1 HEBREW ACCENT PAZER
- = pazer qatan
-05A2 HEBREW ACCENT ATNAH HAFUKH
- x (hebrew accent yerah ben yomo - 05AA)
-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
- x (hebrew accent atnah hafukh - 05A2)
-05AB HEBREW ACCENT OLE
-05AC HEBREW ACCENT ILUY
-05AD HEBREW ACCENT DEHI
-05AE HEBREW ACCENT ZINOR
- = tsinor; zarqa
- * This character is to be used when Zarqa or Tsinor are placed above left.
- x (hebrew accent zarqa - 0598)
-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
- x (hebrew point qamats qatan - 05C7)
-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
- x (hebrew point judeo-spanish varika - FB1E)
-05C0 HEBREW PUNCTUATION PASEQ *
- = legarmeh
- * may be treated as spacing punctuation, not as a point
- x (vertical line - 007C)
-05C1 HEBREW POINT SHIN DOT
-05C2 HEBREW POINT SIN DOT
-05C3 HEBREW PUNCTUATION SOF PASUQ *
- * may be used as a Hebrew punctuation colon
- x (colon - 003A)
-@ Puncta extraordinaria
-05C4 HEBREW MARK UPPER DOT
-05C5 HEBREW MARK LOWER DOT
- * punctum extraordinarium (Psalms 27:13)
- x (hebrew point hiriq - 05B4)
-@ Points and punctuation
-05C6 HEBREW PUNCTUATION NUN HAFUKHA
- * does not historically derive from the letter nun
- x (hebrew letter nun - 05E0)
-05C7 HEBREW POINT QAMATS QATAN
- x (hebrew point qamats - 05B8)
-@ 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
-@ Subtending marks
-0600 ARABIC NUMBER SIGN
-0601 ARABIC SIGN SANAH
-0602 ARABIC FOOTNOTE MARKER
-0603 ARABIC SIGN SAFHA
-@ Currency sign
-060B AFGHANI SIGN
-@ Punctuation
-060C ARABIC COMMA
- * also used with Thaana and Syriac in modern text
- x (comma - 002C)
-060D ARABIC DATE SEPARATOR
-@ Poetic marks
-060E ARABIC POETIC VERSE SIGN
-060F ARABIC SIGN MISRA
-@ Honorifics
-0610 ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM
- * represents sallallahu alayhe wasallam "may God's peace and blessings be upon him"
-0611 ARABIC SIGN ALAYHE ASSALLAM
- * represents alayhe assalam "upon him be peace"
-0612 ARABIC SIGN RAHMATULLAH ALAYHE
- * represents rahmatullah alayhe "may God have mercy upon him"
-0613 ARABIC SIGN RADI ALLAHOU ANHU
- * represents radi allahu 'anhu "may God be pleased with him"
-0614 ARABIC SIGN TAKHALLUS
- * sign placed over the name or nom-de-plume of a poet, or in some writings used to mark all proper names
-@ Koranic annotation sign
-0615 ARABIC SMALL HIGH TAH
- * marks a recommended pause position in some Korans published in Iran and Pakistan
- * should not be confused with the small TAH sign used as a diacritic for some letters such as 0679
-@ Punctuation
-061B ARABIC SEMICOLON
- * also used with Thaana and Syriac in modern text
- x (semicolon - 003B)
-061E ARABIC TRIPLE DOT PUNCTUATION MARK
-061F ARABIC QUESTION MARK
- * also used with Thaana and Syriac in modern text
- x (question mark - 003F)
-@ Based on ISO 8859-6
-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
- * marks absence of a vowel after the base consonant
- * used in some Korans to mark a long vowel as ignored
- x (arabic small high dotless head of khah - 06E1)
-@ Combining maddah and hamza
-0653 ARABIC MADDAH ABOVE
-0654 ARABIC HAMZA ABOVE
-0655 ARABIC HAMZA BELOW
-@ Other combining marks
-0656 ARABIC SUBSCRIPT ALEF
-0657 ARABIC INVERTED DAMMA
-0658 ARABIC MARK NOON GHUNNA
- * Kashmiri and Baluchi
- * indicates nasalization in Urdu
-0659 ARABIC ZWARAKAY
- * Pashto
-065A ARABIC VOWEL SIGN SMALL V ABOVE
- * African languages
-065B ARABIC VOWEL SIGN INVERTED SMALL V ABOVE
- * African languages
-065C ARABIC VOWEL SIGN DOT BELOW
- * African languages
-065D ARABIC REVERSED DAMMA
- * Ormuri, African languages
-065E ARABIC FATHA WITH TWO DOTS
- * Kalami
-@ Arabic-Indic digits
-@+ These digits are used with Arabic proper; for languages of Iran, Pakistan, and India, see the Eastern Arabic-Indic digits at 06F0..06F9.
-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
- x (apostrophe - 0027)
- x (right single quotation mark - 2019)
-066D ARABIC FIVE POINTED STAR
- x (asterisk - 002A)
-@ Archaic letters
-066E ARABIC LETTER DOTLESS BEH
-066F ARABIC LETTER DOTLESS QAF
-@ Point
-0670 ARABIC LETTER SUPERSCRIPT ALEF
- * actually a vowel sign, despite the name
-@ Extended Arabic letters
-0671 ARABIC LETTER ALEF WASLA
- * Koranic 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 letter "zhe"
-0682 ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE
- * not used in modern 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
- * older shape for DUL, now obsolete in Sindhi
-068F ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS
- * Sindhi
- * current shape used for DUL
-0690 ARABIC LETTER DAL WITH FOUR DOTS ABOVE
- * old Urdu, not in current use
-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
-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
- * Middle Eastern Arabic for foreign words
- * Kurdish
-06A5 ARABIC LETTER FEH WITH THREE DOTS BELOW
- * North African 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
- * may appear like an Arabic KAF (0643) with a ring below the base
-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
- * not used in Sindhi
-06B3 ARABIC LETTER GUEH
- * Sindhi
-06B4 ARABIC LETTER GAF WITH THREE DOTS ABOVE
- * not used in 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
- * Urdu
- * actually a ligature, not an independent letter
- : 06D5 0654
-06C1 ARABIC LETTER HEH GOAL
- * Urdu
-06C2 ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
- * Urdu
- * actually a ligature, 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, ...
- * initial and medial forms of this letter have dots
- x (arabic letter alef maksura - 0649)
- x (arabic letter yeh - 064A)
-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, 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
- = Arabic jazm
- * used in some Korans to mark absence of a vowel
- x (arabic sukun - 0652)
-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
-@ Extended Arabic letters for Parkari
-06EE ARABIC LETTER DAL WITH INVERTED V
-06EF ARABIC LETTER REH WITH INVERTED V
-@ Eastern Arabic-Indic digits
-@+ These digits are used with Arabic-script languages of Iran, Pakistan, and India (Persian, Sindhi, Urdu, etc.). For details of variations in preferred glyphs, see the block description for the Arabic script.
-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
- * Persian has a different glyph than Sindhi and Urdu
-06F5 EXTENDED ARABIC-INDIC DIGIT FIVE
- * Persian, Sindhi, and Urdu share glyph different from Arabic
-06F6 EXTENDED ARABIC-INDIC DIGIT SIX
- * Persian, Sindhi, and Urdu have glyphs different from Arabic
-06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN
- * Urdu and Sindhi have glyphs 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
-@ Extended Arabic letter for Parkari
-06FF ARABIC LETTER HEH WITH INVERTED V
-@@ 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
- = SAM
- * 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
-@ Persian letters
-072D SYRIAC LETTER PERSIAN BHETH
-072E SYRIAC LETTER PERSIAN GHAMAL
-072F SYRIAC LETTER PERSIAN DHALATH
-@ 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
-@ Sogdian letters
-074D SYRIAC LETTER SOGDIAN ZHAIN
-074E SYRIAC LETTER SOGDIAN KHAPH
-074F SYRIAC LETTER SOGDIAN FE
-@@ 0750 Arabic Supplement 077F
-@ Extended Arabic letters
-@+ These are primarily used in Arabic-script orthographies of African languages.
-0750 ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW
-0751 ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE
-0752 ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW
-0753 ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE
-0754 ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE
-0755 ARABIC LETTER BEH WITH INVERTED SMALL V BELOW
-0756 ARABIC LETTER BEH WITH SMALL V
-0757 ARABIC LETTER HAH WITH TWO DOTS ABOVE
-0758 ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW
-0759 ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH
- * Saraiki
-075A ARABIC LETTER DAL WITH INVERTED SMALL V BELOW
-075B ARABIC LETTER REH WITH STROKE
-075C ARABIC LETTER SEEN WITH FOUR DOTS ABOVE
- * Shina
-075D ARABIC LETTER AIN WITH TWO DOTS ABOVE
-075E ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE
-075F ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE
-0760 ARABIC LETTER FEH WITH TWO DOTS BELOW
-0761 ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW
-0762 ARABIC LETTER KEHEH WITH DOT ABOVE
- * old Malay, preferred to 06AC
- x (arabic letter kaf with dot above - 06AC)
-0763 ARABIC LETTER KEHEH WITH THREE DOTS ABOVE
- * Moroccan Arabic, Amazigh
- x (arabic letter ng - 06AD)
-0764 ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW
-0765 ARABIC LETTER MEEM WITH DOT ABOVE
-0766 ARABIC LETTER MEEM WITH DOT BELOW
- * Maba
-0767 ARABIC LETTER NOON WITH TWO DOTS BELOW
-0768 ARABIC LETTER NOON WITH SMALL TAH
- * Saraiki, Pathwari
-0769 ARABIC LETTER NOON WITH SMALL V
- * Gojri
-076A ARABIC LETTER LAM WITH BAR
-076B ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE
- * Torwali, Ormuri
-076C ARABIC LETTER REH WITH HAMZA ABOVE
- * Ormuri
-076D ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE
- * Kalami, Ormuri
-@@ 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
-@ Consonant for Addu dialect
-07B1 THAANA LETTER NAA
-@@ 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
-0904 DEVANAGARI LETTER SHORT A
-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
-@ Dependent vowel signs
-093E DEVANAGARI VOWEL SIGN AA
-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 (the preferred Hindi name)
- * suppresses inherent vowel
-0950 DEVANAGARI OM
-0951 DEVANAGARI STRESS SIGN UDATTA
- * mostly used for Rigvedic svarita, with rare use for Yajurvedic 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
- = purna viram
- * phrase separator
-0965 DEVANAGARI DOUBLE DANDA
- = deergh viram
-@ 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
-@ Glottal stop
-097D DEVANAGARI LETTER GLOTTAL STOP
- * used for writing Limbu in Devanagari
- * a glyph variant has the connecting top bar
-@@ 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
-09BD BENGALI SIGN AVAGRAHA
-@ 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
-@ Two-part dependent vowel signs
-@+ These two-part dependent vowel signs have glyph pieces which stand on both sides of the consonant. These vowel signs follow the consonant in logical order, and should be handled as a unit for most processing.
-09CB BENGALI VOWEL SIGN O
- : 09C7 09BE
-09CC BENGALI VOWEL SIGN AU
- : 09C7 09D7
-@ Sign
-09CD BENGALI SIGN VIRAMA
- = hasant (Bengali term for halant)
-@ Additional consonant
-09CE BENGALI LETTER KHANDA TA
-@ Sign
-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
- * not in current usage
-09F5 BENGALI CURRENCY NUMERATOR TWO
- * not in current usage
-09F6 BENGALI CURRENCY NUMERATOR THREE
- * not in current usage
-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
-0A01 GURMUKHI SIGN ADAK BINDI
-0A02 GURMUKHI SIGN BINDI
-0A03 GURMUKHI SIGN VISARGA
-@ 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
-@ Various signs
-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
-0A8C GUJARATI LETTER VOCALIC L
- * used with Sanskrit text
-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 addition
-0AE0 GUJARATI LETTER VOCALIC RR
-@ Additions for use with Sanskrit text
-0AE1 GUJARATI LETTER VOCALIC LL
-0AE2 GUJARATI VOWEL SIGN VOCALIC L
-0AE3 GUJARATI VOWEL SIGN VOCALIC LL
-@ 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
-@ Currency sign
-0AF1 GUJARATI RUPEE SIGN
-@@ 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
- x (oriya letter va - 0B35)
-0B2D ORIYA LETTER BHA
-0B2E ORIYA LETTER MA
-0B2F ORIYA LETTER YA
- = ja
-0B30 ORIYA LETTER RA
-0B32 ORIYA LETTER LA
-0B33 ORIYA LETTER LLA
-0B35 ORIYA LETTER VA
- 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
-@ Two-part dependent vowel signs
-@+ These two-part dependent vowel signs have glyph pieces which stand on both sides of the consonant. These vowel signs follow the consonant in logical order, and should be handled as a unit for most processing.
-0B4B ORIYA VOWEL SIGN O
- : 0B47 0B3E
-0B4C ORIYA VOWEL SIGN AU
- : 0B47 0B57
-@ Various signs
-0B4D ORIYA SIGN VIRAMA
-0B56 ORIYA AI LENGTH MARK
-0B57 ORIYA AU LENGTH MARK
-@ Additional consonants
-0B5C ORIYA LETTER RRA
- = dda
- : 0B21 0B3C
-0B5D ORIYA LETTER RHA
- = ddha
- : 0B22 0B3C
-0B5F ORIYA LETTER YYA
- = ya
-@ 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 additions
-0B70 ORIYA ISSHAR
-0B71 ORIYA LETTER WA
- x (oriya letter o - 0B13)
- x (oriya letter va - 0B35)
-@@ 0B80 Tamil 0BFF
-@ Based on ISCII 1988
-@ Various signs
-0B82 TAMIL SIGN ANUSVARA
- * not used in Tamil
-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
-0BB6 TAMIL LETTER SHA
-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
-@ Two-part dependent vowel signs
-@+ These two-part dependent vowel signs have glyph pieces which stand on both sides of the consonant. These vowel signs follow the consonant in logical order, and should be handled as a unit for most processing.
-0BCA TAMIL VOWEL SIGN O
- : 0BC6 0BBE
-0BCB TAMIL VOWEL SIGN OO
- : 0BC7 0BBE
-0BCC TAMIL VOWEL SIGN AU
- : 0BC6 0BD7
-@ Various signs
-0BCD TAMIL SIGN VIRAMA
-0BD7 TAMIL AU LENGTH MARK
-@ Digits
-0BE6 TAMIL DIGIT ZERO
-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 numerics
-0BF0 TAMIL NUMBER TEN
-0BF1 TAMIL NUMBER ONE HUNDRED
-0BF2 TAMIL NUMBER ONE THOUSAND
-@ Tamil symbols
-0BF3 TAMIL DAY SIGN (Naal)
-0BF4 TAMIL MONTH SIGN (Maatham)
-0BF5 TAMIL YEAR SIGN (Varudam)
-0BF6 TAMIL DEBIT SIGN (Patru)
-0BF7 TAMIL CREDIT SIGN (Varavu)
-0BF8 TAMIL AS ABOVE SIGN (Merpadi)
-@ Currency symbol
-0BF9 TAMIL RUPEE SIGN (Rupai)
-@ Tamil symbol
-0BFA TAMIL NUMBER SIGN (Enn)
-@@ 0C00 Telugu 0C7F
-@ Based on ISCII 1988
-@ Various signs
-0C01 TELUGU SIGN CANDRABINDU
-0C02 TELUGU SIGN ANUSVARA
- = sunna
-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
- = halant (the preferred name)
-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
-@ Various signs
-0CBC KANNADA SIGN NUKTA
-0CBD KANNADA SIGN AVAGRAHA
-@ 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
- * preferred name is halant
-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
-@+ Alternate romanizations are shown as aliases for some letters to clarify their identity.
-0D15 MALAYALAM LETTER KA
-0D16 MALAYALAM LETTER KHA
-0D17 MALAYALAM LETTER GA
-0D18 MALAYALAM LETTER GHA
-0D19 MALAYALAM LETTER NGA
-0D1A MALAYALAM LETTER CA
- = cha
-0D1B MALAYALAM LETTER CHA
- = chha
-0D1C MALAYALAM LETTER JA
-0D1D MALAYALAM LETTER JHA
-0D1E MALAYALAM LETTER NYA
- = nha
-0D1F MALAYALAM LETTER TTA
- = ta
-0D20 MALAYALAM LETTER TTHA
- = tta
-0D21 MALAYALAM LETTER DDA
- = hard da
-0D22 MALAYALAM LETTER DDHA
- = hard dda
-0D23 MALAYALAM LETTER NNA
- = hard na
-0D24 MALAYALAM LETTER TA
- = tha
-0D25 MALAYALAM LETTER THA
- = ttha
-0D26 MALAYALAM LETTER DA
- = soft da
-0D27 MALAYALAM LETTER DHA
- = soft dda
-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
- = zha
-0D35 MALAYALAM LETTER VA
-0D36 MALAYALAM LETTER SHA
- = soft sha
-0D37 MALAYALAM LETTER SSA
- = sha
-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
-@ Two-part dependent vowel signs
-@+ These two-part dependent vowel signs have glyph pieces which stand on both sides of the consonant. These vowel signs follow the consonant in logical order, and should be handled as a unit for most processing.
-0D4A MALAYALAM VOWEL SIGN O
- : 0D46 0D3E
-0D4B MALAYALAM VOWEL SIGN OO
- : 0D47 0D3E
-0D4C MALAYALAM VOWEL SIGN AU
- : 0D46 0D57
-@ Various signs
-0D4D MALAYALAM SIGN VIRAMA
- = chandrakkala (the preferred name)
- = vowel half-u
-0D57 MALAYALAM AU LENGTH MARK
- * only a representation of the right half of 0D4C
-@ 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
-@ Two-part dependent vowel signs
-@+ These two-part dependent vowel signs have glyph pieces which stand on both sides of the consonant. These vowel signs follow the consonant in logical order, and should be handled as a unit for most processing.
-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
-@ Dependent vowel sign
-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
- = ho nok huk
-@ Sign
-0E2F THAI CHARACTER PAIYANNOI (paiyan noi)
- = paiyan noi
- * ellipsis, abbreviation
-@ Vowels
-0E30 THAI CHARACTER SARA A
-0E31 THAI CHARACTER MAI HAN-AKAT
-0E32 THAI CHARACTER SARA AA
- x (thai character lakkhangyao - 0E45)
-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)
- = sara ai mai muan
-0E44 THAI CHARACTER SARA AI MAIMALAI (sara ai mai malai)
- = sara ai mai malai
-0E45 THAI CHARACTER LAKKHANGYAO (lakkhang yao)
- = lakkhang yao
- * special vowel length indication used with 0E24 or 0E26
- x (thai character sara aa - 0E32)
-@ Sign
-0E46 THAI CHARACTER MAIYAMOK (mai yamok)
- = mai yamok
- * repetition
-@ Vowel
-0E47 THAI CHARACTER MAITAIKHU (mai taikhu)
- = 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
- * transliteration of Sanskrit avagraha
- x (devanagari sign avagraha - 093D)
-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 (dena sum)
-@ Marks
-0FD0 TIBETAN MARK BSKA- SHOG GI MGO RGYAN (ka shog gi go gyen)
- * used in Bhutan
-0FD1 TIBETAN MARK MNYAM YIG GI MGO RGYAN (nyam yig gi go gyen)
- * used in Bhutan
-@@ 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
- * also represents the glottal stop as a consonant
-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
-@ Capital letters (Khutsuri)
-@+ This is the uppercase of the old ecclesiastical alphabet. The style shown in the code charts is known as Asomtavruli. See the Georgian Supplement block for lowercase Nuskhuri.
-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
-@ Additional letters for Mingrelian and Svan
-10F7 GEORGIAN LETTER YN
-10F8 GEORGIAN LETTER ELIFI
-@ Additional letters
-10F9 GEORGIAN LETTER TURNED GAN
-10FA GEORGIAN LETTER AIN
-@ Punctuation
-10FB GEORGIAN PARAGRAPH SEPARATOR
-@ Modifier letter
-10FC MODIFIER LETTER GEORGIAN NAR
- # <super> 10DC
-@@ 1100 Hangul Jamo 11FF
-@+ The aliases in this block represent the Jamo short names.
-@ Korean combining alphabet
-@ Initial consonants
-1100 HANGUL CHOSEONG KIYEOK (g) *
- = G
-1101 HANGUL CHOSEONG SSANGKIYEOK (gg) *
- = GG
-1102 HANGUL CHOSEONG NIEUN (n) *
- = N
-1103 HANGUL CHOSEONG TIKEUT (d) *
- = D
-1104 HANGUL CHOSEONG SSANGTIKEUT (dd) *
- = DD
-1105 HANGUL CHOSEONG RIEUL (r) *
- = R
-1106 HANGUL CHOSEONG MIEUM (m) *
- = M
-1107 HANGUL CHOSEONG PIEUP (b) *
- = B
-1108 HANGUL CHOSEONG SSANGPIEUP (bb) *
- = BB
-1109 HANGUL CHOSEONG SIOS (s) *
- = S
-110A HANGUL CHOSEONG SSANGSIOS (ss) *
- = SS
-110B HANGUL CHOSEONG IEUNG
-110C HANGUL CHOSEONG CIEUC (j) *
- = J
-110D HANGUL CHOSEONG SSANGCIEUC (jj) *
- = JJ
-110E HANGUL CHOSEONG CHIEUCH (c) *
- = C
-110F HANGUL CHOSEONG KHIEUKH (k) *
- = K
-1110 HANGUL CHOSEONG THIEUTH (t) *
- = T
-1111 HANGUL CHOSEONG PHIEUPH (p) *
- = P
-1112 HANGUL CHOSEONG HIEUH (h) *
- = 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
- = A
-1162 HANGUL JUNGSEONG AE
- = AE
-1163 HANGUL JUNGSEONG YA
- = YA
-1164 HANGUL JUNGSEONG YAE
- = YAE
-1165 HANGUL JUNGSEONG EO
- = EO
-1166 HANGUL JUNGSEONG E
- = E
-1167 HANGUL JUNGSEONG YEO
- = YEO
-1168 HANGUL JUNGSEONG YE
- = YE
-1169 HANGUL JUNGSEONG O
- = O
-116A HANGUL JUNGSEONG WA
- = WA
-116B HANGUL JUNGSEONG WAE
- = WAE
-116C HANGUL JUNGSEONG OE
- = OE
-116D HANGUL JUNGSEONG YO
- = YO
-116E HANGUL JUNGSEONG U
- = U
-116F HANGUL JUNGSEONG WEO
- = WEO
-1170 HANGUL JUNGSEONG WE
- = WE
-1171 HANGUL JUNGSEONG WI
- = WI
-1172 HANGUL JUNGSEONG YU
- = YU
-1173 HANGUL JUNGSEONG EU
- = EU
-1174 HANGUL JUNGSEONG YI
- = YI
-1175 HANGUL JUNGSEONG I
- = 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) *
- = G
-11A9 HANGUL JONGSEONG SSANGKIYEOK (gg) *
- = GG
-11AA HANGUL JONGSEONG KIYEOK-SIOS (gs) *
- = GS
-11AB HANGUL JONGSEONG NIEUN (n) *
- = N
-11AC HANGUL JONGSEONG NIEUN-CIEUC (nj) *
- = NJ
-11AD HANGUL JONGSEONG NIEUN-HIEUH (nh) *
- = NH
-11AE HANGUL JONGSEONG TIKEUT (d) *
- = D
-11AF HANGUL JONGSEONG RIEUL (l) *
- = L
-11B0 HANGUL JONGSEONG RIEUL-KIYEOK (lg) *
- = LG
-11B1 HANGUL JONGSEONG RIEUL-MIEUM (lm) *
- = LM
-11B2 HANGUL JONGSEONG RIEUL-PIEUP (lb) *
- = LB
-11B3 HANGUL JONGSEONG RIEUL-SIOS (ls) *
- = LS
-11B4 HANGUL JONGSEONG RIEUL-THIEUTH (lt) *
- = LT
-11B5 HANGUL JONGSEONG RIEUL-PHIEUPH (lp) *
- = LP
-11B6 HANGUL JONGSEONG RIEUL-HIEUH (lh) *
- = LH
-11B7 HANGUL JONGSEONG MIEUM (m) *
- = M
-11B8 HANGUL JONGSEONG PIEUP (b) *
- = B
-11B9 HANGUL JONGSEONG PIEUP-SIOS (bs) *
- = BS
-11BA HANGUL JONGSEONG SIOS (s) *
- = S
-11BB HANGUL JONGSEONG SSANGSIOS (ss) *
- = SS
-11BC HANGUL JONGSEONG IEUNG (ng) *
- = NG
-11BD HANGUL JONGSEONG CIEUC (j) *
- = J
-11BE HANGUL JONGSEONG CHIEUCH (c) *
- = C
-11BF HANGUL JONGSEONG KHIEUKH (k) *
- = K
-11C0 HANGUL JONGSEONG THIEUTH (t) *
- = T
-11C1 HANGUL JONGSEONG PHIEUPH (p) *
- = P
-11C2 HANGUL JONGSEONG HIEUH (h) *
- = 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
-1207 ETHIOPIC SYLLABLE HOA
-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
-1247 ETHIOPIC SYLLABLE QOA
-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
-1287 ETHIOPIC SYLLABLE XOA
-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
-12AF ETHIOPIC SYLLABLE KOA
-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
-12CF ETHIOPIC SYLLABLE WOA
-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
-12EF ETHIOPIC SYLLABLE YOA
-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
-130F ETHIOPIC SYLLABLE GOA
-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
-131F ETHIOPIC SYLLABLE GGWAA
-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
-1347 ETHIOPIC SYLLABLE TZOA
-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
-@ Combining mark
-135F ETHIOPIC COMBINING GEMINATION MARK
-@ Punctuation
-1360 ETHIOPIC SECTION MARK
-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
-@@ 1380 Ethiopic Supplement 139F
-@ Syllables for Sebatbeit
-1380 ETHIOPIC SYLLABLE SEBATBEIT MWA
-1381 ETHIOPIC SYLLABLE MWI
-1382 ETHIOPIC SYLLABLE MWEE
-1383 ETHIOPIC SYLLABLE MWE
-1384 ETHIOPIC SYLLABLE SEBATBEIT BWA
-1385 ETHIOPIC SYLLABLE BWI
-1386 ETHIOPIC SYLLABLE BWEE
-1387 ETHIOPIC SYLLABLE BWE
-1388 ETHIOPIC SYLLABLE SEBATBEIT FWA
-1389 ETHIOPIC SYLLABLE FWI
-138A ETHIOPIC SYLLABLE FWEE
-138B ETHIOPIC SYLLABLE FWE
-138C ETHIOPIC SYLLABLE SEBATBEIT PWA
-138D ETHIOPIC SYLLABLE PWI
-138E ETHIOPIC SYLLABLE PWEE
-138F ETHIOPIC SYLLABLE PWE
-@ Tonal Marks
-@+ Intended for use with a multiline scored layout
-1390 ETHIOPIC TONAL MARK YIZET
-1391 ETHIOPIC TONAL MARK DERET
-1392 ETHIOPIC TONAL MARK RIKRIK
-1393 ETHIOPIC TONAL MARK SHORT RIKRIK
-1394 ETHIOPIC TONAL MARK DIFAT
-1395 ETHIOPIC TONAL MARK KENAT
-1396 ETHIOPIC TONAL MARK CHIRET
-1397 ETHIOPIC TONAL MARK HIDET
-1398 ETHIOPIC TONAL MARK DERET-HIDET
-1399 ETHIOPIC TONAL MARK KURT
-@@ 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
- * Inuktitut (AI), Carrier (U)
-1402 CANADIAN SYLLABICS AAI
- * Inuktitut
-1403 CANADIAN SYLLABICS I
- * Carrier (O)
-1404 CANADIAN SYLLABICS II
-1405 CANADIAN SYLLABICS O
- * Inuktitut (U), Carrier (E)
-1406 CANADIAN SYLLABICS OO
- * Inuktitut (UU)
-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
- * East Cree
-141D CANADIAN SYLLABICS Y-CREE W
-141E CANADIAN SYLLABICS GLOTTAL STOP
- * Moose Cree (Y), Algonquian (GLOTTAL STOP)
-141F CANADIAN SYLLABICS FINAL ACUTE
- * West Cree (T), East Cree (Y), Inuktitut (GLOTTAL STOP)
- * Athapascan (B/P), Sayisi (I), Carrier (G)
-1420 CANADIAN SYLLABICS FINAL GRAVE
- * West Cree (K), Athapascan (K), Carrier (KH)
-1421 CANADIAN SYLLABICS FINAL BOTTOM HALF RING
- * N Cree (SH), Sayisi (R), Carrier (NG)
-1422 CANADIAN SYLLABICS FINAL TOP HALF RING
- * Algonquian (S), Chipewyan (R), Sayisi (S)
-1423 CANADIAN SYLLABICS FINAL RIGHT HALF RING
- * West Cree (N), Athapascan (D/T), Sayisi (N), Carrier (N)
-1424 CANADIAN SYLLABICS FINAL RING
- * West Cree (W), Sayisi (O)
-1425 CANADIAN SYLLABICS FINAL DOUBLE ACUTE
- * Chipewyan (TT), South Slavey (GH)
-1426 CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES
- * Algonquian (H), Carrier (R)
-1427 CANADIAN SYLLABICS FINAL MIDDLE DOT
- * Moose Cree (W), Athapascan (Y), Sayisi (YU)
-1428 CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE
- * West Cree (C), Sayisi (D)
-1429 CANADIAN SYLLABICS FINAL PLUS
- * Athapascan (N), Sayisi (AI)
-142A CANADIAN SYLLABICS FINAL DOWN TACK
- * N Cree (L), Carrier (D)
- x (down tack - 22A4)
-142B CANADIAN SYLLABICS EN
-142C CANADIAN SYLLABICS IN
-142D CANADIAN SYLLABICS ON
-142E CANADIAN SYLLABICS AN
-142F CANADIAN SYLLABICS PE
- * Inuktitut (PAI), Athapascan (BE), Carrier (HU)
-1430 CANADIAN SYLLABICS PAAI
- * Inuktitut
-1431 CANADIAN SYLLABICS PI
-1432 CANADIAN SYLLABICS PII
-1433 CANADIAN SYLLABICS PO
- * Inuktitut (PU), Athapascan (BO), Carrier (HE)
-1434 CANADIAN SYLLABICS POO
- * Inuktitut (PUU)
-1435 CANADIAN SYLLABICS Y-CREE POO
-1436 CANADIAN SYLLABICS CARRIER HEE
-1437 CANADIAN SYLLABICS CARRIER HI
-1438 CANADIAN SYLLABICS PA
- * Athapascan (BA), Carrier (HA)
-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
- * Sayisi (G)
-144B CANADIAN SYLLABICS CARRIER H
-144C CANADIAN SYLLABICS TE
- * Inuktitut (TAI), Athapascan (DI), Carrier (DU)
-144D CANADIAN SYLLABICS TAAI
- * Inuktitut
-144E CANADIAN SYLLABICS TI
- * Athapascan (DE), Carrier (DO)
-144F CANADIAN SYLLABICS TII
-1450 CANADIAN SYLLABICS TO
- * Inuktitut (TU), Athapascan (DO), Carrier (DE), Sayisi (DU)
-1451 CANADIAN SYLLABICS TOO
- * Inuktitut (TUU)
-1452 CANADIAN SYLLABICS Y-CREE TOO
-1453 CANADIAN SYLLABICS CARRIER DEE
-1454 CANADIAN SYLLABICS CARRIER DI
-1455 CANADIAN SYLLABICS TA
- * Athapascan (DA)
-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
- * South Slavey (DEH)
-1468 CANADIAN SYLLABICS TTI
- * South Slavey (DIH)
-1469 CANADIAN SYLLABICS TTO
- * South Slavey (DOH)
-146A CANADIAN SYLLABICS TTA
- * South Slavey (DAH)
-146B CANADIAN SYLLABICS KE
- * Inuktitut (KAI)
-146C CANADIAN SYLLABICS KAAI
- * Inuktitut
-146D CANADIAN SYLLABICS KI
-146E CANADIAN SYLLABICS KII
-146F CANADIAN SYLLABICS KO
- * Inuktitut (KU), Sayisi (KU)
-1470 CANADIAN SYLLABICS KOO
- * Inuktitut (KUU)
-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
- * East Cree
-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
- * Inuktitut (GAI), Athapascan (DHE), Sayisi (THE)
-148A CANADIAN SYLLABICS CAAI
- * Inuktitut (GAAI)
-148B CANADIAN SYLLABICS CI
- * Inuktitut (GI), Athapascan (DHI), Sayisi (THI)
-148C CANADIAN SYLLABICS CII
- * Inuktitut (GII)
-148D CANADIAN SYLLABICS CO
- * Inuktitut (GU), Athapascan (DHO), Sayisi (THO)
-148E CANADIAN SYLLABICS COO
- * Inuktitut (GUU)
-148F CANADIAN SYLLABICS Y-CREE COO
-1490 CANADIAN SYLLABICS CA
- * Inuktitut (GA), Athapascan (DHA), Sayisi (THA)
-1491 CANADIAN SYLLABICS CAA
- * Inuktitut (GAA)
-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
- * Inuktitut (G), Sayisi (T)
-14A2 CANADIAN SYLLABICS SAYISI TH
- * Athapascan (DH)
-14A3 CANADIAN SYLLABICS ME
- * Inuktitut (MAI)
-14A4 CANADIAN SYLLABICS MAAI
- * Inuktitut
-14A5 CANADIAN SYLLABICS MI
-14A6 CANADIAN SYLLABICS MII
-14A7 CANADIAN SYLLABICS MO
- * Inuktitut (MU), Sayisi (MU)
-14A8 CANADIAN SYLLABICS MOO
- * Inuktitut (MUU)
-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
- * Carrier (M)
-14BD CANADIAN SYLLABICS MH
-14BE CANADIAN SYLLABICS ATHAPASCAN M
-14BF CANADIAN SYLLABICS SAYISI M
-14C0 CANADIAN SYLLABICS NE
- * Inuktitut (NAI)
-14C1 CANADIAN SYLLABICS NAAI
- * Inuktitut
-14C2 CANADIAN SYLLABICS NI
-14C3 CANADIAN SYLLABICS NII
-14C4 CANADIAN SYLLABICS NO
- * Inuktitut (NU), Sayisi (NU)
-14C5 CANADIAN SYLLABICS NOO
- * Inuktitut (NUU)
-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
- * Inuktitut (LAI)
-14D4 CANADIAN SYLLABICS LAAI
- * Inuktitut
-14D5 CANADIAN SYLLABICS LI
-14D6 CANADIAN SYLLABICS LII
-14D7 CANADIAN SYLLABICS LO
- * Inuktitut (LU)
-14D8 CANADIAN SYLLABICS LOO
- * Inuktitut (LUU)
-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
- * Inuktitut (SAI)
-14EE CANADIAN SYLLABICS SAAI
- * Inuktitut
-14EF CANADIAN SYLLABICS SI
-14F0 CANADIAN SYLLABICS SII
-14F1 CANADIAN SYLLABICS SO
- * Inuktitut (SU), Sayisi (SU)
-14F2 CANADIAN SYLLABICS SOO
- * Inuktitut (SUU)
-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
- * Inuktitut (YAI)
-1527 CANADIAN SYLLABICS YAAI
- * Inuktitut
-1528 CANADIAN SYLLABICS YI
-1529 CANADIAN SYLLABICS YII
-152A CANADIAN SYLLABICS YO
- * Inuktitut (YU)
-152B CANADIAN SYLLABICS YOO
- * Inuktitut (YUU)
-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
- * Inuktitut (RAI)
-1543 CANADIAN SYLLABICS R-CREE RE
- * Athapascan (LE)
-1544 CANADIAN SYLLABICS WEST-CREE LE
- * Athapascan (LI)
-1545 CANADIAN SYLLABICS RAAI
- * Inuktitut
-1546 CANADIAN SYLLABICS RI
-1547 CANADIAN SYLLABICS RII
-1548 CANADIAN SYLLABICS RO
- * Inuktitut (RU)
-1549 CANADIAN SYLLABICS ROO
- * Inuktitut (RUU)
-154A CANADIAN SYLLABICS WEST-CREE LO
- * Sayisi (LU)
-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
- * Inuktitut (FAI)
-1554 CANADIAN SYLLABICS FAAI
- * Inuktitut
-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
- * Sayisi (TE)
-155F CANADIAN SYLLABICS N-CREE THE
-1560 CANADIAN SYLLABICS THI
- * Sayisi (TI)
-1561 CANADIAN SYLLABICS N-CREE THI
-1562 CANADIAN SYLLABICS THII
-1563 CANADIAN SYLLABICS N-CREE THII
-1564 CANADIAN SYLLABICS THO
- * Sayisi (TU)
-1565 CANADIAN SYLLABICS THOO
-1566 CANADIAN SYLLABICS THA
- * Sayisi (TA)
-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
- * Sayisi (TTHU)
-156E CANADIAN SYLLABICS TTHA
-156F CANADIAN SYLLABICS TTH
- * probably a mistaken interpretation of an asterisk used to mark a proper noun
- x (asterisk - 002A)
-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
- * Algonquian
-157E CANADIAN SYLLABICS QAAI
- * Inuktitut
-157F CANADIAN SYLLABICS QI
-1580 CANADIAN SYLLABICS QII
-1581 CANADIAN SYLLABICS QO
- * Inuktitut (QU)
-1582 CANADIAN SYLLABICS QOO
- * Inuktitut (QUU)
-1583 CANADIAN SYLLABICS QA
-1584 CANADIAN SYLLABICS QAA
-1585 CANADIAN SYLLABICS Q
-1586 CANADIAN SYLLABICS TLHE
- * Sayisi (KLE)
-1587 CANADIAN SYLLABICS TLHI
- * Sayisi (KLI)
-1588 CANADIAN SYLLABICS TLHO
- * Sayisi (KLU)
-1589 CANADIAN SYLLABICS TLHA
- * Sayisi (KLA)
-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
- * Inuktitut
-158F CANADIAN SYLLABICS NGI
-1590 CANADIAN SYLLABICS NGII
-1591 CANADIAN SYLLABICS NGO
- * Inuktitut (NGU)
-1592 CANADIAN SYLLABICS NGOO
- * Inuktitut (NGUU)
-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
- * Sayisi (SHU)
-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
- * Inuktitut (LHU)
-15A3 CANADIAN SYLLABICS LHOO
- * Inuktitut (LHUU)
-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
- * Sayisi (HU)
-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
- * Athapascan (ZA), Sayisi (TZO), South Slavey (DHA)
-1615 CANADIAN SYLLABICS SAYISI JU
- * Athapascan (ZO), Sayisi (TZU), South Slavey (DHO)
-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
- * Athapascan (ZE), Sayisi (TZE), South Slavey (DHE)
-161B CANADIAN SYLLABICS CARRIER JA
- * Athapascan (ZI), Sayisi (TZI), South Slavey (DHI)
-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
-@ Symbol
-166D CANADIAN SYLLABICS CHI SIGN
- * Algonquian
- * used as a symbol to denote Christ
- x (chi rho - 2627)
-@ Punctuation
-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
- * Inuktitut (NNGU)
-1674 CANADIAN SYLLABICS NNGOO
- * Inuktitut (NNGUU)
-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
-@@ 1700 Tagalog 171F
-@ Independent vowels
-1700 TAGALOG LETTER A
-1701 TAGALOG LETTER I
-1702 TAGALOG LETTER U
-@ Consonants
-1703 TAGALOG LETTER KA
-1704 TAGALOG LETTER GA
-1705 TAGALOG LETTER NGA
-1706 TAGALOG LETTER TA
-1707 TAGALOG LETTER DA
-1708 TAGALOG LETTER NA
-1709 TAGALOG LETTER PA
-170A TAGALOG LETTER BA
-170B TAGALOG LETTER MA
-170C TAGALOG LETTER YA
-170E TAGALOG LETTER LA
-170F TAGALOG LETTER WA
-1710 TAGALOG LETTER SA
-1711 TAGALOG LETTER HA
-@ Dependent vowel signs
-1712 TAGALOG VOWEL SIGN I
-1713 TAGALOG VOWEL SIGN U
-@ Virama
-1714 TAGALOG SIGN VIRAMA
-@@ 1720 Hanunoo 173F
-@ Independent vowels
-1720 HANUNOO LETTER A
-1721 HANUNOO LETTER I
-1722 HANUNOO LETTER U
-@ Consonants
-1723 HANUNOO LETTER KA
-1724 HANUNOO LETTER GA
-1725 HANUNOO LETTER NGA
-1726 HANUNOO LETTER TA
-1727 HANUNOO LETTER DA
-1728 HANUNOO LETTER NA
-1729 HANUNOO LETTER PA
-172A HANUNOO LETTER BA
-172B HANUNOO LETTER MA
-172C HANUNOO LETTER YA
-172D HANUNOO LETTER RA
-172E HANUNOO LETTER LA
-172F HANUNOO LETTER WA
-1730 HANUNOO LETTER SA
-1731 HANUNOO LETTER HA
-@ Dependent vowel signs
-1732 HANUNOO VOWEL SIGN I
-1733 HANUNOO VOWEL SIGN U
-@ Virama
-1734 HANUNOO SIGN PAMUDPOD
-@ Generic punctuation for Philippine scripts
-1735 PHILIPPINE SINGLE PUNCTUATION
- x (devanagari danda - 0964)
-1736 PHILIPPINE DOUBLE PUNCTUATION
- x (devanagari double danda - 0965)
-@@ 1740 Buhid 175F
-@ Independent vowels
-1740 BUHID LETTER A
-1741 BUHID LETTER I
-1742 BUHID LETTER U
-@ Consonants
-1743 BUHID LETTER KA
-1744 BUHID LETTER GA
-1745 BUHID LETTER NGA
-1746 BUHID LETTER TA
-1747 BUHID LETTER DA
-1748 BUHID LETTER NA
-1749 BUHID LETTER PA
-174A BUHID LETTER BA
-174B BUHID LETTER MA
-174C BUHID LETTER YA
-174D BUHID LETTER RA
-174E BUHID LETTER LA
-174F BUHID LETTER WA
-1750 BUHID LETTER SA
-1751 BUHID LETTER HA
-@ Dependent vowel signs
-1752 BUHID VOWEL SIGN I
-1753 BUHID VOWEL SIGN U
-@@ 1760 Tagbanwa 177F
-@ Independent vowels
-1760 TAGBANWA LETTER A
-1761 TAGBANWA LETTER I
-1762 TAGBANWA LETTER U
-@ Consonants
-1763 TAGBANWA LETTER KA
-1764 TAGBANWA LETTER GA
-1765 TAGBANWA LETTER NGA
-1766 TAGBANWA LETTER TA
-1767 TAGBANWA LETTER DA
-1768 TAGBANWA LETTER NA
-1769 TAGBANWA LETTER PA
-176A TAGBANWA LETTER BA
-176B TAGBANWA LETTER MA
-176C TAGBANWA LETTER YA
-176E TAGBANWA LETTER LA
-176F TAGBANWA LETTER WA
-1770 TAGBANWA LETTER SA
-@ Dependent vowel signs
-1772 TAGBANWA VOWEL SIGN I
-1773 TAGBANWA VOWEL SIGN U
-@@ 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
- * as this character belongs to the first register, its correct transliteration is nna, not 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
- * as this character belongs to the first register, its correct transliteration is ssa, not sso
-179F KHMER LETTER SA
-17A0 KHMER LETTER HA
-17A1 KHMER LETTER LA
-17A2 KHMER LETTER QA
- * glottal stop
-@ Independent vowel (deprecated)
-17A3 KHMER INDEPENDENT VOWEL QAQ *
- * originally intended only for Pali/Sanskrit transliteration
- * use of this character is strongly discouraged; 17A2 should be used instead
-@ Independent vowels
-17A4 KHMER INDEPENDENT VOWEL QAA *
- * used only for Pali/Sanskrit transliteration
- * use of this character is discouraged; the sequence 17A2 17B6 should be used instead
-17A5 KHMER INDEPENDENT VOWEL QI
-17A6 KHMER INDEPENDENT VOWEL QII
-17A7 KHMER INDEPENDENT VOWEL QU
-17A8 KHMER INDEPENDENT VOWEL QUK
- * obsolete ligature for the sequence 17A7 1780
- * use of the sequence is now preferred
-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
- * this is a variant for 17B1, used in only two words
- * 17B1 is the normal variant of this vowel
-17B3 KHMER INDEPENDENT VOWEL QAU
-@ Inherent vowels
-@+ These are for phonetic transcription to distinguish Indic language inherent vowels from Khmer inherent vowels. These characters are included solely for compatibility with particular applications; their use in other contexts is discouraged.
-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
-@ Two-part dependent vowel signs
-@+ These two-part dependent vowel signs have glyph pieces which stand on both sides of the consonant. These vowel signs follow the consonant in logical order, and should be handled as a unit for processing.
-17BE KHMER VOWEL SIGN OE
-17BF KHMER VOWEL SIGN YA
-17C0 KHMER VOWEL SIGN IE
-@ Dependent vowel signs
-17C1 KHMER VOWEL SIGN E
-17C2 KHMER VOWEL SIGN AE
-17C3 KHMER VOWEL SIGN AI
-@ Two-part dependent vowel signs
-@+ These two-part dependent vowel signs have glyph pieces which stand on both sides of the consonant. These vowel signs follow the consonant in logical order, and should be handled as a unit for processing.
-17C4 KHMER VOWEL SIGN OO
-17C5 KHMER VOWEL SIGN AU
-@ Various signs
-17C6 KHMER SIGN NIKAHIT
- = srak am
- = anusvara
- * final nasalization
- * this character is usually regarded as a vowel sign am, along with om and aam
- x (thai character nikhahit - 0E4D)
- x (myanmar sign anusvara - 1036)
-17C7 KHMER SIGN REAHMUK
- = srak ah
- = visarga
- x (myanmar sign visarga - 1038)
-17C8 KHMER SIGN YUUKALEAPINTU
- * inserts a short inherent vowel with abrupt glottal stop
- * the preferred transliteration is yukaleakpintu
-@ Consonant shifters
-@+ These signs shift the base consonant between registers.
-17C9 KHMER SIGN MUUSIKATOAN
- * changes the second register to the first
- * the preferred transliteration is muusekatoan
-17CA KHMER SIGN TRIISAP
- * changes the first register to the second
- * the preferred transliteration is treisap
-@ Various signs
-17CB KHMER SIGN BANTOC
- * shortens the vowel sound in the previous orthographic syllable
- * the preferred transliteration is bantak
-17CC KHMER SIGN ROBAT
- * a diacritic historically corresponding to the repha form of ra in Devanagari
-17CD KHMER SIGN TOANDAKHIAT
- * indicates that the base character is not pronounced
-17CE KHMER SIGN KAKABAT
- * sign used with some exclamations
-17CF KHMER SIGN AHSDA
- * denotes stressed intonation in some single-consonant words
-17D0 KHMER SIGN SAMYOK SANNYA
- * denotes deviation from the general rules of pronunciation, mostly used in loan words from Pali/Sanskrit, French, and so on
-17D1 KHMER SIGN VIRIAM
- * mostly obsolete, a "killer"
- * indicates that the base character is the final consonant of a word without its inherent vowel sound
-17D2 KHMER SIGN COENG
- * functions to indicate that the following Khmer letter is to be rendered subscripted
- * shape shown is arbitrary and is not visibly rendered
-@ Lunar date sign (deprecated)
-17D3 KHMER SIGN BATHAMASAT *
- * originally intended as part of lunar date symbols
- * use of this character is strongly discouraged in favor of the complete set of lunar date symbols
- x (khmer symbol pathamasat - 19E0)
-@ Various signs
-17D4 KHMER SIGN KHAN
- * functions as a full stop, period
- x (thai character paiyannoi - 0E2F)
- x (myanmar sign little section - 104A)
-17D5 KHMER SIGN BARIYOOSAN
- * indicates the end of a section or a text
- x (thai character angkhankhu - 0E5A)
- x (myanmar sign section - 104B)
-17D6 KHMER SIGN CAMNUC PII KUUH
- * functions as colon
- * the preferred transliteration is camnoc pii kuuh
- x (division sign - 00F7)
- x (tibetan mark gter tsheg - 0F14)
-17D7 KHMER SIGN LEK TOO
- * repetition sign
- x (thai character maiyamok - 0E46)
-17D8 KHMER SIGN BEYYAL *
- * et cetera
- * use of this character is discouraged; other abbreviations for et cetera also exist
- * preferred spelling: 17D4 179B 17D4
-17D9 KHMER SIGN PHNAEK MUAN
- * indicates the beginning of a book or a treatise
- * the preferred transliteration is phnek moan
- x (thai character fongman - 0E4F)
-17DA KHMER SIGN KOOMUUT
- * indicates the end of a book or treatise
- * this forms a pair with 17D9
- * the preferred transliteration is koomoot
- x (thai character khomut - 0E5B)
-@ Currency symbol
-17DB KHMER CURRENCY SYMBOL RIEL
-@ Various signs
-17DC KHMER SIGN AVAKRAHASANYA
- * rare, shows an omitted Sanskrit vowel, like an apostrophe
- * the preferred transliteration is avakraha sannya
- x (devanagari sign avagraha - 093D)
-17DD KHMER SIGN ATTHACAN
- * mostly obsolete
- * indicates that the base character is the final consonant of a word with its inherent vowel sound
- x (khmer sign viriam - 17D1)
-@ 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
-@ Numeric symbols for divination lore
-@+ These characters have numeric values 0-9, respectively, but are not used for calculation.
-17F0 KHMER SYMBOL LEK ATTAK SON
-17F1 KHMER SYMBOL LEK ATTAK MUOY
-17F2 KHMER SYMBOL LEK ATTAK PII
-17F3 KHMER SYMBOL LEK ATTAK BEI
-17F4 KHMER SYMBOL LEK ATTAK BUON
-17F5 KHMER SYMBOL LEK ATTAK PRAM
-17F6 KHMER SYMBOL LEK ATTAK PRAM-MUOY
-17F7 KHMER SYMBOL LEK ATTAK PRAM-PII
-17F8 KHMER SYMBOL LEK ATTAK PRAM-BEI
-17F9 KHMER SYMBOL LEK ATTAK PRAM-BUON
-@@ 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
- * not a format control character, but simply a hyphen for Todo
- x (soft hyphen - 00AD)
-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
- = FVS1
-180C MONGOLIAN FREE VARIATION SELECTOR TWO
- = FVS2
-180D MONGOLIAN FREE VARIATION SELECTOR THREE
- = FVS3
-180E MONGOLIAN VOWEL SEPARATOR
- = MVS
-@ 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
- x (tibetan sign sna ldan - 0F83)
-1881 MONGOLIAN LETTER ALI GALI VISARGA ONE
- x (tibetan sign rnam bcad - 0F7F)
-1882 MONGOLIAN LETTER ALI GALI DAMARU
- x (tibetan sign lce tsa can - 0F88)
-1883 MONGOLIAN LETTER ALI GALI UBADAMA
-1884 MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
-1885 MONGOLIAN LETTER ALI GALI BALUDA
- x (tibetan mark paluta - 0F85)
-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
-@@ 1900 Limbu 194F
-@ Consonants
-1900 LIMBU VOWEL-CARRIER LETTER
-1901 LIMBU LETTER KA
-1902 LIMBU LETTER KHA
-1903 LIMBU LETTER GA
-1904 LIMBU LETTER GHA
-1905 LIMBU LETTER NGA
-1906 LIMBU LETTER CA
-1907 LIMBU LETTER CHA
-1908 LIMBU LETTER JA
-1909 LIMBU LETTER JHA
-190A LIMBU LETTER YAN
-190B LIMBU LETTER TA
-190C LIMBU LETTER THA
-190D LIMBU LETTER DA
-190E LIMBU LETTER DHA
-190F LIMBU LETTER NA
-1910 LIMBU LETTER PA
-1911 LIMBU LETTER PHA
-1912 LIMBU LETTER BA
-1913 LIMBU LETTER BHA
-1914 LIMBU LETTER MA
-1915 LIMBU LETTER YA
-1916 LIMBU LETTER RA
-1917 LIMBU LETTER LA
-1918 LIMBU LETTER WA
-1919 LIMBU LETTER SHA
-191A LIMBU LETTER SSA
-191B LIMBU LETTER SA
-191C LIMBU LETTER HA
-@ Dependent vowel signs
-1920 LIMBU VOWEL SIGN A
-1921 LIMBU VOWEL SIGN I
-1922 LIMBU VOWEL SIGN U
-1923 LIMBU VOWEL SIGN EE
-1924 LIMBU VOWEL SIGN AI
-1925 LIMBU VOWEL SIGN OO
-1926 LIMBU VOWEL SIGN AU
-1927 LIMBU VOWEL SIGN E
-1928 LIMBU VOWEL SIGN O
-@ Subjoined consonants
-1929 LIMBU SUBJOINED LETTER YA
-192A LIMBU SUBJOINED LETTER RA
-192B LIMBU SUBJOINED LETTER WA
-@ Final consonants
-1930 LIMBU SMALL LETTER KA
-1931 LIMBU SMALL LETTER NGA
-1932 LIMBU SMALL LETTER ANUSVARA
-1933 LIMBU SMALL LETTER TA
-1934 LIMBU SMALL LETTER NA
-1935 LIMBU SMALL LETTER PA
-1936 LIMBU SMALL LETTER MA
-1937 LIMBU SMALL LETTER RA
-1938 LIMBU SMALL LETTER LA
-@ Various signs
-1939 LIMBU SIGN MUKPHRENG
-193A LIMBU SIGN KEMPHRENG
-193B LIMBU SIGN SA-I
-1940 LIMBU SIGN LOO
-1944 LIMBU EXCLAMATION MARK
-1945 LIMBU QUESTION MARK
-@ Digits
-1946 LIMBU DIGIT ZERO
-1947 LIMBU DIGIT ONE
-1948 LIMBU DIGIT TWO
-1949 LIMBU DIGIT THREE
-194A LIMBU DIGIT FOUR
-194B LIMBU DIGIT FIVE
-194C LIMBU DIGIT SIX
-194D LIMBU DIGIT SEVEN
-194E LIMBU DIGIT EIGHT
-194F LIMBU DIGIT NINE
-@@ 1950 Tai Le 197F
-@ Consonants
-1950 TAI LE LETTER KA
-1951 TAI LE LETTER XA
-1952 TAI LE LETTER NGA
-1953 TAI LE LETTER TSA
-1954 TAI LE LETTER SA
-1955 TAI LE LETTER YA
-1956 TAI LE LETTER TA
-1957 TAI LE LETTER THA
-1958 TAI LE LETTER LA
-1959 TAI LE LETTER PA
-195A TAI LE LETTER PHA
-195B TAI LE LETTER MA
-195C TAI LE LETTER FA
-195D TAI LE LETTER VA
-195E TAI LE LETTER HA
-195F TAI LE LETTER QA
-1960 TAI LE LETTER KHA
-1961 TAI LE LETTER TSHA
-1962 TAI LE LETTER NA
-@ Vowels
-1963 TAI LE LETTER A
-1964 TAI LE LETTER I
-1965 TAI LE LETTER EE
-1966 TAI LE LETTER EH
-1967 TAI LE LETTER U
-1968 TAI LE LETTER OO
-1969 TAI LE LETTER O
-196A TAI LE LETTER UE
-196B TAI LE LETTER E
-196C TAI LE LETTER AUE
-196D TAI LE LETTER AI
-@ Tone letters
-1970 TAI LE LETTER TONE-2
-1971 TAI LE LETTER TONE-3
-1972 TAI LE LETTER TONE-4
-1973 TAI LE LETTER TONE-5
-1974 TAI LE LETTER TONE-6
-@@ 1980 New Tai Lue 19DF
-@+ This script is also known as Xishuang Banna Dai.
-@ Consonants
-1980 NEW TAI LUE LETTER HIGH QA
-1981 NEW TAI LUE LETTER LOW QA
-1982 NEW TAI LUE LETTER HIGH KA
-1983 NEW TAI LUE LETTER HIGH XA
-1984 NEW TAI LUE LETTER HIGH NGA
-1985 NEW TAI LUE LETTER LOW KA
-1986 NEW TAI LUE LETTER LOW XA
-1987 NEW TAI LUE LETTER LOW NGA
-1988 NEW TAI LUE LETTER HIGH TSA
-1989 NEW TAI LUE LETTER HIGH SA
-198A NEW TAI LUE LETTER HIGH YA
-198B NEW TAI LUE LETTER LOW TSA
-198C NEW TAI LUE LETTER LOW SA
-198D NEW TAI LUE LETTER LOW YA
-198E NEW TAI LUE LETTER HIGH TA
-198F NEW TAI LUE LETTER HIGH THA
-1990 NEW TAI LUE LETTER HIGH NA
-1991 NEW TAI LUE LETTER LOW TA
-1992 NEW TAI LUE LETTER LOW THA
-1993 NEW TAI LUE LETTER LOW NA
-1994 NEW TAI LUE LETTER HIGH PA
-1995 NEW TAI LUE LETTER HIGH PHA
-1996 NEW TAI LUE LETTER HIGH MA
-1997 NEW TAI LUE LETTER LOW PA
-1998 NEW TAI LUE LETTER LOW PHA
-1999 NEW TAI LUE LETTER LOW MA
-199A NEW TAI LUE LETTER HIGH FA
-199B NEW TAI LUE LETTER HIGH VA
-199C NEW TAI LUE LETTER HIGH LA
-199D NEW TAI LUE LETTER LOW FA
-199E NEW TAI LUE LETTER LOW VA
-199F NEW TAI LUE LETTER LOW LA
-19A0 NEW TAI LUE LETTER HIGH HA
-19A1 NEW TAI LUE LETTER HIGH DA
-19A2 NEW TAI LUE LETTER HIGH BA
-19A3 NEW TAI LUE LETTER LOW HA
-19A4 NEW TAI LUE LETTER LOW DA
-19A5 NEW TAI LUE LETTER LOW BA
-19A6 NEW TAI LUE LETTER HIGH KVA
-19A7 NEW TAI LUE LETTER HIGH XVA
-19A8 NEW TAI LUE LETTER LOW KVA
-19A9 NEW TAI LUE LETTER LOW XVA
-@ Vowel signs
-19B0 NEW TAI LUE VOWEL SIGN VOWEL SHORTENER
-19B1 NEW TAI LUE VOWEL SIGN AA
-19B2 NEW TAI LUE VOWEL SIGN II
-19B3 NEW TAI LUE VOWEL SIGN U
-19B4 NEW TAI LUE VOWEL SIGN UU
-19B5 NEW TAI LUE VOWEL SIGN E
-19B6 NEW TAI LUE VOWEL SIGN AE
-19B7 NEW TAI LUE VOWEL SIGN O
-19B8 NEW TAI LUE VOWEL SIGN OA
-19B9 NEW TAI LUE VOWEL SIGN UE
-19BA NEW TAI LUE VOWEL SIGN AY
-19BB NEW TAI LUE VOWEL SIGN AAY
-19BC NEW TAI LUE VOWEL SIGN UY
-19BD NEW TAI LUE VOWEL SIGN OY
-19BE NEW TAI LUE VOWEL SIGN OAY
-19BF NEW TAI LUE VOWEL SIGN UEY
-19C0 NEW TAI LUE VOWEL SIGN IY
-@ Final consonants
-19C1 NEW TAI LUE LETTER FINAL V
-19C2 NEW TAI LUE LETTER FINAL NG
-19C3 NEW TAI LUE LETTER FINAL N
-19C4 NEW TAI LUE LETTER FINAL M
-19C5 NEW TAI LUE LETTER FINAL K
-19C6 NEW TAI LUE LETTER FINAL D
-19C7 NEW TAI LUE LETTER FINAL B
-@ Tone marks
-19C8 NEW TAI LUE TONE MARK-1
-19C9 NEW TAI LUE TONE MARK-2
-@ Digits
-19D0 NEW TAI LUE DIGIT ZERO
-19D1 NEW TAI LUE DIGIT ONE
-19D2 NEW TAI LUE DIGIT TWO
-19D3 NEW TAI LUE DIGIT THREE
-19D4 NEW TAI LUE DIGIT FOUR
-19D5 NEW TAI LUE DIGIT FIVE
-19D6 NEW TAI LUE DIGIT SIX
-19D7 NEW TAI LUE DIGIT SEVEN
-19D8 NEW TAI LUE DIGIT EIGHT
-19D9 NEW TAI LUE DIGIT NINE
-@ Various signs
-19DE NEW TAI LUE SIGN LAE
- * conjunction: and
-19DF NEW TAI LUE SIGN LAEV
- * perfective
-@@ 19E0 Khmer Symbols 19FF
-@ Lunar date symbols
-19E0 KHMER SYMBOL PATHAMASAT
- * represents the first August in a leap year
-@+ The following fifteen characters represent the first through the fifteenth waxing days, respectively.
-19E1 KHMER SYMBOL MUOY KOET
-19E2 KHMER SYMBOL PII KOET
-19E3 KHMER SYMBOL BEI KOET
-19E4 KHMER SYMBOL BUON KOET
-19E5 KHMER SYMBOL PRAM KOET
-19E6 KHMER SYMBOL PRAM-MUOY KOET
-19E7 KHMER SYMBOL PRAM-PII KOET
-19E8 KHMER SYMBOL PRAM-BEI KOET
-19E9 KHMER SYMBOL PRAM-BUON KOET
-19EA KHMER SYMBOL DAP KOET
-19EB KHMER SYMBOL DAP-MUOY KOET
-19EC KHMER SYMBOL DAP-PII KOET
-19ED KHMER SYMBOL DAP-BEI KOET
-19EE KHMER SYMBOL DAP-BUON KOET
-19EF KHMER SYMBOL DAP-PRAM KOET
-19F0 KHMER SYMBOL TUTEYASAT
- * represents the second August in a leap year
-@+ The following fifteen characters represent the first through the fifteenth waning days, respectively.
-19F1 KHMER SYMBOL MUOY ROC
-19F2 KHMER SYMBOL PII ROC
-19F3 KHMER SYMBOL BEI ROC
-19F4 KHMER SYMBOL BUON ROC
-19F5 KHMER SYMBOL PRAM ROC
-19F6 KHMER SYMBOL PRAM-MUOY ROC
-19F7 KHMER SYMBOL PRAM-PII ROC
-19F8 KHMER SYMBOL PRAM-BEI ROC
-19F9 KHMER SYMBOL PRAM-BUON ROC
-19FA KHMER SYMBOL DAP ROC
-19FB KHMER SYMBOL DAP-MUOY ROC
-19FC KHMER SYMBOL DAP-PII ROC
-19FD KHMER SYMBOL DAP-BEI ROC
-19FE KHMER SYMBOL DAP-BUON ROC
-19FF KHMER SYMBOL DAP-PRAM ROC
-@@ 1A00 Buginese 1A1F
-@+ This script is also known as Lontara.
-@ Consonants
-1A00 BUGINESE LETTER KA
-1A01 BUGINESE LETTER GA
-1A02 BUGINESE LETTER NGA
-1A03 BUGINESE LETTER NGKA
-1A04 BUGINESE LETTER PA
-1A05 BUGINESE LETTER BA
-1A06 BUGINESE LETTER MA
-1A07 BUGINESE LETTER MPA
-1A08 BUGINESE LETTER TA
-1A09 BUGINESE LETTER DA
-1A0A BUGINESE LETTER NA
-1A0B BUGINESE LETTER NRA
-1A0C BUGINESE LETTER CA
-1A0D BUGINESE LETTER JA
-1A0E BUGINESE LETTER NYA
-1A0F BUGINESE LETTER NYCA
-1A10 BUGINESE LETTER YA
-1A11 BUGINESE LETTER RA
-1A12 BUGINESE LETTER LA
-1A13 BUGINESE LETTER VA
-1A14 BUGINESE LETTER SA
-1A15 BUGINESE LETTER A
-1A16 BUGINESE LETTER HA
-@ Vowels
-1A17 BUGINESE VOWEL SIGN I
-1A18 BUGINESE VOWEL SIGN U
-1A19 BUGINESE VOWEL SIGN E
-1A1A BUGINESE VOWEL SIGN O
-1A1B BUGINESE VOWEL SIGN AE
-@ Various signs
-1A1E BUGINESE PALLAWA
-1A1F BUGINESE END OF SECTION
-@@ 1D00 Phonetic Extensions 1D7F
-@+ These are non-IPA phonetic extensions, mostly for the Uralic Phonetic Alphabet (UPA).
-@+ The small capitals, superscript, and subscript forms are for phonetic representations where style variations are semantically important.
-@+ For general text, use regular Latin, Greek or Cyrillic letters with markup instead.
-@ Latin letters
-1D00 LATIN LETTER SMALL CAPITAL A
-1D01 LATIN LETTER SMALL CAPITAL AE
-1D02 LATIN SMALL LETTER TURNED AE
- * glyph can also have sideways orientation
-1D03 LATIN LETTER SMALL CAPITAL BARRED B
-1D04 LATIN LETTER SMALL CAPITAL C
-1D05 LATIN LETTER SMALL CAPITAL D
-1D06 LATIN LETTER SMALL CAPITAL ETH
-1D07 LATIN LETTER SMALL CAPITAL E
-1D08 LATIN SMALL LETTER TURNED OPEN E
-1D09 LATIN SMALL LETTER TURNED I
-1D0A LATIN LETTER SMALL CAPITAL J
-1D0B LATIN LETTER SMALL CAPITAL K
-1D0C LATIN LETTER SMALL CAPITAL L WITH STROKE
-1D0D LATIN LETTER SMALL CAPITAL M
-1D0E LATIN LETTER SMALL CAPITAL REVERSED N
-1D0F LATIN LETTER SMALL CAPITAL O
-1D10 LATIN LETTER SMALL CAPITAL OPEN O
-1D11 LATIN SMALL LETTER SIDEWAYS O
-1D12 LATIN SMALL LETTER SIDEWAYS OPEN O
-1D13 LATIN SMALL LETTER SIDEWAYS O WITH STROKE
-1D14 LATIN SMALL LETTER TURNED OE
- * glyph can also have sideways orientation
-1D15 LATIN LETTER SMALL CAPITAL OU
-1D16 LATIN SMALL LETTER TOP HALF O
-1D17 LATIN SMALL LETTER BOTTOM HALF O
-1D18 LATIN LETTER SMALL CAPITAL P
- * represents a semi-voiced [p]
-1D19 LATIN LETTER SMALL CAPITAL REVERSED R
-1D1A LATIN LETTER SMALL CAPITAL TURNED R
-1D1B LATIN LETTER SMALL CAPITAL T
-1D1C LATIN LETTER SMALL CAPITAL U
-1D1D LATIN SMALL LETTER SIDEWAYS U
-1D1E LATIN SMALL LETTER SIDEWAYS DIAERESIZED U
- * glyph can also have turned orientation
-1D1F LATIN SMALL LETTER SIDEWAYS TURNED M
-1D20 LATIN LETTER SMALL CAPITAL V
-1D21 LATIN LETTER SMALL CAPITAL W
-1D22 LATIN LETTER SMALL CAPITAL Z
-1D23 LATIN LETTER SMALL CAPITAL EZH
-1D24 LATIN LETTER VOICED LARYNGEAL SPIRANT
-1D25 LATIN LETTER AIN
-@ Greek letters
-1D26 GREEK LETTER SMALL CAPITAL GAMMA
-1D27 GREEK LETTER SMALL CAPITAL LAMDA
-1D28 GREEK LETTER SMALL CAPITAL PI
-1D29 GREEK LETTER SMALL CAPITAL RHO
- * represents a voiceless uvular trill
-1D2A GREEK LETTER SMALL CAPITAL PSI
-@ Cyrillic letter
-1D2B CYRILLIC LETTER SMALL CAPITAL EL
- * in italic style, the glyph is obliqued, not italicized
- x (cyrillic small letter el - 043B)
-@ Latin superscript modifier letters
-1D2C MODIFIER LETTER CAPITAL A
- # <super> 0041
-1D2D MODIFIER LETTER CAPITAL AE
- # <super> 00C6
-1D2E MODIFIER LETTER CAPITAL B
- # <super> 0042
-1D2F MODIFIER LETTER CAPITAL BARRED B
-1D30 MODIFIER LETTER CAPITAL D
- # <super> 0044
-1D31 MODIFIER LETTER CAPITAL E
- # <super> 0045
-1D32 MODIFIER LETTER CAPITAL REVERSED E
- # <super> 018E
-1D33 MODIFIER LETTER CAPITAL G
- # <super> 0047
-1D34 MODIFIER LETTER CAPITAL H
- # <super> 0048
-1D35 MODIFIER LETTER CAPITAL I
- # <super> 0049
-1D36 MODIFIER LETTER CAPITAL J
- # <super> 004A
-1D37 MODIFIER LETTER CAPITAL K
- # <super> 004B
-1D38 MODIFIER LETTER CAPITAL L
- # <super> 004C
-1D39 MODIFIER LETTER CAPITAL M
- # <super> 004D
-1D3A MODIFIER LETTER CAPITAL N
- # <super> 004E
-1D3B MODIFIER LETTER CAPITAL REVERSED N
-1D3C MODIFIER LETTER CAPITAL O
- # <super> 004F
-1D3D MODIFIER LETTER CAPITAL OU
- # <super> 0222
-1D3E MODIFIER LETTER CAPITAL P
- # <super> 0050
-1D3F MODIFIER LETTER CAPITAL R
- # <super> 0052
-1D40 MODIFIER LETTER CAPITAL T
- # <super> 0054
-1D41 MODIFIER LETTER CAPITAL U
- # <super> 0055
-1D42 MODIFIER LETTER CAPITAL W
- # <super> 0057
-1D43 MODIFIER LETTER SMALL A
- # <super> 0061
-1D44 MODIFIER LETTER SMALL TURNED A
- # <super> 0250
-1D45 MODIFIER LETTER SMALL ALPHA
- # <super> 0251
-1D46 MODIFIER LETTER SMALL TURNED AE
- # <super> 1D02
-1D47 MODIFIER LETTER SMALL B
- # <super> 0062
-1D48 MODIFIER LETTER SMALL D
- # <super> 0064
-1D49 MODIFIER LETTER SMALL E
- # <super> 0065
-1D4A MODIFIER LETTER SMALL SCHWA
- # <super> 0259
-1D4B MODIFIER LETTER SMALL OPEN E
- # <super> 025B
-1D4C MODIFIER LETTER SMALL TURNED OPEN E
- * more appropriate equivalence would be to 1D08
- # <super> 025C
-1D4D MODIFIER LETTER SMALL G
- # <super> 0067
-1D4E MODIFIER LETTER SMALL TURNED I
-1D4F MODIFIER LETTER SMALL K
- # <super> 006B
-1D50 MODIFIER LETTER SMALL M
- # <super> 006D
-1D51 MODIFIER LETTER SMALL ENG
- # <super> 014B
-1D52 MODIFIER LETTER SMALL O
- # <super> 006F
-1D53 MODIFIER LETTER SMALL OPEN O
- # <super> 0254
-1D54 MODIFIER LETTER SMALL TOP HALF O
- # <super> 1D16
-1D55 MODIFIER LETTER SMALL BOTTOM HALF O
- # <super> 1D17
-1D56 MODIFIER LETTER SMALL P
- # <super> 0070
-1D57 MODIFIER LETTER SMALL T
- # <super> 0074
-1D58 MODIFIER LETTER SMALL U
- # <super> 0075
-1D59 MODIFIER LETTER SMALL SIDEWAYS U
- # <super> 1D1D
-1D5A MODIFIER LETTER SMALL TURNED M
- # <super> 026F
-1D5B MODIFIER LETTER SMALL V
- # <super> 0076
-1D5C MODIFIER LETTER SMALL AIN
- # <super> 1D25
-@ Greek superscript modifier letters
-1D5D MODIFIER LETTER SMALL BETA
- # <super> 03B2
-1D5E MODIFIER LETTER SMALL GREEK GAMMA
- # <super> 03B3
-1D5F MODIFIER LETTER SMALL DELTA
- # <super> 03B4
-1D60 MODIFIER LETTER SMALL GREEK PHI
- # <super> 03C6
-1D61 MODIFIER LETTER SMALL CHI
- # <super> 03C7
-@ Latin subscript modifier letters
-1D62 LATIN SUBSCRIPT SMALL LETTER I
- # <sub> 0069
-1D63 LATIN SUBSCRIPT SMALL LETTER R
- # <sub> 0072
-1D64 LATIN SUBSCRIPT SMALL LETTER U
- # <sub> 0075
-1D65 LATIN SUBSCRIPT SMALL LETTER V
- # <sub> 0076
-@ Greek subscript modifier letters
-1D66 GREEK SUBSCRIPT SMALL LETTER BETA
- # <sub> 03B2
-1D67 GREEK SUBSCRIPT SMALL LETTER GAMMA
- # <sub> 03B3
-1D68 GREEK SUBSCRIPT SMALL LETTER RHO
- # <sub> 03C1
-1D69 GREEK SUBSCRIPT SMALL LETTER PHI
- # <sub> 03C6
-1D6A GREEK SUBSCRIPT SMALL LETTER CHI
- # <sub> 03C7
-@ Latin letter
-1D6B LATIN SMALL LETTER UE
-@ Latin letters with middle tilde
-@+ An additional letter with middle tilde is found in another block.
- x (latin small letter l with middle tilde - 026B)
-1D6C LATIN SMALL LETTER B WITH MIDDLE TILDE
-1D6D LATIN SMALL LETTER D WITH MIDDLE TILDE
-1D6E LATIN SMALL LETTER F WITH MIDDLE TILDE
-1D6F LATIN SMALL LETTER M WITH MIDDLE TILDE
-1D70 LATIN SMALL LETTER N WITH MIDDLE TILDE
-1D71 LATIN SMALL LETTER P WITH MIDDLE TILDE
-1D72 LATIN SMALL LETTER R WITH MIDDLE TILDE
-1D73 LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE
-1D74 LATIN SMALL LETTER S WITH MIDDLE TILDE
-1D75 LATIN SMALL LETTER T WITH MIDDLE TILDE
-1D76 LATIN SMALL LETTER Z WITH MIDDLE TILDE
-@ Caucasian linguistics
-1D77 LATIN SMALL LETTER TURNED G
- * Georgian transcription
- x (georgian letter turned gan - 10F9)
-1D78 MODIFIER LETTER CYRILLIC EN
- # <super> 043D
-@ Other phonetic symbols
-1D79 LATIN SMALL LETTER INSULAR G
- * older Irish phonetic notation
- x (latin small letter g - 0067)
- x (latin small letter script g - 0261)
- x (latin small letter gamma - 0263)
-1D7A LATIN SMALL LETTER TH WITH STRIKETHROUGH
- * American dictionary usage
- x (greek small letter theta - 03B8)
-1D7B LATIN SMALL CAPITAL LETTER I WITH STROKE
- * used with different meanings by Americanists and Oxford dictionaries
-1D7C LATIN SMALL LETTER IOTA WITH STROKE
- * used by Russianists
-1D7D LATIN SMALL LETTER P WITH STROKE
- * used by Americanists
-1D7E LATIN SMALL CAPITAL LETTER U WITH STROKE
- * used by Americanists
-1D7F LATIN SMALL LETTER UPSILON WITH STROKE
- * used by Americanists and Oxford dictionaries
-@@ 1D80 Phonetic Extensions Supplement 1DBF
-@ Latin letters with palatal hook
-@+ An additional letter with palatal hook is found in another block.
- x (latin small letter t with palatal hook - 01AB)
-1D80 LATIN SMALL LETTER B WITH PALATAL HOOK
-1D81 LATIN SMALL LETTER D WITH PALATAL HOOK
-1D82 LATIN SMALL LETTER F WITH PALATAL HOOK
-1D83 LATIN SMALL LETTER G WITH PALATAL HOOK
-1D84 LATIN SMALL LETTER K WITH PALATAL HOOK
-1D85 LATIN SMALL LETTER L WITH PALATAL HOOK
-1D86 LATIN SMALL LETTER M WITH PALATAL HOOK
-1D87 LATIN SMALL LETTER N WITH PALATAL HOOK
-1D88 LATIN SMALL LETTER P WITH PALATAL HOOK
-1D89 LATIN SMALL LETTER R WITH PALATAL HOOK
-1D8A LATIN SMALL LETTER S WITH PALATAL HOOK
-1D8B LATIN SMALL LETTER ESH WITH PALATAL HOOK
-1D8C LATIN SMALL LETTER V WITH PALATAL HOOK
-1D8D LATIN SMALL LETTER X WITH PALATAL HOOK
-1D8E LATIN SMALL LETTER Z WITH PALATAL HOOK
-@ Latin letters with retroflex hook
-@+ IPA recommends transcribing vowels with r-coloring (rhoticity) with the rhotic hook instead.
- x (modifier letter rhotic hook - 02DE)
-@+ Additional letters with retroflex hook are found in other blocks.
- x (latin capital letter t with retroflex hook - 01AE)
- x (latin small letter d with tail - 0256)
- x (latin small letter l with retroflex hook - 026D)
- x (latin small letter n with retroflex hook - 0273)
- x (latin small letter turned r with hook - 027B)
- x (latin small letter r with tail - 027D)
- x (latin small letter s with hook - 0282)
- x (latin small letter squat reversed esh - 0285)
- x (latin small letter t with retroflex hook - 0288)
- x (latin small letter z with retroflex hook - 0290)
- x (latin small letter turned h with fishhook and tail - 02AF)
-1D8F LATIN SMALL LETTER A WITH RETROFLEX HOOK
-1D90 LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK
-1D91 LATIN SMALL LETTER D WITH HOOK AND TAIL
-1D92 LATIN SMALL LETTER E WITH RETROFLEX HOOK
-1D93 LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK
-1D94 LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK
- x (latin small letter reversed open e with hook - 025D)
-1D95 LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK
- x (latin small letter schwa with hook - 025A)
-1D96 LATIN SMALL LETTER I WITH RETROFLEX HOOK
-1D97 LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK
-1D98 LATIN SMALL LETTER ESH WITH RETROFLEX HOOK
-1D99 LATIN SMALL LETTER U WITH RETROFLEX HOOK
-1D9A LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
-@ Modifier letters
-@+ Other modifier letters can be found in the Spacing Modifer Letters, Phonetic Extensions, as well as Superscripts and Subscripts blocks.
-1D9B MODIFIER LETTER SMALL TURNED ALPHA
- # <super> 0252
-1D9C MODIFIER LETTER SMALL C
- # <super> 0063
-1D9D MODIFIER LETTER SMALL C WITH CURL
- # <super> 0255
-1D9E MODIFIER LETTER SMALL ETH
- # <super> 00F0
-1D9F MODIFIER LETTER SMALL REVERSED OPEN E
- # <super> 025C
-1DA0 MODIFIER LETTER SMALL F
- # <super> 0066
-1DA1 MODIFIER LETTER SMALL DOTLESS J WITH STROKE
- # <super> 025F
-1DA2 MODIFIER LETTER SMALL SCRIPT G
- # <super> 0261
-1DA3 MODIFIER LETTER SMALL TURNED H
- # <super> 0265
-1DA4 MODIFIER LETTER SMALL I WITH STROKE
- # <super> 0268
-1DA5 MODIFIER LETTER SMALL IOTA
- # <super> 0269
-1DA6 MODIFIER LETTER SMALL CAPITAL I
- # <super> 026A
-1DA7 MODIFIER LETTER SMALL CAPITAL I WITH STROKE
- # <super> 1D7B
-1DA8 MODIFIER LETTER SMALL J WITH CROSSED-TAIL
- # <super> 029D
-1DA9 MODIFIER LETTER SMALL L WITH RETROFLEX HOOK
- # <super> 026D
-1DAA MODIFIER LETTER SMALL L WITH PALATAL HOOK
- # <super> 1D85
-1DAB MODIFIER LETTER SMALL CAPITAL L
- # <super> 029F
-1DAC MODIFIER LETTER SMALL M WITH HOOK
- # <super> 0271
-1DAD MODIFIER LETTER SMALL TURNED M WITH LONG LEG
- # <super> 0270
-1DAE MODIFIER LETTER SMALL N WITH LEFT HOOK
- # <super> 0272
-1DAF MODIFIER LETTER SMALL N WITH RETROFLEX HOOK
- # <super> 0273
-1DB0 MODIFIER LETTER SMALL CAPITAL N
- # <super> 0274
-1DB1 MODIFIER LETTER SMALL BARRED O
- # <super> 0275
-1DB2 MODIFIER LETTER SMALL PHI
- # <super> 0278
-1DB3 MODIFIER LETTER SMALL S WITH HOOK
- # <super> 0282
-1DB4 MODIFIER LETTER SMALL ESH
- # <super> 0283
-1DB5 MODIFIER LETTER SMALL T WITH PALATAL HOOK
- # <super> 01AB
-1DB6 MODIFIER LETTER SMALL U BAR
- # <super> 0289
-1DB7 MODIFIER LETTER SMALL UPSILON
- # <super> 028A
-1DB8 MODIFIER LETTER SMALL CAPITAL U
- # <super> 1D1C
-1DB9 MODIFIER LETTER SMALL V WITH HOOK
- # <super> 028B
-1DBA MODIFIER LETTER SMALL TURNED V
- # <super> 028C
-1DBB MODIFIER LETTER SMALL Z
- # <super> 007A
-1DBC MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK
- # <super> 0290
-1DBD MODIFIER LETTER SMALL Z WITH CURL
- # <super> 0291
-1DBE MODIFIER LETTER SMALL EZH
- # <super> 0292
-1DBF MODIFIER LETTER SMALL THETA
- # <super> 03B8
-@@ 1DC0 Combining Diacritical Marks Supplement 1DFF
-@ Used for Ancient Greek
-1DC0 COMBINING DOTTED GRAVE ACCENT
- x (greek dialytika and varia - 1FED)
-1DC1 COMBINING DOTTED ACUTE ACCENT
- x (combining greek dialytika tonos - 0344)
- x (greek dialytika and oxia - 1FEE)
-@ Miscellaneous marks
-1DC2 COMBINING SNAKE BELOW
-1DC3 COMBINING SUSPENSION MARK
- * Glagolitic
- x (combining breve - 0306)
-@@ 1E00 Latin Extended Additional 1EFF
-@+ In this block the names "WITH LINE BELOW" refer to a macron below the letter.
-@ 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
- * Macedonian transliteration
- : 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
-@+ For additional general punctuation characters see also Basic Latin, Latin-1, Supplemental Punctuation and CJK Symbols and Punctuation.
-@ 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
- = ZWSP
- * this character is intended for line break control; it has no width, but its presence between two characters does not prevent increased letter spacing 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)
- x (soft hyphen - 00AD)
-2011 NON-BREAKING HYPHEN
- x (hyphen-minus - 002D)
- x (soft hyphen - 00AD)
- # <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 (combining double vertical stroke overlay - 20E6)
- 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
- * also used as an Armenian semicolon (mijaket)
- 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)
- x (presentation form for vertical horizontal ellipsis - FE19)
- # 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
- = NNBSP
- x (no-break space - 00A0)
- # <noBreak> 0020
-@ General punctuation
-2030 PER MILLE SIGN
- = permille, per thousand
- * used, for example, in measures of blood alcohol content, salinity, etc.
- x (percent sign - 0025)
-2031 PER TEN THOUSAND SIGN
- = permyriad
- * percent of a percent, rarely used
- 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
- = lines (old measure, 1/12 of an inch)
- # 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)
-@ Double punctuation for vertical text
-203C DOUBLE EXCLAMATION MARK
- x (exclamation mark - 0021)
- # 0021 0021
-@ General punctuation
-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
- = z notation sequence concatenation
- 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
-@ Double punctuation for vertical text
-2047 DOUBLE QUESTION MARK
- # 003F 003F
-2048 QUESTION EXCLAMATION MARK
- # 003F 0021
-2049 EXCLAMATION QUESTION MARK
- # 0021 003F
-@ General punctuation
-204A TIRONIAN SIGN ET
- * Irish Gaelic, ...
-204B REVERSED PILCROW SIGN
- x (pilcrow sign - 00B6)
-204C BLACK LEFTWARDS BULLET
-204D BLACK RIGHTWARDS BULLET
-204E LOW ASTERISK
- x (asterisk - 002A)
-204F REVERSED SEMICOLON
- x (semicolon - 003B)
-2050 CLOSE UP
- * editing mark
-2051 TWO ASTERISKS ALIGNED VERTICALLY
-2052 COMMERCIAL MINUS SIGN
- = abzüglich (German), med avdrag av (Swedish), piska (Swedish, "whip")
- * a common glyph variant and fallback representation looks like ./.
- * may also be used as a dingbat to indicate correctness
- * used in Finno-Ugric Phonetic Alphabet to indicate a related borrowed form with different sound
- x (percent sign - 0025)
- x (arabic percent sign - 066A)
-2053 SWUNG DASH
- x (tilde - 007E)
-2054 INVERTED UNDERTIE
-2055 FLOWER PUNCTUATION MARK
- = phul, puspika
- * used as a punctuation mark with Syloti Nagri, Bengali and other Indic scripts
- x (heavy eight teardrop-spoked propeller asterisk - 274B)
-@ Archaic punctuation
-2056 THREE DOT PUNCTUATION
-@ General punctuation
-2057 QUADRUPLE PRIME
- # 2032 2032 2032 2032
-@ Archaic punctuation
-2058 FOUR DOT PUNCTUATION
-2059 FIVE DOT PUNCTUATION
- = Greek pentonkion
-205A TWO DOT PUNCTUATION
- * historically used to indicate the end of a sentence or change of speaker
- * extends from baseline to cap height
- x (presentation form for vertical two dot leader - FE30)
- x (greek acrophonic epidaurean two - 1015B)
-205B FOUR DOT MARK
- * used by scribes in the margin as highlighter mark
- * this is centered on the line, but extends beyond top and bottom of the line
-205C DOTTED CROSS
- * used by scribes in the margin as highlighter mark
-205D TRICOLON
- = Epidaurean acrophonic symbol three
- x (vertical ellipsis - 22EE)
- x (triple colon operator - 2AF6)
- x (presentation form for vertical horizontal ellipsis - FE19)
-205E VERTICAL FOUR DOTS
- * used in dictionaries to indicate legal but undesirable word break
- * glyph extends the whole height of the line
-@ Space
-205F MEDIUM MATHEMATICAL SPACE
- = MMSP
- * four-eighteenths of an em
- # 0020 space
-@ Formatting character
-2060 WORD JOINER
- = WJ
- * a zero width non-breaking space (only)
- * intended for disambiguation of functions for byte order mark
- x (zero width no-break space - FEFF)
-@ Invisible operators
-2061 FUNCTION APPLICATION
- * contiguity operator indicating application of a function
-2062 INVISIBLE TIMES
- * contiguity operator indicating multiplication
-2063 INVISIBLE SEPARATOR
- = invisible comma
- * contiguity operator indicating that adjacent mathematical symbols form a list, e.g. when no visible comma is used between multiple indices
-@ 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 SUPERSCRIPT LATIN SMALL LETTER I
- # <super> 0069
-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
-2090 LATIN SUBSCRIPT SMALL LETTER A
- # <sub> 0061
-2091 LATIN SUBSCRIPT SMALL LETTER E
- # <sub> 0065
-2092 LATIN SUBSCRIPT SMALL LETTER O
- # <sub> 006F
-2093 LATIN SUBSCRIPT SMALL LETTER X
- # <sub> 0078
-2094 LATIN SUBSCRIPT SMALL LETTER SCHWA
- # <sub> 0259
-@@ 20A0 Currency Symbols 20CF
-@ Currency symbols
-@+ A number of currency symbols are found in other blocks. Fullwidth versions of some currency symbols are found in the Halfwidth and Fullwidth Forms block.
- x (dollar sign - 0024)
- x (cent sign - 00A2)
- x (pound sign - 00A3)
- x (currency sign - 00A4)
- x (yen sign - 00A5)
- x (latin small letter f with hook - 0192)
- x (afghani sign - 060B)
- x (bengali rupee mark - 09F2)
- x (bengali rupee sign - 09F3)
- x (gujarati rupee sign - 0AF1)
- x (tamil rupee sign - 0BF9)
- x (thai currency symbol baht - 0E3F)
- x (khmer currency symbol riel - 17DB)
- x (script capital m - 2133)
- x (rial sign - FDFC)
-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
- * intended for lira, but not widely used
- * preferred character for lira is 00A3
- x (pound sign - 00A3)
-20A5 MILL SIGN
- * USA (1/10 cent)
-20A6 NAIRA SIGN
- * Nigeria
-20A7 PESETA SIGN
- * Spain
- x (peso sign - 20B1)
-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, tögrög
-20AF DRACHMA SIGN
- * Greece
-20B0 GERMAN PENNY SIGN
-20B1 PESO SIGN
- * Philippines
- * the Mexican peso is indicated with the dollar sign
- x (peseta sign - 20A7)
-20B2 GUARANI SIGN
- * Paraguay
- * Often represented by G. or Gs.
-20B3 AUSTRAL SIGN
- * former Argentinian currency
-20B4 HRYVNIA SIGN
- * Ukraine
-20B5 CEDI SIGN
- * Ghana
- * glyph may look like '023B' or like C with a short vertical stroke through the upper arm
- x (cent sign - 00A2)
- x (latin capital letter c with stroke - 023B)
-@@ 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
- * negation
-20D3 COMBINING SHORT VERTICAL LINE OVERLAY
- * occasional variant for 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
-20E4 COMBINING ENCLOSING UPWARD POINTING TRIANGLE
- x (white up-pointing triangle - 25B3)
-@ Additional diacritical marks for symbols
-20E5 COMBINING REVERSE SOLIDUS OVERLAY
- x (reverse solidus - 005C)
-20E6 COMBINING DOUBLE VERTICAL STROKE OVERLAY
- = z notation finite function diacritic
- x (double vertical line - 2016)
-20E7 COMBINING ANNUITY SYMBOL
- = actuarial bend
- x (right ceiling - 2309)
-20E8 COMBINING TRIPLE UNDERDOT
-20E9 COMBINING WIDE BRIDGE ABOVE
- = contraction operator
- * extends the full width of the base character
- x (combining bridge above - 0346)
-20EA COMBINING LEFTWARDS ARROW OVERLAY
- x (leftwards arrow - 2190)
-20EB COMBINING LONG DOUBLE SOLIDUS OVERLAY
- = long double slash overlay
-@@ 2100 Letterlike Symbols 214F
-@ Letterlike symbols
-@+ Some of the letterlike symbols are intended to complete the set of mathematical alphanumeric symbols starting at U+1D400.
-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 operator
- # <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 transform
- # <font> 004C latin capital letter l
-2113 SCRIPT SMALL L
- = mathematical symbol 'ell'
- = liter (traditional symbol)
- * despite its character name, this symbol is derived from a special italicized version of the small letter l
- * the SI recommended symbol for liter is 006C
- x (mathematical script small l - 1D4C1)
- # <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
- * typical forms for this symbol may use lower case, small caps or superscripted letter shapes
- # 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
- * SI unit of resistance, named after G. S. Ohm, German physicist
- * preferred representation is 03A9
- : 03A9 greek capital letter omega
-2127 INVERTED OHM SIGN
- = MHO
- * archaic unit of conductance (= the SI unit siemens)
- * 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
- * non SI length unit (=0.1 nm) named after A. J. Ångström, Swedish physicist
- * preferred representation is 00C5
- : 00C5 latin capital letter a with ring above
-212C SCRIPT CAPITAL B
- = 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
- = natural exponent
- # <font> 0065 latin small letter e
-2130 SCRIPT CAPITAL E
- = emf (electromotive 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
-@+ These are left-to-right characters.
-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
-213B FACSIMILE SIGN
- * typical forms for this symbol may use lower case, small caps or superscripted letter shapes
- x (telephone sign - 2121)
- # 0046 0041 0058
-213C DOUBLE-STRUCK SMALL PI
- # <font> 03C0 greek small letter pi
-213D DOUBLE-STRUCK SMALL GAMMA
- # <font> 03B3 greek small letter gamma
-213E DOUBLE-STRUCK CAPITAL GAMMA
- # <font> 0393 greek capital letter gamma
-213F DOUBLE-STRUCK CAPITAL PI
- # <font> 03A0 greek capital letter pi
-@ Double-struck large operator
-2140 DOUBLE-STRUCK N-ARY SUMMATION
- # <font> 2211 n-ary summation
-@ Additional letterlike symbols
-2141 TURNED SANS-SERIF CAPITAL G
- = game
-2142 TURNED SANS-SERIF CAPITAL L
-2143 REVERSED SANS-SERIF CAPITAL L
-2144 TURNED SANS-SERIF CAPITAL Y
-@ Double-struck italic mathematical symbols
-@+ These stylized mathematical symbols are used in some documents to distinguish special mathematical usages from ordinary variables.
-2145 DOUBLE-STRUCK ITALIC CAPITAL D
- * sometimes used for the differential
- # <font> 0044 latin capital letter d
-2146 DOUBLE-STRUCK ITALIC SMALL D
- * sometimes used for the differential
- # <font> 0064 latin small letter d
-2147 DOUBLE-STRUCK ITALIC SMALL E
- * sometimes used for the natural exponent
- # <font> 0065 latin small letter e
-2148 DOUBLE-STRUCK ITALIC SMALL I
- * sometimes used for the imaginary unit
- # <font> 0069 latin small letter i
-2149 DOUBLE-STRUCK ITALIC SMALL J
- * sometimes used for the imaginary unit
- # <font> 006A latin small letter j
-@ Additional letterlike symbols
-214A PROPERTY LINE
-214B TURNED AMPERSAND
- * used in linear logic
- x (ampersand - 0026)
-214C PER SIGN
- * abbreviates the word 'per'
-@@ 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
- # <fraction> 0031 2044 0033
-2154 VULGAR FRACTION TWO THIRDS
- # <fraction> 0032 2044 0033
-2155 VULGAR FRACTION ONE FIFTH
- # <fraction> 0031 2044 0035
-2156 VULGAR FRACTION TWO FIFTHS
- # <fraction> 0032 2044 0035
-2157 VULGAR FRACTION THREE FIFTHS
- # <fraction> 0033 2044 0035
-2158 VULGAR FRACTION FOUR FIFTHS
- # <fraction> 0034 2044 0035
-2159 VULGAR FRACTION ONE SIXTH
- # <fraction> 0031 2044 0036
-215A VULGAR FRACTION FIVE SIXTHS
- # <fraction> 0035 2044 0036
-215B VULGAR FRACTION ONE EIGHTH
- # <fraction> 0031 2044 0038
-215C VULGAR FRACTION THREE EIGHTHS
- # <fraction> 0033 2044 0038
-215D VULGAR FRACTION FIVE EIGHTHS
- # <fraction> 0035 2044 0038
-215E VULGAR FRACTION SEVEN EIGHTHS
- # <fraction> 0037 2044 0038
-215F FRACTION NUMERATOR ONE
- # <fraction> 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
- = apostrophic C
- * used in combination with C and I to form large numbers
-@@ 2190 Arrows 21FF
-@ Arrows
-2190 LEFTWARDS ARROW
- x (combining leftwards arrow overlay - 20EA)
-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
- = fast cursor left
-219F UPWARDS TWO HEADED ARROW
- = fast cursor up
-21A0 RIGHTWARDS TWO HEADED ARROW
- = z notation total surjection
- = fast cursor right
-21A1 DOWNWARDS TWO HEADED ARROW
- = form feed
- = fast cursor down
-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
- * may indicate a carriage return or new line
- x (return symbol - 23CE)
-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
-21F4 RIGHT ARROW WITH SMALL CIRCLE
-21F5 DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW
-21F6 THREE RIGHTWARDS ARROWS
-21F7 LEFTWARDS ARROW WITH VERTICAL STROKE
-21F8 RIGHTWARDS ARROW WITH VERTICAL STROKE
- = z notation partial function
-21F9 LEFT RIGHT ARROW WITH VERTICAL STROKE
- = z notation partial relation
-21FA LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE
-21FB RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE
- = z notation finite function
-21FC LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE
- = z notation finite relation
-21FD LEFTWARDS OPEN-HEADED ARROW
-21FE RIGHTWARDS OPEN-HEADED ARROW
-21FF LEFT RIGHT OPEN-HEADED ARROW
-@@ 2200 Mathematical Operators 22FF
-@ Miscellaneous mathematical symbols
-2200 FOR ALL
- = universal quantifier
-2201 COMPLEMENT
- x (latin letter stretched c - 0297)
-2202 PARTIAL DIFFERENTIAL
-2203 THERE EXISTS
- = existential quantifier
-2204 THERE DOES NOT EXIST
- : 2203 0338
-2205 EMPTY SET
- = null set
- * used in linguistics to indicate a null morpheme or phonological "zero"
- 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
- = backward difference
- = gradient, del
- * used for Laplacian operator (written with superscript 2)
- x (white down-pointing triangle - 25BD)
-@ Set membership
-2208 ELEMENT OF
-2209 NOT AN ELEMENT OF
- : 2208 0338
-220A SMALL ELEMENT OF
- * originates in math pi fonts; not the straight epsilon
- x (greek lunate epsilon symbol - 03F5)
-220B CONTAINS AS MEMBER
- = such that
-220C DOES NOT CONTAIN AS MEMBER
- : 220B 0338
-220D SMALL CONTAINS AS MEMBER
- x (greek reversed lunate epsilon symbol - 03F6)
-@ Miscellaneous mathematical symbol
-220E END OF PROOF
- = Q.E.D.
- x (triangular bullet - 2023)
- x (black vertical rectangle - 25AE)
-@ N-ary operators
-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)
-@ Operators
-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)
-@ Miscellaneous mathematical symbols
-221E INFINITY
-221F RIGHT ANGLE
-2220 ANGLE
-2221 MEASURED ANGLE
-2222 SPHERICAL ANGLE
- = angle arc
-@ Operators
-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
-@ Logical and set operators
-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)
-@ Integrals
-222B INTEGRAL
- x (latin small letter esh - 0283)
-222C DOUBLE INTEGRAL
- # 222B 222B
-222D TRIPLE INTEGRAL
- x (quadruple integral operator - 2A0C)
- # 222B 222B 222B
-222E CONTOUR INTEGRAL
- x (integral around a point operator - 2A15)
-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
-@ Miscellaneous mathematical symbols
-2234 THEREFORE
-2235 BECAUSE
-@ Relations
-2236 RATIO
- x (colon - 003A)
-2237 PROPORTION
-@ Operator
-2238 DOT MINUS
- = symmetric difference
-@ Relation
-2239 EXCESS
-@ Operator
-223A GEOMETRIC PROPORTION
-@ Relations
-223B HOMOTHETIC
- x (tilde operator with rising dots - 2A6B)
-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
-@ Miscellaneous mathematical symbol
-223F SINE WAVE
- = alternating current
-@ Operator
-2240 WREATH PRODUCT
-@ Relations
-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
-@ Operators
-228C MULTISET
-228D MULTISET MULTIPLICATION
- x (n-ary union operator with dot - 2A03)
- x (intersection with dot - 2A40)
-228E MULTISET UNION
- = z notation bag addition
- x (n-ary union operator with plus - 2A04)
-@ Relations
-228F SQUARE IMAGE OF
-2290 SQUARE ORIGINAL OF
-2291 SQUARE IMAGE OF OR EQUAL TO
-2292 SQUARE ORIGINAL OF OR EQUAL TO
-@ Operators
-2293 SQUARE CAP
- x (n-ary square intersection operator - 2A05)
-2294 SQUARE CUP
-2295 CIRCLED PLUS
- = direct sum
- = vector pointing into page
- x (earth - 2641)
- x (n-ary circled plus operator - 2A01)
-2296 CIRCLED MINUS
- = symmetric difference
- x (circle with horizontal bar - 29B5)
-2297 CIRCLED TIMES
- = tensor product
- = vector pointing into page
- x (n-ary circled times operator - 2A02)
-2298 CIRCLED DIVISION SLASH
-2299 CIRCLED DOT OPERATOR
- = direct product
- = vector pointing out of page
- x (latin letter bilabial click - 0298)
- x (sun - 2609)
- x (n-ary circled dot operator - 2A00)
-229A CIRCLED RING OPERATOR
- x (apl functional symbol circle jot - 233E)
- x (bullseye - 25CE)
-229B CIRCLED ASTERISK OPERATOR
- x (apl functional symbol circle star - 235F)
-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
-@ Miscellaneous mathematical symbols
-22A4 DOWN TACK
- = top
-22A5 UP TACK
- = base, bottom
- x (perpendicular - 27C2)
-@ Relations
-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
-@ Operators
-22BA INTERCALATE
-22BB XOR
-22BC NAND
- x (projective - 2305)
-22BD NOR
-@ Miscellaneous mathematical symbols
-22BE RIGHT ANGLE WITH ARC
-22BF RIGHT TRIANGLE
-@ N-ary operators
-22C0 N-ARY LOGICAL AND
- * also used to denote the universal quantifier
- x (logical and - 2227)
-22C1 N-ARY LOGICAL OR
- * also used to denote the existential quantifier
- 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)
-@ Operators
-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
-@ Relation
-22C8 BOWTIE
- x (ocr bow tie - 2445)
-@ Operators
-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)
-@ Relation
-22CD REVERSED TILDE EQUALS
-@ Logical operators
-22CE CURLY LOGICAL OR
-22CF CURLY LOGICAL AND
-@ Relations
-22D0 DOUBLE SUBSET
-22D1 DOUBLE SUPERSET
-@ Operators
-22D2 DOUBLE INTERSECTION
-22D3 DOUBLE UNION
-@ Relations
-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 (tricolon - 205D)
- x (horizontal ellipsis - 2026)
- x (presentation form for vertical horizontal ellipsis - FE19)
-22EF MIDLINE HORIZONTAL ELLIPSIS
-22F0 UP RIGHT DIAGONAL ELLIPSIS
-22F1 DOWN RIGHT DIAGONAL ELLIPSIS
-22F2 ELEMENT OF WITH LONG HORIZONTAL STROKE
-22F3 ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22F4 SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22F5 ELEMENT OF WITH DOT ABOVE
-22F6 ELEMENT OF WITH OVERBAR
-22F7 SMALL ELEMENT OF WITH OVERBAR
-22F8 ELEMENT OF WITH UNDERBAR
-22F9 ELEMENT OF WITH TWO HORIZONTAL STROKES
-22FA CONTAINS WITH LONG HORIZONTAL STROKE
-22FB CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22FC SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22FD CONTAINS WITH OVERBAR
-22FE SMALL CONTAINS WITH OVERBAR
-22FF Z NOTATION BAG MEMBERSHIP
-@@ 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)
-@ Corner brackets
-@+ The ceiling and floor characters are recommended for general-purpose corner brackets, rather than the CJK corner brackets, which are wide quotation marks.
-2308 LEFT CEILING
- = APL upstile
- x (left corner bracket - 300C)
-2309 RIGHT CEILING
- x (combining annuity symbol - 20E7)
-230A LEFT FLOOR
- = APL downstile
-230B RIGHT FLOOR
- x (right corner bracket - 300D)
-@ Crops
-230C BOTTOM RIGHT CROP
- * set of four "crop" corners, arranged facing outward
-230D BOTTOM LEFT CROP
-230E TOP RIGHT CROP
-230F TOP LEFT CROP
-@ Miscellaneous technical
-2310 REVERSED NOT SIGN
- = beginning of line
- x (not sign - 00AC)
-2311 SQUARE LOZENGE
- = Kissen (pillow)
- * used as a command delimiter in some very old computers
-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
-@ GUI icons
-231A WATCH
-231B HOURGLASS
-@ Quine corners
-231C TOP LEFT CORNER
- * set of four "quine" corners, for quincuncial arrangement
-231D TOP RIGHT CORNER
-231E BOTTOM LEFT CORNER
-231F BOTTOM RIGHT CORNER
-@ Integral pieces
-2320 TOP HALF INTEGRAL
- x (integral extension - 23AE)
-2321 BOTTOM HALF INTEGRAL
-@ Frown and smile
-2322 FROWN
- x (character tie - 2040)
-2323 SMILE
- x (undertie - 203F)
-@ Keyboard symbols
-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
-@ Angle brackets
-@+ These are discouraged for mathematical use because of their canonical equivalence to CJK punctuation.
-2329 LEFT-POINTING ANGLE BRACKET
- x (less-than sign - 003C)
- x (single left-pointing angle quotation mark - 2039)
- x (mathematical left angle bracket - 27E8)
- : 3008 left angle bracket
-232A RIGHT-POINTING ANGLE BRACKET
- x (greater-than sign - 003E)
- x (single right-pointing angle quotation mark - 203A)
- x (mathematical right angle bracket - 27E9)
- : 3009 right angle bracket
-@ Keyboard symbol
-232B ERASE TO THE LEFT
- = DELETE TO THE LEFT KEY
-@ Chemistry symbol
-232C BENZENE RING
-@ Drafting symbols
-232D CYLINDRICITY
-232E ALL AROUND-PROFILE
-232F SYMMETRY
-2330 TOTAL RUNOUT
-2331 DIMENSION ORIGIN
-2332 CONICAL TAPER
-2333 SLOPE
- x (lower left triangle - 25FA)
-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)
- x (n-ary white vertical bar - 2AFF)
-2338 APL FUNCTIONAL SYMBOL QUAD EQUAL
-2339 APL FUNCTIONAL SYMBOL QUAD DIVIDE
-233A APL FUNCTIONAL SYMBOL QUAD DIAMOND
-233B APL FUNCTIONAL SYMBOL QUAD JOT
- x (squared small circle - 29C7)
-233C APL FUNCTIONAL SYMBOL QUAD CIRCLE
-233D APL FUNCTIONAL SYMBOL CIRCLE STILE
-233E APL FUNCTIONAL SYMBOL CIRCLE JOT
- x (circled ring operator - 229A)
- x (circled white bullet - 29BE)
-233F APL FUNCTIONAL SYMBOL SLASH BAR
-2340 APL FUNCTIONAL SYMBOL BACKSLASH BAR
-2341 APL FUNCTIONAL SYMBOL QUAD SLASH
- x (squared rising diagonal slash - 29C4)
-2342 APL FUNCTIONAL SYMBOL QUAD BACKSLASH
- x (squared falling diagonal slash - 29C5)
-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
- x (reversed empty set - 29B0)
-234A APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR *
- = up tack underbar
- * preferred naming for APL tack symbols now follows the London Convention in ISO/IEC 13751:2000 (APL Extended)
- 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 *
- = up tack jot
- x (up tack - 22A5)
-234F APL FUNCTIONAL SYMBOL UPWARDS VANE
-2350 APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW
-2351 APL FUNCTIONAL SYMBOL UP TACK OVERBAR *
- = down 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 *
- = down tack jot
- x (down tack - 22A4)
-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
- x (intersection with dot - 2A40)
-235E APL FUNCTIONAL SYMBOL QUOTE QUAD
-235F APL FUNCTIONAL SYMBOL CIRCLE STAR
- x (circled asterisk operator - 229B)
-2360 APL FUNCTIONAL SYMBOL QUAD COLON
-2361 APL FUNCTIONAL SYMBOL UP TACK DIAERESIS *
- = down tack diaeresis
- x (down tack - 22A4)
-2362 APL FUNCTIONAL SYMBOL DEL DIAERESIS
-2363 APL FUNCTIONAL SYMBOL STAR DIAERESIS
-2364 APL FUNCTIONAL SYMBOL JOT DIAERESIS
- = hoot
-2365 APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS
- = holler
-2366 APL FUNCTIONAL SYMBOL DOWN SHOE STILE
-2367 APL FUNCTIONAL SYMBOL LEFT SHOE STILE
-2368 APL FUNCTIONAL SYMBOL TILDE DIAERESIS
- = smirk
-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
-@ Miscellaneous technical
-237C RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
-@ Graphics for control codes
-237D SHOULDERED OPEN BOX
- * from ISO 9995-7
- * keyboard symbol for No Break Space
- x (open box - 2423)
-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
- = center
-2386 ENTER SYMBOL
-2387 ALTERNATIVE KEY SYMBOL
-2388 HELM SYMBOL
- = control
- x (wheel of dharma - 2638)
-2389 CIRCLED HORIZONTAL BAR WITH NOTCH (pause)
- = pause
-238A CIRCLED TRIANGLE DOWN (break)
- = interrupt
-238B BROKEN CIRCLE WITH NORTHWEST ARROW (escape)
- = 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)
-@ Bracket pieces
-239B LEFT PARENTHESIS UPPER HOOK
-239C LEFT PARENTHESIS EXTENSION
-239D LEFT PARENTHESIS LOWER HOOK
-239E RIGHT PARENTHESIS UPPER HOOK
-239F RIGHT PARENTHESIS EXTENSION
-23A0 RIGHT PARENTHESIS LOWER HOOK
-23A1 LEFT SQUARE BRACKET UPPER CORNER
-23A2 LEFT SQUARE BRACKET EXTENSION
-23A3 LEFT SQUARE BRACKET LOWER CORNER
-23A4 RIGHT SQUARE BRACKET UPPER CORNER
-23A5 RIGHT SQUARE BRACKET EXTENSION
-23A6 RIGHT SQUARE BRACKET LOWER CORNER
-23A7 LEFT CURLY BRACKET UPPER HOOK
-23A8 LEFT CURLY BRACKET MIDDLE PIECE
-23A9 LEFT CURLY BRACKET LOWER HOOK
-23AA CURLY BRACKET EXTENSION
-23AB RIGHT CURLY BRACKET UPPER HOOK
-23AC RIGHT CURLY BRACKET MIDDLE PIECE
-23AD RIGHT CURLY BRACKET LOWER HOOK
-@ Special character extensions
-23AE INTEGRAL EXTENSION
- x (top half integral - 2320)
- x (bottom half integral - 2321)
-23AF HORIZONTAL LINE EXTENSION
- * used for extension of arrows
- x (vertical line extension - 23D0)
-@ Bracket pieces
-23B0 UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION
- = left moustache
-23B1 UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION
- = right moustache
-@ Summation sign parts
-23B2 SUMMATION TOP
-23B3 SUMMATION BOTTOM
-@ Vertical brackets
-23B4 TOP SQUARE BRACKET
- x (presentation form for vertical left square bracket - FE47)
-23B5 BOTTOM SQUARE BRACKET
- x (presentation form for vertical right square bracket - FE48)
-23B6 BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET
-@ Terminal graphic characters
-23B7 RADICAL SYMBOL BOTTOM
-23B8 LEFT VERTICAL BOX LINE
-23B9 RIGHT VERTICAL BOX LINE
-@ Scan lines for terminal graphics
-@+ The scan line numbers here refer to old, low-resolution technology for terminals, with only 9 scan lines per fixed-size character glyph. Even-numbered scan lines are unified with box-drawing graphics.
-23BA HORIZONTAL SCAN LINE-1
-23BB HORIZONTAL SCAN LINE-3
-23BC HORIZONTAL SCAN LINE-7
-23BD HORIZONTAL SCAN LINE-9
-@ Dentistry notation symbols
-23BE DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT
- x (left ceiling - 2308)
-23BF DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT
- x (left floor - 230A)
-23C0 DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE
-23C1 DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE
-23C2 DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE
-23C3 DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE
-23C4 DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE
-23C5 DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE
-23C6 DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE
-23C7 DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE
-23C8 DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE
-23C9 DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL
- x (down tack - 22A4)
- x (box drawings light down and horizontal - 252C)
-23CA DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL
- x (up tack - 22A5)
- x (box drawings light up and horizontal - 2534)
-23CB DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT
- x (right ceiling - 2309)
-23CC DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT
- x (right floor - 230B)
-@ Miscellaneous technical symbol
-23CD SQUARE FOOT
-@ Keyboard and UI symbols
-23CE RETURN SYMBOL
- * may be shown with either hollow or filled glyph
- x (downwards arrow with corner leftwards - 21B5)
-23CF EJECT SYMBOL
- * UI symbol to eject media
-@ Special character extension
-23D0 VERTICAL LINE EXTENSION
- * used for extension of arrows
- x (horizontal line extension - 23AF)
-@ Metrical symbols
-23D1 METRICAL BREVE
-23D2 METRICAL LONG OVER SHORT
-23D3 METRICAL SHORT OVER LONG
-23D4 METRICAL LONG OVER TWO SHORTS
-23D5 METRICAL TWO SHORTS OVER LONG
-23D6 METRICAL TWO SHORTS JOINED
-23D7 METRICAL TRISEME
- x (combining greek musical triseme - 1D242)
-23D8 METRICAL TETRASEME
- x (combining greek musical tetraseme - 1D243)
-23D9 METRICAL PENTASEME
- x (combining greek musical pentaseme - 1D244)
-@ Electrotechnical symbols
-23DA EARTH GROUND
-23DB FUSE
-@@ 2400 Control Pictures 243F
-@+ The diagonal lettering glyphs are only exemplary; alternate representations may be, and often are used in the visible display of control codes.
-@ Graphic pictures for control codes
-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
-@ Specific symbols for space
-2422 BLANK SYMBOL
- * graphic for space
- x (latin small letter b with stroke - 0180)
-2423 OPEN BOX
- * graphic for space
- x (counterbore - 2334)
-@ Graphic picture for control code
-2424 SYMBOL FOR NEWLINE
-@ Keyboard symbol
-2425 SYMBOL FOR DELETE FORM TWO
- * from ISO 9995-7
- * keyboard symbol for undoable delete
-@ Specific symbol for control code
-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 number
-24EA CIRCLED DIGIT ZERO
- # <circle> 0030
-@ White on black circled numbers
-24EB NEGATIVE CIRCLED NUMBER ELEVEN
-24EC NEGATIVE CIRCLED NUMBER TWELVE
-24ED NEGATIVE CIRCLED NUMBER THIRTEEN
-24EE NEGATIVE CIRCLED NUMBER FOURTEEN
-24EF NEGATIVE CIRCLED NUMBER FIFTEEN
-24F0 NEGATIVE CIRCLED NUMBER SIXTEEN
-24F1 NEGATIVE CIRCLED NUMBER SEVENTEEN
-24F2 NEGATIVE CIRCLED NUMBER EIGHTEEN
-24F3 NEGATIVE CIRCLED NUMBER NINETEEN
-24F4 NEGATIVE CIRCLED NUMBER TWENTY
-@ Double circled numbers
-24F5 DOUBLE CIRCLED DIGIT ONE
-24F6 DOUBLE CIRCLED DIGIT TWO
-24F7 DOUBLE CIRCLED DIGIT THREE
-24F8 DOUBLE CIRCLED DIGIT FOUR
-24F9 DOUBLE CIRCLED DIGIT FIVE
-24FA DOUBLE CIRCLED DIGIT SIX
-24FB DOUBLE CIRCLED DIGIT SEVEN
-24FC DOUBLE CIRCLED DIGIT EIGHT
-24FD DOUBLE CIRCLED DIGIT NINE
-24FE DOUBLE CIRCLED NUMBER TEN
-@ Additional white on black circled number
-24FF NEGATIVE CIRCLED DIGIT ZERO
- x (dingbat negative circled digit one - 2776)
-@@ 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
-@ Terminal graphic characters
-2596 QUADRANT LOWER LEFT
-2597 QUADRANT LOWER RIGHT
-2598 QUADRANT UPPER LEFT
-2599 QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT
-259A QUADRANT UPPER LEFT AND LOWER RIGHT
-259B QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT
-259C QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT
-259D QUADRANT UPPER RIGHT
-259E QUADRANT UPPER RIGHT AND LOWER LEFT
-259F QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT
-@@ 25A0 Geometric Shapes 25FF
-@ Geometric shapes
-25A0 BLACK SQUARE
- = moding mark (in ideographic text)
- x (full block - 2588)
-25A1 WHITE SQUARE
- = quadrature
- * may be used to represent a missing ideograph
- x (combining enclosing square - 20DE)
- x (ballot box - 2610)
- x (geta mark - 3013)
-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 (combining enclosing upward pointing triangle - 20E4)
- 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
- = Hamilton operator
- 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
- * note that the reference glyph for this character is intentionally larger than the dotted circle glyph used to indicate combining characters in this standard; see, for example, 0300
-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
- x (square with top half black - 2B12)
-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
-@ Geometric shapes
-25F8 UPPER LEFT TRIANGLE
-25F9 UPPER RIGHT TRIANGLE
-25FA LOWER LEFT TRIANGLE
- x (right triangle - 22BF)
-25FB WHITE MEDIUM SQUARE
- = always (modal operator)
- x (white square - 25A1)
-25FC BLACK MEDIUM SQUARE
- x (black square - 25A0)
-25FD WHITE MEDIUM SMALL SQUARE
- x (white small square - 25AB)
-25FE BLACK MEDIUM SMALL SQUARE
- x (black small square - 25AA)
-25FF LOWER RIGHT TRIANGLE
- x (right triangle - 22BF)
-@@ 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)
-@ Weather symbol
-2614 UMBRELLA WITH RAIN DROPS
- = showery weather
-@ Miscellaneous symbol
-2615 HOT BEVERAGE
- = tea or coffee, depending on locale
- * can be used to indicate a wait
- x (watch - 231A)
- x (hourglass - 231B)
-@ Japanese chess symbols
-2616 WHITE SHOGI PIECE
-2617 BLACK SHOGI PIECE
-@ Miscellaneous symbols
-2618 SHAMROCK
-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
- x (staff of aesculapius - 2695)
-2625 ANKH
-@ Religious and political symbols
-2626 ORTHODOX CROSS
-2627 CHI RHO
- = Constantine's cross, Christogram
- x (coptic symbol khi ro - 2CE9)
-2628 CROSS OF LORRAINE
-2629 CROSS OF JERUSALEM
-262A STAR AND CRESCENT
-262B FARSI SYMBOL
- = SYMBOL OF IRAN
-262C ADI SHAKTI
- = Gurmukhi khanda
-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
- x (number sign - 0023)
-@ Syriac cross symbols
-@+ These symbols are used in liturgical texts of Syriac-speaking churches.
-2670 WEST SYRIAC CROSS
-2671 EAST SYRIAC CROSS
-@ Recycling symbols
-2672 UNIVERSAL RECYCLING SYMBOL
- * used as generic symbol for recycling or to indicate that material is recyclable
-2673 RECYCLING SYMBOL FOR TYPE-1 PLASTICS (pete)
- * polyethylene terephthalate
-2674 RECYCLING SYMBOL FOR TYPE-2 PLASTICS (hdpe)
- * high density polyethylene
-2675 RECYCLING SYMBOL FOR TYPE-3 PLASTICS (pvc)
- * vinyl, polyvinyl chloride
-2676 RECYCLING SYMBOL FOR TYPE-4 PLASTICS (ldpe)
- * low density polyethylene
-2677 RECYCLING SYMBOL FOR TYPE-5 PLASTICS (pp)
- * polypropylene
-2678 RECYCLING SYMBOL FOR TYPE-6 PLASTICS (ps)
- * polystyrene
-2679 RECYCLING SYMBOL FOR TYPE-7 PLASTICS (other)
- * other plastics
-267A RECYCLING SYMBOL FOR GENERIC MATERIALS
- * used together with other text and labels to indicate the type of material to be recycled
-267B BLACK UNIVERSAL RECYCLING SYMBOL
-267C RECYCLED PAPER SYMBOL
- * used to indicate 100% recycled paper content
-267D PARTIALLY-RECYCLED PAPER SYMBOL
- * percentage of recycled paper content indicated in overlay or next to this symbol
-@ Miscellaneous symbols
-267E PERMANENT PAPER SIGN
-267F WHEELCHAIR SYMBOL
-@ Dice
-2680 DIE FACE-1
-2681 DIE FACE-2
-2682 DIE FACE-3
-2683 DIE FACE-4
-2684 DIE FACE-5
-2685 DIE FACE-6
-@ Go markers
-2686 WHITE CIRCLE WITH DOT RIGHT
-2687 WHITE CIRCLE WITH TWO DOTS
-2688 BLACK CIRCLE WITH WHITE DOT RIGHT
-2689 BLACK CIRCLE WITH TWO WHITE DOTS
-@ Yijing monogram and digram symbols
-268A MONOGRAM FOR YANG
-268B MONOGRAM FOR YIN
-268C DIGRAM FOR GREATER YANG
-268D DIGRAM FOR LESSER YIN
-268E DIGRAM FOR LESSER YANG
-268F DIGRAM FOR GREATER YIN
-@ Dictionary and map symbols
-2690 WHITE FLAG
-2691 BLACK FLAG
-2692 HAMMER AND PICK
- = mining, working day (in timetables)
-2693 ANCHOR
- = nautical term, harbor (on maps)
-2694 CROSSED SWORDS
- = military term, battleground (on maps), killed in action
-2695 STAFF OF AESCULAPIUS
- = medical term
- * both inclined or upright renderings of this symbol are common
- x (caduceus - 2624)
-2696 SCALES
- = legal term, jurisprudence
-2697 ALEMBIC
- = chemical term, chemistry
-2698 FLOWER
- = botanical term
- x (flower punctuation mark - 2055)
- x (shamrock - 2618)
- x (white florette - 2740)
-2699 GEAR
- = technology, tools
-269A STAFF OF HERMES
- * signifies a commercial term or commerce
- * glyph shows a heraldic staff with a winged wheel
-269B ATOM SYMBOL
- = nuclear installation (on maps)
-@ Miscellaneous symbols
-269C FLEUR-DE-LIS
-26A0 WARNING SIGN
-26A1 HIGH VOLTAGE SIGN
-@ Gender symbols
-26A2 DOUBLED FEMALE SIGN
- = lesbianism
-26A3 DOUBLED MALE SIGN
- * a glyph variant has the two circles on the same line
- = male homosexuality
-26A4 INTERLOCKED FEMALE AND MALE SIGN
- * a glyph variant has the two circles on the same line
- = bisexuality
-26A5 MALE AND FEMALE SIGN
- = transgendered sexuality
- = hermaphrodite (in entomology)
-26A6 MALE WITH STROKE SIGN
- = transgendered sexuality
-26A7 MALE WITH STROKE AND MALE AND FEMALE SIGN
- = transgendered sexuality
-26A8 VERTICAL MALE WITH STROKE SIGN
- = ferrous iron sulphate (alchemy and older chemistry)
-26A9 HORIZONTAL MALE WITH STROKE SIGN
- = magnesium (alchemy and older chemistry)
-@ Circles
-26AA MEDIUM WHITE CIRCLE
- = asexuality, sexless, genderless
- = engaged, betrothed
- * base for male or female sign
-26AB MEDIUM BLACK CIRCLE
- * UI symbol for record function
-26AC MEDIUM SMALL WHITE CIRCLE
- = engaged, betrothed (genealogy)
- * can represent wedding ring
-@ Genealogical symbols
-26AD MARRIAGE SYMBOL
- x (infinity - 221E)
-26AE DIVORCE SYMBOL
- x (infinity negated with vertical bar - 29DE)
-26AF UNMARRIED PARTNERSHIP SYMBOL
- x (double-ended multimap - 29DF)
-26B0 COFFIN
- = buried (genealogy)
- x (white rectangle - 25AD)
-26B1 FUNERAL URN
- = cremated (genealogy)
-@@ 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
- * Historically, the Maltese cross took many forms; the shape shown in the Zapf Dingbats is similar to one known as the Cross Formée.
-@ Stars, asterisks and snowflakes
-2721 STAR OF DAVID
-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)
-@ Ornamental brackets
-2768 MEDIUM LEFT PARENTHESIS ORNAMENT
- x (left parenthesis - 0028)
-2769 MEDIUM RIGHT PARENTHESIS ORNAMENT
- x (right parenthesis - 0029)
-276A MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
-276B MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
-276C MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
- x (left-pointing angle bracket - 2329)
-276D MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
- x (right-pointing angle bracket - 232A)
-276E HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
- x (single left-pointing angle quotation mark - 2039)
-276F HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
- x (single right-pointing angle quotation mark - 203A)
-2770 HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
-2771 HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
-2772 LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
- x (left tortoise shell bracket - 3014)
-2773 LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
- x (right tortoise shell bracket - 3015)
-2774 MEDIUM LEFT CURLY BRACKET ORNAMENT
- x (left curly bracket - 007B)
-2775 MEDIUM RIGHT CURLY BRACKET ORNAMENT
- x (right curly bracket - 007D)
-@ Dingbat circled digits
-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
-@@ 27C0 Miscellaneous Mathematical Symbols-A 27EF
-@ Miscellaneous symbols
-27C0 THREE DIMENSIONAL ANGLE
- * used by Euclid
-27C1 WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE
- * used by Euclid
-27C2 PERPENDICULAR
- = orthogonal to
- * relation, typeset with additional spacing
- x (up tack - 22A5)
-27C3 OPEN SUBSET
-27C4 OPEN SUPERSET
-27C5 LEFT S-SHAPED BAG DELIMITER
-27C6 RIGHT S-SHAPED BAG DELIMITER
-27D0 WHITE DIAMOND WITH CENTRED DOT
-@ Operators
-27D1 AND WITH DOT
- x (logical and - 2227)
- x (intersection with dot - 2A40)
-27D2 ELEMENT OF OPENING UPWARDS
- x (element of opening downwards - 2AD9)
-27D3 LOWER RIGHT CORNER WITH DOT
- = pullback
- x (right floor - 230B)
-27D4 UPPER LEFT CORNER WITH DOT
- = pushout
- x (left ceiling - 2308)
-@ Database theory operators
-27D5 LEFT OUTER JOIN
-27D6 RIGHT OUTER JOIN
-27D7 FULL OUTER JOIN
- x (join - 2A1D)
-@ Tacks and turnstiles
-27D8 LARGE UP TACK
- x (up tack - 22A5)
-27D9 LARGE DOWN TACK
- x (down tack - 22A4)
-27DA LEFT AND RIGHT DOUBLE TURNSTILE
- x (true - 22A8)
- x (vertical bar double left turnstile - 2AE4)
-27DB LEFT AND RIGHT TACK
- x (right tack - 22A2)
-27DC LEFT MULTIMAP
- x (multimap - 22B8)
-27DD LONG RIGHT TACK
- x (right tack - 22A2)
-27DE LONG LEFT TACK
- x (left tack - 22A3)
-27DF UP TACK WITH CIRCLE ABOVE
- = radial component
- x (down tack with circle below - 2AF1)
-@ Modal logic operators
-27E0 LOZENGE DIVIDED BY HORIZONTAL RULE
- * used as form of possibility in modal logic
- x (lozenge - 25CA)
-27E1 WHITE CONCAVE-SIDED DIAMOND
- = never (modal operator)
-27E2 WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK
- = was never (modal operator)
-27E3 WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK
- = will never be (modal operator)
-27E4 WHITE SQUARE WITH LEFTWARDS TICK
- = was always (modal operator)
- x (white square - 25A1)
-27E5 WHITE SQUARE WITH RIGHTWARDS TICK
- = will always be (modal operator)
-@ Mathematical brackets
-27E6 MATHEMATICAL LEFT WHITE SQUARE BRACKET
- = z notation left bag bracket
- x (left white square bracket - 301A)
-27E7 MATHEMATICAL RIGHT WHITE SQUARE BRACKET
- = z notation right bag bracket
- x (right white square bracket - 301B)
-27E8 MATHEMATICAL LEFT ANGLE BRACKET
- = bra
- = z notation left sequence bracket
- x (left-pointing angle bracket - 2329)
- x (left angle bracket - 3008)
-27E9 MATHEMATICAL RIGHT ANGLE BRACKET
- = ket
- = z notation right sequence bracket
- x (right-pointing angle bracket - 232A)
- x (right angle bracket - 3009)
-27EA MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
- = z notation left chevron bracket
- x (left double angle bracket - 300A)
-27EB MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
- = z notation right chevron bracket
- x (right double angle bracket - 300B)
-@@ 27F0 Supplemental Arrows-A 27FF
-@ Arrows
-27F0 UPWARDS QUADRUPLE ARROW
- x (upwards triple arrow - 290A)
-27F1 DOWNWARDS QUADRUPLE ARROW
- x (downwards triple arrow - 290B)
-27F2 ANTICLOCKWISE GAPPED CIRCLE ARROW
- x (anticlockwise open circle arrow - 21BA)
- x (anticlockwise closed circle arrow - 2940)
-27F3 CLOCKWISE GAPPED CIRCLE ARROW
- x (clockwise open circle arrow - 21BB)
- x (clockwise closed circle arrow - 2941)
-27F4 RIGHT ARROW WITH CIRCLED PLUS
-@ Long arrows
-@+ The long arrows are used for mapping whereas the short forms would be used in limits. They are also needed for MathML to complete mapping to the ASMA sets.
-27F5 LONG LEFTWARDS ARROW
- x (leftwards arrow - 2190)
-27F6 LONG RIGHTWARDS ARROW
- x (rightwards arrow - 2192)
-27F7 LONG LEFT RIGHT ARROW
- x (left right arrow - 2194)
-27F8 LONG LEFTWARDS DOUBLE ARROW
- x (leftwards double arrow - 21D0)
-27F9 LONG RIGHTWARDS DOUBLE ARROW
- x (rightwards double arrow - 21D2)
-27FA LONG LEFT RIGHT DOUBLE ARROW
- x (left right double arrow - 21D4)
-27FB LONG LEFTWARDS ARROW FROM BAR
- = maps from
- x (leftwards arrow from bar - 21A4)
-27FC LONG RIGHTWARDS ARROW FROM BAR
- = maps to
- x (rightwards arrow from bar - 21A6)
-27FD LONG LEFTWARDS DOUBLE ARROW FROM BAR
- x (leftwards double arrow from bar - 2906)
-27FE LONG RIGHTWARDS DOUBLE ARROW FROM BAR
- x (rightwards double arrow from bar - 2907)
-27FF LONG RIGHTWARDS SQUIGGLE ARROW
- x (rightwards squiggle arrow - 21DD)
-@@ 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
-@@ 2900 Supplemental Arrows-B 297F
-@ Supplemental arrows
-2900 RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
- = z notation partial surjection
-2901 RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE
- = z notation finite surjection
-2902 LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE
-2903 RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE
-2904 LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE
-2905 RIGHTWARDS TWO-HEADED ARROW FROM BAR
- = maps to
-2906 LEFTWARDS DOUBLE ARROW FROM BAR
- = maps from
- x (long leftwards arrow from bar - 27FB)
-2907 RIGHTWARDS DOUBLE ARROW FROM BAR
- = maps to
- x (long rightwards arrow from bar - 27FC)
-2908 DOWNWARDS ARROW WITH HORIZONTAL STROKE
-2909 UPWARDS ARROW WITH HORIZONTAL STROKE
-290A UPWARDS TRIPLE ARROW
- x (upwards double arrow - 21D1)
- x (upwards quadruple arrow - 27F0)
-290B DOWNWARDS TRIPLE ARROW
- x (downwards double arrow - 21D3)
- x (downwards quadruple arrow - 27F1)
-290C LEFTWARDS DOUBLE DASH ARROW
-290D RIGHTWARDS DOUBLE DASH ARROW
-290E LEFTWARDS TRIPLE DASH ARROW
-290F RIGHTWARDS TRIPLE DASH ARROW
-2910 RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW
-2911 RIGHTWARDS ARROW WITH DOTTED STEM
-2912 UPWARDS ARROW TO BAR
-2913 DOWNWARDS ARROW TO BAR
-2914 RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE
- = z notation partial injection
-2915 RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
- = z notation finite injection
-2916 RIGHTWARDS TWO-HEADED ARROW WITH TAIL
- = bijective mapping
- = z notation bijection
-2917 RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE
- = z notation surjective injection
-2918 RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
- = z notation finite surjective injection
-2919 LEFTWARDS ARROW-TAIL
-291A RIGHTWARDS ARROW-TAIL
-291B LEFTWARDS DOUBLE ARROW-TAIL
-291C RIGHTWARDS DOUBLE ARROW-TAIL
-291D LEFTWARDS ARROW TO BLACK DIAMOND
-291E RIGHTWARDS ARROW TO BLACK DIAMOND
-291F LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND
-2920 RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND
-2921 NORTH WEST AND SOUTH EAST ARROW
-2922 NORTH EAST AND SOUTH WEST ARROW
-2923 NORTH WEST ARROW WITH HOOK
-2924 NORTH EAST ARROW WITH HOOK
-2925 SOUTH EAST ARROW WITH HOOK
-2926 SOUTH WEST ARROW WITH HOOK
-2927 NORTH WEST ARROW AND NORTH EAST ARROW
-2928 NORTH EAST ARROW AND SOUTH EAST ARROW
-2929 SOUTH EAST ARROW AND SOUTH WEST ARROW
-292A SOUTH WEST ARROW AND NORTH WEST ARROW
-292B RISING DIAGONAL CROSSING FALLING DIAGONAL
-292C FALLING DIAGONAL CROSSING RISING DIAGONAL
-292D SOUTH EAST ARROW CROSSING NORTH EAST ARROW
-292E NORTH EAST ARROW CROSSING SOUTH EAST ARROW
-292F FALLING DIAGONAL CROSSING NORTH EAST ARROW
-2930 RISING DIAGONAL CROSSING SOUTH EAST ARROW
-2931 NORTH EAST ARROW CROSSING NORTH WEST ARROW
-2932 NORTH WEST ARROW CROSSING NORTH EAST ARROW
-2933 WAVE ARROW POINTING DIRECTLY RIGHT
- x (rightwards wave arrow - 219D)
-2934 ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS
-2935 ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS
-2936 ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS
-2937 ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS
-2938 RIGHT-SIDE ARC CLOCKWISE ARROW
-2939 LEFT-SIDE ARC ANTICLOCKWISE ARROW
-293A TOP ARC ANTICLOCKWISE ARROW
-293B BOTTOM ARC ANTICLOCKWISE ARROW
-293C TOP ARC CLOCKWISE ARROW WITH MINUS
-293D TOP ARC ANTICLOCKWISE ARROW WITH PLUS
-293E LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW
-293F LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW
-2940 ANTICLOCKWISE CLOSED CIRCLE ARROW
- x (combining anticlockwise ring overlay - 20DA)
-2941 CLOCKWISE CLOSED CIRCLE ARROW
- x (combining clockwise ring overlay - 20D9)
-2942 RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW
-2943 LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW
-2944 SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW
-2945 RIGHTWARDS ARROW WITH PLUS BELOW
-2946 LEFTWARDS ARROW WITH PLUS BELOW
-2947 RIGHTWARDS ARROW THROUGH X
-2948 LEFT RIGHT ARROW THROUGH SMALL CIRCLE
-2949 UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE
-294A LEFT BARB UP RIGHT BARB DOWN HARPOON
-294B LEFT BARB DOWN RIGHT BARB UP HARPOON
-294C UP BARB RIGHT DOWN BARB LEFT HARPOON
-294D UP BARB LEFT DOWN BARB RIGHT HARPOON
-294E LEFT BARB UP RIGHT BARB UP HARPOON
-294F UP BARB RIGHT DOWN BARB RIGHT HARPOON
-2950 LEFT BARB DOWN RIGHT BARB DOWN HARPOON
-2951 UP BARB LEFT DOWN BARB LEFT HARPOON
-2952 LEFTWARDS HARPOON WITH BARB UP TO BAR
-2953 RIGHTWARDS HARPOON WITH BARB UP TO BAR
-2954 UPWARDS HARPOON WITH BARB RIGHT TO BAR
-2955 DOWNWARDS HARPOON WITH BARB RIGHT TO BAR
-2956 LEFTWARDS HARPOON WITH BARB DOWN TO BAR
-2957 RIGHTWARDS HARPOON WITH BARB DOWN TO BAR
-2958 UPWARDS HARPOON WITH BARB LEFT TO BAR
-2959 DOWNWARDS HARPOON WITH BARB LEFT TO BAR
-295A LEFTWARDS HARPOON WITH BARB UP FROM BAR
-295B RIGHTWARDS HARPOON WITH BARB UP FROM BAR
-295C UPWARDS HARPOON WITH BARB RIGHT FROM BAR
-295D DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR
-295E LEFTWARDS HARPOON WITH BARB DOWN FROM BAR
-295F RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR
-2960 UPWARDS HARPOON WITH BARB LEFT FROM BAR
-2961 DOWNWARDS HARPOON WITH BARB LEFT FROM BAR
-2962 LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN
-2963 UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
-2964 RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
-2965 DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
-2966 LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP
-2967 LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
-2968 RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP
-2969 RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN
-296A LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
-296B LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
-296C RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
-296D RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
-296E UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
-296F DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
-2970 RIGHT DOUBLE ARROW WITH ROUNDED HEAD
- x (superset of - 2283)
-2971 EQUALS SIGN ABOVE RIGHTWARDS ARROW
-2972 TILDE OPERATOR ABOVE RIGHTWARDS ARROW
-2973 LEFTWARDS ARROW ABOVE TILDE OPERATOR
-2974 RIGHTWARDS ARROW ABOVE TILDE OPERATOR
-2975 RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO
-2976 LESS-THAN ABOVE LEFTWARDS ARROW
-2977 LEFTWARDS ARROW THROUGH LESS-THAN
-2978 GREATER-THAN ABOVE RIGHTWARDS ARROW
-2979 SUBSET ABOVE RIGHTWARDS ARROW
-297A LEFTWARDS ARROW THROUGH SUBSET
-297B SUPERSET ABOVE LEFTWARDS ARROW
-@ Fish tails
-297C LEFT FISH TAIL
-297D RIGHT FISH TAIL
-297E UP FISH TAIL
-297F DOWN FISH TAIL
-@@ 2980 Miscellaneous Mathematical Symbols-B 29FF
-@ Miscellaneous mathematical symbols
-2980 TRIPLE VERTICAL BAR DELIMITER
- x (triple vertical bar binary relation - 2AF4)
- x (large triple vertical bar operator - 2AFC)
-2981 Z NOTATION SPOT
- * medium-small-sized black circle
- x (bullet operator - 2219)
- x (black circle - 25CF)
-2982 Z NOTATION TYPE COLON
- x (tibetan sign rnam bcad - 0F7F)
-@ Brackets
-2983 LEFT WHITE CURLY BRACKET
-2984 RIGHT WHITE CURLY BRACKET
-2985 LEFT WHITE PARENTHESIS
- x (fullwidth left white parenthesis - FF5F)
-2986 RIGHT WHITE PARENTHESIS
- * used for Bourbakist intervals
- x (fullwidth right white parenthesis - FF60)
-2987 Z NOTATION LEFT IMAGE BRACKET
-2988 Z NOTATION RIGHT IMAGE BRACKET
-2989 Z NOTATION LEFT BINDING BRACKET
-298A Z NOTATION RIGHT BINDING BRACKET
-298B LEFT SQUARE BRACKET WITH UNDERBAR
-298C RIGHT SQUARE BRACKET WITH UNDERBAR
-298D LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
-298E RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-298F LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-2990 RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
-2991 LEFT ANGLE BRACKET WITH DOT
-2992 RIGHT ANGLE BRACKET WITH DOT
-2993 LEFT ARC LESS-THAN BRACKET
-2994 RIGHT ARC GREATER-THAN BRACKET
-2995 DOUBLE LEFT ARC GREATER-THAN BRACKET
-2996 DOUBLE RIGHT ARC LESS-THAN BRACKET
-2997 LEFT BLACK TORTOISE SHELL BRACKET
- x (left tortoise shell bracket - 3014)
- x (left white tortoise shell bracket - 3018)
-2998 RIGHT BLACK TORTOISE SHELL BRACKET
-@ Fences
-2999 DOTTED FENCE
- * four close dots vertical
-299A VERTICAL ZIGZAG LINE
- x (wavy line - 2307)
-@ Angles
-299B MEASURED ANGLE OPENING LEFT
- x (measured angle - 2221)
-299C RIGHT ANGLE VARIANT WITH SQUARE
- x (right angle - 221F)
-299D MEASURED RIGHT ANGLE WITH DOT
-299E ANGLE WITH S INSIDE
-299F ACUTE ANGLE
-29A0 SPHERICAL ANGLE OPENING LEFT
- x (spherical angle - 2222)
-29A1 SPHERICAL ANGLE OPENING UP
-29A2 TURNED ANGLE
- x (angle - 2220)
-29A3 REVERSED ANGLE
-29A4 ANGLE WITH UNDERBAR
-29A5 REVERSED ANGLE WITH UNDERBAR
-29A6 OBLIQUE ANGLE OPENING UP
-29A7 OBLIQUE ANGLE OPENING DOWN
-29A8 MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT
-29A9 MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT
-29AA MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT
-29AB MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT
-29AC MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP
-29AD MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP
-29AE MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN
-29AF MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN
-@ Empty sets
-29B0 REVERSED EMPTY SET
- x (empty set - 2205)
- x (apl functional symbol circle backslash - 2349)
-29B1 EMPTY SET WITH OVERBAR
-29B2 EMPTY SET WITH SMALL CIRCLE ABOVE
-29B3 EMPTY SET WITH RIGHT ARROW ABOVE
-29B4 EMPTY SET WITH LEFT ARROW ABOVE
-@ Circle symbols
-29B5 CIRCLE WITH HORIZONTAL BAR
- x (circled minus - 2296)
-29B6 CIRCLED VERTICAL BAR
-29B7 CIRCLED PARALLEL
-29B8 CIRCLED REVERSE SOLIDUS
-29B9 CIRCLED PERPENDICULAR
-29BA CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR
-29BB CIRCLE WITH SUPERIMPOSED X
- x (circled times - 2297)
-29BC CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN
-29BD UP ARROW THROUGH CIRCLE
-29BE CIRCLED WHITE BULLET
- x (circled ring operator - 229A)
- x (apl functional symbol circle jot - 233E)
- x (bullseye - 25CE)
-29BF CIRCLED BULLET
- * forms part of a graduated set of circles with enclosed black circle of different sizes
- x (circled dot operator - 2299)
- x (fisheye - 25C9)
- x (n-ary circled dot operator - 2A00)
-29C0 CIRCLED LESS-THAN
-29C1 CIRCLED GREATER-THAN
-29C2 CIRCLE WITH SMALL CIRCLE TO THE RIGHT
-29C3 CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT
-@ Square symbols
-29C4 SQUARED RISING DIAGONAL SLASH
- x (apl functional symbol quad slash - 2341)
- x (masu mark - 303C)
-29C5 SQUARED FALLING DIAGONAL SLASH
- x (apl functional symbol quad backslash - 2342)
-29C6 SQUARED ASTERISK
-29C7 SQUARED SMALL CIRCLE
- x (apl functional symbol quad jot - 233B)
-29C8 SQUARED SQUARE
-29C9 TWO JOINED SQUARES
-@ Triangle symbols
-29CA TRIANGLE WITH DOT ABOVE
-29CB TRIANGLE WITH UNDERBAR
-29CC S IN TRIANGLE
-29CD TRIANGLE WITH SERIFS AT BOTTOM
- x (white up-pointing triangle - 25B3)
-29CE RIGHT TRIANGLE ABOVE LEFT TRIANGLE
-29CF LEFT TRIANGLE BESIDE VERTICAL BAR
-29D0 VERTICAL BAR BESIDE RIGHT TRIANGLE
-@ Bowtie symbols
-29D1 BOWTIE WITH LEFT HALF BLACK
- x (bowtie - 22C8)
-29D2 BOWTIE WITH RIGHT HALF BLACK
-29D3 BLACK BOWTIE
-29D4 TIMES WITH LEFT HALF BLACK
- x (left normal factor semidirect product - 22C9)
-29D5 TIMES WITH RIGHT HALF BLACK
- x (right normal factor semidirect product - 22CA)
-29D6 WHITE HOURGLASS
- = vertical bowtie
- = white framus
- x (hourglass - 231B)
-29D7 BLACK HOURGLASS
-@ Fences
-29D8 LEFT WIGGLY FENCE
- x (presentation form for vertical wavy low line - FE34)
-29D9 RIGHT WIGGLY FENCE
-29DA LEFT DOUBLE WIGGLY FENCE
-29DB RIGHT DOUBLE WIGGLY FENCE
-@ Miscellaneous mathematical symbols
-29DC INCOMPLETE INFINITY
- = ISOtech entity &iinfin;
- x (infinity - 221E)
-29DD TIE OVER INFINITY
-29DE INFINITY NEGATED WITH VERTICAL BAR
-29DF DOUBLE-ENDED MULTIMAP
- x (multimap - 22B8)
-29E0 SQUARE WITH CONTOURED OUTLINE
- = D'Alembertian
- x (lower right drop-shadowed white square - 274F)
-29E1 INCREASES AS
- x (normal subgroup of or equal to - 22B4)
-29E2 SHUFFLE PRODUCT
- x (z notation bag membership - 22FF)
-@ Relations
-29E3 EQUALS SIGN AND SLANTED PARALLEL
- x (number sign - 0023)
- x (equal and parallel to - 22D5)
-29E4 EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE
-29E5 IDENTICAL TO AND SLANTED PARALLEL
- x (triple horizontal bar with double vertical stroke - 2A68)
-29E6 GLEICH STARK
- = tautological equivalent
-@ Miscellaneous mathematical symbols
-29E7 THERMODYNAMIC
- * vertical bar crossed by two horizontals
- x (not equal to - 2260)
-29E8 DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK
- x (up-pointing triangle with left half black - 25ED)
-29E9 DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK
- x (up-pointing triangle with right half black - 25EE)
-29EA BLACK DIAMOND WITH DOWN ARROW
-29EB BLACK LOZENGE
- x (lozenge - 25CA)
-29EC WHITE CIRCLE WITH DOWN ARROW
-29ED BLACK CIRCLE WITH DOWN ARROW
-@ Error bar symbols
-29EE ERROR-BARRED WHITE SQUARE
-29EF ERROR-BARRED BLACK SQUARE
-29F0 ERROR-BARRED WHITE DIAMOND
-29F1 ERROR-BARRED BLACK DIAMOND
-29F2 ERROR-BARRED WHITE CIRCLE
-29F3 ERROR-BARRED BLACK CIRCLE
-@ Miscellaneous mathematical symbols
-29F4 RULE-DELAYED
- = colon right arrow
-29F5 REVERSE SOLIDUS OPERATOR
- x (reverse solidus - 005C)
- x (set minus - 2216)
-29F6 SOLIDUS WITH OVERBAR
-29F7 REVERSE SOLIDUS WITH HORIZONTAL STROKE
-@ Large operators
-29F8 BIG SOLIDUS
- x (division slash - 2215)
-29F9 BIG REVERSE SOLIDUS
- = z notation schema hiding
- x (set minus - 2216)
-@ Specialized plus sign operators
-29FA DOUBLE PLUS
-29FB TRIPLE PLUS
-@ Brackets
-29FC LEFT-POINTING CURVED ANGLE BRACKET
- x (precedes - 227A)
- x (left-pointing angle bracket - 2329)
-29FD RIGHT-POINTING CURVED ANGLE BRACKET
- x (succeeds - 227B)
- x (right-pointing angle bracket - 232A)
-@ Miscellaneous mathematical symbols
-29FE TINY
- x (plus sign - 002B)
-29FF MINY
- x (minus sign - 2212)
-@@ 2A00 Supplemental Mathematical Operators 2AFF
-@ N-ary operators
-2A00 N-ARY CIRCLED DOT OPERATOR
- x (circled dot operator - 2299)
- x (fisheye - 25C9)
-2A01 N-ARY CIRCLED PLUS OPERATOR
- x (circled plus - 2295)
-2A02 N-ARY CIRCLED TIMES OPERATOR
- x (circled times - 2297)
-2A03 N-ARY UNION OPERATOR WITH DOT
-2A04 N-ARY UNION OPERATOR WITH PLUS
- x (multiset union - 228E)
-2A05 N-ARY SQUARE INTERSECTION OPERATOR
- x (square cap - 2293)
-2A06 N-ARY SQUARE UNION OPERATOR
- x (square cup - 2294)
-2A07 TWO LOGICAL AND OPERATOR
- = merge
- x (two intersecting logical and - 2A55)
-2A08 TWO LOGICAL OR OPERATOR
- x (two intersecting logical or - 2A56)
-2A09 N-ARY TIMES OPERATOR
- x (multiplication sign - 00D7)
-@ Summations and integrals
-2A0A MODULO TWO SUM
- x (n-ary summation - 2211)
-2A0B SUMMATION WITH INTEGRAL
-2A0C QUADRUPLE INTEGRAL OPERATOR
- x (triple integral - 222D)
- # 222B 222B 222B 222B
-2A0D FINITE PART INTEGRAL
-2A0E INTEGRAL WITH DOUBLE STROKE
-2A0F INTEGRAL AVERAGE WITH SLASH
-2A10 CIRCULATION FUNCTION
-2A11 ANTICLOCKWISE INTEGRATION
-2A12 LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE
-2A13 LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE
-2A14 LINE INTEGRATION NOT INCLUDING THE POLE
-2A15 INTEGRAL AROUND A POINT OPERATOR
- x (contour integral - 222E)
-2A16 QUATERNION INTEGRAL OPERATOR
-2A17 INTEGRAL WITH LEFTWARDS ARROW WITH HOOK
-2A18 INTEGRAL WITH TIMES SIGN
-2A19 INTEGRAL WITH INTERSECTION
-2A1A INTEGRAL WITH UNION
-2A1B INTEGRAL WITH OVERBAR
- = upper integral
-2A1C INTEGRAL WITH UNDERBAR
- = lower integral
-@ Miscellaneous large operators
-2A1D JOIN
- = large bowtie
- * relational database theory
- x (bowtie - 22C8)
- x (full outer join - 27D7)
-2A1E LARGE LEFT TRIANGLE OPERATOR
- * relational database theory
- x (white left-pointing triangle - 25C1)
-2A1F Z NOTATION SCHEMA COMPOSITION
- x (z notation relational composition - 2A3E)
-2A20 Z NOTATION SCHEMA PIPING
- x (much greater-than - 226B)
-2A21 Z NOTATION SCHEMA PROJECTION
- x (upwards harpoon with barb rightwards - 21BE)
-@ Plus and minus sign operators
-2A22 PLUS SIGN WITH SMALL CIRCLE ABOVE
-2A23 PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE
-2A24 PLUS SIGN WITH TILDE ABOVE
- = positive difference or sum
-2A25 PLUS SIGN WITH DOT BELOW
- x (dot plus - 2214)
-2A26 PLUS SIGN WITH TILDE BELOW
- = sum or positive difference
-2A27 PLUS SIGN WITH SUBSCRIPT TWO
- = nim-addition
-2A28 PLUS SIGN WITH BLACK TRIANGLE
-2A29 MINUS SIGN WITH COMMA ABOVE
-2A2A MINUS SIGN WITH DOT BELOW
- x (dot minus - 2238)
-2A2B MINUS SIGN WITH FALLING DOTS
-2A2C MINUS SIGN WITH RISING DOTS
-2A2D PLUS SIGN IN LEFT HALF CIRCLE
-2A2E PLUS SIGN IN RIGHT HALF CIRCLE
-@ Multiplication and division sign operators
-2A2F VECTOR OR CROSS PRODUCT
- x (multiplication sign - 00D7)
-2A30 MULTIPLICATION SIGN WITH DOT ABOVE
-2A31 MULTIPLICATION SIGN WITH UNDERBAR
-2A32 SEMIDIRECT PRODUCT WITH BOTTOM CLOSED
-2A33 SMASH PRODUCT
-2A34 MULTIPLICATION SIGN IN LEFT HALF CIRCLE
-2A35 MULTIPLICATION SIGN IN RIGHT HALF CIRCLE
-2A36 CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT
-2A37 MULTIPLICATION SIGN IN DOUBLE CIRCLE
-2A38 CIRCLED DIVISION SIGN
-@ Miscellaneous mathematical operators
-2A39 PLUS SIGN IN TRIANGLE
-2A3A MINUS SIGN IN TRIANGLE
-2A3B MULTIPLICATION SIGN IN TRIANGLE
-2A3C INTERIOR PRODUCT
- x (right floor - 230B)
-2A3D RIGHTHAND INTERIOR PRODUCT
- x (left floor - 230A)
- x (turned not sign - 2319)
-2A3E Z NOTATION RELATIONAL COMPOSITION
- x (z notation schema composition - 2A1F)
-2A3F AMALGAMATION OR COPRODUCT
- x (n-ary coproduct - 2210)
-@ Intersections and unions
-2A40 INTERSECTION WITH DOT
- x (logical and - 2227)
- x (and with dot - 27D1)
-2A41 UNION WITH MINUS SIGN
- = z notation bag subtraction
- x (multiset union - 228E)
-2A42 UNION WITH OVERBAR
-2A43 INTERSECTION WITH OVERBAR
-2A44 INTERSECTION WITH LOGICAL AND
-2A45 UNION WITH LOGICAL OR
-2A46 UNION ABOVE INTERSECTION
-2A47 INTERSECTION ABOVE UNION
-2A48 UNION ABOVE BAR ABOVE INTERSECTION
-2A49 INTERSECTION ABOVE BAR ABOVE UNION
-2A4A UNION BESIDE AND JOINED WITH UNION
-2A4B INTERSECTION BESIDE AND JOINED WITH INTERSECTION
-2A4C CLOSED UNION WITH SERIFS
- x (union - 222A)
-2A4D CLOSED INTERSECTION WITH SERIFS
- x (intersection - 2229)
-2A4E DOUBLE SQUARE INTERSECTION
-2A4F DOUBLE SQUARE UNION
-2A50 CLOSED UNION WITH SERIFS AND SMASH PRODUCT
-@ Logical ands and ors
-2A51 LOGICAL AND WITH DOT ABOVE
-2A52 LOGICAL OR WITH DOT ABOVE
-2A53 DOUBLE LOGICAL AND
-2A54 DOUBLE LOGICAL OR
-2A55 TWO INTERSECTING LOGICAL AND
- x (two logical and operator - 2A07)
-2A56 TWO INTERSECTING LOGICAL OR
- x (two logical or operator - 2A08)
-2A57 SLOPING LARGE OR
-2A58 SLOPING LARGE AND
-2A59 LOGICAL OR OVERLAPPING LOGICAL AND
-2A5A LOGICAL AND WITH MIDDLE STEM
-2A5B LOGICAL OR WITH MIDDLE STEM
-2A5C LOGICAL AND WITH HORIZONTAL DASH
-2A5D LOGICAL OR WITH HORIZONTAL DASH
-2A5E LOGICAL AND WITH DOUBLE OVERBAR
- x (perspective - 2306)
-2A5F LOGICAL AND WITH UNDERBAR
-2A60 LOGICAL AND WITH DOUBLE UNDERBAR
- x (estimates - 2259)
-2A61 SMALL VEE WITH UNDERBAR
- x (equiangular to - 225A)
-2A62 LOGICAL OR WITH DOUBLE OVERBAR
-2A63 LOGICAL OR WITH DOUBLE UNDERBAR
- x (equiangular to - 225A)
-@ Miscellaneous mathematical operators
-2A64 Z NOTATION DOMAIN ANTIRESTRICTION
-2A65 Z NOTATION RANGE ANTIRESTRICTION
- x (conical taper - 2332)
-@ Relational operators
-2A66 EQUALS SIGN WITH DOT BELOW
- x (approaches the limit - 2250)
-2A67 IDENTICAL WITH DOT ABOVE
-2A68 TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE
- = identical and parallel to
- x (equal and parallel to - 22D5)
- x (identical to and slanted parallel - 29E5)
-2A69 TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE
-2A6A TILDE OPERATOR WITH DOT ABOVE
-2A6B TILDE OPERATOR WITH RISING DOTS
- x (homothetic - 223B)
-2A6C SIMILAR MINUS SIMILAR
-2A6D CONGRUENT WITH DOT ABOVE
- x (approximately equal to - 2245)
-2A6E EQUALS WITH ASTERISK
- x (star equals - 225B)
-2A6F ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT
-2A70 APPROXIMATELY EQUAL OR EQUAL TO
-2A71 EQUALS SIGN ABOVE PLUS SIGN
- * black stands slightly better (chess notation)
-2A72 PLUS SIGN ABOVE EQUALS SIGN
- * white stands slightly better (chess notation)
-2A73 EQUALS SIGN ABOVE TILDE OPERATOR
-2A74 DOUBLE COLON EQUAL
- # 003A 003A 003D
-2A75 TWO CONSECUTIVE EQUALS SIGNS
- # 003D 003D
-2A76 THREE CONSECUTIVE EQUALS SIGNS
- # 003D 003D 003D
-2A77 EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW
-2A78 EQUIVALENT WITH FOUR DOTS ABOVE
-2A79 LESS-THAN WITH CIRCLE INSIDE
-2A7A GREATER-THAN WITH CIRCLE INSIDE
-2A7B LESS-THAN WITH QUESTION MARK ABOVE
-2A7C GREATER-THAN WITH QUESTION MARK ABOVE
-2A7D LESS-THAN OR SLANTED EQUAL TO
- x (less-than or equal to - 2264)
-2A7E GREATER-THAN OR SLANTED EQUAL TO
- x (greater-than or equal to - 2265)
-2A7F LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
-2A80 GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
-2A81 LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
-2A82 GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
-2A83 LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT
-2A84 GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT
-2A85 LESS-THAN OR APPROXIMATE
-2A86 GREATER-THAN OR APPROXIMATE
-2A87 LESS-THAN AND SINGLE-LINE NOT EQUAL TO
- x (less-than but not equal to - 2268)
-2A88 GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
- x (greater-than but not equal to - 2269)
-2A89 LESS-THAN AND NOT APPROXIMATE
-2A8A GREATER-THAN AND NOT APPROXIMATE
-2A8B LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
- x (less-than equal to or greater-than - 22DA)
-2A8C GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
- x (greater-than equal to or less-than - 22DB)
-2A8D LESS-THAN ABOVE SIMILAR OR EQUAL
-2A8E GREATER-THAN ABOVE SIMILAR OR EQUAL
-2A8F LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN
-2A90 GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN
-2A91 LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL
-2A92 GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL
-2A93 LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL
-2A94 GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL
-2A95 SLANTED EQUAL TO OR LESS-THAN
- x (equal to or less-than - 22DC)
-2A96 SLANTED EQUAL TO OR GREATER-THAN
- x (equal to or greater-than - 22DD)
-2A97 SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE
-2A98 SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE
-2A99 DOUBLE-LINE EQUAL TO OR LESS-THAN
- x (equal to or less-than - 22DC)
-2A9A DOUBLE-LINE EQUAL TO OR GREATER-THAN
- x (equal to or greater-than - 22DD)
-2A9B DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN
-2A9C DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN
-2A9D SIMILAR OR LESS-THAN
-2A9E SIMILAR OR GREATER-THAN
-2A9F SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN
-2AA0 SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN
-2AA1 DOUBLE NESTED LESS-THAN
- = absolute continuity
- x (much less-than - 226A)
-2AA2 DOUBLE NESTED GREATER-THAN
- x (much greater-than - 226B)
-2AA3 DOUBLE NESTED LESS-THAN WITH UNDERBAR
-2AA4 GREATER-THAN OVERLAPPING LESS-THAN
-2AA5 GREATER-THAN BESIDE LESS-THAN
-2AA6 LESS-THAN CLOSED BY CURVE
-2AA7 GREATER-THAN CLOSED BY CURVE
-2AA8 LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
-2AA9 GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
-2AAA SMALLER THAN
-2AAB LARGER THAN
-2AAC SMALLER THAN OR EQUAL TO
-2AAD LARGER THAN OR EQUAL TO
-2AAE EQUALS SIGN WITH BUMPY ABOVE
- x (difference between - 224F)
-2AAF PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
- x (precedes or equal to - 227C)
-2AB0 SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
- x (succeeds or equal to - 227D)
-2AB1 PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO
-2AB2 SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO
-2AB3 PRECEDES ABOVE EQUALS SIGN
-2AB4 SUCCEEDS ABOVE EQUALS SIGN
-2AB5 PRECEDES ABOVE NOT EQUAL TO
-2AB6 SUCCEEDS ABOVE NOT EQUAL TO
-2AB7 PRECEDES ABOVE ALMOST EQUAL TO
-2AB8 SUCCEEDS ABOVE ALMOST EQUAL TO
-2AB9 PRECEDES ABOVE NOT ALMOST EQUAL TO
-2ABA SUCCEEDS ABOVE NOT ALMOST EQUAL TO
-2ABB DOUBLE PRECEDES
-2ABC DOUBLE SUCCEEDS
-@ Subset and superset relations
-2ABD SUBSET WITH DOT
-2ABE SUPERSET WITH DOT
-2ABF SUBSET WITH PLUS SIGN BELOW
-2AC0 SUPERSET WITH PLUS SIGN BELOW
-2AC1 SUBSET WITH MULTIPLICATION SIGN BELOW
-2AC2 SUPERSET WITH MULTIPLICATION SIGN BELOW
-2AC3 SUBSET OF OR EQUAL TO WITH DOT ABOVE
-2AC4 SUPERSET OF OR EQUAL TO WITH DOT ABOVE
-2AC5 SUBSET OF ABOVE EQUALS SIGN
-2AC6 SUPERSET OF ABOVE EQUALS SIGN
-2AC7 SUBSET OF ABOVE TILDE OPERATOR
-2AC8 SUPERSET OF ABOVE TILDE OPERATOR
-2AC9 SUBSET OF ABOVE ALMOST EQUAL TO
-2ACA SUPERSET OF ABOVE ALMOST EQUAL TO
-2ACB SUBSET OF ABOVE NOT EQUAL TO
-2ACC SUPERSET OF ABOVE NOT EQUAL TO
-2ACD SQUARE LEFT OPEN BOX OPERATOR
-2ACE SQUARE RIGHT OPEN BOX OPERATOR
-2ACF CLOSED SUBSET
- x (subset of - 2282)
-2AD0 CLOSED SUPERSET
- x (superset of - 2283)
-2AD1 CLOSED SUBSET OR EQUAL TO
-2AD2 CLOSED SUPERSET OR EQUAL TO
-2AD3 SUBSET ABOVE SUPERSET
-2AD4 SUPERSET ABOVE SUBSET
-2AD5 SUBSET ABOVE SUBSET
-2AD6 SUPERSET ABOVE SUPERSET
-2AD7 SUPERSET BESIDE SUBSET
-2AD8 SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET
-@ Forks
-2AD9 ELEMENT OF OPENING DOWNWARDS
- x (element of - 2208)
- x (element of opening upwards - 27D2)
-2ADA PITCHFORK WITH TEE TOP
- x (pitchfork - 22D4)
-2ADB TRANSVERSAL INTERSECTION
- x (pitchfork - 22D4)
-2ADC FORKING (not independent)
- = not independent
- * an equational logic symbol, not a computing science symbol
- * non-independence (original concept) is related to forking
- : 2ADD 0338
-2ADD NONFORKING (independent)
- = independent
- * an equational logic symbol, not a computing science symbol
- * independence (original concept) is related to non-forking
-@ Tacks and turnstiles
-2ADE SHORT LEFT TACK
- x (left tack - 22A3)
-2ADF SHORT DOWN TACK
- x (down tack - 22A4)
-2AE0 SHORT UP TACK
- x (up tack - 22A5)
-2AE1 PERPENDICULAR WITH S
-2AE2 VERTICAL BAR TRIPLE RIGHT TURNSTILE
- = ordinarily satisfies
-2AE3 DOUBLE VERTICAL BAR LEFT TURNSTILE
- x (forces - 22A9)
-2AE4 VERTICAL BAR DOUBLE LEFT TURNSTILE
- x (true - 22A8)
-2AE5 DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE
-2AE6 LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL
- x (forces - 22A9)
-2AE7 SHORT DOWN TACK WITH OVERBAR
- x (down tack - 22A4)
- x (apl functional symbol up tack overbar - 2351)
-2AE8 SHORT UP TACK WITH UNDERBAR
- x (up tack - 22A5)
- x (apl functional symbol down tack underbar - 234A)
-2AE9 SHORT UP TACK ABOVE SHORT DOWN TACK
-2AEA DOUBLE DOWN TACK
-2AEB DOUBLE UP TACK
- = independence
- * probability theory
-2AEC DOUBLE STROKE NOT SIGN
- x (not sign - 00AC)
-2AED REVERSED DOUBLE STROKE NOT SIGN
- x (reversed not sign - 2310)
-@ Vertical line operators
-2AEE DOES NOT DIVIDE WITH REVERSED NEGATION SLASH
- x (does not divide - 2224)
-2AEF VERTICAL LINE WITH CIRCLE ABOVE
-2AF0 VERTICAL LINE WITH CIRCLE BELOW
-2AF1 DOWN TACK WITH CIRCLE BELOW
- = necessarily satisfies
- x (up tack with circle above - 27DF)
-2AF2 PARALLEL WITH HORIZONTAL STROKE
- x (not parallel to - 2226)
-2AF3 PARALLEL WITH TILDE OPERATOR
-2AF4 TRIPLE VERTICAL BAR BINARY RELATION
- = interleave
- x (triple vertical bar delimiter - 2980)
-2AF5 TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE
-@ Miscellaneous mathematical operator
-2AF6 TRIPLE COLON OPERATOR
- * logic
- x (tricolon - 205D)
- x (vertical ellipsis - 22EE)
-@ Relations
-2AF7 TRIPLE NESTED LESS-THAN
- x (very much less-than - 22D8)
-2AF8 TRIPLE NESTED GREATER-THAN
- x (very much greater-than - 22D9)
-2AF9 DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO
- x (less-than over equal to - 2266)
-2AFA DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO
- x (greater-than over equal to - 2267)
-2AFB TRIPLE SOLIDUS BINARY RELATION
- x (triple vertical bar binary relation - 2AF4)
-@ Operators
-2AFC LARGE TRIPLE VERTICAL BAR OPERATOR
- * often n-ary
- x (triple vertical bar binary relation - 2AF4)
- x (triple vertical bar delimiter - 2980)
-2AFD DOUBLE SOLIDUS OPERATOR
- x (parallel to - 2225)
-2AFE WHITE VERTICAL BAR
- = Dijkstra choice
-2AFF N-ARY WHITE VERTICAL BAR
- = n-ary Dijkstra choice
-@@ 2B00 Miscellaneous Symbols and Arrows 2BFF
-@ White and black arrows
-@+ Other white and black arrows to complete this set can be found in the Arrows and Dingbats blocks.
-2B00 NORTH EAST WHITE ARROW
-2B01 NORTH WEST WHITE ARROW
-2B02 SOUTH EAST WHITE ARROW
-2B03 SOUTH WEST WHITE ARROW
-2B04 LEFT RIGHT WHITE ARROW
-2B05 LEFTWARDS BLACK ARROW
-2B06 UPWARDS BLACK ARROW
-2B07 DOWNWARDS BLACK ARROW
-2B08 NORTH EAST BLACK ARROW
-2B09 NORTH WEST BLACK ARROW
-2B0A SOUTH EAST BLACK ARROW
-2B0B SOUTH WEST BLACK ARROW
-2B0C LEFT RIGHT BLACK ARROW
-2B0D UP DOWN BLACK ARROW
-@ Arrows with bent tips
-2B0E RIGHTWARDS ARROW WITH TIP DOWNWARDS
-2B0F RIGHTWARDS ARROW WITH TIP UPWARDS
-2B10 LEFTWARDS ARROW WITH TIP DOWNWARDS
-2B11 LEFTWARDS ARROW WITH TIP UPWARDS
-@ Squares
-2B12 SQUARE WITH TOP HALF BLACK
- x (square with left half black - 25E7)
-2B13 SQUARE WITH BOTTOM HALF BLACK
-@@ 2C00 Glagolitic 2C5F
-@ Capital letters
-2C00 GLAGOLITIC CAPITAL LETTER AZU
-2C01 GLAGOLITIC CAPITAL LETTER BUKY
-2C02 GLAGOLITIC CAPITAL LETTER VEDE
-2C03 GLAGOLITIC CAPITAL LETTER GLAGOLI
-2C04 GLAGOLITIC CAPITAL LETTER DOBRO
-2C05 GLAGOLITIC CAPITAL LETTER YESTU
-2C06 GLAGOLITIC CAPITAL LETTER ZHIVETE
-2C07 GLAGOLITIC CAPITAL LETTER DZELO
-2C08 GLAGOLITIC CAPITAL LETTER ZEMLJA
-2C09 GLAGOLITIC CAPITAL LETTER IZHE
-2C0A GLAGOLITIC CAPITAL LETTER INITIAL IZHE
-2C0B GLAGOLITIC CAPITAL LETTER I
-2C0C GLAGOLITIC CAPITAL LETTER DJERVI
-2C0D GLAGOLITIC CAPITAL LETTER KAKO
-2C0E GLAGOLITIC CAPITAL LETTER LJUDIJE
-2C0F GLAGOLITIC CAPITAL LETTER MYSLITE
-2C10 GLAGOLITIC CAPITAL LETTER NASHI
-2C11 GLAGOLITIC CAPITAL LETTER ONU
-2C12 GLAGOLITIC CAPITAL LETTER POKOJI
-2C13 GLAGOLITIC CAPITAL LETTER RITSI
-2C14 GLAGOLITIC CAPITAL LETTER SLOVO
-2C15 GLAGOLITIC CAPITAL LETTER TVRIDO
-2C16 GLAGOLITIC CAPITAL LETTER UKU
-2C17 GLAGOLITIC CAPITAL LETTER FRITU
-2C18 GLAGOLITIC CAPITAL LETTER HERU
-2C19 GLAGOLITIC CAPITAL LETTER OTU
-2C1A GLAGOLITIC CAPITAL LETTER PE
-2C1B GLAGOLITIC CAPITAL LETTER SHTA
-2C1C GLAGOLITIC CAPITAL LETTER TSI
-2C1D GLAGOLITIC CAPITAL LETTER CHRIVI
-2C1E GLAGOLITIC CAPITAL LETTER SHA
-2C1F GLAGOLITIC CAPITAL LETTER YERU
-2C20 GLAGOLITIC CAPITAL LETTER YERI
-2C21 GLAGOLITIC CAPITAL LETTER YATI
-2C22 GLAGOLITIC CAPITAL LETTER SPIDERY HA
-2C23 GLAGOLITIC CAPITAL LETTER YU
-2C24 GLAGOLITIC CAPITAL LETTER SMALL YUS
-2C25 GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL
-2C26 GLAGOLITIC CAPITAL LETTER YO
-2C27 GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS
-2C28 GLAGOLITIC CAPITAL LETTER BIG YUS
-2C29 GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS
-2C2A GLAGOLITIC CAPITAL LETTER FITA
-2C2B GLAGOLITIC CAPITAL LETTER IZHITSA
-2C2C GLAGOLITIC CAPITAL LETTER SHTAPIC
-2C2D GLAGOLITIC CAPITAL LETTER TROKUTASTI A
-2C2E GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
-@ Small letters
-2C30 GLAGOLITIC SMALL LETTER AZU
-2C31 GLAGOLITIC SMALL LETTER BUKY
-2C32 GLAGOLITIC SMALL LETTER VEDE
-2C33 GLAGOLITIC SMALL LETTER GLAGOLI
-2C34 GLAGOLITIC SMALL LETTER DOBRO
-2C35 GLAGOLITIC SMALL LETTER YESTU
-2C36 GLAGOLITIC SMALL LETTER ZHIVETE
-2C37 GLAGOLITIC SMALL LETTER DZELO
-2C38 GLAGOLITIC SMALL LETTER ZEMLJA
-2C39 GLAGOLITIC SMALL LETTER IZHE
-2C3A GLAGOLITIC SMALL LETTER INITIAL IZHE
-2C3B GLAGOLITIC SMALL LETTER I
-2C3C GLAGOLITIC SMALL LETTER DJERVI
-2C3D GLAGOLITIC SMALL LETTER KAKO
-2C3E GLAGOLITIC SMALL LETTER LJUDIJE
-2C3F GLAGOLITIC SMALL LETTER MYSLITE
-2C40 GLAGOLITIC SMALL LETTER NASHI
-2C41 GLAGOLITIC SMALL LETTER ONU
-2C42 GLAGOLITIC SMALL LETTER POKOJI
-2C43 GLAGOLITIC SMALL LETTER RITSI
-2C44 GLAGOLITIC SMALL LETTER SLOVO
-2C45 GLAGOLITIC SMALL LETTER TVRIDO
-2C46 GLAGOLITIC SMALL LETTER UKU
-2C47 GLAGOLITIC SMALL LETTER FRITU
-2C48 GLAGOLITIC SMALL LETTER HERU
-2C49 GLAGOLITIC SMALL LETTER OTU
-2C4A GLAGOLITIC SMALL LETTER PE
-2C4B GLAGOLITIC SMALL LETTER SHTA
-2C4C GLAGOLITIC SMALL LETTER TSI
-2C4D GLAGOLITIC SMALL LETTER CHRIVI
-2C4E GLAGOLITIC SMALL LETTER SHA
-2C4F GLAGOLITIC SMALL LETTER YERU
-2C50 GLAGOLITIC SMALL LETTER YERI
-2C51 GLAGOLITIC SMALL LETTER YATI
-2C52 GLAGOLITIC SMALL LETTER SPIDERY HA
-2C53 GLAGOLITIC SMALL LETTER YU
-2C54 GLAGOLITIC SMALL LETTER SMALL YUS
-2C55 GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL
-2C56 GLAGOLITIC SMALL LETTER YO
-2C57 GLAGOLITIC SMALL LETTER IOTATED SMALL YUS
-2C58 GLAGOLITIC SMALL LETTER BIG YUS
-2C59 GLAGOLITIC SMALL LETTER IOTATED BIG YUS
-2C5A GLAGOLITIC SMALL LETTER FITA
-2C5B GLAGOLITIC SMALL LETTER IZHITSA
-2C5C GLAGOLITIC SMALL LETTER SHTAPIC
-2C5D GLAGOLITIC SMALL LETTER TROKUTASTI A
-2C5E GLAGOLITIC SMALL LETTER LATINATE MYSLITE
-@@ 2C80 Coptic 2CFF
-@+ Other Coptic letters derived from Demotic are encoded in the Greek and Coptic block.
-@ Bohairic Coptic letters
-2C80 COPTIC CAPITAL LETTER ALFA
-2C81 COPTIC SMALL LETTER ALFA
-2C82 COPTIC CAPITAL LETTER VIDA
-2C83 COPTIC SMALL LETTER VIDA
-2C84 COPTIC CAPITAL LETTER GAMMA
-2C85 COPTIC SMALL LETTER GAMMA
-2C86 COPTIC CAPITAL LETTER DALDA
-2C87 COPTIC SMALL LETTER DALDA
-2C88 COPTIC CAPITAL LETTER EIE
-2C89 COPTIC SMALL LETTER EIE
-2C8A COPTIC CAPITAL LETTER SOU
-2C8B COPTIC SMALL LETTER SOU
-2C8C COPTIC CAPITAL LETTER ZATA
-2C8D COPTIC SMALL LETTER ZATA
-2C8E COPTIC CAPITAL LETTER HATE
-2C8F COPTIC SMALL LETTER HATE
-2C90 COPTIC CAPITAL LETTER THETHE
-2C91 COPTIC SMALL LETTER THETHE
-2C92 COPTIC CAPITAL LETTER IAUDA
-2C93 COPTIC SMALL LETTER IAUDA
-2C94 COPTIC CAPITAL LETTER KAPA
-2C95 COPTIC SMALL LETTER KAPA
-2C96 COPTIC CAPITAL LETTER LAULA
-2C97 COPTIC SMALL LETTER LAULA
-2C98 COPTIC CAPITAL LETTER MI
-2C99 COPTIC SMALL LETTER MI
-2C9A COPTIC CAPITAL LETTER NI
-2C9B COPTIC SMALL LETTER NI
-2C9C COPTIC CAPITAL LETTER KSI
-2C9D COPTIC SMALL LETTER KSI
-2C9E COPTIC CAPITAL LETTER O
-2C9F COPTIC SMALL LETTER O
-2CA0 COPTIC CAPITAL LETTER PI
-2CA1 COPTIC SMALL LETTER PI
-2CA2 COPTIC CAPITAL LETTER RO
-2CA3 COPTIC SMALL LETTER RO
-2CA4 COPTIC CAPITAL LETTER SIMA
-2CA5 COPTIC SMALL LETTER SIMA
-2CA6 COPTIC CAPITAL LETTER TAU
-2CA7 COPTIC SMALL LETTER TAU
-2CA8 COPTIC CAPITAL LETTER UA
-2CA9 COPTIC SMALL LETTER UA
-2CAA COPTIC CAPITAL LETTER FI
-2CAB COPTIC SMALL LETTER FI
-2CAC COPTIC CAPITAL LETTER KHI
-2CAD COPTIC SMALL LETTER KHI
-2CAE COPTIC CAPITAL LETTER PSI
-2CAF COPTIC SMALL LETTER PSI
-2CB0 COPTIC CAPITAL LETTER OOU
-2CB1 COPTIC SMALL LETTER OOU
-@ Old Coptic and dialect letters
-2CB2 COPTIC CAPITAL LETTER DIALECT-P ALEF
-2CB3 COPTIC SMALL LETTER DIALECT-P ALEF
-2CB4 COPTIC CAPITAL LETTER OLD COPTIC AIN
-2CB5 COPTIC SMALL LETTER OLD COPTIC AIN
-2CB6 COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
-2CB7 COPTIC SMALL LETTER CRYPTOGRAMMIC EIE
-2CB8 COPTIC CAPITAL LETTER DIALECT-P KAPA
-2CB9 COPTIC SMALL LETTER DIALECT-P KAPA
-2CBA COPTIC CAPITAL LETTER DIALECT-P NI
-2CBB COPTIC SMALL LETTER DIALECT-P NI
-2CBC COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
-2CBD COPTIC SMALL LETTER CRYPTOGRAMMIC NI
-2CBE COPTIC CAPITAL LETTER OLD COPTIC OOU
-2CBF COPTIC SMALL LETTER OLD COPTIC OOU
-2CC0 COPTIC CAPITAL LETTER SAMPI
-2CC1 COPTIC SMALL LETTER SAMPI
-2CC2 COPTIC CAPITAL LETTER CROSSED SHEI
-2CC3 COPTIC SMALL LETTER CROSSED SHEI
-2CC4 COPTIC CAPITAL LETTER OLD COPTIC SHEI
-2CC5 COPTIC SMALL LETTER OLD COPTIC SHEI
-2CC6 COPTIC CAPITAL LETTER OLD COPTIC ESH
-2CC7 COPTIC SMALL LETTER OLD COPTIC ESH
-2CC8 COPTIC CAPITAL LETTER AKHMIMIC KHEI
-2CC9 COPTIC SMALL LETTER AKHMIMIC KHEI
-2CCA COPTIC CAPITAL LETTER DIALECT-P HORI
-2CCB COPTIC SMALL LETTER DIALECT-P HORI
-2CCC COPTIC CAPITAL LETTER OLD COPTIC HORI
-2CCD COPTIC SMALL LETTER OLD COPTIC HORI
-2CCE COPTIC CAPITAL LETTER OLD COPTIC HA
-2CCF COPTIC SMALL LETTER OLD COPTIC HA
-2CD0 COPTIC CAPITAL LETTER L-SHAPED HA
-2CD1 COPTIC SMALL LETTER L-SHAPED HA
-2CD2 COPTIC CAPITAL LETTER OLD COPTIC HEI
-2CD3 COPTIC SMALL LETTER OLD COPTIC HEI
-2CD4 COPTIC CAPITAL LETTER OLD COPTIC HAT
-2CD5 COPTIC SMALL LETTER OLD COPTIC HAT
-2CD6 COPTIC CAPITAL LETTER OLD COPTIC GANGIA
-2CD7 COPTIC SMALL LETTER OLD COPTIC GANGIA
-2CD8 COPTIC CAPITAL LETTER OLD COPTIC DJA
-2CD9 COPTIC SMALL LETTER OLD COPTIC DJA
-2CDA COPTIC CAPITAL LETTER OLD COPTIC SHIMA
-2CDB COPTIC SMALL LETTER OLD COPTIC SHIMA
-@ Old Nubian letters
-2CDC COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
-2CDD COPTIC SMALL LETTER OLD NUBIAN SHIMA
-2CDE COPTIC CAPITAL LETTER OLD NUBIAN NGI
-2CDF COPTIC SMALL LETTER OLD NUBIAN NGI
-2CE0 COPTIC CAPITAL LETTER OLD NUBIAN NYI
-2CE1 COPTIC SMALL LETTER OLD NUBIAN NYI
-2CE2 COPTIC CAPITAL LETTER OLD NUBIAN WAU
-2CE3 COPTIC SMALL LETTER OLD NUBIAN WAU
-@ Symbols
-2CE4 COPTIC SYMBOL KAI
- x (greek kai symbol - 03D7)
-2CE5 COPTIC SYMBOL MI RO
-2CE6 COPTIC SYMBOL PI RO
-2CE7 COPTIC SYMBOL STAUROS
-2CE8 COPTIC SYMBOL TAU RO
-2CE9 COPTIC SYMBOL KHI RO
- x (chi rho - 2627)
-2CEA COPTIC SYMBOL SHIMA SIMA
-@ Old Nubian punctuation
-2CF9 COPTIC OLD NUBIAN FULL STOP
-2CFA COPTIC OLD NUBIAN DIRECT QUESTION MARK
-2CFB COPTIC OLD NUBIAN INDIRECT QUESTION MARK
-2CFC COPTIC OLD NUBIAN VERSE DIVIDER
-@ Numeric character
-2CFD COPTIC FRACTION ONE HALF
-@ Punctuation
-2CFE COPTIC FULL STOP
-2CFF COPTIC MORPHOLOGICAL DIVIDER
-@@ 2D00 Georgian Supplement 2D2F
-@ Small letters (Khutsuri)
-@+ This is the lowercase of the old ecclesiastical alphabet. See the Georgian block for uppercase Asomtavruli.
-2D00 GEORGIAN SMALL LETTER AN (Khutsuri)
-2D01 GEORGIAN SMALL LETTER BAN (Khutsuri)
-2D02 GEORGIAN SMALL LETTER GAN (Khutsuri)
-2D03 GEORGIAN SMALL LETTER DON (Khutsuri)
-2D04 GEORGIAN SMALL LETTER EN (Khutsuri)
-2D05 GEORGIAN SMALL LETTER VIN (Khutsuri)
-2D06 GEORGIAN SMALL LETTER ZEN (Khutsuri)
-2D07 GEORGIAN SMALL LETTER TAN (Khutsuri)
-2D08 GEORGIAN SMALL LETTER IN (Khutsuri)
-2D09 GEORGIAN SMALL LETTER KAN (Khutsuri)
-2D0A GEORGIAN SMALL LETTER LAS (Khutsuri)
-2D0B GEORGIAN SMALL LETTER MAN (Khutsuri)
-2D0C GEORGIAN SMALL LETTER NAR (Khutsuri)
-2D0D GEORGIAN SMALL LETTER ON (Khutsuri)
-2D0E GEORGIAN SMALL LETTER PAR (Khutsuri)
-2D0F GEORGIAN SMALL LETTER ZHAR (Khutsuri)
-2D10 GEORGIAN SMALL LETTER RAE (Khutsuri)
-2D11 GEORGIAN SMALL LETTER SAN (Khutsuri)
-2D12 GEORGIAN SMALL LETTER TAR (Khutsuri)
-2D13 GEORGIAN SMALL LETTER UN (Khutsuri)
-2D14 GEORGIAN SMALL LETTER PHAR (Khutsuri)
-2D15 GEORGIAN SMALL LETTER KHAR (Khutsuri)
-2D16 GEORGIAN SMALL LETTER GHAN (Khutsuri)
-2D17 GEORGIAN SMALL LETTER QAR (Khutsuri)
-2D18 GEORGIAN SMALL LETTER SHIN (Khutsuri)
-2D19 GEORGIAN SMALL LETTER CHIN (Khutsuri)
-2D1A GEORGIAN SMALL LETTER CAN (Khutsuri)
-2D1B GEORGIAN SMALL LETTER JIL (Khutsuri)
-2D1C GEORGIAN SMALL LETTER CIL (Khutsuri)
-2D1D GEORGIAN SMALL LETTER CHAR (Khutsuri)
-2D1E GEORGIAN SMALL LETTER XAN (Khutsuri)
-2D1F GEORGIAN SMALL LETTER JHAN (Khutsuri)
-2D20 GEORGIAN SMALL LETTER HAE (Khutsuri)
-2D21 GEORGIAN SMALL LETTER HE (Khutsuri)
-2D22 GEORGIAN SMALL LETTER HIE (Khutsuri)
-2D23 GEORGIAN SMALL LETTER WE (Khutsuri)
-2D24 GEORGIAN SMALL LETTER HAR (Khutsuri)
-2D25 GEORGIAN SMALL LETTER HOE (Khutsuri)
-@@ 2D30 Tifinagh 2D7F
-@ Letters
-2D30 TIFINAGH LETTER YA
-2D31 TIFINAGH LETTER YAB
-2D32 TIFINAGH LETTER YABH
-2D33 TIFINAGH LETTER YAG
-2D34 TIFINAGH LETTER YAGHH
-2D35 TIFINAGH LETTER BERBER ACADEMY YAJ
-2D36 TIFINAGH LETTER YAJ
-2D37 TIFINAGH LETTER YAD
-2D38 TIFINAGH LETTER YADH
-2D39 TIFINAGH LETTER YADD
-2D3A TIFINAGH LETTER YADDH
-2D3B TIFINAGH LETTER YEY
-2D3C TIFINAGH LETTER YAF
-2D3D TIFINAGH LETTER YAK
-2D3E TIFINAGH LETTER TUAREG YAK
-2D3F TIFINAGH LETTER YAKHH
-2D40 TIFINAGH LETTER YAH (Tuareg yab)
- = Tuareg yab
-2D41 TIFINAGH LETTER BERBER ACADEMY YAH
-2D42 TIFINAGH LETTER TUAREG YAH
-2D43 TIFINAGH LETTER YAHH
-2D44 TIFINAGH LETTER YAA
-2D45 TIFINAGH LETTER YAKH
-2D46 TIFINAGH LETTER TUAREG YAKH
-2D47 TIFINAGH LETTER YAQ
-2D48 TIFINAGH LETTER TUAREG YAQ
-2D49 TIFINAGH LETTER YI
-2D4A TIFINAGH LETTER YAZH
-2D4B TIFINAGH LETTER AHAGGAR YAZH
-2D4C TIFINAGH LETTER TUAREG YAZH
-2D4D TIFINAGH LETTER YAL
-2D4E TIFINAGH LETTER YAM
-2D4F TIFINAGH LETTER YAN
-2D50 TIFINAGH LETTER TUAREG YAGN
-2D51 TIFINAGH LETTER TUAREG YANG
-2D52 TIFINAGH LETTER YAP
-2D53 TIFINAGH LETTER YU (Tuareg yaw)
- = Tuareg yaw
-2D54 TIFINAGH LETTER YAR
-2D55 TIFINAGH LETTER YARR
-2D56 TIFINAGH LETTER YAGH
-2D57 TIFINAGH LETTER TUAREG YAGH
-2D58 TIFINAGH LETTER AYER YAGH (Adrar yaj)
- = Adrar yaj
-2D59 TIFINAGH LETTER YAS
-2D5A TIFINAGH LETTER YASS
-2D5B TIFINAGH LETTER YASH
-2D5C TIFINAGH LETTER YAT
-2D5D TIFINAGH LETTER YATH
-2D5E TIFINAGH LETTER YACH
-2D5F TIFINAGH LETTER YATT
-2D60 TIFINAGH LETTER YAV
-2D61 TIFINAGH LETTER YAW
-2D62 TIFINAGH LETTER YAY
-2D63 TIFINAGH LETTER YAZ
-2D64 TIFINAGH LETTER TAWELLEMET YAZ (harpoon yaz)
- = harpoon yaz
-2D65 TIFINAGH LETTER YAZZ
-@ Modifier letter
-2D6F TIFINAGH MODIFIER LETTER LABIALIZATION MARK (tamatart)
- = tamatart
- # <super> 2D61
-@@ 2D80 Ethiopic Extended 2DDF
-@ Syllables for Me'en
-2D80 ETHIOPIC SYLLABLE LOA
-2D81 ETHIOPIC SYLLABLE MOA
-2D82 ETHIOPIC SYLLABLE ROA
-2D83 ETHIOPIC SYLLABLE SOA
-2D84 ETHIOPIC SYLLABLE SHOA
-2D85 ETHIOPIC SYLLABLE BOA
-2D86 ETHIOPIC SYLLABLE TOA
-2D87 ETHIOPIC SYLLABLE COA
-2D88 ETHIOPIC SYLLABLE NOA
-2D89 ETHIOPIC SYLLABLE NYOA
-2D8A ETHIOPIC SYLLABLE GLOTTAL OA
-2D8B ETHIOPIC SYLLABLE ZOA
-2D8C ETHIOPIC SYLLABLE DOA
-2D8D ETHIOPIC SYLLABLE DDOA
-2D8E ETHIOPIC SYLLABLE JOA
-2D8F ETHIOPIC SYLLABLE THOA
-2D90 ETHIOPIC SYLLABLE CHOA
-2D91 ETHIOPIC SYLLABLE PHOA
-2D92 ETHIOPIC SYLLABLE POA
-@ Syllables for Blin
-2D93 ETHIOPIC SYLLABLE GGWA
-2D94 ETHIOPIC SYLLABLE GGWI
-2D95 ETHIOPIC SYLLABLE GGWEE
-2D96 ETHIOPIC SYLLABLE GGWE
-@ Syllables for Sebatbeit
-2DA0 ETHIOPIC SYLLABLE SSA
-2DA1 ETHIOPIC SYLLABLE SSU
-2DA2 ETHIOPIC SYLLABLE SSI
-2DA3 ETHIOPIC SYLLABLE SSAA
-2DA4 ETHIOPIC SYLLABLE SSEE
-2DA5 ETHIOPIC SYLLABLE SSE
-2DA6 ETHIOPIC SYLLABLE SSO
-2DA8 ETHIOPIC SYLLABLE CCA
-2DA9 ETHIOPIC SYLLABLE CCU
-2DAA ETHIOPIC SYLLABLE CCI
-2DAB ETHIOPIC SYLLABLE CCAA
-2DAC ETHIOPIC SYLLABLE CCEE
-2DAD ETHIOPIC SYLLABLE CCE
-2DAE ETHIOPIC SYLLABLE CCO
-2DB0 ETHIOPIC SYLLABLE ZZA
-2DB1 ETHIOPIC SYLLABLE ZZU
-2DB2 ETHIOPIC SYLLABLE ZZI
-2DB3 ETHIOPIC SYLLABLE ZZAA
-2DB4 ETHIOPIC SYLLABLE ZZEE
-2DB5 ETHIOPIC SYLLABLE ZZE
-2DB6 ETHIOPIC SYLLABLE ZZO
-2DB8 ETHIOPIC SYLLABLE CCHA
-2DB9 ETHIOPIC SYLLABLE CCHU
-2DBA ETHIOPIC SYLLABLE CCHI
-2DBB ETHIOPIC SYLLABLE CCHAA
-2DBC ETHIOPIC SYLLABLE CCHEE
-2DBD ETHIOPIC SYLLABLE CCHE
-2DBE ETHIOPIC SYLLABLE CCHO
-2DC0 ETHIOPIC SYLLABLE QYA
-2DC1 ETHIOPIC SYLLABLE QYU
-2DC2 ETHIOPIC SYLLABLE QYI
-2DC3 ETHIOPIC SYLLABLE QYAA
-2DC4 ETHIOPIC SYLLABLE QYEE
-2DC5 ETHIOPIC SYLLABLE QYE
-2DC6 ETHIOPIC SYLLABLE QYO
-2DC8 ETHIOPIC SYLLABLE KYA
-2DC9 ETHIOPIC SYLLABLE KYU
-2DCA ETHIOPIC SYLLABLE KYI
-2DCB ETHIOPIC SYLLABLE KYAA
-2DCC ETHIOPIC SYLLABLE KYEE
-2DCD ETHIOPIC SYLLABLE KYE
-2DCE ETHIOPIC SYLLABLE KYO
-2DD0 ETHIOPIC SYLLABLE XYA
-2DD1 ETHIOPIC SYLLABLE XYU
-2DD2 ETHIOPIC SYLLABLE XYI
-2DD3 ETHIOPIC SYLLABLE XYAA
-2DD4 ETHIOPIC SYLLABLE XYEE
-2DD5 ETHIOPIC SYLLABLE XYE
-2DD6 ETHIOPIC SYLLABLE XYO
-2DD8 ETHIOPIC SYLLABLE GYA
-2DD9 ETHIOPIC SYLLABLE GYU
-2DDA ETHIOPIC SYLLABLE GYI
-2DDB ETHIOPIC SYLLABLE GYAA
-2DDC ETHIOPIC SYLLABLE GYEE
-2DDD ETHIOPIC SYLLABLE GYE
-2DDE ETHIOPIC SYLLABLE GYO
-@@ 2E00 Supplemental Punctuation 2E7F
-@ New Testament editorial symbols
-2E00 RIGHT ANGLE SUBSTITUTION MARKER
-2E01 RIGHT ANGLE DOTTED SUBSTITUTION MARKER
-2E02 LEFT SUBSTITUTION BRACKET
-2E03 RIGHT SUBSTITUTION BRACKET
-2E04 LEFT DOTTED SUBSTITUTION BRACKET
-2E05 RIGHT DOTTED SUBSTITUTION BRACKET
-2E06 RAISED INTERPOLATION MARKER
-2E07 RAISED DOTTED INTERPOLATION MARKER
-2E08 DOTTED TRANSPOSITION MARKER
-2E09 LEFT TRANSPOSITION BRACKET
-2E0A RIGHT TRANSPOSITION BRACKET
-2E0B RAISED SQUARE
- * used as an opening raised omission bracket
-2E0C LEFT RAISED OMISSION BRACKET
- * used as an opening or closing raised omission bracket
-2E0D RIGHT RAISED OMISSION BRACKET
- * used as a closing or opening raised omission bracket
-@ Ancient Greek textual symbols
-2E0E EDITORIAL CORONIS
- x (greek koronis - 1FBD)
-2E0F PARAGRAPHOS
-2E10 FORKED PARAGRAPHOS
-2E11 REVERSED FORKED PARAGRAPHOS
-2E12 HYPODIASTOLE
-2E13 DOTTED OBELOS
- * glyph variants may look like '00F7' or '2238'
- x (commercial minus sign - 2052)
-2E14 DOWNWARDS ANCORA
-2E15 UPWARDS ANCORA
-2E16 DOTTED RIGHT-POINTING ANGLE
- = diple periestigmene
-@ Ancient Near-Eastern linguistic symbol
-2E17 DOUBLE OBLIQUE HYPHEN
- * used in ancient Near-Eastern linguistics
- * hyphen in Fraktur text uses 002D or 2010, but with a '2E17' glyph in Fraktur fonts
- x (hyphen-minus - 002D)
- x (equals sign - 003D)
- x (hyphen - 2010)
-@ Brackets
-2E1C LEFT LOW PARAPHRASE BRACKET
-2E1D RIGHT LOW PARAPHRASE BRACKET
- * used in N'Ko
-@@ 2E80 CJK Radicals Supplement 2EFF
-@ CJK radicals supplement
-2E80 CJK RADICAL REPEAT
-2E81 CJK RADICAL CLIFF
- x 5382
-2E82 CJK RADICAL SECOND ONE
- x 4E5B
-2E83 CJK RADICAL SECOND TWO
- x 4E5A
-2E84 CJK RADICAL SECOND THREE
- x 4E59
-2E85 CJK RADICAL PERSON
- * form used on left side
- x 4EBB
-2E86 CJK RADICAL BOX
- x 5182
-2E87 CJK RADICAL TABLE
- x 51E0
-2E88 CJK RADICAL KNIFE ONE
- * form used at top
- x 5200
-2E89 CJK RADICAL KNIFE TWO
- * form used on right side
- x 5202
-2E8A CJK RADICAL DIVINATION
- * form used at top
- x 535C
-2E8B CJK RADICAL SEAL
- * form used at bottom
- x 353E
-2E8C CJK RADICAL SMALL ONE
- * form used at top
- x 5C0F
-2E8D CJK RADICAL SMALL TWO
- * form used at top
- x 5C0F
-2E8E CJK RADICAL LAME ONE
- x 5C22
-2E8F CJK RADICAL LAME TWO
- x 5C23
-2E90 CJK RADICAL LAME THREE
- x 5C22
-2E91 CJK RADICAL LAME FOUR
- x 5C23
-2E92 CJK RADICAL SNAKE
- x 5DF3
-2E93 CJK RADICAL THREAD
- x 5E7A
-2E94 CJK RADICAL SNOUT ONE
- x 5F51
-2E95 CJK RADICAL SNOUT TWO
- x 5F50
-2E96 CJK RADICAL HEART ONE
- * form used on left side
- x 5FC4
-2E97 CJK RADICAL HEART TWO
- * form used at bottom
- x 5FC3
-2E98 CJK RADICAL HAND
- * form used on left side
- x 624C
-2E99 CJK RADICAL RAP
- * form used on right side
- x 6535
-2E9B CJK RADICAL CHOKE
- x 65E1
-2E9C CJK RADICAL SUN
- x 65E5
-2E9D CJK RADICAL MOON
- x 6708
-2E9E CJK RADICAL DEATH
- x 6B7A
-2E9F CJK RADICAL MOTHER
- # 6BCD
-2EA0 CJK RADICAL CIVILIAN
- x 6C11
-2EA1 CJK RADICAL WATER ONE
- * form used on left side
- x 6C35
-2EA2 CJK RADICAL WATER TWO
- * form used (rarely) at bottom
- x 6C3A
-2EA3 CJK RADICAL FIRE
- * form used at bottom
- x 706C
-2EA4 CJK RADICAL PAW ONE
- * form used at top
- x 722B
-2EA5 CJK RADICAL PAW TWO
- * form used at top
- x 722B
-2EA6 CJK RADICAL SIMPLIFIED HALF TREE TRUNK
- x 4E2C
-2EA7 CJK RADICAL COW
- x 725B
-2EA8 CJK RADICAL DOG
- * form used on left side
- x 72AD
-2EA9 CJK RADICAL JADE
- * form used on left side
- x 738B
-2EAA CJK RADICAL BOLT OF CLOTH
- * form used on left side
- x 758B
-2EAB CJK RADICAL EYE
- * form used at top
- x (cjk radical net two - 2EB2)
- x 76EE
-2EAC CJK RADICAL SPIRIT ONE
- x 793A
-2EAD CJK RADICAL SPIRIT TWO
- x 793B
-2EAE CJK RADICAL BAMBOO
- x 7AF9
-2EAF CJK RADICAL SILK
- * form used on left side
- x 7CF9
-2EB0 CJK RADICAL C-SIMPLIFIED SILK
- * form used on left side
- x 7E9F
-2EB1 CJK RADICAL NET ONE
- x 7F53
-2EB2 CJK RADICAL NET TWO
- x (cjk radical eye - 2EAB)
- x 7F52
-2EB3 CJK RADICAL NET THREE
- x 7F51
-2EB4 CJK RADICAL NET FOUR
- x 7F51
-2EB5 CJK RADICAL MESH
- x 2626B
-2EB6 CJK RADICAL SHEEP
- * form used on left side
- x 7F8A
-2EB7 CJK RADICAL RAM
- * form used at top
- x 7F8A
-2EB8 CJK RADICAL EWE
- x 7F8B
-2EB9 CJK RADICAL OLD
- x 8002
-2EBA CJK RADICAL BRUSH ONE
- x 8080
-2EBB CJK RADICAL BRUSH TWO
- x 807F
-2EBC CJK RADICAL MEAT
- x 8089
-2EBD CJK RADICAL MORTAR
- x 81FC
-2EBE CJK RADICAL GRASS ONE
- x 8279
-2EBF CJK RADICAL GRASS TWO
- x 8279
-2EC0 CJK RADICAL GRASS THREE
- x 8279
-2EC1 CJK RADICAL TIGER
- x 864E
-2EC2 CJK RADICAL CLOTHES
- * form used on left side
- x 8864
-2EC3 CJK RADICAL WEST ONE
- * form used at top
- x 8980
-2EC4 CJK RADICAL WEST TWO
- * form used on left side
- x 897F
-2EC5 CJK RADICAL C-SIMPLIFIED SEE
- x 89C1
-2EC6 CJK RADICAL SIMPLIFIED HORN
- x 89D2
-2EC7 CJK RADICAL HORN
- x 278B2
-2EC8 CJK RADICAL C-SIMPLIFIED SPEECH
- x 8BA0
-2EC9 CJK RADICAL C-SIMPLIFIED SHELL
- x 8D1D
-2ECA CJK RADICAL FOOT
- * form used on left side
- x 8DB3
-2ECB CJK RADICAL C-SIMPLIFIED CART
- x 8F66
-2ECC CJK RADICAL SIMPLIFIED WALK
- x 8FB6
-2ECD CJK RADICAL WALK ONE
- x 8FB6
-2ECE CJK RADICAL WALK TWO
- x 8FB6
-2ECF CJK RADICAL CITY
- * form used on right side
- x 9091
-2ED0 CJK RADICAL C-SIMPLIFIED GOLD
- x 9485
-2ED1 CJK RADICAL LONG ONE
- x 9577
-2ED2 CJK RADICAL LONG TWO
- * form used on left side
- x 9578
-2ED3 CJK RADICAL C-SIMPLIFIED LONG
- x 957F
-2ED4 CJK RADICAL C-SIMPLIFIED GATE
- x 95E8
-2ED5 CJK RADICAL MOUND ONE
- x 961C
- x 28E0F
-2ED6 CJK RADICAL MOUND TWO
- * form used on left side
- x 961D
-2ED7 CJK RADICAL RAIN
- x 96E8
-2ED8 CJK RADICAL BLUE
- x 9752
-2ED9 CJK RADICAL C-SIMPLIFIED TANNED LEATHER
- x 97E6
-2EDA CJK RADICAL C-SIMPLIFIED LEAF
- x 9875
-2EDB CJK RADICAL C-SIMPLIFIED WIND
- x 98CE
-2EDC CJK RADICAL C-SIMPLIFIED FLY
- x 98DE
-2EDD CJK RADICAL EAT ONE
- * form used at bottom
- x 98DF
-2EDE CJK RADICAL EAT TWO
- * form used on left side
- x 2967F
-2EDF CJK RADICAL EAT THREE
- * form used on left side
- x 98E0
-2EE0 CJK RADICAL C-SIMPLIFIED EAT
- * form used on left side
- x 9963
-2EE1 CJK RADICAL HEAD
- x 29810
-2EE2 CJK RADICAL C-SIMPLIFIED HORSE
- x 9A6C
-2EE3 CJK RADICAL BONE
- x 9AA8
-2EE4 CJK RADICAL GHOST
- x 9B3C
-2EE5 CJK RADICAL C-SIMPLIFIED FISH
- x 9C7C
-2EE6 CJK RADICAL C-SIMPLIFIED BIRD
- x 9E1F
-2EE7 CJK RADICAL C-SIMPLIFIED SALT
- x 9E75
-2EE8 CJK RADICAL SIMPLIFIED WHEAT
- x 9EA6
-2EE9 CJK RADICAL SIMPLIFIED YELLOW
- x 9EC4
-2EEA CJK RADICAL C-SIMPLIFIED FROG
- x 9EFE
-2EEB CJK RADICAL J-SIMPLIFIED EVEN
- x 6589
-2EEC CJK RADICAL C-SIMPLIFIED EVEN
- x 9F50
-2EED CJK RADICAL J-SIMPLIFIED TOOTH
- x 6B6F
-2EEE CJK RADICAL C-SIMPLIFIED TOOTH
- x 9F7F
-2EEF CJK RADICAL J-SIMPLIFIED DRAGON
- x 9F8D
-2EF0 CJK RADICAL C-SIMPLIFIED DRAGON
- x 9F99
-2EF1 CJK RADICAL TURTLE
- x 9F9C
-2EF2 CJK RADICAL J-SIMPLIFIED TURTLE
- x 4E80
-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)
-@ CJK angle brackets
-3008 LEFT ANGLE BRACKET
- x (less-than sign - 003C)
- x (single left-pointing angle quotation mark - 2039)
- x (left-pointing angle bracket - 2329)
- x (mathematical left angle bracket - 27E8)
-3009 RIGHT ANGLE BRACKET
- x (greater-than sign - 003E)
- x (single right-pointing angle quotation mark - 203A)
- x (right-pointing angle bracket - 232A)
- x (mathematical right angle bracket - 27E9)
-300A LEFT DOUBLE ANGLE BRACKET
- x (left-pointing double angle quotation mark - 00AB)
- x (mathematical left double angle bracket - 27EA)
-300B RIGHT DOUBLE ANGLE BRACKET
- x (right-pointing double angle quotation mark - 00BB)
- x (mathematical right double angle bracket - 27EB)
-@ CJK corner brackets
-@+ The CJK corner brackets, which function as quotation marks, are not recommended for general-purpose corner brackets. See the ceiling and floor characters, instead.
-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
-@ CJK brackets
-3010 LEFT BLACK LENTICULAR BRACKET
-3011 RIGHT BLACK LENTICULAR BRACKET
-@ CJK symbols
-3012 POSTAL MARK
-3013 GETA MARK
- * substitute for ideograph not in font
-@ CJK brackets
-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
- = left abstract syntax bracket
- x (mathematical left white square bracket - 27E6)
-301B RIGHT WHITE SQUARE BRACKET
- = right abstract syntax bracket
- x (mathematical right white square bracket - 27E7)
-@ CJK symbols and punctuation
-301C WAVE DASH
-@+ * This character was encoded to match JIS C 6226-1978 1-33 "wave dash". The JIS standards and some industry practice disagree in mapping.
- 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
-@ Suzhou numerals
-@+ The Suzhou numerals (Chinese su1zhou1ma3zi) are special numeric forms used by traders to display the prices of goods. The use of "HANGZHOU" in the names is a misnomer.
-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 Suzhou numerals
-3038 HANGZHOU NUMERAL TEN
- # 5341
-3039 HANGZHOU NUMERAL TWENTY
- # 5344
-303A HANGZHOU NUMERAL THIRTY
- # 5345
-@ Other CJK punctuation
-303B VERTICAL IDEOGRAPHIC ITERATION MARK
-303C MASU MARK
- * informal abbreviation for Japanese -masu ending
- x (squared rising diagonal slash - 29C4)
-303D PART ALTERNATION MARK
- * marks the start of a song part in Japanese
-@ 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
-@ Small letters
-3095 HIRAGANA LETTER SMALL KA
-3096 HIRAGANA LETTER SMALL KE
-@ 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
-@ Vertical form digraph
-309F HIRAGANA DIGRAPH YORI
- # <vertical> 3088 308A
-@@ 30A0 Katakana 30FF
-@ Katakana punctuation
-30A0 KATAKANA-HIRAGANA DOUBLE HYPHEN
- x (equals sign - 003D)
-@ 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
-@ Vertical form digraph
-30FF KATAKANA DIGRAPH KOTO
- # <vertical> 30B3 30C8
-@@ 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
-@@ 31C0 CJK Strokes 31EF
-@ CJK strokes
-31C0 CJK STROKE T
-31C1 CJK STROKE WG
-31C2 CJK STROKE XG
-31C3 CJK STROKE BXG
-31C4 CJK STROKE SW
-31C5 CJK STROKE HZZ
-31C6 CJK STROKE HZG
-31C7 CJK STROKE HP
-31C8 CJK STROKE HZWG
-31C9 CJK STROKE SZWG
-31CA CJK STROKE HZT
-31CB CJK STROKE HZZP
-31CC CJK STROKE HPWG
-31CD CJK STROKE HZW
-31CE CJK STROKE HZZZ
-31CF CJK STROKE N
-@@ 31F0 Katakana Phonetic Extensions 31FF
-@ Phonetic extensions for Ainu
-31F0 KATAKANA LETTER SMALL KU
-31F1 KATAKANA LETTER SMALL SI
-31F2 KATAKANA LETTER SMALL SU
-31F3 KATAKANA LETTER SMALL TO
-31F4 KATAKANA LETTER SMALL NU
-31F5 KATAKANA LETTER SMALL HA
-31F6 KATAKANA LETTER SMALL HI
-31F7 KATAKANA LETTER SMALL HU
-31F8 KATAKANA LETTER SMALL HE
-31F9 KATAKANA LETTER SMALL HO
-31FA KATAKANA LETTER SMALL MU
-31FB KATAKANA LETTER SMALL RA
-31FC KATAKANA LETTER SMALL RI
-31FD KATAKANA LETTER SMALL RU
-31FE KATAKANA LETTER SMALL RE
-31FF KATAKANA LETTER SMALL RO
-@@ 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 Korean words
-321D PARENTHESIZED KOREAN CHARACTER OJEON
- # 0028 110B 1169 110C 1165 11AB 0029
-321E PARENTHESIZED KOREAN CHARACTER O HU
- # 0028 110B 1169 1112 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
-@ Squared Latin abbreviation
-3250 PARTNERSHIP SIGN
- # <square> 0050 0054 0045
-@ Circled numbers
-3251 CIRCLED NUMBER TWENTY ONE
- # <circle> 0032 0031
-3252 CIRCLED NUMBER TWENTY TWO
- # <circle> 0032 0032
-3253 CIRCLED NUMBER TWENTY THREE
- # <circle> 0032 0033
-3254 CIRCLED NUMBER TWENTY FOUR
- # <circle> 0032 0034
-3255 CIRCLED NUMBER TWENTY FIVE
- # <circle> 0032 0035
-3256 CIRCLED NUMBER TWENTY SIX
- # <circle> 0032 0036
-3257 CIRCLED NUMBER TWENTY SEVEN
- # <circle> 0032 0037
-3258 CIRCLED NUMBER TWENTY EIGHT
- # <circle> 0032 0038
-3259 CIRCLED NUMBER TWENTY NINE
- # <circle> 0032 0039
-325A CIRCLED NUMBER THIRTY
- # <circle> 0033 0030
-325B CIRCLED NUMBER THIRTY ONE
- # <circle> 0033 0031
-325C CIRCLED NUMBER THIRTY TWO
- # <circle> 0033 0032
-325D CIRCLED NUMBER THIRTY THREE
- # <circle> 0033 0033
-325E CIRCLED NUMBER THIRTY FOUR
- # <circle> 0033 0034
-325F CIRCLED NUMBER THIRTY FIVE
- # <circle> 0033 0035
-@ 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
-@ Circled Korean words
-327C CIRCLED KOREAN CHARACTER CHAMKO
- # <circle> 110E 1161 11B7 1100 1169
-327D CIRCLED KOREAN CHARACTER JUEUI
- # <circle> 110C 116E 110B 1174
-@ Circled Hangul syllable
-327E CIRCLED HANGUL IEUNG U
- * postal code mark
- # <circle> 110B 116E
-@ 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
-@ Circled numbers
-32B1 CIRCLED NUMBER THIRTY SIX
- # <circle> 0033 0036
-32B2 CIRCLED NUMBER THIRTY SEVEN
- # <circle> 0033 0037
-32B3 CIRCLED NUMBER THIRTY EIGHT
- # <circle> 0033 0038
-32B4 CIRCLED NUMBER THIRTY NINE
- # <circle> 0033 0039
-32B5 CIRCLED NUMBER FORTY
- # <circle> 0034 0030
-32B6 CIRCLED NUMBER FORTY ONE
- # <circle> 0034 0031
-32B7 CIRCLED NUMBER FORTY TWO
- # <circle> 0034 0032
-32B8 CIRCLED NUMBER FORTY THREE
- # <circle> 0034 0033
-32B9 CIRCLED NUMBER FORTY FOUR
- # <circle> 0034 0034
-32BA CIRCLED NUMBER FORTY FIVE
- # <circle> 0034 0035
-32BB CIRCLED NUMBER FORTY SIX
- # <circle> 0034 0036
-32BC CIRCLED NUMBER FORTY SEVEN
- # <circle> 0034 0037
-32BD CIRCLED NUMBER FORTY EIGHT
- # <circle> 0034 0038
-32BE CIRCLED NUMBER FORTY NINE
- # <circle> 0034 0039
-32BF CIRCLED NUMBER FIFTY
- # <circle> 0035 0030
-@ 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
-@ Squared Latin abbreviations
-32CC SQUARE HG
- # <square> 0048 0067
-32CD SQUARE ERG
- # <square> 0065 0072 0067
-32CE SQUARE EV
- # <square> 0065 0056
-32CF LIMITED LIABILITY SIGN
- # <square> 004C 0054 0044
-@ 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
-3377 SQUARE DM
- # <square> 0064 006D
-3378 SQUARE DM SQUARED
- # <square> 0064 006D 00B2
-3379 SQUARE DM CUBED
- # <square> 0064 006D 00B3
-337A SQUARE IU
- # <square> 0049 0055
-@ 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
-33DE SQUARE V OVER M
- # <square> 0056 2215 006D
-33DF SQUARE A OVER M
- # <square> 0041 2215 006D
-@ 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
-@ Squared Latin abbreviation
-33FF SQUARE GAL
- # <square> 0067 0061 006C
-@@ 3400 CJK Unified Ideographs Extension A 4DB5
-@@ 4DC0 Yijing Hexagram Symbols 4DFF
-@ Yijing hexagram symbols
-4DC0 HEXAGRAM FOR THE CREATIVE HEAVEN
-4DC1 HEXAGRAM FOR THE RECEPTIVE EARTH
-4DC2 HEXAGRAM FOR DIFFICULTY AT THE BEGINNING
-4DC3 HEXAGRAM FOR YOUTHFUL FOLLY
-4DC4 HEXAGRAM FOR WAITING
-4DC5 HEXAGRAM FOR CONFLICT
-4DC6 HEXAGRAM FOR THE ARMY
-4DC7 HEXAGRAM FOR HOLDING TOGETHER
-4DC8 HEXAGRAM FOR SMALL TAMING
-4DC9 HEXAGRAM FOR TREADING
-4DCA HEXAGRAM FOR PEACE
-4DCB HEXAGRAM FOR STANDSTILL
-4DCC HEXAGRAM FOR FELLOWSHIP
-4DCD HEXAGRAM FOR GREAT POSSESSION
-4DCE HEXAGRAM FOR MODESTY
-4DCF HEXAGRAM FOR ENTHUSIASM
-4DD0 HEXAGRAM FOR FOLLOWING
-4DD1 HEXAGRAM FOR WORK ON THE DECAYED
-4DD2 HEXAGRAM FOR APPROACH
-4DD3 HEXAGRAM FOR CONTEMPLATION
-4DD4 HEXAGRAM FOR BITING THROUGH
-4DD5 HEXAGRAM FOR GRACE
-4DD6 HEXAGRAM FOR SPLITTING APART
-4DD7 HEXAGRAM FOR RETURN
-4DD8 HEXAGRAM FOR INNOCENCE
-4DD9 HEXAGRAM FOR GREAT TAMING
-4DDA HEXAGRAM FOR MOUTH CORNERS
-4DDB HEXAGRAM FOR GREAT PREPONDERANCE
-4DDC HEXAGRAM FOR THE ABYSMAL WATER
-4DDD HEXAGRAM FOR THE CLINGING FIRE
-4DDE HEXAGRAM FOR INFLUENCE
-4DDF HEXAGRAM FOR DURATION
-4DE0 HEXAGRAM FOR RETREAT
-4DE1 HEXAGRAM FOR GREAT POWER
-4DE2 HEXAGRAM FOR PROGRESS
-4DE3 HEXAGRAM FOR DARKENING OF THE LIGHT
-4DE4 HEXAGRAM FOR THE FAMILY
-4DE5 HEXAGRAM FOR OPPOSITION
-4DE6 HEXAGRAM FOR OBSTRUCTION
-4DE7 HEXAGRAM FOR DELIVERANCE
-4DE8 HEXAGRAM FOR DECREASE
-4DE9 HEXAGRAM FOR INCREASE
-4DEA HEXAGRAM FOR BREAKTHROUGH
-4DEB HEXAGRAM FOR COMING TO MEET
-4DEC HEXAGRAM FOR GATHERING TOGETHER
-4DED HEXAGRAM FOR PUSHING UPWARD
-4DEE HEXAGRAM FOR OPPRESSION
-4DEF HEXAGRAM FOR THE WELL
-4DF0 HEXAGRAM FOR REVOLUTION
-4DF1 HEXAGRAM FOR THE CAULDRON
-4DF2 HEXAGRAM FOR THE AROUSING THUNDER
-4DF3 HEXAGRAM FOR THE KEEPING STILL MOUNTAIN
-4DF4 HEXAGRAM FOR DEVELOPMENT
-4DF5 HEXAGRAM FOR THE MARRYING MAIDEN
-4DF6 HEXAGRAM FOR ABUNDANCE
-4DF7 HEXAGRAM FOR THE WANDERER
-4DF8 HEXAGRAM FOR THE GENTLE WIND
-4DF9 HEXAGRAM FOR THE JOYOUS LAKE
-4DFA HEXAGRAM FOR DISPERSION
-4DFB HEXAGRAM FOR LIMITATION
-4DFC HEXAGRAM FOR INNER TRUTH
-4DFD HEXAGRAM FOR SMALL PREPONDERANCE
-4DFE HEXAGRAM FOR AFTER COMPLETION
-4DFF HEXAGRAM FOR BEFORE COMPLETION
-@@ 4E00 CJK Unified Ideographs 9FBB
-@@ 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
-A4A2 YI RADICAL ZUP
-A4A3 YI RADICAL CYT
-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
-A4B4 YI RADICAL NZUP
-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
-A4C1 YI RADICAL ZUR
-A4C2 YI RADICAL SHOP
-A4C3 YI RADICAL CHE
-A4C4 YI RADICAL ZZIET
-A4C5 YI RADICAL NBIE
-A4C6 YI RADICAL KE
-@@ A700 Modifier Tone Letters A71F
-@ Corner tone marks for Chinese
-A700 MODIFIER LETTER CHINESE TONE YIN PING
-A701 MODIFIER LETTER CHINESE TONE YANG PING
-A702 MODIFIER LETTER CHINESE TONE YIN SHANG
-A703 MODIFIER LETTER CHINESE TONE YANG SHANG
-A704 MODIFIER LETTER CHINESE TONE YIN QU
-A705 MODIFIER LETTER CHINESE TONE YANG QU
-A706 MODIFIER LETTER CHINESE TONE YIN RU
-A707 MODIFIER LETTER CHINESE TONE YANG RU
-@ Dotted tone letters
-A708 MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR
-A709 MODIFIER LETTER HIGH DOTTED TONE BAR
-A70A MODIFIER LETTER MID DOTTED TONE BAR
-A70B MODIFIER LETTER LOW DOTTED TONE BAR
-A70C MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR
-A70D MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR
-A70E MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR
-A70F MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR
-A710 MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR
-A711 MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR
-@ Left-stem tone letters
-A712 MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR
-A713 MODIFIER LETTER HIGH LEFT-STEM TONE BAR
-A714 MODIFIER LETTER MID LEFT-STEM TONE BAR
-A715 MODIFIER LETTER LOW LEFT-STEM TONE BAR
-A716 MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
-@@ A800 Syloti Nagri A82F
-@ Independent vowels and dvisvara
-A800 SYLOTI NAGRI LETTER A
-A801 SYLOTI NAGRI LETTER I
-A802 SYLOTI NAGRI SIGN DVISVARA
-A803 SYLOTI NAGRI LETTER U
-A804 SYLOTI NAGRI LETTER E
-A805 SYLOTI NAGRI LETTER O
-@ Sign
-A806 SYLOTI NAGRI SIGN HASANTA
- = halant, virama
-@ Consonants and consonant signs
-A807 SYLOTI NAGRI LETTER KO
-A808 SYLOTI NAGRI LETTER KHO
-A809 SYLOTI NAGRI LETTER GO
-A80A SYLOTI NAGRI LETTER GHO
-A80B SYLOTI NAGRI SIGN ANUSVARA
-A80C SYLOTI NAGRI LETTER CO
-A80D SYLOTI NAGRI LETTER CHO
-A80E SYLOTI NAGRI LETTER JO
-A80F SYLOTI NAGRI LETTER JHO
-A810 SYLOTI NAGRI LETTER TTO
-A811 SYLOTI NAGRI LETTER TTHO
-A812 SYLOTI NAGRI LETTER DDO
-A813 SYLOTI NAGRI LETTER DDHO
-A814 SYLOTI NAGRI LETTER TO
-A815 SYLOTI NAGRI LETTER THO
-A816 SYLOTI NAGRI LETTER DO
-A817 SYLOTI NAGRI LETTER DHO
-A818 SYLOTI NAGRI LETTER NO
-A819 SYLOTI NAGRI LETTER PO
-A81A SYLOTI NAGRI LETTER PHO
-A81B SYLOTI NAGRI LETTER BO
-A81C SYLOTI NAGRI LETTER BHO
-A81D SYLOTI NAGRI LETTER MO
-A81E SYLOTI NAGRI LETTER RO
-A81F SYLOTI NAGRI LETTER LO
-A820 SYLOTI NAGRI LETTER RRO
-A821 SYLOTI NAGRI LETTER SO
-A822 SYLOTI NAGRI LETTER HO
-@ Dependent vowel signs
-A823 SYLOTI NAGRI VOWEL SIGN A
-A824 SYLOTI NAGRI VOWEL SIGN I
-A825 SYLOTI NAGRI VOWEL SIGN U
-A826 SYLOTI NAGRI VOWEL SIGN E
-A827 SYLOTI NAGRI VOWEL SIGN OO
-@ Poetry marks
-A828 SYLOTI NAGRI POETRY MARK-1
-A829 SYLOTI NAGRI POETRY MARK-2
-A82A SYLOTI NAGRI POETRY MARK-3
-A82B SYLOTI NAGRI POETRY MARK-4
-@@ 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 X 1001:1998
-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
- : 964B
-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
- x (cjk unified ideograph-96B7 - 96B7)
- : 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 ideographs
-FA0E CJK COMPATIBILITY IDEOGRAPH-FA0E
- * a unified CJK ideograph, not a compatibility ideograph, despite its name
-FA0F CJK COMPATIBILITY IDEOGRAPH-FA0F
- * a unified CJK ideograph, not a compatibility ideograph, despite its name
-FA10 CJK COMPATIBILITY IDEOGRAPH-FA10
- : 585A
-FA11 CJK COMPATIBILITY IDEOGRAPH-FA11
- * a unified CJK ideograph, not a compatibility ideograph, despite its name
-FA12 CJK COMPATIBILITY IDEOGRAPH-FA12
- : 6674
-FA13 CJK COMPATIBILITY IDEOGRAPH-FA13
- * a unified CJK ideograph, not a compatibility ideograph, despite its name
-FA14 CJK COMPATIBILITY IDEOGRAPH-FA14
- * a unified CJK ideograph, not a compatibility ideograph, despite its name
-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 *
- * a unified CJK ideograph, not a compatibility ideograph, despite its name
-FA20 CJK COMPATIBILITY IDEOGRAPH-FA20
- : 8612
-FA21 CJK COMPATIBILITY IDEOGRAPH-FA21
- * a unified CJK ideograph, not a compatibility ideograph, despite its name
-FA22 CJK COMPATIBILITY IDEOGRAPH-FA22
- : 8AF8
-FA23 CJK COMPATIBILITY IDEOGRAPH-FA23 *
- * a unified CJK ideograph, not a compatibility ideograph, despite its name
-FA24 CJK COMPATIBILITY IDEOGRAPH-FA24
- * a unified CJK ideograph, not a compatibility ideograph, despite its name
-FA25 CJK COMPATIBILITY IDEOGRAPH-FA25
- : 9038
-FA26 CJK COMPATIBILITY IDEOGRAPH-FA26
- : 90FD
-FA27 CJK COMPATIBILITY IDEOGRAPH-FA27
- * a unified CJK ideograph, not a compatibility ideograph, despite its name
-FA28 CJK COMPATIBILITY IDEOGRAPH-FA28
- * a unified CJK ideograph, not a compatibility ideograph, despite its name
-FA29 CJK COMPATIBILITY IDEOGRAPH-FA29
- * a unified CJK ideograph, not a compatibility ideograph, despite its name
-FA2A CJK COMPATIBILITY IDEOGRAPH-FA2A
- : 98EF
-FA2B CJK COMPATIBILITY IDEOGRAPH-FA2B
- : 98FC
-FA2C CJK COMPATIBILITY IDEOGRAPH-FA2C
- : 9928
-FA2D CJK COMPATIBILITY IDEOGRAPH-FA2D
- : 9DB4
-@ JIS X 0213 compatibility ideographs
-FA30 CJK COMPATIBILITY IDEOGRAPH-FA30
- : 4FAE
-FA31 CJK COMPATIBILITY IDEOGRAPH-FA31
- : 50E7
-FA32 CJK COMPATIBILITY IDEOGRAPH-FA32
- : 514D
-FA33 CJK COMPATIBILITY IDEOGRAPH-FA33
- : 52C9
-FA34 CJK COMPATIBILITY IDEOGRAPH-FA34
- : 52E4
-FA35 CJK COMPATIBILITY IDEOGRAPH-FA35
- : 5351
-FA36 CJK COMPATIBILITY IDEOGRAPH-FA36
- : 559D
-FA37 CJK COMPATIBILITY IDEOGRAPH-FA37
- : 5606
-FA38 CJK COMPATIBILITY IDEOGRAPH-FA38
- : 5668
-FA39 CJK COMPATIBILITY IDEOGRAPH-FA39
- : 5840
-FA3A CJK COMPATIBILITY IDEOGRAPH-FA3A
- : 58A8
-FA3B CJK COMPATIBILITY IDEOGRAPH-FA3B
- : 5C64
-FA3C CJK COMPATIBILITY IDEOGRAPH-FA3C
- : 5C6E
-FA3D CJK COMPATIBILITY IDEOGRAPH-FA3D
- : 6094
-FA3E CJK COMPATIBILITY IDEOGRAPH-FA3E
- : 6168
-FA3F CJK COMPATIBILITY IDEOGRAPH-FA3F
- : 618E
-FA40 CJK COMPATIBILITY IDEOGRAPH-FA40
- : 61F2
-FA41 CJK COMPATIBILITY IDEOGRAPH-FA41
- : 654F
-FA42 CJK COMPATIBILITY IDEOGRAPH-FA42
- : 65E2
-FA43 CJK COMPATIBILITY IDEOGRAPH-FA43
- : 6691
-FA44 CJK COMPATIBILITY IDEOGRAPH-FA44
- : 6885
-FA45 CJK COMPATIBILITY IDEOGRAPH-FA45
- : 6D77
-FA46 CJK COMPATIBILITY IDEOGRAPH-FA46
- : 6E1A
-FA47 CJK COMPATIBILITY IDEOGRAPH-FA47
- : 6F22
-FA48 CJK COMPATIBILITY IDEOGRAPH-FA48
- : 716E
-FA49 CJK COMPATIBILITY IDEOGRAPH-FA49
- : 722B
-FA4A CJK COMPATIBILITY IDEOGRAPH-FA4A
- : 7422
-FA4B CJK COMPATIBILITY IDEOGRAPH-FA4B
- : 7891
-FA4C CJK COMPATIBILITY IDEOGRAPH-FA4C
- : 793E
-FA4D CJK COMPATIBILITY IDEOGRAPH-FA4D
- : 7949
-FA4E CJK COMPATIBILITY IDEOGRAPH-FA4E
- : 7948
-FA4F CJK COMPATIBILITY IDEOGRAPH-FA4F
- : 7950
-FA50 CJK COMPATIBILITY IDEOGRAPH-FA50
- : 7956
-FA51 CJK COMPATIBILITY IDEOGRAPH-FA51
- : 795D
-FA52 CJK COMPATIBILITY IDEOGRAPH-FA52
- : 798D
-FA53 CJK COMPATIBILITY IDEOGRAPH-FA53
- : 798E
-FA54 CJK COMPATIBILITY IDEOGRAPH-FA54
- : 7A40
-FA55 CJK COMPATIBILITY IDEOGRAPH-FA55
- : 7A81
-FA56 CJK COMPATIBILITY IDEOGRAPH-FA56
- : 7BC0
-FA57 CJK COMPATIBILITY IDEOGRAPH-FA57
- : 7DF4
-FA58 CJK COMPATIBILITY IDEOGRAPH-FA58
- : 7E09
-FA59 CJK COMPATIBILITY IDEOGRAPH-FA59
- : 7E41
-FA5A CJK COMPATIBILITY IDEOGRAPH-FA5A
- : 7F72
-FA5B CJK COMPATIBILITY IDEOGRAPH-FA5B
- : 8005
-FA5C CJK COMPATIBILITY IDEOGRAPH-FA5C
- : 81ED
-FA5D CJK COMPATIBILITY IDEOGRAPH-FA5D
- : 8279
-FA5E CJK COMPATIBILITY IDEOGRAPH-FA5E
- : 8279
-FA5F CJK COMPATIBILITY IDEOGRAPH-FA5F
- : 8457
-FA60 CJK COMPATIBILITY IDEOGRAPH-FA60
- : 8910
-FA61 CJK COMPATIBILITY IDEOGRAPH-FA61
- : 8996
-FA62 CJK COMPATIBILITY IDEOGRAPH-FA62
- : 8B01
-FA63 CJK COMPATIBILITY IDEOGRAPH-FA63
- : 8B39
-FA64 CJK COMPATIBILITY IDEOGRAPH-FA64
- : 8CD3
-FA65 CJK COMPATIBILITY IDEOGRAPH-FA65
- : 8D08
-FA66 CJK COMPATIBILITY IDEOGRAPH-FA66
- : 8FB6
-FA67 CJK COMPATIBILITY IDEOGRAPH-FA67
- : 9038
-FA68 CJK COMPATIBILITY IDEOGRAPH-FA68
- : 96E3
-FA69 CJK COMPATIBILITY IDEOGRAPH-FA69
- : 97FF
-FA6A CJK COMPATIBILITY IDEOGRAPH-FA6A
- : 983B
-@ DPRK compatibility ideographs
-FA70 CJK COMPATIBILITY IDEOGRAPH-FA70
- : 4E26
-FA71 CJK COMPATIBILITY IDEOGRAPH-FA71
- : 51B5
-FA72 CJK COMPATIBILITY IDEOGRAPH-FA72
- : 5168
-FA73 CJK COMPATIBILITY IDEOGRAPH-FA73
- : 4F80
-FA74 CJK COMPATIBILITY IDEOGRAPH-FA74
- : 5145
-FA75 CJK COMPATIBILITY IDEOGRAPH-FA75
- : 5180
-FA76 CJK COMPATIBILITY IDEOGRAPH-FA76
- : 52C7
-FA77 CJK COMPATIBILITY IDEOGRAPH-FA77
- : 52FA
-FA78 CJK COMPATIBILITY IDEOGRAPH-FA78
- : 559D
-FA79 CJK COMPATIBILITY IDEOGRAPH-FA79
- : 5555
-FA7A CJK COMPATIBILITY IDEOGRAPH-FA7A
- : 5599
-FA7B CJK COMPATIBILITY IDEOGRAPH-FA7B
- : 55E2
-FA7C CJK COMPATIBILITY IDEOGRAPH-FA7C
- : 585A
-FA7D CJK COMPATIBILITY IDEOGRAPH-FA7D
- : 58B3
-FA7E CJK COMPATIBILITY IDEOGRAPH-FA7E
- : 5944
-FA7F CJK COMPATIBILITY IDEOGRAPH-FA7F
- : 5954
-FA80 CJK COMPATIBILITY IDEOGRAPH-FA80
- : 5A62
-FA81 CJK COMPATIBILITY IDEOGRAPH-FA81
- : 5B28
-FA82 CJK COMPATIBILITY IDEOGRAPH-FA82
- : 5ED2
-FA83 CJK COMPATIBILITY IDEOGRAPH-FA83
- : 5ED9
-FA84 CJK COMPATIBILITY IDEOGRAPH-FA84
- : 5F69
-FA85 CJK COMPATIBILITY IDEOGRAPH-FA85
- : 5FAD
-FA86 CJK COMPATIBILITY IDEOGRAPH-FA86
- : 60D8
-FA87 CJK COMPATIBILITY IDEOGRAPH-FA87
- : 614E
-FA88 CJK COMPATIBILITY IDEOGRAPH-FA88
- : 6108
-FA89 CJK COMPATIBILITY IDEOGRAPH-FA89
- : 618E
-FA8A CJK COMPATIBILITY IDEOGRAPH-FA8A
- : 6160
-FA8B CJK COMPATIBILITY IDEOGRAPH-FA8B
- : 61F2
-FA8C CJK COMPATIBILITY IDEOGRAPH-FA8C
- : 6234
-FA8D CJK COMPATIBILITY IDEOGRAPH-FA8D
- : 63C4
-FA8E CJK COMPATIBILITY IDEOGRAPH-FA8E
- : 641C
-FA8F CJK COMPATIBILITY IDEOGRAPH-FA8F
- : 6452
-FA90 CJK COMPATIBILITY IDEOGRAPH-FA90
- : 6556
-FA91 CJK COMPATIBILITY IDEOGRAPH-FA91
- : 6674
-FA92 CJK COMPATIBILITY IDEOGRAPH-FA92
- : 6717
-FA93 CJK COMPATIBILITY IDEOGRAPH-FA93
- : 671B
-FA94 CJK COMPATIBILITY IDEOGRAPH-FA94
- : 6756
-FA95 CJK COMPATIBILITY IDEOGRAPH-FA95
- : 6B79
-FA96 CJK COMPATIBILITY IDEOGRAPH-FA96
- : 6BBA
-FA97 CJK COMPATIBILITY IDEOGRAPH-FA97
- : 6D41
-FA98 CJK COMPATIBILITY IDEOGRAPH-FA98
- : 6EDB
-FA99 CJK COMPATIBILITY IDEOGRAPH-FA99
- : 6ECB
-FA9A CJK COMPATIBILITY IDEOGRAPH-FA9A
- : 6F22
-FA9B CJK COMPATIBILITY IDEOGRAPH-FA9B
- : 701E
-FA9C CJK COMPATIBILITY IDEOGRAPH-FA9C
- : 716E
-FA9D CJK COMPATIBILITY IDEOGRAPH-FA9D
- : 77A7
-FA9E CJK COMPATIBILITY IDEOGRAPH-FA9E
- : 7235
-FA9F CJK COMPATIBILITY IDEOGRAPH-FA9F
- : 72AF
-FAA0 CJK COMPATIBILITY IDEOGRAPH-FAA0
- : 732A
-FAA1 CJK COMPATIBILITY IDEOGRAPH-FAA1
- : 7471
-FAA2 CJK COMPATIBILITY IDEOGRAPH-FAA2
- : 7506
-FAA3 CJK COMPATIBILITY IDEOGRAPH-FAA3
- : 753B
-FAA4 CJK COMPATIBILITY IDEOGRAPH-FAA4
- : 761D
-FAA5 CJK COMPATIBILITY IDEOGRAPH-FAA5
- : 761F
-FAA6 CJK COMPATIBILITY IDEOGRAPH-FAA6
- : 76CA
-FAA7 CJK COMPATIBILITY IDEOGRAPH-FAA7
- : 76DB
-FAA8 CJK COMPATIBILITY IDEOGRAPH-FAA8
- : 76F4
-FAA9 CJK COMPATIBILITY IDEOGRAPH-FAA9
- : 774A
-FAAA CJK COMPATIBILITY IDEOGRAPH-FAAA
- : 7740
-FAAB CJK COMPATIBILITY IDEOGRAPH-FAAB
- : 78CC
-FAAC CJK COMPATIBILITY IDEOGRAPH-FAAC
- : 7AB1
-FAAD CJK COMPATIBILITY IDEOGRAPH-FAAD
- : 7BC0
-FAAE CJK COMPATIBILITY IDEOGRAPH-FAAE
- : 7C7B
-FAAF CJK COMPATIBILITY IDEOGRAPH-FAAF
- : 7D5B
-FAB0 CJK COMPATIBILITY IDEOGRAPH-FAB0
- : 7DF4
-FAB1 CJK COMPATIBILITY IDEOGRAPH-FAB1
- : 7F3E
-FAB2 CJK COMPATIBILITY IDEOGRAPH-FAB2
- : 8005
-FAB3 CJK COMPATIBILITY IDEOGRAPH-FAB3
- : 8352
-FAB4 CJK COMPATIBILITY IDEOGRAPH-FAB4
- : 83EF
-FAB5 CJK COMPATIBILITY IDEOGRAPH-FAB5
- : 8779
-FAB6 CJK COMPATIBILITY IDEOGRAPH-FAB6
- : 8941
-FAB7 CJK COMPATIBILITY IDEOGRAPH-FAB7
- : 8986
-FAB8 CJK COMPATIBILITY IDEOGRAPH-FAB8
- : 8996
-FAB9 CJK COMPATIBILITY IDEOGRAPH-FAB9
- : 8ABF
-FABA CJK COMPATIBILITY IDEOGRAPH-FABA
- : 8AF8
-FABB CJK COMPATIBILITY IDEOGRAPH-FABB
- : 8ACB
-FABC CJK COMPATIBILITY IDEOGRAPH-FABC
- : 8B01
-FABD CJK COMPATIBILITY IDEOGRAPH-FABD
- : 8AFE
-FABE CJK COMPATIBILITY IDEOGRAPH-FABE
- : 8AED
-FABF CJK COMPATIBILITY IDEOGRAPH-FABF
- : 8B39
-FAC0 CJK COMPATIBILITY IDEOGRAPH-FAC0
- : 8B8A
-FAC1 CJK COMPATIBILITY IDEOGRAPH-FAC1
- : 8D08
-FAC2 CJK COMPATIBILITY IDEOGRAPH-FAC2
- : 8F38
-FAC3 CJK COMPATIBILITY IDEOGRAPH-FAC3
- : 9072
-FAC4 CJK COMPATIBILITY IDEOGRAPH-FAC4
- : 9199
-FAC5 CJK COMPATIBILITY IDEOGRAPH-FAC5
- : 9276
-FAC6 CJK COMPATIBILITY IDEOGRAPH-FAC6
- : 967C
-FAC7 CJK COMPATIBILITY IDEOGRAPH-FAC7
- : 96E3
-FAC8 CJK COMPATIBILITY IDEOGRAPH-FAC8
- : 9756
-FAC9 CJK COMPATIBILITY IDEOGRAPH-FAC9
- : 97DB
-FACA CJK COMPATIBILITY IDEOGRAPH-FACA
- : 97FF
-FACB CJK COMPATIBILITY IDEOGRAPH-FACB
- : 980B
-FACC CJK COMPATIBILITY IDEOGRAPH-FACC
- : 983B
-FACD CJK COMPATIBILITY IDEOGRAPH-FACD
- : 9B12
-FACE CJK COMPATIBILITY IDEOGRAPH-FACE
- : 9F9C
-FACF CJK COMPATIBILITY IDEOGRAPH-FACF
- : 2284A
-FAD0 CJK COMPATIBILITY IDEOGRAPH-FAD0
- : 22844
-FAD1 CJK COMPATIBILITY IDEOGRAPH-FAD1
- : 233D5
-FAD2 CJK COMPATIBILITY IDEOGRAPH-FAD2
- : 3B9D
-FAD3 CJK COMPATIBILITY IDEOGRAPH-FAD3
- : 4018
-FAD4 CJK COMPATIBILITY IDEOGRAPH-FAD4
- : 4039
-FAD5 CJK COMPATIBILITY IDEOGRAPH-FAD5
- : 25249
-FAD6 CJK COMPATIBILITY IDEOGRAPH-FAD6
- : 25CD0
-FAD7 CJK COMPATIBILITY IDEOGRAPH-FAD7
- : 27ED3
-FAD8 CJK COMPATIBILITY IDEOGRAPH-FAD8
- : 9F43
-FAD9 CJK COMPATIBILITY IDEOGRAPH-FAD9
- : 9F8E
-@@ 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
- * a glyph variant of 05BF
-FB1F HEBREW LIGATURE YIDDISH YOD YOD PATAH
- : 05F2 05B7
-FB20 HEBREW LETTER ALTERNATIVE AYIN
- * this form of AYIN has no descender, for use with marks placed below the letter
- # <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
-@ Noncharacters
-@+ These codes are intended for process internal uses, but are not permitted for interchange.
-FDD0 <not a character>
-FDD1 <not a character>
-FDD2 <not a character>
-FDD3 <not a character>
-FDD4 <not a character>
-FDD5 <not a character>
-FDD6 <not a character>
-FDD7 <not a character>
-FDD8 <not a character>
-FDD9 <not a character>
-FDDA <not a character>
-FDDB <not a character>
-FDDC <not a character>
-FDDD <not a character>
-FDDE <not a character>
-FDDF <not a character>
-FDE0 <not a character>
-FDE1 <not a character>
-FDE2 <not a character>
-FDE3 <not a character>
-FDE4 <not a character>
-FDE5 <not a character>
-FDE6 <not a character>
-FDE7 <not a character>
-FDE8 <not a character>
-FDE9 <not a character>
-FDEA <not a character>
-FDEB <not a character>
-FDEC <not a character>
-FDED <not a character>
-FDEE <not a character>
-FDEF <not a character>
-@ 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
-@ Currency sign
-FDFC RIAL SIGN
- # <isolated> 0631 06CC 0627 0644
-@ Symbol
-FDFD ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
-@@ FE00 Variation Selectors FE0F
-@ Variation selectors
-@+ Combining characters; in conjunction with the preceding character these indicate a predetermined choice of variant glyph
-FE00 VARIATION SELECTOR-1
- * these are abbreviated VS1, and so on
-FE01 VARIATION SELECTOR-2
-FE02 VARIATION SELECTOR-3
-FE03 VARIATION SELECTOR-4
-FE04 VARIATION SELECTOR-5
-FE05 VARIATION SELECTOR-6
-FE06 VARIATION SELECTOR-7
-FE07 VARIATION SELECTOR-8
-FE08 VARIATION SELECTOR-9
-FE09 VARIATION SELECTOR-10
-FE0A VARIATION SELECTOR-11
-FE0B VARIATION SELECTOR-12
-FE0C VARIATION SELECTOR-13
-FE0D VARIATION SELECTOR-14
-FE0E VARIATION SELECTOR-15
-FE0F VARIATION SELECTOR-16
-@@ FE10 Vertical forms FE1F
-@+ These characters are compatibility characters needed to map to GB 18030.
-@ Glyphs for vertical variants
-FE10 PRESENTATION FORM FOR VERTICAL COMMA
- x (small comma - FE50)
- # <vertical> 002C
-FE11 PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA
- x (sesame dot - FE45)
- x (small ideographic comma - FE51)
- # <vertical> 3001
-FE12 PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP
- # <vertical> 3002
-FE13 PRESENTATION FORM FOR VERTICAL COLON
- x (small colon - FE55)
- # <vertical> 003A
-FE14 PRESENTATION FORM FOR VERTICAL SEMICOLON
- x (small semicolon - FE54)
- # <vertical> 003B
-FE15 PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK
- x (small exclamation mark - FE57)
- # <vertical> 0021
-FE16 PRESENTATION FORM FOR VERTICAL QUESTION MARK
- x (small question mark - FE56)
- # <vertical> 003F
-FE17 PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
- # <vertical> 3016
-FE18 PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
- # <vertical> 3017
-FE19 PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
- x (vertical ellipsis - 22EE)
- # <vertical> 2026
-@@ 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
-@ Sidelining emphasis marks
-FE45 SESAME DOT
- x (small ideographic comma - FE51)
-FE46 WHITE SESAME DOT
- * sesame dots are used beside vertical text for emphasis
-@ Glyphs for vertical variants
-FE47 PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
- x (top square bracket - 23B4)
- # <vertical> 005B
-FE48 PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
- x (bottom square bracket - 23B5)
- # <vertical> 005D
-@ 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
-@+ These characters are compatibility characters needed to map to CNS 11643.
-@ Small form variants
-FE50 SMALL COMMA
- x (presentation form for vertical comma - FE10)
- # <small> 002C
-FE51 SMALL IDEOGRAPHIC COMMA
- x (presentation form for vertical ideographic comma - FE11)
- x (black sesame dot - FE45)
- # <small> 3001
-FE52 SMALL FULL STOP
- # <small> 002E
-FE54 SMALL SEMICOLON
- x (presentation form for vertical semicolon - FE14)
- # <small> 003B
-FE55 SMALL COLON
- x (presentation form for vertical colon - FE13)
- # <small> 003A
-FE56 SMALL QUESTION MARK
- x (presentation form for vertical question mark - FE16)
- # <small> 003F
-FE57 SMALL EXCLAMATION MARK
- x (presentation form for vertical exclamation mark - FE15)
- # <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
-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
-@ Glyph part
-FE73 ARABIC TAIL FRAGMENT
- * for compatibility with certain legacy character sets
-@ Glyphs for spacing forms of Arabic points
-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), ZWNBSP
- * may be used to detect byte order by contrast with the noncharacter code point FFFE
- * use as an indication of non-breaking is deprecated; see 2060 instead
- x (zero width space - 200B)
- x (word joiner - 2060)
- x (<not a character> - FFFE)
-@@ 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
-@ Fullwidth brackets
-FF5F FULLWIDTH LEFT WHITE PARENTHESIS *
- # <wide> 2985
-FF60 FULLWIDTH RIGHT WHITE PARENTHESIS *
- * the most commonly occurring glyph variant looks like doubled parentheses
- # <wide> 2986
-@ 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
-@ Noncharacters
-@+ These codes are intended for process internal uses, but are not permitted for interchange.
-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
-@@ 10000 Linear B Syllabary 1007F
-@ Basic syllables
-10000 LINEAR B SYLLABLE B008 A
-10001 LINEAR B SYLLABLE B038 E
-10002 LINEAR B SYLLABLE B028 I
-10003 LINEAR B SYLLABLE B061 O
-10004 LINEAR B SYLLABLE B010 U
-10005 LINEAR B SYLLABLE B001 DA
-10006 LINEAR B SYLLABLE B045 DE
-10007 LINEAR B SYLLABLE B007 DI
-10008 LINEAR B SYLLABLE B014 DO
-10009 LINEAR B SYLLABLE B051 DU
-1000A LINEAR B SYLLABLE B057 JA
-1000B LINEAR B SYLLABLE B046 JE
-1000D LINEAR B SYLLABLE B036 JO
-1000E LINEAR B SYLLABLE B065 JU
- = ideogram B129 flour
-1000F LINEAR B SYLLABLE B077 KA
-10010 LINEAR B SYLLABLE B044 KE
-10011 LINEAR B SYLLABLE B067 KI
-10012 LINEAR B SYLLABLE B070 KO
-10013 LINEAR B SYLLABLE B081 KU
-10014 LINEAR B SYLLABLE B080 MA
-10015 LINEAR B SYLLABLE B013 ME
-10016 LINEAR B SYLLABLE B073 MI
-10017 LINEAR B SYLLABLE B015 MO
-10018 LINEAR B SYLLABLE B023 MU
- = ideogram B109 ox
-10019 LINEAR B SYLLABLE B006 NA
-1001A LINEAR B SYLLABLE B024 NE
-1001B LINEAR B SYLLABLE B030 NI
- = ideogram B030 figs
-1001C LINEAR B SYLLABLE B052 NO
-1001D LINEAR B SYLLABLE B055 NU
-1001E LINEAR B SYLLABLE B003 PA
-1001F LINEAR B SYLLABLE B072 PE
-10020 LINEAR B SYLLABLE B039 PI
-10021 LINEAR B SYLLABLE B011 PO
-10022 LINEAR B SYLLABLE B050 PU
-10023 LINEAR B SYLLABLE B016 QA
-10024 LINEAR B SYLLABLE B078 QE
-10025 LINEAR B SYLLABLE B021 QI
- = ideogram B106 sheep
-10026 LINEAR B SYLLABLE B032 QO
-10028 LINEAR B SYLLABLE B060 RA
-10029 LINEAR B SYLLABLE B027 RE
-1002A LINEAR B SYLLABLE B053 RI
-1002B LINEAR B SYLLABLE B002 RO
-1002C LINEAR B SYLLABLE B026 RU
-1002D LINEAR B SYLLABLE B031 SA
- = ideogram B031 flax
-1002E LINEAR B SYLLABLE B009 SE
-1002F LINEAR B SYLLABLE B041 SI
-10030 LINEAR B SYLLABLE B012 SO
-10031 LINEAR B SYLLABLE B058 SU
-10032 LINEAR B SYLLABLE B059 TA
-10033 LINEAR B SYLLABLE B004 TE
-10034 LINEAR B SYLLABLE B037 TI
-10035 LINEAR B SYLLABLE B005 TO
-10036 LINEAR B SYLLABLE B069 TU
-10037 LINEAR B SYLLABLE B054 WA
-10038 LINEAR B SYLLABLE B075 WE
-10039 LINEAR B SYLLABLE B040 WI
-1003A LINEAR B SYLLABLE B042 WO
-1003C LINEAR B SYLLABLE B017 ZA
-1003D LINEAR B SYLLABLE B074 ZE
-1003F LINEAR B SYLLABLE B020 ZO
-@ Supplementary signs
-10040 LINEAR B SYLLABLE B025 A2
-10041 LINEAR B SYLLABLE B043 A3
-10042 LINEAR B SYLLABLE B085 AU
- = ideogram B108 pig
-10043 LINEAR B SYLLABLE B071 DWE
-10044 LINEAR B SYLLABLE B090 DWO
-10045 LINEAR B SYLLABLE B048 NWA
-10046 LINEAR B SYLLABLE B029 PU2
-10047 LINEAR B SYLLABLE B062 PTE
-10048 LINEAR B SYLLABLE B076 RA2
-10049 LINEAR B SYLLABLE B033 RA3
- = ideogram B144 saffron
-1004A LINEAR B SYLLABLE B068 RO2
-1004B LINEAR B SYLLABLE B066 TA2
-1004C LINEAR B SYLLABLE B087 TWE
-1004D LINEAR B SYLLABLE B091 TWO
-@ Symbols
-10050 LINEAR B SYMBOL B018
-10051 LINEAR B SYMBOL B019
-10052 LINEAR B SYMBOL B022
- = ideogram B107 goat
-10053 LINEAR B SYMBOL B034
-10054 LINEAR B SYMBOL B047
-10055 LINEAR B SYMBOL B049
-10056 LINEAR B SYMBOL B056
-10057 LINEAR B SYMBOL B063
-10058 LINEAR B SYMBOL B064
-10059 LINEAR B SYMBOL B079
-1005A LINEAR B SYMBOL B082
-1005B LINEAR B SYMBOL B083
-1005C LINEAR B SYMBOL B086
-1005D LINEAR B SYMBOL B089
-@@ 10080 Linear B Ideograms 100FF
-@+ Some Linear B syllables are also used as Linear B ideograms.
- x (linear b syllable b021 qi - 10025)
- x (linear b symbol b022 - 10052)
- x (linear b syllable b023 mu - 10018)
- x (linear b syllable b030 ni - 1001B)
- x (linear b syllable b031 sa - 1002D)
- x (linear b syllable b033 ra3 - 10049)
- x (linear b syllable b065 ju - 1000E)
- x (linear b syllable b085 au - 10042)
-@ People and animals
-10080 LINEAR B IDEOGRAM B100 MAN
-10081 LINEAR B IDEOGRAM B102 WOMAN
-10082 LINEAR B IDEOGRAM B104 DEER
-10083 LINEAR B IDEOGRAM B105 EQUID
-10084 LINEAR B IDEOGRAM B105F MARE
-10085 LINEAR B IDEOGRAM B105M STALLION
-10086 LINEAR B IDEOGRAM B106F EWE
-10087 LINEAR B IDEOGRAM B106M RAM
-10088 LINEAR B IDEOGRAM B107F SHE-GOAT
-10089 LINEAR B IDEOGRAM B107M HE-GOAT
-1008A LINEAR B IDEOGRAM B108F SOW
-1008B LINEAR B IDEOGRAM B108M BOAR
-1008C LINEAR B IDEOGRAM B109F COW
-1008D LINEAR B IDEOGRAM B109M BULL
-@ Cereals and plants
-1008E LINEAR B IDEOGRAM B120 WHEAT
-1008F LINEAR B IDEOGRAM B121 BARLEY
-10090 LINEAR B IDEOGRAM B122 OLIVE
-10091 LINEAR B IDEOGRAM B123 SPICE
-10092 LINEAR B IDEOGRAM B125 CYPERUS
-10093 LINEAR B MONOGRAM B127 KAPO
- = fruit
-10094 LINEAR B MONOGRAM B128 KANAKO
- = saffron
-@ Extracts
-10095 LINEAR B IDEOGRAM B130 OIL
-10096 LINEAR B IDEOGRAM B131 WINE
-10097 LINEAR B IDEOGRAM B132
-10098 LINEAR B MONOGRAM B133 AREPA
- = ointment
-10099 LINEAR B MONOGRAM B135 MERI
- = honey
-@ Metals
-1009A LINEAR B IDEOGRAM B140 BRONZE
-1009B LINEAR B IDEOGRAM B141 GOLD
-1009C LINEAR B IDEOGRAM B142
-@ Other materials
-1009D LINEAR B IDEOGRAM B145 WOOL
-1009E LINEAR B IDEOGRAM B146
-1009F LINEAR B IDEOGRAM B150
-100A0 LINEAR B IDEOGRAM B151 HORN
-100A1 LINEAR B IDEOGRAM B152
-100A2 LINEAR B IDEOGRAM B153
-100A3 LINEAR B IDEOGRAM B154
-100A4 LINEAR B MONOGRAM B156 TURO2
- = cheese
-100A5 LINEAR B IDEOGRAM B157
-100A6 LINEAR B IDEOGRAM B158
-100A7 LINEAR B IDEOGRAM B159 CLOTH
-100A8 LINEAR B IDEOGRAM B160
-100A9 LINEAR B IDEOGRAM B161
-100AA LINEAR B IDEOGRAM B162 GARMENT
-100AB LINEAR B IDEOGRAM B163 ARMOUR
-100AC LINEAR B IDEOGRAM B164
-100AD LINEAR B IDEOGRAM B165
-100AE LINEAR B IDEOGRAM B166
-100AF LINEAR B IDEOGRAM B167
-100B0 LINEAR B IDEOGRAM B168
-100B1 LINEAR B IDEOGRAM B169
-100B2 LINEAR B IDEOGRAM B170
-100B3 LINEAR B IDEOGRAM B171
-100B4 LINEAR B IDEOGRAM B172
-100B5 LINEAR B IDEOGRAM B173 MONTH
-100B6 LINEAR B IDEOGRAM B174
-100B7 LINEAR B IDEOGRAM B176 TREE
-100B8 LINEAR B IDEOGRAM B177
-100B9 LINEAR B IDEOGRAM B178
-100BA LINEAR B IDEOGRAM B179
-100BB LINEAR B IDEOGRAM B180
-100BC LINEAR B IDEOGRAM B181
-100BD LINEAR B IDEOGRAM B182
-100BE LINEAR B IDEOGRAM B183
-100BF LINEAR B IDEOGRAM B184
- * the shape of this ideogram is only partially known
-100C0 LINEAR B IDEOGRAM B185
-100C1 LINEAR B IDEOGRAM B189
-100C2 LINEAR B IDEOGRAM B190
-100C3 LINEAR B IDEOGRAM B191 HELMET
-100C4 LINEAR B IDEOGRAM B220 FOOTSTOOL
-100C5 LINEAR B IDEOGRAM B225 BATHTUB
-100C6 LINEAR B IDEOGRAM B230 SPEAR
-100C7 LINEAR B IDEOGRAM B231 ARROW
-100C8 LINEAR B IDEOGRAM B232
-100C9 LINEAR B IDEOGRAM B233 SWORD (pug)
- = pugio
-100CA LINEAR B IDEOGRAM B234
-100CB LINEAR B IDEOGRAM B236 (gup)
- = "gupio", inverted sword
-100CC LINEAR B IDEOGRAM B240 WHEELED CHARIOT
-100CD LINEAR B IDEOGRAM B241 CHARIOT
-100CE LINEAR B IDEOGRAM B242 CHARIOT FRAME
-100CF LINEAR B IDEOGRAM B243 WHEEL
-100D0 LINEAR B IDEOGRAM B245
-100D1 LINEAR B IDEOGRAM B246
-100D2 LINEAR B MONOGRAM B247 DIPTE
-100D3 LINEAR B IDEOGRAM B248
-100D4 LINEAR B IDEOGRAM B249
-100D5 LINEAR B IDEOGRAM B251
- * the shape of this ideogram is only partially known
-100D6 LINEAR B IDEOGRAM B252
- * the shape of this ideogram is only partially known
-100D7 LINEAR B IDEOGRAM B253
-100D8 LINEAR B IDEOGRAM B254 DART
-100D9 LINEAR B IDEOGRAM B255
-100DA LINEAR B IDEOGRAM B256
-100DB LINEAR B IDEOGRAM B257
-100DC LINEAR B IDEOGRAM B258
-100DD LINEAR B IDEOGRAM B259
-@ Vessels
-100DE LINEAR B IDEOGRAM VESSEL B155
-100DF LINEAR B IDEOGRAM VESSEL B200
-100E0 LINEAR B IDEOGRAM VESSEL B201
-100E1 LINEAR B IDEOGRAM VESSEL B202
-100E2 LINEAR B IDEOGRAM VESSEL B203
-100E3 LINEAR B IDEOGRAM VESSEL B204
-100E4 LINEAR B IDEOGRAM VESSEL B205
-100E5 LINEAR B IDEOGRAM VESSEL B206
-100E6 LINEAR B IDEOGRAM VESSEL B207
-100E7 LINEAR B IDEOGRAM VESSEL B208
-100E8 LINEAR B IDEOGRAM VESSEL B209
-100E9 LINEAR B IDEOGRAM VESSEL B210
-100EA LINEAR B IDEOGRAM VESSEL B211
-100EB LINEAR B IDEOGRAM VESSEL B212
-100EC LINEAR B IDEOGRAM VESSEL B213
-100ED LINEAR B IDEOGRAM VESSEL B214
-100EE LINEAR B IDEOGRAM VESSEL B215
-100EF LINEAR B IDEOGRAM VESSEL B216
-100F0 LINEAR B IDEOGRAM VESSEL B217
-100F1 LINEAR B IDEOGRAM VESSEL B218
-100F2 LINEAR B IDEOGRAM VESSEL B219
-100F3 LINEAR B IDEOGRAM VESSEL B221
-100F4 LINEAR B IDEOGRAM VESSEL B222
-100F5 LINEAR B IDEOGRAM VESSEL B226
-100F6 LINEAR B IDEOGRAM VESSEL B227
-100F7 LINEAR B IDEOGRAM VESSEL B228
-100F8 LINEAR B IDEOGRAM VESSEL B229
-100F9 LINEAR B IDEOGRAM VESSEL B250
-100FA LINEAR B IDEOGRAM VESSEL B305
- * the shape of this ideogram is only partially known
-@@ 10100 Aegean Numbers 1013F
-@ Punctuation
-10100 AEGEAN WORD SEPARATOR LINE
-10101 AEGEAN WORD SEPARATOR DOT
-10102 AEGEAN CHECK MARK
-@ Numbers
-10107 AEGEAN NUMBER ONE
-10108 AEGEAN NUMBER TWO
-10109 AEGEAN NUMBER THREE
-1010A AEGEAN NUMBER FOUR
-1010B AEGEAN NUMBER FIVE
-1010C AEGEAN NUMBER SIX
-1010D AEGEAN NUMBER SEVEN
-1010E AEGEAN NUMBER EIGHT
-1010F AEGEAN NUMBER NINE
-10110 AEGEAN NUMBER TEN
-10111 AEGEAN NUMBER TWENTY
-10112 AEGEAN NUMBER THIRTY
-10113 AEGEAN NUMBER FORTY
-10114 AEGEAN NUMBER FIFTY
-10115 AEGEAN NUMBER SIXTY
-10116 AEGEAN NUMBER SEVENTY
-10117 AEGEAN NUMBER EIGHTY
-10118 AEGEAN NUMBER NINETY
-10119 AEGEAN NUMBER ONE HUNDRED
-1011A AEGEAN NUMBER TWO HUNDRED
-1011B AEGEAN NUMBER THREE HUNDRED
-1011C AEGEAN NUMBER FOUR HUNDRED
-1011D AEGEAN NUMBER FIVE HUNDRED
-1011E AEGEAN NUMBER SIX HUNDRED
-1011F AEGEAN NUMBER SEVEN HUNDRED
-10120 AEGEAN NUMBER EIGHT HUNDRED
-10121 AEGEAN NUMBER NINE HUNDRED
-10122 AEGEAN NUMBER ONE THOUSAND
-10123 AEGEAN NUMBER TWO THOUSAND
-10124 AEGEAN NUMBER THREE THOUSAND
-10125 AEGEAN NUMBER FOUR THOUSAND
-10126 AEGEAN NUMBER FIVE THOUSAND
-10127 AEGEAN NUMBER SIX THOUSAND
-10128 AEGEAN NUMBER SEVEN THOUSAND
-10129 AEGEAN NUMBER EIGHT THOUSAND
-1012A AEGEAN NUMBER NINE THOUSAND
-1012B AEGEAN NUMBER TEN THOUSAND
-1012C AEGEAN NUMBER TWENTY THOUSAND
-1012D AEGEAN NUMBER THIRTY THOUSAND
-1012E AEGEAN NUMBER FORTY THOUSAND
-1012F AEGEAN NUMBER FIFTY THOUSAND
-10130 AEGEAN NUMBER SIXTY THOUSAND
-10131 AEGEAN NUMBER SEVENTY THOUSAND
-10132 AEGEAN NUMBER EIGHTY THOUSAND
-10133 AEGEAN NUMBER NINETY THOUSAND
-@ Measures
-10137 AEGEAN WEIGHT BASE UNIT
-10138 AEGEAN WEIGHT FIRST SUBUNIT
-10139 AEGEAN WEIGHT SECOND SUBUNIT
-1013A AEGEAN WEIGHT THIRD SUBUNIT
-1013B AEGEAN WEIGHT FOURTH SUBUNIT
-1013C AEGEAN DRY MEASURE FIRST SUBUNIT
-1013D AEGEAN LIQUID MEASURE FIRST SUBUNIT
-1013E AEGEAN MEASURE SECOND SUBUNIT
-1013F AEGEAN MEASURE THIRD SUBUNIT
-@@ 10140 Ancient Greek Numbers 1018F
-@ Ancient Greek acrophonic numerals
-@+ These are shown as sans-serif forms because that corresponds more closely to their appearance in ancient texts.
-10140 GREEK ACROPHONIC ATTIC ONE QUARTER
-10141 GREEK ACROPHONIC ATTIC ONE HALF
-10142 GREEK ACROPHONIC ATTIC ONE DRACHMA
-10143 GREEK ACROPHONIC ATTIC FIVE
-10144 GREEK ACROPHONIC ATTIC FIFTY
-10145 GREEK ACROPHONIC ATTIC FIVE HUNDRED
-10146 GREEK ACROPHONIC ATTIC FIVE THOUSAND
-10147 GREEK ACROPHONIC ATTIC FIFTY THOUSAND
-10148 GREEK ACROPHONIC ATTIC FIVE TALENTS
-10149 GREEK ACROPHONIC ATTIC TEN TALENTS
-1014A GREEK ACROPHONIC ATTIC FIFTY TALENTS
-1014B GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS
-1014C GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS
-1014D GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS
-1014E GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS
-1014F GREEK ACROPHONIC ATTIC FIVE STATERS
-10150 GREEK ACROPHONIC ATTIC TEN STATERS
-10151 GREEK ACROPHONIC ATTIC FIFTY STATERS
-10152 GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS
-10153 GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS
-10154 GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS
-10155 GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS
-10156 GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS
-10157 GREEK ACROPHONIC ATTIC TEN MNAS
-10158 GREEK ACROPHONIC HERAEUM ONE PLETHRON
-10159 GREEK ACROPHONIC THESPIAN ONE
-1015A GREEK ACROPHONIC HERMIONIAN ONE
-1015B GREEK ACROPHONIC EPIDAUREAN TWO
- x (two dot punctuation - 205A)
-1015C GREEK ACROPHONIC THESPIAN TWO
-1015D GREEK ACROPHONIC CYRENAIC TWO DRACHMAS
-1015E GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS
- * top line is at cap height, unlike 10111
- x (aegean number twenty - 10111)
-1015F GREEK ACROPHONIC TROEZENIAN FIVE
-10160 GREEK ACROPHONIC TROEZENIAN TEN
-10161 GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM
-10162 GREEK ACROPHONIC HERMIONIAN TEN
-10163 GREEK ACROPHONIC MESSENIAN TEN
-10164 GREEK ACROPHONIC THESPIAN TEN
-10165 GREEK ACROPHONIC THESPIAN THIRTY
-10166 GREEK ACROPHONIC TROEZENIAN FIFTY
-10167 GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM
-10168 GREEK ACROPHONIC HERMIONIAN FIFTY
-10169 GREEK ACROPHONIC THESPIAN FIFTY
-1016A GREEK ACROPHONIC THESPIAN ONE HUNDRED
-1016B GREEK ACROPHONIC THESPIAN THREE HUNDRED
-1016C GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED
-1016D GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED
-1016E GREEK ACROPHONIC THESPIAN FIVE HUNDRED
-1016F GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED
-10170 GREEK ACROPHONIC NAXIAN FIVE HUNDRED
-10171 GREEK ACROPHONIC THESPIAN ONE THOUSAND
-10172 GREEK ACROPHONIC THESPIAN FIVE THOUSAND
-10173 GREEK ACROPHONIC DELPHIC FIVE MNAS
-10174 GREEK ACROPHONIC STRATIAN FIFTY MNAS
-@ Ancient Greek papyrological numbers
-10175 GREEK ONE HALF SIGN
-10176 GREEK ONE HALF SIGN ALTERNATE FORM
-10177 GREEK TWO THIRDS SIGN
-10178 GREEK THREE QUARTERS SIGN
-10179 GREEK YEAR SIGN
-1017A GREEK TALENT SIGN
-1017B GREEK DRACHMA SIGN
-1017C GREEK OBOL SIGN
-1017D GREEK TWO OBOLS SIGN
-1017E GREEK THREE OBOLS SIGN
-1017F GREEK FOUR OBOLS SIGN
-10180 GREEK FIVE OBOLS SIGN
-10181 GREEK METRETES SIGN
-10182 GREEK KYATHOS BASE SIGN
-10183 GREEK LITRA SIGN
-10184 GREEK OUNKIA SIGN
-10185 GREEK XESTES SIGN
-10186 GREEK ARTABE SIGN
-10187 GREEK AROURA SIGN
-10188 GREEK GRAMMA SIGN
-10189 GREEK TRYBLION BASE SIGN
-1018A GREEK ZERO SIGN
-@@ 10300 Old Italic 1032F
-@ Letters
-10300 OLD ITALIC LETTER A
-10301 OLD ITALIC LETTER BE
-10302 OLD ITALIC LETTER KE
-10303 OLD ITALIC LETTER DE
-10304 OLD ITALIC LETTER E
-10305 OLD ITALIC LETTER VE
-10306 OLD ITALIC LETTER ZE
-10307 OLD ITALIC LETTER HE
-10308 OLD ITALIC LETTER THE
-10309 OLD ITALIC LETTER I
-1030A OLD ITALIC LETTER KA
-1030B OLD ITALIC LETTER EL
-1030C OLD ITALIC LETTER EM
-1030D OLD ITALIC LETTER EN
-1030E OLD ITALIC LETTER ESH
-1030F OLD ITALIC LETTER O (Faliscan)
-10310 OLD ITALIC LETTER PE
-10311 OLD ITALIC LETTER SHE
-10312 OLD ITALIC LETTER KU
-10313 OLD ITALIC LETTER ER
-10314 OLD ITALIC LETTER ES
-10315 OLD ITALIC LETTER TE
-10316 OLD ITALIC LETTER U
-10317 OLD ITALIC LETTER EKS (Faliscan)
-10318 OLD ITALIC LETTER PHE
-10319 OLD ITALIC LETTER KHE
-1031A OLD ITALIC LETTER EF
-1031B OLD ITALIC LETTER ERS (Umbrian)
-1031C OLD ITALIC LETTER CHE (Umbrian)
-1031D OLD ITALIC LETTER II (Oscan)
-1031E OLD ITALIC LETTER UU (Oscan)
-@ Numerals
-10320 OLD ITALIC NUMERAL ONE
-10321 OLD ITALIC NUMERAL FIVE
-10322 OLD ITALIC NUMERAL TEN
-10323 OLD ITALIC NUMERAL FIFTY
-@@ 10330 Gothic 1034F
-@ Letters
-10330 GOTHIC LETTER AHSA
-10331 GOTHIC LETTER BAIRKAN
-10332 GOTHIC LETTER GIBA
-10333 GOTHIC LETTER DAGS
-10334 GOTHIC LETTER AIHVUS
-10335 GOTHIC LETTER QAIRTHRA
-10336 GOTHIC LETTER IUJA
-10337 GOTHIC LETTER HAGL
-10338 GOTHIC LETTER THIUTH
-10339 GOTHIC LETTER EIS
-1033A GOTHIC LETTER KUSMA
-1033B GOTHIC LETTER LAGUS
-1033C GOTHIC LETTER MANNA
-1033D GOTHIC LETTER NAUTHS
-1033E GOTHIC LETTER JER
-1033F GOTHIC LETTER URUS
-10340 GOTHIC LETTER PAIRTHRA
-10341 GOTHIC LETTER NINETY
-10342 GOTHIC LETTER RAIDA
-10343 GOTHIC LETTER SAUIL
-10344 GOTHIC LETTER TEIWS
-10345 GOTHIC LETTER WINJA
-10346 GOTHIC LETTER FAIHU
-10347 GOTHIC LETTER IGGWS
-10348 GOTHIC LETTER HWAIR
-10349 GOTHIC LETTER OTHAL
-1034A GOTHIC LETTER NINE HUNDRED
-@@ 10380 Ugaritic 1039F
-@ Letters
-10380 UGARITIC LETTER ALPA
-10381 UGARITIC LETTER BETA
-10382 UGARITIC LETTER GAMLA
-10383 UGARITIC LETTER KHA
-10384 UGARITIC LETTER DELTA
-10385 UGARITIC LETTER HO
-10386 UGARITIC LETTER WO
-10387 UGARITIC LETTER ZETA
-10388 UGARITIC LETTER HOTA
-10389 UGARITIC LETTER TET
-1038A UGARITIC LETTER YOD
-1038B UGARITIC LETTER KAF
-1038C UGARITIC LETTER SHIN
-1038D UGARITIC LETTER LAMDA
-1038E UGARITIC LETTER MEM
-1038F UGARITIC LETTER DHAL
-10390 UGARITIC LETTER NUN
-10391 UGARITIC LETTER ZU
-10392 UGARITIC LETTER SAMKA
-10393 UGARITIC LETTER AIN
-10394 UGARITIC LETTER PU
-10395 UGARITIC LETTER SADE
-10396 UGARITIC LETTER QOPA
-10397 UGARITIC LETTER RASHA
-10398 UGARITIC LETTER THANNA
-10399 UGARITIC LETTER GHAIN
-1039A UGARITIC LETTER TO
-1039B UGARITIC LETTER I
-1039C UGARITIC LETTER U
-1039D UGARITIC LETTER SSU
-@ Punctuation
-1039F UGARITIC WORD DIVIDER
-@@ 103A0 Old Persian 103DF
-@ Independent vowels
-103A0 OLD PERSIAN SIGN A
-103A1 OLD PERSIAN SIGN I
-103A2 OLD PERSIAN SIGN U
-@ Consonants
-103A3 OLD PERSIAN SIGN KA
-103A4 OLD PERSIAN SIGN KU
-103A5 OLD PERSIAN SIGN GA
-103A6 OLD PERSIAN SIGN GU
-103A7 OLD PERSIAN SIGN XA
-103A8 OLD PERSIAN SIGN CA
-103A9 OLD PERSIAN SIGN JA
-103AA OLD PERSIAN SIGN JI
-103AB OLD PERSIAN SIGN TA
-103AC OLD PERSIAN SIGN TU
-103AD OLD PERSIAN SIGN DA
-103AE OLD PERSIAN SIGN DI
-103AF OLD PERSIAN SIGN DU
-103B0 OLD PERSIAN SIGN THA
-103B1 OLD PERSIAN SIGN PA
-103B2 OLD PERSIAN SIGN BA
-103B3 OLD PERSIAN SIGN FA
-103B4 OLD PERSIAN SIGN NA
-103B5 OLD PERSIAN SIGN NU
-103B6 OLD PERSIAN SIGN MA
-103B7 OLD PERSIAN SIGN MI
-103B8 OLD PERSIAN SIGN MU
-103B9 OLD PERSIAN SIGN YA
-103BA OLD PERSIAN SIGN VA
-103BB OLD PERSIAN SIGN VI
-103BC OLD PERSIAN SIGN RA
-103BD OLD PERSIAN SIGN RU
-103BE OLD PERSIAN SIGN LA
-103BF OLD PERSIAN SIGN SA
-103C0 OLD PERSIAN SIGN ZA
-103C1 OLD PERSIAN SIGN SHA
-103C2 OLD PERSIAN SIGN SSA
-103C3 OLD PERSIAN SIGN HA
-@ Various signs
-103C8 OLD PERSIAN SIGN AURAMAZDAA
-103C9 OLD PERSIAN SIGN AURAMAZDAA-2
-103CA OLD PERSIAN SIGN AURAMAZDAAHA
-103CB OLD PERSIAN SIGN XSHAAYATHIYA
-103CC OLD PERSIAN SIGN DAHYAAUSH
-103CD OLD PERSIAN SIGN DAHYAAUSH-2
-103CE OLD PERSIAN SIGN BAGA
-103CF OLD PERSIAN SIGN BUUMISH
-@ Punctuation
-103D0 OLD PERSIAN WORD DIVIDER
-@ Numbers
-103D1 OLD PERSIAN NUMBER ONE
-103D2 OLD PERSIAN NUMBER TWO
-103D3 OLD PERSIAN NUMBER TEN
-103D4 OLD PERSIAN NUMBER TWENTY
-103D5 OLD PERSIAN NUMBER HUNDRED
-@@ 10400 Deseret 1044F
-@ Uppercase letters
-10400 DESERET CAPITAL LETTER LONG I
-10401 DESERET CAPITAL LETTER LONG E
-10402 DESERET CAPITAL LETTER LONG A
-10403 DESERET CAPITAL LETTER LONG AH
-10404 DESERET CAPITAL LETTER LONG O
-10405 DESERET CAPITAL LETTER LONG OO
-10406 DESERET CAPITAL LETTER SHORT I
-10407 DESERET CAPITAL LETTER SHORT E
-10408 DESERET CAPITAL LETTER SHORT A
-10409 DESERET CAPITAL LETTER SHORT AH
-1040A DESERET CAPITAL LETTER SHORT O
-1040B DESERET CAPITAL LETTER SHORT OO
-1040C DESERET CAPITAL LETTER AY
-1040D DESERET CAPITAL LETTER OW
-1040E DESERET CAPITAL LETTER WU
-1040F DESERET CAPITAL LETTER YEE
-10410 DESERET CAPITAL LETTER H
-10411 DESERET CAPITAL LETTER PEE
-10412 DESERET CAPITAL LETTER BEE
-10413 DESERET CAPITAL LETTER TEE
-10414 DESERET CAPITAL LETTER DEE
-10415 DESERET CAPITAL LETTER CHEE
-10416 DESERET CAPITAL LETTER JEE
-10417 DESERET CAPITAL LETTER KAY
-10418 DESERET CAPITAL LETTER GAY
-10419 DESERET CAPITAL LETTER EF
-1041A DESERET CAPITAL LETTER VEE
-1041B DESERET CAPITAL LETTER ETH
-1041C DESERET CAPITAL LETTER THEE
-1041D DESERET CAPITAL LETTER ES
-1041E DESERET CAPITAL LETTER ZEE
-1041F DESERET CAPITAL LETTER ESH
-10420 DESERET CAPITAL LETTER ZHEE
-10421 DESERET CAPITAL LETTER ER
-10422 DESERET CAPITAL LETTER EL
-10423 DESERET CAPITAL LETTER EM
-10424 DESERET CAPITAL LETTER EN
-10425 DESERET CAPITAL LETTER ENG
-10426 DESERET CAPITAL LETTER OI
-10427 DESERET CAPITAL LETTER EW
-@ Lowercase letters
-10428 DESERET SMALL LETTER LONG I
-10429 DESERET SMALL LETTER LONG E
-1042A DESERET SMALL LETTER LONG A
-1042B DESERET SMALL LETTER LONG AH
-1042C DESERET SMALL LETTER LONG O
-1042D DESERET SMALL LETTER LONG OO
-1042E DESERET SMALL LETTER SHORT I
-1042F DESERET SMALL LETTER SHORT E
-10430 DESERET SMALL LETTER SHORT A
-10431 DESERET SMALL LETTER SHORT AH
-10432 DESERET SMALL LETTER SHORT O
-10433 DESERET SMALL LETTER SHORT OO
-10434 DESERET SMALL LETTER AY
-10435 DESERET SMALL LETTER OW
-10436 DESERET SMALL LETTER WU
-10437 DESERET SMALL LETTER YEE
-10438 DESERET SMALL LETTER H
-10439 DESERET SMALL LETTER PEE
-1043A DESERET SMALL LETTER BEE
-1043B DESERET SMALL LETTER TEE
-1043C DESERET SMALL LETTER DEE
-1043D DESERET SMALL LETTER CHEE
-1043E DESERET SMALL LETTER JEE
-1043F DESERET SMALL LETTER KAY
-10440 DESERET SMALL LETTER GAY
-10441 DESERET SMALL LETTER EF
-10442 DESERET SMALL LETTER VEE
-10443 DESERET SMALL LETTER ETH
-10444 DESERET SMALL LETTER THEE
-10445 DESERET SMALL LETTER ES
-10446 DESERET SMALL LETTER ZEE
-10447 DESERET SMALL LETTER ESH
-10448 DESERET SMALL LETTER ZHEE
-10449 DESERET SMALL LETTER ER
-1044A DESERET SMALL LETTER EL
-1044B DESERET SMALL LETTER EM
-1044C DESERET SMALL LETTER EN
-1044D DESERET SMALL LETTER ENG
-1044E DESERET SMALL LETTER OI
-1044F DESERET SMALL LETTER EW
-@@ 10450 Shavian 1047F
-@ Consonants
-10450 SHAVIAN LETTER PEEP
-10451 SHAVIAN LETTER TOT
-10452 SHAVIAN LETTER KICK
-10453 SHAVIAN LETTER FEE
-10454 SHAVIAN LETTER THIGH
-10455 SHAVIAN LETTER SO
-10456 SHAVIAN LETTER SURE
-10457 SHAVIAN LETTER CHURCH
-10458 SHAVIAN LETTER YEA
-10459 SHAVIAN LETTER HUNG
-1045A SHAVIAN LETTER BIB
-1045B SHAVIAN LETTER DEAD
-1045C SHAVIAN LETTER GAG
-1045D SHAVIAN LETTER VOW
-1045E SHAVIAN LETTER THEY
-1045F SHAVIAN LETTER ZOO
-10460 SHAVIAN LETTER MEASURE
-10461 SHAVIAN LETTER JUDGE
-10462 SHAVIAN LETTER WOE
-10463 SHAVIAN LETTER HA-HA
-10464 SHAVIAN LETTER LOLL
-10465 SHAVIAN LETTER MIME
-@ Vowels
-10466 SHAVIAN LETTER IF
-10467 SHAVIAN LETTER EGG
-10468 SHAVIAN LETTER ASH
-10469 SHAVIAN LETTER ADO
-1046A SHAVIAN LETTER ON
-1046B SHAVIAN LETTER WOOL
-1046C SHAVIAN LETTER OUT
-1046D SHAVIAN LETTER AH
-1046E SHAVIAN LETTER ROAR
-1046F SHAVIAN LETTER NUN
-10470 SHAVIAN LETTER EAT
-10471 SHAVIAN LETTER AGE
-10472 SHAVIAN LETTER ICE
-10473 SHAVIAN LETTER UP
-10474 SHAVIAN LETTER OAK
-10475 SHAVIAN LETTER OOZE
-10476 SHAVIAN LETTER OIL
-10477 SHAVIAN LETTER AWE
-10478 SHAVIAN LETTER ARE
-10479 SHAVIAN LETTER OR
-1047A SHAVIAN LETTER AIR
-1047B SHAVIAN LETTER ERR
-1047C SHAVIAN LETTER ARRAY
-1047D SHAVIAN LETTER EAR
-1047E SHAVIAN LETTER IAN
-1047F SHAVIAN LETTER YEW
-@@ 10480 Osmanya 104AF
-@ Letters
-10480 OSMANYA LETTER ALEF
-10481 OSMANYA LETTER BA
-10482 OSMANYA LETTER TA
-10483 OSMANYA LETTER JA
-10484 OSMANYA LETTER XA
-10485 OSMANYA LETTER KHA
-10486 OSMANYA LETTER DEEL
-10487 OSMANYA LETTER RA
-10488 OSMANYA LETTER SA
-10489 OSMANYA LETTER SHIIN
-1048A OSMANYA LETTER DHA
-1048B OSMANYA LETTER CAYN
-1048C OSMANYA LETTER GA
-1048D OSMANYA LETTER FA
-1048E OSMANYA LETTER QAAF
-1048F OSMANYA LETTER KAAF
-10490 OSMANYA LETTER LAAN
-10491 OSMANYA LETTER MIIN
-10492 OSMANYA LETTER NUUN
-10493 OSMANYA LETTER WAW
-10494 OSMANYA LETTER HA
-10495 OSMANYA LETTER YA
-10496 OSMANYA LETTER A
-10497 OSMANYA LETTER E
-10498 OSMANYA LETTER I
-10499 OSMANYA LETTER O
-1049A OSMANYA LETTER U
-1049B OSMANYA LETTER AA
-1049C OSMANYA LETTER EE
-1049D OSMANYA LETTER OO
-@ Digits
-104A0 OSMANYA DIGIT ZERO
-104A1 OSMANYA DIGIT ONE
-104A2 OSMANYA DIGIT TWO
-104A3 OSMANYA DIGIT THREE
-104A4 OSMANYA DIGIT FOUR
-104A5 OSMANYA DIGIT FIVE
-104A6 OSMANYA DIGIT SIX
-104A7 OSMANYA DIGIT SEVEN
-104A8 OSMANYA DIGIT EIGHT
-104A9 OSMANYA DIGIT NINE
-@@ 10800 Cypriot Syllabary 1083F
-@ Syllables
-10800 CYPRIOT SYLLABLE A
-10801 CYPRIOT SYLLABLE E
-10802 CYPRIOT SYLLABLE I
-10803 CYPRIOT SYLLABLE O
-10804 CYPRIOT SYLLABLE U
-10805 CYPRIOT SYLLABLE JA
-10808 CYPRIOT SYLLABLE JO
-1080A CYPRIOT SYLLABLE KA
-1080B CYPRIOT SYLLABLE KE
-1080C CYPRIOT SYLLABLE KI
-1080D CYPRIOT SYLLABLE KO
-1080E CYPRIOT SYLLABLE KU
-1080F CYPRIOT SYLLABLE LA
-10810 CYPRIOT SYLLABLE LE
-10811 CYPRIOT SYLLABLE LI
-10812 CYPRIOT SYLLABLE LO
-10813 CYPRIOT SYLLABLE LU
-10814 CYPRIOT SYLLABLE MA
-10815 CYPRIOT SYLLABLE ME
-10816 CYPRIOT SYLLABLE MI
-10817 CYPRIOT SYLLABLE MO
-10818 CYPRIOT SYLLABLE MU
-10819 CYPRIOT SYLLABLE NA
-1081A CYPRIOT SYLLABLE NE
-1081B CYPRIOT SYLLABLE NI
-1081C CYPRIOT SYLLABLE NO
-1081D CYPRIOT SYLLABLE NU
-1081E CYPRIOT SYLLABLE PA
-1081F CYPRIOT SYLLABLE PE
-10820 CYPRIOT SYLLABLE PI
-10821 CYPRIOT SYLLABLE PO
-10822 CYPRIOT SYLLABLE PU
-10823 CYPRIOT SYLLABLE RA
-10824 CYPRIOT SYLLABLE RE
-10825 CYPRIOT SYLLABLE RI
-10826 CYPRIOT SYLLABLE RO
-10827 CYPRIOT SYLLABLE RU
-10828 CYPRIOT SYLLABLE SA
-10829 CYPRIOT SYLLABLE SE
-1082A CYPRIOT SYLLABLE SI
-1082B CYPRIOT SYLLABLE SO
-1082C CYPRIOT SYLLABLE SU
-1082D CYPRIOT SYLLABLE TA
-1082E CYPRIOT SYLLABLE TE
-1082F CYPRIOT SYLLABLE TI
-10830 CYPRIOT SYLLABLE TO
-10831 CYPRIOT SYLLABLE TU
-10832 CYPRIOT SYLLABLE WA
-10833 CYPRIOT SYLLABLE WE
-10834 CYPRIOT SYLLABLE WI
-10835 CYPRIOT SYLLABLE WO
-10837 CYPRIOT SYLLABLE XA
-10838 CYPRIOT SYLLABLE XE
-1083C CYPRIOT SYLLABLE ZA
-1083F CYPRIOT SYLLABLE ZO
-@@ 10A00 Kharoshthi 10A5F
-@ Vowels
-10A00 KHAROSHTHI LETTER A
-10A01 KHAROSHTHI VOWEL SIGN I
-10A02 KHAROSHTHI VOWEL SIGN U
-10A03 KHAROSHTHI VOWEL SIGN VOCALIC R
-10A05 KHAROSHTHI VOWEL SIGN E
-10A06 KHAROSHTHI VOWEL SIGN O
-@ Length mark
-10A0C KHAROSHTHI VOWEL LENGTH MARK
-@ Various signs
-10A0D KHAROSHTHI SIGN DOUBLE RING BELOW
-10A0E KHAROSHTHI SIGN ANUSVARA
-10A0F KHAROSHTHI SIGN VISARGA
-@ Consonants
-10A10 KHAROSHTHI LETTER KA
-10A11 KHAROSHTHI LETTER KHA
-10A12 KHAROSHTHI LETTER GA
-10A13 KHAROSHTHI LETTER GHA
-10A15 KHAROSHTHI LETTER CA
-10A16 KHAROSHTHI LETTER CHA
-10A17 KHAROSHTHI LETTER JA
-10A19 KHAROSHTHI LETTER NYA
-10A1A KHAROSHTHI LETTER TTA
-10A1B KHAROSHTHI LETTER TTHA
-10A1C KHAROSHTHI LETTER DDA
-10A1D KHAROSHTHI LETTER DDHA
-10A1E KHAROSHTHI LETTER NNA
-10A1F KHAROSHTHI LETTER TA
-10A20 KHAROSHTHI LETTER THA
-10A21 KHAROSHTHI LETTER DA
-10A22 KHAROSHTHI LETTER DHA
-10A23 KHAROSHTHI LETTER NA
-10A24 KHAROSHTHI LETTER PA
-10A25 KHAROSHTHI LETTER PHA
-10A26 KHAROSHTHI LETTER BA
-10A27 KHAROSHTHI LETTER BHA
-10A28 KHAROSHTHI LETTER MA
-10A29 KHAROSHTHI LETTER YA
-10A2A KHAROSHTHI LETTER RA
-10A2B KHAROSHTHI LETTER LA
-10A2C KHAROSHTHI LETTER VA
-10A2D KHAROSHTHI LETTER SHA
-10A2E KHAROSHTHI LETTER SSA
-10A2F KHAROSHTHI LETTER SA
-10A30 KHAROSHTHI LETTER ZA
-10A31 KHAROSHTHI LETTER HA
-10A32 KHAROSHTHI LETTER KKA
-10A33 KHAROSHTHI LETTER TTTHA
-@ Various signs
-10A38 KHAROSHTHI SIGN BAR ABOVE
-10A39 KHAROSHTHI SIGN CAUDA
-10A3A KHAROSHTHI SIGN DOT BELOW
-@ Virama
-10A3F KHAROSHTHI VIRAMA
- = halant
- * suppresses inherent vowel
-@ Digits
-10A40 KHAROSHTHI DIGIT ONE
-10A41 KHAROSHTHI DIGIT TWO
-10A42 KHAROSHTHI DIGIT THREE
-10A43 KHAROSHTHI DIGIT FOUR
-@ Numbers
-10A44 KHAROSHTHI NUMBER TEN
-10A45 KHAROSHTHI NUMBER TWENTY
-10A46 KHAROSHTHI NUMBER ONE HUNDRED
-10A47 KHAROSHTHI NUMBER ONE THOUSAND
-@ Punctuation
-10A50 KHAROSHTHI PUNCTUATION DOT
-10A51 KHAROSHTHI PUNCTUATION SMALL CIRCLE
-10A52 KHAROSHTHI PUNCTUATION CIRCLE
-10A53 KHAROSHTHI PUNCTUATION CRESCENT BAR
-10A54 KHAROSHTHI PUNCTUATION MANGALAM
-10A55 KHAROSHTHI PUNCTUATION LOTUS
-10A56 KHAROSHTHI PUNCTUATION DANDA
-10A57 KHAROSHTHI PUNCTUATION DOUBLE DANDA
-10A58 KHAROSHTHI PUNCTUATION LINES
-@@ 1D000 Byzantine Musical Symbols 1D0FF
-@ Prosodies (Prosodics)
-1D000 BYZANTINE MUSICAL SYMBOL PSILI
-1D001 BYZANTINE MUSICAL SYMBOL DASEIA
-1D002 BYZANTINE MUSICAL SYMBOL PERISPOMENI
-@ Ekfonetika
-1D003 BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON
-1D004 BYZANTINE MUSICAL SYMBOL OXEIA DIPLI
-1D005 BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON
-1D006 BYZANTINE MUSICAL SYMBOL VAREIA DIPLI
-1D007 BYZANTINE MUSICAL SYMBOL KATHISTI
-1D008 BYZANTINE MUSICAL SYMBOL SYRMATIKI
-1D009 BYZANTINE MUSICAL SYMBOL PARAKLITIKI
-1D00A BYZANTINE MUSICAL SYMBOL YPOKRISIS
-1D00B BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI
-1D00C BYZANTINE MUSICAL SYMBOL KREMASTI
-1D00D BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON
-1D00E BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON
-1D00F BYZANTINE MUSICAL SYMBOL TELEIA
-1D010 BYZANTINE MUSICAL SYMBOL KENTIMATA
-1D011 BYZANTINE MUSICAL SYMBOL APOSTROFOS
-1D012 BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI
-1D013 BYZANTINE MUSICAL SYMBOL SYNEVMA
-1D014 BYZANTINE MUSICAL SYMBOL THITA
-@ Melodimata (Melodics)
-1D015 BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION
-1D016 BYZANTINE MUSICAL SYMBOL GORGON ARCHAION
-1D017 BYZANTINE MUSICAL SYMBOL PSILON
-1D018 BYZANTINE MUSICAL SYMBOL CHAMILON
-1D019 BYZANTINE MUSICAL SYMBOL VATHY
-1D01A BYZANTINE MUSICAL SYMBOL ISON ARCHAION
-1D01B BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION
-1D01C BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION
-1D01D BYZANTINE MUSICAL SYMBOL SAXIMATA
-1D01E BYZANTINE MUSICAL SYMBOL PARICHON
-1D01F BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA
-1D020 BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION
-1D021 BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION
-1D022 BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION
-1D023 BYZANTINE MUSICAL SYMBOL APOTHEMA
-1D024 BYZANTINE MUSICAL SYMBOL KLASMA
-1D025 BYZANTINE MUSICAL SYMBOL REVMA
-1D026 BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION
-1D027 BYZANTINE MUSICAL SYMBOL TINAGMA
-1D028 BYZANTINE MUSICAL SYMBOL ANATRICHISMA
-1D029 BYZANTINE MUSICAL SYMBOL SEISMA
-1D02A BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION
-1D02B BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU
-1D02C BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION
-1D02D BYZANTINE MUSICAL SYMBOL THEMA
-1D02E BYZANTINE MUSICAL SYMBOL LEMOI
-1D02F BYZANTINE MUSICAL SYMBOL DYO
-1D030 BYZANTINE MUSICAL SYMBOL TRIA
-1D031 BYZANTINE MUSICAL SYMBOL TESSERA
-1D032 BYZANTINE MUSICAL SYMBOL KRATIMATA
-1D033 BYZANTINE MUSICAL SYMBOL APESO EXO NEO
-1D034 BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION
-1D035 BYZANTINE MUSICAL SYMBOL IMIFTHORA
-1D036 BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION
-1D037 BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON
-1D038 BYZANTINE MUSICAL SYMBOL PELASTON
-1D039 BYZANTINE MUSICAL SYMBOL PSIFISTON
-1D03A BYZANTINE MUSICAL SYMBOL KONTEVMA
-1D03B BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION
-1D03C BYZANTINE MUSICAL SYMBOL RAPISMA
-1D03D BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION
-1D03E BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION
-1D03F BYZANTINE MUSICAL SYMBOL ICHADIN
-1D040 BYZANTINE MUSICAL SYMBOL NANA
-1D041 BYZANTINE MUSICAL SYMBOL PETASMA
-1D042 BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO
-1D043 BYZANTINE MUSICAL SYMBOL TROMIKON ALLO
-1D044 BYZANTINE MUSICAL SYMBOL STRAGGISMATA
-1D045 BYZANTINE MUSICAL SYMBOL GRONTHISMATA
-@ Fonitika (Vocals)
-1D046 BYZANTINE MUSICAL SYMBOL ISON NEO
-1D047 BYZANTINE MUSICAL SYMBOL OLIGON NEO
-1D048 BYZANTINE MUSICAL SYMBOL OXEIA NEO
-1D049 BYZANTINE MUSICAL SYMBOL PETASTI
-1D04A BYZANTINE MUSICAL SYMBOL KOUFISMA
-1D04B BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA
-1D04C BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA
-1D04D BYZANTINE MUSICAL SYMBOL PELASTON NEO
-1D04E BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO
-1D04F BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO
-1D050 BYZANTINE MUSICAL SYMBOL YPSILI
-1D051 BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO
-1D052 BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO
-1D053 BYZANTINE MUSICAL SYMBOL YPORROI
-1D054 BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON
-1D055 BYZANTINE MUSICAL SYMBOL ELAFRON
-1D056 BYZANTINE MUSICAL SYMBOL CHAMILI
-@ Afona or Ypostaseis (Mutes or Hypostases)
-1D057 BYZANTINE MUSICAL SYMBOL MIKRON ISON
-1D058 BYZANTINE MUSICAL SYMBOL VAREIA NEO
-1D059 BYZANTINE MUSICAL SYMBOL PIASMA NEO
-1D05A BYZANTINE MUSICAL SYMBOL PSIFISTON NEO
-1D05B BYZANTINE MUSICAL SYMBOL OMALON
-1D05C BYZANTINE MUSICAL SYMBOL ANTIKENOMA
-1D05D BYZANTINE MUSICAL SYMBOL LYGISMA
-1D05E BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO
-1D05F BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO
-1D060 BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA
-1D061 BYZANTINE MUSICAL SYMBOL KYLISMA
-1D062 BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA
-1D063 BYZANTINE MUSICAL SYMBOL TROMIKON NEO
-1D064 BYZANTINE MUSICAL SYMBOL EKSTREPTON
-1D065 BYZANTINE MUSICAL SYMBOL SYNAGMA NEO
-1D066 BYZANTINE MUSICAL SYMBOL SYRMA
-1D067 BYZANTINE MUSICAL SYMBOL CHOREVMA NEO
-1D068 BYZANTINE MUSICAL SYMBOL EPEGERMA
-1D069 BYZANTINE MUSICAL SYMBOL SEISMA NEO
-1D06A BYZANTINE MUSICAL SYMBOL XIRON KLASMA
-1D06B BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON
-1D06C BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA
-1D06D BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA
-1D06E BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA
-1D06F BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA
-1D070 BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA
-1D071 BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA
-1D072 BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON
-1D073 BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON
-1D074 BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON
-1D075 BYZANTINE MUSICAL SYMBOL OYRANISMA NEO
-1D076 BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO
-1D077 BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO
-1D078 BYZANTINE MUSICAL SYMBOL THEMA APLOUN
-1D079 BYZANTINE MUSICAL SYMBOL THES KAI APOTHES
-1D07A BYZANTINE MUSICAL SYMBOL KATAVASMA
-1D07B BYZANTINE MUSICAL SYMBOL ENDOFONON
-1D07C BYZANTINE MUSICAL SYMBOL YFEN KATO
-1D07D BYZANTINE MUSICAL SYMBOL YFEN ANO
-1D07E BYZANTINE MUSICAL SYMBOL STAVROS
-@ Argies (Retards)
-1D07F BYZANTINE MUSICAL SYMBOL KLASMA ANO
-1D080 BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION
-1D081 BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION
-1D082 BYZANTINE MUSICAL SYMBOL KRATIMA ALLO
-1D083 BYZANTINE MUSICAL SYMBOL KRATIMA NEO
-1D084 BYZANTINE MUSICAL SYMBOL APODERMA NEO
-1D085 BYZANTINE MUSICAL SYMBOL APLI
-1D086 BYZANTINE MUSICAL SYMBOL DIPLI
-1D087 BYZANTINE MUSICAL SYMBOL TRIPLI
-1D088 BYZANTINE MUSICAL SYMBOL TETRAPLI
-1D089 BYZANTINE MUSICAL SYMBOL KORONIS
-@ Leimmata or Siopes (Leimmas or Silencers)
-1D08A BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU
-1D08B BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON
-1D08C BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON
-1D08D BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON
-1D08E BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU
-@ Synagmata or Gorgotites (Synagmas or Quickeners)
-1D08F BYZANTINE MUSICAL SYMBOL GORGON NEO ANO
-1D090 BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA
-1D091 BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA
-1D092 BYZANTINE MUSICAL SYMBOL DIGORGON
-1D093 BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO
-1D094 BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO
-1D095 BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA
-1D096 BYZANTINE MUSICAL SYMBOL TRIGORGON
-1D097 BYZANTINE MUSICAL SYMBOL ARGON
-1D098 BYZANTINE MUSICAL SYMBOL IMIDIARGON
-1D099 BYZANTINE MUSICAL SYMBOL DIARGON
-@ Agogika (Conduits)
-1D09A BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI
-1D09B BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI
-1D09C BYZANTINE MUSICAL SYMBOL AGOGI ARGI
-1D09D BYZANTINE MUSICAL SYMBOL AGOGI METRIA
-1D09E BYZANTINE MUSICAL SYMBOL AGOGI MESI
-1D09F BYZANTINE MUSICAL SYMBOL AGOGI GORGI
-1D0A0 BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI
-1D0A1 BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI
-@ Ichimata and Martyrika (Ichimas and Evidentials)
-1D0A2 BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS
-1D0A3 BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS
-1D0A4 BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS
-1D0A5 BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS
-1D0A6 BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS
-1D0A7 BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS
-1D0A8 BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS
-1D0A9 BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS
-1D0AA BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS
-1D0AB BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS
-1D0AC BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS
-1D0AD BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS
-1D0AE BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS
-1D0AF BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS
-1D0B0 BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS
-1D0B1 BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS
-1D0B2 BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS
-1D0B3 BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS
-1D0B4 BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN
-@ Fthores (Destroyers)
-1D0B5 BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN
-1D0B6 BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU
-1D0B7 BYZANTINE MUSICAL SYMBOL IMIFONON
-1D0B8 BYZANTINE MUSICAL SYMBOL IMIFTHORON
-1D0B9 BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU
-1D0BA BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA
-1D0BB BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA
-1D0BC BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS
-1D0BD BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI
-1D0BE BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI
-1D0BF BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE
-1D0C0 BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO
-1D0C1 BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO
-1D0C2 BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO
-1D0C3 BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS
-1D0C4 BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS
-1D0C5 BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS
- * misspelling of "FTHORA" in character name is a known defect
-1D0C6 BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI
-1D0C7 BYZANTINE MUSICAL SYMBOL FTHORA NENANO
-1D0C8 BYZANTINE MUSICAL SYMBOL CHROA ZYGOS
-1D0C9 BYZANTINE MUSICAL SYMBOL CHROA KLITON
-@ Alloioseis (Differentiators)
-1D0CA BYZANTINE MUSICAL SYMBOL CHROA SPATHI
-1D0CB BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION
-1D0CC BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA
-1D0CD BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION
-1D0CE BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION
-1D0CF BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION
-1D0D0 BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA
-1D0D1 BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA
-1D0D2 BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA
-1D0D3 BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA
-1D0D4 BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA
-1D0D5 BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA
-1D0D6 BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA
-1D0D7 BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA
-1D0D8 BYZANTINE MUSICAL SYMBOL GENIKI DIESIS
-@ Rythmika (Rhythmics)
-1D0D9 BYZANTINE MUSICAL SYMBOL GENIKI YFESIS
-1D0DA BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI
-1D0DB BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI
-1D0DC BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI
-1D0DD BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS
-1D0DE BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS
-1D0DF BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU
-1D0E0 BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU
-1D0E1 BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU
-1D0E2 BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS
-1D0E3 BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU
-1D0E4 BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU
-@ Grammata (Letters)
-1D0E5 BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU
-1D0E6 BYZANTINE MUSICAL SYMBOL DIGRAMMA GG
-1D0E7 BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU
-1D0E8 BYZANTINE MUSICAL SYMBOL STIGMA
-1D0E9 BYZANTINE MUSICAL SYMBOL ARKTIKO PA
-1D0EA BYZANTINE MUSICAL SYMBOL ARKTIKO VOU
-1D0EB BYZANTINE MUSICAL SYMBOL ARKTIKO GA
-1D0EC BYZANTINE MUSICAL SYMBOL ARKTIKO DI
-1D0ED BYZANTINE MUSICAL SYMBOL ARKTIKO KE
-1D0EE BYZANTINE MUSICAL SYMBOL ARKTIKO ZO
-1D0EF BYZANTINE MUSICAL SYMBOL ARKTIKO NI
-@ Specials
-1D0F0 BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO
-1D0F1 BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO
-1D0F2 BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO
-1D0F3 BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO
-1D0F4 BYZANTINE MUSICAL SYMBOL KLASMA KATO
-1D0F5 BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
-@@ 1D100 Musical Symbols 1D1FF
-@ Bars
-1D100 MUSICAL SYMBOL SINGLE BARLINE
-1D101 MUSICAL SYMBOL DOUBLE BARLINE
-1D102 MUSICAL SYMBOL FINAL BARLINE
-1D103 MUSICAL SYMBOL REVERSE FINAL BARLINE
-1D104 MUSICAL SYMBOL DASHED BARLINE
-1D105 MUSICAL SYMBOL SHORT BARLINE
-@ Codas
-1D106 MUSICAL SYMBOL LEFT REPEAT SIGN
-1D107 MUSICAL SYMBOL RIGHT REPEAT SIGN
-1D108 MUSICAL SYMBOL REPEAT DOTS
-1D109 MUSICAL SYMBOL DAL SEGNO
-1D10A MUSICAL SYMBOL DA CAPO
-1D10B MUSICAL SYMBOL SEGNO
-1D10C MUSICAL SYMBOL CODA
-@ Figure repetitions
-1D10D MUSICAL SYMBOL REPEATED FIGURE-1
-1D10E MUSICAL SYMBOL REPEATED FIGURE-2
-1D10F MUSICAL SYMBOL REPEATED FIGURE-3
-@ Holds and pauses
-1D110 MUSICAL SYMBOL FERMATA
-1D111 MUSICAL SYMBOL FERMATA BELOW
-1D112 MUSICAL SYMBOL BREATH MARK
-1D113 MUSICAL SYMBOL CAESURA
-@ Staff brackets
-1D114 MUSICAL SYMBOL BRACE
-1D115 MUSICAL SYMBOL BRACKET
-@ Staves
-1D116 MUSICAL SYMBOL ONE-LINE STAFF
-1D117 MUSICAL SYMBOL TWO-LINE STAFF
-1D118 MUSICAL SYMBOL THREE-LINE STAFF
-1D119 MUSICAL SYMBOL FOUR-LINE STAFF
-1D11A MUSICAL SYMBOL FIVE-LINE STAFF
-1D11B MUSICAL SYMBOL SIX-LINE STAFF
-@ Tablature
-1D11C MUSICAL SYMBOL SIX-STRING FRETBOARD
-1D11D MUSICAL SYMBOL FOUR-STRING FRETBOARD
-@ Clefs
-1D11E MUSICAL SYMBOL G CLEF
-1D11F MUSICAL SYMBOL G CLEF OTTAVA ALTA
-1D120 MUSICAL SYMBOL G CLEF OTTAVA BASSA
-1D121 MUSICAL SYMBOL C CLEF
-1D122 MUSICAL SYMBOL F CLEF
-1D123 MUSICAL SYMBOL F CLEF OTTAVA ALTA
-1D124 MUSICAL SYMBOL F CLEF OTTAVA BASSA
-1D125 MUSICAL SYMBOL DRUM CLEF-1
-1D126 MUSICAL SYMBOL DRUM CLEF-2
-@ Accidentals
-1D127 <reserved>
- x (music flat sign - 266D)
-1D128 <reserved>
- x (music natural sign - 266E)
-1D129 <reserved>
- x (music sharp sign - 266F)
-1D12A MUSICAL SYMBOL DOUBLE SHARP
-1D12B MUSICAL SYMBOL DOUBLE FLAT
-1D12C MUSICAL SYMBOL FLAT UP
-1D12D MUSICAL SYMBOL FLAT DOWN
-1D12E MUSICAL SYMBOL NATURAL UP
-1D12F MUSICAL SYMBOL NATURAL DOWN
-1D130 MUSICAL SYMBOL SHARP UP
-1D131 MUSICAL SYMBOL SHARP DOWN
-1D132 MUSICAL SYMBOL QUARTER TONE SHARP
-1D133 MUSICAL SYMBOL QUARTER TONE FLAT
-@ Time signatures
-1D134 MUSICAL SYMBOL COMMON TIME
-1D135 MUSICAL SYMBOL CUT TIME
-@ Octaves
-1D136 MUSICAL SYMBOL OTTAVA ALTA
-1D137 MUSICAL SYMBOL OTTAVA BASSA
-1D138 MUSICAL SYMBOL QUINDICESIMA ALTA
-1D139 MUSICAL SYMBOL QUINDICESIMA BASSA
-@ Rests
-1D13A MUSICAL SYMBOL MULTI REST
-1D13B MUSICAL SYMBOL WHOLE REST
-1D13C MUSICAL SYMBOL HALF REST
-1D13D MUSICAL SYMBOL QUARTER REST
-1D13E MUSICAL SYMBOL EIGHTH REST
-1D13F MUSICAL SYMBOL SIXTEENTH REST
-1D140 MUSICAL SYMBOL THIRTY-SECOND REST
-1D141 MUSICAL SYMBOL SIXTY-FOURTH REST
-1D142 MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST
-@ Noteheads
-1D143 MUSICAL SYMBOL X NOTEHEAD
-1D144 MUSICAL SYMBOL PLUS NOTEHEAD
-1D145 MUSICAL SYMBOL CIRCLE X NOTEHEAD
-1D146 MUSICAL SYMBOL SQUARE NOTEHEAD WHITE
-1D147 MUSICAL SYMBOL SQUARE NOTEHEAD BLACK
-1D148 MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE
-1D149 MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK
-1D14A MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE
-1D14B MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK
-1D14C MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE
-1D14D MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK
-1D14E MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE
-1D14F MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK
-1D150 MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE
-1D151 MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK
-1D152 MUSICAL SYMBOL MOON NOTEHEAD WHITE
-1D153 MUSICAL SYMBOL MOON NOTEHEAD BLACK
-1D154 MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE
-1D155 MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK
-1D156 MUSICAL SYMBOL PARENTHESIS NOTEHEAD
-1D157 MUSICAL SYMBOL VOID NOTEHEAD
-1D158 MUSICAL SYMBOL NOTEHEAD BLACK
-1D159 MUSICAL SYMBOL NULL NOTEHEAD
-1D15A MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE
-1D15B MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK
-@ Notes
-1D15C MUSICAL SYMBOL BREVE
-1D15D MUSICAL SYMBOL WHOLE NOTE
-1D15E MUSICAL SYMBOL HALF NOTE
- : 1D157 1D165
-1D15F MUSICAL SYMBOL QUARTER NOTE
- : 1D158 1D165
-1D160 MUSICAL SYMBOL EIGHTH NOTE
- : 1D15F 1D16E
-1D161 MUSICAL SYMBOL SIXTEENTH NOTE
- : 1D15F 1D16F
-1D162 MUSICAL SYMBOL THIRTY-SECOND NOTE
- : 1D15F 1D170
-1D163 MUSICAL SYMBOL SIXTY-FOURTH NOTE
- : 1D15F 1D171
-1D164 MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
- : 1D15F 1D172
-@ Stems
-1D165 MUSICAL SYMBOL COMBINING STEM
-1D166 MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
-@ Tremolos
-1D167 MUSICAL SYMBOL COMBINING TREMOLO-1
-1D168 MUSICAL SYMBOL COMBINING TREMOLO-2
-1D169 MUSICAL SYMBOL COMBINING TREMOLO-3
-1D16A MUSICAL SYMBOL FINGERED TREMOLO-1
-1D16B MUSICAL SYMBOL FINGERED TREMOLO-2
-1D16C MUSICAL SYMBOL FINGERED TREMOLO-3
-@ Augmentation dot
-1D16D MUSICAL SYMBOL COMBINING AUGMENTATION DOT
-@ Flags
-1D16E MUSICAL SYMBOL COMBINING FLAG-1
-1D16F MUSICAL SYMBOL COMBINING FLAG-2
-1D170 MUSICAL SYMBOL COMBINING FLAG-3
-1D171 MUSICAL SYMBOL COMBINING FLAG-4
-1D172 MUSICAL SYMBOL COMBINING FLAG-5
-@ Beams and slurs
-1D173 MUSICAL SYMBOL BEGIN BEAM
-1D174 MUSICAL SYMBOL END BEAM
-1D175 MUSICAL SYMBOL BEGIN TIE
-1D176 MUSICAL SYMBOL END TIE
-1D177 MUSICAL SYMBOL BEGIN SLUR
-1D178 MUSICAL SYMBOL END SLUR
-1D179 MUSICAL SYMBOL BEGIN PHRASE
-1D17A MUSICAL SYMBOL END PHRASE
-@ Articulation
-1D17B MUSICAL SYMBOL COMBINING ACCENT
-1D17C MUSICAL SYMBOL COMBINING STACCATO
-1D17D MUSICAL SYMBOL COMBINING TENUTO
-1D17E MUSICAL SYMBOL COMBINING STACCATISSIMO
-1D17F MUSICAL SYMBOL COMBINING MARCATO
-1D180 MUSICAL SYMBOL COMBINING MARCATO-STACCATO
-1D181 MUSICAL SYMBOL COMBINING ACCENT-STACCATO
-1D182 MUSICAL SYMBOL COMBINING LOURE
-1D183 MUSICAL SYMBOL ARPEGGIATO UP
-1D184 MUSICAL SYMBOL ARPEGGIATO DOWN
-1D185 MUSICAL SYMBOL COMBINING DOIT
-1D186 MUSICAL SYMBOL COMBINING RIP
-1D187 MUSICAL SYMBOL COMBINING FLIP
-1D188 MUSICAL SYMBOL COMBINING SMEAR
-1D189 MUSICAL SYMBOL COMBINING BEND
-1D18A MUSICAL SYMBOL COMBINING DOUBLE TONGUE
-1D18B MUSICAL SYMBOL COMBINING TRIPLE TONGUE
-1D18C MUSICAL SYMBOL RINFORZANDO
-1D18D MUSICAL SYMBOL SUBITO
-1D18E MUSICAL SYMBOL Z
-@ Dynamics
-1D18F MUSICAL SYMBOL PIANO
-1D190 MUSICAL SYMBOL MEZZO
-1D191 MUSICAL SYMBOL FORTE
-1D192 MUSICAL SYMBOL CRESCENDO
-1D193 MUSICAL SYMBOL DECRESCENDO
-@ Ornaments
-1D194 MUSICAL SYMBOL GRACE NOTE SLASH
-1D195 MUSICAL SYMBOL GRACE NOTE NO SLASH
-1D196 MUSICAL SYMBOL TR
-1D197 MUSICAL SYMBOL TURN
-1D198 MUSICAL SYMBOL INVERTED TURN
-1D199 MUSICAL SYMBOL TURN SLASH
-1D19A MUSICAL SYMBOL TURN UP
-1D19B MUSICAL SYMBOL ORNAMENT STROKE-1
-1D19C MUSICAL SYMBOL ORNAMENT STROKE-2
-1D19D MUSICAL SYMBOL ORNAMENT STROKE-3
-1D19E MUSICAL SYMBOL ORNAMENT STROKE-4
-1D19F MUSICAL SYMBOL ORNAMENT STROKE-5
-1D1A0 MUSICAL SYMBOL ORNAMENT STROKE-6
-1D1A1 MUSICAL SYMBOL ORNAMENT STROKE-7
-1D1A2 MUSICAL SYMBOL ORNAMENT STROKE-8
-1D1A3 MUSICAL SYMBOL ORNAMENT STROKE-9
-1D1A4 MUSICAL SYMBOL ORNAMENT STROKE-10
-1D1A5 MUSICAL SYMBOL ORNAMENT STROKE-11
-@ Analytics
-1D1A6 MUSICAL SYMBOL HAUPTSTIMME
-1D1A7 MUSICAL SYMBOL NEBENSTIMME
-1D1A8 MUSICAL SYMBOL END OF STIMME
-1D1A9 MUSICAL SYMBOL DEGREE SLASH
-@ Instrumentation
-1D1AA MUSICAL SYMBOL COMBINING DOWN BOW
-1D1AB MUSICAL SYMBOL COMBINING UP BOW
-1D1AC MUSICAL SYMBOL COMBINING HARMONIC
-1D1AD MUSICAL SYMBOL COMBINING SNAP PIZZICATO
-@ Pedals
-1D1AE MUSICAL SYMBOL PEDAL MARK
-1D1AF MUSICAL SYMBOL PEDAL UP MARK
-1D1B0 MUSICAL SYMBOL HALF PEDAL MARK
-@ Miscellaneous symbols
-1D1B1 MUSICAL SYMBOL GLISSANDO UP
-1D1B2 MUSICAL SYMBOL GLISSANDO DOWN
-1D1B3 MUSICAL SYMBOL WITH FINGERNAILS
-1D1B4 MUSICAL SYMBOL DAMP
-1D1B5 MUSICAL SYMBOL DAMP ALL
-@ Mensural notation
-1D1B6 MUSICAL SYMBOL MAXIMA
-1D1B7 MUSICAL SYMBOL LONGA
-1D1B8 MUSICAL SYMBOL BREVIS
-1D1B9 MUSICAL SYMBOL SEMIBREVIS WHITE
-1D1BA MUSICAL SYMBOL SEMIBREVIS BLACK
-1D1BB MUSICAL SYMBOL MINIMA
- : 1D1B9 1D165
-1D1BC MUSICAL SYMBOL MINIMA BLACK
- : 1D1BA 1D165
-1D1BD MUSICAL SYMBOL SEMIMINIMA WHITE
- : 1D1BB 1D16E
-1D1BE MUSICAL SYMBOL SEMIMINIMA BLACK
- : 1D1BC 1D16E
-1D1BF MUSICAL SYMBOL FUSA WHITE
- : 1D1BB 1D16F
-1D1C0 MUSICAL SYMBOL FUSA BLACK
- : 1D1BC 1D16F
-@ Mensural rests
-1D1C1 MUSICAL SYMBOL LONGA PERFECTA REST
-1D1C2 MUSICAL SYMBOL LONGA IMPERFECTA REST
-1D1C3 MUSICAL SYMBOL BREVIS REST
-1D1C4 MUSICAL SYMBOL SEMIBREVIS REST
-1D1C5 MUSICAL SYMBOL MINIMA REST
-1D1C6 MUSICAL SYMBOL SEMIMINIMA REST
-@ Mensural prolations
-1D1C7 MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA
-1D1C8 MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA
-1D1C9 MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1
-1D1CA MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA
-1D1CB MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA
-1D1CC MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1
-1D1CD MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2
-1D1CE MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3
-@ Miscellaneous symbol
-1D1CF MUSICAL SYMBOL CROIX
-@ Gregorian notation
-1D1D0 MUSICAL SYMBOL GREGORIAN C CLEF
-1D1D1 MUSICAL SYMBOL GREGORIAN F CLEF
-1D1D2 MUSICAL SYMBOL SQUARE B
-1D1D3 MUSICAL SYMBOL VIRGA
-1D1D4 MUSICAL SYMBOL PODATUS
-1D1D5 MUSICAL SYMBOL CLIVIS
-1D1D6 MUSICAL SYMBOL SCANDICUS
-1D1D7 MUSICAL SYMBOL CLIMACUS
-1D1D8 MUSICAL SYMBOL TORCULUS
-1D1D9 MUSICAL SYMBOL PORRECTUS
-1D1DA MUSICAL SYMBOL PORRECTUS FLEXUS
-1D1DB MUSICAL SYMBOL SCANDICUS FLEXUS
-1D1DC MUSICAL SYMBOL TORCULUS RESUPINUS
-1D1DD MUSICAL SYMBOL PES SUBPUNCTIS
-@@ 1D200 Ancient Greek Musical Notation 1D24F
-@ Ancient Greek vocalic notation
-@+ In a few instances vocalic and instrumental symbols have been unified with each other. In other instances they have been unified with regular Greek letters.
-1D200 GREEK VOCAL NOTATION SYMBOL-1
- * vocal E
-1D201 GREEK VOCAL NOTATION SYMBOL-2
- * vocal first sharp of E
-1D202 GREEK VOCAL NOTATION SYMBOL-3
- = Greek instrumental notation symbol-3
- * vocal or instrumental second sharp of E
-1D203 GREEK VOCAL NOTATION SYMBOL-4
- * vocal F
-1D204 GREEK VOCAL NOTATION SYMBOL-5
- * vocal first sharp of F
-1D205 GREEK VOCAL NOTATION SYMBOL-6
- = Greek instrumental notation symbol-21
- * vocal second sharp of F
- * instrumental second sharp of d
-1D206 GREEK VOCAL NOTATION SYMBOL-7
- = Greek instrumental notation symbol-9
- * vocal G
- * instrumental second sharp of G
-1D207 GREEK VOCAL NOTATION SYMBOL-8
- * vocal first sharp of G
-1D208 GREEK VOCAL NOTATION SYMBOL-9
- = Greek instrumental notation symbol-44
- * vocal second sharp of G
- * instrumental first sharp of e´
-1D209 GREEK VOCAL NOTATION SYMBOL-10
- * vocal A
- * this is a modification of 039F and is therefore not the same as 03D8
-1D20A GREEK VOCAL NOTATION SYMBOL-11
- * vocal first sharp of A
-1D20B GREEK VOCAL NOTATION SYMBOL-12
- * vocal second sharp of A
-1D20C GREEK VOCAL NOTATION SYMBOL-13
- * vocal B
-1D20D GREEK VOCAL NOTATION SYMBOL-14
- = Greek instrumental notation symbol-41
- * vocal first sharp of B
- * instrumental first sharp of d´
- x (latin capital letter v - 0056)
-1D20E GREEK VOCAL NOTATION SYMBOL-15
- = Greek instrumental notation symbol-35
- * vocal second sharp of B
- * instrumental first sharp of b
-1D20F GREEK VOCAL NOTATION SYMBOL-16
- * vocal c
- * unlike 1D23B this character has a glyph variant that looks like a horizontal line
-1D210 GREEK VOCAL NOTATION SYMBOL-17
- * vocal first sharp of c
-1D211 GREEK VOCAL NOTATION SYMBOL-18
- = Greek instrumental notation symbol-15
- * vocal second sharp of c
- * instrumental second sharp of B
-1D212 GREEK VOCAL NOTATION SYMBOL-19
- * vocal d
-1D213 GREEK VOCAL NOTATION SYMBOL-20
- = Greek instrumental notation symbol-28
- * vocal first sharp of d
- * instrumental g
- * this is a modification of 0395 and is therefore not the same as 0046
-1D214 GREEK VOCAL NOTATION SYMBOL-21
- * vocal second sharp of d
-1D215 GREEK VOCAL NOTATION SYMBOL-22
- * vocal e
-1D216 GREEK VOCAL NOTATION SYMBOL-23
- * vocal first sharp of e
- * this is a modification of 0392 and is therefore not the same as 0052
-1D217 GREEK VOCAL NOTATION SYMBOL-24
- * vocal second sharp of e
-1D218 GREEK VOCAL NOTATION SYMBOL-50
- * vocal first sharp of g´
-1D219 GREEK VOCAL NOTATION SYMBOL-51
- * vocal second sharp of g´
-1D21A GREEK VOCAL NOTATION SYMBOL-52
- * vocal a´
-1D21B GREEK VOCAL NOTATION SYMBOL-53
- * vocal first sharp of a´
-1D21C GREEK VOCAL NOTATION SYMBOL-54
- = Greek instrumental notation symbol-20
- * vocal second sharp of a´
- * instrumental first sharp of d
-@ Ancient Greek instrumental notation
-1D21D GREEK INSTRUMENTAL NOTATION SYMBOL-1
- * instrumental E
-1D21E GREEK INSTRUMENTAL NOTATION SYMBOL-2
- * instrumental first sharp of e
-1D21F GREEK INSTRUMENTAL NOTATION SYMBOL-4
- * instrumental F
-1D220 GREEK INSTRUMENTAL NOTATION SYMBOL-5
- * instrumental first sharp of F
-1D221 GREEK INSTRUMENTAL NOTATION SYMBOL-7
- * instrumental G
-1D222 GREEK INSTRUMENTAL NOTATION SYMBOL-8
- * instrumental first sharp of G
-1D223 GREEK INSTRUMENTAL NOTATION SYMBOL-11
- * instrumental first sharp of A
-1D224 GREEK INSTRUMENTAL NOTATION SYMBOL-12
- * instrumental second sharp of A
-1D225 GREEK INSTRUMENTAL NOTATION SYMBOL-13
- * instrumental B
-1D226 GREEK INSTRUMENTAL NOTATION SYMBOL-14
- * instrumental first sharp of B
-1D227 GREEK INSTRUMENTAL NOTATION SYMBOL-17
- * instrumental first sharp of c
-1D228 GREEK INSTRUMENTAL NOTATION SYMBOL-18
- * instrumental second sharp of c
-1D229 GREEK INSTRUMENTAL NOTATION SYMBOL-19
- * instrumental d
-1D22A GREEK INSTRUMENTAL NOTATION SYMBOL-23
- * instrumental first sharp of e
-1D22B GREEK INSTRUMENTAL NOTATION SYMBOL-24
- * instrumental second sharp of e
-1D22C GREEK INSTRUMENTAL NOTATION SYMBOL-25
- * instrumental f
-1D22D GREEK INSTRUMENTAL NOTATION SYMBOL-26
- * instrumental first sharp of f
-1D22E GREEK INSTRUMENTAL NOTATION SYMBOL-27
- * instrumental second sharp of f
-1D22F GREEK INSTRUMENTAL NOTATION SYMBOL-29
- * instrumental first sharp of g
-1D230 GREEK INSTRUMENTAL NOTATION SYMBOL-30
- * instrumental second sharp of g
-1D231 GREEK INSTRUMENTAL NOTATION SYMBOL-32
- * instrumental first sharp of a
-1D232 GREEK INSTRUMENTAL NOTATION SYMBOL-36
- * instrumental second sharp of b
-1D233 GREEK INSTRUMENTAL NOTATION SYMBOL-37
- * instrumental c´
-1D234 GREEK INSTRUMENTAL NOTATION SYMBOL-38
- * instrumental first sharp of c´
-1D235 GREEK INSTRUMENTAL NOTATION SYMBOL-39
- * instrumental second sharp of c´
-1D236 GREEK INSTRUMENTAL NOTATION SYMBOL-40
- * instrumental d´
-1D237 GREEK INSTRUMENTAL NOTATION SYMBOL-42
- * instrumental second sharp of d´
-1D238 GREEK INSTRUMENTAL NOTATION SYMBOL-43
- * instrumental e´
-1D239 GREEK INSTRUMENTAL NOTATION SYMBOL-45
- * instrumental second sharp of e´
-1D23A GREEK INSTRUMENTAL NOTATION SYMBOL-47
- * instrumental first sharp of f´
- * similar but not identical to 002F
-1D23B GREEK INSTRUMENTAL NOTATION SYMBOL-48
- * instrumental second sharp of f´
- * similar but not identical to 005C
-1D23C GREEK INSTRUMENTAL NOTATION SYMBOL-49
- * instrumental g´
-1D23D GREEK INSTRUMENTAL NOTATION SYMBOL-50
- * instrumental first sharp of g´
-1D23E GREEK INSTRUMENTAL NOTATION SYMBOL-51
- * instrumental second sharp of g´
-1D23F GREEK INSTRUMENTAL NOTATION SYMBOL-52
- * instrumental a´
-1D240 GREEK INSTRUMENTAL NOTATION SYMBOL-53
- * instrumental first sharp of a´
-1D241 GREEK INSTRUMENTAL NOTATION SYMBOL-54
- * instrumental second sharp of a´
-@ Further Greek musical notation symbols
-1D242 COMBINING GREEK MUSICAL TRISEME
- x (metrical triseme - 23D7)
-1D243 COMBINING GREEK MUSICAL TETRASEME
- x (metrical tetraseme - 23D8)
-1D244 COMBINING GREEK MUSICAL PENTASEME
- x (metrical pentaseme - 23D9)
-1D245 GREEK MUSICAL LEIMMA
-@@ 1D300 Tai Xuan Jing Symbols 1D35F
-@ Monogram
-1D300 MONOGRAM FOR EARTH
-@ Digrams
-1D301 DIGRAM FOR HEAVENLY EARTH
-1D302 DIGRAM FOR HUMAN EARTH
-1D303 DIGRAM FOR EARTHLY HEAVEN
-1D304 DIGRAM FOR EARTHLY HUMAN
-1D305 DIGRAM FOR EARTH
-@ Tetragrams
-1D306 TETRAGRAM FOR CENTRE
-1D307 TETRAGRAM FOR FULL CIRCLE
-1D308 TETRAGRAM FOR MIRED
-1D309 TETRAGRAM FOR BARRIER
-1D30A TETRAGRAM FOR KEEPING SMALL
-1D30B TETRAGRAM FOR CONTRARIETY
-1D30C TETRAGRAM FOR ASCENT
-1D30D TETRAGRAM FOR OPPOSITION
-1D30E TETRAGRAM FOR BRANCHING OUT
-1D30F TETRAGRAM FOR DEFECTIVENESS OR DISTORTION
-1D310 TETRAGRAM FOR DIVERGENCE
-1D311 TETRAGRAM FOR YOUTHFULNESS
-1D312 TETRAGRAM FOR INCREASE
-1D313 TETRAGRAM FOR PENETRATION
-1D314 TETRAGRAM FOR REACH
-1D315 TETRAGRAM FOR CONTACT
-1D316 TETRAGRAM FOR HOLDING BACK
-1D317 TETRAGRAM FOR WAITING
-1D318 TETRAGRAM FOR FOLLOWING
-1D319 TETRAGRAM FOR ADVANCE
-1D31A TETRAGRAM FOR RELEASE
-1D31B TETRAGRAM FOR RESISTANCE
-1D31C TETRAGRAM FOR EASE
-1D31D TETRAGRAM FOR JOY
-1D31E TETRAGRAM FOR CONTENTION
-1D31F TETRAGRAM FOR ENDEAVOUR
-1D320 TETRAGRAM FOR DUTIES
-1D321 TETRAGRAM FOR CHANGE
-1D322 TETRAGRAM FOR DECISIVENESS
-1D323 TETRAGRAM FOR BOLD RESOLUTION
-1D324 TETRAGRAM FOR PACKING
-1D325 TETRAGRAM FOR LEGION
-1D326 TETRAGRAM FOR CLOSENESS
-1D327 TETRAGRAM FOR KINSHIP
-1D328 TETRAGRAM FOR GATHERING
-1D329 TETRAGRAM FOR STRENGTH
-1D32A TETRAGRAM FOR PURITY
-1D32B TETRAGRAM FOR FULLNESS
-1D32C TETRAGRAM FOR RESIDENCE
-1D32D TETRAGRAM FOR LAW OR MODEL
-1D32E TETRAGRAM FOR RESPONSE
-1D32F TETRAGRAM FOR GOING TO MEET
-1D330 TETRAGRAM FOR ENCOUNTERS
-1D331 TETRAGRAM FOR STOVE
-1D332 TETRAGRAM FOR GREATNESS
-1D333 TETRAGRAM FOR ENLARGEMENT
-1D334 TETRAGRAM FOR PATTERN
-1D335 TETRAGRAM FOR RITUAL
-1D336 TETRAGRAM FOR FLIGHT
-1D337 TETRAGRAM FOR VASTNESS OR WASTING
-1D338 TETRAGRAM FOR CONSTANCY
-1D339 TETRAGRAM FOR MEASURE
-1D33A TETRAGRAM FOR ETERNITY
-1D33B TETRAGRAM FOR UNITY
-1D33C TETRAGRAM FOR DIMINISHMENT
-1D33D TETRAGRAM FOR CLOSED MOUTH
-1D33E TETRAGRAM FOR GUARDEDNESS
-1D33F TETRAGRAM FOR GATHERING IN
-1D340 TETRAGRAM FOR MASSING
-1D341 TETRAGRAM FOR ACCUMULATION
-1D342 TETRAGRAM FOR EMBELLISHMENT
-1D343 TETRAGRAM FOR DOUBT
-1D344 TETRAGRAM FOR WATCH
-1D345 TETRAGRAM FOR SINKING
-1D346 TETRAGRAM FOR INNER
-1D347 TETRAGRAM FOR DEPARTURE
-1D348 TETRAGRAM FOR DARKENING
-1D349 TETRAGRAM FOR DIMMING
-1D34A TETRAGRAM FOR EXHAUSTION
-1D34B TETRAGRAM FOR SEVERANCE
-1D34C TETRAGRAM FOR STOPPAGE
-1D34D TETRAGRAM FOR HARDNESS
-1D34E TETRAGRAM FOR COMPLETION
-1D34F TETRAGRAM FOR CLOSURE
-1D350 TETRAGRAM FOR FAILURE
-1D351 TETRAGRAM FOR AGGRAVATION
-1D352 TETRAGRAM FOR COMPLIANCE
-1D353 TETRAGRAM FOR ON THE VERGE
-1D354 TETRAGRAM FOR DIFFICULTIES
-1D355 TETRAGRAM FOR LABOURING
-1D356 TETRAGRAM FOR FOSTERING
-@@ 1D400 Mathematical Alphanumeric Symbols 1D7FF
-@+ To be used for mathematical variables where style variations are important semantically. For general text, use standard Latin and Greek letters with markup.
-@ Bold symbols
-1D400 MATHEMATICAL BOLD CAPITAL A
- # <font> 0041 latin capital letter a
-1D401 MATHEMATICAL BOLD CAPITAL B
- # <font> 0042 latin capital letter b
-1D402 MATHEMATICAL BOLD CAPITAL C
- # <font> 0043 latin capital letter c
-1D403 MATHEMATICAL BOLD CAPITAL D
- # <font> 0044 latin capital letter d
-1D404 MATHEMATICAL BOLD CAPITAL E
- # <font> 0045 latin capital letter e
-1D405 MATHEMATICAL BOLD CAPITAL F
- # <font> 0046 latin capital letter f
-1D406 MATHEMATICAL BOLD CAPITAL G
- # <font> 0047 latin capital letter g
-1D407 MATHEMATICAL BOLD CAPITAL H
- # <font> 0048 latin capital letter h
-1D408 MATHEMATICAL BOLD CAPITAL I
- # <font> 0049 latin capital letter i
-1D409 MATHEMATICAL BOLD CAPITAL J
- # <font> 004A latin capital letter j
-1D40A MATHEMATICAL BOLD CAPITAL K
- # <font> 004B latin capital letter k
-1D40B MATHEMATICAL BOLD CAPITAL L
- # <font> 004C latin capital letter l
-1D40C MATHEMATICAL BOLD CAPITAL M
- # <font> 004D latin capital letter m
-1D40D MATHEMATICAL BOLD CAPITAL N
- # <font> 004E latin capital letter n
-1D40E MATHEMATICAL BOLD CAPITAL O
- # <font> 004F latin capital letter o
-1D40F MATHEMATICAL BOLD CAPITAL P
- # <font> 0050 latin capital letter p
-1D410 MATHEMATICAL BOLD CAPITAL Q
- # <font> 0051 latin capital letter q
-1D411 MATHEMATICAL BOLD CAPITAL R
- # <font> 0052 latin capital letter r
-1D412 MATHEMATICAL BOLD CAPITAL S
- # <font> 0053 latin capital letter s
-1D413 MATHEMATICAL BOLD CAPITAL T
- # <font> 0054 latin capital letter t
-1D414 MATHEMATICAL BOLD CAPITAL U
- # <font> 0055 latin capital letter u
-1D415 MATHEMATICAL BOLD CAPITAL V
- # <font> 0056 latin capital letter v
-1D416 MATHEMATICAL BOLD CAPITAL W
- # <font> 0057 latin capital letter w
-1D417 MATHEMATICAL BOLD CAPITAL X
- # <font> 0058 latin capital letter x
-1D418 MATHEMATICAL BOLD CAPITAL Y
- # <font> 0059 latin capital letter y
-1D419 MATHEMATICAL BOLD CAPITAL Z
- # <font> 005A latin capital letter z
-1D41A MATHEMATICAL BOLD SMALL A
- # <font> 0061 latin small letter a
-1D41B MATHEMATICAL BOLD SMALL B
- # <font> 0062 latin small letter b
-1D41C MATHEMATICAL BOLD SMALL C
- # <font> 0063 latin small letter c
-1D41D MATHEMATICAL BOLD SMALL D
- # <font> 0064 latin small letter d
-1D41E MATHEMATICAL BOLD SMALL E
- # <font> 0065 latin small letter e
-1D41F MATHEMATICAL BOLD SMALL F
- # <font> 0066 latin small letter f
-1D420 MATHEMATICAL BOLD SMALL G
- # <font> 0067 latin small letter g
-1D421 MATHEMATICAL BOLD SMALL H
- # <font> 0068 latin small letter h
-1D422 MATHEMATICAL BOLD SMALL I
- # <font> 0069 latin small letter i
-1D423 MATHEMATICAL BOLD SMALL J
- # <font> 006A latin small letter j
-1D424 MATHEMATICAL BOLD SMALL K
- # <font> 006B latin small letter k
-1D425 MATHEMATICAL BOLD SMALL L
- # <font> 006C latin small letter l
-1D426 MATHEMATICAL BOLD SMALL M
- # <font> 006D latin small letter m
-1D427 MATHEMATICAL BOLD SMALL N
- # <font> 006E latin small letter n
-1D428 MATHEMATICAL BOLD SMALL O
- # <font> 006F latin small letter o
-1D429 MATHEMATICAL BOLD SMALL P
- # <font> 0070 latin small letter p
-1D42A MATHEMATICAL BOLD SMALL Q
- # <font> 0071 latin small letter q
-1D42B MATHEMATICAL BOLD SMALL R
- # <font> 0072 latin small letter r
-1D42C MATHEMATICAL BOLD SMALL S
- # <font> 0073 latin small letter s
-1D42D MATHEMATICAL BOLD SMALL T
- # <font> 0074 latin small letter t
-1D42E MATHEMATICAL BOLD SMALL U
- # <font> 0075 latin small letter u
-1D42F MATHEMATICAL BOLD SMALL V
- # <font> 0076 latin small letter v
-1D430 MATHEMATICAL BOLD SMALL W
- # <font> 0077 latin small letter w
-1D431 MATHEMATICAL BOLD SMALL X
- # <font> 0078 latin small letter x
-1D432 MATHEMATICAL BOLD SMALL Y
- # <font> 0079 latin small letter y
-1D433 MATHEMATICAL BOLD SMALL Z
- # <font> 007A latin small letter z
-@ Italic symbols
-@+ Several italic symbols have been previously coded in the Letterlike Symbols block and are retained there to ensure unambiguous representation.
-1D434 MATHEMATICAL ITALIC CAPITAL A
- # <font> 0041 latin capital letter a
-1D435 MATHEMATICAL ITALIC CAPITAL B
- # <font> 0042 latin capital letter b
-1D436 MATHEMATICAL ITALIC CAPITAL C
- # <font> 0043 latin capital letter c
-1D437 MATHEMATICAL ITALIC CAPITAL D
- # <font> 0044 latin capital letter d
-1D438 MATHEMATICAL ITALIC CAPITAL E
- # <font> 0045 latin capital letter e
-1D439 MATHEMATICAL ITALIC CAPITAL F
- # <font> 0046 latin capital letter f
-1D43A MATHEMATICAL ITALIC CAPITAL G
- # <font> 0047 latin capital letter g
-1D43B MATHEMATICAL ITALIC CAPITAL H
- # <font> 0048 latin capital letter h
-1D43C MATHEMATICAL ITALIC CAPITAL I
- # <font> 0049 latin capital letter i
-1D43D MATHEMATICAL ITALIC CAPITAL J
- # <font> 004A latin capital letter j
-1D43E MATHEMATICAL ITALIC CAPITAL K
- # <font> 004B latin capital letter k
-1D43F MATHEMATICAL ITALIC CAPITAL L
- # <font> 004C latin capital letter l
-1D440 MATHEMATICAL ITALIC CAPITAL M
- # <font> 004D latin capital letter m
-1D441 MATHEMATICAL ITALIC CAPITAL N
- # <font> 004E latin capital letter n
-1D442 MATHEMATICAL ITALIC CAPITAL O
- # <font> 004F latin capital letter o
-1D443 MATHEMATICAL ITALIC CAPITAL P
- # <font> 0050 latin capital letter p
-1D444 MATHEMATICAL ITALIC CAPITAL Q
- # <font> 0051 latin capital letter q
-1D445 MATHEMATICAL ITALIC CAPITAL R
- # <font> 0052 latin capital letter r
-1D446 MATHEMATICAL ITALIC CAPITAL S
- # <font> 0053 latin capital letter s
-1D447 MATHEMATICAL ITALIC CAPITAL T
- # <font> 0054 latin capital letter t
-1D448 MATHEMATICAL ITALIC CAPITAL U
- # <font> 0055 latin capital letter u
-1D449 MATHEMATICAL ITALIC CAPITAL V
- # <font> 0056 latin capital letter v
-1D44A MATHEMATICAL ITALIC CAPITAL W
- # <font> 0057 latin capital letter w
-1D44B MATHEMATICAL ITALIC CAPITAL X
- # <font> 0058 latin capital letter x
-1D44C MATHEMATICAL ITALIC CAPITAL Y
- # <font> 0059 latin capital letter y
-1D44D MATHEMATICAL ITALIC CAPITAL Z
- # <font> 005A latin capital letter z
-1D44E MATHEMATICAL ITALIC SMALL A
- # <font> 0061 latin small letter a
-1D44F MATHEMATICAL ITALIC SMALL B
- # <font> 0062 latin small letter b
-1D450 MATHEMATICAL ITALIC SMALL C
- # <font> 0063 latin small letter c
-1D451 MATHEMATICAL ITALIC SMALL D
- # <font> 0064 latin small letter d
-1D452 MATHEMATICAL ITALIC SMALL E
- # <font> 0065 latin small letter e
-1D453 MATHEMATICAL ITALIC SMALL F
- # <font> 0066 latin small letter f
-1D454 MATHEMATICAL ITALIC SMALL G
- # <font> 0067 latin small letter g
-1D455 <reserved>
- x (planck constant - 210E)
-1D456 MATHEMATICAL ITALIC SMALL I
- # <font> 0069 latin small letter i
-1D457 MATHEMATICAL ITALIC SMALL J
- # <font> 006A latin small letter j
-1D458 MATHEMATICAL ITALIC SMALL K
- # <font> 006B latin small letter k
-1D459 MATHEMATICAL ITALIC SMALL L
- # <font> 006C latin small letter l
-1D45A MATHEMATICAL ITALIC SMALL M
- # <font> 006D latin small letter m
-1D45B MATHEMATICAL ITALIC SMALL N
- # <font> 006E latin small letter n
-1D45C MATHEMATICAL ITALIC SMALL O
- # <font> 006F latin small letter o
-1D45D MATHEMATICAL ITALIC SMALL P
- # <font> 0070 latin small letter p
-1D45E MATHEMATICAL ITALIC SMALL Q
- # <font> 0071 latin small letter q
-1D45F MATHEMATICAL ITALIC SMALL R
- # <font> 0072 latin small letter r
-1D460 MATHEMATICAL ITALIC SMALL S
- # <font> 0073 latin small letter s
-1D461 MATHEMATICAL ITALIC SMALL T
- # <font> 0074 latin small letter t
-1D462 MATHEMATICAL ITALIC SMALL U
- # <font> 0075 latin small letter u
-1D463 MATHEMATICAL ITALIC SMALL V
- # <font> 0076 latin small letter v
-1D464 MATHEMATICAL ITALIC SMALL W
- # <font> 0077 latin small letter w
-1D465 MATHEMATICAL ITALIC SMALL X
- # <font> 0078 latin small letter x
-1D466 MATHEMATICAL ITALIC SMALL Y
- # <font> 0079 latin small letter y
-1D467 MATHEMATICAL ITALIC SMALL Z
- # <font> 007A latin small letter z
-@ Bold italic symbols
-1D468 MATHEMATICAL BOLD ITALIC CAPITAL A
- # <font> 0041 latin capital letter a
-1D469 MATHEMATICAL BOLD ITALIC CAPITAL B
- # <font> 0042 latin capital letter b
-1D46A MATHEMATICAL BOLD ITALIC CAPITAL C
- # <font> 0043 latin capital letter c
-1D46B MATHEMATICAL BOLD ITALIC CAPITAL D
- # <font> 0044 latin capital letter d
-1D46C MATHEMATICAL BOLD ITALIC CAPITAL E
- # <font> 0045 latin capital letter e
-1D46D MATHEMATICAL BOLD ITALIC CAPITAL F
- # <font> 0046 latin capital letter f
-1D46E MATHEMATICAL BOLD ITALIC CAPITAL G
- # <font> 0047 latin capital letter g
-1D46F MATHEMATICAL BOLD ITALIC CAPITAL H
- # <font> 0048 latin capital letter h
-1D470 MATHEMATICAL BOLD ITALIC CAPITAL I
- # <font> 0049 latin capital letter i
-1D471 MATHEMATICAL BOLD ITALIC CAPITAL J
- # <font> 004A latin capital letter j
-1D472 MATHEMATICAL BOLD ITALIC CAPITAL K
- # <font> 004B latin capital letter k
-1D473 MATHEMATICAL BOLD ITALIC CAPITAL L
- # <font> 004C latin capital letter l
-1D474 MATHEMATICAL BOLD ITALIC CAPITAL M
- # <font> 004D latin capital letter m
-1D475 MATHEMATICAL BOLD ITALIC CAPITAL N
- # <font> 004E latin capital letter n
-1D476 MATHEMATICAL BOLD ITALIC CAPITAL O
- # <font> 004F latin capital letter o
-1D477 MATHEMATICAL BOLD ITALIC CAPITAL P
- # <font> 0050 latin capital letter p
-1D478 MATHEMATICAL BOLD ITALIC CAPITAL Q
- # <font> 0051 latin capital letter q
-1D479 MATHEMATICAL BOLD ITALIC CAPITAL R
- # <font> 0052 latin capital letter r
-1D47A MATHEMATICAL BOLD ITALIC CAPITAL S
- # <font> 0053 latin capital letter s
-1D47B MATHEMATICAL BOLD ITALIC CAPITAL T
- # <font> 0054 latin capital letter t
-1D47C MATHEMATICAL BOLD ITALIC CAPITAL U
- # <font> 0055 latin capital letter u
-1D47D MATHEMATICAL BOLD ITALIC CAPITAL V
- # <font> 0056 latin capital letter v
-1D47E MATHEMATICAL BOLD ITALIC CAPITAL W
- # <font> 0057 latin capital letter w
-1D47F MATHEMATICAL BOLD ITALIC CAPITAL X
- # <font> 0058 latin capital letter x
-1D480 MATHEMATICAL BOLD ITALIC CAPITAL Y
- # <font> 0059 latin capital letter y
-1D481 MATHEMATICAL BOLD ITALIC CAPITAL Z
- # <font> 005A latin capital letter z
-1D482 MATHEMATICAL BOLD ITALIC SMALL A
- # <font> 0061 latin small letter a
-1D483 MATHEMATICAL BOLD ITALIC SMALL B
- # <font> 0062 latin small letter b
-1D484 MATHEMATICAL BOLD ITALIC SMALL C
- # <font> 0063 latin small letter c
-1D485 MATHEMATICAL BOLD ITALIC SMALL D
- # <font> 0064 latin small letter d
-1D486 MATHEMATICAL BOLD ITALIC SMALL E
- # <font> 0065 latin small letter e
-1D487 MATHEMATICAL BOLD ITALIC SMALL F
- # <font> 0066 latin small letter f
-1D488 MATHEMATICAL BOLD ITALIC SMALL G
- # <font> 0067 latin small letter g
-1D489 MATHEMATICAL BOLD ITALIC SMALL H
- # <font> 0068 latin small letter h
-1D48A MATHEMATICAL BOLD ITALIC SMALL I
- # <font> 0069 latin small letter i
-1D48B MATHEMATICAL BOLD ITALIC SMALL J
- # <font> 006A latin small letter j
-1D48C MATHEMATICAL BOLD ITALIC SMALL K
- # <font> 006B latin small letter k
-1D48D MATHEMATICAL BOLD ITALIC SMALL L
- # <font> 006C latin small letter l
-1D48E MATHEMATICAL BOLD ITALIC SMALL M
- # <font> 006D latin small letter m
-1D48F MATHEMATICAL BOLD ITALIC SMALL N
- # <font> 006E latin small letter n
-1D490 MATHEMATICAL BOLD ITALIC SMALL O
- # <font> 006F latin small letter o
-1D491 MATHEMATICAL BOLD ITALIC SMALL P
- # <font> 0070 latin small letter p
-1D492 MATHEMATICAL BOLD ITALIC SMALL Q
- # <font> 0071 latin small letter q
-1D493 MATHEMATICAL BOLD ITALIC SMALL R
- # <font> 0072 latin small letter r
-1D494 MATHEMATICAL BOLD ITALIC SMALL S
- # <font> 0073 latin small letter s
-1D495 MATHEMATICAL BOLD ITALIC SMALL T
- # <font> 0074 latin small letter t
-1D496 MATHEMATICAL BOLD ITALIC SMALL U
- # <font> 0075 latin small letter u
-1D497 MATHEMATICAL BOLD ITALIC SMALL V
- # <font> 0076 latin small letter v
-1D498 MATHEMATICAL BOLD ITALIC SMALL W
- # <font> 0077 latin small letter w
-1D499 MATHEMATICAL BOLD ITALIC SMALL X
- # <font> 0078 latin small letter x
-1D49A MATHEMATICAL BOLD ITALIC SMALL Y
- # <font> 0079 latin small letter y
-1D49B MATHEMATICAL BOLD ITALIC SMALL Z
- # <font> 007A latin small letter z
-@ Script symbols
-@+ Several script symbols have been previously coded in the Letterlike Symbols block and are retained there to ensure unambiguous representation.
-1D49C MATHEMATICAL SCRIPT CAPITAL A
- # <font> 0041 latin capital letter a
-1D49D <reserved>
- x (script capital b - 212C)
-1D49E MATHEMATICAL SCRIPT CAPITAL C
- # <font> 0043 latin capital letter c
-1D49F MATHEMATICAL SCRIPT CAPITAL D
- # <font> 0044 latin capital letter d
-1D4A0 <reserved>
- x (script capital e - 2130)
-1D4A1 <reserved>
- x (script capital f - 2131)
-1D4A2 MATHEMATICAL SCRIPT CAPITAL G
- # <font> 0047 latin capital letter g
-1D4A3 <reserved>
- x (script capital h - 210B)
-1D4A4 <reserved>
- x (script capital i - 2110)
-1D4A5 MATHEMATICAL SCRIPT CAPITAL J
- # <font> 004A latin capital letter j
-1D4A6 MATHEMATICAL SCRIPT CAPITAL K
- # <font> 004B latin capital letter k
-1D4A7 <reserved>
- x (script capital l - 2112)
-1D4A8 <reserved>
- x (script capital m - 2133)
-1D4A9 MATHEMATICAL SCRIPT CAPITAL N
- # <font> 004E latin capital letter n
-1D4AA MATHEMATICAL SCRIPT CAPITAL O
- # <font> 004F latin capital letter o
-1D4AB MATHEMATICAL SCRIPT CAPITAL P
- = power set
- # <font> 0050 latin capital letter p
-1D4AC MATHEMATICAL SCRIPT CAPITAL Q
- # <font> 0051 latin capital letter q
-1D4AD <reserved>
- x (script capital r - 211B)
-1D4AE MATHEMATICAL SCRIPT CAPITAL S
- # <font> 0053 latin capital letter s
-1D4AF MATHEMATICAL SCRIPT CAPITAL T
- # <font> 0054 latin capital letter t
-1D4B0 MATHEMATICAL SCRIPT CAPITAL U
- # <font> 0055 latin capital letter u
-1D4B1 MATHEMATICAL SCRIPT CAPITAL V
- # <font> 0056 latin capital letter v
-1D4B2 MATHEMATICAL SCRIPT CAPITAL W
- # <font> 0057 latin capital letter w
-1D4B3 MATHEMATICAL SCRIPT CAPITAL X
- # <font> 0058 latin capital letter x
-1D4B4 MATHEMATICAL SCRIPT CAPITAL Y
- # <font> 0059 latin capital letter y
-1D4B5 MATHEMATICAL SCRIPT CAPITAL Z
- # <font> 005A latin capital letter z
-1D4B6 MATHEMATICAL SCRIPT SMALL A
- # <font> 0061 latin small letter a
-1D4B7 MATHEMATICAL SCRIPT SMALL B
- # <font> 0062 latin small letter b
-1D4B8 MATHEMATICAL SCRIPT SMALL C
- # <font> 0063 latin small letter c
-1D4B9 MATHEMATICAL SCRIPT SMALL D
- # <font> 0064 latin small letter d
-1D4BA <reserved>
- x (script small e - 212F)
-1D4BB MATHEMATICAL SCRIPT SMALL F
- # <font> 0066 latin small letter f
-1D4BC <reserved>
- x (script small g - 210A)
-1D4BD MATHEMATICAL SCRIPT SMALL H
- # <font> 0068 latin small letter h
-1D4BE MATHEMATICAL SCRIPT SMALL I
- # <font> 0069 latin small letter i
-1D4BF MATHEMATICAL SCRIPT SMALL J
- # <font> 006A latin small letter j
-1D4C0 MATHEMATICAL SCRIPT SMALL K
- # <font> 006B latin small letter k
-1D4C1 MATHEMATICAL SCRIPT SMALL L
- x (script small l - 2113)
- # <font> 006C latin small letter l
-1D4C2 MATHEMATICAL SCRIPT SMALL M
- # <font> 006D latin small letter m
-1D4C3 MATHEMATICAL SCRIPT SMALL N
- # <font> 006E latin small letter n
-1D4C4 <reserved>
- x (script small o - 2134)
-1D4C5 MATHEMATICAL SCRIPT SMALL P
- # <font> 0070 latin small letter p
-1D4C6 MATHEMATICAL SCRIPT SMALL Q
- # <font> 0071 latin small letter q
-1D4C7 MATHEMATICAL SCRIPT SMALL R
- # <font> 0072 latin small letter r
-1D4C8 MATHEMATICAL SCRIPT SMALL S
- # <font> 0073 latin small letter s
-1D4C9 MATHEMATICAL SCRIPT SMALL T
- # <font> 0074 latin small letter t
-1D4CA MATHEMATICAL SCRIPT SMALL U
- # <font> 0075 latin small letter u
-1D4CB MATHEMATICAL SCRIPT SMALL V
- # <font> 0076 latin small letter v
-1D4CC MATHEMATICAL SCRIPT SMALL W
- # <font> 0077 latin small letter w
-1D4CD MATHEMATICAL SCRIPT SMALL X
- # <font> 0078 latin small letter x
-1D4CE MATHEMATICAL SCRIPT SMALL Y
- # <font> 0079 latin small letter y
-1D4CF MATHEMATICAL SCRIPT SMALL Z
- # <font> 007A latin small letter z
-@ Bold script symbols
-1D4D0 MATHEMATICAL BOLD SCRIPT CAPITAL A
- # <font> 0041 latin capital letter a
-1D4D1 MATHEMATICAL BOLD SCRIPT CAPITAL B
- # <font> 0042 latin capital letter b
-1D4D2 MATHEMATICAL BOLD SCRIPT CAPITAL C
- # <font> 0043 latin capital letter c
-1D4D3 MATHEMATICAL BOLD SCRIPT CAPITAL D
- # <font> 0044 latin capital letter d
-1D4D4 MATHEMATICAL BOLD SCRIPT CAPITAL E
- # <font> 0045 latin capital letter e
-1D4D5 MATHEMATICAL BOLD SCRIPT CAPITAL F
- # <font> 0046 latin capital letter f
-1D4D6 MATHEMATICAL BOLD SCRIPT CAPITAL G
- # <font> 0047 latin capital letter g
-1D4D7 MATHEMATICAL BOLD SCRIPT CAPITAL H
- # <font> 0048 latin capital letter h
-1D4D8 MATHEMATICAL BOLD SCRIPT CAPITAL I
- # <font> 0049 latin capital letter i
-1D4D9 MATHEMATICAL BOLD SCRIPT CAPITAL J
- # <font> 004A latin capital letter j
-1D4DA MATHEMATICAL BOLD SCRIPT CAPITAL K
- # <font> 004B latin capital letter k
-1D4DB MATHEMATICAL BOLD SCRIPT CAPITAL L
- # <font> 004C latin capital letter l
-1D4DC MATHEMATICAL BOLD SCRIPT CAPITAL M
- # <font> 004D latin capital letter m
-1D4DD MATHEMATICAL BOLD SCRIPT CAPITAL N
- # <font> 004E latin capital letter n
-1D4DE MATHEMATICAL BOLD SCRIPT CAPITAL O
- # <font> 004F latin capital letter o
-1D4DF MATHEMATICAL BOLD SCRIPT CAPITAL P
- # <font> 0050 latin capital letter p
-1D4E0 MATHEMATICAL BOLD SCRIPT CAPITAL Q
- # <font> 0051 latin capital letter q
-1D4E1 MATHEMATICAL BOLD SCRIPT CAPITAL R
- # <font> 0052 latin capital letter r
-1D4E2 MATHEMATICAL BOLD SCRIPT CAPITAL S
- # <font> 0053 latin capital letter s
-1D4E3 MATHEMATICAL BOLD SCRIPT CAPITAL T
- # <font> 0054 latin capital letter t
-1D4E4 MATHEMATICAL BOLD SCRIPT CAPITAL U
- # <font> 0055 latin capital letter u
-1D4E5 MATHEMATICAL BOLD SCRIPT CAPITAL V
- # <font> 0056 latin capital letter v
-1D4E6 MATHEMATICAL BOLD SCRIPT CAPITAL W
- # <font> 0057 latin capital letter w
-1D4E7 MATHEMATICAL BOLD SCRIPT CAPITAL X
- # <font> 0058 latin capital letter x
-1D4E8 MATHEMATICAL BOLD SCRIPT CAPITAL Y
- # <font> 0059 latin capital letter y
-1D4E9 MATHEMATICAL BOLD SCRIPT CAPITAL Z
- # <font> 005A latin capital letter z
-1D4EA MATHEMATICAL BOLD SCRIPT SMALL A
- # <font> 0061 latin small letter a
-1D4EB MATHEMATICAL BOLD SCRIPT SMALL B
- # <font> 0062 latin small letter b
-1D4EC MATHEMATICAL BOLD SCRIPT SMALL C
- # <font> 0063 latin small letter c
-1D4ED MATHEMATICAL BOLD SCRIPT SMALL D
- # <font> 0064 latin small letter d
-1D4EE MATHEMATICAL BOLD SCRIPT SMALL E
- # <font> 0065 latin small letter e
-1D4EF MATHEMATICAL BOLD SCRIPT SMALL F
- # <font> 0066 latin small letter f
-1D4F0 MATHEMATICAL BOLD SCRIPT SMALL G
- # <font> 0067 latin small letter g
-1D4F1 MATHEMATICAL BOLD SCRIPT SMALL H
- # <font> 0068 latin small letter h
-1D4F2 MATHEMATICAL BOLD SCRIPT SMALL I
- # <font> 0069 latin small letter i
-1D4F3 MATHEMATICAL BOLD SCRIPT SMALL J
- # <font> 006A latin small letter j
-1D4F4 MATHEMATICAL BOLD SCRIPT SMALL K
- # <font> 006B latin small letter k
-1D4F5 MATHEMATICAL BOLD SCRIPT SMALL L
- # <font> 006C latin small letter l
-1D4F6 MATHEMATICAL BOLD SCRIPT SMALL M
- # <font> 006D latin small letter m
-1D4F7 MATHEMATICAL BOLD SCRIPT SMALL N
- # <font> 006E latin small letter n
-1D4F8 MATHEMATICAL BOLD SCRIPT SMALL O
- # <font> 006F latin small letter o
-1D4F9 MATHEMATICAL BOLD SCRIPT SMALL P
- # <font> 0070 latin small letter p
-1D4FA MATHEMATICAL BOLD SCRIPT SMALL Q
- # <font> 0071 latin small letter q
-1D4FB MATHEMATICAL BOLD SCRIPT SMALL R
- # <font> 0072 latin small letter r
-1D4FC MATHEMATICAL BOLD SCRIPT SMALL S
- # <font> 0073 latin small letter s
-1D4FD MATHEMATICAL BOLD SCRIPT SMALL T
- # <font> 0074 latin small letter t
-1D4FE MATHEMATICAL BOLD SCRIPT SMALL U
- # <font> 0075 latin small letter u
-1D4FF MATHEMATICAL BOLD SCRIPT SMALL V
- # <font> 0076 latin small letter v
-1D500 MATHEMATICAL BOLD SCRIPT SMALL W
- # <font> 0077 latin small letter w
-1D501 MATHEMATICAL BOLD SCRIPT SMALL X
- # <font> 0078 latin small letter x
-1D502 MATHEMATICAL BOLD SCRIPT SMALL Y
- # <font> 0079 latin small letter y
-1D503 MATHEMATICAL BOLD SCRIPT SMALL Z
- # <font> 007A latin small letter z
-@ Fraktur symbols
-@+ This style is sometimes known as black-letter. Several black-letter symbols have been previously coded in the Letterlike Symbols block and are retained there to ensure unambiguous representation.
-1D504 MATHEMATICAL FRAKTUR CAPITAL A
- # <font> 0041 latin capital letter a
-1D505 MATHEMATICAL FRAKTUR CAPITAL B
- # <font> 0042 latin capital letter b
-1D506 <reserved>
- x (black-letter capital c - 212D)
-1D507 MATHEMATICAL FRAKTUR CAPITAL D
- # <font> 0044 latin capital letter d
-1D508 MATHEMATICAL FRAKTUR CAPITAL E
- # <font> 0045 latin capital letter e
-1D509 MATHEMATICAL FRAKTUR CAPITAL F
- # <font> 0046 latin capital letter f
-1D50A MATHEMATICAL FRAKTUR CAPITAL G
- # <font> 0047 latin capital letter g
-1D50B <reserved>
- x (black-letter capital h - 210C)
-1D50C <reserved>
- x (black-letter capital i - 2111)
-1D50D MATHEMATICAL FRAKTUR CAPITAL J
- # <font> 004A latin capital letter j
-1D50E MATHEMATICAL FRAKTUR CAPITAL K
- # <font> 004B latin capital letter k
-1D50F MATHEMATICAL FRAKTUR CAPITAL L
- # <font> 004C latin capital letter l
-1D510 MATHEMATICAL FRAKTUR CAPITAL M
- = New Testament majority text
- # <font> 004D latin capital letter m
-1D511 MATHEMATICAL FRAKTUR CAPITAL N
- # <font> 004E latin capital letter n
-1D512 MATHEMATICAL FRAKTUR CAPITAL O
- # <font> 004F latin capital letter o
-1D513 MATHEMATICAL FRAKTUR CAPITAL P
- # <font> 0050 latin capital letter p
-1D514 MATHEMATICAL FRAKTUR CAPITAL Q
- # <font> 0051 latin capital letter q
-1D515 <reserved>
- x (black-letter capital r - 211C)
-1D516 MATHEMATICAL FRAKTUR CAPITAL S
- = Septuagint, Greek Old Testament
- # <font> 0053 latin capital letter s
-1D517 MATHEMATICAL FRAKTUR CAPITAL T
- # <font> 0054 latin capital letter t
-1D518 MATHEMATICAL FRAKTUR CAPITAL U
- # <font> 0055 latin capital letter u
-1D519 MATHEMATICAL FRAKTUR CAPITAL V
- # <font> 0056 latin capital letter v
-1D51A MATHEMATICAL FRAKTUR CAPITAL W
- # <font> 0057 latin capital letter w
-1D51B MATHEMATICAL FRAKTUR CAPITAL X
- # <font> 0058 latin capital letter x
-1D51C MATHEMATICAL FRAKTUR CAPITAL Y
- # <font> 0059 latin capital letter y
-1D51D <reserved>
- x (black-letter capital z - 2128)
-1D51E MATHEMATICAL FRAKTUR SMALL A
- # <font> 0061 latin small letter a
-1D51F MATHEMATICAL FRAKTUR SMALL B
- # <font> 0062 latin small letter b
-1D520 MATHEMATICAL FRAKTUR SMALL C
- # <font> 0063 latin small letter c
-1D521 MATHEMATICAL FRAKTUR SMALL D
- # <font> 0064 latin small letter d
-1D522 MATHEMATICAL FRAKTUR SMALL E
- # <font> 0065 latin small letter e
-1D523 MATHEMATICAL FRAKTUR SMALL F
- # <font> 0066 latin small letter f
-1D524 MATHEMATICAL FRAKTUR SMALL G
- # <font> 0067 latin small letter g
-1D525 MATHEMATICAL FRAKTUR SMALL H
- # <font> 0068 latin small letter h
-1D526 MATHEMATICAL FRAKTUR SMALL I
- # <font> 0069 latin small letter i
-1D527 MATHEMATICAL FRAKTUR SMALL J
- # <font> 006A latin small letter j
-1D528 MATHEMATICAL FRAKTUR SMALL K
- # <font> 006B latin small letter k
-1D529 MATHEMATICAL FRAKTUR SMALL L
- # <font> 006C latin small letter l
-1D52A MATHEMATICAL FRAKTUR SMALL M
- # <font> 006D latin small letter m
-1D52B MATHEMATICAL FRAKTUR SMALL N
- # <font> 006E latin small letter n
-1D52C MATHEMATICAL FRAKTUR SMALL O
- # <font> 006F latin small letter o
-1D52D MATHEMATICAL FRAKTUR SMALL P
- # <font> 0070 latin small letter p
-1D52E MATHEMATICAL FRAKTUR SMALL Q
- # <font> 0071 latin small letter q
-1D52F MATHEMATICAL FRAKTUR SMALL R
- # <font> 0072 latin small letter r
-1D530 MATHEMATICAL FRAKTUR SMALL S
- # <font> 0073 latin small letter s
-1D531 MATHEMATICAL FRAKTUR SMALL T
- # <font> 0074 latin small letter t
-1D532 MATHEMATICAL FRAKTUR SMALL U
- # <font> 0075 latin small letter u
-1D533 MATHEMATICAL FRAKTUR SMALL V
- # <font> 0076 latin small letter v
-1D534 MATHEMATICAL FRAKTUR SMALL W
- # <font> 0077 latin small letter w
-1D535 MATHEMATICAL FRAKTUR SMALL X
- # <font> 0078 latin small letter x
-1D536 MATHEMATICAL FRAKTUR SMALL Y
- # <font> 0079 latin small letter y
-1D537 MATHEMATICAL FRAKTUR SMALL Z
- # <font> 007A latin small letter z
-@ Double-struck symbols
-@+ This style is sometimes known as open-face or blackboard-bold. Several double-struck symbols have been previously coded in the Letterlike Symbols block and are retained there to ensure unambiguous representation.
-1D538 MATHEMATICAL DOUBLE-STRUCK CAPITAL A
- # <font> 0041 latin capital letter a
-1D539 MATHEMATICAL DOUBLE-STRUCK CAPITAL B
- # <font> 0042 latin capital letter b
-1D53A <reserved>
- x (double-struck capital c - 2102)
-1D53B MATHEMATICAL DOUBLE-STRUCK CAPITAL D
- # <font> 0044 latin capital letter d
-1D53C MATHEMATICAL DOUBLE-STRUCK CAPITAL E
- # <font> 0045 latin capital letter e
-1D53D MATHEMATICAL DOUBLE-STRUCK CAPITAL F
- # <font> 0046 latin capital letter f
-1D53E MATHEMATICAL DOUBLE-STRUCK CAPITAL G
- # <font> 0047 latin capital letter g
-1D53F <reserved>
- x (double-struck capital h - 210D)
-1D540 MATHEMATICAL DOUBLE-STRUCK CAPITAL I
- # <font> 0049 latin capital letter i
-1D541 MATHEMATICAL DOUBLE-STRUCK CAPITAL J
- # <font> 004A latin capital letter j
-1D542 MATHEMATICAL DOUBLE-STRUCK CAPITAL K
- # <font> 004B latin capital letter k
-1D543 MATHEMATICAL DOUBLE-STRUCK CAPITAL L
- # <font> 004C latin capital letter l
-1D544 MATHEMATICAL DOUBLE-STRUCK CAPITAL M
- # <font> 004D latin capital letter m
-1D545 <reserved>
- x (double-struck capital n - 2115)
-1D546 MATHEMATICAL DOUBLE-STRUCK CAPITAL O
- # <font> 004F latin capital letter o
-1D547 <reserved>
- x (double-struck capital p - 2119)
-1D548 <reserved>
- x (double-struck capital q - 211A)
-1D549 <reserved>
- x (double-struck capital r - 211D)
-1D54A MATHEMATICAL DOUBLE-STRUCK CAPITAL S
- # <font> 0053 latin capital letter s
-1D54B MATHEMATICAL DOUBLE-STRUCK CAPITAL T
- # <font> 0054 latin capital letter t
-1D54C MATHEMATICAL DOUBLE-STRUCK CAPITAL U
- # <font> 0055 latin capital letter u
-1D54D MATHEMATICAL DOUBLE-STRUCK CAPITAL V
- # <font> 0056 latin capital letter v
-1D54E MATHEMATICAL DOUBLE-STRUCK CAPITAL W
- # <font> 0057 latin capital letter w
-1D54F MATHEMATICAL DOUBLE-STRUCK CAPITAL X
- # <font> 0058 latin capital letter x
-1D550 MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
- # <font> 0059 latin capital letter y
-1D551 <reserved>
- x (double-struck capital z - 2124)
-1D552 MATHEMATICAL DOUBLE-STRUCK SMALL A
- # <font> 0061 latin small letter a
-1D553 MATHEMATICAL DOUBLE-STRUCK SMALL B
- # <font> 0062 latin small letter b
-1D554 MATHEMATICAL DOUBLE-STRUCK SMALL C
- # <font> 0063 latin small letter c
-1D555 MATHEMATICAL DOUBLE-STRUCK SMALL D
- # <font> 0064 latin small letter d
-1D556 MATHEMATICAL DOUBLE-STRUCK SMALL E
- # <font> 0065 latin small letter e
-1D557 MATHEMATICAL DOUBLE-STRUCK SMALL F
- # <font> 0066 latin small letter f
-1D558 MATHEMATICAL DOUBLE-STRUCK SMALL G
- # <font> 0067 latin small letter g
-1D559 MATHEMATICAL DOUBLE-STRUCK SMALL H
- # <font> 0068 latin small letter h
-1D55A MATHEMATICAL DOUBLE-STRUCK SMALL I
- # <font> 0069 latin small letter i
-1D55B MATHEMATICAL DOUBLE-STRUCK SMALL J
- # <font> 006A latin small letter j
-1D55C MATHEMATICAL DOUBLE-STRUCK SMALL K
- # <font> 006B latin small letter k
-1D55D MATHEMATICAL DOUBLE-STRUCK SMALL L
- # <font> 006C latin small letter l
-1D55E MATHEMATICAL DOUBLE-STRUCK SMALL M
- # <font> 006D latin small letter m
-1D55F MATHEMATICAL DOUBLE-STRUCK SMALL N
- # <font> 006E latin small letter n
-1D560 MATHEMATICAL DOUBLE-STRUCK SMALL O
- # <font> 006F latin small letter o
-1D561 MATHEMATICAL DOUBLE-STRUCK SMALL P
- # <font> 0070 latin small letter p
-1D562 MATHEMATICAL DOUBLE-STRUCK SMALL Q
- # <font> 0071 latin small letter q
-1D563 MATHEMATICAL DOUBLE-STRUCK SMALL R
- # <font> 0072 latin small letter r
-1D564 MATHEMATICAL DOUBLE-STRUCK SMALL S
- # <font> 0073 latin small letter s
-1D565 MATHEMATICAL DOUBLE-STRUCK SMALL T
- # <font> 0074 latin small letter t
-1D566 MATHEMATICAL DOUBLE-STRUCK SMALL U
- # <font> 0075 latin small letter u
-1D567 MATHEMATICAL DOUBLE-STRUCK SMALL V
- # <font> 0076 latin small letter v
-1D568 MATHEMATICAL DOUBLE-STRUCK SMALL W
- # <font> 0077 latin small letter w
-1D569 MATHEMATICAL DOUBLE-STRUCK SMALL X
- # <font> 0078 latin small letter x
-1D56A MATHEMATICAL DOUBLE-STRUCK SMALL Y
- # <font> 0079 latin small letter y
-1D56B MATHEMATICAL DOUBLE-STRUCK SMALL Z
- # <font> 007A latin small letter z
-@ Bold Fraktur symbols
-1D56C MATHEMATICAL BOLD FRAKTUR CAPITAL A
- # <font> 0041 latin capital letter a
-1D56D MATHEMATICAL BOLD FRAKTUR CAPITAL B
- # <font> 0042 latin capital letter b
-1D56E MATHEMATICAL BOLD FRAKTUR CAPITAL C
- # <font> 0043 latin capital letter c
-1D56F MATHEMATICAL BOLD FRAKTUR CAPITAL D
- # <font> 0044 latin capital letter d
-1D570 MATHEMATICAL BOLD FRAKTUR CAPITAL E
- # <font> 0045 latin capital letter e
-1D571 MATHEMATICAL BOLD FRAKTUR CAPITAL F
- # <font> 0046 latin capital letter f
-1D572 MATHEMATICAL BOLD FRAKTUR CAPITAL G
- # <font> 0047 latin capital letter g
-1D573 MATHEMATICAL BOLD FRAKTUR CAPITAL H
- # <font> 0048 latin capital letter h
-1D574 MATHEMATICAL BOLD FRAKTUR CAPITAL I
- # <font> 0049 latin capital letter i
-1D575 MATHEMATICAL BOLD FRAKTUR CAPITAL J
- # <font> 004A latin capital letter j
-1D576 MATHEMATICAL BOLD FRAKTUR CAPITAL K
- # <font> 004B latin capital letter k
-1D577 MATHEMATICAL BOLD FRAKTUR CAPITAL L
- # <font> 004C latin capital letter l
-1D578 MATHEMATICAL BOLD FRAKTUR CAPITAL M
- # <font> 004D latin capital letter m
-1D579 MATHEMATICAL BOLD FRAKTUR CAPITAL N
- # <font> 004E latin capital letter n
-1D57A MATHEMATICAL BOLD FRAKTUR CAPITAL O
- # <font> 004F latin capital letter o
-1D57B MATHEMATICAL BOLD FRAKTUR CAPITAL P
- # <font> 0050 latin capital letter p
-1D57C MATHEMATICAL BOLD FRAKTUR CAPITAL Q
- # <font> 0051 latin capital letter q
-1D57D MATHEMATICAL BOLD FRAKTUR CAPITAL R
- # <font> 0052 latin capital letter r
-1D57E MATHEMATICAL BOLD FRAKTUR CAPITAL S
- # <font> 0053 latin capital letter s
-1D57F MATHEMATICAL BOLD FRAKTUR CAPITAL T
- # <font> 0054 latin capital letter t
-1D580 MATHEMATICAL BOLD FRAKTUR CAPITAL U
- # <font> 0055 latin capital letter u
-1D581 MATHEMATICAL BOLD FRAKTUR CAPITAL V
- # <font> 0056 latin capital letter v
-1D582 MATHEMATICAL BOLD FRAKTUR CAPITAL W
- # <font> 0057 latin capital letter w
-1D583 MATHEMATICAL BOLD FRAKTUR CAPITAL X
- # <font> 0058 latin capital letter x
-1D584 MATHEMATICAL BOLD FRAKTUR CAPITAL Y
- # <font> 0059 latin capital letter y
-1D585 MATHEMATICAL BOLD FRAKTUR CAPITAL Z
- # <font> 005A latin capital letter z
-1D586 MATHEMATICAL BOLD FRAKTUR SMALL A
- # <font> 0061 latin small letter a
-1D587 MATHEMATICAL BOLD FRAKTUR SMALL B
- # <font> 0062 latin small letter b
-1D588 MATHEMATICAL BOLD FRAKTUR SMALL C
- # <font> 0063 latin small letter c
-1D589 MATHEMATICAL BOLD FRAKTUR SMALL D
- # <font> 0064 latin small letter d
-1D58A MATHEMATICAL BOLD FRAKTUR SMALL E
- # <font> 0065 latin small letter e
-1D58B MATHEMATICAL BOLD FRAKTUR SMALL F
- # <font> 0066 latin small letter f
-1D58C MATHEMATICAL BOLD FRAKTUR SMALL G
- # <font> 0067 latin small letter g
-1D58D MATHEMATICAL BOLD FRAKTUR SMALL H
- # <font> 0068 latin small letter h
-1D58E MATHEMATICAL BOLD FRAKTUR SMALL I
- # <font> 0069 latin small letter i
-1D58F MATHEMATICAL BOLD FRAKTUR SMALL J
- # <font> 006A latin small letter j
-1D590 MATHEMATICAL BOLD FRAKTUR SMALL K
- # <font> 006B latin small letter k
-1D591 MATHEMATICAL BOLD FRAKTUR SMALL L
- # <font> 006C latin small letter l
-1D592 MATHEMATICAL BOLD FRAKTUR SMALL M
- # <font> 006D latin small letter m
-1D593 MATHEMATICAL BOLD FRAKTUR SMALL N
- # <font> 006E latin small letter n
-1D594 MATHEMATICAL BOLD FRAKTUR SMALL O
- # <font> 006F latin small letter o
-1D595 MATHEMATICAL BOLD FRAKTUR SMALL P
- # <font> 0070 latin small letter p
-1D596 MATHEMATICAL BOLD FRAKTUR SMALL Q
- # <font> 0071 latin small letter q
-1D597 MATHEMATICAL BOLD FRAKTUR SMALL R
- # <font> 0072 latin small letter r
-1D598 MATHEMATICAL BOLD FRAKTUR SMALL S
- # <font> 0073 latin small letter s
-1D599 MATHEMATICAL BOLD FRAKTUR SMALL T
- # <font> 0074 latin small letter t
-1D59A MATHEMATICAL BOLD FRAKTUR SMALL U
- # <font> 0075 latin small letter u
-1D59B MATHEMATICAL BOLD FRAKTUR SMALL V
- # <font> 0076 latin small letter v
-1D59C MATHEMATICAL BOLD FRAKTUR SMALL W
- # <font> 0077 latin small letter w
-1D59D MATHEMATICAL BOLD FRAKTUR SMALL X
- # <font> 0078 latin small letter x
-1D59E MATHEMATICAL BOLD FRAKTUR SMALL Y
- # <font> 0079 latin small letter y
-1D59F MATHEMATICAL BOLD FRAKTUR SMALL Z
- # <font> 007A latin small letter z
-@ Sans-serif symbols
-1D5A0 MATHEMATICAL SANS-SERIF CAPITAL A
- # <font> 0041 latin capital letter a
-1D5A1 MATHEMATICAL SANS-SERIF CAPITAL B
- # <font> 0042 latin capital letter b
-1D5A2 MATHEMATICAL SANS-SERIF CAPITAL C
- # <font> 0043 latin capital letter c
-1D5A3 MATHEMATICAL SANS-SERIF CAPITAL D
- # <font> 0044 latin capital letter d
-1D5A4 MATHEMATICAL SANS-SERIF CAPITAL E
- # <font> 0045 latin capital letter e
-1D5A5 MATHEMATICAL SANS-SERIF CAPITAL F
- # <font> 0046 latin capital letter f
-1D5A6 MATHEMATICAL SANS-SERIF CAPITAL G
- # <font> 0047 latin capital letter g
-1D5A7 MATHEMATICAL SANS-SERIF CAPITAL H
- # <font> 0048 latin capital letter h
-1D5A8 MATHEMATICAL SANS-SERIF CAPITAL I
- # <font> 0049 latin capital letter i
-1D5A9 MATHEMATICAL SANS-SERIF CAPITAL J
- # <font> 004A latin capital letter j
-1D5AA MATHEMATICAL SANS-SERIF CAPITAL K
- # <font> 004B latin capital letter k
-1D5AB MATHEMATICAL SANS-SERIF CAPITAL L
- # <font> 004C latin capital letter l
-1D5AC MATHEMATICAL SANS-SERIF CAPITAL M
- # <font> 004D latin capital letter m
-1D5AD MATHEMATICAL SANS-SERIF CAPITAL N
- # <font> 004E latin capital letter n
-1D5AE MATHEMATICAL SANS-SERIF CAPITAL O
- # <font> 004F latin capital letter o
-1D5AF MATHEMATICAL SANS-SERIF CAPITAL P
- # <font> 0050 latin capital letter p
-1D5B0 MATHEMATICAL SANS-SERIF CAPITAL Q
- # <font> 0051 latin capital letter q
-1D5B1 MATHEMATICAL SANS-SERIF CAPITAL R
- # <font> 0052 latin capital letter r
-1D5B2 MATHEMATICAL SANS-SERIF CAPITAL S
- # <font> 0053 latin capital letter s
-1D5B3 MATHEMATICAL SANS-SERIF CAPITAL T
- # <font> 0054 latin capital letter t
-1D5B4 MATHEMATICAL SANS-SERIF CAPITAL U
- # <font> 0055 latin capital letter u
-1D5B5 MATHEMATICAL SANS-SERIF CAPITAL V
- # <font> 0056 latin capital letter v
-1D5B6 MATHEMATICAL SANS-SERIF CAPITAL W
- # <font> 0057 latin capital letter w
-1D5B7 MATHEMATICAL SANS-SERIF CAPITAL X
- # <font> 0058 latin capital letter x
-1D5B8 MATHEMATICAL SANS-SERIF CAPITAL Y
- # <font> 0059 latin capital letter y
-1D5B9 MATHEMATICAL SANS-SERIF CAPITAL Z
- # <font> 005A latin capital letter z
-1D5BA MATHEMATICAL SANS-SERIF SMALL A
- # <font> 0061 latin small letter a
-1D5BB MATHEMATICAL SANS-SERIF SMALL B
- # <font> 0062 latin small letter b
-1D5BC MATHEMATICAL SANS-SERIF SMALL C
- # <font> 0063 latin small letter c
-1D5BD MATHEMATICAL SANS-SERIF SMALL D
- # <font> 0064 latin small letter d
-1D5BE MATHEMATICAL SANS-SERIF SMALL E
- # <font> 0065 latin small letter e
-1D5BF MATHEMATICAL SANS-SERIF SMALL F
- # <font> 0066 latin small letter f
-1D5C0 MATHEMATICAL SANS-SERIF SMALL G
- # <font> 0067 latin small letter g
-1D5C1 MATHEMATICAL SANS-SERIF SMALL H
- # <font> 0068 latin small letter h
-1D5C2 MATHEMATICAL SANS-SERIF SMALL I
- # <font> 0069 latin small letter i
-1D5C3 MATHEMATICAL SANS-SERIF SMALL J
- # <font> 006A latin small letter j
-1D5C4 MATHEMATICAL SANS-SERIF SMALL K
- # <font> 006B latin small letter k
-1D5C5 MATHEMATICAL SANS-SERIF SMALL L
- # <font> 006C latin small letter l
-1D5C6 MATHEMATICAL SANS-SERIF SMALL M
- # <font> 006D latin small letter m
-1D5C7 MATHEMATICAL SANS-SERIF SMALL N
- # <font> 006E latin small letter n
-1D5C8 MATHEMATICAL SANS-SERIF SMALL O
- # <font> 006F latin small letter o
-1D5C9 MATHEMATICAL SANS-SERIF SMALL P
- # <font> 0070 latin small letter p
-1D5CA MATHEMATICAL SANS-SERIF SMALL Q
- # <font> 0071 latin small letter q
-1D5CB MATHEMATICAL SANS-SERIF SMALL R
- # <font> 0072 latin small letter r
-1D5CC MATHEMATICAL SANS-SERIF SMALL S
- # <font> 0073 latin small letter s
-1D5CD MATHEMATICAL SANS-SERIF SMALL T
- # <font> 0074 latin small letter t
-1D5CE MATHEMATICAL SANS-SERIF SMALL U
- # <font> 0075 latin small letter u
-1D5CF MATHEMATICAL SANS-SERIF SMALL V
- # <font> 0076 latin small letter v
-1D5D0 MATHEMATICAL SANS-SERIF SMALL W
- # <font> 0077 latin small letter w
-1D5D1 MATHEMATICAL SANS-SERIF SMALL X
- # <font> 0078 latin small letter x
-1D5D2 MATHEMATICAL SANS-SERIF SMALL Y
- # <font> 0079 latin small letter y
-1D5D3 MATHEMATICAL SANS-SERIF SMALL Z
- # <font> 007A latin small letter z
-@ Sans-serif bold symbols
-1D5D4 MATHEMATICAL SANS-SERIF BOLD CAPITAL A
- # <font> 0041 latin capital letter a
-1D5D5 MATHEMATICAL SANS-SERIF BOLD CAPITAL B
- # <font> 0042 latin capital letter b
-1D5D6 MATHEMATICAL SANS-SERIF BOLD CAPITAL C
- # <font> 0043 latin capital letter c
-1D5D7 MATHEMATICAL SANS-SERIF BOLD CAPITAL D
- # <font> 0044 latin capital letter d
-1D5D8 MATHEMATICAL SANS-SERIF BOLD CAPITAL E
- # <font> 0045 latin capital letter e
-1D5D9 MATHEMATICAL SANS-SERIF BOLD CAPITAL F
- # <font> 0046 latin capital letter f
-1D5DA MATHEMATICAL SANS-SERIF BOLD CAPITAL G
- # <font> 0047 latin capital letter g
-1D5DB MATHEMATICAL SANS-SERIF BOLD CAPITAL H
- # <font> 0048 latin capital letter h
-1D5DC MATHEMATICAL SANS-SERIF BOLD CAPITAL I
- # <font> 0049 latin capital letter i
-1D5DD MATHEMATICAL SANS-SERIF BOLD CAPITAL J
- # <font> 004A latin capital letter j
-1D5DE MATHEMATICAL SANS-SERIF BOLD CAPITAL K
- # <font> 004B latin capital letter k
-1D5DF MATHEMATICAL SANS-SERIF BOLD CAPITAL L
- # <font> 004C latin capital letter l
-1D5E0 MATHEMATICAL SANS-SERIF BOLD CAPITAL M
- # <font> 004D latin capital letter m
-1D5E1 MATHEMATICAL SANS-SERIF BOLD CAPITAL N
- # <font> 004E latin capital letter n
-1D5E2 MATHEMATICAL SANS-SERIF BOLD CAPITAL O
- # <font> 004F latin capital letter o
-1D5E3 MATHEMATICAL SANS-SERIF BOLD CAPITAL P
- # <font> 0050 latin capital letter p
-1D5E4 MATHEMATICAL SANS-SERIF BOLD CAPITAL Q
- # <font> 0051 latin capital letter q
-1D5E5 MATHEMATICAL SANS-SERIF BOLD CAPITAL R
- # <font> 0052 latin capital letter r
-1D5E6 MATHEMATICAL SANS-SERIF BOLD CAPITAL S
- # <font> 0053 latin capital letter s
-1D5E7 MATHEMATICAL SANS-SERIF BOLD CAPITAL T
- # <font> 0054 latin capital letter t
-1D5E8 MATHEMATICAL SANS-SERIF BOLD CAPITAL U
- # <font> 0055 latin capital letter u
-1D5E9 MATHEMATICAL SANS-SERIF BOLD CAPITAL V
- # <font> 0056 latin capital letter v
-1D5EA MATHEMATICAL SANS-SERIF BOLD CAPITAL W
- # <font> 0057 latin capital letter w
-1D5EB MATHEMATICAL SANS-SERIF BOLD CAPITAL X
- # <font> 0058 latin capital letter x
-1D5EC MATHEMATICAL SANS-SERIF BOLD CAPITAL Y
- # <font> 0059 latin capital letter y
-1D5ED MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
- # <font> 005A latin capital letter z
-1D5EE MATHEMATICAL SANS-SERIF BOLD SMALL A
- # <font> 0061 latin small letter a
-1D5EF MATHEMATICAL SANS-SERIF BOLD SMALL B
- # <font> 0062 latin small letter b
-1D5F0 MATHEMATICAL SANS-SERIF BOLD SMALL C
- # <font> 0063 latin small letter c
-1D5F1 MATHEMATICAL SANS-SERIF BOLD SMALL D
- # <font> 0064 latin small letter d
-1D5F2 MATHEMATICAL SANS-SERIF BOLD SMALL E
- # <font> 0065 latin small letter e
-1D5F3 MATHEMATICAL SANS-SERIF BOLD SMALL F
- # <font> 0066 latin small letter f
-1D5F4 MATHEMATICAL SANS-SERIF BOLD SMALL G
- # <font> 0067 latin small letter g
-1D5F5 MATHEMATICAL SANS-SERIF BOLD SMALL H
- # <font> 0068 latin small letter h
-1D5F6 MATHEMATICAL SANS-SERIF BOLD SMALL I
- # <font> 0069 latin small letter i
-1D5F7 MATHEMATICAL SANS-SERIF BOLD SMALL J
- # <font> 006A latin small letter j
-1D5F8 MATHEMATICAL SANS-SERIF BOLD SMALL K
- # <font> 006B latin small letter k
-1D5F9 MATHEMATICAL SANS-SERIF BOLD SMALL L
- # <font> 006C latin small letter l
-1D5FA MATHEMATICAL SANS-SERIF BOLD SMALL M
- # <font> 006D latin small letter m
-1D5FB MATHEMATICAL SANS-SERIF BOLD SMALL N
- # <font> 006E latin small letter n
-1D5FC MATHEMATICAL SANS-SERIF BOLD SMALL O
- # <font> 006F latin small letter o
-1D5FD MATHEMATICAL SANS-SERIF BOLD SMALL P
- # <font> 0070 latin small letter p
-1D5FE MATHEMATICAL SANS-SERIF BOLD SMALL Q
- # <font> 0071 latin small letter q
-1D5FF MATHEMATICAL SANS-SERIF BOLD SMALL R
- # <font> 0072 latin small letter r
-1D600 MATHEMATICAL SANS-SERIF BOLD SMALL S
- # <font> 0073 latin small letter s
-1D601 MATHEMATICAL SANS-SERIF BOLD SMALL T
- # <font> 0074 latin small letter t
-1D602 MATHEMATICAL SANS-SERIF BOLD SMALL U
- # <font> 0075 latin small letter u
-1D603 MATHEMATICAL SANS-SERIF BOLD SMALL V
- # <font> 0076 latin small letter v
-1D604 MATHEMATICAL SANS-SERIF BOLD SMALL W
- # <font> 0077 latin small letter w
-1D605 MATHEMATICAL SANS-SERIF BOLD SMALL X
- # <font> 0078 latin small letter x
-1D606 MATHEMATICAL SANS-SERIF BOLD SMALL Y
- # <font> 0079 latin small letter y
-1D607 MATHEMATICAL SANS-SERIF BOLD SMALL Z
- # <font> 007A latin small letter z
-@ Sans-serif italic symbols
-1D608 MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
- # <font> 0041 latin capital letter a
-1D609 MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
- # <font> 0042 latin capital letter b
-1D60A MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
- # <font> 0043 latin capital letter c
-1D60B MATHEMATICAL SANS-SERIF ITALIC CAPITAL D
- # <font> 0044 latin capital letter d
-1D60C MATHEMATICAL SANS-SERIF ITALIC CAPITAL E
- # <font> 0045 latin capital letter e
-1D60D MATHEMATICAL SANS-SERIF ITALIC CAPITAL F
- # <font> 0046 latin capital letter f
-1D60E MATHEMATICAL SANS-SERIF ITALIC CAPITAL G
- # <font> 0047 latin capital letter g
-1D60F MATHEMATICAL SANS-SERIF ITALIC CAPITAL H
- # <font> 0048 latin capital letter h
-1D610 MATHEMATICAL SANS-SERIF ITALIC CAPITAL I
- # <font> 0049 latin capital letter i
-1D611 MATHEMATICAL SANS-SERIF ITALIC CAPITAL J
- # <font> 004A latin capital letter j
-1D612 MATHEMATICAL SANS-SERIF ITALIC CAPITAL K
- # <font> 004B latin capital letter k
-1D613 MATHEMATICAL SANS-SERIF ITALIC CAPITAL L
- # <font> 004C latin capital letter l
-1D614 MATHEMATICAL SANS-SERIF ITALIC CAPITAL M
- # <font> 004D latin capital letter m
-1D615 MATHEMATICAL SANS-SERIF ITALIC CAPITAL N
- # <font> 004E latin capital letter n
-1D616 MATHEMATICAL SANS-SERIF ITALIC CAPITAL O
- # <font> 004F latin capital letter o
-1D617 MATHEMATICAL SANS-SERIF ITALIC CAPITAL P
- # <font> 0050 latin capital letter p
-1D618 MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q
- # <font> 0051 latin capital letter q
-1D619 MATHEMATICAL SANS-SERIF ITALIC CAPITAL R
- # <font> 0052 latin capital letter r
-1D61A MATHEMATICAL SANS-SERIF ITALIC CAPITAL S
- # <font> 0053 latin capital letter s
-1D61B MATHEMATICAL SANS-SERIF ITALIC CAPITAL T
- # <font> 0054 latin capital letter t
-1D61C MATHEMATICAL SANS-SERIF ITALIC CAPITAL U
- # <font> 0055 latin capital letter u
-1D61D MATHEMATICAL SANS-SERIF ITALIC CAPITAL V
- # <font> 0056 latin capital letter v
-1D61E MATHEMATICAL SANS-SERIF ITALIC CAPITAL W
- # <font> 0057 latin capital letter w
-1D61F MATHEMATICAL SANS-SERIF ITALIC CAPITAL X
- # <font> 0058 latin capital letter x
-1D620 MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y
- # <font> 0059 latin capital letter y
-1D621 MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
- # <font> 005A latin capital letter z
-1D622 MATHEMATICAL SANS-SERIF ITALIC SMALL A
- # <font> 0061 latin small letter a
-1D623 MATHEMATICAL SANS-SERIF ITALIC SMALL B
- # <font> 0062 latin small letter b
-1D624 MATHEMATICAL SANS-SERIF ITALIC SMALL C
- # <font> 0063 latin small letter c
-1D625 MATHEMATICAL SANS-SERIF ITALIC SMALL D
- # <font> 0064 latin small letter d
-1D626 MATHEMATICAL SANS-SERIF ITALIC SMALL E
- # <font> 0065 latin small letter e
-1D627 MATHEMATICAL SANS-SERIF ITALIC SMALL F
- # <font> 0066 latin small letter f
-1D628 MATHEMATICAL SANS-SERIF ITALIC SMALL G
- # <font> 0067 latin small letter g
-1D629 MATHEMATICAL SANS-SERIF ITALIC SMALL H
- # <font> 0068 latin small letter h
-1D62A MATHEMATICAL SANS-SERIF ITALIC SMALL I
- # <font> 0069 latin small letter i
-1D62B MATHEMATICAL SANS-SERIF ITALIC SMALL J
- # <font> 006A latin small letter j
-1D62C MATHEMATICAL SANS-SERIF ITALIC SMALL K
- # <font> 006B latin small letter k
-1D62D MATHEMATICAL SANS-SERIF ITALIC SMALL L
- # <font> 006C latin small letter l
-1D62E MATHEMATICAL SANS-SERIF ITALIC SMALL M
- # <font> 006D latin small letter m
-1D62F MATHEMATICAL SANS-SERIF ITALIC SMALL N
- # <font> 006E latin small letter n
-1D630 MATHEMATICAL SANS-SERIF ITALIC SMALL O
- # <font> 006F latin small letter o
-1D631 MATHEMATICAL SANS-SERIF ITALIC SMALL P
- # <font> 0070 latin small letter p
-1D632 MATHEMATICAL SANS-SERIF ITALIC SMALL Q
- # <font> 0071 latin small letter q
-1D633 MATHEMATICAL SANS-SERIF ITALIC SMALL R
- # <font> 0072 latin small letter r
-1D634 MATHEMATICAL SANS-SERIF ITALIC SMALL S
- # <font> 0073 latin small letter s
-1D635 MATHEMATICAL SANS-SERIF ITALIC SMALL T
- # <font> 0074 latin small letter t
-1D636 MATHEMATICAL SANS-SERIF ITALIC SMALL U
- # <font> 0075 latin small letter u
-1D637 MATHEMATICAL SANS-SERIF ITALIC SMALL V
- # <font> 0076 latin small letter v
-1D638 MATHEMATICAL SANS-SERIF ITALIC SMALL W
- # <font> 0077 latin small letter w
-1D639 MATHEMATICAL SANS-SERIF ITALIC SMALL X
- # <font> 0078 latin small letter x
-1D63A MATHEMATICAL SANS-SERIF ITALIC SMALL Y
- # <font> 0079 latin small letter y
-1D63B MATHEMATICAL SANS-SERIF ITALIC SMALL Z
- # <font> 007A latin small letter z
-@ Sans-serif bold italic symbols
-1D63C MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
- # <font> 0041 latin capital letter a
-1D63D MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
- # <font> 0042 latin capital letter b
-1D63E MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
- # <font> 0043 latin capital letter c
-1D63F MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
- # <font> 0044 latin capital letter d
-1D640 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
- # <font> 0045 latin capital letter e
-1D641 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F
- # <font> 0046 latin capital letter f
-1D642 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
- # <font> 0047 latin capital letter g
-1D643 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H
- # <font> 0048 latin capital letter h
-1D644 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
- # <font> 0049 latin capital letter i
-1D645 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J
- # <font> 004A latin capital letter j
-1D646 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
- # <font> 004B latin capital letter k
-1D647 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
- # <font> 004C latin capital letter l
-1D648 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
- # <font> 004D latin capital letter m
-1D649 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
- # <font> 004E latin capital letter n
-1D64A MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
- # <font> 004F latin capital letter o
-1D64B MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
- # <font> 0050 latin capital letter p
-1D64C MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q
- # <font> 0051 latin capital letter q
-1D64D MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
- # <font> 0052 latin capital letter r
-1D64E MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
- # <font> 0053 latin capital letter s
-1D64F MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
- # <font> 0054 latin capital letter t
-1D650 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
- # <font> 0055 latin capital letter u
-1D651 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V
- # <font> 0056 latin capital letter v
-1D652 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W
- # <font> 0057 latin capital letter w
-1D653 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
- # <font> 0058 latin capital letter x
-1D654 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y
- # <font> 0059 latin capital letter y
-1D655 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
- # <font> 005A latin capital letter z
-1D656 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A
- # <font> 0061 latin small letter a
-1D657 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B
- # <font> 0062 latin small letter b
-1D658 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C
- # <font> 0063 latin small letter c
-1D659 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D
- # <font> 0064 latin small letter d
-1D65A MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E
- # <font> 0065 latin small letter e
-1D65B MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F
- # <font> 0066 latin small letter f
-1D65C MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G
- # <font> 0067 latin small letter g
-1D65D MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H
- # <font> 0068 latin small letter h
-1D65E MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I
- # <font> 0069 latin small letter i
-1D65F MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
- # <font> 006A latin small letter j
-1D660 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K
- # <font> 006B latin small letter k
-1D661 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L
- # <font> 006C latin small letter l
-1D662 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M
- # <font> 006D latin small letter m
-1D663 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N
- # <font> 006E latin small letter n
-1D664 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O
- # <font> 006F latin small letter o
-1D665 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P
- # <font> 0070 latin small letter p
-1D666 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q
- # <font> 0071 latin small letter q
-1D667 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R
- # <font> 0072 latin small letter r
-1D668 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S
- # <font> 0073 latin small letter s
-1D669 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T
- # <font> 0074 latin small letter t
-1D66A MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U
- # <font> 0075 latin small letter u
-1D66B MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V
- # <font> 0076 latin small letter v
-1D66C MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W
- # <font> 0077 latin small letter w
-1D66D MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X
- # <font> 0078 latin small letter x
-1D66E MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y
- # <font> 0079 latin small letter y
-1D66F MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
- # <font> 007A latin small letter z
-@ Monospace symbols
-1D670 MATHEMATICAL MONOSPACE CAPITAL A
- # <font> 0041 latin capital letter a
-1D671 MATHEMATICAL MONOSPACE CAPITAL B
- # <font> 0042 latin capital letter b
-1D672 MATHEMATICAL MONOSPACE CAPITAL C
- # <font> 0043 latin capital letter c
-1D673 MATHEMATICAL MONOSPACE CAPITAL D
- # <font> 0044 latin capital letter d
-1D674 MATHEMATICAL MONOSPACE CAPITAL E
- # <font> 0045 latin capital letter e
-1D675 MATHEMATICAL MONOSPACE CAPITAL F
- # <font> 0046 latin capital letter f
-1D676 MATHEMATICAL MONOSPACE CAPITAL G
- # <font> 0047 latin capital letter g
-1D677 MATHEMATICAL MONOSPACE CAPITAL H
- # <font> 0048 latin capital letter h
-1D678 MATHEMATICAL MONOSPACE CAPITAL I
- # <font> 0049 latin capital letter i
-1D679 MATHEMATICAL MONOSPACE CAPITAL J
- # <font> 004A latin capital letter j
-1D67A MATHEMATICAL MONOSPACE CAPITAL K
- # <font> 004B latin capital letter k
-1D67B MATHEMATICAL MONOSPACE CAPITAL L
- # <font> 004C latin capital letter l
-1D67C MATHEMATICAL MONOSPACE CAPITAL M
- # <font> 004D latin capital letter m
-1D67D MATHEMATICAL MONOSPACE CAPITAL N
- # <font> 004E latin capital letter n
-1D67E MATHEMATICAL MONOSPACE CAPITAL O
- # <font> 004F latin capital letter o
-1D67F MATHEMATICAL MONOSPACE CAPITAL P
- # <font> 0050 latin capital letter p
-1D680 MATHEMATICAL MONOSPACE CAPITAL Q
- # <font> 0051 latin capital letter q
-1D681 MATHEMATICAL MONOSPACE CAPITAL R
- # <font> 0052 latin capital letter r
-1D682 MATHEMATICAL MONOSPACE CAPITAL S
- # <font> 0053 latin capital letter s
-1D683 MATHEMATICAL MONOSPACE CAPITAL T
- # <font> 0054 latin capital letter t
-1D684 MATHEMATICAL MONOSPACE CAPITAL U
- # <font> 0055 latin capital letter u
-1D685 MATHEMATICAL MONOSPACE CAPITAL V
- # <font> 0056 latin capital letter v
-1D686 MATHEMATICAL MONOSPACE CAPITAL W
- # <font> 0057 latin capital letter w
-1D687 MATHEMATICAL MONOSPACE CAPITAL X
- # <font> 0058 latin capital letter x
-1D688 MATHEMATICAL MONOSPACE CAPITAL Y
- # <font> 0059 latin capital letter y
-1D689 MATHEMATICAL MONOSPACE CAPITAL Z
- # <font> 005A latin capital letter z
-1D68A MATHEMATICAL MONOSPACE SMALL A
- # <font> 0061 latin small letter a
-1D68B MATHEMATICAL MONOSPACE SMALL B
- # <font> 0062 latin small letter b
-1D68C MATHEMATICAL MONOSPACE SMALL C
- # <font> 0063 latin small letter c
-1D68D MATHEMATICAL MONOSPACE SMALL D
- # <font> 0064 latin small letter d
-1D68E MATHEMATICAL MONOSPACE SMALL E
- # <font> 0065 latin small letter e
-1D68F MATHEMATICAL MONOSPACE SMALL F
- # <font> 0066 latin small letter f
-1D690 MATHEMATICAL MONOSPACE SMALL G
- # <font> 0067 latin small letter g
-1D691 MATHEMATICAL MONOSPACE SMALL H
- # <font> 0068 latin small letter h
-1D692 MATHEMATICAL MONOSPACE SMALL I
- # <font> 0069 latin small letter i
-1D693 MATHEMATICAL MONOSPACE SMALL J
- # <font> 006A latin small letter j
-1D694 MATHEMATICAL MONOSPACE SMALL K
- # <font> 006B latin small letter k
-1D695 MATHEMATICAL MONOSPACE SMALL L
- # <font> 006C latin small letter l
-1D696 MATHEMATICAL MONOSPACE SMALL M
- # <font> 006D latin small letter m
-1D697 MATHEMATICAL MONOSPACE SMALL N
- # <font> 006E latin small letter n
-1D698 MATHEMATICAL MONOSPACE SMALL O
- # <font> 006F latin small letter o
-1D699 MATHEMATICAL MONOSPACE SMALL P
- # <font> 0070 latin small letter p
-1D69A MATHEMATICAL MONOSPACE SMALL Q
- # <font> 0071 latin small letter q
-1D69B MATHEMATICAL MONOSPACE SMALL R
- # <font> 0072 latin small letter r
-1D69C MATHEMATICAL MONOSPACE SMALL S
- # <font> 0073 latin small letter s
-1D69D MATHEMATICAL MONOSPACE SMALL T
- # <font> 0074 latin small letter t
-1D69E MATHEMATICAL MONOSPACE SMALL U
- # <font> 0075 latin small letter u
-1D69F MATHEMATICAL MONOSPACE SMALL V
- # <font> 0076 latin small letter v
-1D6A0 MATHEMATICAL MONOSPACE SMALL W
- # <font> 0077 latin small letter w
-1D6A1 MATHEMATICAL MONOSPACE SMALL X
- # <font> 0078 latin small letter x
-1D6A2 MATHEMATICAL MONOSPACE SMALL Y
- # <font> 0079 latin small letter y
-1D6A3 MATHEMATICAL MONOSPACE SMALL Z
- # <font> 007A latin small letter z
-@ Dotless symbols
-@+ For use as independent symbols. These are not required as base characters for accents since regular i and j are soft-dotted in Unicode.
-1D6A4 MATHEMATICAL ITALIC SMALL DOTLESS I
- = \imath
- x (latin small letter dotless i - 0131)
- x (mathematical italic small i - 1D456)
- # <font> 0131 latin small letter dotless i
-1D6A5 MATHEMATICAL ITALIC SMALL DOTLESS J
- = \jmath
- x (latin small letter dotless j - 0237)
- x (mathematical italic small j - 1D457)
- # <font> 0237 latin small letter dotless j
-@ Bold Greek symbols
-1D6A8 MATHEMATICAL BOLD CAPITAL ALPHA
- # <font> 0391 greek capital letter alpha
-1D6A9 MATHEMATICAL BOLD CAPITAL BETA
- # <font> 0392 greek capital letter beta
-1D6AA MATHEMATICAL BOLD CAPITAL GAMMA
- # <font> 0393 greek capital letter gamma
-1D6AB MATHEMATICAL BOLD CAPITAL DELTA
- # <font> 0394 greek capital letter delta
-1D6AC MATHEMATICAL BOLD CAPITAL EPSILON
- # <font> 0395 greek capital letter epsilon
-1D6AD MATHEMATICAL BOLD CAPITAL ZETA
- # <font> 0396 greek capital letter zeta
-1D6AE MATHEMATICAL BOLD CAPITAL ETA
- # <font> 0397 greek capital letter eta
-1D6AF MATHEMATICAL BOLD CAPITAL THETA
- # <font> 0398 greek capital letter theta
-1D6B0 MATHEMATICAL BOLD CAPITAL IOTA
- # <font> 0399 greek capital letter iota
-1D6B1 MATHEMATICAL BOLD CAPITAL KAPPA
- # <font> 039A greek capital letter kappa
-1D6B2 MATHEMATICAL BOLD CAPITAL LAMDA
- # <font> 039B greek capital letter lamda
-1D6B3 MATHEMATICAL BOLD CAPITAL MU
- # <font> 039C greek capital letter mu
-1D6B4 MATHEMATICAL BOLD CAPITAL NU
- # <font> 039D greek capital letter nu
-1D6B5 MATHEMATICAL BOLD CAPITAL XI
- # <font> 039E greek capital letter xi
-1D6B6 MATHEMATICAL BOLD CAPITAL OMICRON
- # <font> 039F greek capital letter omicron
-1D6B7 MATHEMATICAL BOLD CAPITAL PI
- # <font> 03A0 greek capital letter pi
-1D6B8 MATHEMATICAL BOLD CAPITAL RHO
- # <font> 03A1 greek capital letter rho
-1D6B9 MATHEMATICAL BOLD CAPITAL THETA SYMBOL
- # <font> 03F4 greek capital theta symbol
-1D6BA MATHEMATICAL BOLD CAPITAL SIGMA
- # <font> 03A3 greek capital letter sigma
-1D6BB MATHEMATICAL BOLD CAPITAL TAU
- # <font> 03A4 greek capital letter tau
-1D6BC MATHEMATICAL BOLD CAPITAL UPSILON
- # <font> 03A5 greek capital letter upsilon
-1D6BD MATHEMATICAL BOLD CAPITAL PHI
- # <font> 03A6 greek capital letter phi
-1D6BE MATHEMATICAL BOLD CAPITAL CHI
- # <font> 03A7 greek capital letter chi
-1D6BF MATHEMATICAL BOLD CAPITAL PSI
- # <font> 03A8 greek capital letter psi
-1D6C0 MATHEMATICAL BOLD CAPITAL OMEGA
- # <font> 03A9 greek capital letter omega
-1D6C1 MATHEMATICAL BOLD NABLA
- # <font> 2207 nabla
-1D6C2 MATHEMATICAL BOLD SMALL ALPHA
- # <font> 03B1 greek small letter alpha
-1D6C3 MATHEMATICAL BOLD SMALL BETA
- # <font> 03B2 greek small letter beta
-1D6C4 MATHEMATICAL BOLD SMALL GAMMA
- # <font> 03B3 greek small letter gamma
-1D6C5 MATHEMATICAL BOLD SMALL DELTA
- # <font> 03B4 greek small letter delta
-1D6C6 MATHEMATICAL BOLD SMALL EPSILON
- # <font> 03B5 greek small letter epsilon
-1D6C7 MATHEMATICAL BOLD SMALL ZETA
- # <font> 03B6 greek small letter zeta
-1D6C8 MATHEMATICAL BOLD SMALL ETA
- # <font> 03B7 greek small letter eta
-1D6C9 MATHEMATICAL BOLD SMALL THETA
- # <font> 03B8 greek small letter theta
-1D6CA MATHEMATICAL BOLD SMALL IOTA
- # <font> 03B9 greek small letter iota
-1D6CB MATHEMATICAL BOLD SMALL KAPPA
- # <font> 03BA greek small letter kappa
-1D6CC MATHEMATICAL BOLD SMALL LAMDA
- # <font> 03BB greek small letter lamda
-1D6CD MATHEMATICAL BOLD SMALL MU
- # <font> 03BC greek small letter mu
-1D6CE MATHEMATICAL BOLD SMALL NU
- # <font> 03BD greek small letter nu
-1D6CF MATHEMATICAL BOLD SMALL XI
- # <font> 03BE greek small letter xi
-1D6D0 MATHEMATICAL BOLD SMALL OMICRON
- # <font> 03BF greek small letter omicron
-1D6D1 MATHEMATICAL BOLD SMALL PI
- # <font> 03C0 greek small letter pi
-1D6D2 MATHEMATICAL BOLD SMALL RHO
- # <font> 03C1 greek small letter rho
-1D6D3 MATHEMATICAL BOLD SMALL FINAL SIGMA
- # <font> 03C2 greek small letter final sigma
-1D6D4 MATHEMATICAL BOLD SMALL SIGMA
- # <font> 03C3 greek small letter sigma
-1D6D5 MATHEMATICAL BOLD SMALL TAU
- # <font> 03C4 greek small letter tau
-1D6D6 MATHEMATICAL BOLD SMALL UPSILON
- # <font> 03C5 greek small letter upsilon
-1D6D7 MATHEMATICAL BOLD SMALL PHI
- # <font> 03C6 greek small letter phi
-1D6D8 MATHEMATICAL BOLD SMALL CHI
- # <font> 03C7 greek small letter chi
-1D6D9 MATHEMATICAL BOLD SMALL PSI
- # <font> 03C8 greek small letter psi
-1D6DA MATHEMATICAL BOLD SMALL OMEGA
- # <font> 03C9 greek small letter omega
-@ Additional bold Greek symbols
-1D6DB MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
- # <font> 2202 partial differential
-1D6DC MATHEMATICAL BOLD EPSILON SYMBOL
- # <font> 03F5 greek lunate epsilon symbol
-1D6DD MATHEMATICAL BOLD THETA SYMBOL
- # <font> 03D1 greek theta symbol
-1D6DE MATHEMATICAL BOLD KAPPA SYMBOL
- # <font> 03F0 greek kappa symbol
-1D6DF MATHEMATICAL BOLD PHI SYMBOL
- # <font> 03D5 greek phi symbol
-1D6E0 MATHEMATICAL BOLD RHO SYMBOL
- # <font> 03F1 greek rho symbol
-1D6E1 MATHEMATICAL BOLD PI SYMBOL
- # <font> 03D6 greek pi symbol
-@ Italic Greek symbols
-1D6E2 MATHEMATICAL ITALIC CAPITAL ALPHA
- # <font> 0391 greek capital letter alpha
-1D6E3 MATHEMATICAL ITALIC CAPITAL BETA
- # <font> 0392 greek capital letter beta
-1D6E4 MATHEMATICAL ITALIC CAPITAL GAMMA
- # <font> 0393 greek capital letter gamma
-1D6E5 MATHEMATICAL ITALIC CAPITAL DELTA
- # <font> 0394 greek capital letter delta
-1D6E6 MATHEMATICAL ITALIC CAPITAL EPSILON
- # <font> 0395 greek capital letter epsilon
-1D6E7 MATHEMATICAL ITALIC CAPITAL ZETA
- # <font> 0396 greek capital letter zeta
-1D6E8 MATHEMATICAL ITALIC CAPITAL ETA
- # <font> 0397 greek capital letter eta
-1D6E9 MATHEMATICAL ITALIC CAPITAL THETA
- # <font> 0398 greek capital letter theta
-1D6EA MATHEMATICAL ITALIC CAPITAL IOTA
- # <font> 0399 greek capital letter iota
-1D6EB MATHEMATICAL ITALIC CAPITAL KAPPA
- # <font> 039A greek capital letter kappa
-1D6EC MATHEMATICAL ITALIC CAPITAL LAMDA
- # <font> 039B greek capital letter lamda
-1D6ED MATHEMATICAL ITALIC CAPITAL MU
- # <font> 039C greek capital letter mu
-1D6EE MATHEMATICAL ITALIC CAPITAL NU
- # <font> 039D greek capital letter nu
-1D6EF MATHEMATICAL ITALIC CAPITAL XI
- # <font> 039E greek capital letter xi
-1D6F0 MATHEMATICAL ITALIC CAPITAL OMICRON
- # <font> 039F greek capital letter omicron
-1D6F1 MATHEMATICAL ITALIC CAPITAL PI
- # <font> 03A0 greek capital letter pi
-1D6F2 MATHEMATICAL ITALIC CAPITAL RHO
- # <font> 03A1 greek capital letter rho
-1D6F3 MATHEMATICAL ITALIC CAPITAL THETA SYMBOL
- # <font> 03F4 greek capital theta symbol
-1D6F4 MATHEMATICAL ITALIC CAPITAL SIGMA
- # <font> 03A3 greek capital letter sigma
-1D6F5 MATHEMATICAL ITALIC CAPITAL TAU
- # <font> 03A4 greek capital letter tau
-1D6F6 MATHEMATICAL ITALIC CAPITAL UPSILON
- # <font> 03A5 greek capital letter upsilon
-1D6F7 MATHEMATICAL ITALIC CAPITAL PHI
- # <font> 03A6 greek capital letter phi
-1D6F8 MATHEMATICAL ITALIC CAPITAL CHI
- # <font> 03A7 greek capital letter chi
-1D6F9 MATHEMATICAL ITALIC CAPITAL PSI
- # <font> 03A8 greek capital letter psi
-1D6FA MATHEMATICAL ITALIC CAPITAL OMEGA
- # <font> 03A9 greek capital letter omega
-1D6FB MATHEMATICAL ITALIC NABLA
- # <font> 2207 nabla
-1D6FC MATHEMATICAL ITALIC SMALL ALPHA
- # <font> 03B1 greek small letter alpha
-1D6FD MATHEMATICAL ITALIC SMALL BETA
- # <font> 03B2 greek small letter beta
-1D6FE MATHEMATICAL ITALIC SMALL GAMMA
- # <font> 03B3 greek small letter gamma
-1D6FF MATHEMATICAL ITALIC SMALL DELTA
- # <font> 03B4 greek small letter delta
-1D700 MATHEMATICAL ITALIC SMALL EPSILON
- # <font> 03B5 greek small letter epsilon
-1D701 MATHEMATICAL ITALIC SMALL ZETA
- # <font> 03B6 greek small letter zeta
-1D702 MATHEMATICAL ITALIC SMALL ETA
- # <font> 03B7 greek small letter eta
-1D703 MATHEMATICAL ITALIC SMALL THETA
- # <font> 03B8 greek small letter theta
-1D704 MATHEMATICAL ITALIC SMALL IOTA
- # <font> 03B9 greek small letter iota
-1D705 MATHEMATICAL ITALIC SMALL KAPPA
- # <font> 03BA greek small letter kappa
-1D706 MATHEMATICAL ITALIC SMALL LAMDA
- # <font> 03BB greek small letter lamda
-1D707 MATHEMATICAL ITALIC SMALL MU
- # <font> 03BC greek small letter mu
-1D708 MATHEMATICAL ITALIC SMALL NU
- # <font> 03BD greek small letter nu
-1D709 MATHEMATICAL ITALIC SMALL XI
- # <font> 03BE greek small letter xi
-1D70A MATHEMATICAL ITALIC SMALL OMICRON
- # <font> 03BF greek small letter omicron
-1D70B MATHEMATICAL ITALIC SMALL PI
- # <font> 03C0 greek small letter pi
-1D70C MATHEMATICAL ITALIC SMALL RHO
- # <font> 03C1 greek small letter rho
-1D70D MATHEMATICAL ITALIC SMALL FINAL SIGMA
- # <font> 03C2 greek small letter final sigma
-1D70E MATHEMATICAL ITALIC SMALL SIGMA
- # <font> 03C3 greek small letter sigma
-1D70F MATHEMATICAL ITALIC SMALL TAU
- # <font> 03C4 greek small letter tau
-1D710 MATHEMATICAL ITALIC SMALL UPSILON
- # <font> 03C5 greek small letter upsilon
-1D711 MATHEMATICAL ITALIC SMALL PHI
- # <font> 03C6 greek small letter phi
-1D712 MATHEMATICAL ITALIC SMALL CHI
- # <font> 03C7 greek small letter chi
-1D713 MATHEMATICAL ITALIC SMALL PSI
- # <font> 03C8 greek small letter psi
-1D714 MATHEMATICAL ITALIC SMALL OMEGA
- # <font> 03C9 greek small letter omega
-@ Additional italic Greek symbols
-1D715 MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
- # <font> 2202 partial differential
-1D716 MATHEMATICAL ITALIC EPSILON SYMBOL
- # <font> 03F5 greek lunate epsilon symbol
-1D717 MATHEMATICAL ITALIC THETA SYMBOL
- # <font> 03D1 greek theta symbol
-1D718 MATHEMATICAL ITALIC KAPPA SYMBOL
- # <font> 03F0 greek kappa symbol
-1D719 MATHEMATICAL ITALIC PHI SYMBOL
- # <font> 03D5 greek phi symbol
-1D71A MATHEMATICAL ITALIC RHO SYMBOL
- # <font> 03F1 greek rho symbol
-1D71B MATHEMATICAL ITALIC PI SYMBOL
- # <font> 03D6 greek pi symbol
-@ Bold italic Greek symbols
-1D71C MATHEMATICAL BOLD ITALIC CAPITAL ALPHA
- # <font> 0391 greek capital letter alpha
-1D71D MATHEMATICAL BOLD ITALIC CAPITAL BETA
- # <font> 0392 greek capital letter beta
-1D71E MATHEMATICAL BOLD ITALIC CAPITAL GAMMA
- # <font> 0393 greek capital letter gamma
-1D71F MATHEMATICAL BOLD ITALIC CAPITAL DELTA
- # <font> 0394 greek capital letter delta
-1D720 MATHEMATICAL BOLD ITALIC CAPITAL EPSILON
- # <font> 0395 greek capital letter epsilon
-1D721 MATHEMATICAL BOLD ITALIC CAPITAL ZETA
- # <font> 0396 greek capital letter zeta
-1D722 MATHEMATICAL BOLD ITALIC CAPITAL ETA
- # <font> 0397 greek capital letter eta
-1D723 MATHEMATICAL BOLD ITALIC CAPITAL THETA
- # <font> 0398 greek capital letter theta
-1D724 MATHEMATICAL BOLD ITALIC CAPITAL IOTA
- # <font> 0399 greek capital letter iota
-1D725 MATHEMATICAL BOLD ITALIC CAPITAL KAPPA
- # <font> 039A greek capital letter kappa
-1D726 MATHEMATICAL BOLD ITALIC CAPITAL LAMDA
- # <font> 039B greek capital letter lamda
-1D727 MATHEMATICAL BOLD ITALIC CAPITAL MU
- # <font> 039C greek capital letter mu
-1D728 MATHEMATICAL BOLD ITALIC CAPITAL NU
- # <font> 039D greek capital letter nu
-1D729 MATHEMATICAL BOLD ITALIC CAPITAL XI
- # <font> 039E greek capital letter xi
-1D72A MATHEMATICAL BOLD ITALIC CAPITAL OMICRON
- # <font> 039F greek capital letter omicron
-1D72B MATHEMATICAL BOLD ITALIC CAPITAL PI
- # <font> 03A0 greek capital letter pi
-1D72C MATHEMATICAL BOLD ITALIC CAPITAL RHO
- # <font> 03A1 greek capital letter rho
-1D72D MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL
- # <font> 03F4 greek capital theta symbol
-1D72E MATHEMATICAL BOLD ITALIC CAPITAL SIGMA
- # <font> 03A3 greek capital letter sigma
-1D72F MATHEMATICAL BOLD ITALIC CAPITAL TAU
- # <font> 03A4 greek capital letter tau
-1D730 MATHEMATICAL BOLD ITALIC CAPITAL UPSILON
- # <font> 03A5 greek capital letter upsilon
-1D731 MATHEMATICAL BOLD ITALIC CAPITAL PHI
- # <font> 03A6 greek capital letter phi
-1D732 MATHEMATICAL BOLD ITALIC CAPITAL CHI
- # <font> 03A7 greek capital letter chi
-1D733 MATHEMATICAL BOLD ITALIC CAPITAL PSI
- # <font> 03A8 greek capital letter psi
-1D734 MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
- # <font> 03A9 greek capital letter omega
-1D735 MATHEMATICAL BOLD ITALIC NABLA
- # <font> 2207 nabla
-1D736 MATHEMATICAL BOLD ITALIC SMALL ALPHA
- # <font> 03B1 greek small letter alpha
-1D737 MATHEMATICAL BOLD ITALIC SMALL BETA
- # <font> 03B2 greek small letter beta
-1D738 MATHEMATICAL BOLD ITALIC SMALL GAMMA
- # <font> 03B3 greek small letter gamma
-1D739 MATHEMATICAL BOLD ITALIC SMALL DELTA
- # <font> 03B4 greek small letter delta
-1D73A MATHEMATICAL BOLD ITALIC SMALL EPSILON
- # <font> 03B5 greek small letter epsilon
-1D73B MATHEMATICAL BOLD ITALIC SMALL ZETA
- # <font> 03B6 greek small letter zeta
-1D73C MATHEMATICAL BOLD ITALIC SMALL ETA
- # <font> 03B7 greek small letter eta
-1D73D MATHEMATICAL BOLD ITALIC SMALL THETA
- # <font> 03B8 greek small letter theta
-1D73E MATHEMATICAL BOLD ITALIC SMALL IOTA
- # <font> 03B9 greek small letter iota
-1D73F MATHEMATICAL BOLD ITALIC SMALL KAPPA
- # <font> 03BA greek small letter kappa
-1D740 MATHEMATICAL BOLD ITALIC SMALL LAMDA
- # <font> 03BB greek small letter lamda
-1D741 MATHEMATICAL BOLD ITALIC SMALL MU
- # <font> 03BC greek small letter mu
-1D742 MATHEMATICAL BOLD ITALIC SMALL NU
- # <font> 03BD greek small letter nu
-1D743 MATHEMATICAL BOLD ITALIC SMALL XI
- # <font> 03BE greek small letter xi
-1D744 MATHEMATICAL BOLD ITALIC SMALL OMICRON
- # <font> 03BF greek small letter omicron
-1D745 MATHEMATICAL BOLD ITALIC SMALL PI
- # <font> 03C0 greek small letter pi
-1D746 MATHEMATICAL BOLD ITALIC SMALL RHO
- # <font> 03C1 greek small letter rho
-1D747 MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA
- # <font> 03C2 greek small letter final sigma
-1D748 MATHEMATICAL BOLD ITALIC SMALL SIGMA
- # <font> 03C3 greek small letter sigma
-1D749 MATHEMATICAL BOLD ITALIC SMALL TAU
- # <font> 03C4 greek small letter tau
-1D74A MATHEMATICAL BOLD ITALIC SMALL UPSILON
- # <font> 03C5 greek small letter upsilon
-1D74B MATHEMATICAL BOLD ITALIC SMALL PHI
- # <font> 03C6 greek small letter phi
-1D74C MATHEMATICAL BOLD ITALIC SMALL CHI
- # <font> 03C7 greek small letter chi
-1D74D MATHEMATICAL BOLD ITALIC SMALL PSI
- # <font> 03C8 greek small letter psi
-1D74E MATHEMATICAL BOLD ITALIC SMALL OMEGA
- # <font> 03C9 greek small letter omega
-@ Additional bold italic Greek symbols
-1D74F MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
- # <font> 2202 partial differential
-1D750 MATHEMATICAL BOLD ITALIC EPSILON SYMBOL
- # <font> 03F5 greek lunate epsilon symbol
-1D751 MATHEMATICAL BOLD ITALIC THETA SYMBOL
- # <font> 03D1 greek theta symbol
-1D752 MATHEMATICAL BOLD ITALIC KAPPA SYMBOL
- # <font> 03F0 greek kappa symbol
-1D753 MATHEMATICAL BOLD ITALIC PHI SYMBOL
- # <font> 03D5 greek phi symbol
-1D754 MATHEMATICAL BOLD ITALIC RHO SYMBOL
- # <font> 03F1 greek rho symbol
-1D755 MATHEMATICAL BOLD ITALIC PI SYMBOL
- # <font> 03D6 greek pi symbol
-@ Sans-serif bold Greek symbols
-1D756 MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA
- # <font> 0391 greek capital letter alpha
-1D757 MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA
- # <font> 0392 greek capital letter beta
-1D758 MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA
- # <font> 0393 greek capital letter gamma
-1D759 MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA
- # <font> 0394 greek capital letter delta
-1D75A MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON
- # <font> 0395 greek capital letter epsilon
-1D75B MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA
- # <font> 0396 greek capital letter zeta
-1D75C MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA
- # <font> 0397 greek capital letter eta
-1D75D MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA
- # <font> 0398 greek capital letter theta
-1D75E MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA
- # <font> 0399 greek capital letter iota
-1D75F MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA
- # <font> 039A greek capital letter kappa
-1D760 MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA
- # <font> 039B greek capital letter lamda
-1D761 MATHEMATICAL SANS-SERIF BOLD CAPITAL MU
- # <font> 039C greek capital letter mu
-1D762 MATHEMATICAL SANS-SERIF BOLD CAPITAL NU
- # <font> 039D greek capital letter nu
-1D763 MATHEMATICAL SANS-SERIF BOLD CAPITAL XI
- # <font> 039E greek capital letter xi
-1D764 MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON
- # <font> 039F greek capital letter omicron
-1D765 MATHEMATICAL SANS-SERIF BOLD CAPITAL PI
- # <font> 03A0 greek capital letter pi
-1D766 MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO
- # <font> 03A1 greek capital letter rho
-1D767 MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL
- # <font> 03F4 greek capital theta symbol
-1D768 MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA
- # <font> 03A3 greek capital letter sigma
-1D769 MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU
- # <font> 03A4 greek capital letter tau
-1D76A MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON
- # <font> 03A5 greek capital letter upsilon
-1D76B MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI
- # <font> 03A6 greek capital letter phi
-1D76C MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI
- # <font> 03A7 greek capital letter chi
-1D76D MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI
- # <font> 03A8 greek capital letter psi
-1D76E MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
- # <font> 03A9 greek capital letter omega
-1D76F MATHEMATICAL SANS-SERIF BOLD NABLA
- # <font> 2207 nabla
-1D770 MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA
- # <font> 03B1 greek small letter alpha
-1D771 MATHEMATICAL SANS-SERIF BOLD SMALL BETA
- # <font> 03B2 greek small letter beta
-1D772 MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA
- # <font> 03B3 greek small letter gamma
-1D773 MATHEMATICAL SANS-SERIF BOLD SMALL DELTA
- # <font> 03B4 greek small letter delta
-1D774 MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON
- # <font> 03B5 greek small letter epsilon
-1D775 MATHEMATICAL SANS-SERIF BOLD SMALL ZETA
- # <font> 03B6 greek small letter zeta
-1D776 MATHEMATICAL SANS-SERIF BOLD SMALL ETA
- # <font> 03B7 greek small letter eta
-1D777 MATHEMATICAL SANS-SERIF BOLD SMALL THETA
- # <font> 03B8 greek small letter theta
-1D778 MATHEMATICAL SANS-SERIF BOLD SMALL IOTA
- # <font> 03B9 greek small letter iota
-1D779 MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA
- # <font> 03BA greek small letter kappa
-1D77A MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA
- # <font> 03BB greek small letter lamda
-1D77B MATHEMATICAL SANS-SERIF BOLD SMALL MU
- # <font> 03BC greek small letter mu
-1D77C MATHEMATICAL SANS-SERIF BOLD SMALL NU
- # <font> 03BD greek small letter nu
-1D77D MATHEMATICAL SANS-SERIF BOLD SMALL XI
- # <font> 03BE greek small letter xi
-1D77E MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON
- # <font> 03BF greek small letter omicron
-1D77F MATHEMATICAL SANS-SERIF BOLD SMALL PI
- # <font> 03C0 greek small letter pi
-1D780 MATHEMATICAL SANS-SERIF BOLD SMALL RHO
- # <font> 03C1 greek small letter rho
-1D781 MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA
- # <font> 03C2 greek small letter final sigma
-1D782 MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA
- # <font> 03C3 greek small letter sigma
-1D783 MATHEMATICAL SANS-SERIF BOLD SMALL TAU
- # <font> 03C4 greek small letter tau
-1D784 MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON
- # <font> 03C5 greek small letter upsilon
-1D785 MATHEMATICAL SANS-SERIF BOLD SMALL PHI
- # <font> 03C6 greek small letter phi
-1D786 MATHEMATICAL SANS-SERIF BOLD SMALL CHI
- # <font> 03C7 greek small letter chi
-1D787 MATHEMATICAL SANS-SERIF BOLD SMALL PSI
- # <font> 03C8 greek small letter psi
-1D788 MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
- # <font> 03C9 greek small letter omega
-@ Additional sans-serif bold Greek symbols
-1D789 MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
- # <font> 2202 partial differential
-1D78A MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL
- # <font> 03F5 greek lunate epsilon symbol
-1D78B MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL
- # <font> 03D1 greek theta symbol
-1D78C MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL
- # <font> 03F0 greek kappa symbol
-1D78D MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL
- # <font> 03D5 greek phi symbol
-1D78E MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL
- # <font> 03F1 greek rho symbol
-1D78F MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
- # <font> 03D6 greek pi symbol
-@ Sans-serif bold italic Greek symbols
-1D790 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA
- # <font> 0391 greek capital letter alpha
-1D791 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA
- # <font> 0392 greek capital letter beta
-1D792 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA
- # <font> 0393 greek capital letter gamma
-1D793 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA
- # <font> 0394 greek capital letter delta
-1D794 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON
- # <font> 0395 greek capital letter epsilon
-1D795 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA
- # <font> 0396 greek capital letter zeta
-1D796 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA
- # <font> 0397 greek capital letter eta
-1D797 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA
- # <font> 0398 greek capital letter theta
-1D798 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA
- # <font> 0399 greek capital letter iota
-1D799 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA
- # <font> 039A greek capital letter kappa
-1D79A MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA
- # <font> 039B greek capital letter lamda
-1D79B MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU
- # <font> 039C greek capital letter mu
-1D79C MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU
- # <font> 039D greek capital letter nu
-1D79D MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI
- # <font> 039E greek capital letter xi
-1D79E MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON
- # <font> 039F greek capital letter omicron
-1D79F MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI
- # <font> 03A0 greek capital letter pi
-1D7A0 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO
- # <font> 03A1 greek capital letter rho
-1D7A1 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL
- # <font> 03F4 greek capital theta symbol
-1D7A2 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA
- # <font> 03A3 greek capital letter sigma
-1D7A3 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU
- # <font> 03A4 greek capital letter tau
-1D7A4 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON
- # <font> 03A5 greek capital letter upsilon
-1D7A5 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI
- # <font> 03A6 greek capital letter phi
-1D7A6 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI
- # <font> 03A7 greek capital letter chi
-1D7A7 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI
- # <font> 03A8 greek capital letter psi
-1D7A8 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
- # <font> 03A9 greek capital letter omega
-1D7A9 MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
- # <font> 2207 nabla
-1D7AA MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA
- # <font> 03B1 greek small letter alpha
-1D7AB MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA
- # <font> 03B2 greek small letter beta
-1D7AC MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA
- # <font> 03B3 greek small letter gamma
-1D7AD MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA
- # <font> 03B4 greek small letter delta
-1D7AE MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON
- # <font> 03B5 greek small letter epsilon
-1D7AF MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA
- # <font> 03B6 greek small letter zeta
-1D7B0 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA
- # <font> 03B7 greek small letter eta
-1D7B1 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA
- # <font> 03B8 greek small letter theta
-1D7B2 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA
- # <font> 03B9 greek small letter iota
-1D7B3 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA
- # <font> 03BA greek small letter kappa
-1D7B4 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA
- # <font> 03BB greek small letter lamda
-1D7B5 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU
- # <font> 03BC greek small letter mu
-1D7B6 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU
- # <font> 03BD greek small letter nu
-1D7B7 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI
- # <font> 03BE greek small letter xi
-1D7B8 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON
- # <font> 03BF greek small letter omicron
-1D7B9 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI
- # <font> 03C0 greek small letter pi
-1D7BA MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO
- # <font> 03C1 greek small letter rho
-1D7BB MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA
- # <font> 03C2 greek small letter final sigma
-1D7BC MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA
- # <font> 03C3 greek small letter sigma
-1D7BD MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU
- # <font> 03C4 greek small letter tau
-1D7BE MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON
- # <font> 03C5 greek small letter upsilon
-1D7BF MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI
- # <font> 03C6 greek small letter phi
-1D7C0 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI
- # <font> 03C7 greek small letter chi
-1D7C1 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI
- # <font> 03C8 greek small letter psi
-1D7C2 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
- # <font> 03C9 greek small letter omega
-@ Additional sans-serif bold italic Greek symbols
-1D7C3 MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
- # <font> 2202 partial differential
-1D7C4 MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL
- # <font> 03F5 greek lunate epsilon symbol
-1D7C5 MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL
- # <font> 03D1 greek theta symbol
-1D7C6 MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL
- # <font> 03F0 greek kappa symbol
-1D7C7 MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL
- # <font> 03D5 greek phi symbol
-1D7C8 MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL
- # <font> 03F1 greek rho symbol
-1D7C9 MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
- # <font> 03D6 greek pi symbol
-@ Bold digits
-1D7CE MATHEMATICAL BOLD DIGIT ZERO
- # <font> 0030 digit zero
-1D7CF MATHEMATICAL BOLD DIGIT ONE
- # <font> 0031 digit one
-1D7D0 MATHEMATICAL BOLD DIGIT TWO
- # <font> 0032 digit two
-1D7D1 MATHEMATICAL BOLD DIGIT THREE
- # <font> 0033 digit three
-1D7D2 MATHEMATICAL BOLD DIGIT FOUR
- # <font> 0034 digit four
-1D7D3 MATHEMATICAL BOLD DIGIT FIVE
- # <font> 0035 digit five
-1D7D4 MATHEMATICAL BOLD DIGIT SIX
- # <font> 0036 digit six
-1D7D5 MATHEMATICAL BOLD DIGIT SEVEN
- # <font> 0037 digit seven
-1D7D6 MATHEMATICAL BOLD DIGIT EIGHT
- # <font> 0038 digit eight
-1D7D7 MATHEMATICAL BOLD DIGIT NINE
- # <font> 0039 digit nine
-@ Double-struck digits
-1D7D8 MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO
- # <font> 0030 digit zero
-1D7D9 MATHEMATICAL DOUBLE-STRUCK DIGIT ONE
- # <font> 0031 digit one
-1D7DA MATHEMATICAL DOUBLE-STRUCK DIGIT TWO
- # <font> 0032 digit two
-1D7DB MATHEMATICAL DOUBLE-STRUCK DIGIT THREE
- # <font> 0033 digit three
-1D7DC MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR
- # <font> 0034 digit four
-1D7DD MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE
- # <font> 0035 digit five
-1D7DE MATHEMATICAL DOUBLE-STRUCK DIGIT SIX
- # <font> 0036 digit six
-1D7DF MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN
- # <font> 0037 digit seven
-1D7E0 MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT
- # <font> 0038 digit eight
-1D7E1 MATHEMATICAL DOUBLE-STRUCK DIGIT NINE
- # <font> 0039 digit nine
-@ Sans-serif digits
-1D7E2 MATHEMATICAL SANS-SERIF DIGIT ZERO
- # <font> 0030 digit zero
-1D7E3 MATHEMATICAL SANS-SERIF DIGIT ONE
- # <font> 0031 digit one
-1D7E4 MATHEMATICAL SANS-SERIF DIGIT TWO
- # <font> 0032 digit two
-1D7E5 MATHEMATICAL SANS-SERIF DIGIT THREE
- # <font> 0033 digit three
-1D7E6 MATHEMATICAL SANS-SERIF DIGIT FOUR
- # <font> 0034 digit four
-1D7E7 MATHEMATICAL SANS-SERIF DIGIT FIVE
- # <font> 0035 digit five
-1D7E8 MATHEMATICAL SANS-SERIF DIGIT SIX
- # <font> 0036 digit six
-1D7E9 MATHEMATICAL SANS-SERIF DIGIT SEVEN
- # <font> 0037 digit seven
-1D7EA MATHEMATICAL SANS-SERIF DIGIT EIGHT
- # <font> 0038 digit eight
-1D7EB MATHEMATICAL SANS-SERIF DIGIT NINE
- # <font> 0039 digit nine
-@ Sans-serif bold digits
-1D7EC MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO
- # <font> 0030 digit zero
-1D7ED MATHEMATICAL SANS-SERIF BOLD DIGIT ONE
- # <font> 0031 digit one
-1D7EE MATHEMATICAL SANS-SERIF BOLD DIGIT TWO
- # <font> 0032 digit two
-1D7EF MATHEMATICAL SANS-SERIF BOLD DIGIT THREE
- # <font> 0033 digit three
-1D7F0 MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR
- # <font> 0034 digit four
-1D7F1 MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE
- # <font> 0035 digit five
-1D7F2 MATHEMATICAL SANS-SERIF BOLD DIGIT SIX
- # <font> 0036 digit six
-1D7F3 MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN
- # <font> 0037 digit seven
-1D7F4 MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT
- # <font> 0038 digit eight
-1D7F5 MATHEMATICAL SANS-SERIF BOLD DIGIT NINE
- # <font> 0039 digit nine
-@ Monospace digits
-1D7F6 MATHEMATICAL MONOSPACE DIGIT ZERO
- # <font> 0030 digit zero
-1D7F7 MATHEMATICAL MONOSPACE DIGIT ONE
- # <font> 0031 digit one
-1D7F8 MATHEMATICAL MONOSPACE DIGIT TWO
- # <font> 0032 digit two
-1D7F9 MATHEMATICAL MONOSPACE DIGIT THREE
- # <font> 0033 digit three
-1D7FA MATHEMATICAL MONOSPACE DIGIT FOUR
- # <font> 0034 digit four
-1D7FB MATHEMATICAL MONOSPACE DIGIT FIVE
- # <font> 0035 digit five
-1D7FC MATHEMATICAL MONOSPACE DIGIT SIX
- # <font> 0036 digit six
-1D7FD MATHEMATICAL MONOSPACE DIGIT SEVEN
- # <font> 0037 digit seven
-1D7FE MATHEMATICAL MONOSPACE DIGIT EIGHT
- # <font> 0038 digit eight
-1D7FF MATHEMATICAL MONOSPACE DIGIT NINE
- # <font> 0039 digit nine
-@@ 1FF80 Unassigned 1FFFF
-@ Not character codes
-@+ These codes are intended for process internal uses, but are not permitted for interchange.
-1FFFE <not a character>
- * the value 1FFFE is guaranteed not to be a Unicode character at all
-1FFFF <not a character>
- * the value 1FFFF is guaranteed not to be a Unicode character at all
-@@ 20000 CJK Unified Ideographs Extension B 2A6D6
-@@ 2F800 CJK Compatibility Ideographs Supplement 2FA1F
-@ Duplicate characters from CNS 11643-1992
-2F800 CJK COMPATIBILITY IDEOGRAPH-2F800
- : 4E3D
-2F801 CJK COMPATIBILITY IDEOGRAPH-2F801
- : 4E38
-2F802 CJK COMPATIBILITY IDEOGRAPH-2F802
- : 4E41
-2F803 CJK COMPATIBILITY IDEOGRAPH-2F803
- : 20122
-2F804 CJK COMPATIBILITY IDEOGRAPH-2F804
- : 4F60
-2F805 CJK COMPATIBILITY IDEOGRAPH-2F805
- : 4FAE
-2F806 CJK COMPATIBILITY IDEOGRAPH-2F806
- : 4FBB
-2F807 CJK COMPATIBILITY IDEOGRAPH-2F807
- : 5002
-2F808 CJK COMPATIBILITY IDEOGRAPH-2F808
- : 507A
-2F809 CJK COMPATIBILITY IDEOGRAPH-2F809
- : 5099
-2F80A CJK COMPATIBILITY IDEOGRAPH-2F80A
- : 50E7
-2F80B CJK COMPATIBILITY IDEOGRAPH-2F80B
- : 50CF
-2F80C CJK COMPATIBILITY IDEOGRAPH-2F80C
- : 349E
-2F80D CJK COMPATIBILITY IDEOGRAPH-2F80D
- x 5145
- : 2063A
-2F80E CJK COMPATIBILITY IDEOGRAPH-2F80E
- : 514D
-2F80F CJK COMPATIBILITY IDEOGRAPH-2F80F
- : 5154
-2F810 CJK COMPATIBILITY IDEOGRAPH-2F810
- : 5164
-2F811 CJK COMPATIBILITY IDEOGRAPH-2F811
- : 5177
-2F812 CJK COMPATIBILITY IDEOGRAPH-2F812
- : 2051C
-2F813 CJK COMPATIBILITY IDEOGRAPH-2F813
- : 34B9
-2F814 CJK COMPATIBILITY IDEOGRAPH-2F814
- x 5185
- : 5167
-2F815 CJK COMPATIBILITY IDEOGRAPH-2F815
- : 518D
-2F816 CJK COMPATIBILITY IDEOGRAPH-2F816
- : 2054B
-2F817 CJK COMPATIBILITY IDEOGRAPH-2F817
- : 5197
-2F818 CJK COMPATIBILITY IDEOGRAPH-2F818
- : 51A4
-2F819 CJK COMPATIBILITY IDEOGRAPH-2F819
- : 4ECC
-2F81A CJK COMPATIBILITY IDEOGRAPH-2F81A
- : 51AC
-2F81B CJK COMPATIBILITY IDEOGRAPH-2F81B
- : 51B5
-2F81C CJK COMPATIBILITY IDEOGRAPH-2F81C
- : 291DF
-2F81D CJK COMPATIBILITY IDEOGRAPH-2F81D
- : 51F5
-2F81E CJK COMPATIBILITY IDEOGRAPH-2F81E
- : 5203
-2F81F CJK COMPATIBILITY IDEOGRAPH-2F81F
- : 34DF
-2F820 CJK COMPATIBILITY IDEOGRAPH-2F820
- : 523B
-2F821 CJK COMPATIBILITY IDEOGRAPH-2F821
- : 5246
-2F822 CJK COMPATIBILITY IDEOGRAPH-2F822
- : 5272
-2F823 CJK COMPATIBILITY IDEOGRAPH-2F823
- : 5277
-2F824 CJK COMPATIBILITY IDEOGRAPH-2F824
- : 3515
-2F825 CJK COMPATIBILITY IDEOGRAPH-2F825
- : 52C7
-2F826 CJK COMPATIBILITY IDEOGRAPH-2F826
- : 52C9
-2F827 CJK COMPATIBILITY IDEOGRAPH-2F827
- : 52E4
-2F828 CJK COMPATIBILITY IDEOGRAPH-2F828
- : 52FA
-2F829 CJK COMPATIBILITY IDEOGRAPH-2F829
- : 5305
-2F82A CJK COMPATIBILITY IDEOGRAPH-2F82A
- : 5306
-2F82B CJK COMPATIBILITY IDEOGRAPH-2F82B
- : 5317
-2F82C CJK COMPATIBILITY IDEOGRAPH-2F82C
- : 5349
-2F82D CJK COMPATIBILITY IDEOGRAPH-2F82D
- : 5351
-2F82E CJK COMPATIBILITY IDEOGRAPH-2F82E
- : 535A
-2F82F CJK COMPATIBILITY IDEOGRAPH-2F82F
- : 5373
-2F830 CJK COMPATIBILITY IDEOGRAPH-2F830
- : 537D
-2F831 CJK COMPATIBILITY IDEOGRAPH-2F831
- : 537F
-2F832 CJK COMPATIBILITY IDEOGRAPH-2F832
- : 537F
-2F833 CJK COMPATIBILITY IDEOGRAPH-2F833
- : 537F
-2F834 CJK COMPATIBILITY IDEOGRAPH-2F834
- : 20A2C
-2F835 CJK COMPATIBILITY IDEOGRAPH-2F835
- : 7070
-2F836 CJK COMPATIBILITY IDEOGRAPH-2F836
- : 53CA
-2F837 CJK COMPATIBILITY IDEOGRAPH-2F837
- : 53DF
-2F838 CJK COMPATIBILITY IDEOGRAPH-2F838
- : 20B63
-2F839 CJK COMPATIBILITY IDEOGRAPH-2F839
- : 53EB
-2F83A CJK COMPATIBILITY IDEOGRAPH-2F83A
- : 53F1
-2F83B CJK COMPATIBILITY IDEOGRAPH-2F83B
- : 5406
-2F83C CJK COMPATIBILITY IDEOGRAPH-2F83C
- : 549E
-2F83D CJK COMPATIBILITY IDEOGRAPH-2F83D
- : 5438
-2F83E CJK COMPATIBILITY IDEOGRAPH-2F83E
- : 5448
-2F83F CJK COMPATIBILITY IDEOGRAPH-2F83F
- : 5468
-2F840 CJK COMPATIBILITY IDEOGRAPH-2F840
- : 54A2
-2F841 CJK COMPATIBILITY IDEOGRAPH-2F841
- : 54F6
-2F842 CJK COMPATIBILITY IDEOGRAPH-2F842
- : 5510
-2F843 CJK COMPATIBILITY IDEOGRAPH-2F843
- : 5553
-2F844 CJK COMPATIBILITY IDEOGRAPH-2F844
- : 5563
-2F845 CJK COMPATIBILITY IDEOGRAPH-2F845
- : 5584
-2F846 CJK COMPATIBILITY IDEOGRAPH-2F846
- : 5584
-2F847 CJK COMPATIBILITY IDEOGRAPH-2F847
- : 5599
-2F848 CJK COMPATIBILITY IDEOGRAPH-2F848
- : 55AB
-2F849 CJK COMPATIBILITY IDEOGRAPH-2F849
- : 55B3
-2F84A CJK COMPATIBILITY IDEOGRAPH-2F84A
- : 55C2
-2F84B CJK COMPATIBILITY IDEOGRAPH-2F84B
- : 5716
-2F84C CJK COMPATIBILITY IDEOGRAPH-2F84C
- : 5606
-2F84D CJK COMPATIBILITY IDEOGRAPH-2F84D
- : 5717
-2F84E CJK COMPATIBILITY IDEOGRAPH-2F84E
- : 5651
-2F84F CJK COMPATIBILITY IDEOGRAPH-2F84F
- : 5674
-2F850 CJK COMPATIBILITY IDEOGRAPH-2F850
- : 5207
-2F851 CJK COMPATIBILITY IDEOGRAPH-2F851
- : 58EE
-2F852 CJK COMPATIBILITY IDEOGRAPH-2F852
- : 57CE
-2F853 CJK COMPATIBILITY IDEOGRAPH-2F853
- : 57F4
-2F854 CJK COMPATIBILITY IDEOGRAPH-2F854
- : 580D
-2F855 CJK COMPATIBILITY IDEOGRAPH-2F855
- : 578B
-2F856 CJK COMPATIBILITY IDEOGRAPH-2F856
- : 5832
-2F857 CJK COMPATIBILITY IDEOGRAPH-2F857
- : 5831
-2F858 CJK COMPATIBILITY IDEOGRAPH-2F858
- : 58AC
-2F859 CJK COMPATIBILITY IDEOGRAPH-2F859
- : 214E4
-2F85A CJK COMPATIBILITY IDEOGRAPH-2F85A
- x 58F3
- : 58F2
-2F85B CJK COMPATIBILITY IDEOGRAPH-2F85B
- x 21533
- : 58F7
-2F85C CJK COMPATIBILITY IDEOGRAPH-2F85C
- : 5906
-2F85D CJK COMPATIBILITY IDEOGRAPH-2F85D
- : 591A
-2F85E CJK COMPATIBILITY IDEOGRAPH-2F85E
- : 5922
-2F85F CJK COMPATIBILITY IDEOGRAPH-2F85F
- : 5962
-2F860 CJK COMPATIBILITY IDEOGRAPH-2F860
- : 216A8
-2F861 CJK COMPATIBILITY IDEOGRAPH-2F861
- : 216EA
-2F862 CJK COMPATIBILITY IDEOGRAPH-2F862
- : 59EC
-2F863 CJK COMPATIBILITY IDEOGRAPH-2F863
- : 5A1B
-2F864 CJK COMPATIBILITY IDEOGRAPH-2F864
- : 5A27
-2F865 CJK COMPATIBILITY IDEOGRAPH-2F865
- : 59D8
-2F866 CJK COMPATIBILITY IDEOGRAPH-2F866
- : 5A66
-2F867 CJK COMPATIBILITY IDEOGRAPH-2F867
- : 36EE
-2F868 CJK COMPATIBILITY IDEOGRAPH-2F868
- : 36FC
-2F869 CJK COMPATIBILITY IDEOGRAPH-2F869
- : 5B08
-2F86A CJK COMPATIBILITY IDEOGRAPH-2F86A
- : 5B3E
-2F86B CJK COMPATIBILITY IDEOGRAPH-2F86B
- : 5B3E
-2F86C CJK COMPATIBILITY IDEOGRAPH-2F86C
- : 219C8
-2F86D CJK COMPATIBILITY IDEOGRAPH-2F86D
- : 5BC3
-2F86E CJK COMPATIBILITY IDEOGRAPH-2F86E
- : 5BD8
-2F86F CJK COMPATIBILITY IDEOGRAPH-2F86F
- : 5BE7
-2F870 CJK COMPATIBILITY IDEOGRAPH-2F870
- : 5BF3
-2F871 CJK COMPATIBILITY IDEOGRAPH-2F871
- : 21B18
-2F872 CJK COMPATIBILITY IDEOGRAPH-2F872
- : 5BFF
-2F873 CJK COMPATIBILITY IDEOGRAPH-2F873
- : 5C06
-2F874 CJK COMPATIBILITY IDEOGRAPH-2F874
- : 5F53
-2F875 CJK COMPATIBILITY IDEOGRAPH-2F875
- : 5C22
-2F876 CJK COMPATIBILITY IDEOGRAPH-2F876
- : 3781
-2F877 CJK COMPATIBILITY IDEOGRAPH-2F877
- : 5C60
-2F878 CJK COMPATIBILITY IDEOGRAPH-2F878
- : 5C6E
-2F879 CJK COMPATIBILITY IDEOGRAPH-2F879
- : 5CC0
-2F87A CJK COMPATIBILITY IDEOGRAPH-2F87A
- : 5C8D
-2F87B CJK COMPATIBILITY IDEOGRAPH-2F87B
- : 21DE4
-2F87C CJK COMPATIBILITY IDEOGRAPH-2F87C
- : 5D43
-2F87D CJK COMPATIBILITY IDEOGRAPH-2F87D
- : 21DE6
-2F87E CJK COMPATIBILITY IDEOGRAPH-2F87E
- : 5D6E
-2F87F CJK COMPATIBILITY IDEOGRAPH-2F87F
- : 5D6B
-2F880 CJK COMPATIBILITY IDEOGRAPH-2F880
- : 5D7C
-2F881 CJK COMPATIBILITY IDEOGRAPH-2F881
- : 5DE1
-2F882 CJK COMPATIBILITY IDEOGRAPH-2F882
- : 5DE2
-2F883 CJK COMPATIBILITY IDEOGRAPH-2F883
- : 382F
-2F884 CJK COMPATIBILITY IDEOGRAPH-2F884
- : 5DFD
-2F885 CJK COMPATIBILITY IDEOGRAPH-2F885
- : 5E28
-2F886 CJK COMPATIBILITY IDEOGRAPH-2F886
- : 5E3D
-2F887 CJK COMPATIBILITY IDEOGRAPH-2F887
- : 5E69
-2F888 CJK COMPATIBILITY IDEOGRAPH-2F888
- : 3862
-2F889 CJK COMPATIBILITY IDEOGRAPH-2F889
- : 22183
-2F88A CJK COMPATIBILITY IDEOGRAPH-2F88A
- : 387C
-2F88B CJK COMPATIBILITY IDEOGRAPH-2F88B
- : 5EB0
-2F88C CJK COMPATIBILITY IDEOGRAPH-2F88C
- : 5EB3
-2F88D CJK COMPATIBILITY IDEOGRAPH-2F88D
- : 5EB6
-2F88E CJK COMPATIBILITY IDEOGRAPH-2F88E
- : 5ECA
-2F88F CJK COMPATIBILITY IDEOGRAPH-2F88F
- : 2A392
-2F890 CJK COMPATIBILITY IDEOGRAPH-2F890
- : 5EFE
-2F891 CJK COMPATIBILITY IDEOGRAPH-2F891
- : 22331
-2F892 CJK COMPATIBILITY IDEOGRAPH-2F892
- : 22331
-2F893 CJK COMPATIBILITY IDEOGRAPH-2F893
- : 8201
-2F894 CJK COMPATIBILITY IDEOGRAPH-2F894
- : 5F22
-2F895 CJK COMPATIBILITY IDEOGRAPH-2F895
- : 5F22
-2F896 CJK COMPATIBILITY IDEOGRAPH-2F896
- : 38C7
-2F897 CJK COMPATIBILITY IDEOGRAPH-2F897
- : 232B8
-2F898 CJK COMPATIBILITY IDEOGRAPH-2F898
- : 261DA
-2F899 CJK COMPATIBILITY IDEOGRAPH-2F899
- : 5F62
-2F89A CJK COMPATIBILITY IDEOGRAPH-2F89A
- : 5F6B
-2F89B CJK COMPATIBILITY IDEOGRAPH-2F89B
- : 38E3
-2F89C CJK COMPATIBILITY IDEOGRAPH-2F89C
- x 22505
- : 5F9A
-2F89D CJK COMPATIBILITY IDEOGRAPH-2F89D
- : 5FCD
-2F89E CJK COMPATIBILITY IDEOGRAPH-2F89E
- : 5FD7
-2F89F CJK COMPATIBILITY IDEOGRAPH-2F89F
- : 5FF9
-2F8A0 CJK COMPATIBILITY IDEOGRAPH-2F8A0
- : 6081
-2F8A1 CJK COMPATIBILITY IDEOGRAPH-2F8A1
- : 393A
-2F8A2 CJK COMPATIBILITY IDEOGRAPH-2F8A2
- : 391C
-2F8A3 CJK COMPATIBILITY IDEOGRAPH-2F8A3
- : 6094
-2F8A4 CJK COMPATIBILITY IDEOGRAPH-2F8A4
- : 226D4
-2F8A5 CJK COMPATIBILITY IDEOGRAPH-2F8A5
- : 60C7
-2F8A6 CJK COMPATIBILITY IDEOGRAPH-2F8A6
- : 6148
-2F8A7 CJK COMPATIBILITY IDEOGRAPH-2F8A7
- : 614C
-2F8A8 CJK COMPATIBILITY IDEOGRAPH-2F8A8
- : 614E
-2F8A9 CJK COMPATIBILITY IDEOGRAPH-2F8A9
- : 614C
-2F8AA CJK COMPATIBILITY IDEOGRAPH-2F8AA
- : 617A
-2F8AB CJK COMPATIBILITY IDEOGRAPH-2F8AB
- : 618E
-2F8AC CJK COMPATIBILITY IDEOGRAPH-2F8AC
- : 61B2
-2F8AD CJK COMPATIBILITY IDEOGRAPH-2F8AD
- : 61A4
-2F8AE CJK COMPATIBILITY IDEOGRAPH-2F8AE
- : 61AF
-2F8AF CJK COMPATIBILITY IDEOGRAPH-2F8AF
- : 61DE
-2F8B0 CJK COMPATIBILITY IDEOGRAPH-2F8B0
- : 61F2
-2F8B1 CJK COMPATIBILITY IDEOGRAPH-2F8B1
- : 61F6
-2F8B2 CJK COMPATIBILITY IDEOGRAPH-2F8B2
- : 6210
-2F8B3 CJK COMPATIBILITY IDEOGRAPH-2F8B3
- : 621B
-2F8B4 CJK COMPATIBILITY IDEOGRAPH-2F8B4
- : 625D
-2F8B5 CJK COMPATIBILITY IDEOGRAPH-2F8B5
- : 62B1
-2F8B6 CJK COMPATIBILITY IDEOGRAPH-2F8B6
- : 62D4
-2F8B7 CJK COMPATIBILITY IDEOGRAPH-2F8B7
- : 6350
-2F8B8 CJK COMPATIBILITY IDEOGRAPH-2F8B8
- : 22B0C
-2F8B9 CJK COMPATIBILITY IDEOGRAPH-2F8B9
- : 633D
-2F8BA CJK COMPATIBILITY IDEOGRAPH-2F8BA
- : 62FC
-2F8BB CJK COMPATIBILITY IDEOGRAPH-2F8BB
- : 6368
-2F8BC CJK COMPATIBILITY IDEOGRAPH-2F8BC
- : 6383
-2F8BD CJK COMPATIBILITY IDEOGRAPH-2F8BD
- : 63E4
-2F8BE CJK COMPATIBILITY IDEOGRAPH-2F8BE
- : 22BF1
-2F8BF CJK COMPATIBILITY IDEOGRAPH-2F8BF
- : 6422
-2F8C0 CJK COMPATIBILITY IDEOGRAPH-2F8C0
- : 63C5
-2F8C1 CJK COMPATIBILITY IDEOGRAPH-2F8C1
- : 63A9
-2F8C2 CJK COMPATIBILITY IDEOGRAPH-2F8C2
- : 3A2E
-2F8C3 CJK COMPATIBILITY IDEOGRAPH-2F8C3
- : 6469
-2F8C4 CJK COMPATIBILITY IDEOGRAPH-2F8C4
- : 647E
-2F8C5 CJK COMPATIBILITY IDEOGRAPH-2F8C5
- : 649D
-2F8C6 CJK COMPATIBILITY IDEOGRAPH-2F8C6
- : 6477
-2F8C7 CJK COMPATIBILITY IDEOGRAPH-2F8C7
- : 3A6C
-2F8C8 CJK COMPATIBILITY IDEOGRAPH-2F8C8
- : 654F
-2F8C9 CJK COMPATIBILITY IDEOGRAPH-2F8C9
- : 656C
-2F8CA CJK COMPATIBILITY IDEOGRAPH-2F8CA
- : 2300A
-2F8CB CJK COMPATIBILITY IDEOGRAPH-2F8CB
- : 65E3
-2F8CC CJK COMPATIBILITY IDEOGRAPH-2F8CC
- : 66F8
-2F8CD CJK COMPATIBILITY IDEOGRAPH-2F8CD
- : 6649
-2F8CE CJK COMPATIBILITY IDEOGRAPH-2F8CE
- : 3B19
-2F8CF CJK COMPATIBILITY IDEOGRAPH-2F8CF
- : 6691
-2F8D0 CJK COMPATIBILITY IDEOGRAPH-2F8D0
- : 3B08
-2F8D1 CJK COMPATIBILITY IDEOGRAPH-2F8D1
- : 3AE4
-2F8D2 CJK COMPATIBILITY IDEOGRAPH-2F8D2
- : 5192
-2F8D3 CJK COMPATIBILITY IDEOGRAPH-2F8D3
- : 5195
-2F8D4 CJK COMPATIBILITY IDEOGRAPH-2F8D4
- : 6700
-2F8D5 CJK COMPATIBILITY IDEOGRAPH-2F8D5
- : 669C
-2F8D6 CJK COMPATIBILITY IDEOGRAPH-2F8D6
- : 80AD
-2F8D7 CJK COMPATIBILITY IDEOGRAPH-2F8D7
- : 43D9
-2F8D8 CJK COMPATIBILITY IDEOGRAPH-2F8D8
- : 6717
-2F8D9 CJK COMPATIBILITY IDEOGRAPH-2F8D9
- : 671B
-2F8DA CJK COMPATIBILITY IDEOGRAPH-2F8DA
- : 6721
-2F8DB CJK COMPATIBILITY IDEOGRAPH-2F8DB
- : 675E
-2F8DC CJK COMPATIBILITY IDEOGRAPH-2F8DC
- : 6753
-2F8DD CJK COMPATIBILITY IDEOGRAPH-2F8DD
- : 233C3
-2F8DE CJK COMPATIBILITY IDEOGRAPH-2F8DE
- : 3B49
-2F8DF CJK COMPATIBILITY IDEOGRAPH-2F8DF
- : 67FA
-2F8E0 CJK COMPATIBILITY IDEOGRAPH-2F8E0
- : 6785
-2F8E1 CJK COMPATIBILITY IDEOGRAPH-2F8E1
- : 6852
-2F8E2 CJK COMPATIBILITY IDEOGRAPH-2F8E2
- : 6885
-2F8E3 CJK COMPATIBILITY IDEOGRAPH-2F8E3
- : 2346D
-2F8E4 CJK COMPATIBILITY IDEOGRAPH-2F8E4
- : 688E
-2F8E5 CJK COMPATIBILITY IDEOGRAPH-2F8E5
- : 681F
-2F8E6 CJK COMPATIBILITY IDEOGRAPH-2F8E6
- : 6914
-2F8E7 CJK COMPATIBILITY IDEOGRAPH-2F8E7
- : 3B9D
-2F8E8 CJK COMPATIBILITY IDEOGRAPH-2F8E8
- : 6942
-2F8E9 CJK COMPATIBILITY IDEOGRAPH-2F8E9
- : 69A3
-2F8EA CJK COMPATIBILITY IDEOGRAPH-2F8EA
- : 69EA
-2F8EB CJK COMPATIBILITY IDEOGRAPH-2F8EB
- : 6AA8
-2F8EC CJK COMPATIBILITY IDEOGRAPH-2F8EC
- : 236A3
-2F8ED CJK COMPATIBILITY IDEOGRAPH-2F8ED
- : 6ADB
-2F8EE CJK COMPATIBILITY IDEOGRAPH-2F8EE
- : 3C18
-2F8EF CJK COMPATIBILITY IDEOGRAPH-2F8EF
- : 6B21
-2F8F0 CJK COMPATIBILITY IDEOGRAPH-2F8F0
- : 238A7
-2F8F1 CJK COMPATIBILITY IDEOGRAPH-2F8F1
- : 6B54
-2F8F2 CJK COMPATIBILITY IDEOGRAPH-2F8F2
- : 3C4E
-2F8F3 CJK COMPATIBILITY IDEOGRAPH-2F8F3
- : 6B72
-2F8F4 CJK COMPATIBILITY IDEOGRAPH-2F8F4
- : 6B9F
-2F8F5 CJK COMPATIBILITY IDEOGRAPH-2F8F5
- : 6BBA
-2F8F6 CJK COMPATIBILITY IDEOGRAPH-2F8F6
- : 6BBB
-2F8F7 CJK COMPATIBILITY IDEOGRAPH-2F8F7
- : 23A8D
-2F8F8 CJK COMPATIBILITY IDEOGRAPH-2F8F8
- : 21D0B
-2F8F9 CJK COMPATIBILITY IDEOGRAPH-2F8F9
- : 23AFA
-2F8FA CJK COMPATIBILITY IDEOGRAPH-2F8FA
- : 6C4E
-2F8FB CJK COMPATIBILITY IDEOGRAPH-2F8FB
- : 23CBC
-2F8FC CJK COMPATIBILITY IDEOGRAPH-2F8FC
- : 6CBF
-2F8FD CJK COMPATIBILITY IDEOGRAPH-2F8FD
- : 6CCD
-2F8FE CJK COMPATIBILITY IDEOGRAPH-2F8FE
- : 6C67
-2F8FF CJK COMPATIBILITY IDEOGRAPH-2F8FF
- : 6D16
-2F900 CJK COMPATIBILITY IDEOGRAPH-2F900
- : 6D3E
-2F901 CJK COMPATIBILITY IDEOGRAPH-2F901
- : 6D77
-2F902 CJK COMPATIBILITY IDEOGRAPH-2F902
- : 6D41
-2F903 CJK COMPATIBILITY IDEOGRAPH-2F903
- : 6D69
-2F904 CJK COMPATIBILITY IDEOGRAPH-2F904
- : 6D78
-2F905 CJK COMPATIBILITY IDEOGRAPH-2F905
- : 6D85
-2F906 CJK COMPATIBILITY IDEOGRAPH-2F906
- : 23D1E
-2F907 CJK COMPATIBILITY IDEOGRAPH-2F907
- : 6D34
-2F908 CJK COMPATIBILITY IDEOGRAPH-2F908
- : 6E2F
-2F909 CJK COMPATIBILITY IDEOGRAPH-2F909
- : 6E6E
-2F90A CJK COMPATIBILITY IDEOGRAPH-2F90A
- : 3D33
-2F90B CJK COMPATIBILITY IDEOGRAPH-2F90B
- : 6ECB
-2F90C CJK COMPATIBILITY IDEOGRAPH-2F90C
- : 6EC7
-2F90D CJK COMPATIBILITY IDEOGRAPH-2F90D
- : 23ED1
-2F90E CJK COMPATIBILITY IDEOGRAPH-2F90E
- : 6DF9
-2F90F CJK COMPATIBILITY IDEOGRAPH-2F90F
- : 6F6E
-2F910 CJK COMPATIBILITY IDEOGRAPH-2F910
- : 23F5E
-2F911 CJK COMPATIBILITY IDEOGRAPH-2F911
- : 23F8E
-2F912 CJK COMPATIBILITY IDEOGRAPH-2F912
- : 6FC6
-2F913 CJK COMPATIBILITY IDEOGRAPH-2F913
- : 7039
-2F914 CJK COMPATIBILITY IDEOGRAPH-2F914
- : 701E
-2F915 CJK COMPATIBILITY IDEOGRAPH-2F915
- : 701B
-2F916 CJK COMPATIBILITY IDEOGRAPH-2F916
- : 3D96
-2F917 CJK COMPATIBILITY IDEOGRAPH-2F917
- : 704A
-2F918 CJK COMPATIBILITY IDEOGRAPH-2F918
- : 707D
-2F919 CJK COMPATIBILITY IDEOGRAPH-2F919
- : 7077
-2F91A CJK COMPATIBILITY IDEOGRAPH-2F91A
- : 70AD
-2F91B CJK COMPATIBILITY IDEOGRAPH-2F91B
- : 20525
-2F91C CJK COMPATIBILITY IDEOGRAPH-2F91C
- : 7145
-2F91D CJK COMPATIBILITY IDEOGRAPH-2F91D
- : 24263
-2F91E CJK COMPATIBILITY IDEOGRAPH-2F91E
- : 719C
-2F91F CJK COMPATIBILITY IDEOGRAPH-2F91F
- : 243AB
-2F920 CJK COMPATIBILITY IDEOGRAPH-2F920
- : 7228
-2F921 CJK COMPATIBILITY IDEOGRAPH-2F921
- : 7235
-2F922 CJK COMPATIBILITY IDEOGRAPH-2F922
- : 7250
-2F923 CJK COMPATIBILITY IDEOGRAPH-2F923
- : 24608
-2F924 CJK COMPATIBILITY IDEOGRAPH-2F924
- : 7280
-2F925 CJK COMPATIBILITY IDEOGRAPH-2F925
- : 7295
-2F926 CJK COMPATIBILITY IDEOGRAPH-2F926
- : 24735
-2F927 CJK COMPATIBILITY IDEOGRAPH-2F927
- : 24814
-2F928 CJK COMPATIBILITY IDEOGRAPH-2F928
- : 737A
-2F929 CJK COMPATIBILITY IDEOGRAPH-2F929
- : 738B
-2F92A CJK COMPATIBILITY IDEOGRAPH-2F92A
- : 3EAC
-2F92B CJK COMPATIBILITY IDEOGRAPH-2F92B
- : 73A5
-2F92C CJK COMPATIBILITY IDEOGRAPH-2F92C
- : 3EB8
-2F92D CJK COMPATIBILITY IDEOGRAPH-2F92D
- : 3EB8
-2F92E CJK COMPATIBILITY IDEOGRAPH-2F92E
- : 7447
-2F92F CJK COMPATIBILITY IDEOGRAPH-2F92F
- : 745C
-2F930 CJK COMPATIBILITY IDEOGRAPH-2F930
- : 7471
-2F931 CJK COMPATIBILITY IDEOGRAPH-2F931
- : 7485
-2F932 CJK COMPATIBILITY IDEOGRAPH-2F932
- : 74CA
-2F933 CJK COMPATIBILITY IDEOGRAPH-2F933
- : 3F1B
-2F934 CJK COMPATIBILITY IDEOGRAPH-2F934
- : 7524
-2F935 CJK COMPATIBILITY IDEOGRAPH-2F935
- : 24C36
-2F936 CJK COMPATIBILITY IDEOGRAPH-2F936
- : 753E
-2F937 CJK COMPATIBILITY IDEOGRAPH-2F937
- : 24C92
-2F938 CJK COMPATIBILITY IDEOGRAPH-2F938
- : 7570
-2F939 CJK COMPATIBILITY IDEOGRAPH-2F939
- : 2219F
-2F93A CJK COMPATIBILITY IDEOGRAPH-2F93A
- : 7610
-2F93B CJK COMPATIBILITY IDEOGRAPH-2F93B
- : 24FA1
-2F93C CJK COMPATIBILITY IDEOGRAPH-2F93C
- : 24FB8
-2F93D CJK COMPATIBILITY IDEOGRAPH-2F93D
- : 25044
-2F93E CJK COMPATIBILITY IDEOGRAPH-2F93E
- : 3FFC
-2F93F CJK COMPATIBILITY IDEOGRAPH-2F93F
- : 4008
-2F940 CJK COMPATIBILITY IDEOGRAPH-2F940
- : 76F4
-2F941 CJK COMPATIBILITY IDEOGRAPH-2F941
- : 250F3
-2F942 CJK COMPATIBILITY IDEOGRAPH-2F942
- : 250F2
-2F943 CJK COMPATIBILITY IDEOGRAPH-2F943
- : 25119
-2F944 CJK COMPATIBILITY IDEOGRAPH-2F944
- : 25133
-2F945 CJK COMPATIBILITY IDEOGRAPH-2F945
- : 771E
-2F946 CJK COMPATIBILITY IDEOGRAPH-2F946
- : 771F
-2F947 CJK COMPATIBILITY IDEOGRAPH-2F947
- : 771F
-2F948 CJK COMPATIBILITY IDEOGRAPH-2F948
- : 774A
-2F949 CJK COMPATIBILITY IDEOGRAPH-2F949
- : 4039
-2F94A CJK COMPATIBILITY IDEOGRAPH-2F94A
- : 778B
-2F94B CJK COMPATIBILITY IDEOGRAPH-2F94B
- : 4046
-2F94C CJK COMPATIBILITY IDEOGRAPH-2F94C
- : 4096
-2F94D CJK COMPATIBILITY IDEOGRAPH-2F94D
- : 2541D
-2F94E CJK COMPATIBILITY IDEOGRAPH-2F94E
- : 784E
-2F94F CJK COMPATIBILITY IDEOGRAPH-2F94F
- : 788C
-2F950 CJK COMPATIBILITY IDEOGRAPH-2F950
- : 78CC
-2F951 CJK COMPATIBILITY IDEOGRAPH-2F951
- : 40E3
-2F952 CJK COMPATIBILITY IDEOGRAPH-2F952
- : 25626
-2F953 CJK COMPATIBILITY IDEOGRAPH-2F953
- : 7956
-2F954 CJK COMPATIBILITY IDEOGRAPH-2F954
- : 2569A
-2F955 CJK COMPATIBILITY IDEOGRAPH-2F955
- : 256C5
-2F956 CJK COMPATIBILITY IDEOGRAPH-2F956
- : 798F
-2F957 CJK COMPATIBILITY IDEOGRAPH-2F957
- : 79EB
-2F958 CJK COMPATIBILITY IDEOGRAPH-2F958
- : 412F
-2F959 CJK COMPATIBILITY IDEOGRAPH-2F959
- : 7A40
-2F95A CJK COMPATIBILITY IDEOGRAPH-2F95A
- : 7A4A
-2F95B CJK COMPATIBILITY IDEOGRAPH-2F95B
- : 7A4F
-2F95C CJK COMPATIBILITY IDEOGRAPH-2F95C
- : 2597C
-2F95D CJK COMPATIBILITY IDEOGRAPH-2F95D
- : 25AA7
-2F95E CJK COMPATIBILITY IDEOGRAPH-2F95E
- : 25AA7
-2F95F CJK COMPATIBILITY IDEOGRAPH-2F95F
- : 7AEE
-2F960 CJK COMPATIBILITY IDEOGRAPH-2F960
- : 4202
-2F961 CJK COMPATIBILITY IDEOGRAPH-2F961
- : 25BAB
-2F962 CJK COMPATIBILITY IDEOGRAPH-2F962
- : 7BC6
-2F963 CJK COMPATIBILITY IDEOGRAPH-2F963
- : 7BC9
-2F964 CJK COMPATIBILITY IDEOGRAPH-2F964
- : 4227
-2F965 CJK COMPATIBILITY IDEOGRAPH-2F965
- : 25C80
-2F966 CJK COMPATIBILITY IDEOGRAPH-2F966
- : 7CD2
-2F967 CJK COMPATIBILITY IDEOGRAPH-2F967
- : 42A0
-2F968 CJK COMPATIBILITY IDEOGRAPH-2F968
- : 7CE8
-2F969 CJK COMPATIBILITY IDEOGRAPH-2F969
- : 7CE3
-2F96A CJK COMPATIBILITY IDEOGRAPH-2F96A
- : 7D00
-2F96B CJK COMPATIBILITY IDEOGRAPH-2F96B
- : 25F86
-2F96C CJK COMPATIBILITY IDEOGRAPH-2F96C
- : 7D63
-2F96D CJK COMPATIBILITY IDEOGRAPH-2F96D
- : 4301
-2F96E CJK COMPATIBILITY IDEOGRAPH-2F96E
- : 7DC7
-2F96F CJK COMPATIBILITY IDEOGRAPH-2F96F
- : 7E02
-2F970 CJK COMPATIBILITY IDEOGRAPH-2F970
- : 7E45
-2F971 CJK COMPATIBILITY IDEOGRAPH-2F971
- : 4334
-2F972 CJK COMPATIBILITY IDEOGRAPH-2F972
- : 26228
-2F973 CJK COMPATIBILITY IDEOGRAPH-2F973
- : 26247
-2F974 CJK COMPATIBILITY IDEOGRAPH-2F974
- : 4359
-2F975 CJK COMPATIBILITY IDEOGRAPH-2F975
- : 262D9
-2F976 CJK COMPATIBILITY IDEOGRAPH-2F976
- : 7F7A
-2F977 CJK COMPATIBILITY IDEOGRAPH-2F977
- : 2633E
-2F978 CJK COMPATIBILITY IDEOGRAPH-2F978
- : 7F95
-2F979 CJK COMPATIBILITY IDEOGRAPH-2F979
- : 7FFA
-2F97A CJK COMPATIBILITY IDEOGRAPH-2F97A
- : 8005
-2F97B CJK COMPATIBILITY IDEOGRAPH-2F97B
- : 264DA
-2F97C CJK COMPATIBILITY IDEOGRAPH-2F97C
- : 26523
-2F97D CJK COMPATIBILITY IDEOGRAPH-2F97D
- : 8060
-2F97E CJK COMPATIBILITY IDEOGRAPH-2F97E
- : 265A8
-2F97F CJK COMPATIBILITY IDEOGRAPH-2F97F
- : 8070
-2F980 CJK COMPATIBILITY IDEOGRAPH-2F980
- : 2335F
-2F981 CJK COMPATIBILITY IDEOGRAPH-2F981
- : 43D5
-2F982 CJK COMPATIBILITY IDEOGRAPH-2F982
- : 80B2
-2F983 CJK COMPATIBILITY IDEOGRAPH-2F983
- : 8103
-2F984 CJK COMPATIBILITY IDEOGRAPH-2F984
- : 440B
-2F985 CJK COMPATIBILITY IDEOGRAPH-2F985
- : 813E
-2F986 CJK COMPATIBILITY IDEOGRAPH-2F986
- : 5AB5
-2F987 CJK COMPATIBILITY IDEOGRAPH-2F987
- : 267A7
-2F988 CJK COMPATIBILITY IDEOGRAPH-2F988
- : 267B5
-2F989 CJK COMPATIBILITY IDEOGRAPH-2F989
- : 23393
-2F98A CJK COMPATIBILITY IDEOGRAPH-2F98A
- : 2339C
-2F98B CJK COMPATIBILITY IDEOGRAPH-2F98B
- : 8201
-2F98C CJK COMPATIBILITY IDEOGRAPH-2F98C
- : 8204
-2F98D CJK COMPATIBILITY IDEOGRAPH-2F98D
- : 8F9E
-2F98E CJK COMPATIBILITY IDEOGRAPH-2F98E
- : 446B
-2F98F CJK COMPATIBILITY IDEOGRAPH-2F98F
- : 8291
-2F990 CJK COMPATIBILITY IDEOGRAPH-2F990
- : 828B
-2F991 CJK COMPATIBILITY IDEOGRAPH-2F991
- : 829D
-2F992 CJK COMPATIBILITY IDEOGRAPH-2F992
- : 52B3
-2F993 CJK COMPATIBILITY IDEOGRAPH-2F993
- : 82B1
-2F994 CJK COMPATIBILITY IDEOGRAPH-2F994
- : 82B3
-2F995 CJK COMPATIBILITY IDEOGRAPH-2F995
- : 82BD
-2F996 CJK COMPATIBILITY IDEOGRAPH-2F996
- : 82E6
-2F997 CJK COMPATIBILITY IDEOGRAPH-2F997
- : 26B3C
-2F998 CJK COMPATIBILITY IDEOGRAPH-2F998
- : 82E5
-2F999 CJK COMPATIBILITY IDEOGRAPH-2F999
- : 831D
-2F99A CJK COMPATIBILITY IDEOGRAPH-2F99A
- : 8363
-2F99B CJK COMPATIBILITY IDEOGRAPH-2F99B
- : 83AD
-2F99C CJK COMPATIBILITY IDEOGRAPH-2F99C
- : 8323
-2F99D CJK COMPATIBILITY IDEOGRAPH-2F99D
- : 83BD
-2F99E CJK COMPATIBILITY IDEOGRAPH-2F99E
- : 83E7
-2F99F CJK COMPATIBILITY IDEOGRAPH-2F99F
- : 8457
-2F9A0 CJK COMPATIBILITY IDEOGRAPH-2F9A0
- : 8353
-2F9A1 CJK COMPATIBILITY IDEOGRAPH-2F9A1
- : 83CA
-2F9A2 CJK COMPATIBILITY IDEOGRAPH-2F9A2
- : 83CC
-2F9A3 CJK COMPATIBILITY IDEOGRAPH-2F9A3
- : 83DC
-2F9A4 CJK COMPATIBILITY IDEOGRAPH-2F9A4
- : 26C36
-2F9A5 CJK COMPATIBILITY IDEOGRAPH-2F9A5
- : 26D6B
-2F9A6 CJK COMPATIBILITY IDEOGRAPH-2F9A6
- : 26CD5
-2F9A7 CJK COMPATIBILITY IDEOGRAPH-2F9A7
- : 452B
-2F9A8 CJK COMPATIBILITY IDEOGRAPH-2F9A8
- : 84F1
-2F9A9 CJK COMPATIBILITY IDEOGRAPH-2F9A9
- : 84F3
-2F9AA CJK COMPATIBILITY IDEOGRAPH-2F9AA
- : 8516
-2F9AB CJK COMPATIBILITY IDEOGRAPH-2F9AB
- : 273CA
-2F9AC CJK COMPATIBILITY IDEOGRAPH-2F9AC
- : 8564
-2F9AD CJK COMPATIBILITY IDEOGRAPH-2F9AD
- : 26F2C
-2F9AE CJK COMPATIBILITY IDEOGRAPH-2F9AE
- : 455D
-2F9AF CJK COMPATIBILITY IDEOGRAPH-2F9AF
- : 4561
-2F9B0 CJK COMPATIBILITY IDEOGRAPH-2F9B0
- : 26FB1
-2F9B1 CJK COMPATIBILITY IDEOGRAPH-2F9B1
- : 270D2
-2F9B2 CJK COMPATIBILITY IDEOGRAPH-2F9B2
- x 5914
- x 270CD
- x 270F0
- : 456B
-2F9B3 CJK COMPATIBILITY IDEOGRAPH-2F9B3
- : 8650
-2F9B4 CJK COMPATIBILITY IDEOGRAPH-2F9B4
- : 865C
-2F9B5 CJK COMPATIBILITY IDEOGRAPH-2F9B5
- : 8667
-2F9B6 CJK COMPATIBILITY IDEOGRAPH-2F9B6
- x 27205
- : 8669
-2F9B7 CJK COMPATIBILITY IDEOGRAPH-2F9B7
- : 86A9
-2F9B8 CJK COMPATIBILITY IDEOGRAPH-2F9B8
- : 8688
-2F9B9 CJK COMPATIBILITY IDEOGRAPH-2F9B9
- : 870E
-2F9BA CJK COMPATIBILITY IDEOGRAPH-2F9BA
- : 86E2
-2F9BB CJK COMPATIBILITY IDEOGRAPH-2F9BB
- : 8779
-2F9BC CJK COMPATIBILITY IDEOGRAPH-2F9BC
- : 8728
-2F9BD CJK COMPATIBILITY IDEOGRAPH-2F9BD
- : 876B
-2F9BE CJK COMPATIBILITY IDEOGRAPH-2F9BE
- : 8786
-2F9BF CJK COMPATIBILITY IDEOGRAPH-2F9BF
- : 45D7
-2F9C0 CJK COMPATIBILITY IDEOGRAPH-2F9C0
- : 87E1
-2F9C1 CJK COMPATIBILITY IDEOGRAPH-2F9C1
- : 8801
-2F9C2 CJK COMPATIBILITY IDEOGRAPH-2F9C2
- : 45F9
-2F9C3 CJK COMPATIBILITY IDEOGRAPH-2F9C3
- : 8860
-2F9C4 CJK COMPATIBILITY IDEOGRAPH-2F9C4
- : 8863
-2F9C5 CJK COMPATIBILITY IDEOGRAPH-2F9C5
- : 27667
-2F9C6 CJK COMPATIBILITY IDEOGRAPH-2F9C6
- : 88D7
-2F9C7 CJK COMPATIBILITY IDEOGRAPH-2F9C7
- : 88DE
-2F9C8 CJK COMPATIBILITY IDEOGRAPH-2F9C8
- : 4635
-2F9C9 CJK COMPATIBILITY IDEOGRAPH-2F9C9
- : 88FA
-2F9CA CJK COMPATIBILITY IDEOGRAPH-2F9CA
- : 34BB
-2F9CB CJK COMPATIBILITY IDEOGRAPH-2F9CB
- x 4695
- : 278AE
-2F9CC CJK COMPATIBILITY IDEOGRAPH-2F9CC
- : 27966
-2F9CD CJK COMPATIBILITY IDEOGRAPH-2F9CD
- : 46BE
-2F9CE CJK COMPATIBILITY IDEOGRAPH-2F9CE
- : 46C7
-2F9CF CJK COMPATIBILITY IDEOGRAPH-2F9CF
- : 8AA0
-2F9D0 CJK COMPATIBILITY IDEOGRAPH-2F9D0
- : 8AED
-2F9D1 CJK COMPATIBILITY IDEOGRAPH-2F9D1
- : 8B8A
-2F9D2 CJK COMPATIBILITY IDEOGRAPH-2F9D2
- : 8C55
-2F9D3 CJK COMPATIBILITY IDEOGRAPH-2F9D3
- : 27CA8
-2F9D4 CJK COMPATIBILITY IDEOGRAPH-2F9D4
- : 8CAB
-2F9D5 CJK COMPATIBILITY IDEOGRAPH-2F9D5
- : 8CC1
-2F9D6 CJK COMPATIBILITY IDEOGRAPH-2F9D6
- x 25AD4
- : 8D1B
-2F9D7 CJK COMPATIBILITY IDEOGRAPH-2F9D7
- : 8D77
-2F9D8 CJK COMPATIBILITY IDEOGRAPH-2F9D8
- : 27F2F
-2F9D9 CJK COMPATIBILITY IDEOGRAPH-2F9D9
- : 20804
-2F9DA CJK COMPATIBILITY IDEOGRAPH-2F9DA
- : 8DCB
-2F9DB CJK COMPATIBILITY IDEOGRAPH-2F9DB
- : 8DBC
-2F9DC CJK COMPATIBILITY IDEOGRAPH-2F9DC
- : 8DF0
-2F9DD CJK COMPATIBILITY IDEOGRAPH-2F9DD
- : 208DE
-2F9DE CJK COMPATIBILITY IDEOGRAPH-2F9DE
- : 8ED4
-2F9DF CJK COMPATIBILITY IDEOGRAPH-2F9DF
- : 8F38
-2F9E0 CJK COMPATIBILITY IDEOGRAPH-2F9E0
- : 285D2
-2F9E1 CJK COMPATIBILITY IDEOGRAPH-2F9E1
- : 285ED
-2F9E2 CJK COMPATIBILITY IDEOGRAPH-2F9E2
- : 9094
-2F9E3 CJK COMPATIBILITY IDEOGRAPH-2F9E3
- : 90F1
-2F9E4 CJK COMPATIBILITY IDEOGRAPH-2F9E4
- : 9111
-2F9E5 CJK COMPATIBILITY IDEOGRAPH-2F9E5
- : 2872E
-2F9E6 CJK COMPATIBILITY IDEOGRAPH-2F9E6
- : 911B
-2F9E7 CJK COMPATIBILITY IDEOGRAPH-2F9E7
- : 9238
-2F9E8 CJK COMPATIBILITY IDEOGRAPH-2F9E8
- : 92D7
-2F9E9 CJK COMPATIBILITY IDEOGRAPH-2F9E9
- : 92D8
-2F9EA CJK COMPATIBILITY IDEOGRAPH-2F9EA
- : 927C
-2F9EB CJK COMPATIBILITY IDEOGRAPH-2F9EB
- : 93F9
-2F9EC CJK COMPATIBILITY IDEOGRAPH-2F9EC
- : 9415
-2F9ED CJK COMPATIBILITY IDEOGRAPH-2F9ED
- : 28BFA
-2F9EE CJK COMPATIBILITY IDEOGRAPH-2F9EE
- : 958B
-2F9EF CJK COMPATIBILITY IDEOGRAPH-2F9EF
- : 4995
-2F9F0 CJK COMPATIBILITY IDEOGRAPH-2F9F0
- : 95B7
-2F9F1 CJK COMPATIBILITY IDEOGRAPH-2F9F1
- : 28D77
-2F9F2 CJK COMPATIBILITY IDEOGRAPH-2F9F2
- : 49E6
-2F9F3 CJK COMPATIBILITY IDEOGRAPH-2F9F3
- : 96C3
-2F9F4 CJK COMPATIBILITY IDEOGRAPH-2F9F4
- : 5DB2
-2F9F5 CJK COMPATIBILITY IDEOGRAPH-2F9F5
- : 9723
-2F9F6 CJK COMPATIBILITY IDEOGRAPH-2F9F6
- : 29145
-2F9F7 CJK COMPATIBILITY IDEOGRAPH-2F9F7
- : 2921A
-2F9F8 CJK COMPATIBILITY IDEOGRAPH-2F9F8
- : 4A6E
-2F9F9 CJK COMPATIBILITY IDEOGRAPH-2F9F9
- : 4A76
-2F9FA CJK COMPATIBILITY IDEOGRAPH-2F9FA
- : 97E0
-2F9FB CJK COMPATIBILITY IDEOGRAPH-2F9FB
- : 2940A
-2F9FC CJK COMPATIBILITY IDEOGRAPH-2F9FC
- : 4AB2
-2F9FD CJK COMPATIBILITY IDEOGRAPH-2F9FD
- : 29496
-2F9FE CJK COMPATIBILITY IDEOGRAPH-2F9FE
- : 980B
-2F9FF CJK COMPATIBILITY IDEOGRAPH-2F9FF
- : 980B
-2FA00 CJK COMPATIBILITY IDEOGRAPH-2FA00
- : 9829
-2FA01 CJK COMPATIBILITY IDEOGRAPH-2FA01
- : 295B6
-2FA02 CJK COMPATIBILITY IDEOGRAPH-2FA02
- : 98E2
-2FA03 CJK COMPATIBILITY IDEOGRAPH-2FA03
- : 4B33
-2FA04 CJK COMPATIBILITY IDEOGRAPH-2FA04
- : 9929
-2FA05 CJK COMPATIBILITY IDEOGRAPH-2FA05
- : 99A7
-2FA06 CJK COMPATIBILITY IDEOGRAPH-2FA06
- : 99C2
-2FA07 CJK COMPATIBILITY IDEOGRAPH-2FA07
- : 99FE
-2FA08 CJK COMPATIBILITY IDEOGRAPH-2FA08
- : 4BCE
-2FA09 CJK COMPATIBILITY IDEOGRAPH-2FA09
- : 29B30
-2FA0A CJK COMPATIBILITY IDEOGRAPH-2FA0A
- : 9B12
-2FA0B CJK COMPATIBILITY IDEOGRAPH-2FA0B
- : 9C40
-2FA0C CJK COMPATIBILITY IDEOGRAPH-2FA0C
- : 9CFD
-2FA0D CJK COMPATIBILITY IDEOGRAPH-2FA0D
- : 4CCE
-2FA0E CJK COMPATIBILITY IDEOGRAPH-2FA0E
- : 4CED
-2FA0F CJK COMPATIBILITY IDEOGRAPH-2FA0F
- : 9D67
-2FA10 CJK COMPATIBILITY IDEOGRAPH-2FA10
- : 2A0CE
-2FA11 CJK COMPATIBILITY IDEOGRAPH-2FA11
- : 4CF8
-2FA12 CJK COMPATIBILITY IDEOGRAPH-2FA12
- : 2A105
-2FA13 CJK COMPATIBILITY IDEOGRAPH-2FA13
- : 2A20E
-2FA14 CJK COMPATIBILITY IDEOGRAPH-2FA14
- : 2A291
-2FA15 CJK COMPATIBILITY IDEOGRAPH-2FA15
- : 9EBB
-2FA16 CJK COMPATIBILITY IDEOGRAPH-2FA16
- : 4D56
-2FA17 CJK COMPATIBILITY IDEOGRAPH-2FA17
- : 9EF9
-2FA18 CJK COMPATIBILITY IDEOGRAPH-2FA18
- : 9EFE
-2FA19 CJK COMPATIBILITY IDEOGRAPH-2FA19
- : 9F05
-2FA1A CJK COMPATIBILITY IDEOGRAPH-2FA1A
- : 9F0F
-2FA1B CJK COMPATIBILITY IDEOGRAPH-2FA1B
- : 9F16
-2FA1C CJK COMPATIBILITY IDEOGRAPH-2FA1C
- : 9F3B
-2FA1D CJK COMPATIBILITY IDEOGRAPH-2FA1D
- : 2A600
-@@ 2FF80 Unassigned 2FFFF
-@ Noncharacters
-@+ These codes are intended for process internal uses, but are not permitted for interchange.
-2FFFE <not a character>
- * the value 2FFFE is guaranteed not to be a Unicode character at all
-2FFFF <not a character>
- * the value 2FFFF is guaranteed not to be a Unicode character at all
-@@ 3FF80 Unassigned 3FFFF
-@ Noncharacters
-@+ These codes are intended for process internal uses, but are not permitted for interchange.
-3FFFE <not a character>
- * the value 3FFFE is guaranteed not to be a Unicode character at all
-3FFFF <not a character>
- * the value 3FFFF is guaranteed not to be a Unicode character at all
-@@ 4FF80 Unassigned 4FFFF
-@ Noncharacters
-@+ These codes are intended for process internal uses, but are not permitted for interchange.
-4FFFE <not a character>
- * the value 4FFFE is guaranteed not to be a Unicode character at all
-4FFFF <not a character>
- * the value 4FFFF is guaranteed not to be a Unicode character at all
-@@ 5FF80 Unassigned 5FFFF
-@ Noncharacters
-@+ These codes are intended for process internal uses, but are not permitted for interchange.
-5FFFE <not a character>
- * the value 5FFFE is guaranteed not to be a Unicode character at all
-5FFFF <not a character>
- * the value 5FFFF is guaranteed not to be a Unicode character at all
-@@ 6FF80 Unassigned 6FFFF
-@ Noncharacters
-@+ These codes are intended for process internal uses, but are not permitted for interchange.
-6FFFE <not a character>
- * the value 6FFFE is guaranteed not to be a Unicode character at all
-6FFFF <not a character>
- * the value 6FFFF is guaranteed not to be a Unicode character at all
-@@ 7FF80 Unassigned 7FFFF
-@ Noncharacters
-@+ These codes are intended for process internal uses, but are not permitted for interchange.
-7FFFE <not a character>
- * the value 7FFFE is guaranteed not to be a Unicode character at all
-7FFFF <not a character>
- * the value 7FFFF is guaranteed not to be a Unicode character at all
-@@ 8FF80 Unassigned 8FFFF
-@ Noncharacters
-@+ These codes are intended for process internal uses, but are not permitted for interchange.
-8FFFE <not a character>
- * the value 8FFFE is guaranteed not to be a Unicode character at all
-8FFFF <not a character>
- * the value 8FFFF is guaranteed not to be a Unicode character at all
-@@ 9FF80 Unassigned 9FFFF
-@ Noncharacters
-@+ These codes are intended for process internal uses, but are not permitted for interchange.
-9FFFE <not a character>
- * the value 9FFFE is guaranteed not to be a Unicode character at all
-9FFFF <not a character>
- * the value 9FFFF is guaranteed not to be a Unicode character at all
-@@ AFF80 Unassigned AFFFF
-@ Noncharacters
-@+ These codes are intended for process internal uses, but are not permitted for interchange.
-AFFFE <not a character>
- * the value AFFFE is guaranteed not to be a Unicode character at all
-AFFFF <not a character>
- * the value AFFFF is guaranteed not to be a Unicode character at all
-@@ BFF80 Unassigned BFFFF
-@ Noncharacters
-@+ These codes are intended for process internal uses, but are not permitted for interchange.
-BFFFE <not a character>
- * the value BFFFE is guaranteed not to be a Unicode character at all
-BFFFF <not a character>
- * the value BFFFF is guaranteed not to be a Unicode character at all
-@@ CFF80 Unassigned CFFFF
-@ Noncharacters
-@+ These codes are intended for process internal uses, but are not permitted for interchange.
-CFFFE <not a character>
- * the value CFFFE is guaranteed not to be a Unicode character at all
-CFFFF <not a character>
- * the value CFFFF is guaranteed not to be a Unicode character at all
-@@ DFF80 Unassigned DFFFF
-@ Noncharacters
-@+ These codes are intended for process internal uses, but are not permitted for interchange.
-DFFFE <not a character>
- * the value DFFFE is guaranteed not to be a Unicode character at all
-DFFFF <not a character>
- * the value DFFFF is guaranteed not to be a Unicode character at all
-@@ E0000 Tags E007F
-@ Tag identifiers
-E0001 LANGUAGE TAG
-@ Tag components
-E0020 TAG SPACE
-E0021 TAG EXCLAMATION MARK
-E0022 TAG QUOTATION MARK
-E0023 TAG NUMBER SIGN
-E0024 TAG DOLLAR SIGN
-E0025 TAG PERCENT SIGN
-E0026 TAG AMPERSAND
-E0027 TAG APOSTROPHE
-E0028 TAG LEFT PARENTHESIS
-E0029 TAG RIGHT PARENTHESIS
-E002A TAG ASTERISK
-E002B TAG PLUS SIGN
-E002C TAG COMMA
-E002D TAG HYPHEN-MINUS
-E002E TAG FULL STOP
-E002F TAG SOLIDUS
-E0030 TAG DIGIT ZERO
-E0031 TAG DIGIT ONE
-E0032 TAG DIGIT TWO
-E0033 TAG DIGIT THREE
-E0034 TAG DIGIT FOUR
-E0035 TAG DIGIT FIVE
-E0036 TAG DIGIT SIX
-E0037 TAG DIGIT SEVEN
-E0038 TAG DIGIT EIGHT
-E0039 TAG DIGIT NINE
-E003A TAG COLON
-E003B TAG SEMICOLON
-E003C TAG LESS-THAN SIGN
-E003D TAG EQUALS SIGN
-E003E TAG GREATER-THAN SIGN
-E003F TAG QUESTION MARK
-E0040 TAG COMMERCIAL AT
-E0041 TAG LATIN CAPITAL LETTER A
-E0042 TAG LATIN CAPITAL LETTER B
-E0043 TAG LATIN CAPITAL LETTER C
-E0044 TAG LATIN CAPITAL LETTER D
-E0045 TAG LATIN CAPITAL LETTER E
-E0046 TAG LATIN CAPITAL LETTER F
-E0047 TAG LATIN CAPITAL LETTER G
-E0048 TAG LATIN CAPITAL LETTER H
-E0049 TAG LATIN CAPITAL LETTER I
-E004A TAG LATIN CAPITAL LETTER J
-E004B TAG LATIN CAPITAL LETTER K
-E004C TAG LATIN CAPITAL LETTER L
-E004D TAG LATIN CAPITAL LETTER M
-E004E TAG LATIN CAPITAL LETTER N
-E004F TAG LATIN CAPITAL LETTER O
-E0050 TAG LATIN CAPITAL LETTER P
-E0051 TAG LATIN CAPITAL LETTER Q
-E0052 TAG LATIN CAPITAL LETTER R
-E0053 TAG LATIN CAPITAL LETTER S
-E0054 TAG LATIN CAPITAL LETTER T
-E0055 TAG LATIN CAPITAL LETTER U
-E0056 TAG LATIN CAPITAL LETTER V
-E0057 TAG LATIN CAPITAL LETTER W
-E0058 TAG LATIN CAPITAL LETTER X
-E0059 TAG LATIN CAPITAL LETTER Y
-E005A TAG LATIN CAPITAL LETTER Z
-E005B TAG LEFT SQUARE BRACKET
-E005C TAG REVERSE SOLIDUS
-E005D TAG RIGHT SQUARE BRACKET
-E005E TAG CIRCUMFLEX ACCENT
-E005F TAG LOW LINE
-E0060 TAG GRAVE ACCENT
-E0061 TAG LATIN SMALL LETTER A
-E0062 TAG LATIN SMALL LETTER B
-E0063 TAG LATIN SMALL LETTER C
-E0064 TAG LATIN SMALL LETTER D
-E0065 TAG LATIN SMALL LETTER E
-E0066 TAG LATIN SMALL LETTER F
-E0067 TAG LATIN SMALL LETTER G
-E0068 TAG LATIN SMALL LETTER H
-E0069 TAG LATIN SMALL LETTER I
-E006A TAG LATIN SMALL LETTER J
-E006B TAG LATIN SMALL LETTER K
-E006C TAG LATIN SMALL LETTER L
-E006D TAG LATIN SMALL LETTER M
-E006E TAG LATIN SMALL LETTER N
-E006F TAG LATIN SMALL LETTER O
-E0070 TAG LATIN SMALL LETTER P
-E0071 TAG LATIN SMALL LETTER Q
-E0072 TAG LATIN SMALL LETTER R
-E0073 TAG LATIN SMALL LETTER S
-E0074 TAG LATIN SMALL LETTER T
-E0075 TAG LATIN SMALL LETTER U
-E0076 TAG LATIN SMALL LETTER V
-E0077 TAG LATIN SMALL LETTER W
-E0078 TAG LATIN SMALL LETTER X
-E0079 TAG LATIN SMALL LETTER Y
-E007A TAG LATIN SMALL LETTER Z
-E007B TAG LEFT CURLY BRACKET
-E007C TAG VERTICAL LINE
-E007D TAG RIGHT CURLY BRACKET
-E007E TAG TILDE
-E007F CANCEL TAG
-@@ E0100 Variation Selectors Supplement E01EF
-@+ These complete the set started at FE00 to FE0F
-@ Variation selectors
-E0100 VARIATION SELECTOR-17
- * these are abbreviated VS17, and so on
-E0101 VARIATION SELECTOR-18
-E0102 VARIATION SELECTOR-19
-E0103 VARIATION SELECTOR-20
-E0104 VARIATION SELECTOR-21
-E0105 VARIATION SELECTOR-22
-E0106 VARIATION SELECTOR-23
-E0107 VARIATION SELECTOR-24
-E0108 VARIATION SELECTOR-25
-E0109 VARIATION SELECTOR-26
-E010A VARIATION SELECTOR-27
-E010B VARIATION SELECTOR-28
-E010C VARIATION SELECTOR-29
-E010D VARIATION SELECTOR-30
-E010E VARIATION SELECTOR-31
-E010F VARIATION SELECTOR-32
-E0110 VARIATION SELECTOR-33
-E0111 VARIATION SELECTOR-34
-E0112 VARIATION SELECTOR-35
-E0113 VARIATION SELECTOR-36
-E0114 VARIATION SELECTOR-37
-E0115 VARIATION SELECTOR-38
-E0116 VARIATION SELECTOR-39
-E0117 VARIATION SELECTOR-40
-E0118 VARIATION SELECTOR-41
-E0119 VARIATION SELECTOR-42
-E011A VARIATION SELECTOR-43
-E011B VARIATION SELECTOR-44
-E011C VARIATION SELECTOR-45
-E011D VARIATION SELECTOR-46
-E011E VARIATION SELECTOR-47
-E011F VARIATION SELECTOR-48
-E0120 VARIATION SELECTOR-49
-E0121 VARIATION SELECTOR-50
-E0122 VARIATION SELECTOR-51
-E0123 VARIATION SELECTOR-52
-E0124 VARIATION SELECTOR-53
-E0125 VARIATION SELECTOR-54
-E0126 VARIATION SELECTOR-55
-E0127 VARIATION SELECTOR-56
-E0128 VARIATION SELECTOR-57
-E0129 VARIATION SELECTOR-58
-E012A VARIATION SELECTOR-59
-E012B VARIATION SELECTOR-60
-E012C VARIATION SELECTOR-61
-E012D VARIATION SELECTOR-62
-E012E VARIATION SELECTOR-63
-E012F VARIATION SELECTOR-64
-E0130 VARIATION SELECTOR-65
-E0131 VARIATION SELECTOR-66
-E0132 VARIATION SELECTOR-67
-E0133 VARIATION SELECTOR-68
-E0134 VARIATION SELECTOR-69
-E0135 VARIATION SELECTOR-70
-E0136 VARIATION SELECTOR-71
-E0137 VARIATION SELECTOR-72
-E0138 VARIATION SELECTOR-73
-E0139 VARIATION SELECTOR-74
-E013A VARIATION SELECTOR-75
-E013B VARIATION SELECTOR-76
-E013C VARIATION SELECTOR-77
-E013D VARIATION SELECTOR-78
-E013E VARIATION SELECTOR-79
-E013F VARIATION SELECTOR-80
-E0140 VARIATION SELECTOR-81
-E0141 VARIATION SELECTOR-82
-E0142 VARIATION SELECTOR-83
-E0143 VARIATION SELECTOR-84
-E0144 VARIATION SELECTOR-85
-E0145 VARIATION SELECTOR-86
-E0146 VARIATION SELECTOR-87
-E0147 VARIATION SELECTOR-88
-E0148 VARIATION SELECTOR-89
-E0149 VARIATION SELECTOR-90
-E014A VARIATION SELECTOR-91
-E014B VARIATION SELECTOR-92
-E014C VARIATION SELECTOR-93
-E014D VARIATION SELECTOR-94
-E014E VARIATION SELECTOR-95
-E014F VARIATION SELECTOR-96
-E0150 VARIATION SELECTOR-97
-E0151 VARIATION SELECTOR-98
-E0152 VARIATION SELECTOR-99
-E0153 VARIATION SELECTOR-100
-E0154 VARIATION SELECTOR-101
-E0155 VARIATION SELECTOR-102
-E0156 VARIATION SELECTOR-103
-E0157 VARIATION SELECTOR-104
-E0158 VARIATION SELECTOR-105
-E0159 VARIATION SELECTOR-106
-E015A VARIATION SELECTOR-107
-E015B VARIATION SELECTOR-108
-E015C VARIATION SELECTOR-109
-E015D VARIATION SELECTOR-110
-E015E VARIATION SELECTOR-111
-E015F VARIATION SELECTOR-112
-E0160 VARIATION SELECTOR-113
-E0161 VARIATION SELECTOR-114
-E0162 VARIATION SELECTOR-115
-E0163 VARIATION SELECTOR-116
-E0164 VARIATION SELECTOR-117
-E0165 VARIATION SELECTOR-118
-E0166 VARIATION SELECTOR-119
-E0167 VARIATION SELECTOR-120
-E0168 VARIATION SELECTOR-121
-E0169 VARIATION SELECTOR-122
-E016A VARIATION SELECTOR-123
-E016B VARIATION SELECTOR-124
-E016C VARIATION SELECTOR-125
-E016D VARIATION SELECTOR-126
-E016E VARIATION SELECTOR-127
-E016F VARIATION SELECTOR-128
-E0170 VARIATION SELECTOR-129
-E0171 VARIATION SELECTOR-130
-E0172 VARIATION SELECTOR-131
-E0173 VARIATION SELECTOR-132
-E0174 VARIATION SELECTOR-133
-E0175 VARIATION SELECTOR-134
-E0176 VARIATION SELECTOR-135
-E0177 VARIATION SELECTOR-136
-E0178 VARIATION SELECTOR-137
-E0179 VARIATION SELECTOR-138
-E017A VARIATION SELECTOR-139
-E017B VARIATION SELECTOR-140
-E017C VARIATION SELECTOR-141
-E017D VARIATION SELECTOR-142
-E017E VARIATION SELECTOR-143
-E017F VARIATION SELECTOR-144
-E0180 VARIATION SELECTOR-145
-E0181 VARIATION SELECTOR-146
-E0182 VARIATION SELECTOR-147
-E0183 VARIATION SELECTOR-148
-E0184 VARIATION SELECTOR-149
-E0185 VARIATION SELECTOR-150
-E0186 VARIATION SELECTOR-151
-E0187 VARIATION SELECTOR-152
-E0188 VARIATION SELECTOR-153
-E0189 VARIATION SELECTOR-154
-E018A VARIATION SELECTOR-155
-E018B VARIATION SELECTOR-156
-E018C VARIATION SELECTOR-157
-E018D VARIATION SELECTOR-158
-E018E VARIATION SELECTOR-159
-E018F VARIATION SELECTOR-160
-E0190 VARIATION SELECTOR-161
-E0191 VARIATION SELECTOR-162
-E0192 VARIATION SELECTOR-163
-E0193 VARIATION SELECTOR-164
-E0194 VARIATION SELECTOR-165
-E0195 VARIATION SELECTOR-166
-E0196 VARIATION SELECTOR-167
-E0197 VARIATION SELECTOR-168
-E0198 VARIATION SELECTOR-169
-E0199 VARIATION SELECTOR-170
-E019A VARIATION SELECTOR-171
-E019B VARIATION SELECTOR-172
-E019C VARIATION SELECTOR-173
-E019D VARIATION SELECTOR-174
-E019E VARIATION SELECTOR-175
-E019F VARIATION SELECTOR-176
-E01A0 VARIATION SELECTOR-177
-E01A1 VARIATION SELECTOR-178
-E01A2 VARIATION SELECTOR-179
-E01A3 VARIATION SELECTOR-180
-E01A4 VARIATION SELECTOR-181
-E01A5 VARIATION SELECTOR-182
-E01A6 VARIATION SELECTOR-183
-E01A7 VARIATION SELECTOR-184
-E01A8 VARIATION SELECTOR-185
-E01A9 VARIATION SELECTOR-186
-E01AA VARIATION SELECTOR-187
-E01AB VARIATION SELECTOR-188
-E01AC VARIATION SELECTOR-189
-E01AD VARIATION SELECTOR-190
-E01AE VARIATION SELECTOR-191
-E01AF VARIATION SELECTOR-192
-E01B0 VARIATION SELECTOR-193
-E01B1 VARIATION SELECTOR-194
-E01B2 VARIATION SELECTOR-195
-E01B3 VARIATION SELECTOR-196
-E01B4 VARIATION SELECTOR-197
-E01B5 VARIATION SELECTOR-198
-E01B6 VARIATION SELECTOR-199
-E01B7 VARIATION SELECTOR-200
-E01B8 VARIATION SELECTOR-201
-E01B9 VARIATION SELECTOR-202
-E01BA VARIATION SELECTOR-203
-E01BB VARIATION SELECTOR-204
-E01BC VARIATION SELECTOR-205
-E01BD VARIATION SELECTOR-206
-E01BE VARIATION SELECTOR-207
-E01BF VARIATION SELECTOR-208
-E01C0 VARIATION SELECTOR-209
-E01C1 VARIATION SELECTOR-210
-E01C2 VARIATION SELECTOR-211
-E01C3 VARIATION SELECTOR-212
-E01C4 VARIATION SELECTOR-213
-E01C5 VARIATION SELECTOR-214
-E01C6 VARIATION SELECTOR-215
-E01C7 VARIATION SELECTOR-216
-E01C8 VARIATION SELECTOR-217
-E01C9 VARIATION SELECTOR-218
-E01CA VARIATION SELECTOR-219
-E01CB VARIATION SELECTOR-220
-E01CC VARIATION SELECTOR-221
-E01CD VARIATION SELECTOR-222
-E01CE VARIATION SELECTOR-223
-E01CF VARIATION SELECTOR-224
-E01D0 VARIATION SELECTOR-225
-E01D1 VARIATION SELECTOR-226
-E01D2 VARIATION SELECTOR-227
-E01D3 VARIATION SELECTOR-228
-E01D4 VARIATION SELECTOR-229
-E01D5 VARIATION SELECTOR-230
-E01D6 VARIATION SELECTOR-231
-E01D7 VARIATION SELECTOR-232
-E01D8 VARIATION SELECTOR-233
-E01D9 VARIATION SELECTOR-234
-E01DA VARIATION SELECTOR-235
-E01DB VARIATION SELECTOR-236
-E01DC VARIATION SELECTOR-237
-E01DD VARIATION SELECTOR-238
-E01DE VARIATION SELECTOR-239
-E01DF VARIATION SELECTOR-240
-E01E0 VARIATION SELECTOR-241
-E01E1 VARIATION SELECTOR-242
-E01E2 VARIATION SELECTOR-243
-E01E3 VARIATION SELECTOR-244
-E01E4 VARIATION SELECTOR-245
-E01E5 VARIATION SELECTOR-246
-E01E6 VARIATION SELECTOR-247
-E01E7 VARIATION SELECTOR-248
-E01E8 VARIATION SELECTOR-249
-E01E9 VARIATION SELECTOR-250
-E01EA VARIATION SELECTOR-251
-E01EB VARIATION SELECTOR-252
-E01EC VARIATION SELECTOR-253
-E01ED VARIATION SELECTOR-254
-E01EE VARIATION SELECTOR-255
-E01EF VARIATION SELECTOR-256
-@@ EFF80 Unassigned EFFFF
-@ Noncharacters
-@+ These codes are intended for process internal uses, but are not permitted for interchange.
-EFFFE <not a character>
- * the value EFFFE is guaranteed not to be a Unicode character at all
-EFFFF <not a character>
- * the value EFFFF is guaranteed not to be a Unicode character at all
-@@ FFF80 Supplementary Private Use Area-A FFFFF
-@ Noncharacters
-@+ These codes are intended for process internal uses, but are not permitted for interchange.
-FFFFE <not a character>
- * the value FFFFE is guaranteed not to be a Unicode character at all
-FFFFF <not a character>
- * the value FFFFF is guaranteed not to be a Unicode character at all
-@@ 10FF80 Supplementary Private Use Area-B 10FFFF
-@ Noncharacters
-@+ These codes are intended for process internal uses, but are not permitted for interchange.
-10FFFE <not a character>
- * the value 10FFFE is guaranteed not to be a Unicode character at all
-10FFFF <not a character>
- * the value 10FFFF is guaranteed not to be a Unicode character at all
diff --git a/Master/tlpkg/tlperl/lib/unicore/NormalizationCorrections.txt b/Master/tlpkg/tlperl/lib/unicore/NormalizationCorrections.txt
deleted file mode 100644
index 9391acefbb7..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/NormalizationCorrections.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-# NormalizationCorrections-4.1.0.txt
-# Date: 2005-03-17, 15:21:00 PST [KW]
-#
-# This file is a normative contributory data file in the
-# Unicode Character Database.
-#
-# Copyright (c) 1991-2005 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-#
-# The normalization stabilization policy of the Unicode
-# Consortium ordinarily precludes any change to the decomposition
-# for any character, once established in a relevant version
-# of the UnicodeData.txt data file. However, under certain
-# exceptional (and rare) conditions, an error in a decomposition
-# mapping may be discovered that is truly just an unintended
-# typo in the data, and not a matter of dubious interpretation.
-#
-# Whenever such an error may be found, and if it meets the
-# requirements for possible exceptions to normalization
-# stability, the correction is entered in this data file,
-# so that any implementation depending on absolute stability
-# of normalization, *including* any errors in the data, can
-# safely reconstruct the exact state of the data tables at
-# any given version of Unicode.
-#
-# Currently this list has exactly six entries in it, one for the
-# typo found and corrected in Corrigendum #3, and five for
-# the typos and misidentifications found and corrected in
-# Corrigendum #4. All efforts
-# will be made to keep the entries limited to just those fixes.
-#
-# Interpretation of the fields:
-# Field 1: Unicode code point
-# Field 2: Original (erroneous) decomposition
-# Field 3: Corrected decomposition
-# Field 4: Version of Unicode for which the correction was
-# entered into UnicodeData.txt, in n.n.n format.
-# Comment: Indicates the Unicode Corrigendum which documents
-# the correction
-#
-# For more information, see UAX #15, Unicode Normalization Forms.
-#
-F951;96FB;964B;3.2.0 # Corrigendum 3
-2F868;2136A;36FC;4.0.0 # Corrigendum 4
-2F874;5F33;5F53;4.0.0 # Corrigendum 4
-2F91F;43AB;243AB;4.0.0 # Corrigendum 4
-2F95F;7AAE;7AEE;4.0.0 # Corrigendum 4
-2F9BF;4D57;45D7;4.0.0 # Corrigendum 4
diff --git a/Master/tlpkg/tlperl/lib/unicore/PVA.pl b/Master/tlpkg/tlperl/lib/unicore/PVA.pl
deleted file mode 100644
index d836bdb7549..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/PVA.pl
+++ /dev/null
@@ -1,2044 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-
-%utf8::PropertyAlias = (
-'sc',
-'Script',
-'xonfkd',
-'ExpandsOnNFKD',
-'patsyn',
-'PatternSyntax',
-'nfkcqc',
-'NFKCQuickCheck',
-'oalpha',
-'OtherAlphabetic',
-'gcb',
-'GraphemeClusterBreak',
-'nfcqc',
-'NFCQuickCheck',
-'ids',
-'IDStart',
-'lb',
-'LineBreak',
-'stc',
-'SimpleTitlecaseMapping',
-'xonfkc',
-'ExpandsOnNFKC',
-'patws',
-'PatternWhiteSpace',
-'tc',
-'TitlecaseMapping',
-'lower',
-'Lowercase',
-'idst',
-'IDSTrinaryOperator',
-'radical',
-'Radical',
-'fcnfkc',
-'FCNFKCClosure',
-'dm',
-'DecompositionMapping',
-'slc',
-'SimpleLowercaseMapping',
-'wspace',
-'WhiteSpace',
-'di',
-'DefaultIgnorableCodePoint',
-'nt',
-'NumericType',
-'ea',
-'EastAsianWidth',
-'ahex',
-'ASCIIHexDigit',
-'alpha',
-'Alphabetic',
-'uc',
-'UppercaseMapping',
-'dia',
-'Diacritic',
-'gc',
-'GeneralCategory',
-'xids',
-'XIDStart',
-'oupper',
-'OtherUppercase',
-'wb',
-'WordBreak',
-'math',
-'Math',
-'sb',
-'SentenceBreak',
-'qmark',
-'QuotationMark',
-'nfdqc',
-'NFDQuickCheck',
-'ideo',
-'Ideographic',
-'blk',
-'Block',
-'odi',
-'OtherDefaultIgnorableCodePoint',
-'hst',
-'HangulSyllableType',
-'bidim',
-'BidiMirrored',
-'olower',
-'OtherLowercase',
-'na',
-'Name',
-'hyphen',
-'Hyphen',
-'xidc',
-'XIDContinue',
-'oidc',
-'OtherIDContinue',
-'bidic',
-'BidiControl',
-'na1',
-'Unicode1Name',
-'compex',
-'FullCompositionExclusion',
-'ext',
-'Extender',
-'cf',
-'CaseFolding',
-'grlink',
-'GraphemeLink',
-'xonfc',
-'ExpandsOnNFC',
-'sd',
-'SoftDotted',
-'ccc',
-'CanonicalCombiningClass',
-'dash',
-'Dash',
-'hex',
-'HexDigit',
-'grbase',
-'GraphemeBase',
-'dt',
-'DecompositionType',
-'xonfd',
-'ExpandsOnNFD',
-'scc',
-'SpecialCaseCondition',
-'idsb',
-'IDSBinaryOperator',
-'age',
-'Age',
-'loe',
-'LogicalOrderException',
-'term',
-'TerminalPunctuation',
-'ce',
-'CompositionExclusion',
-'isc',
-'ISOComment',
-'dep',
-'Deprecated',
-'sfc',
-'SimpleCaseFolding',
-'bc',
-'BidiClass',
-'nchar',
-'NoncharacterCodePoint',
-'jt',
-'JoiningType',
-'upper',
-'Uppercase',
-'uideo',
-'UnifiedIdeograph',
-'sterm',
-'STerm',
-'nfkdqc',
-'NFKDQuickCheck',
-'oids',
-'OtherIDStart',
-'joinc',
-'JoinControl',
-'nv',
-'NumericValue',
-'suc',
-'SimpleUppercaseMapping',
-'urs',
-'UnicodeRadicalStroke',
-'bmg',
-'BidiMirroringGlyph',
-'grext',
-'GraphemeExtend',
-'idc',
-'IDContinue',
-'vs',
-'VariationSelector',
-'omath',
-'OtherMath',
-'lc',
-'LowercaseMapping',
-'ogrext',
-'OtherGraphemeExtend',
-'jg',
-'JoiningGroup',
-);
-
-%utf8::PA_reverse = (
-'linebreak',
-'lb',
-'bidiclass',
-'bc',
-'terminalpunctuation',
-'Term',
-'expandsonnfkc',
-'XONFKC',
-'extender',
-'Ext',
-'simplecasefolding',
-'sfc',
-'patternsyntax',
-'PatSyn',
-'sentencebreak',
-'SB',
-'numericvalue',
-'nv',
-'patternwhitespace',
-'PatWS',
-'softdotted',
-'SD',
-'logicalorderexception',
-'LOE',
-'idstart',
-'IDS',
-'generalcategory',
-'gc',
-'decompositiontype',
-'dt',
-'name',
-'na',
-'numerictype',
-'nt',
-'otherlowercase',
-'OLower',
-'joininggroup',
-'jg',
-'expandsonnfkd',
-'XONFKD',
-'deprecated',
-'Dep',
-'radical',
-'Radical',
-'idstrinaryoperator',
-'IDST',
-'xidstart',
-'XIDS',
-'lowercase',
-'Lower',
-'unifiedideograph',
-'UIdeo',
-'othergraphemeextend',
-'OGrExt',
-'eastasianwidth',
-'ea',
-'math',
-'Math',
-'graphemelink',
-'GrLink',
-'noncharactercodepoint',
-'NChar',
-'graphemebase',
-'GrBase',
-'bidimirrored',
-'BidiM',
-'casefolding',
-'cf',
-'simpleuppercasemapping',
-'suc',
-'fullcompositionexclusion',
-'CompEx',
-'compositionexclusion',
-'CE',
-'uppercasemapping',
-'uc',
-'decompositionmapping',
-'dm',
-'whitespace',
-'WSpace',
-'hyphen',
-'Hyphen',
-'ideographic',
-'Ideo',
-'idcontinue',
-'IDC',
-'idsbinaryoperator',
-'IDSB',
-'hangulsyllabletype',
-'hst',
-'asciihexdigit',
-'AHex',
-'otheruppercase',
-'OUpper',
-'nfkdquickcheck',
-'NFKDQC',
-'simpletitlecasemapping',
-'stc',
-'nfcquickcheck',
-'NFCQC',
-'bidicontrol',
-'BidiC',
-'diacritic',
-'Dia',
-'joiningtype',
-'jt',
-'otheralphabetic',
-'OAlpha',
-'canonicalcombiningclass',
-'ccc',
-'alphabetic',
-'Alpha',
-'titlecasemapping',
-'tc',
-'unicoderadicalstroke',
-'URS',
-'hexdigit',
-'Hex',
-'unicode1name',
-'na1',
-'dash',
-'Dash',
-'fcnfkcclosure',
-'FCNFKC',
-'graphemeextend',
-'GrExt',
-'joincontrol',
-'JoinC',
-'xidcontinue',
-'XIDC',
-'quotationmark',
-'QMark',
-'expandsonnfd',
-'XONFD',
-'age',
-'age',
-'otheridcontinue',
-'OIDC',
-'uppercase',
-'Upper',
-'expandsonnfc',
-'XONFC',
-'defaultignorablecodepoint',
-'DI',
-'nfdquickcheck',
-'NFDQC',
-'isocomment',
-'isc',
-'otherdefaultignorablecodepoint',
-'ODI',
-'variationselector',
-'VS',
-'specialcasecondition',
-'scc',
-'script',
-'sc',
-'otheridstart',
-'OIDS',
-'sterm',
-'STerm',
-'graphemeclusterbreak',
-'GCB',
-'nfkcquickcheck',
-'NFKCQC',
-'bidimirroringglyph',
-'bmg',
-'othermath',
-'OMath',
-'block',
-'blk',
-'wordbreak',
-'WB',
-'lowercasemapping',
-'lc',
-'simplelowercasemapping',
-'slc',
-);
-
-%utf8::PropValueAlias = (
-'sc',
-{
-'tglg',
-'Tagalog',
-'runr',
-'Runic',
-'osma',
-'Osmanya',
-'hano',
-'Hanunoo',
-'cans',
-'CanadianAboriginal',
-'tagb',
-'Tagbanwa',
-'mlym',
-'Malayalam',
-'knda',
-'Kannada',
-'grek',
-'Greek',
-'ethi',
-'Ethiopic',
-'orya',
-'Oriya',
-'cher',
-'Cherokee',
-'mong',
-'Mongolian',
-'khmr',
-'Khmer',
-'ogam',
-'Ogham',
-'hrkt',
-'KatakanaOrHiragana',
-'armn',
-'Armenian',
-'ital',
-'OldItalic',
-'hani',
-'Han',
-'shaw',
-'Shavian',
-'taml',
-'Tamil',
-'tibt',
-'Tibetan',
-'guru',
-'Gurmukhi',
-'ugar',
-'Ugaritic',
-'qaai',
-'Inherited',
-'kana',
-'Katakana',
-'gujr',
-'Gujarati',
-'thaa',
-'Thaana',
-'cyrl',
-'Cyrillic',
-'copt',
-'Coptic',
-'sylo',
-'SylotiNagri',
-'thai',
-'Thai',
-'talu',
-'NewTaiLue',
-'laoo',
-'Lao',
-'sinh',
-'Sinhala',
-'beng',
-'Bengali',
-'hira',
-'Hiragana',
-'brai',
-'Braille',
-'telu',
-'Telugu',
-'limb',
-'Limbu',
-'geor',
-'Georgian',
-'mymr',
-'Myanmar',
-'glag',
-'Glagolitic',
-'hang',
-'Hangul',
-'syrc',
-'Syriac',
-'tfng',
-'Tifinagh',
-'dsrt',
-'Deseret',
-'buhd',
-'Buhid',
-'yiii',
-'Yi',
-'arab',
-'Arabic',
-'bopo',
-'Bopomofo',
-'khar',
-'Kharoshthi',
-'linb',
-'LinearB',
-'deva',
-'Devanagari',
-'xpeo',
-'OldPersian',
-'goth',
-'Gothic',
-'cprt',
-'Cypriot',
-'tale',
-'TaiLe',
-'zyyy',
-'Common',
-'latn',
-'Latin',
-'bugi',
-'Buginese',
-'hebr',
-'Hebrew',
-},
-'dt',
-{
-'fra',
-'Fraction',
-'none',
-'None',
-'sml',
-'Small',
-'enc',
-'Circle',
-'font',
-'Font',
-'init',
-'Initial',
-'nb',
-'Nobreak',
-'iso',
-'Isolated',
-'sup',
-'Super',
-'fin',
-'Final',
-'wide',
-'Wide',
-'nar',
-'Narrow',
-'can',
-'Canonical',
-'med',
-'Medial',
-'sub',
-'Sub',
-'vert',
-'Vertical',
-'sqr',
-'Square',
-'com',
-'Compat',
-},
-'nt',
-{
-'none',
-'None',
-'di',
-'Digit',
-'de',
-'Decimal',
-'nu',
-'Numeric',
-},
-'ea',
-{
-'w',
-'Wide',
-'n',
-'Neutral',
-'h',
-'Halfwidth',
-'a',
-'Ambiguous',
-'f',
-'Fullwidth',
-'na',
-'Narrow',
-},
-'NFKC_QC',
-{
-'y',
-'Yes',
-'n',
-'No',
-'m',
-'Maybe',
-},
-'bc',
-{
-'r',
-'RightToLeft',
-'rlo',
-'RightToLeftOverride',
-'es',
-'EuropeanSeparator',
-'ws',
-'WhiteSpace',
-'rle',
-'RightToLeftEmbedding',
-'on',
-'OtherNeutral',
-'bn',
-'BoundaryNeutral',
-'et',
-'EuropeanTerminator',
-'pdf',
-'PopDirectionalFormat',
-'lro',
-'LeftToRightOverride',
-'s',
-'SegmentSeparator',
-'al',
-'ArabicLetter',
-'en',
-'EuropeanNumber',
-'l',
-'LeftToRight',
-'b',
-'ParagraphSeparator',
-'lre',
-'LeftToRightEmbedding',
-'cs',
-'CommonSeparator',
-'nsm',
-'NonspacingMark',
-'an',
-'ArabicNumber',
-},
-'gc',
-{
-'sc',
-'CurrencySymbol',
-'mc',
-'SpacingMark',
-'lm',
-'ModifierLetter',
-'cn',
-'Unassigned',
-'pf',
-'FinalPunctuation',
-'no',
-'OtherNumber',
-'cc',
-'Control',
-'lo',
-'OtherLetter',
-'po',
-'OtherPunctuation',
-'zs',
-'SpaceSeparator',
-'co',
-'PrivateUse',
-'so',
-'OtherSymbol',
-'ll',
-'LowercaseLetter',
-'nd',
-'DecimalNumber',
-'cf',
-'Format',
-'me',
-'EnclosingMark',
-'s',
-'Symbol',
-'zp',
-'ParagraphSeparator',
-'pd',
-'DashPunctuation',
-'c',
-'Other',
-'lt',
-'TitlecaseLetter',
-'cs',
-'Surrogate',
-'l&',
-'CasedLetter',
-'z',
-'Separator',
-'ps',
-'OpenPunctuation',
-'zl',
-'LineSeparator',
-'pc',
-'ConnectorPunctuation',
-'pi',
-'InitialPunctuation',
-'n',
-'Number',
-'m',
-'Mark',
-'nl',
-'LetterNumber',
-'sm',
-'MathSymbol',
-'l',
-'Letter',
-'mn',
-'NonspacingMark',
-'p',
-'Punctuation',
-'lc',
-'CasedLetter',
-'sk',
-'ModifierSymbol',
-'lu',
-'UppercaseLetter',
-'pe',
-'ClosePunctuation',
-},
-'GCB',
-{
-'cn',
-'Control',
-'ex',
-'Extend',
-'v',
-'V',
-'lv',
-'LV',
-'xx',
-'Other',
-'l',
-'L',
-'lvt',
-'LVT',
-'cr',
-'CR',
-'lf',
-'LF',
-'t',
-'T',
-},
-'lb',
-{
-'sp',
-'Space',
-'ba',
-'BreakAfter',
-'gl',
-'Glue',
-'xx',
-'Unknown',
-'nu',
-'Numeric',
-'cb',
-'ContingentBreak',
-'sy',
-'BreakSymbols',
-'cr',
-'CarriageReturn',
-'in',
-'Inseparable',
-'bb',
-'BreakBefore',
-'sg',
-'Surrogate',
-'sa',
-'ComplexContext',
-'po',
-'PostfixNumeric',
-'jl',
-'JL',
-'id',
-'Ideographic',
-'al',
-'Alphabetic',
-'bk',
-'MandatoryBreak',
-'pr',
-'PrefixNumeric',
-'b2',
-'BreakBoth',
-'op',
-'OpenPunctuation',
-'cl',
-'ClosePunctuation',
-'is',
-'InfixNumeric',
-'qu',
-'Quotation',
-'hy',
-'Hyphen',
-'wj',
-'WordJoiner',
-'zw',
-'ZWSpace',
-'jt',
-'JT',
-'ex',
-'Exclamation',
-'cm',
-'CombiningMark',
-'h2',
-'H2',
-'nl',
-'NextLine',
-'ns',
-'Nonstarter',
-'h3',
-'H3',
-'ai',
-'Ambiguous',
-'lf',
-'LineFeed',
-'jv',
-'JV',
-},
-'jt',
-{
-'l',
-'LeftJoining',
-'u',
-'NonJoining',
-'c',
-'JoinCausing',
-'r',
-'RightJoining',
-'d',
-'DualJoining',
-'t',
-'Transparent',
-},
-'NFKD_QC',
-{
-'y',
-'Yes',
-'n',
-'No',
-},
-'NFC_QC',
-{
-'y',
-'Yes',
-'n',
-'No',
-'m',
-'Maybe',
-},
-'hst',
-{
-'l',
-'LeadingJamo',
-'lvt',
-'LVTSyllable',
-'v',
-'VowelJamo',
-'lv',
-'LVSyllable',
-'t',
-'TrailingJamo',
-'na',
-'NotApplicable',
-},
-'NFD_QC',
-{
-'y',
-'Yes',
-'n',
-'No',
-},
-'WB',
-{
-'ml',
-'MidLetter',
-'le',
-'ALetter',
-'ex',
-'ExtendNumLet',
-'xx',
-'Other',
-'nu',
-'Numeric',
-'fo',
-'Format',
-'mn',
-'MidNum',
-'ka',
-'Katakana',
-},
-'SB',
-{
-'sp',
-'Sp',
-'cl',
-'Close',
-'le',
-'OLetter',
-'up',
-'Upper',
-'st',
-'STerm',
-'xx',
-'Other',
-'nu',
-'Numeric',
-'fo',
-'Format',
-'se',
-'Sep',
-'lo',
-'Lower',
-'at',
-'ATerm',
-},
-'ccc',
-{
-'atb',
-'AttachedBelow',
-'db',
-'DoubleBelow',
-'a',
-'Above',
-'r',
-'Right',
-'da',
-'DoubleAbove',
-'is',
-'IotaSubscript',
-'nr',
-'NotReordered',
-'ov',
-'Overlay',
-'br',
-'BelowRight',
-'nk',
-'Nukta',
-'atbl',
-'AttachedBelowLeft',
-'al',
-'AboveLeft',
-'ar',
-'AboveRight',
-'atar',
-'AttachedAboveRight',
-'l',
-'Left',
-'b',
-'Below',
-'vr',
-'Virama',
-'kv',
-'KanaVoicing',
-'bl',
-'BelowLeft',
-},
-);
-
-%utf8::PVA_reverse = (
-'sc',
-{
-'newtailue',
-'Talu',
-'canadianaboriginal',
-'Cans',
-'gujarati',
-'Gujr',
-'latin',
-'Latn',
-'hangul',
-'Hang',
-'deseret',
-'Dsrt',
-'hebrew',
-'Hebr',
-'inherited',
-'Qaai',
-'linearb',
-'Linb',
-'ugaritic',
-'Ugar',
-'taile',
-'Tale',
-'armenian',
-'Armn',
-'tifinagh',
-'Tfng',
-'myanmar',
-'Mymr',
-'gurmukhi',
-'Guru',
-'greek',
-'Grek',
-'coptic',
-'Copt',
-'cyrillic',
-'Cyrl',
-'thaana',
-'Thaa',
-'lao',
-'Laoo',
-'katakana',
-'Kana',
-'khmer',
-'Khmr',
-'tibetan',
-'Tibt',
-'hiragana',
-'Hira',
-'mongolian',
-'Mong',
-'thai',
-'Thai',
-'yi',
-'Yiii',
-'sylotinagri',
-'Sylo',
-'bopomofo',
-'Bopo',
-'malayalam',
-'Mlym',
-'telugu',
-'Telu',
-'limbu',
-'Limb',
-'oriya',
-'Orya',
-'buhid',
-'Buhd',
-'cypriot',
-'Cprt',
-'bengali',
-'Beng',
-'katakanaorhiragana',
-'Hrkt',
-'oldpersian',
-'Xpeo',
-'tagalog',
-'Tglg',
-'syriac',
-'Syrc',
-'cherokee',
-'Cher',
-'ogham',
-'Ogam',
-'hanunoo',
-'Hano',
-'braille',
-'Brai',
-'tamil',
-'Taml',
-'common',
-'Zyyy',
-'runic',
-'Runr',
-'georgian',
-'Geor',
-'ethiopic',
-'Ethi',
-'glagolitic',
-'Glag',
-'han',
-'Hani',
-'kharoshthi',
-'Khar',
-'kannada',
-'Knda',
-'tagbanwa',
-'Tagb',
-'arabic',
-'Arab',
-'sinhala',
-'Sinh',
-'gothic',
-'Goth',
-'osmanya',
-'Osma',
-'olditalic',
-'Ital',
-'devanagari',
-'Deva',
-'buginese',
-'Bugi',
-'shavian',
-'Shaw',
-},
-'dt',
-{
-'small',
-'sml',
-'none',
-'none',
-'isolated',
-'iso',
-'narrow',
-'nar',
-'square',
-'sqr',
-'nobreak',
-'nb',
-'fraction',
-'fra',
-'font',
-'font',
-'medial',
-'med',
-'wide',
-'wide',
-'canonical',
-'can',
-'circle',
-'enc',
-'super',
-'sup',
-'vertical',
-'vert',
-'final',
-'fin',
-'compat',
-'com',
-'sub',
-'sub',
-'initial',
-'init',
-},
-'nt',
-{
-'none',
-'None',
-'digit',
-'Di',
-'numeric',
-'Nu',
-'decimal',
-'De',
-},
-'ea',
-{
-'halfwidth',
-'H',
-'fullwidth',
-'F',
-'ambiguous',
-'A',
-'narrow',
-'Na',
-'wide',
-'W',
-'neutral',
-'N',
-},
-'NFKC_QC',
-{
-'yes',
-'Y',
-'maybe',
-'M',
-'no',
-'N',
-},
-'bc',
-{
-'nonspacingmark',
-'NSM',
-'whitespace',
-'WS',
-'righttoleft',
-'R',
-'lefttoright',
-'L',
-'boundaryneutral',
-'BN',
-'segmentseparator',
-'S',
-'lefttorightembedding',
-'LRE',
-'europeanterminator',
-'ET',
-'righttoleftembedding',
-'RLE',
-'righttoleftoverride',
-'RLO',
-'lefttorightoverride',
-'LRO',
-'europeanseparator',
-'ES',
-'europeannumber',
-'EN',
-'commonseparator',
-'CS',
-'arabicletter',
-'AL',
-'paragraphseparator',
-'B',
-'otherneutral',
-'ON',
-'popdirectionalformat',
-'PDF',
-'arabicnumber',
-'AN',
-},
-'gc',
-{
-'modifiersymbol',
-'Sk',
-'letternumber',
-'Nl',
-'connectorpunctuation',
-'Pc',
-'spacingmark',
-'Mc',
-'mark',
-'M',
-'unassigned',
-'Cn',
-'enclosingmark',
-'Me',
-'lineseparator',
-'Zl',
-'lowercaseletter',
-'Ll',
-'symbol',
-'S',
-'letter',
-'L',
-'othernumber',
-'No',
-'paragraphseparator',
-'Zp',
-'modifierletter',
-'Lm',
-'titlecaseletter',
-'Lt',
-'decimalnumber',
-'Nd',
-'other',
-'C',
-'mathsymbol',
-'Sm',
-'surrogate',
-'Cs',
-'otherletter',
-'Lo',
-'nonspacingmark',
-'Mn',
-'number',
-'N',
-'uppercaseletter',
-'Lu',
-'spaceseparator',
-'Zs',
-'privateuse',
-'Co',
-'openpunctuation',
-'Ps',
-'punctuation',
-'P',
-'control',
-'Cc',
-'casedletter',
-'LC',
-'closepunctuation',
-'Pe',
-'otherpunctuation',
-'Po',
-'finalpunctuation',
-'Pf',
-'format',
-'Cf',
-'initialpunctuation',
-'Pi',
-'separator',
-'Z',
-'othersymbol',
-'So',
-'dashpunctuation',
-'Pd',
-'currencysymbol',
-'Sc',
-},
-'GCB',
-{
-'extend',
-'EX',
-'v',
-'V',
-'lv',
-'LV',
-'l',
-'L',
-'lvt',
-'LVT',
-'cr',
-'CR',
-'other',
-'XX',
-'lf',
-'LF',
-'control',
-'CN',
-'t',
-'T',
-},
-'lb',
-{
-'carriagereturn',
-'CR',
-'ideographic',
-'ID',
-'hyphen',
-'HY',
-'ambiguous',
-'AI',
-'contingentbreak',
-'CB',
-'complexcontext',
-'SA',
-'prefixnumeric',
-'PR',
-'jl',
-'JL',
-'inseparable',
-'IN',
-'breaksymbols',
-'SY',
-'breakafter',
-'BA',
-'breakbefore',
-'BB',
-'postfixnumeric',
-'PO',
-'glue',
-'GL',
-'wordjoiner',
-'WJ',
-'breakboth',
-'B2',
-'quotation',
-'QU',
-'combiningmark',
-'CM',
-'nonstarter',
-'NS',
-'linefeed',
-'LF',
-'alphabetic',
-'AL',
-'surrogate',
-'SG',
-'mandatorybreak',
-'BK',
-'unknown',
-'XX',
-'exclamation',
-'EX',
-'openpunctuation',
-'OP',
-'jt',
-'JT',
-'closepunctuation',
-'CL',
-'space',
-'SP',
-'zwspace',
-'ZW',
-'h2',
-'H2',
-'infixnumeric',
-'IS',
-'nextline',
-'NL',
-'numeric',
-'NU',
-'h3',
-'H3',
-'jv',
-'JV',
-},
-'jt',
-{
-'leftjoining',
-'L',
-'transparent',
-'T',
-'nonjoining',
-'U',
-'rightjoining',
-'R',
-'dualjoining',
-'D',
-'joincausing',
-'C',
-},
-'NFKD_QC',
-{
-'yes',
-'Y',
-'no',
-'N',
-},
-'NFC_QC',
-{
-'yes',
-'Y',
-'maybe',
-'M',
-'no',
-'N',
-},
-'hst',
-{
-'lvtsyllable',
-'LVT',
-'lvsyllable',
-'LV',
-'leadingjamo',
-'L',
-'notapplicable',
-'NA',
-'voweljamo',
-'V',
-'trailingjamo',
-'T',
-},
-'NFD_QC',
-{
-'yes',
-'Y',
-'no',
-'N',
-},
-'WB',
-{
-'midletter',
-'ML',
-'format',
-'FO',
-'katakana',
-'KA',
-'other',
-'XX',
-'midnum',
-'MN',
-'numeric',
-'NU',
-'extendnumlet',
-'EX',
-'aletter',
-'LE',
-},
-'SB',
-{
-'sp',
-'SP',
-'upper',
-'UP',
-'sterm',
-'ST',
-'aterm',
-'AT',
-'close',
-'CL',
-'oletter',
-'LE',
-'sep',
-'SE',
-'format',
-'FO',
-'other',
-'XX',
-'lower',
-'LO',
-'numeric',
-'NU',
-},
-'ccc',
-{
-'left',
-'L',
-'attachedbelowleft',
-'ATBL',
-'belowleft',
-'BL',
-'aboveright',
-'AR',
-'kanavoicing',
-'KV',
-'above',
-'A',
-'aboveleft',
-'AL',
-'nukta',
-'NK',
-'below',
-'B',
-'doublebelow',
-'DB',
-'virama',
-'VR',
-'belowright',
-'BR',
-'notreordered',
-'NR',
-'attachedbelow',
-'ATB',
-'right',
-'R',
-'iotasubscript',
-'IS',
-'doubleabove',
-'DA',
-'attachedaboveright',
-'ATAR',
-'overlay',
-'OV',
-},
-);
-
-%utf8::PVA_abbr_map = (
-'jt',
-{
-'l',
-'L',
-'u',
-'U',
-'c',
-'C',
-'r',
-'R',
-'d',
-'D',
-'t',
-'T',
-},
-'dt',
-{
-'fra',
-'fra',
-'none',
-'none',
-'sml',
-'sml',
-'enc',
-'enc',
-'font',
-'font',
-'init',
-'init',
-'nb',
-'nb',
-'iso',
-'iso',
-'sup',
-'sup',
-'fin',
-'fin',
-'wide',
-'wide',
-'nar',
-'nar',
-'can',
-'can',
-'med',
-'med',
-'sub',
-'sub',
-'vert',
-'vert',
-'sqr',
-'sqr',
-'com',
-'com',
-},
-'nt',
-{
-'none',
-'None',
-'di',
-'Di',
-'de',
-'De',
-'nu',
-'Nu',
-},
-'NFKD_QC',
-{
-'y',
-'Y',
-'n',
-'N',
-},
-'ea',
-{
-'w',
-'W',
-'n',
-'N',
-'h',
-'H',
-'a',
-'A',
-'f',
-'F',
-'na',
-'Na',
-},
-'gc_sc',
-{
-'runr',
-'Runr',
-'osma',
-'Osma',
-'sc',
-'Sc',
-'mc',
-'Mc',
-'hano',
-'Hano',
-'cans',
-'Cans',
-'lm',
-'Lm',
-'cn',
-'Cn',
-'knda',
-'Knda',
-'orya',
-'Orya',
-'cher',
-'Cher',
-'khmr',
-'Khmr',
-'ogam',
-'Ogam',
-'lo',
-'Lo',
-'po',
-'Po',
-'co',
-'Co',
-'ital',
-'Ital',
-'ll',
-'Ll',
-'tibt',
-'Tibt',
-'kana',
-'Kana',
-'zp',
-'Zp',
-'gujr',
-'Gujr',
-'thaa',
-'Thaa',
-'cs',
-'Cs',
-'copt',
-'Copt',
-'z',
-'Z',
-'ps',
-'Ps',
-'sylo',
-'Sylo',
-'talu',
-'Talu',
-'laoo',
-'Laoo',
-'sinh',
-'Sinh',
-'zl',
-'Zl',
-'pc',
-'Pc',
-'hira',
-'Hira',
-'limb',
-'Limb',
-'mymr',
-'Mymr',
-'yiii',
-'Yiii',
-'arab',
-'Arab',
-'deva',
-'Deva',
-'xpeo',
-'Xpeo',
-'cprt',
-'Cprt',
-'bugi',
-'Bugi',
-'sk',
-'Sk',
-'hebr',
-'Hebr',
-'lu',
-'Lu',
-'pe',
-'Pe',
-'tglg',
-'Tglg',
-'tagb',
-'Tagb',
-'mlym',
-'Mlym',
-'pf',
-'Pf',
-'no',
-'No',
-'grek',
-'Grek',
-'ethi',
-'Ethi',
-'mong',
-'Mong',
-'cc',
-'Cc',
-'hrkt',
-'Hrkt',
-'armn',
-'Armn',
-'zs',
-'Zs',
-'so',
-'So',
-'hani',
-'Hani',
-'shaw',
-'Shaw',
-'taml',
-'Taml',
-'me',
-'Me',
-'cf',
-'Cf',
-'nd',
-'Nd',
-'s',
-'S',
-'guru',
-'Guru',
-'ugar',
-'Ugar',
-'qaai',
-'Qaai',
-'lt',
-'Lt',
-'c',
-'C',
-'pd',
-'Pd',
-'cyrl',
-'Cyrl',
-'l&',
-'LC',
-'thai',
-'Thai',
-'beng',
-'Beng',
-'brai',
-'Brai',
-'telu',
-'Telu',
-'pi',
-'Pi',
-'geor',
-'Geor',
-'glag',
-'Glag',
-'hang',
-'Hang',
-'syrc',
-'Syrc',
-'tfng',
-'Tfng',
-'n',
-'N',
-'dsrt',
-'Dsrt',
-'buhd',
-'Buhd',
-'m',
-'M',
-'khar',
-'Khar',
-'sm',
-'Sm',
-'nl',
-'Nl',
-'bopo',
-'Bopo',
-'linb',
-'Linb',
-'mn',
-'Mn',
-'l',
-'L',
-'p',
-'P',
-'goth',
-'Goth',
-'tale',
-'Tale',
-'lc',
-'LC',
-'zyyy',
-'Zyyy',
-'latn',
-'Latn',
-},
-'NFC_QC',
-{
-'y',
-'Y',
-'n',
-'N',
-'m',
-'M',
-},
-'NFD_QC',
-{
-'y',
-'Y',
-'n',
-'N',
-},
-'hst',
-{
-'l',
-'L',
-'lvt',
-'LVT',
-'v',
-'V',
-'lv',
-'LV',
-'t',
-'T',
-'na',
-'NA',
-},
-'NFKC_QC',
-{
-'y',
-'Y',
-'n',
-'N',
-'m',
-'M',
-},
-'WB',
-{
-'ml',
-'ML',
-'le',
-'LE',
-'ex',
-'EX',
-'xx',
-'XX',
-'nu',
-'NU',
-'fo',
-'FO',
-'mn',
-'MN',
-'ka',
-'KA',
-},
-'SB',
-{
-'sp',
-'SP',
-'cl',
-'CL',
-'le',
-'LE',
-'up',
-'UP',
-'st',
-'ST',
-'xx',
-'XX',
-'nu',
-'NU',
-'fo',
-'FO',
-'se',
-'SE',
-'lo',
-'LO',
-'at',
-'AT',
-},
-'bc',
-{
-'r',
-'R',
-'rlo',
-'RLO',
-'es',
-'ES',
-'ws',
-'WS',
-'rle',
-'RLE',
-'on',
-'ON',
-'bn',
-'BN',
-'et',
-'ET',
-'pdf',
-'PDF',
-'lro',
-'LRO',
-'s',
-'S',
-'al',
-'AL',
-'en',
-'EN',
-'l',
-'L',
-'b',
-'B',
-'lre',
-'LRE',
-'cs',
-'CS',
-'nsm',
-'NSM',
-'an',
-'AN',
-},
-'GCB',
-{
-'cn',
-'CN',
-'ex',
-'EX',
-'v',
-'V',
-'lv',
-'LV',
-'xx',
-'XX',
-'l',
-'L',
-'lvt',
-'LVT',
-'cr',
-'CR',
-'lf',
-'LF',
-'t',
-'T',
-},
-'ccc',
-{
-'atb',
-'ATB',
-'db',
-'DB',
-'a',
-'A',
-'r',
-'R',
-'da',
-'DA',
-'is',
-'IS',
-'nr',
-'NR',
-'ov',
-'OV',
-'br',
-'BR',
-'nk',
-'NK',
-'atbl',
-'ATBL',
-'al',
-'AL',
-'ar',
-'AR',
-'atar',
-'ATAR',
-'l',
-'L',
-'b',
-'B',
-'vr',
-'VR',
-'kv',
-'KV',
-'bl',
-'BL',
-},
-'lb',
-{
-'sp',
-'SP',
-'ba',
-'BA',
-'gl',
-'GL',
-'xx',
-'XX',
-'nu',
-'NU',
-'cb',
-'CB',
-'sy',
-'SY',
-'cr',
-'CR',
-'in',
-'IN',
-'bb',
-'BB',
-'sg',
-'SG',
-'sa',
-'SA',
-'po',
-'PO',
-'jl',
-'JL',
-'id',
-'ID',
-'al',
-'AL',
-'bk',
-'BK',
-'pr',
-'PR',
-'b2',
-'B2',
-'op',
-'OP',
-'cl',
-'CL',
-'is',
-'IS',
-'qu',
-'QU',
-'hy',
-'HY',
-'wj',
-'WJ',
-'zw',
-'ZW',
-'jt',
-'JT',
-'ex',
-'EX',
-'cm',
-'CM',
-'h2',
-'H2',
-'nl',
-'NL',
-'ns',
-'NS',
-'h3',
-'H3',
-'ai',
-'AI',
-'lf',
-'LF',
-'jv',
-'JV',
-},
-);
-1;
diff --git a/Master/tlpkg/tlperl/lib/unicore/PropList.txt b/Master/tlpkg/tlperl/lib/unicore/PropList.txt
deleted file mode 100644
index befc49e8e64..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/PropList.txt
+++ /dev/null
@@ -1,1049 +0,0 @@
-# PropList-4.1.0.txt
-# Date: 2005-03-26, 00:34:40 GMT [MD]
-#
-# Unicode Character Database
-# Copyright (c) 1991-2005 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see UCD.html
-
-# ================================================
-
-0009..000D ; White_Space # Cc [5] <control-0009>..<control-000D>
-0020 ; White_Space # Zs SPACE
-0085 ; White_Space # Cc <control-0085>
-00A0 ; White_Space # Zs NO-BREAK SPACE
-1680 ; White_Space # Zs OGHAM SPACE MARK
-180E ; White_Space # Zs MONGOLIAN VOWEL SEPARATOR
-2000..200A ; White_Space # Zs [11] EN QUAD..HAIR SPACE
-2028 ; White_Space # Zl LINE SEPARATOR
-2029 ; White_Space # Zp PARAGRAPH SEPARATOR
-202F ; White_Space # Zs NARROW NO-BREAK SPACE
-205F ; White_Space # Zs MEDIUM MATHEMATICAL SPACE
-3000 ; White_Space # Zs IDEOGRAPHIC SPACE
-
-# Total code points: 26
-
-# ================================================
-
-200E..200F ; Bidi_Control # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
-202A..202E ; Bidi_Control # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
-
-# Total code points: 7
-
-# ================================================
-
-200C..200D ; Join_Control # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
-
-# Total code points: 2
-
-# ================================================
-
-002D ; Dash # Pd HYPHEN-MINUS
-058A ; Dash # Pd ARMENIAN HYPHEN
-1806 ; Dash # Pd MONGOLIAN TODO SOFT HYPHEN
-2010..2015 ; Dash # Pd [6] HYPHEN..HORIZONTAL BAR
-2053 ; Dash # Po SWUNG DASH
-207B ; Dash # Sm SUPERSCRIPT MINUS
-208B ; Dash # Sm SUBSCRIPT MINUS
-2212 ; Dash # Sm MINUS SIGN
-2E17 ; Dash # Pd DOUBLE OBLIQUE HYPHEN
-301C ; Dash # Pd WAVE DASH
-3030 ; Dash # Pd WAVY DASH
-30A0 ; Dash # Pd KATAKANA-HIRAGANA DOUBLE HYPHEN
-FE31..FE32 ; Dash # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
-FE58 ; Dash # Pd SMALL EM DASH
-FE63 ; Dash # Pd SMALL HYPHEN-MINUS
-FF0D ; Dash # Pd FULLWIDTH HYPHEN-MINUS
-
-# Total code points: 22
-
-# ================================================
-
-002D ; Hyphen # Pd HYPHEN-MINUS
-00AD ; Hyphen # Cf SOFT HYPHEN
-058A ; Hyphen # Pd ARMENIAN HYPHEN
-1806 ; Hyphen # Pd MONGOLIAN TODO SOFT HYPHEN
-2010..2011 ; Hyphen # Pd [2] HYPHEN..NON-BREAKING HYPHEN
-2E17 ; Hyphen # Pd DOUBLE OBLIQUE HYPHEN
-30FB ; Hyphen # Po KATAKANA MIDDLE DOT
-FE63 ; Hyphen # Pd SMALL HYPHEN-MINUS
-FF0D ; Hyphen # Pd FULLWIDTH HYPHEN-MINUS
-FF65 ; Hyphen # Po HALFWIDTH KATAKANA MIDDLE DOT
-
-# Total code points: 11
-
-# ================================================
-
-0022 ; Quotation_Mark # Po QUOTATION MARK
-0027 ; Quotation_Mark # Po APOSTROPHE
-00AB ; Quotation_Mark # Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-00BB ; Quotation_Mark # Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-2018 ; Quotation_Mark # Pi LEFT SINGLE QUOTATION MARK
-2019 ; Quotation_Mark # Pf RIGHT SINGLE QUOTATION MARK
-201A ; Quotation_Mark # Ps SINGLE LOW-9 QUOTATION MARK
-201B..201C ; Quotation_Mark # Pi [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK
-201D ; Quotation_Mark # Pf RIGHT DOUBLE QUOTATION MARK
-201E ; Quotation_Mark # Ps DOUBLE LOW-9 QUOTATION MARK
-201F ; Quotation_Mark # Pi DOUBLE HIGH-REVERSED-9 QUOTATION MARK
-2039 ; Quotation_Mark # Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-203A ; Quotation_Mark # Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-300C ; Quotation_Mark # Ps LEFT CORNER BRACKET
-300D ; Quotation_Mark # Pe RIGHT CORNER BRACKET
-300E ; Quotation_Mark # Ps LEFT WHITE CORNER BRACKET
-300F ; Quotation_Mark # Pe RIGHT WHITE CORNER BRACKET
-301D ; Quotation_Mark # Ps REVERSED DOUBLE PRIME QUOTATION MARK
-301E..301F ; Quotation_Mark # Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK
-FE41 ; Quotation_Mark # Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
-FE42 ; Quotation_Mark # Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
-FE43 ; Quotation_Mark # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
-FE44 ; Quotation_Mark # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
-FF02 ; Quotation_Mark # Po FULLWIDTH QUOTATION MARK
-FF07 ; Quotation_Mark # Po FULLWIDTH APOSTROPHE
-FF62 ; Quotation_Mark # Ps HALFWIDTH LEFT CORNER BRACKET
-FF63 ; Quotation_Mark # Pe HALFWIDTH RIGHT CORNER BRACKET
-
-# Total code points: 29
-
-# ================================================
-
-0021 ; Terminal_Punctuation # Po EXCLAMATION MARK
-002C ; Terminal_Punctuation # Po COMMA
-002E ; Terminal_Punctuation # Po FULL STOP
-003A..003B ; Terminal_Punctuation # Po [2] COLON..SEMICOLON
-003F ; Terminal_Punctuation # Po QUESTION MARK
-037E ; Terminal_Punctuation # Po GREEK QUESTION MARK
-0387 ; Terminal_Punctuation # Po GREEK ANO TELEIA
-0589 ; Terminal_Punctuation # Po ARMENIAN FULL STOP
-05C3 ; Terminal_Punctuation # Po HEBREW PUNCTUATION SOF PASUQ
-060C ; Terminal_Punctuation # Po ARABIC COMMA
-061B ; Terminal_Punctuation # Po ARABIC SEMICOLON
-061F ; Terminal_Punctuation # Po ARABIC QUESTION MARK
-06D4 ; Terminal_Punctuation # Po ARABIC FULL STOP
-0700..070A ; Terminal_Punctuation # Po [11] SYRIAC END OF PARAGRAPH..SYRIAC CONTRACTION
-070C ; Terminal_Punctuation # Po SYRIAC HARKLEAN METOBELUS
-0964..0965 ; Terminal_Punctuation # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
-0E5A..0E5B ; Terminal_Punctuation # Po [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT
-0F08 ; Terminal_Punctuation # Po TIBETAN MARK SBRUL SHAD
-0F0D..0F12 ; Terminal_Punctuation # Po [6] TIBETAN MARK SHAD..TIBETAN MARK RGYA GRAM SHAD
-104A..104B ; Terminal_Punctuation # Po [2] MYANMAR SIGN LITTLE SECTION..MYANMAR SIGN SECTION
-1361..1368 ; Terminal_Punctuation # Po [8] ETHIOPIC WORDSPACE..ETHIOPIC PARAGRAPH SEPARATOR
-166D..166E ; Terminal_Punctuation # Po [2] CANADIAN SYLLABICS CHI SIGN..CANADIAN SYLLABICS FULL STOP
-16EB..16ED ; Terminal_Punctuation # Po [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION
-17D4..17D6 ; Terminal_Punctuation # Po [3] KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH
-17DA ; Terminal_Punctuation # Po KHMER SIGN KOOMUUT
-1802..1805 ; Terminal_Punctuation # Po [4] MONGOLIAN COMMA..MONGOLIAN FOUR DOTS
-1808..1809 ; Terminal_Punctuation # Po [2] MONGOLIAN MANCHU COMMA..MONGOLIAN MANCHU FULL STOP
-1944..1945 ; Terminal_Punctuation # Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK
-203C..203D ; Terminal_Punctuation # Po [2] DOUBLE EXCLAMATION MARK..INTERROBANG
-2047..2049 ; Terminal_Punctuation # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
-3001..3002 ; Terminal_Punctuation # Po [2] IDEOGRAPHIC COMMA..IDEOGRAPHIC FULL STOP
-FE50..FE52 ; Terminal_Punctuation # Po [3] SMALL COMMA..SMALL FULL STOP
-FE54..FE57 ; Terminal_Punctuation # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK
-FF01 ; Terminal_Punctuation # Po FULLWIDTH EXCLAMATION MARK
-FF0C ; Terminal_Punctuation # Po FULLWIDTH COMMA
-FF0E ; Terminal_Punctuation # Po FULLWIDTH FULL STOP
-FF1A..FF1B ; Terminal_Punctuation # Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON
-FF1F ; Terminal_Punctuation # Po FULLWIDTH QUESTION MARK
-FF61 ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC FULL STOP
-FF64 ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC COMMA
-
-# Total code points: 86
-
-# ================================================
-
-005E ; Other_Math # Sk CIRCUMFLEX ACCENT
-03D0..03D2 ; Other_Math # L& [3] GREEK BETA SYMBOL..GREEK UPSILON WITH HOOK SYMBOL
-03D5 ; Other_Math # L& GREEK PHI SYMBOL
-03F0..03F1 ; Other_Math # L& [2] GREEK KAPPA SYMBOL..GREEK RHO SYMBOL
-03F4..03F5 ; Other_Math # L& [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL
-2016 ; Other_Math # Po DOUBLE VERTICAL LINE
-2032..2034 ; Other_Math # Po [3] PRIME..TRIPLE PRIME
-2040 ; Other_Math # Pc CHARACTER TIE
-2061..2063 ; Other_Math # Cf [3] FUNCTION APPLICATION..INVISIBLE SEPARATOR
-207D ; Other_Math # Ps SUPERSCRIPT LEFT PARENTHESIS
-207E ; Other_Math # Pe SUPERSCRIPT RIGHT PARENTHESIS
-208D ; Other_Math # Ps SUBSCRIPT LEFT PARENTHESIS
-208E ; Other_Math # Pe SUBSCRIPT RIGHT PARENTHESIS
-20D0..20DC ; Other_Math # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
-20E1 ; Other_Math # Mn COMBINING LEFT RIGHT ARROW ABOVE
-20E5..20E6 ; Other_Math # Mn [2] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING DOUBLE VERTICAL STROKE OVERLAY
-2102 ; Other_Math # L& DOUBLE-STRUCK CAPITAL C
-210A..2113 ; Other_Math # L& [10] SCRIPT SMALL G..SCRIPT SMALL L
-2115 ; Other_Math # L& DOUBLE-STRUCK CAPITAL N
-2119..211D ; Other_Math # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
-2124 ; Other_Math # L& DOUBLE-STRUCK CAPITAL Z
-2128 ; Other_Math # L& BLACK-LETTER CAPITAL Z
-2129 ; Other_Math # So TURNED GREEK SMALL LETTER IOTA
-212C..212D ; Other_Math # L& [2] SCRIPT CAPITAL B..BLACK-LETTER CAPITAL C
-212F..2131 ; Other_Math # L& [3] SCRIPT SMALL E..SCRIPT CAPITAL F
-2133..2134 ; Other_Math # L& [2] SCRIPT CAPITAL M..SCRIPT SMALL O
-2135..2138 ; Other_Math # Lo [4] ALEF SYMBOL..DALET SYMBOL
-213C..213F ; Other_Math # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
-2145..2149 ; Other_Math # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
-23B7 ; Other_Math # So RADICAL SYMBOL BOTTOM
-23D0 ; Other_Math # So VERTICAL LINE EXTENSION
-27C5 ; Other_Math # Ps LEFT S-SHAPED BAG DELIMITER
-27C6 ; Other_Math # Pe RIGHT S-SHAPED BAG DELIMITER
-27E6 ; Other_Math # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET
-27E7 ; Other_Math # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET
-27E8 ; Other_Math # Ps MATHEMATICAL LEFT ANGLE BRACKET
-27E9 ; Other_Math # Pe MATHEMATICAL RIGHT ANGLE BRACKET
-27EA ; Other_Math # Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
-27EB ; Other_Math # Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
-2983 ; Other_Math # Ps LEFT WHITE CURLY BRACKET
-2984 ; Other_Math # Pe RIGHT WHITE CURLY BRACKET
-2985 ; Other_Math # Ps LEFT WHITE PARENTHESIS
-2986 ; Other_Math # Pe RIGHT WHITE PARENTHESIS
-2987 ; Other_Math # Ps Z NOTATION LEFT IMAGE BRACKET
-2988 ; Other_Math # Pe Z NOTATION RIGHT IMAGE BRACKET
-2989 ; Other_Math # Ps Z NOTATION LEFT BINDING BRACKET
-298A ; Other_Math # Pe Z NOTATION RIGHT BINDING BRACKET
-298B ; Other_Math # Ps LEFT SQUARE BRACKET WITH UNDERBAR
-298C ; Other_Math # Pe RIGHT SQUARE BRACKET WITH UNDERBAR
-298D ; Other_Math # Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
-298E ; Other_Math # Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-298F ; Other_Math # Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-2990 ; Other_Math # Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
-2991 ; Other_Math # Ps LEFT ANGLE BRACKET WITH DOT
-2992 ; Other_Math # Pe RIGHT ANGLE BRACKET WITH DOT
-2993 ; Other_Math # Ps LEFT ARC LESS-THAN BRACKET
-2994 ; Other_Math # Pe RIGHT ARC GREATER-THAN BRACKET
-2995 ; Other_Math # Ps DOUBLE LEFT ARC GREATER-THAN BRACKET
-2996 ; Other_Math # Pe DOUBLE RIGHT ARC LESS-THAN BRACKET
-2997 ; Other_Math # Ps LEFT BLACK TORTOISE SHELL BRACKET
-2998 ; Other_Math # Pe RIGHT BLACK TORTOISE SHELL BRACKET
-29D8 ; Other_Math # Ps LEFT WIGGLY FENCE
-29D9 ; Other_Math # Pe RIGHT WIGGLY FENCE
-29DA ; Other_Math # Ps LEFT DOUBLE WIGGLY FENCE
-29DB ; Other_Math # Pe RIGHT DOUBLE WIGGLY FENCE
-29FC ; Other_Math # Ps LEFT-POINTING CURVED ANGLE BRACKET
-29FD ; Other_Math # Pe RIGHT-POINTING CURVED ANGLE BRACKET
-FE61 ; Other_Math # Po SMALL ASTERISK
-FE63 ; Other_Math # Pd SMALL HYPHEN-MINUS
-FE68 ; Other_Math # Po SMALL REVERSE SOLIDUS
-FF3C ; Other_Math # Po FULLWIDTH REVERSE SOLIDUS
-FF3E ; Other_Math # Sk FULLWIDTH CIRCUMFLEX ACCENT
-1D400..1D454 ; Other_Math # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
-1D456..1D49C ; Other_Math # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
-1D49E..1D49F ; Other_Math # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
-1D4A2 ; Other_Math # L& MATHEMATICAL SCRIPT CAPITAL G
-1D4A5..1D4A6 ; Other_Math # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
-1D4A9..1D4AC ; Other_Math # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
-1D4AE..1D4B9 ; Other_Math # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
-1D4BB ; Other_Math # L& MATHEMATICAL SCRIPT SMALL F
-1D4BD..1D4C3 ; Other_Math # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
-1D4C5..1D505 ; Other_Math # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
-1D507..1D50A ; Other_Math # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
-1D50D..1D514 ; Other_Math # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
-1D516..1D51C ; Other_Math # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
-1D51E..1D539 ; Other_Math # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
-1D53B..1D53E ; Other_Math # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
-1D540..1D544 ; Other_Math # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
-1D546 ; Other_Math # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O
-1D54A..1D550 ; Other_Math # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
-1D552..1D6A3 ; Other_Math # L& [338] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL MONOSPACE SMALL Z
-1D6A8..1D6C0 ; Other_Math # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
-1D6C2..1D6DA ; Other_Math # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
-1D6DC..1D6FA ; Other_Math # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
-1D6FC..1D714 ; Other_Math # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
-1D716..1D734 ; Other_Math # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
-1D736..1D74E ; Other_Math # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
-1D750..1D76E ; Other_Math # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
-1D770..1D788 ; Other_Math # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
-1D78A..1D7A8 ; Other_Math # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
-1D7AA..1D7C2 ; Other_Math # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
-1D7C4..1D7C9 ; Other_Math # L& [6] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
-1D7CE..1D7FF ; Other_Math # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
-
-# Total code points: 1102
-
-# ================================================
-
-0030..0039 ; Hex_Digit # Nd [10] DIGIT ZERO..DIGIT NINE
-0041..0046 ; Hex_Digit # L& [6] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER F
-0061..0066 ; Hex_Digit # L& [6] LATIN SMALL LETTER A..LATIN SMALL LETTER F
-FF10..FF19 ; Hex_Digit # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
-FF21..FF26 ; Hex_Digit # L& [6] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER F
-FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER F
-
-# Total code points: 44
-
-# ================================================
-
-0030..0039 ; ASCII_Hex_Digit # Nd [10] DIGIT ZERO..DIGIT NINE
-0041..0046 ; ASCII_Hex_Digit # L& [6] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER F
-0061..0066 ; ASCII_Hex_Digit # L& [6] LATIN SMALL LETTER A..LATIN SMALL LETTER F
-
-# Total code points: 22
-
-# ================================================
-
-0345 ; Other_Alphabetic # Mn COMBINING GREEK YPOGEGRAMMENI
-05B0..05B9 ; Other_Alphabetic # Mn [10] HEBREW POINT SHEVA..HEBREW POINT HOLAM
-05BB..05BD ; Other_Alphabetic # Mn [3] HEBREW POINT QUBUTS..HEBREW POINT METEG
-05BF ; Other_Alphabetic # Mn HEBREW POINT RAFE
-05C1..05C2 ; Other_Alphabetic # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
-05C4..05C5 ; Other_Alphabetic # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
-05C7 ; Other_Alphabetic # Mn HEBREW POINT QAMATS QATAN
-0610..0615 ; Other_Alphabetic # Mn [6] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL HIGH TAH
-064B..0657 ; Other_Alphabetic # Mn [13] ARABIC FATHATAN..ARABIC INVERTED DAMMA
-0659..065E ; Other_Alphabetic # Mn [6] ARABIC ZWARAKAY..ARABIC FATHA WITH TWO DOTS
-0670 ; Other_Alphabetic # Mn ARABIC LETTER SUPERSCRIPT ALEF
-06D6..06DC ; Other_Alphabetic # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
-06E1..06E4 ; Other_Alphabetic # Mn [4] ARABIC SMALL HIGH DOTLESS HEAD OF KHAH..ARABIC SMALL HIGH MADDA
-06E7..06E8 ; Other_Alphabetic # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
-06ED ; Other_Alphabetic # Mn ARABIC SMALL LOW MEEM
-0711 ; Other_Alphabetic # Mn SYRIAC LETTER SUPERSCRIPT ALAPH
-0730..073F ; Other_Alphabetic # Mn [16] SYRIAC PTHAHA ABOVE..SYRIAC RWAHA
-07A6..07B0 ; Other_Alphabetic # Mn [11] THAANA ABAFILI..THAANA SUKUN
-0901..0902 ; Other_Alphabetic # Mn [2] DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN ANUSVARA
-0903 ; Other_Alphabetic # Mc DEVANAGARI SIGN VISARGA
-093E..0940 ; Other_Alphabetic # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
-0941..0948 ; Other_Alphabetic # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
-0949..094C ; Other_Alphabetic # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
-0962..0963 ; Other_Alphabetic # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
-0981 ; Other_Alphabetic # Mn BENGALI SIGN CANDRABINDU
-0982..0983 ; Other_Alphabetic # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
-09BE..09C0 ; Other_Alphabetic # Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II
-09C1..09C4 ; Other_Alphabetic # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
-09C7..09C8 ; Other_Alphabetic # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
-09CB..09CC ; Other_Alphabetic # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
-09D7 ; Other_Alphabetic # Mc BENGALI AU LENGTH MARK
-09E2..09E3 ; Other_Alphabetic # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
-0A01..0A02 ; Other_Alphabetic # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
-0A03 ; Other_Alphabetic # Mc GURMUKHI SIGN VISARGA
-0A3E..0A40 ; Other_Alphabetic # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
-0A41..0A42 ; Other_Alphabetic # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
-0A47..0A48 ; Other_Alphabetic # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
-0A4B..0A4C ; Other_Alphabetic # Mn [2] GURMUKHI VOWEL SIGN OO..GURMUKHI VOWEL SIGN AU
-0A70..0A71 ; Other_Alphabetic # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK
-0A81..0A82 ; Other_Alphabetic # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
-0A83 ; Other_Alphabetic # Mc GUJARATI SIGN VISARGA
-0ABE..0AC0 ; Other_Alphabetic # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II
-0AC1..0AC5 ; Other_Alphabetic # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
-0AC7..0AC8 ; Other_Alphabetic # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
-0AC9 ; Other_Alphabetic # Mc GUJARATI VOWEL SIGN CANDRA O
-0ACB..0ACC ; Other_Alphabetic # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
-0AE2..0AE3 ; Other_Alphabetic # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
-0B01 ; Other_Alphabetic # Mn ORIYA SIGN CANDRABINDU
-0B02..0B03 ; Other_Alphabetic # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
-0B3E ; Other_Alphabetic # Mc ORIYA VOWEL SIGN AA
-0B3F ; Other_Alphabetic # Mn ORIYA VOWEL SIGN I
-0B40 ; Other_Alphabetic # Mc ORIYA VOWEL SIGN II
-0B41..0B43 ; Other_Alphabetic # Mn [3] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC R
-0B47..0B48 ; Other_Alphabetic # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
-0B4B..0B4C ; Other_Alphabetic # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
-0B56 ; Other_Alphabetic # Mn ORIYA AI LENGTH MARK
-0B57 ; Other_Alphabetic # Mc ORIYA AU LENGTH MARK
-0B82 ; Other_Alphabetic # Mn TAMIL SIGN ANUSVARA
-0BBE..0BBF ; Other_Alphabetic # Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I
-0BC0 ; Other_Alphabetic # Mn TAMIL VOWEL SIGN II
-0BC1..0BC2 ; Other_Alphabetic # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
-0BC6..0BC8 ; Other_Alphabetic # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
-0BCA..0BCC ; Other_Alphabetic # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
-0BD7 ; Other_Alphabetic # Mc TAMIL AU LENGTH MARK
-0C01..0C03 ; Other_Alphabetic # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
-0C3E..0C40 ; Other_Alphabetic # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
-0C41..0C44 ; Other_Alphabetic # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
-0C46..0C48 ; Other_Alphabetic # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
-0C4A..0C4C ; Other_Alphabetic # Mn [3] TELUGU VOWEL SIGN O..TELUGU VOWEL SIGN AU
-0C55..0C56 ; Other_Alphabetic # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
-0C82..0C83 ; Other_Alphabetic # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
-0CBE ; Other_Alphabetic # Mc KANNADA VOWEL SIGN AA
-0CBF ; Other_Alphabetic # Mn KANNADA VOWEL SIGN I
-0CC0..0CC4 ; Other_Alphabetic # Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR
-0CC6 ; Other_Alphabetic # Mn KANNADA VOWEL SIGN E
-0CC7..0CC8 ; Other_Alphabetic # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
-0CCA..0CCB ; Other_Alphabetic # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
-0CCC ; Other_Alphabetic # Mn KANNADA VOWEL SIGN AU
-0CD5..0CD6 ; Other_Alphabetic # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
-0D02..0D03 ; Other_Alphabetic # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
-0D3E..0D40 ; Other_Alphabetic # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II
-0D41..0D43 ; Other_Alphabetic # Mn [3] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC R
-0D46..0D48 ; Other_Alphabetic # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
-0D4A..0D4C ; Other_Alphabetic # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
-0D57 ; Other_Alphabetic # Mc MALAYALAM AU LENGTH MARK
-0D82..0D83 ; Other_Alphabetic # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
-0DCF..0DD1 ; Other_Alphabetic # Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
-0DD2..0DD4 ; Other_Alphabetic # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
-0DD6 ; Other_Alphabetic # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA
-0DD8..0DDF ; Other_Alphabetic # Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA
-0DF2..0DF3 ; Other_Alphabetic # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
-0E31 ; Other_Alphabetic # Mn THAI CHARACTER MAI HAN-AKAT
-0E34..0E3A ; Other_Alphabetic # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
-0E4D ; Other_Alphabetic # Mn THAI CHARACTER NIKHAHIT
-0EB1 ; Other_Alphabetic # Mn LAO VOWEL SIGN MAI KAN
-0EB4..0EB9 ; Other_Alphabetic # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU
-0EBB..0EBC ; Other_Alphabetic # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO
-0ECD ; Other_Alphabetic # Mn LAO NIGGAHITA
-0F71..0F7E ; Other_Alphabetic # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
-0F7F ; Other_Alphabetic # Mc TIBETAN SIGN RNAM BCAD
-0F80..0F81 ; Other_Alphabetic # Mn [2] TIBETAN VOWEL SIGN REVERSED I..TIBETAN VOWEL SIGN REVERSED II
-0F90..0F97 ; Other_Alphabetic # Mn [8] TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER JA
-0F99..0FBC ; Other_Alphabetic # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
-102C ; Other_Alphabetic # Mc MYANMAR VOWEL SIGN AA
-102D..1030 ; Other_Alphabetic # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
-1031 ; Other_Alphabetic # Mc MYANMAR VOWEL SIGN E
-1032 ; Other_Alphabetic # Mn MYANMAR VOWEL SIGN AI
-1036 ; Other_Alphabetic # Mn MYANMAR SIGN ANUSVARA
-1038 ; Other_Alphabetic # Mc MYANMAR SIGN VISARGA
-1056..1057 ; Other_Alphabetic # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
-1058..1059 ; Other_Alphabetic # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
-135F ; Other_Alphabetic # Mn ETHIOPIC COMBINING GEMINATION MARK
-1712..1713 ; Other_Alphabetic # Mn [2] TAGALOG VOWEL SIGN I..TAGALOG VOWEL SIGN U
-1732..1733 ; Other_Alphabetic # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U
-1752..1753 ; Other_Alphabetic # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
-1772..1773 ; Other_Alphabetic # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
-17B6 ; Other_Alphabetic # Mc KHMER VOWEL SIGN AA
-17B7..17BD ; Other_Alphabetic # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
-17BE..17C5 ; Other_Alphabetic # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
-17C6 ; Other_Alphabetic # Mn KHMER SIGN NIKAHIT
-17C7..17C8 ; Other_Alphabetic # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
-18A9 ; Other_Alphabetic # Mn MONGOLIAN LETTER ALI GALI DAGALGA
-1920..1922 ; Other_Alphabetic # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
-1923..1926 ; Other_Alphabetic # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
-1927..1928 ; Other_Alphabetic # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
-1929..192B ; Other_Alphabetic # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA
-1930..1931 ; Other_Alphabetic # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
-1932 ; Other_Alphabetic # Mn LIMBU SMALL LETTER ANUSVARA
-1933..1938 ; Other_Alphabetic # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
-19B0..19C0 ; Other_Alphabetic # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY
-19C8..19C9 ; Other_Alphabetic # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2
-1A17..1A18 ; Other_Alphabetic # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
-1A19..1A1B ; Other_Alphabetic # Mc [3] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN AE
-24B6..24E9 ; Other_Alphabetic # So [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z
-A823..A824 ; Other_Alphabetic # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
-A825..A826 ; Other_Alphabetic # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
-A827 ; Other_Alphabetic # Mc SYLOTI NAGRI VOWEL SIGN OO
-FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA
-10A01..10A03 ; Other_Alphabetic # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
-10A05..10A06 ; Other_Alphabetic # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
-10A0C..10A0F ; Other_Alphabetic # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
-
-# Total code points: 488
-
-# ================================================
-
-3006 ; Ideographic # Lo IDEOGRAPHIC CLOSING MARK
-3007 ; Ideographic # Nl IDEOGRAPHIC NUMBER ZERO
-3021..3029 ; Ideographic # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
-3038..303A ; Ideographic # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
-3400..4DB5 ; Ideographic # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
-4E00..9FBB ; Ideographic # Lo [20924] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FBB
-F900..FA2D ; Ideographic # Lo [302] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA2D
-FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
-20000..2A6D6 ; Ideographic # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
-2F800..2FA1D ; Ideographic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
-
-# Total code points: 71181
-
-# ================================================
-
-005E ; Diacritic # Sk CIRCUMFLEX ACCENT
-0060 ; Diacritic # Sk GRAVE ACCENT
-00A8 ; Diacritic # Sk DIAERESIS
-00AF ; Diacritic # Sk MACRON
-00B4 ; Diacritic # Sk ACUTE ACCENT
-00B7 ; Diacritic # Po MIDDLE DOT
-00B8 ; Diacritic # Sk CEDILLA
-02B0..02C1 ; Diacritic # Lm [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP
-02C2..02C5 ; Diacritic # Sk [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD
-02C6..02D1 ; Diacritic # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
-02D2..02DF ; Diacritic # Sk [14] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER CROSS ACCENT
-02E0..02E4 ; Diacritic # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
-02E5..02ED ; Diacritic # Sk [9] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER UNASPIRATED
-02EE ; Diacritic # Lm MODIFIER LETTER DOUBLE APOSTROPHE
-02EF..02FF ; Diacritic # Sk [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW
-0300..034E ; Diacritic # Mn [79] COMBINING GRAVE ACCENT..COMBINING UPWARDS ARROW BELOW
-0350..0357 ; Diacritic # Mn [8] COMBINING RIGHT ARROWHEAD ABOVE..COMBINING RIGHT HALF RING ABOVE
-035D..0362 ; Diacritic # Mn [6] COMBINING DOUBLE BREVE..COMBINING DOUBLE RIGHTWARDS ARROW BELOW
-0374..0375 ; Diacritic # Sk [2] GREEK NUMERAL SIGN..GREEK LOWER NUMERAL SIGN
-037A ; Diacritic # Lm GREEK YPOGEGRAMMENI
-0384..0385 ; Diacritic # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS
-0483..0486 ; Diacritic # Mn [4] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC PSILI PNEUMATA
-0559 ; Diacritic # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING
-0591..05A1 ; Diacritic # Mn [17] HEBREW ACCENT ETNAHTA..HEBREW ACCENT PAZER
-05A3..05B9 ; Diacritic # Mn [23] HEBREW ACCENT MUNAH..HEBREW POINT HOLAM
-05BB..05BD ; Diacritic # Mn [3] HEBREW POINT QUBUTS..HEBREW POINT METEG
-05BF ; Diacritic # Mn HEBREW POINT RAFE
-05C1..05C2 ; Diacritic # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
-05C4 ; Diacritic # Mn HEBREW MARK UPPER DOT
-064B..0652 ; Diacritic # Mn [8] ARABIC FATHATAN..ARABIC SUKUN
-0657..0658 ; Diacritic # Mn [2] ARABIC INVERTED DAMMA..ARABIC MARK NOON GHUNNA
-06DF..06E0 ; Diacritic # Mn [2] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO
-06E5..06E6 ; Diacritic # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH
-06EA..06EC ; Diacritic # Mn [3] ARABIC EMPTY CENTRE LOW STOP..ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE
-0730..074A ; Diacritic # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
-07A6..07B0 ; Diacritic # Mn [11] THAANA ABAFILI..THAANA SUKUN
-093C ; Diacritic # Mn DEVANAGARI SIGN NUKTA
-094D ; Diacritic # Mn DEVANAGARI SIGN VIRAMA
-0951..0954 ; Diacritic # Mn [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT
-09BC ; Diacritic # Mn BENGALI SIGN NUKTA
-09CD ; Diacritic # Mn BENGALI SIGN VIRAMA
-0A3C ; Diacritic # Mn GURMUKHI SIGN NUKTA
-0A4D ; Diacritic # Mn GURMUKHI SIGN VIRAMA
-0ABC ; Diacritic # Mn GUJARATI SIGN NUKTA
-0ACD ; Diacritic # Mn GUJARATI SIGN VIRAMA
-0B3C ; Diacritic # Mn ORIYA SIGN NUKTA
-0B4D ; Diacritic # Mn ORIYA SIGN VIRAMA
-0BCD ; Diacritic # Mn TAMIL SIGN VIRAMA
-0C4D ; Diacritic # Mn TELUGU SIGN VIRAMA
-0CBC ; Diacritic # Mn KANNADA SIGN NUKTA
-0CCD ; Diacritic # Mn KANNADA SIGN VIRAMA
-0D4D ; Diacritic # Mn MALAYALAM SIGN VIRAMA
-0DCA ; Diacritic # Mn SINHALA SIGN AL-LAKUNA
-0E47..0E4C ; Diacritic # Mn [6] THAI CHARACTER MAITAIKHU..THAI CHARACTER THANTHAKHAT
-0E4E ; Diacritic # Mn THAI CHARACTER YAMAKKAN
-0EC8..0ECC ; Diacritic # Mn [5] LAO TONE MAI EK..LAO CANCELLATION MARK
-0F18..0F19 ; Diacritic # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
-0F35 ; Diacritic # Mn TIBETAN MARK NGAS BZUNG NYI ZLA
-0F37 ; Diacritic # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS
-0F39 ; Diacritic # Mn TIBETAN MARK TSA -PHRU
-0F3E..0F3F ; Diacritic # Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES
-0F82..0F84 ; Diacritic # Mn [3] TIBETAN SIGN NYI ZLA NAA DA..TIBETAN MARK HALANTA
-0F86..0F87 ; Diacritic # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
-0FC6 ; Diacritic # Mn TIBETAN SYMBOL PADMA GDAN
-1037 ; Diacritic # Mn MYANMAR SIGN DOT BELOW
-1039 ; Diacritic # Mn MYANMAR SIGN VIRAMA
-17C9..17D3 ; Diacritic # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
-17DD ; Diacritic # Mn KHMER SIGN ATTHACAN
-1939..193B ; Diacritic # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
-1D2C..1D61 ; Diacritic # Lm [54] MODIFIER LETTER CAPITAL A..MODIFIER LETTER SMALL CHI
-1D62..1D6A ; Diacritic # L& [9] LATIN SUBSCRIPT SMALL LETTER I..GREEK SUBSCRIPT SMALL LETTER CHI
-1FBD ; Diacritic # Sk GREEK KORONIS
-1FBF..1FC1 ; Diacritic # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
-1FCD..1FCF ; Diacritic # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
-1FDD..1FDF ; Diacritic # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
-1FED..1FEF ; Diacritic # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
-1FFD..1FFE ; Diacritic # Sk [2] GREEK OXIA..GREEK DASIA
-302A..302F ; Diacritic # Mn [6] IDEOGRAPHIC LEVEL TONE MARK..HANGUL DOUBLE DOT TONE MARK
-3099..309A ; Diacritic # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-309B..309C ; Diacritic # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-30FC ; Diacritic # Lm KATAKANA-HIRAGANA PROLONGED SOUND MARK
-FB1E ; Diacritic # Mn HEBREW POINT JUDEO-SPANISH VARIKA
-FE20..FE23 ; Diacritic # Mn [4] COMBINING LIGATURE LEFT HALF..COMBINING DOUBLE TILDE RIGHT HALF
-FF3E ; Diacritic # Sk FULLWIDTH CIRCUMFLEX ACCENT
-FF40 ; Diacritic # Sk FULLWIDTH GRAVE ACCENT
-FF70 ; Diacritic # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
-FF9E..FF9F ; Diacritic # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
-FFE3 ; Diacritic # Sk FULLWIDTH MACRON
-1D167..1D169 ; Diacritic # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
-1D16D..1D172 ; Diacritic # Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5
-1D17B..1D182 ; Diacritic # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
-1D185..1D18B ; Diacritic # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
-1D1AA..1D1AD ; Diacritic # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
-
-# Total code points: 482
-
-# ================================================
-
-00B7 ; Extender # Po MIDDLE DOT
-02D0..02D1 ; Extender # Lm [2] MODIFIER LETTER TRIANGULAR COLON..MODIFIER LETTER HALF TRIANGULAR COLON
-0640 ; Extender # Lm ARABIC TATWEEL
-0E46 ; Extender # Lm THAI CHARACTER MAIYAMOK
-0EC6 ; Extender # Lm LAO KO LA
-1843 ; Extender # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN
-3005 ; Extender # Lm IDEOGRAPHIC ITERATION MARK
-3031..3035 ; Extender # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
-309D..309E ; Extender # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
-30FC..30FE ; Extender # Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK
-A015 ; Extender # Lm YI SYLLABLE WU
-FF70 ; Extender # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
-
-# Total code points: 20
-
-# ================================================
-
-02B0..02B8 ; Other_Lowercase # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y
-02C0..02C1 ; Other_Lowercase # Lm [2] MODIFIER LETTER GLOTTAL STOP..MODIFIER LETTER REVERSED GLOTTAL STOP
-02E0..02E4 ; Other_Lowercase # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
-0345 ; Other_Lowercase # Mn COMBINING GREEK YPOGEGRAMMENI
-037A ; Other_Lowercase # Lm GREEK YPOGEGRAMMENI
-1D2C..1D61 ; Other_Lowercase # Lm [54] MODIFIER LETTER CAPITAL A..MODIFIER LETTER SMALL CHI
-1D78 ; Other_Lowercase # Lm MODIFIER LETTER CYRILLIC EN
-1D9B..1DBF ; Other_Lowercase # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
-2090..2094 ; Other_Lowercase # Lm [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA
-2170..217F ; Other_Lowercase # Nl [16] SMALL ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND
-24D0..24E9 ; Other_Lowercase # So [26] CIRCLED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
-
-# Total code points: 157
-
-# ================================================
-
-2160..216F ; Other_Uppercase # Nl [16] ROMAN NUMERAL ONE..ROMAN NUMERAL ONE THOUSAND
-24B6..24CF ; Other_Uppercase # So [26] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN CAPITAL LETTER Z
-
-# Total code points: 42
-
-# ================================================
-
-FDD0..FDEF ; Noncharacter_Code_Point # Cn [32] <noncharacter-FDD0>..<noncharacter-FDEF>
-FFFE..FFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-FFFE>..<noncharacter-FFFF>
-1FFFE..1FFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-1FFFE>..<noncharacter-1FFFF>
-2FFFE..2FFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-2FFFE>..<noncharacter-2FFFF>
-3FFFE..3FFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-3FFFE>..<noncharacter-3FFFF>
-4FFFE..4FFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-4FFFE>..<noncharacter-4FFFF>
-5FFFE..5FFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-5FFFE>..<noncharacter-5FFFF>
-6FFFE..6FFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-6FFFE>..<noncharacter-6FFFF>
-7FFFE..7FFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-7FFFE>..<noncharacter-7FFFF>
-8FFFE..8FFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-8FFFE>..<noncharacter-8FFFF>
-9FFFE..9FFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-9FFFE>..<noncharacter-9FFFF>
-AFFFE..AFFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-AFFFE>..<noncharacter-AFFFF>
-BFFFE..BFFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-BFFFE>..<noncharacter-BFFFF>
-CFFFE..CFFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-CFFFE>..<noncharacter-CFFFF>
-DFFFE..DFFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-DFFFE>..<noncharacter-DFFFF>
-EFFFE..EFFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-EFFFE>..<noncharacter-EFFFF>
-FFFFE..FFFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-FFFFE>..<noncharacter-FFFFF>
-10FFFE..10FFFF; Noncharacter_Code_Point # Cn [2] <noncharacter-10FFFE>..<noncharacter-10FFFF>
-
-# Total code points: 66
-
-# ================================================
-
-09BE ; Other_Grapheme_Extend # Mc BENGALI VOWEL SIGN AA
-09D7 ; Other_Grapheme_Extend # Mc BENGALI AU LENGTH MARK
-0B3E ; Other_Grapheme_Extend # Mc ORIYA VOWEL SIGN AA
-0B57 ; Other_Grapheme_Extend # Mc ORIYA AU LENGTH MARK
-0BBE ; Other_Grapheme_Extend # Mc TAMIL VOWEL SIGN AA
-0BD7 ; Other_Grapheme_Extend # Mc TAMIL AU LENGTH MARK
-0CC2 ; Other_Grapheme_Extend # Mc KANNADA VOWEL SIGN UU
-0CD5..0CD6 ; Other_Grapheme_Extend # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
-0D3E ; Other_Grapheme_Extend # Mc MALAYALAM VOWEL SIGN AA
-0D57 ; Other_Grapheme_Extend # Mc MALAYALAM AU LENGTH MARK
-0DCF ; Other_Grapheme_Extend # Mc SINHALA VOWEL SIGN AELA-PILLA
-0DDF ; Other_Grapheme_Extend # Mc SINHALA VOWEL SIGN GAYANUKITTA
-200C..200D ; Other_Grapheme_Extend # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
-1D165 ; Other_Grapheme_Extend # Mc MUSICAL SYMBOL COMBINING STEM
-1D16E..1D172 ; Other_Grapheme_Extend # Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5
-
-# Total code points: 21
-
-# ================================================
-
-034F ; Grapheme_Link # Mn COMBINING GRAPHEME JOINER
-094D ; Grapheme_Link # Mn DEVANAGARI SIGN VIRAMA
-09CD ; Grapheme_Link # Mn BENGALI SIGN VIRAMA
-0A4D ; Grapheme_Link # Mn GURMUKHI SIGN VIRAMA
-0ACD ; Grapheme_Link # Mn GUJARATI SIGN VIRAMA
-0B4D ; Grapheme_Link # Mn ORIYA SIGN VIRAMA
-0BCD ; Grapheme_Link # Mn TAMIL SIGN VIRAMA
-0C4D ; Grapheme_Link # Mn TELUGU SIGN VIRAMA
-0CCD ; Grapheme_Link # Mn KANNADA SIGN VIRAMA
-0D4D ; Grapheme_Link # Mn MALAYALAM SIGN VIRAMA
-0DCA ; Grapheme_Link # Mn SINHALA SIGN AL-LAKUNA
-0E3A ; Grapheme_Link # Mn THAI CHARACTER PHINTHU
-1039 ; Grapheme_Link # Mn MYANMAR SIGN VIRAMA
-17D2 ; Grapheme_Link # Mn KHMER SIGN COENG
-A806 ; Grapheme_Link # Mn SYLOTI NAGRI SIGN HASANTA
-10A3F ; Grapheme_Link # Mn KHAROSHTHI VIRAMA
-
-# Total code points: 16
-
-# ================================================
-
-2FF0..2FF1 ; IDS_Binary_Operator # So [2] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW
-2FF4..2FFB ; IDS_Binary_Operator # So [8] IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
-
-# Total code points: 10
-
-# ================================================
-
-2FF2..2FF3 ; IDS_Trinary_Operator # So [2] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW
-
-# Total code points: 2
-
-# ================================================
-
-2E80..2E99 ; Radical # So [26] CJK RADICAL REPEAT..CJK RADICAL RAP
-2E9B..2EF3 ; Radical # So [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE
-2F00..2FD5 ; Radical # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
-
-# Total code points: 329
-
-# ================================================
-
-3400..4DB5 ; Unified_Ideograph # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
-4E00..9FBB ; Unified_Ideograph # Lo [20924] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FBB
-FA0E..FA0F ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA0E..CJK COMPATIBILITY IDEOGRAPH-FA0F
-FA11 ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA11
-FA13..FA14 ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA13..CJK COMPATIBILITY IDEOGRAPH-FA14
-FA1F ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA1F
-FA21 ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA21
-FA23..FA24 ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA23..CJK COMPATIBILITY IDEOGRAPH-FA24
-FA27..FA29 ; Unified_Ideograph # Lo [3] CJK COMPATIBILITY IDEOGRAPH-FA27..CJK COMPATIBILITY IDEOGRAPH-FA29
-20000..2A6D6 ; Unified_Ideograph # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
-
-# Total code points: 70229
-
-# ================================================
-
-034F ; Other_Default_Ignorable_Code_Point # Mn COMBINING GRAPHEME JOINER
-115F..1160 ; Other_Default_Ignorable_Code_Point # Lo [2] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG FILLER
-2064..2069 ; Other_Default_Ignorable_Code_Point # Cn [6] <reserved-2064>..<reserved-2069>
-3164 ; Other_Default_Ignorable_Code_Point # Lo HANGUL FILLER
-FFA0 ; Other_Default_Ignorable_Code_Point # Lo HALFWIDTH HANGUL FILLER
-FFF0..FFF8 ; Other_Default_Ignorable_Code_Point # Cn [9] <reserved-FFF0>..<reserved-FFF8>
-E0000 ; Other_Default_Ignorable_Code_Point # Cn <reserved-E0000>
-E0002..E001F ; Other_Default_Ignorable_Code_Point # Cn [30] <reserved-E0002>..<reserved-E001F>
-E0080..E00FF ; Other_Default_Ignorable_Code_Point # Cn [128] <reserved-E0080>..<reserved-E00FF>
-E01F0..E0FFF ; Other_Default_Ignorable_Code_Point # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
-
-# Total code points: 3779
-
-# ================================================
-
-0340..0341 ; Deprecated # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
-17A3 ; Deprecated # Lo KHMER INDEPENDENT VOWEL QAQ
-17D3 ; Deprecated # Mn KHMER SIGN BATHAMASAT
-206A..206F ; Deprecated # Cf [6] INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES
-
-# Total code points: 10
-
-# ================================================
-
-0069..006A ; Soft_Dotted # L& [2] LATIN SMALL LETTER I..LATIN SMALL LETTER J
-012F ; Soft_Dotted # L& LATIN SMALL LETTER I WITH OGONEK
-0268 ; Soft_Dotted # L& LATIN SMALL LETTER I WITH STROKE
-029D ; Soft_Dotted # L& LATIN SMALL LETTER J WITH CROSSED-TAIL
-02B2 ; Soft_Dotted # Lm MODIFIER LETTER SMALL J
-03F3 ; Soft_Dotted # L& GREEK LETTER YOT
-0456 ; Soft_Dotted # L& CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-0458 ; Soft_Dotted # L& CYRILLIC SMALL LETTER JE
-1D62 ; Soft_Dotted # L& LATIN SUBSCRIPT SMALL LETTER I
-1D96 ; Soft_Dotted # L& LATIN SMALL LETTER I WITH RETROFLEX HOOK
-1DA4 ; Soft_Dotted # Lm MODIFIER LETTER SMALL I WITH STROKE
-1DA8 ; Soft_Dotted # Lm MODIFIER LETTER SMALL J WITH CROSSED-TAIL
-1E2D ; Soft_Dotted # L& LATIN SMALL LETTER I WITH TILDE BELOW
-1ECB ; Soft_Dotted # L& LATIN SMALL LETTER I WITH DOT BELOW
-2071 ; Soft_Dotted # L& SUPERSCRIPT LATIN SMALL LETTER I
-2148..2149 ; Soft_Dotted # L& [2] DOUBLE-STRUCK ITALIC SMALL I..DOUBLE-STRUCK ITALIC SMALL J
-1D422..1D423 ; Soft_Dotted # L& [2] MATHEMATICAL BOLD SMALL I..MATHEMATICAL BOLD SMALL J
-1D456..1D457 ; Soft_Dotted # L& [2] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL ITALIC SMALL J
-1D48A..1D48B ; Soft_Dotted # L& [2] MATHEMATICAL BOLD ITALIC SMALL I..MATHEMATICAL BOLD ITALIC SMALL J
-1D4BE..1D4BF ; Soft_Dotted # L& [2] MATHEMATICAL SCRIPT SMALL I..MATHEMATICAL SCRIPT SMALL J
-1D4F2..1D4F3 ; Soft_Dotted # L& [2] MATHEMATICAL BOLD SCRIPT SMALL I..MATHEMATICAL BOLD SCRIPT SMALL J
-1D526..1D527 ; Soft_Dotted # L& [2] MATHEMATICAL FRAKTUR SMALL I..MATHEMATICAL FRAKTUR SMALL J
-1D55A..1D55B ; Soft_Dotted # L& [2] MATHEMATICAL DOUBLE-STRUCK SMALL I..MATHEMATICAL DOUBLE-STRUCK SMALL J
-1D58E..1D58F ; Soft_Dotted # L& [2] MATHEMATICAL BOLD FRAKTUR SMALL I..MATHEMATICAL BOLD FRAKTUR SMALL J
-1D5C2..1D5C3 ; Soft_Dotted # L& [2] MATHEMATICAL SANS-SERIF SMALL I..MATHEMATICAL SANS-SERIF SMALL J
-1D5F6..1D5F7 ; Soft_Dotted # L& [2] MATHEMATICAL SANS-SERIF BOLD SMALL I..MATHEMATICAL SANS-SERIF BOLD SMALL J
-1D62A..1D62B ; Soft_Dotted # L& [2] MATHEMATICAL SANS-SERIF ITALIC SMALL I..MATHEMATICAL SANS-SERIF ITALIC SMALL J
-1D65E..1D65F ; Soft_Dotted # L& [2] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
-1D692..1D693 ; Soft_Dotted # L& [2] MATHEMATICAL MONOSPACE SMALL I..MATHEMATICAL MONOSPACE SMALL J
-
-# Total code points: 44
-
-# ================================================
-
-0E40..0E44 ; Logical_Order_Exception # Lo [5] THAI CHARACTER SARA E..THAI CHARACTER SARA AI MAIMALAI
-0EC0..0EC4 ; Logical_Order_Exception # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
-
-# Total code points: 10
-
-# ================================================
-
-2118 ; Other_ID_Start # So SCRIPT CAPITAL P
-212E ; Other_ID_Start # So ESTIMATED SYMBOL
-309B..309C ; Other_ID_Start # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-
-# Total code points: 4
-
-# ================================================
-
-1369..1371 ; Other_ID_Continue # No [9] ETHIOPIC DIGIT ONE..ETHIOPIC DIGIT NINE
-
-# Total code points: 9
-
-# ================================================
-
-0021 ; STerm # Po EXCLAMATION MARK
-002E ; STerm # Po FULL STOP
-003F ; STerm # Po QUESTION MARK
-055C ; STerm # Po ARMENIAN EXCLAMATION MARK
-055E ; STerm # Po ARMENIAN QUESTION MARK
-0589 ; STerm # Po ARMENIAN FULL STOP
-061F ; STerm # Po ARABIC QUESTION MARK
-06D4 ; STerm # Po ARABIC FULL STOP
-0700..0702 ; STerm # Po [3] SYRIAC END OF PARAGRAPH..SYRIAC SUBLINEAR FULL STOP
-0964..0965 ; STerm # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
-104A..104B ; STerm # Po [2] MYANMAR SIGN LITTLE SECTION..MYANMAR SIGN SECTION
-1362 ; STerm # Po ETHIOPIC FULL STOP
-1367..1368 ; STerm # Po [2] ETHIOPIC QUESTION MARK..ETHIOPIC PARAGRAPH SEPARATOR
-166E ; STerm # Po CANADIAN SYLLABICS FULL STOP
-1803 ; STerm # Po MONGOLIAN FULL STOP
-1809 ; STerm # Po MONGOLIAN MANCHU FULL STOP
-1944..1945 ; STerm # Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK
-203C..203D ; STerm # Po [2] DOUBLE EXCLAMATION MARK..INTERROBANG
-2047..2049 ; STerm # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
-3002 ; STerm # Po IDEOGRAPHIC FULL STOP
-FE52 ; STerm # Po SMALL FULL STOP
-FE56..FE57 ; STerm # Po [2] SMALL QUESTION MARK..SMALL EXCLAMATION MARK
-FF01 ; STerm # Po FULLWIDTH EXCLAMATION MARK
-FF0E ; STerm # Po FULLWIDTH FULL STOP
-FF1F ; STerm # Po FULLWIDTH QUESTION MARK
-FF61 ; STerm # Po HALFWIDTH IDEOGRAPHIC FULL STOP
-
-# Total code points: 36
-
-# ================================================
-
-180B..180D ; Variation_Selector # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
-FE00..FE0F ; Variation_Selector # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
-E0100..E01EF ; Variation_Selector # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
-
-# Total code points: 259
-
-# ================================================
-
-0009..000D ; Pattern_White_Space # Cc [5] <control-0009>..<control-000D>
-0020 ; Pattern_White_Space # Zs SPACE
-0085 ; Pattern_White_Space # Cc <control-0085>
-200E..200F ; Pattern_White_Space # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
-2028 ; Pattern_White_Space # Zl LINE SEPARATOR
-2029 ; Pattern_White_Space # Zp PARAGRAPH SEPARATOR
-
-# Total code points: 11
-
-# ================================================
-
-0021..0023 ; Pattern_Syntax # Po [3] EXCLAMATION MARK..NUMBER SIGN
-0024 ; Pattern_Syntax # Sc DOLLAR SIGN
-0025..0027 ; Pattern_Syntax # Po [3] PERCENT SIGN..APOSTROPHE
-0028 ; Pattern_Syntax # Ps LEFT PARENTHESIS
-0029 ; Pattern_Syntax # Pe RIGHT PARENTHESIS
-002A ; Pattern_Syntax # Po ASTERISK
-002B ; Pattern_Syntax # Sm PLUS SIGN
-002C ; Pattern_Syntax # Po COMMA
-002D ; Pattern_Syntax # Pd HYPHEN-MINUS
-002E..002F ; Pattern_Syntax # Po [2] FULL STOP..SOLIDUS
-003A..003B ; Pattern_Syntax # Po [2] COLON..SEMICOLON
-003C..003E ; Pattern_Syntax # Sm [3] LESS-THAN SIGN..GREATER-THAN SIGN
-003F..0040 ; Pattern_Syntax # Po [2] QUESTION MARK..COMMERCIAL AT
-005B ; Pattern_Syntax # Ps LEFT SQUARE BRACKET
-005C ; Pattern_Syntax # Po REVERSE SOLIDUS
-005D ; Pattern_Syntax # Pe RIGHT SQUARE BRACKET
-005E ; Pattern_Syntax # Sk CIRCUMFLEX ACCENT
-0060 ; Pattern_Syntax # Sk GRAVE ACCENT
-007B ; Pattern_Syntax # Ps LEFT CURLY BRACKET
-007C ; Pattern_Syntax # Sm VERTICAL LINE
-007D ; Pattern_Syntax # Pe RIGHT CURLY BRACKET
-007E ; Pattern_Syntax # Sm TILDE
-00A1 ; Pattern_Syntax # Po INVERTED EXCLAMATION MARK
-00A2..00A5 ; Pattern_Syntax # Sc [4] CENT SIGN..YEN SIGN
-00A6..00A7 ; Pattern_Syntax # So [2] BROKEN BAR..SECTION SIGN
-00A9 ; Pattern_Syntax # So COPYRIGHT SIGN
-00AB ; Pattern_Syntax # Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-00AC ; Pattern_Syntax # Sm NOT SIGN
-00AE ; Pattern_Syntax # So REGISTERED SIGN
-00B0 ; Pattern_Syntax # So DEGREE SIGN
-00B1 ; Pattern_Syntax # Sm PLUS-MINUS SIGN
-00B6 ; Pattern_Syntax # So PILCROW SIGN
-00BB ; Pattern_Syntax # Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-00BF ; Pattern_Syntax # Po INVERTED QUESTION MARK
-00D7 ; Pattern_Syntax # Sm MULTIPLICATION SIGN
-00F7 ; Pattern_Syntax # Sm DIVISION SIGN
-2010..2015 ; Pattern_Syntax # Pd [6] HYPHEN..HORIZONTAL BAR
-2016..2017 ; Pattern_Syntax # Po [2] DOUBLE VERTICAL LINE..DOUBLE LOW LINE
-2018 ; Pattern_Syntax # Pi LEFT SINGLE QUOTATION MARK
-2019 ; Pattern_Syntax # Pf RIGHT SINGLE QUOTATION MARK
-201A ; Pattern_Syntax # Ps SINGLE LOW-9 QUOTATION MARK
-201B..201C ; Pattern_Syntax # Pi [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK
-201D ; Pattern_Syntax # Pf RIGHT DOUBLE QUOTATION MARK
-201E ; Pattern_Syntax # Ps DOUBLE LOW-9 QUOTATION MARK
-201F ; Pattern_Syntax # Pi DOUBLE HIGH-REVERSED-9 QUOTATION MARK
-2020..2027 ; Pattern_Syntax # Po [8] DAGGER..HYPHENATION POINT
-2030..2038 ; Pattern_Syntax # Po [9] PER MILLE SIGN..CARET
-2039 ; Pattern_Syntax # Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-203A ; Pattern_Syntax # Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-203B..203E ; Pattern_Syntax # Po [4] REFERENCE MARK..OVERLINE
-2041..2043 ; Pattern_Syntax # Po [3] CARET INSERTION POINT..HYPHEN BULLET
-2044 ; Pattern_Syntax # Sm FRACTION SLASH
-2045 ; Pattern_Syntax # Ps LEFT SQUARE BRACKET WITH QUILL
-2046 ; Pattern_Syntax # Pe RIGHT SQUARE BRACKET WITH QUILL
-2047..2051 ; Pattern_Syntax # Po [11] DOUBLE QUESTION MARK..TWO ASTERISKS ALIGNED VERTICALLY
-2052 ; Pattern_Syntax # Sm COMMERCIAL MINUS SIGN
-2053 ; Pattern_Syntax # Po SWUNG DASH
-2055..205E ; Pattern_Syntax # Po [10] FLOWER PUNCTUATION MARK..VERTICAL FOUR DOTS
-2190..2194 ; Pattern_Syntax # Sm [5] LEFTWARDS ARROW..LEFT RIGHT ARROW
-2195..2199 ; Pattern_Syntax # So [5] UP DOWN ARROW..SOUTH WEST ARROW
-219A..219B ; Pattern_Syntax # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
-219C..219F ; Pattern_Syntax # So [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW
-21A0 ; Pattern_Syntax # Sm RIGHTWARDS TWO HEADED ARROW
-21A1..21A2 ; Pattern_Syntax # So [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL
-21A3 ; Pattern_Syntax # Sm RIGHTWARDS ARROW WITH TAIL
-21A4..21A5 ; Pattern_Syntax # So [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR
-21A6 ; Pattern_Syntax # Sm RIGHTWARDS ARROW FROM BAR
-21A7..21AD ; Pattern_Syntax # So [7] DOWNWARDS ARROW FROM BAR..LEFT RIGHT WAVE ARROW
-21AE ; Pattern_Syntax # Sm LEFT RIGHT ARROW WITH STROKE
-21AF..21CD ; Pattern_Syntax # So [31] DOWNWARDS ZIGZAG ARROW..LEFTWARDS DOUBLE ARROW WITH STROKE
-21CE..21CF ; Pattern_Syntax # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
-21D0..21D1 ; Pattern_Syntax # So [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW
-21D2 ; Pattern_Syntax # Sm RIGHTWARDS DOUBLE ARROW
-21D3 ; Pattern_Syntax # So DOWNWARDS DOUBLE ARROW
-21D4 ; Pattern_Syntax # Sm LEFT RIGHT DOUBLE ARROW
-21D5..21F3 ; Pattern_Syntax # So [31] UP DOWN DOUBLE ARROW..UP DOWN WHITE ARROW
-21F4..22FF ; Pattern_Syntax # Sm [268] RIGHT ARROW WITH SMALL CIRCLE..Z NOTATION BAG MEMBERSHIP
-2300..2307 ; Pattern_Syntax # So [8] DIAMETER SIGN..WAVY LINE
-2308..230B ; Pattern_Syntax # Sm [4] LEFT CEILING..RIGHT FLOOR
-230C..231F ; Pattern_Syntax # So [20] BOTTOM RIGHT CROP..BOTTOM RIGHT CORNER
-2320..2321 ; Pattern_Syntax # Sm [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL
-2322..2328 ; Pattern_Syntax # So [7] FROWN..KEYBOARD
-2329 ; Pattern_Syntax # Ps LEFT-POINTING ANGLE BRACKET
-232A ; Pattern_Syntax # Pe RIGHT-POINTING ANGLE BRACKET
-232B..237B ; Pattern_Syntax # So [81] ERASE TO THE LEFT..NOT CHECK MARK
-237C ; Pattern_Syntax # Sm RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
-237D..239A ; Pattern_Syntax # So [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL
-239B..23B3 ; Pattern_Syntax # Sm [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
-23B4 ; Pattern_Syntax # Ps TOP SQUARE BRACKET
-23B5 ; Pattern_Syntax # Pe BOTTOM SQUARE BRACKET
-23B6 ; Pattern_Syntax # Po BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET
-23B7..23DB ; Pattern_Syntax # So [37] RADICAL SYMBOL BOTTOM..FUSE
-23DC..23FF ; Pattern_Syntax # Cn [36] <reserved-23DC>..<reserved-23FF>
-2400..2426 ; Pattern_Syntax # So [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
-2427..243F ; Pattern_Syntax # Cn [25] <reserved-2427>..<reserved-243F>
-2440..244A ; Pattern_Syntax # So [11] OCR HOOK..OCR DOUBLE BACKSLASH
-244B..245F ; Pattern_Syntax # Cn [21] <reserved-244B>..<reserved-245F>
-2500..25B6 ; Pattern_Syntax # So [183] BOX DRAWINGS LIGHT HORIZONTAL..BLACK RIGHT-POINTING TRIANGLE
-25B7 ; Pattern_Syntax # Sm WHITE RIGHT-POINTING TRIANGLE
-25B8..25C0 ; Pattern_Syntax # So [9] BLACK RIGHT-POINTING SMALL TRIANGLE..BLACK LEFT-POINTING TRIANGLE
-25C1 ; Pattern_Syntax # Sm WHITE LEFT-POINTING TRIANGLE
-25C2..25F7 ; Pattern_Syntax # So [54] BLACK LEFT-POINTING SMALL TRIANGLE..WHITE CIRCLE WITH UPPER RIGHT QUADRANT
-25F8..25FF ; Pattern_Syntax # Sm [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE
-2600..266E ; Pattern_Syntax # So [111] BLACK SUN WITH RAYS..MUSIC NATURAL SIGN
-266F ; Pattern_Syntax # Sm MUSIC SHARP SIGN
-2670..269C ; Pattern_Syntax # So [45] WEST SYRIAC CROSS..FLEUR-DE-LIS
-269D..269F ; Pattern_Syntax # Cn [3] <reserved-269D>..<reserved-269F>
-26A0..26B1 ; Pattern_Syntax # So [18] WARNING SIGN..FUNERAL URN
-26B2..2700 ; Pattern_Syntax # Cn [79] <reserved-26B2>..<reserved-2700>
-2701..2704 ; Pattern_Syntax # So [4] UPPER BLADE SCISSORS..WHITE SCISSORS
-2705 ; Pattern_Syntax # Cn <reserved-2705>
-2706..2709 ; Pattern_Syntax # So [4] TELEPHONE LOCATION SIGN..ENVELOPE
-270A..270B ; Pattern_Syntax # Cn [2] <reserved-270A>..<reserved-270B>
-270C..2727 ; Pattern_Syntax # So [28] VICTORY HAND..WHITE FOUR POINTED STAR
-2728 ; Pattern_Syntax # Cn <reserved-2728>
-2729..274B ; Pattern_Syntax # So [35] STRESS OUTLINED WHITE STAR..HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
-274C ; Pattern_Syntax # Cn <reserved-274C>
-274D ; Pattern_Syntax # So SHADOWED WHITE CIRCLE
-274E ; Pattern_Syntax # Cn <reserved-274E>
-274F..2752 ; Pattern_Syntax # So [4] LOWER RIGHT DROP-SHADOWED WHITE SQUARE..UPPER RIGHT SHADOWED WHITE SQUARE
-2753..2755 ; Pattern_Syntax # Cn [3] <reserved-2753>..<reserved-2755>
-2756 ; Pattern_Syntax # So BLACK DIAMOND MINUS WHITE X
-2757 ; Pattern_Syntax # Cn <reserved-2757>
-2758..275E ; Pattern_Syntax # So [7] LIGHT VERTICAL BAR..HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
-275F..2760 ; Pattern_Syntax # Cn [2] <reserved-275F>..<reserved-2760>
-2761..2767 ; Pattern_Syntax # So [7] CURVED STEM PARAGRAPH SIGN ORNAMENT..ROTATED FLORAL HEART BULLET
-2768 ; Pattern_Syntax # Ps MEDIUM LEFT PARENTHESIS ORNAMENT
-2769 ; Pattern_Syntax # Pe MEDIUM RIGHT PARENTHESIS ORNAMENT
-276A ; Pattern_Syntax # Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
-276B ; Pattern_Syntax # Pe MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
-276C ; Pattern_Syntax # Ps MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
-276D ; Pattern_Syntax # Pe MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
-276E ; Pattern_Syntax # Ps HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
-276F ; Pattern_Syntax # Pe HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
-2770 ; Pattern_Syntax # Ps HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
-2771 ; Pattern_Syntax # Pe HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
-2772 ; Pattern_Syntax # Ps LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
-2773 ; Pattern_Syntax # Pe LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
-2774 ; Pattern_Syntax # Ps MEDIUM LEFT CURLY BRACKET ORNAMENT
-2775 ; Pattern_Syntax # Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT
-2794 ; Pattern_Syntax # So HEAVY WIDE-HEADED RIGHTWARDS ARROW
-2795..2797 ; Pattern_Syntax # Cn [3] <reserved-2795>..<reserved-2797>
-2798..27AF ; Pattern_Syntax # So [24] HEAVY SOUTH EAST ARROW..NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27B0 ; Pattern_Syntax # Cn <reserved-27B0>
-27B1..27BE ; Pattern_Syntax # So [14] NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW..OPEN-OUTLINED RIGHTWARDS ARROW
-27BF ; Pattern_Syntax # Cn <reserved-27BF>
-27C0..27C4 ; Pattern_Syntax # Sm [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET
-27C5 ; Pattern_Syntax # Ps LEFT S-SHAPED BAG DELIMITER
-27C6 ; Pattern_Syntax # Pe RIGHT S-SHAPED BAG DELIMITER
-27C7..27CF ; Pattern_Syntax # Cn [9] <reserved-27C7>..<reserved-27CF>
-27D0..27E5 ; Pattern_Syntax # Sm [22] WHITE DIAMOND WITH CENTRED DOT..WHITE SQUARE WITH RIGHTWARDS TICK
-27E6 ; Pattern_Syntax # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET
-27E7 ; Pattern_Syntax # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET
-27E8 ; Pattern_Syntax # Ps MATHEMATICAL LEFT ANGLE BRACKET
-27E9 ; Pattern_Syntax # Pe MATHEMATICAL RIGHT ANGLE BRACKET
-27EA ; Pattern_Syntax # Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
-27EB ; Pattern_Syntax # Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
-27EC..27EF ; Pattern_Syntax # Cn [4] <reserved-27EC>..<reserved-27EF>
-27F0..27FF ; Pattern_Syntax # Sm [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW
-2800..28FF ; Pattern_Syntax # So [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678
-2900..2982 ; Pattern_Syntax # Sm [131] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..Z NOTATION TYPE COLON
-2983 ; Pattern_Syntax # Ps LEFT WHITE CURLY BRACKET
-2984 ; Pattern_Syntax # Pe RIGHT WHITE CURLY BRACKET
-2985 ; Pattern_Syntax # Ps LEFT WHITE PARENTHESIS
-2986 ; Pattern_Syntax # Pe RIGHT WHITE PARENTHESIS
-2987 ; Pattern_Syntax # Ps Z NOTATION LEFT IMAGE BRACKET
-2988 ; Pattern_Syntax # Pe Z NOTATION RIGHT IMAGE BRACKET
-2989 ; Pattern_Syntax # Ps Z NOTATION LEFT BINDING BRACKET
-298A ; Pattern_Syntax # Pe Z NOTATION RIGHT BINDING BRACKET
-298B ; Pattern_Syntax # Ps LEFT SQUARE BRACKET WITH UNDERBAR
-298C ; Pattern_Syntax # Pe RIGHT SQUARE BRACKET WITH UNDERBAR
-298D ; Pattern_Syntax # Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
-298E ; Pattern_Syntax # Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-298F ; Pattern_Syntax # Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-2990 ; Pattern_Syntax # Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
-2991 ; Pattern_Syntax # Ps LEFT ANGLE BRACKET WITH DOT
-2992 ; Pattern_Syntax # Pe RIGHT ANGLE BRACKET WITH DOT
-2993 ; Pattern_Syntax # Ps LEFT ARC LESS-THAN BRACKET
-2994 ; Pattern_Syntax # Pe RIGHT ARC GREATER-THAN BRACKET
-2995 ; Pattern_Syntax # Ps DOUBLE LEFT ARC GREATER-THAN BRACKET
-2996 ; Pattern_Syntax # Pe DOUBLE RIGHT ARC LESS-THAN BRACKET
-2997 ; Pattern_Syntax # Ps LEFT BLACK TORTOISE SHELL BRACKET
-2998 ; Pattern_Syntax # Pe RIGHT BLACK TORTOISE SHELL BRACKET
-2999..29D7 ; Pattern_Syntax # Sm [63] DOTTED FENCE..BLACK HOURGLASS
-29D8 ; Pattern_Syntax # Ps LEFT WIGGLY FENCE
-29D9 ; Pattern_Syntax # Pe RIGHT WIGGLY FENCE
-29DA ; Pattern_Syntax # Ps LEFT DOUBLE WIGGLY FENCE
-29DB ; Pattern_Syntax # Pe RIGHT DOUBLE WIGGLY FENCE
-29DC..29FB ; Pattern_Syntax # Sm [32] INCOMPLETE INFINITY..TRIPLE PLUS
-29FC ; Pattern_Syntax # Ps LEFT-POINTING CURVED ANGLE BRACKET
-29FD ; Pattern_Syntax # Pe RIGHT-POINTING CURVED ANGLE BRACKET
-29FE..2AFF ; Pattern_Syntax # Sm [258] TINY..N-ARY WHITE VERTICAL BAR
-2B00..2B13 ; Pattern_Syntax # So [20] NORTH EAST WHITE ARROW..SQUARE WITH BOTTOM HALF BLACK
-2B14..2BFF ; Pattern_Syntax # Cn [236] <reserved-2B14>..<reserved-2BFF>
-2E00..2E01 ; Pattern_Syntax # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER
-2E02 ; Pattern_Syntax # Pi LEFT SUBSTITUTION BRACKET
-2E03 ; Pattern_Syntax # Pf RIGHT SUBSTITUTION BRACKET
-2E04 ; Pattern_Syntax # Pi LEFT DOTTED SUBSTITUTION BRACKET
-2E05 ; Pattern_Syntax # Pf RIGHT DOTTED SUBSTITUTION BRACKET
-2E06..2E08 ; Pattern_Syntax # Po [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER
-2E09 ; Pattern_Syntax # Pi LEFT TRANSPOSITION BRACKET
-2E0A ; Pattern_Syntax # Pf RIGHT TRANSPOSITION BRACKET
-2E0B ; Pattern_Syntax # Po RAISED SQUARE
-2E0C ; Pattern_Syntax # Pi LEFT RAISED OMISSION BRACKET
-2E0D ; Pattern_Syntax # Pf RIGHT RAISED OMISSION BRACKET
-2E0E..2E16 ; Pattern_Syntax # Po [9] EDITORIAL CORONIS..DOTTED RIGHT-POINTING ANGLE
-2E17 ; Pattern_Syntax # Pd DOUBLE OBLIQUE HYPHEN
-2E18..2E1B ; Pattern_Syntax # Cn [4] <reserved-2E18>..<reserved-2E1B>
-2E1C ; Pattern_Syntax # Pi LEFT LOW PARAPHRASE BRACKET
-2E1D ; Pattern_Syntax # Pf RIGHT LOW PARAPHRASE BRACKET
-2E1E..2E7F ; Pattern_Syntax # Cn [98] <reserved-2E1E>..<reserved-2E7F>
-3001..3003 ; Pattern_Syntax # Po [3] IDEOGRAPHIC COMMA..DITTO MARK
-3008 ; Pattern_Syntax # Ps LEFT ANGLE BRACKET
-3009 ; Pattern_Syntax # Pe RIGHT ANGLE BRACKET
-300A ; Pattern_Syntax # Ps LEFT DOUBLE ANGLE BRACKET
-300B ; Pattern_Syntax # Pe RIGHT DOUBLE ANGLE BRACKET
-300C ; Pattern_Syntax # Ps LEFT CORNER BRACKET
-300D ; Pattern_Syntax # Pe RIGHT CORNER BRACKET
-300E ; Pattern_Syntax # Ps LEFT WHITE CORNER BRACKET
-300F ; Pattern_Syntax # Pe RIGHT WHITE CORNER BRACKET
-3010 ; Pattern_Syntax # Ps LEFT BLACK LENTICULAR BRACKET
-3011 ; Pattern_Syntax # Pe RIGHT BLACK LENTICULAR BRACKET
-3012..3013 ; Pattern_Syntax # So [2] POSTAL MARK..GETA MARK
-3014 ; Pattern_Syntax # Ps LEFT TORTOISE SHELL BRACKET
-3015 ; Pattern_Syntax # Pe RIGHT TORTOISE SHELL BRACKET
-3016 ; Pattern_Syntax # Ps LEFT WHITE LENTICULAR BRACKET
-3017 ; Pattern_Syntax # Pe RIGHT WHITE LENTICULAR BRACKET
-3018 ; Pattern_Syntax # Ps LEFT WHITE TORTOISE SHELL BRACKET
-3019 ; Pattern_Syntax # Pe RIGHT WHITE TORTOISE SHELL BRACKET
-301A ; Pattern_Syntax # Ps LEFT WHITE SQUARE BRACKET
-301B ; Pattern_Syntax # Pe RIGHT WHITE SQUARE BRACKET
-301C ; Pattern_Syntax # Pd WAVE DASH
-301D ; Pattern_Syntax # Ps REVERSED DOUBLE PRIME QUOTATION MARK
-301E..301F ; Pattern_Syntax # Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK
-3020 ; Pattern_Syntax # So POSTAL MARK FACE
-3030 ; Pattern_Syntax # Pd WAVY DASH
-FD3E ; Pattern_Syntax # Ps ORNATE LEFT PARENTHESIS
-FD3F ; Pattern_Syntax # Pe ORNATE RIGHT PARENTHESIS
-FE45..FE46 ; Pattern_Syntax # Po [2] SESAME DOT..WHITE SESAME DOT
-
-# Total code points: 2760
diff --git a/Master/tlpkg/tlperl/lib/unicore/PropValueAliases.txt b/Master/tlpkg/tlperl/lib/unicore/PropValueAliases.txt
deleted file mode 100644
index 3f7aad206e5..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/PropValueAliases.txt
+++ /dev/null
@@ -1,578 +0,0 @@
-# PropertyValueAliases-4.1.0.txt
-# Date: 2005-03-28, 17:21:48 GMT [MD]
-#
-# Unicode Character Database
-# Copyright (c) 1991-2005 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see UCD.html
-#
-# This file contains aliases for property values used in the UCD.
-# These names can be used for XML formats of UCD data, for regular-expression
-# property tests, and other programmatic textual descriptions of Unicode data.
-# For information on which properties are normative, see UCD.html.
-#
-# The names may be translated in appropriate environments, and additional
-# aliases may be useful.
-#
-# FORMAT
-#
-# Each line describes a property value name.
-# This consists of three or more fields, separated by semicolons.
-#
-# First Field: The first field describes the property for which that
-# property value name is used.
-#
-# Second Field: The second field is an abbreviated name.
-# If there is no abbreviated name available, the field is marked with "n/a".
-#
-# Third Field: The third field is a long name.
-#
-# In the case of ccc, there are 4 fields. The second field is numeric, third
-# is abbreviated, and fourth is long.
-#
-# The above are the preferred aliases. Other aliases may be listed in additional fields.
-#
-# Loose matching should be applied to all property names and property values, with
-# the exception of String Property values. With loose matching of property names and
-# values, the case distinctions, whitespace, and '_' are ignored. For Numeric Property
-# values, numeric equivalencies are applied: thus "01.00" is equivalent to "1".
-#
-# NOTE: Property value names are NOT unique across properties. For example:
-#
-# AL means Arabic Letter for the Bidi_Class property, and
-# AL means Alpha_Left for the Combining_Class property, and
-# AL means Alphabetic for the Line_Break property.
-#
-# In addition, some property names may be the same as some property value names.
-# For example:
-#
-# sc means the Script property, and
-# Sc means the General_Category property value Currency_Symbol (Sc)
-#
-# The combination of property value and property name is, however, unique.
-#
-# For more information, see UTS #18: Regular Expression Guidelines
-# ================================================
-
-
-# Age (age)
-
-age; n/a ; 1.1
-age; n/a ; 2.0
-age; n/a ; 2.1
-age; n/a ; 3.0
-age; n/a ; 3.1
-age; n/a ; 3.2
-age; n/a ; 4.0
-age; n/a ; 4.1
-age; n/a ; unassigned
-
-# Bidi_Class (bc)
-
-bc ; AL ; Arabic_Letter
-bc ; AN ; Arabic_Number
-bc ; B ; Paragraph_Separator
-bc ; BN ; Boundary_Neutral
-bc ; CS ; Common_Separator
-bc ; EN ; European_Number
-bc ; ES ; European_Separator
-bc ; ET ; European_Terminator
-bc ; L ; Left_To_Right
-bc ; LRE ; Left_To_Right_Embedding
-bc ; LRO ; Left_To_Right_Override
-bc ; NSM ; Nonspacing_Mark
-bc ; ON ; Other_Neutral
-bc ; PDF ; Pop_Directional_Format
-bc ; R ; Right_To_Left
-bc ; RLE ; Right_To_Left_Embedding
-bc ; RLO ; Right_To_Left_Override
-bc ; S ; Segment_Separator
-bc ; WS ; White_Space
-
-# Block (blk)
-
-blk; n/a ; Aegean_Numbers
-blk; n/a ; Alphabetic_Presentation_Forms
-blk; n/a ; Ancient_Greek_Musical_Notation
-blk; n/a ; Ancient_Greek_Numbers
-blk; n/a ; Arabic
-blk; n/a ; Arabic_Presentation_Forms-A
-blk; n/a ; Arabic_Presentation_Forms-B
-blk; n/a ; Arabic_Supplement
-blk; n/a ; Armenian
-blk; n/a ; Arrows
-blk; n/a ; Basic_Latin
-blk; n/a ; Bengali
-blk; n/a ; Block_Elements
-blk; n/a ; Bopomofo
-blk; n/a ; Bopomofo_Extended
-blk; n/a ; Box_Drawing
-blk; n/a ; Braille_Patterns
-blk; n/a ; Buginese
-blk; n/a ; Buhid
-blk; n/a ; Byzantine_Musical_Symbols
-blk; n/a ; Cherokee
-blk; n/a ; CJK_Compatibility
-blk; n/a ; CJK_Compatibility_Forms
-blk; n/a ; CJK_Compatibility_Ideographs
-blk; n/a ; CJK_Compatibility_Ideographs_Supplement
-blk; n/a ; CJK_Radicals_Supplement
-blk; n/a ; CJK_Strokes
-blk; n/a ; CJK_Symbols_and_Punctuation
-blk; n/a ; CJK_Unified_Ideographs
-blk; n/a ; CJK_Unified_Ideographs_Extension_A
-blk; n/a ; CJK_Unified_Ideographs_Extension_B
-blk; n/a ; Combining_Diacritical_Marks
-blk; n/a ; Combining_Diacritical_Marks_for_Symbols
-blk; n/a ; Combining_Diacritical_Marks_Supplement
-blk; n/a ; Combining_Half_Marks
-blk; n/a ; Control_Pictures
-blk; n/a ; Coptic
-blk; n/a ; Currency_Symbols
-blk; n/a ; Cypriot_Syllabary
-blk; n/a ; Cyrillic
-blk; n/a ; Cyrillic_Supplement ; Cyrillic_Supplementary
-blk; n/a ; Deseret
-blk; n/a ; Devanagari
-blk; n/a ; Dingbats
-blk; n/a ; Enclosed_Alphanumerics
-blk; n/a ; Enclosed_CJK_Letters_and_Months
-blk; n/a ; Ethiopic
-blk; n/a ; Ethiopic_Extended
-blk; n/a ; Ethiopic_Supplement
-blk; n/a ; General_Punctuation
-blk; n/a ; Geometric_Shapes
-blk; n/a ; Georgian
-blk; n/a ; Georgian_Supplement
-blk; n/a ; Glagolitic
-blk; n/a ; Gothic
-blk; n/a ; Greek_and_Coptic
-blk; n/a ; Greek_Extended
-blk; n/a ; Gujarati
-blk; n/a ; Gurmukhi
-blk; n/a ; Halfwidth_and_Fullwidth_Forms
-blk; n/a ; Hangul_Compatibility_Jamo
-blk; n/a ; Hangul_Jamo
-blk; n/a ; Hangul_Syllables
-blk; n/a ; Hanunoo
-blk; n/a ; Hebrew
-blk; n/a ; High_Private_Use_Surrogates
-blk; n/a ; High_Surrogates
-blk; n/a ; Hiragana
-blk; n/a ; Ideographic_Description_Characters
-blk; n/a ; IPA_Extensions
-blk; n/a ; Kanbun
-blk; n/a ; Kangxi_Radicals
-blk; n/a ; Kannada
-blk; n/a ; Katakana
-blk; n/a ; Katakana_Phonetic_Extensions
-blk; n/a ; Kharoshthi
-blk; n/a ; Khmer
-blk; n/a ; Khmer_Symbols
-blk; n/a ; Lao
-blk; n/a ; Latin-1_Supplement
-blk; n/a ; Latin_Extended-A
-blk; n/a ; Latin_Extended-B
-blk; n/a ; Latin_Extended_Additional
-blk; n/a ; Letterlike_Symbols
-blk; n/a ; Limbu
-blk; n/a ; Linear_B_Ideograms
-blk; n/a ; Linear_B_Syllabary
-blk; n/a ; Low_Surrogates
-blk; n/a ; Malayalam
-blk; n/a ; Mathematical_Alphanumeric_Symbols
-blk; n/a ; Mathematical_Operators
-blk; n/a ; Miscellaneous_Mathematical_Symbols-A
-blk; n/a ; Miscellaneous_Mathematical_Symbols-B
-blk; n/a ; Miscellaneous_Symbols
-blk; n/a ; Miscellaneous_Symbols_and_Arrows
-blk; n/a ; Miscellaneous_Technical
-blk; n/a ; Modifier_Tone_Letters
-blk; n/a ; Mongolian
-blk; n/a ; Musical_Symbols
-blk; n/a ; Myanmar
-blk; n/a ; New_Tai_Lue
-blk; n/a ; No_Block
-blk; n/a ; Number_Forms
-blk; n/a ; Ogham
-blk; n/a ; Old_Italic
-blk; n/a ; Old_Persian
-blk; n/a ; Optical_Character_Recognition
-blk; n/a ; Oriya
-blk; n/a ; Osmanya
-blk; n/a ; Phonetic_Extensions
-blk; n/a ; Phonetic_Extensions_Supplement
-blk; n/a ; Private_Use_Area
-blk; n/a ; Runic
-blk; n/a ; Shavian
-blk; n/a ; Sinhala
-blk; n/a ; Small_Form_Variants
-blk; n/a ; Spacing_Modifier_Letters
-blk; n/a ; Specials
-blk; n/a ; Superscripts_and_Subscripts
-blk; n/a ; Supplemental_Arrows-A
-blk; n/a ; Supplemental_Arrows-B
-blk; n/a ; Supplemental_Mathematical_Operators
-blk; n/a ; Supplemental_Punctuation
-blk; n/a ; Supplementary_Private_Use_Area-A
-blk; n/a ; Supplementary_Private_Use_Area-B
-blk; n/a ; Syloti_Nagri
-blk; n/a ; Syriac
-blk; n/a ; Tagalog
-blk; n/a ; Tagbanwa
-blk; n/a ; Tags
-blk; n/a ; Tai_Le
-blk; n/a ; Tai_Xuan_Jing_Symbols
-blk; n/a ; Tamil
-blk; n/a ; Telugu
-blk; n/a ; Thaana
-blk; n/a ; Thai
-blk; n/a ; Tibetan
-blk; n/a ; Tifinagh
-blk; n/a ; Ugaritic
-blk; n/a ; Unified_Canadian_Aboriginal_Syllabics
-blk; n/a ; Variation_Selectors
-blk; n/a ; Variation_Selectors_Supplement
-blk; n/a ; Vertical_Forms
-blk; n/a ; Yi_Radicals
-blk; n/a ; Yi_Syllables
-blk; n/a ; Yijing_Hexagram_Symbols
-
-# Canonical_Combining_Class (ccc)
-
-ccc; 0; NR ; Not_Reordered
-ccc; 1; OV ; Overlay
-ccc; 7; NK ; Nukta
-ccc; 8; KV ; Kana_Voicing
-ccc; 9; VR ; Virama
-ccc; 200; ATBL ; Attached_Below_Left
-ccc; 202; ATB ; Attached_Below
-ccc; 216; ATAR ; Attached_Above_Right
-ccc; 218; BL ; Below_Left
-ccc; 220; B ; Below
-ccc; 222; BR ; Below_Right
-ccc; 224; L ; Left
-ccc; 226; R ; Right
-ccc; 228; AL ; Above_Left
-ccc; 230; A ; Above
-ccc; 232; AR ; Above_Right
-ccc; 233; DB ; Double_Below
-ccc; 234; DA ; Double_Above
-ccc; 240; IS ; Iota_Subscript
-
-# Decomposition_Type (dt)
-
-dt ; can ; Canonical
-dt ; com ; Compat
-dt ; enc ; Circle
-dt ; fin ; Final
-dt ; font ; Font
-dt ; fra ; Fraction
-dt ; init ; Initial
-dt ; iso ; Isolated
-dt ; med ; Medial
-dt ; nar ; Narrow
-dt ; nb ; Nobreak
-dt ; none ; None
-dt ; sml ; Small
-dt ; sqr ; Square
-dt ; sub ; Sub
-dt ; sup ; Super
-dt ; vert ; Vertical
-dt ; wide ; Wide
-
-# East_Asian_Width (ea)
-
-ea ; A ; Ambiguous
-ea ; F ; Fullwidth
-ea ; H ; Halfwidth
-ea ; N ; Neutral
-ea ; Na ; Narrow
-ea ; W ; Wide
-
-# General_Category (gc)
-
-gc ; C ; Other # Cc | Cf | Cn | Co | Cs
-gc ; Cc ; Control ; cntrl
-gc ; Cf ; Format
-gc ; Cn ; Unassigned
-gc ; Co ; Private_Use
-gc ; Cs ; Surrogate
-gc ; L ; Letter # Ll | Lm | Lo | Lt | Lu
-gc ; LC ; Cased_Letter # Ll | Lt | Lu
-gc ; Ll ; Lowercase_Letter
-gc ; Lm ; Modifier_Letter
-gc ; Lo ; Other_Letter
-gc ; Lt ; Titlecase_Letter
-gc ; Lu ; Uppercase_Letter
-gc ; M ; Mark # Mc | Me | Mn
-gc ; Mc ; Spacing_Mark
-gc ; Me ; Enclosing_Mark
-gc ; Mn ; Nonspacing_Mark
-gc ; N ; Number # Nd | Nl | No
-gc ; Nd ; Decimal_Number ; digit
-gc ; Nl ; Letter_Number
-gc ; No ; Other_Number
-gc ; P ; Punctuation ; punct # Pc | Pd | Pe | Pf | Pi | Po | Ps
-gc ; Pc ; Connector_Punctuation
-gc ; Pd ; Dash_Punctuation
-gc ; Pe ; Close_Punctuation
-gc ; Pf ; Final_Punctuation
-gc ; Pi ; Initial_Punctuation
-gc ; Po ; Other_Punctuation
-gc ; Ps ; Open_Punctuation
-gc ; S ; Symbol # Sc | Sk | Sm | So
-gc ; Sc ; Currency_Symbol
-gc ; Sk ; Modifier_Symbol
-gc ; Sm ; Math_Symbol
-gc ; So ; Other_Symbol
-gc ; Z ; Separator # Zl | Zp | Zs
-gc ; Zl ; Line_Separator
-gc ; Zp ; Paragraph_Separator
-gc ; Zs ; Space_Separator
-
-# Grapheme_Cluster_Break (GCB)
-
-GCB; CN ; Control
-GCB; CR ; CR
-GCB; EX ; Extend
-GCB; L ; L
-GCB; LF ; LF
-GCB; LV ; LV
-GCB; LVT ; LVT
-GCB; T ; T
-GCB; V ; V
-GCB; XX ; Other
-
-# Hangul_Syllable_Type (hst)
-
-hst; L ; Leading_Jamo
-hst; LV ; LV_Syllable
-hst; LVT ; LVT_Syllable
-hst; NA ; Not_Applicable
-hst; T ; Trailing_Jamo
-hst; V ; Vowel_Jamo
-
-# Joining_Group (jg)
-
-jg ; n/a ; Ain
-jg ; n/a ; Alaph
-jg ; n/a ; Alef
-jg ; n/a ; Beh
-jg ; n/a ; Beth
-jg ; n/a ; Dal
-jg ; n/a ; Dalath_Rish
-jg ; n/a ; E
-jg ; n/a ; Fe
-jg ; n/a ; Feh
-jg ; n/a ; Final_Semkath
-jg ; n/a ; Gaf
-jg ; n/a ; Gamal
-jg ; n/a ; Hah
-jg ; n/a ; Hamza_On_Heh_Goal
-jg ; n/a ; He
-jg ; n/a ; Heh
-jg ; n/a ; Heh_Goal
-jg ; n/a ; Heth
-jg ; n/a ; Kaf
-jg ; n/a ; Kaph
-jg ; n/a ; Khaph
-jg ; n/a ; Knotted_Heh
-jg ; n/a ; Lam
-jg ; n/a ; Lamadh
-jg ; n/a ; Meem
-jg ; n/a ; Mim
-jg ; n/a ; No_Joining_Group
-jg ; n/a ; Noon
-jg ; n/a ; Nun
-jg ; n/a ; Pe
-jg ; n/a ; Qaf
-jg ; n/a ; Qaph
-jg ; n/a ; Reh
-jg ; n/a ; Reversed_Pe
-jg ; n/a ; Sad
-jg ; n/a ; Sadhe
-jg ; n/a ; Seen
-jg ; n/a ; Semkath
-jg ; n/a ; Shin
-jg ; n/a ; Swash_Kaf
-jg ; n/a ; Syriac_Waw
-jg ; n/a ; Tah
-jg ; n/a ; Taw
-jg ; n/a ; Teh_Marbuta
-jg ; n/a ; Teth
-jg ; n/a ; Waw
-jg ; n/a ; Yeh
-jg ; n/a ; Yeh_Barree
-jg ; n/a ; Yeh_With_Tail
-jg ; n/a ; Yudh
-jg ; n/a ; Yudh_He
-jg ; n/a ; Zain
-jg ; n/a ; Zhain
-
-# Joining_Type (jt)
-
-jt ; C ; Join_Causing
-jt ; D ; Dual_Joining
-jt ; L ; Left_Joining
-jt ; R ; Right_Joining
-jt ; T ; Transparent
-jt ; U ; Non_Joining
-
-# Line_Break (lb)
-
-lb ; AI ; Ambiguous
-lb ; AL ; Alphabetic
-lb ; B2 ; Break_Both
-lb ; BA ; Break_After
-lb ; BB ; Break_Before
-lb ; BK ; Mandatory_Break
-lb ; CB ; Contingent_Break
-lb ; CL ; Close_Punctuation
-lb ; CM ; Combining_Mark
-lb ; CR ; Carriage_Return
-lb ; EX ; Exclamation
-lb ; GL ; Glue
-lb ; H2 ; H2
-lb ; H3 ; H3
-lb ; HY ; Hyphen
-lb ; ID ; Ideographic
-lb ; IN ; Inseparable ; Inseperable
-lb ; IS ; Infix_Numeric
-lb ; JL ; JL
-lb ; JT ; JT
-lb ; JV ; JV
-lb ; LF ; Line_Feed
-lb ; NL ; Next_Line
-lb ; NS ; Nonstarter
-lb ; NU ; Numeric
-lb ; OP ; Open_Punctuation
-lb ; PO ; Postfix_Numeric
-lb ; PR ; Prefix_Numeric
-lb ; QU ; Quotation
-lb ; SA ; Complex_Context
-lb ; SG ; Surrogate
-lb ; SP ; Space
-lb ; SY ; Break_Symbols
-lb ; WJ ; Word_Joiner
-lb ; XX ; Unknown
-lb ; ZW ; ZWSpace
-
-# NFC_Quick_Check (NFC_QC)
-
-NFC_QC; M ; Maybe
-NFC_QC; N ; No
-NFC_QC; Y ; Yes
-
-# NFD_Quick_Check (NFD_QC)
-
-NFD_QC; N ; No
-NFD_QC; Y ; Yes
-
-# NFKC_Quick_Check (NFKC_QC)
-
-NFKC_QC; M ; Maybe
-NFKC_QC; N ; No
-NFKC_QC; Y ; Yes
-
-# NFKD_Quick_Check (NFKD_QC)
-
-NFKD_QC; N ; No
-NFKD_QC; Y ; Yes
-
-# Numeric_Type (nt)
-
-nt ; De ; Decimal
-nt ; Di ; Digit
-nt ; None ; None
-nt ; Nu ; Numeric
-
-# Script (sc)
-
-sc ; Arab ; Arabic
-sc ; Armn ; Armenian
-sc ; Beng ; Bengali
-sc ; Bopo ; Bopomofo
-sc ; Brai ; Braille
-sc ; Bugi ; Buginese
-sc ; Buhd ; Buhid
-sc ; Cans ; Canadian_Aboriginal
-sc ; Cher ; Cherokee
-sc ; Copt ; Coptic ; Qaac
-sc ; Cprt ; Cypriot
-sc ; Cyrl ; Cyrillic
-sc ; Deva ; Devanagari
-sc ; Dsrt ; Deseret
-sc ; Ethi ; Ethiopic
-sc ; Geor ; Georgian
-sc ; Glag ; Glagolitic
-sc ; Goth ; Gothic
-sc ; Grek ; Greek
-sc ; Gujr ; Gujarati
-sc ; Guru ; Gurmukhi
-sc ; Hang ; Hangul
-sc ; Hani ; Han
-sc ; Hano ; Hanunoo
-sc ; Hebr ; Hebrew
-sc ; Hira ; Hiragana
-sc ; Hrkt ; Katakana_Or_Hiragana
-sc ; Ital ; Old_Italic
-sc ; Kana ; Katakana
-sc ; Khar ; Kharoshthi
-sc ; Khmr ; Khmer
-sc ; Knda ; Kannada
-sc ; Laoo ; Lao
-sc ; Latn ; Latin
-sc ; Limb ; Limbu
-sc ; Linb ; Linear_B
-sc ; Mlym ; Malayalam
-sc ; Mong ; Mongolian
-sc ; Mymr ; Myanmar
-sc ; Ogam ; Ogham
-sc ; Orya ; Oriya
-sc ; Osma ; Osmanya
-sc ; Qaai ; Inherited
-sc ; Runr ; Runic
-sc ; Shaw ; Shavian
-sc ; Sinh ; Sinhala
-sc ; Sylo ; Syloti_Nagri
-sc ; Syrc ; Syriac
-sc ; Tagb ; Tagbanwa
-sc ; Tale ; Tai_Le
-sc ; Talu ; New_Tai_Lue
-sc ; Taml ; Tamil
-sc ; Telu ; Telugu
-sc ; Tfng ; Tifinagh
-sc ; Tglg ; Tagalog
-sc ; Thaa ; Thaana
-sc ; Thai ; Thai
-sc ; Tibt ; Tibetan
-sc ; Ugar ; Ugaritic
-sc ; Xpeo ; Old_Persian
-sc ; Yiii ; Yi
-sc ; Zyyy ; Common
-
-# Sentence_Break (SB)
-
-SB ; AT ; ATerm
-SB ; CL ; Close
-SB ; FO ; Format
-SB ; LE ; OLetter
-SB ; LO ; Lower
-SB ; NU ; Numeric
-SB ; SE ; Sep
-SB ; SP ; Sp
-SB ; ST ; STerm
-SB ; UP ; Upper
-SB ; XX ; Other
-
-# Word_Break (WB)
-
-WB ; EX ; ExtendNumLet
-WB ; FO ; Format
-WB ; KA ; Katakana
-WB ; LE ; ALetter
-WB ; ML ; MidLetter
-WB ; MN ; MidNum
-WB ; NU ; Numeric
-WB ; XX ; Other
diff --git a/Master/tlpkg/tlperl/lib/unicore/Properties b/Master/tlpkg/tlperl/lib/unicore/Properties
deleted file mode 100644
index 274db8f58f4..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/Properties
+++ /dev/null
@@ -1,350 +0,0 @@
-##
-## This file created by mktables
-## List of built-in \p{...}/\P{...} properties.
-##
-## '*' means name may be 'fuzzy'
-##
-
- \p{ASCII} [[:ASCII:]]
- \p{Alnum} [[:Alnum:]]
-* \p{Alphabetic} [\p{L}\p{OtherAlphabetic}]
- \p{Alpha} [[:Alpha:]]
- \p{Any} Alias for \p{Any} ([\x{0000}-\x{10FFFF}])
- \p{Any} [\x{0000}-\x{10FFFF}]
-* \p{Arabic} Script 'Arabic'
-* \p{Armenian} Script 'Armenian'
-* \p{AsciiHexDigit} Extended property 'ASCII_Hex_Digit'
- \p{Assigned} All assigned code points
-* \p{Bengali} Script 'Bengali'
-* \p{BidiControl} Extended property 'Bidi_Control'
- \p{Blank} [[:Blank:]]
-* \p{Bopomofo} Script 'Bopomofo'
-* \p{Braille} Script 'Braille'
-* \p{Buginese} Script 'Buginese'
-* \p{Buhid} Script 'Buhid'
-* \p{CanadianAboriginal} Script 'Canadian_Aboriginal'
-* \p{Cc} Alias for \p{Cc} (General Category 'Cc')
- \p{Cc} General Category 'Cc'
-* \p{Cf} Alias for \p{Cf} (General Category 'Cf')
- \p{Cf} General Category 'Cf'
-* \p{Cherokee} Script 'Cherokee'
- \p{Cntrl} [[:Cntrl:]]
-* \p{Cn} Alias for \p{Cn} (General Category 'Cn' [not functional in Perl])
- \p{Cn} General Category 'Cn' [not functional in Perl]
-* \p{Common} Script 'Common'
-* \p{Coptic} Script 'Coptic'
-* \p{Co} Alias for \p{Co} (General Category 'Co')
- \p{Co} General Category 'Co'
-* \p{Cs} Alias for \p{Cs} (General Category 'Cs')
- \p{Cs} General Category 'Cs'
-* \p{Cypriot} Script 'Cypriot'
-* \p{Cyrillic} Script 'Cyrillic'
-* \p{C} Alias for \p{C} (Major Category 'C')
- \p{C} Major Category 'C'
-* \p{Dash} Extended property 'Dash'
-* \p{Deprecated} Extended property 'Deprecated'
-* \p{Deseret} Script 'Deseret'
-* \p{Devanagari} Script 'Devanagari'
-* \p{Diacritic} Extended property 'Diacritic'
- \p{Digit} [[:Digit:]]
-* \p{Ethiopic} Script 'Ethiopic'
-* \p{Extender} Extended property 'Extender'
-* \p{Georgian} Script 'Georgian'
-* \p{Glagolitic} Script 'Glagolitic'
-* \p{Gothic} Script 'Gothic'
-* \p{GraphemeLink} Extended property 'Grapheme_Link'
- \p{Graph} [[:Graph:]]
-* \p{Greek} Script 'Greek'
-* \p{Gujarati} Script 'Gujarati'
-* \p{Gurmukhi} Script 'Gurmukhi'
-* \p{Hangul} Script 'Hangul'
-* \p{Hanunoo} Script 'Hanunoo'
-* \p{Han} Script 'Han'
-* \p{Hebrew} Script 'Hebrew'
-* \p{HexDigit} Extended property 'Hex_Digit'
-* \p{Hiragana} Script 'Hiragana'
-* \p{Hyphen} Extended property 'Hyphen'
-* \p{IdContinue} [\p{ID_Start}\p{Mn}\p{Mc}\p{Nd}\p{Pc}]
-* \p{IdStart} [\p{Ll}\p{Lu}\p{Lt}\p{Lm}\p{Lo}\p{Nl}]
-* \p{Ideographic} Extended property 'Ideographic'
-* \p{IdsBinaryOperator} Extended property 'IDS_Binary_Operator'
-* \p{IdsTrinaryOperator} Extended property 'IDS_Trinary_Operator'
-* \p{InAegeanNumbers} Block 'Aegean Numbers'
-* \p{InAlphabeticPresentationForms} Block 'Alphabetic Presentation Forms'
-* \p{InAncientGreekMusicalNotation} Block 'Ancient Greek Musical Notation'
-* \p{InAncientGreekNumbers} Block 'Ancient Greek Numbers'
-* \p{InArabicPresentationFormsA} Block 'Arabic Presentation Forms-A'
-* \p{InArabicPresentationFormsB} Block 'Arabic Presentation Forms-B'
-* \p{InArabicSupplement} Block 'Arabic Supplement'
-* \p{InArabic} Block 'Arabic'
-* \p{InArmenian} Block 'Armenian'
-* \p{InArrows} Block 'Arrows'
-* \p{InBasicLatin} Block 'Basic Latin'
-* \p{InBengali} Block 'Bengali'
-* \p{InBlockElements} Block 'Block Elements'
-* \p{InBopomofoExtended} Block 'Bopomofo Extended'
-* \p{InBopomofo} Block 'Bopomofo'
-* \p{InBoxDrawing} Block 'Box Drawing'
-* \p{InBraillePatterns} Block 'Braille Patterns'
-* \p{InBuginese} Block 'Buginese'
-* \p{InBuhid} Block 'Buhid'
-* \p{InByzantineMusicalSymbols} Block 'Byzantine Musical Symbols'
-* \p{InCherokee} Block 'Cherokee'
-* \p{InCjkCompatibilityForms} Block 'CJK Compatibility Forms'
-* \p{InCjkCompatibilityIdeographsSupplement} Block 'CJK Compatibility Ideographs Supplement'
-* \p{InCjkCompatibilityIdeographs} Block 'CJK Compatibility Ideographs'
-* \p{InCjkCompatibility} Block 'CJK Compatibility'
-* \p{InCjkRadicalsSupplement} Block 'CJK Radicals Supplement'
-* \p{InCjkStrokes} Block 'CJK Strokes'
-* \p{InCjkSymbolsAndPunctuation} Block 'CJK Symbols and Punctuation'
-* \p{InCjkUnifiedIdeographsExtensionA} Block 'CJK Unified Ideographs Extension A'
-* \p{InCjkUnifiedIdeographsExtensionB} Block 'CJK Unified Ideographs Extension B'
-* \p{InCjkUnifiedIdeographs} Block 'CJK Unified Ideographs'
-* \p{InCombiningDiacriticalMarksForSymbols} Block 'Combining Diacritical Marks for Symbols'
-* \p{InCombiningDiacriticalMarksSupplement} Block 'Combining Diacritical Marks Supplement'
-* \p{InCombiningDiacriticalMarks} Block 'Combining Diacritical Marks'
-* \p{InCombiningHalfMarks} Block 'Combining Half Marks'
-* \p{InControlPictures} Block 'Control Pictures'
-* \p{InCoptic} Block 'Coptic'
-* \p{InCurrencySymbols} Block 'Currency Symbols'
-* \p{InCypriotSyllabary} Block 'Cypriot Syllabary'
-* \p{InCyrillicSupplement} Block 'Cyrillic Supplement'
-* \p{InCyrillic} Block 'Cyrillic'
-* \p{InDeseret} Block 'Deseret'
-* \p{InDevanagari} Block 'Devanagari'
-* \p{InDingbats} Block 'Dingbats'
-* \p{InEnclosedAlphanumerics} Block 'Enclosed Alphanumerics'
-* \p{InEnclosedCjkLettersAndMonths} Block 'Enclosed CJK Letters and Months'
-* \p{InEthiopicExtended} Block 'Ethiopic Extended'
-* \p{InEthiopicSupplement} Block 'Ethiopic Supplement'
-* \p{InEthiopic} Block 'Ethiopic'
-* \p{InGeneralPunctuation} Block 'General Punctuation'
-* \p{InGeometricShapes} Block 'Geometric Shapes'
-* \p{InGeorgianSupplement} Block 'Georgian Supplement'
-* \p{InGeorgian} Block 'Georgian'
-* \p{InGlagolitic} Block 'Glagolitic'
-* \p{InGothic} Block 'Gothic'
-* \p{InGreekAndCoptic} Block 'Greek and Coptic'
-* \p{InGreekExtended} Block 'Greek Extended'
-* \p{InGujarati} Block 'Gujarati'
-* \p{InGurmukhi} Block 'Gurmukhi'
-* \p{InHalfwidthAndFullwidthForms} Block 'Halfwidth and Fullwidth Forms'
-* \p{InHangulCompatibilityJamo} Block 'Hangul Compatibility Jamo'
-* \p{InHangulJamo} Block 'Hangul Jamo'
-* \p{InHangulSyllables} Block 'Hangul Syllables'
-* \p{InHanunoo} Block 'Hanunoo'
-* \p{InHebrew} Block 'Hebrew'
-* \p{InHighPrivateUseSurrogates} Block 'High Private Use Surrogates'
-* \p{InHighSurrogates} Block 'High Surrogates'
-* \p{InHiragana} Block 'Hiragana'
-* \p{InIdeographicDescriptionCharacters} Block 'Ideographic Description Characters'
-* \p{InIpaExtensions} Block 'IPA Extensions'
-* \p{InKanbun} Block 'Kanbun'
-* \p{InKangxiRadicals} Block 'Kangxi Radicals'
-* \p{InKannada} Block 'Kannada'
-* \p{InKatakanaPhoneticExtensions} Block 'Katakana Phonetic Extensions'
-* \p{InKatakana} Block 'Katakana'
-* \p{InKharoshthi} Block 'Kharoshthi'
-* \p{InKhmerSymbols} Block 'Khmer Symbols'
-* \p{InKhmer} Block 'Khmer'
-* \p{InLao} Block 'Lao'
-* \p{InLatin1Supplement} Block 'Latin-1 Supplement'
-* \p{InLatinExtendedAdditional} Block 'Latin Extended Additional'
-* \p{InLatinExtendedA} Block 'Latin Extended-A'
-* \p{InLatinExtendedB} Block 'Latin Extended-B'
-* \p{InLetterlikeSymbols} Block 'Letterlike Symbols'
-* \p{InLimbu} Block 'Limbu'
-* \p{InLinearBIdeograms} Block 'Linear B Ideograms'
-* \p{InLinearBSyllabary} Block 'Linear B Syllabary'
-* \p{InLowSurrogates} Block 'Low Surrogates'
-* \p{InMalayalam} Block 'Malayalam'
-* \p{InMathematicalAlphanumericSymbols} Block 'Mathematical Alphanumeric Symbols'
-* \p{InMathematicalOperators} Block 'Mathematical Operators'
-* \p{InMiscellaneousMathematicalSymbolsA} Block 'Miscellaneous Mathematical Symbols-A'
-* \p{InMiscellaneousMathematicalSymbolsB} Block 'Miscellaneous Mathematical Symbols-B'
-* \p{InMiscellaneousSymbolsAndArrows} Block 'Miscellaneous Symbols and Arrows'
-* \p{InMiscellaneousSymbols} Block 'Miscellaneous Symbols'
-* \p{InMiscellaneousTechnical} Block 'Miscellaneous Technical'
-* \p{InModifierToneLetters} Block 'Modifier Tone Letters'
-* \p{InMongolian} Block 'Mongolian'
-* \p{InMusicalSymbols} Block 'Musical Symbols'
-* \p{InMyanmar} Block 'Myanmar'
-* \p{InNewTaiLue} Block 'New Tai Lue'
-* \p{InNumberForms} Block 'Number Forms'
-* \p{InOgham} Block 'Ogham'
-* \p{InOldItalic} Block 'Old Italic'
-* \p{InOldPersian} Block 'Old Persian'
-* \p{InOpticalCharacterRecognition} Block 'Optical Character Recognition'
-* \p{InOriya} Block 'Oriya'
-* \p{InOsmanya} Block 'Osmanya'
-* \p{InPhoneticExtensionsSupplement} Block 'Phonetic Extensions Supplement'
-* \p{InPhoneticExtensions} Block 'Phonetic Extensions'
-* \p{InPrivateUseArea} Block 'Private Use Area'
-* \p{InRunic} Block 'Runic'
-* \p{InShavian} Block 'Shavian'
-* \p{InSinhala} Block 'Sinhala'
-* \p{InSmallFormVariants} Block 'Small Form Variants'
-* \p{InSpacingModifierLetters} Block 'Spacing Modifier Letters'
-* \p{InSpecials} Block 'Specials'
-* \p{InSuperscriptsAndSubscripts} Block 'Superscripts and Subscripts'
-* \p{InSupplementalArrowsA} Block 'Supplemental Arrows-A'
-* \p{InSupplementalArrowsB} Block 'Supplemental Arrows-B'
-* \p{InSupplementalMathematicalOperators} Block 'Supplemental Mathematical Operators'
-* \p{InSupplementalPunctuation} Block 'Supplemental Punctuation'
-* \p{InSupplementaryPrivateUseAreaA} Block 'Supplementary Private Use Area-A'
-* \p{InSupplementaryPrivateUseAreaB} Block 'Supplementary Private Use Area-B'
-* \p{InSylotiNagri} Block 'Syloti Nagri'
-* \p{InSyriac} Block 'Syriac'
-* \p{InTagalog} Block 'Tagalog'
-* \p{InTagbanwa} Block 'Tagbanwa'
-* \p{InTags} Block 'Tags'
-* \p{InTaiLe} Block 'Tai Le'
-* \p{InTaiXuanJingSymbols} Block 'Tai Xuan Jing Symbols'
-* \p{InTamil} Block 'Tamil'
-* \p{InTelugu} Block 'Telugu'
-* \p{InThaana} Block 'Thaana'
-* \p{InThai} Block 'Thai'
-* \p{InTibetan} Block 'Tibetan'
-* \p{InTifinagh} Block 'Tifinagh'
-* \p{InUgaritic} Block 'Ugaritic'
-* \p{InUnifiedCanadianAboriginalSyllabics} Block 'Unified Canadian Aboriginal Syllabics'
-* \p{InVariationSelectorsSupplement} Block 'Variation Selectors Supplement'
-* \p{InVariationSelectors} Block 'Variation Selectors'
-* \p{InVerticalForms} Block 'Vertical Forms'
-* \p{InYiRadicals} Block 'Yi Radicals'
-* \p{InYiSyllables} Block 'Yi Syllables'
-* \p{InYijingHexagramSymbols} Block 'Yijing Hexagram Symbols'
-* \p{Inherited} Script 'Inherited'
-* \p{JoinControl} Extended property 'Join_Control'
-* \p{Kannada} Script 'Kannada'
-* \p{Katakana} Script 'Katakana'
-* \p{Kharoshthi} Script 'Kharoshthi'
-* \p{Khmer} Script 'Khmer'
-* \p{LC} Alias for \p{LC} ([\p{Ll}\p{Lu}\p{Lt}])
- \p{LC} [\p{Ll}\p{Lu}\p{Lt}]
-* \p{Lao} Script 'Lao'
-* \p{Latin} Script 'Latin'
-* \p{Limbu} Script 'Limbu'
-* \p{LinearB} Script 'Linear_B'
-* \p{Ll} Alias for \p{Ll} (General Category 'Ll')
- \p{Ll} General Category 'Ll'
-* \p{Lm} Alias for \p{Lm} (General Category 'Lm')
- \p{Lm} General Category 'Lm'
-* \p{LogicalOrderException} Extended property 'Logical_Order_Exception'
-* \p{Lowercase} [\p{Ll}\p{OtherLowercase}]
- \p{Lower} [[:Lower:]]
-* \p{Lo} Alias for \p{Lo} (General Category 'Lo')
- \p{Lo} General Category 'Lo'
-* \p{Lt} Alias for \p{Lt} (General Category 'Lt')
- \p{Lt} General Category 'Lt'
-* \p{Lu} Alias for \p{Lu} (General Category 'Lu')
- \p{Lu} General Category 'Lu'
-* \p{L} Alias for \p{L} (Major Category 'L')
- \p{L} Major Category 'L'
-* \p{Malayalam} Script 'Malayalam'
-* \p{Math} [\p{Sm}\p{OtherMath}]
-* \p{Mc} Alias for \p{Mc} (General Category 'Mc')
- \p{Mc} General Category 'Mc'
-* \p{Me} Alias for \p{Me} (General Category 'Me')
- \p{Me} General Category 'Me'
-* \p{Mn} Alias for \p{Mn} (General Category 'Mn')
- \p{Mn} General Category 'Mn'
-* \p{Mongolian} Script 'Mongolian'
-* \p{Myanmar} Script 'Myanmar'
-* \p{M} Alias for \p{M} (Major Category 'M')
- \p{M} Major Category 'M'
-* \p{Nd} Alias for \p{Nd} (General Category 'Nd')
- \p{Nd} General Category 'Nd'
-* \p{NewTaiLue} Script 'New_Tai_Lue'
-* \p{Nl} Alias for \p{Nl} (General Category 'Nl')
- \p{Nl} General Category 'Nl'
-* \p{NoncharacterCodePoint} Extended property 'Noncharacter_Code_Point'
-* \p{No} Alias for \p{No} (General Category 'No')
- \p{No} General Category 'No'
-* \p{N} Alias for \p{N} (Major Category 'N')
- \p{N} Major Category 'N'
-* \p{Ogham} Script 'Ogham'
-* \p{OldItalic} Script 'Old_Italic'
-* \p{OldPersian} Script 'Old_Persian'
-* \p{Oriya} Script 'Oriya'
-* \p{Osmanya} Script 'Osmanya'
-* \p{OtherAlphabetic} Extended property 'Other_Alphabetic'
-* \p{OtherDefaultIgnorableCodePoint} Extended property 'Other_Default_Ignorable_Code_Point'
-* \p{OtherGraphemeExtend} Extended property 'Other_Grapheme_Extend'
-* \p{OtherIdContinue} Extended property 'Other_ID_Continue'
-* \p{OtherIdStart} Extended property 'Other_ID_Start'
-* \p{OtherLowercase} Extended property 'Other_Lowercase'
-* \p{OtherMath} Extended property 'Other_Math'
-* \p{OtherUppercase} Extended property 'Other_Uppercase'
-* \p{PatternSyntax} Extended property 'Pattern_Syntax'
-* \p{PatternWhiteSpace} Extended property 'Pattern_White_Space'
-* \p{Pc} Alias for \p{Pc} (General Category 'Pc')
- \p{Pc} General Category 'Pc'
-* \p{Pd} Alias for \p{Pd} (General Category 'Pd')
- \p{Pd} General Category 'Pd'
-* \p{Pe} Alias for \p{Pe} (General Category 'Pe')
- \p{Pe} General Category 'Pe'
-* \p{Pf} Alias for \p{Pf} (General Category 'Pf')
- \p{Pf} General Category 'Pf'
-* \p{Pi} Alias for \p{Pi} (General Category 'Pi')
- \p{Pi} General Category 'Pi'
-* \p{Po} Alias for \p{Po} (General Category 'Po')
- \p{Po} General Category 'Po'
- \p{Print} [[:Print:]]
-* \p{Ps} Alias for \p{Ps} (General Category 'Ps')
- \p{Ps} General Category 'Ps'
- \p{Punct} [[:Punct:]]
-* \p{P} Alias for \p{P} (Major Category 'P')
- \p{P} Major Category 'P'
-* \p{QuotationMark} Extended property 'Quotation_Mark'
-* \p{Radical} Extended property 'Radical'
-* \p{Runic} Script 'Runic'
-* \p{Sc} Alias for \p{Sc} (General Category 'Sc')
- \p{Sc} General Category 'Sc'
-* \p{Shavian} Script 'Shavian'
-* \p{Sinhala} Script 'Sinhala'
-* \p{Sk} Alias for \p{Sk} (General Category 'Sk')
- \p{Sk} General Category 'Sk'
-* \p{Sm} Alias for \p{Sm} (General Category 'Sm')
- \p{Sm} General Category 'Sm'
-* \p{SoftDotted} Extended property 'Soft_Dotted'
-* \p{So} Alias for \p{So} (General Category 'So')
- \p{So} General Category 'So'
- \p{SpacePerl} \s
- \p{Space} [[:Space:]]
-* \p{Sterm} Extended property 'STerm'
-* \p{SylotiNagri} Script 'Syloti_Nagri'
-* \p{Syriac} Script 'Syriac'
-* \p{S} Alias for \p{S} (Major Category 'S')
- \p{S} Major Category 'S'
-* \p{Tagalog} Script 'Tagalog'
-* \p{Tagbanwa} Script 'Tagbanwa'
-* \p{TaiLe} Script 'Tai_Le'
-* \p{Tamil} Script 'Tamil'
-* \p{Telugu} Script 'Telugu'
-* \p{TerminalPunctuation} Extended property 'Terminal_Punctuation'
-* \p{Thaana} Script 'Thaana'
-* \p{Thai} Script 'Thai'
-* \p{Tibetan} Script 'Tibetan'
-* \p{Tifinagh} Script 'Tifinagh'
- \p{Title} [[:Title:]]
-* \p{Ugaritic} Script 'Ugaritic'
-* \p{UnifiedIdeograph} Extended property 'Unified_Ideograph'
-* \p{Uppercase} [\p{Lu}\p{Other_Uppercase}]
- \p{Upper} [[:Upper:]]
-* \p{VariationSelector} Extended property 'Variation_Selector'
-* \p{WhiteSpace} Extended property 'White_Space'
- \p{Word} [[:Word:]]
- \p{XDigit} [[:XDigit:]]
-* \p{Yi} Script 'Yi'
-* \p{Zl} Alias for \p{Zl} (General Category 'Zl')
- \p{Zl} General Category 'Zl'
-* \p{Zp} Alias for \p{Zp} (General Category 'Zp')
- \p{Zp} General Category 'Zp'
-* \p{Zs} Alias for \p{Zs} (General Category 'Zs')
- \p{Zs} General Category 'Zs'
-* \p{Z} Alias for \p{Z} (Major Category 'Z')
- \p{Z} Major Category 'Z'
- \p{_CanonDCIJ} (for internal casefolding use)
- \p{_CaseIgnorable} (for internal casefolding use)
- \p{_CombAbove} (for internal casefolding use)
diff --git a/Master/tlpkg/tlperl/lib/unicore/PropertyAliases.txt b/Master/tlpkg/tlperl/lib/unicore/PropertyAliases.txt
deleted file mode 100644
index 39b14e5e6f3..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/PropertyAliases.txt
+++ /dev/null
@@ -1,163 +0,0 @@
-# PropertyAliases-4.1.0.txt
-# Date: 2005-02-26, 11:13:41 GMT [MD]
-#
-# Unicode Character Database
-# Copyright (c) 1991-2005 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see UCD.html
-# This file contains aliases for properties used in the UCD.
-# These names can be used for XML formats of UCD data, for regular-expression
-# property tests, and other programmatic textual descriptions of Unicode data.
-# For information on which properties are normative, see UCD.html.
-#
-# The names may be translated in appropriate environments, and additional
-# aliases may be useful.
-#
-# FORMAT
-#
-# Each line has two or more fields, separated by semicolons.
-#
-# First Field: The first field is an abbreviated name for the property.
-#
-# Second Field: The second field is a long name
-#
-# The above are the preferred aliases. Other aliases may be listed in additional fields.
-#
-# Loose matching should be applied to all property names and property values, with
-# the exception of String Property values. With loose matching of property names and
-# values, the case distinctions, whitespace, and '_' are ignored. For Numeric Property
-# values, numeric equivalencies are applied: thus "01.00" is equivalent to "1".
-#
-# NOTE: Property value names are NOT unique across properties. For example:
-#
-# AL means Arabic Letter for the Bidi_Class property, and
-# AL means Alpha_Left for the Combining_Class property, and
-# AL means Alphabetic for the Line_Break property.
-#
-# In addition, some property names may be the same as some property value names.
-# For example:
-#
-# sc means the Script property, and
-# Sc means the General_Category property value Currency_Symbol (Sc)
-#
-# The combination of property value and property name is, however, unique.
-#
-# For more information, see UTS #18: Regular Expression Guidelines
-# ================================================
-
-
-# ================================================
-# Numeric Properties
-# ================================================
-nv ; Numeric_Value
-
-# ================================================
-# String Properties
-# ================================================
-bmg ; Bidi_Mirroring_Glyph
-cf ; Case_Folding
-dm ; Decomposition_Mapping
-FC_NFKC ; FC_NFKC_Closure
-lc ; Lowercase_Mapping
-scc ; Special_Case_Condition
-sfc ; Simple_Case_Folding
-slc ; Simple_Lowercase_Mapping
-stc ; Simple_Titlecase_Mapping
-suc ; Simple_Uppercase_Mapping
-tc ; Titlecase_Mapping
-uc ; Uppercase_Mapping
-
-# ================================================
-# Miscellaneous Properties
-# ================================================
-isc ; ISO_Comment
-na ; Name
-na1 ; Unicode_1_Name
-URS ; Unicode_Radical_Stroke
-
-# ================================================
-# Catalog Properties
-# ================================================
-age ; Age
-blk ; Block
-sc ; Script
-
-# ================================================
-# Enumerated Properties
-# ================================================
-bc ; Bidi_Class
-ccc ; Canonical_Combining_Class
-dt ; Decomposition_Type
-ea ; East_Asian_Width
-gc ; General_Category
-GCB ; Grapheme_Cluster_Break
-hst ; Hangul_Syllable_Type
-jg ; Joining_Group
-jt ; Joining_Type
-lb ; Line_Break
-NFC_QC ; NFC_Quick_Check
-NFD_QC ; NFD_Quick_Check
-NFKC_QC ; NFKC_Quick_Check
-NFKD_QC ; NFKD_Quick_Check
-nt ; Numeric_Type
-SB ; Sentence_Break
-WB ; Word_Break
-
-# ================================================
-# Binary Properties
-# ================================================
-AHex ; ASCII_Hex_Digit
-Alpha ; Alphabetic
-Bidi_C ; Bidi_Control
-Bidi_M ; Bidi_Mirrored
-CE ; Composition_Exclusion
-Comp_Ex ; Full_Composition_Exclusion
-Dash ; Dash
-Dep ; Deprecated
-DI ; Default_Ignorable_Code_Point
-Dia ; Diacritic
-Ext ; Extender
-Gr_Base ; Grapheme_Base
-Gr_Ext ; Grapheme_Extend
-Gr_Link ; Grapheme_Link
-Hex ; Hex_Digit
-Hyphen ; Hyphen
-IDC ; ID_Continue
-Ideo ; Ideographic
-IDS ; ID_Start
-IDSB ; IDS_Binary_Operator
-IDST ; IDS_Trinary_Operator
-Join_C ; Join_Control
-LOE ; Logical_Order_Exception
-Lower ; Lowercase
-Math ; Math
-NChar ; Noncharacter_Code_Point
-OAlpha ; Other_Alphabetic
-ODI ; Other_Default_Ignorable_Code_Point
-OGr_Ext ; Other_Grapheme_Extend
-OIDC ; Other_ID_Continue
-OIDS ; Other_ID_Start
-OLower ; Other_Lowercase
-OMath ; Other_Math
-OUpper ; Other_Uppercase
-Pat_Syn ; Pattern_Syntax
-Pat_WS ; Pattern_White_Space
-QMark ; Quotation_Mark
-Radical ; Radical
-SD ; Soft_Dotted
-STerm ; STerm
-Term ; Terminal_Punctuation
-UIdeo ; Unified_Ideograph
-Upper ; Uppercase
-VS ; Variation_Selector
-WSpace ; White_Space ; space
-XIDC ; XID_Continue
-XIDS ; XID_Start
-XO_NFC ; Expands_On_NFC
-XO_NFD ; Expands_On_NFD
-XO_NFKC ; Expands_On_NFKC
-XO_NFKD ; Expands_On_NFKD
-
-# ================================================
-# Total: 88
-
diff --git a/Master/tlpkg/tlperl/lib/unicore/ReadMe.txt b/Master/tlpkg/tlperl/lib/unicore/ReadMe.txt
deleted file mode 100644
index 0ad5623c830..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/ReadMe.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-2005 March 30
-
-Welcome to the Unicode Character Database
-
-This directory contains contributory data files
-for the Unicode Character Database of the Unicode Standard.
-
-Copyright (c) 1991-2005 Unicode, Inc.
-For terms of use, see http://www.unicode.org/terms_of_use.html
-
-For an overview of how to access a specific version of
-the Unicode Character Database (UCD) and other information, see:
-
-http://www.unicode.org/ucd/
-
-If you accessed this file via the URL:
-
-http://www.unicode.org/Public/UNIDATA/ReadMe.txt
-
-then you are looking at the most current version of the UCD.
-Otherwise the version number of the UCD is part of the path name.
-
-The file UCD.html in this directory, as well as any file
-headers, where present, also identify the version of the UCD.
diff --git a/Master/tlpkg/tlperl/lib/unicore/Scripts.txt b/Master/tlpkg/tlperl/lib/unicore/Scripts.txt
deleted file mode 100644
index 8e2bae372ad..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/Scripts.txt
+++ /dev/null
@@ -1,1464 +0,0 @@
-# Scripts-4.1.0.txt
-# Date: 2005-03-10, 01:56:19 GMT [MD]
-#
-# Unicode Character Database
-# Copyright (c) 1991-2005 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see UCD.html
-
-# ================================================
-
-# Property: Script
-
-# All code points not explicitly listed for Script
-# have the value Common (Zyyy).
-
-# ================================================
-
-0000..001F ; Common # Cc [32] <control-0000>..<control-001F>
-0020 ; Common # Zs SPACE
-0021..0023 ; Common # Po [3] EXCLAMATION MARK..NUMBER SIGN
-0024 ; Common # Sc DOLLAR SIGN
-0025..0027 ; Common # Po [3] PERCENT SIGN..APOSTROPHE
-0028 ; Common # Ps LEFT PARENTHESIS
-0029 ; Common # Pe RIGHT PARENTHESIS
-002A ; Common # Po ASTERISK
-002B ; Common # Sm PLUS SIGN
-002C ; Common # Po COMMA
-002D ; Common # Pd HYPHEN-MINUS
-002E..002F ; Common # Po [2] FULL STOP..SOLIDUS
-0030..0039 ; Common # Nd [10] DIGIT ZERO..DIGIT NINE
-003A..003B ; Common # Po [2] COLON..SEMICOLON
-003C..003E ; Common # Sm [3] LESS-THAN SIGN..GREATER-THAN SIGN
-003F..0040 ; Common # Po [2] QUESTION MARK..COMMERCIAL AT
-005B ; Common # Ps LEFT SQUARE BRACKET
-005C ; Common # Po REVERSE SOLIDUS
-005D ; Common # Pe RIGHT SQUARE BRACKET
-005E ; Common # Sk CIRCUMFLEX ACCENT
-005F ; Common # Pc LOW LINE
-0060 ; Common # Sk GRAVE ACCENT
-007B ; Common # Ps LEFT CURLY BRACKET
-007C ; Common # Sm VERTICAL LINE
-007D ; Common # Pe RIGHT CURLY BRACKET
-007E ; Common # Sm TILDE
-007F..009F ; Common # Cc [33] <control-007F>..<control-009F>
-00A0 ; Common # Zs NO-BREAK SPACE
-00A1 ; Common # Po INVERTED EXCLAMATION MARK
-00A2..00A5 ; Common # Sc [4] CENT SIGN..YEN SIGN
-00A6..00A7 ; Common # So [2] BROKEN BAR..SECTION SIGN
-00A8 ; Common # Sk DIAERESIS
-00A9 ; Common # So COPYRIGHT SIGN
-00AB ; Common # Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-00AC ; Common # Sm NOT SIGN
-00AD ; Common # Cf SOFT HYPHEN
-00AE ; Common # So REGISTERED SIGN
-00AF ; Common # Sk MACRON
-00B0 ; Common # So DEGREE SIGN
-00B1 ; Common # Sm PLUS-MINUS SIGN
-00B2..00B3 ; Common # No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE
-00B4 ; Common # Sk ACUTE ACCENT
-00B5 ; Common # L& MICRO SIGN
-00B6 ; Common # So PILCROW SIGN
-00B7 ; Common # Po MIDDLE DOT
-00B8 ; Common # Sk CEDILLA
-00B9 ; Common # No SUPERSCRIPT ONE
-00BB ; Common # Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-00BC..00BE ; Common # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
-00BF ; Common # Po INVERTED QUESTION MARK
-00D7 ; Common # Sm MULTIPLICATION SIGN
-00F7 ; Common # Sm DIVISION SIGN
-02B9..02C1 ; Common # Lm [9] MODIFIER LETTER PRIME..MODIFIER LETTER REVERSED GLOTTAL STOP
-02C2..02C5 ; Common # Sk [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD
-02C6..02D1 ; Common # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
-02D2..02DF ; Common # Sk [14] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER CROSS ACCENT
-02E5..02ED ; Common # Sk [9] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER UNASPIRATED
-02EE ; Common # Lm MODIFIER LETTER DOUBLE APOSTROPHE
-02EF..02FF ; Common # Sk [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW
-037E ; Common # Po GREEK QUESTION MARK
-0387 ; Common # Po GREEK ANO TELEIA
-0589 ; Common # Po ARMENIAN FULL STOP
-0600..0603 ; Common # Cf [4] ARABIC NUMBER SIGN..ARABIC SIGN SAFHA
-060C ; Common # Po ARABIC COMMA
-061B ; Common # Po ARABIC SEMICOLON
-061F ; Common # Po ARABIC QUESTION MARK
-0640 ; Common # Lm ARABIC TATWEEL
-0660..0669 ; Common # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
-06DD ; Common # Cf ARABIC END OF AYAH
-0964..0965 ; Common # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
-0970 ; Common # Po DEVANAGARI ABBREVIATION SIGN
-0E3F ; Common # Sc THAI CURRENCY SYMBOL BAHT
-10FB ; Common # Po GEORGIAN PARAGRAPH SEPARATOR
-16EB..16ED ; Common # Po [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION
-1735..1736 ; Common # Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
-2000..200A ; Common # Zs [11] EN QUAD..HAIR SPACE
-200B ; Common # Cf ZERO WIDTH SPACE
-200E..200F ; Common # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
-2010..2015 ; Common # Pd [6] HYPHEN..HORIZONTAL BAR
-2016..2017 ; Common # Po [2] DOUBLE VERTICAL LINE..DOUBLE LOW LINE
-2018 ; Common # Pi LEFT SINGLE QUOTATION MARK
-2019 ; Common # Pf RIGHT SINGLE QUOTATION MARK
-201A ; Common # Ps SINGLE LOW-9 QUOTATION MARK
-201B..201C ; Common # Pi [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK
-201D ; Common # Pf RIGHT DOUBLE QUOTATION MARK
-201E ; Common # Ps DOUBLE LOW-9 QUOTATION MARK
-201F ; Common # Pi DOUBLE HIGH-REVERSED-9 QUOTATION MARK
-2020..2027 ; Common # Po [8] DAGGER..HYPHENATION POINT
-2028 ; Common # Zl LINE SEPARATOR
-2029 ; Common # Zp PARAGRAPH SEPARATOR
-202A..202E ; Common # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
-202F ; Common # Zs NARROW NO-BREAK SPACE
-2030..2038 ; Common # Po [9] PER MILLE SIGN..CARET
-2039 ; Common # Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-203A ; Common # Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-203B..203E ; Common # Po [4] REFERENCE MARK..OVERLINE
-203F..2040 ; Common # Pc [2] UNDERTIE..CHARACTER TIE
-2041..2043 ; Common # Po [3] CARET INSERTION POINT..HYPHEN BULLET
-2044 ; Common # Sm FRACTION SLASH
-2045 ; Common # Ps LEFT SQUARE BRACKET WITH QUILL
-2046 ; Common # Pe RIGHT SQUARE BRACKET WITH QUILL
-2047..2051 ; Common # Po [11] DOUBLE QUESTION MARK..TWO ASTERISKS ALIGNED VERTICALLY
-2052 ; Common # Sm COMMERCIAL MINUS SIGN
-2053 ; Common # Po SWUNG DASH
-2054 ; Common # Pc INVERTED UNDERTIE
-2055..205E ; Common # Po [10] FLOWER PUNCTUATION MARK..VERTICAL FOUR DOTS
-205F ; Common # Zs MEDIUM MATHEMATICAL SPACE
-2060..2063 ; Common # Cf [4] WORD JOINER..INVISIBLE SEPARATOR
-206A..206F ; Common # Cf [6] INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES
-2070 ; Common # No SUPERSCRIPT ZERO
-2074..2079 ; Common # No [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE
-207A..207C ; Common # Sm [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
-207D ; Common # Ps SUPERSCRIPT LEFT PARENTHESIS
-207E ; Common # Pe SUPERSCRIPT RIGHT PARENTHESIS
-2080..2089 ; Common # No [10] SUBSCRIPT ZERO..SUBSCRIPT NINE
-208A..208C ; Common # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
-208D ; Common # Ps SUBSCRIPT LEFT PARENTHESIS
-208E ; Common # Pe SUBSCRIPT RIGHT PARENTHESIS
-20A0..20B5 ; Common # Sc [22] EURO-CURRENCY SIGN..CEDI SIGN
-2100..2101 ; Common # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
-2102 ; Common # L& DOUBLE-STRUCK CAPITAL C
-2103..2106 ; Common # So [4] DEGREE CELSIUS..CADA UNA
-2107 ; Common # L& EULER CONSTANT
-2108..2109 ; Common # So [2] SCRUPLE..DEGREE FAHRENHEIT
-210A..2113 ; Common # L& [10] SCRIPT SMALL G..SCRIPT SMALL L
-2114 ; Common # So L B BAR SYMBOL
-2115 ; Common # L& DOUBLE-STRUCK CAPITAL N
-2116..2118 ; Common # So [3] NUMERO SIGN..SCRIPT CAPITAL P
-2119..211D ; Common # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
-211E..2123 ; Common # So [6] PRESCRIPTION TAKE..VERSICLE
-2124 ; Common # L& DOUBLE-STRUCK CAPITAL Z
-2125 ; Common # So OUNCE SIGN
-2127 ; Common # So INVERTED OHM SIGN
-2128 ; Common # L& BLACK-LETTER CAPITAL Z
-2129 ; Common # So TURNED GREEK SMALL LETTER IOTA
-212C..212D ; Common # L& [2] SCRIPT CAPITAL B..BLACK-LETTER CAPITAL C
-212E ; Common # So ESTIMATED SYMBOL
-212F..2131 ; Common # L& [3] SCRIPT SMALL E..SCRIPT CAPITAL F
-2132 ; Common # So TURNED CAPITAL F
-2133..2134 ; Common # L& [2] SCRIPT CAPITAL M..SCRIPT SMALL O
-2135..2138 ; Common # Lo [4] ALEF SYMBOL..DALET SYMBOL
-2139 ; Common # L& INFORMATION SOURCE
-213A..213B ; Common # So [2] ROTATED CAPITAL Q..FACSIMILE SIGN
-213C..213F ; Common # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
-2140..2144 ; Common # Sm [5] DOUBLE-STRUCK N-ARY SUMMATION..TURNED SANS-SERIF CAPITAL Y
-2145..2149 ; Common # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
-214A ; Common # So PROPERTY LINE
-214B ; Common # Sm TURNED AMPERSAND
-214C ; Common # So PER SIGN
-2153..215F ; Common # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE
-2160..2183 ; Common # Nl [36] ROMAN NUMERAL ONE..ROMAN NUMERAL REVERSED ONE HUNDRED
-2190..2194 ; Common # Sm [5] LEFTWARDS ARROW..LEFT RIGHT ARROW
-2195..2199 ; Common # So [5] UP DOWN ARROW..SOUTH WEST ARROW
-219A..219B ; Common # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
-219C..219F ; Common # So [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW
-21A0 ; Common # Sm RIGHTWARDS TWO HEADED ARROW
-21A1..21A2 ; Common # So [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL
-21A3 ; Common # Sm RIGHTWARDS ARROW WITH TAIL
-21A4..21A5 ; Common # So [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR
-21A6 ; Common # Sm RIGHTWARDS ARROW FROM BAR
-21A7..21AD ; Common # So [7] DOWNWARDS ARROW FROM BAR..LEFT RIGHT WAVE ARROW
-21AE ; Common # Sm LEFT RIGHT ARROW WITH STROKE
-21AF..21CD ; Common # So [31] DOWNWARDS ZIGZAG ARROW..LEFTWARDS DOUBLE ARROW WITH STROKE
-21CE..21CF ; Common # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
-21D0..21D1 ; Common # So [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW
-21D2 ; Common # Sm RIGHTWARDS DOUBLE ARROW
-21D3 ; Common # So DOWNWARDS DOUBLE ARROW
-21D4 ; Common # Sm LEFT RIGHT DOUBLE ARROW
-21D5..21F3 ; Common # So [31] UP DOWN DOUBLE ARROW..UP DOWN WHITE ARROW
-21F4..22FF ; Common # Sm [268] RIGHT ARROW WITH SMALL CIRCLE..Z NOTATION BAG MEMBERSHIP
-2300..2307 ; Common # So [8] DIAMETER SIGN..WAVY LINE
-2308..230B ; Common # Sm [4] LEFT CEILING..RIGHT FLOOR
-230C..231F ; Common # So [20] BOTTOM RIGHT CROP..BOTTOM RIGHT CORNER
-2320..2321 ; Common # Sm [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL
-2322..2328 ; Common # So [7] FROWN..KEYBOARD
-2329 ; Common # Ps LEFT-POINTING ANGLE BRACKET
-232A ; Common # Pe RIGHT-POINTING ANGLE BRACKET
-232B..237B ; Common # So [81] ERASE TO THE LEFT..NOT CHECK MARK
-237C ; Common # Sm RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
-237D..239A ; Common # So [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL
-239B..23B3 ; Common # Sm [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
-23B4 ; Common # Ps TOP SQUARE BRACKET
-23B5 ; Common # Pe BOTTOM SQUARE BRACKET
-23B6 ; Common # Po BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET
-23B7..23DB ; Common # So [37] RADICAL SYMBOL BOTTOM..FUSE
-2400..2426 ; Common # So [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
-2440..244A ; Common # So [11] OCR HOOK..OCR DOUBLE BACKSLASH
-2460..249B ; Common # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
-249C..24E9 ; Common # So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
-24EA..24FF ; Common # No [22] CIRCLED DIGIT ZERO..NEGATIVE CIRCLED DIGIT ZERO
-2500..25B6 ; Common # So [183] BOX DRAWINGS LIGHT HORIZONTAL..BLACK RIGHT-POINTING TRIANGLE
-25B7 ; Common # Sm WHITE RIGHT-POINTING TRIANGLE
-25B8..25C0 ; Common # So [9] BLACK RIGHT-POINTING SMALL TRIANGLE..BLACK LEFT-POINTING TRIANGLE
-25C1 ; Common # Sm WHITE LEFT-POINTING TRIANGLE
-25C2..25F7 ; Common # So [54] BLACK LEFT-POINTING SMALL TRIANGLE..WHITE CIRCLE WITH UPPER RIGHT QUADRANT
-25F8..25FF ; Common # Sm [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE
-2600..266E ; Common # So [111] BLACK SUN WITH RAYS..MUSIC NATURAL SIGN
-266F ; Common # Sm MUSIC SHARP SIGN
-2670..269C ; Common # So [45] WEST SYRIAC CROSS..FLEUR-DE-LIS
-26A0..26B1 ; Common # So [18] WARNING SIGN..FUNERAL URN
-2701..2704 ; Common # So [4] UPPER BLADE SCISSORS..WHITE SCISSORS
-2706..2709 ; Common # So [4] TELEPHONE LOCATION SIGN..ENVELOPE
-270C..2727 ; Common # So [28] VICTORY HAND..WHITE FOUR POINTED STAR
-2729..274B ; Common # So [35] STRESS OUTLINED WHITE STAR..HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
-274D ; Common # So SHADOWED WHITE CIRCLE
-274F..2752 ; Common # So [4] LOWER RIGHT DROP-SHADOWED WHITE SQUARE..UPPER RIGHT SHADOWED WHITE SQUARE
-2756 ; Common # So BLACK DIAMOND MINUS WHITE X
-2758..275E ; Common # So [7] LIGHT VERTICAL BAR..HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
-2761..2767 ; Common # So [7] CURVED STEM PARAGRAPH SIGN ORNAMENT..ROTATED FLORAL HEART BULLET
-2768 ; Common # Ps MEDIUM LEFT PARENTHESIS ORNAMENT
-2769 ; Common # Pe MEDIUM RIGHT PARENTHESIS ORNAMENT
-276A ; Common # Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
-276B ; Common # Pe MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
-276C ; Common # Ps MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
-276D ; Common # Pe MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
-276E ; Common # Ps HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
-276F ; Common # Pe HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
-2770 ; Common # Ps HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
-2771 ; Common # Pe HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
-2772 ; Common # Ps LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
-2773 ; Common # Pe LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
-2774 ; Common # Ps MEDIUM LEFT CURLY BRACKET ORNAMENT
-2775 ; Common # Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT
-2776..2793 ; Common # No [30] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
-2794 ; Common # So HEAVY WIDE-HEADED RIGHTWARDS ARROW
-2798..27AF ; Common # So [24] HEAVY SOUTH EAST ARROW..NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27B1..27BE ; Common # So [14] NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW..OPEN-OUTLINED RIGHTWARDS ARROW
-27C0..27C4 ; Common # Sm [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET
-27C5 ; Common # Ps LEFT S-SHAPED BAG DELIMITER
-27C6 ; Common # Pe RIGHT S-SHAPED BAG DELIMITER
-27D0..27E5 ; Common # Sm [22] WHITE DIAMOND WITH CENTRED DOT..WHITE SQUARE WITH RIGHTWARDS TICK
-27E6 ; Common # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET
-27E7 ; Common # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET
-27E8 ; Common # Ps MATHEMATICAL LEFT ANGLE BRACKET
-27E9 ; Common # Pe MATHEMATICAL RIGHT ANGLE BRACKET
-27EA ; Common # Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
-27EB ; Common # Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
-27F0..27FF ; Common # Sm [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW
-2900..2982 ; Common # Sm [131] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..Z NOTATION TYPE COLON
-2983 ; Common # Ps LEFT WHITE CURLY BRACKET
-2984 ; Common # Pe RIGHT WHITE CURLY BRACKET
-2985 ; Common # Ps LEFT WHITE PARENTHESIS
-2986 ; Common # Pe RIGHT WHITE PARENTHESIS
-2987 ; Common # Ps Z NOTATION LEFT IMAGE BRACKET
-2988 ; Common # Pe Z NOTATION RIGHT IMAGE BRACKET
-2989 ; Common # Ps Z NOTATION LEFT BINDING BRACKET
-298A ; Common # Pe Z NOTATION RIGHT BINDING BRACKET
-298B ; Common # Ps LEFT SQUARE BRACKET WITH UNDERBAR
-298C ; Common # Pe RIGHT SQUARE BRACKET WITH UNDERBAR
-298D ; Common # Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
-298E ; Common # Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-298F ; Common # Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-2990 ; Common # Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
-2991 ; Common # Ps LEFT ANGLE BRACKET WITH DOT
-2992 ; Common # Pe RIGHT ANGLE BRACKET WITH DOT
-2993 ; Common # Ps LEFT ARC LESS-THAN BRACKET
-2994 ; Common # Pe RIGHT ARC GREATER-THAN BRACKET
-2995 ; Common # Ps DOUBLE LEFT ARC GREATER-THAN BRACKET
-2996 ; Common # Pe DOUBLE RIGHT ARC LESS-THAN BRACKET
-2997 ; Common # Ps LEFT BLACK TORTOISE SHELL BRACKET
-2998 ; Common # Pe RIGHT BLACK TORTOISE SHELL BRACKET
-2999..29D7 ; Common # Sm [63] DOTTED FENCE..BLACK HOURGLASS
-29D8 ; Common # Ps LEFT WIGGLY FENCE
-29D9 ; Common # Pe RIGHT WIGGLY FENCE
-29DA ; Common # Ps LEFT DOUBLE WIGGLY FENCE
-29DB ; Common # Pe RIGHT DOUBLE WIGGLY FENCE
-29DC..29FB ; Common # Sm [32] INCOMPLETE INFINITY..TRIPLE PLUS
-29FC ; Common # Ps LEFT-POINTING CURVED ANGLE BRACKET
-29FD ; Common # Pe RIGHT-POINTING CURVED ANGLE BRACKET
-29FE..2AFF ; Common # Sm [258] TINY..N-ARY WHITE VERTICAL BAR
-2B00..2B13 ; Common # So [20] NORTH EAST WHITE ARROW..SQUARE WITH BOTTOM HALF BLACK
-2E00..2E01 ; Common # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER
-2E02 ; Common # Pi LEFT SUBSTITUTION BRACKET
-2E03 ; Common # Pf RIGHT SUBSTITUTION BRACKET
-2E04 ; Common # Pi LEFT DOTTED SUBSTITUTION BRACKET
-2E05 ; Common # Pf RIGHT DOTTED SUBSTITUTION BRACKET
-2E06..2E08 ; Common # Po [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER
-2E09 ; Common # Pi LEFT TRANSPOSITION BRACKET
-2E0A ; Common # Pf RIGHT TRANSPOSITION BRACKET
-2E0B ; Common # Po RAISED SQUARE
-2E0C ; Common # Pi LEFT RAISED OMISSION BRACKET
-2E0D ; Common # Pf RIGHT RAISED OMISSION BRACKET
-2E0E..2E16 ; Common # Po [9] EDITORIAL CORONIS..DOTTED RIGHT-POINTING ANGLE
-2E17 ; Common # Pd DOUBLE OBLIQUE HYPHEN
-2E1C ; Common # Pi LEFT LOW PARAPHRASE BRACKET
-2E1D ; Common # Pf RIGHT LOW PARAPHRASE BRACKET
-2FF0..2FFB ; Common # So [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
-3000 ; Common # Zs IDEOGRAPHIC SPACE
-3001..3003 ; Common # Po [3] IDEOGRAPHIC COMMA..DITTO MARK
-3004 ; Common # So JAPANESE INDUSTRIAL STANDARD SYMBOL
-3006 ; Common # Lo IDEOGRAPHIC CLOSING MARK
-3008 ; Common # Ps LEFT ANGLE BRACKET
-3009 ; Common # Pe RIGHT ANGLE BRACKET
-300A ; Common # Ps LEFT DOUBLE ANGLE BRACKET
-300B ; Common # Pe RIGHT DOUBLE ANGLE BRACKET
-300C ; Common # Ps LEFT CORNER BRACKET
-300D ; Common # Pe RIGHT CORNER BRACKET
-300E ; Common # Ps LEFT WHITE CORNER BRACKET
-300F ; Common # Pe RIGHT WHITE CORNER BRACKET
-3010 ; Common # Ps LEFT BLACK LENTICULAR BRACKET
-3011 ; Common # Pe RIGHT BLACK LENTICULAR BRACKET
-3012..3013 ; Common # So [2] POSTAL MARK..GETA MARK
-3014 ; Common # Ps LEFT TORTOISE SHELL BRACKET
-3015 ; Common # Pe RIGHT TORTOISE SHELL BRACKET
-3016 ; Common # Ps LEFT WHITE LENTICULAR BRACKET
-3017 ; Common # Pe RIGHT WHITE LENTICULAR BRACKET
-3018 ; Common # Ps LEFT WHITE TORTOISE SHELL BRACKET
-3019 ; Common # Pe RIGHT WHITE TORTOISE SHELL BRACKET
-301A ; Common # Ps LEFT WHITE SQUARE BRACKET
-301B ; Common # Pe RIGHT WHITE SQUARE BRACKET
-301C ; Common # Pd WAVE DASH
-301D ; Common # Ps REVERSED DOUBLE PRIME QUOTATION MARK
-301E..301F ; Common # Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK
-3020 ; Common # So POSTAL MARK FACE
-3030 ; Common # Pd WAVY DASH
-3031..3035 ; Common # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
-3036..3037 ; Common # So [2] CIRCLED POSTAL MARK..IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
-303C ; Common # Lo MASU MARK
-303D ; Common # Po PART ALTERNATION MARK
-303E..303F ; Common # So [2] IDEOGRAPHIC VARIATION INDICATOR..IDEOGRAPHIC HALF FILL SPACE
-309B..309C ; Common # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-30A0 ; Common # Pd KATAKANA-HIRAGANA DOUBLE HYPHEN
-30FB ; Common # Po KATAKANA MIDDLE DOT
-30FC ; Common # Lm KATAKANA-HIRAGANA PROLONGED SOUND MARK
-3190..3191 ; Common # So [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK
-3192..3195 ; Common # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
-3196..319F ; Common # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
-31C0..31CF ; Common # So [16] CJK STROKE T..CJK STROKE N
-3220..3229 ; Common # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
-322A..3243 ; Common # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH
-3250 ; Common # So PARTNERSHIP SIGN
-3251..325F ; Common # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
-327E..327F ; Common # So [2] CIRCLED HANGUL IEUNG U..KOREAN STANDARD SYMBOL
-3280..3289 ; Common # No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
-328A..32B0 ; Common # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
-32B1..32BF ; Common # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
-32C0..32FE ; Common # So [63] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..CIRCLED KATAKANA WO
-3300..33FF ; Common # So [256] SQUARE APAATO..SQUARE GAL
-4DC0..4DFF ; Common # So [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION
-A700..A716 ; Common # Sk [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
-E000..F8FF ; Common # Co [6400] <private-use-E000>..<private-use-F8FF>
-FD3E ; Common # Ps ORNATE LEFT PARENTHESIS
-FD3F ; Common # Pe ORNATE RIGHT PARENTHESIS
-FDFD ; Common # So ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
-FE10..FE16 ; Common # Po [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK
-FE17 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
-FE18 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
-FE19 ; Common # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
-FE30 ; Common # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
-FE31..FE32 ; Common # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
-FE33..FE34 ; Common # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
-FE35 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
-FE36 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
-FE37 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
-FE38 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
-FE39 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
-FE3A ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
-FE3B ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
-FE3C ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
-FE3D ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
-FE3E ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
-FE3F ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
-FE40 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
-FE41 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
-FE42 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
-FE43 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
-FE44 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
-FE45..FE46 ; Common # Po [2] SESAME DOT..WHITE SESAME DOT
-FE47 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
-FE48 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
-FE49..FE4C ; Common # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
-FE4D..FE4F ; Common # Pc [3] DASHED LOW LINE..WAVY LOW LINE
-FE50..FE52 ; Common # Po [3] SMALL COMMA..SMALL FULL STOP
-FE54..FE57 ; Common # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK
-FE58 ; Common # Pd SMALL EM DASH
-FE59 ; Common # Ps SMALL LEFT PARENTHESIS
-FE5A ; Common # Pe SMALL RIGHT PARENTHESIS
-FE5B ; Common # Ps SMALL LEFT CURLY BRACKET
-FE5C ; Common # Pe SMALL RIGHT CURLY BRACKET
-FE5D ; Common # Ps SMALL LEFT TORTOISE SHELL BRACKET
-FE5E ; Common # Pe SMALL RIGHT TORTOISE SHELL BRACKET
-FE5F..FE61 ; Common # Po [3] SMALL NUMBER SIGN..SMALL ASTERISK
-FE62 ; Common # Sm SMALL PLUS SIGN
-FE63 ; Common # Pd SMALL HYPHEN-MINUS
-FE64..FE66 ; Common # Sm [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN
-FE68 ; Common # Po SMALL REVERSE SOLIDUS
-FE69 ; Common # Sc SMALL DOLLAR SIGN
-FE6A..FE6B ; Common # Po [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT
-FEFF ; Common # Cf ZERO WIDTH NO-BREAK SPACE
-FF01..FF03 ; Common # Po [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN
-FF04 ; Common # Sc FULLWIDTH DOLLAR SIGN
-FF05..FF07 ; Common # Po [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE
-FF08 ; Common # Ps FULLWIDTH LEFT PARENTHESIS
-FF09 ; Common # Pe FULLWIDTH RIGHT PARENTHESIS
-FF0A ; Common # Po FULLWIDTH ASTERISK
-FF0B ; Common # Sm FULLWIDTH PLUS SIGN
-FF0C ; Common # Po FULLWIDTH COMMA
-FF0D ; Common # Pd FULLWIDTH HYPHEN-MINUS
-FF0E..FF0F ; Common # Po [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS
-FF10..FF19 ; Common # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
-FF1A..FF1B ; Common # Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON
-FF1C..FF1E ; Common # Sm [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN
-FF1F..FF20 ; Common # Po [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT
-FF3B ; Common # Ps FULLWIDTH LEFT SQUARE BRACKET
-FF3C ; Common # Po FULLWIDTH REVERSE SOLIDUS
-FF3D ; Common # Pe FULLWIDTH RIGHT SQUARE BRACKET
-FF3E ; Common # Sk FULLWIDTH CIRCUMFLEX ACCENT
-FF3F ; Common # Pc FULLWIDTH LOW LINE
-FF40 ; Common # Sk FULLWIDTH GRAVE ACCENT
-FF5B ; Common # Ps FULLWIDTH LEFT CURLY BRACKET
-FF5C ; Common # Sm FULLWIDTH VERTICAL LINE
-FF5D ; Common # Pe FULLWIDTH RIGHT CURLY BRACKET
-FF5E ; Common # Sm FULLWIDTH TILDE
-FF5F ; Common # Ps FULLWIDTH LEFT WHITE PARENTHESIS
-FF60 ; Common # Pe FULLWIDTH RIGHT WHITE PARENTHESIS
-FF61 ; Common # Po HALFWIDTH IDEOGRAPHIC FULL STOP
-FF62 ; Common # Ps HALFWIDTH LEFT CORNER BRACKET
-FF63 ; Common # Pe HALFWIDTH RIGHT CORNER BRACKET
-FF64..FF65 ; Common # Po [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
-FF70 ; Common # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
-FF9E..FF9F ; Common # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
-FFE0..FFE1 ; Common # Sc [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN
-FFE2 ; Common # Sm FULLWIDTH NOT SIGN
-FFE3 ; Common # Sk FULLWIDTH MACRON
-FFE4 ; Common # So FULLWIDTH BROKEN BAR
-FFE5..FFE6 ; Common # Sc [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
-FFE8 ; Common # So HALFWIDTH FORMS LIGHT VERTICAL
-FFE9..FFEC ; Common # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
-FFED..FFEE ; Common # So [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
-FFF9..FFFB ; Common # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
-FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER
-10100..10101 ; Common # Po [2] AEGEAN WORD SEPARATOR LINE..AEGEAN WORD SEPARATOR DOT
-10102 ; Common # So AEGEAN CHECK MARK
-10107..10133 ; Common # No [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND
-10137..1013F ; Common # So [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT
-1D000..1D0F5 ; Common # So [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
-1D100..1D126 ; Common # So [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2
-1D12A..1D164 ; Common # So [59] MUSICAL SYMBOL DOUBLE SHARP..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
-1D165..1D166 ; Common # Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
-1D16A..1D16C ; Common # So [3] MUSICAL SYMBOL FINGERED TREMOLO-1..MUSICAL SYMBOL FINGERED TREMOLO-3
-1D16D..1D172 ; Common # Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5
-1D173..1D17A ; Common # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
-1D183..1D184 ; Common # So [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN
-1D18C..1D1A9 ; Common # So [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH
-1D1AE..1D1DD ; Common # So [48] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL PES SUBPUNCTIS
-1D300..1D356 ; Common # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
-1D400..1D454 ; Common # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
-1D456..1D49C ; Common # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
-1D49E..1D49F ; Common # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
-1D4A2 ; Common # L& MATHEMATICAL SCRIPT CAPITAL G
-1D4A5..1D4A6 ; Common # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
-1D4A9..1D4AC ; Common # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
-1D4AE..1D4B9 ; Common # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
-1D4BB ; Common # L& MATHEMATICAL SCRIPT SMALL F
-1D4BD..1D4C3 ; Common # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
-1D4C5..1D505 ; Common # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
-1D507..1D50A ; Common # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
-1D50D..1D514 ; Common # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
-1D516..1D51C ; Common # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
-1D51E..1D539 ; Common # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
-1D53B..1D53E ; Common # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
-1D540..1D544 ; Common # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
-1D546 ; Common # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O
-1D54A..1D550 ; Common # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
-1D552..1D6A5 ; Common # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
-1D6A8..1D6C0 ; Common # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
-1D6C1 ; Common # Sm MATHEMATICAL BOLD NABLA
-1D6C2..1D6DA ; Common # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
-1D6DB ; Common # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
-1D6DC..1D6FA ; Common # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
-1D6FB ; Common # Sm MATHEMATICAL ITALIC NABLA
-1D6FC..1D714 ; Common # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
-1D715 ; Common # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
-1D716..1D734 ; Common # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
-1D735 ; Common # Sm MATHEMATICAL BOLD ITALIC NABLA
-1D736..1D74E ; Common # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
-1D74F ; Common # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
-1D750..1D76E ; Common # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
-1D76F ; Common # Sm MATHEMATICAL SANS-SERIF BOLD NABLA
-1D770..1D788 ; Common # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
-1D789 ; Common # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
-1D78A..1D7A8 ; Common # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
-1D7A9 ; Common # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
-1D7AA..1D7C2 ; Common # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
-1D7C3 ; Common # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
-1D7C4..1D7C9 ; Common # L& [6] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
-1D7CE..1D7FF ; Common # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
-E0001 ; Common # Cf LANGUAGE TAG
-E0020..E007F ; Common # Cf [96] TAG SPACE..CANCEL TAG
-F0000..FFFFD ; Common # Co [65534] <private-use-F0000>..<private-use-FFFFD>
-100000..10FFFD; Common # Co [65534] <private-use-100000>..<private-use-10FFFD>
-
-# The above property value applies to 878924 code points not listed here.
-# Total code points: 1021355
-
-# ================================================
-
-0041..005A ; Latin # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
-0061..007A ; Latin # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
-00AA ; Latin # L& FEMININE ORDINAL INDICATOR
-00BA ; Latin # L& MASCULINE ORDINAL INDICATOR
-00C0..00D6 ; Latin # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
-00D8..00F6 ; Latin # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS
-00F8..01BA ; Latin # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL
-01BB ; Latin # Lo LATIN LETTER TWO WITH STROKE
-01BC..01BF ; Latin # L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN
-01C0..01C3 ; Latin # Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK
-01C4..0241 ; Latin # L& [126] LATIN CAPITAL LETTER DZ WITH CARON..LATIN CAPITAL LETTER GLOTTAL STOP
-0250..02AF ; Latin # L& [96] LATIN SMALL LETTER TURNED A..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
-02B0..02B8 ; Latin # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y
-02E0..02E4 ; Latin # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
-1D00..1D25 ; Latin # L& [38] LATIN LETTER SMALL CAPITAL A..LATIN LETTER AIN
-1D2C..1D5C ; Latin # Lm [49] MODIFIER LETTER CAPITAL A..MODIFIER LETTER SMALL AIN
-1D62..1D65 ; Latin # L& [4] LATIN SUBSCRIPT SMALL LETTER I..LATIN SUBSCRIPT SMALL LETTER V
-1D6B..1D77 ; Latin # L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G
-1D79..1D9A ; Latin # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
-1D9B..1DBF ; Latin # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
-1E00..1E9B ; Latin # L& [156] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE
-1EA0..1EF9 ; Latin # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE
-2071 ; Latin # L& SUPERSCRIPT LATIN SMALL LETTER I
-207F ; Latin # L& SUPERSCRIPT LATIN SMALL LETTER N
-2090..2094 ; Latin # Lm [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA
-212A..212B ; Latin # L& [2] KELVIN SIGN..ANGSTROM SIGN
-FB00..FB06 ; Latin # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
-FF21..FF3A ; Latin # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
-FF41..FF5A ; Latin # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
-
-# Total code points: 1037
-
-# ================================================
-
-0374..0375 ; Greek # Sk [2] GREEK NUMERAL SIGN..GREEK LOWER NUMERAL SIGN
-037A ; Greek # Lm GREEK YPOGEGRAMMENI
-0384..0385 ; Greek # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS
-0386 ; Greek # L& GREEK CAPITAL LETTER ALPHA WITH TONOS
-0388..038A ; Greek # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
-038C ; Greek # L& GREEK CAPITAL LETTER OMICRON WITH TONOS
-038E..03A1 ; Greek # L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO
-03A3..03CE ; Greek # L& [44] GREEK CAPITAL LETTER SIGMA..GREEK SMALL LETTER OMEGA WITH TONOS
-03D0..03E1 ; Greek # L& [18] GREEK BETA SYMBOL..GREEK SMALL LETTER SAMPI
-03F0..03F5 ; Greek # L& [6] GREEK KAPPA SYMBOL..GREEK LUNATE EPSILON SYMBOL
-03F6 ; Greek # Sm GREEK REVERSED LUNATE EPSILON SYMBOL
-03F7..03FF ; Greek # L& [9] GREEK CAPITAL LETTER SHO..GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL
-1D26..1D2A ; Greek # L& [5] GREEK LETTER SMALL CAPITAL GAMMA..GREEK LETTER SMALL CAPITAL PSI
-1D5D..1D61 ; Greek # Lm [5] MODIFIER LETTER SMALL BETA..MODIFIER LETTER SMALL CHI
-1D66..1D6A ; Greek # L& [5] GREEK SUBSCRIPT SMALL LETTER BETA..GREEK SUBSCRIPT SMALL LETTER CHI
-1F00..1F15 ; Greek # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
-1F18..1F1D ; Greek # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
-1F20..1F45 ; Greek # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
-1F48..1F4D ; Greek # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
-1F50..1F57 ; Greek # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
-1F59 ; Greek # L& GREEK CAPITAL LETTER UPSILON WITH DASIA
-1F5B ; Greek # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
-1F5D ; Greek # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
-1F5F..1F7D ; Greek # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
-1F80..1FB4 ; Greek # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
-1FB6..1FBC ; Greek # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
-1FBD ; Greek # Sk GREEK KORONIS
-1FBE ; Greek # L& GREEK PROSGEGRAMMENI
-1FBF..1FC1 ; Greek # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
-1FC2..1FC4 ; Greek # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
-1FC6..1FCC ; Greek # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
-1FCD..1FCF ; Greek # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
-1FD0..1FD3 ; Greek # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
-1FD6..1FDB ; Greek # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
-1FDD..1FDF ; Greek # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
-1FE0..1FEC ; Greek # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
-1FED..1FEF ; Greek # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
-1FF2..1FF4 ; Greek # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
-1FF6..1FFC ; Greek # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
-1FFD..1FFE ; Greek # Sk [2] GREEK OXIA..GREEK DASIA
-2126 ; Greek # L& OHM SIGN
-10140..10174 ; Greek # Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS
-10175..10178 ; Greek # No [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN
-10179..10189 ; Greek # So [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN
-1018A ; Greek # No GREEK ZERO SIGN
-1D200..1D241 ; Greek # So [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54
-1D242..1D244 ; Greek # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
-1D245 ; Greek # So GREEK MUSICAL LEIMMA
-
-# Total code points: 502
-
-# ================================================
-
-0400..0481 ; Cyrillic # L& [130] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER KOPPA
-0482 ; Cyrillic # So CYRILLIC THOUSANDS SIGN
-0483..0486 ; Cyrillic # Mn [4] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC PSILI PNEUMATA
-0488..0489 ; Cyrillic # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
-048A..04CE ; Cyrillic # L& [69] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EM WITH TAIL
-04D0..04F9 ; Cyrillic # L& [42] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER YERU WITH DIAERESIS
-0500..050F ; Cyrillic # L& [16] CYRILLIC CAPITAL LETTER KOMI DE..CYRILLIC SMALL LETTER KOMI TJE
-1D2B ; Cyrillic # L& CYRILLIC LETTER SMALL CAPITAL EL
-1D78 ; Cyrillic # Lm MODIFIER LETTER CYRILLIC EN
-
-# Total code points: 266
-
-# ================================================
-
-0531..0556 ; Armenian # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
-0559 ; Armenian # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING
-055A..055F ; Armenian # Po [6] ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK
-0561..0587 ; Armenian # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
-058A ; Armenian # Pd ARMENIAN HYPHEN
-FB13..FB17 ; Armenian # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
-
-# Total code points: 90
-
-# ================================================
-
-0591..05B9 ; Hebrew # Mn [41] HEBREW ACCENT ETNAHTA..HEBREW POINT HOLAM
-05BB..05BD ; Hebrew # Mn [3] HEBREW POINT QUBUTS..HEBREW POINT METEG
-05BE ; Hebrew # Po HEBREW PUNCTUATION MAQAF
-05BF ; Hebrew # Mn HEBREW POINT RAFE
-05C0 ; Hebrew # Po HEBREW PUNCTUATION PASEQ
-05C1..05C2 ; Hebrew # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
-05C3 ; Hebrew # Po HEBREW PUNCTUATION SOF PASUQ
-05C4..05C5 ; Hebrew # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
-05C6 ; Hebrew # Po HEBREW PUNCTUATION NUN HAFUKHA
-05C7 ; Hebrew # Mn HEBREW POINT QAMATS QATAN
-05D0..05EA ; Hebrew # Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV
-05F0..05F2 ; Hebrew # Lo [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD
-05F3..05F4 ; Hebrew # Po [2] HEBREW PUNCTUATION GERESH..HEBREW PUNCTUATION GERSHAYIM
-FB1D ; Hebrew # Lo HEBREW LETTER YOD WITH HIRIQ
-FB1E ; Hebrew # Mn HEBREW POINT JUDEO-SPANISH VARIKA
-FB1F..FB28 ; Hebrew # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
-FB29 ; Hebrew # Sm HEBREW LETTER ALTERNATIVE PLUS SIGN
-FB2A..FB36 ; Hebrew # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
-FB38..FB3C ; Hebrew # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
-FB3E ; Hebrew # Lo HEBREW LETTER MEM WITH DAGESH
-FB40..FB41 ; Hebrew # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
-FB43..FB44 ; Hebrew # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
-FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED
-
-# Total code points: 132
-
-# ================================================
-
-060B ; Arabic # Sc AFGHANI SIGN
-060D ; Arabic # Po ARABIC DATE SEPARATOR
-060E..060F ; Arabic # So [2] ARABIC POETIC VERSE SIGN..ARABIC SIGN MISRA
-0610..0615 ; Arabic # Mn [6] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL HIGH TAH
-061E ; Arabic # Po ARABIC TRIPLE DOT PUNCTUATION MARK
-0621..063A ; Arabic # Lo [26] ARABIC LETTER HAMZA..ARABIC LETTER GHAIN
-0641..064A ; Arabic # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH
-0656..065E ; Arabic # Mn [9] ARABIC SUBSCRIPT ALEF..ARABIC FATHA WITH TWO DOTS
-066A..066D ; Arabic # Po [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR
-066E..066F ; Arabic # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
-0671..06D3 ; Arabic # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
-06D4 ; Arabic # Po ARABIC FULL STOP
-06D5 ; Arabic # Lo ARABIC LETTER AE
-06D6..06DC ; Arabic # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
-06DE ; Arabic # Me ARABIC START OF RUB EL HIZB
-06DF..06E4 ; Arabic # Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA
-06E5..06E6 ; Arabic # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH
-06E7..06E8 ; Arabic # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
-06E9 ; Arabic # So ARABIC PLACE OF SAJDAH
-06EA..06ED ; Arabic # Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM
-06EE..06EF ; Arabic # Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V
-06F0..06F9 ; Arabic # Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE
-06FA..06FC ; Arabic # Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW
-06FD..06FE ; Arabic # So [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN
-06FF ; Arabic # Lo ARABIC LETTER HEH WITH INVERTED V
-0750..076D ; Arabic # Lo [30] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE
-FB50..FBB1 ; Arabic # Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
-FBD3..FD3D ; Arabic # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
-FD50..FD8F ; Arabic # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
-FD92..FDC7 ; Arabic # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
-FDF0..FDFB ; Arabic # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
-FDFC ; Arabic # Sc RIAL SIGN
-FE70..FE74 ; Arabic # Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM
-FE76..FEFC ; Arabic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
-
-# Total code points: 966
-
-# ================================================
-
-0700..070D ; Syriac # Po [14] SYRIAC END OF PARAGRAPH..SYRIAC HARKLEAN ASTERISCUS
-070F ; Syriac # Cf SYRIAC ABBREVIATION MARK
-0710 ; Syriac # Lo SYRIAC LETTER ALAPH
-0711 ; Syriac # Mn SYRIAC LETTER SUPERSCRIPT ALAPH
-0712..072F ; Syriac # Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH
-0730..074A ; Syriac # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
-074D..074F ; Syriac # Lo [3] SYRIAC LETTER SOGDIAN ZHAIN..SYRIAC LETTER SOGDIAN FE
-
-# Total code points: 77
-
-# ================================================
-
-0780..07A5 ; Thaana # Lo [38] THAANA LETTER HAA..THAANA LETTER WAAVU
-07A6..07B0 ; Thaana # Mn [11] THAANA ABAFILI..THAANA SUKUN
-07B1 ; Thaana # Lo THAANA LETTER NAA
-
-# Total code points: 50
-
-# ================================================
-
-0901..0902 ; Devanagari # Mn [2] DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN ANUSVARA
-0903 ; Devanagari # Mc DEVANAGARI SIGN VISARGA
-0904..0939 ; Devanagari # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
-093C ; Devanagari # Mn DEVANAGARI SIGN NUKTA
-093D ; Devanagari # Lo DEVANAGARI SIGN AVAGRAHA
-093E..0940 ; Devanagari # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
-0941..0948 ; Devanagari # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
-0949..094C ; Devanagari # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
-094D ; Devanagari # Mn DEVANAGARI SIGN VIRAMA
-0950 ; Devanagari # Lo DEVANAGARI OM
-0951..0954 ; Devanagari # Mn [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT
-0958..0961 ; Devanagari # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL
-0962..0963 ; Devanagari # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
-0966..096F ; Devanagari # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
-097D ; Devanagari # Lo DEVANAGARI LETTER GLOTTAL STOP
-
-# Total code points: 103
-
-# ================================================
-
-0981 ; Bengali # Mn BENGALI SIGN CANDRABINDU
-0982..0983 ; Bengali # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
-0985..098C ; Bengali # Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L
-098F..0990 ; Bengali # Lo [2] BENGALI LETTER E..BENGALI LETTER AI
-0993..09A8 ; Bengali # Lo [22] BENGALI LETTER O..BENGALI LETTER NA
-09AA..09B0 ; Bengali # Lo [7] BENGALI LETTER PA..BENGALI LETTER RA
-09B2 ; Bengali # Lo BENGALI LETTER LA
-09B6..09B9 ; Bengali # Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA
-09BC ; Bengali # Mn BENGALI SIGN NUKTA
-09BD ; Bengali # Lo BENGALI SIGN AVAGRAHA
-09BE..09C0 ; Bengali # Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II
-09C1..09C4 ; Bengali # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
-09C7..09C8 ; Bengali # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
-09CB..09CC ; Bengali # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
-09CD ; Bengali # Mn BENGALI SIGN VIRAMA
-09CE ; Bengali # Lo BENGALI LETTER KHANDA TA
-09D7 ; Bengali # Mc BENGALI AU LENGTH MARK
-09DC..09DD ; Bengali # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
-09DF..09E1 ; Bengali # Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL
-09E2..09E3 ; Bengali # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
-09E6..09EF ; Bengali # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE
-09F0..09F1 ; Bengali # Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL
-09F2..09F3 ; Bengali # Sc [2] BENGALI RUPEE MARK..BENGALI RUPEE SIGN
-09F4..09F9 ; Bengali # No [6] BENGALI CURRENCY NUMERATOR ONE..BENGALI CURRENCY DENOMINATOR SIXTEEN
-09FA ; Bengali # So BENGALI ISSHAR
-
-# Total code points: 91
-
-# ================================================
-
-0A01..0A02 ; Gurmukhi # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
-0A03 ; Gurmukhi # Mc GURMUKHI SIGN VISARGA
-0A05..0A0A ; Gurmukhi # Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU
-0A0F..0A10 ; Gurmukhi # Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI
-0A13..0A28 ; Gurmukhi # Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA
-0A2A..0A30 ; Gurmukhi # Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA
-0A32..0A33 ; Gurmukhi # Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA
-0A35..0A36 ; Gurmukhi # Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA
-0A38..0A39 ; Gurmukhi # Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA
-0A3C ; Gurmukhi # Mn GURMUKHI SIGN NUKTA
-0A3E..0A40 ; Gurmukhi # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
-0A41..0A42 ; Gurmukhi # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
-0A47..0A48 ; Gurmukhi # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
-0A4B..0A4D ; Gurmukhi # Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
-0A59..0A5C ; Gurmukhi # Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA
-0A5E ; Gurmukhi # Lo GURMUKHI LETTER FA
-0A66..0A6F ; Gurmukhi # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE
-0A70..0A71 ; Gurmukhi # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK
-0A72..0A74 ; Gurmukhi # Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR
-
-# Total code points: 77
-
-# ================================================
-
-0A81..0A82 ; Gujarati # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
-0A83 ; Gujarati # Mc GUJARATI SIGN VISARGA
-0A85..0A8D ; Gujarati # Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E
-0A8F..0A91 ; Gujarati # Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O
-0A93..0AA8 ; Gujarati # Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA
-0AAA..0AB0 ; Gujarati # Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA
-0AB2..0AB3 ; Gujarati # Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA
-0AB5..0AB9 ; Gujarati # Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA
-0ABC ; Gujarati # Mn GUJARATI SIGN NUKTA
-0ABD ; Gujarati # Lo GUJARATI SIGN AVAGRAHA
-0ABE..0AC0 ; Gujarati # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II
-0AC1..0AC5 ; Gujarati # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
-0AC7..0AC8 ; Gujarati # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
-0AC9 ; Gujarati # Mc GUJARATI VOWEL SIGN CANDRA O
-0ACB..0ACC ; Gujarati # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
-0ACD ; Gujarati # Mn GUJARATI SIGN VIRAMA
-0AD0 ; Gujarati # Lo GUJARATI OM
-0AE0..0AE1 ; Gujarati # Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL
-0AE2..0AE3 ; Gujarati # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
-0AE6..0AEF ; Gujarati # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
-0AF1 ; Gujarati # Sc GUJARATI RUPEE SIGN
-
-# Total code points: 83
-
-# ================================================
-
-0B01 ; Oriya # Mn ORIYA SIGN CANDRABINDU
-0B02..0B03 ; Oriya # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
-0B05..0B0C ; Oriya # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L
-0B0F..0B10 ; Oriya # Lo [2] ORIYA LETTER E..ORIYA LETTER AI
-0B13..0B28 ; Oriya # Lo [22] ORIYA LETTER O..ORIYA LETTER NA
-0B2A..0B30 ; Oriya # Lo [7] ORIYA LETTER PA..ORIYA LETTER RA
-0B32..0B33 ; Oriya # Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA
-0B35..0B39 ; Oriya # Lo [5] ORIYA LETTER VA..ORIYA LETTER HA
-0B3C ; Oriya # Mn ORIYA SIGN NUKTA
-0B3D ; Oriya # Lo ORIYA SIGN AVAGRAHA
-0B3E ; Oriya # Mc ORIYA VOWEL SIGN AA
-0B3F ; Oriya # Mn ORIYA VOWEL SIGN I
-0B40 ; Oriya # Mc ORIYA VOWEL SIGN II
-0B41..0B43 ; Oriya # Mn [3] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC R
-0B47..0B48 ; Oriya # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
-0B4B..0B4C ; Oriya # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
-0B4D ; Oriya # Mn ORIYA SIGN VIRAMA
-0B56 ; Oriya # Mn ORIYA AI LENGTH MARK
-0B57 ; Oriya # Mc ORIYA AU LENGTH MARK
-0B5C..0B5D ; Oriya # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
-0B5F..0B61 ; Oriya # Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
-0B66..0B6F ; Oriya # Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE
-0B70 ; Oriya # So ORIYA ISSHAR
-0B71 ; Oriya # Lo ORIYA LETTER WA
-
-# Total code points: 81
-
-# ================================================
-
-0B82 ; Tamil # Mn TAMIL SIGN ANUSVARA
-0B83 ; Tamil # Lo TAMIL SIGN VISARGA
-0B85..0B8A ; Tamil # Lo [6] TAMIL LETTER A..TAMIL LETTER UU
-0B8E..0B90 ; Tamil # Lo [3] TAMIL LETTER E..TAMIL LETTER AI
-0B92..0B95 ; Tamil # Lo [4] TAMIL LETTER O..TAMIL LETTER KA
-0B99..0B9A ; Tamil # Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA
-0B9C ; Tamil # Lo TAMIL LETTER JA
-0B9E..0B9F ; Tamil # Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA
-0BA3..0BA4 ; Tamil # Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA
-0BA8..0BAA ; Tamil # Lo [3] TAMIL LETTER NA..TAMIL LETTER PA
-0BAE..0BB9 ; Tamil # Lo [12] TAMIL LETTER MA..TAMIL LETTER HA
-0BBE..0BBF ; Tamil # Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I
-0BC0 ; Tamil # Mn TAMIL VOWEL SIGN II
-0BC1..0BC2 ; Tamil # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
-0BC6..0BC8 ; Tamil # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
-0BCA..0BCC ; Tamil # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
-0BCD ; Tamil # Mn TAMIL SIGN VIRAMA
-0BD7 ; Tamil # Mc TAMIL AU LENGTH MARK
-0BE6..0BEF ; Tamil # Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE
-0BF0..0BF2 ; Tamil # No [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND
-0BF3..0BF8 ; Tamil # So [6] TAMIL DAY SIGN..TAMIL AS ABOVE SIGN
-0BF9 ; Tamil # Sc TAMIL RUPEE SIGN
-0BFA ; Tamil # So TAMIL NUMBER SIGN
-
-# Total code points: 71
-
-# ================================================
-
-0C01..0C03 ; Telugu # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
-0C05..0C0C ; Telugu # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L
-0C0E..0C10 ; Telugu # Lo [3] TELUGU LETTER E..TELUGU LETTER AI
-0C12..0C28 ; Telugu # Lo [23] TELUGU LETTER O..TELUGU LETTER NA
-0C2A..0C33 ; Telugu # Lo [10] TELUGU LETTER PA..TELUGU LETTER LLA
-0C35..0C39 ; Telugu # Lo [5] TELUGU LETTER VA..TELUGU LETTER HA
-0C3E..0C40 ; Telugu # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
-0C41..0C44 ; Telugu # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
-0C46..0C48 ; Telugu # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
-0C4A..0C4D ; Telugu # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
-0C55..0C56 ; Telugu # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
-0C60..0C61 ; Telugu # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
-0C66..0C6F ; Telugu # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
-
-# Total code points: 80
-
-# ================================================
-
-0C82..0C83 ; Kannada # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
-0C85..0C8C ; Kannada # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
-0C8E..0C90 ; Kannada # Lo [3] KANNADA LETTER E..KANNADA LETTER AI
-0C92..0CA8 ; Kannada # Lo [23] KANNADA LETTER O..KANNADA LETTER NA
-0CAA..0CB3 ; Kannada # Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA
-0CB5..0CB9 ; Kannada # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA
-0CBC ; Kannada # Mn KANNADA SIGN NUKTA
-0CBD ; Kannada # Lo KANNADA SIGN AVAGRAHA
-0CBE ; Kannada # Mc KANNADA VOWEL SIGN AA
-0CBF ; Kannada # Mn KANNADA VOWEL SIGN I
-0CC0..0CC4 ; Kannada # Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR
-0CC6 ; Kannada # Mn KANNADA VOWEL SIGN E
-0CC7..0CC8 ; Kannada # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
-0CCA..0CCB ; Kannada # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
-0CCC..0CCD ; Kannada # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
-0CD5..0CD6 ; Kannada # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
-0CDE ; Kannada # Lo KANNADA LETTER FA
-0CE0..0CE1 ; Kannada # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
-0CE6..0CEF ; Kannada # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
-
-# Total code points: 82
-
-# ================================================
-
-0D02..0D03 ; Malayalam # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
-0D05..0D0C ; Malayalam # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L
-0D0E..0D10 ; Malayalam # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
-0D12..0D28 ; Malayalam # Lo [23] MALAYALAM LETTER O..MALAYALAM LETTER NA
-0D2A..0D39 ; Malayalam # Lo [16] MALAYALAM LETTER PA..MALAYALAM LETTER HA
-0D3E..0D40 ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II
-0D41..0D43 ; Malayalam # Mn [3] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC R
-0D46..0D48 ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
-0D4A..0D4C ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
-0D4D ; Malayalam # Mn MALAYALAM SIGN VIRAMA
-0D57 ; Malayalam # Mc MALAYALAM AU LENGTH MARK
-0D60..0D61 ; Malayalam # Lo [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL
-0D66..0D6F ; Malayalam # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
-
-# Total code points: 78
-
-# ================================================
-
-0D82..0D83 ; Sinhala # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
-0D85..0D96 ; Sinhala # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
-0D9A..0DB1 ; Sinhala # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
-0DB3..0DBB ; Sinhala # Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA
-0DBD ; Sinhala # Lo SINHALA LETTER DANTAJA LAYANNA
-0DC0..0DC6 ; Sinhala # Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA
-0DCA ; Sinhala # Mn SINHALA SIGN AL-LAKUNA
-0DCF..0DD1 ; Sinhala # Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
-0DD2..0DD4 ; Sinhala # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
-0DD6 ; Sinhala # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA
-0DD8..0DDF ; Sinhala # Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA
-0DF2..0DF3 ; Sinhala # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
-0DF4 ; Sinhala # Po SINHALA PUNCTUATION KUNDDALIYA
-
-# Total code points: 80
-
-# ================================================
-
-0E01..0E30 ; Thai # Lo [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A
-0E31 ; Thai # Mn THAI CHARACTER MAI HAN-AKAT
-0E32..0E33 ; Thai # Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM
-0E34..0E3A ; Thai # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
-0E40..0E45 ; Thai # Lo [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO
-0E46 ; Thai # Lm THAI CHARACTER MAIYAMOK
-0E47..0E4E ; Thai # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN
-0E4F ; Thai # Po THAI CHARACTER FONGMAN
-0E50..0E59 ; Thai # Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE
-0E5A..0E5B ; Thai # Po [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT
-
-# Total code points: 86
-
-# ================================================
-
-0E81..0E82 ; Lao # Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG
-0E84 ; Lao # Lo LAO LETTER KHO TAM
-0E87..0E88 ; Lao # Lo [2] LAO LETTER NGO..LAO LETTER CO
-0E8A ; Lao # Lo LAO LETTER SO TAM
-0E8D ; Lao # Lo LAO LETTER NYO
-0E94..0E97 ; Lao # Lo [4] LAO LETTER DO..LAO LETTER THO TAM
-0E99..0E9F ; Lao # Lo [7] LAO LETTER NO..LAO LETTER FO SUNG
-0EA1..0EA3 ; Lao # Lo [3] LAO LETTER MO..LAO LETTER LO LING
-0EA5 ; Lao # Lo LAO LETTER LO LOOT
-0EA7 ; Lao # Lo LAO LETTER WO
-0EAA..0EAB ; Lao # Lo [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG
-0EAD..0EB0 ; Lao # Lo [4] LAO LETTER O..LAO VOWEL SIGN A
-0EB1 ; Lao # Mn LAO VOWEL SIGN MAI KAN
-0EB2..0EB3 ; Lao # Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM
-0EB4..0EB9 ; Lao # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU
-0EBB..0EBC ; Lao # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO
-0EBD ; Lao # Lo LAO SEMIVOWEL SIGN NYO
-0EC0..0EC4 ; Lao # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
-0EC6 ; Lao # Lm LAO KO LA
-0EC8..0ECD ; Lao # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA
-0ED0..0ED9 ; Lao # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE
-0EDC..0EDD ; Lao # Lo [2] LAO HO NO..LAO HO MO
-
-# Total code points: 65
-
-# ================================================
-
-0F00 ; Tibetan # Lo TIBETAN SYLLABLE OM
-0F01..0F03 ; Tibetan # So [3] TIBETAN MARK GTER YIG MGO TRUNCATED A..TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA
-0F04..0F12 ; Tibetan # Po [15] TIBETAN MARK INITIAL YIG MGO MDUN MA..TIBETAN MARK RGYA GRAM SHAD
-0F13..0F17 ; Tibetan # So [5] TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN..TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS
-0F18..0F19 ; Tibetan # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
-0F1A..0F1F ; Tibetan # So [6] TIBETAN SIGN RDEL DKAR GCIG..TIBETAN SIGN RDEL DKAR RDEL NAG
-0F20..0F29 ; Tibetan # Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE
-0F2A..0F33 ; Tibetan # No [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO
-0F34 ; Tibetan # So TIBETAN MARK BSDUS RTAGS
-0F35 ; Tibetan # Mn TIBETAN MARK NGAS BZUNG NYI ZLA
-0F36 ; Tibetan # So TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN
-0F37 ; Tibetan # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS
-0F38 ; Tibetan # So TIBETAN MARK CHE MGO
-0F39 ; Tibetan # Mn TIBETAN MARK TSA -PHRU
-0F3A ; Tibetan # Ps TIBETAN MARK GUG RTAGS GYON
-0F3B ; Tibetan # Pe TIBETAN MARK GUG RTAGS GYAS
-0F3C ; Tibetan # Ps TIBETAN MARK ANG KHANG GYON
-0F3D ; Tibetan # Pe TIBETAN MARK ANG KHANG GYAS
-0F3E..0F3F ; Tibetan # Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES
-0F40..0F47 ; Tibetan # Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA
-0F49..0F6A ; Tibetan # Lo [34] TIBETAN LETTER NYA..TIBETAN LETTER FIXED-FORM RA
-0F71..0F7E ; Tibetan # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
-0F7F ; Tibetan # Mc TIBETAN SIGN RNAM BCAD
-0F80..0F84 ; Tibetan # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA
-0F85 ; Tibetan # Po TIBETAN MARK PALUTA
-0F86..0F87 ; Tibetan # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
-0F88..0F8B ; Tibetan # Lo [4] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN GRU MED RGYINGS
-0F90..0F97 ; Tibetan # Mn [8] TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER JA
-0F99..0FBC ; Tibetan # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
-0FBE..0FC5 ; Tibetan # So [8] TIBETAN KU RU KHA..TIBETAN SYMBOL RDO RJE
-0FC6 ; Tibetan # Mn TIBETAN SYMBOL PADMA GDAN
-0FC7..0FCC ; Tibetan # So [6] TIBETAN SYMBOL RDO RJE RGYA GRAM..TIBETAN SYMBOL NOR BU BZHI -KHYIL
-0FCF ; Tibetan # So TIBETAN SIGN RDEL NAG GSUM
-0FD0..0FD1 ; Tibetan # Po [2] TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK MNYAM YIG GI MGO RGYAN
-
-# Total code points: 195
-
-# ================================================
-
-1000..1021 ; Myanmar # Lo [34] MYANMAR LETTER KA..MYANMAR LETTER A
-1023..1027 ; Myanmar # Lo [5] MYANMAR LETTER I..MYANMAR LETTER E
-1029..102A ; Myanmar # Lo [2] MYANMAR LETTER O..MYANMAR LETTER AU
-102C ; Myanmar # Mc MYANMAR VOWEL SIGN AA
-102D..1030 ; Myanmar # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
-1031 ; Myanmar # Mc MYANMAR VOWEL SIGN E
-1032 ; Myanmar # Mn MYANMAR VOWEL SIGN AI
-1036..1037 ; Myanmar # Mn [2] MYANMAR SIGN ANUSVARA..MYANMAR SIGN DOT BELOW
-1038 ; Myanmar # Mc MYANMAR SIGN VISARGA
-1039 ; Myanmar # Mn MYANMAR SIGN VIRAMA
-1040..1049 ; Myanmar # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE
-104A..104F ; Myanmar # Po [6] MYANMAR SIGN LITTLE SECTION..MYANMAR SYMBOL GENITIVE
-1050..1055 ; Myanmar # Lo [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL
-1056..1057 ; Myanmar # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
-1058..1059 ; Myanmar # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
-
-# Total code points: 78
-
-# ================================================
-
-10A0..10C5 ; Georgian # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
-10D0..10FA ; Georgian # Lo [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
-10FC ; Georgian # Lm MODIFIER LETTER GEORGIAN NAR
-2D00..2D25 ; Georgian # L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
-
-# Total code points: 120
-
-# ================================================
-
-1100..1159 ; Hangul # Lo [90] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH
-115F..11A2 ; Hangul # Lo [68] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG SSANGARAEA
-11A8..11F9 ; Hangul # Lo [82] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH
-3131..318E ; Hangul # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
-3200..321E ; Hangul # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
-3260..327D ; Hangul # So [30] CIRCLED HANGUL KIYEOK..CIRCLED KOREAN CHARACTER JUEUI
-AC00..D7A3 ; Hangul # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
-FFA0..FFBE ; Hangul # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
-FFC2..FFC7 ; Hangul # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
-FFCA..FFCF ; Hangul # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
-FFD2..FFD7 ; Hangul # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
-FFDA..FFDC ; Hangul # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
-
-# Total code points: 11619
-
-# ================================================
-
-1200..1248 ; Ethiopic # Lo [73] ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE QWA
-124A..124D ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE
-1250..1256 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO
-1258 ; Ethiopic # Lo ETHIOPIC SYLLABLE QHWA
-125A..125D ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE
-1260..1288 ; Ethiopic # Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA
-128A..128D ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE
-1290..12B0 ; Ethiopic # Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA
-12B2..12B5 ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE
-12B8..12BE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO
-12C0 ; Ethiopic # Lo ETHIOPIC SYLLABLE KXWA
-12C2..12C5 ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE
-12C8..12D6 ; Ethiopic # Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O
-12D8..1310 ; Ethiopic # Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA
-1312..1315 ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
-1318..135A ; Ethiopic # Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA
-135F ; Ethiopic # Mn ETHIOPIC COMBINING GEMINATION MARK
-1360 ; Ethiopic # So ETHIOPIC SECTION MARK
-1361..1368 ; Ethiopic # Po [8] ETHIOPIC WORDSPACE..ETHIOPIC PARAGRAPH SEPARATOR
-1369..137C ; Ethiopic # No [20] ETHIOPIC DIGIT ONE..ETHIOPIC NUMBER TEN THOUSAND
-1380..138F ; Ethiopic # Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE
-1390..1399 ; Ethiopic # So [10] ETHIOPIC TONAL MARK YIZET..ETHIOPIC TONAL MARK KURT
-2D80..2D96 ; Ethiopic # Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE
-2DA0..2DA6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO
-2DA8..2DAE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO
-2DB0..2DB6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO
-2DB8..2DBE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO
-2DC0..2DC6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO
-2DC8..2DCE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO
-2DD0..2DD6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO
-2DD8..2DDE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO
-
-# Total code points: 461
-
-# ================================================
-
-13A0..13F4 ; Cherokee # Lo [85] CHEROKEE LETTER A..CHEROKEE LETTER YV
-
-# Total code points: 85
-
-# ================================================
-
-1401..166C ; Canadian_Aboriginal # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA
-166D..166E ; Canadian_Aboriginal # Po [2] CANADIAN SYLLABICS CHI SIGN..CANADIAN SYLLABICS FULL STOP
-166F..1676 ; Canadian_Aboriginal # Lo [8] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS NNGAA
-
-# Total code points: 630
-
-# ================================================
-
-1680 ; Ogham # Zs OGHAM SPACE MARK
-1681..169A ; Ogham # Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH
-169B ; Ogham # Ps OGHAM FEATHER MARK
-169C ; Ogham # Pe OGHAM REVERSED FEATHER MARK
-
-# Total code points: 29
-
-# ================================================
-
-16A0..16EA ; Runic # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X
-16EE..16F0 ; Runic # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
-
-# Total code points: 78
-
-# ================================================
-
-1780..17B3 ; Khmer # Lo [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU
-17B4..17B5 ; Khmer # Cf [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
-17B6 ; Khmer # Mc KHMER VOWEL SIGN AA
-17B7..17BD ; Khmer # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
-17BE..17C5 ; Khmer # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
-17C6 ; Khmer # Mn KHMER SIGN NIKAHIT
-17C7..17C8 ; Khmer # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
-17C9..17D3 ; Khmer # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
-17D4..17D6 ; Khmer # Po [3] KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH
-17D7 ; Khmer # Lm KHMER SIGN LEK TOO
-17D8..17DA ; Khmer # Po [3] KHMER SIGN BEYYAL..KHMER SIGN KOOMUUT
-17DB ; Khmer # Sc KHMER CURRENCY SYMBOL RIEL
-17DC ; Khmer # Lo KHMER SIGN AVAKRAHASANYA
-17DD ; Khmer # Mn KHMER SIGN ATTHACAN
-17E0..17E9 ; Khmer # Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE
-17F0..17F9 ; Khmer # No [10] KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON
-19E0..19FF ; Khmer # So [32] KHMER SYMBOL PATHAMASAT..KHMER SYMBOL DAP-PRAM ROC
-
-# Total code points: 146
-
-# ================================================
-
-1800..1805 ; Mongolian # Po [6] MONGOLIAN BIRGA..MONGOLIAN FOUR DOTS
-1806 ; Mongolian # Pd MONGOLIAN TODO SOFT HYPHEN
-1807..180A ; Mongolian # Po [4] MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER..MONGOLIAN NIRUGU
-180B..180D ; Mongolian # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
-180E ; Mongolian # Zs MONGOLIAN VOWEL SEPARATOR
-1810..1819 ; Mongolian # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
-1820..1842 ; Mongolian # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
-1843 ; Mongolian # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN
-1844..1877 ; Mongolian # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
-1880..18A8 ; Mongolian # Lo [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
-18A9 ; Mongolian # Mn MONGOLIAN LETTER ALI GALI DAGALGA
-
-# Total code points: 155
-
-# ================================================
-
-3041..3096 ; Hiragana # Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE
-309D..309E ; Hiragana # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
-309F ; Hiragana # Lo HIRAGANA DIGRAPH YORI
-
-# Total code points: 89
-
-# ================================================
-
-30A1..30FA ; Katakana # Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO
-30FD..30FE ; Katakana # Lm [2] KATAKANA ITERATION MARK..KATAKANA VOICED ITERATION MARK
-30FF ; Katakana # Lo KATAKANA DIGRAPH KOTO
-31F0..31FF ; Katakana # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
-FF66..FF6F ; Katakana # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
-FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
-
-# Total code points: 164
-
-# ================================================
-
-3105..312C ; Bopomofo # Lo [40] BOPOMOFO LETTER B..BOPOMOFO LETTER GN
-31A0..31B7 ; Bopomofo # Lo [24] BOPOMOFO LETTER BU..BOPOMOFO FINAL LETTER H
-
-# Total code points: 64
-
-# ================================================
-
-2E80..2E99 ; Han # So [26] CJK RADICAL REPEAT..CJK RADICAL RAP
-2E9B..2EF3 ; Han # So [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE
-2F00..2FD5 ; Han # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
-3005 ; Han # Lm IDEOGRAPHIC ITERATION MARK
-3007 ; Han # Nl IDEOGRAPHIC NUMBER ZERO
-3021..3029 ; Han # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
-3038..303A ; Han # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
-303B ; Han # Lm VERTICAL IDEOGRAPHIC ITERATION MARK
-3400..4DB5 ; Han # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
-4E00..9FBB ; Han # Lo [20924] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FBB
-F900..FA2D ; Han # Lo [302] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA2D
-FA30..FA6A ; Han # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
-FA70..FAD9 ; Han # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
-20000..2A6D6 ; Han # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
-2F800..2FA1D ; Han # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
-
-# Total code points: 71570
-
-# ================================================
-
-A000..A014 ; Yi # Lo [21] YI SYLLABLE IT..YI SYLLABLE E
-A015 ; Yi # Lm YI SYLLABLE WU
-A016..A48C ; Yi # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR
-A490..A4C6 ; Yi # So [55] YI RADICAL QOT..YI RADICAL KE
-
-# Total code points: 1220
-
-# ================================================
-
-10300..1031E ; Old_Italic # Lo [31] OLD ITALIC LETTER A..OLD ITALIC LETTER UU
-10320..10323 ; Old_Italic # No [4] OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY
-
-# Total code points: 35
-
-# ================================================
-
-10330..10349 ; Gothic # Lo [26] GOTHIC LETTER AHSA..GOTHIC LETTER OTHAL
-1034A ; Gothic # Nl GOTHIC LETTER NINE HUNDRED
-
-# Total code points: 27
-
-# ================================================
-
-10400..1044F ; Deseret # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
-
-# Total code points: 80
-
-# ================================================
-
-0300..036F ; Inherited # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
-064B..0655 ; Inherited # Mn [11] ARABIC FATHATAN..ARABIC HAMZA BELOW
-0670 ; Inherited # Mn ARABIC LETTER SUPERSCRIPT ALEF
-1DC0..1DC3 ; Inherited # Mn [4] COMBINING DOTTED GRAVE ACCENT..COMBINING SUSPENSION MARK
-200C..200D ; Inherited # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
-20D0..20DC ; Inherited # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
-20DD..20E0 ; Inherited # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
-20E1 ; Inherited # Mn COMBINING LEFT RIGHT ARROW ABOVE
-20E2..20E4 ; Inherited # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE
-20E5..20EB ; Inherited # Mn [7] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING LONG DOUBLE SOLIDUS OVERLAY
-302A..302F ; Inherited # Mn [6] IDEOGRAPHIC LEVEL TONE MARK..HANGUL DOUBLE DOT TONE MARK
-3099..309A ; Inherited # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-FE00..FE0F ; Inherited # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
-FE20..FE23 ; Inherited # Mn [4] COMBINING LIGATURE LEFT HALF..COMBINING DOUBLE TILDE RIGHT HALF
-1D167..1D169 ; Inherited # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
-1D17B..1D182 ; Inherited # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
-1D185..1D18B ; Inherited # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
-1D1AA..1D1AD ; Inherited # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
-E0100..E01EF ; Inherited # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
-
-# Total code points: 448
-
-# ================================================
-
-1700..170C ; Tagalog # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA
-170E..1711 ; Tagalog # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA
-1712..1714 ; Tagalog # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
-
-# Total code points: 20
-
-# ================================================
-
-1720..1731 ; Hanunoo # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA
-1732..1734 ; Hanunoo # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD
-
-# Total code points: 21
-
-# ================================================
-
-1740..1751 ; Buhid # Lo [18] BUHID LETTER A..BUHID LETTER HA
-1752..1753 ; Buhid # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
-
-# Total code points: 20
-
-# ================================================
-
-1760..176C ; Tagbanwa # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA
-176E..1770 ; Tagbanwa # Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA
-1772..1773 ; Tagbanwa # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
-
-# Total code points: 18
-
-# ================================================
-
-1900..191C ; Limbu # Lo [29] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER HA
-1920..1922 ; Limbu # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
-1923..1926 ; Limbu # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
-1927..1928 ; Limbu # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
-1929..192B ; Limbu # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA
-1930..1931 ; Limbu # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
-1932 ; Limbu # Mn LIMBU SMALL LETTER ANUSVARA
-1933..1938 ; Limbu # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
-1939..193B ; Limbu # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
-1940 ; Limbu # So LIMBU SIGN LOO
-1944..1945 ; Limbu # Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK
-1946..194F ; Limbu # Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE
-
-# Total code points: 66
-
-# ================================================
-
-1950..196D ; Tai_Le # Lo [30] TAI LE LETTER KA..TAI LE LETTER AI
-1970..1974 ; Tai_Le # Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6
-
-# Total code points: 35
-
-# ================================================
-
-10000..1000B ; Linear_B # Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE
-1000D..10026 ; Linear_B # Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO
-10028..1003A ; Linear_B # Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO
-1003C..1003D ; Linear_B # Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE
-1003F..1004D ; Linear_B # Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO
-10050..1005D ; Linear_B # Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089
-10080..100FA ; Linear_B # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305
-
-# Total code points: 211
-
-# ================================================
-
-10380..1039D ; Ugaritic # Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU
-1039F ; Ugaritic # Po UGARITIC WORD DIVIDER
-
-# Total code points: 31
-
-# ================================================
-
-10450..1047F ; Shavian # Lo [48] SHAVIAN LETTER PEEP..SHAVIAN LETTER YEW
-
-# Total code points: 48
-
-# ================================================
-
-10480..1049D ; Osmanya # Lo [30] OSMANYA LETTER ALEF..OSMANYA LETTER OO
-104A0..104A9 ; Osmanya # Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
-
-# Total code points: 40
-
-# ================================================
-
-10800..10805 ; Cypriot # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA
-10808 ; Cypriot # Lo CYPRIOT SYLLABLE JO
-1080A..10835 ; Cypriot # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO
-10837..10838 ; Cypriot # Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE
-1083C ; Cypriot # Lo CYPRIOT SYLLABLE ZA
-1083F ; Cypriot # Lo CYPRIOT SYLLABLE ZO
-
-# Total code points: 55
-
-# ================================================
-
-2800..28FF ; Braille # So [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678
-
-# Total code points: 256
-
-# ================================================
-
-1A00..1A16 ; Buginese # Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA
-1A17..1A18 ; Buginese # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
-1A19..1A1B ; Buginese # Mc [3] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN AE
-1A1E..1A1F ; Buginese # Po [2] BUGINESE PALLAWA..BUGINESE END OF SECTION
-
-# Total code points: 30
-
-# ================================================
-
-03E2..03EF ; Coptic # L& [14] COPTIC CAPITAL LETTER SHEI..COPTIC SMALL LETTER DEI
-2C80..2CE4 ; Coptic # L& [101] COPTIC CAPITAL LETTER ALFA..COPTIC SYMBOL KAI
-2CE5..2CEA ; Coptic # So [6] COPTIC SYMBOL MI RO..COPTIC SYMBOL SHIMA SIMA
-2CF9..2CFC ; Coptic # Po [4] COPTIC OLD NUBIAN FULL STOP..COPTIC OLD NUBIAN VERSE DIVIDER
-2CFD ; Coptic # No COPTIC FRACTION ONE HALF
-2CFE..2CFF ; Coptic # Po [2] COPTIC FULL STOP..COPTIC MORPHOLOGICAL DIVIDER
-
-# Total code points: 128
-
-# ================================================
-
-1980..19A9 ; New_Tai_Lue # Lo [42] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW XVA
-19B0..19C0 ; New_Tai_Lue # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY
-19C1..19C7 ; New_Tai_Lue # Lo [7] NEW TAI LUE LETTER FINAL V..NEW TAI LUE LETTER FINAL B
-19C8..19C9 ; New_Tai_Lue # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2
-19D0..19D9 ; New_Tai_Lue # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
-19DE..19DF ; New_Tai_Lue # Po [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV
-
-# Total code points: 80
-
-# ================================================
-
-2C00..2C2E ; Glagolitic # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
-2C30..2C5E ; Glagolitic # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE
-
-# Total code points: 94
-
-# ================================================
-
-2D30..2D65 ; Tifinagh # Lo [54] TIFINAGH LETTER YA..TIFINAGH LETTER YAZZ
-2D6F ; Tifinagh # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK
-
-# Total code points: 55
-
-# ================================================
-
-A800..A801 ; Syloti_Nagri # Lo [2] SYLOTI NAGRI LETTER A..SYLOTI NAGRI LETTER I
-A802 ; Syloti_Nagri # Mc SYLOTI NAGRI SIGN DVISVARA
-A803..A805 ; Syloti_Nagri # Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O
-A806 ; Syloti_Nagri # Mn SYLOTI NAGRI SIGN HASANTA
-A807..A80A ; Syloti_Nagri # Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO
-A80B ; Syloti_Nagri # Mn SYLOTI NAGRI SIGN ANUSVARA
-A80C..A822 ; Syloti_Nagri # Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO
-A823..A824 ; Syloti_Nagri # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
-A825..A826 ; Syloti_Nagri # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
-A827 ; Syloti_Nagri # Mc SYLOTI NAGRI VOWEL SIGN OO
-A828..A82B ; Syloti_Nagri # So [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4
-
-# Total code points: 44
-
-# ================================================
-
-103A0..103C3 ; Old_Persian # Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA
-103C8..103CF ; Old_Persian # Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH
-103D0 ; Old_Persian # So OLD PERSIAN WORD DIVIDER
-103D1..103D5 ; Old_Persian # Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
-
-# Total code points: 50
-
-# ================================================
-
-10A00 ; Kharoshthi # Lo KHAROSHTHI LETTER A
-10A01..10A03 ; Kharoshthi # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
-10A05..10A06 ; Kharoshthi # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
-10A0C..10A0F ; Kharoshthi # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
-10A10..10A13 ; Kharoshthi # Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA
-10A15..10A17 ; Kharoshthi # Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA
-10A19..10A33 ; Kharoshthi # Lo [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA
-10A38..10A3A ; Kharoshthi # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
-10A3F ; Kharoshthi # Mn KHAROSHTHI VIRAMA
-10A40..10A47 ; Kharoshthi # No [8] KHAROSHTHI DIGIT ONE..KHAROSHTHI NUMBER ONE THOUSAND
-10A50..10A58 ; Kharoshthi # Po [9] KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION LINES
-
-# Total code points: 65
diff --git a/Master/tlpkg/tlperl/lib/unicore/SpecialCasing.txt b/Master/tlpkg/tlperl/lib/unicore/SpecialCasing.txt
deleted file mode 100644
index 11a5b1d69e1..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/SpecialCasing.txt
+++ /dev/null
@@ -1,260 +0,0 @@
-# SpecialCasing-4.1.0.txt
-# Date: 2005-03-26, 00:35:45 GMT [MD]
-#
-# Unicode Character Database
-# Copyright (c) 1991-2005 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see UCD.html
-#
-# Special Casing Properties
-#
-# This file is a supplement to the UnicodeData file.
-# It contains additional information about the casing of Unicode characters.
-# (For compatibility, the UnicodeData.txt file only contains case mappings for
-# characters where they are 1-1, and does not have locale-specific mappings.)
-# For more information, see the discussion of Case Mappings in the Unicode Standard.
-#
-# All code points not listed in this file that do not have a simple case mappings
-# in UnicodeData.txt map to themselves.
-# ================================================================================
-# Format
-# ================================================================================
-# The entries in this file are in the following machine-readable format:
-#
-# <code>; <lower> ; <title> ; <upper> ; (<condition_list> ;)? # <comment>
-#
-# <code>, <lower>, <title>, and <upper> provide character values in hex. If there is more
-# than one character, they are separated by spaces. Other than as used to separate
-# elements, spaces are to be ignored.
-#
-# The <condition_list> is optional. Where present, it consists of one or more locale IDs
-# or contexts, separated by spaces. In these conditions:
-# - A condition list overrides the normal behavior if all of the listed conditions are true.
-# - The context is always the context of the characters in the original string,
-# NOT in the resulting string.
-# - Case distinctions in the condition list are not significant.
-# - Conditions preceded by "Not_" represent the negation of the condition.
-#
-# A locale ID is defined by taking any language tag as defined by
-# RFC 3066 (or its successor), and replacing '-' by '_'.
-#
-# A context for a character C is defined by Section 3.13 Default Case Operations,
-# on p. 89-90 of The Unicode Standard, Version 4.0, as amended by Unicode 4.1.0,
-# as specified in http://www.unicode.org/versions/Unicode4.1.0/
-#
-# Parsers of this file must be prepared to deal with future additions to this format:
-# * Additional contexts
-# * Additional fields
-# ================================================================================
-
-# ================================================================================
-# Unconditional mappings
-# ================================================================================
-
-# The German es-zed is special--the normal mapping is to SS.
-# Note: the titlecase should never occur in practice. It is equal to titlecase(uppercase(<es-zed>))
-
-00DF; 00DF; 0053 0073; 0053 0053; # LATIN SMALL LETTER SHARP S
-
-# Preserve canonical equivalence for I with dot. Turkic is handled below.
-
-0130; 0069 0307; 0130; 0130; # LATIN CAPITAL LETTER I WITH DOT ABOVE
-
-# Ligatures
-
-FB00; FB00; 0046 0066; 0046 0046; # LATIN SMALL LIGATURE FF
-FB01; FB01; 0046 0069; 0046 0049; # LATIN SMALL LIGATURE FI
-FB02; FB02; 0046 006C; 0046 004C; # LATIN SMALL LIGATURE FL
-FB03; FB03; 0046 0066 0069; 0046 0046 0049; # LATIN SMALL LIGATURE FFI
-FB04; FB04; 0046 0066 006C; 0046 0046 004C; # LATIN SMALL LIGATURE FFL
-FB05; FB05; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE LONG S T
-FB06; FB06; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE ST
-
-0587; 0587; 0535 0582; 0535 0552; # ARMENIAN SMALL LIGATURE ECH YIWN
-FB13; FB13; 0544 0576; 0544 0546; # ARMENIAN SMALL LIGATURE MEN NOW
-FB14; FB14; 0544 0565; 0544 0535; # ARMENIAN SMALL LIGATURE MEN ECH
-FB15; FB15; 0544 056B; 0544 053B; # ARMENIAN SMALL LIGATURE MEN INI
-FB16; FB16; 054E 0576; 054E 0546; # ARMENIAN SMALL LIGATURE VEW NOW
-FB17; FB17; 0544 056D; 0544 053D; # ARMENIAN SMALL LIGATURE MEN XEH
-
-# No corresponding uppercase precomposed character
-
-0149; 0149; 02BC 004E; 02BC 004E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
-0390; 0390; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-03B0; 03B0; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-01F0; 01F0; 004A 030C; 004A 030C; # LATIN SMALL LETTER J WITH CARON
-1E96; 1E96; 0048 0331; 0048 0331; # LATIN SMALL LETTER H WITH LINE BELOW
-1E97; 1E97; 0054 0308; 0054 0308; # LATIN SMALL LETTER T WITH DIAERESIS
-1E98; 1E98; 0057 030A; 0057 030A; # LATIN SMALL LETTER W WITH RING ABOVE
-1E99; 1E99; 0059 030A; 0059 030A; # LATIN SMALL LETTER Y WITH RING ABOVE
-1E9A; 1E9A; 0041 02BE; 0041 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING
-1F50; 1F50; 03A5 0313; 03A5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI
-1F52; 1F52; 03A5 0313 0300; 03A5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
-1F54; 1F54; 03A5 0313 0301; 03A5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
-1F56; 1F56; 03A5 0313 0342; 03A5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
-1FB6; 1FB6; 0391 0342; 0391 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
-1FC6; 1FC6; 0397 0342; 0397 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI
-1FD2; 1FD2; 0399 0308 0300; 0399 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
-1FD3; 1FD3; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
-1FD6; 1FD6; 0399 0342; 0399 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI
-1FD7; 1FD7; 0399 0308 0342; 0399 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
-1FE2; 1FE2; 03A5 0308 0300; 03A5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
-1FE3; 1FE3; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
-1FE4; 1FE4; 03A1 0313; 03A1 0313; # GREEK SMALL LETTER RHO WITH PSILI
-1FE6; 1FE6; 03A5 0342; 03A5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
-1FE7; 1FE7; 03A5 0308 0342; 03A5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
-1FF6; 1FF6; 03A9 0342; 03A9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
-
-# IMPORTANT-when capitalizing iota-subscript (0345)
-# It MUST be in normalized form--moved to the end of any sequence of combining marks.
-# This is because logically it represents a following base character!
-# E.g. <iota_subscript> (<Mn> | <Mc> | <Me>)+ => (<Mn> | <Mc> | <Me>)+ <iota_subscript>
-# It should never be the first character in a word, so in titlecasing it can be left as is.
-
-# The following cases are already in the UnicodeData file, so are only commented here.
-
-# 0345; 0345; 0345; 0399; # COMBINING GREEK YPOGEGRAMMENI
-
-# All letters with YPOGEGRAMMENI (iota-subscript) or PROSGEGRAMMENI (iota adscript)
-# have special uppercases.
-# Note: characters with PROSGEGRAMMENI are actually titlecase, not uppercase!
-
-1F80; 1F80; 1F88; 1F08 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
-1F81; 1F81; 1F89; 1F09 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
-1F82; 1F82; 1F8A; 1F0A 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1F83; 1F83; 1F8B; 1F0B 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1F84; 1F84; 1F8C; 1F0C 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1F85; 1F85; 1F8D; 1F0D 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1F86; 1F86; 1F8E; 1F0E 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1F87; 1F87; 1F8F; 1F0F 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1F88; 1F80; 1F88; 1F08 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
-1F89; 1F81; 1F89; 1F09 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
-1F8A; 1F82; 1F8A; 1F0A 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1F8B; 1F83; 1F8B; 1F0B 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1F8C; 1F84; 1F8C; 1F0C 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1F8D; 1F85; 1F8D; 1F0D 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1F8E; 1F86; 1F8E; 1F0E 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1F8F; 1F87; 1F8F; 1F0F 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1F90; 1F90; 1F98; 1F28 0399; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
-1F91; 1F91; 1F99; 1F29 0399; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
-1F92; 1F92; 1F9A; 1F2A 0399; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1F93; 1F93; 1F9B; 1F2B 0399; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1F94; 1F94; 1F9C; 1F2C 0399; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1F95; 1F95; 1F9D; 1F2D 0399; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1F96; 1F96; 1F9E; 1F2E 0399; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1F97; 1F97; 1F9F; 1F2F 0399; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1F98; 1F90; 1F98; 1F28 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
-1F99; 1F91; 1F99; 1F29 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
-1F9A; 1F92; 1F9A; 1F2A 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1F9B; 1F93; 1F9B; 1F2B 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1F9C; 1F94; 1F9C; 1F2C 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1F9D; 1F95; 1F9D; 1F2D 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1F9E; 1F96; 1F9E; 1F2E 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1F9F; 1F97; 1F9F; 1F2F 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1FA0; 1FA0; 1FA8; 1F68 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
-1FA1; 1FA1; 1FA9; 1F69 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
-1FA2; 1FA2; 1FAA; 1F6A 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1FA3; 1FA3; 1FAB; 1F6B 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1FA4; 1FA4; 1FAC; 1F6C 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1FA5; 1FA5; 1FAD; 1F6D 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1FA6; 1FA6; 1FAE; 1F6E 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1FA7; 1FA7; 1FAF; 1F6F 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1FA8; 1FA0; 1FA8; 1F68 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
-1FA9; 1FA1; 1FA9; 1F69 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
-1FAA; 1FA2; 1FAA; 1F6A 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1FAB; 1FA3; 1FAB; 1F6B 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1FAC; 1FA4; 1FAC; 1F6C 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1FAD; 1FA5; 1FAD; 1F6D 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1FAE; 1FA6; 1FAE; 1F6E 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1FAF; 1FA7; 1FAF; 1F6F 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1FB3; 1FB3; 1FBC; 0391 0399; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
-1FBC; 1FB3; 1FBC; 0391 0399; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
-1FC3; 1FC3; 1FCC; 0397 0399; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
-1FCC; 1FC3; 1FCC; 0397 0399; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
-1FF3; 1FF3; 1FFC; 03A9 0399; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
-1FFC; 1FF3; 1FFC; 03A9 0399; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
-
-# Some characters with YPOGEGRAMMENI also have no corresponding titlecases
-
-1FB2; 1FB2; 1FBA 0345; 1FBA 0399; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
-1FB4; 1FB4; 0386 0345; 0386 0399; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
-1FC2; 1FC2; 1FCA 0345; 1FCA 0399; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
-1FC4; 1FC4; 0389 0345; 0389 0399; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
-1FF2; 1FF2; 1FFA 0345; 1FFA 0399; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
-1FF4; 1FF4; 038F 0345; 038F 0399; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
-
-1FB7; 1FB7; 0391 0342 0345; 0391 0342 0399; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FC7; 1FC7; 0397 0342 0345; 0397 0342 0399; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FF7; 1FF7; 03A9 0342 0345; 03A9 0342 0399; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
-
-# ================================================================================
-# Conditional mappings
-# ================================================================================
-
-# Special case for final form of sigma
-
-03A3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK CAPITAL LETTER SIGMA
-
-# Note: the following cases for non-final are already in the UnicodeData file.
-
-# 03A3; 03C3; 03A3; 03A3; # GREEK CAPITAL LETTER SIGMA
-# 03C3; 03C3; 03A3; 03A3; # GREEK SMALL LETTER SIGMA
-# 03C2; 03C2; 03A3; 03A3; # GREEK SMALL LETTER FINAL SIGMA
-
-# Note: the following cases are not included, since they would case-fold in lowercasing
-
-# 03C3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK SMALL LETTER SIGMA
-# 03C2; 03C3; 03A3; 03A3; Not_Final_Sigma; # GREEK SMALL LETTER FINAL SIGMA
-
-# ================================================================================
-# Locale-sensitive mappings
-# ================================================================================
-
-# Lithuanian
-
-# Lithuanian retains the dot in a lowercase i when followed by accents.
-
-# Remove DOT ABOVE after "i" with upper or titlecase
-
-0307; 0307; ; ; lt After_Soft_Dotted; # COMBINING DOT ABOVE
-
-# Introduce an explicit dot above when lowercasing capital I's and J's
-# whenever there are more accents above.
-# (of the accents used in Lithuanian: grave, acute, tilde above, and ogonek)
-
-0049; 0069 0307; 0049; 0049; lt More_Above; # LATIN CAPITAL LETTER I
-004A; 006A 0307; 004A; 004A; lt More_Above; # LATIN CAPITAL LETTER J
-012E; 012F 0307; 012E; 012E; lt More_Above; # LATIN CAPITAL LETTER I WITH OGONEK
-00CC; 0069 0307 0300; 00CC; 00CC; lt; # LATIN CAPITAL LETTER I WITH GRAVE
-00CD; 0069 0307 0301; 00CD; 00CD; lt; # LATIN CAPITAL LETTER I WITH ACUTE
-0128; 0069 0307 0303; 0128; 0128; lt; # LATIN CAPITAL LETTER I WITH TILDE
-
-# ================================================================================
-
-# Turkish and Azeri
-
-# I and i-dotless; I-dot and i are case pairs in Turkish and Azeri
-# The following rules handle those cases.
-
-0130; 0069; 0130; 0130; tr; # LATIN CAPITAL LETTER I WITH DOT ABOVE
-0130; 0069; 0130; 0130; az; # LATIN CAPITAL LETTER I WITH DOT ABOVE
-
-# When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into i.
-# This matches the behavior of the canonically equivalent I-dot_above
-
-0307; ; 0307; 0307; tr After_I; # COMBINING DOT ABOVE
-0307; ; 0307; 0307; az After_I; # COMBINING DOT ABOVE
-
-# When lowercasing, unless an I is before a dot_above, it turns into a dotless i.
-
-0049; 0131; 0049; 0049; tr Not_Before_Dot; # LATIN CAPITAL LETTER I
-0049; 0131; 0049; 0049; az Not_Before_Dot; # LATIN CAPITAL LETTER I
-
-# When uppercasing, i turns into a dotted capital I
-
-0069; 0069; 0130; 0130; tr; # LATIN SMALL LETTER I
-0069; 0069; 0130; 0130; az; # LATIN SMALL LETTER I
-
-# Note: the following case is already in the UnicodeData file.
-
-# 0131; 0131; 0049; 0049; tr; # LATIN SMALL LETTER DOTLESS I
diff --git a/Master/tlpkg/tlperl/lib/unicore/StandardizedVariants.txt b/Master/tlpkg/tlperl/lib/unicore/StandardizedVariants.txt
deleted file mode 100644
index f049159dd3f..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/StandardizedVariants.txt
+++ /dev/null
@@ -1,122 +0,0 @@
-# StandardizedVariants-4.1.0.txt
-# Date: 2005-03-17, 15:21:00 PST [KW]
-#
-# Specification of the variant sequences that are defined in the
-# Unicode Standard.
-#
-# This file is a normative contributory data file in the
-# Unicode Character Database.
-#
-# Copyright (c) 1991-2005 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-#
-# Warning: Only the variation sequences specifically defined in this file
-# are sanctioned for standard use. In all other cases the variation selector
-# cannot change the visual appearance of the preceding base character from
-# what it would have had in the absence of the variation selector.
-#
-# For more information, see Section 15.6, Variation Selectors,
-# in The Unicode Standard, Version 4.0.
-#
-# Format:
-# Field 0: the variation sequence
-# Field 1: the description of the desired appearance
-# Field 2: where the appearance is only different in in particular shaping environments
-# this field lists them. The possible values are: isolate, initial, medial, final.
-# If more than one is present, there are spaces between them.
-# =============================
-
-# Mathematical
-
-2229 FE00; with serifs; # INTERSECTION
-222A FE00; with serifs; # UNION
-2268 FE00; with vertical stroke; # LESS-THAN BUT NOT EQUAL TO
-2269 FE00; with vertical stroke; # GREATER-THAN AND NOT DOUBLE EQUAL
-2272 FE00; following the slant of the lower leg; # LESS-THAN OR EQUIVALENT TO
-2273 FE00; following the slant of the lower leg; # GREATER-THAN OR EQUIVALENT TO
-#2278 FE00; with vertical stroke; # NEITHER LESS-THAN NOR GREATER-THAN
-#2279 FE00; with vertical stroke; # NEITHER GREATER-THAN NOR LESS-THAN
-228A FE00; with stroke through bottom members; # SUBSET OF WITH NOT EQUAL TO
-228B FE00; with stroke through bottom members; # SUPERSET OF WITH NOT EQUAL TO
-2293 FE00; with serifs; # SQUARE CAP
-2294 FE00; with serifs; # SQUARE CUP
-2295 FE00; with white rim; # CIRCLED PLUS
-2297 FE00; with white rim; # CIRCLED TIMES
-229C FE00; with equal sign touching the circle; # CIRCLED EQUALS
-22DA FE00; with slanted equal; # LESS-THAN EQUAL TO OR GREATER-THAN
-22DB FE00; with slanted equal; # GREATER-THAN EQUAL TO OR LESS-THAN
-2A3C FE00; tall variant with narrow foot; # INTERIOR PRODUCT
-2A3D FE00; tall variant with narrow foot; # RIGHTHAND INTERIOR PRODUCT
-2A9D FE00; with similar following the slant of the upper leg; # SIMILAR OR LESS-THAN
-2A9E FE00; with similar following the slant of the upper leg; # SIMILAR OR GREATER-THAN
-2AAC FE00; with slanted equal; # SMALLER THAN OR EQUAL TO
-2AAD FE00; with slanted equal; # LARGER THAN OR EQUAL TO
-2ACB FE00; with stroke through bottom members; # SUBSET OF ABOVE NOT EQUAL TO
-2ACC FE00; with stroke through bottom members; # SUPERSET OF ABOVE NOT EQUAL TO
-
-#Mongolian
-
-1820 180B; second form; isolate medial final # MONGOLIAN LETTER A
-1820 180C; third form; medial # MONGOLIAN LETTER A
-1821 180B; second form; initial final # MONGOLIAN LETTER E
-1822 180B; second form; medial # MONGOLIAN LETTER I
-1823 180B; second form; medial final # MONGOLIAN LETTER O
-1824 180B; second form; medial # MONGOLIAN LETTER U
-1825 180B; second form; medial final # MONGOLIAN LETTER OE
-1825 180C; third form; medial # MONGOLIAN LETTER OE
-1826 180B; second form; isolate medial final # MONGOLIAN LETTER UE
-1826 180C; third form; medial # MONGOLIAN LETTER UE
-1828 180B; second form; initial medial # MONGOLIAN LETTER NA
-1828 180C; third form; medial # MONGOLIAN LETTER NA
-1828 180D; separate form; medial # MONGOLIAN LETTER NA
-182A 180B; alternative form; final # MONGOLIAN LETTER BA
-182C 180B; second form; initial medial # MONGOLIAN LETTER QA
-182C 180B; feminine second form; isolate # MONGOLIAN LETTER QA
-182C 180C; third form; medial # MONGOLIAN LETTER QA
-182C 180D; fourth form; medial # MONGOLIAN LETTER QA
-182D 180B; second form; initial medial # MONGOLIAN LETTER GA
-182D 180B; feminine form; final # MONGOLIAN LETTER GA
-182D 180C; third form; medial # MONGOLIAN LETTER GA
-182D 180D; feminine form; medial # MONGOLIAN LETTER GA
-1830 180B; second form; final # MONGOLIAN LETTER SA
-1830 180C; third form; final # MONGOLIAN LETTER SA
-1832 180B; second form; medial # MONGOLIAN LETTER TA
-1833 180B; second form; initial medial final # MONGOLIAN LETTER DA
-1835 180B; second form; medial # MONGOLIAN LETTER JA
-1836 180B; second form; initial medial # # MONGOLIAN LETTER YA
-1836 180C; third form; medial # MONGOLIAN LETTER YA
-1838 180B; second form; final # MONGOLIAN LETTER WA
-1844 180B; second form; medial # MONGOLIAN LETTER TODO E
-1845 180B; second form; medial # MONGOLIAN LETTER TODO I
-1846 180B; second form; medial # MONGOLIAN LETTER TODO O
-1847 180B; second form; isolate medial final # MONGOLIAN LETTER TODO U
-1847 180C; third form; medial # MONGOLIAN LETTER TODO U
-1848 180B; second form; medial # MONGOLIAN LETTER TODO OE
-1849 180B; second form; isolate medial # MONGOLIAN LETTER TODO UE
-184D 180B; feminine form; initial medial # MONGOLIAN LETTER TODO QA
-184E 180B; second form; medial # MONGOLIAN LETTER TODO GA
-185D 180B; second form; medial final # MONGOLIAN LETTER SIBE E
-185E 180B; second form; medial final # MONGOLIAN LETTER SIBE I
-185E 180C; third form; medial final # MONGOLIAN LETTER SIBE I
-1860 180B; second form; medial final # MONGOLIAN LETTER SIBE UE
-1863 180B; second form; medial # MONGOLIAN LETTER SIBE KA
-1868 180B; second form; initial medial # MONGOLIAN LETTER SIBE TA
-1868 180C; third form; medial # MONGOLIAN LETTER SIBE TA
-1869 180B; second form; initial medial # MONGOLIAN LETTER SIBE DA
-186F 180B; second form; initial medial # MONGOLIAN LETTER SIBE ZA
-1873 180B; second form; medial final # MONGOLIAN LETTER MANCHU I
-1873 180C; third form; medial final # MONGOLIAN LETTER MANCHU I
-1873 180D; fourth form; medial # MONGOLIAN LETTER MANCHU I
-1874 180B; second form; medial # MONGOLIAN LETTER MANCHU KA
-1874 180B; feminine first final form; final # MONGOLIAN LETTER MANCHU KA
-1874 180C; feminine first medial form; medial # MONGOLIAN LETTER MANCHU KA
-1874 180C; feminine second final form; final # MONGOLIAN LETTER MANCHU KA
-1874 180D; feminine second medial form; medial # MONGOLIAN LETTER MANCHU KA
-1876 180B; second form; initial medial # MONGOLIAN LETTER MANCHU FA
-1880 180B; second form; # MONGOLIAN LETTER ALI GALI ANUSVARA ONE
-1881 180B; second form; # MONGOLIAN LETTER ALI GALI VISARGA ONE
-1887 180B; second form; isolate final # MONGOLIAN LETTER ALI GALI A
-1887 180C; third form; final # MONGOLIAN LETTER ALI GALI A
-1887 180D; fourth form; final # MONGOLIAN LETTER ALI GALI A
-1888 180B; second form; final # MONGOLIAN LETTER ALI GALI I
-188A 180B; second form; initial medial # MONGOLIAN LETTER ALI GALI NGA
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Digit.pl b/Master/tlpkg/tlperl/lib/unicore/To/Digit.pl
deleted file mode 100644
index 25af374eadf..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/To/Digit.pl
+++ /dev/null
@@ -1,276 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-return <<'END';
-0030 0
-0031 1
-0032 2
-0033 3
-0034 4
-0035 5
-0036 6
-0037 7
-0038 8
-0039 9
-0660 0
-0661 1
-0662 2
-0663 3
-0664 4
-0665 5
-0666 6
-0667 7
-0668 8
-0669 9
-06F0 0
-06F1 1
-06F2 2
-06F3 3
-06F4 4
-06F5 5
-06F6 6
-06F7 7
-06F8 8
-06F9 9
-0966 0
-0967 1
-0968 2
-0969 3
-096A 4
-096B 5
-096C 6
-096D 7
-096E 8
-096F 9
-09E6 0
-09E7 1
-09E8 2
-09E9 3
-09EA 4
-09EB 5
-09EC 6
-09ED 7
-09EE 8
-09EF 9
-0A66 0
-0A67 1
-0A68 2
-0A69 3
-0A6A 4
-0A6B 5
-0A6C 6
-0A6D 7
-0A6E 8
-0A6F 9
-0AE6 0
-0AE7 1
-0AE8 2
-0AE9 3
-0AEA 4
-0AEB 5
-0AEC 6
-0AED 7
-0AEE 8
-0AEF 9
-0B66 0
-0B67 1
-0B68 2
-0B69 3
-0B6A 4
-0B6B 5
-0B6C 6
-0B6D 7
-0B6E 8
-0B6F 9
-0BE6 0
-0BE7 1
-0BE8 2
-0BE9 3
-0BEA 4
-0BEB 5
-0BEC 6
-0BED 7
-0BEE 8
-0BEF 9
-0C66 0
-0C67 1
-0C68 2
-0C69 3
-0C6A 4
-0C6B 5
-0C6C 6
-0C6D 7
-0C6E 8
-0C6F 9
-0CE6 0
-0CE7 1
-0CE8 2
-0CE9 3
-0CEA 4
-0CEB 5
-0CEC 6
-0CED 7
-0CEE 8
-0CEF 9
-0D66 0
-0D67 1
-0D68 2
-0D69 3
-0D6A 4
-0D6B 5
-0D6C 6
-0D6D 7
-0D6E 8
-0D6F 9
-0E50 0
-0E51 1
-0E52 2
-0E53 3
-0E54 4
-0E55 5
-0E56 6
-0E57 7
-0E58 8
-0E59 9
-0ED0 0
-0ED1 1
-0ED2 2
-0ED3 3
-0ED4 4
-0ED5 5
-0ED6 6
-0ED7 7
-0ED8 8
-0ED9 9
-0F20 0
-0F21 1
-0F22 2
-0F23 3
-0F24 4
-0F25 5
-0F26 6
-0F27 7
-0F28 8
-0F29 9
-1040 0
-1041 1
-1042 2
-1043 3
-1044 4
-1045 5
-1046 6
-1047 7
-1048 8
-1049 9
-17E0 0
-17E1 1
-17E2 2
-17E3 3
-17E4 4
-17E5 5
-17E6 6
-17E7 7
-17E8 8
-17E9 9
-1810 0
-1811 1
-1812 2
-1813 3
-1814 4
-1815 5
-1816 6
-1817 7
-1818 8
-1819 9
-1946 0
-1947 1
-1948 2
-1949 3
-194A 4
-194B 5
-194C 6
-194D 7
-194E 8
-194F 9
-19D0 0
-19D1 1
-19D2 2
-19D3 3
-19D4 4
-19D5 5
-19D6 6
-19D7 7
-19D8 8
-19D9 9
-FF10 0
-FF11 1
-FF12 2
-FF13 3
-FF14 4
-FF15 5
-FF16 6
-FF17 7
-FF18 8
-FF19 9
-104A0 0
-104A1 1
-104A2 2
-104A3 3
-104A4 4
-104A5 5
-104A6 6
-104A7 7
-104A8 8
-104A9 9
-1D7CE 0
-1D7CF 1
-1D7D0 2
-1D7D1 3
-1D7D2 4
-1D7D3 5
-1D7D4 6
-1D7D5 7
-1D7D6 8
-1D7D7 9
-1D7D8 0
-1D7D9 1
-1D7DA 2
-1D7DB 3
-1D7DC 4
-1D7DD 5
-1D7DE 6
-1D7DF 7
-1D7E0 8
-1D7E1 9
-1D7E2 0
-1D7E3 1
-1D7E4 2
-1D7E5 3
-1D7E6 4
-1D7E7 5
-1D7E8 6
-1D7E9 7
-1D7EA 8
-1D7EB 9
-1D7EC 0
-1D7ED 1
-1D7EE 2
-1D7EF 3
-1D7F0 4
-1D7F1 5
-1D7F2 6
-1D7F3 7
-1D7F4 8
-1D7F5 9
-1D7F6 0
-1D7F7 1
-1D7F8 2
-1D7F9 3
-1D7FA 4
-1D7FB 5
-1D7FC 6
-1D7FD 7
-1D7FE 8
-1D7FF 9
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Fold.pl b/Master/tlpkg/tlperl/lib/unicore/To/Fold.pl
deleted file mode 100644
index 4555e9fd5bd..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/To/Fold.pl
+++ /dev/null
@@ -1,993 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-
-# The ke UTF-8 _bytes_, the value UTF-8 (speed hack)
-%utf8::ToSpecFold =
-(
-"\xC3\x9F" => "\x{0073}\x{0073}",
-"\xC4\xB0" => "\x{0069}\x{0307}",
-"\xC5\x89" => "\x{02BC}\x{006E}",
-"\xC7\xB0" => "\x{006A}\x{030C}",
-"\xCE\x90" => "\x{03B9}\x{0308}\x{0301}",
-"\xCE\xB0" => "\x{03C5}\x{0308}\x{0301}",
-"\xD6\x87" => "\x{0565}\x{0582}",
-"\xE1\xBA\x96" => "\x{0068}\x{0331}",
-"\xE1\xBA\x97" => "\x{0074}\x{0308}",
-"\xE1\xBA\x98" => "\x{0077}\x{030A}",
-"\xE1\xBA\x99" => "\x{0079}\x{030A}",
-"\xE1\xBA\x9A" => "\x{0061}\x{02BE}",
-"\xE1\xBD\x90" => "\x{03C5}\x{0313}",
-"\xE1\xBD\x92" => "\x{03C5}\x{0313}\x{0300}",
-"\xE1\xBD\x94" => "\x{03C5}\x{0313}\x{0301}",
-"\xE1\xBD\x96" => "\x{03C5}\x{0313}\x{0342}",
-"\xE1\xBE\x80" => "\x{1F00}\x{03B9}",
-"\xE1\xBE\x81" => "\x{1F01}\x{03B9}",
-"\xE1\xBE\x82" => "\x{1F02}\x{03B9}",
-"\xE1\xBE\x83" => "\x{1F03}\x{03B9}",
-"\xE1\xBE\x84" => "\x{1F04}\x{03B9}",
-"\xE1\xBE\x85" => "\x{1F05}\x{03B9}",
-"\xE1\xBE\x86" => "\x{1F06}\x{03B9}",
-"\xE1\xBE\x87" => "\x{1F07}\x{03B9}",
-"\xE1\xBE\x88" => "\x{1F00}\x{03B9}",
-"\xE1\xBE\x89" => "\x{1F01}\x{03B9}",
-"\xE1\xBE\x8A" => "\x{1F02}\x{03B9}",
-"\xE1\xBE\x8B" => "\x{1F03}\x{03B9}",
-"\xE1\xBE\x8C" => "\x{1F04}\x{03B9}",
-"\xE1\xBE\x8D" => "\x{1F05}\x{03B9}",
-"\xE1\xBE\x8E" => "\x{1F06}\x{03B9}",
-"\xE1\xBE\x8F" => "\x{1F07}\x{03B9}",
-"\xE1\xBE\x90" => "\x{1F20}\x{03B9}",
-"\xE1\xBE\x91" => "\x{1F21}\x{03B9}",
-"\xE1\xBE\x92" => "\x{1F22}\x{03B9}",
-"\xE1\xBE\x93" => "\x{1F23}\x{03B9}",
-"\xE1\xBE\x94" => "\x{1F24}\x{03B9}",
-"\xE1\xBE\x95" => "\x{1F25}\x{03B9}",
-"\xE1\xBE\x96" => "\x{1F26}\x{03B9}",
-"\xE1\xBE\x97" => "\x{1F27}\x{03B9}",
-"\xE1\xBE\x98" => "\x{1F20}\x{03B9}",
-"\xE1\xBE\x99" => "\x{1F21}\x{03B9}",
-"\xE1\xBE\x9A" => "\x{1F22}\x{03B9}",
-"\xE1\xBE\x9B" => "\x{1F23}\x{03B9}",
-"\xE1\xBE\x9C" => "\x{1F24}\x{03B9}",
-"\xE1\xBE\x9D" => "\x{1F25}\x{03B9}",
-"\xE1\xBE\x9E" => "\x{1F26}\x{03B9}",
-"\xE1\xBE\x9F" => "\x{1F27}\x{03B9}",
-"\xE1\xBE\xA0" => "\x{1F60}\x{03B9}",
-"\xE1\xBE\xA1" => "\x{1F61}\x{03B9}",
-"\xE1\xBE\xA2" => "\x{1F62}\x{03B9}",
-"\xE1\xBE\xA3" => "\x{1F63}\x{03B9}",
-"\xE1\xBE\xA4" => "\x{1F64}\x{03B9}",
-"\xE1\xBE\xA5" => "\x{1F65}\x{03B9}",
-"\xE1\xBE\xA6" => "\x{1F66}\x{03B9}",
-"\xE1\xBE\xA7" => "\x{1F67}\x{03B9}",
-"\xE1\xBE\xA8" => "\x{1F60}\x{03B9}",
-"\xE1\xBE\xA9" => "\x{1F61}\x{03B9}",
-"\xE1\xBE\xAA" => "\x{1F62}\x{03B9}",
-"\xE1\xBE\xAB" => "\x{1F63}\x{03B9}",
-"\xE1\xBE\xAC" => "\x{1F64}\x{03B9}",
-"\xE1\xBE\xAD" => "\x{1F65}\x{03B9}",
-"\xE1\xBE\xAE" => "\x{1F66}\x{03B9}",
-"\xE1\xBE\xAF" => "\x{1F67}\x{03B9}",
-"\xE1\xBE\xB2" => "\x{1F70}\x{03B9}",
-"\xE1\xBE\xB3" => "\x{03B1}\x{03B9}",
-"\xE1\xBE\xB4" => "\x{03AC}\x{03B9}",
-"\xE1\xBE\xB6" => "\x{03B1}\x{0342}",
-"\xE1\xBE\xB7" => "\x{03B1}\x{0342}\x{03B9}",
-"\xE1\xBE\xBC" => "\x{03B1}\x{03B9}",
-"\xE1\xBF\x82" => "\x{1F74}\x{03B9}",
-"\xE1\xBF\x83" => "\x{03B7}\x{03B9}",
-"\xE1\xBF\x84" => "\x{03AE}\x{03B9}",
-"\xE1\xBF\x86" => "\x{03B7}\x{0342}",
-"\xE1\xBF\x87" => "\x{03B7}\x{0342}\x{03B9}",
-"\xE1\xBF\x8C" => "\x{03B7}\x{03B9}",
-"\xE1\xBF\x92" => "\x{03B9}\x{0308}\x{0300}",
-"\xE1\xBF\x93" => "\x{03B9}\x{0308}\x{0301}",
-"\xE1\xBF\x96" => "\x{03B9}\x{0342}",
-"\xE1\xBF\x97" => "\x{03B9}\x{0308}\x{0342}",
-"\xE1\xBF\xA2" => "\x{03C5}\x{0308}\x{0300}",
-"\xE1\xBF\xA3" => "\x{03C5}\x{0308}\x{0301}",
-"\xE1\xBF\xA4" => "\x{03C1}\x{0313}",
-"\xE1\xBF\xA6" => "\x{03C5}\x{0342}",
-"\xE1\xBF\xA7" => "\x{03C5}\x{0308}\x{0342}",
-"\xE1\xBF\xB2" => "\x{1F7C}\x{03B9}",
-"\xE1\xBF\xB3" => "\x{03C9}\x{03B9}",
-"\xE1\xBF\xB4" => "\x{03CE}\x{03B9}",
-"\xE1\xBF\xB6" => "\x{03C9}\x{0342}",
-"\xE1\xBF\xB7" => "\x{03C9}\x{0342}\x{03B9}",
-"\xE1\xBF\xBC" => "\x{03C9}\x{03B9}",
-"\xEF\xAC\x80" => "\x{0066}\x{0066}",
-"\xEF\xAC\x81" => "\x{0066}\x{0069}",
-"\xEF\xAC\x82" => "\x{0066}\x{006C}",
-"\xEF\xAC\x83" => "\x{0066}\x{0066}\x{0069}",
-"\xEF\xAC\x84" => "\x{0066}\x{0066}\x{006C}",
-"\xEF\xAC\x85" => "\x{0073}\x{0074}",
-"\xEF\xAC\x86" => "\x{0073}\x{0074}",
-"\xEF\xAC\x93" => "\x{0574}\x{0576}",
-"\xEF\xAC\x94" => "\x{0574}\x{0565}",
-"\xEF\xAC\x95" => "\x{0574}\x{056B}",
-"\xEF\xAC\x96" => "\x{057E}\x{0576}",
-"\xEF\xAC\x97" => "\x{0574}\x{056D}",
-);
-
-return <<'END';
-0041 0061
-0042 0062
-0043 0063
-0044 0064
-0045 0065
-0046 0066
-0047 0067
-0048 0068
-0049 0069
-004A 006A
-004B 006B
-004C 006C
-004D 006D
-004E 006E
-004F 006F
-0050 0070
-0051 0071
-0052 0072
-0053 0073
-0054 0074
-0055 0075
-0056 0076
-0057 0077
-0058 0078
-0059 0079
-005A 007A
-00B5 03BC
-00C0 00E0
-00C1 00E1
-00C2 00E2
-00C3 00E3
-00C4 00E4
-00C5 00E5
-00C6 00E6
-00C7 00E7
-00C8 00E8
-00C9 00E9
-00CA 00EA
-00CB 00EB
-00CC 00EC
-00CD 00ED
-00CE 00EE
-00CF 00EF
-00D0 00F0
-00D1 00F1
-00D2 00F2
-00D3 00F3
-00D4 00F4
-00D5 00F5
-00D6 00F6
-00D8 00F8
-00D9 00F9
-00DA 00FA
-00DB 00FB
-00DC 00FC
-00DD 00FD
-00DE 00FE
-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
-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
-017F 0073
-0181 0253
-0182 0183
-0184 0185
-0186 0254
-0187 0188
-0189 0256
-018A 0257
-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 028A
-01B2 028B
-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
-0220 019E
-0222 0223
-0224 0225
-0226 0227
-0228 0229
-022A 022B
-022C 022D
-022E 022F
-0230 0231
-0232 0233
-023B 023C
-023D 019A
-0241 0294
-0345 03B9
-0386 03AC
-0388 03AD
-0389 03AE
-038A 03AF
-038C 03CC
-038E 03CD
-038F 03CE
-0391 03B1
-0392 03B2
-0393 03B3
-0394 03B4
-0395 03B5
-0396 03B6
-0397 03B7
-0398 03B8
-0399 03B9
-039A 03BA
-039B 03BB
-039C 03BC
-039D 03BD
-039E 03BE
-039F 03BF
-03A0 03C0
-03A1 03C1
-03A3 03C3
-03A4 03C4
-03A5 03C5
-03A6 03C6
-03A7 03C7
-03A8 03C8
-03A9 03C9
-03AA 03CA
-03AB 03CB
-03C2 03C3
-03D0 03B2
-03D1 03B8
-03D5 03C6
-03D6 03C0
-03D8 03D9
-03DA 03DB
-03DC 03DD
-03DE 03DF
-03E0 03E1
-03E2 03E3
-03E4 03E5
-03E6 03E7
-03E8 03E9
-03EA 03EB
-03EC 03ED
-03EE 03EF
-03F0 03BA
-03F1 03C1
-03F4 03B8
-03F5 03B5
-03F7 03F8
-03F9 03F2
-03FA 03FB
-0400 0450
-0401 0451
-0402 0452
-0403 0453
-0404 0454
-0405 0455
-0406 0456
-0407 0457
-0408 0458
-0409 0459
-040A 045A
-040B 045B
-040C 045C
-040D 045D
-040E 045E
-040F 045F
-0410 0430
-0411 0431
-0412 0432
-0413 0433
-0414 0434
-0415 0435
-0416 0436
-0417 0437
-0418 0438
-0419 0439
-041A 043A
-041B 043B
-041C 043C
-041D 043D
-041E 043E
-041F 043F
-0420 0440
-0421 0441
-0422 0442
-0423 0443
-0424 0444
-0425 0445
-0426 0446
-0427 0447
-0428 0448
-0429 0449
-042A 044A
-042B 044B
-042C 044C
-042D 044D
-042E 044E
-042F 044F
-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
-048A 048B
-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
-04C5 04C6
-04C7 04C8
-04C9 04CA
-04CB 04CC
-04CD 04CE
-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
-04F6 04F7
-04F8 04F9
-0500 0501
-0502 0503
-0504 0505
-0506 0507
-0508 0509
-050A 050B
-050C 050D
-050E 050F
-0531 0561
-0532 0562
-0533 0563
-0534 0564
-0535 0565
-0536 0566
-0537 0567
-0538 0568
-0539 0569
-053A 056A
-053B 056B
-053C 056C
-053D 056D
-053E 056E
-053F 056F
-0540 0570
-0541 0571
-0542 0572
-0543 0573
-0544 0574
-0545 0575
-0546 0576
-0547 0577
-0548 0578
-0549 0579
-054A 057A
-054B 057B
-054C 057C
-054D 057D
-054E 057E
-054F 057F
-0550 0580
-0551 0581
-0552 0582
-0553 0583
-0554 0584
-0555 0585
-0556 0586
-10A0 2D00
-10A1 2D01
-10A2 2D02
-10A3 2D03
-10A4 2D04
-10A5 2D05
-10A6 2D06
-10A7 2D07
-10A8 2D08
-10A9 2D09
-10AA 2D0A
-10AB 2D0B
-10AC 2D0C
-10AD 2D0D
-10AE 2D0E
-10AF 2D0F
-10B0 2D10
-10B1 2D11
-10B2 2D12
-10B3 2D13
-10B4 2D14
-10B5 2D15
-10B6 2D16
-10B7 2D17
-10B8 2D18
-10B9 2D19
-10BA 2D1A
-10BB 2D1B
-10BC 2D1C
-10BD 2D1D
-10BE 2D1E
-10BF 2D1F
-10C0 2D20
-10C1 2D21
-10C2 2D22
-10C3 2D23
-10C4 2D24
-10C5 2D25
-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
-1E9B 1E61
-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 1F00
-1F09 1F01
-1F0A 1F02
-1F0B 1F03
-1F0C 1F04
-1F0D 1F05
-1F0E 1F06
-1F0F 1F07
-1F18 1F10
-1F19 1F11
-1F1A 1F12
-1F1B 1F13
-1F1C 1F14
-1F1D 1F15
-1F28 1F20
-1F29 1F21
-1F2A 1F22
-1F2B 1F23
-1F2C 1F24
-1F2D 1F25
-1F2E 1F26
-1F2F 1F27
-1F38 1F30
-1F39 1F31
-1F3A 1F32
-1F3B 1F33
-1F3C 1F34
-1F3D 1F35
-1F3E 1F36
-1F3F 1F37
-1F48 1F40
-1F49 1F41
-1F4A 1F42
-1F4B 1F43
-1F4C 1F44
-1F4D 1F45
-1F59 1F51
-1F5B 1F53
-1F5D 1F55
-1F5F 1F57
-1F68 1F60
-1F69 1F61
-1F6A 1F62
-1F6B 1F63
-1F6C 1F64
-1F6D 1F65
-1F6E 1F66
-1F6F 1F67
-1FB8 1FB0
-1FB9 1FB1
-1FBA 1F70
-1FBB 1F71
-1FBE 03B9
-1FC8 1F72
-1FC9 1F73
-1FCA 1F74
-1FCB 1F75
-1FD8 1FD0
-1FD9 1FD1
-1FDA 1F76
-1FDB 1F77
-1FE8 1FE0
-1FE9 1FE1
-1FEA 1F7A
-1FEB 1F7B
-1FEC 1FE5
-1FF8 1F78
-1FF9 1F79
-1FFA 1F7C
-1FFB 1F7D
-2126 03C9
-212A 006B
-212B 00E5
-2160 2170
-2161 2171
-2162 2172
-2163 2173
-2164 2174
-2165 2175
-2166 2176
-2167 2177
-2168 2178
-2169 2179
-216A 217A
-216B 217B
-216C 217C
-216D 217D
-216E 217E
-216F 217F
-24B6 24D0
-24B7 24D1
-24B8 24D2
-24B9 24D3
-24BA 24D4
-24BB 24D5
-24BC 24D6
-24BD 24D7
-24BE 24D8
-24BF 24D9
-24C0 24DA
-24C1 24DB
-24C2 24DC
-24C3 24DD
-24C4 24DE
-24C5 24DF
-24C6 24E0
-24C7 24E1
-24C8 24E2
-24C9 24E3
-24CA 24E4
-24CB 24E5
-24CC 24E6
-24CD 24E7
-24CE 24E8
-24CF 24E9
-2C00 2C30
-2C01 2C31
-2C02 2C32
-2C03 2C33
-2C04 2C34
-2C05 2C35
-2C06 2C36
-2C07 2C37
-2C08 2C38
-2C09 2C39
-2C0A 2C3A
-2C0B 2C3B
-2C0C 2C3C
-2C0D 2C3D
-2C0E 2C3E
-2C0F 2C3F
-2C10 2C40
-2C11 2C41
-2C12 2C42
-2C13 2C43
-2C14 2C44
-2C15 2C45
-2C16 2C46
-2C17 2C47
-2C18 2C48
-2C19 2C49
-2C1A 2C4A
-2C1B 2C4B
-2C1C 2C4C
-2C1D 2C4D
-2C1E 2C4E
-2C1F 2C4F
-2C20 2C50
-2C21 2C51
-2C22 2C52
-2C23 2C53
-2C24 2C54
-2C25 2C55
-2C26 2C56
-2C27 2C57
-2C28 2C58
-2C29 2C59
-2C2A 2C5A
-2C2B 2C5B
-2C2C 2C5C
-2C2D 2C5D
-2C2E 2C5E
-2C80 2C81
-2C82 2C83
-2C84 2C85
-2C86 2C87
-2C88 2C89
-2C8A 2C8B
-2C8C 2C8D
-2C8E 2C8F
-2C90 2C91
-2C92 2C93
-2C94 2C95
-2C96 2C97
-2C98 2C99
-2C9A 2C9B
-2C9C 2C9D
-2C9E 2C9F
-2CA0 2CA1
-2CA2 2CA3
-2CA4 2CA5
-2CA6 2CA7
-2CA8 2CA9
-2CAA 2CAB
-2CAC 2CAD
-2CAE 2CAF
-2CB0 2CB1
-2CB2 2CB3
-2CB4 2CB5
-2CB6 2CB7
-2CB8 2CB9
-2CBA 2CBB
-2CBC 2CBD
-2CBE 2CBF
-2CC0 2CC1
-2CC2 2CC3
-2CC4 2CC5
-2CC6 2CC7
-2CC8 2CC9
-2CCA 2CCB
-2CCC 2CCD
-2CCE 2CCF
-2CD0 2CD1
-2CD2 2CD3
-2CD4 2CD5
-2CD6 2CD7
-2CD8 2CD9
-2CDA 2CDB
-2CDC 2CDD
-2CDE 2CDF
-2CE0 2CE1
-2CE2 2CE3
-FF21 FF41
-FF22 FF42
-FF23 FF43
-FF24 FF44
-FF25 FF45
-FF26 FF46
-FF27 FF47
-FF28 FF48
-FF29 FF49
-FF2A FF4A
-FF2B FF4B
-FF2C FF4C
-FF2D FF4D
-FF2E FF4E
-FF2F FF4F
-FF30 FF50
-FF31 FF51
-FF32 FF52
-FF33 FF53
-FF34 FF54
-FF35 FF55
-FF36 FF56
-FF37 FF57
-FF38 FF58
-FF39 FF59
-FF3A FF5A
-10400 10428
-10401 10429
-10402 1042A
-10403 1042B
-10404 1042C
-10405 1042D
-10406 1042E
-10407 1042F
-10408 10430
-10409 10431
-1040A 10432
-1040B 10433
-1040C 10434
-1040D 10435
-1040E 10436
-1040F 10437
-10410 10438
-10411 10439
-10412 1043A
-10413 1043B
-10414 1043C
-10415 1043D
-10416 1043E
-10417 1043F
-10418 10440
-10419 10441
-1041A 10442
-1041B 10443
-1041C 10444
-1041D 10445
-1041E 10446
-1041F 10447
-10420 10448
-10421 10449
-10422 1044A
-10423 1044B
-10424 1044C
-10425 1044D
-10426 1044E
-10427 1044F
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Lower.pl b/Master/tlpkg/tlperl/lib/unicore/To/Lower.pl
deleted file mode 100644
index 77a7a7fb0e0..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/To/Lower.pl
+++ /dev/null
@@ -1,905 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-
-# The key UTF-8 _bytes_, the value UTF-8 (speed hack)
-%utf8::ToSpecLower =
-(
-"\xC4\xB0" => "\x{0069}\x{0307}",
-"\xE1\xBE\x88" => "\x{1F80}",
-"\xE1\xBE\x89" => "\x{1F81}",
-"\xE1\xBE\x8A" => "\x{1F82}",
-"\xE1\xBE\x8B" => "\x{1F83}",
-"\xE1\xBE\x8C" => "\x{1F84}",
-"\xE1\xBE\x8D" => "\x{1F85}",
-"\xE1\xBE\x8E" => "\x{1F86}",
-"\xE1\xBE\x8F" => "\x{1F87}",
-"\xE1\xBE\x98" => "\x{1F90}",
-"\xE1\xBE\x99" => "\x{1F91}",
-"\xE1\xBE\x9A" => "\x{1F92}",
-"\xE1\xBE\x9B" => "\x{1F93}",
-"\xE1\xBE\x9C" => "\x{1F94}",
-"\xE1\xBE\x9D" => "\x{1F95}",
-"\xE1\xBE\x9E" => "\x{1F96}",
-"\xE1\xBE\x9F" => "\x{1F97}",
-"\xE1\xBE\xA8" => "\x{1FA0}",
-"\xE1\xBE\xA9" => "\x{1FA1}",
-"\xE1\xBE\xAA" => "\x{1FA2}",
-"\xE1\xBE\xAB" => "\x{1FA3}",
-"\xE1\xBE\xAC" => "\x{1FA4}",
-"\xE1\xBE\xAD" => "\x{1FA5}",
-"\xE1\xBE\xAE" => "\x{1FA6}",
-"\xE1\xBE\xAF" => "\x{1FA7}",
-"\xE1\xBE\xBC" => "\x{1FB3}",
-"\xE1\xBF\x8C" => "\x{1FC3}",
-"\xE1\xBF\xBC" => "\x{1FF3}",
-);
-
-return <<'END';
-0041 0061
-0042 0062
-0043 0063
-0044 0064
-0045 0065
-0046 0066
-0047 0067
-0048 0068
-0049 0069
-004A 006A
-004B 006B
-004C 006C
-004D 006D
-004E 006E
-004F 006F
-0050 0070
-0051 0071
-0052 0072
-0053 0073
-0054 0074
-0055 0075
-0056 0076
-0057 0077
-0058 0078
-0059 0079
-005A 007A
-00C0 00E0
-00C1 00E1
-00C2 00E2
-00C3 00E3
-00C4 00E4
-00C5 00E5
-00C6 00E6
-00C7 00E7
-00C8 00E8
-00C9 00E9
-00CA 00EA
-00CB 00EB
-00CC 00EC
-00CD 00ED
-00CE 00EE
-00CF 00EF
-00D0 00F0
-00D1 00F1
-00D2 00F2
-00D3 00F3
-00D4 00F4
-00D5 00F5
-00D6 00F6
-00D8 00F8
-00D9 00F9
-00DA 00FA
-00DB 00FB
-00DC 00FC
-00DD 00FD
-00DE 00FE
-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
-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 0256
-018A 0257
-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 028A
-01B2 028B
-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
-0220 019E
-0222 0223
-0224 0225
-0226 0227
-0228 0229
-022A 022B
-022C 022D
-022E 022F
-0230 0231
-0232 0233
-023B 023C
-023D 019A
-0241 0294
-0386 03AC
-0388 03AD
-0389 03AE
-038A 03AF
-038C 03CC
-038E 03CD
-038F 03CE
-0391 03B1
-0392 03B2
-0393 03B3
-0394 03B4
-0395 03B5
-0396 03B6
-0397 03B7
-0398 03B8
-0399 03B9
-039A 03BA
-039B 03BB
-039C 03BC
-039D 03BD
-039E 03BE
-039F 03BF
-03A0 03C0
-03A1 03C1
-03A3 03C3
-03A4 03C4
-03A5 03C5
-03A6 03C6
-03A7 03C7
-03A8 03C8
-03A9 03C9
-03AA 03CA
-03AB 03CB
-03D8 03D9
-03DA 03DB
-03DC 03DD
-03DE 03DF
-03E0 03E1
-03E2 03E3
-03E4 03E5
-03E6 03E7
-03E8 03E9
-03EA 03EB
-03EC 03ED
-03EE 03EF
-03F4 03B8
-03F7 03F8
-03F9 03F2
-03FA 03FB
-0400 0450
-0401 0451
-0402 0452
-0403 0453
-0404 0454
-0405 0455
-0406 0456
-0407 0457
-0408 0458
-0409 0459
-040A 045A
-040B 045B
-040C 045C
-040D 045D
-040E 045E
-040F 045F
-0410 0430
-0411 0431
-0412 0432
-0413 0433
-0414 0434
-0415 0435
-0416 0436
-0417 0437
-0418 0438
-0419 0439
-041A 043A
-041B 043B
-041C 043C
-041D 043D
-041E 043E
-041F 043F
-0420 0440
-0421 0441
-0422 0442
-0423 0443
-0424 0444
-0425 0445
-0426 0446
-0427 0447
-0428 0448
-0429 0449
-042A 044A
-042B 044B
-042C 044C
-042D 044D
-042E 044E
-042F 044F
-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
-048A 048B
-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
-04C5 04C6
-04C7 04C8
-04C9 04CA
-04CB 04CC
-04CD 04CE
-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
-04F6 04F7
-04F8 04F9
-0500 0501
-0502 0503
-0504 0505
-0506 0507
-0508 0509
-050A 050B
-050C 050D
-050E 050F
-0531 0561
-0532 0562
-0533 0563
-0534 0564
-0535 0565
-0536 0566
-0537 0567
-0538 0568
-0539 0569
-053A 056A
-053B 056B
-053C 056C
-053D 056D
-053E 056E
-053F 056F
-0540 0570
-0541 0571
-0542 0572
-0543 0573
-0544 0574
-0545 0575
-0546 0576
-0547 0577
-0548 0578
-0549 0579
-054A 057A
-054B 057B
-054C 057C
-054D 057D
-054E 057E
-054F 057F
-0550 0580
-0551 0581
-0552 0582
-0553 0583
-0554 0584
-0555 0585
-0556 0586
-10A0 2D00
-10A1 2D01
-10A2 2D02
-10A3 2D03
-10A4 2D04
-10A5 2D05
-10A6 2D06
-10A7 2D07
-10A8 2D08
-10A9 2D09
-10AA 2D0A
-10AB 2D0B
-10AC 2D0C
-10AD 2D0D
-10AE 2D0E
-10AF 2D0F
-10B0 2D10
-10B1 2D11
-10B2 2D12
-10B3 2D13
-10B4 2D14
-10B5 2D15
-10B6 2D16
-10B7 2D17
-10B8 2D18
-10B9 2D19
-10BA 2D1A
-10BB 2D1B
-10BC 2D1C
-10BD 2D1D
-10BE 2D1E
-10BF 2D1F
-10C0 2D20
-10C1 2D21
-10C2 2D22
-10C3 2D23
-10C4 2D24
-10C5 2D25
-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 1F00
-1F09 1F01
-1F0A 1F02
-1F0B 1F03
-1F0C 1F04
-1F0D 1F05
-1F0E 1F06
-1F0F 1F07
-1F18 1F10
-1F19 1F11
-1F1A 1F12
-1F1B 1F13
-1F1C 1F14
-1F1D 1F15
-1F28 1F20
-1F29 1F21
-1F2A 1F22
-1F2B 1F23
-1F2C 1F24
-1F2D 1F25
-1F2E 1F26
-1F2F 1F27
-1F38 1F30
-1F39 1F31
-1F3A 1F32
-1F3B 1F33
-1F3C 1F34
-1F3D 1F35
-1F3E 1F36
-1F3F 1F37
-1F48 1F40
-1F49 1F41
-1F4A 1F42
-1F4B 1F43
-1F4C 1F44
-1F4D 1F45
-1F59 1F51
-1F5B 1F53
-1F5D 1F55
-1F5F 1F57
-1F68 1F60
-1F69 1F61
-1F6A 1F62
-1F6B 1F63
-1F6C 1F64
-1F6D 1F65
-1F6E 1F66
-1F6F 1F67
-1FB8 1FB0
-1FB9 1FB1
-1FBA 1F70
-1FBB 1F71
-1FC8 1F72
-1FC9 1F73
-1FCA 1F74
-1FCB 1F75
-1FD8 1FD0
-1FD9 1FD1
-1FDA 1F76
-1FDB 1F77
-1FE8 1FE0
-1FE9 1FE1
-1FEA 1F7A
-1FEB 1F7B
-1FEC 1FE5
-1FF8 1F78
-1FF9 1F79
-1FFA 1F7C
-1FFB 1F7D
-2126 03C9
-212A 006B
-212B 00E5
-2160 2170
-2161 2171
-2162 2172
-2163 2173
-2164 2174
-2165 2175
-2166 2176
-2167 2177
-2168 2178
-2169 2179
-216A 217A
-216B 217B
-216C 217C
-216D 217D
-216E 217E
-216F 217F
-24B6 24D0
-24B7 24D1
-24B8 24D2
-24B9 24D3
-24BA 24D4
-24BB 24D5
-24BC 24D6
-24BD 24D7
-24BE 24D8
-24BF 24D9
-24C0 24DA
-24C1 24DB
-24C2 24DC
-24C3 24DD
-24C4 24DE
-24C5 24DF
-24C6 24E0
-24C7 24E1
-24C8 24E2
-24C9 24E3
-24CA 24E4
-24CB 24E5
-24CC 24E6
-24CD 24E7
-24CE 24E8
-24CF 24E9
-2C00 2C30
-2C01 2C31
-2C02 2C32
-2C03 2C33
-2C04 2C34
-2C05 2C35
-2C06 2C36
-2C07 2C37
-2C08 2C38
-2C09 2C39
-2C0A 2C3A
-2C0B 2C3B
-2C0C 2C3C
-2C0D 2C3D
-2C0E 2C3E
-2C0F 2C3F
-2C10 2C40
-2C11 2C41
-2C12 2C42
-2C13 2C43
-2C14 2C44
-2C15 2C45
-2C16 2C46
-2C17 2C47
-2C18 2C48
-2C19 2C49
-2C1A 2C4A
-2C1B 2C4B
-2C1C 2C4C
-2C1D 2C4D
-2C1E 2C4E
-2C1F 2C4F
-2C20 2C50
-2C21 2C51
-2C22 2C52
-2C23 2C53
-2C24 2C54
-2C25 2C55
-2C26 2C56
-2C27 2C57
-2C28 2C58
-2C29 2C59
-2C2A 2C5A
-2C2B 2C5B
-2C2C 2C5C
-2C2D 2C5D
-2C2E 2C5E
-2C80 2C81
-2C82 2C83
-2C84 2C85
-2C86 2C87
-2C88 2C89
-2C8A 2C8B
-2C8C 2C8D
-2C8E 2C8F
-2C90 2C91
-2C92 2C93
-2C94 2C95
-2C96 2C97
-2C98 2C99
-2C9A 2C9B
-2C9C 2C9D
-2C9E 2C9F
-2CA0 2CA1
-2CA2 2CA3
-2CA4 2CA5
-2CA6 2CA7
-2CA8 2CA9
-2CAA 2CAB
-2CAC 2CAD
-2CAE 2CAF
-2CB0 2CB1
-2CB2 2CB3
-2CB4 2CB5
-2CB6 2CB7
-2CB8 2CB9
-2CBA 2CBB
-2CBC 2CBD
-2CBE 2CBF
-2CC0 2CC1
-2CC2 2CC3
-2CC4 2CC5
-2CC6 2CC7
-2CC8 2CC9
-2CCA 2CCB
-2CCC 2CCD
-2CCE 2CCF
-2CD0 2CD1
-2CD2 2CD3
-2CD4 2CD5
-2CD6 2CD7
-2CD8 2CD9
-2CDA 2CDB
-2CDC 2CDD
-2CDE 2CDF
-2CE0 2CE1
-2CE2 2CE3
-FF21 FF41
-FF22 FF42
-FF23 FF43
-FF24 FF44
-FF25 FF45
-FF26 FF46
-FF27 FF47
-FF28 FF48
-FF29 FF49
-FF2A FF4A
-FF2B FF4B
-FF2C FF4C
-FF2D FF4D
-FF2E FF4E
-FF2F FF4F
-FF30 FF50
-FF31 FF51
-FF32 FF52
-FF33 FF53
-FF34 FF54
-FF35 FF55
-FF36 FF56
-FF37 FF57
-FF38 FF58
-FF39 FF59
-FF3A FF5A
-10400 10428
-10401 10429
-10402 1042A
-10403 1042B
-10404 1042C
-10405 1042D
-10406 1042E
-10407 1042F
-10408 10430
-10409 10431
-1040A 10432
-1040B 10433
-1040C 10434
-1040D 10435
-1040E 10436
-1040F 10437
-10410 10438
-10411 10439
-10412 1043A
-10413 1043B
-10414 1043C
-10415 1043D
-10416 1043E
-10417 1043F
-10418 10440
-10419 10441
-1041A 10442
-1041B 10443
-1041C 10444
-1041D 10445
-1041E 10446
-1041F 10447
-10420 10448
-10421 10449
-10422 1044A
-10423 1044B
-10424 1044C
-10425 1044D
-10426 1044E
-10427 1044F
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Title.pl b/Master/tlpkg/tlperl/lib/unicore/To/Title.pl
deleted file mode 100644
index 761767520c2..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/To/Title.pl
+++ /dev/null
@@ -1,966 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-
-# The key UTF-8 _bytes_, the value UTF-8 (speed hack)
-%utf8::ToSpecTitle =
-(
-"\xC3\x9F" => "\x{0053}\x{0073}",
-"\xC5\x89" => "\x{02BC}\x{004E}",
-"\xC7\xB0" => "\x{004A}\x{030C}",
-"\xCE\x90" => "\x{0399}\x{0308}\x{0301}",
-"\xCE\xB0" => "\x{03A5}\x{0308}\x{0301}",
-"\xD6\x87" => "\x{0535}\x{0582}",
-"\xE1\xBA\x96" => "\x{0048}\x{0331}",
-"\xE1\xBA\x97" => "\x{0054}\x{0308}",
-"\xE1\xBA\x98" => "\x{0057}\x{030A}",
-"\xE1\xBA\x99" => "\x{0059}\x{030A}",
-"\xE1\xBA\x9A" => "\x{0041}\x{02BE}",
-"\xE1\xBD\x90" => "\x{03A5}\x{0313}",
-"\xE1\xBD\x92" => "\x{03A5}\x{0313}\x{0300}",
-"\xE1\xBD\x94" => "\x{03A5}\x{0313}\x{0301}",
-"\xE1\xBD\x96" => "\x{03A5}\x{0313}\x{0342}",
-"\xE1\xBE\x80" => "\x{1F88}",
-"\xE1\xBE\x81" => "\x{1F89}",
-"\xE1\xBE\x82" => "\x{1F8A}",
-"\xE1\xBE\x83" => "\x{1F8B}",
-"\xE1\xBE\x84" => "\x{1F8C}",
-"\xE1\xBE\x85" => "\x{1F8D}",
-"\xE1\xBE\x86" => "\x{1F8E}",
-"\xE1\xBE\x87" => "\x{1F8F}",
-"\xE1\xBE\x90" => "\x{1F98}",
-"\xE1\xBE\x91" => "\x{1F99}",
-"\xE1\xBE\x92" => "\x{1F9A}",
-"\xE1\xBE\x93" => "\x{1F9B}",
-"\xE1\xBE\x94" => "\x{1F9C}",
-"\xE1\xBE\x95" => "\x{1F9D}",
-"\xE1\xBE\x96" => "\x{1F9E}",
-"\xE1\xBE\x97" => "\x{1F9F}",
-"\xE1\xBE\xA0" => "\x{1FA8}",
-"\xE1\xBE\xA1" => "\x{1FA9}",
-"\xE1\xBE\xA2" => "\x{1FAA}",
-"\xE1\xBE\xA3" => "\x{1FAB}",
-"\xE1\xBE\xA4" => "\x{1FAC}",
-"\xE1\xBE\xA5" => "\x{1FAD}",
-"\xE1\xBE\xA6" => "\x{1FAE}",
-"\xE1\xBE\xA7" => "\x{1FAF}",
-"\xE1\xBE\xB2" => "\x{1FBA}\x{0345}",
-"\xE1\xBE\xB3" => "\x{1FBC}",
-"\xE1\xBE\xB4" => "\x{0386}\x{0345}",
-"\xE1\xBE\xB6" => "\x{0391}\x{0342}",
-"\xE1\xBE\xB7" => "\x{0391}\x{0342}\x{0345}",
-"\xE1\xBF\x82" => "\x{1FCA}\x{0345}",
-"\xE1\xBF\x83" => "\x{1FCC}",
-"\xE1\xBF\x84" => "\x{0389}\x{0345}",
-"\xE1\xBF\x86" => "\x{0397}\x{0342}",
-"\xE1\xBF\x87" => "\x{0397}\x{0342}\x{0345}",
-"\xE1\xBF\x92" => "\x{0399}\x{0308}\x{0300}",
-"\xE1\xBF\x93" => "\x{0399}\x{0308}\x{0301}",
-"\xE1\xBF\x96" => "\x{0399}\x{0342}",
-"\xE1\xBF\x97" => "\x{0399}\x{0308}\x{0342}",
-"\xE1\xBF\xA2" => "\x{03A5}\x{0308}\x{0300}",
-"\xE1\xBF\xA3" => "\x{03A5}\x{0308}\x{0301}",
-"\xE1\xBF\xA4" => "\x{03A1}\x{0313}",
-"\xE1\xBF\xA6" => "\x{03A5}\x{0342}",
-"\xE1\xBF\xA7" => "\x{03A5}\x{0308}\x{0342}",
-"\xE1\xBF\xB2" => "\x{1FFA}\x{0345}",
-"\xE1\xBF\xB3" => "\x{1FFC}",
-"\xE1\xBF\xB4" => "\x{038F}\x{0345}",
-"\xE1\xBF\xB6" => "\x{03A9}\x{0342}",
-"\xE1\xBF\xB7" => "\x{03A9}\x{0342}\x{0345}",
-"\xEF\xAC\x80" => "\x{0046}\x{0066}",
-"\xEF\xAC\x81" => "\x{0046}\x{0069}",
-"\xEF\xAC\x82" => "\x{0046}\x{006C}",
-"\xEF\xAC\x83" => "\x{0046}\x{0066}\x{0069}",
-"\xEF\xAC\x84" => "\x{0046}\x{0066}\x{006C}",
-"\xEF\xAC\x85" => "\x{0053}\x{0074}",
-"\xEF\xAC\x86" => "\x{0053}\x{0074}",
-"\xEF\xAC\x93" => "\x{0544}\x{0576}",
-"\xEF\xAC\x94" => "\x{0544}\x{0565}",
-"\xEF\xAC\x95" => "\x{0544}\x{056B}",
-"\xEF\xAC\x96" => "\x{054E}\x{0576}",
-"\xEF\xAC\x97" => "\x{0544}\x{056D}",
-);
-
-return <<'END';
-0061 0041
-0062 0042
-0063 0043
-0064 0044
-0065 0045
-0066 0046
-0067 0047
-0068 0048
-0069 0049
-006A 004A
-006B 004B
-006C 004C
-006D 004D
-006E 004E
-006F 004F
-0070 0050
-0071 0051
-0072 0052
-0073 0053
-0074 0054
-0075 0055
-0076 0056
-0077 0057
-0078 0058
-0079 0059
-007A 005A
-00B5 039C
-00E0 00C0
-00E1 00C1
-00E2 00C2
-00E3 00C3
-00E4 00C4
-00E5 00C5
-00E6 00C6
-00E7 00C7
-00E8 00C8
-00E9 00C9
-00EA 00CA
-00EB 00CB
-00EC 00CC
-00ED 00CD
-00EE 00CE
-00EF 00CF
-00F0 00D0
-00F1 00D1
-00F2 00D2
-00F3 00D3
-00F4 00D4
-00F5 00D5
-00F6 00D6
-00F8 00D8
-00F9 00D9
-00FA 00DA
-00FB 00DB
-00FC 00DC
-00FD 00DD
-00FE 00DE
-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
-019A 023D
-019E 0220
-01A1 01A0
-01A3 01A2
-01A5 01A4
-01A8 01A7
-01AD 01AC
-01B0 01AF
-01B4 01B3
-01B6 01B5
-01B9 01B8
-01BD 01BC
-01BF 01F7
-01C4 01C5
-01C5 01C5
-01C6 01C5
-01C7 01C8
-01C8 01C8
-01C9 01C8
-01CA 01CB
-01CB 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
-01F2 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
-023C 023B
-0253 0181
-0254 0186
-0256 0189
-0257 018A
-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 01B1
-028B 01B2
-0292 01B7
-0294 0241
-0345 0399
-03AC 0386
-03AD 0388
-03AE 0389
-03AF 038A
-03B1 0391
-03B2 0392
-03B3 0393
-03B4 0394
-03B5 0395
-03B6 0396
-03B7 0397
-03B8 0398
-03B9 0399
-03BA 039A
-03BB 039B
-03BC 039C
-03BD 039D
-03BE 039E
-03BF 039F
-03C0 03A0
-03C1 03A1
-03C2 03A3
-03C3 03A3
-03C4 03A4
-03C5 03A5
-03C6 03A6
-03C7 03A7
-03C8 03A8
-03C9 03A9
-03CA 03AA
-03CB 03AB
-03CC 038C
-03CD 038E
-03CE 038F
-03D0 0392
-03D1 0398
-03D5 03A6
-03D6 03A0
-03D9 03D8
-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 03F9
-03F5 0395
-03F8 03F7
-03FB 03FA
-0430 0410
-0431 0411
-0432 0412
-0433 0413
-0434 0414
-0435 0415
-0436 0416
-0437 0417
-0438 0418
-0439 0419
-043A 041A
-043B 041B
-043C 041C
-043D 041D
-043E 041E
-043F 041F
-0440 0420
-0441 0421
-0442 0422
-0443 0423
-0444 0424
-0445 0425
-0446 0426
-0447 0427
-0448 0428
-0449 0429
-044A 042A
-044B 042B
-044C 042C
-044D 042D
-044E 042E
-044F 042F
-0450 0400
-0451 0401
-0452 0402
-0453 0403
-0454 0404
-0455 0405
-0456 0406
-0457 0407
-0458 0408
-0459 0409
-045A 040A
-045B 040B
-045C 040C
-045D 040D
-045E 040E
-045F 040F
-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
-048B 048A
-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
-04C6 04C5
-04C8 04C7
-04CA 04C9
-04CC 04CB
-04CE 04CD
-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
-04F7 04F6
-04F9 04F8
-0501 0500
-0503 0502
-0505 0504
-0507 0506
-0509 0508
-050B 050A
-050D 050C
-050F 050E
-0561 0531
-0562 0532
-0563 0533
-0564 0534
-0565 0535
-0566 0536
-0567 0537
-0568 0538
-0569 0539
-056A 053A
-056B 053B
-056C 053C
-056D 053D
-056E 053E
-056F 053F
-0570 0540
-0571 0541
-0572 0542
-0573 0543
-0574 0544
-0575 0545
-0576 0546
-0577 0547
-0578 0548
-0579 0549
-057A 054A
-057B 054B
-057C 054C
-057D 054D
-057E 054E
-057F 054F
-0580 0550
-0581 0551
-0582 0552
-0583 0553
-0584 0554
-0585 0555
-0586 0556
-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 1F08
-1F01 1F09
-1F02 1F0A
-1F03 1F0B
-1F04 1F0C
-1F05 1F0D
-1F06 1F0E
-1F07 1F0F
-1F10 1F18
-1F11 1F19
-1F12 1F1A
-1F13 1F1B
-1F14 1F1C
-1F15 1F1D
-1F20 1F28
-1F21 1F29
-1F22 1F2A
-1F23 1F2B
-1F24 1F2C
-1F25 1F2D
-1F26 1F2E
-1F27 1F2F
-1F30 1F38
-1F31 1F39
-1F32 1F3A
-1F33 1F3B
-1F34 1F3C
-1F35 1F3D
-1F36 1F3E
-1F37 1F3F
-1F40 1F48
-1F41 1F49
-1F42 1F4A
-1F43 1F4B
-1F44 1F4C
-1F45 1F4D
-1F51 1F59
-1F53 1F5B
-1F55 1F5D
-1F57 1F5F
-1F60 1F68
-1F61 1F69
-1F62 1F6A
-1F63 1F6B
-1F64 1F6C
-1F65 1F6D
-1F66 1F6E
-1F67 1F6F
-1F70 1FBA
-1F71 1FBB
-1F72 1FC8
-1F73 1FC9
-1F74 1FCA
-1F75 1FCB
-1F76 1FDA
-1F77 1FDB
-1F78 1FF8
-1F79 1FF9
-1F7A 1FEA
-1F7B 1FEB
-1F7C 1FFA
-1F7D 1FFB
-1FB0 1FB8
-1FB1 1FB9
-1FBE 0399
-1FD0 1FD8
-1FD1 1FD9
-1FE0 1FE8
-1FE1 1FE9
-1FE5 1FEC
-2170 2160
-2171 2161
-2172 2162
-2173 2163
-2174 2164
-2175 2165
-2176 2166
-2177 2167
-2178 2168
-2179 2169
-217A 216A
-217B 216B
-217C 216C
-217D 216D
-217E 216E
-217F 216F
-24D0 24B6
-24D1 24B7
-24D2 24B8
-24D3 24B9
-24D4 24BA
-24D5 24BB
-24D6 24BC
-24D7 24BD
-24D8 24BE
-24D9 24BF
-24DA 24C0
-24DB 24C1
-24DC 24C2
-24DD 24C3
-24DE 24C4
-24DF 24C5
-24E0 24C6
-24E1 24C7
-24E2 24C8
-24E3 24C9
-24E4 24CA
-24E5 24CB
-24E6 24CC
-24E7 24CD
-24E8 24CE
-24E9 24CF
-2C30 2C00
-2C31 2C01
-2C32 2C02
-2C33 2C03
-2C34 2C04
-2C35 2C05
-2C36 2C06
-2C37 2C07
-2C38 2C08
-2C39 2C09
-2C3A 2C0A
-2C3B 2C0B
-2C3C 2C0C
-2C3D 2C0D
-2C3E 2C0E
-2C3F 2C0F
-2C40 2C10
-2C41 2C11
-2C42 2C12
-2C43 2C13
-2C44 2C14
-2C45 2C15
-2C46 2C16
-2C47 2C17
-2C48 2C18
-2C49 2C19
-2C4A 2C1A
-2C4B 2C1B
-2C4C 2C1C
-2C4D 2C1D
-2C4E 2C1E
-2C4F 2C1F
-2C50 2C20
-2C51 2C21
-2C52 2C22
-2C53 2C23
-2C54 2C24
-2C55 2C25
-2C56 2C26
-2C57 2C27
-2C58 2C28
-2C59 2C29
-2C5A 2C2A
-2C5B 2C2B
-2C5C 2C2C
-2C5D 2C2D
-2C5E 2C2E
-2C81 2C80
-2C83 2C82
-2C85 2C84
-2C87 2C86
-2C89 2C88
-2C8B 2C8A
-2C8D 2C8C
-2C8F 2C8E
-2C91 2C90
-2C93 2C92
-2C95 2C94
-2C97 2C96
-2C99 2C98
-2C9B 2C9A
-2C9D 2C9C
-2C9F 2C9E
-2CA1 2CA0
-2CA3 2CA2
-2CA5 2CA4
-2CA7 2CA6
-2CA9 2CA8
-2CAB 2CAA
-2CAD 2CAC
-2CAF 2CAE
-2CB1 2CB0
-2CB3 2CB2
-2CB5 2CB4
-2CB7 2CB6
-2CB9 2CB8
-2CBB 2CBA
-2CBD 2CBC
-2CBF 2CBE
-2CC1 2CC0
-2CC3 2CC2
-2CC5 2CC4
-2CC7 2CC6
-2CC9 2CC8
-2CCB 2CCA
-2CCD 2CCC
-2CCF 2CCE
-2CD1 2CD0
-2CD3 2CD2
-2CD5 2CD4
-2CD7 2CD6
-2CD9 2CD8
-2CDB 2CDA
-2CDD 2CDC
-2CDF 2CDE
-2CE1 2CE0
-2CE3 2CE2
-2D00 10A0
-2D01 10A1
-2D02 10A2
-2D03 10A3
-2D04 10A4
-2D05 10A5
-2D06 10A6
-2D07 10A7
-2D08 10A8
-2D09 10A9
-2D0A 10AA
-2D0B 10AB
-2D0C 10AC
-2D0D 10AD
-2D0E 10AE
-2D0F 10AF
-2D10 10B0
-2D11 10B1
-2D12 10B2
-2D13 10B3
-2D14 10B4
-2D15 10B5
-2D16 10B6
-2D17 10B7
-2D18 10B8
-2D19 10B9
-2D1A 10BA
-2D1B 10BB
-2D1C 10BC
-2D1D 10BD
-2D1E 10BE
-2D1F 10BF
-2D20 10C0
-2D21 10C1
-2D22 10C2
-2D23 10C3
-2D24 10C4
-2D25 10C5
-FF41 FF21
-FF42 FF22
-FF43 FF23
-FF44 FF24
-FF45 FF25
-FF46 FF26
-FF47 FF27
-FF48 FF28
-FF49 FF29
-FF4A FF2A
-FF4B FF2B
-FF4C FF2C
-FF4D FF2D
-FF4E FF2E
-FF4F FF2F
-FF50 FF30
-FF51 FF31
-FF52 FF32
-FF53 FF33
-FF54 FF34
-FF55 FF35
-FF56 FF36
-FF57 FF37
-FF58 FF38
-FF59 FF39
-FF5A FF3A
-10428 10400
-10429 10401
-1042A 10402
-1042B 10403
-1042C 10404
-1042D 10405
-1042E 10406
-1042F 10407
-10430 10408
-10431 10409
-10432 1040A
-10433 1040B
-10434 1040C
-10435 1040D
-10436 1040E
-10437 1040F
-10438 10410
-10439 10411
-1043A 10412
-1043B 10413
-1043C 10414
-1043D 10415
-1043E 10416
-1043F 10417
-10440 10418
-10441 10419
-10442 1041A
-10443 1041B
-10444 1041C
-10445 1041D
-10446 1041E
-10447 1041F
-10448 10420
-10449 10421
-1044A 10422
-1044B 10423
-1044C 10424
-1044D 10425
-1044E 10426
-1044F 10427
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Upper.pl b/Master/tlpkg/tlperl/lib/unicore/To/Upper.pl
deleted file mode 100644
index 6b1f3e29c47..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/To/Upper.pl
+++ /dev/null
@@ -1,989 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-
-# The key UTF-8 _bytes_, the value UTF-8 (speed hack)
-%utf8::ToSpecUpper =
-(
-"\xC3\x9F" => "\x{0053}\x{0053}",
-"\xC5\x89" => "\x{02BC}\x{004E}",
-"\xC7\xB0" => "\x{004A}\x{030C}",
-"\xCE\x90" => "\x{0399}\x{0308}\x{0301}",
-"\xCE\xB0" => "\x{03A5}\x{0308}\x{0301}",
-"\xD6\x87" => "\x{0535}\x{0552}",
-"\xE1\xBA\x96" => "\x{0048}\x{0331}",
-"\xE1\xBA\x97" => "\x{0054}\x{0308}",
-"\xE1\xBA\x98" => "\x{0057}\x{030A}",
-"\xE1\xBA\x99" => "\x{0059}\x{030A}",
-"\xE1\xBA\x9A" => "\x{0041}\x{02BE}",
-"\xE1\xBD\x90" => "\x{03A5}\x{0313}",
-"\xE1\xBD\x92" => "\x{03A5}\x{0313}\x{0300}",
-"\xE1\xBD\x94" => "\x{03A5}\x{0313}\x{0301}",
-"\xE1\xBD\x96" => "\x{03A5}\x{0313}\x{0342}",
-"\xE1\xBE\x80" => "\x{1F08}\x{0399}",
-"\xE1\xBE\x81" => "\x{1F09}\x{0399}",
-"\xE1\xBE\x82" => "\x{1F0A}\x{0399}",
-"\xE1\xBE\x83" => "\x{1F0B}\x{0399}",
-"\xE1\xBE\x84" => "\x{1F0C}\x{0399}",
-"\xE1\xBE\x85" => "\x{1F0D}\x{0399}",
-"\xE1\xBE\x86" => "\x{1F0E}\x{0399}",
-"\xE1\xBE\x87" => "\x{1F0F}\x{0399}",
-"\xE1\xBE\x88" => "\x{1F08}\x{0399}",
-"\xE1\xBE\x89" => "\x{1F09}\x{0399}",
-"\xE1\xBE\x8A" => "\x{1F0A}\x{0399}",
-"\xE1\xBE\x8B" => "\x{1F0B}\x{0399}",
-"\xE1\xBE\x8C" => "\x{1F0C}\x{0399}",
-"\xE1\xBE\x8D" => "\x{1F0D}\x{0399}",
-"\xE1\xBE\x8E" => "\x{1F0E}\x{0399}",
-"\xE1\xBE\x8F" => "\x{1F0F}\x{0399}",
-"\xE1\xBE\x90" => "\x{1F28}\x{0399}",
-"\xE1\xBE\x91" => "\x{1F29}\x{0399}",
-"\xE1\xBE\x92" => "\x{1F2A}\x{0399}",
-"\xE1\xBE\x93" => "\x{1F2B}\x{0399}",
-"\xE1\xBE\x94" => "\x{1F2C}\x{0399}",
-"\xE1\xBE\x95" => "\x{1F2D}\x{0399}",
-"\xE1\xBE\x96" => "\x{1F2E}\x{0399}",
-"\xE1\xBE\x97" => "\x{1F2F}\x{0399}",
-"\xE1\xBE\x98" => "\x{1F28}\x{0399}",
-"\xE1\xBE\x99" => "\x{1F29}\x{0399}",
-"\xE1\xBE\x9A" => "\x{1F2A}\x{0399}",
-"\xE1\xBE\x9B" => "\x{1F2B}\x{0399}",
-"\xE1\xBE\x9C" => "\x{1F2C}\x{0399}",
-"\xE1\xBE\x9D" => "\x{1F2D}\x{0399}",
-"\xE1\xBE\x9E" => "\x{1F2E}\x{0399}",
-"\xE1\xBE\x9F" => "\x{1F2F}\x{0399}",
-"\xE1\xBE\xA0" => "\x{1F68}\x{0399}",
-"\xE1\xBE\xA1" => "\x{1F69}\x{0399}",
-"\xE1\xBE\xA2" => "\x{1F6A}\x{0399}",
-"\xE1\xBE\xA3" => "\x{1F6B}\x{0399}",
-"\xE1\xBE\xA4" => "\x{1F6C}\x{0399}",
-"\xE1\xBE\xA5" => "\x{1F6D}\x{0399}",
-"\xE1\xBE\xA6" => "\x{1F6E}\x{0399}",
-"\xE1\xBE\xA7" => "\x{1F6F}\x{0399}",
-"\xE1\xBE\xA8" => "\x{1F68}\x{0399}",
-"\xE1\xBE\xA9" => "\x{1F69}\x{0399}",
-"\xE1\xBE\xAA" => "\x{1F6A}\x{0399}",
-"\xE1\xBE\xAB" => "\x{1F6B}\x{0399}",
-"\xE1\xBE\xAC" => "\x{1F6C}\x{0399}",
-"\xE1\xBE\xAD" => "\x{1F6D}\x{0399}",
-"\xE1\xBE\xAE" => "\x{1F6E}\x{0399}",
-"\xE1\xBE\xAF" => "\x{1F6F}\x{0399}",
-"\xE1\xBE\xB2" => "\x{1FBA}\x{0399}",
-"\xE1\xBE\xB3" => "\x{0391}\x{0399}",
-"\xE1\xBE\xB4" => "\x{0386}\x{0399}",
-"\xE1\xBE\xB6" => "\x{0391}\x{0342}",
-"\xE1\xBE\xB7" => "\x{0391}\x{0342}\x{0399}",
-"\xE1\xBE\xBC" => "\x{0391}\x{0399}",
-"\xE1\xBF\x82" => "\x{1FCA}\x{0399}",
-"\xE1\xBF\x83" => "\x{0397}\x{0399}",
-"\xE1\xBF\x84" => "\x{0389}\x{0399}",
-"\xE1\xBF\x86" => "\x{0397}\x{0342}",
-"\xE1\xBF\x87" => "\x{0397}\x{0342}\x{0399}",
-"\xE1\xBF\x8C" => "\x{0397}\x{0399}",
-"\xE1\xBF\x92" => "\x{0399}\x{0308}\x{0300}",
-"\xE1\xBF\x93" => "\x{0399}\x{0308}\x{0301}",
-"\xE1\xBF\x96" => "\x{0399}\x{0342}",
-"\xE1\xBF\x97" => "\x{0399}\x{0308}\x{0342}",
-"\xE1\xBF\xA2" => "\x{03A5}\x{0308}\x{0300}",
-"\xE1\xBF\xA3" => "\x{03A5}\x{0308}\x{0301}",
-"\xE1\xBF\xA4" => "\x{03A1}\x{0313}",
-"\xE1\xBF\xA6" => "\x{03A5}\x{0342}",
-"\xE1\xBF\xA7" => "\x{03A5}\x{0308}\x{0342}",
-"\xE1\xBF\xB2" => "\x{1FFA}\x{0399}",
-"\xE1\xBF\xB3" => "\x{03A9}\x{0399}",
-"\xE1\xBF\xB4" => "\x{038F}\x{0399}",
-"\xE1\xBF\xB6" => "\x{03A9}\x{0342}",
-"\xE1\xBF\xB7" => "\x{03A9}\x{0342}\x{0399}",
-"\xE1\xBF\xBC" => "\x{03A9}\x{0399}",
-"\xEF\xAC\x80" => "\x{0046}\x{0046}",
-"\xEF\xAC\x81" => "\x{0046}\x{0049}",
-"\xEF\xAC\x82" => "\x{0046}\x{004C}",
-"\xEF\xAC\x83" => "\x{0046}\x{0046}\x{0049}",
-"\xEF\xAC\x84" => "\x{0046}\x{0046}\x{004C}",
-"\xEF\xAC\x85" => "\x{0053}\x{0054}",
-"\xEF\xAC\x86" => "\x{0053}\x{0054}",
-"\xEF\xAC\x93" => "\x{0544}\x{0546}",
-"\xEF\xAC\x94" => "\x{0544}\x{0535}",
-"\xEF\xAC\x95" => "\x{0544}\x{053B}",
-"\xEF\xAC\x96" => "\x{054E}\x{0546}",
-"\xEF\xAC\x97" => "\x{0544}\x{053D}",
-);
-
-return <<'END';
-0061 0041
-0062 0042
-0063 0043
-0064 0044
-0065 0045
-0066 0046
-0067 0047
-0068 0048
-0069 0049
-006A 004A
-006B 004B
-006C 004C
-006D 004D
-006E 004E
-006F 004F
-0070 0050
-0071 0051
-0072 0052
-0073 0053
-0074 0054
-0075 0055
-0076 0056
-0077 0057
-0078 0058
-0079 0059
-007A 005A
-00B5 039C
-00E0 00C0
-00E1 00C1
-00E2 00C2
-00E3 00C3
-00E4 00C4
-00E5 00C5
-00E6 00C6
-00E7 00C7
-00E8 00C8
-00E9 00C9
-00EA 00CA
-00EB 00CB
-00EC 00CC
-00ED 00CD
-00EE 00CE
-00EF 00CF
-00F0 00D0
-00F1 00D1
-00F2 00D2
-00F3 00D3
-00F4 00D4
-00F5 00D5
-00F6 00D6
-00F8 00D8
-00F9 00D9
-00FA 00DA
-00FB 00DB
-00FC 00DC
-00FD 00DD
-00FE 00DE
-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
-019A 023D
-019E 0220
-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
-023C 023B
-0253 0181
-0254 0186
-0256 0189
-0257 018A
-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 01B1
-028B 01B2
-0292 01B7
-0294 0241
-0345 0399
-03AC 0386
-03AD 0388
-03AE 0389
-03AF 038A
-03B1 0391
-03B2 0392
-03B3 0393
-03B4 0394
-03B5 0395
-03B6 0396
-03B7 0397
-03B8 0398
-03B9 0399
-03BA 039A
-03BB 039B
-03BC 039C
-03BD 039D
-03BE 039E
-03BF 039F
-03C0 03A0
-03C1 03A1
-03C2 03A3
-03C3 03A3
-03C4 03A4
-03C5 03A5
-03C6 03A6
-03C7 03A7
-03C8 03A8
-03C9 03A9
-03CA 03AA
-03CB 03AB
-03CC 038C
-03CD 038E
-03CE 038F
-03D0 0392
-03D1 0398
-03D5 03A6
-03D6 03A0
-03D9 03D8
-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 03F9
-03F5 0395
-03F8 03F7
-03FB 03FA
-0430 0410
-0431 0411
-0432 0412
-0433 0413
-0434 0414
-0435 0415
-0436 0416
-0437 0417
-0438 0418
-0439 0419
-043A 041A
-043B 041B
-043C 041C
-043D 041D
-043E 041E
-043F 041F
-0440 0420
-0441 0421
-0442 0422
-0443 0423
-0444 0424
-0445 0425
-0446 0426
-0447 0427
-0448 0428
-0449 0429
-044A 042A
-044B 042B
-044C 042C
-044D 042D
-044E 042E
-044F 042F
-0450 0400
-0451 0401
-0452 0402
-0453 0403
-0454 0404
-0455 0405
-0456 0406
-0457 0407
-0458 0408
-0459 0409
-045A 040A
-045B 040B
-045C 040C
-045D 040D
-045E 040E
-045F 040F
-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
-048B 048A
-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
-04C6 04C5
-04C8 04C7
-04CA 04C9
-04CC 04CB
-04CE 04CD
-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
-04F7 04F6
-04F9 04F8
-0501 0500
-0503 0502
-0505 0504
-0507 0506
-0509 0508
-050B 050A
-050D 050C
-050F 050E
-0561 0531
-0562 0532
-0563 0533
-0564 0534
-0565 0535
-0566 0536
-0567 0537
-0568 0538
-0569 0539
-056A 053A
-056B 053B
-056C 053C
-056D 053D
-056E 053E
-056F 053F
-0570 0540
-0571 0541
-0572 0542
-0573 0543
-0574 0544
-0575 0545
-0576 0546
-0577 0547
-0578 0548
-0579 0549
-057A 054A
-057B 054B
-057C 054C
-057D 054D
-057E 054E
-057F 054F
-0580 0550
-0581 0551
-0582 0552
-0583 0553
-0584 0554
-0585 0555
-0586 0556
-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 1F08
-1F01 1F09
-1F02 1F0A
-1F03 1F0B
-1F04 1F0C
-1F05 1F0D
-1F06 1F0E
-1F07 1F0F
-1F10 1F18
-1F11 1F19
-1F12 1F1A
-1F13 1F1B
-1F14 1F1C
-1F15 1F1D
-1F20 1F28
-1F21 1F29
-1F22 1F2A
-1F23 1F2B
-1F24 1F2C
-1F25 1F2D
-1F26 1F2E
-1F27 1F2F
-1F30 1F38
-1F31 1F39
-1F32 1F3A
-1F33 1F3B
-1F34 1F3C
-1F35 1F3D
-1F36 1F3E
-1F37 1F3F
-1F40 1F48
-1F41 1F49
-1F42 1F4A
-1F43 1F4B
-1F44 1F4C
-1F45 1F4D
-1F51 1F59
-1F53 1F5B
-1F55 1F5D
-1F57 1F5F
-1F60 1F68
-1F61 1F69
-1F62 1F6A
-1F63 1F6B
-1F64 1F6C
-1F65 1F6D
-1F66 1F6E
-1F67 1F6F
-1F70 1FBA
-1F71 1FBB
-1F72 1FC8
-1F73 1FC9
-1F74 1FCA
-1F75 1FCB
-1F76 1FDA
-1F77 1FDB
-1F78 1FF8
-1F79 1FF9
-1F7A 1FEA
-1F7B 1FEB
-1F7C 1FFA
-1F7D 1FFB
-1FB0 1FB8
-1FB1 1FB9
-1FBE 0399
-1FD0 1FD8
-1FD1 1FD9
-1FE0 1FE8
-1FE1 1FE9
-1FE5 1FEC
-2170 2160
-2171 2161
-2172 2162
-2173 2163
-2174 2164
-2175 2165
-2176 2166
-2177 2167
-2178 2168
-2179 2169
-217A 216A
-217B 216B
-217C 216C
-217D 216D
-217E 216E
-217F 216F
-24D0 24B6
-24D1 24B7
-24D2 24B8
-24D3 24B9
-24D4 24BA
-24D5 24BB
-24D6 24BC
-24D7 24BD
-24D8 24BE
-24D9 24BF
-24DA 24C0
-24DB 24C1
-24DC 24C2
-24DD 24C3
-24DE 24C4
-24DF 24C5
-24E0 24C6
-24E1 24C7
-24E2 24C8
-24E3 24C9
-24E4 24CA
-24E5 24CB
-24E6 24CC
-24E7 24CD
-24E8 24CE
-24E9 24CF
-2C30 2C00
-2C31 2C01
-2C32 2C02
-2C33 2C03
-2C34 2C04
-2C35 2C05
-2C36 2C06
-2C37 2C07
-2C38 2C08
-2C39 2C09
-2C3A 2C0A
-2C3B 2C0B
-2C3C 2C0C
-2C3D 2C0D
-2C3E 2C0E
-2C3F 2C0F
-2C40 2C10
-2C41 2C11
-2C42 2C12
-2C43 2C13
-2C44 2C14
-2C45 2C15
-2C46 2C16
-2C47 2C17
-2C48 2C18
-2C49 2C19
-2C4A 2C1A
-2C4B 2C1B
-2C4C 2C1C
-2C4D 2C1D
-2C4E 2C1E
-2C4F 2C1F
-2C50 2C20
-2C51 2C21
-2C52 2C22
-2C53 2C23
-2C54 2C24
-2C55 2C25
-2C56 2C26
-2C57 2C27
-2C58 2C28
-2C59 2C29
-2C5A 2C2A
-2C5B 2C2B
-2C5C 2C2C
-2C5D 2C2D
-2C5E 2C2E
-2C81 2C80
-2C83 2C82
-2C85 2C84
-2C87 2C86
-2C89 2C88
-2C8B 2C8A
-2C8D 2C8C
-2C8F 2C8E
-2C91 2C90
-2C93 2C92
-2C95 2C94
-2C97 2C96
-2C99 2C98
-2C9B 2C9A
-2C9D 2C9C
-2C9F 2C9E
-2CA1 2CA0
-2CA3 2CA2
-2CA5 2CA4
-2CA7 2CA6
-2CA9 2CA8
-2CAB 2CAA
-2CAD 2CAC
-2CAF 2CAE
-2CB1 2CB0
-2CB3 2CB2
-2CB5 2CB4
-2CB7 2CB6
-2CB9 2CB8
-2CBB 2CBA
-2CBD 2CBC
-2CBF 2CBE
-2CC1 2CC0
-2CC3 2CC2
-2CC5 2CC4
-2CC7 2CC6
-2CC9 2CC8
-2CCB 2CCA
-2CCD 2CCC
-2CCF 2CCE
-2CD1 2CD0
-2CD3 2CD2
-2CD5 2CD4
-2CD7 2CD6
-2CD9 2CD8
-2CDB 2CDA
-2CDD 2CDC
-2CDF 2CDE
-2CE1 2CE0
-2CE3 2CE2
-2D00 10A0
-2D01 10A1
-2D02 10A2
-2D03 10A3
-2D04 10A4
-2D05 10A5
-2D06 10A6
-2D07 10A7
-2D08 10A8
-2D09 10A9
-2D0A 10AA
-2D0B 10AB
-2D0C 10AC
-2D0D 10AD
-2D0E 10AE
-2D0F 10AF
-2D10 10B0
-2D11 10B1
-2D12 10B2
-2D13 10B3
-2D14 10B4
-2D15 10B5
-2D16 10B6
-2D17 10B7
-2D18 10B8
-2D19 10B9
-2D1A 10BA
-2D1B 10BB
-2D1C 10BC
-2D1D 10BD
-2D1E 10BE
-2D1F 10BF
-2D20 10C0
-2D21 10C1
-2D22 10C2
-2D23 10C3
-2D24 10C4
-2D25 10C5
-FF41 FF21
-FF42 FF22
-FF43 FF23
-FF44 FF24
-FF45 FF25
-FF46 FF26
-FF47 FF27
-FF48 FF28
-FF49 FF29
-FF4A FF2A
-FF4B FF2B
-FF4C FF2C
-FF4D FF2D
-FF4E FF2E
-FF4F FF2F
-FF50 FF30
-FF51 FF31
-FF52 FF32
-FF53 FF33
-FF54 FF34
-FF55 FF35
-FF56 FF36
-FF57 FF37
-FF58 FF38
-FF59 FF39
-FF5A FF3A
-10428 10400
-10429 10401
-1042A 10402
-1042B 10403
-1042C 10404
-1042D 10405
-1042E 10406
-1042F 10407
-10430 10408
-10431 10409
-10432 1040A
-10433 1040B
-10434 1040C
-10435 1040D
-10436 1040E
-10437 1040F
-10438 10410
-10439 10411
-1043A 10412
-1043B 10413
-1043C 10414
-1043D 10415
-1043E 10416
-1043F 10417
-10440 10418
-10441 10419
-10442 1041A
-10443 1041B
-10444 1041C
-10445 1041D
-10446 1041E
-10447 1041F
-10448 10420
-10449 10421
-1044A 10422
-1044B 10423
-1044C 10424
-1044D 10425
-1044E 10426
-1044F 10427
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/UnicodeData.txt b/Master/tlpkg/tlperl/lib/unicore/UnicodeData.txt
deleted file mode 100644
index f314186b29c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/UnicodeData.txt
+++ /dev/null
@@ -1,16351 +0,0 @@
-0000;<control>;Cc;0;BN;;;;;N;NULL;;;;
-0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;;
-0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;;
-0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;;
-0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;;
-0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;;
-0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;;
-0007;<control>;Cc;0;BN;;;;;N;BELL;;;;
-0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;;
-0009;<control>;Cc;0;S;;;;;N;CHARACTER TABULATION;;;;
-000A;<control>;Cc;0;B;;;;;N;LINE FEED (LF);;;;
-000B;<control>;Cc;0;S;;;;;N;LINE TABULATION;;;;
-000C;<control>;Cc;0;WS;;;;;N;FORM FEED (FF);;;;
-000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;;
-000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;;
-000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;;
-0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;;
-0011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;;
-0012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;;
-0013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;;
-0014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;;
-0015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
-0016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;;
-0017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;;
-0018;<control>;Cc;0;BN;;;;;N;CANCEL;;;;
-0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;;
-001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;;
-001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;;
-001C;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;;
-001D;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;;
-001E;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;;
-001F;<control>;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;;
-0020;SPACE;Zs;0;WS;;;;;N;;;;;
-0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
-0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
-0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
-0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
-0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
-0026;AMPERSAND;Po;0;ON;;;;;N;;;;;
-0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
-0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
-0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
-002A;ASTERISK;Po;0;ON;;;;;N;;;;;
-002B;PLUS SIGN;Sm;0;ES;;;;;N;;;;;
-002C;COMMA;Po;0;CS;;;;;N;;;;;
-002D;HYPHEN-MINUS;Pd;0;ES;;;;;N;;;;;
-002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
-002F;SOLIDUS;Po;0;CS;;;;;N;SLASH;;;;
-0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
-0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
-0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
-0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
-0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
-0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
-0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
-0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
-0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
-0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
-003A;COLON;Po;0;CS;;;;;N;;;;;
-003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
-003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
-003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
-003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
-003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
-0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
-0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
-0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
-0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
-0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
-0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
-0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
-0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
-0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
-0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
-004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
-004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
-004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
-004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
-004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
-004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
-0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
-0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
-0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
-0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
-0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
-0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
-0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
-0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
-0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
-0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
-005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
-005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
-005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
-005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
-005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;;
-005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;;
-0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;;
-0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
-0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
-0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
-0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
-0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
-0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
-0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
-0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
-0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
-006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
-006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
-006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
-006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
-006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
-006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
-0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
-0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
-0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
-0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
-0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
-0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
-0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
-0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
-0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
-0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
-007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
-007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
-007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
-007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
-007E;TILDE;Sm;0;ON;;;;;N;;;;;
-007F;<control>;Cc;0;BN;;;;;N;DELETE;;;;
-0080;<control>;Cc;0;BN;;;;;N;;;;;
-0081;<control>;Cc;0;BN;;;;;N;;;;;
-0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;;
-0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;;
-0084;<control>;Cc;0;BN;;;;;N;;;;;
-0085;<control>;Cc;0;B;;;;;N;NEXT LINE (NEL);;;;
-0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;;
-0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;;
-0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;;
-0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;;
-008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;;
-008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;;
-008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;;
-008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;;
-008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;;
-008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;;
-0090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;;
-0091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;;
-0092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;;
-0093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;;
-0094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;;
-0095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;;
-0096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;;
-0097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;;
-0098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;;
-0099;<control>;Cc;0;BN;;;;;N;;;;;
-009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;;
-009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;;
-009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;;
-009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;;
-009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;;
-009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;;
-00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
-00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
-00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
-00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
-00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
-00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
-00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
-00A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
-00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
-00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
-00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;;
-00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;;
-00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
-00AD;SOFT HYPHEN;Cf;0;BN;;;;;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;N;SUPERSCRIPT DIGIT TWO;;;;
-00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;;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;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;;023D;;023D
-019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
-019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
-019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
-019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220
-019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275;
-01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
-01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
-01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;gha;;01A3;
-01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;gha;01A2;;01A2
-01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5;
-01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4
-01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;*;;0280;
-01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8;
-01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7
-01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283;
-01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;;
-01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;;
-01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD;
-01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC
-01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288;
-01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
-01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
-01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A;
-01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B;
-01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4;
-01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3
-01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6;
-01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5
-01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292;
-01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9;
-01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8
-01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;;
-01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;;
-01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD;
-01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC
-01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
-01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7
-01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
-01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
-01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
-01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
-01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5
-01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;01C5
-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;01C8
-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;01CB
-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;01F2
-01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2
-01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5;
-01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4
-01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195;
-01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF;
-01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9;
-01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8
-01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB;
-01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA
-01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;ash *;;01FD;
-01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;ash *;01FC;;01FC
-01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF;
-01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE
-0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201;
-0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200
-0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203;
-0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202
-0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205;
-0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204
-0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207;
-0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206
-0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209;
-0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208
-020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B;
-020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A
-020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D;
-020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C
-020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F;
-020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E
-0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211;
-0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210
-0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213;
-0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212
-0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215;
-0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214
-0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217;
-0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216
-0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219;
-0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218
-021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B;
-021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A
-021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D;
-021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C
-021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F;
-021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E
-0220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E;
-0221;LATIN SMALL LETTER D WITH CURL;Ll;0;L;;;;;N;;;;;
-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
-0234;LATIN SMALL LETTER L WITH CURL;Ll;0;L;;;;;N;;;;;
-0235;LATIN SMALL LETTER N WITH CURL;Ll;0;L;;;;;N;;;;;
-0236;LATIN SMALL LETTER T WITH CURL;Ll;0;L;;;;;N;;;;;
-0237;LATIN SMALL LETTER DOTLESS J;Ll;0;L;;;;;N;;;;;
-0238;LATIN SMALL LETTER DB DIGRAPH;Ll;0;L;;;;;N;;;;;
-0239;LATIN SMALL LETTER QP DIGRAPH;Ll;0;L;;;;;N;;;;;
-023A;LATIN CAPITAL LETTER A WITH STROKE;Lu;0;L;;;;;N;;;;;
-023B;LATIN CAPITAL LETTER C WITH STROKE;Lu;0;L;;;;;N;;;;023C;
-023C;LATIN SMALL LETTER C WITH STROKE;Ll;0;L;;;;;N;;;023B;;023B
-023D;LATIN CAPITAL LETTER L WITH BAR;Lu;0;L;;;;;N;;;;019A;
-023E;LATIN CAPITAL LETTER T WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;;
-023F;LATIN SMALL LETTER S WITH SWASH TAIL;Ll;0;L;;;;;N;;;;;
-0240;LATIN SMALL LETTER Z WITH SWASH TAIL;Ll;0;L;;;;;N;;;;;
-0241;LATIN CAPITAL LETTER GLOTTAL STOP;Lu;0;L;;;;;N;;;;0294;
-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;;;0241;;0241
-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;;;;;
-02AE;LATIN SMALL LETTER TURNED H WITH FISHHOOK;Ll;0;L;;;;;N;;;;;
-02AF;LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL;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;Lm;0;ON;;;;;N;;;;;
-02BA;MODIFIER LETTER DOUBLE PRIME;Lm;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;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
-02C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
-02C8;MODIFIER LETTER VERTICAL LINE;Lm;0;ON;;;;;N;;;;;
-02C9;MODIFIER LETTER MACRON;Lm;0;ON;;;;;N;;Mandarin Chinese first tone;;;
-02CA;MODIFIER LETTER ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
-02CB;MODIFIER LETTER GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
-02CC;MODIFIER LETTER LOW VERTICAL LINE;Lm;0;ON;;;;;N;;;;;
-02CD;MODIFIER LETTER LOW MACRON;Lm;0;ON;;;;;N;;;;;
-02CE;MODIFIER LETTER LOW GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
-02CF;MODIFIER LETTER LOW ACUTE ACCENT;Lm;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;;;;;
-02EF;MODIFIER LETTER LOW DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-02F0;MODIFIER LETTER LOW UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-02F1;MODIFIER LETTER LOW LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-02F2;MODIFIER LETTER LOW RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-02F3;MODIFIER LETTER LOW RING;Sk;0;ON;;;;;N;;;;;
-02F4;MODIFIER LETTER MIDDLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;
-02F5;MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;
-02F6;MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT;Sk;0;ON;;;;;N;;;;;
-02F7;MODIFIER LETTER LOW TILDE;Sk;0;ON;;;;;N;;;;;
-02F8;MODIFIER LETTER RAISED COLON;Sk;0;ON;;;;;N;;;;;
-02F9;MODIFIER LETTER BEGIN HIGH TONE;Sk;0;ON;;;;;N;;;;;
-02FA;MODIFIER LETTER END HIGH TONE;Sk;0;ON;;;;;N;;;;;
-02FB;MODIFIER LETTER BEGIN LOW TONE;Sk;0;ON;;;;;N;;;;;
-02FC;MODIFIER LETTER END LOW TONE;Sk;0;ON;;;;;N;;;;;
-02FD;MODIFIER LETTER SHELF;Sk;0;ON;;;;;N;;;;;
-02FE;MODIFIER LETTER OPEN SHELF;Sk;0;ON;;;;;N;;;;;
-02FF;MODIFIER LETTER LOW LEFT ARROW;Sk;0;ON;;;;;N;;;;;
-0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;;
-0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia, Tonos;;;
-0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;;
-0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;;
-0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;;
-0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;;
-0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;Vrachy;;;
-0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;;
-0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;Dialytika;;;
-0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;;
-030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;;
-030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
-030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;;
-030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;;
-030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
-030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
-0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;;
-0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;;
-0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
-0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;Psili;;;
-0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;;
-0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
-0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;;
-0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;;
-0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
-0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
-031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
-031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;;
-031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
-031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;;
-031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
-031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
-0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
-0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
-0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
-0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;;
-0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
-0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;;
-0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;;
-0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;;
-0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;;
-0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
-032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;;
-032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
-032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;;
-032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
-032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;;
-032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
-0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;;
-0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;;
-0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;;
-0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
-0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;;
-0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
-0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
-0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
-0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
-0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
-033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
-033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;;
-033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;;
-033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;;
-033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;;
-033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
-0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;;
-0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;;
-0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;;
-0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;;
-0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
-0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399
-0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
-0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;;
-0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;;
-0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;;
-034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;;
-034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;;
-034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;;
-034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
-034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
-034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;;
-0350;COMBINING RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;;
-0351;COMBINING LEFT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;;
-0352;COMBINING FERMATA;Mn;230;NSM;;;;;N;;;;;
-0353;COMBINING X BELOW;Mn;220;NSM;;;;;N;;;;;
-0354;COMBINING LEFT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
-0355;COMBINING RIGHT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
-0356;COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
-0357;COMBINING RIGHT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;;
-0358;COMBINING DOT ABOVE RIGHT;Mn;232;NSM;;;;;N;;;;;
-0359;COMBINING ASTERISK BELOW;Mn;220;NSM;;;;;N;;;;;
-035A;COMBINING DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;;
-035B;COMBINING ZIGZAG ABOVE;Mn;230;NSM;;;;;N;;;;;
-035C;COMBINING DOUBLE BREVE BELOW;Mn;233;NSM;;;;;N;;;;;
-035D;COMBINING DOUBLE BREVE;Mn;234;NSM;;;;;N;;;;;
-035E;COMBINING DOUBLE MACRON;Mn;234;NSM;;;;;N;;;;;
-035F;COMBINING DOUBLE MACRON BELOW;Mn;233;NSM;;;;;N;;;;;
-0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;;
-0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;;
-0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;;
-0363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;;
-0364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;;
-0365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;;
-0366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;;
-0367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;;
-0368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;;
-0369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;;
-036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;;
-036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;;
-036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;;
-036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;;
-036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;;
-036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;;
-0374;GREEK NUMERAL SIGN;Sk;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
-0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;;
-037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
-037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;;
-0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;;
-0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
-0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
-0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;;
-0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
-0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
-038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
-038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
-038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
-038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
-0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
-0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
-0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
-0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
-0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
-0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
-0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
-0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
-0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
-0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
-039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
-039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
-039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
-039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
-039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
-039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
-03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
-03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
-03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
-03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
-03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
-03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
-03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
-03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
-03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
-03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
-03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
-03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
-03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
-03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
-03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
-03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
-03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
-03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
-03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
-03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
-03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
-03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
-03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
-03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
-03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
-03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
-03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
-03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
-03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
-03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
-03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
-03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
-03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
-03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
-03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
-03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
-03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
-03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
-03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
-03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
-03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
-03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
-03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
-03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
-03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
-03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
-03D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
-03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
-03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
-03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;;
-03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;;
-03D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
-03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
-03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;;;
-03D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;*;;03D9;
-03D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;*;03D8;;03D8
-03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB;
-03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA
-03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD;
-03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC
-03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF;
-03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE
-03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1;
-03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0
-03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3;
-03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2
-03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5;
-03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4
-03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7;
-03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6
-03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9;
-03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8
-03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB;
-03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA
-03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED;
-03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC
-03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF;
-03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE
-03F0;GREEK KAPPA SYMBOL;Ll;0;L;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
-03F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
-03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03F9;;03F9
-03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;;
-03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8;
-03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L;<compat> 03B5;;;;N;;;0395;;0395
-03F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;;
-03F7;GREEK CAPITAL LETTER SHO;Lu;0;L;;;;;N;;;;03F8;
-03F8;GREEK SMALL LETTER SHO;Ll;0;L;;;;;N;;;03F7;;03F7
-03F9;GREEK CAPITAL LUNATE SIGMA SYMBOL;Lu;0;L;<compat> 03A3;;;;N;;;;03F2;
-03FA;GREEK CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;03FB;
-03FB;GREEK SMALL LETTER SAN;Ll;0;L;;;;;N;;;03FA;;03FA
-03FC;GREEK RHO WITH STROKE SYMBOL;Ll;0;L;;;;;N;;;;;
-03FD;GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;;
-03FE;GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;;
-03FF;GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL;Lu;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;;;;;
-048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B;
-048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A
-048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D;
-048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C
-048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F;
-048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E
-0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
-0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
-0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493;
-0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492
-0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495;
-0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494
-0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497;
-0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496
-0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499;
-0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498
-049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B;
-049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A
-049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D;
-049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C
-049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F;
-049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E
-04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1;
-04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0
-04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3;
-04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2
-04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5;
-04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4
-04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7;
-04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6
-04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9;
-04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8
-04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB;
-04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA
-04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD;
-04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC
-04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF;
-04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE
-04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1;
-04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0
-04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3;
-04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2
-04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5;
-04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4
-04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7;
-04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6
-04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9;
-04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8
-04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB;
-04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA
-04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD;
-04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC
-04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF;
-04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE
-04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;;
-04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2;
-04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1
-04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4;
-04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3
-04C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6;
-04C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5
-04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8;
-04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7
-04C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA;
-04CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9
-04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC;
-04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB
-04CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE;
-04CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD
-04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1;
-04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0
-04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3;
-04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2
-04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5;
-04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4
-04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7;
-04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6
-04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9;
-04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8
-04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB;
-04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA
-04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD;
-04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC
-04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF;
-04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE
-04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1;
-04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0
-04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3;
-04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2
-04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5;
-04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4
-04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7;
-04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6
-04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9;
-04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8
-04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB;
-04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA
-04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED;
-04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC
-04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF;
-04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE
-04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1;
-04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0
-04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3;
-04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2
-04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5;
-04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4
-04F6;CYRILLIC CAPITAL LETTER GHE WITH DESCENDER;Lu;0;L;;;;;N;;;;04F7;
-04F7;CYRILLIC SMALL LETTER GHE WITH DESCENDER;Ll;0;L;;;;;N;;;04F6;;04F6
-04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9;
-04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8
-0500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501;
-0501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500
-0502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503;
-0503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502
-0504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505;
-0505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504
-0506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507;
-0507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506
-0508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509;
-0509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508
-050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B;
-050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A
-050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D;
-050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C
-050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F;
-050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E
-0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561;
-0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562;
-0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563;
-0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564;
-0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565;
-0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566;
-0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567;
-0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568;
-0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569;
-053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A;
-053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B;
-053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C;
-053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D;
-053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E;
-053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F;
-0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570;
-0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571;
-0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572;
-0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573;
-0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574;
-0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575;
-0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576;
-0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577;
-0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578;
-0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579;
-054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A;
-054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B;
-054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C;
-054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D;
-054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E;
-054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F;
-0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580;
-0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581;
-0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582;
-0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583;
-0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584;
-0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585;
-0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586;
-0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
-055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
-055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;;
-055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;;
-055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
-055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
-055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
-0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
-0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
-0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
-0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534
-0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535
-0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536
-0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537
-0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538
-0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539
-056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A
-056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B
-056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C
-056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D
-056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E
-056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F
-0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540
-0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541
-0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542
-0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543
-0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544
-0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545
-0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546
-0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547
-0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548
-0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549
-057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A
-057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B
-057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C
-057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D
-057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E
-057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F
-0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550
-0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551
-0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552
-0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553
-0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554
-0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
-0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
-0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
-0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
-058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;;
-0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;;
-0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;;
-0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;;
-0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;;
-0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;;
-0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;*;;;
-0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;;
-0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;*;;;
-0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;;
-059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;;
-059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;;
-059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;;
-059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;;
-059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;;
-059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;;
-05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;;
-05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;;
-05A2;HEBREW ACCENT ATNAH HAFUKH;Mn;220;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;;;;;
-05C5;HEBREW MARK LOWER DOT;Mn;220;NSM;;;;;N;;;;;
-05C6;HEBREW PUNCTUATION NUN HAFUKHA;Po;0;R;;;;;N;;;;;
-05C7;HEBREW POINT QAMATS QATAN;Mn;18;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;;;;;
-0600;ARABIC NUMBER SIGN;Cf;0;AL;;;;;N;;;;;
-0601;ARABIC SIGN SANAH;Cf;0;AL;;;;;N;;;;;
-0602;ARABIC FOOTNOTE MARKER;Cf;0;AL;;;;;N;;;;;
-0603;ARABIC SIGN SAFHA;Cf;0;AL;;;;;N;;;;;
-060B;AFGHANI SIGN;Sc;0;AL;;;;;N;;;;;
-060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
-060D;ARABIC DATE SEPARATOR;Po;0;AL;;;;;N;;;;;
-060E;ARABIC POETIC VERSE SIGN;So;0;ON;;;;;N;;;;;
-060F;ARABIC SIGN MISRA;So;0;ON;;;;;N;;;;;
-0610;ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;Mn;230;NSM;;;;;N;;;;;
-0611;ARABIC SIGN ALAYHE ASSALLAM;Mn;230;NSM;;;;;N;;;;;
-0612;ARABIC SIGN RAHMATULLAH ALAYHE;Mn;230;NSM;;;;;N;;;;;
-0613;ARABIC SIGN RADI ALLAHOU ANHU;Mn;230;NSM;;;;;N;;;;;
-0614;ARABIC SIGN TAKHALLUS;Mn;230;NSM;;;;;N;;;;;
-0615;ARABIC SMALL HIGH TAH;Mn;230;NSM;;;;;N;;;;;
-061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
-061E;ARABIC TRIPLE DOT PUNCTUATION MARK;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;;;;;
-0656;ARABIC SUBSCRIPT ALEF;Mn;220;NSM;;;;;N;;;;;
-0657;ARABIC INVERTED DAMMA;Mn;230;NSM;;;;;N;;;;;
-0658;ARABIC MARK NOON GHUNNA;Mn;230;NSM;;;;;N;;;;;
-0659;ARABIC ZWARAKAY;Mn;230;NSM;;;;;N;;;;;
-065A;ARABIC VOWEL SIGN SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;;
-065B;ARABIC VOWEL SIGN INVERTED SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;;
-065C;ARABIC VOWEL SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;;
-065D;ARABIC REVERSED DAMMA;Mn;230;NSM;;;;;N;;;;;
-065E;ARABIC FATHA WITH TWO DOTS;Mn;230;NSM;;;;;N;;;;;
-0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
-0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
-0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
-0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
-0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
-0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
-0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
-0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
-0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
-0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
-066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
-066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
-066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;;
-066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;;
-066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;;
-066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;;
-0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;;
-0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
-0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
-0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
-0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
-0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
-0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
-0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
-0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
-0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
-067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
-067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
-067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;;
-067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
-067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
-067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
-0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
-0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
-0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
-0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
-0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
-0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
-0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
-0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
-0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
-0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;;
-068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
-068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
-068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
-068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
-068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
-068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
-0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
-0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
-0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;;
-0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
-0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
-0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
-0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
-0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
-0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
-069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
-069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
-069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;;
-06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
-06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
-06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
-06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
-06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
-06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;;
-06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;;
-06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;;
-06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
-06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
-06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
-06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;;
-06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;;
-06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
-06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
-06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
-06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;;
-06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
-06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
-06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
-06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
-06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;;
-06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;;
-06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
-06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;;
-06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
-06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
-06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;;
-06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
-06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
-06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
-06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
-06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
-06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
-06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;;
-06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
-06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
-06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;*;;;
-06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
-06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;;
-06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
-06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;;
-06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;;
-06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
-06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
-06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;;
-06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;;
-06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;;
-06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;;
-06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;;
-06DD;ARABIC END OF AYAH;Cf;0;AL;;;;;N;;;;;
-06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;;
-06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;;
-06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;;
-06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;;
-06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;;
-06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;;
-06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;;
-06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;;
-06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;;
-06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;;
-06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;;
-06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;
-06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;;
-06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;;
-06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;;
-06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;;
-06EE;ARABIC LETTER DAL WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
-06EF;ARABIC LETTER REH WITH INVERTED V;Lo;0;AL;;;;;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;;;;;
-06FF;ARABIC LETTER HEH WITH INVERTED V;Lo;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;;;;;
-072D;SYRIAC LETTER PERSIAN BHETH;Lo;0;AL;;;;;N;;;;;
-072E;SYRIAC LETTER PERSIAN GHAMAL;Lo;0;AL;;;;;N;;;;;
-072F;SYRIAC LETTER PERSIAN DHALATH;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;;;;;
-074D;SYRIAC LETTER SOGDIAN ZHAIN;Lo;0;AL;;;;;N;;;;;
-074E;SYRIAC LETTER SOGDIAN KHAPH;Lo;0;AL;;;;;N;;;;;
-074F;SYRIAC LETTER SOGDIAN FE;Lo;0;AL;;;;;N;;;;;
-0750;ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW;Lo;0;AL;;;;;N;;;;;
-0751;ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-0752;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
-0753;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-0754;ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-0755;ARABIC LETTER BEH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;;
-0756;ARABIC LETTER BEH WITH SMALL V;Lo;0;AL;;;;;N;;;;;
-0757;ARABIC LETTER HAH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-0758;ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
-0759;ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
-075A;ARABIC LETTER DAL WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;;
-075B;ARABIC LETTER REH WITH STROKE;Lo;0;AL;;;;;N;;;;;
-075C;ARABIC LETTER SEEN WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-075D;ARABIC LETTER AIN WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-075E;ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE;Lo;0;AL;;;;;N;;;;;
-075F;ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;
-0760;ARABIC LETTER FEH WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
-0761;ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
-0762;ARABIC LETTER KEHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-0763;ARABIC LETTER KEHEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-0764;ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
-0765;ARABIC LETTER MEEM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-0766;ARABIC LETTER MEEM WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
-0767;ARABIC LETTER NOON WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
-0768;ARABIC LETTER NOON WITH SMALL TAH;Lo;0;AL;;;;;N;;;;;
-0769;ARABIC LETTER NOON WITH SMALL V;Lo;0;AL;;;;;N;;;;;
-076A;ARABIC LETTER LAM WITH BAR;Lo;0;AL;;;;;N;;;;;
-076B;ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;
-076C;ARABIC LETTER REH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;;
-076D;ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;
-0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;;
-0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;;
-0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;;
-0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;;
-0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;;
-0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;;
-0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;;
-0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;;
-0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;;
-0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;;
-078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;;
-078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;;
-078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;;
-078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;;
-078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;;
-078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;;
-0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;;
-0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;;
-0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;;
-0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;;
-0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;;
-0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;;
-0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;;
-0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;;
-0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;;
-0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;;
-079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;;
-079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;;
-079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;;
-079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;;
-079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;;
-079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;;
-07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;;
-07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;;
-07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;;
-07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;;
-07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;;
-07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;;
-07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;;
-07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;;
-07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;;
-07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;;
-07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;;
-07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;;
-07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;;
-07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;;
-07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;;
-07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;;
-07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;;
-07B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;;
-0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
-0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
-0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0904;DEVANAGARI LETTER SHORT A;Lo;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;;;;;
-097D;DEVANAGARI LETTER GLOTTAL STOP;Lo;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;;;;;
-09BD;BENGALI SIGN AVAGRAHA;Lo;0;L;;;;;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;;;;;
-09CE;BENGALI LETTER KHANDA TA;Lo;0;L;;;;;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;;;;;
-0A01;GURMUKHI SIGN ADAK BINDI;Mn;0;NSM;;;;;N;;;;;
-0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;;
-0A03;GURMUKHI SIGN VISARGA;Mc;0;L;;;;;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;;;;;
-0A8C;GUJARATI LETTER VOCALIC L;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;;;;;
-0AE1;GUJARATI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-0AE2;GUJARATI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
-0AE3;GUJARATI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;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;;;;;
-0AF1;GUJARATI RUPEE SIGN;Sc;0;ET;;;;;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;;;;;
-0B35;ORIYA LETTER VA;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;;;;;
-0B71;ORIYA LETTER WA;Lo;0;L;;;;;N;;;;;
-0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
-0B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;;
-0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;;
-0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;;
-0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;;
-0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;;
-0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;;
-0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;;
-0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;;
-0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;;
-0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;;
-0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;;
-0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;;
-0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;;
-0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;;
-0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;;
-0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;;
-0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;;
-0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;;
-0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;;
-0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;;
-0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;;
-0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;;
-0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;;
-0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;;
-0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;;
-0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;;
-0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;;
-0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;;
-0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;;
-0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;;
-0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;;
-0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;;
-0BB6;TAMIL LETTER SHA;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;;;;;
-0BE6;TAMIL DIGIT ZERO;Nd;0;L;;0;0;0;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;;;;;
-0BF3;TAMIL DAY SIGN;So;0;ON;;;;;N;;Naal;;;
-0BF4;TAMIL MONTH SIGN;So;0;ON;;;;;N;;Maatham;;;
-0BF5;TAMIL YEAR SIGN;So;0;ON;;;;;N;;Varudam;;;
-0BF6;TAMIL DEBIT SIGN;So;0;ON;;;;;N;;Patru;;;
-0BF7;TAMIL CREDIT SIGN;So;0;ON;;;;;N;;Varavu;;;
-0BF8;TAMIL AS ABOVE SIGN;So;0;ON;;;;;N;;Merpadi;;;
-0BF9;TAMIL RUPEE SIGN;Sc;0;ET;;;;;N;;Rupai;;;
-0BFA;TAMIL NUMBER SIGN;So;0;ON;;;;;N;;Enn;;;
-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;;;;;
-0CBC;KANNADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
-0CBD;KANNADA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
-0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-0CBF;KANNADA VOWEL SIGN I;Mn;0;L;;;;;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;L;;;;;N;;;;;
-0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;;
-0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;;
-0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;;
-0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;;
-0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
-0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
-0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
-0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
-0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
-0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;
-0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;
-0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;
-0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;;
-0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;;
-0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;;
-0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;;
-0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;;
-0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;;
-0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;;
-0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;;
-0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;;
-0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;;
-0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;;
-0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;;
-0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;;
-0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;;
-0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;;
-0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;;
-0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;;
-0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;;
-0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;;
-0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;;
-0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;;
-0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;;
-0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;;
-0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;;
-0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;;
-0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;;
-0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;;
-0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;;
-0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;;
-0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;;
-0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;;
-0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;;
-0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;;
-0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;;
-0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;;
-0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;;
-0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;;
-0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;;
-0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;;
-0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;;
-0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;;
-0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;;
-0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
-0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
-0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
-0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
-0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;;
-0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;
-0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
-0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;;
-0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;;
-0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;;
-0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;;
-0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;;
-0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;;
-0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;;
-0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;;
-0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;;
-0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;;
-0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;;
-0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;;
-0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;;
-0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;;
-0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;;
-0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;;
-0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;;
-0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;;
-0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;;
-0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;;
-0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
-0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
-0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
-0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
-0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
-0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;;
-0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
-0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
-0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
-0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
-0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
-0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;;
-0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;;
-0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
-0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
-0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
-0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
-0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;;
-0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;;
-0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
-0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
-0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
-0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
-0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;;
-0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;;
-0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
-0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
-0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
-0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
-0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;;
-0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;;
-0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;;
-0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;;
-0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;;
-0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;;
-0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;;
-0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;;
-0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;;
-0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;;
-0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;;
-0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;;
-0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;;
-0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;;
-0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;;
-0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;;
-0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;;
-0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;;
-0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
-0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
-0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
-0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;;
-0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;;
-0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;;
-0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;;
-0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;;
-0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;;
-0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;;
-0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
-0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;;
-0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;;
-0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
-0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
-0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
-0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
-0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
-0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
-0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
-0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
-0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
-0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
-0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
-0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
-0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
-0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
-0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
-0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
-0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
-0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
-0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
-0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
-0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
-0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
-0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
-0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
-0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
-0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
-0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
-0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
-0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
-0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
-0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
-0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
-0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
-0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
-0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
-0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
-0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
-0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
-0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
-0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
-0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
-0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
-0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
-0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
-0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
-0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
-0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;;
-0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
-0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
-0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
-0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
-0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;;
-0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;;
-0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;;
-0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;;
-0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;;
-0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;;
-0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
-0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;
-0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
-0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
-0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
-0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;;
-0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;;
-0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;;
-0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;;
-0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;;
-0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;;
-0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;;
-0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;;
-0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;;
-0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;;
-0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;;
-0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;;
-0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;;
-0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
-0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
-0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;
-0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;
-0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;
-0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;
-0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;
-0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;
-0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;
-0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;
-0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;
-0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;
-0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;
-0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;
-0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;
-0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;
-0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;;
-0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;
-0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;
-0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;
-0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;
-0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;
-0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;
-0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;
-0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;
-0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;
-0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;
-0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;
-0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;
-0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;;
-0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
-0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;;
-0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
-0EB3;LAO VOWEL SIGN AM;Lo;0;L;<compat> 0ECD 0EB2;;;;N;;;;;
-0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
-0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
-0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
-0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;;
-0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;;
-0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;;
-0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;;
-0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;
-0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
-0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;;
-0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;;
-0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;
-0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;;
-0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;;
-0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;;
-0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;;
-0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;;
-0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;;
-0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;;
-0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;;
-0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;;
-0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;
-0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;;
-0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;;
-0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;;
-0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;;
-0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;yik go dun ma;;;
-0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;;
-0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;;
-0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;;
-0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;drul shey;;;
-0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;;
-0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;;
-0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;tsek;;;
-0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;tsek tar;;;
-0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;shey;;;
-0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;nyi shey;;;
-0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;;
-0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;;
-0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;rinchen pung shey;;;
-0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;;
-0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;;
-0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;ter tsek;;;
-0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;;
-0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;;
-0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;;
-0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;kyu pa;;;
-0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;dong tsu;;;
-0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;;
-0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;;
-0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;;
-0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;;
-0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;;
-0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;;
-0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;;
-0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;;
-0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;;
-0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;;
-0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;;
-0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;;
-0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;;
-0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;;
-0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;;
-0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;;
-0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;;
-0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;nge zung nyi da;;;
-0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;;
-0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;nge zung gor ta;;;
-0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;;
-0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;tsa tru;;;
-0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;N;;gug ta yun;;;
-0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;N;;gug ta ye;;;
-0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;N;TIBETAN LEFT BRACE;ang kang yun;;;
-0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;N;TIBETAN RIGHT BRACE;ang kang ye;;;
-0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;yar tse;;;
-0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;mar tse;;;
-0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;;
-0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;;
-0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;;
-0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;;
-0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;;
-0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;;
-0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;;
-0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;;
-0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;;
-0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;;
-0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;;
-0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;;
-0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
-0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;;
-0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;;
-0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;;
-0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;;
-0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;;
-0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;;
-0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;;
-0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;;
-0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;;
-0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;;
-0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;;
-0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;;
-0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;;
-0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;;
-0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;;
-0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;;
-0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;;
-0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;;
-0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;;
-0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;;
-0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;*;;;
-0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;;
-0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;;
-0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;;
-0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;;
-0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;;
-0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;;
-0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;;
-0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;*;;;
-0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;;
-0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;;
-0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;;
-0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;;
-0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;;
-0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;;
-0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM;<compat> 0FB2 0F81;;;;N;;;;;
-0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;;
-0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 0FB3 0F81;;;;N;;;;;
-0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;;
-0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;;
-0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;;
-0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;;
-0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;je su nga ro;;;
-0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;nam chey;;;
-0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;;
-0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;;
-0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;nyi da na da;;;
-0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;nan de;;;
-0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;;
-0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;;
-0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;ji ta;;;
-0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;yang ta;;;
-0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;;
-0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;;
-0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;;
-0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;;
-0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;;
-0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;;
-0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;;
-0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;;
-0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;;
-0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;;
-0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;;
-0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;;
-0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;;
-0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;;
-0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;;
-0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;;
-0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;;
-0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;;
-0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;;
-0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;;
-0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;;
-0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;;
-0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;;
-0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;;
-0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;;
-0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;;
-0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;;
-0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;;
-0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;;
-0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;;
-0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;;
-0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;;
-0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;*;;;
-0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;;
-0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;;
-0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;;
-0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;*;;;
-0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;*;;;
-0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;;
-0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;;
-0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;;
-0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;;
-0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;;
-0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;;
-0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;;
-0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;*;;;
-0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;*;;;
-0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;*;;;
-0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;kuruka;;;
-0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;kuruka shi mik chen;;;
-0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;;
-0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;;
-0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;chang tyu;;;
-0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;bub chey;;;
-0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;drilbu;;;
-0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;dorje;;;
-0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;pema den;;;
-0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;dorje gya dram;;;
-0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;phurba;;;
-0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;norbu;;;
-0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;norbu nyi khyi;;;
-0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;norbu sum khyi;;;
-0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;norbu shi khyi;;;
-0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;dena sum;;;
-0FD0;TIBETAN MARK BSKA- SHOG GI MGO RGYAN;Po;0;L;;;;;N;;ka shog gi go gyen;;;
-0FD1;TIBETAN MARK MNYAM YIG GI MGO RGYAN;Po;0;L;;;;;N;;nyam yig gi go gyen;;;
-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;;2D00;
-10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;2D01;
-10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;2D02;
-10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;2D03;
-10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;2D04;
-10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;2D05;
-10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;2D06;
-10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;2D07;
-10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;2D08;
-10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;2D09;
-10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;2D0A;
-10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;2D0B;
-10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;2D0C;
-10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;2D0D;
-10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;2D0E;
-10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;2D0F;
-10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;2D10;
-10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;2D11;
-10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;2D12;
-10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;2D13;
-10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;2D14;
-10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;2D15;
-10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;2D16;
-10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;2D17;
-10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;2D18;
-10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;2D19;
-10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;2D1A;
-10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;2D1B;
-10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;2D1C;
-10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;2D1D;
-10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;2D1E;
-10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;2D1F;
-10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;2D20;
-10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;2D21;
-10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;2D22;
-10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;2D23;
-10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;2D24;
-10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;2D25;
-10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
-10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
-10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
-10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
-10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
-10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
-10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
-10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
-10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
-10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
-10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
-10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
-10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
-10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
-10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
-10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
-10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
-10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
-10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
-10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
-10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
-10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
-10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
-10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
-10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
-10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
-10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
-10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
-10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
-10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
-10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
-10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
-10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
-10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
-10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
-10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
-10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
-10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
-10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
-10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;;
-10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;;
-10F9;GEORGIAN LETTER TURNED GAN;Lo;0;L;;;;;N;;;;;
-10FA;GEORGIAN LETTER AIN;Lo;0;L;;;;;N;;;;;
-10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
-10FC;MODIFIER LETTER GEORGIAN NAR;Lm;0;L;<super> 10DC;;;;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;;;;;
-1207;ETHIOPIC SYLLABLE HOA;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;;;;;
-1247;ETHIOPIC SYLLABLE QOA;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;;;;;
-1287;ETHIOPIC SYLLABLE XOA;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;;;;;
-12AF;ETHIOPIC SYLLABLE KOA;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;;;;;
-12CF;ETHIOPIC SYLLABLE WOA;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;;;;;
-12EF;ETHIOPIC SYLLABLE YOA;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;;;;;
-130F;ETHIOPIC SYLLABLE GOA;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;;;;;
-131F;ETHIOPIC SYLLABLE GGWAA;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;;;;;
-1347;ETHIOPIC SYLLABLE TZOA;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;;;;;
-135F;ETHIOPIC COMBINING GEMINATION MARK;Mn;230;NSM;;;;;N;;;;;
-1360;ETHIOPIC SECTION MARK;So;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;No;0;L;;;1;1;N;;;;;
-136A;ETHIOPIC DIGIT TWO;No;0;L;;;2;2;N;;;;;
-136B;ETHIOPIC DIGIT THREE;No;0;L;;;3;3;N;;;;;
-136C;ETHIOPIC DIGIT FOUR;No;0;L;;;4;4;N;;;;;
-136D;ETHIOPIC DIGIT FIVE;No;0;L;;;5;5;N;;;;;
-136E;ETHIOPIC DIGIT SIX;No;0;L;;;6;6;N;;;;;
-136F;ETHIOPIC DIGIT SEVEN;No;0;L;;;7;7;N;;;;;
-1370;ETHIOPIC DIGIT EIGHT;No;0;L;;;8;8;N;;;;;
-1371;ETHIOPIC DIGIT NINE;No;0;L;;;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;;;;;
-1380;ETHIOPIC SYLLABLE SEBATBEIT MWA;Lo;0;L;;;;;N;;;;;
-1381;ETHIOPIC SYLLABLE MWI;Lo;0;L;;;;;N;;;;;
-1382;ETHIOPIC SYLLABLE MWEE;Lo;0;L;;;;;N;;;;;
-1383;ETHIOPIC SYLLABLE MWE;Lo;0;L;;;;;N;;;;;
-1384;ETHIOPIC SYLLABLE SEBATBEIT BWA;Lo;0;L;;;;;N;;;;;
-1385;ETHIOPIC SYLLABLE BWI;Lo;0;L;;;;;N;;;;;
-1386;ETHIOPIC SYLLABLE BWEE;Lo;0;L;;;;;N;;;;;
-1387;ETHIOPIC SYLLABLE BWE;Lo;0;L;;;;;N;;;;;
-1388;ETHIOPIC SYLLABLE SEBATBEIT FWA;Lo;0;L;;;;;N;;;;;
-1389;ETHIOPIC SYLLABLE FWI;Lo;0;L;;;;;N;;;;;
-138A;ETHIOPIC SYLLABLE FWEE;Lo;0;L;;;;;N;;;;;
-138B;ETHIOPIC SYLLABLE FWE;Lo;0;L;;;;;N;;;;;
-138C;ETHIOPIC SYLLABLE SEBATBEIT PWA;Lo;0;L;;;;;N;;;;;
-138D;ETHIOPIC SYLLABLE PWI;Lo;0;L;;;;;N;;;;;
-138E;ETHIOPIC SYLLABLE PWEE;Lo;0;L;;;;;N;;;;;
-138F;ETHIOPIC SYLLABLE PWE;Lo;0;L;;;;;N;;;;;
-1390;ETHIOPIC TONAL MARK YIZET;So;0;ON;;;;;N;;;;;
-1391;ETHIOPIC TONAL MARK DERET;So;0;ON;;;;;N;;;;;
-1392;ETHIOPIC TONAL MARK RIKRIK;So;0;ON;;;;;N;;;;;
-1393;ETHIOPIC TONAL MARK SHORT RIKRIK;So;0;ON;;;;;N;;;;;
-1394;ETHIOPIC TONAL MARK DIFAT;So;0;ON;;;;;N;;;;;
-1395;ETHIOPIC TONAL MARK KENAT;So;0;ON;;;;;N;;;;;
-1396;ETHIOPIC TONAL MARK CHIRET;So;0;ON;;;;;N;;;;;
-1397;ETHIOPIC TONAL MARK HIDET;So;0;ON;;;;;N;;;;;
-1398;ETHIOPIC TONAL MARK DERET-HIDET;So;0;ON;;;;;N;;;;;
-1399;ETHIOPIC TONAL MARK KURT;So;0;ON;;;;;N;;;;;
-13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;;
-13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;;
-13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;;
-13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;;
-13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;;
-13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;;
-13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;;
-13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;;
-13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;;
-13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;;
-13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;;
-13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;;
-13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;;
-13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;;
-13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;;
-13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;;
-13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;;
-13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;;
-13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;;
-13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;;
-13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;;
-13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;;
-13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;;
-13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;;
-13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;;
-13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;;
-13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;;
-13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;;
-13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;;
-13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;;
-13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;;
-13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;;
-13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;;
-13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;;
-13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;;
-13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;;
-13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;;
-13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;;
-13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;;
-13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;;
-13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;;
-13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;;
-13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;;
-13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;;
-13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;;
-13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;;
-13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;;
-13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;;
-13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;;
-13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;;
-13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;;
-13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;;
-13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;;
-13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;;
-13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;;
-13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;;
-13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;;
-13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;;
-13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;;
-13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;;
-13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;;
-13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;;
-13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;;
-13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;;
-13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;;
-13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;;
-13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;;
-13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;;
-13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;;
-13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;;
-13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;;
-13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;;
-13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;;
-13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;;
-13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;;
-13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;;
-13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;;
-13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;;
-13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;;
-13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;;
-13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;;
-13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;;
-13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;;
-13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;;
-13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;;
-1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;;
-1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;;
-1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;;
-1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;;
-1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;;
-1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;;
-1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;;
-1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;;
-1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;;
-140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;;
-140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;;
-140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;;
-140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;;
-140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;;
-140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;;
-1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;;
-1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;;
-1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;;
-1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;;
-1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;;
-1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;;
-1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;;
-1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;;
-1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;;
-1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;;
-141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;;
-141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;;
-141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;;
-141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;;
-141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
-141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;;
-1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;;
-1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;;
-1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;;
-1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;;
-1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;;
-1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;;
-1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;;
-1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;;
-1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;;
-1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;;
-142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;;
-142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;;
-142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;;
-142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;;
-142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;;
-142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;;
-1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;;
-1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;;
-1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;;
-1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;;
-1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;;
-1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;;
-1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;;
-1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;;
-1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;;
-1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;;
-143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;;
-143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;;
-143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;;
-143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;;
-143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;;
-143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;;
-1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;;
-1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;;
-1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;;
-1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;;
-1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;;
-1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;;
-1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;;
-1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;;
-1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;;
-1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;;
-144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;;
-144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;;
-144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;;
-144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;;
-144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;;
-144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;;
-1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;;
-1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;;
-1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;;
-1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;;
-1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;;
-1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;;
-1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;;
-1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;;
-1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;;
-1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;;
-145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;;
-145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;;
-145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;;
-145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;;
-145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;;
-145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;;
-1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;;
-1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;;
-1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;;
-1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;;
-1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;;
-1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;;
-1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;;
-1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;;
-1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;;
-1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;;
-146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;;
-146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;;
-146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;;
-146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;;
-146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;;
-146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;;
-1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;;
-1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;;
-1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;;
-1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;;
-1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;;
-1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;;
-1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;;
-1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;;
-1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;;
-1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;;
-147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;;
-147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;;
-147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;;
-147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;;
-147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;;
-147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;;
-1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;;
-1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;;
-1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;;
-1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;;
-1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;;
-1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;;
-1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;;
-1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;;
-1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;;
-1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;;
-148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;;
-148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;;
-148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;;
-148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;;
-148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;;
-148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;;
-1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;;
-1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;;
-1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;;
-1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;;
-1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;;
-1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;;
-1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;;
-1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;;
-1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;;
-1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;;
-149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;;
-149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;;
-149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;;
-149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;;
-149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;;
-149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;;
-14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;;
-14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;;
-14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;;
-14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;;
-14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;;
-14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;;
-14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;;
-14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;;
-14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;;
-14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;;
-14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;;
-14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;;
-14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;;
-14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;;
-14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;;
-14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;;
-14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;;
-14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;;
-14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;;
-14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;;
-14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;;
-14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;;
-14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;;
-14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;;
-14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;;
-14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;;
-14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;;
-14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;;
-14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;;
-14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;;
-14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;;
-14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;;
-14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;;
-14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;;
-14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;;
-14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;;
-14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;;
-14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;;
-14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;;
-14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;;
-14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;;
-14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;;
-14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;;
-14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;;
-14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;;
-14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;;
-14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;;
-14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;;
-14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;;
-14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;;
-14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;;
-14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;;
-14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;;
-14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;;
-14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;;
-14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;;
-14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;;
-14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;;
-14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;;
-14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;;
-14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;;
-14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;;
-14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;;
-14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;;
-14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;;
-14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;;
-14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;;
-14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;;
-14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;;
-14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;;
-14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;;
-14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;;
-14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;;
-14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;;
-14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;;
-14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;;
-14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;;
-14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;;
-14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;;
-14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;;
-14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;;
-14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;;
-14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;;
-14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;;
-14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;;
-14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;;
-14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;;
-14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;;
-14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;;
-14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;;
-14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;;
-14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;;
-14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;;
-14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;;
-14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;;
-14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;;
-1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;;
-1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;;
-1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;;
-1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;;
-1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;;
-1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;;
-1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;;
-1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;;
-1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;;
-1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;;
-150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;;
-150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;;
-150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;;
-150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;;
-150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;;
-150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;;
-1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;;
-1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;;
-1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;;
-1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;;
-1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;;
-1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;;
-1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;;
-1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;;
-1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;;
-1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;;
-151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;;
-151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;;
-151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;;
-151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;;
-151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;;
-151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;;
-1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;;
-1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;;
-1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;;
-1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;;
-1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;;
-1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;;
-1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;;
-1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;;
-1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;;
-1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;;
-152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;;
-152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;;
-152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;;
-152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;;
-152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;;
-152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;;
-1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;;
-1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;;
-1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;;
-1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;;
-1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;;
-1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;;
-1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;;
-1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;;
-1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;;
-1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;;
-153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;;
-153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;;
-153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;;
-153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;;
-153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;;
-153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;;
-1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;;
-1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;;
-1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;;
-1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;;
-1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;;
-1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;;
-1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;;
-1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;;
-1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;;
-1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;;
-154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;;
-154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;;
-154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;;
-154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;;
-154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;;
-154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;;
-1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;;
-1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;;
-1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;;
-1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;;
-1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;;
-1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;;
-1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;;
-1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;;
-1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;;
-1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;;
-155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;;
-155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;;
-155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;;
-155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;;
-155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;;
-155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;;
-1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;;
-1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;;
-1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;;
-1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;;
-1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;;
-1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;;
-1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;;
-1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;;
-1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;;
-1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;;
-156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;;
-156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;;
-156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;;
-156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;;
-156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;;
-156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;;
-1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;;
-1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;;
-1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;;
-1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;;
-1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;;
-1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;;
-1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;;
-1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;;
-1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;;
-1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;;
-157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;;
-157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;;
-157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;;
-157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;;
-157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;;
-157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;;
-1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;;
-1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;;
-1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;;
-1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;;
-1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;;
-1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;;
-1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;;
-1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;;
-1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;;
-1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;;
-158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;;
-158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;;
-158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;;
-158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;;
-158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;;
-158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;;
-1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;;
-1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;;
-1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;;
-1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;;
-1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;;
-1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;;
-1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;;
-1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;;
-1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;;
-1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;;
-159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;;
-159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;;
-159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;;
-159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;;
-159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;;
-159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;;
-15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;;
-15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;;
-15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;;
-15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;;
-15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;;
-15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;;
-15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;;
-15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;;
-15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;;
-15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;;
-15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;;
-15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;;
-15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;;
-15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;;
-15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;;
-15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;;
-15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;;
-15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;;
-15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;;
-15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;;
-15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;;
-15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;;
-15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;;
-15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;;
-15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;;
-15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;;
-15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;;
-15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;;
-15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;;
-15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;;
-15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;;
-15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;;
-15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;;
-15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;;
-15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;;
-15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;;
-15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;;
-15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;;
-15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;;
-15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;;
-15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;;
-15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;;
-15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;;
-15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;;
-15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;;
-15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;;
-15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;;
-15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;;
-15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;;
-15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;;
-15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;;
-15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;;
-15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;;
-15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;;
-15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;;
-15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;;
-15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;;
-15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;;
-15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;;
-15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;;
-15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;;
-15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;;
-15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;;
-15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;;
-15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;;
-15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;;
-15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;;
-15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;;
-15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;;
-15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;;
-15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;;
-15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;;
-15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;;
-15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;;
-15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;;
-15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;;
-15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;;
-15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;;
-15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;;
-15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;;
-15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;;
-15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;;
-15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;;
-15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;;
-15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;;
-15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;;
-15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;;
-15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;;
-15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;;
-15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;;
-15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;;
-15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;;
-15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;;
-15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;;
-15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;;
-15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;;
-1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;;
-1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;;
-1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;;
-1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;;
-1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;;
-1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;;
-1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;;
-1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;;
-1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;;
-1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;;
-160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;;
-160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;;
-160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;;
-160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;;
-160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;;
-160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;;
-1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;;
-1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;;
-1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;;
-1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;;
-1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;;
-1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;;
-1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;;
-1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;;
-1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;;
-1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;;
-161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;;
-161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;;
-161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;;
-161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;;
-161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;;
-161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;;
-1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;;
-1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;;
-1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;;
-1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;;
-1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;;
-1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;;
-1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;;
-1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;;
-1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;;
-1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;;
-162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;;
-162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;;
-162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;;
-162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;;
-162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;;
-162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;;
-1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;;
-1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;;
-1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;;
-1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;;
-1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;;
-1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;;
-1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;;
-1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;;
-1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;;
-1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;;
-163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;;
-163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;;
-163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;;
-163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;;
-163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;;
-163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;;
-1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;;
-1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;;
-1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;;
-1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;;
-1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;;
-1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;;
-1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;;
-1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;;
-1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;;
-1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;;
-164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;;
-164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;;
-164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;;
-164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;;
-164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;;
-164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;;
-1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;;
-1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;;
-1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;;
-1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;;
-1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;;
-1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;;
-1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;;
-1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;;
-1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;;
-1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;;
-165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;;
-165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;;
-165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;;
-165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;;
-165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;;
-165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;;
-1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;;
-1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;;
-1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;;
-1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;;
-1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;;
-1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;;
-1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;;
-1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;;
-1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;;
-1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;;
-166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;;
-166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;;
-166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;;
-166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;;
-166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;;
-166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;;
-1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;;
-1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;;
-1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;;
-1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;;
-1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;;
-1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;;
-1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;;
-1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;;
-1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;;
-1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;;
-1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;;
-1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;;
-1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;;
-1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;;
-1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;;
-1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;;
-1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;;
-168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;;
-168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;;
-168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;;
-168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;;
-168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;;
-168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;;
-1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;;
-1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;;
-1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;;
-1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;;
-1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;;
-1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;;
-1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;;
-1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;;
-1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;;
-1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;;
-169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;;
-169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;N;;;;;
-169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;N;;;;;
-16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;;
-16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;;
-16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;;
-16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;;
-16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;;
-16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;;
-16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;;
-16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;;
-16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;;
-16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;;
-16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;;
-16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;;
-16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;;
-16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;;
-16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;;
-16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;;
-16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;;
-16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;;
-16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;;
-16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;;
-16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;;
-16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;;
-16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;;
-16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;;
-16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;;
-16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;;
-16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;;
-16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;;
-16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;;
-16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;;
-16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;;
-16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;;
-16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;;
-16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;;
-16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;;
-16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;;
-16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;;
-16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;;
-16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;;
-16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;;
-16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;;
-16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;;
-16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;;
-16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;;
-16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;;
-16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;;
-16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;;
-16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;;
-16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;;
-16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;;
-16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;;
-16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;;
-16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;;
-16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;;
-16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;;
-16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;;
-16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;;
-16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;;
-16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;;
-16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;;
-16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;;
-16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;;
-16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;;
-16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;;
-16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;;
-16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;;
-16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;;
-16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;;
-16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;;
-16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;;
-16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;;
-16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;;
-16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;;
-16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;;
-16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;;
-16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
-16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;;
-16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;;
-16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;golden number 17;;;
-16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;golden number 18;;;
-16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;golden number 19;;;
-1700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;;
-1701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;;
-1702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;;
-1703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;;
-1704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;;
-1705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;;
-1706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;;
-1707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;;
-1708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;;
-1709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;;
-170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;;
-170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;;
-170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;;
-170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;;
-170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;;
-1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;;
-1711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;;
-1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;;
-1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;;
-1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;;
-1723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;;
-1724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;;
-1725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;;
-1726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;;
-1727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;;
-1728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;;
-1729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;;
-172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;;
-172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;;
-172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;;
-172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;;
-172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;;
-172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;;
-1730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;;
-1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;;
-1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;;
-1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
-1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;;
-1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;;
-1741;BUHID LETTER I;Lo;0;L;;;;;N;;;;;
-1742;BUHID LETTER U;Lo;0;L;;;;;N;;;;;
-1743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;;
-1744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;;
-1745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;;
-1746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;;
-1747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;;
-1748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;;
-1749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;;
-174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;;
-174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;;
-174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;;
-174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;;
-174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;;
-174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;;
-1750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;;
-1751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;;
-1752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-1753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-1760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;;
-1761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;;
-1762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;;
-1763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;;
-1764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;;
-1765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;;
-1766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;;
-1767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;;
-1768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;;
-1769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;;
-176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;;
-176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;;
-176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;;
-176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;;
-176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;;
-1770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;;
-1772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-1773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;;
-1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;;
-1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;;
-1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;;
-1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;;
-1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;;
-1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;;
-1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;;
-1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;;
-1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;;
-178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;;
-178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;;
-178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;;
-178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;;
-178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;;
-178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;;
-1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;;
-1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;;
-1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;;
-1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;;
-1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;;
-1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;;
-1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;;
-1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;;
-1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;;
-1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;;
-179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;;
-179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;;
-179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;;
-179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;;
-179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;;
-179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;;
-17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;;
-17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;;
-17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;;
-17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;*;;;
-17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;*;;;
-17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;;
-17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;;
-17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;;
-17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;;
-17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;;
-17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;;
-17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;;
-17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;;
-17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;;
-17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;;
-17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;;
-17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;;
-17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;;
-17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;;
-17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;;
-17B4;KHMER VOWEL INHERENT AQ;Cf;0;L;;;;;N;;*;;;
-17B5;KHMER VOWEL INHERENT AA;Cf;0;L;;;;;N;;*;;;
-17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
-17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
-17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
-17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;;
-17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;;
-17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;;
-17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;;
-17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
-17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
-17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
-17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;;
-17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;;
-17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;;
-17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;;
-17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;;
-17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;;
-17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;;
-17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;;
-17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;;
-17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;;
-17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;;
-17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;;
-17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;;
-17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;*;;;
-17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;;
-17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;;
-17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;;
-17D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;;
-17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;*;;;
-17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;;
-17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;;
-17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;;
-17DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;;
-17DD;KHMER SIGN ATTHACAN;Mn;230;NSM;;;;;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;;;;;
-17F0;KHMER SYMBOL LEK ATTAK SON;No;0;ON;;;;0;N;;;;;
-17F1;KHMER SYMBOL LEK ATTAK MUOY;No;0;ON;;;;1;N;;;;;
-17F2;KHMER SYMBOL LEK ATTAK PII;No;0;ON;;;;2;N;;;;;
-17F3;KHMER SYMBOL LEK ATTAK BEI;No;0;ON;;;;3;N;;;;;
-17F4;KHMER SYMBOL LEK ATTAK BUON;No;0;ON;;;;4;N;;;;;
-17F5;KHMER SYMBOL LEK ATTAK PRAM;No;0;ON;;;;5;N;;;;;
-17F6;KHMER SYMBOL LEK ATTAK PRAM-MUOY;No;0;ON;;;;6;N;;;;;
-17F7;KHMER SYMBOL LEK ATTAK PRAM-PII;No;0;ON;;;;7;N;;;;;
-17F8;KHMER SYMBOL LEK ATTAK PRAM-BEI;No;0;ON;;;;8;N;;;;;
-17F9;KHMER SYMBOL LEK ATTAK PRAM-BUON;No;0;ON;;;;9;N;;;;;
-1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;;
-1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;;
-1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;;
-1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;;
-1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;;
-1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;;
-1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
-1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;;
-1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;;
-1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;;
-180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;;
-180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;;
-180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;;
-180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;;
-180E;MONGOLIAN VOWEL SEPARATOR;Zs;0;WS;;;;;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;;;;;
-1900;LIMBU VOWEL-CARRIER LETTER;Lo;0;L;;;;;N;;;;;
-1901;LIMBU LETTER KA;Lo;0;L;;;;;N;;;;;
-1902;LIMBU LETTER KHA;Lo;0;L;;;;;N;;;;;
-1903;LIMBU LETTER GA;Lo;0;L;;;;;N;;;;;
-1904;LIMBU LETTER GHA;Lo;0;L;;;;;N;;;;;
-1905;LIMBU LETTER NGA;Lo;0;L;;;;;N;;;;;
-1906;LIMBU LETTER CA;Lo;0;L;;;;;N;;;;;
-1907;LIMBU LETTER CHA;Lo;0;L;;;;;N;;;;;
-1908;LIMBU LETTER JA;Lo;0;L;;;;;N;;;;;
-1909;LIMBU LETTER JHA;Lo;0;L;;;;;N;;;;;
-190A;LIMBU LETTER YAN;Lo;0;L;;;;;N;;;;;
-190B;LIMBU LETTER TA;Lo;0;L;;;;;N;;;;;
-190C;LIMBU LETTER THA;Lo;0;L;;;;;N;;;;;
-190D;LIMBU LETTER DA;Lo;0;L;;;;;N;;;;;
-190E;LIMBU LETTER DHA;Lo;0;L;;;;;N;;;;;
-190F;LIMBU LETTER NA;Lo;0;L;;;;;N;;;;;
-1910;LIMBU LETTER PA;Lo;0;L;;;;;N;;;;;
-1911;LIMBU LETTER PHA;Lo;0;L;;;;;N;;;;;
-1912;LIMBU LETTER BA;Lo;0;L;;;;;N;;;;;
-1913;LIMBU LETTER BHA;Lo;0;L;;;;;N;;;;;
-1914;LIMBU LETTER MA;Lo;0;L;;;;;N;;;;;
-1915;LIMBU LETTER YA;Lo;0;L;;;;;N;;;;;
-1916;LIMBU LETTER RA;Lo;0;L;;;;;N;;;;;
-1917;LIMBU LETTER LA;Lo;0;L;;;;;N;;;;;
-1918;LIMBU LETTER WA;Lo;0;L;;;;;N;;;;;
-1919;LIMBU LETTER SHA;Lo;0;L;;;;;N;;;;;
-191A;LIMBU LETTER SSA;Lo;0;L;;;;;N;;;;;
-191B;LIMBU LETTER SA;Lo;0;L;;;;;N;;;;;
-191C;LIMBU LETTER HA;Lo;0;L;;;;;N;;;;;
-1920;LIMBU VOWEL SIGN A;Mn;0;NSM;;;;;N;;;;;
-1921;LIMBU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-1922;LIMBU VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-1923;LIMBU VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
-1924;LIMBU VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-1925;LIMBU VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
-1926;LIMBU VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
-1927;LIMBU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
-1928;LIMBU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
-1929;LIMBU SUBJOINED LETTER YA;Mc;0;NSM;;;;;N;;;;;
-192A;LIMBU SUBJOINED LETTER RA;Mc;0;NSM;;;;;N;;;;;
-192B;LIMBU SUBJOINED LETTER WA;Mc;0;NSM;;;;;N;;;;;
-1930;LIMBU SMALL LETTER KA;Mc;0;L;;;;;N;;;;;
-1931;LIMBU SMALL LETTER NGA;Mc;0;L;;;;;N;;;;;
-1932;LIMBU SMALL LETTER ANUSVARA;Mn;0;NSM;;;;;N;;;;;
-1933;LIMBU SMALL LETTER TA;Mc;0;L;;;;;N;;;;;
-1934;LIMBU SMALL LETTER NA;Mc;0;L;;;;;N;;;;;
-1935;LIMBU SMALL LETTER PA;Mc;0;L;;;;;N;;;;;
-1936;LIMBU SMALL LETTER MA;Mc;0;L;;;;;N;;;;;
-1937;LIMBU SMALL LETTER RA;Mc;0;L;;;;;N;;;;;
-1938;LIMBU SMALL LETTER LA;Mc;0;L;;;;;N;;;;;
-1939;LIMBU SIGN MUKPHRENG;Mn;222;NSM;;;;;N;;;;;
-193A;LIMBU SIGN KEMPHRENG;Mn;230;NSM;;;;;N;;;;;
-193B;LIMBU SIGN SA-I;Mn;220;NSM;;;;;N;;;;;
-1940;LIMBU SIGN LOO;So;0;ON;;;;;N;;;;;
-1944;LIMBU EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
-1945;LIMBU QUESTION MARK;Po;0;ON;;;;;N;;;;;
-1946;LIMBU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-1947;LIMBU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-1948;LIMBU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-1949;LIMBU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-194A;LIMBU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-194B;LIMBU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-194C;LIMBU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-194D;LIMBU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-194E;LIMBU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-194F;LIMBU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-1950;TAI LE LETTER KA;Lo;0;L;;;;;N;;;;;
-1951;TAI LE LETTER XA;Lo;0;L;;;;;N;;;;;
-1952;TAI LE LETTER NGA;Lo;0;L;;;;;N;;;;;
-1953;TAI LE LETTER TSA;Lo;0;L;;;;;N;;;;;
-1954;TAI LE LETTER SA;Lo;0;L;;;;;N;;;;;
-1955;TAI LE LETTER YA;Lo;0;L;;;;;N;;;;;
-1956;TAI LE LETTER TA;Lo;0;L;;;;;N;;;;;
-1957;TAI LE LETTER THA;Lo;0;L;;;;;N;;;;;
-1958;TAI LE LETTER LA;Lo;0;L;;;;;N;;;;;
-1959;TAI LE LETTER PA;Lo;0;L;;;;;N;;;;;
-195A;TAI LE LETTER PHA;Lo;0;L;;;;;N;;;;;
-195B;TAI LE LETTER MA;Lo;0;L;;;;;N;;;;;
-195C;TAI LE LETTER FA;Lo;0;L;;;;;N;;;;;
-195D;TAI LE LETTER VA;Lo;0;L;;;;;N;;;;;
-195E;TAI LE LETTER HA;Lo;0;L;;;;;N;;;;;
-195F;TAI LE LETTER QA;Lo;0;L;;;;;N;;;;;
-1960;TAI LE LETTER KHA;Lo;0;L;;;;;N;;;;;
-1961;TAI LE LETTER TSHA;Lo;0;L;;;;;N;;;;;
-1962;TAI LE LETTER NA;Lo;0;L;;;;;N;;;;;
-1963;TAI LE LETTER A;Lo;0;L;;;;;N;;;;;
-1964;TAI LE LETTER I;Lo;0;L;;;;;N;;;;;
-1965;TAI LE LETTER EE;Lo;0;L;;;;;N;;;;;
-1966;TAI LE LETTER EH;Lo;0;L;;;;;N;;;;;
-1967;TAI LE LETTER U;Lo;0;L;;;;;N;;;;;
-1968;TAI LE LETTER OO;Lo;0;L;;;;;N;;;;;
-1969;TAI LE LETTER O;Lo;0;L;;;;;N;;;;;
-196A;TAI LE LETTER UE;Lo;0;L;;;;;N;;;;;
-196B;TAI LE LETTER E;Lo;0;L;;;;;N;;;;;
-196C;TAI LE LETTER AUE;Lo;0;L;;;;;N;;;;;
-196D;TAI LE LETTER AI;Lo;0;L;;;;;N;;;;;
-1970;TAI LE LETTER TONE-2;Lo;0;L;;;;;N;;;;;
-1971;TAI LE LETTER TONE-3;Lo;0;L;;;;;N;;;;;
-1972;TAI LE LETTER TONE-4;Lo;0;L;;;;;N;;;;;
-1973;TAI LE LETTER TONE-5;Lo;0;L;;;;;N;;;;;
-1974;TAI LE LETTER TONE-6;Lo;0;L;;;;;N;;;;;
-1980;NEW TAI LUE LETTER HIGH QA;Lo;0;L;;;;;N;;;;;
-1981;NEW TAI LUE LETTER LOW QA;Lo;0;L;;;;;N;;;;;
-1982;NEW TAI LUE LETTER HIGH KA;Lo;0;L;;;;;N;;;;;
-1983;NEW TAI LUE LETTER HIGH XA;Lo;0;L;;;;;N;;;;;
-1984;NEW TAI LUE LETTER HIGH NGA;Lo;0;L;;;;;N;;;;;
-1985;NEW TAI LUE LETTER LOW KA;Lo;0;L;;;;;N;;;;;
-1986;NEW TAI LUE LETTER LOW XA;Lo;0;L;;;;;N;;;;;
-1987;NEW TAI LUE LETTER LOW NGA;Lo;0;L;;;;;N;;;;;
-1988;NEW TAI LUE LETTER HIGH TSA;Lo;0;L;;;;;N;;;;;
-1989;NEW TAI LUE LETTER HIGH SA;Lo;0;L;;;;;N;;;;;
-198A;NEW TAI LUE LETTER HIGH YA;Lo;0;L;;;;;N;;;;;
-198B;NEW TAI LUE LETTER LOW TSA;Lo;0;L;;;;;N;;;;;
-198C;NEW TAI LUE LETTER LOW SA;Lo;0;L;;;;;N;;;;;
-198D;NEW TAI LUE LETTER LOW YA;Lo;0;L;;;;;N;;;;;
-198E;NEW TAI LUE LETTER HIGH TA;Lo;0;L;;;;;N;;;;;
-198F;NEW TAI LUE LETTER HIGH THA;Lo;0;L;;;;;N;;;;;
-1990;NEW TAI LUE LETTER HIGH NA;Lo;0;L;;;;;N;;;;;
-1991;NEW TAI LUE LETTER LOW TA;Lo;0;L;;;;;N;;;;;
-1992;NEW TAI LUE LETTER LOW THA;Lo;0;L;;;;;N;;;;;
-1993;NEW TAI LUE LETTER LOW NA;Lo;0;L;;;;;N;;;;;
-1994;NEW TAI LUE LETTER HIGH PA;Lo;0;L;;;;;N;;;;;
-1995;NEW TAI LUE LETTER HIGH PHA;Lo;0;L;;;;;N;;;;;
-1996;NEW TAI LUE LETTER HIGH MA;Lo;0;L;;;;;N;;;;;
-1997;NEW TAI LUE LETTER LOW PA;Lo;0;L;;;;;N;;;;;
-1998;NEW TAI LUE LETTER LOW PHA;Lo;0;L;;;;;N;;;;;
-1999;NEW TAI LUE LETTER LOW MA;Lo;0;L;;;;;N;;;;;
-199A;NEW TAI LUE LETTER HIGH FA;Lo;0;L;;;;;N;;;;;
-199B;NEW TAI LUE LETTER HIGH VA;Lo;0;L;;;;;N;;;;;
-199C;NEW TAI LUE LETTER HIGH LA;Lo;0;L;;;;;N;;;;;
-199D;NEW TAI LUE LETTER LOW FA;Lo;0;L;;;;;N;;;;;
-199E;NEW TAI LUE LETTER LOW VA;Lo;0;L;;;;;N;;;;;
-199F;NEW TAI LUE LETTER LOW LA;Lo;0;L;;;;;N;;;;;
-19A0;NEW TAI LUE LETTER HIGH HA;Lo;0;L;;;;;N;;;;;
-19A1;NEW TAI LUE LETTER HIGH DA;Lo;0;L;;;;;N;;;;;
-19A2;NEW TAI LUE LETTER HIGH BA;Lo;0;L;;;;;N;;;;;
-19A3;NEW TAI LUE LETTER LOW HA;Lo;0;L;;;;;N;;;;;
-19A4;NEW TAI LUE LETTER LOW DA;Lo;0;L;;;;;N;;;;;
-19A5;NEW TAI LUE LETTER LOW BA;Lo;0;L;;;;;N;;;;;
-19A6;NEW TAI LUE LETTER HIGH KVA;Lo;0;L;;;;;N;;;;;
-19A7;NEW TAI LUE LETTER HIGH XVA;Lo;0;L;;;;;N;;;;;
-19A8;NEW TAI LUE LETTER LOW KVA;Lo;0;L;;;;;N;;;;;
-19A9;NEW TAI LUE LETTER LOW XVA;Lo;0;L;;;;;N;;;;;
-19B0;NEW TAI LUE VOWEL SIGN VOWEL SHORTENER;Mc;0;L;;;;;N;;;;;
-19B1;NEW TAI LUE VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-19B2;NEW TAI LUE VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-19B3;NEW TAI LUE VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
-19B4;NEW TAI LUE VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
-19B5;NEW TAI LUE VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-19B6;NEW TAI LUE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
-19B7;NEW TAI LUE VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
-19B8;NEW TAI LUE VOWEL SIGN OA;Mc;0;L;;;;;N;;;;;
-19B9;NEW TAI LUE VOWEL SIGN UE;Mc;0;L;;;;;N;;;;;
-19BA;NEW TAI LUE VOWEL SIGN AY;Mc;0;L;;;;;N;;;;;
-19BB;NEW TAI LUE VOWEL SIGN AAY;Mc;0;L;;;;;N;;;;;
-19BC;NEW TAI LUE VOWEL SIGN UY;Mc;0;L;;;;;N;;;;;
-19BD;NEW TAI LUE VOWEL SIGN OY;Mc;0;L;;;;;N;;;;;
-19BE;NEW TAI LUE VOWEL SIGN OAY;Mc;0;L;;;;;N;;;;;
-19BF;NEW TAI LUE VOWEL SIGN UEY;Mc;0;L;;;;;N;;;;;
-19C0;NEW TAI LUE VOWEL SIGN IY;Mc;0;L;;;;;N;;;;;
-19C1;NEW TAI LUE LETTER FINAL V;Lo;0;L;;;;;N;;;;;
-19C2;NEW TAI LUE LETTER FINAL NG;Lo;0;L;;;;;N;;;;;
-19C3;NEW TAI LUE LETTER FINAL N;Lo;0;L;;;;;N;;;;;
-19C4;NEW TAI LUE LETTER FINAL M;Lo;0;L;;;;;N;;;;;
-19C5;NEW TAI LUE LETTER FINAL K;Lo;0;L;;;;;N;;;;;
-19C6;NEW TAI LUE LETTER FINAL D;Lo;0;L;;;;;N;;;;;
-19C7;NEW TAI LUE LETTER FINAL B;Lo;0;L;;;;;N;;;;;
-19C8;NEW TAI LUE TONE MARK-1;Mc;0;L;;;;;N;;;;;
-19C9;NEW TAI LUE TONE MARK-2;Mc;0;L;;;;;N;;;;;
-19D0;NEW TAI LUE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-19D1;NEW TAI LUE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-19D2;NEW TAI LUE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-19D3;NEW TAI LUE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-19D4;NEW TAI LUE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-19D5;NEW TAI LUE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-19D6;NEW TAI LUE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-19D7;NEW TAI LUE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-19D8;NEW TAI LUE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-19D9;NEW TAI LUE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-19DE;NEW TAI LUE SIGN LAE;Po;0;ON;;;;;N;;;;;
-19DF;NEW TAI LUE SIGN LAEV;Po;0;ON;;;;;N;;;;;
-19E0;KHMER SYMBOL PATHAMASAT;So;0;ON;;;;;N;;;;;
-19E1;KHMER SYMBOL MUOY KOET;So;0;ON;;;;;N;;;;;
-19E2;KHMER SYMBOL PII KOET;So;0;ON;;;;;N;;;;;
-19E3;KHMER SYMBOL BEI KOET;So;0;ON;;;;;N;;;;;
-19E4;KHMER SYMBOL BUON KOET;So;0;ON;;;;;N;;;;;
-19E5;KHMER SYMBOL PRAM KOET;So;0;ON;;;;;N;;;;;
-19E6;KHMER SYMBOL PRAM-MUOY KOET;So;0;ON;;;;;N;;;;;
-19E7;KHMER SYMBOL PRAM-PII KOET;So;0;ON;;;;;N;;;;;
-19E8;KHMER SYMBOL PRAM-BEI KOET;So;0;ON;;;;;N;;;;;
-19E9;KHMER SYMBOL PRAM-BUON KOET;So;0;ON;;;;;N;;;;;
-19EA;KHMER SYMBOL DAP KOET;So;0;ON;;;;;N;;;;;
-19EB;KHMER SYMBOL DAP-MUOY KOET;So;0;ON;;;;;N;;;;;
-19EC;KHMER SYMBOL DAP-PII KOET;So;0;ON;;;;;N;;;;;
-19ED;KHMER SYMBOL DAP-BEI KOET;So;0;ON;;;;;N;;;;;
-19EE;KHMER SYMBOL DAP-BUON KOET;So;0;ON;;;;;N;;;;;
-19EF;KHMER SYMBOL DAP-PRAM KOET;So;0;ON;;;;;N;;;;;
-19F0;KHMER SYMBOL TUTEYASAT;So;0;ON;;;;;N;;;;;
-19F1;KHMER SYMBOL MUOY ROC;So;0;ON;;;;;N;;;;;
-19F2;KHMER SYMBOL PII ROC;So;0;ON;;;;;N;;;;;
-19F3;KHMER SYMBOL BEI ROC;So;0;ON;;;;;N;;;;;
-19F4;KHMER SYMBOL BUON ROC;So;0;ON;;;;;N;;;;;
-19F5;KHMER SYMBOL PRAM ROC;So;0;ON;;;;;N;;;;;
-19F6;KHMER SYMBOL PRAM-MUOY ROC;So;0;ON;;;;;N;;;;;
-19F7;KHMER SYMBOL PRAM-PII ROC;So;0;ON;;;;;N;;;;;
-19F8;KHMER SYMBOL PRAM-BEI ROC;So;0;ON;;;;;N;;;;;
-19F9;KHMER SYMBOL PRAM-BUON ROC;So;0;ON;;;;;N;;;;;
-19FA;KHMER SYMBOL DAP ROC;So;0;ON;;;;;N;;;;;
-19FB;KHMER SYMBOL DAP-MUOY ROC;So;0;ON;;;;;N;;;;;
-19FC;KHMER SYMBOL DAP-PII ROC;So;0;ON;;;;;N;;;;;
-19FD;KHMER SYMBOL DAP-BEI ROC;So;0;ON;;;;;N;;;;;
-19FE;KHMER SYMBOL DAP-BUON ROC;So;0;ON;;;;;N;;;;;
-19FF;KHMER SYMBOL DAP-PRAM ROC;So;0;ON;;;;;N;;;;;
-1A00;BUGINESE LETTER KA;Lo;0;L;;;;;N;;;;;
-1A01;BUGINESE LETTER GA;Lo;0;L;;;;;N;;;;;
-1A02;BUGINESE LETTER NGA;Lo;0;L;;;;;N;;;;;
-1A03;BUGINESE LETTER NGKA;Lo;0;L;;;;;N;;;;;
-1A04;BUGINESE LETTER PA;Lo;0;L;;;;;N;;;;;
-1A05;BUGINESE LETTER BA;Lo;0;L;;;;;N;;;;;
-1A06;BUGINESE LETTER MA;Lo;0;L;;;;;N;;;;;
-1A07;BUGINESE LETTER MPA;Lo;0;L;;;;;N;;;;;
-1A08;BUGINESE LETTER TA;Lo;0;L;;;;;N;;;;;
-1A09;BUGINESE LETTER DA;Lo;0;L;;;;;N;;;;;
-1A0A;BUGINESE LETTER NA;Lo;0;L;;;;;N;;;;;
-1A0B;BUGINESE LETTER NRA;Lo;0;L;;;;;N;;;;;
-1A0C;BUGINESE LETTER CA;Lo;0;L;;;;;N;;;;;
-1A0D;BUGINESE LETTER JA;Lo;0;L;;;;;N;;;;;
-1A0E;BUGINESE LETTER NYA;Lo;0;L;;;;;N;;;;;
-1A0F;BUGINESE LETTER NYCA;Lo;0;L;;;;;N;;;;;
-1A10;BUGINESE LETTER YA;Lo;0;L;;;;;N;;;;;
-1A11;BUGINESE LETTER RA;Lo;0;L;;;;;N;;;;;
-1A12;BUGINESE LETTER LA;Lo;0;L;;;;;N;;;;;
-1A13;BUGINESE LETTER VA;Lo;0;L;;;;;N;;;;;
-1A14;BUGINESE LETTER SA;Lo;0;L;;;;;N;;;;;
-1A15;BUGINESE LETTER A;Lo;0;L;;;;;N;;;;;
-1A16;BUGINESE LETTER HA;Lo;0;L;;;;;N;;;;;
-1A17;BUGINESE VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;;
-1A18;BUGINESE VOWEL SIGN U;Mn;220;NSM;;;;;N;;;;;
-1A19;BUGINESE VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-1A1A;BUGINESE VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
-1A1B;BUGINESE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
-1A1E;BUGINESE PALLAWA;Po;0;L;;;;;N;;;;;
-1A1F;BUGINESE END OF SECTION;Po;0;L;;;;;N;;;;;
-1D00;LATIN LETTER SMALL CAPITAL A;Ll;0;L;;;;;N;;;;;
-1D01;LATIN LETTER SMALL CAPITAL AE;Ll;0;L;;;;;N;;;;;
-1D02;LATIN SMALL LETTER TURNED AE;Ll;0;L;;;;;N;;;;;
-1D03;LATIN LETTER SMALL CAPITAL BARRED B;Ll;0;L;;;;;N;;;;;
-1D04;LATIN LETTER SMALL CAPITAL C;Ll;0;L;;;;;N;;;;;
-1D05;LATIN LETTER SMALL CAPITAL D;Ll;0;L;;;;;N;;;;;
-1D06;LATIN LETTER SMALL CAPITAL ETH;Ll;0;L;;;;;N;;;;;
-1D07;LATIN LETTER SMALL CAPITAL E;Ll;0;L;;;;;N;;;;;
-1D08;LATIN SMALL LETTER TURNED OPEN E;Ll;0;L;;;;;N;;;;;
-1D09;LATIN SMALL LETTER TURNED I;Ll;0;L;;;;;N;;;;;
-1D0A;LATIN LETTER SMALL CAPITAL J;Ll;0;L;;;;;N;;;;;
-1D0B;LATIN LETTER SMALL CAPITAL K;Ll;0;L;;;;;N;;;;;
-1D0C;LATIN LETTER SMALL CAPITAL L WITH STROKE;Ll;0;L;;;;;N;;;;;
-1D0D;LATIN LETTER SMALL CAPITAL M;Ll;0;L;;;;;N;;;;;
-1D0E;LATIN LETTER SMALL CAPITAL REVERSED N;Ll;0;L;;;;;N;;;;;
-1D0F;LATIN LETTER SMALL CAPITAL O;Ll;0;L;;;;;N;;;;;
-1D10;LATIN LETTER SMALL CAPITAL OPEN O;Ll;0;L;;;;;N;;;;;
-1D11;LATIN SMALL LETTER SIDEWAYS O;Ll;0;L;;;;;N;;;;;
-1D12;LATIN SMALL LETTER SIDEWAYS OPEN O;Ll;0;L;;;;;N;;;;;
-1D13;LATIN SMALL LETTER SIDEWAYS O WITH STROKE;Ll;0;L;;;;;N;;;;;
-1D14;LATIN SMALL LETTER TURNED OE;Ll;0;L;;;;;N;;;;;
-1D15;LATIN LETTER SMALL CAPITAL OU;Ll;0;L;;;;;N;;;;;
-1D16;LATIN SMALL LETTER TOP HALF O;Ll;0;L;;;;;N;;;;;
-1D17;LATIN SMALL LETTER BOTTOM HALF O;Ll;0;L;;;;;N;;;;;
-1D18;LATIN LETTER SMALL CAPITAL P;Ll;0;L;;;;;N;;;;;
-1D19;LATIN LETTER SMALL CAPITAL REVERSED R;Ll;0;L;;;;;N;;;;;
-1D1A;LATIN LETTER SMALL CAPITAL TURNED R;Ll;0;L;;;;;N;;;;;
-1D1B;LATIN LETTER SMALL CAPITAL T;Ll;0;L;;;;;N;;;;;
-1D1C;LATIN LETTER SMALL CAPITAL U;Ll;0;L;;;;;N;;;;;
-1D1D;LATIN SMALL LETTER SIDEWAYS U;Ll;0;L;;;;;N;;;;;
-1D1E;LATIN SMALL LETTER SIDEWAYS DIAERESIZED U;Ll;0;L;;;;;N;;;;;
-1D1F;LATIN SMALL LETTER SIDEWAYS TURNED M;Ll;0;L;;;;;N;;;;;
-1D20;LATIN LETTER SMALL CAPITAL V;Ll;0;L;;;;;N;;;;;
-1D21;LATIN LETTER SMALL CAPITAL W;Ll;0;L;;;;;N;;;;;
-1D22;LATIN LETTER SMALL CAPITAL Z;Ll;0;L;;;;;N;;;;;
-1D23;LATIN LETTER SMALL CAPITAL EZH;Ll;0;L;;;;;N;;;;;
-1D24;LATIN LETTER VOICED LARYNGEAL SPIRANT;Ll;0;L;;;;;N;;;;;
-1D25;LATIN LETTER AIN;Ll;0;L;;;;;N;;;;;
-1D26;GREEK LETTER SMALL CAPITAL GAMMA;Ll;0;L;;;;;N;;;;;
-1D27;GREEK LETTER SMALL CAPITAL LAMDA;Ll;0;L;;;;;N;;;;;
-1D28;GREEK LETTER SMALL CAPITAL PI;Ll;0;L;;;;;N;;;;;
-1D29;GREEK LETTER SMALL CAPITAL RHO;Ll;0;L;;;;;N;;;;;
-1D2A;GREEK LETTER SMALL CAPITAL PSI;Ll;0;L;;;;;N;;;;;
-1D2B;CYRILLIC LETTER SMALL CAPITAL EL;Ll;0;L;;;;;N;;;;;
-1D2C;MODIFIER LETTER CAPITAL A;Lm;0;L;<super> 0041;;;;N;;;;;
-1D2D;MODIFIER LETTER CAPITAL AE;Lm;0;L;<super> 00C6;;;;N;;;;;
-1D2E;MODIFIER LETTER CAPITAL B;Lm;0;L;<super> 0042;;;;N;;;;;
-1D2F;MODIFIER LETTER CAPITAL BARRED B;Lm;0;L;;;;;N;;;;;
-1D30;MODIFIER LETTER CAPITAL D;Lm;0;L;<super> 0044;;;;N;;;;;
-1D31;MODIFIER LETTER CAPITAL E;Lm;0;L;<super> 0045;;;;N;;;;;
-1D32;MODIFIER LETTER CAPITAL REVERSED E;Lm;0;L;<super> 018E;;;;N;;;;;
-1D33;MODIFIER LETTER CAPITAL G;Lm;0;L;<super> 0047;;;;N;;;;;
-1D34;MODIFIER LETTER CAPITAL H;Lm;0;L;<super> 0048;;;;N;;;;;
-1D35;MODIFIER LETTER CAPITAL I;Lm;0;L;<super> 0049;;;;N;;;;;
-1D36;MODIFIER LETTER CAPITAL J;Lm;0;L;<super> 004A;;;;N;;;;;
-1D37;MODIFIER LETTER CAPITAL K;Lm;0;L;<super> 004B;;;;N;;;;;
-1D38;MODIFIER LETTER CAPITAL L;Lm;0;L;<super> 004C;;;;N;;;;;
-1D39;MODIFIER LETTER CAPITAL M;Lm;0;L;<super> 004D;;;;N;;;;;
-1D3A;MODIFIER LETTER CAPITAL N;Lm;0;L;<super> 004E;;;;N;;;;;
-1D3B;MODIFIER LETTER CAPITAL REVERSED N;Lm;0;L;;;;;N;;;;;
-1D3C;MODIFIER LETTER CAPITAL O;Lm;0;L;<super> 004F;;;;N;;;;;
-1D3D;MODIFIER LETTER CAPITAL OU;Lm;0;L;<super> 0222;;;;N;;;;;
-1D3E;MODIFIER LETTER CAPITAL P;Lm;0;L;<super> 0050;;;;N;;;;;
-1D3F;MODIFIER LETTER CAPITAL R;Lm;0;L;<super> 0052;;;;N;;;;;
-1D40;MODIFIER LETTER CAPITAL T;Lm;0;L;<super> 0054;;;;N;;;;;
-1D41;MODIFIER LETTER CAPITAL U;Lm;0;L;<super> 0055;;;;N;;;;;
-1D42;MODIFIER LETTER CAPITAL W;Lm;0;L;<super> 0057;;;;N;;;;;
-1D43;MODIFIER LETTER SMALL A;Lm;0;L;<super> 0061;;;;N;;;;;
-1D44;MODIFIER LETTER SMALL TURNED A;Lm;0;L;<super> 0250;;;;N;;;;;
-1D45;MODIFIER LETTER SMALL ALPHA;Lm;0;L;<super> 0251;;;;N;;;;;
-1D46;MODIFIER LETTER SMALL TURNED AE;Lm;0;L;<super> 1D02;;;;N;;;;;
-1D47;MODIFIER LETTER SMALL B;Lm;0;L;<super> 0062;;;;N;;;;;
-1D48;MODIFIER LETTER SMALL D;Lm;0;L;<super> 0064;;;;N;;;;;
-1D49;MODIFIER LETTER SMALL E;Lm;0;L;<super> 0065;;;;N;;;;;
-1D4A;MODIFIER LETTER SMALL SCHWA;Lm;0;L;<super> 0259;;;;N;;;;;
-1D4B;MODIFIER LETTER SMALL OPEN E;Lm;0;L;<super> 025B;;;;N;;;;;
-1D4C;MODIFIER LETTER SMALL TURNED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;
-1D4D;MODIFIER LETTER SMALL G;Lm;0;L;<super> 0067;;;;N;;;;;
-1D4E;MODIFIER LETTER SMALL TURNED I;Lm;0;L;;;;;N;;;;;
-1D4F;MODIFIER LETTER SMALL K;Lm;0;L;<super> 006B;;;;N;;;;;
-1D50;MODIFIER LETTER SMALL M;Lm;0;L;<super> 006D;;;;N;;;;;
-1D51;MODIFIER LETTER SMALL ENG;Lm;0;L;<super> 014B;;;;N;;;;;
-1D52;MODIFIER LETTER SMALL O;Lm;0;L;<super> 006F;;;;N;;;;;
-1D53;MODIFIER LETTER SMALL OPEN O;Lm;0;L;<super> 0254;;;;N;;;;;
-1D54;MODIFIER LETTER SMALL TOP HALF O;Lm;0;L;<super> 1D16;;;;N;;;;;
-1D55;MODIFIER LETTER SMALL BOTTOM HALF O;Lm;0;L;<super> 1D17;;;;N;;;;;
-1D56;MODIFIER LETTER SMALL P;Lm;0;L;<super> 0070;;;;N;;;;;
-1D57;MODIFIER LETTER SMALL T;Lm;0;L;<super> 0074;;;;N;;;;;
-1D58;MODIFIER LETTER SMALL U;Lm;0;L;<super> 0075;;;;N;;;;;
-1D59;MODIFIER LETTER SMALL SIDEWAYS U;Lm;0;L;<super> 1D1D;;;;N;;;;;
-1D5A;MODIFIER LETTER SMALL TURNED M;Lm;0;L;<super> 026F;;;;N;;;;;
-1D5B;MODIFIER LETTER SMALL V;Lm;0;L;<super> 0076;;;;N;;;;;
-1D5C;MODIFIER LETTER SMALL AIN;Lm;0;L;<super> 1D25;;;;N;;;;;
-1D5D;MODIFIER LETTER SMALL BETA;Lm;0;L;<super> 03B2;;;;N;;;;;
-1D5E;MODIFIER LETTER SMALL GREEK GAMMA;Lm;0;L;<super> 03B3;;;;N;;;;;
-1D5F;MODIFIER LETTER SMALL DELTA;Lm;0;L;<super> 03B4;;;;N;;;;;
-1D60;MODIFIER LETTER SMALL GREEK PHI;Lm;0;L;<super> 03C6;;;;N;;;;;
-1D61;MODIFIER LETTER SMALL CHI;Lm;0;L;<super> 03C7;;;;N;;;;;
-1D62;LATIN SUBSCRIPT SMALL LETTER I;Ll;0;L;<sub> 0069;;;;N;;;;;
-1D63;LATIN SUBSCRIPT SMALL LETTER R;Ll;0;L;<sub> 0072;;;;N;;;;;
-1D64;LATIN SUBSCRIPT SMALL LETTER U;Ll;0;L;<sub> 0075;;;;N;;;;;
-1D65;LATIN SUBSCRIPT SMALL LETTER V;Ll;0;L;<sub> 0076;;;;N;;;;;
-1D66;GREEK SUBSCRIPT SMALL LETTER BETA;Ll;0;L;<sub> 03B2;;;;N;;;;;
-1D67;GREEK SUBSCRIPT SMALL LETTER GAMMA;Ll;0;L;<sub> 03B3;;;;N;;;;;
-1D68;GREEK SUBSCRIPT SMALL LETTER RHO;Ll;0;L;<sub> 03C1;;;;N;;;;;
-1D69;GREEK SUBSCRIPT SMALL LETTER PHI;Ll;0;L;<sub> 03C6;;;;N;;;;;
-1D6A;GREEK SUBSCRIPT SMALL LETTER CHI;Ll;0;L;<sub> 03C7;;;;N;;;;;
-1D6B;LATIN SMALL LETTER UE;Ll;0;L;;;;;N;;;;;
-1D6C;LATIN SMALL LETTER B WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D6D;LATIN SMALL LETTER D WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D6E;LATIN SMALL LETTER F WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D6F;LATIN SMALL LETTER M WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D70;LATIN SMALL LETTER N WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D71;LATIN SMALL LETTER P WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D72;LATIN SMALL LETTER R WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D73;LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D74;LATIN SMALL LETTER S WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D75;LATIN SMALL LETTER T WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D76;LATIN SMALL LETTER Z WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D77;LATIN SMALL LETTER TURNED G;Ll;0;L;;;;;N;;;;;
-1D78;MODIFIER LETTER CYRILLIC EN;Lm;0;L;<super> 043D;;;;N;;;;;
-1D79;LATIN SMALL LETTER INSULAR G;Ll;0;L;;;;;N;;;;;
-1D7A;LATIN SMALL LETTER TH WITH STRIKETHROUGH;Ll;0;L;;;;;N;;;;;
-1D7B;LATIN SMALL CAPITAL LETTER I WITH STROKE;Ll;0;L;;;;;N;;;;;
-1D7C;LATIN SMALL LETTER IOTA WITH STROKE;Ll;0;L;;;;;N;;;;;
-1D7D;LATIN SMALL LETTER P WITH STROKE;Ll;0;L;;;;;N;;;;;
-1D7E;LATIN SMALL CAPITAL LETTER U WITH STROKE;Ll;0;L;;;;;N;;;;;
-1D7F;LATIN SMALL LETTER UPSILON WITH STROKE;Ll;0;L;;;;;N;;;;;
-1D80;LATIN SMALL LETTER B WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D81;LATIN SMALL LETTER D WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D82;LATIN SMALL LETTER F WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D83;LATIN SMALL LETTER G WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D84;LATIN SMALL LETTER K WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D85;LATIN SMALL LETTER L WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D86;LATIN SMALL LETTER M WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D87;LATIN SMALL LETTER N WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D88;LATIN SMALL LETTER P WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D89;LATIN SMALL LETTER R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D8A;LATIN SMALL LETTER S WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D8B;LATIN SMALL LETTER ESH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D8C;LATIN SMALL LETTER V WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D8D;LATIN SMALL LETTER X WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D8E;LATIN SMALL LETTER Z WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D8F;LATIN SMALL LETTER A WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D90;LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D91;LATIN SMALL LETTER D WITH HOOK AND TAIL;Ll;0;L;;;;;N;;;;;
-1D92;LATIN SMALL LETTER E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D93;LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D94;LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D95;LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D96;LATIN SMALL LETTER I WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D97;LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D98;LATIN SMALL LETTER ESH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D99;LATIN SMALL LETTER U WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D9A;LATIN SMALL LETTER EZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D9B;MODIFIER LETTER SMALL TURNED ALPHA;Lm;0;L;<super> 0252;;;;N;;;;;
-1D9C;MODIFIER LETTER SMALL C;Lm;0;L;<super> 0063;;;;N;;;;;
-1D9D;MODIFIER LETTER SMALL C WITH CURL;Lm;0;L;<super> 0255;;;;N;;;;;
-1D9E;MODIFIER LETTER SMALL ETH;Lm;0;L;<super> 00F0;;;;N;;;;;
-1D9F;MODIFIER LETTER SMALL REVERSED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;
-1DA0;MODIFIER LETTER SMALL F;Lm;0;L;<super> 0066;;;;N;;;;;
-1DA1;MODIFIER LETTER SMALL DOTLESS J WITH STROKE;Lm;0;L;<super> 025F;;;;N;;;;;
-1DA2;MODIFIER LETTER SMALL SCRIPT G;Lm;0;L;<super> 0261;;;;N;;;;;
-1DA3;MODIFIER LETTER SMALL TURNED H;Lm;0;L;<super> 0265;;;;N;;;;;
-1DA4;MODIFIER LETTER SMALL I WITH STROKE;Lm;0;L;<super> 0268;;;;N;;;;;
-1DA5;MODIFIER LETTER SMALL IOTA;Lm;0;L;<super> 0269;;;;N;;;;;
-1DA6;MODIFIER LETTER SMALL CAPITAL I;Lm;0;L;<super> 026A;;;;N;;;;;
-1DA7;MODIFIER LETTER SMALL CAPITAL I WITH STROKE;Lm;0;L;<super> 1D7B;;;;N;;;;;
-1DA8;MODIFIER LETTER SMALL J WITH CROSSED-TAIL;Lm;0;L;<super> 029D;;;;N;;;;;
-1DA9;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;Lm;0;L;<super> 026D;;;;N;;;;;
-1DAA;MODIFIER LETTER SMALL L WITH PALATAL HOOK;Lm;0;L;<super> 1D85;;;;N;;;;;
-1DAB;MODIFIER LETTER SMALL CAPITAL L;Lm;0;L;<super> 029F;;;;N;;;;;
-1DAC;MODIFIER LETTER SMALL M WITH HOOK;Lm;0;L;<super> 0271;;;;N;;;;;
-1DAD;MODIFIER LETTER SMALL TURNED M WITH LONG LEG;Lm;0;L;<super> 0270;;;;N;;;;;
-1DAE;MODIFIER LETTER SMALL N WITH LEFT HOOK;Lm;0;L;<super> 0272;;;;N;;;;;
-1DAF;MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;Lm;0;L;<super> 0273;;;;N;;;;;
-1DB0;MODIFIER LETTER SMALL CAPITAL N;Lm;0;L;<super> 0274;;;;N;;;;;
-1DB1;MODIFIER LETTER SMALL BARRED O;Lm;0;L;<super> 0275;;;;N;;;;;
-1DB2;MODIFIER LETTER SMALL PHI;Lm;0;L;<super> 0278;;;;N;;;;;
-1DB3;MODIFIER LETTER SMALL S WITH HOOK;Lm;0;L;<super> 0282;;;;N;;;;;
-1DB4;MODIFIER LETTER SMALL ESH;Lm;0;L;<super> 0283;;;;N;;;;;
-1DB5;MODIFIER LETTER SMALL T WITH PALATAL HOOK;Lm;0;L;<super> 01AB;;;;N;;;;;
-1DB6;MODIFIER LETTER SMALL U BAR;Lm;0;L;<super> 0289;;;;N;;;;;
-1DB7;MODIFIER LETTER SMALL UPSILON;Lm;0;L;<super> 028A;;;;N;;;;;
-1DB8;MODIFIER LETTER SMALL CAPITAL U;Lm;0;L;<super> 1D1C;;;;N;;;;;
-1DB9;MODIFIER LETTER SMALL V WITH HOOK;Lm;0;L;<super> 028B;;;;N;;;;;
-1DBA;MODIFIER LETTER SMALL TURNED V;Lm;0;L;<super> 028C;;;;N;;;;;
-1DBB;MODIFIER LETTER SMALL Z;Lm;0;L;<super> 007A;;;;N;;;;;
-1DBC;MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;Lm;0;L;<super> 0290;;;;N;;;;;
-1DBD;MODIFIER LETTER SMALL Z WITH CURL;Lm;0;L;<super> 0291;;;;N;;;;;
-1DBE;MODIFIER LETTER SMALL EZH;Lm;0;L;<super> 0292;;;;N;;;;;
-1DBF;MODIFIER LETTER SMALL THETA;Lm;0;L;<super> 03B8;;;;N;;;;;
-1DC0;COMBINING DOTTED GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
-1DC1;COMBINING DOTTED ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
-1DC2;COMBINING SNAKE BELOW;Mn;220;NSM;;;;;N;;;;;
-1DC3;COMBINING SUSPENSION MARK;Mn;230;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;Cf;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;CS;<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;CS;;;;;N;;;;;
-2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
-2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
-2047;DOUBLE QUESTION MARK;Po;0;ON;<compat> 003F 003F;;;;N;;;;;
-2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;;
-2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;;
-204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;;
-204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;;
-204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;;
-204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;;
-204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;;
-204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;;
-2050;CLOSE UP;Po;0;ON;;;;;N;;;;;
-2051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;;
-2052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;;
-2053;SWUNG DASH;Po;0;ON;;;;;N;;;;;
-2054;INVERTED UNDERTIE;Pc;0;ON;;;;;N;;;;;
-2055;FLOWER PUNCTUATION MARK;Po;0;ON;;;;;N;;;;;
-2056;THREE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
-2057;QUADRUPLE PRIME;Po;0;ON;<compat> 2032 2032 2032 2032;;;;N;;;;;
-2058;FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
-2059;FIVE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
-205A;TWO DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
-205B;FOUR DOT MARK;Po;0;ON;;;;;N;;;;;
-205C;DOTTED CROSS;Po;0;ON;;;;;N;;;;;
-205D;TRICOLON;Po;0;ON;;;;;N;;;;;
-205E;VERTICAL FOUR DOTS;Po;0;ON;;;;;N;;;;;
-205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-2060;WORD JOINER;Cf;0;BN;;;;;N;;;;;
-2061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;;
-2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;;
-2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;;
-206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
-206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
-206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
-206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
-206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
-206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
-2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
-2071;SUPERSCRIPT LATIN SMALL LETTER I;Ll;0;L;<super> 0069;;;;N;;;;;
-2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
-2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
-2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
-2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
-2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
-2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
-207A;SUPERSCRIPT PLUS SIGN;Sm;0;ES;<super> 002B;;;;N;;;;;
-207B;SUPERSCRIPT MINUS;Sm;0;ES;<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;N;SUBSCRIPT DIGIT ZERO;;;;
-2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;;1;1;N;SUBSCRIPT DIGIT ONE;;;;
-2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;;2;2;N;SUBSCRIPT DIGIT TWO;;;;
-2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;;3;3;N;SUBSCRIPT DIGIT THREE;;;;
-2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
-2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
-2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;;6;6;N;SUBSCRIPT DIGIT SIX;;;;
-2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
-2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
-2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;;9;9;N;SUBSCRIPT DIGIT NINE;;;;
-208A;SUBSCRIPT PLUS SIGN;Sm;0;ES;<sub> 002B;;;;N;;;;;
-208B;SUBSCRIPT MINUS;Sm;0;ES;<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;;;;
-2090;LATIN SUBSCRIPT SMALL LETTER A;Lm;0;L;<sub> 0061;;;;N;;;;;
-2091;LATIN SUBSCRIPT SMALL LETTER E;Lm;0;L;<sub> 0065;;;;N;;;;;
-2092;LATIN SUBSCRIPT SMALL LETTER O;Lm;0;L;<sub> 006F;;;;N;;;;;
-2093;LATIN SUBSCRIPT SMALL LETTER X;Lm;0;L;<sub> 0078;;;;N;;;;;
-2094;LATIN SUBSCRIPT SMALL LETTER SCHWA;Lm;0;L;<sub> 0259;;;;N;;;;;
-20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
-20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;;
-20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;;
-20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;;
-20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;;
-20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;;
-20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;;
-20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
-20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;;
-20A9;WON SIGN;Sc;0;ET;;;;;N;;;;;
-20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
-20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
-20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
-20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;;
-20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;;
-20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;;
-20B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;;
-20B1;PESO SIGN;Sc;0;ET;;;;;N;;;;;
-20B2;GUARANI SIGN;Sc;0;ET;;;;;N;;;;;
-20B3;AUSTRAL SIGN;Sc;0;ET;;;;;N;;;;;
-20B4;HRYVNIA SIGN;Sc;0;ET;;;;;N;;;;;
-20B5;CEDI SIGN;Sc;0;ET;;;;;N;;;;;
-20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
-20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
-20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
-20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
-20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
-20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
-20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
-20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
-20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;;
-20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
-20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
-20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
-20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
-20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;;
-20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;;
-20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;;
-20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;;
-20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
-20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;;
-20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;;
-20E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;;
-20E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;;
-20E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;;
-20E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;;
-20E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;;
-20E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
-20EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;;
-20EB;COMBINING LONG DOUBLE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;;
-2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;;
-2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;;
-2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;
-2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;
-2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;
-2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;;
-2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;;
-2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;;
-2108;SCRUPLE;So;0;ON;;;;;N;;;;;
-2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;
-210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;;
-210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;;
-210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
-210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;;
-210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
-2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;;
-2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;;
-2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;;
-2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
-2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;
-2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
-2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;;
-2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;;
-2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
-211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
-211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;;
-211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;;
-211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;
-211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;
-211F;RESPONSE;So;0;ON;;;;;N;;;;;
-2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;
-2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
-2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
-2123;VERSICLE;So;0;ON;;;;;N;;;;;
-2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;
-2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;
-2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9;
-2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;
-2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;;
-2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;
-212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B;
-212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5;
-212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;;
-212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;;
-212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;;
-212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;;
-2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;;
-2132;TURNED CAPITAL F;So;0;ON;;;;;N;TURNED F;;;;
-2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;;
-2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
-2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
-2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
-2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
-2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;;
-213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;;
-213B;FACSIMILE SIGN;So;0;ON;<compat> 0046 0041 0058;;;;N;;;;;
-213C;DOUBLE-STRUCK SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
-213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
-213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
-213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
-2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON;<font> 2211;;;;Y;;;;;
-2141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;;
-2142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;
-2143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;
-2144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;;
-2145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-214A;PROPERTY LINE;So;0;ON;;;;;N;;;;;
-214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;;
-214C;PER SIGN;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;;;;;
-21F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
-21F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-21F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;;
-21F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-21F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-21F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-21FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-21FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-21FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-21FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
-21FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
-21FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
-2200;FOR ALL;Sm;0;ON;;;;;N;;;;;
-2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;;
-2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;;
-2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;;
-2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;;
-2205;EMPTY SET;Sm;0;ON;;;;;N;;;;;
-2206;INCREMENT;Sm;0;ON;;;;;N;;;;;
-2207;NABLA;Sm;0;ON;;;;;N;;;;;
-2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
-2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;;
-220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
-220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
-220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;;
-220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
-220E;END OF PROOF;Sm;0;ON;;;;;N;;;;;
-220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;;
-2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;;
-2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;;
-2212;MINUS SIGN;Sm;0;ES;;;;;N;;;;;
-2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;;
-2214;DOT PLUS;Sm;0;ON;;;;;N;;;;;
-2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
-2216;SET MINUS;Sm;0;ON;;;;;Y;;;;;
-2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
-2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;;
-2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
-221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
-221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;;
-221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;;
-221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;;
-221E;INFINITY;Sm;0;ON;;;;;N;;;;;
-221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;;
-2220;ANGLE;Sm;0;ON;;;;;Y;;;;;
-2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;;
-2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;;
-2223;DIVIDES;Sm;0;ON;;;;;N;;;;;
-2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;;
-2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;;
-2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;;
-2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;;
-2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;;
-2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
-222A;UNION;Sm;0;ON;;;;;N;;;;;
-222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;;
-222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;
-222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;
-2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;;
-2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2234;THEREFORE;Sm;0;ON;;;;;N;;;;;
-2235;BECAUSE;Sm;0;ON;;;;;N;;;;;
-2236;RATIO;Sm;0;ON;;;;;N;;;;;
-2237;PROPORTION;Sm;0;ON;;;;;N;;;;;
-2238;DOT MINUS;Sm;0;ON;;;;;N;;;;;
-2239;EXCESS;Sm;0;ON;;;;;Y;;;;;
-223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;;
-223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;;
-223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
-223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;lazy S;;;
-223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;;
-223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;;
-2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;;
-2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;;
-2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;;
-2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;;
-2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;;
-2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;;
-224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;;
-224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
-224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
-224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;;
-2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;;
-2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;;
-2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
-2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;;
-2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;;
-2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;;
-2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;;
-2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;;
-2259;ESTIMATES;Sm;0;ON;;;;;N;;;;;
-225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;;
-225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;;
-225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;;
-225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;;
-225E;MEASURED BY;Sm;0;ON;;;;;N;;;;;
-225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;;
-2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
-2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;;
-2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
-2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
-2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
-2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;;
-2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;;
-2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;;
-2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;;
-226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
-226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
-226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
-226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
-226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
-226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
-2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
-2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;;
-2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;;
-2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;;
-2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;;
-2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;;
-2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;;
-2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;;
-2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;;
-2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;;
-227A;PRECEDES;Sm;0;ON;;;;;Y;;;;;
-227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
-227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
-227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
-2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;;
-2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;;
-2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;;
-2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;;
-2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;;
-2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;;
-2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;;
-2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;;
-228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;;
-228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;;
-228C;MULTISET;Sm;0;ON;;;;;Y;;;;;
-228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;;
-228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;;
-228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
-2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
-2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;;
-2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;;
-2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
-2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;;
-2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;;
-2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
-2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
-229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;;
-229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
-229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;;
-229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;;
-229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;;
-229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;;
-22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;;
-22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
-22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
-22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;;
-22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;;
-22A5;UP TACK;Sm;0;ON;;;;;N;;;;;
-22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;;
-22A7;MODELS;Sm;0;ON;;;;;Y;;;;;
-22A8;TRUE;Sm;0;ON;;;;;Y;;;;;
-22A9;FORCES;Sm;0;ON;;;;;Y;;;;;
-22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
-22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
-22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;;
-22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;;
-22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;;
-22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;;
-22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
-22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
-22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;;
-22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;;
-22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
-22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;;
-22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;;
-22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;;
-22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;;
-22BB;XOR;Sm;0;ON;;;;;N;;;;;
-22BC;NAND;Sm;0;ON;;;;;N;;;;;
-22BD;NOR;Sm;0;ON;;;;;N;;;;;
-22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;;
-22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
-22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
-22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
-22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;;
-22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;;
-22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;;
-22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
-22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;;
-22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;;
-22C8;BOWTIE;Sm;0;ON;;;;;N;;;;;
-22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
-22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
-22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
-22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
-22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;;
-22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
-22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
-22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;;
-22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;;
-22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;;
-22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;;
-22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;;
-22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;;
-22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;;
-22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;;
-22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;;
-22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;;
-22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;;
-22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;;
-22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;;
-22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;;
-22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;;
-22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
-22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;;
-22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;;
-22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;;
-22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;;
-22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;;
-22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;;
-22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
-22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
-22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;;
-22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;;
-22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;;
-22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;;
-22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
-22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
-22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
-22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
-22F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
-22F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
-22F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
-22F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
-22F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
-22F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
-22F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
-22F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;;
-22FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
-22FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
-22FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
-22FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
-22FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
-22FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;;
-2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;;
-2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;;
-2302;HOUSE;So;0;ON;;;;;N;;;;;
-2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;;
-2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;;
-2305;PROJECTIVE;So;0;ON;;;;;N;;;;;
-2306;PERSPECTIVE;So;0;ON;;;;;N;;;;;
-2307;WAVY LINE;So;0;ON;;;;;N;;;;;
-2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;;
-2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;;
-230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;;
-230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;;
-230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;
-230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;
-230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;
-230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;;
-2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
-2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;;
-2312;ARC;So;0;ON;;;;;N;;;;;
-2313;SEGMENT;So;0;ON;;;;;N;;;;;
-2314;SECTOR;So;0;ON;;;;;N;;;;;
-2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;;
-2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;;
-2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;;
-2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;;
-2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;;
-231A;WATCH;So;0;ON;;;;;N;;;;;
-231B;HOURGLASS;So;0;ON;;;;;N;;;;;
-231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;;
-231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;;
-231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;;
-231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;;
-2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2322;FROWN;So;0;ON;;;;;N;;;;;
-2323;SMILE;So;0;ON;;;;;N;;;;;
-2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;;
-2325;OPTION KEY;So;0;ON;;;;;N;;;;;
-2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;;
-2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;;
-2328;KEYBOARD;So;0;ON;;;;;N;;;;;
-2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;;
-232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;;
-232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;;
-232C;BENZENE RING;So;0;ON;;;;;N;;;;;
-232D;CYLINDRICITY;So;0;ON;;;;;N;;;;;
-232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;;
-232F;SYMMETRY;So;0;ON;;;;;N;;;;;
-2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;;
-2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;;
-2332;CONICAL TAPER;So;0;ON;;;;;N;;;;;
-2333;SLOPE;So;0;ON;;;;;N;;;;;
-2334;COUNTERBORE;So;0;ON;;;;;N;;;;;
-2335;COUNTERSINK;So;0;ON;;;;;N;;;;;
-2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;;
-2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;;
-2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;;
-2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;;
-233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;;
-233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;;
-233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;;
-233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;;
-233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;;
-233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;;
-2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;;
-2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;;
-2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;;
-2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;;
-2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;;
-2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;;
-2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;;
-2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;;
-2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;;
-2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;;
-234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;*;;;
-234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;;
-234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;;
-234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;;
-234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;*;;;
-234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;;
-2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;;
-2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;*;;;
-2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;;
-2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;;
-2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;;
-2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;*;;;
-2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;;
-2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;;
-2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;;
-2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;;
-235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;;
-235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;;
-235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;;
-235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;;
-235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;;
-235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;;
-2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;;
-2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;*;;;
-2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;;
-2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;;
-2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;;
-2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;;
-2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;;
-2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;;
-2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;;
-2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;;
-236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;;
-236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;;
-236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;;
-236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;;
-236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;;
-236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;;
-2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;;
-2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;;
-2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;;
-2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;;
-2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;;
-2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;;
-2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;;
-2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;;
-2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;;
-2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;;
-237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;;
-237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;;
-237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;;
-237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;;
-237E;BELL SYMBOL;So;0;ON;;;;;N;;;;;
-237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;;
-2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;;
-2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
-2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
-2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;;
-2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;;
-2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;;
-2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;;
-2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;;
-2388;HELM SYMBOL;So;0;ON;;;;;N;;;;;
-2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;pause;;;
-238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;break;;;
-238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;escape;;;
-238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;;
-238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;;
-238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;;
-238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
-2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
-2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
-2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
-2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;;
-2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;;
-2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;;
-2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;;
-2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;;
-2398;NEXT PAGE;So;0;ON;;;;;N;;;;;
-2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
-239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
-239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;
-239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;
-239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;
-239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;
-239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;
-23A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;
-23A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;
-23A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
-23A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;
-23A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;
-23A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
-23A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;
-23A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;
-23A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;
-23A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;
-23AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
-23AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;
-23AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;
-23AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;
-23AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;;
-23AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;;
-23B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;
-23B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;
-23B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;;
-23B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;;
-23B4;TOP SQUARE BRACKET;Ps;0;ON;;;;;N;;;;;
-23B5;BOTTOM SQUARE BRACKET;Pe;0;ON;;;;;N;;;;;
-23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;Po;0;ON;;;;;N;;;;;
-23B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;;
-23B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;
-23B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;
-23BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;;
-23BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;;
-23BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;;
-23BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;;
-23BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;;
-23BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;;
-23C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
-23C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
-23C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
-23C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
-23C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
-23C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
-23C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;;
-23C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;
-23C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;
-23C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;;
-23CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;;
-23CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;;
-23CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;;
-23CD;SQUARE FOOT;So;0;ON;;;;;N;;;;;
-23CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;;
-23CF;EJECT SYMBOL;So;0;ON;;;;;N;;;;;
-23D0;VERTICAL LINE EXTENSION;So;0;ON;;;;;N;;;;;
-23D1;METRICAL BREVE;So;0;ON;;;;;N;;;;;
-23D2;METRICAL LONG OVER SHORT;So;0;ON;;;;;N;;;;;
-23D3;METRICAL SHORT OVER LONG;So;0;ON;;;;;N;;;;;
-23D4;METRICAL LONG OVER TWO SHORTS;So;0;ON;;;;;N;;;;;
-23D5;METRICAL TWO SHORTS OVER LONG;So;0;ON;;;;;N;;;;;
-23D6;METRICAL TWO SHORTS JOINED;So;0;ON;;;;;N;;;;;
-23D7;METRICAL TRISEME;So;0;ON;;;;;N;;;;;
-23D8;METRICAL TETRASEME;So;0;ON;;;;;N;;;;;
-23D9;METRICAL PENTASEME;So;0;ON;;;;;N;;;;;
-23DA;EARTH GROUND;So;0;ON;;;;;N;;;;;
-23DB;FUSE;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;ON;<circle> 0031;;1;1;N;;;;;
-2461;CIRCLED DIGIT TWO;No;0;ON;<circle> 0032;;2;2;N;;;;;
-2462;CIRCLED DIGIT THREE;No;0;ON;<circle> 0033;;3;3;N;;;;;
-2463;CIRCLED DIGIT FOUR;No;0;ON;<circle> 0034;;4;4;N;;;;;
-2464;CIRCLED DIGIT FIVE;No;0;ON;<circle> 0035;;5;5;N;;;;;
-2465;CIRCLED DIGIT SIX;No;0;ON;<circle> 0036;;6;6;N;;;;;
-2466;CIRCLED DIGIT SEVEN;No;0;ON;<circle> 0037;;7;7;N;;;;;
-2467;CIRCLED DIGIT EIGHT;No;0;ON;<circle> 0038;;8;8;N;;;;;
-2468;CIRCLED DIGIT NINE;No;0;ON;<circle> 0039;;9;9;N;;;;;
-2469;CIRCLED NUMBER TEN;No;0;ON;<circle> 0031 0030;;;10;N;;;;;
-246A;CIRCLED NUMBER ELEVEN;No;0;ON;<circle> 0031 0031;;;11;N;;;;;
-246B;CIRCLED NUMBER TWELVE;No;0;ON;<circle> 0031 0032;;;12;N;;;;;
-246C;CIRCLED NUMBER THIRTEEN;No;0;ON;<circle> 0031 0033;;;13;N;;;;;
-246D;CIRCLED NUMBER FOURTEEN;No;0;ON;<circle> 0031 0034;;;14;N;;;;;
-246E;CIRCLED NUMBER FIFTEEN;No;0;ON;<circle> 0031 0035;;;15;N;;;;;
-246F;CIRCLED NUMBER SIXTEEN;No;0;ON;<circle> 0031 0036;;;16;N;;;;;
-2470;CIRCLED NUMBER SEVENTEEN;No;0;ON;<circle> 0031 0037;;;17;N;;;;;
-2471;CIRCLED NUMBER EIGHTEEN;No;0;ON;<circle> 0031 0038;;;18;N;;;;;
-2472;CIRCLED NUMBER NINETEEN;No;0;ON;<circle> 0031 0039;;;19;N;;;;;
-2473;CIRCLED NUMBER TWENTY;No;0;ON;<circle> 0032 0030;;;20;N;;;;;
-2474;PARENTHESIZED DIGIT ONE;No;0;ON;<compat> 0028 0031 0029;;1;1;N;;;;;
-2475;PARENTHESIZED DIGIT TWO;No;0;ON;<compat> 0028 0032 0029;;2;2;N;;;;;
-2476;PARENTHESIZED DIGIT THREE;No;0;ON;<compat> 0028 0033 0029;;3;3;N;;;;;
-2477;PARENTHESIZED DIGIT FOUR;No;0;ON;<compat> 0028 0034 0029;;4;4;N;;;;;
-2478;PARENTHESIZED DIGIT FIVE;No;0;ON;<compat> 0028 0035 0029;;5;5;N;;;;;
-2479;PARENTHESIZED DIGIT SIX;No;0;ON;<compat> 0028 0036 0029;;6;6;N;;;;;
-247A;PARENTHESIZED DIGIT SEVEN;No;0;ON;<compat> 0028 0037 0029;;7;7;N;;;;;
-247B;PARENTHESIZED DIGIT EIGHT;No;0;ON;<compat> 0028 0038 0029;;8;8;N;;;;;
-247C;PARENTHESIZED DIGIT NINE;No;0;ON;<compat> 0028 0039 0029;;9;9;N;;;;;
-247D;PARENTHESIZED NUMBER TEN;No;0;ON;<compat> 0028 0031 0030 0029;;;10;N;;;;;
-247E;PARENTHESIZED NUMBER ELEVEN;No;0;ON;<compat> 0028 0031 0031 0029;;;11;N;;;;;
-247F;PARENTHESIZED NUMBER TWELVE;No;0;ON;<compat> 0028 0031 0032 0029;;;12;N;;;;;
-2480;PARENTHESIZED NUMBER THIRTEEN;No;0;ON;<compat> 0028 0031 0033 0029;;;13;N;;;;;
-2481;PARENTHESIZED NUMBER FOURTEEN;No;0;ON;<compat> 0028 0031 0034 0029;;;14;N;;;;;
-2482;PARENTHESIZED NUMBER FIFTEEN;No;0;ON;<compat> 0028 0031 0035 0029;;;15;N;;;;;
-2483;PARENTHESIZED NUMBER SIXTEEN;No;0;ON;<compat> 0028 0031 0036 0029;;;16;N;;;;;
-2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;ON;<compat> 0028 0031 0037 0029;;;17;N;;;;;
-2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;ON;<compat> 0028 0031 0038 0029;;;18;N;;;;;
-2486;PARENTHESIZED NUMBER NINETEEN;No;0;ON;<compat> 0028 0031 0039 0029;;;19;N;;;;;
-2487;PARENTHESIZED NUMBER TWENTY;No;0;ON;<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;ON;<circle> 0030;;0;0;N;;;;;
-24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;;
-24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;;
-24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;;
-24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;;
-24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;;
-24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;;
-24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;;
-24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;;
-24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;;
-24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;;
-24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;;
-24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;;
-24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;;
-24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;;
-24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;;
-24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;;
-24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;;
-24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;;
-24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;;
-24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;;
-24FF;NEGATIVE CIRCLED DIGIT ZERO;No;0;ON;;;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;;;;;
-2596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;;
-2597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;;
-2598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;;
-2599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
-259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
-259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
-259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
-259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;;
-259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
-259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
-25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
-25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;;
-25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
-25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
-25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
-25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
-25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
-25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;
-25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;
-25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
-25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
-25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;;
-25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;;
-25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;;
-25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
-25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
-25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;;
-25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;;
-25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;;
-25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;;
-25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;;
-25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;;
-25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;;
-25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;;
-25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;;
-25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;;
-25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;;
-25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;;
-25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;;
-25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;;
-25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;;
-25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;;
-25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;;
-25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;;
-25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;;
-25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;;
-25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;;
-25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;;
-25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;;
-25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;;
-25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
-25C9;FISHEYE;So;0;ON;;;;;N;;;;;
-25CA;LOZENGE;So;0;ON;;;;;N;;;;;
-25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;;
-25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
-25CE;BULLSEYE;So;0;ON;;;;;N;;;;;
-25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;;
-25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
-25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
-25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;;
-25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;;
-25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
-25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
-25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
-25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
-25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;;
-25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
-25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
-25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
-25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
-25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;;
-25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;;
-25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
-25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
-25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
-25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
-25E6;WHITE BULLET;So;0;ON;;;;;N;;;;;
-25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
-25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
-25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
-25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
-25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;;
-25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;;
-25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;;
-25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;;
-25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;;
-25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
-25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
-25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
-25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
-25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
-25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
-25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
-25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
-25F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;
-25F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;
-25FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;
-25FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;
-25FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;
-25FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;
-25FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;
-25FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;
-2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;;
-2601;CLOUD;So;0;ON;;;;;N;;;;;
-2602;UMBRELLA;So;0;ON;;;;;N;;;;;
-2603;SNOWMAN;So;0;ON;;;;;N;;;;;
-2604;COMET;So;0;ON;;;;;N;;;;;
-2605;BLACK STAR;So;0;ON;;;;;N;;;;;
-2606;WHITE STAR;So;0;ON;;;;;N;;;;;
-2607;LIGHTNING;So;0;ON;;;;;N;;;;;
-2608;THUNDERSTORM;So;0;ON;;;;;N;;;;;
-2609;SUN;So;0;ON;;;;;N;;;;;
-260A;ASCENDING NODE;So;0;ON;;;;;N;;;;;
-260B;DESCENDING NODE;So;0;ON;;;;;N;;;;;
-260C;CONJUNCTION;So;0;ON;;;;;N;;;;;
-260D;OPPOSITION;So;0;ON;;;;;N;;;;;
-260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;;
-260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;;
-2610;BALLOT BOX;So;0;ON;;;;;N;;;;;
-2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;;
-2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;;
-2613;SALTIRE;So;0;ON;;;;;N;;;;;
-2614;UMBRELLA WITH RAIN DROPS;So;0;ON;;;;;N;;;;;
-2615;HOT BEVERAGE;So;0;ON;;;;;N;;;;;
-2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;;
-2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;;
-2618;SHAMROCK;So;0;ON;;;;;N;;;;;
-2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
-261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
-261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
-261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
-261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
-261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
-261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
-2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
-2621;CAUTION SIGN;So;0;ON;;;;;N;;;;;
-2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;;
-2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;;
-2624;CADUCEUS;So;0;ON;;;;;N;;;;;
-2625;ANKH;So;0;ON;;;;;N;;;;;
-2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;;
-2627;CHI RHO;So;0;ON;;;;;N;;;;;
-2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;;
-2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;;
-262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;;
-262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;;
-262C;ADI SHAKTI;So;0;ON;;;;;N;;;;;
-262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;;
-262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;;
-262F;YIN YANG;So;0;ON;;;;;N;;;;;
-2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;;
-2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;;
-2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;;
-2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;;
-2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;;
-2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;;
-2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;;
-2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
-2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;;
-2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;;
-263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;;
-263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;;
-263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;;
-263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;;
-263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;;
-263F;MERCURY;So;0;ON;;;;;N;;;;;
-2640;FEMALE SIGN;So;0;ON;;;;;N;;;;;
-2641;EARTH;So;0;ON;;;;;N;;;;;
-2642;MALE SIGN;So;0;ON;;;;;N;;;;;
-2643;JUPITER;So;0;ON;;;;;N;;;;;
-2644;SATURN;So;0;ON;;;;;N;;;;;
-2645;URANUS;So;0;ON;;;;;N;;;;;
-2646;NEPTUNE;So;0;ON;;;;;N;;;;;
-2647;PLUTO;So;0;ON;;;;;N;;;;;
-2648;ARIES;So;0;ON;;;;;N;;;;;
-2649;TAURUS;So;0;ON;;;;;N;;;;;
-264A;GEMINI;So;0;ON;;;;;N;;;;;
-264B;CANCER;So;0;ON;;;;;N;;;;;
-264C;LEO;So;0;ON;;;;;N;;;;;
-264D;VIRGO;So;0;ON;;;;;N;;;;;
-264E;LIBRA;So;0;ON;;;;;N;;;;;
-264F;SCORPIUS;So;0;ON;;;;;N;;;;;
-2650;SAGITTARIUS;So;0;ON;;;;;N;;;;;
-2651;CAPRICORN;So;0;ON;;;;;N;;;;;
-2652;AQUARIUS;So;0;ON;;;;;N;;;;;
-2653;PISCES;So;0;ON;;;;;N;;;;;
-2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;;
-2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;;
-2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;;
-2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;;
-2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;;
-2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;;
-265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;;
-265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;;
-265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;;
-265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;;
-265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;;
-265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;;
-2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;;
-2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;;
-2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;;
-2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;;
-2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;;
-2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;;
-2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;;
-2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;;
-2668;HOT SPRINGS;So;0;ON;;;;;N;;;;;
-2669;QUARTER NOTE;So;0;ON;;;;;N;;;;;
-266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;;
-266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;;
-266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;;
-266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;;
-266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;;
-266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;;
-2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
-2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
-2672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;
-2673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;pete;;;
-2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;hdpe;;;
-2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;pvc;;;
-2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;ldpe;;;
-2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;pp;;;
-2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;ps;;;
-2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;other;;;
-267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;;
-267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;
-267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;
-267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;
-267E;PERMANENT PAPER SIGN;So;0;ON;;;;;N;;;;;
-267F;WHEELCHAIR SYMBOL;So;0;ON;;;;;N;;;;;
-2680;DIE FACE-1;So;0;ON;;;;;N;;;;;
-2681;DIE FACE-2;So;0;ON;;;;;N;;;;;
-2682;DIE FACE-3;So;0;ON;;;;;N;;;;;
-2683;DIE FACE-4;So;0;ON;;;;;N;;;;;
-2684;DIE FACE-5;So;0;ON;;;;;N;;;;;
-2685;DIE FACE-6;So;0;ON;;;;;N;;;;;
-2686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;;
-2687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;;
-2688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;;
-2689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;;
-268A;MONOGRAM FOR YANG;So;0;ON;;;;;N;;;;;
-268B;MONOGRAM FOR YIN;So;0;ON;;;;;N;;;;;
-268C;DIGRAM FOR GREATER YANG;So;0;ON;;;;;N;;;;;
-268D;DIGRAM FOR LESSER YIN;So;0;ON;;;;;N;;;;;
-268E;DIGRAM FOR LESSER YANG;So;0;ON;;;;;N;;;;;
-268F;DIGRAM FOR GREATER YIN;So;0;ON;;;;;N;;;;;
-2690;WHITE FLAG;So;0;ON;;;;;N;;;;;
-2691;BLACK FLAG;So;0;ON;;;;;N;;;;;
-2692;HAMMER AND PICK;So;0;ON;;;;;N;;;;;
-2693;ANCHOR;So;0;ON;;;;;N;;;;;
-2694;CROSSED SWORDS;So;0;ON;;;;;N;;;;;
-2695;STAFF OF AESCULAPIUS;So;0;ON;;;;;N;;;;;
-2696;SCALES;So;0;ON;;;;;N;;;;;
-2697;ALEMBIC;So;0;ON;;;;;N;;;;;
-2698;FLOWER;So;0;ON;;;;;N;;;;;
-2699;GEAR;So;0;ON;;;;;N;;;;;
-269A;STAFF OF HERMES;So;0;ON;;;;;N;;;;;
-269B;ATOM SYMBOL;So;0;ON;;;;;N;;;;;
-269C;FLEUR-DE-LIS;So;0;ON;;;;;N;;;;;
-26A0;WARNING SIGN;So;0;ON;;;;;N;;;;;
-26A1;HIGH VOLTAGE SIGN;So;0;ON;;;;;N;;;;;
-26A2;DOUBLED FEMALE SIGN;So;0;ON;;;;;N;;;;;
-26A3;DOUBLED MALE SIGN;So;0;ON;;;;;N;;;;;
-26A4;INTERLOCKED FEMALE AND MALE SIGN;So;0;ON;;;;;N;;;;;
-26A5;MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;;
-26A6;MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;
-26A7;MALE WITH STROKE AND MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;;
-26A8;VERTICAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;
-26A9;HORIZONTAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;
-26AA;MEDIUM WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-26AB;MEDIUM BLACK CIRCLE;So;0;ON;;;;;N;;;;;
-26AC;MEDIUM SMALL WHITE CIRCLE;So;0;L;;;;;N;;;;;
-26AD;MARRIAGE SYMBOL;So;0;ON;;;;;N;;;;;
-26AE;DIVORCE SYMBOL;So;0;ON;;;;;N;;;;;
-26AF;UNMARRIED PARTNERSHIP SYMBOL;So;0;ON;;;;;N;;;;;
-26B0;COFFIN;So;0;ON;;;;;N;;;;;
-26B1;FUNERAL URN;So;0;ON;;;;;N;;;;;
-2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
-2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
-2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
-2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
-2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
-2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
-2708;AIRPLANE;So;0;ON;;;;;N;;;;;
-2709;ENVELOPE;So;0;ON;;;;;N;;;;;
-270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
-270D;WRITING HAND;So;0;ON;;;;;N;;;;;
-270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
-270F;PENCIL;So;0;ON;;;;;N;;;;;
-2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
-2711;WHITE NIB;So;0;ON;;;;;N;;;;;
-2712;BLACK NIB;So;0;ON;;;;;N;;;;;
-2713;CHECK MARK;So;0;ON;;;;;N;;;;;
-2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
-2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
-2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
-2717;BALLOT X;So;0;ON;;;;;N;;;;;
-2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
-2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
-271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
-271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
-271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
-271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
-271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
-271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
-2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
-2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
-2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
-2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
-2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
-272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
-272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
-272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
-272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
-272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
-272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
-2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
-2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
-2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
-2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
-2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
-2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
-2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
-2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
-2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
-273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
-273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
-273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
-273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
-2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
-2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
-2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
-2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
-2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
-2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
-2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
-2747;SPARKLE;So;0;ON;;;;;N;;;;;
-2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
-2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
-274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
-274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
-2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
-2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
-275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
-275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
-2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
-2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
-2766;FLORAL HEART;So;0;ON;;;;;N;;;;;
-2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
-2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
-2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
-2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
-2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
-277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
-277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
-277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
-277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
-277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
-277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
-2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;;
-2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;;
-2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;;
-2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;;
-2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;;
-2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;;
-2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;;
-2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;;
-2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;;
-2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;;
-278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;;
-278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;;
-278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;;
-278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;;
-278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;;
-278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;;
-2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;;
-2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;;
-2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;;
-2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;;
-2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;;
-2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;;
-2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;;
-279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;;
-279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;;
-279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;;
-279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;;
-279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;;
-279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
-27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
-27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;;
-27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;;
-27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;;
-27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;;
-27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;;
-27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;;
-27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;;
-27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;;
-27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;;
-27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;;
-27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;;
-27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;;
-27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
-27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
-27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
-27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
-27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;;
-27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;;
-27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;;
-27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;;
-27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;;
-27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;;
-27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;;
-27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;;
-27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;;
-27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;;
-27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;;
-27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;;
-27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;;
-27C0;THREE DIMENSIONAL ANGLE;Sm;0;ON;;;;;Y;;;;;
-27C1;WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE;Sm;0;ON;;;;;N;;;;;
-27C2;PERPENDICULAR;Sm;0;ON;;;;;N;;;;;
-27C3;OPEN SUBSET;Sm;0;ON;;;;;Y;;;;;
-27C4;OPEN SUPERSET;Sm;0;ON;;;;;Y;;;;;
-27C5;LEFT S-SHAPED BAG DELIMITER;Ps;0;ON;;;;;Y;;;;;
-27C6;RIGHT S-SHAPED BAG DELIMITER;Pe;0;ON;;;;;Y;;;;;
-27D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;;
-27D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;;
-27D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;;
-27D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;
-27D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;
-27D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;
-27D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;
-27D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;;
-27D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;;
-27D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;;
-27DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;;
-27DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;;
-27DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;;
-27DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
-27DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;;
-27DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
-27E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;;
-27E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;;
-27E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
-27E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
-27E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
-27E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
-27E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;;
-27E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;;
-27E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
-27E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
-27EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
-27EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
-27F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;
-27F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;
-27F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
-27F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
-27F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
-27F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-27F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-27F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
-27F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
-27F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
-27FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
-27FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
-27FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
-27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
-27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
-27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;;
-2800;BRAILLE PATTERN BLANK;So;0;L;;;;;N;;;;;
-2801;BRAILLE PATTERN DOTS-1;So;0;L;;;;;N;;;;;
-2802;BRAILLE PATTERN DOTS-2;So;0;L;;;;;N;;;;;
-2803;BRAILLE PATTERN DOTS-12;So;0;L;;;;;N;;;;;
-2804;BRAILLE PATTERN DOTS-3;So;0;L;;;;;N;;;;;
-2805;BRAILLE PATTERN DOTS-13;So;0;L;;;;;N;;;;;
-2806;BRAILLE PATTERN DOTS-23;So;0;L;;;;;N;;;;;
-2807;BRAILLE PATTERN DOTS-123;So;0;L;;;;;N;;;;;
-2808;BRAILLE PATTERN DOTS-4;So;0;L;;;;;N;;;;;
-2809;BRAILLE PATTERN DOTS-14;So;0;L;;;;;N;;;;;
-280A;BRAILLE PATTERN DOTS-24;So;0;L;;;;;N;;;;;
-280B;BRAILLE PATTERN DOTS-124;So;0;L;;;;;N;;;;;
-280C;BRAILLE PATTERN DOTS-34;So;0;L;;;;;N;;;;;
-280D;BRAILLE PATTERN DOTS-134;So;0;L;;;;;N;;;;;
-280E;BRAILLE PATTERN DOTS-234;So;0;L;;;;;N;;;;;
-280F;BRAILLE PATTERN DOTS-1234;So;0;L;;;;;N;;;;;
-2810;BRAILLE PATTERN DOTS-5;So;0;L;;;;;N;;;;;
-2811;BRAILLE PATTERN DOTS-15;So;0;L;;;;;N;;;;;
-2812;BRAILLE PATTERN DOTS-25;So;0;L;;;;;N;;;;;
-2813;BRAILLE PATTERN DOTS-125;So;0;L;;;;;N;;;;;
-2814;BRAILLE PATTERN DOTS-35;So;0;L;;;;;N;;;;;
-2815;BRAILLE PATTERN DOTS-135;So;0;L;;;;;N;;;;;
-2816;BRAILLE PATTERN DOTS-235;So;0;L;;;;;N;;;;;
-2817;BRAILLE PATTERN DOTS-1235;So;0;L;;;;;N;;;;;
-2818;BRAILLE PATTERN DOTS-45;So;0;L;;;;;N;;;;;
-2819;BRAILLE PATTERN DOTS-145;So;0;L;;;;;N;;;;;
-281A;BRAILLE PATTERN DOTS-245;So;0;L;;;;;N;;;;;
-281B;BRAILLE PATTERN DOTS-1245;So;0;L;;;;;N;;;;;
-281C;BRAILLE PATTERN DOTS-345;So;0;L;;;;;N;;;;;
-281D;BRAILLE PATTERN DOTS-1345;So;0;L;;;;;N;;;;;
-281E;BRAILLE PATTERN DOTS-2345;So;0;L;;;;;N;;;;;
-281F;BRAILLE PATTERN DOTS-12345;So;0;L;;;;;N;;;;;
-2820;BRAILLE PATTERN DOTS-6;So;0;L;;;;;N;;;;;
-2821;BRAILLE PATTERN DOTS-16;So;0;L;;;;;N;;;;;
-2822;BRAILLE PATTERN DOTS-26;So;0;L;;;;;N;;;;;
-2823;BRAILLE PATTERN DOTS-126;So;0;L;;;;;N;;;;;
-2824;BRAILLE PATTERN DOTS-36;So;0;L;;;;;N;;;;;
-2825;BRAILLE PATTERN DOTS-136;So;0;L;;;;;N;;;;;
-2826;BRAILLE PATTERN DOTS-236;So;0;L;;;;;N;;;;;
-2827;BRAILLE PATTERN DOTS-1236;So;0;L;;;;;N;;;;;
-2828;BRAILLE PATTERN DOTS-46;So;0;L;;;;;N;;;;;
-2829;BRAILLE PATTERN DOTS-146;So;0;L;;;;;N;;;;;
-282A;BRAILLE PATTERN DOTS-246;So;0;L;;;;;N;;;;;
-282B;BRAILLE PATTERN DOTS-1246;So;0;L;;;;;N;;;;;
-282C;BRAILLE PATTERN DOTS-346;So;0;L;;;;;N;;;;;
-282D;BRAILLE PATTERN DOTS-1346;So;0;L;;;;;N;;;;;
-282E;BRAILLE PATTERN DOTS-2346;So;0;L;;;;;N;;;;;
-282F;BRAILLE PATTERN DOTS-12346;So;0;L;;;;;N;;;;;
-2830;BRAILLE PATTERN DOTS-56;So;0;L;;;;;N;;;;;
-2831;BRAILLE PATTERN DOTS-156;So;0;L;;;;;N;;;;;
-2832;BRAILLE PATTERN DOTS-256;So;0;L;;;;;N;;;;;
-2833;BRAILLE PATTERN DOTS-1256;So;0;L;;;;;N;;;;;
-2834;BRAILLE PATTERN DOTS-356;So;0;L;;;;;N;;;;;
-2835;BRAILLE PATTERN DOTS-1356;So;0;L;;;;;N;;;;;
-2836;BRAILLE PATTERN DOTS-2356;So;0;L;;;;;N;;;;;
-2837;BRAILLE PATTERN DOTS-12356;So;0;L;;;;;N;;;;;
-2838;BRAILLE PATTERN DOTS-456;So;0;L;;;;;N;;;;;
-2839;BRAILLE PATTERN DOTS-1456;So;0;L;;;;;N;;;;;
-283A;BRAILLE PATTERN DOTS-2456;So;0;L;;;;;N;;;;;
-283B;BRAILLE PATTERN DOTS-12456;So;0;L;;;;;N;;;;;
-283C;BRAILLE PATTERN DOTS-3456;So;0;L;;;;;N;;;;;
-283D;BRAILLE PATTERN DOTS-13456;So;0;L;;;;;N;;;;;
-283E;BRAILLE PATTERN DOTS-23456;So;0;L;;;;;N;;;;;
-283F;BRAILLE PATTERN DOTS-123456;So;0;L;;;;;N;;;;;
-2840;BRAILLE PATTERN DOTS-7;So;0;L;;;;;N;;;;;
-2841;BRAILLE PATTERN DOTS-17;So;0;L;;;;;N;;;;;
-2842;BRAILLE PATTERN DOTS-27;So;0;L;;;;;N;;;;;
-2843;BRAILLE PATTERN DOTS-127;So;0;L;;;;;N;;;;;
-2844;BRAILLE PATTERN DOTS-37;So;0;L;;;;;N;;;;;
-2845;BRAILLE PATTERN DOTS-137;So;0;L;;;;;N;;;;;
-2846;BRAILLE PATTERN DOTS-237;So;0;L;;;;;N;;;;;
-2847;BRAILLE PATTERN DOTS-1237;So;0;L;;;;;N;;;;;
-2848;BRAILLE PATTERN DOTS-47;So;0;L;;;;;N;;;;;
-2849;BRAILLE PATTERN DOTS-147;So;0;L;;;;;N;;;;;
-284A;BRAILLE PATTERN DOTS-247;So;0;L;;;;;N;;;;;
-284B;BRAILLE PATTERN DOTS-1247;So;0;L;;;;;N;;;;;
-284C;BRAILLE PATTERN DOTS-347;So;0;L;;;;;N;;;;;
-284D;BRAILLE PATTERN DOTS-1347;So;0;L;;;;;N;;;;;
-284E;BRAILLE PATTERN DOTS-2347;So;0;L;;;;;N;;;;;
-284F;BRAILLE PATTERN DOTS-12347;So;0;L;;;;;N;;;;;
-2850;BRAILLE PATTERN DOTS-57;So;0;L;;;;;N;;;;;
-2851;BRAILLE PATTERN DOTS-157;So;0;L;;;;;N;;;;;
-2852;BRAILLE PATTERN DOTS-257;So;0;L;;;;;N;;;;;
-2853;BRAILLE PATTERN DOTS-1257;So;0;L;;;;;N;;;;;
-2854;BRAILLE PATTERN DOTS-357;So;0;L;;;;;N;;;;;
-2855;BRAILLE PATTERN DOTS-1357;So;0;L;;;;;N;;;;;
-2856;BRAILLE PATTERN DOTS-2357;So;0;L;;;;;N;;;;;
-2857;BRAILLE PATTERN DOTS-12357;So;0;L;;;;;N;;;;;
-2858;BRAILLE PATTERN DOTS-457;So;0;L;;;;;N;;;;;
-2859;BRAILLE PATTERN DOTS-1457;So;0;L;;;;;N;;;;;
-285A;BRAILLE PATTERN DOTS-2457;So;0;L;;;;;N;;;;;
-285B;BRAILLE PATTERN DOTS-12457;So;0;L;;;;;N;;;;;
-285C;BRAILLE PATTERN DOTS-3457;So;0;L;;;;;N;;;;;
-285D;BRAILLE PATTERN DOTS-13457;So;0;L;;;;;N;;;;;
-285E;BRAILLE PATTERN DOTS-23457;So;0;L;;;;;N;;;;;
-285F;BRAILLE PATTERN DOTS-123457;So;0;L;;;;;N;;;;;
-2860;BRAILLE PATTERN DOTS-67;So;0;L;;;;;N;;;;;
-2861;BRAILLE PATTERN DOTS-167;So;0;L;;;;;N;;;;;
-2862;BRAILLE PATTERN DOTS-267;So;0;L;;;;;N;;;;;
-2863;BRAILLE PATTERN DOTS-1267;So;0;L;;;;;N;;;;;
-2864;BRAILLE PATTERN DOTS-367;So;0;L;;;;;N;;;;;
-2865;BRAILLE PATTERN DOTS-1367;So;0;L;;;;;N;;;;;
-2866;BRAILLE PATTERN DOTS-2367;So;0;L;;;;;N;;;;;
-2867;BRAILLE PATTERN DOTS-12367;So;0;L;;;;;N;;;;;
-2868;BRAILLE PATTERN DOTS-467;So;0;L;;;;;N;;;;;
-2869;BRAILLE PATTERN DOTS-1467;So;0;L;;;;;N;;;;;
-286A;BRAILLE PATTERN DOTS-2467;So;0;L;;;;;N;;;;;
-286B;BRAILLE PATTERN DOTS-12467;So;0;L;;;;;N;;;;;
-286C;BRAILLE PATTERN DOTS-3467;So;0;L;;;;;N;;;;;
-286D;BRAILLE PATTERN DOTS-13467;So;0;L;;;;;N;;;;;
-286E;BRAILLE PATTERN DOTS-23467;So;0;L;;;;;N;;;;;
-286F;BRAILLE PATTERN DOTS-123467;So;0;L;;;;;N;;;;;
-2870;BRAILLE PATTERN DOTS-567;So;0;L;;;;;N;;;;;
-2871;BRAILLE PATTERN DOTS-1567;So;0;L;;;;;N;;;;;
-2872;BRAILLE PATTERN DOTS-2567;So;0;L;;;;;N;;;;;
-2873;BRAILLE PATTERN DOTS-12567;So;0;L;;;;;N;;;;;
-2874;BRAILLE PATTERN DOTS-3567;So;0;L;;;;;N;;;;;
-2875;BRAILLE PATTERN DOTS-13567;So;0;L;;;;;N;;;;;
-2876;BRAILLE PATTERN DOTS-23567;So;0;L;;;;;N;;;;;
-2877;BRAILLE PATTERN DOTS-123567;So;0;L;;;;;N;;;;;
-2878;BRAILLE PATTERN DOTS-4567;So;0;L;;;;;N;;;;;
-2879;BRAILLE PATTERN DOTS-14567;So;0;L;;;;;N;;;;;
-287A;BRAILLE PATTERN DOTS-24567;So;0;L;;;;;N;;;;;
-287B;BRAILLE PATTERN DOTS-124567;So;0;L;;;;;N;;;;;
-287C;BRAILLE PATTERN DOTS-34567;So;0;L;;;;;N;;;;;
-287D;BRAILLE PATTERN DOTS-134567;So;0;L;;;;;N;;;;;
-287E;BRAILLE PATTERN DOTS-234567;So;0;L;;;;;N;;;;;
-287F;BRAILLE PATTERN DOTS-1234567;So;0;L;;;;;N;;;;;
-2880;BRAILLE PATTERN DOTS-8;So;0;L;;;;;N;;;;;
-2881;BRAILLE PATTERN DOTS-18;So;0;L;;;;;N;;;;;
-2882;BRAILLE PATTERN DOTS-28;So;0;L;;;;;N;;;;;
-2883;BRAILLE PATTERN DOTS-128;So;0;L;;;;;N;;;;;
-2884;BRAILLE PATTERN DOTS-38;So;0;L;;;;;N;;;;;
-2885;BRAILLE PATTERN DOTS-138;So;0;L;;;;;N;;;;;
-2886;BRAILLE PATTERN DOTS-238;So;0;L;;;;;N;;;;;
-2887;BRAILLE PATTERN DOTS-1238;So;0;L;;;;;N;;;;;
-2888;BRAILLE PATTERN DOTS-48;So;0;L;;;;;N;;;;;
-2889;BRAILLE PATTERN DOTS-148;So;0;L;;;;;N;;;;;
-288A;BRAILLE PATTERN DOTS-248;So;0;L;;;;;N;;;;;
-288B;BRAILLE PATTERN DOTS-1248;So;0;L;;;;;N;;;;;
-288C;BRAILLE PATTERN DOTS-348;So;0;L;;;;;N;;;;;
-288D;BRAILLE PATTERN DOTS-1348;So;0;L;;;;;N;;;;;
-288E;BRAILLE PATTERN DOTS-2348;So;0;L;;;;;N;;;;;
-288F;BRAILLE PATTERN DOTS-12348;So;0;L;;;;;N;;;;;
-2890;BRAILLE PATTERN DOTS-58;So;0;L;;;;;N;;;;;
-2891;BRAILLE PATTERN DOTS-158;So;0;L;;;;;N;;;;;
-2892;BRAILLE PATTERN DOTS-258;So;0;L;;;;;N;;;;;
-2893;BRAILLE PATTERN DOTS-1258;So;0;L;;;;;N;;;;;
-2894;BRAILLE PATTERN DOTS-358;So;0;L;;;;;N;;;;;
-2895;BRAILLE PATTERN DOTS-1358;So;0;L;;;;;N;;;;;
-2896;BRAILLE PATTERN DOTS-2358;So;0;L;;;;;N;;;;;
-2897;BRAILLE PATTERN DOTS-12358;So;0;L;;;;;N;;;;;
-2898;BRAILLE PATTERN DOTS-458;So;0;L;;;;;N;;;;;
-2899;BRAILLE PATTERN DOTS-1458;So;0;L;;;;;N;;;;;
-289A;BRAILLE PATTERN DOTS-2458;So;0;L;;;;;N;;;;;
-289B;BRAILLE PATTERN DOTS-12458;So;0;L;;;;;N;;;;;
-289C;BRAILLE PATTERN DOTS-3458;So;0;L;;;;;N;;;;;
-289D;BRAILLE PATTERN DOTS-13458;So;0;L;;;;;N;;;;;
-289E;BRAILLE PATTERN DOTS-23458;So;0;L;;;;;N;;;;;
-289F;BRAILLE PATTERN DOTS-123458;So;0;L;;;;;N;;;;;
-28A0;BRAILLE PATTERN DOTS-68;So;0;L;;;;;N;;;;;
-28A1;BRAILLE PATTERN DOTS-168;So;0;L;;;;;N;;;;;
-28A2;BRAILLE PATTERN DOTS-268;So;0;L;;;;;N;;;;;
-28A3;BRAILLE PATTERN DOTS-1268;So;0;L;;;;;N;;;;;
-28A4;BRAILLE PATTERN DOTS-368;So;0;L;;;;;N;;;;;
-28A5;BRAILLE PATTERN DOTS-1368;So;0;L;;;;;N;;;;;
-28A6;BRAILLE PATTERN DOTS-2368;So;0;L;;;;;N;;;;;
-28A7;BRAILLE PATTERN DOTS-12368;So;0;L;;;;;N;;;;;
-28A8;BRAILLE PATTERN DOTS-468;So;0;L;;;;;N;;;;;
-28A9;BRAILLE PATTERN DOTS-1468;So;0;L;;;;;N;;;;;
-28AA;BRAILLE PATTERN DOTS-2468;So;0;L;;;;;N;;;;;
-28AB;BRAILLE PATTERN DOTS-12468;So;0;L;;;;;N;;;;;
-28AC;BRAILLE PATTERN DOTS-3468;So;0;L;;;;;N;;;;;
-28AD;BRAILLE PATTERN DOTS-13468;So;0;L;;;;;N;;;;;
-28AE;BRAILLE PATTERN DOTS-23468;So;0;L;;;;;N;;;;;
-28AF;BRAILLE PATTERN DOTS-123468;So;0;L;;;;;N;;;;;
-28B0;BRAILLE PATTERN DOTS-568;So;0;L;;;;;N;;;;;
-28B1;BRAILLE PATTERN DOTS-1568;So;0;L;;;;;N;;;;;
-28B2;BRAILLE PATTERN DOTS-2568;So;0;L;;;;;N;;;;;
-28B3;BRAILLE PATTERN DOTS-12568;So;0;L;;;;;N;;;;;
-28B4;BRAILLE PATTERN DOTS-3568;So;0;L;;;;;N;;;;;
-28B5;BRAILLE PATTERN DOTS-13568;So;0;L;;;;;N;;;;;
-28B6;BRAILLE PATTERN DOTS-23568;So;0;L;;;;;N;;;;;
-28B7;BRAILLE PATTERN DOTS-123568;So;0;L;;;;;N;;;;;
-28B8;BRAILLE PATTERN DOTS-4568;So;0;L;;;;;N;;;;;
-28B9;BRAILLE PATTERN DOTS-14568;So;0;L;;;;;N;;;;;
-28BA;BRAILLE PATTERN DOTS-24568;So;0;L;;;;;N;;;;;
-28BB;BRAILLE PATTERN DOTS-124568;So;0;L;;;;;N;;;;;
-28BC;BRAILLE PATTERN DOTS-34568;So;0;L;;;;;N;;;;;
-28BD;BRAILLE PATTERN DOTS-134568;So;0;L;;;;;N;;;;;
-28BE;BRAILLE PATTERN DOTS-234568;So;0;L;;;;;N;;;;;
-28BF;BRAILLE PATTERN DOTS-1234568;So;0;L;;;;;N;;;;;
-28C0;BRAILLE PATTERN DOTS-78;So;0;L;;;;;N;;;;;
-28C1;BRAILLE PATTERN DOTS-178;So;0;L;;;;;N;;;;;
-28C2;BRAILLE PATTERN DOTS-278;So;0;L;;;;;N;;;;;
-28C3;BRAILLE PATTERN DOTS-1278;So;0;L;;;;;N;;;;;
-28C4;BRAILLE PATTERN DOTS-378;So;0;L;;;;;N;;;;;
-28C5;BRAILLE PATTERN DOTS-1378;So;0;L;;;;;N;;;;;
-28C6;BRAILLE PATTERN DOTS-2378;So;0;L;;;;;N;;;;;
-28C7;BRAILLE PATTERN DOTS-12378;So;0;L;;;;;N;;;;;
-28C8;BRAILLE PATTERN DOTS-478;So;0;L;;;;;N;;;;;
-28C9;BRAILLE PATTERN DOTS-1478;So;0;L;;;;;N;;;;;
-28CA;BRAILLE PATTERN DOTS-2478;So;0;L;;;;;N;;;;;
-28CB;BRAILLE PATTERN DOTS-12478;So;0;L;;;;;N;;;;;
-28CC;BRAILLE PATTERN DOTS-3478;So;0;L;;;;;N;;;;;
-28CD;BRAILLE PATTERN DOTS-13478;So;0;L;;;;;N;;;;;
-28CE;BRAILLE PATTERN DOTS-23478;So;0;L;;;;;N;;;;;
-28CF;BRAILLE PATTERN DOTS-123478;So;0;L;;;;;N;;;;;
-28D0;BRAILLE PATTERN DOTS-578;So;0;L;;;;;N;;;;;
-28D1;BRAILLE PATTERN DOTS-1578;So;0;L;;;;;N;;;;;
-28D2;BRAILLE PATTERN DOTS-2578;So;0;L;;;;;N;;;;;
-28D3;BRAILLE PATTERN DOTS-12578;So;0;L;;;;;N;;;;;
-28D4;BRAILLE PATTERN DOTS-3578;So;0;L;;;;;N;;;;;
-28D5;BRAILLE PATTERN DOTS-13578;So;0;L;;;;;N;;;;;
-28D6;BRAILLE PATTERN DOTS-23578;So;0;L;;;;;N;;;;;
-28D7;BRAILLE PATTERN DOTS-123578;So;0;L;;;;;N;;;;;
-28D8;BRAILLE PATTERN DOTS-4578;So;0;L;;;;;N;;;;;
-28D9;BRAILLE PATTERN DOTS-14578;So;0;L;;;;;N;;;;;
-28DA;BRAILLE PATTERN DOTS-24578;So;0;L;;;;;N;;;;;
-28DB;BRAILLE PATTERN DOTS-124578;So;0;L;;;;;N;;;;;
-28DC;BRAILLE PATTERN DOTS-34578;So;0;L;;;;;N;;;;;
-28DD;BRAILLE PATTERN DOTS-134578;So;0;L;;;;;N;;;;;
-28DE;BRAILLE PATTERN DOTS-234578;So;0;L;;;;;N;;;;;
-28DF;BRAILLE PATTERN DOTS-1234578;So;0;L;;;;;N;;;;;
-28E0;BRAILLE PATTERN DOTS-678;So;0;L;;;;;N;;;;;
-28E1;BRAILLE PATTERN DOTS-1678;So;0;L;;;;;N;;;;;
-28E2;BRAILLE PATTERN DOTS-2678;So;0;L;;;;;N;;;;;
-28E3;BRAILLE PATTERN DOTS-12678;So;0;L;;;;;N;;;;;
-28E4;BRAILLE PATTERN DOTS-3678;So;0;L;;;;;N;;;;;
-28E5;BRAILLE PATTERN DOTS-13678;So;0;L;;;;;N;;;;;
-28E6;BRAILLE PATTERN DOTS-23678;So;0;L;;;;;N;;;;;
-28E7;BRAILLE PATTERN DOTS-123678;So;0;L;;;;;N;;;;;
-28E8;BRAILLE PATTERN DOTS-4678;So;0;L;;;;;N;;;;;
-28E9;BRAILLE PATTERN DOTS-14678;So;0;L;;;;;N;;;;;
-28EA;BRAILLE PATTERN DOTS-24678;So;0;L;;;;;N;;;;;
-28EB;BRAILLE PATTERN DOTS-124678;So;0;L;;;;;N;;;;;
-28EC;BRAILLE PATTERN DOTS-34678;So;0;L;;;;;N;;;;;
-28ED;BRAILLE PATTERN DOTS-134678;So;0;L;;;;;N;;;;;
-28EE;BRAILLE PATTERN DOTS-234678;So;0;L;;;;;N;;;;;
-28EF;BRAILLE PATTERN DOTS-1234678;So;0;L;;;;;N;;;;;
-28F0;BRAILLE PATTERN DOTS-5678;So;0;L;;;;;N;;;;;
-28F1;BRAILLE PATTERN DOTS-15678;So;0;L;;;;;N;;;;;
-28F2;BRAILLE PATTERN DOTS-25678;So;0;L;;;;;N;;;;;
-28F3;BRAILLE PATTERN DOTS-125678;So;0;L;;;;;N;;;;;
-28F4;BRAILLE PATTERN DOTS-35678;So;0;L;;;;;N;;;;;
-28F5;BRAILLE PATTERN DOTS-135678;So;0;L;;;;;N;;;;;
-28F6;BRAILLE PATTERN DOTS-235678;So;0;L;;;;;N;;;;;
-28F7;BRAILLE PATTERN DOTS-1235678;So;0;L;;;;;N;;;;;
-28F8;BRAILLE PATTERN DOTS-45678;So;0;L;;;;;N;;;;;
-28F9;BRAILLE PATTERN DOTS-145678;So;0;L;;;;;N;;;;;
-28FA;BRAILLE PATTERN DOTS-245678;So;0;L;;;;;N;;;;;
-28FB;BRAILLE PATTERN DOTS-1245678;So;0;L;;;;;N;;;;;
-28FC;BRAILLE PATTERN DOTS-345678;So;0;L;;;;;N;;;;;
-28FD;BRAILLE PATTERN DOTS-1345678;So;0;L;;;;;N;;;;;
-28FE;BRAILLE PATTERN DOTS-2345678;So;0;L;;;;;N;;;;;
-28FF;BRAILLE PATTERN DOTS-12345678;So;0;L;;;;;N;;;;;
-2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
-2906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
-2907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
-2908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
-2909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
-290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;
-290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;
-290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
-290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
-290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
-290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
-2910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
-2911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;;
-2912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;
-2913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;
-2914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;;
-2917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
-291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
-291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
-291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
-291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
-291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
-291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
-2920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
-2921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
-2922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
-2923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
-2924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
-2925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
-2926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
-2927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
-2928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
-2929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
-292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
-292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;;
-292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;;
-292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
-292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
-292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
-2930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
-2931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
-2932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
-2933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;;
-2934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;;
-2935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;;
-2936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;;
-2937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;;
-2938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
-2939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
-293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
-293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
-293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;;
-293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;;
-293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
-293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
-2940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
-2941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
-2942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-2943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-2944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-2945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;
-2946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;
-2947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;;
-2948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
-2949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
-294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;
-294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;
-294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;
-294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;
-294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;
-294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;
-2950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;
-2951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;
-2952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;
-2953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;
-2954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;
-2955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;
-2956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;
-2957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;
-2958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;
-2959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;
-295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;
-295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;
-295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;
-295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;
-295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;
-295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;
-2960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;
-2961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;
-2962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
-2963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
-2964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
-2965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
-2966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;
-2967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
-2968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;
-2969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
-296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;
-296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;
-296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;
-296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;
-296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
-296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
-2970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;;
-2971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-2972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-2973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
-2974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
-2975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
-2976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-2977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;;
-2978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-2979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;;
-297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;;
-297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;;
-297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;;
-297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;;
-2980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;;
-2981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;;
-2982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;;
-2983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;;
-2984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;;
-2985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
-2986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
-2987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;;
-2988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;;
-2989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;;
-298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;;
-298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;;
-298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;;
-298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;;
-298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;;
-298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;;
-2990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;;
-2991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;;
-2992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;;
-2993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;
-2994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;
-2995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;
-2996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;
-2997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;;
-2998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;;
-2999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;;
-299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;;
-299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
-299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;;
-299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;;
-299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;;
-299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;;
-29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
-29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
-29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;;
-29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;;
-29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
-29A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
-29A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
-29A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;;
-29A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;;
-29A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;;
-29AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;;
-29AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;;
-29AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;;
-29AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;;
-29AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;;
-29AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;;
-29B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;;
-29B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
-29B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
-29B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;
-29B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;
-29B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;;
-29B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
-29B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;;
-29B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;
-29B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;;
-29BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
-29BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;;
-29BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
-29BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;;
-29BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;;
-29BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;;
-29C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
-29C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
-29C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;
-29C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;
-29C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;
-29C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;
-29C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;;
-29C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
-29C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;;
-29C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;;
-29CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
-29CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
-29CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
-29CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;;
-29CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
-29CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;;
-29D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
-29D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
-29D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
-29D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;;
-29D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
-29D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
-29D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;;
-29D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;;
-29D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;
-29D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;
-29DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;
-29DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;
-29DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;;
-29DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;;
-29DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
-29DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;;
-29E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;;
-29E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;;
-29E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;;
-29E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;
-29E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;
-29E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;
-29E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;;
-29E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;;
-29E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
-29E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
-29EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
-29EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;;
-29EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
-29ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
-29EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;;
-29EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;;
-29F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;;
-29F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
-29F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;;
-29F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;;
-29F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;;
-29F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;
-29F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
-29F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
-29F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;;
-29F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;
-29FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;;
-29FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;;
-29FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
-29FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
-29FE;TINY;Sm;0;ON;;;;;N;;;;;
-29FF;MINY;Sm;0;ON;;;;;N;;;;;
-2A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
-2A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;;
-2A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;
-2A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;;
-2A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;;
-2A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;;
-2A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;;
-2A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;;
-2A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;;
-2A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;
-2A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;;
-2A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON;<compat> 222B 222B 222B 222B;;;;Y;;;;;
-2A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;;
-2A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;;
-2A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;;
-2A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;;
-2A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;
-2A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;
-2A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;;
-2A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;;
-2A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;;
-2A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;;
-2A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;;
-2A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;;
-2A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;;
-2A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
-2A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
-2A1D;JOIN;Sm;0;ON;;;;;N;;;;;
-2A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;;
-2A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;;
-2A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;;
-2A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;;
-2A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
-2A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;;
-2A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;
-2A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
-2A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;;
-2A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;;
-2A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;;
-2A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;;
-2A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
-2A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;;
-2A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;
-2A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
-2A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
-2A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;;
-2A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
-2A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
-2A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;;
-2A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;
-2A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
-2A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
-2A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;;
-2A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;;
-2A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
-2A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
-2A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
-2A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
-2A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;
-2A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;
-2A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;;
-2A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;;
-2A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;;
-2A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;;
-2A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
-2A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
-2A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;;
-2A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;;
-2A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;
-2A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;;
-2A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;
-2A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;;
-2A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;;
-2A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;;
-2A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;;
-2A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;;
-2A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;;
-2A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;;
-2A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;
-2A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
-2A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
-2A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;;
-2A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;;
-2A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;;
-2A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;;
-2A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;;
-2A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;;
-2A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;;
-2A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;
-2A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;
-2A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;
-2A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;
-2A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;
-2A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
-2A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;
-2A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
-2A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;
-2A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;
-2A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;
-2A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;
-2A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
-2A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
-2A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
-2A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;
-2A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;;
-2A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
-2A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;;
-2A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;;
-2A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;;
-2A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
-2A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
-2A74;DOUBLE COLON EQUAL;Sm;0;ON;<compat> 003A 003A 003D;;;;Y;;;;;
-2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D;;;;N;;;;;
-2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D 003D;;;;N;;;;;
-2A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;;
-2A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;;
-2A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;
-2A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;
-2A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;
-2A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;
-2A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
-2A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
-2A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
-2A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
-2A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;;
-2A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;;
-2A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
-2A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
-2A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
-2A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
-2A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
-2A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;
-2A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;
-2A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;
-2A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
-2A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;
-2A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;
-2A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;
-2A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
-2A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
-2A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
-2A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
-2A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
-2A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
-2A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
-2A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
-2A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
-2A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
-2A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
-2A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
-2A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
-2AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
-2AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
-2AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
-2AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
-2AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;;
-2AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;;
-2AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;
-2AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;
-2AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
-2AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
-2AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;;
-2AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;;
-2AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;;
-2AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
-2AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
-2AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
-2AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
-2AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;;
-2ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
-2ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;;
-2ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;;
-2ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
-2AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
-2AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
-2AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
-2AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
-2AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
-2AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
-2AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
-2AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
-2AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
-2AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;
-2ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;
-2ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;;
-2AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;;
-2AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;
-2AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;
-2AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;
-2AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;
-2AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;;
-2AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;;
-2AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;;
-2ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;;
-2ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;;
-2ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;not independent;;;
-2ADD;NONFORKING;Sm;0;ON;;;;;N;;independent;;;
-2ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;;
-2ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;
-2AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;;
-2AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;;
-2AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
-2AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
-2AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
-2AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
-2AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;;
-2AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
-2AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
-2AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;
-2AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;;
-2AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;;
-2AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;
-2AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;
-2AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;;
-2AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
-2AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;
-2AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;
-2AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
-2AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
-2AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;;
-2AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
-2AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;;
-2AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
-2AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
-2AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;;
-2AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;;
-2AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;
-2AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
-2AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
-2B00;NORTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;;
-2B01;NORTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;;
-2B02;SOUTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;;
-2B03;SOUTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;;
-2B04;LEFT RIGHT WHITE ARROW;So;0;ON;;;;;N;;;;;
-2B05;LEFTWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
-2B06;UPWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
-2B07;DOWNWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
-2B08;NORTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;;
-2B09;NORTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;;
-2B0A;SOUTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;;
-2B0B;SOUTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;;
-2B0C;LEFT RIGHT BLACK ARROW;So;0;ON;;;;;N;;;;;
-2B0D;UP DOWN BLACK ARROW;So;0;ON;;;;;N;;;;;
-2B0E;RIGHTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;;
-2B0F;RIGHTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;;
-2B10;LEFTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;;
-2B11;LEFTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;;
-2B12;SQUARE WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;;
-2B13;SQUARE WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;;
-2C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30;
-2C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31;
-2C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32;
-2C03;GLAGOLITIC CAPITAL LETTER GLAGOLI;Lu;0;L;;;;;N;;;;2C33;
-2C04;GLAGOLITIC CAPITAL LETTER DOBRO;Lu;0;L;;;;;N;;;;2C34;
-2C05;GLAGOLITIC CAPITAL LETTER YESTU;Lu;0;L;;;;;N;;;;2C35;
-2C06;GLAGOLITIC CAPITAL LETTER ZHIVETE;Lu;0;L;;;;;N;;;;2C36;
-2C07;GLAGOLITIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;2C37;
-2C08;GLAGOLITIC CAPITAL LETTER ZEMLJA;Lu;0;L;;;;;N;;;;2C38;
-2C09;GLAGOLITIC CAPITAL LETTER IZHE;Lu;0;L;;;;;N;;;;2C39;
-2C0A;GLAGOLITIC CAPITAL LETTER INITIAL IZHE;Lu;0;L;;;;;N;;;;2C3A;
-2C0B;GLAGOLITIC CAPITAL LETTER I;Lu;0;L;;;;;N;;;;2C3B;
-2C0C;GLAGOLITIC CAPITAL LETTER DJERVI;Lu;0;L;;;;;N;;;;2C3C;
-2C0D;GLAGOLITIC CAPITAL LETTER KAKO;Lu;0;L;;;;;N;;;;2C3D;
-2C0E;GLAGOLITIC CAPITAL LETTER LJUDIJE;Lu;0;L;;;;;N;;;;2C3E;
-2C0F;GLAGOLITIC CAPITAL LETTER MYSLITE;Lu;0;L;;;;;N;;;;2C3F;
-2C10;GLAGOLITIC CAPITAL LETTER NASHI;Lu;0;L;;;;;N;;;;2C40;
-2C11;GLAGOLITIC CAPITAL LETTER ONU;Lu;0;L;;;;;N;;;;2C41;
-2C12;GLAGOLITIC CAPITAL LETTER POKOJI;Lu;0;L;;;;;N;;;;2C42;
-2C13;GLAGOLITIC CAPITAL LETTER RITSI;Lu;0;L;;;;;N;;;;2C43;
-2C14;GLAGOLITIC CAPITAL LETTER SLOVO;Lu;0;L;;;;;N;;;;2C44;
-2C15;GLAGOLITIC CAPITAL LETTER TVRIDO;Lu;0;L;;;;;N;;;;2C45;
-2C16;GLAGOLITIC CAPITAL LETTER UKU;Lu;0;L;;;;;N;;;;2C46;
-2C17;GLAGOLITIC CAPITAL LETTER FRITU;Lu;0;L;;;;;N;;;;2C47;
-2C18;GLAGOLITIC CAPITAL LETTER HERU;Lu;0;L;;;;;N;;;;2C48;
-2C19;GLAGOLITIC CAPITAL LETTER OTU;Lu;0;L;;;;;N;;;;2C49;
-2C1A;GLAGOLITIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;2C4A;
-2C1B;GLAGOLITIC CAPITAL LETTER SHTA;Lu;0;L;;;;;N;;;;2C4B;
-2C1C;GLAGOLITIC CAPITAL LETTER TSI;Lu;0;L;;;;;N;;;;2C4C;
-2C1D;GLAGOLITIC CAPITAL LETTER CHRIVI;Lu;0;L;;;;;N;;;;2C4D;
-2C1E;GLAGOLITIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;2C4E;
-2C1F;GLAGOLITIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;;;;2C4F;
-2C20;GLAGOLITIC CAPITAL LETTER YERI;Lu;0;L;;;;;N;;;;2C50;
-2C21;GLAGOLITIC CAPITAL LETTER YATI;Lu;0;L;;;;;N;;;;2C51;
-2C22;GLAGOLITIC CAPITAL LETTER SPIDERY HA;Lu;0;L;;;;;N;;;;2C52;
-2C23;GLAGOLITIC CAPITAL LETTER YU;Lu;0;L;;;;;N;;;;2C53;
-2C24;GLAGOLITIC CAPITAL LETTER SMALL YUS;Lu;0;L;;;;;N;;;;2C54;
-2C25;GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL;Lu;0;L;;;;;N;;;;2C55;
-2C26;GLAGOLITIC CAPITAL LETTER YO;Lu;0;L;;;;;N;;;;2C56;
-2C27;GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS;Lu;0;L;;;;;N;;;;2C57;
-2C28;GLAGOLITIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;2C58;
-2C29;GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS;Lu;0;L;;;;;N;;;;2C59;
-2C2A;GLAGOLITIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;2C5A;
-2C2B;GLAGOLITIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;2C5B;
-2C2C;GLAGOLITIC CAPITAL LETTER SHTAPIC;Lu;0;L;;;;;N;;;;2C5C;
-2C2D;GLAGOLITIC CAPITAL LETTER TROKUTASTI A;Lu;0;L;;;;;N;;;;2C5D;
-2C2E;GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;Lu;0;L;;;;;N;;;;2C5E;
-2C30;GLAGOLITIC SMALL LETTER AZU;Ll;0;L;;;;;N;;;2C00;;2C00
-2C31;GLAGOLITIC SMALL LETTER BUKY;Ll;0;L;;;;;N;;;2C01;;2C01
-2C32;GLAGOLITIC SMALL LETTER VEDE;Ll;0;L;;;;;N;;;2C02;;2C02
-2C33;GLAGOLITIC SMALL LETTER GLAGOLI;Ll;0;L;;;;;N;;;2C03;;2C03
-2C34;GLAGOLITIC SMALL LETTER DOBRO;Ll;0;L;;;;;N;;;2C04;;2C04
-2C35;GLAGOLITIC SMALL LETTER YESTU;Ll;0;L;;;;;N;;;2C05;;2C05
-2C36;GLAGOLITIC SMALL LETTER ZHIVETE;Ll;0;L;;;;;N;;;2C06;;2C06
-2C37;GLAGOLITIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;2C07;;2C07
-2C38;GLAGOLITIC SMALL LETTER ZEMLJA;Ll;0;L;;;;;N;;;2C08;;2C08
-2C39;GLAGOLITIC SMALL LETTER IZHE;Ll;0;L;;;;;N;;;2C09;;2C09
-2C3A;GLAGOLITIC SMALL LETTER INITIAL IZHE;Ll;0;L;;;;;N;;;2C0A;;2C0A
-2C3B;GLAGOLITIC SMALL LETTER I;Ll;0;L;;;;;N;;;2C0B;;2C0B
-2C3C;GLAGOLITIC SMALL LETTER DJERVI;Ll;0;L;;;;;N;;;2C0C;;2C0C
-2C3D;GLAGOLITIC SMALL LETTER KAKO;Ll;0;L;;;;;N;;;2C0D;;2C0D
-2C3E;GLAGOLITIC SMALL LETTER LJUDIJE;Ll;0;L;;;;;N;;;2C0E;;2C0E
-2C3F;GLAGOLITIC SMALL LETTER MYSLITE;Ll;0;L;;;;;N;;;2C0F;;2C0F
-2C40;GLAGOLITIC SMALL LETTER NASHI;Ll;0;L;;;;;N;;;2C10;;2C10
-2C41;GLAGOLITIC SMALL LETTER ONU;Ll;0;L;;;;;N;;;2C11;;2C11
-2C42;GLAGOLITIC SMALL LETTER POKOJI;Ll;0;L;;;;;N;;;2C12;;2C12
-2C43;GLAGOLITIC SMALL LETTER RITSI;Ll;0;L;;;;;N;;;2C13;;2C13
-2C44;GLAGOLITIC SMALL LETTER SLOVO;Ll;0;L;;;;;N;;;2C14;;2C14
-2C45;GLAGOLITIC SMALL LETTER TVRIDO;Ll;0;L;;;;;N;;;2C15;;2C15
-2C46;GLAGOLITIC SMALL LETTER UKU;Ll;0;L;;;;;N;;;2C16;;2C16
-2C47;GLAGOLITIC SMALL LETTER FRITU;Ll;0;L;;;;;N;;;2C17;;2C17
-2C48;GLAGOLITIC SMALL LETTER HERU;Ll;0;L;;;;;N;;;2C18;;2C18
-2C49;GLAGOLITIC SMALL LETTER OTU;Ll;0;L;;;;;N;;;2C19;;2C19
-2C4A;GLAGOLITIC SMALL LETTER PE;Ll;0;L;;;;;N;;;2C1A;;2C1A
-2C4B;GLAGOLITIC SMALL LETTER SHTA;Ll;0;L;;;;;N;;;2C1B;;2C1B
-2C4C;GLAGOLITIC SMALL LETTER TSI;Ll;0;L;;;;;N;;;2C1C;;2C1C
-2C4D;GLAGOLITIC SMALL LETTER CHRIVI;Ll;0;L;;;;;N;;;2C1D;;2C1D
-2C4E;GLAGOLITIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;2C1E;;2C1E
-2C4F;GLAGOLITIC SMALL LETTER YERU;Ll;0;L;;;;;N;;;2C1F;;2C1F
-2C50;GLAGOLITIC SMALL LETTER YERI;Ll;0;L;;;;;N;;;2C20;;2C20
-2C51;GLAGOLITIC SMALL LETTER YATI;Ll;0;L;;;;;N;;;2C21;;2C21
-2C52;GLAGOLITIC SMALL LETTER SPIDERY HA;Ll;0;L;;;;;N;;;2C22;;2C22
-2C53;GLAGOLITIC SMALL LETTER YU;Ll;0;L;;;;;N;;;2C23;;2C23
-2C54;GLAGOLITIC SMALL LETTER SMALL YUS;Ll;0;L;;;;;N;;;2C24;;2C24
-2C55;GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL;Ll;0;L;;;;;N;;;2C25;;2C25
-2C56;GLAGOLITIC SMALL LETTER YO;Ll;0;L;;;;;N;;;2C26;;2C26
-2C57;GLAGOLITIC SMALL LETTER IOTATED SMALL YUS;Ll;0;L;;;;;N;;;2C27;;2C27
-2C58;GLAGOLITIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;2C28;;2C28
-2C59;GLAGOLITIC SMALL LETTER IOTATED BIG YUS;Ll;0;L;;;;;N;;;2C29;;2C29
-2C5A;GLAGOLITIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;2C2A;;2C2A
-2C5B;GLAGOLITIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;2C2B;;2C2B
-2C5C;GLAGOLITIC SMALL LETTER SHTAPIC;Ll;0;L;;;;;N;;;2C2C;;2C2C
-2C5D;GLAGOLITIC SMALL LETTER TROKUTASTI A;Ll;0;L;;;;;N;;;2C2D;;2C2D
-2C5E;GLAGOLITIC SMALL LETTER LATINATE MYSLITE;Ll;0;L;;;;;N;;;2C2E;;2C2E
-2C80;COPTIC CAPITAL LETTER ALFA;Lu;0;L;;;;;N;;;;2C81;
-2C81;COPTIC SMALL LETTER ALFA;Ll;0;L;;;;;N;;;2C80;;2C80
-2C82;COPTIC CAPITAL LETTER VIDA;Lu;0;L;;;;;N;;;;2C83;
-2C83;COPTIC SMALL LETTER VIDA;Ll;0;L;;;;;N;;;2C82;;2C82
-2C84;COPTIC CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;2C85;
-2C85;COPTIC SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;2C84;;2C84
-2C86;COPTIC CAPITAL LETTER DALDA;Lu;0;L;;;;;N;;;;2C87;
-2C87;COPTIC SMALL LETTER DALDA;Ll;0;L;;;;;N;;;2C86;;2C86
-2C88;COPTIC CAPITAL LETTER EIE;Lu;0;L;;;;;N;;;;2C89;
-2C89;COPTIC SMALL LETTER EIE;Ll;0;L;;;;;N;;;2C88;;2C88
-2C8A;COPTIC CAPITAL LETTER SOU;Lu;0;L;;;;;N;;;;2C8B;
-2C8B;COPTIC SMALL LETTER SOU;Ll;0;L;;;;;N;;;2C8A;;2C8A
-2C8C;COPTIC CAPITAL LETTER ZATA;Lu;0;L;;;;;N;;;;2C8D;
-2C8D;COPTIC SMALL LETTER ZATA;Ll;0;L;;;;;N;;;2C8C;;2C8C
-2C8E;COPTIC CAPITAL LETTER HATE;Lu;0;L;;;;;N;;;;2C8F;
-2C8F;COPTIC SMALL LETTER HATE;Ll;0;L;;;;;N;;;2C8E;;2C8E
-2C90;COPTIC CAPITAL LETTER THETHE;Lu;0;L;;;;;N;;;;2C91;
-2C91;COPTIC SMALL LETTER THETHE;Ll;0;L;;;;;N;;;2C90;;2C90
-2C92;COPTIC CAPITAL LETTER IAUDA;Lu;0;L;;;;;N;;;;2C93;
-2C93;COPTIC SMALL LETTER IAUDA;Ll;0;L;;;;;N;;;2C92;;2C92
-2C94;COPTIC CAPITAL LETTER KAPA;Lu;0;L;;;;;N;;;;2C95;
-2C95;COPTIC SMALL LETTER KAPA;Ll;0;L;;;;;N;;;2C94;;2C94
-2C96;COPTIC CAPITAL LETTER LAULA;Lu;0;L;;;;;N;;;;2C97;
-2C97;COPTIC SMALL LETTER LAULA;Ll;0;L;;;;;N;;;2C96;;2C96
-2C98;COPTIC CAPITAL LETTER MI;Lu;0;L;;;;;N;;;;2C99;
-2C99;COPTIC SMALL LETTER MI;Ll;0;L;;;;;N;;;2C98;;2C98
-2C9A;COPTIC CAPITAL LETTER NI;Lu;0;L;;;;;N;;;;2C9B;
-2C9B;COPTIC SMALL LETTER NI;Ll;0;L;;;;;N;;;2C9A;;2C9A
-2C9C;COPTIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;2C9D;
-2C9D;COPTIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;2C9C;;2C9C
-2C9E;COPTIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;2C9F;
-2C9F;COPTIC SMALL LETTER O;Ll;0;L;;;;;N;;;2C9E;;2C9E
-2CA0;COPTIC CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;2CA1;
-2CA1;COPTIC SMALL LETTER PI;Ll;0;L;;;;;N;;;2CA0;;2CA0
-2CA2;COPTIC CAPITAL LETTER RO;Lu;0;L;;;;;N;;;;2CA3;
-2CA3;COPTIC SMALL LETTER RO;Ll;0;L;;;;;N;;;2CA2;;2CA2
-2CA4;COPTIC CAPITAL LETTER SIMA;Lu;0;L;;;;;N;;;;2CA5;
-2CA5;COPTIC SMALL LETTER SIMA;Ll;0;L;;;;;N;;;2CA4;;2CA4
-2CA6;COPTIC CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;2CA7;
-2CA7;COPTIC SMALL LETTER TAU;Ll;0;L;;;;;N;;;2CA6;;2CA6
-2CA8;COPTIC CAPITAL LETTER UA;Lu;0;L;;;;;N;;;;2CA9;
-2CA9;COPTIC SMALL LETTER UA;Ll;0;L;;;;;N;;;2CA8;;2CA8
-2CAA;COPTIC CAPITAL LETTER FI;Lu;0;L;;;;;N;;;;2CAB;
-2CAB;COPTIC SMALL LETTER FI;Ll;0;L;;;;;N;;;2CAA;;2CAA
-2CAC;COPTIC CAPITAL LETTER KHI;Lu;0;L;;;;;N;;;;2CAD;
-2CAD;COPTIC SMALL LETTER KHI;Ll;0;L;;;;;N;;;2CAC;;2CAC
-2CAE;COPTIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;2CAF;
-2CAF;COPTIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;2CAE;;2CAE
-2CB0;COPTIC CAPITAL LETTER OOU;Lu;0;L;;;;;N;;;;2CB1;
-2CB1;COPTIC SMALL LETTER OOU;Ll;0;L;;;;;N;;;2CB0;;2CB0
-2CB2;COPTIC CAPITAL LETTER DIALECT-P ALEF;Lu;0;L;;;;;N;;;;2CB3;
-2CB3;COPTIC SMALL LETTER DIALECT-P ALEF;Ll;0;L;;;;;N;;;2CB2;;2CB2
-2CB4;COPTIC CAPITAL LETTER OLD COPTIC AIN;Lu;0;L;;;;;N;;;;2CB5;
-2CB5;COPTIC SMALL LETTER OLD COPTIC AIN;Ll;0;L;;;;;N;;;2CB4;;2CB4
-2CB6;COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE;Lu;0;L;;;;;N;;;;2CB7;
-2CB7;COPTIC SMALL LETTER CRYPTOGRAMMIC EIE;Ll;0;L;;;;;N;;;2CB6;;2CB6
-2CB8;COPTIC CAPITAL LETTER DIALECT-P KAPA;Lu;0;L;;;;;N;;;;2CB9;
-2CB9;COPTIC SMALL LETTER DIALECT-P KAPA;Ll;0;L;;;;;N;;;2CB8;;2CB8
-2CBA;COPTIC CAPITAL LETTER DIALECT-P NI;Lu;0;L;;;;;N;;;;2CBB;
-2CBB;COPTIC SMALL LETTER DIALECT-P NI;Ll;0;L;;;;;N;;;2CBA;;2CBA
-2CBC;COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI;Lu;0;L;;;;;N;;;;2CBD;
-2CBD;COPTIC SMALL LETTER CRYPTOGRAMMIC NI;Ll;0;L;;;;;N;;;2CBC;;2CBC
-2CBE;COPTIC CAPITAL LETTER OLD COPTIC OOU;Lu;0;L;;;;;N;;;;2CBF;
-2CBF;COPTIC SMALL LETTER OLD COPTIC OOU;Ll;0;L;;;;;N;;;2CBE;;2CBE
-2CC0;COPTIC CAPITAL LETTER SAMPI;Lu;0;L;;;;;N;;;;2CC1;
-2CC1;COPTIC SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;2CC0;;2CC0
-2CC2;COPTIC CAPITAL LETTER CROSSED SHEI;Lu;0;L;;;;;N;;;;2CC3;
-2CC3;COPTIC SMALL LETTER CROSSED SHEI;Ll;0;L;;;;;N;;;2CC2;;2CC2
-2CC4;COPTIC CAPITAL LETTER OLD COPTIC SHEI;Lu;0;L;;;;;N;;;;2CC5;
-2CC5;COPTIC SMALL LETTER OLD COPTIC SHEI;Ll;0;L;;;;;N;;;2CC4;;2CC4
-2CC6;COPTIC CAPITAL LETTER OLD COPTIC ESH;Lu;0;L;;;;;N;;;;2CC7;
-2CC7;COPTIC SMALL LETTER OLD COPTIC ESH;Ll;0;L;;;;;N;;;2CC6;;2CC6
-2CC8;COPTIC CAPITAL LETTER AKHMIMIC KHEI;Lu;0;L;;;;;N;;;;2CC9;
-2CC9;COPTIC SMALL LETTER AKHMIMIC KHEI;Ll;0;L;;;;;N;;;2CC8;;2CC8
-2CCA;COPTIC CAPITAL LETTER DIALECT-P HORI;Lu;0;L;;;;;N;;;;2CCB;
-2CCB;COPTIC SMALL LETTER DIALECT-P HORI;Ll;0;L;;;;;N;;;2CCA;;2CCA
-2CCC;COPTIC CAPITAL LETTER OLD COPTIC HORI;Lu;0;L;;;;;N;;;;2CCD;
-2CCD;COPTIC SMALL LETTER OLD COPTIC HORI;Ll;0;L;;;;;N;;;2CCC;;2CCC
-2CCE;COPTIC CAPITAL LETTER OLD COPTIC HA;Lu;0;L;;;;;N;;;;2CCF;
-2CCF;COPTIC SMALL LETTER OLD COPTIC HA;Ll;0;L;;;;;N;;;2CCE;;2CCE
-2CD0;COPTIC CAPITAL LETTER L-SHAPED HA;Lu;0;L;;;;;N;;;;2CD1;
-2CD1;COPTIC SMALL LETTER L-SHAPED HA;Ll;0;L;;;;;N;;;2CD0;;2CD0
-2CD2;COPTIC CAPITAL LETTER OLD COPTIC HEI;Lu;0;L;;;;;N;;;;2CD3;
-2CD3;COPTIC SMALL LETTER OLD COPTIC HEI;Ll;0;L;;;;;N;;;2CD2;;2CD2
-2CD4;COPTIC CAPITAL LETTER OLD COPTIC HAT;Lu;0;L;;;;;N;;;;2CD5;
-2CD5;COPTIC SMALL LETTER OLD COPTIC HAT;Ll;0;L;;;;;N;;;2CD4;;2CD4
-2CD6;COPTIC CAPITAL LETTER OLD COPTIC GANGIA;Lu;0;L;;;;;N;;;;2CD7;
-2CD7;COPTIC SMALL LETTER OLD COPTIC GANGIA;Ll;0;L;;;;;N;;;2CD6;;2CD6
-2CD8;COPTIC CAPITAL LETTER OLD COPTIC DJA;Lu;0;L;;;;;N;;;;2CD9;
-2CD9;COPTIC SMALL LETTER OLD COPTIC DJA;Ll;0;L;;;;;N;;;2CD8;;2CD8
-2CDA;COPTIC CAPITAL LETTER OLD COPTIC SHIMA;Lu;0;L;;;;;N;;;;2CDB;
-2CDB;COPTIC SMALL LETTER OLD COPTIC SHIMA;Ll;0;L;;;;;N;;;2CDA;;2CDA
-2CDC;COPTIC CAPITAL LETTER OLD NUBIAN SHIMA;Lu;0;L;;;;;N;;;;2CDD;
-2CDD;COPTIC SMALL LETTER OLD NUBIAN SHIMA;Ll;0;L;;;;;N;;;2CDC;;2CDC
-2CDE;COPTIC CAPITAL LETTER OLD NUBIAN NGI;Lu;0;L;;;;;N;;;;2CDF;
-2CDF;COPTIC SMALL LETTER OLD NUBIAN NGI;Ll;0;L;;;;;N;;;2CDE;;2CDE
-2CE0;COPTIC CAPITAL LETTER OLD NUBIAN NYI;Lu;0;L;;;;;N;;;;2CE1;
-2CE1;COPTIC SMALL LETTER OLD NUBIAN NYI;Ll;0;L;;;;;N;;;2CE0;;2CE0
-2CE2;COPTIC CAPITAL LETTER OLD NUBIAN WAU;Lu;0;L;;;;;N;;;;2CE3;
-2CE3;COPTIC SMALL LETTER OLD NUBIAN WAU;Ll;0;L;;;;;N;;;2CE2;;2CE2
-2CE4;COPTIC SYMBOL KAI;Ll;0;L;;;;;N;;;;;
-2CE5;COPTIC SYMBOL MI RO;So;0;ON;;;;;N;;;;;
-2CE6;COPTIC SYMBOL PI RO;So;0;ON;;;;;N;;;;;
-2CE7;COPTIC SYMBOL STAUROS;So;0;ON;;;;;N;;;;;
-2CE8;COPTIC SYMBOL TAU RO;So;0;ON;;;;;N;;;;;
-2CE9;COPTIC SYMBOL KHI RO;So;0;ON;;;;;N;;;;;
-2CEA;COPTIC SYMBOL SHIMA SIMA;So;0;ON;;;;;N;;;;;
-2CF9;COPTIC OLD NUBIAN FULL STOP;Po;0;ON;;;;;N;;;;;
-2CFA;COPTIC OLD NUBIAN DIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;;
-2CFB;COPTIC OLD NUBIAN INDIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;;
-2CFC;COPTIC OLD NUBIAN VERSE DIVIDER;Po;0;ON;;;;;N;;;;;
-2CFD;COPTIC FRACTION ONE HALF;No;0;ON;;;;1/2;N;;;;;
-2CFE;COPTIC FULL STOP;Po;0;ON;;;;;N;;;;;
-2CFF;COPTIC MORPHOLOGICAL DIVIDER;Po;0;ON;;;;;N;;;;;
-2D00;GEORGIAN SMALL LETTER AN;Ll;0;L;;;;;N;;Khutsuri;10A0;;10A0
-2D01;GEORGIAN SMALL LETTER BAN;Ll;0;L;;;;;N;;Khutsuri;10A1;;10A1
-2D02;GEORGIAN SMALL LETTER GAN;Ll;0;L;;;;;N;;Khutsuri;10A2;;10A2
-2D03;GEORGIAN SMALL LETTER DON;Ll;0;L;;;;;N;;Khutsuri;10A3;;10A3
-2D04;GEORGIAN SMALL LETTER EN;Ll;0;L;;;;;N;;Khutsuri;10A4;;10A4
-2D05;GEORGIAN SMALL LETTER VIN;Ll;0;L;;;;;N;;Khutsuri;10A5;;10A5
-2D06;GEORGIAN SMALL LETTER ZEN;Ll;0;L;;;;;N;;Khutsuri;10A6;;10A6
-2D07;GEORGIAN SMALL LETTER TAN;Ll;0;L;;;;;N;;Khutsuri;10A7;;10A7
-2D08;GEORGIAN SMALL LETTER IN;Ll;0;L;;;;;N;;Khutsuri;10A8;;10A8
-2D09;GEORGIAN SMALL LETTER KAN;Ll;0;L;;;;;N;;Khutsuri;10A9;;10A9
-2D0A;GEORGIAN SMALL LETTER LAS;Ll;0;L;;;;;N;;Khutsuri;10AA;;10AA
-2D0B;GEORGIAN SMALL LETTER MAN;Ll;0;L;;;;;N;;Khutsuri;10AB;;10AB
-2D0C;GEORGIAN SMALL LETTER NAR;Ll;0;L;;;;;N;;Khutsuri;10AC;;10AC
-2D0D;GEORGIAN SMALL LETTER ON;Ll;0;L;;;;;N;;Khutsuri;10AD;;10AD
-2D0E;GEORGIAN SMALL LETTER PAR;Ll;0;L;;;;;N;;Khutsuri;10AE;;10AE
-2D0F;GEORGIAN SMALL LETTER ZHAR;Ll;0;L;;;;;N;;Khutsuri;10AF;;10AF
-2D10;GEORGIAN SMALL LETTER RAE;Ll;0;L;;;;;N;;Khutsuri;10B0;;10B0
-2D11;GEORGIAN SMALL LETTER SAN;Ll;0;L;;;;;N;;Khutsuri;10B1;;10B1
-2D12;GEORGIAN SMALL LETTER TAR;Ll;0;L;;;;;N;;Khutsuri;10B2;;10B2
-2D13;GEORGIAN SMALL LETTER UN;Ll;0;L;;;;;N;;Khutsuri;10B3;;10B3
-2D14;GEORGIAN SMALL LETTER PHAR;Ll;0;L;;;;;N;;Khutsuri;10B4;;10B4
-2D15;GEORGIAN SMALL LETTER KHAR;Ll;0;L;;;;;N;;Khutsuri;10B5;;10B5
-2D16;GEORGIAN SMALL LETTER GHAN;Ll;0;L;;;;;N;;Khutsuri;10B6;;10B6
-2D17;GEORGIAN SMALL LETTER QAR;Ll;0;L;;;;;N;;Khutsuri;10B7;;10B7
-2D18;GEORGIAN SMALL LETTER SHIN;Ll;0;L;;;;;N;;Khutsuri;10B8;;10B8
-2D19;GEORGIAN SMALL LETTER CHIN;Ll;0;L;;;;;N;;Khutsuri;10B9;;10B9
-2D1A;GEORGIAN SMALL LETTER CAN;Ll;0;L;;;;;N;;Khutsuri;10BA;;10BA
-2D1B;GEORGIAN SMALL LETTER JIL;Ll;0;L;;;;;N;;Khutsuri;10BB;;10BB
-2D1C;GEORGIAN SMALL LETTER CIL;Ll;0;L;;;;;N;;Khutsuri;10BC;;10BC
-2D1D;GEORGIAN SMALL LETTER CHAR;Ll;0;L;;;;;N;;Khutsuri;10BD;;10BD
-2D1E;GEORGIAN SMALL LETTER XAN;Ll;0;L;;;;;N;;Khutsuri;10BE;;10BE
-2D1F;GEORGIAN SMALL LETTER JHAN;Ll;0;L;;;;;N;;Khutsuri;10BF;;10BF
-2D20;GEORGIAN SMALL LETTER HAE;Ll;0;L;;;;;N;;Khutsuri;10C0;;10C0
-2D21;GEORGIAN SMALL LETTER HE;Ll;0;L;;;;;N;;Khutsuri;10C1;;10C1
-2D22;GEORGIAN SMALL LETTER HIE;Ll;0;L;;;;;N;;Khutsuri;10C2;;10C2
-2D23;GEORGIAN SMALL LETTER WE;Ll;0;L;;;;;N;;Khutsuri;10C3;;10C3
-2D24;GEORGIAN SMALL LETTER HAR;Ll;0;L;;;;;N;;Khutsuri;10C4;;10C4
-2D25;GEORGIAN SMALL LETTER HOE;Ll;0;L;;;;;N;;Khutsuri;10C5;;10C5
-2D30;TIFINAGH LETTER YA;Lo;0;L;;;;;N;;;;;
-2D31;TIFINAGH LETTER YAB;Lo;0;L;;;;;N;;;;;
-2D32;TIFINAGH LETTER YABH;Lo;0;L;;;;;N;;;;;
-2D33;TIFINAGH LETTER YAG;Lo;0;L;;;;;N;;;;;
-2D34;TIFINAGH LETTER YAGHH;Lo;0;L;;;;;N;;;;;
-2D35;TIFINAGH LETTER BERBER ACADEMY YAJ;Lo;0;L;;;;;N;;;;;
-2D36;TIFINAGH LETTER YAJ;Lo;0;L;;;;;N;;;;;
-2D37;TIFINAGH LETTER YAD;Lo;0;L;;;;;N;;;;;
-2D38;TIFINAGH LETTER YADH;Lo;0;L;;;;;N;;;;;
-2D39;TIFINAGH LETTER YADD;Lo;0;L;;;;;N;;;;;
-2D3A;TIFINAGH LETTER YADDH;Lo;0;L;;;;;N;;;;;
-2D3B;TIFINAGH LETTER YEY;Lo;0;L;;;;;N;;;;;
-2D3C;TIFINAGH LETTER YAF;Lo;0;L;;;;;N;;;;;
-2D3D;TIFINAGH LETTER YAK;Lo;0;L;;;;;N;;;;;
-2D3E;TIFINAGH LETTER TUAREG YAK;Lo;0;L;;;;;N;;;;;
-2D3F;TIFINAGH LETTER YAKHH;Lo;0;L;;;;;N;;;;;
-2D40;TIFINAGH LETTER YAH;Lo;0;L;;;;;N;;Tuareg yab;;;
-2D41;TIFINAGH LETTER BERBER ACADEMY YAH;Lo;0;L;;;;;N;;;;;
-2D42;TIFINAGH LETTER TUAREG YAH;Lo;0;L;;;;;N;;;;;
-2D43;TIFINAGH LETTER YAHH;Lo;0;L;;;;;N;;;;;
-2D44;TIFINAGH LETTER YAA;Lo;0;L;;;;;N;;;;;
-2D45;TIFINAGH LETTER YAKH;Lo;0;L;;;;;N;;;;;
-2D46;TIFINAGH LETTER TUAREG YAKH;Lo;0;L;;;;;N;;;;;
-2D47;TIFINAGH LETTER YAQ;Lo;0;L;;;;;N;;;;;
-2D48;TIFINAGH LETTER TUAREG YAQ;Lo;0;L;;;;;N;;;;;
-2D49;TIFINAGH LETTER YI;Lo;0;L;;;;;N;;;;;
-2D4A;TIFINAGH LETTER YAZH;Lo;0;L;;;;;N;;;;;
-2D4B;TIFINAGH LETTER AHAGGAR YAZH;Lo;0;L;;;;;N;;;;;
-2D4C;TIFINAGH LETTER TUAREG YAZH;Lo;0;L;;;;;N;;;;;
-2D4D;TIFINAGH LETTER YAL;Lo;0;L;;;;;N;;;;;
-2D4E;TIFINAGH LETTER YAM;Lo;0;L;;;;;N;;;;;
-2D4F;TIFINAGH LETTER YAN;Lo;0;L;;;;;N;;;;;
-2D50;TIFINAGH LETTER TUAREG YAGN;Lo;0;L;;;;;N;;;;;
-2D51;TIFINAGH LETTER TUAREG YANG;Lo;0;L;;;;;N;;;;;
-2D52;TIFINAGH LETTER YAP;Lo;0;L;;;;;N;;;;;
-2D53;TIFINAGH LETTER YU;Lo;0;L;;;;;N;;Tuareg yaw;;;
-2D54;TIFINAGH LETTER YAR;Lo;0;L;;;;;N;;;;;
-2D55;TIFINAGH LETTER YARR;Lo;0;L;;;;;N;;;;;
-2D56;TIFINAGH LETTER YAGH;Lo;0;L;;;;;N;;;;;
-2D57;TIFINAGH LETTER TUAREG YAGH;Lo;0;L;;;;;N;;;;;
-2D58;TIFINAGH LETTER AYER YAGH;Lo;0;L;;;;;N;;Adrar yaj;;;
-2D59;TIFINAGH LETTER YAS;Lo;0;L;;;;;N;;;;;
-2D5A;TIFINAGH LETTER YASS;Lo;0;L;;;;;N;;;;;
-2D5B;TIFINAGH LETTER YASH;Lo;0;L;;;;;N;;;;;
-2D5C;TIFINAGH LETTER YAT;Lo;0;L;;;;;N;;;;;
-2D5D;TIFINAGH LETTER YATH;Lo;0;L;;;;;N;;;;;
-2D5E;TIFINAGH LETTER YACH;Lo;0;L;;;;;N;;;;;
-2D5F;TIFINAGH LETTER YATT;Lo;0;L;;;;;N;;;;;
-2D60;TIFINAGH LETTER YAV;Lo;0;L;;;;;N;;;;;
-2D61;TIFINAGH LETTER YAW;Lo;0;L;;;;;N;;;;;
-2D62;TIFINAGH LETTER YAY;Lo;0;L;;;;;N;;;;;
-2D63;TIFINAGH LETTER YAZ;Lo;0;L;;;;;N;;;;;
-2D64;TIFINAGH LETTER TAWELLEMET YAZ;Lo;0;L;;;;;N;;harpoon yaz;;;
-2D65;TIFINAGH LETTER YAZZ;Lo;0;L;;;;;N;;;;;
-2D6F;TIFINAGH MODIFIER LETTER LABIALIZATION MARK;Lm;0;L;<super> 2D61;;;;N;;tamatart;;;
-2D80;ETHIOPIC SYLLABLE LOA;Lo;0;L;;;;;N;;;;;
-2D81;ETHIOPIC SYLLABLE MOA;Lo;0;L;;;;;N;;;;;
-2D82;ETHIOPIC SYLLABLE ROA;Lo;0;L;;;;;N;;;;;
-2D83;ETHIOPIC SYLLABLE SOA;Lo;0;L;;;;;N;;;;;
-2D84;ETHIOPIC SYLLABLE SHOA;Lo;0;L;;;;;N;;;;;
-2D85;ETHIOPIC SYLLABLE BOA;Lo;0;L;;;;;N;;;;;
-2D86;ETHIOPIC SYLLABLE TOA;Lo;0;L;;;;;N;;;;;
-2D87;ETHIOPIC SYLLABLE COA;Lo;0;L;;;;;N;;;;;
-2D88;ETHIOPIC SYLLABLE NOA;Lo;0;L;;;;;N;;;;;
-2D89;ETHIOPIC SYLLABLE NYOA;Lo;0;L;;;;;N;;;;;
-2D8A;ETHIOPIC SYLLABLE GLOTTAL OA;Lo;0;L;;;;;N;;;;;
-2D8B;ETHIOPIC SYLLABLE ZOA;Lo;0;L;;;;;N;;;;;
-2D8C;ETHIOPIC SYLLABLE DOA;Lo;0;L;;;;;N;;;;;
-2D8D;ETHIOPIC SYLLABLE DDOA;Lo;0;L;;;;;N;;;;;
-2D8E;ETHIOPIC SYLLABLE JOA;Lo;0;L;;;;;N;;;;;
-2D8F;ETHIOPIC SYLLABLE THOA;Lo;0;L;;;;;N;;;;;
-2D90;ETHIOPIC SYLLABLE CHOA;Lo;0;L;;;;;N;;;;;
-2D91;ETHIOPIC SYLLABLE PHOA;Lo;0;L;;;;;N;;;;;
-2D92;ETHIOPIC SYLLABLE POA;Lo;0;L;;;;;N;;;;;
-2D93;ETHIOPIC SYLLABLE GGWA;Lo;0;L;;;;;N;;;;;
-2D94;ETHIOPIC SYLLABLE GGWI;Lo;0;L;;;;;N;;;;;
-2D95;ETHIOPIC SYLLABLE GGWEE;Lo;0;L;;;;;N;;;;;
-2D96;ETHIOPIC SYLLABLE GGWE;Lo;0;L;;;;;N;;;;;
-2DA0;ETHIOPIC SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
-2DA1;ETHIOPIC SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
-2DA2;ETHIOPIC SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
-2DA3;ETHIOPIC SYLLABLE SSAA;Lo;0;L;;;;;N;;;;;
-2DA4;ETHIOPIC SYLLABLE SSEE;Lo;0;L;;;;;N;;;;;
-2DA5;ETHIOPIC SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
-2DA6;ETHIOPIC SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
-2DA8;ETHIOPIC SYLLABLE CCA;Lo;0;L;;;;;N;;;;;
-2DA9;ETHIOPIC SYLLABLE CCU;Lo;0;L;;;;;N;;;;;
-2DAA;ETHIOPIC SYLLABLE CCI;Lo;0;L;;;;;N;;;;;
-2DAB;ETHIOPIC SYLLABLE CCAA;Lo;0;L;;;;;N;;;;;
-2DAC;ETHIOPIC SYLLABLE CCEE;Lo;0;L;;;;;N;;;;;
-2DAD;ETHIOPIC SYLLABLE CCE;Lo;0;L;;;;;N;;;;;
-2DAE;ETHIOPIC SYLLABLE CCO;Lo;0;L;;;;;N;;;;;
-2DB0;ETHIOPIC SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
-2DB1;ETHIOPIC SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
-2DB2;ETHIOPIC SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
-2DB3;ETHIOPIC SYLLABLE ZZAA;Lo;0;L;;;;;N;;;;;
-2DB4;ETHIOPIC SYLLABLE ZZEE;Lo;0;L;;;;;N;;;;;
-2DB5;ETHIOPIC SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
-2DB6;ETHIOPIC SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
-2DB8;ETHIOPIC SYLLABLE CCHA;Lo;0;L;;;;;N;;;;;
-2DB9;ETHIOPIC SYLLABLE CCHU;Lo;0;L;;;;;N;;;;;
-2DBA;ETHIOPIC SYLLABLE CCHI;Lo;0;L;;;;;N;;;;;
-2DBB;ETHIOPIC SYLLABLE CCHAA;Lo;0;L;;;;;N;;;;;
-2DBC;ETHIOPIC SYLLABLE CCHEE;Lo;0;L;;;;;N;;;;;
-2DBD;ETHIOPIC SYLLABLE CCHE;Lo;0;L;;;;;N;;;;;
-2DBE;ETHIOPIC SYLLABLE CCHO;Lo;0;L;;;;;N;;;;;
-2DC0;ETHIOPIC SYLLABLE QYA;Lo;0;L;;;;;N;;;;;
-2DC1;ETHIOPIC SYLLABLE QYU;Lo;0;L;;;;;N;;;;;
-2DC2;ETHIOPIC SYLLABLE QYI;Lo;0;L;;;;;N;;;;;
-2DC3;ETHIOPIC SYLLABLE QYAA;Lo;0;L;;;;;N;;;;;
-2DC4;ETHIOPIC SYLLABLE QYEE;Lo;0;L;;;;;N;;;;;
-2DC5;ETHIOPIC SYLLABLE QYE;Lo;0;L;;;;;N;;;;;
-2DC6;ETHIOPIC SYLLABLE QYO;Lo;0;L;;;;;N;;;;;
-2DC8;ETHIOPIC SYLLABLE KYA;Lo;0;L;;;;;N;;;;;
-2DC9;ETHIOPIC SYLLABLE KYU;Lo;0;L;;;;;N;;;;;
-2DCA;ETHIOPIC SYLLABLE KYI;Lo;0;L;;;;;N;;;;;
-2DCB;ETHIOPIC SYLLABLE KYAA;Lo;0;L;;;;;N;;;;;
-2DCC;ETHIOPIC SYLLABLE KYEE;Lo;0;L;;;;;N;;;;;
-2DCD;ETHIOPIC SYLLABLE KYE;Lo;0;L;;;;;N;;;;;
-2DCE;ETHIOPIC SYLLABLE KYO;Lo;0;L;;;;;N;;;;;
-2DD0;ETHIOPIC SYLLABLE XYA;Lo;0;L;;;;;N;;;;;
-2DD1;ETHIOPIC SYLLABLE XYU;Lo;0;L;;;;;N;;;;;
-2DD2;ETHIOPIC SYLLABLE XYI;Lo;0;L;;;;;N;;;;;
-2DD3;ETHIOPIC SYLLABLE XYAA;Lo;0;L;;;;;N;;;;;
-2DD4;ETHIOPIC SYLLABLE XYEE;Lo;0;L;;;;;N;;;;;
-2DD5;ETHIOPIC SYLLABLE XYE;Lo;0;L;;;;;N;;;;;
-2DD6;ETHIOPIC SYLLABLE XYO;Lo;0;L;;;;;N;;;;;
-2DD8;ETHIOPIC SYLLABLE GYA;Lo;0;L;;;;;N;;;;;
-2DD9;ETHIOPIC SYLLABLE GYU;Lo;0;L;;;;;N;;;;;
-2DDA;ETHIOPIC SYLLABLE GYI;Lo;0;L;;;;;N;;;;;
-2DDB;ETHIOPIC SYLLABLE GYAA;Lo;0;L;;;;;N;;;;;
-2DDC;ETHIOPIC SYLLABLE GYEE;Lo;0;L;;;;;N;;;;;
-2DDD;ETHIOPIC SYLLABLE GYE;Lo;0;L;;;;;N;;;;;
-2DDE;ETHIOPIC SYLLABLE GYO;Lo;0;L;;;;;N;;;;;
-2E00;RIGHT ANGLE SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;;
-2E01;RIGHT ANGLE DOTTED SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;;
-2E02;LEFT SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;;
-2E03;RIGHT SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;;
-2E04;LEFT DOTTED SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;;
-2E05;RIGHT DOTTED SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;;
-2E06;RAISED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;;
-2E07;RAISED DOTTED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;;
-2E08;DOTTED TRANSPOSITION MARKER;Po;0;ON;;;;;N;;;;;
-2E09;LEFT TRANSPOSITION BRACKET;Pi;0;ON;;;;;Y;;;;;
-2E0A;RIGHT TRANSPOSITION BRACKET;Pf;0;ON;;;;;Y;;;;;
-2E0B;RAISED SQUARE;Po;0;ON;;;;;N;;;;;
-2E0C;LEFT RAISED OMISSION BRACKET;Pi;0;ON;;;;;Y;;;;;
-2E0D;RIGHT RAISED OMISSION BRACKET;Pf;0;ON;;;;;Y;;;;;
-2E0E;EDITORIAL CORONIS;Po;0;ON;;;;;N;;;;;
-2E0F;PARAGRAPHOS;Po;0;ON;;;;;N;;;;;
-2E10;FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;;
-2E11;REVERSED FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;;
-2E12;HYPODIASTOLE;Po;0;ON;;;;;N;;;;;
-2E13;DOTTED OBELOS;Po;0;ON;;;;;N;;;;;
-2E14;DOWNWARDS ANCORA;Po;0;ON;;;;;N;;;;;
-2E15;UPWARDS ANCORA;Po;0;ON;;;;;N;;;;;
-2E16;DOTTED RIGHT-POINTING ANGLE;Po;0;ON;;;;;N;;;;;
-2E17;DOUBLE OBLIQUE HYPHEN;Pd;0;ON;;;;;N;;;;;
-2E1C;LEFT LOW PARAPHRASE BRACKET;Pi;0;ON;;;;;Y;;;;;
-2E1D;RIGHT LOW PARAPHRASE BRACKET;Pf;0;ON;;;;;Y;;;;;
-2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
-2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
-2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
-2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;;
-2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;;
-2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;;
-2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;;
-2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;;
-2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;;
-2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;;
-2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;;
-2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;;
-2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;;
-2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;;
-2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;;
-2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;;
-2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;;
-2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;;
-2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;;
-2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;;
-2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;;
-2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;;
-2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;;
-2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;;
-2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;;
-2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;;
-2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;;
-2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;;
-2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;;
-2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;;
-2E9F;CJK RADICAL MOTHER;So;0;ON;<compat> 6BCD;;;;N;;;;;
-2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;;
-2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;;
-2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;;
-2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;;
-2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;;
-2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;;
-2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;;
-2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;;
-2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;;
-2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;;
-2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;;
-2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;;
-2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;;
-2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;;
-2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;;
-2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;;
-2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;;
-2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;;
-2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;;
-2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;;
-2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;;
-2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;;
-2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;;
-2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;;
-2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;;
-2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;;
-2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;;
-2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;;
-2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;;
-2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;;
-2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;;
-2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;;
-2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;;
-2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;;
-2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;;
-2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;;
-2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;;
-2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;;
-2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;;
-2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;;
-2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;;
-2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;;
-2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;;
-2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;;
-2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;;
-2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;;
-2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;;
-2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;;
-2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;;
-2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;;
-2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;;
-2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;;
-2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;;
-2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;;
-2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;;
-2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;;
-2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;;
-2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;;
-2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;;
-2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;;
-2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;;
-2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;;
-2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;;
-2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;;
-2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;;
-2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;;
-2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;;
-2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;;
-2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;;
-2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;;
-2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;;
-2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;;
-2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;;
-2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;;
-2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;;
-2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
-2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
-2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
-2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
-2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
-2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
-2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;;
-2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;;
-2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON;<compat> 9F9F;;;;N;;;;;
-2F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;;
-2F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;;
-2F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;;
-2F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;;
-2F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;;
-2F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;;
-2F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;;
-2F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;;
-2F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;;
-2F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;;
-2F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;;
-2F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;;
-2F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;;
-2F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;;
-2F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;;
-2F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;;
-2F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;;
-2F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;;
-2F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;;
-2F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;;
-2F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;;
-2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;;
-2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;;
-2F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;;
-2F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;;
-2F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;;
-2F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;;
-2F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;;
-2F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;;
-2F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;;
-2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;;
-2F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;;
-2F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;;
-2F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;;
-2F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;;
-2F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;;
-2F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;;
-2F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;;
-2F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;;
-2F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;;
-2F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;;
-2F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;;
-2F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;;
-2F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;;
-2F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;;
-2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;;
-2F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;;
-2F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;;
-2F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;;
-2F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;;
-2F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;;
-2F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;;
-2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;;
-2F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;;
-2F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;;
-2F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;;
-2F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;;
-2F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;;
-2F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;;
-2F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;;
-2F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;;
-2F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;;
-2F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;;
-2F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;;
-2F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;;
-2F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;;
-2F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;;
-2F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;;
-2F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;;
-2F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;;
-2F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;;
-2F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;;
-2F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;;
-2F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;;
-2F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;;
-2F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;;
-2F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;;
-2F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;;
-2F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;;
-2F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;;
-2F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;;
-2F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;;
-2F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;;
-2F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;;
-2F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;;
-2F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;;
-2F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;;
-2F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;;
-2F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;;
-2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;;
-2F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;;
-2F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;;
-2F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;;
-2F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;;
-2F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;;
-2F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;;
-2F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;;
-2F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;;
-2F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;;
-2F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;;
-2F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;;
-2F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;;
-2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;;
-2F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;;
-2F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;;
-2F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;;
-2F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;;
-2F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;;
-2F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;;
-2F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;;
-2F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;;
-2F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;;
-2F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;;
-2F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;;
-2F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;;
-2F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;;
-2F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;;
-2F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;;
-2F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;;
-2F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;;
-2F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;;
-2F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;;
-2F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;;
-2F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;;
-2F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;;
-2F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;;
-2F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;;
-2F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;;
-2F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;;
-2F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;;
-2F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;;
-2F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;;
-2F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;;
-2F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;;
-2F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;;
-2F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;;
-2F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;;
-2F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;;
-2F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;;
-2F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;;
-2F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;;
-2F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;;
-2F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;;
-2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;;
-2F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;;
-2F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;;
-2F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;;
-2F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;;
-2F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;;
-2F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;;
-2F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;;
-2F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;;
-2F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;;
-2F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;;
-2F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;;
-2F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;;
-2F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;;
-2F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;;
-2F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;;
-2F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;;
-2FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;;
-2FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;;
-2FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;;
-2FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;;
-2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;;
-2FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;;
-2FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;;
-2FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;;
-2FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;;
-2FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;;
-2FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;;
-2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;;
-2FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;;
-2FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;;
-2FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;;
-2FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;;
-2FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;;
-2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;;
-2FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;;
-2FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;;
-2FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;;
-2FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;;
-2FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;;
-2FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;;
-2FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;;
-2FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;;
-2FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;;
-2FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;;
-2FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;;
-2FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;;
-2FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;;
-2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;;
-2FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;;
-2FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;;
-2FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;;
-2FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;;
-2FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;;
-2FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;;
-2FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;;
-2FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;;
-2FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;;
-2FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;;
-2FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;;
-2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;;
-2FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;;
-2FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;;
-2FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;;
-2FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;;
-2FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;;
-2FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;;
-2FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;;
-2FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;;
-2FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;;
-2FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 9FA0;;;;N;;;;;
-2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;;
-2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;;
-2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;;
-2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;;
-2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;;
-2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;;
-2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;;
-2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;;
-2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;;
-2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;;
-2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;;
-2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;;
-3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;
-3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;
-3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;
-3003;DITTO MARK;Po;0;ON;;;;;N;;;;;
-3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;;
-3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
-3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;;
-3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;;
-3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;;
-3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;;
-300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;;
-300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;;
-300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;;
-300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;;
-300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;;
-300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;;
-3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;;
-3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;;
-3012;POSTAL MARK;So;0;ON;;;;;N;;;;;
-3013;GETA MARK;So;0;ON;;;;;N;;;;;
-3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;;
-3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;;
-3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;;
-3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;;
-3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;;
-3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;;
-301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;;
-301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;;
-301C;WAVE DASH;Pd;0;ON;;;;;N;;;;;
-301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;;
-301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
-301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
-3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;;
-3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;;
-3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;;
-3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;;
-3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;;
-3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;;
-3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;;
-3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;;
-3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;;
-3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;;
-302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;;
-302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;;
-302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;;
-302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;;
-302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
-302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
-3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
-3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;;
-3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;;
-3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
-3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
-3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;;
-3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
-3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;
-3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;;
-3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;;
-303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;;
-303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
-303C;MASU MARK;Lo;0;L;;;;;N;;;;;
-303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;;
-303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;;
-303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;;
-3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
-3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
-3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
-3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;;
-3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
-3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;;
-3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
-3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;;
-3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
-304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;;
-304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;;
-304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;;
-304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;;
-304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;;
-304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;;
-3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;;
-3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;;
-3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;;
-3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;;
-3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;;
-3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;;
-3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;;
-3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;;
-3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;;
-3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;;
-305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;;
-305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;;
-305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;;
-305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;;
-305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;;
-305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;;
-3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;;
-3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;;
-3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;;
-3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
-3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;;
-3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;;
-3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;;
-3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;;
-3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;;
-3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;;
-306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;;
-306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;;
-306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;;
-306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;;
-306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;;
-306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;;
-3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;;
-3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;;
-3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;;
-3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;;
-3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;;
-3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;;
-3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;;
-3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;;
-3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;;
-3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;;
-307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;;
-307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;;
-307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;;
-307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;;
-307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;;
-307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;;
-3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;;
-3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;;
-3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;;
-3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
-3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;;
-3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
-3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;;
-3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
-3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;;
-3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;;
-308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;;
-308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;;
-308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;;
-308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;;
-308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
-308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;;
-3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;;
-3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;;
-3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;;
-3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;;
-3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;;
-3095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
-3096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
-3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
-309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
-309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;;
-309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;;
-309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
-309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;;
-309F;HIRAGANA DIGRAPH YORI;Lo;0;L;<vertical> 3088 308A;;;;N;;;;;
-30A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;;
-30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
-30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;
-30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
-30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;;
-30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
-30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;;
-30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
-30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;;
-30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
-30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;;
-30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;;
-30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;;
-30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;;
-30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;;
-30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;;
-30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;;
-30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;;
-30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;;
-30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;;
-30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;;
-30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;;
-30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;;
-30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;;
-30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;;
-30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;;
-30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;;
-30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;;
-30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;;
-30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;;
-30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;;
-30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;;
-30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;;
-30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;;
-30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;;
-30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
-30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;;
-30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;;
-30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;;
-30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;;
-30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;;
-30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;;
-30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;;
-30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;;
-30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;;
-30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;;
-30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;;
-30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;;
-30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;;
-30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;;
-30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;;
-30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;;
-30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;;
-30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;;
-30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;;
-30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;;
-30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;;
-30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;;
-30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;;
-30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;;
-30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;;
-30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;;
-30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;;
-30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;;
-30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;;
-30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;;
-30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;;
-30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
-30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;;
-30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
-30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;;
-30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
-30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;;
-30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;;
-30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;;
-30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;;
-30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;;
-30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;;
-30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
-30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;;
-30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;;
-30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;;
-30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;;
-30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;;
-30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;;
-30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
-30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
-30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;;
-30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;;
-30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;;
-30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;;
-30FB;KATAKANA MIDDLE DOT;Po;0;ON;;;;;N;;;;;
-30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;;
-30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
-30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;;
-30FF;KATAKANA DIGRAPH KOTO;Lo;0;L;<vertical> 30B3 30C8;;;;N;;;;;
-3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;;
-3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;;
-3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;;
-3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;;
-3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;;
-310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;;
-310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;;
-310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;;
-310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;;
-310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;;
-310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;;
-3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;;
-3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;;
-3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;;
-3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;;
-3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;;
-3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;;
-3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;;
-3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;;
-3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;;
-3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;;
-311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;;
-311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;;
-311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;;
-311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;;
-311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;;
-311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;;
-3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;;
-3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;;
-3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;;
-3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;;
-3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;;
-3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;;
-3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;;
-3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;;
-3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;;
-3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;;
-312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;;
-312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;;
-312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
-3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
-3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
-3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
-3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;
-3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;
-3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;
-3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;
-3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;
-3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;
-313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;
-313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;
-313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;
-313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;
-313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;
-313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;
-3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;
-3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;
-3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;
-3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;
-3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;
-3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;
-3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;
-3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;
-3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;
-3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;
-314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;
-314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;
-314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;
-314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;
-314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;
-314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;
-3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;
-3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;
-3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;
-3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;
-3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;
-3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;
-3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;
-3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;
-3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;
-3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;
-315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;
-315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;
-315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;
-315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;
-315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;
-315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;
-3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;
-3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;
-3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;
-3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;
-3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;
-3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;
-3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;
-3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;
-3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;
-3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;
-316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;
-316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;
-316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;
-316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;
-316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;
-316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;
-3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;
-3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;
-3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;
-3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;
-3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;
-3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;
-3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;
-3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;
-3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;
-3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;
-317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;
-317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;
-317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;
-317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;
-317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;
-317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;
-3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;
-3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;
-3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;
-3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;
-3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;
-3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;
-3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;
-3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;
-3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;
-3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;
-318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;
-318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;
-318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;
-318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;
-318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
-3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;;
-3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;;
-3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;1;N;KAERITEN ITI;Kaeriten;;;
-3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;2;N;KAERITEN NI;Kaeriten;;;
-3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;3;N;KAERITEN SAN;Kaeriten;;;
-3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;4;N;KAERITEN SI;Kaeriten;;;
-3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;;
-3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;;
-3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;Kaeriten;;;
-3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;Kaeriten;;;
-319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;Kaeriten;;;
-319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;Kaeriten;;;
-319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;Kaeriten;;;
-319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;Kaeriten;;;
-319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;Kaeriten;;;
-319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;;
-31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;;
-31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;;
-31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;;
-31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;;
-31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;;
-31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;;
-31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;;
-31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;;
-31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;;
-31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;;
-31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;;
-31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;;
-31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;;
-31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;;
-31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;;
-31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;;
-31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;;
-31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;;
-31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;;
-31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;;
-31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;;
-31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;;
-31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;;
-31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;;
-31C0;CJK STROKE T;So;0;ON;;;;;N;;;;;
-31C1;CJK STROKE WG;So;0;ON;;;;;N;;;;;
-31C2;CJK STROKE XG;So;0;ON;;;;;N;;;;;
-31C3;CJK STROKE BXG;So;0;ON;;;;;N;;;;;
-31C4;CJK STROKE SW;So;0;ON;;;;;N;;;;;
-31C5;CJK STROKE HZZ;So;0;ON;;;;;N;;;;;
-31C6;CJK STROKE HZG;So;0;ON;;;;;N;;;;;
-31C7;CJK STROKE HP;So;0;ON;;;;;N;;;;;
-31C8;CJK STROKE HZWG;So;0;ON;;;;;N;;;;;
-31C9;CJK STROKE SZWG;So;0;ON;;;;;N;;;;;
-31CA;CJK STROKE HZT;So;0;ON;;;;;N;;;;;
-31CB;CJK STROKE HZZP;So;0;ON;;;;;N;;;;;
-31CC;CJK STROKE HPWG;So;0;ON;;;;;N;;;;;
-31CD;CJK STROKE HZW;So;0;ON;;;;;N;;;;;
-31CE;CJK STROKE HZZZ;So;0;ON;;;;;N;;;;;
-31CF;CJK STROKE N;So;0;ON;;;;;N;;;;;
-31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;;
-31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;;
-31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;;
-31F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;;
-31F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;;
-31F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;;
-31F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;;
-31F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;;
-31F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;;
-31F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;;
-31FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;;
-31FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;;
-31FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;;
-31FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;;
-31FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;;
-31FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;;
-3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;
-3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;
-3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;
-3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;
-3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;
-3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;
-3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;
-3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;
-3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;
-3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;
-320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;
-320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;
-320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;
-320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;
-320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;
-320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;
-3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;
-3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;
-3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;
-3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;
-3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;
-3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;
-3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;
-3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;
-3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;
-3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;
-321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;
-321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;
-321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;
-321D;PARENTHESIZED KOREAN CHARACTER OJEON;So;0;ON;<compat> 0028 110B 1169 110C 1165 11AB 0029;;;;N;;;;;
-321E;PARENTHESIZED KOREAN CHARACTER O HU;So;0;ON;<compat> 0028 110B 1169 1112 116E 0029;;;;N;;;;;
-3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;1;N;;;;;
-3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;2;N;;;;;
-3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;3;N;;;;;
-3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;4;N;;;;;
-3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;5;N;;;;;
-3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;6;N;;;;;
-3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;7;N;;;;;
-3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;8;N;;;;;
-3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;9;N;;;;;
-3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;10;N;;;;;
-322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;
-322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;
-322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;
-322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;
-322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;
-322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;
-3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;
-3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;
-3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;
-3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;
-3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;
-3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;
-3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;
-3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;
-3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;
-3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;
-323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;
-323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;
-323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;
-323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;
-323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;
-323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;
-3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;
-3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;
-3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;
-3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;
-3250;PARTNERSHIP SIGN;So;0;ON;<square> 0050 0054 0045;;;;N;;;;;
-3251;CIRCLED NUMBER TWENTY ONE;No;0;ON;<circle> 0032 0031;;;21;N;;;;;
-3252;CIRCLED NUMBER TWENTY TWO;No;0;ON;<circle> 0032 0032;;;22;N;;;;;
-3253;CIRCLED NUMBER TWENTY THREE;No;0;ON;<circle> 0032 0033;;;23;N;;;;;
-3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON;<circle> 0032 0034;;;24;N;;;;;
-3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON;<circle> 0032 0035;;;25;N;;;;;
-3256;CIRCLED NUMBER TWENTY SIX;No;0;ON;<circle> 0032 0036;;;26;N;;;;;
-3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON;<circle> 0032 0037;;;27;N;;;;;
-3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON;<circle> 0032 0038;;;28;N;;;;;
-3259;CIRCLED NUMBER TWENTY NINE;No;0;ON;<circle> 0032 0039;;;29;N;;;;;
-325A;CIRCLED NUMBER THIRTY;No;0;ON;<circle> 0033 0030;;;30;N;;;;;
-325B;CIRCLED NUMBER THIRTY ONE;No;0;ON;<circle> 0033 0031;;;31;N;;;;;
-325C;CIRCLED NUMBER THIRTY TWO;No;0;ON;<circle> 0033 0032;;;32;N;;;;;
-325D;CIRCLED NUMBER THIRTY THREE;No;0;ON;<circle> 0033 0033;;;33;N;;;;;
-325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON;<circle> 0033 0034;;;34;N;;;;;
-325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON;<circle> 0033 0035;;;35;N;;;;;
-3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;
-3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;
-3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;
-3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;
-3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;
-3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;
-3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;
-3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;
-3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;
-3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;
-326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;
-326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;
-326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;
-326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;
-326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;
-326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;
-3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;
-3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;
-3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;
-3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;
-3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;
-3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;
-3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;
-3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;
-3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;
-3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;
-327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;
-327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;
-327C;CIRCLED KOREAN CHARACTER CHAMKO;So;0;ON;<circle> 110E 1161 11B7 1100 1169;;;;N;;;;;
-327D;CIRCLED KOREAN CHARACTER JUEUI;So;0;ON;<circle> 110C 116E 110B 1174;;;;N;;;;;
-327E;CIRCLED HANGUL IEUNG U;So;0;ON;<circle> 110B 116E;;;;N;;;;;
-327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;
-3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;
-3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;
-3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;
-3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;
-3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;
-3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;
-3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;
-3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;
-3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;
-3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;
-328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;
-328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;
-328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;
-328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;
-328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;
-328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;
-3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;
-3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;
-3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;
-3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;
-3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;
-3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;
-3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;
-3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;
-3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;
-3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;
-329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;
-329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;
-329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;
-329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;
-329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;
-329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;
-32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;
-32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;
-32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;
-32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;
-32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;
-32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;
-32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;
-32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;
-32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;
-32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;
-32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;
-32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;
-32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;
-32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;
-32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;
-32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;
-32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;
-32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON;<circle> 0033 0036;;;36;N;;;;;
-32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON;<circle> 0033 0037;;;37;N;;;;;
-32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON;<circle> 0033 0038;;;38;N;;;;;
-32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON;<circle> 0033 0039;;;39;N;;;;;
-32B5;CIRCLED NUMBER FORTY;No;0;ON;<circle> 0034 0030;;;40;N;;;;;
-32B6;CIRCLED NUMBER FORTY ONE;No;0;ON;<circle> 0034 0031;;;41;N;;;;;
-32B7;CIRCLED NUMBER FORTY TWO;No;0;ON;<circle> 0034 0032;;;42;N;;;;;
-32B8;CIRCLED NUMBER FORTY THREE;No;0;ON;<circle> 0034 0033;;;43;N;;;;;
-32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON;<circle> 0034 0034;;;44;N;;;;;
-32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON;<circle> 0034 0035;;;45;N;;;;;
-32BB;CIRCLED NUMBER FORTY SIX;No;0;ON;<circle> 0034 0036;;;46;N;;;;;
-32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON;<circle> 0034 0037;;;47;N;;;;;
-32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON;<circle> 0034 0038;;;48;N;;;;;
-32BE;CIRCLED NUMBER FORTY NINE;No;0;ON;<circle> 0034 0039;;;49;N;;;;;
-32BF;CIRCLED NUMBER FIFTY;No;0;ON;<circle> 0035 0030;;;50;N;;;;;
-32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;
-32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;
-32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;
-32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;
-32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;
-32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;
-32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;
-32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;
-32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;
-32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;
-32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;
-32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;
-32CC;SQUARE HG;So;0;ON;<square> 0048 0067;;;;N;;;;;
-32CD;SQUARE ERG;So;0;ON;<square> 0065 0072 0067;;;;N;;;;;
-32CE;SQUARE EV;So;0;ON;<square> 0065 0056;;;;N;;;;;
-32CF;LIMITED LIABILITY SIGN;So;0;ON;<square> 004C 0054 0044;;;;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;;;;;
-3377;SQUARE DM;So;0;ON;<square> 0064 006D;;;;N;;;;;
-3378;SQUARE DM SQUARED;So;0;ON;<square> 0064 006D 00B2;;;;N;;;;;
-3379;SQUARE DM CUBED;So;0;ON;<square> 0064 006D 00B3;;;;N;;;;;
-337A;SQUARE IU;So;0;ON;<square> 0049 0055;;;;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;;;;
-33DE;SQUARE V OVER M;So;0;ON;<square> 0056 2215 006D;;;;N;;;;;
-33DF;SQUARE A OVER M;So;0;ON;<square> 0041 2215 006D;;;;N;;;;;
-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;;;;;
-33FF;SQUARE GAL;So;0;ON;<square> 0067 0061 006C;;;;N;;;;;
-3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
-4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
-4DC0;HEXAGRAM FOR THE CREATIVE HEAVEN;So;0;ON;;;;;N;;;;;
-4DC1;HEXAGRAM FOR THE RECEPTIVE EARTH;So;0;ON;;;;;N;;;;;
-4DC2;HEXAGRAM FOR DIFFICULTY AT THE BEGINNING;So;0;ON;;;;;N;;;;;
-4DC3;HEXAGRAM FOR YOUTHFUL FOLLY;So;0;ON;;;;;N;;;;;
-4DC4;HEXAGRAM FOR WAITING;So;0;ON;;;;;N;;;;;
-4DC5;HEXAGRAM FOR CONFLICT;So;0;ON;;;;;N;;;;;
-4DC6;HEXAGRAM FOR THE ARMY;So;0;ON;;;;;N;;;;;
-4DC7;HEXAGRAM FOR HOLDING TOGETHER;So;0;ON;;;;;N;;;;;
-4DC8;HEXAGRAM FOR SMALL TAMING;So;0;ON;;;;;N;;;;;
-4DC9;HEXAGRAM FOR TREADING;So;0;ON;;;;;N;;;;;
-4DCA;HEXAGRAM FOR PEACE;So;0;ON;;;;;N;;;;;
-4DCB;HEXAGRAM FOR STANDSTILL;So;0;ON;;;;;N;;;;;
-4DCC;HEXAGRAM FOR FELLOWSHIP;So;0;ON;;;;;N;;;;;
-4DCD;HEXAGRAM FOR GREAT POSSESSION;So;0;ON;;;;;N;;;;;
-4DCE;HEXAGRAM FOR MODESTY;So;0;ON;;;;;N;;;;;
-4DCF;HEXAGRAM FOR ENTHUSIASM;So;0;ON;;;;;N;;;;;
-4DD0;HEXAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;;
-4DD1;HEXAGRAM FOR WORK ON THE DECAYED;So;0;ON;;;;;N;;;;;
-4DD2;HEXAGRAM FOR APPROACH;So;0;ON;;;;;N;;;;;
-4DD3;HEXAGRAM FOR CONTEMPLATION;So;0;ON;;;;;N;;;;;
-4DD4;HEXAGRAM FOR BITING THROUGH;So;0;ON;;;;;N;;;;;
-4DD5;HEXAGRAM FOR GRACE;So;0;ON;;;;;N;;;;;
-4DD6;HEXAGRAM FOR SPLITTING APART;So;0;ON;;;;;N;;;;;
-4DD7;HEXAGRAM FOR RETURN;So;0;ON;;;;;N;;;;;
-4DD8;HEXAGRAM FOR INNOCENCE;So;0;ON;;;;;N;;;;;
-4DD9;HEXAGRAM FOR GREAT TAMING;So;0;ON;;;;;N;;;;;
-4DDA;HEXAGRAM FOR MOUTH CORNERS;So;0;ON;;;;;N;;;;;
-4DDB;HEXAGRAM FOR GREAT PREPONDERANCE;So;0;ON;;;;;N;;;;;
-4DDC;HEXAGRAM FOR THE ABYSMAL WATER;So;0;ON;;;;;N;;;;;
-4DDD;HEXAGRAM FOR THE CLINGING FIRE;So;0;ON;;;;;N;;;;;
-4DDE;HEXAGRAM FOR INFLUENCE;So;0;ON;;;;;N;;;;;
-4DDF;HEXAGRAM FOR DURATION;So;0;ON;;;;;N;;;;;
-4DE0;HEXAGRAM FOR RETREAT;So;0;ON;;;;;N;;;;;
-4DE1;HEXAGRAM FOR GREAT POWER;So;0;ON;;;;;N;;;;;
-4DE2;HEXAGRAM FOR PROGRESS;So;0;ON;;;;;N;;;;;
-4DE3;HEXAGRAM FOR DARKENING OF THE LIGHT;So;0;ON;;;;;N;;;;;
-4DE4;HEXAGRAM FOR THE FAMILY;So;0;ON;;;;;N;;;;;
-4DE5;HEXAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;;
-4DE6;HEXAGRAM FOR OBSTRUCTION;So;0;ON;;;;;N;;;;;
-4DE7;HEXAGRAM FOR DELIVERANCE;So;0;ON;;;;;N;;;;;
-4DE8;HEXAGRAM FOR DECREASE;So;0;ON;;;;;N;;;;;
-4DE9;HEXAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;;
-4DEA;HEXAGRAM FOR BREAKTHROUGH;So;0;ON;;;;;N;;;;;
-4DEB;HEXAGRAM FOR COMING TO MEET;So;0;ON;;;;;N;;;;;
-4DEC;HEXAGRAM FOR GATHERING TOGETHER;So;0;ON;;;;;N;;;;;
-4DED;HEXAGRAM FOR PUSHING UPWARD;So;0;ON;;;;;N;;;;;
-4DEE;HEXAGRAM FOR OPPRESSION;So;0;ON;;;;;N;;;;;
-4DEF;HEXAGRAM FOR THE WELL;So;0;ON;;;;;N;;;;;
-4DF0;HEXAGRAM FOR REVOLUTION;So;0;ON;;;;;N;;;;;
-4DF1;HEXAGRAM FOR THE CAULDRON;So;0;ON;;;;;N;;;;;
-4DF2;HEXAGRAM FOR THE AROUSING THUNDER;So;0;ON;;;;;N;;;;;
-4DF3;HEXAGRAM FOR THE KEEPING STILL MOUNTAIN;So;0;ON;;;;;N;;;;;
-4DF4;HEXAGRAM FOR DEVELOPMENT;So;0;ON;;;;;N;;;;;
-4DF5;HEXAGRAM FOR THE MARRYING MAIDEN;So;0;ON;;;;;N;;;;;
-4DF6;HEXAGRAM FOR ABUNDANCE;So;0;ON;;;;;N;;;;;
-4DF7;HEXAGRAM FOR THE WANDERER;So;0;ON;;;;;N;;;;;
-4DF8;HEXAGRAM FOR THE GENTLE WIND;So;0;ON;;;;;N;;;;;
-4DF9;HEXAGRAM FOR THE JOYOUS LAKE;So;0;ON;;;;;N;;;;;
-4DFA;HEXAGRAM FOR DISPERSION;So;0;ON;;;;;N;;;;;
-4DFB;HEXAGRAM FOR LIMITATION;So;0;ON;;;;;N;;;;;
-4DFC;HEXAGRAM FOR INNER TRUTH;So;0;ON;;;;;N;;;;;
-4DFD;HEXAGRAM FOR SMALL PREPONDERANCE;So;0;ON;;;;;N;;;;;
-4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;;
-4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;;
-4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
-9FBB;<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;Lm;0;L;;;;;N;;;;;
-A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;;
-A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;;
-A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
-A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;;
-A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;;
-A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;;
-A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;;
-A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;;
-A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;;
-A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;;
-A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
-A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;;
-A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;;
-A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;;
-A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;;
-A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;;
-A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;;
-A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
-A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;;
-A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;;
-A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
-A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;;
-A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;;
-A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;;
-A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
-A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;;
-A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;;
-A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;;
-A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;;
-A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;;
-A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;;
-A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;;
-A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;;
-A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;;
-A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;;
-A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;;
-A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
-A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;;
-A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;;
-A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;;
-A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;;
-A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;;
-A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;;
-A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
-A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;;
-A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;;
-A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;;
-A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;;
-A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;;
-A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;;
-A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
-A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;;
-A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;;
-A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;;
-A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
-A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;;
-A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;;
-A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;;
-A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;;
-A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;;
-A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;;
-A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;;
-A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;;
-A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;;
-A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;;
-A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;;
-A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;;
-A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;;
-A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;;
-A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;;
-A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;;
-A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;;
-A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;;
-A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;;
-A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;;
-A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;;
-A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;;
-A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;;
-A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;;
-A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;;
-A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;;
-A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;;
-A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;;
-A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;;
-A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;;
-A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;;
-A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;;
-A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;;
-A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;;
-A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;;
-A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;;
-A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;;
-A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;;
-A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;;
-A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;;
-A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;;
-A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;;
-A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;;
-A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;;
-A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;;
-A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;;
-A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;;
-A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;;
-A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;;
-A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;;
-A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;;
-A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;;
-A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;;
-A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;;
-A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;;
-A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;;
-A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;;
-A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;;
-A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;;
-A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;;
-A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;;
-A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;;
-A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;;
-A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;;
-A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;;
-A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;;
-A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;;
-A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;;
-A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;;
-A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;;
-A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;;
-A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;;
-A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;;
-A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;;
-A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;;
-A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;;
-A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;;
-A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;;
-A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;;
-A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;;
-A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;;
-A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;;
-A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;;
-A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;;
-A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;;
-A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;;
-A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;;
-A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;;
-A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;;
-A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;;
-A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;;
-A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;;
-A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;;
-A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;;
-A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;;
-A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;;
-A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;;
-A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;;
-A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;;
-A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
-A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;;
-A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;;
-A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;;
-A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;;
-A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;;
-A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;;
-A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
-A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;;
-A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;;
-A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;;
-A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;;
-A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;;
-A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;;
-A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;;
-A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
-A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;;
-A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;;
-A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
-A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;;
-A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;;
-A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
-A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;;
-A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;;
-A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;;
-A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;;
-A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;;
-A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;;
-A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;;
-A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;;
-A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;;
-A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
-A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;;
-A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;;
-A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;;
-A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
-A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;;
-A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;;
-A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
-A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;;
-A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;;
-A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;;
-A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
-A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;;
-A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;;
-A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;;
-A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;;
-A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;;
-A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;;
-A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;;
-A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;;
-A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;;
-A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
-A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;;
-A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;;
-A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;;
-A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;;
-A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;;
-A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;;
-A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;;
-A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
-A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;;
-A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;;
-A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;;
-A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
-A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;;
-A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;;
-A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;;
-A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;;
-A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;;
-A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
-A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;;
-A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;;
-A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;;
-A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;;
-A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;;
-A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;;
-A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;;
-A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;;
-A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;;
-A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;;
-A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;;
-A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
-A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;;
-A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;;
-A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;;
-A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;;
-A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;;
-A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;;
-A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
-A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;;
-A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;;
-A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;;
-A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;;
-A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;;
-A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
-A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;;
-A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;;
-A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
-A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;;
-A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;;
-A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;;
-A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
-A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;;
-A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;;
-A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;;
-A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;;
-A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;;
-A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
-A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;;
-A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;;
-A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;;
-A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;;
-A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;;
-A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;;
-A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
-A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;;
-A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;;
-A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;;
-A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;;
-A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;;
-A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;;
-A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;;
-A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
-A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;;
-A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;;
-A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
-A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;;
-A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;;
-A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;;
-A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
-A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;;
-A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;;
-A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;;
-A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;;
-A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;;
-A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
-A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;;
-A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;;
-A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;;
-A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;;
-A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;;
-A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;;
-A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
-A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;;
-A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;;
-A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;;
-A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;;
-A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;;
-A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;;
-A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
-A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;;
-A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;;
-A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
-A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;;
-A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;;
-A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;;
-A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
-A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;;
-A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;;
-A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;;
-A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;;
-A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;;
-A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
-A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;;
-A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;;
-A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;;
-A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;;
-A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;;
-A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
-A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;;
-A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;;
-A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;;
-A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
-A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;;
-A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;;
-A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
-A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;;
-A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;;
-A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;;
-A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
-A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;;
-A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;;
-A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;;
-A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;;
-A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;;
-A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;;
-A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;;
-A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;;
-A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;;
-A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;;
-A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;;
-A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;;
-A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;;
-A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;;
-A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;;
-A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;;
-A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;;
-A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;;
-A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;;
-A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;;
-A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;;
-A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;;
-A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;;
-A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;;
-A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;;
-A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;;
-A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
-A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;;
-A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;;
-A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;;
-A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;;
-A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;;
-A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
-A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;;
-A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;;
-A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;;
-A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;;
-A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;;
-A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;;
-A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
-A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;;
-A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;;
-A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
-A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;;
-A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;;
-A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;;
-A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
-A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;;
-A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;;
-A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;;
-A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;;
-A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;;
-A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;;
-A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;;
-A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;;
-A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;;
-A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;;
-A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;;
-A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;;
-A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;;
-A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;;
-A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;;
-A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;;
-A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;;
-A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;;
-A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;;
-A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;;
-A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;;
-A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;;
-A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;;
-A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;;
-A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;;
-A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;;
-A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;;
-A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;;
-A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;;
-A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;;
-A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;;
-A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;;
-A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;;
-A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;;
-A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;;
-A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;;
-A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;;
-A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
-A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;;
-A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;;
-A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;;
-A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;;
-A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;;
-A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;;
-A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;;
-A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
-A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;;
-A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;;
-A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;;
-A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;;
-A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;;
-A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;;
-A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;;
-A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
-A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;;
-A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;;
-A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
-A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;;
-A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;;
-A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;;
-A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
-A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;;
-A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;;
-A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;;
-A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;;
-A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;;
-A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;;
-A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;;
-A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;;
-A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;;
-A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;;
-A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;;
-A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
-A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;;
-A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;;
-A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;;
-A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;;
-A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;;
-A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;;
-A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;;
-A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
-A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;;
-A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;;
-A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;;
-A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;;
-A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;;
-A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;;
-A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;;
-A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
-A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;;
-A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;;
-A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;;
-A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
-A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;;
-A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;;
-A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;;
-A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
-A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;;
-A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;;
-A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;;
-A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;;
-A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;;
-A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
-A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;;
-A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;;
-A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;;
-A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;;
-A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;;
-A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;;
-A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
-A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;;
-A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;;
-A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;;
-A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;;
-A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;;
-A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;;
-A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
-A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;;
-A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;;
-A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;;
-A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
-A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;;
-A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;;
-A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;;
-A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
-A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;;
-A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;;
-A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;;
-A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;;
-A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;;
-A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
-A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;;
-A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;;
-A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;;
-A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;;
-A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;;
-A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
-A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;;
-A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;;
-A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;;
-A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;;
-A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;;
-A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;;
-A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;;
-A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
-A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;;
-A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;;
-A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;;
-A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
-A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;;
-A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;;
-A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;;
-A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
-A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;;
-A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;;
-A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;;
-A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;;
-A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;;
-A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;;
-A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;;
-A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;;
-A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;;
-A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;;
-A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;;
-A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;;
-A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;;
-A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;;
-A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;;
-A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;;
-A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;;
-A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;;
-A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;;
-A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;;
-A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;;
-A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;;
-A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;;
-A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;;
-A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;;
-A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;;
-A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;;
-A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;;
-A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;;
-A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;;
-A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;;
-A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;;
-A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;;
-A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;;
-A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;;
-A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;;
-A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;;
-A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;;
-A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;;
-A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;;
-A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;;
-A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;;
-A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;;
-A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;;
-A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;;
-A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;;
-A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;;
-A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;;
-A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;;
-A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;;
-A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;;
-A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;;
-A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;;
-A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;;
-A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;;
-A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;;
-A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;;
-A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;;
-A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;;
-A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;;
-A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;;
-A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;;
-A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;;
-A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;;
-A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;;
-A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;;
-A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;;
-A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;;
-A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;;
-A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;;
-A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
-A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;;
-A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;;
-A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;;
-A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;;
-A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;;
-A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;;
-A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;;
-A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
-A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;;
-A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;;
-A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
-A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;;
-A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;;
-A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;;
-A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
-A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;;
-A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;;
-A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;;
-A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;;
-A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;;
-A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
-A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;;
-A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;;
-A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
-A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;;
-A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;;
-A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;;
-A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
-A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;;
-A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;;
-A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;;
-A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;;
-A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;;
-A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;;
-A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
-A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;;
-A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;;
-A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;;
-A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;;
-A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;;
-A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;;
-A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
-A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;;
-A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;;
-A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
-A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;;
-A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;;
-A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;;
-A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
-A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;;
-A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;;
-A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;;
-A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;;
-A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;;
-A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;;
-A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;;
-A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;;
-A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;;
-A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;;
-A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;;
-A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
-A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;;
-A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;;
-A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;;
-A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;;
-A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;;
-A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;;
-A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;;
-A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
-A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;;
-A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;;
-A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;;
-A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;;
-A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;;
-A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;;
-A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
-A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;;
-A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;;
-A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
-A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;;
-A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;;
-A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;;
-A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
-A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;;
-A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;;
-A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;;
-A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;;
-A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;;
-A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;;
-A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;;
-A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;;
-A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;;
-A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;;
-A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;;
-A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
-A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;;
-A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;;
-A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;;
-A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;;
-A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;;
-A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;;
-A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;;
-A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
-A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;;
-A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;;
-A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
-A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;;
-A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;;
-A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
-A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;;
-A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;;
-A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
-A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;;
-A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;;
-A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;;
-A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;;
-A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;;
-A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;;
-A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;;
-A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;;
-A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;;
-A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;;
-A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;;
-A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;;
-A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;;
-A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;;
-A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;;
-A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;;
-A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;;
-A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;;
-A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;;
-A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;;
-A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;;
-A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;;
-A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;;
-A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;;
-A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;;
-A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;;
-A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;;
-A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;;
-A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;;
-A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;;
-A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;;
-A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;;
-A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;;
-A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;;
-A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;;
-A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;;
-A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;;
-A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;;
-A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;;
-A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
-A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;;
-A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;;
-A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;;
-A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;;
-A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;;
-A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;;
-A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
-A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;;
-A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;;
-A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;;
-A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;;
-A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;;
-A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;;
-A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
-A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;;
-A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;;
-A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
-A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;;
-A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;;
-A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;;
-A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
-A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;;
-A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;;
-A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;;
-A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;;
-A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;;
-A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;;
-A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;;
-A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;;
-A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;;
-A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;;
-A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;;
-A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
-A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;;
-A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;;
-A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;;
-A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;;
-A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;;
-A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;;
-A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
-A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;;
-A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;;
-A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;;
-A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
-A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;;
-A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;;
-A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
-A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;;
-A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;;
-A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;;
-A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
-A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;;
-A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;;
-A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;;
-A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;;
-A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;;
-A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;;
-A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;;
-A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;;
-A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;;
-A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
-A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;;
-A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;;
-A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;;
-A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;;
-A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;;
-A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;;
-A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
-A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;;
-A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;;
-A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;;
-A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
-A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;;
-A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;;
-A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;;
-A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
-A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;;
-A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;;
-A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;;
-A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;;
-A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;;
-A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;;
-A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;;
-A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;;
-A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;;
-A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;;
-A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;;
-A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
-A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;;
-A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;;
-A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;;
-A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;;
-A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;;
-A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;;
-A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;;
-A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
-A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;;
-A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;;
-A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;;
-A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
-A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;;
-A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;;
-A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
-A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;;
-A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;;
-A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;;
-A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;;
-A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;;
-A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;;
-A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;;
-A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;;
-A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;;
-A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;;
-A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;;
-A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;;
-A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;;
-A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;;
-A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;;
-A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;;
-A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;;
-A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;;
-A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;;
-A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;;
-A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;;
-A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;;
-A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;;
-A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;;
-A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;;
-A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;;
-A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;;
-A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;;
-A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;;
-A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;;
-A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;;
-A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;;
-A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;;
-A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;;
-A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;;
-A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;;
-A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;;
-A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;;
-A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;;
-A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;;
-A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;;
-A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;;
-A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;;
-A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;;
-A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;;
-A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;;
-A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;;
-A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;;
-A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;;
-A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;;
-A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;;
-A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;;
-A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;;
-A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;;
-A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;;
-A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;;
-A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;;
-A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;;
-A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
-A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;;
-A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;;
-A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;;
-A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;;
-A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;;
-A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;;
-A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
-A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;;
-A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;;
-A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;;
-A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
-A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;;
-A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;;
-A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;;
-A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
-A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;;
-A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;;
-A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;;
-A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;;
-A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;;
-A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;;
-A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;;
-A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;;
-A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;;
-A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;;
-A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;;
-A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
-A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;;
-A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;;
-A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;;
-A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;;
-A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;;
-A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;;
-A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
-A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;;
-A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;;
-A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
-A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;;
-A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;;
-A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;;
-A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
-A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;;
-A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;;
-A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;;
-A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;;
-A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;;
-A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;;
-A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;;
-A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;;
-A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;;
-A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;;
-A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;;
-A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
-A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;;
-A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;;
-A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;;
-A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;;
-A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;;
-A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;;
-A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;;
-A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;;
-A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;;
-A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;;
-A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;;
-A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
-A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;;
-A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;;
-A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;;
-A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
-A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;;
-A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;;
-A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;;
-A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;;
-A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;;
-A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;;
-A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;;
-A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;;
-A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;;
-A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;;
-A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;;
-A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;;
-A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;;
-A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;;
-A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;;
-A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;;
-A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;;
-A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;;
-A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;;
-A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;;
-A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;;
-A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;;
-A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;;
-A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;;
-A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;;
-A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;;
-A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;;
-A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;;
-A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;;
-A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;;
-A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;;
-A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;;
-A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;;
-A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;;
-A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;;
-A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;;
-A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;;
-A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;;
-A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;;
-A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;;
-A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;;
-A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;;
-A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;;
-A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;;
-A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;;
-A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;;
-A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;;
-A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;;
-A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;;
-A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;;
-A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;;
-A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;;
-A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;;
-A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;;
-A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;;
-A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;;
-A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;;
-A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;;
-A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;;
-A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;;
-A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;;
-A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;;
-A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;;
-A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;;
-A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
-A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;;
-A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;;
-A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;;
-A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;;
-A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;;
-A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;;
-A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;;
-A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;;
-A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;;
-A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
-A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;;
-A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;;
-A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
-A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;;
-A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;;
-A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;;
-A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;;
-A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;;
-A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;;
-A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;;
-A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;;
-A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;;
-A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;;
-A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;;
-A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
-A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;;
-A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;;
-A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;;
-A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;;
-A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;;
-A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;;
-A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;;
-A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;;
-A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;;
-A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;;
-A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
-A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;;
-A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;;
-A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;;
-A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
-A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;;
-A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;;
-A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;;
-A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;;
-A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;;
-A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;;
-A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;;
-A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;;
-A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;;
-A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;;
-A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;;
-A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;;
-A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;;
-A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;;
-A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;;
-A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;;
-A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;;
-A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;;
-A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;;
-A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;;
-A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;;
-A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;;
-A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;;
-A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
-A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;;
-A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;;
-A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;;
-A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;;
-A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;;
-A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;;
-A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;;
-A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;;
-A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;;
-A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;;
-A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;;
-A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
-A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;;
-A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;;
-A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;;
-A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
-A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;;
-A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;;
-A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;;
-A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;;
-A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;;
-A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;;
-A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;;
-A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;;
-A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;;
-A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;;
-A491;YI RADICAL LI;So;0;ON;;;;;N;;;;;
-A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;;
-A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;;
-A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;;
-A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;;
-A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;;
-A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;;
-A498;YI RADICAL MI;So;0;ON;;;;;N;;;;;
-A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;;
-A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;;
-A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;;
-A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;;
-A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;;
-A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;;
-A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;;
-A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;;
-A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;;
-A4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;;
-A4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;;
-A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;;
-A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;;
-A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;;
-A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;;
-A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;;
-A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;;
-A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;;
-A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;;
-A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;;
-A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;;
-A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;;
-A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;;
-A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;;
-A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;;
-A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;;
-A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;;
-A4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;;
-A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;;
-A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;;
-A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;;
-A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;;
-A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;;
-A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;;
-A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;;
-A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;;
-A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;;
-A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;;
-A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;;
-A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;;
-A4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;;
-A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;;
-A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;;
-A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;;
-A4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;;
-A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;;
-A700;MODIFIER LETTER CHINESE TONE YIN PING;Sk;0;ON;;;;;N;;;;;
-A701;MODIFIER LETTER CHINESE TONE YANG PING;Sk;0;ON;;;;;N;;;;;
-A702;MODIFIER LETTER CHINESE TONE YIN SHANG;Sk;0;ON;;;;;N;;;;;
-A703;MODIFIER LETTER CHINESE TONE YANG SHANG;Sk;0;ON;;;;;N;;;;;
-A704;MODIFIER LETTER CHINESE TONE YIN QU;Sk;0;ON;;;;;N;;;;;
-A705;MODIFIER LETTER CHINESE TONE YANG QU;Sk;0;ON;;;;;N;;;;;
-A706;MODIFIER LETTER CHINESE TONE YIN RU;Sk;0;ON;;;;;N;;;;;
-A707;MODIFIER LETTER CHINESE TONE YANG RU;Sk;0;ON;;;;;N;;;;;
-A708;MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
-A709;MODIFIER LETTER HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
-A70A;MODIFIER LETTER MID DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
-A70B;MODIFIER LETTER LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
-A70C;MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
-A70D;MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-A70E;MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-A70F;MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-A710;MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-A711;MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-A712;MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-A713;MODIFIER LETTER HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-A714;MODIFIER LETTER MID LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-A715;MODIFIER LETTER LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-A716;MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-A800;SYLOTI NAGRI LETTER A;Lo;0;L;;;;;N;;;;;
-A801;SYLOTI NAGRI LETTER I;Lo;0;L;;;;;N;;;;;
-A802;SYLOTI NAGRI SIGN DVISVARA;Mc;0;NSM;;;;;N;;;;;
-A803;SYLOTI NAGRI LETTER U;Lo;0;L;;;;;N;;;;;
-A804;SYLOTI NAGRI LETTER E;Lo;0;L;;;;;N;;;;;
-A805;SYLOTI NAGRI LETTER O;Lo;0;L;;;;;N;;;;;
-A806;SYLOTI NAGRI SIGN HASANTA;Mn;9;NSM;;;;;N;;;;;
-A807;SYLOTI NAGRI LETTER KO;Lo;0;L;;;;;N;;;;;
-A808;SYLOTI NAGRI LETTER KHO;Lo;0;L;;;;;N;;;;;
-A809;SYLOTI NAGRI LETTER GO;Lo;0;L;;;;;N;;;;;
-A80A;SYLOTI NAGRI LETTER GHO;Lo;0;L;;;;;N;;;;;
-A80B;SYLOTI NAGRI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
-A80C;SYLOTI NAGRI LETTER CO;Lo;0;L;;;;;N;;;;;
-A80D;SYLOTI NAGRI LETTER CHO;Lo;0;L;;;;;N;;;;;
-A80E;SYLOTI NAGRI LETTER JO;Lo;0;L;;;;;N;;;;;
-A80F;SYLOTI NAGRI LETTER JHO;Lo;0;L;;;;;N;;;;;
-A810;SYLOTI NAGRI LETTER TTO;Lo;0;L;;;;;N;;;;;
-A811;SYLOTI NAGRI LETTER TTHO;Lo;0;L;;;;;N;;;;;
-A812;SYLOTI NAGRI LETTER DDO;Lo;0;L;;;;;N;;;;;
-A813;SYLOTI NAGRI LETTER DDHO;Lo;0;L;;;;;N;;;;;
-A814;SYLOTI NAGRI LETTER TO;Lo;0;L;;;;;N;;;;;
-A815;SYLOTI NAGRI LETTER THO;Lo;0;L;;;;;N;;;;;
-A816;SYLOTI NAGRI LETTER DO;Lo;0;L;;;;;N;;;;;
-A817;SYLOTI NAGRI LETTER DHO;Lo;0;L;;;;;N;;;;;
-A818;SYLOTI NAGRI LETTER NO;Lo;0;L;;;;;N;;;;;
-A819;SYLOTI NAGRI LETTER PO;Lo;0;L;;;;;N;;;;;
-A81A;SYLOTI NAGRI LETTER PHO;Lo;0;L;;;;;N;;;;;
-A81B;SYLOTI NAGRI LETTER BO;Lo;0;L;;;;;N;;;;;
-A81C;SYLOTI NAGRI LETTER BHO;Lo;0;L;;;;;N;;;;;
-A81D;SYLOTI NAGRI LETTER MO;Lo;0;L;;;;;N;;;;;
-A81E;SYLOTI NAGRI LETTER RO;Lo;0;L;;;;;N;;;;;
-A81F;SYLOTI NAGRI LETTER LO;Lo;0;L;;;;;N;;;;;
-A820;SYLOTI NAGRI LETTER RRO;Lo;0;L;;;;;N;;;;;
-A821;SYLOTI NAGRI LETTER SO;Lo;0;L;;;;;N;;;;;
-A822;SYLOTI NAGRI LETTER HO;Lo;0;L;;;;;N;;;;;
-A823;SYLOTI NAGRI VOWEL SIGN A;Mc;0;L;;;;;N;;;;;
-A824;SYLOTI NAGRI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-A825;SYLOTI NAGRI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-A826;SYLOTI NAGRI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
-A827;SYLOTI NAGRI VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
-A828;SYLOTI NAGRI POETRY MARK-1;So;0;ON;;;;;N;;;;;
-A829;SYLOTI NAGRI POETRY MARK-2;So;0;ON;;;;;N;;;;;
-A82A;SYLOTI NAGRI POETRY MARK-3;So;0;ON;;;;;N;;;;;
-A82B;SYLOTI NAGRI POETRY MARK-4;So;0;ON;;;;;N;;;;;
-AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
-D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
-D800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
-DB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
-DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
-DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
-DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;
-DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;
-E000;<Private Use, First>;Co;0;L;;;;;N;;;;;
-F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;;
-F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;;
-F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;;
-F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;;
-F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;;
-F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;;
-F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;;
-F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;;
-F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;;
-F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;;
-F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;;
-F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;;
-F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;;
-F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;;
-F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;;
-F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;;
-F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;;
-F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;;
-F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;;
-F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;;
-F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;;
-F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;;
-F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;;
-F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;;
-F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;;
-F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;;
-F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;;
-F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;;
-F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;;
-F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;;
-F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;;
-F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;;
-F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;;
-F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;;
-F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;;
-F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;;
-F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;;
-F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;;
-F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;;
-F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;;
-F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;;
-F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;;
-F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;;
-F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;;
-F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;;
-F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;;
-F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;;
-F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;;
-F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;;
-F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;;
-F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;;
-F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;;
-F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;;
-F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;;
-F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;;
-F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;;
-F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;;
-F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;;
-F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;;
-F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;;
-F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;;
-F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;;
-F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;;
-F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;;
-F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;;
-F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;;
-F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;;
-F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;;
-F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;;
-F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;;
-F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;;
-F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;;
-F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;;
-F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;;
-F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;;
-F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;;
-F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;;
-F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;;
-F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;;
-F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;;
-F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;;
-F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;;
-F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;;
-F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;;
-F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;;
-F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;;
-F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;;
-F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;;
-F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;;
-F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;;
-F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;;
-F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;;
-F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;;
-F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;;
-F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;;
-F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;;
-F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;;
-F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;;
-F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;;
-F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;;
-F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;;
-F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;;
-F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;;
-F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;;
-F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;;
-F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;;
-F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;;
-F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;;
-F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;;N;;;;;
-F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;;
-F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;;
-F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;;
-F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;;
-F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;;
-F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;;
-F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;;
-F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;;N;;;;;
-F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;;
-F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;;
-F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;;
-F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;;
-F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;;N;;;;;
-F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;;
-F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;;
-F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;;
-F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;;
-F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;;
-F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;;
-F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;;
-F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;;
-F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;;
-F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;;
-F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;;
-F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;;
-F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;;
-F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;;
-F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;;
-F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;;
-F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;;
-F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;;
-F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;;
-F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;;
-F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;;
-F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;;
-F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;;
-F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;;
-F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;;
-F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;;
-F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;;
-F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;;
-F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;;
-F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;;
-F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;;
-F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;;
-F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;;
-F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;;
-F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;;
-F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;;
-F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;;
-F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;;
-F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;;
-F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;;
-F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;;
-F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;;
-F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;;
-F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;;
-F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;;
-F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;;
-F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;;
-F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;;
-F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;;
-F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;;
-F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;;
-F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;;
-F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;;
-F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;;
-F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;;
-F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;;
-F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;;
-F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;;N;;;;;
-F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;;
-F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;;
-F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;;
-F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;;
-F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;;
-F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;;
-F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;;
-F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;;
-F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;;
-F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;;
-F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;;
-F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;;
-F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;;
-F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;;
-F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;;
-F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;;
-F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;;
-F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;;
-F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;;
-F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;;
-F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;;
-F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;;
-F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;;
-F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;;
-F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;;
-F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;;
-F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;;
-F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;;
-F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;;
-F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;;
-F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;;N;;;;;
-F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;
-F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;;N;;;;;
-F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;;
-F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;;
-F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;;
-F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;;
-F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;;
-F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;;
-F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;;
-F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;;
-F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;;
-F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;;
-F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;;
-F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;;
-F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;;
-F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;;
-F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;;
-F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;;
-F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;;
-F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;;
-F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;;
-F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;;
-F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;;
-F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;;
-F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;;
-F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;;
-F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;;
-F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;;
-F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;;
-F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;;
-F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;;
-F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;;
-F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;;
-F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;;
-F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;;
-F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;;
-F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;;
-F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;;
-F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;;
-F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;;
-F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;;
-F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;;
-F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;;
-F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;;N;;;;;
-F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;;
-F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;;
-FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;;
-FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;;
-FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;;
-FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;;
-FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;;
-FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;;
-FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;;
-FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;;
-FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;;
-FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;;
-FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;;
-FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;;
-FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;;
-FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;;
-FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;;
-FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;;
-FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;;
-FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;;
-FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;;
-FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;;
-FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;;
-FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;;
-FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;;
-FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;;
-FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;;
-FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;;
-FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;;
-FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;;
-FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;;
-FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;;
-FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;;
-FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;*;;;
-FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;;
-FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;;
-FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;;
-FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;*;;;
-FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;;
-FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;;
-FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;;
-FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;;
-FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;;
-FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;;
-FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;;
-FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;;
-FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;;
-FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;;
-FA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;;
-FA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;;
-FA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;;
-FA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;;
-FA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;;
-FA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;;
-FA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;;
-FA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;;
-FA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;;
-FA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;;
-FA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;;
-FA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;;
-FA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;;
-FA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;;
-FA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;;
-FA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;;
-FA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;;
-FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;;
-FA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;;
-FA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;;
-FA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;;
-FA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;;
-FA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;;
-FA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;;
-FA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;;
-FA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;;
-FA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;;
-FA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;;
-FA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;;
-FA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;;
-FA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;;
-FA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;;
-FA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;;
-FA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;;
-FA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;;
-FA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;;
-FA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;;
-FA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;;
-FA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;;
-FA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;;
-FA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;;
-FA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;;
-FA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;;
-FA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;;
-FA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;;
-FA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;;
-FA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;;
-FA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;;
-FA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;;
-FA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;;
-FA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;;
-FA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;;
-FA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;;
-FA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;;
-FA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;;
-FA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;;
-FA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;;
-FA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;;
-FA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;;
-FA70;CJK COMPATIBILITY IDEOGRAPH-FA70;Lo;0;L;4E26;;;;N;;;;;
-FA71;CJK COMPATIBILITY IDEOGRAPH-FA71;Lo;0;L;51B5;;;;N;;;;;
-FA72;CJK COMPATIBILITY IDEOGRAPH-FA72;Lo;0;L;5168;;;;N;;;;;
-FA73;CJK COMPATIBILITY IDEOGRAPH-FA73;Lo;0;L;4F80;;;;N;;;;;
-FA74;CJK COMPATIBILITY IDEOGRAPH-FA74;Lo;0;L;5145;;;;N;;;;;
-FA75;CJK COMPATIBILITY IDEOGRAPH-FA75;Lo;0;L;5180;;;;N;;;;;
-FA76;CJK COMPATIBILITY IDEOGRAPH-FA76;Lo;0;L;52C7;;;;N;;;;;
-FA77;CJK COMPATIBILITY IDEOGRAPH-FA77;Lo;0;L;52FA;;;;N;;;;;
-FA78;CJK COMPATIBILITY IDEOGRAPH-FA78;Lo;0;L;559D;;;;N;;;;;
-FA79;CJK COMPATIBILITY IDEOGRAPH-FA79;Lo;0;L;5555;;;;N;;;;;
-FA7A;CJK COMPATIBILITY IDEOGRAPH-FA7A;Lo;0;L;5599;;;;N;;;;;
-FA7B;CJK COMPATIBILITY IDEOGRAPH-FA7B;Lo;0;L;55E2;;;;N;;;;;
-FA7C;CJK COMPATIBILITY IDEOGRAPH-FA7C;Lo;0;L;585A;;;;N;;;;;
-FA7D;CJK COMPATIBILITY IDEOGRAPH-FA7D;Lo;0;L;58B3;;;;N;;;;;
-FA7E;CJK COMPATIBILITY IDEOGRAPH-FA7E;Lo;0;L;5944;;;;N;;;;;
-FA7F;CJK COMPATIBILITY IDEOGRAPH-FA7F;Lo;0;L;5954;;;;N;;;;;
-FA80;CJK COMPATIBILITY IDEOGRAPH-FA80;Lo;0;L;5A62;;;;N;;;;;
-FA81;CJK COMPATIBILITY IDEOGRAPH-FA81;Lo;0;L;5B28;;;;N;;;;;
-FA82;CJK COMPATIBILITY IDEOGRAPH-FA82;Lo;0;L;5ED2;;;;N;;;;;
-FA83;CJK COMPATIBILITY IDEOGRAPH-FA83;Lo;0;L;5ED9;;;;N;;;;;
-FA84;CJK COMPATIBILITY IDEOGRAPH-FA84;Lo;0;L;5F69;;;;N;;;;;
-FA85;CJK COMPATIBILITY IDEOGRAPH-FA85;Lo;0;L;5FAD;;;;N;;;;;
-FA86;CJK COMPATIBILITY IDEOGRAPH-FA86;Lo;0;L;60D8;;;;N;;;;;
-FA87;CJK COMPATIBILITY IDEOGRAPH-FA87;Lo;0;L;614E;;;;N;;;;;
-FA88;CJK COMPATIBILITY IDEOGRAPH-FA88;Lo;0;L;6108;;;;N;;;;;
-FA89;CJK COMPATIBILITY IDEOGRAPH-FA89;Lo;0;L;618E;;;;N;;;;;
-FA8A;CJK COMPATIBILITY IDEOGRAPH-FA8A;Lo;0;L;6160;;;;N;;;;;
-FA8B;CJK COMPATIBILITY IDEOGRAPH-FA8B;Lo;0;L;61F2;;;;N;;;;;
-FA8C;CJK COMPATIBILITY IDEOGRAPH-FA8C;Lo;0;L;6234;;;;N;;;;;
-FA8D;CJK COMPATIBILITY IDEOGRAPH-FA8D;Lo;0;L;63C4;;;;N;;;;;
-FA8E;CJK COMPATIBILITY IDEOGRAPH-FA8E;Lo;0;L;641C;;;;N;;;;;
-FA8F;CJK COMPATIBILITY IDEOGRAPH-FA8F;Lo;0;L;6452;;;;N;;;;;
-FA90;CJK COMPATIBILITY IDEOGRAPH-FA90;Lo;0;L;6556;;;;N;;;;;
-FA91;CJK COMPATIBILITY IDEOGRAPH-FA91;Lo;0;L;6674;;;;N;;;;;
-FA92;CJK COMPATIBILITY IDEOGRAPH-FA92;Lo;0;L;6717;;;;N;;;;;
-FA93;CJK COMPATIBILITY IDEOGRAPH-FA93;Lo;0;L;671B;;;;N;;;;;
-FA94;CJK COMPATIBILITY IDEOGRAPH-FA94;Lo;0;L;6756;;;;N;;;;;
-FA95;CJK COMPATIBILITY IDEOGRAPH-FA95;Lo;0;L;6B79;;;;N;;;;;
-FA96;CJK COMPATIBILITY IDEOGRAPH-FA96;Lo;0;L;6BBA;;;;N;;;;;
-FA97;CJK COMPATIBILITY IDEOGRAPH-FA97;Lo;0;L;6D41;;;;N;;;;;
-FA98;CJK COMPATIBILITY IDEOGRAPH-FA98;Lo;0;L;6EDB;;;;N;;;;;
-FA99;CJK COMPATIBILITY IDEOGRAPH-FA99;Lo;0;L;6ECB;;;;N;;;;;
-FA9A;CJK COMPATIBILITY IDEOGRAPH-FA9A;Lo;0;L;6F22;;;;N;;;;;
-FA9B;CJK COMPATIBILITY IDEOGRAPH-FA9B;Lo;0;L;701E;;;;N;;;;;
-FA9C;CJK COMPATIBILITY IDEOGRAPH-FA9C;Lo;0;L;716E;;;;N;;;;;
-FA9D;CJK COMPATIBILITY IDEOGRAPH-FA9D;Lo;0;L;77A7;;;;N;;;;;
-FA9E;CJK COMPATIBILITY IDEOGRAPH-FA9E;Lo;0;L;7235;;;;N;;;;;
-FA9F;CJK COMPATIBILITY IDEOGRAPH-FA9F;Lo;0;L;72AF;;;;N;;;;;
-FAA0;CJK COMPATIBILITY IDEOGRAPH-FAA0;Lo;0;L;732A;;;;N;;;;;
-FAA1;CJK COMPATIBILITY IDEOGRAPH-FAA1;Lo;0;L;7471;;;;N;;;;;
-FAA2;CJK COMPATIBILITY IDEOGRAPH-FAA2;Lo;0;L;7506;;;;N;;;;;
-FAA3;CJK COMPATIBILITY IDEOGRAPH-FAA3;Lo;0;L;753B;;;;N;;;;;
-FAA4;CJK COMPATIBILITY IDEOGRAPH-FAA4;Lo;0;L;761D;;;;N;;;;;
-FAA5;CJK COMPATIBILITY IDEOGRAPH-FAA5;Lo;0;L;761F;;;;N;;;;;
-FAA6;CJK COMPATIBILITY IDEOGRAPH-FAA6;Lo;0;L;76CA;;;;N;;;;;
-FAA7;CJK COMPATIBILITY IDEOGRAPH-FAA7;Lo;0;L;76DB;;;;N;;;;;
-FAA8;CJK COMPATIBILITY IDEOGRAPH-FAA8;Lo;0;L;76F4;;;;N;;;;;
-FAA9;CJK COMPATIBILITY IDEOGRAPH-FAA9;Lo;0;L;774A;;;;N;;;;;
-FAAA;CJK COMPATIBILITY IDEOGRAPH-FAAA;Lo;0;L;7740;;;;N;;;;;
-FAAB;CJK COMPATIBILITY IDEOGRAPH-FAAB;Lo;0;L;78CC;;;;N;;;;;
-FAAC;CJK COMPATIBILITY IDEOGRAPH-FAAC;Lo;0;L;7AB1;;;;N;;;;;
-FAAD;CJK COMPATIBILITY IDEOGRAPH-FAAD;Lo;0;L;7BC0;;;;N;;;;;
-FAAE;CJK COMPATIBILITY IDEOGRAPH-FAAE;Lo;0;L;7C7B;;;;N;;;;;
-FAAF;CJK COMPATIBILITY IDEOGRAPH-FAAF;Lo;0;L;7D5B;;;;N;;;;;
-FAB0;CJK COMPATIBILITY IDEOGRAPH-FAB0;Lo;0;L;7DF4;;;;N;;;;;
-FAB1;CJK COMPATIBILITY IDEOGRAPH-FAB1;Lo;0;L;7F3E;;;;N;;;;;
-FAB2;CJK COMPATIBILITY IDEOGRAPH-FAB2;Lo;0;L;8005;;;;N;;;;;
-FAB3;CJK COMPATIBILITY IDEOGRAPH-FAB3;Lo;0;L;8352;;;;N;;;;;
-FAB4;CJK COMPATIBILITY IDEOGRAPH-FAB4;Lo;0;L;83EF;;;;N;;;;;
-FAB5;CJK COMPATIBILITY IDEOGRAPH-FAB5;Lo;0;L;8779;;;;N;;;;;
-FAB6;CJK COMPATIBILITY IDEOGRAPH-FAB6;Lo;0;L;8941;;;;N;;;;;
-FAB7;CJK COMPATIBILITY IDEOGRAPH-FAB7;Lo;0;L;8986;;;;N;;;;;
-FAB8;CJK COMPATIBILITY IDEOGRAPH-FAB8;Lo;0;L;8996;;;;N;;;;;
-FAB9;CJK COMPATIBILITY IDEOGRAPH-FAB9;Lo;0;L;8ABF;;;;N;;;;;
-FABA;CJK COMPATIBILITY IDEOGRAPH-FABA;Lo;0;L;8AF8;;;;N;;;;;
-FABB;CJK COMPATIBILITY IDEOGRAPH-FABB;Lo;0;L;8ACB;;;;N;;;;;
-FABC;CJK COMPATIBILITY IDEOGRAPH-FABC;Lo;0;L;8B01;;;;N;;;;;
-FABD;CJK COMPATIBILITY IDEOGRAPH-FABD;Lo;0;L;8AFE;;;;N;;;;;
-FABE;CJK COMPATIBILITY IDEOGRAPH-FABE;Lo;0;L;8AED;;;;N;;;;;
-FABF;CJK COMPATIBILITY IDEOGRAPH-FABF;Lo;0;L;8B39;;;;N;;;;;
-FAC0;CJK COMPATIBILITY IDEOGRAPH-FAC0;Lo;0;L;8B8A;;;;N;;;;;
-FAC1;CJK COMPATIBILITY IDEOGRAPH-FAC1;Lo;0;L;8D08;;;;N;;;;;
-FAC2;CJK COMPATIBILITY IDEOGRAPH-FAC2;Lo;0;L;8F38;;;;N;;;;;
-FAC3;CJK COMPATIBILITY IDEOGRAPH-FAC3;Lo;0;L;9072;;;;N;;;;;
-FAC4;CJK COMPATIBILITY IDEOGRAPH-FAC4;Lo;0;L;9199;;;;N;;;;;
-FAC5;CJK COMPATIBILITY IDEOGRAPH-FAC5;Lo;0;L;9276;;;;N;;;;;
-FAC6;CJK COMPATIBILITY IDEOGRAPH-FAC6;Lo;0;L;967C;;;;N;;;;;
-FAC7;CJK COMPATIBILITY IDEOGRAPH-FAC7;Lo;0;L;96E3;;;;N;;;;;
-FAC8;CJK COMPATIBILITY IDEOGRAPH-FAC8;Lo;0;L;9756;;;;N;;;;;
-FAC9;CJK COMPATIBILITY IDEOGRAPH-FAC9;Lo;0;L;97DB;;;;N;;;;;
-FACA;CJK COMPATIBILITY IDEOGRAPH-FACA;Lo;0;L;97FF;;;;N;;;;;
-FACB;CJK COMPATIBILITY IDEOGRAPH-FACB;Lo;0;L;980B;;;;N;;;;;
-FACC;CJK COMPATIBILITY IDEOGRAPH-FACC;Lo;0;L;983B;;;;N;;;;;
-FACD;CJK COMPATIBILITY IDEOGRAPH-FACD;Lo;0;L;9B12;;;;N;;;;;
-FACE;CJK COMPATIBILITY IDEOGRAPH-FACE;Lo;0;L;9F9C;;;;N;;;;;
-FACF;CJK COMPATIBILITY IDEOGRAPH-FACF;Lo;0;L;2284A;;;;N;;;;;
-FAD0;CJK COMPATIBILITY IDEOGRAPH-FAD0;Lo;0;L;22844;;;;N;;;;;
-FAD1;CJK COMPATIBILITY IDEOGRAPH-FAD1;Lo;0;L;233D5;;;;N;;;;;
-FAD2;CJK COMPATIBILITY IDEOGRAPH-FAD2;Lo;0;L;3B9D;;;;N;;;;;
-FAD3;CJK COMPATIBILITY IDEOGRAPH-FAD3;Lo;0;L;4018;;;;N;;;;;
-FAD4;CJK COMPATIBILITY IDEOGRAPH-FAD4;Lo;0;L;4039;;;;N;;;;;
-FAD5;CJK COMPATIBILITY IDEOGRAPH-FAD5;Lo;0;L;25249;;;;N;;;;;
-FAD6;CJK COMPATIBILITY IDEOGRAPH-FAD6;Lo;0;L;25CD0;;;;N;;;;;
-FAD7;CJK COMPATIBILITY IDEOGRAPH-FAD7;Lo;0;L;27ED3;;;;N;;;;;
-FAD8;CJK COMPATIBILITY IDEOGRAPH-FAD8;Lo;0;L;9F43;;;;N;;;;;
-FAD9;CJK COMPATIBILITY IDEOGRAPH-FAD9;Lo;0;L;9F8E;;;;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;ES;<font> 002B;;;;N;;;;;
-FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;;
-FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;;
-FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;;
-FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;;
-FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;;
-FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;;
-FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;;
-FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;;
-FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;;
-FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;;
-FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;;
-FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;;
-FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;;
-FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;;
-FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;;
-FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;;
-FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;;
-FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;;
-FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;;
-FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;;
-FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;;
-FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;;
-FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;;
-FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;;
-FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;;
-FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;;
-FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;;
-FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;;
-FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;;
-FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;;
-FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;;
-FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;;
-FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;;
-FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;;
-FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;;
-FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;;
-FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;;
-FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;;
-FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;;
-FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;;
-FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;;
-FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;;
-FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;;
-FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;;
-FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;;
-FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;;
-FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;;
-FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;;
-FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;;
-FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;;
-FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;;
-FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;;
-FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;;
-FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;;
-FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;;
-FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;;
-FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;;
-FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;;
-FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;;
-FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;;
-FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;;
-FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;;
-FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;;
-FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;;
-FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;;
-FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;;
-FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;;
-FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;;
-FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;;
-FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;;
-FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;;
-FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;;
-FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;;
-FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;;
-FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;;
-FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;;
-FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;;
-FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;;
-FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;;
-FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;;
-FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;;
-FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;;
-FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;;
-FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;;
-FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;;
-FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;;
-FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;;
-FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;;
-FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;;
-FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;;
-FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;;
-FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;;
-FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;;
-FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;;
-FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;;
-FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;;
-FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;;
-FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;;
-FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;;
-FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;;
-FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;;
-FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;;
-FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;;
-FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;;
-FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;;
-FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;;
-FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;;
-FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;;
-FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;;
-FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;;
-FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;;
-FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;;
-FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;;
-FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;;
-FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;;
-FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;;
-FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;;
-FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;;
-FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;;
-FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;;
-FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;;
-FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;;
-FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;;
-FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;;
-FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;;
-FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;;
-FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;;
-FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;;
-FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;;
-FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;;
-FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;;
-FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;;
-FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;;
-FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;;
-FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;;
-FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;;
-FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;;
-FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;;
-FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;;
-FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;;
-FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;;
-FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;;
-FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;;
-FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;;
-FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;;
-FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;;
-FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;;
-FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;;
-FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;;
-FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;;
-FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;;
-FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;;
-FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;;
-FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;;
-FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;;
-FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;;
-FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;;
-FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;;
-FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;;
-FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;;
-FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;;
-FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;;
-FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;;
-FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;;
-FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;;
-FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;;
-FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;;
-FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;;
-FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;;
-FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
-FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
-FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;;
-FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;;
-FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;;
-FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;;
-FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;;
-FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;;
-FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;;
-FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;;
-FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
-FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;;
-FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;;
-FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;;
-FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;;
-FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;;
-FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;;
-FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;;
-FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;;
-FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;;
-FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;;
-FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;;
-FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;;
-FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;;
-FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;;
-FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;;
-FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;;
-FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;;
-FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;;
-FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;;
-FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;;
-FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;;
-FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;;
-FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;;
-FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;;
-FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;;
-FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;;
-FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;;
-FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;;
-FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;;
-FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;;
-FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;;
-FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;;
-FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;;
-FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;;
-FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;;
-FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;;
-FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;;
-FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;;
-FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;;
-FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;;
-FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;;
-FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;;
-FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;;
-FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;;
-FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;;
-FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;;
-FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;;
-FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;;
-FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;;
-FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;;
-FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;;
-FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;;
-FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;;
-FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;;
-FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;;
-FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;;
-FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;;
-FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;;
-FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;;
-FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;;
-FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;;
-FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;;
-FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;;
-FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;;
-FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;;
-FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;;
-FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;;
-FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;;
-FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;;
-FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;;
-FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;;
-FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;;
-FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;;
-FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;;
-FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;;
-FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;;
-FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;;
-FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;;
-FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;;
-FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;;
-FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;;
-FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;;
-FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;;
-FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;;
-FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;;
-FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;;
-FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;;
-FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;;
-FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;;
-FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;;
-FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;;
-FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;;
-FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;;
-FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;;
-FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;;
-FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;;
-FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;;
-FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;;
-FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;;
-FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;;
-FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
-FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;;
-FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;;
-FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;;
-FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;;
-FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;;
-FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;;
-FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;;
-FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;;
-FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;;
-FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;;
-FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;;
-FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;;
-FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;;
-FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;;
-FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;;
-FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;;
-FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;;
-FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;;
-FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;;
-FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;;
-FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;;
-FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;;
-FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;;
-FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;;
-FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;;
-FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;;
-FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;;
-FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;;
-FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;;
-FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;;
-FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;;
-FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;;
-FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;;
-FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;;
-FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;;
-FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;;
-FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;;
-FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;;
-FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;;
-FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;;
-FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;;
-FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;;
-FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;;
-FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;;
-FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;;
-FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;;
-FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;;
-FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;;
-FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;;
-FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;;
-FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;;
-FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;;
-FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;;
-FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;;
-FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;;
-FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;;
-FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;;
-FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;;
-FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;;
-FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;;
-FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;;
-FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;;
-FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;;
-FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;;
-FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;;
-FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;;
-FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;;
-FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;;
-FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;;
-FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;;
-FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;;
-FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;;
-FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;;
-FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;;
-FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;;
-FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;;
-FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;;
-FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;;
-FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;;
-FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;;
-FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;;
-FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;;
-FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;;
-FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;;
-FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;;
-FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;;
-FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;;
-FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;;
-FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;;
-FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;;
-FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;;
-FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;;
-FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;;
-FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;;
-FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;;
-FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;;
-FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;;
-FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;;
-FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;;
-FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;;
-FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;;
-FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;;
-FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;;
-FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;;
-FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;;
-FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;;
-FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;;
-FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;;
-FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;;
-FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;;
-FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;;
-FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;;
-FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;;
-FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;;
-FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;;
-FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;;
-FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;;
-FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;;
-FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;;
-FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;;
-FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;;
-FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;;
-FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;;
-FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;;
-FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;;
-FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;;
-FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;;
-FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;;
-FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;;
-FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;;
-FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;;
-FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;;
-FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;;
-FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;;
-FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;;
-FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;;
-FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;;
-FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;;
-FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;;
-FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;;
-FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;;
-FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;;
-FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;;
-FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;;
-FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;;
-FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;;
-FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;;
-FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;;
-FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;;
-FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;;
-FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;;
-FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;;
-FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;;
-FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;;
-FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;;
-FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;;
-FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;;
-FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;;
-FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;;
-FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;;
-FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;;
-FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;;
-FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;;
-FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;;
-FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;;
-FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;;
-FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;;
-FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;;
-FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;;
-FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;;
-FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;;
-FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;;
-FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;;
-FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;;
-FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;;
-FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;;
-FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;;
-FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;;
-FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;;
-FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;;
-FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;;
-FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;;
-FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;;
-FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;;
-FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;;
-FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;;
-FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;;
-FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;;
-FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;;
-FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;;
-FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;;
-FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;;
-FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;;
-FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;;
-FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;;
-FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;;
-FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;;
-FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;;
-FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;;
-FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;;
-FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;;
-FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;;
-FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;;
-FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;;
-FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;;
-FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;;
-FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;;
-FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;;
-FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;;
-FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;;
-FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;;
-FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;;
-FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;;
-FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
-FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
-FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;;
-FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;;
-FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;;
-FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;;
-FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;;
-FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;;
-FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;;
-FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;;
-FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;;
-FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;;
-FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;;
-FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;;
-FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;;
-FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;;
-FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;;
-FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;;
-FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;;
-FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;;
-FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;;
-FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;;
-FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;;
-FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;;
-FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;;
-FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;;
-FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;;
-FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;;
-FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;;
-FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;;
-FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;;
-FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;;
-FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;;
-FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;;
-FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;;
-FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;;
-FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;;
-FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;;
-FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;;
-FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;;
-FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;;
-FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;;
-FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;;
-FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;;
-FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;;
-FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;;
-FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;;
-FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;;
-FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;;
-FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;;
-FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;;
-FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;;
-FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;;
-FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;;
-FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;;
-FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;;
-FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;;
-FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;;
-FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;;
-FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;;
-FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;;
-FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;;
-FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;;
-FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;;
-FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;;
-FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;;
-FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;;
-FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;;
-FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;;
-FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;;
-FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;;
-FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;;
-FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;;
-FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;;
-FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;;
-FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;;
-FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;;
-FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;;
-FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;;
-FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;;
-FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;;
-FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;;
-FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;;
-FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;;
-FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;;
-FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;;
-FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;;
-FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;;
-FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;;
-FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;;
-FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;;
-FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;;
-FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;;
-FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;;
-FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;;
-FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;;
-FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;;
-FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;;
-FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;;
-FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;;
-FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;;
-FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;;
-FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;;
-FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;;
-FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;;
-FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;;
-FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;;
-FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;;
-FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;;
-FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;;
-FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;;
-FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;;
-FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;;
-FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;;
-FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;;
-FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;;
-FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;;
-FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;;
-FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;;
-FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;;
-FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;;
-FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;;
-FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;;
-FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;;
-FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;;
-FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;;
-FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;;
-FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;;
-FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;;
-FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;;
-FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;;
-FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
-FDFC;RIAL SIGN;Sc;0;AL;<isolated> 0631 06CC 0627 0644;;;;N;;;;;
-FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;;
-FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;;
-FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;;
-FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;;
-FE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;;
-FE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;;
-FE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;;
-FE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;;
-FE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;;
-FE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;;
-FE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;;
-FE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;;
-FE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;;
-FE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;;
-FE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;;
-FE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;;
-FE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;;
-FE10;PRESENTATION FORM FOR VERTICAL COMMA;Po;0;ON;<vertical> 002C;;;;N;;;;;
-FE11;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;Po;0;ON;<vertical> 3001;;;;N;;;;;
-FE12;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;Po;0;ON;<vertical> 3002;;;;N;;;;;
-FE13;PRESENTATION FORM FOR VERTICAL COLON;Po;0;ON;<vertical> 003A;;;;N;;;;;
-FE14;PRESENTATION FORM FOR VERTICAL SEMICOLON;Po;0;ON;<vertical> 003B;;;;N;;;;;
-FE15;PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK;Po;0;ON;<vertical> 0021;;;;N;;;;;
-FE16;PRESENTATION FORM FOR VERTICAL QUESTION MARK;Po;0;ON;<vertical> 003F;;;;N;;;;;
-FE17;PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;<vertical> 3016;;;;N;;;;;
-FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Pe;0;ON;<vertical> 3017;;;;N;;;;;
-FE19;PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;Po;0;ON;<vertical> 2026;;;;N;;;;;
-FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
-FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
-FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
-FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
-FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;
-FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;
-FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;
-FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;
-FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;
-FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;
-FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;
-FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;
-FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;
-FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;
-FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;
-FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;
-FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;
-FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;
-FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;
-FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;
-FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;
-FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;
-FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;
-FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;
-FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;;
-FE45;SESAME DOT;Po;0;ON;;;;;N;;;;;
-FE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;;
-FE47;PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET;Ps;0;ON;<vertical> 005B;;;;N;;;;;
-FE48;PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;Pe;0;ON;<vertical> 005D;;;;N;;;;;
-FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;
-FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;
-FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;
-FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;
-FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;
-FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;
-FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;
-FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;;
-FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
-FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;;
-FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
-FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;;
-FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;
-FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;
-FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;
-FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;N;SMALL OPENING PARENTHESIS;;;;
-FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;;
-FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;;
-FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;;
-FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;;
-FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
-FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;;
-FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;
-FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;
-FE62;SMALL PLUS SIGN;Sm;0;ES;<small> 002B;;;;N;;;;;
-FE63;SMALL HYPHEN-MINUS;Pd;0;ES;<small> 002D;;;;N;;;;;
-FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;;
-FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;;
-FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;
-FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;
-FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;;
-FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;;
-FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
-FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
-FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
-FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
-FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;;
-FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
-FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
-FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
-FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
-FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
-FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
-FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
-FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
-FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
-FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
-FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
-FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
-FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
-FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
-FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
-FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
-FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
-FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
-FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
-FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
-FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
-FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
-FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
-FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
-FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
-FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
-FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
-FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
-FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
-FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
-FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
-FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
-FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
-FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
-FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
-FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
-FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
-FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
-FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
-FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
-FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
-FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
-FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
-FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
-FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
-FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
-FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
-FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
-FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
-FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
-FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
-FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
-FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
-FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
-FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
-FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
-FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
-FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
-FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
-FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
-FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
-FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
-FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
-FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
-FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
-FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
-FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
-FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
-FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
-FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
-FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
-FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
-FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
-FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
-FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
-FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
-FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
-FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
-FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
-FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
-FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
-FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
-FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
-FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
-FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
-FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
-FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
-FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
-FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
-FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
-FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
-FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
-FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
-FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
-FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
-FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
-FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
-FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
-FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
-FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
-FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
-FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
-FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
-FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
-FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
-FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
-FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
-FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
-FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
-FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
-FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
-FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
-FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
-FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
-FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
-FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
-FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
-FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
-FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
-FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
-FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
-FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
-FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
-FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
-FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
-FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
-FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
-FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
-FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
-FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
-FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
-FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
-FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
-FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
-FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
-FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
-FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;;
-FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;;
-FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;
-FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;;
-FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;;
-FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;;
-FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;
-FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;
-FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;;
-FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;;
-FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
-FF0B;FULLWIDTH PLUS SIGN;Sm;0;ES;<wide> 002B;;;;N;;;;;
-FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
-FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ES;<wide> 002D;;;;N;;;;;
-FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
-FF0F;FULLWIDTH SOLIDUS;Po;0;CS;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;
-FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
-FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
-FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
-FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
-FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
-FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
-FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
-FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
-FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
-FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
-FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;;
-FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
-FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;Y;;;;;
-FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
-FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;Y;;;;;
-FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;
-FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;
-FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;
-FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;
-FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;
-FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;
-FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;
-FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;
-FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;
-FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;
-FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;
-FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;
-FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;
-FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;
-FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;
-FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;
-FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;
-FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;
-FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;
-FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;
-FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;
-FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;
-FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;
-FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;
-FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;
-FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;
-FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;
-FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;
-FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;;
-FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;
-FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;;
-FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;
-FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;
-FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;
-FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21
-FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22
-FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23
-FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24
-FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25
-FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26
-FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27
-FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28
-FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29
-FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A
-FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B
-FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C
-FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D
-FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E
-FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F
-FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30
-FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31
-FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32
-FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33
-FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34
-FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35
-FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36
-FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37
-FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38
-FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39
-FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A
-FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;;
-FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;
-FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;;
-FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
-FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON;<wide> 2985;;;;Y;;*;;;
-FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON;<wide> 2986;;;;Y;;*;;;
-FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
-FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;;
-FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;;
-FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
-FF65;HALFWIDTH KATAKANA MIDDLE DOT;Po;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;ON;;;;;N;;;;;
-FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;ON;;;;;N;;;;;
-FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;ON;;;;;N;;;;;
-FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
-FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
-10000;LINEAR B SYLLABLE B008 A;Lo;0;L;;;;;N;;;;;
-10001;LINEAR B SYLLABLE B038 E;Lo;0;L;;;;;N;;;;;
-10002;LINEAR B SYLLABLE B028 I;Lo;0;L;;;;;N;;;;;
-10003;LINEAR B SYLLABLE B061 O;Lo;0;L;;;;;N;;;;;
-10004;LINEAR B SYLLABLE B010 U;Lo;0;L;;;;;N;;;;;
-10005;LINEAR B SYLLABLE B001 DA;Lo;0;L;;;;;N;;;;;
-10006;LINEAR B SYLLABLE B045 DE;Lo;0;L;;;;;N;;;;;
-10007;LINEAR B SYLLABLE B007 DI;Lo;0;L;;;;;N;;;;;
-10008;LINEAR B SYLLABLE B014 DO;Lo;0;L;;;;;N;;;;;
-10009;LINEAR B SYLLABLE B051 DU;Lo;0;L;;;;;N;;;;;
-1000A;LINEAR B SYLLABLE B057 JA;Lo;0;L;;;;;N;;;;;
-1000B;LINEAR B SYLLABLE B046 JE;Lo;0;L;;;;;N;;;;;
-1000D;LINEAR B SYLLABLE B036 JO;Lo;0;L;;;;;N;;;;;
-1000E;LINEAR B SYLLABLE B065 JU;Lo;0;L;;;;;N;;;;;
-1000F;LINEAR B SYLLABLE B077 KA;Lo;0;L;;;;;N;;;;;
-10010;LINEAR B SYLLABLE B044 KE;Lo;0;L;;;;;N;;;;;
-10011;LINEAR B SYLLABLE B067 KI;Lo;0;L;;;;;N;;;;;
-10012;LINEAR B SYLLABLE B070 KO;Lo;0;L;;;;;N;;;;;
-10013;LINEAR B SYLLABLE B081 KU;Lo;0;L;;;;;N;;;;;
-10014;LINEAR B SYLLABLE B080 MA;Lo;0;L;;;;;N;;;;;
-10015;LINEAR B SYLLABLE B013 ME;Lo;0;L;;;;;N;;;;;
-10016;LINEAR B SYLLABLE B073 MI;Lo;0;L;;;;;N;;;;;
-10017;LINEAR B SYLLABLE B015 MO;Lo;0;L;;;;;N;;;;;
-10018;LINEAR B SYLLABLE B023 MU;Lo;0;L;;;;;N;;;;;
-10019;LINEAR B SYLLABLE B006 NA;Lo;0;L;;;;;N;;;;;
-1001A;LINEAR B SYLLABLE B024 NE;Lo;0;L;;;;;N;;;;;
-1001B;LINEAR B SYLLABLE B030 NI;Lo;0;L;;;;;N;;;;;
-1001C;LINEAR B SYLLABLE B052 NO;Lo;0;L;;;;;N;;;;;
-1001D;LINEAR B SYLLABLE B055 NU;Lo;0;L;;;;;N;;;;;
-1001E;LINEAR B SYLLABLE B003 PA;Lo;0;L;;;;;N;;;;;
-1001F;LINEAR B SYLLABLE B072 PE;Lo;0;L;;;;;N;;;;;
-10020;LINEAR B SYLLABLE B039 PI;Lo;0;L;;;;;N;;;;;
-10021;LINEAR B SYLLABLE B011 PO;Lo;0;L;;;;;N;;;;;
-10022;LINEAR B SYLLABLE B050 PU;Lo;0;L;;;;;N;;;;;
-10023;LINEAR B SYLLABLE B016 QA;Lo;0;L;;;;;N;;;;;
-10024;LINEAR B SYLLABLE B078 QE;Lo;0;L;;;;;N;;;;;
-10025;LINEAR B SYLLABLE B021 QI;Lo;0;L;;;;;N;;;;;
-10026;LINEAR B SYLLABLE B032 QO;Lo;0;L;;;;;N;;;;;
-10028;LINEAR B SYLLABLE B060 RA;Lo;0;L;;;;;N;;;;;
-10029;LINEAR B SYLLABLE B027 RE;Lo;0;L;;;;;N;;;;;
-1002A;LINEAR B SYLLABLE B053 RI;Lo;0;L;;;;;N;;;;;
-1002B;LINEAR B SYLLABLE B002 RO;Lo;0;L;;;;;N;;;;;
-1002C;LINEAR B SYLLABLE B026 RU;Lo;0;L;;;;;N;;;;;
-1002D;LINEAR B SYLLABLE B031 SA;Lo;0;L;;;;;N;;;;;
-1002E;LINEAR B SYLLABLE B009 SE;Lo;0;L;;;;;N;;;;;
-1002F;LINEAR B SYLLABLE B041 SI;Lo;0;L;;;;;N;;;;;
-10030;LINEAR B SYLLABLE B012 SO;Lo;0;L;;;;;N;;;;;
-10031;LINEAR B SYLLABLE B058 SU;Lo;0;L;;;;;N;;;;;
-10032;LINEAR B SYLLABLE B059 TA;Lo;0;L;;;;;N;;;;;
-10033;LINEAR B SYLLABLE B004 TE;Lo;0;L;;;;;N;;;;;
-10034;LINEAR B SYLLABLE B037 TI;Lo;0;L;;;;;N;;;;;
-10035;LINEAR B SYLLABLE B005 TO;Lo;0;L;;;;;N;;;;;
-10036;LINEAR B SYLLABLE B069 TU;Lo;0;L;;;;;N;;;;;
-10037;LINEAR B SYLLABLE B054 WA;Lo;0;L;;;;;N;;;;;
-10038;LINEAR B SYLLABLE B075 WE;Lo;0;L;;;;;N;;;;;
-10039;LINEAR B SYLLABLE B040 WI;Lo;0;L;;;;;N;;;;;
-1003A;LINEAR B SYLLABLE B042 WO;Lo;0;L;;;;;N;;;;;
-1003C;LINEAR B SYLLABLE B017 ZA;Lo;0;L;;;;;N;;;;;
-1003D;LINEAR B SYLLABLE B074 ZE;Lo;0;L;;;;;N;;;;;
-1003F;LINEAR B SYLLABLE B020 ZO;Lo;0;L;;;;;N;;;;;
-10040;LINEAR B SYLLABLE B025 A2;Lo;0;L;;;;;N;;;;;
-10041;LINEAR B SYLLABLE B043 A3;Lo;0;L;;;;;N;;;;;
-10042;LINEAR B SYLLABLE B085 AU;Lo;0;L;;;;;N;;;;;
-10043;LINEAR B SYLLABLE B071 DWE;Lo;0;L;;;;;N;;;;;
-10044;LINEAR B SYLLABLE B090 DWO;Lo;0;L;;;;;N;;;;;
-10045;LINEAR B SYLLABLE B048 NWA;Lo;0;L;;;;;N;;;;;
-10046;LINEAR B SYLLABLE B029 PU2;Lo;0;L;;;;;N;;;;;
-10047;LINEAR B SYLLABLE B062 PTE;Lo;0;L;;;;;N;;;;;
-10048;LINEAR B SYLLABLE B076 RA2;Lo;0;L;;;;;N;;;;;
-10049;LINEAR B SYLLABLE B033 RA3;Lo;0;L;;;;;N;;;;;
-1004A;LINEAR B SYLLABLE B068 RO2;Lo;0;L;;;;;N;;;;;
-1004B;LINEAR B SYLLABLE B066 TA2;Lo;0;L;;;;;N;;;;;
-1004C;LINEAR B SYLLABLE B087 TWE;Lo;0;L;;;;;N;;;;;
-1004D;LINEAR B SYLLABLE B091 TWO;Lo;0;L;;;;;N;;;;;
-10050;LINEAR B SYMBOL B018;Lo;0;L;;;;;N;;;;;
-10051;LINEAR B SYMBOL B019;Lo;0;L;;;;;N;;;;;
-10052;LINEAR B SYMBOL B022;Lo;0;L;;;;;N;;;;;
-10053;LINEAR B SYMBOL B034;Lo;0;L;;;;;N;;;;;
-10054;LINEAR B SYMBOL B047;Lo;0;L;;;;;N;;;;;
-10055;LINEAR B SYMBOL B049;Lo;0;L;;;;;N;;;;;
-10056;LINEAR B SYMBOL B056;Lo;0;L;;;;;N;;;;;
-10057;LINEAR B SYMBOL B063;Lo;0;L;;;;;N;;;;;
-10058;LINEAR B SYMBOL B064;Lo;0;L;;;;;N;;;;;
-10059;LINEAR B SYMBOL B079;Lo;0;L;;;;;N;;;;;
-1005A;LINEAR B SYMBOL B082;Lo;0;L;;;;;N;;;;;
-1005B;LINEAR B SYMBOL B083;Lo;0;L;;;;;N;;;;;
-1005C;LINEAR B SYMBOL B086;Lo;0;L;;;;;N;;;;;
-1005D;LINEAR B SYMBOL B089;Lo;0;L;;;;;N;;;;;
-10080;LINEAR B IDEOGRAM B100 MAN;Lo;0;L;;;;;N;;;;;
-10081;LINEAR B IDEOGRAM B102 WOMAN;Lo;0;L;;;;;N;;;;;
-10082;LINEAR B IDEOGRAM B104 DEER;Lo;0;L;;;;;N;;;;;
-10083;LINEAR B IDEOGRAM B105 EQUID;Lo;0;L;;;;;N;;;;;
-10084;LINEAR B IDEOGRAM B105F MARE;Lo;0;L;;;;;N;;;;;
-10085;LINEAR B IDEOGRAM B105M STALLION;Lo;0;L;;;;;N;;;;;
-10086;LINEAR B IDEOGRAM B106F EWE;Lo;0;L;;;;;N;;;;;
-10087;LINEAR B IDEOGRAM B106M RAM;Lo;0;L;;;;;N;;;;;
-10088;LINEAR B IDEOGRAM B107F SHE-GOAT;Lo;0;L;;;;;N;;;;;
-10089;LINEAR B IDEOGRAM B107M HE-GOAT;Lo;0;L;;;;;N;;;;;
-1008A;LINEAR B IDEOGRAM B108F SOW;Lo;0;L;;;;;N;;;;;
-1008B;LINEAR B IDEOGRAM B108M BOAR;Lo;0;L;;;;;N;;;;;
-1008C;LINEAR B IDEOGRAM B109F COW;Lo;0;L;;;;;N;;;;;
-1008D;LINEAR B IDEOGRAM B109M BULL;Lo;0;L;;;;;N;;;;;
-1008E;LINEAR B IDEOGRAM B120 WHEAT;Lo;0;L;;;;;N;;;;;
-1008F;LINEAR B IDEOGRAM B121 BARLEY;Lo;0;L;;;;;N;;;;;
-10090;LINEAR B IDEOGRAM B122 OLIVE;Lo;0;L;;;;;N;;;;;
-10091;LINEAR B IDEOGRAM B123 SPICE;Lo;0;L;;;;;N;;;;;
-10092;LINEAR B IDEOGRAM B125 CYPERUS;Lo;0;L;;;;;N;;;;;
-10093;LINEAR B MONOGRAM B127 KAPO;Lo;0;L;;;;;N;;;;;
-10094;LINEAR B MONOGRAM B128 KANAKO;Lo;0;L;;;;;N;;;;;
-10095;LINEAR B IDEOGRAM B130 OIL;Lo;0;L;;;;;N;;;;;
-10096;LINEAR B IDEOGRAM B131 WINE;Lo;0;L;;;;;N;;;;;
-10097;LINEAR B IDEOGRAM B132;Lo;0;L;;;;;N;;;;;
-10098;LINEAR B MONOGRAM B133 AREPA;Lo;0;L;;;;;N;;;;;
-10099;LINEAR B MONOGRAM B135 MERI;Lo;0;L;;;;;N;;;;;
-1009A;LINEAR B IDEOGRAM B140 BRONZE;Lo;0;L;;;;;N;;;;;
-1009B;LINEAR B IDEOGRAM B141 GOLD;Lo;0;L;;;;;N;;;;;
-1009C;LINEAR B IDEOGRAM B142;Lo;0;L;;;;;N;;;;;
-1009D;LINEAR B IDEOGRAM B145 WOOL;Lo;0;L;;;;;N;;;;;
-1009E;LINEAR B IDEOGRAM B146;Lo;0;L;;;;;N;;;;;
-1009F;LINEAR B IDEOGRAM B150;Lo;0;L;;;;;N;;;;;
-100A0;LINEAR B IDEOGRAM B151 HORN;Lo;0;L;;;;;N;;;;;
-100A1;LINEAR B IDEOGRAM B152;Lo;0;L;;;;;N;;;;;
-100A2;LINEAR B IDEOGRAM B153;Lo;0;L;;;;;N;;;;;
-100A3;LINEAR B IDEOGRAM B154;Lo;0;L;;;;;N;;;;;
-100A4;LINEAR B MONOGRAM B156 TURO2;Lo;0;L;;;;;N;;;;;
-100A5;LINEAR B IDEOGRAM B157;Lo;0;L;;;;;N;;;;;
-100A6;LINEAR B IDEOGRAM B158;Lo;0;L;;;;;N;;;;;
-100A7;LINEAR B IDEOGRAM B159 CLOTH;Lo;0;L;;;;;N;;;;;
-100A8;LINEAR B IDEOGRAM B160;Lo;0;L;;;;;N;;;;;
-100A9;LINEAR B IDEOGRAM B161;Lo;0;L;;;;;N;;;;;
-100AA;LINEAR B IDEOGRAM B162 GARMENT;Lo;0;L;;;;;N;;;;;
-100AB;LINEAR B IDEOGRAM B163 ARMOUR;Lo;0;L;;;;;N;;;;;
-100AC;LINEAR B IDEOGRAM B164;Lo;0;L;;;;;N;;;;;
-100AD;LINEAR B IDEOGRAM B165;Lo;0;L;;;;;N;;;;;
-100AE;LINEAR B IDEOGRAM B166;Lo;0;L;;;;;N;;;;;
-100AF;LINEAR B IDEOGRAM B167;Lo;0;L;;;;;N;;;;;
-100B0;LINEAR B IDEOGRAM B168;Lo;0;L;;;;;N;;;;;
-100B1;LINEAR B IDEOGRAM B169;Lo;0;L;;;;;N;;;;;
-100B2;LINEAR B IDEOGRAM B170;Lo;0;L;;;;;N;;;;;
-100B3;LINEAR B IDEOGRAM B171;Lo;0;L;;;;;N;;;;;
-100B4;LINEAR B IDEOGRAM B172;Lo;0;L;;;;;N;;;;;
-100B5;LINEAR B IDEOGRAM B173 MONTH;Lo;0;L;;;;;N;;;;;
-100B6;LINEAR B IDEOGRAM B174;Lo;0;L;;;;;N;;;;;
-100B7;LINEAR B IDEOGRAM B176 TREE;Lo;0;L;;;;;N;;;;;
-100B8;LINEAR B IDEOGRAM B177;Lo;0;L;;;;;N;;;;;
-100B9;LINEAR B IDEOGRAM B178;Lo;0;L;;;;;N;;;;;
-100BA;LINEAR B IDEOGRAM B179;Lo;0;L;;;;;N;;;;;
-100BB;LINEAR B IDEOGRAM B180;Lo;0;L;;;;;N;;;;;
-100BC;LINEAR B IDEOGRAM B181;Lo;0;L;;;;;N;;;;;
-100BD;LINEAR B IDEOGRAM B182;Lo;0;L;;;;;N;;;;;
-100BE;LINEAR B IDEOGRAM B183;Lo;0;L;;;;;N;;;;;
-100BF;LINEAR B IDEOGRAM B184;Lo;0;L;;;;;N;;;;;
-100C0;LINEAR B IDEOGRAM B185;Lo;0;L;;;;;N;;;;;
-100C1;LINEAR B IDEOGRAM B189;Lo;0;L;;;;;N;;;;;
-100C2;LINEAR B IDEOGRAM B190;Lo;0;L;;;;;N;;;;;
-100C3;LINEAR B IDEOGRAM B191 HELMET;Lo;0;L;;;;;N;;;;;
-100C4;LINEAR B IDEOGRAM B220 FOOTSTOOL;Lo;0;L;;;;;N;;;;;
-100C5;LINEAR B IDEOGRAM B225 BATHTUB;Lo;0;L;;;;;N;;;;;
-100C6;LINEAR B IDEOGRAM B230 SPEAR;Lo;0;L;;;;;N;;;;;
-100C7;LINEAR B IDEOGRAM B231 ARROW;Lo;0;L;;;;;N;;;;;
-100C8;LINEAR B IDEOGRAM B232;Lo;0;L;;;;;N;;;;;
-100C9;LINEAR B IDEOGRAM B233 SWORD;Lo;0;L;;;;;N;;pug;;;
-100CA;LINEAR B IDEOGRAM B234;Lo;0;L;;;;;N;;;;;
-100CB;LINEAR B IDEOGRAM B236;Lo;0;L;;;;;N;;gup;;;
-100CC;LINEAR B IDEOGRAM B240 WHEELED CHARIOT;Lo;0;L;;;;;N;;;;;
-100CD;LINEAR B IDEOGRAM B241 CHARIOT;Lo;0;L;;;;;N;;;;;
-100CE;LINEAR B IDEOGRAM B242 CHARIOT FRAME;Lo;0;L;;;;;N;;;;;
-100CF;LINEAR B IDEOGRAM B243 WHEEL;Lo;0;L;;;;;N;;;;;
-100D0;LINEAR B IDEOGRAM B245;Lo;0;L;;;;;N;;;;;
-100D1;LINEAR B IDEOGRAM B246;Lo;0;L;;;;;N;;;;;
-100D2;LINEAR B MONOGRAM B247 DIPTE;Lo;0;L;;;;;N;;;;;
-100D3;LINEAR B IDEOGRAM B248;Lo;0;L;;;;;N;;;;;
-100D4;LINEAR B IDEOGRAM B249;Lo;0;L;;;;;N;;;;;
-100D5;LINEAR B IDEOGRAM B251;Lo;0;L;;;;;N;;;;;
-100D6;LINEAR B IDEOGRAM B252;Lo;0;L;;;;;N;;;;;
-100D7;LINEAR B IDEOGRAM B253;Lo;0;L;;;;;N;;;;;
-100D8;LINEAR B IDEOGRAM B254 DART;Lo;0;L;;;;;N;;;;;
-100D9;LINEAR B IDEOGRAM B255;Lo;0;L;;;;;N;;;;;
-100DA;LINEAR B IDEOGRAM B256;Lo;0;L;;;;;N;;;;;
-100DB;LINEAR B IDEOGRAM B257;Lo;0;L;;;;;N;;;;;
-100DC;LINEAR B IDEOGRAM B258;Lo;0;L;;;;;N;;;;;
-100DD;LINEAR B IDEOGRAM B259;Lo;0;L;;;;;N;;;;;
-100DE;LINEAR B IDEOGRAM VESSEL B155;Lo;0;L;;;;;N;;;;;
-100DF;LINEAR B IDEOGRAM VESSEL B200;Lo;0;L;;;;;N;;;;;
-100E0;LINEAR B IDEOGRAM VESSEL B201;Lo;0;L;;;;;N;;;;;
-100E1;LINEAR B IDEOGRAM VESSEL B202;Lo;0;L;;;;;N;;;;;
-100E2;LINEAR B IDEOGRAM VESSEL B203;Lo;0;L;;;;;N;;;;;
-100E3;LINEAR B IDEOGRAM VESSEL B204;Lo;0;L;;;;;N;;;;;
-100E4;LINEAR B IDEOGRAM VESSEL B205;Lo;0;L;;;;;N;;;;;
-100E5;LINEAR B IDEOGRAM VESSEL B206;Lo;0;L;;;;;N;;;;;
-100E6;LINEAR B IDEOGRAM VESSEL B207;Lo;0;L;;;;;N;;;;;
-100E7;LINEAR B IDEOGRAM VESSEL B208;Lo;0;L;;;;;N;;;;;
-100E8;LINEAR B IDEOGRAM VESSEL B209;Lo;0;L;;;;;N;;;;;
-100E9;LINEAR B IDEOGRAM VESSEL B210;Lo;0;L;;;;;N;;;;;
-100EA;LINEAR B IDEOGRAM VESSEL B211;Lo;0;L;;;;;N;;;;;
-100EB;LINEAR B IDEOGRAM VESSEL B212;Lo;0;L;;;;;N;;;;;
-100EC;LINEAR B IDEOGRAM VESSEL B213;Lo;0;L;;;;;N;;;;;
-100ED;LINEAR B IDEOGRAM VESSEL B214;Lo;0;L;;;;;N;;;;;
-100EE;LINEAR B IDEOGRAM VESSEL B215;Lo;0;L;;;;;N;;;;;
-100EF;LINEAR B IDEOGRAM VESSEL B216;Lo;0;L;;;;;N;;;;;
-100F0;LINEAR B IDEOGRAM VESSEL B217;Lo;0;L;;;;;N;;;;;
-100F1;LINEAR B IDEOGRAM VESSEL B218;Lo;0;L;;;;;N;;;;;
-100F2;LINEAR B IDEOGRAM VESSEL B219;Lo;0;L;;;;;N;;;;;
-100F3;LINEAR B IDEOGRAM VESSEL B221;Lo;0;L;;;;;N;;;;;
-100F4;LINEAR B IDEOGRAM VESSEL B222;Lo;0;L;;;;;N;;;;;
-100F5;LINEAR B IDEOGRAM VESSEL B226;Lo;0;L;;;;;N;;;;;
-100F6;LINEAR B IDEOGRAM VESSEL B227;Lo;0;L;;;;;N;;;;;
-100F7;LINEAR B IDEOGRAM VESSEL B228;Lo;0;L;;;;;N;;;;;
-100F8;LINEAR B IDEOGRAM VESSEL B229;Lo;0;L;;;;;N;;;;;
-100F9;LINEAR B IDEOGRAM VESSEL B250;Lo;0;L;;;;;N;;;;;
-100FA;LINEAR B IDEOGRAM VESSEL B305;Lo;0;L;;;;;N;;;;;
-10100;AEGEAN WORD SEPARATOR LINE;Po;0;L;;;;;N;;;;;
-10101;AEGEAN WORD SEPARATOR DOT;Po;0;ON;;;;;N;;;;;
-10102;AEGEAN CHECK MARK;So;0;L;;;;;N;;;;;
-10107;AEGEAN NUMBER ONE;No;0;L;;;;1;N;;;;;
-10108;AEGEAN NUMBER TWO;No;0;L;;;;2;N;;;;;
-10109;AEGEAN NUMBER THREE;No;0;L;;;;3;N;;;;;
-1010A;AEGEAN NUMBER FOUR;No;0;L;;;;4;N;;;;;
-1010B;AEGEAN NUMBER FIVE;No;0;L;;;;5;N;;;;;
-1010C;AEGEAN NUMBER SIX;No;0;L;;;;6;N;;;;;
-1010D;AEGEAN NUMBER SEVEN;No;0;L;;;;7;N;;;;;
-1010E;AEGEAN NUMBER EIGHT;No;0;L;;;;8;N;;;;;
-1010F;AEGEAN NUMBER NINE;No;0;L;;;;9;N;;;;;
-10110;AEGEAN NUMBER TEN;No;0;L;;;;10;N;;;;;
-10111;AEGEAN NUMBER TWENTY;No;0;L;;;;20;N;;;;;
-10112;AEGEAN NUMBER THIRTY;No;0;L;;;;30;N;;;;;
-10113;AEGEAN NUMBER FORTY;No;0;L;;;;40;N;;;;;
-10114;AEGEAN NUMBER FIFTY;No;0;L;;;;50;N;;;;;
-10115;AEGEAN NUMBER SIXTY;No;0;L;;;;60;N;;;;;
-10116;AEGEAN NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
-10117;AEGEAN NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
-10118;AEGEAN NUMBER NINETY;No;0;L;;;;90;N;;;;;
-10119;AEGEAN NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
-1011A;AEGEAN NUMBER TWO HUNDRED;No;0;L;;;;200;N;;;;;
-1011B;AEGEAN NUMBER THREE HUNDRED;No;0;L;;;;300;N;;;;;
-1011C;AEGEAN NUMBER FOUR HUNDRED;No;0;L;;;;400;N;;;;;
-1011D;AEGEAN NUMBER FIVE HUNDRED;No;0;L;;;;500;N;;;;;
-1011E;AEGEAN NUMBER SIX HUNDRED;No;0;L;;;;600;N;;;;;
-1011F;AEGEAN NUMBER SEVEN HUNDRED;No;0;L;;;;700;N;;;;;
-10120;AEGEAN NUMBER EIGHT HUNDRED;No;0;L;;;;800;N;;;;;
-10121;AEGEAN NUMBER NINE HUNDRED;No;0;L;;;;900;N;;;;;
-10122;AEGEAN NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
-10123;AEGEAN NUMBER TWO THOUSAND;No;0;L;;;;2000;N;;;;;
-10124;AEGEAN NUMBER THREE THOUSAND;No;0;L;;;;3000;N;;;;;
-10125;AEGEAN NUMBER FOUR THOUSAND;No;0;L;;;;4000;N;;;;;
-10126;AEGEAN NUMBER FIVE THOUSAND;No;0;L;;;;5000;N;;;;;
-10127;AEGEAN NUMBER SIX THOUSAND;No;0;L;;;;6000;N;;;;;
-10128;AEGEAN NUMBER SEVEN THOUSAND;No;0;L;;;;7000;N;;;;;
-10129;AEGEAN NUMBER EIGHT THOUSAND;No;0;L;;;;8000;N;;;;;
-1012A;AEGEAN NUMBER NINE THOUSAND;No;0;L;;;;9000;N;;;;;
-1012B;AEGEAN NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
-1012C;AEGEAN NUMBER TWENTY THOUSAND;No;0;L;;;;20000;N;;;;;
-1012D;AEGEAN NUMBER THIRTY THOUSAND;No;0;L;;;;30000;N;;;;;
-1012E;AEGEAN NUMBER FORTY THOUSAND;No;0;L;;;;40000;N;;;;;
-1012F;AEGEAN NUMBER FIFTY THOUSAND;No;0;L;;;;50000;N;;;;;
-10130;AEGEAN NUMBER SIXTY THOUSAND;No;0;L;;;;60000;N;;;;;
-10131;AEGEAN NUMBER SEVENTY THOUSAND;No;0;L;;;;70000;N;;;;;
-10132;AEGEAN NUMBER EIGHTY THOUSAND;No;0;L;;;;80000;N;;;;;
-10133;AEGEAN NUMBER NINETY THOUSAND;No;0;L;;;;90000;N;;;;;
-10137;AEGEAN WEIGHT BASE UNIT;So;0;L;;;;;N;;;;;
-10138;AEGEAN WEIGHT FIRST SUBUNIT;So;0;L;;;;;N;;;;;
-10139;AEGEAN WEIGHT SECOND SUBUNIT;So;0;L;;;;;N;;;;;
-1013A;AEGEAN WEIGHT THIRD SUBUNIT;So;0;L;;;;;N;;;;;
-1013B;AEGEAN WEIGHT FOURTH SUBUNIT;So;0;L;;;;;N;;;;;
-1013C;AEGEAN DRY MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;;
-1013D;AEGEAN LIQUID MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;;
-1013E;AEGEAN MEASURE SECOND SUBUNIT;So;0;L;;;;;N;;;;;
-1013F;AEGEAN MEASURE THIRD SUBUNIT;So;0;L;;;;;N;;;;;
-10140;GREEK ACROPHONIC ATTIC ONE QUARTER;Nl;0;ON;;;;1/4;N;;;;;
-10141;GREEK ACROPHONIC ATTIC ONE HALF;Nl;0;ON;;;;1/2;N;;;;;
-10142;GREEK ACROPHONIC ATTIC ONE DRACHMA;Nl;0;ON;;;;1;N;;;;;
-10143;GREEK ACROPHONIC ATTIC FIVE;Nl;0;ON;;;;5;N;;;;;
-10144;GREEK ACROPHONIC ATTIC FIFTY;Nl;0;ON;;;;50;N;;;;;
-10145;GREEK ACROPHONIC ATTIC FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
-10146;GREEK ACROPHONIC ATTIC FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;;
-10147;GREEK ACROPHONIC ATTIC FIFTY THOUSAND;Nl;0;ON;;;;50000;N;;;;;
-10148;GREEK ACROPHONIC ATTIC FIVE TALENTS;Nl;0;ON;;;;5;N;;;;;
-10149;GREEK ACROPHONIC ATTIC TEN TALENTS;Nl;0;ON;;;;10;N;;;;;
-1014A;GREEK ACROPHONIC ATTIC FIFTY TALENTS;Nl;0;ON;;;;50;N;;;;;
-1014B;GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS;Nl;0;ON;;;;100;N;;;;;
-1014C;GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS;Nl;0;ON;;;;500;N;;;;;
-1014D;GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS;Nl;0;ON;;;;1000;N;;;;;
-1014E;GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS;Nl;0;ON;;;;5000;N;;;;;
-1014F;GREEK ACROPHONIC ATTIC FIVE STATERS;Nl;0;ON;;;;5;N;;;;;
-10150;GREEK ACROPHONIC ATTIC TEN STATERS;Nl;0;ON;;;;10;N;;;;;
-10151;GREEK ACROPHONIC ATTIC FIFTY STATERS;Nl;0;ON;;;;50;N;;;;;
-10152;GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS;Nl;0;ON;;;;100;N;;;;;
-10153;GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS;Nl;0;ON;;;;500;N;;;;;
-10154;GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS;Nl;0;ON;;;;1000;N;;;;;
-10155;GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS;Nl;0;ON;;;;10000;N;;;;;
-10156;GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS;Nl;0;ON;;;;50000;N;;;;;
-10157;GREEK ACROPHONIC ATTIC TEN MNAS;Nl;0;ON;;;;10;N;;;;;
-10158;GREEK ACROPHONIC HERAEUM ONE PLETHRON;Nl;0;ON;;;;1;N;;;;;
-10159;GREEK ACROPHONIC THESPIAN ONE;Nl;0;ON;;;;1;N;;;;;
-1015A;GREEK ACROPHONIC HERMIONIAN ONE;Nl;0;ON;;;;1;N;;;;;
-1015B;GREEK ACROPHONIC EPIDAUREAN TWO;Nl;0;ON;;;;2;N;;;;;
-1015C;GREEK ACROPHONIC THESPIAN TWO;Nl;0;ON;;;;2;N;;;;;
-1015D;GREEK ACROPHONIC CYRENAIC TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;;
-1015E;GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;;
-1015F;GREEK ACROPHONIC TROEZENIAN FIVE;Nl;0;ON;;;;5;N;;;;;
-10160;GREEK ACROPHONIC TROEZENIAN TEN;Nl;0;ON;;;;10;N;;;;;
-10161;GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM;Nl;0;ON;;;;10;N;;;;;
-10162;GREEK ACROPHONIC HERMIONIAN TEN;Nl;0;ON;;;;10;N;;;;;
-10163;GREEK ACROPHONIC MESSENIAN TEN;Nl;0;ON;;;;10;N;;;;;
-10164;GREEK ACROPHONIC THESPIAN TEN;Nl;0;ON;;;;10;N;;;;;
-10165;GREEK ACROPHONIC THESPIAN THIRTY;Nl;0;ON;;;;30;N;;;;;
-10166;GREEK ACROPHONIC TROEZENIAN FIFTY;Nl;0;ON;;;;50;N;;;;;
-10167;GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM;Nl;0;ON;;;;50;N;;;;;
-10168;GREEK ACROPHONIC HERMIONIAN FIFTY;Nl;0;ON;;;;50;N;;;;;
-10169;GREEK ACROPHONIC THESPIAN FIFTY;Nl;0;ON;;;;50;N;;;;;
-1016A;GREEK ACROPHONIC THESPIAN ONE HUNDRED;Nl;0;ON;;;;100;N;;;;;
-1016B;GREEK ACROPHONIC THESPIAN THREE HUNDRED;Nl;0;ON;;;;300;N;;;;;
-1016C;GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
-1016D;GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
-1016E;GREEK ACROPHONIC THESPIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
-1016F;GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
-10170;GREEK ACROPHONIC NAXIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
-10171;GREEK ACROPHONIC THESPIAN ONE THOUSAND;Nl;0;ON;;;;1000;N;;;;;
-10172;GREEK ACROPHONIC THESPIAN FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;;
-10173;GREEK ACROPHONIC DELPHIC FIVE MNAS;Nl;0;ON;;;;5;N;;;;;
-10174;GREEK ACROPHONIC STRATIAN FIFTY MNAS;Nl;0;ON;;;;50;N;;;;;
-10175;GREEK ONE HALF SIGN;No;0;ON;;;;1/2;N;;;;;
-10176;GREEK ONE HALF SIGN ALTERNATE FORM;No;0;ON;;;;1/2;N;;;;;
-10177;GREEK TWO THIRDS SIGN;No;0;ON;;;;2/3;N;;;;;
-10178;GREEK THREE QUARTERS SIGN;No;0;ON;;;;3/4;N;;;;;
-10179;GREEK YEAR SIGN;So;0;ON;;;;;N;;;;;
-1017A;GREEK TALENT SIGN;So;0;ON;;;;;N;;;;;
-1017B;GREEK DRACHMA SIGN;So;0;ON;;;;;N;;;;;
-1017C;GREEK OBOL SIGN;So;0;ON;;;;;N;;;;;
-1017D;GREEK TWO OBOLS SIGN;So;0;ON;;;;;N;;;;;
-1017E;GREEK THREE OBOLS SIGN;So;0;ON;;;;;N;;;;;
-1017F;GREEK FOUR OBOLS SIGN;So;0;ON;;;;;N;;;;;
-10180;GREEK FIVE OBOLS SIGN;So;0;ON;;;;;N;;;;;
-10181;GREEK METRETES SIGN;So;0;ON;;;;;N;;;;;
-10182;GREEK KYATHOS BASE SIGN;So;0;ON;;;;;N;;;;;
-10183;GREEK LITRA SIGN;So;0;ON;;;;;N;;;;;
-10184;GREEK OUNKIA SIGN;So;0;ON;;;;;N;;;;;
-10185;GREEK XESTES SIGN;So;0;ON;;;;;N;;;;;
-10186;GREEK ARTABE SIGN;So;0;ON;;;;;N;;;;;
-10187;GREEK AROURA SIGN;So;0;ON;;;;;N;;;;;
-10188;GREEK GRAMMA SIGN;So;0;ON;;;;;N;;;;;
-10189;GREEK TRYBLION BASE SIGN;So;0;ON;;;;;N;;;;;
-1018A;GREEK ZERO SIGN;No;0;ON;;;;0;N;;;;;
-10300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;;
-10301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;;
-10302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;;
-10303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;;
-10304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;;
-10305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;;
-10306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;;
-10307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;;
-10308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;;
-10309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;;
-1030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;;
-1030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;;
-1030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;;
-1030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;;
-1030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;;
-1030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;Faliscan;;;
-10310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;;
-10311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;;
-10312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;;
-10313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;;
-10314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;;
-10315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;;
-10316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;;
-10317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;Faliscan;;;
-10318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;;
-10319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;;
-1031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;;
-1031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;Umbrian;;;
-1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;Umbrian;;;
-1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;Oscan;;;
-1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;Oscan;;;
-10320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;;
-10321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;;
-10322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;;
-10323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;;
-10330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;;
-10331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;;
-10332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;;
-10333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;;
-10334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;;
-10335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;;
-10336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;;
-10337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;;
-10338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;;
-10339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;;
-1033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;;
-1033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;;
-1033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;;
-1033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;;
-1033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;;
-1033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;;
-10340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;;
-10341;GOTHIC LETTER NINETY;Lo;0;L;;;;;N;;;;;
-10342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;;
-10343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;;
-10344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;;
-10345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;;
-10346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;;
-10347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;;
-10348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;;
-10349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;;
-1034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;900;N;;;;;
-10380;UGARITIC LETTER ALPA;Lo;0;L;;;;;N;;;;;
-10381;UGARITIC LETTER BETA;Lo;0;L;;;;;N;;;;;
-10382;UGARITIC LETTER GAMLA;Lo;0;L;;;;;N;;;;;
-10383;UGARITIC LETTER KHA;Lo;0;L;;;;;N;;;;;
-10384;UGARITIC LETTER DELTA;Lo;0;L;;;;;N;;;;;
-10385;UGARITIC LETTER HO;Lo;0;L;;;;;N;;;;;
-10386;UGARITIC LETTER WO;Lo;0;L;;;;;N;;;;;
-10387;UGARITIC LETTER ZETA;Lo;0;L;;;;;N;;;;;
-10388;UGARITIC LETTER HOTA;Lo;0;L;;;;;N;;;;;
-10389;UGARITIC LETTER TET;Lo;0;L;;;;;N;;;;;
-1038A;UGARITIC LETTER YOD;Lo;0;L;;;;;N;;;;;
-1038B;UGARITIC LETTER KAF;Lo;0;L;;;;;N;;;;;
-1038C;UGARITIC LETTER SHIN;Lo;0;L;;;;;N;;;;;
-1038D;UGARITIC LETTER LAMDA;Lo;0;L;;;;;N;;;;;
-1038E;UGARITIC LETTER MEM;Lo;0;L;;;;;N;;;;;
-1038F;UGARITIC LETTER DHAL;Lo;0;L;;;;;N;;;;;
-10390;UGARITIC LETTER NUN;Lo;0;L;;;;;N;;;;;
-10391;UGARITIC LETTER ZU;Lo;0;L;;;;;N;;;;;
-10392;UGARITIC LETTER SAMKA;Lo;0;L;;;;;N;;;;;
-10393;UGARITIC LETTER AIN;Lo;0;L;;;;;N;;;;;
-10394;UGARITIC LETTER PU;Lo;0;L;;;;;N;;;;;
-10395;UGARITIC LETTER SADE;Lo;0;L;;;;;N;;;;;
-10396;UGARITIC LETTER QOPA;Lo;0;L;;;;;N;;;;;
-10397;UGARITIC LETTER RASHA;Lo;0;L;;;;;N;;;;;
-10398;UGARITIC LETTER THANNA;Lo;0;L;;;;;N;;;;;
-10399;UGARITIC LETTER GHAIN;Lo;0;L;;;;;N;;;;;
-1039A;UGARITIC LETTER TO;Lo;0;L;;;;;N;;;;;
-1039B;UGARITIC LETTER I;Lo;0;L;;;;;N;;;;;
-1039C;UGARITIC LETTER U;Lo;0;L;;;;;N;;;;;
-1039D;UGARITIC LETTER SSU;Lo;0;L;;;;;N;;;;;
-1039F;UGARITIC WORD DIVIDER;Po;0;L;;;;;N;;;;;
-103A0;OLD PERSIAN SIGN A;Lo;0;L;;;;;N;;;;;
-103A1;OLD PERSIAN SIGN I;Lo;0;L;;;;;N;;;;;
-103A2;OLD PERSIAN SIGN U;Lo;0;L;;;;;N;;;;;
-103A3;OLD PERSIAN SIGN KA;Lo;0;L;;;;;N;;;;;
-103A4;OLD PERSIAN SIGN KU;Lo;0;L;;;;;N;;;;;
-103A5;OLD PERSIAN SIGN GA;Lo;0;L;;;;;N;;;;;
-103A6;OLD PERSIAN SIGN GU;Lo;0;L;;;;;N;;;;;
-103A7;OLD PERSIAN SIGN XA;Lo;0;L;;;;;N;;;;;
-103A8;OLD PERSIAN SIGN CA;Lo;0;L;;;;;N;;;;;
-103A9;OLD PERSIAN SIGN JA;Lo;0;L;;;;;N;;;;;
-103AA;OLD PERSIAN SIGN JI;Lo;0;L;;;;;N;;;;;
-103AB;OLD PERSIAN SIGN TA;Lo;0;L;;;;;N;;;;;
-103AC;OLD PERSIAN SIGN TU;Lo;0;L;;;;;N;;;;;
-103AD;OLD PERSIAN SIGN DA;Lo;0;L;;;;;N;;;;;
-103AE;OLD PERSIAN SIGN DI;Lo;0;L;;;;;N;;;;;
-103AF;OLD PERSIAN SIGN DU;Lo;0;L;;;;;N;;;;;
-103B0;OLD PERSIAN SIGN THA;Lo;0;L;;;;;N;;;;;
-103B1;OLD PERSIAN SIGN PA;Lo;0;L;;;;;N;;;;;
-103B2;OLD PERSIAN SIGN BA;Lo;0;L;;;;;N;;;;;
-103B3;OLD PERSIAN SIGN FA;Lo;0;L;;;;;N;;;;;
-103B4;OLD PERSIAN SIGN NA;Lo;0;L;;;;;N;;;;;
-103B5;OLD PERSIAN SIGN NU;Lo;0;L;;;;;N;;;;;
-103B6;OLD PERSIAN SIGN MA;Lo;0;L;;;;;N;;;;;
-103B7;OLD PERSIAN SIGN MI;Lo;0;L;;;;;N;;;;;
-103B8;OLD PERSIAN SIGN MU;Lo;0;L;;;;;N;;;;;
-103B9;OLD PERSIAN SIGN YA;Lo;0;L;;;;;N;;;;;
-103BA;OLD PERSIAN SIGN VA;Lo;0;L;;;;;N;;;;;
-103BB;OLD PERSIAN SIGN VI;Lo;0;L;;;;;N;;;;;
-103BC;OLD PERSIAN SIGN RA;Lo;0;L;;;;;N;;;;;
-103BD;OLD PERSIAN SIGN RU;Lo;0;L;;;;;N;;;;;
-103BE;OLD PERSIAN SIGN LA;Lo;0;L;;;;;N;;;;;
-103BF;OLD PERSIAN SIGN SA;Lo;0;L;;;;;N;;;;;
-103C0;OLD PERSIAN SIGN ZA;Lo;0;L;;;;;N;;;;;
-103C1;OLD PERSIAN SIGN SHA;Lo;0;L;;;;;N;;;;;
-103C2;OLD PERSIAN SIGN SSA;Lo;0;L;;;;;N;;;;;
-103C3;OLD PERSIAN SIGN HA;Lo;0;L;;;;;N;;;;;
-103C8;OLD PERSIAN SIGN AURAMAZDAA;Lo;0;L;;;;;N;;;;;
-103C9;OLD PERSIAN SIGN AURAMAZDAA-2;Lo;0;L;;;;;N;;;;;
-103CA;OLD PERSIAN SIGN AURAMAZDAAHA;Lo;0;L;;;;;N;;;;;
-103CB;OLD PERSIAN SIGN XSHAAYATHIYA;Lo;0;L;;;;;N;;;;;
-103CC;OLD PERSIAN SIGN DAHYAAUSH;Lo;0;L;;;;;N;;;;;
-103CD;OLD PERSIAN SIGN DAHYAAUSH-2;Lo;0;L;;;;;N;;;;;
-103CE;OLD PERSIAN SIGN BAGA;Lo;0;L;;;;;N;;;;;
-103CF;OLD PERSIAN SIGN BUUMISH;Lo;0;L;;;;;N;;;;;
-103D0;OLD PERSIAN WORD DIVIDER;So;0;L;;;;;N;;;;;
-103D1;OLD PERSIAN NUMBER ONE;Nl;0;ON;;;;1;N;;;;;
-103D2;OLD PERSIAN NUMBER TWO;Nl;0;ON;;;;2;N;;;;;
-103D3;OLD PERSIAN NUMBER TEN;Nl;0;ON;;;;10;N;;;;;
-103D4;OLD PERSIAN NUMBER TWENTY;Nl;0;ON;;;;20;N;;;;;
-103D5;OLD PERSIAN NUMBER HUNDRED;Nl;0;ON;;;;100;N;;;;;
-10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428;
-10401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429;
-10402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A;
-10403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B;
-10404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C;
-10405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D;
-10406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E;
-10407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F;
-10408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430;
-10409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431;
-1040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432;
-1040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433;
-1040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434;
-1040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435;
-1040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436;
-1040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437;
-10410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438;
-10411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439;
-10412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A;
-10413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B;
-10414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C;
-10415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D;
-10416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E;
-10417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F;
-10418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440;
-10419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441;
-1041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442;
-1041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443;
-1041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444;
-1041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445;
-1041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446;
-1041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447;
-10420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448;
-10421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449;
-10422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A;
-10423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B;
-10424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C;
-10425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D;
-10426;DESERET CAPITAL LETTER OI;Lu;0;L;;;;;N;;;;1044E;
-10427;DESERET CAPITAL LETTER EW;Lu;0;L;;;;;N;;;;1044F;
-10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400
-10429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401
-1042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402
-1042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403
-1042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404
-1042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405
-1042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406
-1042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407
-10430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408
-10431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409
-10432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A
-10433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B
-10434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C
-10435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D
-10436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E
-10437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F
-10438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410
-10439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411
-1043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412
-1043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413
-1043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414
-1043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415
-1043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416
-1043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417
-10440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418
-10441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419
-10442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A
-10443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B
-10444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C
-10445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D
-10446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E
-10447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F
-10448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420
-10449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421
-1044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422
-1044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423
-1044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424
-1044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425
-1044E;DESERET SMALL LETTER OI;Ll;0;L;;;;;N;;;10426;;10426
-1044F;DESERET SMALL LETTER EW;Ll;0;L;;;;;N;;;10427;;10427
-10450;SHAVIAN LETTER PEEP;Lo;0;L;;;;;N;;;;;
-10451;SHAVIAN LETTER TOT;Lo;0;L;;;;;N;;;;;
-10452;SHAVIAN LETTER KICK;Lo;0;L;;;;;N;;;;;
-10453;SHAVIAN LETTER FEE;Lo;0;L;;;;;N;;;;;
-10454;SHAVIAN LETTER THIGH;Lo;0;L;;;;;N;;;;;
-10455;SHAVIAN LETTER SO;Lo;0;L;;;;;N;;;;;
-10456;SHAVIAN LETTER SURE;Lo;0;L;;;;;N;;;;;
-10457;SHAVIAN LETTER CHURCH;Lo;0;L;;;;;N;;;;;
-10458;SHAVIAN LETTER YEA;Lo;0;L;;;;;N;;;;;
-10459;SHAVIAN LETTER HUNG;Lo;0;L;;;;;N;;;;;
-1045A;SHAVIAN LETTER BIB;Lo;0;L;;;;;N;;;;;
-1045B;SHAVIAN LETTER DEAD;Lo;0;L;;;;;N;;;;;
-1045C;SHAVIAN LETTER GAG;Lo;0;L;;;;;N;;;;;
-1045D;SHAVIAN LETTER VOW;Lo;0;L;;;;;N;;;;;
-1045E;SHAVIAN LETTER THEY;Lo;0;L;;;;;N;;;;;
-1045F;SHAVIAN LETTER ZOO;Lo;0;L;;;;;N;;;;;
-10460;SHAVIAN LETTER MEASURE;Lo;0;L;;;;;N;;;;;
-10461;SHAVIAN LETTER JUDGE;Lo;0;L;;;;;N;;;;;
-10462;SHAVIAN LETTER WOE;Lo;0;L;;;;;N;;;;;
-10463;SHAVIAN LETTER HA-HA;Lo;0;L;;;;;N;;;;;
-10464;SHAVIAN LETTER LOLL;Lo;0;L;;;;;N;;;;;
-10465;SHAVIAN LETTER MIME;Lo;0;L;;;;;N;;;;;
-10466;SHAVIAN LETTER IF;Lo;0;L;;;;;N;;;;;
-10467;SHAVIAN LETTER EGG;Lo;0;L;;;;;N;;;;;
-10468;SHAVIAN LETTER ASH;Lo;0;L;;;;;N;;;;;
-10469;SHAVIAN LETTER ADO;Lo;0;L;;;;;N;;;;;
-1046A;SHAVIAN LETTER ON;Lo;0;L;;;;;N;;;;;
-1046B;SHAVIAN LETTER WOOL;Lo;0;L;;;;;N;;;;;
-1046C;SHAVIAN LETTER OUT;Lo;0;L;;;;;N;;;;;
-1046D;SHAVIAN LETTER AH;Lo;0;L;;;;;N;;;;;
-1046E;SHAVIAN LETTER ROAR;Lo;0;L;;;;;N;;;;;
-1046F;SHAVIAN LETTER NUN;Lo;0;L;;;;;N;;;;;
-10470;SHAVIAN LETTER EAT;Lo;0;L;;;;;N;;;;;
-10471;SHAVIAN LETTER AGE;Lo;0;L;;;;;N;;;;;
-10472;SHAVIAN LETTER ICE;Lo;0;L;;;;;N;;;;;
-10473;SHAVIAN LETTER UP;Lo;0;L;;;;;N;;;;;
-10474;SHAVIAN LETTER OAK;Lo;0;L;;;;;N;;;;;
-10475;SHAVIAN LETTER OOZE;Lo;0;L;;;;;N;;;;;
-10476;SHAVIAN LETTER OIL;Lo;0;L;;;;;N;;;;;
-10477;SHAVIAN LETTER AWE;Lo;0;L;;;;;N;;;;;
-10478;SHAVIAN LETTER ARE;Lo;0;L;;;;;N;;;;;
-10479;SHAVIAN LETTER OR;Lo;0;L;;;;;N;;;;;
-1047A;SHAVIAN LETTER AIR;Lo;0;L;;;;;N;;;;;
-1047B;SHAVIAN LETTER ERR;Lo;0;L;;;;;N;;;;;
-1047C;SHAVIAN LETTER ARRAY;Lo;0;L;;;;;N;;;;;
-1047D;SHAVIAN LETTER EAR;Lo;0;L;;;;;N;;;;;
-1047E;SHAVIAN LETTER IAN;Lo;0;L;;;;;N;;;;;
-1047F;SHAVIAN LETTER YEW;Lo;0;L;;;;;N;;;;;
-10480;OSMANYA LETTER ALEF;Lo;0;L;;;;;N;;;;;
-10481;OSMANYA LETTER BA;Lo;0;L;;;;;N;;;;;
-10482;OSMANYA LETTER TA;Lo;0;L;;;;;N;;;;;
-10483;OSMANYA LETTER JA;Lo;0;L;;;;;N;;;;;
-10484;OSMANYA LETTER XA;Lo;0;L;;;;;N;;;;;
-10485;OSMANYA LETTER KHA;Lo;0;L;;;;;N;;;;;
-10486;OSMANYA LETTER DEEL;Lo;0;L;;;;;N;;;;;
-10487;OSMANYA LETTER RA;Lo;0;L;;;;;N;;;;;
-10488;OSMANYA LETTER SA;Lo;0;L;;;;;N;;;;;
-10489;OSMANYA LETTER SHIIN;Lo;0;L;;;;;N;;;;;
-1048A;OSMANYA LETTER DHA;Lo;0;L;;;;;N;;;;;
-1048B;OSMANYA LETTER CAYN;Lo;0;L;;;;;N;;;;;
-1048C;OSMANYA LETTER GA;Lo;0;L;;;;;N;;;;;
-1048D;OSMANYA LETTER FA;Lo;0;L;;;;;N;;;;;
-1048E;OSMANYA LETTER QAAF;Lo;0;L;;;;;N;;;;;
-1048F;OSMANYA LETTER KAAF;Lo;0;L;;;;;N;;;;;
-10490;OSMANYA LETTER LAAN;Lo;0;L;;;;;N;;;;;
-10491;OSMANYA LETTER MIIN;Lo;0;L;;;;;N;;;;;
-10492;OSMANYA LETTER NUUN;Lo;0;L;;;;;N;;;;;
-10493;OSMANYA LETTER WAW;Lo;0;L;;;;;N;;;;;
-10494;OSMANYA LETTER HA;Lo;0;L;;;;;N;;;;;
-10495;OSMANYA LETTER YA;Lo;0;L;;;;;N;;;;;
-10496;OSMANYA LETTER A;Lo;0;L;;;;;N;;;;;
-10497;OSMANYA LETTER E;Lo;0;L;;;;;N;;;;;
-10498;OSMANYA LETTER I;Lo;0;L;;;;;N;;;;;
-10499;OSMANYA LETTER O;Lo;0;L;;;;;N;;;;;
-1049A;OSMANYA LETTER U;Lo;0;L;;;;;N;;;;;
-1049B;OSMANYA LETTER AA;Lo;0;L;;;;;N;;;;;
-1049C;OSMANYA LETTER EE;Lo;0;L;;;;;N;;;;;
-1049D;OSMANYA LETTER OO;Lo;0;L;;;;;N;;;;;
-104A0;OSMANYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-104A1;OSMANYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-104A2;OSMANYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-104A3;OSMANYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-104A4;OSMANYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-104A5;OSMANYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-104A6;OSMANYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-104A7;OSMANYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-104A8;OSMANYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-104A9;OSMANYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-10800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;;
-10801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;;
-10802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;;
-10803;CYPRIOT SYLLABLE O;Lo;0;R;;;;;N;;;;;
-10804;CYPRIOT SYLLABLE U;Lo;0;R;;;;;N;;;;;
-10805;CYPRIOT SYLLABLE JA;Lo;0;R;;;;;N;;;;;
-10808;CYPRIOT SYLLABLE JO;Lo;0;R;;;;;N;;;;;
-1080A;CYPRIOT SYLLABLE KA;Lo;0;R;;;;;N;;;;;
-1080B;CYPRIOT SYLLABLE KE;Lo;0;R;;;;;N;;;;;
-1080C;CYPRIOT SYLLABLE KI;Lo;0;R;;;;;N;;;;;
-1080D;CYPRIOT SYLLABLE KO;Lo;0;R;;;;;N;;;;;
-1080E;CYPRIOT SYLLABLE KU;Lo;0;R;;;;;N;;;;;
-1080F;CYPRIOT SYLLABLE LA;Lo;0;R;;;;;N;;;;;
-10810;CYPRIOT SYLLABLE LE;Lo;0;R;;;;;N;;;;;
-10811;CYPRIOT SYLLABLE LI;Lo;0;R;;;;;N;;;;;
-10812;CYPRIOT SYLLABLE LO;Lo;0;R;;;;;N;;;;;
-10813;CYPRIOT SYLLABLE LU;Lo;0;R;;;;;N;;;;;
-10814;CYPRIOT SYLLABLE MA;Lo;0;R;;;;;N;;;;;
-10815;CYPRIOT SYLLABLE ME;Lo;0;R;;;;;N;;;;;
-10816;CYPRIOT SYLLABLE MI;Lo;0;R;;;;;N;;;;;
-10817;CYPRIOT SYLLABLE MO;Lo;0;R;;;;;N;;;;;
-10818;CYPRIOT SYLLABLE MU;Lo;0;R;;;;;N;;;;;
-10819;CYPRIOT SYLLABLE NA;Lo;0;R;;;;;N;;;;;
-1081A;CYPRIOT SYLLABLE NE;Lo;0;R;;;;;N;;;;;
-1081B;CYPRIOT SYLLABLE NI;Lo;0;R;;;;;N;;;;;
-1081C;CYPRIOT SYLLABLE NO;Lo;0;R;;;;;N;;;;;
-1081D;CYPRIOT SYLLABLE NU;Lo;0;R;;;;;N;;;;;
-1081E;CYPRIOT SYLLABLE PA;Lo;0;R;;;;;N;;;;;
-1081F;CYPRIOT SYLLABLE PE;Lo;0;R;;;;;N;;;;;
-10820;CYPRIOT SYLLABLE PI;Lo;0;R;;;;;N;;;;;
-10821;CYPRIOT SYLLABLE PO;Lo;0;R;;;;;N;;;;;
-10822;CYPRIOT SYLLABLE PU;Lo;0;R;;;;;N;;;;;
-10823;CYPRIOT SYLLABLE RA;Lo;0;R;;;;;N;;;;;
-10824;CYPRIOT SYLLABLE RE;Lo;0;R;;;;;N;;;;;
-10825;CYPRIOT SYLLABLE RI;Lo;0;R;;;;;N;;;;;
-10826;CYPRIOT SYLLABLE RO;Lo;0;R;;;;;N;;;;;
-10827;CYPRIOT SYLLABLE RU;Lo;0;R;;;;;N;;;;;
-10828;CYPRIOT SYLLABLE SA;Lo;0;R;;;;;N;;;;;
-10829;CYPRIOT SYLLABLE SE;Lo;0;R;;;;;N;;;;;
-1082A;CYPRIOT SYLLABLE SI;Lo;0;R;;;;;N;;;;;
-1082B;CYPRIOT SYLLABLE SO;Lo;0;R;;;;;N;;;;;
-1082C;CYPRIOT SYLLABLE SU;Lo;0;R;;;;;N;;;;;
-1082D;CYPRIOT SYLLABLE TA;Lo;0;R;;;;;N;;;;;
-1082E;CYPRIOT SYLLABLE TE;Lo;0;R;;;;;N;;;;;
-1082F;CYPRIOT SYLLABLE TI;Lo;0;R;;;;;N;;;;;
-10830;CYPRIOT SYLLABLE TO;Lo;0;R;;;;;N;;;;;
-10831;CYPRIOT SYLLABLE TU;Lo;0;R;;;;;N;;;;;
-10832;CYPRIOT SYLLABLE WA;Lo;0;R;;;;;N;;;;;
-10833;CYPRIOT SYLLABLE WE;Lo;0;R;;;;;N;;;;;
-10834;CYPRIOT SYLLABLE WI;Lo;0;R;;;;;N;;;;;
-10835;CYPRIOT SYLLABLE WO;Lo;0;R;;;;;N;;;;;
-10837;CYPRIOT SYLLABLE XA;Lo;0;R;;;;;N;;;;;
-10838;CYPRIOT SYLLABLE XE;Lo;0;R;;;;;N;;;;;
-1083C;CYPRIOT SYLLABLE ZA;Lo;0;R;;;;;N;;;;;
-1083F;CYPRIOT SYLLABLE ZO;Lo;0;R;;;;;N;;;;;
-10A00;KHAROSHTHI LETTER A;Lo;0;R;;;;;N;;;;;
-10A01;KHAROSHTHI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-10A02;KHAROSHTHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-10A03;KHAROSHTHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
-10A05;KHAROSHTHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
-10A06;KHAROSHTHI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
-10A0C;KHAROSHTHI VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
-10A0D;KHAROSHTHI SIGN DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;;
-10A0E;KHAROSHTHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
-10A0F;KHAROSHTHI SIGN VISARGA;Mn;230;NSM;;;;;N;;;;;
-10A10;KHAROSHTHI LETTER KA;Lo;0;R;;;;;N;;;;;
-10A11;KHAROSHTHI LETTER KHA;Lo;0;R;;;;;N;;;;;
-10A12;KHAROSHTHI LETTER GA;Lo;0;R;;;;;N;;;;;
-10A13;KHAROSHTHI LETTER GHA;Lo;0;R;;;;;N;;;;;
-10A15;KHAROSHTHI LETTER CA;Lo;0;R;;;;;N;;;;;
-10A16;KHAROSHTHI LETTER CHA;Lo;0;R;;;;;N;;;;;
-10A17;KHAROSHTHI LETTER JA;Lo;0;R;;;;;N;;;;;
-10A19;KHAROSHTHI LETTER NYA;Lo;0;R;;;;;N;;;;;
-10A1A;KHAROSHTHI LETTER TTA;Lo;0;R;;;;;N;;;;;
-10A1B;KHAROSHTHI LETTER TTHA;Lo;0;R;;;;;N;;;;;
-10A1C;KHAROSHTHI LETTER DDA;Lo;0;R;;;;;N;;;;;
-10A1D;KHAROSHTHI LETTER DDHA;Lo;0;R;;;;;N;;;;;
-10A1E;KHAROSHTHI LETTER NNA;Lo;0;R;;;;;N;;;;;
-10A1F;KHAROSHTHI LETTER TA;Lo;0;R;;;;;N;;;;;
-10A20;KHAROSHTHI LETTER THA;Lo;0;R;;;;;N;;;;;
-10A21;KHAROSHTHI LETTER DA;Lo;0;R;;;;;N;;;;;
-10A22;KHAROSHTHI LETTER DHA;Lo;0;R;;;;;N;;;;;
-10A23;KHAROSHTHI LETTER NA;Lo;0;R;;;;;N;;;;;
-10A24;KHAROSHTHI LETTER PA;Lo;0;R;;;;;N;;;;;
-10A25;KHAROSHTHI LETTER PHA;Lo;0;R;;;;;N;;;;;
-10A26;KHAROSHTHI LETTER BA;Lo;0;R;;;;;N;;;;;
-10A27;KHAROSHTHI LETTER BHA;Lo;0;R;;;;;N;;;;;
-10A28;KHAROSHTHI LETTER MA;Lo;0;R;;;;;N;;;;;
-10A29;KHAROSHTHI LETTER YA;Lo;0;R;;;;;N;;;;;
-10A2A;KHAROSHTHI LETTER RA;Lo;0;R;;;;;N;;;;;
-10A2B;KHAROSHTHI LETTER LA;Lo;0;R;;;;;N;;;;;
-10A2C;KHAROSHTHI LETTER VA;Lo;0;R;;;;;N;;;;;
-10A2D;KHAROSHTHI LETTER SHA;Lo;0;R;;;;;N;;;;;
-10A2E;KHAROSHTHI LETTER SSA;Lo;0;R;;;;;N;;;;;
-10A2F;KHAROSHTHI LETTER SA;Lo;0;R;;;;;N;;;;;
-10A30;KHAROSHTHI LETTER ZA;Lo;0;R;;;;;N;;;;;
-10A31;KHAROSHTHI LETTER HA;Lo;0;R;;;;;N;;;;;
-10A32;KHAROSHTHI LETTER KKA;Lo;0;R;;;;;N;;;;;
-10A33;KHAROSHTHI LETTER TTTHA;Lo;0;R;;;;;N;;;;;
-10A38;KHAROSHTHI SIGN BAR ABOVE;Mn;230;NSM;;;;;N;;;;;
-10A39;KHAROSHTHI SIGN CAUDA;Mn;1;NSM;;;;;N;;;;;
-10A3A;KHAROSHTHI SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;;
-10A3F;KHAROSHTHI VIRAMA;Mn;9;NSM;;;;;N;;;;;
-10A40;KHAROSHTHI DIGIT ONE;No;0;R;;;1;1;N;;;;;
-10A41;KHAROSHTHI DIGIT TWO;No;0;R;;;2;2;N;;;;;
-10A42;KHAROSHTHI DIGIT THREE;No;0;R;;;3;3;N;;;;;
-10A43;KHAROSHTHI DIGIT FOUR;No;0;R;;;4;4;N;;;;;
-10A44;KHAROSHTHI NUMBER TEN;No;0;R;;;;10;N;;;;;
-10A45;KHAROSHTHI NUMBER TWENTY;No;0;R;;;;20;N;;;;;
-10A46;KHAROSHTHI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
-10A47;KHAROSHTHI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;
-10A50;KHAROSHTHI PUNCTUATION DOT;Po;0;R;;;;;N;;;;;
-10A51;KHAROSHTHI PUNCTUATION SMALL CIRCLE;Po;0;R;;;;;N;;;;;
-10A52;KHAROSHTHI PUNCTUATION CIRCLE;Po;0;R;;;;;N;;;;;
-10A53;KHAROSHTHI PUNCTUATION CRESCENT BAR;Po;0;R;;;;;N;;;;;
-10A54;KHAROSHTHI PUNCTUATION MANGALAM;Po;0;R;;;;;N;;;;;
-10A55;KHAROSHTHI PUNCTUATION LOTUS;Po;0;R;;;;;N;;;;;
-10A56;KHAROSHTHI PUNCTUATION DANDA;Po;0;R;;;;;N;;;;;
-10A57;KHAROSHTHI PUNCTUATION DOUBLE DANDA;Po;0;R;;;;;N;;;;;
-10A58;KHAROSHTHI PUNCTUATION LINES;Po;0;R;;;;;N;;;;;
-1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;;
-1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;;
-1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;;
-1D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;;
-1D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;;
-1D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;;
-1D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;;
-1D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;;
-1D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;;
-1D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;;
-1D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;;
-1D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;;
-1D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;;
-1D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;;
-1D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;;
-1D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;;
-1D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;;
-1D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;;
-1D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;;
-1D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;;
-1D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;;
-1D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;;
-1D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;;
-1D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;;
-1D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;;
-1D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;;
-1D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;;
-1D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;;
-1D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;;
-1D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;;
-1D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;;
-1D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;;
-1D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;;
-1D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;;
-1D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;;
-1D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;;
-1D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;;
-1D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;;
-1D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;;
-1D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;;
-1D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;;
-1D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;;
-1D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;;
-1D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;;
-1D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;;
-1D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;;
-1D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;;
-1D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;;
-1D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;;
-1D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;;
-1D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;;
-1D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;;
-1D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;;
-1D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;;
-1D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;;
-1D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;;
-1D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;;
-1D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;;
-1D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;;
-1D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;;
-1D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;;
-1D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;;
-1D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;;
-1D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;;
-1D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;;
-1D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;;
-1D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;;
-1D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;;
-1D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;;
-1D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;;
-1D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;;
-1D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;;
-1D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;;
-1D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;;
-1D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;;
-1D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;;
-1D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;;
-1D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;;
-1D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;;
-1D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;;
-1D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;;
-1D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;;
-1D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;;
-1D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;;
-1D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;;
-1D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;;
-1D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;;
-1D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;;
-1D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;;
-1D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;;
-1D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;;
-1D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;;
-1D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;;
-1D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;;
-1D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;;
-1D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;;
-1D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;;
-1D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;;
-1D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;;
-1D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;;
-1D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;;
-1D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;;
-1D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;;
-1D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;;
-1D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;;
-1D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;;
-1D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;;
-1D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;;
-1D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;;
-1D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;;
-1D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;;
-1D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;;
-1D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;;
-1D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;;
-1D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;;
-1D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;;
-1D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;;
-1D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;;
-1D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;;
-1D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;;
-1D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;;
-1D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;;
-1D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;;
-1D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;;
-1D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;;
-1D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;;
-1D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;;
-1D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;;
-1D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;;
-1D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;;
-1D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;;
-1D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;;
-1D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;;
-1D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;;
-1D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;;
-1D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;;
-1D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;;
-1D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;;
-1D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;;
-1D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;;
-1D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;;
-1D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;;
-1D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;;
-1D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;;
-1D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;;
-1D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
-1D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;;
-1D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;;
-1D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;;
-1D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
-1D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;;
-1D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;;
-1D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;;
-1D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;;
-1D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;;
-1D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;;
-1D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;;
-1D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;;
-1D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;;
-1D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;;
-1D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;;
-1D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;;
-1D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;;
-1D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;;
-1D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
-1D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
-1D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;;
-1D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;;
-1D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;;
-1D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;;
-1D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;;
-1D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;;
-1D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
-1D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
-1D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;;
-1D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;;
-1D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;;
-1D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;;
-1D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;;
-1D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;;
-1D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;;
-1D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;;
-1D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;;
-1D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;;
-1D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;;
-1D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;;
-1D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;;
-1D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;;
-1D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;;
-1D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;;
-1D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;;
-1D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;;
-1D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;;
-1D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;;
-1D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;;
-1D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;;
-1D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;;
-1D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;;
-1D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;;
-1D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;;
-1D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;;
-1D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;;
-1D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;;
-1D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;;
-1D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;;
-1D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;;
-1D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;;
-1D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;;
-1D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
-1D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
-1D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
-1D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
-1D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
-1D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
-1D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
-1D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
-1D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;;
-1D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;;
-1D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;;
-1D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;;
-1D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;;
-1D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;;
-1D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;;
-1D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;;
-1D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;;
-1D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;;
-1D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;;
-1D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;;
-1D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;;
-1D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;;
-1D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;;
-1D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;;
-1D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;;
-1D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;;
-1D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;;
-1D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;;
-1D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;;
-1D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;;
-1D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;;
-1D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;;
-1D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;;
-1D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;;
-1D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;;
-1D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;;
-1D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;;
-1D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;;
-1D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;;
-1D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;;
-1D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;;
-1D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;;
-1D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;;
-1D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;;
-1D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;;
-1D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;;
-1D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;;
-1D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;;
-1D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;;
-1D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;;
-1D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;;
-1D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;;
-1D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;;
-1D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;;
-1D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;;
-1D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;;
-1D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;;
-1D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;;
-1D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;;
-1D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;;
-1D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;;
-1D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;;
-1D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;;
-1D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;;
-1D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;;
-1D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;;
-1D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;;
-1D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;;
-1D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;;
-1D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
-1D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
-1D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;;
-1D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;;
-1D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
-1D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
-1D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;;
-1D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;;
-1D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;;
-1D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;;
-1D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;;
-1D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;;
-1D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;;
-1D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;;
-1D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;;
-1D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;;
-1D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;;
-1D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;;
-1D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;;
-1D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;;
-1D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;;
-1D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;;
-1D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;;
-1D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;;
-1D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;;
-1D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;;
-1D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;;
-1D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;;
-1D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;;
-1D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;;
-1D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;;
-1D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;;
-1D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;;
-1D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;;
-1D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;;
-1D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;;
-1D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
-1D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
-1D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;;
-1D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;;
-1D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;;
-1D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;;
-1D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;;
-1D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;;
-1D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
-1D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
-1D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;;
-1D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;;
-1D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
-1D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
-1D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
-1D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
-1D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;;
-1D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;;
-1D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
-1D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;;
-1D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
-1D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
-1D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;;
-1D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;;
-1D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;;
-1D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;;
-1D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;;
-1D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;;
-1D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;;
-1D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;;
-1D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;;
-1D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;;
-1D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;;
-1D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;;
-1D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;;
-1D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;;
-1D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;;
-1D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;;
-1D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;;
-1D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;;
-1D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;;
-1D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;;
-1D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;;
-1D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;;
-1D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;;
-1D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;;
-1D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;;
-1D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;;
-1D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;;
-1D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;;
-1D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;;
-1D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;;
-1D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;;
-1D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;;
-1D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;;
-1D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;;
-1D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;;
-1D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;;
-1D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;;
-1D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;;
-1D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;;
-1D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;;
-1D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;;
-1D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;;
-1D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;;
-1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;;
-1D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;;
-1D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;;
-1D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;;
-1D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;;
-1D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;;
-1D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;;
-1D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;;
-1D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;;
-1D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;;
-1D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;;
-1D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;;
-1D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;;
-1D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;;
-1D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;;
-1D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;;
-1D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;;
-1D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;;
-1D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;;
-1D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;;
-1D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;;
-1D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;;
-1D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;;
-1D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;;
-1D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;;
-1D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;;
-1D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;;
-1D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;;
-1D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;;
-1D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;;
-1D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;;
-1D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;;
-1D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;;
-1D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;;
-1D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;;
-1D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;;
-1D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;;
-1D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;;
-1D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;;
-1D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;;
-1D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;;
-1D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;;
-1D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;;
-1D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;;
-1D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;;
-1D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;;
-1D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;;
-1D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;;
-1D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;;
-1D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;;
-1D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;;
-1D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;;
-1D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;;
-1D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;;
-1D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;;
-1D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;;
-1D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;;
-1D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;;
-1D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;;
-1D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;;
-1D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;;
-1D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;;
-1D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;;
-1D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;;
-1D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
-1D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
-1D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
-1D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
-1D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
-1D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
-1D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;;
-1D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;;
-1D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;;
-1D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;;
-1D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;;
-1D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;;
-1D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;;
-1D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;;
-1D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;;
-1D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;;
-1D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;;
-1D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;;
-1D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;;
-1D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;;
-1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;;
-1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;;
-1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;;
-1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;;
-1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;;
-1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;;
-1D203;GREEK VOCAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;;
-1D204;GREEK VOCAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;;
-1D205;GREEK VOCAL NOTATION SYMBOL-6;So;0;ON;;;;;N;;;;;
-1D206;GREEK VOCAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;;
-1D207;GREEK VOCAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;;
-1D208;GREEK VOCAL NOTATION SYMBOL-9;So;0;ON;;;;;N;;;;;
-1D209;GREEK VOCAL NOTATION SYMBOL-10;So;0;ON;;;;;N;;;;;
-1D20A;GREEK VOCAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;;
-1D20B;GREEK VOCAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;;
-1D20C;GREEK VOCAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;;
-1D20D;GREEK VOCAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;;
-1D20E;GREEK VOCAL NOTATION SYMBOL-15;So;0;ON;;;;;N;;;;;
-1D20F;GREEK VOCAL NOTATION SYMBOL-16;So;0;ON;;;;;N;;;;;
-1D210;GREEK VOCAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;;
-1D211;GREEK VOCAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;;
-1D212;GREEK VOCAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;;
-1D213;GREEK VOCAL NOTATION SYMBOL-20;So;0;ON;;;;;N;;;;;
-1D214;GREEK VOCAL NOTATION SYMBOL-21;So;0;ON;;;;;N;;;;;
-1D215;GREEK VOCAL NOTATION SYMBOL-22;So;0;ON;;;;;N;;;;;
-1D216;GREEK VOCAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;;
-1D217;GREEK VOCAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;;
-1D218;GREEK VOCAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;;
-1D219;GREEK VOCAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;;
-1D21A;GREEK VOCAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;;
-1D21B;GREEK VOCAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;;
-1D21C;GREEK VOCAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;;
-1D21D;GREEK INSTRUMENTAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;;
-1D21E;GREEK INSTRUMENTAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;;
-1D21F;GREEK INSTRUMENTAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;;
-1D220;GREEK INSTRUMENTAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;;
-1D221;GREEK INSTRUMENTAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;;
-1D222;GREEK INSTRUMENTAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;;
-1D223;GREEK INSTRUMENTAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;;
-1D224;GREEK INSTRUMENTAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;;
-1D225;GREEK INSTRUMENTAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;;
-1D226;GREEK INSTRUMENTAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;;
-1D227;GREEK INSTRUMENTAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;;
-1D228;GREEK INSTRUMENTAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;;
-1D229;GREEK INSTRUMENTAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;;
-1D22A;GREEK INSTRUMENTAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;;
-1D22B;GREEK INSTRUMENTAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;;
-1D22C;GREEK INSTRUMENTAL NOTATION SYMBOL-25;So;0;ON;;;;;N;;;;;
-1D22D;GREEK INSTRUMENTAL NOTATION SYMBOL-26;So;0;ON;;;;;N;;;;;
-1D22E;GREEK INSTRUMENTAL NOTATION SYMBOL-27;So;0;ON;;;;;N;;;;;
-1D22F;GREEK INSTRUMENTAL NOTATION SYMBOL-29;So;0;ON;;;;;N;;;;;
-1D230;GREEK INSTRUMENTAL NOTATION SYMBOL-30;So;0;ON;;;;;N;;;;;
-1D231;GREEK INSTRUMENTAL NOTATION SYMBOL-32;So;0;ON;;;;;N;;;;;
-1D232;GREEK INSTRUMENTAL NOTATION SYMBOL-36;So;0;ON;;;;;N;;;;;
-1D233;GREEK INSTRUMENTAL NOTATION SYMBOL-37;So;0;ON;;;;;N;;;;;
-1D234;GREEK INSTRUMENTAL NOTATION SYMBOL-38;So;0;ON;;;;;N;;;;;
-1D235;GREEK INSTRUMENTAL NOTATION SYMBOL-39;So;0;ON;;;;;N;;;;;
-1D236;GREEK INSTRUMENTAL NOTATION SYMBOL-40;So;0;ON;;;;;N;;;;;
-1D237;GREEK INSTRUMENTAL NOTATION SYMBOL-42;So;0;ON;;;;;N;;;;;
-1D238;GREEK INSTRUMENTAL NOTATION SYMBOL-43;So;0;ON;;;;;N;;;;;
-1D239;GREEK INSTRUMENTAL NOTATION SYMBOL-45;So;0;ON;;;;;N;;;;;
-1D23A;GREEK INSTRUMENTAL NOTATION SYMBOL-47;So;0;ON;;;;;N;;;;;
-1D23B;GREEK INSTRUMENTAL NOTATION SYMBOL-48;So;0;ON;;;;;N;;;;;
-1D23C;GREEK INSTRUMENTAL NOTATION SYMBOL-49;So;0;ON;;;;;N;;;;;
-1D23D;GREEK INSTRUMENTAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;;
-1D23E;GREEK INSTRUMENTAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;;
-1D23F;GREEK INSTRUMENTAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;;
-1D240;GREEK INSTRUMENTAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;;
-1D241;GREEK INSTRUMENTAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;;
-1D242;COMBINING GREEK MUSICAL TRISEME;Mn;230;NSM;;;;;N;;;;;
-1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;;
-1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;;
-1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;;
-1D300;MONOGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
-1D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;;;;
-1D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;;;;
-1D303;DIGRAM FOR EARTHLY HEAVEN;So;0;ON;;;;;N;;;;;
-1D304;DIGRAM FOR EARTHLY HUMAN;So;0;ON;;;;;N;;;;;
-1D305;DIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
-1D306;TETRAGRAM FOR CENTRE;So;0;ON;;;;;N;;;;;
-1D307;TETRAGRAM FOR FULL CIRCLE;So;0;ON;;;;;N;;;;;
-1D308;TETRAGRAM FOR MIRED;So;0;ON;;;;;N;;;;;
-1D309;TETRAGRAM FOR BARRIER;So;0;ON;;;;;N;;;;;
-1D30A;TETRAGRAM FOR KEEPING SMALL;So;0;ON;;;;;N;;;;;
-1D30B;TETRAGRAM FOR CONTRARIETY;So;0;ON;;;;;N;;;;;
-1D30C;TETRAGRAM FOR ASCENT;So;0;ON;;;;;N;;;;;
-1D30D;TETRAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;;
-1D30E;TETRAGRAM FOR BRANCHING OUT;So;0;ON;;;;;N;;;;;
-1D30F;TETRAGRAM FOR DEFECTIVENESS OR DISTORTION;So;0;ON;;;;;N;;;;;
-1D310;TETRAGRAM FOR DIVERGENCE;So;0;ON;;;;;N;;;;;
-1D311;TETRAGRAM FOR YOUTHFULNESS;So;0;ON;;;;;N;;;;;
-1D312;TETRAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;;
-1D313;TETRAGRAM FOR PENETRATION;So;0;ON;;;;;N;;;;;
-1D314;TETRAGRAM FOR REACH;So;0;ON;;;;;N;;;;;
-1D315;TETRAGRAM FOR CONTACT;So;0;ON;;;;;N;;;;;
-1D316;TETRAGRAM FOR HOLDING BACK;So;0;ON;;;;;N;;;;;
-1D317;TETRAGRAM FOR WAITING;So;0;ON;;;;;N;;;;;
-1D318;TETRAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;;
-1D319;TETRAGRAM FOR ADVANCE;So;0;ON;;;;;N;;;;;
-1D31A;TETRAGRAM FOR RELEASE;So;0;ON;;;;;N;;;;;
-1D31B;TETRAGRAM FOR RESISTANCE;So;0;ON;;;;;N;;;;;
-1D31C;TETRAGRAM FOR EASE;So;0;ON;;;;;N;;;;;
-1D31D;TETRAGRAM FOR JOY;So;0;ON;;;;;N;;;;;
-1D31E;TETRAGRAM FOR CONTENTION;So;0;ON;;;;;N;;;;;
-1D31F;TETRAGRAM FOR ENDEAVOUR;So;0;ON;;;;;N;;;;;
-1D320;TETRAGRAM FOR DUTIES;So;0;ON;;;;;N;;;;;
-1D321;TETRAGRAM FOR CHANGE;So;0;ON;;;;;N;;;;;
-1D322;TETRAGRAM FOR DECISIVENESS;So;0;ON;;;;;N;;;;;
-1D323;TETRAGRAM FOR BOLD RESOLUTION;So;0;ON;;;;;N;;;;;
-1D324;TETRAGRAM FOR PACKING;So;0;ON;;;;;N;;;;;
-1D325;TETRAGRAM FOR LEGION;So;0;ON;;;;;N;;;;;
-1D326;TETRAGRAM FOR CLOSENESS;So;0;ON;;;;;N;;;;;
-1D327;TETRAGRAM FOR KINSHIP;So;0;ON;;;;;N;;;;;
-1D328;TETRAGRAM FOR GATHERING;So;0;ON;;;;;N;;;;;
-1D329;TETRAGRAM FOR STRENGTH;So;0;ON;;;;;N;;;;;
-1D32A;TETRAGRAM FOR PURITY;So;0;ON;;;;;N;;;;;
-1D32B;TETRAGRAM FOR FULLNESS;So;0;ON;;;;;N;;;;;
-1D32C;TETRAGRAM FOR RESIDENCE;So;0;ON;;;;;N;;;;;
-1D32D;TETRAGRAM FOR LAW OR MODEL;So;0;ON;;;;;N;;;;;
-1D32E;TETRAGRAM FOR RESPONSE;So;0;ON;;;;;N;;;;;
-1D32F;TETRAGRAM FOR GOING TO MEET;So;0;ON;;;;;N;;;;;
-1D330;TETRAGRAM FOR ENCOUNTERS;So;0;ON;;;;;N;;;;;
-1D331;TETRAGRAM FOR STOVE;So;0;ON;;;;;N;;;;;
-1D332;TETRAGRAM FOR GREATNESS;So;0;ON;;;;;N;;;;;
-1D333;TETRAGRAM FOR ENLARGEMENT;So;0;ON;;;;;N;;;;;
-1D334;TETRAGRAM FOR PATTERN;So;0;ON;;;;;N;;;;;
-1D335;TETRAGRAM FOR RITUAL;So;0;ON;;;;;N;;;;;
-1D336;TETRAGRAM FOR FLIGHT;So;0;ON;;;;;N;;;;;
-1D337;TETRAGRAM FOR VASTNESS OR WASTING;So;0;ON;;;;;N;;;;;
-1D338;TETRAGRAM FOR CONSTANCY;So;0;ON;;;;;N;;;;;
-1D339;TETRAGRAM FOR MEASURE;So;0;ON;;;;;N;;;;;
-1D33A;TETRAGRAM FOR ETERNITY;So;0;ON;;;;;N;;;;;
-1D33B;TETRAGRAM FOR UNITY;So;0;ON;;;;;N;;;;;
-1D33C;TETRAGRAM FOR DIMINISHMENT;So;0;ON;;;;;N;;;;;
-1D33D;TETRAGRAM FOR CLOSED MOUTH;So;0;ON;;;;;N;;;;;
-1D33E;TETRAGRAM FOR GUARDEDNESS;So;0;ON;;;;;N;;;;;
-1D33F;TETRAGRAM FOR GATHERING IN;So;0;ON;;;;;N;;;;;
-1D340;TETRAGRAM FOR MASSING;So;0;ON;;;;;N;;;;;
-1D341;TETRAGRAM FOR ACCUMULATION;So;0;ON;;;;;N;;;;;
-1D342;TETRAGRAM FOR EMBELLISHMENT;So;0;ON;;;;;N;;;;;
-1D343;TETRAGRAM FOR DOUBT;So;0;ON;;;;;N;;;;;
-1D344;TETRAGRAM FOR WATCH;So;0;ON;;;;;N;;;;;
-1D345;TETRAGRAM FOR SINKING;So;0;ON;;;;;N;;;;;
-1D346;TETRAGRAM FOR INNER;So;0;ON;;;;;N;;;;;
-1D347;TETRAGRAM FOR DEPARTURE;So;0;ON;;;;;N;;;;;
-1D348;TETRAGRAM FOR DARKENING;So;0;ON;;;;;N;;;;;
-1D349;TETRAGRAM FOR DIMMING;So;0;ON;;;;;N;;;;;
-1D34A;TETRAGRAM FOR EXHAUSTION;So;0;ON;;;;;N;;;;;
-1D34B;TETRAGRAM FOR SEVERANCE;So;0;ON;;;;;N;;;;;
-1D34C;TETRAGRAM FOR STOPPAGE;So;0;ON;;;;;N;;;;;
-1D34D;TETRAGRAM FOR HARDNESS;So;0;ON;;;;;N;;;;;
-1D34E;TETRAGRAM FOR COMPLETION;So;0;ON;;;;;N;;;;;
-1D34F;TETRAGRAM FOR CLOSURE;So;0;ON;;;;;N;;;;;
-1D350;TETRAGRAM FOR FAILURE;So;0;ON;;;;;N;;;;;
-1D351;TETRAGRAM FOR AGGRAVATION;So;0;ON;;;;;N;;;;;
-1D352;TETRAGRAM FOR COMPLIANCE;So;0;ON;;;;;N;;;;;
-1D353;TETRAGRAM FOR ON THE VERGE;So;0;ON;;;;;N;;;;;
-1D354;TETRAGRAM FOR DIFFICULTIES;So;0;ON;;;;;N;;;;;
-1D355;TETRAGRAM FOR LABOURING;So;0;ON;;;;;N;;;;;
-1D356;TETRAGRAM FOR FOSTERING;So;0;ON;;;;;N;;;;;
-1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
-1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
-1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
-1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
-1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
-1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
-1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D4C1;MATHEMATICAL SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
-1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
-1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
-1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
-1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
-1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
-1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
-1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
-1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
-1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
-1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
-1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
-1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
-1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
-1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D6A4;MATHEMATICAL ITALIC SMALL DOTLESS I;Ll;0;L;<font> 0131;;;;N;;;;;
-1D6A5;MATHEMATICAL ITALIC SMALL DOTLESS J;Ll;0;L;<font> 0237;;;;N;;;;;
-1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
-1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
-1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
-1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
-1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
-1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
-1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
-1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
-1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
-1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
-1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
-1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
-1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
-1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
-1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
-1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
-1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
-1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
-1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
-1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
-1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
-1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
-1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
-1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
-1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
-1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
-1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
-1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
-1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
-1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
-1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
-1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
-1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
-1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
-1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
-1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
-1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
-1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
-1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
-1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
-1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
-1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
-1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
-1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
-1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
-1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
-1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
-1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
-1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
-1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
-1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
-1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
-1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
-1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
-1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
-1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
-1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
-1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
-1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
-1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
-1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
-1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
-1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
-1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
-1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
-1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
-1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
-1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
-1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
-1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
-1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
-1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
-1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
-1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
-1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
-1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
-1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
-1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
-1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
-1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
-1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
-1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
-1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
-1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
-1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
-1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
-1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
-1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
-1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
-1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
-1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
-1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
-1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
-1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
-1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
-1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
-1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
-1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
-1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
-1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
-1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
-1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
-1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
-1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
-1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
-1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
-1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
-1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
-1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
-1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
-1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
-1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
-1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
-1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
-1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
-1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
-1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
-1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
-1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
-1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
-1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
-1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
-1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
-1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
-1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
-1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
-1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
-1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
-1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
-1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
-1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
-1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
-1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
-1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
-1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
-1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
-1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
-1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
-1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
-1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
-1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
-1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
-1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
-1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
-1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
-1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
-1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
-1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
-1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
-1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
-1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
-1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
-1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
-1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
-1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
-1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
-1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
-1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
-1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
-1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
-1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
-1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
-1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
-1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
-1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
-1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
-1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
-1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
-1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
-1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
-1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
-1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
-1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
-1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
-1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
-1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
-1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
-1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
-1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
-1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
-1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
-1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
-1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
-1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
-1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
-1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
-1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
-1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
-1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
-1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
-1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
-1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
-1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
-1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
-1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
-1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
-1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
-1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
-1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
-1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
-1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
-1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
-1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
-1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
-1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
-1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
-1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
-1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
-1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
-1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
-1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
-1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
-1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
-1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
-1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
-1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
-1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
-1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
-1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
-1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
-1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
-1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
-1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
-1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
-1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
-1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
-1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
-1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
-1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
-1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
-1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
-1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
-1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
-1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
-1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
-1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
-1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
-1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
-1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
-1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
-1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
-1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
-1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
-1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
-1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
-1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
-1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
-1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
-1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
-1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
-1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
-1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
-1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
-1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
-1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
-1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
-1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
-1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
-1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
-1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
-1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
-1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
-1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
-1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
-1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
-1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
-1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
-1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
-1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
-1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
-1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
-1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
-1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
-1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
-1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
-1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
-1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
-1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
-1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
-1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
-1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
-1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
-1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
-1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
-1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
-1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
-1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
-1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
-1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
-1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
-1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
-1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
-1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
-1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
-1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
-1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
-1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
-1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
-1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
-1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
-1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
-1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
-1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
-1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
-1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
-1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
-1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
-1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
-1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
-1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
-1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
-1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
-1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
-1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
-1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
-1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
-1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
-1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
-1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
-1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
-1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
-1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
-1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
-1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
-1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
-1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
-1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
-1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
-1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
-1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
-1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
-1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
-1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
-1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
-1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
-1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
-1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
-1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
-1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
-1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
-20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
-2A6D6;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
-2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;;
-2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;;
-2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;;
-2F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;;
-2F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;;
-2F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;;
-2F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;;
-2F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;;
-2F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;;
-2F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;;
-2F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;;
-2F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;;
-2F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;;
-2F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;;
-2F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;;
-2F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;;
-2F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;;
-2F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;;
-2F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;;
-2F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;;
-2F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;;
-2F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;;
-2F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;;
-2F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;;
-2F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;;
-2F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;;
-2F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;;
-2F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;;
-2F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;;
-2F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;;
-2F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;;
-2F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;;
-2F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;;
-2F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;;
-2F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;;
-2F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;;
-2F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;;
-2F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;;
-2F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;;
-2F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;;
-2F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;;
-2F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;;
-2F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;;
-2F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;;
-2F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;;
-2F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;;
-2F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;;
-2F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;;
-2F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;;
-2F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;;
-2F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;;
-2F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;;
-2F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;;
-2F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;;
-2F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;;
-2F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;;
-2F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;;
-2F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;;
-2F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;;
-2F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;;
-2F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;;
-2F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;;
-2F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;;
-2F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;;
-2F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;;
-2F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;;
-2F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;;
-2F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;;
-2F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;;
-2F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;;
-2F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;;
-2F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;;
-2F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;;
-2F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;;
-2F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;;
-2F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;;
-2F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;;
-2F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;;
-2F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;;
-2F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;;
-2F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;;
-2F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;;
-2F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;;
-2F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;;
-2F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;;
-2F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;;
-2F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;;
-2F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;;
-2F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;;
-2F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;;
-2F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;;
-2F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;;
-2F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;;
-2F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;;
-2F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;;
-2F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;;
-2F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;;
-2F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;;
-2F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;;
-2F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;;
-2F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;;
-2F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;;
-2F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;;
-2F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;;
-2F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;36FC;;;;N;;;;;
-2F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;;
-2F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;;
-2F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;;
-2F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;;
-2F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;;
-2F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;;
-2F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;;
-2F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;;
-2F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;;
-2F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;;
-2F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;;
-2F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F53;;;;N;;;;;
-2F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;;
-2F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;;
-2F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;;
-2F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;;
-2F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;;
-2F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;;
-2F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;;
-2F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;;
-2F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;;
-2F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;;
-2F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;;
-2F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;;
-2F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;;
-2F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;;
-2F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;;
-2F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;;
-2F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;;
-2F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;;
-2F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;;
-2F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;;
-2F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;;
-2F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;;
-2F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;;
-2F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;;
-2F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;;
-2F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;;
-2F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;;
-2F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;;N;;;;;
-2F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;;
-2F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;;
-2F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;;
-2F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;;
-2F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;;
-2F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;;
-2F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;;
-2F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;;
-2F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;;
-2F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;;
-2F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;;
-2F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;;
-2F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;;
-2F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;;
-2F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;;
-2F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;;
-2F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;;
-2F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;;
-2F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;;
-2F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;;
-2F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;;
-2F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;;
-2F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;;
-2F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;;
-2F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;;
-2F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;;
-2F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;;
-2F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;;
-2F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;;
-2F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;;
-2F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;;
-2F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;;
-2F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;;
-2F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;;
-2F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;;
-2F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;;
-2F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;;
-2F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;;
-2F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;;
-2F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;;
-2F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;;
-2F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;;
-2F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;;
-2F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;;
-2F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;;
-2F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;;
-2F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;;
-2F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;;
-2F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;;
-2F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;;
-2F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;;
-2F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;;
-2F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;;
-2F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;;
-2F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;;
-2F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;;
-2F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;;
-2F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;;
-2F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;;
-2F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;;
-2F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;;
-2F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;;
-2F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;;
-2F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;;
-2F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;;
-2F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;;
-2F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;;
-2F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;;
-2F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;;
-2F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;;
-2F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;;
-2F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;;
-2F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;;
-2F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;;
-2F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;;
-2F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;;
-2F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;;
-2F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;;
-2F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;;
-2F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;;
-2F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;;
-2F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;;
-2F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;;
-2F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;;
-2F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;;
-2F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;;
-2F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;;
-2F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;;
-2F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;;
-2F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;;
-2F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;;
-2F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;;
-2F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;;
-2F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;;
-2F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;;
-2F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;;
-2F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;;
-2F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;;
-2F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;;
-2F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;;
-2F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;;
-2F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;;
-2F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;;
-2F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;;
-2F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;;
-2F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;;
-2F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;;
-2F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;;
-2F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;;
-2F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;;
-2F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;;
-2F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;;
-2F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;;
-2F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;;
-2F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;;
-2F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;;
-2F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;;
-2F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;;
-2F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;;
-2F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;;
-2F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;;
-2F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;;
-2F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;;
-2F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;;
-2F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;;
-2F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;;
-2F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;;
-2F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;;
-2F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;;
-2F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;;
-2F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;;
-2F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;;
-2F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;;
-2F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;;
-2F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;;
-2F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;;
-2F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;;
-2F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;;
-2F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;;
-2F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;;
-2F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;;
-2F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;;
-2F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;243AB;;;;N;;;;;
-2F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;;
-2F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;;
-2F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;;
-2F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;;
-2F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;;
-2F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;;
-2F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;;
-2F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;;
-2F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;;
-2F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;;
-2F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;;
-2F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;;
-2F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;;
-2F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;;
-2F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;;
-2F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;;
-2F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;;
-2F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;;
-2F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;;
-2F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;;
-2F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;;
-2F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;;
-2F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;;
-2F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;;
-2F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;;
-2F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;;
-2F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;;
-2F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;;
-2F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;;
-2F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;;
-2F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;;
-2F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;;
-2F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;;
-2F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;;
-2F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;;
-2F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;;
-2F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;;
-2F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;;
-2F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;;
-2F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;;
-2F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;;
-2F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;;
-2F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;;
-2F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;;
-2F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;;
-2F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;;
-2F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;;
-2F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;;
-2F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;;
-2F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;;
-2F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;;
-2F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;;
-2F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;;
-2F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;;
-2F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;;
-2F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;;
-2F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;;
-2F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;;
-2F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;;
-2F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;;
-2F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;;
-2F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;;
-2F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;;
-2F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AEE;;;;N;;;;;
-2F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;;
-2F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;;
-2F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;;
-2F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;;
-2F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;;
-2F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;;
-2F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;;
-2F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;;
-2F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;;
-2F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;;
-2F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;;
-2F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;;
-2F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;;
-2F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;;
-2F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;;
-2F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;;
-2F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;;
-2F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;;
-2F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;;
-2F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;;
-2F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;;
-2F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;;
-2F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;;
-2F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;;
-2F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;;
-2F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;;
-2F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;;
-2F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;;
-2F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;;
-2F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;;
-2F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;;
-2F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;;
-2F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;;
-2F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;;
-2F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;;
-2F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;;
-2F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;;
-2F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;;
-2F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;;
-2F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;;
-2F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;;
-2F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;;
-2F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;;
-2F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;;
-2F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;;
-2F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;;
-2F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;;
-2F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;;
-2F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;;
-2F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;;
-2F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;;
-2F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;;
-2F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;;
-2F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;;
-2F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;;
-2F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;;
-2F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;;
-2F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;;
-2F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;;
-2F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;;
-2F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;;
-2F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;;
-2F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;;
-2F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;;
-2F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;;
-2F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;;
-2F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;;
-2F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;;
-2F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;;
-2F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;;
-2F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;;
-2F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;;
-2F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;;
-2F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;;
-2F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;;
-2F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;;
-2F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;;
-2F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;;
-2F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;;
-2F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;;
-2F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;;
-2F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;;
-2F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;;
-2F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;;
-2F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;;
-2F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;;
-2F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;;
-2F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;;
-2F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;;
-2F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;;
-2F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;;
-2F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;;
-2F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;;
-2F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;;
-2F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;;
-2F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;45D7;;;;N;;;;;
-2F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;;
-2F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;;
-2F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;;
-2F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;;
-2F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;;
-2F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;;
-2F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;;
-2F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;;
-2F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;;
-2F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;;
-2F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;;
-2F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;;
-2F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;;
-2F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;;
-2F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;;
-2F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;;
-2F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;;
-2F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;;
-2F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;;
-2F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;;
-2F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;;
-2F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;;
-2F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;;
-2F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;;
-2F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;;
-2F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;;
-2F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;;
-2F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;;
-2F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;;
-2F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;;
-2F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;;
-2F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;;
-2F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;;
-2F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;;
-2F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;;
-2F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;;
-2F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;;
-2F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;;
-2F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;;
-2F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;;
-2F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;;
-2F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;;
-2F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;;
-2F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;;
-2F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;;
-2F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;;
-2F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;;
-2F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;;
-2F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;;
-2F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;;
-2F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;;
-2F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;;
-2F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;;
-2F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;;
-2F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;;
-2F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;;
-2F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;;
-2F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;;
-2F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;;
-2F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;;
-2F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;;
-2F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;;
-2F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;;
-2F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;;
-2FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;;
-2FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;;
-2FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;;
-2FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;;
-2FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;;
-2FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;;
-2FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;;
-2FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;;
-2FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;;
-2FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;;
-2FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;;
-2FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;;
-2FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;;
-2FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;;
-2FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;;
-2FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;;
-2FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;;
-2FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;;
-2FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;;
-2FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;;
-2FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;;
-2FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;;
-2FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;;
-2FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;;
-2FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;;
-2FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;;
-2FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;;
-2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;;
-2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;;
-2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;;
-E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;;
-E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;;
-E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;;
-E0022;TAG QUOTATION MARK;Cf;0;BN;;;;;N;;;;;
-E0023;TAG NUMBER SIGN;Cf;0;BN;;;;;N;;;;;
-E0024;TAG DOLLAR SIGN;Cf;0;BN;;;;;N;;;;;
-E0025;TAG PERCENT SIGN;Cf;0;BN;;;;;N;;;;;
-E0026;TAG AMPERSAND;Cf;0;BN;;;;;N;;;;;
-E0027;TAG APOSTROPHE;Cf;0;BN;;;;;N;;;;;
-E0028;TAG LEFT PARENTHESIS;Cf;0;BN;;;;;N;;;;;
-E0029;TAG RIGHT PARENTHESIS;Cf;0;BN;;;;;N;;;;;
-E002A;TAG ASTERISK;Cf;0;BN;;;;;N;;;;;
-E002B;TAG PLUS SIGN;Cf;0;BN;;;;;N;;;;;
-E002C;TAG COMMA;Cf;0;BN;;;;;N;;;;;
-E002D;TAG HYPHEN-MINUS;Cf;0;BN;;;;;N;;;;;
-E002E;TAG FULL STOP;Cf;0;BN;;;;;N;;;;;
-E002F;TAG SOLIDUS;Cf;0;BN;;;;;N;;;;;
-E0030;TAG DIGIT ZERO;Cf;0;BN;;;;;N;;;;;
-E0031;TAG DIGIT ONE;Cf;0;BN;;;;;N;;;;;
-E0032;TAG DIGIT TWO;Cf;0;BN;;;;;N;;;;;
-E0033;TAG DIGIT THREE;Cf;0;BN;;;;;N;;;;;
-E0034;TAG DIGIT FOUR;Cf;0;BN;;;;;N;;;;;
-E0035;TAG DIGIT FIVE;Cf;0;BN;;;;;N;;;;;
-E0036;TAG DIGIT SIX;Cf;0;BN;;;;;N;;;;;
-E0037;TAG DIGIT SEVEN;Cf;0;BN;;;;;N;;;;;
-E0038;TAG DIGIT EIGHT;Cf;0;BN;;;;;N;;;;;
-E0039;TAG DIGIT NINE;Cf;0;BN;;;;;N;;;;;
-E003A;TAG COLON;Cf;0;BN;;;;;N;;;;;
-E003B;TAG SEMICOLON;Cf;0;BN;;;;;N;;;;;
-E003C;TAG LESS-THAN SIGN;Cf;0;BN;;;;;N;;;;;
-E003D;TAG EQUALS SIGN;Cf;0;BN;;;;;N;;;;;
-E003E;TAG GREATER-THAN SIGN;Cf;0;BN;;;;;N;;;;;
-E003F;TAG QUESTION MARK;Cf;0;BN;;;;;N;;;;;
-E0040;TAG COMMERCIAL AT;Cf;0;BN;;;;;N;;;;;
-E0041;TAG LATIN CAPITAL LETTER A;Cf;0;BN;;;;;N;;;;;
-E0042;TAG LATIN CAPITAL LETTER B;Cf;0;BN;;;;;N;;;;;
-E0043;TAG LATIN CAPITAL LETTER C;Cf;0;BN;;;;;N;;;;;
-E0044;TAG LATIN CAPITAL LETTER D;Cf;0;BN;;;;;N;;;;;
-E0045;TAG LATIN CAPITAL LETTER E;Cf;0;BN;;;;;N;;;;;
-E0046;TAG LATIN CAPITAL LETTER F;Cf;0;BN;;;;;N;;;;;
-E0047;TAG LATIN CAPITAL LETTER G;Cf;0;BN;;;;;N;;;;;
-E0048;TAG LATIN CAPITAL LETTER H;Cf;0;BN;;;;;N;;;;;
-E0049;TAG LATIN CAPITAL LETTER I;Cf;0;BN;;;;;N;;;;;
-E004A;TAG LATIN CAPITAL LETTER J;Cf;0;BN;;;;;N;;;;;
-E004B;TAG LATIN CAPITAL LETTER K;Cf;0;BN;;;;;N;;;;;
-E004C;TAG LATIN CAPITAL LETTER L;Cf;0;BN;;;;;N;;;;;
-E004D;TAG LATIN CAPITAL LETTER M;Cf;0;BN;;;;;N;;;;;
-E004E;TAG LATIN CAPITAL LETTER N;Cf;0;BN;;;;;N;;;;;
-E004F;TAG LATIN CAPITAL LETTER O;Cf;0;BN;;;;;N;;;;;
-E0050;TAG LATIN CAPITAL LETTER P;Cf;0;BN;;;;;N;;;;;
-E0051;TAG LATIN CAPITAL LETTER Q;Cf;0;BN;;;;;N;;;;;
-E0052;TAG LATIN CAPITAL LETTER R;Cf;0;BN;;;;;N;;;;;
-E0053;TAG LATIN CAPITAL LETTER S;Cf;0;BN;;;;;N;;;;;
-E0054;TAG LATIN CAPITAL LETTER T;Cf;0;BN;;;;;N;;;;;
-E0055;TAG LATIN CAPITAL LETTER U;Cf;0;BN;;;;;N;;;;;
-E0056;TAG LATIN CAPITAL LETTER V;Cf;0;BN;;;;;N;;;;;
-E0057;TAG LATIN CAPITAL LETTER W;Cf;0;BN;;;;;N;;;;;
-E0058;TAG LATIN CAPITAL LETTER X;Cf;0;BN;;;;;N;;;;;
-E0059;TAG LATIN CAPITAL LETTER Y;Cf;0;BN;;;;;N;;;;;
-E005A;TAG LATIN CAPITAL LETTER Z;Cf;0;BN;;;;;N;;;;;
-E005B;TAG LEFT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;;
-E005C;TAG REVERSE SOLIDUS;Cf;0;BN;;;;;N;;;;;
-E005D;TAG RIGHT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;;
-E005E;TAG CIRCUMFLEX ACCENT;Cf;0;BN;;;;;N;;;;;
-E005F;TAG LOW LINE;Cf;0;BN;;;;;N;;;;;
-E0060;TAG GRAVE ACCENT;Cf;0;BN;;;;;N;;;;;
-E0061;TAG LATIN SMALL LETTER A;Cf;0;BN;;;;;N;;;;;
-E0062;TAG LATIN SMALL LETTER B;Cf;0;BN;;;;;N;;;;;
-E0063;TAG LATIN SMALL LETTER C;Cf;0;BN;;;;;N;;;;;
-E0064;TAG LATIN SMALL LETTER D;Cf;0;BN;;;;;N;;;;;
-E0065;TAG LATIN SMALL LETTER E;Cf;0;BN;;;;;N;;;;;
-E0066;TAG LATIN SMALL LETTER F;Cf;0;BN;;;;;N;;;;;
-E0067;TAG LATIN SMALL LETTER G;Cf;0;BN;;;;;N;;;;;
-E0068;TAG LATIN SMALL LETTER H;Cf;0;BN;;;;;N;;;;;
-E0069;TAG LATIN SMALL LETTER I;Cf;0;BN;;;;;N;;;;;
-E006A;TAG LATIN SMALL LETTER J;Cf;0;BN;;;;;N;;;;;
-E006B;TAG LATIN SMALL LETTER K;Cf;0;BN;;;;;N;;;;;
-E006C;TAG LATIN SMALL LETTER L;Cf;0;BN;;;;;N;;;;;
-E006D;TAG LATIN SMALL LETTER M;Cf;0;BN;;;;;N;;;;;
-E006E;TAG LATIN SMALL LETTER N;Cf;0;BN;;;;;N;;;;;
-E006F;TAG LATIN SMALL LETTER O;Cf;0;BN;;;;;N;;;;;
-E0070;TAG LATIN SMALL LETTER P;Cf;0;BN;;;;;N;;;;;
-E0071;TAG LATIN SMALL LETTER Q;Cf;0;BN;;;;;N;;;;;
-E0072;TAG LATIN SMALL LETTER R;Cf;0;BN;;;;;N;;;;;
-E0073;TAG LATIN SMALL LETTER S;Cf;0;BN;;;;;N;;;;;
-E0074;TAG LATIN SMALL LETTER T;Cf;0;BN;;;;;N;;;;;
-E0075;TAG LATIN SMALL LETTER U;Cf;0;BN;;;;;N;;;;;
-E0076;TAG LATIN SMALL LETTER V;Cf;0;BN;;;;;N;;;;;
-E0077;TAG LATIN SMALL LETTER W;Cf;0;BN;;;;;N;;;;;
-E0078;TAG LATIN SMALL LETTER X;Cf;0;BN;;;;;N;;;;;
-E0079;TAG LATIN SMALL LETTER Y;Cf;0;BN;;;;;N;;;;;
-E007A;TAG LATIN SMALL LETTER Z;Cf;0;BN;;;;;N;;;;;
-E007B;TAG LEFT CURLY BRACKET;Cf;0;BN;;;;;N;;;;;
-E007C;TAG VERTICAL LINE;Cf;0;BN;;;;;N;;;;;
-E007D;TAG RIGHT CURLY BRACKET;Cf;0;BN;;;;;N;;;;;
-E007E;TAG TILDE;Cf;0;BN;;;;;N;;;;;
-E007F;CANCEL TAG;Cf;0;BN;;;;;N;;;;;
-E0100;VARIATION SELECTOR-17;Mn;0;NSM;;;;;N;;;;;
-E0101;VARIATION SELECTOR-18;Mn;0;NSM;;;;;N;;;;;
-E0102;VARIATION SELECTOR-19;Mn;0;NSM;;;;;N;;;;;
-E0103;VARIATION SELECTOR-20;Mn;0;NSM;;;;;N;;;;;
-E0104;VARIATION SELECTOR-21;Mn;0;NSM;;;;;N;;;;;
-E0105;VARIATION SELECTOR-22;Mn;0;NSM;;;;;N;;;;;
-E0106;VARIATION SELECTOR-23;Mn;0;NSM;;;;;N;;;;;
-E0107;VARIATION SELECTOR-24;Mn;0;NSM;;;;;N;;;;;
-E0108;VARIATION SELECTOR-25;Mn;0;NSM;;;;;N;;;;;
-E0109;VARIATION SELECTOR-26;Mn;0;NSM;;;;;N;;;;;
-E010A;VARIATION SELECTOR-27;Mn;0;NSM;;;;;N;;;;;
-E010B;VARIATION SELECTOR-28;Mn;0;NSM;;;;;N;;;;;
-E010C;VARIATION SELECTOR-29;Mn;0;NSM;;;;;N;;;;;
-E010D;VARIATION SELECTOR-30;Mn;0;NSM;;;;;N;;;;;
-E010E;VARIATION SELECTOR-31;Mn;0;NSM;;;;;N;;;;;
-E010F;VARIATION SELECTOR-32;Mn;0;NSM;;;;;N;;;;;
-E0110;VARIATION SELECTOR-33;Mn;0;NSM;;;;;N;;;;;
-E0111;VARIATION SELECTOR-34;Mn;0;NSM;;;;;N;;;;;
-E0112;VARIATION SELECTOR-35;Mn;0;NSM;;;;;N;;;;;
-E0113;VARIATION SELECTOR-36;Mn;0;NSM;;;;;N;;;;;
-E0114;VARIATION SELECTOR-37;Mn;0;NSM;;;;;N;;;;;
-E0115;VARIATION SELECTOR-38;Mn;0;NSM;;;;;N;;;;;
-E0116;VARIATION SELECTOR-39;Mn;0;NSM;;;;;N;;;;;
-E0117;VARIATION SELECTOR-40;Mn;0;NSM;;;;;N;;;;;
-E0118;VARIATION SELECTOR-41;Mn;0;NSM;;;;;N;;;;;
-E0119;VARIATION SELECTOR-42;Mn;0;NSM;;;;;N;;;;;
-E011A;VARIATION SELECTOR-43;Mn;0;NSM;;;;;N;;;;;
-E011B;VARIATION SELECTOR-44;Mn;0;NSM;;;;;N;;;;;
-E011C;VARIATION SELECTOR-45;Mn;0;NSM;;;;;N;;;;;
-E011D;VARIATION SELECTOR-46;Mn;0;NSM;;;;;N;;;;;
-E011E;VARIATION SELECTOR-47;Mn;0;NSM;;;;;N;;;;;
-E011F;VARIATION SELECTOR-48;Mn;0;NSM;;;;;N;;;;;
-E0120;VARIATION SELECTOR-49;Mn;0;NSM;;;;;N;;;;;
-E0121;VARIATION SELECTOR-50;Mn;0;NSM;;;;;N;;;;;
-E0122;VARIATION SELECTOR-51;Mn;0;NSM;;;;;N;;;;;
-E0123;VARIATION SELECTOR-52;Mn;0;NSM;;;;;N;;;;;
-E0124;VARIATION SELECTOR-53;Mn;0;NSM;;;;;N;;;;;
-E0125;VARIATION SELECTOR-54;Mn;0;NSM;;;;;N;;;;;
-E0126;VARIATION SELECTOR-55;Mn;0;NSM;;;;;N;;;;;
-E0127;VARIATION SELECTOR-56;Mn;0;NSM;;;;;N;;;;;
-E0128;VARIATION SELECTOR-57;Mn;0;NSM;;;;;N;;;;;
-E0129;VARIATION SELECTOR-58;Mn;0;NSM;;;;;N;;;;;
-E012A;VARIATION SELECTOR-59;Mn;0;NSM;;;;;N;;;;;
-E012B;VARIATION SELECTOR-60;Mn;0;NSM;;;;;N;;;;;
-E012C;VARIATION SELECTOR-61;Mn;0;NSM;;;;;N;;;;;
-E012D;VARIATION SELECTOR-62;Mn;0;NSM;;;;;N;;;;;
-E012E;VARIATION SELECTOR-63;Mn;0;NSM;;;;;N;;;;;
-E012F;VARIATION SELECTOR-64;Mn;0;NSM;;;;;N;;;;;
-E0130;VARIATION SELECTOR-65;Mn;0;NSM;;;;;N;;;;;
-E0131;VARIATION SELECTOR-66;Mn;0;NSM;;;;;N;;;;;
-E0132;VARIATION SELECTOR-67;Mn;0;NSM;;;;;N;;;;;
-E0133;VARIATION SELECTOR-68;Mn;0;NSM;;;;;N;;;;;
-E0134;VARIATION SELECTOR-69;Mn;0;NSM;;;;;N;;;;;
-E0135;VARIATION SELECTOR-70;Mn;0;NSM;;;;;N;;;;;
-E0136;VARIATION SELECTOR-71;Mn;0;NSM;;;;;N;;;;;
-E0137;VARIATION SELECTOR-72;Mn;0;NSM;;;;;N;;;;;
-E0138;VARIATION SELECTOR-73;Mn;0;NSM;;;;;N;;;;;
-E0139;VARIATION SELECTOR-74;Mn;0;NSM;;;;;N;;;;;
-E013A;VARIATION SELECTOR-75;Mn;0;NSM;;;;;N;;;;;
-E013B;VARIATION SELECTOR-76;Mn;0;NSM;;;;;N;;;;;
-E013C;VARIATION SELECTOR-77;Mn;0;NSM;;;;;N;;;;;
-E013D;VARIATION SELECTOR-78;Mn;0;NSM;;;;;N;;;;;
-E013E;VARIATION SELECTOR-79;Mn;0;NSM;;;;;N;;;;;
-E013F;VARIATION SELECTOR-80;Mn;0;NSM;;;;;N;;;;;
-E0140;VARIATION SELECTOR-81;Mn;0;NSM;;;;;N;;;;;
-E0141;VARIATION SELECTOR-82;Mn;0;NSM;;;;;N;;;;;
-E0142;VARIATION SELECTOR-83;Mn;0;NSM;;;;;N;;;;;
-E0143;VARIATION SELECTOR-84;Mn;0;NSM;;;;;N;;;;;
-E0144;VARIATION SELECTOR-85;Mn;0;NSM;;;;;N;;;;;
-E0145;VARIATION SELECTOR-86;Mn;0;NSM;;;;;N;;;;;
-E0146;VARIATION SELECTOR-87;Mn;0;NSM;;;;;N;;;;;
-E0147;VARIATION SELECTOR-88;Mn;0;NSM;;;;;N;;;;;
-E0148;VARIATION SELECTOR-89;Mn;0;NSM;;;;;N;;;;;
-E0149;VARIATION SELECTOR-90;Mn;0;NSM;;;;;N;;;;;
-E014A;VARIATION SELECTOR-91;Mn;0;NSM;;;;;N;;;;;
-E014B;VARIATION SELECTOR-92;Mn;0;NSM;;;;;N;;;;;
-E014C;VARIATION SELECTOR-93;Mn;0;NSM;;;;;N;;;;;
-E014D;VARIATION SELECTOR-94;Mn;0;NSM;;;;;N;;;;;
-E014E;VARIATION SELECTOR-95;Mn;0;NSM;;;;;N;;;;;
-E014F;VARIATION SELECTOR-96;Mn;0;NSM;;;;;N;;;;;
-E0150;VARIATION SELECTOR-97;Mn;0;NSM;;;;;N;;;;;
-E0151;VARIATION SELECTOR-98;Mn;0;NSM;;;;;N;;;;;
-E0152;VARIATION SELECTOR-99;Mn;0;NSM;;;;;N;;;;;
-E0153;VARIATION SELECTOR-100;Mn;0;NSM;;;;;N;;;;;
-E0154;VARIATION SELECTOR-101;Mn;0;NSM;;;;;N;;;;;
-E0155;VARIATION SELECTOR-102;Mn;0;NSM;;;;;N;;;;;
-E0156;VARIATION SELECTOR-103;Mn;0;NSM;;;;;N;;;;;
-E0157;VARIATION SELECTOR-104;Mn;0;NSM;;;;;N;;;;;
-E0158;VARIATION SELECTOR-105;Mn;0;NSM;;;;;N;;;;;
-E0159;VARIATION SELECTOR-106;Mn;0;NSM;;;;;N;;;;;
-E015A;VARIATION SELECTOR-107;Mn;0;NSM;;;;;N;;;;;
-E015B;VARIATION SELECTOR-108;Mn;0;NSM;;;;;N;;;;;
-E015C;VARIATION SELECTOR-109;Mn;0;NSM;;;;;N;;;;;
-E015D;VARIATION SELECTOR-110;Mn;0;NSM;;;;;N;;;;;
-E015E;VARIATION SELECTOR-111;Mn;0;NSM;;;;;N;;;;;
-E015F;VARIATION SELECTOR-112;Mn;0;NSM;;;;;N;;;;;
-E0160;VARIATION SELECTOR-113;Mn;0;NSM;;;;;N;;;;;
-E0161;VARIATION SELECTOR-114;Mn;0;NSM;;;;;N;;;;;
-E0162;VARIATION SELECTOR-115;Mn;0;NSM;;;;;N;;;;;
-E0163;VARIATION SELECTOR-116;Mn;0;NSM;;;;;N;;;;;
-E0164;VARIATION SELECTOR-117;Mn;0;NSM;;;;;N;;;;;
-E0165;VARIATION SELECTOR-118;Mn;0;NSM;;;;;N;;;;;
-E0166;VARIATION SELECTOR-119;Mn;0;NSM;;;;;N;;;;;
-E0167;VARIATION SELECTOR-120;Mn;0;NSM;;;;;N;;;;;
-E0168;VARIATION SELECTOR-121;Mn;0;NSM;;;;;N;;;;;
-E0169;VARIATION SELECTOR-122;Mn;0;NSM;;;;;N;;;;;
-E016A;VARIATION SELECTOR-123;Mn;0;NSM;;;;;N;;;;;
-E016B;VARIATION SELECTOR-124;Mn;0;NSM;;;;;N;;;;;
-E016C;VARIATION SELECTOR-125;Mn;0;NSM;;;;;N;;;;;
-E016D;VARIATION SELECTOR-126;Mn;0;NSM;;;;;N;;;;;
-E016E;VARIATION SELECTOR-127;Mn;0;NSM;;;;;N;;;;;
-E016F;VARIATION SELECTOR-128;Mn;0;NSM;;;;;N;;;;;
-E0170;VARIATION SELECTOR-129;Mn;0;NSM;;;;;N;;;;;
-E0171;VARIATION SELECTOR-130;Mn;0;NSM;;;;;N;;;;;
-E0172;VARIATION SELECTOR-131;Mn;0;NSM;;;;;N;;;;;
-E0173;VARIATION SELECTOR-132;Mn;0;NSM;;;;;N;;;;;
-E0174;VARIATION SELECTOR-133;Mn;0;NSM;;;;;N;;;;;
-E0175;VARIATION SELECTOR-134;Mn;0;NSM;;;;;N;;;;;
-E0176;VARIATION SELECTOR-135;Mn;0;NSM;;;;;N;;;;;
-E0177;VARIATION SELECTOR-136;Mn;0;NSM;;;;;N;;;;;
-E0178;VARIATION SELECTOR-137;Mn;0;NSM;;;;;N;;;;;
-E0179;VARIATION SELECTOR-138;Mn;0;NSM;;;;;N;;;;;
-E017A;VARIATION SELECTOR-139;Mn;0;NSM;;;;;N;;;;;
-E017B;VARIATION SELECTOR-140;Mn;0;NSM;;;;;N;;;;;
-E017C;VARIATION SELECTOR-141;Mn;0;NSM;;;;;N;;;;;
-E017D;VARIATION SELECTOR-142;Mn;0;NSM;;;;;N;;;;;
-E017E;VARIATION SELECTOR-143;Mn;0;NSM;;;;;N;;;;;
-E017F;VARIATION SELECTOR-144;Mn;0;NSM;;;;;N;;;;;
-E0180;VARIATION SELECTOR-145;Mn;0;NSM;;;;;N;;;;;
-E0181;VARIATION SELECTOR-146;Mn;0;NSM;;;;;N;;;;;
-E0182;VARIATION SELECTOR-147;Mn;0;NSM;;;;;N;;;;;
-E0183;VARIATION SELECTOR-148;Mn;0;NSM;;;;;N;;;;;
-E0184;VARIATION SELECTOR-149;Mn;0;NSM;;;;;N;;;;;
-E0185;VARIATION SELECTOR-150;Mn;0;NSM;;;;;N;;;;;
-E0186;VARIATION SELECTOR-151;Mn;0;NSM;;;;;N;;;;;
-E0187;VARIATION SELECTOR-152;Mn;0;NSM;;;;;N;;;;;
-E0188;VARIATION SELECTOR-153;Mn;0;NSM;;;;;N;;;;;
-E0189;VARIATION SELECTOR-154;Mn;0;NSM;;;;;N;;;;;
-E018A;VARIATION SELECTOR-155;Mn;0;NSM;;;;;N;;;;;
-E018B;VARIATION SELECTOR-156;Mn;0;NSM;;;;;N;;;;;
-E018C;VARIATION SELECTOR-157;Mn;0;NSM;;;;;N;;;;;
-E018D;VARIATION SELECTOR-158;Mn;0;NSM;;;;;N;;;;;
-E018E;VARIATION SELECTOR-159;Mn;0;NSM;;;;;N;;;;;
-E018F;VARIATION SELECTOR-160;Mn;0;NSM;;;;;N;;;;;
-E0190;VARIATION SELECTOR-161;Mn;0;NSM;;;;;N;;;;;
-E0191;VARIATION SELECTOR-162;Mn;0;NSM;;;;;N;;;;;
-E0192;VARIATION SELECTOR-163;Mn;0;NSM;;;;;N;;;;;
-E0193;VARIATION SELECTOR-164;Mn;0;NSM;;;;;N;;;;;
-E0194;VARIATION SELECTOR-165;Mn;0;NSM;;;;;N;;;;;
-E0195;VARIATION SELECTOR-166;Mn;0;NSM;;;;;N;;;;;
-E0196;VARIATION SELECTOR-167;Mn;0;NSM;;;;;N;;;;;
-E0197;VARIATION SELECTOR-168;Mn;0;NSM;;;;;N;;;;;
-E0198;VARIATION SELECTOR-169;Mn;0;NSM;;;;;N;;;;;
-E0199;VARIATION SELECTOR-170;Mn;0;NSM;;;;;N;;;;;
-E019A;VARIATION SELECTOR-171;Mn;0;NSM;;;;;N;;;;;
-E019B;VARIATION SELECTOR-172;Mn;0;NSM;;;;;N;;;;;
-E019C;VARIATION SELECTOR-173;Mn;0;NSM;;;;;N;;;;;
-E019D;VARIATION SELECTOR-174;Mn;0;NSM;;;;;N;;;;;
-E019E;VARIATION SELECTOR-175;Mn;0;NSM;;;;;N;;;;;
-E019F;VARIATION SELECTOR-176;Mn;0;NSM;;;;;N;;;;;
-E01A0;VARIATION SELECTOR-177;Mn;0;NSM;;;;;N;;;;;
-E01A1;VARIATION SELECTOR-178;Mn;0;NSM;;;;;N;;;;;
-E01A2;VARIATION SELECTOR-179;Mn;0;NSM;;;;;N;;;;;
-E01A3;VARIATION SELECTOR-180;Mn;0;NSM;;;;;N;;;;;
-E01A4;VARIATION SELECTOR-181;Mn;0;NSM;;;;;N;;;;;
-E01A5;VARIATION SELECTOR-182;Mn;0;NSM;;;;;N;;;;;
-E01A6;VARIATION SELECTOR-183;Mn;0;NSM;;;;;N;;;;;
-E01A7;VARIATION SELECTOR-184;Mn;0;NSM;;;;;N;;;;;
-E01A8;VARIATION SELECTOR-185;Mn;0;NSM;;;;;N;;;;;
-E01A9;VARIATION SELECTOR-186;Mn;0;NSM;;;;;N;;;;;
-E01AA;VARIATION SELECTOR-187;Mn;0;NSM;;;;;N;;;;;
-E01AB;VARIATION SELECTOR-188;Mn;0;NSM;;;;;N;;;;;
-E01AC;VARIATION SELECTOR-189;Mn;0;NSM;;;;;N;;;;;
-E01AD;VARIATION SELECTOR-190;Mn;0;NSM;;;;;N;;;;;
-E01AE;VARIATION SELECTOR-191;Mn;0;NSM;;;;;N;;;;;
-E01AF;VARIATION SELECTOR-192;Mn;0;NSM;;;;;N;;;;;
-E01B0;VARIATION SELECTOR-193;Mn;0;NSM;;;;;N;;;;;
-E01B1;VARIATION SELECTOR-194;Mn;0;NSM;;;;;N;;;;;
-E01B2;VARIATION SELECTOR-195;Mn;0;NSM;;;;;N;;;;;
-E01B3;VARIATION SELECTOR-196;Mn;0;NSM;;;;;N;;;;;
-E01B4;VARIATION SELECTOR-197;Mn;0;NSM;;;;;N;;;;;
-E01B5;VARIATION SELECTOR-198;Mn;0;NSM;;;;;N;;;;;
-E01B6;VARIATION SELECTOR-199;Mn;0;NSM;;;;;N;;;;;
-E01B7;VARIATION SELECTOR-200;Mn;0;NSM;;;;;N;;;;;
-E01B8;VARIATION SELECTOR-201;Mn;0;NSM;;;;;N;;;;;
-E01B9;VARIATION SELECTOR-202;Mn;0;NSM;;;;;N;;;;;
-E01BA;VARIATION SELECTOR-203;Mn;0;NSM;;;;;N;;;;;
-E01BB;VARIATION SELECTOR-204;Mn;0;NSM;;;;;N;;;;;
-E01BC;VARIATION SELECTOR-205;Mn;0;NSM;;;;;N;;;;;
-E01BD;VARIATION SELECTOR-206;Mn;0;NSM;;;;;N;;;;;
-E01BE;VARIATION SELECTOR-207;Mn;0;NSM;;;;;N;;;;;
-E01BF;VARIATION SELECTOR-208;Mn;0;NSM;;;;;N;;;;;
-E01C0;VARIATION SELECTOR-209;Mn;0;NSM;;;;;N;;;;;
-E01C1;VARIATION SELECTOR-210;Mn;0;NSM;;;;;N;;;;;
-E01C2;VARIATION SELECTOR-211;Mn;0;NSM;;;;;N;;;;;
-E01C3;VARIATION SELECTOR-212;Mn;0;NSM;;;;;N;;;;;
-E01C4;VARIATION SELECTOR-213;Mn;0;NSM;;;;;N;;;;;
-E01C5;VARIATION SELECTOR-214;Mn;0;NSM;;;;;N;;;;;
-E01C6;VARIATION SELECTOR-215;Mn;0;NSM;;;;;N;;;;;
-E01C7;VARIATION SELECTOR-216;Mn;0;NSM;;;;;N;;;;;
-E01C8;VARIATION SELECTOR-217;Mn;0;NSM;;;;;N;;;;;
-E01C9;VARIATION SELECTOR-218;Mn;0;NSM;;;;;N;;;;;
-E01CA;VARIATION SELECTOR-219;Mn;0;NSM;;;;;N;;;;;
-E01CB;VARIATION SELECTOR-220;Mn;0;NSM;;;;;N;;;;;
-E01CC;VARIATION SELECTOR-221;Mn;0;NSM;;;;;N;;;;;
-E01CD;VARIATION SELECTOR-222;Mn;0;NSM;;;;;N;;;;;
-E01CE;VARIATION SELECTOR-223;Mn;0;NSM;;;;;N;;;;;
-E01CF;VARIATION SELECTOR-224;Mn;0;NSM;;;;;N;;;;;
-E01D0;VARIATION SELECTOR-225;Mn;0;NSM;;;;;N;;;;;
-E01D1;VARIATION SELECTOR-226;Mn;0;NSM;;;;;N;;;;;
-E01D2;VARIATION SELECTOR-227;Mn;0;NSM;;;;;N;;;;;
-E01D3;VARIATION SELECTOR-228;Mn;0;NSM;;;;;N;;;;;
-E01D4;VARIATION SELECTOR-229;Mn;0;NSM;;;;;N;;;;;
-E01D5;VARIATION SELECTOR-230;Mn;0;NSM;;;;;N;;;;;
-E01D6;VARIATION SELECTOR-231;Mn;0;NSM;;;;;N;;;;;
-E01D7;VARIATION SELECTOR-232;Mn;0;NSM;;;;;N;;;;;
-E01D8;VARIATION SELECTOR-233;Mn;0;NSM;;;;;N;;;;;
-E01D9;VARIATION SELECTOR-234;Mn;0;NSM;;;;;N;;;;;
-E01DA;VARIATION SELECTOR-235;Mn;0;NSM;;;;;N;;;;;
-E01DB;VARIATION SELECTOR-236;Mn;0;NSM;;;;;N;;;;;
-E01DC;VARIATION SELECTOR-237;Mn;0;NSM;;;;;N;;;;;
-E01DD;VARIATION SELECTOR-238;Mn;0;NSM;;;;;N;;;;;
-E01DE;VARIATION SELECTOR-239;Mn;0;NSM;;;;;N;;;;;
-E01DF;VARIATION SELECTOR-240;Mn;0;NSM;;;;;N;;;;;
-E01E0;VARIATION SELECTOR-241;Mn;0;NSM;;;;;N;;;;;
-E01E1;VARIATION SELECTOR-242;Mn;0;NSM;;;;;N;;;;;
-E01E2;VARIATION SELECTOR-243;Mn;0;NSM;;;;;N;;;;;
-E01E3;VARIATION SELECTOR-244;Mn;0;NSM;;;;;N;;;;;
-E01E4;VARIATION SELECTOR-245;Mn;0;NSM;;;;;N;;;;;
-E01E5;VARIATION SELECTOR-246;Mn;0;NSM;;;;;N;;;;;
-E01E6;VARIATION SELECTOR-247;Mn;0;NSM;;;;;N;;;;;
-E01E7;VARIATION SELECTOR-248;Mn;0;NSM;;;;;N;;;;;
-E01E8;VARIATION SELECTOR-249;Mn;0;NSM;;;;;N;;;;;
-E01E9;VARIATION SELECTOR-250;Mn;0;NSM;;;;;N;;;;;
-E01EA;VARIATION SELECTOR-251;Mn;0;NSM;;;;;N;;;;;
-E01EB;VARIATION SELECTOR-252;Mn;0;NSM;;;;;N;;;;;
-E01EC;VARIATION SELECTOR-253;Mn;0;NSM;;;;;N;;;;;
-E01ED;VARIATION SELECTOR-254;Mn;0;NSM;;;;;N;;;;;
-E01EE;VARIATION SELECTOR-255;Mn;0;NSM;;;;;N;;;;;
-E01EF;VARIATION SELECTOR-256;Mn;0;NSM;;;;;N;;;;;
-F0000;<Plane 15 Private Use, First>;Co;0;L;;;;;N;;;;;
-FFFFD;<Plane 15 Private Use, Last>;Co;0;L;;;;;N;;;;;
-100000;<Plane 16 Private Use, First>;Co;0;L;;;;;N;;;;;
-10FFFD;<Plane 16 Private Use, Last>;Co;0;L;;;;;N;;;;;
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/bc/AL.pl b/Master/tlpkg/tlperl/lib/unicore/lib/bc/AL.pl
deleted file mode 100644
index f8fa70d730f..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/bc/AL.pl
+++ /dev/null
@@ -1,34 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# BidiClass category 'Arabic_Letter'
-#
-return <<'END';
-0600 0603
-060B
-060D
-061B
-061E 061F
-0621 063A
-0640 064A
-066D 066F
-0671 06D5
-06DD
-06E5 06E6
-06EE 06EF
-06FA 070D
-0710
-0712 072F
-074D 076D
-0780 07A5
-07B1
-FB50 FBB1
-FBD3 FD3D
-FD50 FD8F
-FD92 FDC7
-FDF0 FDFC
-FE70 FE74
-FE76 FEFC
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/bc/AN.pl b/Master/tlpkg/tlperl/lib/unicore/lib/bc/AN.pl
deleted file mode 100644
index 018e6977a86..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/bc/AN.pl
+++ /dev/null
@@ -1,11 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# BidiClass category 'Arabic_Number'
-#
-return <<'END';
-0660 0669
-066B 066C
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/bc/B.pl b/Master/tlpkg/tlperl/lib/unicore/lib/bc/B.pl
deleted file mode 100644
index d6402e620cc..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/bc/B.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# BidiClass category 'Paragraph_Separator'
-#
-return <<'END';
-000A
-000D
-001C 001E
-0085
-2029
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/bc/BN.pl b/Master/tlpkg/tlperl/lib/unicore/lib/bc/BN.pl
deleted file mode 100644
index 3e87d4e6ddd..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/bc/BN.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# BidiClass category 'Boundary_Neutral'
-#
-return <<'END';
-0000 0008
-000E 001B
-007F 0084
-0086 009F
-00AD
-070F
-200B 200D
-2060 2063
-206A 206F
-FEFF
-1D173 1D17A
-E0001
-E0020 E007F
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/bc/CS.pl b/Master/tlpkg/tlperl/lib/unicore/lib/bc/CS.pl
deleted file mode 100644
index b1470ad0bb9..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/bc/CS.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# BidiClass category 'Common_Separator'
-#
-return <<'END';
-002C
-002E 002F
-003A
-00A0
-060C
-202F
-2044
-FE50
-FE52
-FE55
-FF0C
-FF0E FF0F
-FF1A
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/bc/EN.pl b/Master/tlpkg/tlperl/lib/unicore/lib/bc/EN.pl
deleted file mode 100644
index a0186d50cd3..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/bc/EN.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# BidiClass category 'European_Number'
-#
-return <<'END';
-0030 0039
-00B2 00B3
-00B9
-06F0 06F9
-2070
-2074 2079
-2080 2089
-2488 249B
-FF10 FF19
-1D7CE 1D7FF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/bc/ES.pl b/Master/tlpkg/tlperl/lib/unicore/lib/bc/ES.pl
deleted file mode 100644
index c33abdfb3a6..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/bc/ES.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# BidiClass category 'European_Separator'
-#
-return <<'END';
-002B
-002D
-207A 207B
-208A 208B
-2212
-FB29
-FE62 FE63
-FF0B
-FF0D
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/bc/ET.pl b/Master/tlpkg/tlperl/lib/unicore/lib/bc/ET.pl
deleted file mode 100644
index f27a05ca3db..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/bc/ET.pl
+++ /dev/null
@@ -1,27 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# BidiClass category 'European_Terminator'
-#
-return <<'END';
-0023 0025
-00A2 00A5
-00B0 00B1
-066A
-09F2 09F3
-0AF1
-0BF9
-0E3F
-17DB
-2030 2034
-20A0 20B5
-212E
-2213
-FE5F
-FE69 FE6A
-FF03 FF05
-FFE0 FFE1
-FFE5 FFE6
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/bc/L.pl b/Master/tlpkg/tlperl/lib/unicore/lib/bc/L.pl
deleted file mode 100644
index 020f5b36396..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/bc/L.pl
+++ /dev/null
@@ -1,400 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# BidiClass category 'Left_To_Right'
-#
-return <<'END';
-0041 005A
-0061 007A
-00AA
-00B5
-00BA
-00C0 00D6
-00D8 00F6
-00F8 0241
-0250 02B8
-02BB 02C1
-02D0 02D1
-02E0 02E4
-02EE
-037A
-0386
-0388 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 03F5
-03F7 0482
-048A 04CE
-04D0 04F9
-0500 050F
-0531 0556
-0559 055F
-0561 0587
-0589
-0903 0939
-093D 0940
-0949 094C
-0950
-0958 0961
-0964 0970
-097D
-0982 0983
-0985 098C
-098F 0990
-0993 09A8
-09AA 09B0
-09B2
-09B6 09B9
-09BD 09C0
-09C7 09C8
-09CB 09CC
-09CE
-09D7
-09DC 09DD
-09DF 09E1
-09E6 09F1
-09F4 09FA
-0A03
-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 0A8D
-0A8F 0A91
-0A93 0AA8
-0AAA 0AB0
-0AB2 0AB3
-0AB5 0AB9
-0ABD 0AC0
-0AC9
-0ACB 0ACC
-0AD0
-0AE0 0AE1
-0AE6 0AEF
-0B02 0B03
-0B05 0B0C
-0B0F 0B10
-0B13 0B28
-0B2A 0B30
-0B32 0B33
-0B35 0B39
-0B3D 0B3E
-0B40
-0B47 0B48
-0B4B 0B4C
-0B57
-0B5C 0B5D
-0B5F 0B61
-0B66 0B71
-0B83
-0B85 0B8A
-0B8E 0B90
-0B92 0B95
-0B99 0B9A
-0B9C
-0B9E 0B9F
-0BA3 0BA4
-0BA8 0BAA
-0BAE 0BB9
-0BBE 0BBF
-0BC1 0BC2
-0BC6 0BC8
-0BCA 0BCC
-0BD7
-0BE6 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
-0CBD 0CC4
-0CC6 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 0FD1
-1000 1021
-1023 1027
-1029 102A
-102C
-1031
-1038
-1040 1057
-10A0 10C5
-10D0 10FC
-1100 1159
-115F 11A2
-11A8 11F9
-1200 1248
-124A 124D
-1250 1256
-1258
-125A 125D
-1260 1288
-128A 128D
-1290 12B0
-12B2 12B5
-12B8 12BE
-12C0
-12C2 12C5
-12C8 12D6
-12D8 1310
-1312 1315
-1318 135A
-1360 137C
-1380 138F
-13A0 13F4
-1401 1676
-1681 169A
-16A0 16F0
-1700 170C
-170E 1711
-1720 1731
-1735 1736
-1740 1751
-1760 176C
-176E 1770
-1780 17B6
-17BE 17C5
-17C7 17C8
-17D4 17DA
-17DC
-17E0 17E9
-1810 1819
-1820 1877
-1880 18A8
-1900 191C
-1923 1926
-1930 1931
-1933 1938
-1946 196D
-1970 1974
-1980 19A9
-19B0 19C9
-19D0 19D9
-1A00 1A16
-1A19 1A1B
-1A1E 1A1F
-1D00 1DBF
-1E00 1E9B
-1EA0 1EF9
-1F00 1F15
-1F18 1F1D
-1F20 1F45
-1F48 1F4D
-1F50 1F57
-1F59
-1F5B
-1F5D
-1F5F 1F7D
-1F80 1FB4
-1FB6 1FBC
-1FBE
-1FC2 1FC4
-1FC6 1FCC
-1FD0 1FD3
-1FD6 1FDB
-1FE0 1FEC
-1FF2 1FF4
-1FF6 1FFC
-200E
-2071
-207F
-2090 2094
-2102
-2107
-210A 2113
-2115
-2119 211D
-2124
-2126
-2128
-212A 212D
-212F 2131
-2133 2139
-213C 213F
-2145 2149
-2160 2183
-2336 237A
-2395
-249C 24E9
-26AC
-2800 28FF
-2C00 2C2E
-2C30 2C5E
-2C80 2CE4
-2D00 2D25
-2D30 2D65
-2D6F
-2D80 2D96
-2DA0 2DA6
-2DA8 2DAE
-2DB0 2DB6
-2DB8 2DBE
-2DC0 2DC6
-2DC8 2DCE
-2DD0 2DD6
-2DD8 2DDE
-3005 3007
-3021 3029
-3031 3035
-3038 303C
-3041 3096
-309D 309F
-30A1 30FA
-30FC 30FF
-3105 312C
-3131 318E
-3190 31B7
-31F0 321C
-3220 3243
-3260 327B
-327F 32B0
-32C0 32CB
-32D0 32FE
-3300 3376
-337B 33DD
-33E0 33FE
-A000 A48C
-A800 A801
-A803 A805
-A807 A80A
-A80C A824
-A827
-F900 FA2D
-FA30 FA6A
-FA70 FAD9
-FB00 FB06
-FB13 FB17
-FF21 FF3A
-FF41 FF5A
-FF66 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-10000 1000B
-1000D 10026
-10028 1003A
-1003C 1003D
-1003F 1004D
-10050 1005D
-10080 100FA
-10100
-10102
-10107 10133
-10137 1013F
-10300 1031E
-10320 10323
-10330 1034A
-10380 1039D
-1039F 103C3
-103C8 103D0
-10400 1049D
-104A0 104A9
-1D000 1D0F5
-1D100 1D126
-1D12A 1D166
-1D16A 1D172
-1D183 1D184
-1D18C 1D1A9
-1D1AE 1D1DD
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A5
-1D6A8 1D7C9
-2F800 2FA1D
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/bc/LRE.pl b/Master/tlpkg/tlperl/lib/unicore/lib/bc/LRE.pl
deleted file mode 100644
index 22129c44f2d..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/bc/LRE.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# BidiClass category 'Left_To_Right_Embedding'
-#
-return <<'END';
-202A
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/bc/LRO.pl b/Master/tlpkg/tlperl/lib/unicore/lib/bc/LRO.pl
deleted file mode 100644
index 10790d181d8..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/bc/LRO.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# BidiClass category 'Left_To_Right_Override'
-#
-return <<'END';
-202D
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/bc/NSM.pl b/Master/tlpkg/tlperl/lib/unicore/lib/bc/NSM.pl
deleted file mode 100644
index 75a8e8adc67..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/bc/NSM.pl
+++ /dev/null
@@ -1,131 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# BidiClass category 'Nonspacing_Mark'
-#
-return <<'END';
-0300 036F
-0483 0486
-0488 0489
-0591 05B9
-05BB 05BD
-05BF
-05C1 05C2
-05C4 05C5
-05C7
-0610 0615
-064B 065E
-0670
-06D6 06DC
-06DE 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
-0A01 0A02
-0A3C
-0A41 0A42
-0A47 0A48
-0A4B 0A4D
-0A70 0A71
-0A81 0A82
-0ABC
-0AC1 0AC5
-0AC7 0AC8
-0ACD
-0AE2 0AE3
-0B01
-0B3C
-0B3F
-0B41 0B43
-0B4D
-0B56
-0B82
-0BC0
-0BCD
-0C3E 0C40
-0C46 0C48
-0C4A 0C4D
-0C55 0C56
-0CBC
-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
-135F
-1712 1714
-1732 1734
-1752 1753
-1772 1773
-17B7 17BD
-17C6
-17C9 17D3
-17DD
-180B 180D
-18A9
-1920 1922
-1927 192B
-1932
-1939 193B
-1A17 1A18
-1DC0 1DC3
-20D0 20EB
-302A 302F
-3099 309A
-A802
-A806
-A80B
-A825 A826
-FB1E
-FE00 FE0F
-FE20 FE23
-10A01 10A03
-10A05 10A06
-10A0C 10A0F
-10A38 10A3A
-10A3F
-1D167 1D169
-1D17B 1D182
-1D185 1D18B
-1D1AA 1D1AD
-1D242 1D244
-E0100 E01EF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/bc/ON.pl b/Master/tlpkg/tlperl/lib/unicore/lib/bc/ON.pl
deleted file mode 100644
index 7d51dcbdd50..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/bc/ON.pl
+++ /dev/null
@@ -1,150 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# BidiClass category 'Other_Neutral'
-#
-return <<'END';
-0021 0022
-0026 002A
-003B 0040
-005B 0060
-007B 007E
-00A1
-00A6 00A9
-00AB 00AC
-00AE 00AF
-00B4
-00B6 00B8
-00BB 00BF
-00D7
-00F7
-02B9 02BA
-02C2 02CF
-02D2 02DF
-02E5 02ED
-02EF 02FF
-0374 0375
-037E
-0384 0385
-0387
-03F6
-058A
-060E 060F
-06E9
-0BF3 0BF8
-0BFA
-0F3A 0F3D
-1390 1399
-169B 169C
-17F0 17F9
-1800 180A
-1940
-1944 1945
-19DE 19FF
-1FBD
-1FBF 1FC1
-1FCD 1FCF
-1FDD 1FDF
-1FED 1FEF
-1FFD 1FFE
-2010 2027
-2035 2043
-2045 205E
-207C 207E
-208C 208E
-2100 2101
-2103 2106
-2108 2109
-2114
-2116 2118
-211E 2123
-2125
-2127
-2129
-2132
-213A 213B
-2140 2144
-214A 214C
-2153 215F
-2190 2211
-2214 2335
-237B 2394
-2396 23DB
-2400 2426
-2440 244A
-2460 2487
-24EA 269C
-26A0 26AB
-26AD 26B1
-2701 2704
-2706 2709
-270C 2727
-2729 274B
-274D
-274F 2752
-2756
-2758 275E
-2761 2794
-2798 27AF
-27B1 27BE
-27C0 27C6
-27D0 27EB
-27F0 27FF
-2900 2B13
-2CE5 2CEA
-2CF9 2CFF
-2E00 2E17
-2E1C 2E1D
-2E80 2E99
-2E9B 2EF3
-2F00 2FD5
-2FF0 2FFB
-3001 3004
-3008 3020
-3030
-3036 3037
-303D 303F
-309B 309C
-30A0
-30FB
-31C0 31CF
-321D 321E
-3250 325F
-327C 327E
-32B1 32BF
-32CC 32CF
-3377 337A
-33DE 33DF
-33FF
-4DC0 4DFF
-A490 A4C6
-A700 A716
-A828 A82B
-FD3E FD3F
-FDFD
-FE10 FE19
-FE30 FE4F
-FE51
-FE54
-FE56 FE5E
-FE60 FE61
-FE64 FE66
-FE68
-FE6B
-FF01 FF02
-FF06 FF0A
-FF1B FF20
-FF3B FF40
-FF5B FF65
-FFE2 FFE4
-FFE8 FFEE
-FFF9 FFFD
-10101
-10140 1018A
-103D1 103D5
-1D200 1D241
-1D245
-1D300 1D356
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/bc/PDF.pl b/Master/tlpkg/tlperl/lib/unicore/lib/bc/PDF.pl
deleted file mode 100644
index 6cbfb1f8d1b..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/bc/PDF.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# BidiClass category 'Pop_Directional_Format'
-#
-return <<'END';
-202C
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/bc/R.pl b/Master/tlpkg/tlperl/lib/unicore/lib/bc/R.pl
deleted file mode 100644
index 65ba799e3bb..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/bc/R.pl
+++ /dev/null
@@ -1,36 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# BidiClass category 'Right_To_Left'
-#
-return <<'END';
-05BE
-05C0
-05C3
-05C6
-05D0 05EA
-05F0 05F4
-200F
-FB1D
-FB1F FB28
-FB2A FB36
-FB38 FB3C
-FB3E
-FB40 FB41
-FB43 FB44
-FB46 FB4F
-10800 10805
-10808
-1080A 10835
-10837 10838
-1083C
-1083F
-10A00
-10A10 10A13
-10A15 10A17
-10A19 10A33
-10A40 10A47
-10A50 10A58
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/bc/RLE.pl b/Master/tlpkg/tlperl/lib/unicore/lib/bc/RLE.pl
deleted file mode 100644
index 851f1fd3513..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/bc/RLE.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# BidiClass category 'Right_To_Left_Embedding'
-#
-return <<'END';
-202B
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/bc/RLO.pl b/Master/tlpkg/tlperl/lib/unicore/lib/bc/RLO.pl
deleted file mode 100644
index 565941526ff..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/bc/RLO.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# BidiClass category 'Right_To_Left_Override'
-#
-return <<'END';
-202E
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/bc/S.pl b/Master/tlpkg/tlperl/lib/unicore/lib/bc/S.pl
deleted file mode 100644
index ac494648f0f..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/bc/S.pl
+++ /dev/null
@@ -1,12 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# BidiClass category 'Segment_Separator'
-#
-return <<'END';
-0009
-000B
-001F
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/bc/WS.pl b/Master/tlpkg/tlperl/lib/unicore/lib/bc/WS.pl
deleted file mode 100644
index 98f3a5ea3fb..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/bc/WS.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# BidiClass category 'White_Space'
-#
-return <<'END';
-000C
-0020
-1680
-180E
-2000 200A
-2028
-205F
-3000
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/A.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ccc/A.pl
deleted file mode 100644
index 0a094e60306..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/A.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# CombiningClass category 'Above'
-#
-return <<'END';
-00E6
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/AL.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ccc/AL.pl
deleted file mode 100644
index 9d820799c98..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/AL.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# CombiningClass category 'Above_Left'
-#
-return <<'END';
-00E4
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/AR.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ccc/AR.pl
deleted file mode 100644
index c0f80d057b0..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/AR.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# CombiningClass category 'Above_Right'
-#
-return <<'END';
-00E8
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/ATAR.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ccc/ATAR.pl
deleted file mode 100644
index e5af6df6d8e..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/ATAR.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# CombiningClass category 'Attached_Above_Right'
-#
-return <<'END';
-00D8
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/ATB.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ccc/ATB.pl
deleted file mode 100644
index 186ef05559a..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/ATB.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# CombiningClass category 'Attached_Below'
-#
-return <<'END';
-00CA
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/ATBL.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ccc/ATBL.pl
deleted file mode 100644
index c67cd441643..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/ATBL.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# CombiningClass category 'Attached_Below_Left'
-#
-return <<'END';
-00C8
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/B.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ccc/B.pl
deleted file mode 100644
index 33ed0f6c825..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/B.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# CombiningClass category 'Below'
-#
-return <<'END';
-00DC
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/BL.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ccc/BL.pl
deleted file mode 100644
index 6f3377bbdfa..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/BL.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# CombiningClass category 'Below_Left'
-#
-return <<'END';
-00DA
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/BR.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ccc/BR.pl
deleted file mode 100644
index c836d184506..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/BR.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# CombiningClass category 'Below_Right'
-#
-return <<'END';
-00DE
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/DA.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ccc/DA.pl
deleted file mode 100644
index 8fd33b2e57e..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/DA.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# CombiningClass category 'Double_Above'
-#
-return <<'END';
-00EA
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/DB.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ccc/DB.pl
deleted file mode 100644
index a151b8bf94c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/DB.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# CombiningClass category 'Double_Below'
-#
-return <<'END';
-00E9
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/IS.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ccc/IS.pl
deleted file mode 100644
index 5d0573a5ee3..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/IS.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# CombiningClass category 'Iota_Subscript'
-#
-return <<'END';
-00F0
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/KV.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ccc/KV.pl
deleted file mode 100644
index b3a98646ca4..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/KV.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# CombiningClass category 'Kana_Voicing'
-#
-return <<'END';
-0008
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/L.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ccc/L.pl
deleted file mode 100644
index 587a1c4d9c2..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/L.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# CombiningClass category 'Left'
-#
-return <<'END';
-00E0
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/NK.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ccc/NK.pl
deleted file mode 100644
index ff831830fe2..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/NK.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# CombiningClass category 'Nukta'
-#
-return <<'END';
-0007
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/NR.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ccc/NR.pl
deleted file mode 100644
index d6bf5574952..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/NR.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# CombiningClass category 'Not_Reordered'
-#
-return <<'END';
-0000
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/OV.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ccc/OV.pl
deleted file mode 100644
index 1ebefafb28f..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/OV.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# CombiningClass category 'Overlay'
-#
-return <<'END';
-0001
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/R.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ccc/R.pl
deleted file mode 100644
index 4046b71875d..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/R.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# CombiningClass category 'Right'
-#
-return <<'END';
-00E2
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/VR.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ccc/VR.pl
deleted file mode 100644
index 482ff128797..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ccc/VR.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# CombiningClass category 'Virama'
-#
-return <<'END';
-0009
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/dt/can.pl b/Master/tlpkg/tlperl/lib/unicore/lib/dt/can.pl
deleted file mode 100644
index 08ddf367ee4..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/dt/can.pl
+++ /dev/null
@@ -1,222 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# DecompositionType category 'Canonical'
-#
-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
-2ADC
-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
-FA30 FA6A
-FA70 FAD9
-FB1D
-FB1F
-FB2A FB36
-FB38 FB3C
-FB3E
-FB40 FB41
-FB43 FB44
-FB46 FB4E
-1D15E 1D164
-1D1BB 1D1C0
-2F800 2FA1D
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/dt/com.pl b/Master/tlpkg/tlperl/lib/unicore/lib/dt/com.pl
deleted file mode 100644
index 973c63cfdad..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/dt/com.pl
+++ /dev/null
@@ -1,820 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# DecompositionType category 'Compat'
-#
-return <<'END';
-00A0
-00A8
-00A8
-00AA
-00AF
-00AF
-00B2 00B4
-00B4 00B5
-00B5
-00B8
-00B8 00BA
-00BC 00BE
-0132
-0132 0133
-0133
-013F
-013F 0140
-0140
-0149
-0149
-017F
-017F
-01C4
-01C4 01C5
-01C5 01C6
-01C6 01C7
-01C7 01C8
-01C8 01C9
-01C9 01CA
-01CA 01CB
-01CB 01CC
-01CC
-01F1
-01F1 01F2
-01F2 01F3
-01F3
-02B0 02B8
-02D8
-02D8 02D9
-02D9 02DA
-02DA 02DB
-02DB 02DC
-02DC 02DD
-02DD
-02E0 02E4
-037A
-037A
-0384
-0384
-03D0
-03D0 03D1
-03D1 03D2
-03D2
-03D5
-03D5 03D6
-03D6
-03F0
-03F0 03F1
-03F1 03F2
-03F2
-03F4
-03F4 03F5
-03F5
-03F9
-03F9
-0587
-0587
-0675
-0675 0676
-0676 0677
-0677 0678
-0678
-0E33
-0E33
-0EB3
-0EB3
-0EDC
-0EDC 0EDD
-0EDD
-0F0C
-0F77
-0F77
-0F79
-0F79
-10FC
-1D2C 1D2E
-1D30 1D3A
-1D3C 1D4D
-1D4F 1D6A
-1D78
-1D9B 1DBF
-1E9A
-1E9A
-1FBD
-1FBD
-1FBF
-1FBF 1FC0
-1FC0
-1FFE
-1FFE
-2002
-2002 2003
-2003 2004
-2004 2005
-2005 2006
-2006 2008
-2008 2009
-2009 200A
-200A
-2011
-2017
-2017
-2024
-2024 2025
-2025 2026
-2026
-202F
-2033
-2033 2034
-2034
-2036
-2036 2037
-2037
-203C
-203C
-203E
-203E
-2047
-2047 2048
-2048 2049
-2049
-2057
-2057
-205F
-205F
-2070 2071
-2074 208E
-2090 2094
-20A8
-20A8
-2100
-2100 2101
-2101 2103
-2103
-2105
-2105 2106
-2106 2107
-2107
-2109
-2109 2113
-2115 2116
-2116
-2119 211D
-2120 2121
-2121 2122
-2124
-2128
-212C 212D
-212F 2131
-2133 2135
-2135 2136
-2136 2137
-2137 2138
-2138 2139
-213B
-213B 2140
-2145 2149
-2153 2160
-2160 2161
-2161 2162
-2162 2163
-2163 2164
-2164 2165
-2165 2166
-2166 2167
-2167 2168
-2168 2169
-2169 216A
-216A 216B
-216B 216C
-216C 216D
-216D 216E
-216E 216F
-216F 2170
-2170 2171
-2171 2172
-2172 2173
-2173 2174
-2174 2175
-2175 2176
-2176 2177
-2177 2178
-2178 2179
-2179 217A
-217A 217B
-217B 217C
-217C 217D
-217D 217E
-217E 217F
-217F
-222C
-222C 222D
-222D
-222F
-222F 2230
-2230
-2460 2474
-2474 2475
-2475 2476
-2476 2477
-2477 2478
-2478 2479
-2479 247A
-247A 247B
-247B 247C
-247C 247D
-247D 247E
-247E 247F
-247F 2480
-2480 2481
-2481 2482
-2482 2483
-2483 2484
-2484 2485
-2485 2486
-2486 2487
-2487 2488
-2488 2489
-2489 248A
-248A 248B
-248B 248C
-248C 248D
-248D 248E
-248E 248F
-248F 2490
-2490 2491
-2491 2492
-2492 2493
-2493 2494
-2494 2495
-2495 2496
-2496 2497
-2497 2498
-2498 2499
-2499 249A
-249A 249B
-249B 249C
-249C 249D
-249D 249E
-249E 249F
-249F 24A0
-24A0 24A1
-24A1 24A2
-24A2 24A3
-24A3 24A4
-24A4 24A5
-24A5 24A6
-24A6 24A7
-24A7 24A8
-24A8 24A9
-24A9 24AA
-24AA 24AB
-24AB 24AC
-24AC 24AD
-24AD 24AE
-24AE 24AF
-24AF 24B0
-24B0 24B1
-24B1 24B2
-24B2 24B3
-24B3 24B4
-24B4 24B5
-24B5 24EA
-2A0C
-2A0C
-2A74
-2A74 2A75
-2A75 2A76
-2A76
-2D6F
-2E9F
-2E9F
-2EF3
-2EF3
-2F00
-2F00 2F01
-2F01 2F02
-2F02 2F03
-2F03 2F04
-2F04 2F05
-2F05 2F06
-2F06 2F07
-2F07 2F08
-2F08 2F09
-2F09 2F0A
-2F0A 2F0B
-2F0B 2F0C
-2F0C 2F0D
-2F0D 2F0E
-2F0E 2F0F
-2F0F 2F10
-2F10 2F11
-2F11 2F12
-2F12 2F13
-2F13 2F14
-2F14 2F15
-2F15 2F16
-2F16 2F17
-2F17 2F18
-2F18 2F19
-2F19 2F1A
-2F1A 2F1B
-2F1B 2F1C
-2F1C 2F1D
-2F1D 2F1E
-2F1E 2F1F
-2F1F 2F20
-2F20 2F21
-2F21 2F22
-2F22 2F23
-2F23 2F24
-2F24 2F25
-2F25 2F26
-2F26 2F27
-2F27 2F28
-2F28 2F29
-2F29 2F2A
-2F2A 2F2B
-2F2B 2F2C
-2F2C 2F2D
-2F2D 2F2E
-2F2E 2F2F
-2F2F 2F30
-2F30 2F31
-2F31 2F32
-2F32 2F33
-2F33 2F34
-2F34 2F35
-2F35 2F36
-2F36 2F37
-2F37 2F38
-2F38 2F39
-2F39 2F3A
-2F3A 2F3B
-2F3B 2F3C
-2F3C 2F3D
-2F3D 2F3E
-2F3E 2F3F
-2F3F 2F40
-2F40 2F41
-2F41 2F42
-2F42 2F43
-2F43 2F44
-2F44 2F45
-2F45 2F46
-2F46 2F47
-2F47 2F48
-2F48 2F49
-2F49 2F4A
-2F4A 2F4B
-2F4B 2F4C
-2F4C 2F4D
-2F4D 2F4E
-2F4E 2F4F
-2F4F 2F50
-2F50 2F51
-2F51 2F52
-2F52 2F53
-2F53 2F54
-2F54 2F55
-2F55 2F56
-2F56 2F57
-2F57 2F58
-2F58 2F59
-2F59 2F5A
-2F5A 2F5B
-2F5B 2F5C
-2F5C 2F5D
-2F5D 2F5E
-2F5E 2F5F
-2F5F 2F60
-2F60 2F61
-2F61 2F62
-2F62 2F63
-2F63 2F64
-2F64 2F65
-2F65 2F66
-2F66 2F67
-2F67 2F68
-2F68 2F69
-2F69 2F6A
-2F6A 2F6B
-2F6B 2F6C
-2F6C 2F6D
-2F6D 2F6E
-2F6E 2F6F
-2F6F 2F70
-2F70 2F71
-2F71 2F72
-2F72 2F73
-2F73 2F74
-2F74 2F75
-2F75 2F76
-2F76 2F77
-2F77 2F78
-2F78 2F79
-2F79 2F7A
-2F7A 2F7B
-2F7B 2F7C
-2F7C 2F7D
-2F7D 2F7E
-2F7E 2F7F
-2F7F 2F80
-2F80 2F81
-2F81 2F82
-2F82 2F83
-2F83 2F84
-2F84 2F85
-2F85 2F86
-2F86 2F87
-2F87 2F88
-2F88 2F89
-2F89 2F8A
-2F8A 2F8B
-2F8B 2F8C
-2F8C 2F8D
-2F8D 2F8E
-2F8E 2F8F
-2F8F 2F90
-2F90 2F91
-2F91 2F92
-2F92 2F93
-2F93 2F94
-2F94 2F95
-2F95 2F96
-2F96 2F97
-2F97 2F98
-2F98 2F99
-2F99 2F9A
-2F9A 2F9B
-2F9B 2F9C
-2F9C 2F9D
-2F9D 2F9E
-2F9E 2F9F
-2F9F 2FA0
-2FA0 2FA1
-2FA1 2FA2
-2FA2 2FA3
-2FA3 2FA4
-2FA4 2FA5
-2FA5 2FA6
-2FA6 2FA7
-2FA7 2FA8
-2FA8 2FA9
-2FA9 2FAA
-2FAA 2FAB
-2FAB 2FAC
-2FAC 2FAD
-2FAD 2FAE
-2FAE 2FAF
-2FAF 2FB0
-2FB0 2FB1
-2FB1 2FB2
-2FB2 2FB3
-2FB3 2FB4
-2FB4 2FB5
-2FB5 2FB6
-2FB6 2FB7
-2FB7 2FB8
-2FB8 2FB9
-2FB9 2FBA
-2FBA 2FBB
-2FBB 2FBC
-2FBC 2FBD
-2FBD 2FBE
-2FBE 2FBF
-2FBF 2FC0
-2FC0 2FC1
-2FC1 2FC2
-2FC2 2FC3
-2FC3 2FC4
-2FC4 2FC5
-2FC5 2FC6
-2FC6 2FC7
-2FC7 2FC8
-2FC8 2FC9
-2FC9 2FCA
-2FCA 2FCB
-2FCB 2FCC
-2FCC 2FCD
-2FCD 2FCE
-2FCE 2FCF
-2FCF 2FD0
-2FD0 2FD1
-2FD1 2FD2
-2FD2 2FD3
-2FD3 2FD4
-2FD4 2FD5
-2FD5
-3000
-3036
-3036
-3038
-3038 3039
-3039 303A
-303A
-309B
-309B 309C
-309C
-309F
-30FF
-3131
-3131 3132
-3132 3133
-3133 3134
-3134 3135
-3135 3136
-3136 3137
-3137 3138
-3138 3139
-3139 313A
-313A 313B
-313B 313C
-313C 313D
-313D 313E
-313E 313F
-313F 3140
-3140 3141
-3141 3142
-3142 3143
-3143 3144
-3144 3145
-3145 3146
-3146 3147
-3147 3148
-3148 3149
-3149 314A
-314A 314B
-314B 314C
-314C 314D
-314D 314E
-314E 314F
-314F 3150
-3150 3151
-3151 3152
-3152 3153
-3153 3154
-3154 3155
-3155 3156
-3156 3157
-3157 3158
-3158 3159
-3159 315A
-315A 315B
-315B 315C
-315C 315D
-315D 315E
-315E 315F
-315F 3160
-3160 3161
-3161 3162
-3162 3163
-3163 3164
-3164 3165
-3165 3166
-3166 3167
-3167 3168
-3168 3169
-3169 316A
-316A 316B
-316B 316C
-316C 316D
-316D 316E
-316E 316F
-316F 3170
-3170 3171
-3171 3172
-3172 3173
-3173 3174
-3174 3175
-3175 3176
-3176 3177
-3177 3178
-3178 3179
-3179 317A
-317A 317B
-317B 317C
-317C 317D
-317D 317E
-317E 317F
-317F 3180
-3180 3181
-3181 3182
-3182 3183
-3183 3184
-3184 3185
-3185 3186
-3186 3187
-3187 3188
-3188 3189
-3189 318A
-318A 318B
-318B 318C
-318C 318D
-318D 318E
-318E
-3192 319F
-3200
-3200 3201
-3201 3202
-3202 3203
-3203 3204
-3204 3205
-3205 3206
-3206 3207
-3207 3208
-3208 3209
-3209 320A
-320A 320B
-320B 320C
-320C 320D
-320D 320E
-320E 320F
-320F 3210
-3210 3211
-3211 3212
-3212 3213
-3213 3214
-3214 3215
-3215 3216
-3216 3217
-3217 3218
-3218 3219
-3219 321A
-321A 321B
-321B 321C
-321C 321D
-321D 321E
-321E
-3220
-3220 3221
-3221 3222
-3222 3223
-3223 3224
-3224 3225
-3225 3226
-3226 3227
-3227 3228
-3228 3229
-3229 322A
-322A 322B
-322B 322C
-322C 322D
-322D 322E
-322E 322F
-322F 3230
-3230 3231
-3231 3232
-3232 3233
-3233 3234
-3234 3235
-3235 3236
-3236 3237
-3237 3238
-3238 3239
-3239 323A
-323A 323B
-323B 323C
-323C 323D
-323D 323E
-323E 323F
-323F 3240
-3240 3241
-3241 3242
-3242 3243
-3243
-3250 327E
-3280 32C0
-32C0 32C1
-32C1 32C2
-32C2 32C3
-32C3 32C4
-32C4 32C5
-32C5 32C6
-32C6 32C7
-32C7 32C8
-32C8 32C9
-32C9 32CA
-32CA 32CB
-32CB 32FE
-3300 3358
-3358 3359
-3359 335A
-335A 335B
-335B 335C
-335C 335D
-335D 335E
-335E 335F
-335F 3360
-3360 3361
-3361 3362
-3362 3363
-3363 3364
-3364 3365
-3365 3366
-3366 3367
-3367 3368
-3368 3369
-3369 336A
-336A 336B
-336B 336C
-336C 336D
-336D 336E
-336E 336F
-336F 3370
-3370 33E0
-33E0 33E1
-33E1 33E2
-33E2 33E3
-33E3 33E4
-33E4 33E5
-33E5 33E6
-33E6 33E7
-33E7 33E8
-33E8 33E9
-33E9 33EA
-33EA 33EB
-33EB 33EC
-33EC 33ED
-33ED 33EE
-33EE 33EF
-33EF 33F0
-33F0 33F1
-33F1 33F2
-33F2 33F3
-33F3 33F4
-33F4 33F5
-33F5 33F6
-33F6 33F7
-33F7 33F8
-33F8 33F9
-33F9 33FA
-33FA 33FB
-33FB 33FC
-33FC 33FD
-33FD 33FE
-33FE 33FF
-FB00
-FB00 FB01
-FB01 FB02
-FB02 FB03
-FB03 FB04
-FB04 FB05
-FB05 FB06
-FB06
-FB13
-FB13 FB14
-FB14 FB15
-FB15 FB16
-FB16 FB17
-FB17
-FB20 FB29
-FB4F
-FB4F FBB1
-FBD3 FD3D
-FD50 FD8F
-FD92 FDC7
-FDF0 FDFC
-FE10 FE19
-FE30 FE44
-FE47 FE49
-FE49 FE4A
-FE4A FE4B
-FE4B FE4C
-FE4C FE4D
-FE4D FE4E
-FE4E FE4F
-FE4F FE52
-FE54 FE66
-FE68 FE6B
-FE70 FE72
-FE74
-FE76 FEFC
-FF01 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-FFE0 FFE6
-FFE8 FFEE
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A5
-1D6A8 1D7C9
-1D7CE 1D7FF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/dt/enc.pl b/Master/tlpkg/tlperl/lib/unicore/lib/dt/enc.pl
deleted file mode 100644
index e5cb3a29692..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/dt/enc.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# DecompositionType category 'Circle'
-#
-return <<'END';
-2460 2473
-24B6 24EA
-3251 327E
-3280 32BF
-32D0 32FE
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/dt/fin.pl b/Master/tlpkg/tlperl/lib/unicore/lib/dt/fin.pl
deleted file mode 100644
index 904383302ff..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/dt/fin.pl
+++ /dev/null
@@ -1,122 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# DecompositionType category 'Final'
-#
-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/Master/tlpkg/tlperl/lib/unicore/lib/dt/font.pl b/Master/tlpkg/tlperl/lib/unicore/lib/dt/font.pl
deleted file mode 100644
index 849112dbd4d..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/dt/font.pl
+++ /dev/null
@@ -1,43 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# DecompositionType category 'Font'
-#
-return <<'END';
-2102
-210A 2113
-2115
-2119 211D
-2124
-2128
-212C 212D
-212F 2131
-2133 2134
-2139
-213C 2140
-2145 2149
-FB20 FB29
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A5
-1D6A8 1D7C9
-1D7CE 1D7FF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/dt/fra.pl b/Master/tlpkg/tlperl/lib/unicore/lib/dt/fra.pl
deleted file mode 100644
index 94db2d36735..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/dt/fra.pl
+++ /dev/null
@@ -1,11 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# DecompositionType category 'Fraction'
-#
-return <<'END';
-00BC 00BE
-2153 215F
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/dt/init.pl b/Master/tlpkg/tlperl/lib/unicore/lib/dt/init.pl
deleted file mode 100644
index 7fd35d29ae5..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/dt/init.pl
+++ /dev/null
@@ -1,84 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# DecompositionType category 'Initial'
-#
-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/Master/tlpkg/tlperl/lib/unicore/lib/dt/iso.pl b/Master/tlpkg/tlperl/lib/unicore/lib/dt/iso.pl
deleted file mode 100644
index 1c39772d1a4..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/dt/iso.pl
+++ /dev/null
@@ -1,107 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# DecompositionType category 'Isolated'
-#
-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 FDFC
-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/Master/tlpkg/tlperl/lib/unicore/lib/dt/med.pl b/Master/tlpkg/tlperl/lib/unicore/lib/dt/med.pl
deleted file mode 100644
index 88ae9102947..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/dt/med.pl
+++ /dev/null
@@ -1,63 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# DecompositionType category 'Medial'
-#
-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/Master/tlpkg/tlperl/lib/unicore/lib/dt/nar.pl b/Master/tlpkg/tlperl/lib/unicore/lib/dt/nar.pl
deleted file mode 100644
index 03d169a7250..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/dt/nar.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# DecompositionType category 'Narrow'
-#
-return <<'END';
-FF61 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-FFE8 FFEE
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/dt/nb.pl b/Master/tlpkg/tlperl/lib/unicore/lib/dt/nb.pl
deleted file mode 100644
index bdf1ac40251..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/dt/nb.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# DecompositionType category 'Nobreak'
-#
-return <<'END';
-00A0
-0F0C
-2007
-2011
-202F
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/dt/sml.pl b/Master/tlpkg/tlperl/lib/unicore/lib/dt/sml.pl
deleted file mode 100644
index ca6b15f36f8..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/dt/sml.pl
+++ /dev/null
@@ -1,12 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# DecompositionType category 'Small'
-#
-return <<'END';
-FE50 FE52
-FE54 FE66
-FE68 FE6B
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/dt/sqr.pl b/Master/tlpkg/tlperl/lib/unicore/lib/dt/sqr.pl
deleted file mode 100644
index 604d8978744..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/dt/sqr.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# DecompositionType category 'Square'
-#
-return <<'END';
-3250
-32CC 32CF
-3300 3357
-3371 33DF
-33FF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/dt/sub.pl b/Master/tlpkg/tlperl/lib/unicore/lib/dt/sub.pl
deleted file mode 100644
index c5eee14337c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/dt/sub.pl
+++ /dev/null
@@ -1,12 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# DecompositionType category 'Sub'
-#
-return <<'END';
-1D62 1D6A
-2080 208E
-2090 2094
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/dt/sup.pl b/Master/tlpkg/tlperl/lib/unicore/lib/dt/sup.pl
deleted file mode 100644
index ae522e76b37..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/dt/sup.pl
+++ /dev/null
@@ -1,27 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# DecompositionType category 'Super'
-#
-return <<'END';
-00AA
-00B2 00B3
-00B9 00BA
-02B0 02B8
-02E0 02E4
-10FC
-1D2C 1D2E
-1D30 1D3A
-1D3C 1D4D
-1D4F 1D61
-1D78
-1D9B 1DBF
-2070 2071
-2074 207F
-2120
-2122
-2D6F
-3192 319F
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/dt/vert.pl b/Master/tlpkg/tlperl/lib/unicore/lib/dt/vert.pl
deleted file mode 100644
index 6edf400e8e1..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/dt/vert.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# DecompositionType category 'Vertical'
-#
-return <<'END';
-309F
-30FF
-FE10 FE19
-FE30 FE44
-FE47 FE48
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/dt/wide.pl b/Master/tlpkg/tlperl/lib/unicore/lib/dt/wide.pl
deleted file mode 100644
index 99ef5131f17..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/dt/wide.pl
+++ /dev/null
@@ -1,12 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# DecompositionType category 'Wide'
-#
-return <<'END';
-3000
-FF01 FF60
-FFE0 FFE6
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ea/A.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ea/A.pl
deleted file mode 100644
index 4a0cbd04120..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ea/A.pl
+++ /dev/null
@@ -1,168 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# EastAsianWidth category 'Ambiguous'
-#
-return <<'END';
-00A1
-00A4
-00A7 00A8
-00AA
-00AD 00AE
-00B0 00B4
-00B6 00BA
-00BC 00BF
-00C6
-00D0
-00D7 00D8
-00DE 00E1
-00E6
-00E8 00EA
-00EC 00ED
-00F0
-00F2 00F3
-00F7 00FA
-00FC
-00FE
-0101
-0111
-0113
-011B
-0126 0127
-012B
-0131 0133
-0138
-013F 0142
-0144
-0148 014B
-014D
-0152 0153
-0166 0167
-016B
-01CE
-01D0
-01D2
-01D4
-01D6
-01D8
-01DA
-01DC
-0251
-0261
-02C4
-02C7
-02C9 02CB
-02CD
-02D0
-02D8 02DB
-02DD
-02DF
-0300 036F
-0391 03A1
-03A3 03A9
-03B1 03C1
-03C3 03C9
-0401
-0410 044F
-0451
-2010
-2013 2016
-2018 2019
-201C 201D
-2020 2022
-2024 2027
-2030
-2032 2033
-2035
-203B
-203E
-2074
-207F
-2081 2084
-20AC
-2103
-2105
-2109
-2113
-2116
-2121 2122
-2126
-212B
-2153 2154
-215B 215E
-2160 216B
-2170 2179
-2190 2199
-21B8 21B9
-21D2
-21D4
-21E7
-2200
-2202 2203
-2207 2208
-220B
-220F
-2211
-2215
-221A
-221D 2220
-2223
-2225
-2227 222C
-222E
-2234 2237
-223C 223D
-2248
-224C
-2252
-2260 2261
-2264 2267
-226A 226B
-226E 226F
-2282 2283
-2286 2287
-2295
-2299
-22A5
-22BF
-2312
-2460 24E9
-24EB 254B
-2550 2573
-2580 258F
-2592 2595
-25A0 25A1
-25A3 25A9
-25B2 25B3
-25B6 25B7
-25BC 25BD
-25C0 25C1
-25C6 25C8
-25CB
-25CE 25D1
-25E2 25E5
-25EF
-2605 2606
-2609
-260E 260F
-2614 2615
-261C
-261E
-2640
-2642
-2660 2661
-2663 2665
-2667 266A
-266C 266D
-266F
-273D
-2776 277F
-E000 F8FF
-FE00 FE0F
-FFFD
-E0100 E01EF
-F0000 FFFFD
-100000 10FFFD
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ea/F.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ea/F.pl
deleted file mode 100644
index 593b4680ec2..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ea/F.pl
+++ /dev/null
@@ -1,12 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# EastAsianWidth category 'Fullwidth'
-#
-return <<'END';
-3000
-FF01 FF60
-FFE0 FFE6
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ea/H.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ea/H.pl
deleted file mode 100644
index ad6e3280b78..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ea/H.pl
+++ /dev/null
@@ -1,16 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# EastAsianWidth category 'Halfwidth'
-#
-return <<'END';
-20A9
-FF61 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-FFE8 FFEE
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ea/N.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ea/N.pl
deleted file mode 100644
index fc34014ca7a..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ea/N.pl
+++ /dev/null
@@ -1,540 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# EastAsianWidth category 'Neutral'
-#
-return <<'END';
-0000 001F
-007F 00A0
-00A9
-00AB
-00B5
-00BB
-00C0 00C5
-00C7 00CF
-00D1 00D6
-00D9 00DD
-00E2 00E5
-00E7
-00EB
-00EE 00EF
-00F1
-00F4 00F6
-00FB
-00FD
-00FF 0100
-0102 0110
-0112
-0114 011A
-011C 0125
-0128 012A
-012C 0130
-0134 0137
-0139 013E
-0143
-0145 0147
-014C
-014E 0151
-0154 0165
-0168 016A
-016C 01CD
-01CF
-01D1
-01D3
-01D5
-01D7
-01D9
-01DB
-01DD 0241
-0250
-0252 0260
-0262 02C3
-02C5 02C6
-02C8
-02CC
-02CE 02CF
-02D1 02D7
-02DC
-02DE
-02E0 02FF
-0374 0375
-037A
-037E
-0384 038A
-038C
-038E 0390
-03AA 03B0
-03C2
-03CA 03CE
-03D0 0400
-0402 040F
-0450
-0452 0486
-0488 04CE
-04D0 04F9
-0500 050F
-0531 0556
-0559 055F
-0561 0587
-0589 058A
-0591 05B9
-05BB 05C7
-05D0 05EA
-05F0 05F4
-0600 0603
-060B 0615
-061B
-061E 061F
-0621 063A
-0640 065E
-0660 070D
-070F 074A
-074D 076D
-0780 07B1
-0901 0939
-093C 094D
-0950 0954
-0958 0970
-097D
-0981 0983
-0985 098C
-098F 0990
-0993 09A8
-09AA 09B0
-09B2
-09B6 09B9
-09BC 09C4
-09C7 09C8
-09CB 09CE
-09D7
-09DC 09DD
-09DF 09E3
-09E6 09FA
-0A01 0A03
-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 0A8D
-0A8F 0A91
-0A93 0AA8
-0AAA 0AB0
-0AB2 0AB3
-0AB5 0AB9
-0ABC 0AC5
-0AC7 0AC9
-0ACB 0ACD
-0AD0
-0AE0 0AE3
-0AE6 0AEF
-0AF1
-0B01 0B03
-0B05 0B0C
-0B0F 0B10
-0B13 0B28
-0B2A 0B30
-0B32 0B33
-0B35 0B39
-0B3C 0B43
-0B47 0B48
-0B4B 0B4D
-0B56 0B57
-0B5C 0B5D
-0B5F 0B61
-0B66 0B71
-0B82 0B83
-0B85 0B8A
-0B8E 0B90
-0B92 0B95
-0B99 0B9A
-0B9C
-0B9E 0B9F
-0BA3 0BA4
-0BA8 0BAA
-0BAE 0BB9
-0BBE 0BC2
-0BC6 0BC8
-0BCA 0BCD
-0BD7
-0BE6 0BFA
-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
-0CBC 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 0FD1
-1000 1021
-1023 1027
-1029 102A
-102C 1032
-1036 1039
-1040 1059
-10A0 10C5
-10D0 10FC
-1160 11A2
-11A8 11F9
-1200 1248
-124A 124D
-1250 1256
-1258
-125A 125D
-1260 1288
-128A 128D
-1290 12B0
-12B2 12B5
-12B8 12BE
-12C0
-12C2 12C5
-12C8 12D6
-12D8 1310
-1312 1315
-1318 135A
-135F 137C
-1380 1399
-13A0 13F4
-1401 1676
-1680 169C
-16A0 16F0
-1700 170C
-170E 1714
-1720 1736
-1740 1753
-1760 176C
-176E 1770
-1772 1773
-1780 17DD
-17E0 17E9
-17F0 17F9
-1800 180E
-1810 1819
-1820 1877
-1880 18A9
-1900 191C
-1920 192B
-1930 193B
-1940
-1944 196D
-1970 1974
-1980 19A9
-19B0 19C9
-19D0 19D9
-19DE 1A1B
-1A1E 1A1F
-1D00 1DC3
-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 200F
-2011 2012
-2017
-201A 201B
-201E 201F
-2023
-2028 202F
-2031
-2034
-2036 203A
-203C 203D
-203F 2063
-206A 2071
-2075 207E
-2080
-2085 208E
-2090 2094
-20A0 20A8
-20AA 20AB
-20AD 20B5
-20D0 20EB
-2100 2102
-2104
-2106 2108
-210A 2112
-2114 2115
-2117 2120
-2123 2125
-2127 212A
-212C 214C
-2155 215A
-215F
-216C 216F
-217A 2183
-219A 21B7
-21BA 21D1
-21D3
-21D5 21E6
-21E8 21FF
-2201
-2204 2206
-2209 220A
-220C 220E
-2210
-2212 2214
-2216 2219
-221B 221C
-2221 2222
-2224
-2226
-222D
-222F 2233
-2238 223B
-223E 2247
-2249 224B
-224D 2251
-2253 225F
-2262 2263
-2268 2269
-226C 226D
-2270 2281
-2284 2285
-2288 2294
-2296 2298
-229A 22A4
-22A6 22BE
-22C0 2311
-2313 2328
-232B 23DB
-2400 2426
-2440 244A
-24EA
-254C 254F
-2574 257F
-2590 2591
-2596 259F
-25A2
-25AA 25B1
-25B4 25B5
-25B8 25BB
-25BE 25BF
-25C2 25C5
-25C9 25CA
-25CC 25CD
-25D2 25E1
-25E6 25EE
-25F0 2604
-2607 2608
-260A 260D
-2610 2613
-2616 261B
-261D
-261F 263F
-2641
-2643 265F
-2662
-2666
-266B
-266E
-2670 269C
-26A0 26B1
-2701 2704
-2706 2709
-270C 2727
-2729 273C
-273E 274B
-274D
-274F 2752
-2756
-2758 275E
-2761 2775
-2780 2794
-2798 27AF
-27B1 27BE
-27C0 27C6
-27D0 27E5
-27F0 2984
-2987 2B13
-2C00 2C2E
-2C30 2C5E
-2C80 2CEA
-2CF9 2D25
-2D30 2D65
-2D6F
-2D80 2D96
-2DA0 2DA6
-2DA8 2DAE
-2DB0 2DB6
-2DB8 2DBE
-2DC0 2DC6
-2DC8 2DCE
-2DD0 2DD6
-2DD8 2DDE
-2E00 2E17
-2E1C 2E1D
-303F
-4DC0 4DFF
-A700 A716
-A800 A82B
-D800 DFFF
-FB00 FB06
-FB13 FB17
-FB1D FB36
-FB38 FB3C
-FB3E
-FB40 FB41
-FB43 FB44
-FB46 FBB1
-FBD3 FD3F
-FD50 FD8F
-FD92 FDC7
-FDF0 FDFD
-FE20 FE23
-FE70 FE74
-FE76 FEFC
-FEFF
-FFF9 FFFC
-10000 1000B
-1000D 10026
-10028 1003A
-1003C 1003D
-1003F 1004D
-10050 1005D
-10080 100FA
-10100 10102
-10107 10133
-10137 1018A
-10300 1031E
-10320 10323
-10330 1034A
-10380 1039D
-1039F 103C3
-103C8 103D5
-10400 1049D
-104A0 104A9
-10800 10805
-10808
-1080A 10835
-10837 10838
-1083C
-1083F
-10A00 10A03
-10A05 10A06
-10A0C 10A13
-10A15 10A17
-10A19 10A33
-10A38 10A3A
-10A3F 10A47
-10A50 10A58
-1D000 1D0F5
-1D100 1D126
-1D12A 1D1DD
-1D200 1D245
-1D300 1D356
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A5
-1D6A8 1D7C9
-1D7CE 1D7FF
-E0001
-E0020 E007F
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ea/Na.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ea/Na.pl
deleted file mode 100644
index 3e74768687b..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ea/Na.pl
+++ /dev/null
@@ -1,16 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# EastAsianWidth category 'Narrow'
-#
-return <<'END';
-0020 007E
-00A2 00A3
-00A5 00A6
-00AC
-00AF
-27E6 27EB
-2985 2986
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ea/W.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ea/W.pl
deleted file mode 100644
index 5976941c199..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ea/W.pl
+++ /dev/null
@@ -1,40 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# EastAsianWidth category 'Wide'
-#
-return <<'END';
-1100 1159
-115F
-2329 232A
-2E80 2E99
-2E9B 2EF3
-2F00 2FD5
-2FF0 2FFB
-3001 303E
-3041 3096
-3099 30FF
-3105 312C
-3131 318E
-3190 31B7
-31C0 31CF
-31F0 321E
-3220 3243
-3250 32FE
-3300 4DB5
-4E00 9FBB
-A000 A48C
-A490 A4C6
-AC00 D7A3
-F900 FA2D
-FA30 FA6A
-FA70 FAD9
-FE10 FE19
-FE30 FE52
-FE54 FE66
-FE68 FE6B
-20000 2FFFD
-30000 3FFFD
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/AHex.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/AHex.pl
deleted file mode 100644
index 917392baafc..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/AHex.pl
+++ /dev/null
@@ -1,12 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'ASCII_Hex_Digit'
-#
-return <<'END';
-0030 0039 ASCII_Hex_Digit
-0041 0046 ASCII_Hex_Digit
-0061 0066 ASCII_Hex_Digit
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/ASCII.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/ASCII.pl
deleted file mode 100644
index dc7db1e1773..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/ASCII.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{ASCII}
-#
-# Meaning: [[:ASCII:]]
-#
-return <<'END';
-0000 007F
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Alnum.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Alnum.pl
deleted file mode 100644
index 58176b0bb58..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Alnum.pl
+++ /dev/null
@@ -1,448 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Alnum}
-#
-# Meaning: [[:Alnum:]]
-#
-return <<'END';
-0030 0039
-0041 005A
-0061 007A
-00AA
-00B5
-00BA
-00C0 00D6
-00D8 00F6
-00F8 0241
-0250 02C1
-02C6 02D1
-02E0 02E4
-02EE
-0300 036F
-037A
-0386
-0388 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 03F5
-03F7 0481
-0483 0486
-0488 04CE
-04D0 04F9
-0500 050F
-0531 0556
-0559
-0561 0587
-0591 05B9
-05BB 05BD
-05BF
-05C1 05C2
-05C4 05C5
-05C7
-05D0 05EA
-05F0 05F2
-0610 0615
-0621 063A
-0640 065E
-0660 0669
-066E 06D3
-06D5 06DC
-06DE 06E8
-06EA 06FC
-06FF
-0710 074A
-074D 076D
-0780 07B1
-0901 0939
-093C 094D
-0950 0954
-0958 0963
-0966 096F
-097D
-0981 0983
-0985 098C
-098F 0990
-0993 09A8
-09AA 09B0
-09B2
-09B6 09B9
-09BC 09C4
-09C7 09C8
-09CB 09CE
-09D7
-09DC 09DD
-09DF 09E3
-09E6 09F1
-0A01 0A03
-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 0A8D
-0A8F 0A91
-0A93 0AA8
-0AAA 0AB0
-0AB2 0AB3
-0AB5 0AB9
-0ABC 0AC5
-0AC7 0AC9
-0ACB 0ACD
-0AD0
-0AE0 0AE3
-0AE6 0AEF
-0B01 0B03
-0B05 0B0C
-0B0F 0B10
-0B13 0B28
-0B2A 0B30
-0B32 0B33
-0B35 0B39
-0B3C 0B43
-0B47 0B48
-0B4B 0B4D
-0B56 0B57
-0B5C 0B5D
-0B5F 0B61
-0B66 0B6F
-0B71
-0B82 0B83
-0B85 0B8A
-0B8E 0B90
-0B92 0B95
-0B99 0B9A
-0B9C
-0B9E 0B9F
-0BA3 0BA4
-0BA8 0BAA
-0BAE 0BB9
-0BBE 0BC2
-0BC6 0BC8
-0BCA 0BCD
-0BD7
-0BE6 0BEF
-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
-0CBC 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 0DF3
-0E01 0E3A
-0E40 0E4E
-0E50 0E59
-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
-0F18 0F19
-0F20 0F29
-0F35
-0F37
-0F39
-0F3E 0F47
-0F49 0F6A
-0F71 0F84
-0F86 0F8B
-0F90 0F97
-0F99 0FBC
-0FC6
-1000 1021
-1023 1027
-1029 102A
-102C 1032
-1036 1039
-1040 1049
-1050 1059
-10A0 10C5
-10D0 10FA
-10FC
-1100 1159
-115F 11A2
-11A8 11F9
-1200 1248
-124A 124D
-1250 1256
-1258
-125A 125D
-1260 1288
-128A 128D
-1290 12B0
-12B2 12B5
-12B8 12BE
-12C0
-12C2 12C5
-12C8 12D6
-12D8 1310
-1312 1315
-1318 135A
-135F
-1380 138F
-13A0 13F4
-1401 166C
-166F 1676
-1681 169A
-16A0 16EA
-1700 170C
-170E 1714
-1720 1734
-1740 1753
-1760 176C
-176E 1770
-1772 1773
-1780 17B3
-17B6 17D3
-17D7
-17DC 17DD
-17E0 17E9
-180B 180D
-1810 1819
-1820 1877
-1880 18A9
-1900 191C
-1920 192B
-1930 193B
-1946 196D
-1970 1974
-1980 19A9
-19B0 19C9
-19D0 19D9
-1A00 1A1B
-1D00 1DC3
-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
-2071
-207F
-2090 2094
-20D0 20EB
-2102
-2107
-210A 2113
-2115
-2119 211D
-2124
-2126
-2128
-212A 212D
-212F 2131
-2133 2139
-213C 213F
-2145 2149
-2C00 2C2E
-2C30 2C5E
-2C80 2CE4
-2D00 2D25
-2D30 2D65
-2D6F
-2D80 2D96
-2DA0 2DA6
-2DA8 2DAE
-2DB0 2DB6
-2DB8 2DBE
-2DC0 2DC6
-2DC8 2DCE
-2DD0 2DD6
-2DD8 2DDE
-3005 3006
-302A 302F
-3031 3035
-303B 303C
-3041 3096
-3099 309A
-309D 309F
-30A1 30FA
-30FC 30FF
-3105 312C
-3131 318E
-31A0 31B7
-31F0 31FF
-3400 4DB5
-4E00 9FBB
-A000 A48C
-A800 A827
-AC00 D7A3
-F900 FA2D
-FA30 FA6A
-FA70 FAD9
-FB00 FB06
-FB13 FB17
-FB1D FB28
-FB2A FB36
-FB38 FB3C
-FB3E
-FB40 FB41
-FB43 FB44
-FB46 FBB1
-FBD3 FD3D
-FD50 FD8F
-FD92 FDC7
-FDF0 FDFB
-FE00 FE0F
-FE20 FE23
-FE70 FE74
-FE76 FEFC
-FF10 FF19
-FF21 FF3A
-FF41 FF5A
-FF66 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-10000 1000B
-1000D 10026
-10028 1003A
-1003C 1003D
-1003F 1004D
-10050 1005D
-10080 100FA
-10300 1031E
-10330 10349
-10380 1039D
-103A0 103C3
-103C8 103CF
-10400 1049D
-104A0 104A9
-10800 10805
-10808
-1080A 10835
-10837 10838
-1083C
-1083F
-10A00 10A03
-10A05 10A06
-10A0C 10A13
-10A15 10A17
-10A19 10A33
-10A38 10A3A
-10A3F
-1D165 1D169
-1D16D 1D172
-1D17B 1D182
-1D185 1D18B
-1D1AA 1D1AD
-1D242 1D244
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A5
-1D6A8 1D6C0
-1D6C2 1D6DA
-1D6DC 1D6FA
-1D6FC 1D714
-1D716 1D734
-1D736 1D74E
-1D750 1D76E
-1D770 1D788
-1D78A 1D7A8
-1D7AA 1D7C2
-1D7C4 1D7C9
-1D7CE 1D7FF
-20000 2A6D6
-2F800 2FA1D
-E0100 E01EF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Alpha.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Alpha.pl
deleted file mode 100644
index 54a4bda4b05..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Alpha.pl
+++ /dev/null
@@ -1,430 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Alpha}
-#
-# Meaning: [[:Alpha:]]
-#
-return <<'END';
-0041 005A
-0061 007A
-00AA
-00B5
-00BA
-00C0 00D6
-00D8 00F6
-00F8 0241
-0250 02C1
-02C6 02D1
-02E0 02E4
-02EE
-0300 036F
-037A
-0386
-0388 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 03F5
-03F7 0481
-0483 0486
-0488 04CE
-04D0 04F9
-0500 050F
-0531 0556
-0559
-0561 0587
-0591 05B9
-05BB 05BD
-05BF
-05C1 05C2
-05C4 05C5
-05C7
-05D0 05EA
-05F0 05F2
-0610 0615
-0621 063A
-0640 065E
-066E 06D3
-06D5 06DC
-06DE 06E8
-06EA 06EF
-06FA 06FC
-06FF
-0710 074A
-074D 076D
-0780 07B1
-0901 0939
-093C 094D
-0950 0954
-0958 0963
-097D
-0981 0983
-0985 098C
-098F 0990
-0993 09A8
-09AA 09B0
-09B2
-09B6 09B9
-09BC 09C4
-09C7 09C8
-09CB 09CE
-09D7
-09DC 09DD
-09DF 09E3
-09F0 09F1
-0A01 0A03
-0A05 0A0A
-0A0F 0A10
-0A13 0A28
-0A2A 0A30
-0A32 0A33
-0A35 0A36
-0A38 0A39
-0A3C
-0A3E 0A42
-0A47 0A48
-0A4B 0A4D
-0A59 0A5C
-0A5E
-0A70 0A74
-0A81 0A83
-0A85 0A8D
-0A8F 0A91
-0A93 0AA8
-0AAA 0AB0
-0AB2 0AB3
-0AB5 0AB9
-0ABC 0AC5
-0AC7 0AC9
-0ACB 0ACD
-0AD0
-0AE0 0AE3
-0B01 0B03
-0B05 0B0C
-0B0F 0B10
-0B13 0B28
-0B2A 0B30
-0B32 0B33
-0B35 0B39
-0B3C 0B43
-0B47 0B48
-0B4B 0B4D
-0B56 0B57
-0B5C 0B5D
-0B5F 0B61
-0B71
-0B82 0B83
-0B85 0B8A
-0B8E 0B90
-0B92 0B95
-0B99 0B9A
-0B9C
-0B9E 0B9F
-0BA3 0BA4
-0BA8 0BAA
-0BAE 0BB9
-0BBE 0BC2
-0BC6 0BC8
-0BCA 0BCD
-0BD7
-0C01 0C03
-0C05 0C0C
-0C0E 0C10
-0C12 0C28
-0C2A 0C33
-0C35 0C39
-0C3E 0C44
-0C46 0C48
-0C4A 0C4D
-0C55 0C56
-0C60 0C61
-0C82 0C83
-0C85 0C8C
-0C8E 0C90
-0C92 0CA8
-0CAA 0CB3
-0CB5 0CB9
-0CBC 0CC4
-0CC6 0CC8
-0CCA 0CCD
-0CD5 0CD6
-0CDE
-0CE0 0CE1
-0D02 0D03
-0D05 0D0C
-0D0E 0D10
-0D12 0D28
-0D2A 0D39
-0D3E 0D43
-0D46 0D48
-0D4A 0D4D
-0D57
-0D60 0D61
-0D82 0D83
-0D85 0D96
-0D9A 0DB1
-0DB3 0DBB
-0DBD
-0DC0 0DC6
-0DCA
-0DCF 0DD4
-0DD6
-0DD8 0DDF
-0DF2 0DF3
-0E01 0E3A
-0E40 0E4E
-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
-0EDC 0EDD
-0F00
-0F18 0F19
-0F35
-0F37
-0F39
-0F3E 0F47
-0F49 0F6A
-0F71 0F84
-0F86 0F8B
-0F90 0F97
-0F99 0FBC
-0FC6
-1000 1021
-1023 1027
-1029 102A
-102C 1032
-1036 1039
-1050 1059
-10A0 10C5
-10D0 10FA
-10FC
-1100 1159
-115F 11A2
-11A8 11F9
-1200 1248
-124A 124D
-1250 1256
-1258
-125A 125D
-1260 1288
-128A 128D
-1290 12B0
-12B2 12B5
-12B8 12BE
-12C0
-12C2 12C5
-12C8 12D6
-12D8 1310
-1312 1315
-1318 135A
-135F
-1380 138F
-13A0 13F4
-1401 166C
-166F 1676
-1681 169A
-16A0 16EA
-1700 170C
-170E 1714
-1720 1734
-1740 1753
-1760 176C
-176E 1770
-1772 1773
-1780 17B3
-17B6 17D3
-17D7
-17DC 17DD
-180B 180D
-1820 1877
-1880 18A9
-1900 191C
-1920 192B
-1930 193B
-1950 196D
-1970 1974
-1980 19A9
-19B0 19C9
-1A00 1A1B
-1D00 1DC3
-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
-2071
-207F
-2090 2094
-20D0 20EB
-2102
-2107
-210A 2113
-2115
-2119 211D
-2124
-2126
-2128
-212A 212D
-212F 2131
-2133 2139
-213C 213F
-2145 2149
-2C00 2C2E
-2C30 2C5E
-2C80 2CE4
-2D00 2D25
-2D30 2D65
-2D6F
-2D80 2D96
-2DA0 2DA6
-2DA8 2DAE
-2DB0 2DB6
-2DB8 2DBE
-2DC0 2DC6
-2DC8 2DCE
-2DD0 2DD6
-2DD8 2DDE
-3005 3006
-302A 302F
-3031 3035
-303B 303C
-3041 3096
-3099 309A
-309D 309F
-30A1 30FA
-30FC 30FF
-3105 312C
-3131 318E
-31A0 31B7
-31F0 31FF
-3400 4DB5
-4E00 9FBB
-A000 A48C
-A800 A827
-AC00 D7A3
-F900 FA2D
-FA30 FA6A
-FA70 FAD9
-FB00 FB06
-FB13 FB17
-FB1D FB28
-FB2A FB36
-FB38 FB3C
-FB3E
-FB40 FB41
-FB43 FB44
-FB46 FBB1
-FBD3 FD3D
-FD50 FD8F
-FD92 FDC7
-FDF0 FDFB
-FE00 FE0F
-FE20 FE23
-FE70 FE74
-FE76 FEFC
-FF21 FF3A
-FF41 FF5A
-FF66 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-10000 1000B
-1000D 10026
-10028 1003A
-1003C 1003D
-1003F 1004D
-10050 1005D
-10080 100FA
-10300 1031E
-10330 10349
-10380 1039D
-103A0 103C3
-103C8 103CF
-10400 1049D
-10800 10805
-10808
-1080A 10835
-10837 10838
-1083C
-1083F
-10A00 10A03
-10A05 10A06
-10A0C 10A13
-10A15 10A17
-10A19 10A33
-10A38 10A3A
-10A3F
-1D165 1D169
-1D16D 1D172
-1D17B 1D182
-1D185 1D18B
-1D1AA 1D1AD
-1D242 1D244
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A5
-1D6A8 1D6C0
-1D6C2 1D6DA
-1D6DC 1D6FA
-1D6FC 1D714
-1D716 1D734
-1D736 1D74E
-1D750 1D76E
-1D770 1D788
-1D78A 1D7A8
-1D7AA 1D7C2
-1D7C4 1D7C9
-20000 2A6D6
-2F800 2FA1D
-E0100 E01EF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Alphabet.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Alphabet.pl
deleted file mode 100644
index 17b2548e144..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Alphabet.pl
+++ /dev/null
@@ -1,415 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Alphabetic} (and fuzzy permutations)
-#
-# Meaning: [\p{L}\p{OtherAlphabetic}]
-#
-return <<'END';
-0041 005A
-0061 007A
-00AA
-00B5
-00BA
-00C0 00D6
-00D8 00F6
-00F8 0241
-0250 02C1
-02C6 02D1
-02E0 02E4
-02EE
-0345
-037A
-0386
-0388 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 03F5
-03F7 0481
-048A 04CE
-04D0 04F9
-0500 050F
-0531 0556
-0559
-0561 0587
-05B0 05B9
-05BB 05BD
-05BF
-05C1 05C2
-05C4 05C5
-05C7
-05D0 05EA
-05F0 05F2
-0610 0615
-0621 063A
-0640 0657
-0659 065E
-066E 06D3
-06D5 06DC
-06E1 06E8
-06ED 06EF
-06FA 06FC
-06FF
-0710 073F
-074D 076D
-0780 07B1
-0901 0939
-093D 094C
-0950
-0958 0963
-097D
-0981 0983
-0985 098C
-098F 0990
-0993 09A8
-09AA 09B0
-09B2
-09B6 09B9
-09BD 09C4
-09C7 09C8
-09CB 09CC
-09CE
-09D7
-09DC 09DD
-09DF 09E3
-09F0 09F1
-0A01 0A03
-0A05 0A0A
-0A0F 0A10
-0A13 0A28
-0A2A 0A30
-0A32 0A33
-0A35 0A36
-0A38 0A39
-0A3E 0A42
-0A47 0A48
-0A4B 0A4C
-0A59 0A5C
-0A5E
-0A70 0A74
-0A81 0A83
-0A85 0A8D
-0A8F 0A91
-0A93 0AA8
-0AAA 0AB0
-0AB2 0AB3
-0AB5 0AB9
-0ABD 0AC5
-0AC7 0AC9
-0ACB 0ACC
-0AD0
-0AE0 0AE3
-0B01 0B03
-0B05 0B0C
-0B0F 0B10
-0B13 0B28
-0B2A 0B30
-0B32 0B33
-0B35 0B39
-0B3D 0B43
-0B47 0B48
-0B4B 0B4C
-0B56 0B57
-0B5C 0B5D
-0B5F 0B61
-0B71
-0B82 0B83
-0B85 0B8A
-0B8E 0B90
-0B92 0B95
-0B99 0B9A
-0B9C
-0B9E 0B9F
-0BA3 0BA4
-0BA8 0BAA
-0BAE 0BB9
-0BBE 0BC2
-0BC6 0BC8
-0BCA 0BCC
-0BD7
-0C01 0C03
-0C05 0C0C
-0C0E 0C10
-0C12 0C28
-0C2A 0C33
-0C35 0C39
-0C3E 0C44
-0C46 0C48
-0C4A 0C4C
-0C55 0C56
-0C60 0C61
-0C82 0C83
-0C85 0C8C
-0C8E 0C90
-0C92 0CA8
-0CAA 0CB3
-0CB5 0CB9
-0CBD 0CC4
-0CC6 0CC8
-0CCA 0CCC
-0CD5 0CD6
-0CDE
-0CE0 0CE1
-0D02 0D03
-0D05 0D0C
-0D0E 0D10
-0D12 0D28
-0D2A 0D39
-0D3E 0D43
-0D46 0D48
-0D4A 0D4C
-0D57
-0D60 0D61
-0D82 0D83
-0D85 0D96
-0D9A 0DB1
-0DB3 0DBB
-0DBD
-0DC0 0DC6
-0DCF 0DD4
-0DD6
-0DD8 0DDF
-0DF2 0DF3
-0E01 0E3A
-0E40 0E46
-0E4D
-0E81 0E82
-0E84
-0E87 0E88
-0E8A
-0E8D
-0E94 0E97
-0E99 0E9F
-0EA1 0EA3
-0EA5
-0EA7
-0EAA 0EAB
-0EAD 0EB9
-0EBB 0EBD
-0EC0 0EC4
-0EC6
-0ECD
-0EDC 0EDD
-0F00
-0F40 0F47
-0F49 0F6A
-0F71 0F81
-0F88 0F8B
-0F90 0F97
-0F99 0FBC
-1000 1021
-1023 1027
-1029 102A
-102C 1032
-1036
-1038
-1050 1059
-10A0 10C5
-10D0 10FA
-10FC
-1100 1159
-115F 11A2
-11A8 11F9
-1200 1248
-124A 124D
-1250 1256
-1258
-125A 125D
-1260 1288
-128A 128D
-1290 12B0
-12B2 12B5
-12B8 12BE
-12C0
-12C2 12C5
-12C8 12D6
-12D8 1310
-1312 1315
-1318 135A
-135F
-1380 138F
-13A0 13F4
-1401 166C
-166F 1676
-1681 169A
-16A0 16EA
-1700 170C
-170E 1713
-1720 1733
-1740 1753
-1760 176C
-176E 1770
-1772 1773
-1780 17B3
-17B6 17C8
-17D7
-17DC
-1820 1877
-1880 18A9
-1900 191C
-1920 192B
-1930 1938
-1950 196D
-1970 1974
-1980 19A9
-19B0 19C9
-1A00 1A1B
-1D00 1DBF
-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
-2071
-207F
-2090 2094
-2102
-2107
-210A 2113
-2115
-2119 211D
-2124
-2126
-2128
-212A 212D
-212F 2131
-2133 2139
-213C 213F
-2145 2149
-24B6 24E9
-2C00 2C2E
-2C30 2C5E
-2C80 2CE4
-2D00 2D25
-2D30 2D65
-2D6F
-2D80 2D96
-2DA0 2DA6
-2DA8 2DAE
-2DB0 2DB6
-2DB8 2DBE
-2DC0 2DC6
-2DC8 2DCE
-2DD0 2DD6
-2DD8 2DDE
-3005 3006
-3031 3035
-303B 303C
-3041 3096
-309D 309F
-30A1 30FA
-30FC 30FF
-3105 312C
-3131 318E
-31A0 31B7
-31F0 31FF
-3400 4DB5
-4E00 9FBB
-A000 A48C
-A800 A801
-A803 A805
-A807 A80A
-A80C A827
-AC00 D7A3
-F900 FA2D
-FA30 FA6A
-FA70 FAD9
-FB00 FB06
-FB13 FB17
-FB1D FB28
-FB2A FB36
-FB38 FB3C
-FB3E
-FB40 FB41
-FB43 FB44
-FB46 FBB1
-FBD3 FD3D
-FD50 FD8F
-FD92 FDC7
-FDF0 FDFB
-FE70 FE74
-FE76 FEFC
-FF21 FF3A
-FF41 FF5A
-FF66 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-10000 1000B
-1000D 10026
-10028 1003A
-1003C 1003D
-1003F 1004D
-10050 1005D
-10080 100FA
-10300 1031E
-10330 10349
-10380 1039D
-103A0 103C3
-103C8 103CF
-10400 1049D
-10800 10805
-10808
-1080A 10835
-10837 10838
-1083C
-1083F
-10A00 10A03
-10A05 10A06
-10A0C 10A13
-10A15 10A17
-10A19 10A33
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A5
-1D6A8 1D6C0
-1D6C2 1D6DA
-1D6DC 1D6FA
-1D6FC 1D714
-1D716 1D734
-1D736 1D74E
-1D750 1D76E
-1D770 1D788
-1D78A 1D7A8
-1D7AA 1D7C2
-1D7C4 1D7C9
-20000 2A6D6
-2F800 2FA1D
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Any.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Any.pl
deleted file mode 100644
index f98cd73ced4..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Any.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Any}
-# \p{Any}
-#
-# Meaning: [\x{0000}-\x{10FFFF}]
-#
-return <<'END';
-0000 10FFFF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Arab.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Arab.pl
deleted file mode 100644
index ed9ebd5c069..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Arab.pl
+++ /dev/null
@@ -1,29 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Arabic} (and fuzzy permutations)
-#
-# Meaning: Script 'Arabic'
-#
-return <<'END';
-060B Arabic
-060D 0615 Arabic
-061E Arabic
-0621 063A Arabic
-0641 064A Arabic
-0656 065E Arabic
-066A 066F Arabic
-0671 06DC Arabic
-06DE 06FF Arabic
-0750 076D Arabic
-FB50 FBB1 Arabic
-FBD3 FD3D Arabic
-FD50 FD8F Arabic
-FD92 FDC7 Arabic
-FDF0 FDFC Arabic
-FE70 FE74 Arabic
-FE76 FEFC Arabic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Armn.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Armn.pl
deleted file mode 100644
index 0aa98b8de20..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Armn.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Armenian} (and fuzzy permutations)
-#
-# Meaning: Script 'Armenian'
-#
-return <<'END';
-0531 0556 Armenian
-0559 055F Armenian
-0561 0587 Armenian
-058A Armenian
-FB13 FB17 Armenian
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/AsciiHex.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/AsciiHex.pl
deleted file mode 100644
index be2637d80ed..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/AsciiHex.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{AsciiHexDigit} (and fuzzy permutations)
-#
-# Meaning: Extended property 'ASCII_Hex_Digit'
-#
-return <<'END';
-0030 0039 ASCII_Hex_Digit
-0041 0046 ASCII_Hex_Digit
-0061 0066 ASCII_Hex_Digit
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Assigned.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Assigned.pl
deleted file mode 100644
index 66a7c540201..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Assigned.pl
+++ /dev/null
@@ -1,432 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Assigned}
-#
-# Meaning: All assigned code points
-#
-return <<'END';
-0000 0241
-0250 036F
-0374 0375
-037A
-037E
-0384 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 0486
-0488 04CE
-04D0 04F9
-0500 050F
-0531 0556
-0559 055F
-0561 0587
-0589 058A
-0591 05B9
-05BB 05C7
-05D0 05EA
-05F0 05F4
-0600 0603
-060B 0615
-061B
-061E 061F
-0621 063A
-0640 065E
-0660 070D
-070F 074A
-074D 076D
-0780 07B1
-0901 0939
-093C 094D
-0950 0954
-0958 0970
-097D
-0981 0983
-0985 098C
-098F 0990
-0993 09A8
-09AA 09B0
-09B2
-09B6 09B9
-09BC 09C4
-09C7 09C8
-09CB 09CE
-09D7
-09DC 09DD
-09DF 09E3
-09E6 09FA
-0A01 0A03
-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 0A8D
-0A8F 0A91
-0A93 0AA8
-0AAA 0AB0
-0AB2 0AB3
-0AB5 0AB9
-0ABC 0AC5
-0AC7 0AC9
-0ACB 0ACD
-0AD0
-0AE0 0AE3
-0AE6 0AEF
-0AF1
-0B01 0B03
-0B05 0B0C
-0B0F 0B10
-0B13 0B28
-0B2A 0B30
-0B32 0B33
-0B35 0B39
-0B3C 0B43
-0B47 0B48
-0B4B 0B4D
-0B56 0B57
-0B5C 0B5D
-0B5F 0B61
-0B66 0B71
-0B82 0B83
-0B85 0B8A
-0B8E 0B90
-0B92 0B95
-0B99 0B9A
-0B9C
-0B9E 0B9F
-0BA3 0BA4
-0BA8 0BAA
-0BAE 0BB9
-0BBE 0BC2
-0BC6 0BC8
-0BCA 0BCD
-0BD7
-0BE6 0BFA
-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
-0CBC 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 0FD1
-1000 1021
-1023 1027
-1029 102A
-102C 1032
-1036 1039
-1040 1059
-10A0 10C5
-10D0 10FC
-1100 1159
-115F 11A2
-11A8 11F9
-1200 1248
-124A 124D
-1250 1256
-1258
-125A 125D
-1260 1288
-128A 128D
-1290 12B0
-12B2 12B5
-12B8 12BE
-12C0
-12C2 12C5
-12C8 12D6
-12D8 1310
-1312 1315
-1318 135A
-135F 137C
-1380 1399
-13A0 13F4
-1401 1676
-1680 169C
-16A0 16F0
-1700 170C
-170E 1714
-1720 1736
-1740 1753
-1760 176C
-176E 1770
-1772 1773
-1780 17DD
-17E0 17E9
-17F0 17F9
-1800 180E
-1810 1819
-1820 1877
-1880 18A9
-1900 191C
-1920 192B
-1930 193B
-1940
-1944 196D
-1970 1974
-1980 19A9
-19B0 19C9
-19D0 19D9
-19DE 1A1B
-1A1E 1A1F
-1D00 1DC3
-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 2063
-206A 2071
-2074 208E
-2090 2094
-20A0 20B5
-20D0 20EB
-2100 214C
-2153 2183
-2190 23DB
-2400 2426
-2440 244A
-2460 269C
-26A0 26B1
-2701 2704
-2706 2709
-270C 2727
-2729 274B
-274D
-274F 2752
-2756
-2758 275E
-2761 2794
-2798 27AF
-27B1 27BE
-27C0 27C6
-27D0 27EB
-27F0 2B13
-2C00 2C2E
-2C30 2C5E
-2C80 2CEA
-2CF9 2D25
-2D30 2D65
-2D6F
-2D80 2D96
-2DA0 2DA6
-2DA8 2DAE
-2DB0 2DB6
-2DB8 2DBE
-2DC0 2DC6
-2DC8 2DCE
-2DD0 2DD6
-2DD8 2DDE
-2E00 2E17
-2E1C 2E1D
-2E80 2E99
-2E9B 2EF3
-2F00 2FD5
-2FF0 2FFB
-3000 303F
-3041 3096
-3099 30FF
-3105 312C
-3131 318E
-3190 31B7
-31C0 31CF
-31F0 321E
-3220 3243
-3250 32FE
-3300 4DB5
-4DC0 9FBB
-A000 A48C
-A490 A4C6
-A700 A716
-A800 A82B
-AC00 D7A3
-D800 FA2D
-FA30 FA6A
-FA70 FAD9
-FB00 FB06
-FB13 FB17
-FB1D FB36
-FB38 FB3C
-FB3E
-FB40 FB41
-FB43 FB44
-FB46 FBB1
-FBD3 FD3F
-FD50 FD8F
-FD92 FDC7
-FDF0 FDFD
-FE00 FE19
-FE20 FE23
-FE30 FE52
-FE54 FE66
-FE68 FE6B
-FE70 FE74
-FE76 FEFC
-FEFF
-FF01 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-FFE0 FFE6
-FFE8 FFEE
-FFF9 FFFD
-10000 1000B
-1000D 10026
-10028 1003A
-1003C 1003D
-1003F 1004D
-10050 1005D
-10080 100FA
-10100 10102
-10107 10133
-10137 1018A
-10300 1031E
-10320 10323
-10330 1034A
-10380 1039D
-1039F 103C3
-103C8 103D5
-10400 1049D
-104A0 104A9
-10800 10805
-10808
-1080A 10835
-10837 10838
-1083C
-1083F
-10A00 10A03
-10A05 10A06
-10A0C 10A13
-10A15 10A17
-10A19 10A33
-10A38 10A3A
-10A3F 10A47
-10A50 10A58
-1D000 1D0F5
-1D100 1D126
-1D12A 1D1DD
-1D200 1D245
-1D300 1D356
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A5
-1D6A8 1D7C9
-1D7CE 1D7FF
-20000 2A6D6
-2F800 2FA1D
-E0001
-E0020 E007F
-E0100 E01EF
-F0000 FFFFD
-100000 10FFFD
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Beng.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Beng.pl
deleted file mode 100644
index 2df6a3ccfa4..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Beng.pl
+++ /dev/null
@@ -1,26 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Bengali} (and fuzzy permutations)
-#
-# Meaning: Script 'Bengali'
-#
-return <<'END';
-0981 0983 Bengali
-0985 098C Bengali
-098F 0990 Bengali
-0993 09A8 Bengali
-09AA 09B0 Bengali
-09B2 Bengali
-09B6 09B9 Bengali
-09BC 09C4 Bengali
-09C7 09C8 Bengali
-09CB 09CE Bengali
-09D7 Bengali
-09DC 09DD Bengali
-09DF 09E3 Bengali
-09E6 09FA Bengali
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/BidiC.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/BidiC.pl
deleted file mode 100644
index 634625fc6f2..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/BidiC.pl
+++ /dev/null
@@ -1,11 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Bidi_Control'
-#
-return <<'END';
-200E 200F Bidi_Control
-202A 202E Bidi_Control
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/BidiCont.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/BidiCont.pl
deleted file mode 100644
index 7f51ac42b26..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/BidiCont.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{BidiControl} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Bidi_Control'
-#
-return <<'END';
-200E 200F Bidi_Control
-202A 202E Bidi_Control
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Blank.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Blank.pl
deleted file mode 100644
index 6d8519ac41c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Blank.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Blank}
-#
-# Meaning: [[:Blank:]]
-#
-return <<'END';
-0009
-0020
-00A0
-1680
-180E
-2000 200A
-202F
-205F
-3000
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Bopo.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Bopo.pl
deleted file mode 100644
index 955e0c99a2d..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Bopo.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Bopomofo} (and fuzzy permutations)
-#
-# Meaning: Script 'Bopomofo'
-#
-return <<'END';
-3105 312C Bopomofo
-31A0 31B7 Bopomofo
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Brai.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Brai.pl
deleted file mode 100644
index 368ded7e411..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Brai.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Braille} (and fuzzy permutations)
-#
-# Meaning: Script 'Braille'
-#
-return <<'END';
-2800 28FF Braille
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Bugi.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Bugi.pl
deleted file mode 100644
index 41957df22fe..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Bugi.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Buginese} (and fuzzy permutations)
-#
-# Meaning: Script 'Buginese'
-#
-return <<'END';
-1A00 1A1B Buginese
-1A1E 1A1F Buginese
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Buhd.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Buhd.pl
deleted file mode 100644
index 47e8b1f6134..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Buhd.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Buhid} (and fuzzy permutations)
-#
-# Meaning: Script 'Buhid'
-#
-return <<'END';
-1740 1753 Buhid
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/C.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/C.pl
deleted file mode 100644
index 9d6c14681d9..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/C.pl
+++ /dev/null
@@ -1,435 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{C}
-# \p{C} (and fuzzy permutations)
-#
-# Meaning: Major Category 'C'
-#
-return <<'END';
-0000 001F
-007F 009F
-00AD
-0242 024F
-0370 0373
-0376 0379
-037B 037D
-037F 0383
-038B
-038D
-03A2
-03CF
-0487
-04CF
-04FA 04FF
-0510 0530
-0557 0558
-0560
-0588
-058B 0590
-05BA
-05C8 05CF
-05EB 05EF
-05F5 060A
-0616 061A
-061C 061D
-0620
-063B 063F
-065F
-06DD
-070E 070F
-074B 074C
-076E 077F
-07B2 0900
-093A 093B
-094E 094F
-0955 0957
-0971 097C
-097E 0980
-0984
-098D 098E
-0991 0992
-09A9
-09B1
-09B3 09B5
-09BA 09BB
-09C5 09C6
-09C9 09CA
-09CF 09D6
-09D8 09DB
-09DE
-09E4 09E5
-09FB 0A00
-0A04
-0A0B 0A0E
-0A11 0A12
-0A29
-0A31
-0A34
-0A37
-0A3A 0A3B
-0A3D
-0A43 0A46
-0A49 0A4A
-0A4E 0A58
-0A5D
-0A5F 0A65
-0A75 0A80
-0A84
-0A8E
-0A92
-0AA9
-0AB1
-0AB4
-0ABA 0ABB
-0AC6
-0ACA
-0ACE 0ACF
-0AD1 0ADF
-0AE4 0AE5
-0AF0
-0AF2 0B00
-0B04
-0B0D 0B0E
-0B11 0B12
-0B29
-0B31
-0B34
-0B3A 0B3B
-0B44 0B46
-0B49 0B4A
-0B4E 0B55
-0B58 0B5B
-0B5E
-0B62 0B65
-0B72 0B81
-0B84
-0B8B 0B8D
-0B91
-0B96 0B98
-0B9B
-0B9D
-0BA0 0BA2
-0BA5 0BA7
-0BAB 0BAD
-0BBA 0BBD
-0BC3 0BC5
-0BC9
-0BCE 0BD6
-0BD8 0BE5
-0BFB 0C00
-0C04
-0C0D
-0C11
-0C29
-0C34
-0C3A 0C3D
-0C45
-0C49
-0C4E 0C54
-0C57 0C5F
-0C62 0C65
-0C70 0C81
-0C84
-0C8D
-0C91
-0CA9
-0CB4
-0CBA 0CBB
-0CC5
-0CC9
-0CCE 0CD4
-0CD7 0CDD
-0CDF
-0CE2 0CE5
-0CF0 0D01
-0D04
-0D0D
-0D11
-0D29
-0D3A 0D3D
-0D44 0D45
-0D49
-0D4E 0D56
-0D58 0D5F
-0D62 0D65
-0D70 0D81
-0D84
-0D97 0D99
-0DB2
-0DBC
-0DBE 0DBF
-0DC7 0DC9
-0DCB 0DCE
-0DD5
-0DD7
-0DE0 0DF1
-0DF5 0E00
-0E3B 0E3E
-0E5C 0E80
-0E83
-0E85 0E86
-0E89
-0E8B 0E8C
-0E8E 0E93
-0E98
-0EA0
-0EA4
-0EA6
-0EA8 0EA9
-0EAC
-0EBA
-0EBE 0EBF
-0EC5
-0EC7
-0ECE 0ECF
-0EDA 0EDB
-0EDE 0EFF
-0F48
-0F6B 0F70
-0F8C 0F8F
-0F98
-0FBD
-0FCD 0FCE
-0FD2 0FFF
-1022
-1028
-102B
-1033 1035
-103A 103F
-105A 109F
-10C6 10CF
-10FD 10FF
-115A 115E
-11A3 11A7
-11FA 11FF
-1249
-124E 124F
-1257
-1259
-125E 125F
-1289
-128E 128F
-12B1
-12B6 12B7
-12BF
-12C1
-12C6 12C7
-12D7
-1311
-1316 1317
-135B 135E
-137D 137F
-139A 139F
-13F5 1400
-1677 167F
-169D 169F
-16F1 16FF
-170D
-1715 171F
-1737 173F
-1754 175F
-176D
-1771
-1774 177F
-17B4 17B5
-17DE 17DF
-17EA 17EF
-17FA 17FF
-180F
-181A 181F
-1878 187F
-18AA 18FF
-191D 191F
-192C 192F
-193C 193F
-1941 1943
-196E 196F
-1975 197F
-19AA 19AF
-19CA 19CF
-19DA 19DD
-1A1C 1A1D
-1A20 1CFF
-1DC4 1DFF
-1E9C 1E9F
-1EFA 1EFF
-1F16 1F17
-1F1E 1F1F
-1F46 1F47
-1F4E 1F4F
-1F58
-1F5A
-1F5C
-1F5E
-1F7E 1F7F
-1FB5
-1FC5
-1FD4 1FD5
-1FDC
-1FF0 1FF1
-1FF5
-1FFF
-200B 200F
-202A 202E
-2060 206F
-2072 2073
-208F
-2095 209F
-20B6 20CF
-20EC 20FF
-214D 2152
-2184 218F
-23DC 23FF
-2427 243F
-244B 245F
-269D 269F
-26B2 2700
-2705
-270A 270B
-2728
-274C
-274E
-2753 2755
-2757
-275F 2760
-2795 2797
-27B0
-27BF
-27C7 27CF
-27EC 27EF
-2B14 2BFF
-2C2F
-2C5F 2C7F
-2CEB 2CF8
-2D26 2D2F
-2D66 2D6E
-2D70 2D7F
-2D97 2D9F
-2DA7
-2DAF
-2DB7
-2DBF
-2DC7
-2DCF
-2DD7
-2DDF 2DFF
-2E18 2E1B
-2E1E 2E7F
-2E9A
-2EF4 2EFF
-2FD6 2FEF
-2FFC 2FFF
-3040
-3097 3098
-3100 3104
-312D 3130
-318F
-31B8 31BF
-31D0 31EF
-321F
-3244 324F
-32FF
-4DB6 4DBF
-9FBC 9FFF
-A48D A48F
-A4C7 A6FF
-A717 A7FF
-A82C ABFF
-D7A4 F8FF
-FA2E FA2F
-FA6B FA6F
-FADA FAFF
-FB07 FB12
-FB18 FB1C
-FB37
-FB3D
-FB3F
-FB42
-FB45
-FBB2 FBD2
-FD40 FD4F
-FD90 FD91
-FDC8 FDEF
-FDFE FDFF
-FE1A FE1F
-FE24 FE2F
-FE53
-FE67
-FE6C FE6F
-FE75
-FEFD FF00
-FFBF FFC1
-FFC8 FFC9
-FFD0 FFD1
-FFD8 FFD9
-FFDD FFDF
-FFE7
-FFEF FFFB
-FFFE FFFF
-1000C
-10027
-1003B
-1003E
-1004E 1004F
-1005E 1007F
-100FB 100FF
-10103 10106
-10134 10136
-1018B 102FF
-1031F
-10324 1032F
-1034B 1037F
-1039E
-103C4 103C7
-103D6 103FF
-1049E 1049F
-104AA 107FF
-10806 10807
-10809
-10836
-10839 1083B
-1083D 1083E
-10840 109FF
-10A04
-10A07 10A0B
-10A14
-10A18
-10A34 10A37
-10A3B 10A3E
-10A48 10A4F
-10A59 1CFFF
-1D0F6 1D0FF
-1D127 1D129
-1D173 1D17A
-1D1DE 1D1FF
-1D246 1D2FF
-1D357 1D3FF
-1D455
-1D49D
-1D4A0 1D4A1
-1D4A3 1D4A4
-1D4A7 1D4A8
-1D4AD
-1D4BA
-1D4BC
-1D4C4
-1D506
-1D50B 1D50C
-1D515
-1D51D
-1D53A
-1D53F
-1D545
-1D547 1D549
-1D551
-1D6A6 1D6A7
-1D7CA 1D7CD
-1D800 1FFFF
-2A6D7 2F7FF
-2FA1E E00FF
-E01F0 10FFFF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Canadian.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Canadian.pl
deleted file mode 100644
index 6eb1c061bad..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Canadian.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{CanadianAboriginal} (and fuzzy permutations)
-#
-# Meaning: Script 'Canadian_Aboriginal'
-#
-return <<'END';
-1401 1676 Canadian_Aboriginal
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cc.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cc.pl
deleted file mode 100644
index f7715fc9d24..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cc.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Cc}
-# \p{Cc} (and fuzzy permutations)
-#
-# Meaning: General Category 'Cc'
-#
-return <<'END';
-0000 001F
-007F 009F
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cf.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cf.pl
deleted file mode 100644
index d2291e2bce5..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cf.pl
+++ /dev/null
@@ -1,27 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Cf}
-# \p{Cf} (and fuzzy permutations)
-#
-# Meaning: General Category 'Cf'
-#
-return <<'END';
-00AD
-0600 0603
-06DD
-070F
-17B4 17B5
-200B 200F
-202A 202E
-2060 2063
-206A 206F
-FEFF
-FFF9 FFFB
-1D173 1D17A
-E0001
-E0020 E007F
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cher.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cher.pl
deleted file mode 100644
index 11e7733fcb7..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cher.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Cherokee} (and fuzzy permutations)
-#
-# Meaning: Script 'Cherokee'
-#
-return <<'END';
-13A0 13F4 Cherokee
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cn.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cn.pl
deleted file mode 100644
index d94d4bc7e11..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cn.pl
+++ /dev/null
@@ -1,433 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Cn}
-# \p{Cn} (and fuzzy permutations)
-#
-# Meaning: General Category 'Cn' [not functional in Perl]
-#
-return <<'END';
-0242 024F
-0370 0373
-0376 0379
-037B 037D
-037F 0383
-038B
-038D
-03A2
-03CF
-0487
-04CF
-04FA 04FF
-0510 0530
-0557 0558
-0560
-0588
-058B 0590
-05BA
-05C8 05CF
-05EB 05EF
-05F5 05FF
-0604 060A
-0616 061A
-061C 061D
-0620
-063B 063F
-065F
-070E
-074B 074C
-076E 077F
-07B2 0900
-093A 093B
-094E 094F
-0955 0957
-0971 097C
-097E 0980
-0984
-098D 098E
-0991 0992
-09A9
-09B1
-09B3 09B5
-09BA 09BB
-09C5 09C6
-09C9 09CA
-09CF 09D6
-09D8 09DB
-09DE
-09E4 09E5
-09FB 0A00
-0A04
-0A0B 0A0E
-0A11 0A12
-0A29
-0A31
-0A34
-0A37
-0A3A 0A3B
-0A3D
-0A43 0A46
-0A49 0A4A
-0A4E 0A58
-0A5D
-0A5F 0A65
-0A75 0A80
-0A84
-0A8E
-0A92
-0AA9
-0AB1
-0AB4
-0ABA 0ABB
-0AC6
-0ACA
-0ACE 0ACF
-0AD1 0ADF
-0AE4 0AE5
-0AF0
-0AF2 0B00
-0B04
-0B0D 0B0E
-0B11 0B12
-0B29
-0B31
-0B34
-0B3A 0B3B
-0B44 0B46
-0B49 0B4A
-0B4E 0B55
-0B58 0B5B
-0B5E
-0B62 0B65
-0B72 0B81
-0B84
-0B8B 0B8D
-0B91
-0B96 0B98
-0B9B
-0B9D
-0BA0 0BA2
-0BA5 0BA7
-0BAB 0BAD
-0BBA 0BBD
-0BC3 0BC5
-0BC9
-0BCE 0BD6
-0BD8 0BE5
-0BFB 0C00
-0C04
-0C0D
-0C11
-0C29
-0C34
-0C3A 0C3D
-0C45
-0C49
-0C4E 0C54
-0C57 0C5F
-0C62 0C65
-0C70 0C81
-0C84
-0C8D
-0C91
-0CA9
-0CB4
-0CBA 0CBB
-0CC5
-0CC9
-0CCE 0CD4
-0CD7 0CDD
-0CDF
-0CE2 0CE5
-0CF0 0D01
-0D04
-0D0D
-0D11
-0D29
-0D3A 0D3D
-0D44 0D45
-0D49
-0D4E 0D56
-0D58 0D5F
-0D62 0D65
-0D70 0D81
-0D84
-0D97 0D99
-0DB2
-0DBC
-0DBE 0DBF
-0DC7 0DC9
-0DCB 0DCE
-0DD5
-0DD7
-0DE0 0DF1
-0DF5 0E00
-0E3B 0E3E
-0E5C 0E80
-0E83
-0E85 0E86
-0E89
-0E8B 0E8C
-0E8E 0E93
-0E98
-0EA0
-0EA4
-0EA6
-0EA8 0EA9
-0EAC
-0EBA
-0EBE 0EBF
-0EC5
-0EC7
-0ECE 0ECF
-0EDA 0EDB
-0EDE 0EFF
-0F48
-0F6B 0F70
-0F8C 0F8F
-0F98
-0FBD
-0FCD 0FCE
-0FD2 0FFF
-1022
-1028
-102B
-1033 1035
-103A 103F
-105A 109F
-10C6 10CF
-10FD 10FF
-115A 115E
-11A3 11A7
-11FA 11FF
-1249
-124E 124F
-1257
-1259
-125E 125F
-1289
-128E 128F
-12B1
-12B6 12B7
-12BF
-12C1
-12C6 12C7
-12D7
-1311
-1316 1317
-135B 135E
-137D 137F
-139A 139F
-13F5 1400
-1677 167F
-169D 169F
-16F1 16FF
-170D
-1715 171F
-1737 173F
-1754 175F
-176D
-1771
-1774 177F
-17DE 17DF
-17EA 17EF
-17FA 17FF
-180F
-181A 181F
-1878 187F
-18AA 18FF
-191D 191F
-192C 192F
-193C 193F
-1941 1943
-196E 196F
-1975 197F
-19AA 19AF
-19CA 19CF
-19DA 19DD
-1A1C 1A1D
-1A20 1CFF
-1DC4 1DFF
-1E9C 1E9F
-1EFA 1EFF
-1F16 1F17
-1F1E 1F1F
-1F46 1F47
-1F4E 1F4F
-1F58
-1F5A
-1F5C
-1F5E
-1F7E 1F7F
-1FB5
-1FC5
-1FD4 1FD5
-1FDC
-1FF0 1FF1
-1FF5
-1FFF
-2064 2069
-2072 2073
-208F
-2095 209F
-20B6 20CF
-20EC 20FF
-214D 2152
-2184 218F
-23DC 23FF
-2427 243F
-244B 245F
-269D 269F
-26B2 2700
-2705
-270A 270B
-2728
-274C
-274E
-2753 2755
-2757
-275F 2760
-2795 2797
-27B0
-27BF
-27C7 27CF
-27EC 27EF
-2B14 2BFF
-2C2F
-2C5F 2C7F
-2CEB 2CF8
-2D26 2D2F
-2D66 2D6E
-2D70 2D7F
-2D97 2D9F
-2DA7
-2DAF
-2DB7
-2DBF
-2DC7
-2DCF
-2DD7
-2DDF 2DFF
-2E18 2E1B
-2E1E 2E7F
-2E9A
-2EF4 2EFF
-2FD6 2FEF
-2FFC 2FFF
-3040
-3097 3098
-3100 3104
-312D 3130
-318F
-31B8 31BF
-31D0 31EF
-321F
-3244 324F
-32FF
-4DB6 4DBF
-9FBC 9FFF
-A48D A48F
-A4C7 A6FF
-A717 A7FF
-A82C ABFF
-D7A4 D7FF
-FA2E FA2F
-FA6B FA6F
-FADA FAFF
-FB07 FB12
-FB18 FB1C
-FB37
-FB3D
-FB3F
-FB42
-FB45
-FBB2 FBD2
-FD40 FD4F
-FD90 FD91
-FDC8 FDEF
-FDFE FDFF
-FE1A FE1F
-FE24 FE2F
-FE53
-FE67
-FE6C FE6F
-FE75
-FEFD FEFE
-FF00
-FFBF FFC1
-FFC8 FFC9
-FFD0 FFD1
-FFD8 FFD9
-FFDD FFDF
-FFE7
-FFEF FFF8
-FFFE FFFF
-1000C
-10027
-1003B
-1003E
-1004E 1004F
-1005E 1007F
-100FB 100FF
-10103 10106
-10134 10136
-1018B 102FF
-1031F
-10324 1032F
-1034B 1037F
-1039E
-103C4 103C7
-103D6 103FF
-1049E 1049F
-104AA 107FF
-10806 10807
-10809
-10836
-10839 1083B
-1083D 1083E
-10840 109FF
-10A04
-10A07 10A0B
-10A14
-10A18
-10A34 10A37
-10A3B 10A3E
-10A48 10A4F
-10A59 1CFFF
-1D0F6 1D0FF
-1D127 1D129
-1D1DE 1D1FF
-1D246 1D2FF
-1D357 1D3FF
-1D455
-1D49D
-1D4A0 1D4A1
-1D4A3 1D4A4
-1D4A7 1D4A8
-1D4AD
-1D4BA
-1D4BC
-1D4C4
-1D506
-1D50B 1D50C
-1D515
-1D51D
-1D53A
-1D53F
-1D545
-1D547 1D549
-1D551
-1D6A6 1D6A7
-1D7CA 1D7CD
-1D800 1FFFF
-2A6D7 2F7FF
-2FA1E E0000
-E0002 E001F
-E0080 E00FF
-E01F0 EFFFF
-FFFFE FFFFF
-10FFFE 10FFFF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cntrl.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cntrl.pl
deleted file mode 100644
index 9d9f7407318..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cntrl.pl
+++ /dev/null
@@ -1,31 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Cntrl}
-#
-# Meaning: [[:Cntrl:]]
-#
-return <<'END';
-0000 001F
-007F 009F
-00AD
-0600 0603
-06DD
-070F
-17B4 17B5
-200B 200F
-202A 202E
-2060 2063
-206A 206F
-D800 F8FF
-FEFF
-FFF9 FFFB
-1D173 1D17A
-E0001
-E0020 E007F
-F0000 FFFFD
-100000 10FFFD
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Co.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Co.pl
deleted file mode 100644
index 5cb8379366e..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Co.pl
+++ /dev/null
@@ -1,16 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Co}
-# \p{Co} (and fuzzy permutations)
-#
-# Meaning: General Category 'Co'
-#
-return <<'END';
-E000 F8FF
-F0000 FFFFD
-100000 10FFFD
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Copt.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Copt.pl
deleted file mode 100644
index f8942a996f9..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Copt.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Coptic} (and fuzzy permutations)
-#
-# Meaning: Script 'Coptic'
-#
-return <<'END';
-03E2 03EF Coptic
-2C80 2CEA Coptic
-2CF9 2CFF Coptic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cprt.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cprt.pl
deleted file mode 100644
index 95b9922a16e..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cprt.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Cypriot} (and fuzzy permutations)
-#
-# Meaning: Script 'Cypriot'
-#
-return <<'END';
-10800 10805 Cypriot
-10808 Cypriot
-1080A 10835 Cypriot
-10837 10838 Cypriot
-1083C Cypriot
-1083F Cypriot
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cs.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cs.pl
deleted file mode 100644
index 02ccb70cae6..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cs.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Cs}
-# \p{Cs} (and fuzzy permutations)
-#
-# Meaning: General Category 'Cs'
-#
-return <<'END';
-D800 DFFF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cyrl.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cyrl.pl
deleted file mode 100644
index 1b3412ffffe..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Cyrl.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Cyrillic} (and fuzzy permutations)
-#
-# Meaning: Script 'Cyrillic'
-#
-return <<'END';
-0400 0486 Cyrillic
-0488 04CE Cyrillic
-04D0 04F9 Cyrillic
-0500 050F Cyrillic
-1D2B Cyrillic
-1D78 Cyrillic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Dash.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Dash.pl
deleted file mode 100644
index 98b7e3401ed..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Dash.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Dash'
-#
-return <<'END';
-002D Dash
-058A Dash
-1806 Dash
-2010 2015 Dash
-2053 Dash
-207B Dash
-208B Dash
-2212 Dash
-2E17 Dash
-301C Dash
-3030 Dash
-30A0 Dash
-FE31 FE32 Dash
-FE58 Dash
-FE63 Dash
-FF0D Dash
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Dash2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Dash2.pl
deleted file mode 100644
index b6c40f34bb5..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Dash2.pl
+++ /dev/null
@@ -1,28 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Dash} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Dash'
-#
-return <<'END';
-002D Dash
-058A Dash
-1806 Dash
-2010 2015 Dash
-2053 Dash
-207B Dash
-208B Dash
-2212 Dash
-2E17 Dash
-301C Dash
-3030 Dash
-30A0 Dash
-FE31 FE32 Dash
-FE58 Dash
-FE63 Dash
-FF0D Dash
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Dep.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Dep.pl
deleted file mode 100644
index c2b4606d967..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Dep.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Deprecated'
-#
-return <<'END';
-0340 0341 Deprecated
-17A3 Deprecated
-17D3 Deprecated
-206A 206F Deprecated
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Deprecat.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Deprecat.pl
deleted file mode 100644
index b9adc5df2a0..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Deprecat.pl
+++ /dev/null
@@ -1,16 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Deprecated} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Deprecated'
-#
-return <<'END';
-0340 0341 Deprecated
-17A3 Deprecated
-17D3 Deprecated
-206A 206F Deprecated
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Deva.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Deva.pl
deleted file mode 100644
index 53bab955a4e..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Deva.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Devanagari} (and fuzzy permutations)
-#
-# Meaning: Script 'Devanagari'
-#
-return <<'END';
-0901 0939 Devanagari
-093C 094D Devanagari
-0950 0954 Devanagari
-0958 0963 Devanagari
-0966 096F Devanagari
-097D Devanagari
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Dia.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Dia.pl
deleted file mode 100644
index 2d790de5e5d..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Dia.pl
+++ /dev/null
@@ -1,91 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Diacritic'
-#
-return <<'END';
-005E Diacritic
-0060 Diacritic
-00A8 Diacritic
-00AF Diacritic
-00B4 Diacritic
-00B7 00B8 Diacritic
-02B0 034E Diacritic
-0350 0357 Diacritic
-035D 0362 Diacritic
-0374 0375 Diacritic
-037A Diacritic
-0384 0385 Diacritic
-0483 0486 Diacritic
-0559 Diacritic
-0591 05A1 Diacritic
-05A3 05B9 Diacritic
-05BB 05BD Diacritic
-05BF Diacritic
-05C1 05C2 Diacritic
-05C4 Diacritic
-064B 0652 Diacritic
-0657 0658 Diacritic
-06DF 06E0 Diacritic
-06E5 06E6 Diacritic
-06EA 06EC Diacritic
-0730 074A Diacritic
-07A6 07B0 Diacritic
-093C Diacritic
-094D Diacritic
-0951 0954 Diacritic
-09BC Diacritic
-09CD Diacritic
-0A3C Diacritic
-0A4D Diacritic
-0ABC Diacritic
-0ACD Diacritic
-0B3C Diacritic
-0B4D Diacritic
-0BCD Diacritic
-0C4D Diacritic
-0CBC Diacritic
-0CCD Diacritic
-0D4D Diacritic
-0DCA Diacritic
-0E47 0E4C Diacritic
-0E4E Diacritic
-0EC8 0ECC Diacritic
-0F18 0F19 Diacritic
-0F35 Diacritic
-0F37 Diacritic
-0F39 Diacritic
-0F3E 0F3F Diacritic
-0F82 0F84 Diacritic
-0F86 0F87 Diacritic
-0FC6 Diacritic
-1037 Diacritic
-1039 Diacritic
-17C9 17D3 Diacritic
-17DD Diacritic
-1939 193B Diacritic
-1D2C 1D6A Diacritic
-1FBD Diacritic
-1FBF 1FC1 Diacritic
-1FCD 1FCF Diacritic
-1FDD 1FDF Diacritic
-1FED 1FEF Diacritic
-1FFD 1FFE Diacritic
-302A 302F Diacritic
-3099 309C Diacritic
-30FC Diacritic
-FB1E Diacritic
-FE20 FE23 Diacritic
-FF3E Diacritic
-FF40 Diacritic
-FF70 Diacritic
-FF9E FF9F Diacritic
-FFE3 Diacritic
-1D167 1D169 Diacritic
-1D16D 1D172 Diacritic
-1D17B 1D182 Diacritic
-1D185 1D18B Diacritic
-1D1AA 1D1AD Diacritic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Diacriti.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Diacriti.pl
deleted file mode 100644
index 6b4cf421db0..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Diacriti.pl
+++ /dev/null
@@ -1,94 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Diacritic} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Diacritic'
-#
-return <<'END';
-005E Diacritic
-0060 Diacritic
-00A8 Diacritic
-00AF Diacritic
-00B4 Diacritic
-00B7 00B8 Diacritic
-02B0 034E Diacritic
-0350 0357 Diacritic
-035D 0362 Diacritic
-0374 0375 Diacritic
-037A Diacritic
-0384 0385 Diacritic
-0483 0486 Diacritic
-0559 Diacritic
-0591 05A1 Diacritic
-05A3 05B9 Diacritic
-05BB 05BD Diacritic
-05BF Diacritic
-05C1 05C2 Diacritic
-05C4 Diacritic
-064B 0652 Diacritic
-0657 0658 Diacritic
-06DF 06E0 Diacritic
-06E5 06E6 Diacritic
-06EA 06EC Diacritic
-0730 074A Diacritic
-07A6 07B0 Diacritic
-093C Diacritic
-094D Diacritic
-0951 0954 Diacritic
-09BC Diacritic
-09CD Diacritic
-0A3C Diacritic
-0A4D Diacritic
-0ABC Diacritic
-0ACD Diacritic
-0B3C Diacritic
-0B4D Diacritic
-0BCD Diacritic
-0C4D Diacritic
-0CBC Diacritic
-0CCD Diacritic
-0D4D Diacritic
-0DCA Diacritic
-0E47 0E4C Diacritic
-0E4E Diacritic
-0EC8 0ECC Diacritic
-0F18 0F19 Diacritic
-0F35 Diacritic
-0F37 Diacritic
-0F39 Diacritic
-0F3E 0F3F Diacritic
-0F82 0F84 Diacritic
-0F86 0F87 Diacritic
-0FC6 Diacritic
-1037 Diacritic
-1039 Diacritic
-17C9 17D3 Diacritic
-17DD Diacritic
-1939 193B Diacritic
-1D2C 1D6A Diacritic
-1FBD Diacritic
-1FBF 1FC1 Diacritic
-1FCD 1FCF Diacritic
-1FDD 1FDF Diacritic
-1FED 1FEF Diacritic
-1FFD 1FFE Diacritic
-302A 302F Diacritic
-3099 309C Diacritic
-30FC Diacritic
-FB1E Diacritic
-FE20 FE23 Diacritic
-FF3E Diacritic
-FF40 Diacritic
-FF70 Diacritic
-FF9E FF9F Diacritic
-FFE3 Diacritic
-1D167 1D169 Diacritic
-1D16D 1D172 Diacritic
-1D17B 1D182 Diacritic
-1D185 1D18B Diacritic
-1D1AA 1D1AD Diacritic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Digit.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Digit.pl
deleted file mode 100644
index bdcab28dd2b..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Digit.pl
+++ /dev/null
@@ -1,35 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Digit}
-#
-# Meaning: [[:Digit:]]
-#
-return <<'END';
-0030 0039
-0660 0669
-06F0 06F9
-0966 096F
-09E6 09EF
-0A66 0A6F
-0AE6 0AEF
-0B66 0B6F
-0BE6 0BEF
-0C66 0C6F
-0CE6 0CEF
-0D66 0D6F
-0E50 0E59
-0ED0 0ED9
-0F20 0F29
-1040 1049
-17E0 17E9
-1810 1819
-1946 194F
-19D0 19D9
-FF10 FF19
-104A0 104A9
-1D7CE 1D7FF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Dsrt.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Dsrt.pl
deleted file mode 100644
index dcc68e83478..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Dsrt.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Deseret} (and fuzzy permutations)
-#
-# Meaning: Script 'Deseret'
-#
-return <<'END';
-10400 1044F Deseret
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ethi.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ethi.pl
deleted file mode 100644
index 318289d6a2c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ethi.pl
+++ /dev/null
@@ -1,39 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Ethiopic} (and fuzzy permutations)
-#
-# Meaning: Script 'Ethiopic'
-#
-return <<'END';
-1200 1248 Ethiopic
-124A 124D Ethiopic
-1250 1256 Ethiopic
-1258 Ethiopic
-125A 125D Ethiopic
-1260 1288 Ethiopic
-128A 128D Ethiopic
-1290 12B0 Ethiopic
-12B2 12B5 Ethiopic
-12B8 12BE Ethiopic
-12C0 Ethiopic
-12C2 12C5 Ethiopic
-12C8 12D6 Ethiopic
-12D8 1310 Ethiopic
-1312 1315 Ethiopic
-1318 135A Ethiopic
-135F 137C Ethiopic
-1380 1399 Ethiopic
-2D80 2D96 Ethiopic
-2DA0 2DA6 Ethiopic
-2DA8 2DAE Ethiopic
-2DB0 2DB6 Ethiopic
-2DB8 2DBE Ethiopic
-2DC0 2DC6 Ethiopic
-2DC8 2DCE Ethiopic
-2DD0 2DD6 Ethiopic
-2DD8 2DDE Ethiopic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ext.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ext.pl
deleted file mode 100644
index 0166715de23..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ext.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Extender'
-#
-return <<'END';
-00B7 Extender
-02D0 02D1 Extender
-0640 Extender
-0E46 Extender
-0EC6 Extender
-1843 Extender
-3005 Extender
-3031 3035 Extender
-309D 309E Extender
-30FC 30FE Extender
-A015 Extender
-FF70 Extender
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Extender.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Extender.pl
deleted file mode 100644
index c9131e041dd..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Extender.pl
+++ /dev/null
@@ -1,24 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Extender} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Extender'
-#
-return <<'END';
-00B7 Extender
-02D0 02D1 Extender
-0640 Extender
-0E46 Extender
-0EC6 Extender
-1843 Extender
-3005 Extender
-3031 3035 Extender
-309D 309E Extender
-30FC 30FE Extender
-A015 Extender
-FF70 Extender
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Geor.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Geor.pl
deleted file mode 100644
index 63033e2f429..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Geor.pl
+++ /dev/null
@@ -1,16 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Georgian} (and fuzzy permutations)
-#
-# Meaning: Script 'Georgian'
-#
-return <<'END';
-10A0 10C5 Georgian
-10D0 10FA Georgian
-10FC Georgian
-2D00 2D25 Georgian
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Glag.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Glag.pl
deleted file mode 100644
index 2b873484e1e..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Glag.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Glagolitic} (and fuzzy permutations)
-#
-# Meaning: Script 'Glagolitic'
-#
-return <<'END';
-2C00 2C2E Glagolitic
-2C30 2C5E Glagolitic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Goth.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Goth.pl
deleted file mode 100644
index 7637cc65826..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Goth.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Gothic} (and fuzzy permutations)
-#
-# Meaning: Script 'Gothic'
-#
-return <<'END';
-10330 1034A Gothic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/GrLink.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/GrLink.pl
deleted file mode 100644
index 58bca9fe1a7..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/GrLink.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Grapheme_Link'
-#
-return <<'END';
-034F Grapheme_Link
-094D Grapheme_Link
-09CD Grapheme_Link
-0A4D Grapheme_Link
-0ACD Grapheme_Link
-0B4D Grapheme_Link
-0BCD Grapheme_Link
-0C4D Grapheme_Link
-0CCD Grapheme_Link
-0D4D Grapheme_Link
-0DCA Grapheme_Link
-0E3A Grapheme_Link
-1039 Grapheme_Link
-17D2 Grapheme_Link
-A806 Grapheme_Link
-10A3F Grapheme_Link
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Graph.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Graph.pl
deleted file mode 100644
index be38ba9505c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Graph.pl
+++ /dev/null
@@ -1,436 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Graph}
-#
-# Meaning: [[:Graph:]]
-#
-return <<'END';
-0021 007E
-00A1 0241
-0250 036F
-0374 0375
-037A
-037E
-0384 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 0486
-0488 04CE
-04D0 04F9
-0500 050F
-0531 0556
-0559 055F
-0561 0587
-0589 058A
-0591 05B9
-05BB 05C7
-05D0 05EA
-05F0 05F4
-0600 0603
-060B 0615
-061B
-061E 061F
-0621 063A
-0640 065E
-0660 070D
-070F 074A
-074D 076D
-0780 07B1
-0901 0939
-093C 094D
-0950 0954
-0958 0970
-097D
-0981 0983
-0985 098C
-098F 0990
-0993 09A8
-09AA 09B0
-09B2
-09B6 09B9
-09BC 09C4
-09C7 09C8
-09CB 09CE
-09D7
-09DC 09DD
-09DF 09E3
-09E6 09FA
-0A01 0A03
-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 0A8D
-0A8F 0A91
-0A93 0AA8
-0AAA 0AB0
-0AB2 0AB3
-0AB5 0AB9
-0ABC 0AC5
-0AC7 0AC9
-0ACB 0ACD
-0AD0
-0AE0 0AE3
-0AE6 0AEF
-0AF1
-0B01 0B03
-0B05 0B0C
-0B0F 0B10
-0B13 0B28
-0B2A 0B30
-0B32 0B33
-0B35 0B39
-0B3C 0B43
-0B47 0B48
-0B4B 0B4D
-0B56 0B57
-0B5C 0B5D
-0B5F 0B61
-0B66 0B71
-0B82 0B83
-0B85 0B8A
-0B8E 0B90
-0B92 0B95
-0B99 0B9A
-0B9C
-0B9E 0B9F
-0BA3 0BA4
-0BA8 0BAA
-0BAE 0BB9
-0BBE 0BC2
-0BC6 0BC8
-0BCA 0BCD
-0BD7
-0BE6 0BFA
-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
-0CBC 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 0FD1
-1000 1021
-1023 1027
-1029 102A
-102C 1032
-1036 1039
-1040 1059
-10A0 10C5
-10D0 10FC
-1100 1159
-115F 11A2
-11A8 11F9
-1200 1248
-124A 124D
-1250 1256
-1258
-125A 125D
-1260 1288
-128A 128D
-1290 12B0
-12B2 12B5
-12B8 12BE
-12C0
-12C2 12C5
-12C8 12D6
-12D8 1310
-1312 1315
-1318 135A
-135F 137C
-1380 1399
-13A0 13F4
-1401 1676
-1681 169C
-16A0 16F0
-1700 170C
-170E 1714
-1720 1736
-1740 1753
-1760 176C
-176E 1770
-1772 1773
-1780 17DD
-17E0 17E9
-17F0 17F9
-1800 180D
-1810 1819
-1820 1877
-1880 18A9
-1900 191C
-1920 192B
-1930 193B
-1940
-1944 196D
-1970 1974
-1980 19A9
-19B0 19C9
-19D0 19D9
-19DE 1A1B
-1A1E 1A1F
-1D00 1DC3
-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
-200B 2027
-202A 202E
-2030 205E
-2060 2063
-206A 2071
-2074 208E
-2090 2094
-20A0 20B5
-20D0 20EB
-2100 214C
-2153 2183
-2190 23DB
-2400 2426
-2440 244A
-2460 269C
-26A0 26B1
-2701 2704
-2706 2709
-270C 2727
-2729 274B
-274D
-274F 2752
-2756
-2758 275E
-2761 2794
-2798 27AF
-27B1 27BE
-27C0 27C6
-27D0 27EB
-27F0 2B13
-2C00 2C2E
-2C30 2C5E
-2C80 2CEA
-2CF9 2D25
-2D30 2D65
-2D6F
-2D80 2D96
-2DA0 2DA6
-2DA8 2DAE
-2DB0 2DB6
-2DB8 2DBE
-2DC0 2DC6
-2DC8 2DCE
-2DD0 2DD6
-2DD8 2DDE
-2E00 2E17
-2E1C 2E1D
-2E80 2E99
-2E9B 2EF3
-2F00 2FD5
-2FF0 2FFB
-3001 303F
-3041 3096
-3099 30FF
-3105 312C
-3131 318E
-3190 31B7
-31C0 31CF
-31F0 321E
-3220 3243
-3250 32FE
-3300 4DB5
-4DC0 9FBB
-A000 A48C
-A490 A4C6
-A700 A716
-A800 A82B
-AC00 D7A3
-E000 FA2D
-FA30 FA6A
-FA70 FAD9
-FB00 FB06
-FB13 FB17
-FB1D FB36
-FB38 FB3C
-FB3E
-FB40 FB41
-FB43 FB44
-FB46 FBB1
-FBD3 FD3F
-FD50 FD8F
-FD92 FDC7
-FDF0 FDFD
-FE00 FE19
-FE20 FE23
-FE30 FE52
-FE54 FE66
-FE68 FE6B
-FE70 FE74
-FE76 FEFC
-FEFF
-FF01 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-FFE0 FFE6
-FFE8 FFEE
-FFF9 FFFD
-10000 1000B
-1000D 10026
-10028 1003A
-1003C 1003D
-1003F 1004D
-10050 1005D
-10080 100FA
-10100 10102
-10107 10133
-10137 1018A
-10300 1031E
-10320 10323
-10330 1034A
-10380 1039D
-1039F 103C3
-103C8 103D5
-10400 1049D
-104A0 104A9
-10800 10805
-10808
-1080A 10835
-10837 10838
-1083C
-1083F
-10A00 10A03
-10A05 10A06
-10A0C 10A13
-10A15 10A17
-10A19 10A33
-10A38 10A3A
-10A3F 10A47
-10A50 10A58
-1D000 1D0F5
-1D100 1D126
-1D12A 1D1DD
-1D200 1D245
-1D300 1D356
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A5
-1D6A8 1D7C9
-1D7CE 1D7FF
-20000 2A6D6
-2F800 2FA1D
-E0001
-E0020 E007F
-E0100 E01EF
-F0000 FFFFD
-100000 10FFFD
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Grapheme.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Grapheme.pl
deleted file mode 100644
index b01db81fb31..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Grapheme.pl
+++ /dev/null
@@ -1,28 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{GraphemeLink} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Grapheme_Link'
-#
-return <<'END';
-034F Grapheme_Link
-094D Grapheme_Link
-09CD Grapheme_Link
-0A4D Grapheme_Link
-0ACD Grapheme_Link
-0B4D Grapheme_Link
-0BCD Grapheme_Link
-0C4D Grapheme_Link
-0CCD Grapheme_Link
-0D4D Grapheme_Link
-0DCA Grapheme_Link
-0E3A Grapheme_Link
-1039 Grapheme_Link
-17D2 Grapheme_Link
-A806 Grapheme_Link
-10A3F Grapheme_Link
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Grek.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Grek.pl
deleted file mode 100644
index 6dce82bb2db..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Grek.pl
+++ /dev/null
@@ -1,43 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Greek} (and fuzzy permutations)
-#
-# Meaning: Script 'Greek'
-#
-return <<'END';
-0374 0375 Greek
-037A Greek
-0384 0386 Greek
-0388 038A Greek
-038C Greek
-038E 03A1 Greek
-03A3 03CE Greek
-03D0 03E1 Greek
-03F0 03FF Greek
-1D26 1D2A Greek
-1D5D 1D61 Greek
-1D66 1D6A Greek
-1F00 1F15 Greek
-1F18 1F1D Greek
-1F20 1F45 Greek
-1F48 1F4D Greek
-1F50 1F57 Greek
-1F59 Greek
-1F5B Greek
-1F5D Greek
-1F5F 1F7D Greek
-1F80 1FB4 Greek
-1FB6 1FC4 Greek
-1FC6 1FD3 Greek
-1FD6 1FDB Greek
-1FDD 1FEF Greek
-1FF2 1FF4 Greek
-1FF6 1FFE Greek
-2126 Greek
-10140 1018A Greek
-1D200 1D245 Greek
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Gujr.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Gujr.pl
deleted file mode 100644
index b35bce38c9f..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Gujr.pl
+++ /dev/null
@@ -1,26 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Gujarati} (and fuzzy permutations)
-#
-# Meaning: Script 'Gujarati'
-#
-return <<'END';
-0A81 0A83 Gujarati
-0A85 0A8D Gujarati
-0A8F 0A91 Gujarati
-0A93 0AA8 Gujarati
-0AAA 0AB0 Gujarati
-0AB2 0AB3 Gujarati
-0AB5 0AB9 Gujarati
-0ABC 0AC5 Gujarati
-0AC7 0AC9 Gujarati
-0ACB 0ACD Gujarati
-0AD0 Gujarati
-0AE0 0AE3 Gujarati
-0AE6 0AEF Gujarati
-0AF1 Gujarati
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Guru.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Guru.pl
deleted file mode 100644
index 7525edc2ef0..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Guru.pl
+++ /dev/null
@@ -1,27 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Gurmukhi} (and fuzzy permutations)
-#
-# Meaning: Script 'Gurmukhi'
-#
-return <<'END';
-0A01 0A03 Gurmukhi
-0A05 0A0A Gurmukhi
-0A0F 0A10 Gurmukhi
-0A13 0A28 Gurmukhi
-0A2A 0A30 Gurmukhi
-0A32 0A33 Gurmukhi
-0A35 0A36 Gurmukhi
-0A38 0A39 Gurmukhi
-0A3C Gurmukhi
-0A3E 0A42 Gurmukhi
-0A47 0A48 Gurmukhi
-0A4B 0A4D Gurmukhi
-0A59 0A5C Gurmukhi
-0A5E Gurmukhi
-0A66 0A74 Gurmukhi
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hang.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hang.pl
deleted file mode 100644
index d7de1eaf34e..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hang.pl
+++ /dev/null
@@ -1,24 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Hangul} (and fuzzy permutations)
-#
-# Meaning: Script 'Hangul'
-#
-return <<'END';
-1100 1159 Hangul
-115F 11A2 Hangul
-11A8 11F9 Hangul
-3131 318E Hangul
-3200 321E Hangul
-3260 327D Hangul
-AC00 D7A3 Hangul
-FFA0 FFBE Hangul
-FFC2 FFC7 Hangul
-FFCA FFCF Hangul
-FFD2 FFD7 Hangul
-FFDA FFDC Hangul
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hani.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hani.pl
deleted file mode 100644
index e641a71d69e..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hani.pl
+++ /dev/null
@@ -1,26 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Han} (and fuzzy permutations)
-#
-# Meaning: Script 'Han'
-#
-return <<'END';
-2E80 2E99 Han
-2E9B 2EF3 Han
-2F00 2FD5 Han
-3005 Han
-3007 Han
-3021 3029 Han
-3038 303B Han
-3400 4DB5 Han
-4E00 9FBB Han
-F900 FA2D Han
-FA30 FA6A Han
-FA70 FAD9 Han
-20000 2A6D6 Han
-2F800 2FA1D Han
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hano.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hano.pl
deleted file mode 100644
index f11def791e4..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hano.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Hanunoo} (and fuzzy permutations)
-#
-# Meaning: Script 'Hanunoo'
-#
-return <<'END';
-1720 1734 Hanunoo
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hebr.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hebr.pl
deleted file mode 100644
index bdb6829c218..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hebr.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Hebrew} (and fuzzy permutations)
-#
-# Meaning: Script 'Hebrew'
-#
-return <<'END';
-0591 05B9 Hebrew
-05BB 05C7 Hebrew
-05D0 05EA Hebrew
-05F0 05F4 Hebrew
-FB1D FB36 Hebrew
-FB38 FB3C Hebrew
-FB3E Hebrew
-FB40 FB41 Hebrew
-FB43 FB44 Hebrew
-FB46 FB4F Hebrew
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hex.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hex.pl
deleted file mode 100644
index 328d4abaaf1..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hex.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Hex_Digit'
-#
-return <<'END';
-0030 0039 Hex_Digit
-0041 0046 Hex_Digit
-0061 0066 Hex_Digit
-FF10 FF19 Hex_Digit
-FF21 FF26 Hex_Digit
-FF41 FF46 Hex_Digit
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/HexDigit.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/HexDigit.pl
deleted file mode 100644
index 83ce8547cf3..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/HexDigit.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{HexDigit} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Hex_Digit'
-#
-return <<'END';
-0030 0039 Hex_Digit
-0041 0046 Hex_Digit
-0061 0066 Hex_Digit
-FF10 FF19 Hex_Digit
-FF21 FF26 Hex_Digit
-FF41 FF46 Hex_Digit
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hira.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hira.pl
deleted file mode 100644
index 1b98d7c690c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hira.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Hiragana} (and fuzzy permutations)
-#
-# Meaning: Script 'Hiragana'
-#
-return <<'END';
-3041 3096 Hiragana
-309D 309F Hiragana
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hyphen.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hyphen.pl
deleted file mode 100644
index 8741bf21b0a..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hyphen.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Hyphen'
-#
-return <<'END';
-002D Hyphen
-00AD Hyphen
-058A Hyphen
-1806 Hyphen
-2010 2011 Hyphen
-2E17 Hyphen
-30FB Hyphen
-FE63 Hyphen
-FF0D Hyphen
-FF65 Hyphen
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hyphen2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hyphen2.pl
deleted file mode 100644
index 387bfc0fa40..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Hyphen2.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Hyphen} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Hyphen'
-#
-return <<'END';
-002D Hyphen
-00AD Hyphen
-058A Hyphen
-1806 Hyphen
-2010 2011 Hyphen
-2E17 Hyphen
-30FB Hyphen
-FE63 Hyphen
-FF0D Hyphen
-FF65 Hyphen
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IDSB.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IDSB.pl
deleted file mode 100644
index b0282c29d26..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IDSB.pl
+++ /dev/null
@@ -1,11 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'IDS_Binary_Operator'
-#
-return <<'END';
-2FF0 2FF1 IDS_Binary_Operator
-2FF4 2FFB IDS_Binary_Operator
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IDST.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IDST.pl
deleted file mode 100644
index 7bafc477652..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IDST.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'IDS_Trinary_Operator'
-#
-return <<'END';
-2FF2 2FF3 IDS_Trinary_Operator
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IdContin.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IdContin.pl
deleted file mode 100644
index 324e85f68f8..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IdContin.pl
+++ /dev/null
@@ -1,460 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{IdContinue} (and fuzzy permutations)
-#
-# Meaning: [\p{ID_Start}\p{Mn}\p{Mc}\p{Nd}\p{Pc}]
-#
-return <<'END';
-0030 0039
-0041 005A
-005F
-0061 007A
-00AA
-00B5
-00BA
-00C0 00D6
-00D8 00F6
-00F8 0241
-0250 02C1
-02C6 02D1
-02E0 02E4
-02EE
-0300 036F
-037A
-0386
-0388 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 03F5
-03F7 0481
-0483 0486
-048A 04CE
-04D0 04F9
-0500 050F
-0531 0556
-0559
-0561 0587
-0591 05B9
-05BB 05BD
-05BF
-05C1 05C2
-05C4 05C5
-05C7
-05D0 05EA
-05F0 05F2
-0610 0615
-0621 063A
-0640 065E
-0660 0669
-066E 06D3
-06D5 06DC
-06DF 06E8
-06EA 06FC
-06FF
-0710 074A
-074D 076D
-0780 07B1
-0901 0939
-093C 094D
-0950 0954
-0958 0963
-0966 096F
-097D
-0981 0983
-0985 098C
-098F 0990
-0993 09A8
-09AA 09B0
-09B2
-09B6 09B9
-09BC 09C4
-09C7 09C8
-09CB 09CE
-09D7
-09DC 09DD
-09DF 09E3
-09E6 09F1
-0A01 0A03
-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 0A8D
-0A8F 0A91
-0A93 0AA8
-0AAA 0AB0
-0AB2 0AB3
-0AB5 0AB9
-0ABC 0AC5
-0AC7 0AC9
-0ACB 0ACD
-0AD0
-0AE0 0AE3
-0AE6 0AEF
-0B01 0B03
-0B05 0B0C
-0B0F 0B10
-0B13 0B28
-0B2A 0B30
-0B32 0B33
-0B35 0B39
-0B3C 0B43
-0B47 0B48
-0B4B 0B4D
-0B56 0B57
-0B5C 0B5D
-0B5F 0B61
-0B66 0B6F
-0B71
-0B82 0B83
-0B85 0B8A
-0B8E 0B90
-0B92 0B95
-0B99 0B9A
-0B9C
-0B9E 0B9F
-0BA3 0BA4
-0BA8 0BAA
-0BAE 0BB9
-0BBE 0BC2
-0BC6 0BC8
-0BCA 0BCD
-0BD7
-0BE6 0BEF
-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
-0CBC 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 0DF3
-0E01 0E3A
-0E40 0E4E
-0E50 0E59
-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
-0F18 0F19
-0F20 0F29
-0F35
-0F37
-0F39
-0F3E 0F47
-0F49 0F6A
-0F71 0F84
-0F86 0F8B
-0F90 0F97
-0F99 0FBC
-0FC6
-1000 1021
-1023 1027
-1029 102A
-102C 1032
-1036 1039
-1040 1049
-1050 1059
-10A0 10C5
-10D0 10FA
-10FC
-1100 1159
-115F 11A2
-11A8 11F9
-1200 1248
-124A 124D
-1250 1256
-1258
-125A 125D
-1260 1288
-128A 128D
-1290 12B0
-12B2 12B5
-12B8 12BE
-12C0
-12C2 12C5
-12C8 12D6
-12D8 1310
-1312 1315
-1318 135A
-135F
-1380 138F
-13A0 13F4
-1401 166C
-166F 1676
-1681 169A
-16A0 16EA
-16EE 16F0
-1700 170C
-170E 1714
-1720 1734
-1740 1753
-1760 176C
-176E 1770
-1772 1773
-1780 17B3
-17B6 17D3
-17D7
-17DC 17DD
-17E0 17E9
-180B 180D
-1810 1819
-1820 1877
-1880 18A9
-1900 191C
-1920 192B
-1930 193B
-1946 196D
-1970 1974
-1980 19A9
-19B0 19C9
-19D0 19D9
-1A00 1A1B
-1D00 1DC3
-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
-203F 2040
-2054
-2071
-207F
-2090 2094
-20D0 20DC
-20E1
-20E5 20EB
-2102
-2107
-210A 2113
-2115
-2119 211D
-2124
-2126
-2128
-212A 212D
-212F 2131
-2133 2139
-213C 213F
-2145 2149
-2160 2183
-2C00 2C2E
-2C30 2C5E
-2C80 2CE4
-2D00 2D25
-2D30 2D65
-2D6F
-2D80 2D96
-2DA0 2DA6
-2DA8 2DAE
-2DB0 2DB6
-2DB8 2DBE
-2DC0 2DC6
-2DC8 2DCE
-2DD0 2DD6
-2DD8 2DDE
-3005 3007
-3021 302F
-3031 3035
-3038 303C
-3041 3096
-3099 309A
-309D 309F
-30A1 30FA
-30FC 30FF
-3105 312C
-3131 318E
-31A0 31B7
-31F0 31FF
-3400 4DB5
-4E00 9FBB
-A000 A48C
-A800 A827
-AC00 D7A3
-F900 FA2D
-FA30 FA6A
-FA70 FAD9
-FB00 FB06
-FB13 FB17
-FB1D FB28
-FB2A FB36
-FB38 FB3C
-FB3E
-FB40 FB41
-FB43 FB44
-FB46 FBB1
-FBD3 FD3D
-FD50 FD8F
-FD92 FDC7
-FDF0 FDFB
-FE00 FE0F
-FE20 FE23
-FE33 FE34
-FE4D FE4F
-FE70 FE74
-FE76 FEFC
-FF10 FF19
-FF21 FF3A
-FF3F
-FF41 FF5A
-FF66 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-10000 1000B
-1000D 10026
-10028 1003A
-1003C 1003D
-1003F 1004D
-10050 1005D
-10080 100FA
-10140 10174
-10300 1031E
-10330 1034A
-10380 1039D
-103A0 103C3
-103C8 103CF
-103D1 103D5
-10400 1049D
-104A0 104A9
-10800 10805
-10808
-1080A 10835
-10837 10838
-1083C
-1083F
-10A00 10A03
-10A05 10A06
-10A0C 10A13
-10A15 10A17
-10A19 10A33
-10A38 10A3A
-10A3F
-1D165 1D169
-1D16D 1D172
-1D17B 1D182
-1D185 1D18B
-1D1AA 1D1AD
-1D242 1D244
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A5
-1D6A8 1D6C0
-1D6C2 1D6DA
-1D6DC 1D6FA
-1D6FC 1D714
-1D716 1D734
-1D736 1D74E
-1D750 1D76E
-1D770 1D788
-1D78A 1D7A8
-1D7AA 1D7C2
-1D7C4 1D7C9
-1D7CE 1D7FF
-20000 2A6D6
-2F800 2FA1D
-E0100 E01EF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IdStart.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IdStart.pl
deleted file mode 100644
index 36b6b51a205..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IdStart.pl
+++ /dev/null
@@ -1,364 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{IdStart} (and fuzzy permutations)
-#
-# Meaning: [\p{Ll}\p{Lu}\p{Lt}\p{Lm}\p{Lo}\p{Nl}]
-#
-return <<'END';
-0041 005A
-0061 007A
-00AA
-00B5
-00BA
-00C0 00D6
-00D8 00F6
-00F8 0241
-0250 02C1
-02C6 02D1
-02E0 02E4
-02EE
-037A
-0386
-0388 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 03F5
-03F7 0481
-048A 04CE
-04D0 04F9
-0500 050F
-0531 0556
-0559
-0561 0587
-05D0 05EA
-05F0 05F2
-0621 063A
-0640 064A
-066E 066F
-0671 06D3
-06D5
-06E5 06E6
-06EE 06EF
-06FA 06FC
-06FF
-0710
-0712 072F
-074D 076D
-0780 07A5
-07B1
-0904 0939
-093D
-0950
-0958 0961
-097D
-0985 098C
-098F 0990
-0993 09A8
-09AA 09B0
-09B2
-09B6 09B9
-09BD
-09CE
-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 0A8D
-0A8F 0A91
-0A93 0AA8
-0AAA 0AB0
-0AB2 0AB3
-0AB5 0AB9
-0ABD
-0AD0
-0AE0 0AE1
-0B05 0B0C
-0B0F 0B10
-0B13 0B28
-0B2A 0B30
-0B32 0B33
-0B35 0B39
-0B3D
-0B5C 0B5D
-0B5F 0B61
-0B71
-0B83
-0B85 0B8A
-0B8E 0B90
-0B92 0B95
-0B99 0B9A
-0B9C
-0B9E 0B9F
-0BA3 0BA4
-0BA8 0BAA
-0BAE 0BB9
-0C05 0C0C
-0C0E 0C10
-0C12 0C28
-0C2A 0C33
-0C35 0C39
-0C60 0C61
-0C85 0C8C
-0C8E 0C90
-0C92 0CA8
-0CAA 0CB3
-0CB5 0CB9
-0CBD
-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 10FA
-10FC
-1100 1159
-115F 11A2
-11A8 11F9
-1200 1248
-124A 124D
-1250 1256
-1258
-125A 125D
-1260 1288
-128A 128D
-1290 12B0
-12B2 12B5
-12B8 12BE
-12C0
-12C2 12C5
-12C8 12D6
-12D8 1310
-1312 1315
-1318 135A
-1380 138F
-13A0 13F4
-1401 166C
-166F 1676
-1681 169A
-16A0 16EA
-16EE 16F0
-1700 170C
-170E 1711
-1720 1731
-1740 1751
-1760 176C
-176E 1770
-1780 17B3
-17D7
-17DC
-1820 1877
-1880 18A8
-1900 191C
-1950 196D
-1970 1974
-1980 19A9
-19C1 19C7
-1A00 1A16
-1D00 1DBF
-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
-2071
-207F
-2090 2094
-2102
-2107
-210A 2113
-2115
-2119 211D
-2124
-2126
-2128
-212A 212D
-212F 2131
-2133 2139
-213C 213F
-2145 2149
-2160 2183
-2C00 2C2E
-2C30 2C5E
-2C80 2CE4
-2D00 2D25
-2D30 2D65
-2D6F
-2D80 2D96
-2DA0 2DA6
-2DA8 2DAE
-2DB0 2DB6
-2DB8 2DBE
-2DC0 2DC6
-2DC8 2DCE
-2DD0 2DD6
-2DD8 2DDE
-3005 3007
-3021 3029
-3031 3035
-3038 303C
-3041 3096
-309D 309F
-30A1 30FA
-30FC 30FF
-3105 312C
-3131 318E
-31A0 31B7
-31F0 31FF
-3400 4DB5
-4E00 9FBB
-A000 A48C
-A800 A801
-A803 A805
-A807 A80A
-A80C A822
-AC00 D7A3
-F900 FA2D
-FA30 FA6A
-FA70 FAD9
-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 FE74
-FE76 FEFC
-FF21 FF3A
-FF41 FF5A
-FF66 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-10000 1000B
-1000D 10026
-10028 1003A
-1003C 1003D
-1003F 1004D
-10050 1005D
-10080 100FA
-10140 10174
-10300 1031E
-10330 1034A
-10380 1039D
-103A0 103C3
-103C8 103CF
-103D1 103D5
-10400 1049D
-10800 10805
-10808
-1080A 10835
-10837 10838
-1083C
-1083F
-10A00
-10A10 10A13
-10A15 10A17
-10A19 10A33
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A5
-1D6A8 1D6C0
-1D6C2 1D6DA
-1D6DC 1D6FA
-1D6FC 1D714
-1D716 1D734
-1D736 1D74E
-1D750 1D76E
-1D770 1D788
-1D78A 1D7A8
-1D7AA 1D7C2
-1D7C4 1D7C9
-20000 2A6D6
-2F800 2FA1D
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ideo.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ideo.pl
deleted file mode 100644
index 1c5231cf614..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ideo.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Ideographic'
-#
-return <<'END';
-3006 3007 Ideographic
-3021 3029 Ideographic
-3038 303A Ideographic
-3400 4DB5 Ideographic
-4E00 9FBB Ideographic
-F900 FA2D Ideographic
-FA70 FAD9 Ideographic
-20000 2A6D6 Ideographic
-2F800 2FA1D Ideographic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ideograp.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ideograp.pl
deleted file mode 100644
index e102ddc5f9c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ideograp.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Ideographic} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Ideographic'
-#
-return <<'END';
-3006 3007 Ideographic
-3021 3029 Ideographic
-3038 303A Ideographic
-3400 4DB5 Ideographic
-4E00 9FBB Ideographic
-F900 FA2D Ideographic
-FA70 FAD9 Ideographic
-20000 2A6D6 Ideographic
-2F800 2FA1D Ideographic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IdsBinar.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IdsBinar.pl
deleted file mode 100644
index f4369d3c5d5..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IdsBinar.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{IdsBinaryOperator} (and fuzzy permutations)
-#
-# Meaning: Extended property 'IDS_Binary_Operator'
-#
-return <<'END';
-2FF0 2FF1 IDS_Binary_Operator
-2FF4 2FFB IDS_Binary_Operator
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IdsTrina.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IdsTrina.pl
deleted file mode 100644
index c670c87c9fd..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/IdsTrina.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{IdsTrinaryOperator} (and fuzzy permutations)
-#
-# Meaning: Extended property 'IDS_Trinary_Operator'
-#
-return <<'END';
-2FF2 2FF3 IDS_Trinary_Operator
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InAegean.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InAegean.pl
deleted file mode 100644
index cc79a027883..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InAegean.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InAegeanNumbers} (and fuzzy permutations)
-#
-# Meaning: Block 'Aegean Numbers'
-#
-return <<'END';
-10100 1013F Aegean Numbers
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InAlphab.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InAlphab.pl
deleted file mode 100644
index 077354b7014..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InAlphab.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InAlphabeticPresentationForms} (and fuzzy permutations)
-#
-# Meaning: Block 'Alphabetic Presentation Forms'
-#
-return <<'END';
-FB00 FB4F Alphabetic Presentation Forms
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InAncie2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InAncie2.pl
deleted file mode 100644
index 86bb0d1e934..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InAncie2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InAncientGreekMusicalNotation} (and fuzzy permutations)
-#
-# Meaning: Block 'Ancient Greek Musical Notation'
-#
-return <<'END';
-1D200 1D24F Ancient Greek Musical Notation
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InAncien.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InAncien.pl
deleted file mode 100644
index 7bd66942de4..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InAncien.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InAncientGreekNumbers} (and fuzzy permutations)
-#
-# Meaning: Block 'Ancient Greek Numbers'
-#
-return <<'END';
-10140 1018F Ancient Greek Numbers
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArabi2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArabi2.pl
deleted file mode 100644
index 8f51aa9c114..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArabi2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InArabicSupplement} (and fuzzy permutations)
-#
-# Meaning: Block 'Arabic Supplement'
-#
-return <<'END';
-0750 077F Arabic Supplement
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArabi3.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArabi3.pl
deleted file mode 100644
index 0c73cbaddba..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArabi3.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InArabicPresentationFormsB} (and fuzzy permutations)
-#
-# Meaning: Block 'Arabic Presentation Forms-B'
-#
-return <<'END';
-FE70 FEFF Arabic Presentation Forms-B
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArabi4.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArabi4.pl
deleted file mode 100644
index d05b7d9e62e..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArabi4.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InArabicPresentationFormsA} (and fuzzy permutations)
-#
-# Meaning: Block 'Arabic Presentation Forms-A'
-#
-return <<'END';
-FB50 FDFF Arabic Presentation Forms-A
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArabic.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArabic.pl
deleted file mode 100644
index aa60b068c6b..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArabic.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InArabic} (and fuzzy permutations)
-#
-# Meaning: Block 'Arabic'
-#
-return <<'END';
-0600 06FF Arabic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArmeni.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArmeni.pl
deleted file mode 100644
index 789cbc27e18..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArmeni.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InArmenian} (and fuzzy permutations)
-#
-# Meaning: Block 'Armenian'
-#
-return <<'END';
-0530 058F Armenian
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArrows.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArrows.pl
deleted file mode 100644
index 028e3e75465..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InArrows.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InArrows} (and fuzzy permutations)
-#
-# Meaning: Block 'Arrows'
-#
-return <<'END';
-2190 21FF Arrows
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBasicL.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBasicL.pl
deleted file mode 100644
index e1b019a4007..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBasicL.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InBasicLatin} (and fuzzy permutations)
-#
-# Meaning: Block 'Basic Latin'
-#
-return <<'END';
-0000 007F Basic Latin
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBengal.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBengal.pl
deleted file mode 100644
index 50b23eed58c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBengal.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InBengali} (and fuzzy permutations)
-#
-# Meaning: Block 'Bengali'
-#
-return <<'END';
-0980 09FF Bengali
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBlockE.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBlockE.pl
deleted file mode 100644
index a7fb74e514b..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBlockE.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InBlockElements} (and fuzzy permutations)
-#
-# Meaning: Block 'Block Elements'
-#
-return <<'END';
-2580 259F Block Elements
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBopom2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBopom2.pl
deleted file mode 100644
index 2e68025f4ba..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBopom2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InBopomofoExtended} (and fuzzy permutations)
-#
-# Meaning: Block 'Bopomofo Extended'
-#
-return <<'END';
-31A0 31BF Bopomofo Extended
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBopomo.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBopomo.pl
deleted file mode 100644
index b5ef89cfd72..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBopomo.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InBopomofo} (and fuzzy permutations)
-#
-# Meaning: Block 'Bopomofo'
-#
-return <<'END';
-3100 312F Bopomofo
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBoxDra.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBoxDra.pl
deleted file mode 100644
index f98d5b9ceff..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBoxDra.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InBoxDrawing} (and fuzzy permutations)
-#
-# Meaning: Block 'Box Drawing'
-#
-return <<'END';
-2500 257F Box Drawing
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBraill.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBraill.pl
deleted file mode 100644
index c3229754d8e..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBraill.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InBraillePatterns} (and fuzzy permutations)
-#
-# Meaning: Block 'Braille Patterns'
-#
-return <<'END';
-2800 28FF Braille Patterns
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBugine.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBugine.pl
deleted file mode 100644
index c9c343866bb..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBugine.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InBuginese} (and fuzzy permutations)
-#
-# Meaning: Block 'Buginese'
-#
-return <<'END';
-1A00 1A1F Buginese
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBuhid.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBuhid.pl
deleted file mode 100644
index 53c924ed26c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InBuhid.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InBuhid} (and fuzzy permutations)
-#
-# Meaning: Block 'Buhid'
-#
-return <<'END';
-1740 175F Buhid
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InByzant.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InByzant.pl
deleted file mode 100644
index 85d4bd0cc31..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InByzant.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InByzantineMusicalSymbols} (and fuzzy permutations)
-#
-# Meaning: Block 'Byzantine Musical Symbols'
-#
-return <<'END';
-1D000 1D0FF Byzantine Musical Symbols
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCherok.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCherok.pl
deleted file mode 100644
index cd72f1c1364..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCherok.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCherokee} (and fuzzy permutations)
-#
-# Meaning: Block 'Cherokee'
-#
-return <<'END';
-13A0 13FF Cherokee
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkCo2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkCo2.pl
deleted file mode 100644
index cc47a3717f4..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkCo2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCjkCompatibilityForms} (and fuzzy permutations)
-#
-# Meaning: Block 'CJK Compatibility Forms'
-#
-return <<'END';
-FE30 FE4F CJK Compatibility Forms
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkCo3.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkCo3.pl
deleted file mode 100644
index bf3387cd61d..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkCo3.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCjkCompatibilityIdeographs} (and fuzzy permutations)
-#
-# Meaning: Block 'CJK Compatibility Ideographs'
-#
-return <<'END';
-F900 FAFF CJK Compatibility Ideographs
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkCo4.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkCo4.pl
deleted file mode 100644
index 0e280e12d80..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkCo4.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCjkCompatibilityIdeographsSupplement} (and fuzzy permutations)
-#
-# Meaning: Block 'CJK Compatibility Ideographs Supplement'
-#
-return <<'END';
-2F800 2FA1F CJK Compatibility Ideographs Supplement
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkCom.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkCom.pl
deleted file mode 100644
index 28ddd82a363..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkCom.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCjkCompatibility} (and fuzzy permutations)
-#
-# Meaning: Block 'CJK Compatibility'
-#
-return <<'END';
-3300 33FF CJK Compatibility
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkRad.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkRad.pl
deleted file mode 100644
index d89d3db21ab..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkRad.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCjkRadicalsSupplement} (and fuzzy permutations)
-#
-# Meaning: Block 'CJK Radicals Supplement'
-#
-return <<'END';
-2E80 2EFF CJK Radicals Supplement
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkStr.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkStr.pl
deleted file mode 100644
index 0b3751b44cc..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkStr.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCjkStrokes} (and fuzzy permutations)
-#
-# Meaning: Block 'CJK Strokes'
-#
-return <<'END';
-31C0 31EF CJK Strokes
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkSym.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkSym.pl
deleted file mode 100644
index d40cb8942ad..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkSym.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCjkSymbolsAndPunctuation} (and fuzzy permutations)
-#
-# Meaning: Block 'CJK Symbols and Punctuation'
-#
-return <<'END';
-3000 303F CJK Symbols and Punctuation
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkUn2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkUn2.pl
deleted file mode 100644
index 1ef3202509b..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkUn2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCjkUnifiedIdeographsExtensionB} (and fuzzy permutations)
-#
-# Meaning: Block 'CJK Unified Ideographs Extension B'
-#
-return <<'END';
-20000 2A6DF CJK Unified Ideographs Extension B
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkUn3.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkUn3.pl
deleted file mode 100644
index 49496758c55..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkUn3.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCjkUnifiedIdeographsExtensionA} (and fuzzy permutations)
-#
-# Meaning: Block 'CJK Unified Ideographs Extension A'
-#
-return <<'END';
-3400 4DBF CJK Unified Ideographs Extension A
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkUni.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkUni.pl
deleted file mode 100644
index b6f4934beb3..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCjkUni.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCjkUnifiedIdeographs} (and fuzzy permutations)
-#
-# Meaning: Block 'CJK Unified Ideographs'
-#
-return <<'END';
-4E00 9FFF CJK Unified Ideographs
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCombi2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCombi2.pl
deleted file mode 100644
index 1d3f01809f3..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCombi2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCombiningDiacriticalMarks} (and fuzzy permutations)
-#
-# Meaning: Block 'Combining Diacritical Marks'
-#
-return <<'END';
-0300 036F Combining Diacritical Marks
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCombi3.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCombi3.pl
deleted file mode 100644
index db10c12f5ee..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCombi3.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCombiningDiacriticalMarksSupplement} (and fuzzy permutations)
-#
-# Meaning: Block 'Combining Diacritical Marks Supplement'
-#
-return <<'END';
-1DC0 1DFF Combining Diacritical Marks Supplement
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCombi4.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCombi4.pl
deleted file mode 100644
index 192f74bf1b0..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCombi4.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCombiningDiacriticalMarksForSymbols} (and fuzzy permutations)
-#
-# Meaning: Block 'Combining Diacritical Marks for Symbols'
-#
-return <<'END';
-20D0 20FF Combining Diacritical Marks for Symbols
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCombin.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCombin.pl
deleted file mode 100644
index 0bcbaa88331..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCombin.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCombiningHalfMarks} (and fuzzy permutations)
-#
-# Meaning: Block 'Combining Half Marks'
-#
-return <<'END';
-FE20 FE2F Combining Half Marks
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InContro.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InContro.pl
deleted file mode 100644
index 58274485166..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InContro.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InControlPictures} (and fuzzy permutations)
-#
-# Meaning: Block 'Control Pictures'
-#
-return <<'END';
-2400 243F Control Pictures
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCoptic.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCoptic.pl
deleted file mode 100644
index 0e60f4faf9a..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCoptic.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCoptic} (and fuzzy permutations)
-#
-# Meaning: Block 'Coptic'
-#
-return <<'END';
-2C80 2CFF Coptic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCurren.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCurren.pl
deleted file mode 100644
index c5778875dd4..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCurren.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCurrencySymbols} (and fuzzy permutations)
-#
-# Meaning: Block 'Currency Symbols'
-#
-return <<'END';
-20A0 20CF Currency Symbols
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCyprio.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCyprio.pl
deleted file mode 100644
index f1f53874a92..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCyprio.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCypriotSyllabary} (and fuzzy permutations)
-#
-# Meaning: Block 'Cypriot Syllabary'
-#
-return <<'END';
-10800 1083F Cypriot Syllabary
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCyril2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCyril2.pl
deleted file mode 100644
index 0f748ef501f..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCyril2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCyrillicSupplement} (and fuzzy permutations)
-#
-# Meaning: Block 'Cyrillic Supplement'
-#
-return <<'END';
-0500 052F Cyrillic Supplement
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCyrill.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCyrill.pl
deleted file mode 100644
index fc252cfcd5e..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InCyrill.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCyrillic} (and fuzzy permutations)
-#
-# Meaning: Block 'Cyrillic'
-#
-return <<'END';
-0400 04FF Cyrillic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InDesere.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InDesere.pl
deleted file mode 100644
index 1f670a5e540..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InDesere.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InDeseret} (and fuzzy permutations)
-#
-# Meaning: Block 'Deseret'
-#
-return <<'END';
-10400 1044F Deseret
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InDevana.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InDevana.pl
deleted file mode 100644
index 147b3ba239c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InDevana.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InDevanagari} (and fuzzy permutations)
-#
-# Meaning: Block 'Devanagari'
-#
-return <<'END';
-0900 097F Devanagari
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InDingba.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InDingba.pl
deleted file mode 100644
index 758fe902a39..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InDingba.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InDingbats} (and fuzzy permutations)
-#
-# Meaning: Block 'Dingbats'
-#
-return <<'END';
-2700 27BF Dingbats
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InEnclo2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InEnclo2.pl
deleted file mode 100644
index 8f040d22cf3..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InEnclo2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InEnclosedCjkLettersAndMonths} (and fuzzy permutations)
-#
-# Meaning: Block 'Enclosed CJK Letters and Months'
-#
-return <<'END';
-3200 32FF Enclosed CJK Letters and Months
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InEnclos.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InEnclos.pl
deleted file mode 100644
index 2a8fc240d4e..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InEnclos.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InEnclosedAlphanumerics} (and fuzzy permutations)
-#
-# Meaning: Block 'Enclosed Alphanumerics'
-#
-return <<'END';
-2460 24FF Enclosed Alphanumerics
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InEthio2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InEthio2.pl
deleted file mode 100644
index 0c3c5c9b66f..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InEthio2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InEthiopicExtended} (and fuzzy permutations)
-#
-# Meaning: Block 'Ethiopic Extended'
-#
-return <<'END';
-2D80 2DDF Ethiopic Extended
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InEthio3.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InEthio3.pl
deleted file mode 100644
index 026972adc84..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InEthio3.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InEthiopicSupplement} (and fuzzy permutations)
-#
-# Meaning: Block 'Ethiopic Supplement'
-#
-return <<'END';
-1380 139F Ethiopic Supplement
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InEthiop.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InEthiop.pl
deleted file mode 100644
index 5a9c8058c90..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InEthiop.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InEthiopic} (and fuzzy permutations)
-#
-# Meaning: Block 'Ethiopic'
-#
-return <<'END';
-1200 137F Ethiopic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGenera.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGenera.pl
deleted file mode 100644
index c8f64b98c15..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGenera.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InGeneralPunctuation} (and fuzzy permutations)
-#
-# Meaning: Block 'General Punctuation'
-#
-return <<'END';
-2000 206F General Punctuation
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGeomet.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGeomet.pl
deleted file mode 100644
index f6f80ef24e9..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGeomet.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InGeometricShapes} (and fuzzy permutations)
-#
-# Meaning: Block 'Geometric Shapes'
-#
-return <<'END';
-25A0 25FF Geometric Shapes
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGeorg2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGeorg2.pl
deleted file mode 100644
index 0af43cd13e1..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGeorg2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InGeorgianSupplement} (and fuzzy permutations)
-#
-# Meaning: Block 'Georgian Supplement'
-#
-return <<'END';
-2D00 2D2F Georgian Supplement
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGeorgi.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGeorgi.pl
deleted file mode 100644
index c91f2e01ddd..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGeorgi.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InGeorgian} (and fuzzy permutations)
-#
-# Meaning: Block 'Georgian'
-#
-return <<'END';
-10A0 10FF Georgian
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGlagol.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGlagol.pl
deleted file mode 100644
index c9f8d6ab8d6..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGlagol.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InGlagolitic} (and fuzzy permutations)
-#
-# Meaning: Block 'Glagolitic'
-#
-return <<'END';
-2C00 2C5F Glagolitic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGothic.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGothic.pl
deleted file mode 100644
index 8e6db64ce9f..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGothic.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InGothic} (and fuzzy permutations)
-#
-# Meaning: Block 'Gothic'
-#
-return <<'END';
-10330 1034F Gothic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGreekA.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGreekA.pl
deleted file mode 100644
index 404e9687525..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGreekA.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InGreekAndCoptic} (and fuzzy permutations)
-#
-# Meaning: Block 'Greek and Coptic'
-#
-return <<'END';
-0370 03FF Greek and Coptic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGreekE.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGreekE.pl
deleted file mode 100644
index 941e892f9cf..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGreekE.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InGreekExtended} (and fuzzy permutations)
-#
-# Meaning: Block 'Greek Extended'
-#
-return <<'END';
-1F00 1FFF Greek Extended
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGujara.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGujara.pl
deleted file mode 100644
index 6028b4411ed..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGujara.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InGujarati} (and fuzzy permutations)
-#
-# Meaning: Block 'Gujarati'
-#
-return <<'END';
-0A80 0AFF Gujarati
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGurmuk.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGurmuk.pl
deleted file mode 100644
index 53dbbdbde9b..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InGurmuk.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InGurmukhi} (and fuzzy permutations)
-#
-# Meaning: Block 'Gurmukhi'
-#
-return <<'END';
-0A00 0A7F Gurmukhi
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHalfwi.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHalfwi.pl
deleted file mode 100644
index a03cb114347..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHalfwi.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InHalfwidthAndFullwidthForms} (and fuzzy permutations)
-#
-# Meaning: Block 'Halfwidth and Fullwidth Forms'
-#
-return <<'END';
-FF00 FFEF Halfwidth and Fullwidth Forms
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHangu2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHangu2.pl
deleted file mode 100644
index 558674c704b..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHangu2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InHangulSyllables} (and fuzzy permutations)
-#
-# Meaning: Block 'Hangul Syllables'
-#
-return <<'END';
-AC00 D7AF Hangul Syllables
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHangu3.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHangu3.pl
deleted file mode 100644
index 87e35ea36e4..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHangu3.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InHangulCompatibilityJamo} (and fuzzy permutations)
-#
-# Meaning: Block 'Hangul Compatibility Jamo'
-#
-return <<'END';
-3130 318F Hangul Compatibility Jamo
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHangul.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHangul.pl
deleted file mode 100644
index c73c1650994..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHangul.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InHangulJamo} (and fuzzy permutations)
-#
-# Meaning: Block 'Hangul Jamo'
-#
-return <<'END';
-1100 11FF Hangul Jamo
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHanuno.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHanuno.pl
deleted file mode 100644
index 38802fff087..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHanuno.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InHanunoo} (and fuzzy permutations)
-#
-# Meaning: Block 'Hanunoo'
-#
-return <<'END';
-1720 173F Hanunoo
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHebrew.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHebrew.pl
deleted file mode 100644
index ab060cc410f..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHebrew.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InHebrew} (and fuzzy permutations)
-#
-# Meaning: Block 'Hebrew'
-#
-return <<'END';
-0590 05FF Hebrew
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHighPr.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHighPr.pl
deleted file mode 100644
index df0eaebc3cd..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHighPr.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InHighPrivateUseSurrogates} (and fuzzy permutations)
-#
-# Meaning: Block 'High Private Use Surrogates'
-#
-return <<'END';
-DB80 DBFF High Private Use Surrogates
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHighSu.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHighSu.pl
deleted file mode 100644
index 52d75820482..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHighSu.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InHighSurrogates} (and fuzzy permutations)
-#
-# Meaning: Block 'High Surrogates'
-#
-return <<'END';
-D800 DB7F High Surrogates
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHiraga.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHiraga.pl
deleted file mode 100644
index d683fc34abe..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InHiraga.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InHiragana} (and fuzzy permutations)
-#
-# Meaning: Block 'Hiragana'
-#
-return <<'END';
-3040 309F Hiragana
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InIdeogr.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InIdeogr.pl
deleted file mode 100644
index 9e5798a4792..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InIdeogr.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InIdeographicDescriptionCharacters} (and fuzzy permutations)
-#
-# Meaning: Block 'Ideographic Description Characters'
-#
-return <<'END';
-2FF0 2FFF Ideographic Description Characters
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InIpaExt.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InIpaExt.pl
deleted file mode 100644
index ad4bd5f3daf..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InIpaExt.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InIpaExtensions} (and fuzzy permutations)
-#
-# Meaning: Block 'IPA Extensions'
-#
-return <<'END';
-0250 02AF IPA Extensions
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKanbun.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKanbun.pl
deleted file mode 100644
index 86a2c184c53..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKanbun.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InKanbun} (and fuzzy permutations)
-#
-# Meaning: Block 'Kanbun'
-#
-return <<'END';
-3190 319F Kanbun
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKangxi.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKangxi.pl
deleted file mode 100644
index 4ad505a139f..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKangxi.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InKangxiRadicals} (and fuzzy permutations)
-#
-# Meaning: Block 'Kangxi Radicals'
-#
-return <<'END';
-2F00 2FDF Kangxi Radicals
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKannad.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKannad.pl
deleted file mode 100644
index fa11e21ef26..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKannad.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InKannada} (and fuzzy permutations)
-#
-# Meaning: Block 'Kannada'
-#
-return <<'END';
-0C80 0CFF Kannada
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKatak2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKatak2.pl
deleted file mode 100644
index 5be44f8eb36..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKatak2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InKatakanaPhoneticExtensions} (and fuzzy permutations)
-#
-# Meaning: Block 'Katakana Phonetic Extensions'
-#
-return <<'END';
-31F0 31FF Katakana Phonetic Extensions
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKataka.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKataka.pl
deleted file mode 100644
index 00abc4a8eab..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKataka.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InKatakana} (and fuzzy permutations)
-#
-# Meaning: Block 'Katakana'
-#
-return <<'END';
-30A0 30FF Katakana
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKharos.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKharos.pl
deleted file mode 100644
index d504623a164..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKharos.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InKharoshthi} (and fuzzy permutations)
-#
-# Meaning: Block 'Kharoshthi'
-#
-return <<'END';
-10A00 10A5F Kharoshthi
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKhmer.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKhmer.pl
deleted file mode 100644
index 062e5448eca..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKhmer.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InKhmer} (and fuzzy permutations)
-#
-# Meaning: Block 'Khmer'
-#
-return <<'END';
-1780 17FF Khmer
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKhmerS.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKhmerS.pl
deleted file mode 100644
index 4de36f31bfc..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InKhmerS.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InKhmerSymbols} (and fuzzy permutations)
-#
-# Meaning: Block 'Khmer Symbols'
-#
-return <<'END';
-19E0 19FF Khmer Symbols
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLao.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLao.pl
deleted file mode 100644
index 48d350e6b6a..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLao.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InLao} (and fuzzy permutations)
-#
-# Meaning: Block 'Lao'
-#
-return <<'END';
-0E80 0EFF Lao
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLatin1.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLatin1.pl
deleted file mode 100644
index 0c226d9dfe0..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLatin1.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InLatin1Supplement} (and fuzzy permutations)
-#
-# Meaning: Block 'Latin-1 Supplement'
-#
-return <<'END';
-0080 00FF Latin-1 Supplement
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLatin2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLatin2.pl
deleted file mode 100644
index 0cc83e013b3..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLatin2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InLatinExtendedA} (and fuzzy permutations)
-#
-# Meaning: Block 'Latin Extended-A'
-#
-return <<'END';
-0100 017F Latin Extended-A
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLatin3.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLatin3.pl
deleted file mode 100644
index 9e507e3698c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLatin3.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InLatinExtendedAdditional} (and fuzzy permutations)
-#
-# Meaning: Block 'Latin Extended Additional'
-#
-return <<'END';
-1E00 1EFF Latin Extended Additional
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLatinE.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLatinE.pl
deleted file mode 100644
index bcd85ce3f23..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLatinE.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InLatinExtendedB} (and fuzzy permutations)
-#
-# Meaning: Block 'Latin Extended-B'
-#
-return <<'END';
-0180 024F Latin Extended-B
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLetter.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLetter.pl
deleted file mode 100644
index 30cb9322c04..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLetter.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InLetterlikeSymbols} (and fuzzy permutations)
-#
-# Meaning: Block 'Letterlike Symbols'
-#
-return <<'END';
-2100 214F Letterlike Symbols
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLimbu.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLimbu.pl
deleted file mode 100644
index 18f69237c30..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLimbu.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InLimbu} (and fuzzy permutations)
-#
-# Meaning: Block 'Limbu'
-#
-return <<'END';
-1900 194F Limbu
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLinea2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLinea2.pl
deleted file mode 100644
index d988b319af2..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLinea2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InLinearBSyllabary} (and fuzzy permutations)
-#
-# Meaning: Block 'Linear B Syllabary'
-#
-return <<'END';
-10000 1007F Linear B Syllabary
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLinear.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLinear.pl
deleted file mode 100644
index 26fa532dbc4..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLinear.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InLinearBIdeograms} (and fuzzy permutations)
-#
-# Meaning: Block 'Linear B Ideograms'
-#
-return <<'END';
-10080 100FF Linear B Ideograms
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLowSur.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLowSur.pl
deleted file mode 100644
index 2a8df1afd9c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InLowSur.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InLowSurrogates} (and fuzzy permutations)
-#
-# Meaning: Block 'Low Surrogates'
-#
-return <<'END';
-DC00 DFFF Low Surrogates
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMalaya.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMalaya.pl
deleted file mode 100644
index 4963a2e752f..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMalaya.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InMalayalam} (and fuzzy permutations)
-#
-# Meaning: Block 'Malayalam'
-#
-return <<'END';
-0D00 0D7F Malayalam
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMathe2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMathe2.pl
deleted file mode 100644
index 28fad1fe920..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMathe2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InMathematicalAlphanumericSymbols} (and fuzzy permutations)
-#
-# Meaning: Block 'Mathematical Alphanumeric Symbols'
-#
-return <<'END';
-1D400 1D7FF Mathematical Alphanumeric Symbols
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMathem.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMathem.pl
deleted file mode 100644
index 7e4b77e48a1..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMathem.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InMathematicalOperators} (and fuzzy permutations)
-#
-# Meaning: Block 'Mathematical Operators'
-#
-return <<'END';
-2200 22FF Mathematical Operators
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMisce2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMisce2.pl
deleted file mode 100644
index cb5de83c684..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMisce2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InMiscellaneousTechnical} (and fuzzy permutations)
-#
-# Meaning: Block 'Miscellaneous Technical'
-#
-return <<'END';
-2300 23FF Miscellaneous Technical
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMisce3.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMisce3.pl
deleted file mode 100644
index 2df83f9e504..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMisce3.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InMiscellaneousSymbolsAndArrows} (and fuzzy permutations)
-#
-# Meaning: Block 'Miscellaneous Symbols and Arrows'
-#
-return <<'END';
-2B00 2BFF Miscellaneous Symbols and Arrows
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMisce4.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMisce4.pl
deleted file mode 100644
index 1be2bed9102..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMisce4.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InMiscellaneousMathematicalSymbolsA} (and fuzzy permutations)
-#
-# Meaning: Block 'Miscellaneous Mathematical Symbols-A'
-#
-return <<'END';
-27C0 27EF Miscellaneous Mathematical Symbols-A
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMisce5.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMisce5.pl
deleted file mode 100644
index 765410a21cd..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMisce5.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InMiscellaneousMathematicalSymbolsB} (and fuzzy permutations)
-#
-# Meaning: Block 'Miscellaneous Mathematical Symbols-B'
-#
-return <<'END';
-2980 29FF Miscellaneous Mathematical Symbols-B
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMiscel.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMiscel.pl
deleted file mode 100644
index e03e58a6407..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMiscel.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InMiscellaneousSymbols} (and fuzzy permutations)
-#
-# Meaning: Block 'Miscellaneous Symbols'
-#
-return <<'END';
-2600 26FF Miscellaneous Symbols
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InModifi.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InModifi.pl
deleted file mode 100644
index 301b68e2c7f..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InModifi.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InModifierToneLetters} (and fuzzy permutations)
-#
-# Meaning: Block 'Modifier Tone Letters'
-#
-return <<'END';
-A700 A71F Modifier Tone Letters
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMongol.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMongol.pl
deleted file mode 100644
index facdf8583bf..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMongol.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InMongolian} (and fuzzy permutations)
-#
-# Meaning: Block 'Mongolian'
-#
-return <<'END';
-1800 18AF Mongolian
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMusica.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMusica.pl
deleted file mode 100644
index e13a83ed3d2..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMusica.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InMusicalSymbols} (and fuzzy permutations)
-#
-# Meaning: Block 'Musical Symbols'
-#
-return <<'END';
-1D100 1D1FF Musical Symbols
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMyanma.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMyanma.pl
deleted file mode 100644
index 4fc596ad29d..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InMyanma.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InMyanmar} (and fuzzy permutations)
-#
-# Meaning: Block 'Myanmar'
-#
-return <<'END';
-1000 109F Myanmar
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InNewTai.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InNewTai.pl
deleted file mode 100644
index 8eb2d94520c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InNewTai.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InNewTaiLue} (and fuzzy permutations)
-#
-# Meaning: Block 'New Tai Lue'
-#
-return <<'END';
-1980 19DF New Tai Lue
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InNumber.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InNumber.pl
deleted file mode 100644
index e962dad1830..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InNumber.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InNumberForms} (and fuzzy permutations)
-#
-# Meaning: Block 'Number Forms'
-#
-return <<'END';
-2150 218F Number Forms
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOgham.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOgham.pl
deleted file mode 100644
index aabf05a0460..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOgham.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InOgham} (and fuzzy permutations)
-#
-# Meaning: Block 'Ogham'
-#
-return <<'END';
-1680 169F Ogham
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOldIta.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOldIta.pl
deleted file mode 100644
index 4a20df50380..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOldIta.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InOldItalic} (and fuzzy permutations)
-#
-# Meaning: Block 'Old Italic'
-#
-return <<'END';
-10300 1032F Old Italic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOldPer.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOldPer.pl
deleted file mode 100644
index 8cc534e29fe..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOldPer.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InOldPersian} (and fuzzy permutations)
-#
-# Meaning: Block 'Old Persian'
-#
-return <<'END';
-103A0 103DF Old Persian
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOptica.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOptica.pl
deleted file mode 100644
index a191ec9621e..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOptica.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InOpticalCharacterRecognition} (and fuzzy permutations)
-#
-# Meaning: Block 'Optical Character Recognition'
-#
-return <<'END';
-2440 245F Optical Character Recognition
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOriya.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOriya.pl
deleted file mode 100644
index a44c55a2615..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOriya.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InOriya} (and fuzzy permutations)
-#
-# Meaning: Block 'Oriya'
-#
-return <<'END';
-0B00 0B7F Oriya
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOsmany.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOsmany.pl
deleted file mode 100644
index 9ec5f8b7032..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InOsmany.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InOsmanya} (and fuzzy permutations)
-#
-# Meaning: Block 'Osmanya'
-#
-return <<'END';
-10480 104AF Osmanya
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InPhone2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InPhone2.pl
deleted file mode 100644
index f22e8d16d96..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InPhone2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InPhoneticExtensionsSupplement} (and fuzzy permutations)
-#
-# Meaning: Block 'Phonetic Extensions Supplement'
-#
-return <<'END';
-1D80 1DBF Phonetic Extensions Supplement
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InPhonet.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InPhonet.pl
deleted file mode 100644
index 017d026a9b1..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InPhonet.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InPhoneticExtensions} (and fuzzy permutations)
-#
-# Meaning: Block 'Phonetic Extensions'
-#
-return <<'END';
-1D00 1D7F Phonetic Extensions
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InPrivat.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InPrivat.pl
deleted file mode 100644
index 42fcd64103a..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InPrivat.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InPrivateUseArea} (and fuzzy permutations)
-#
-# Meaning: Block 'Private Use Area'
-#
-return <<'END';
-E000 F8FF Private Use Area
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InRunic.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InRunic.pl
deleted file mode 100644
index 786799e7052..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InRunic.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InRunic} (and fuzzy permutations)
-#
-# Meaning: Block 'Runic'
-#
-return <<'END';
-16A0 16FF Runic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InShavia.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InShavia.pl
deleted file mode 100644
index 341fb513954..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InShavia.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InShavian} (and fuzzy permutations)
-#
-# Meaning: Block 'Shavian'
-#
-return <<'END';
-10450 1047F Shavian
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSinhal.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSinhal.pl
deleted file mode 100644
index 6a374728ff2..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSinhal.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSinhala} (and fuzzy permutations)
-#
-# Meaning: Block 'Sinhala'
-#
-return <<'END';
-0D80 0DFF Sinhala
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSmallF.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSmallF.pl
deleted file mode 100644
index 011abec7579..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSmallF.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSmallFormVariants} (and fuzzy permutations)
-#
-# Meaning: Block 'Small Form Variants'
-#
-return <<'END';
-FE50 FE6F Small Form Variants
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSpacin.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSpacin.pl
deleted file mode 100644
index 960ec0adde1..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSpacin.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSpacingModifierLetters} (and fuzzy permutations)
-#
-# Meaning: Block 'Spacing Modifier Letters'
-#
-return <<'END';
-02B0 02FF Spacing Modifier Letters
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSpecia.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSpecia.pl
deleted file mode 100644
index 85771f6a27c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSpecia.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSpecials} (and fuzzy permutations)
-#
-# Meaning: Block 'Specials'
-#
-return <<'END';
-FFF0 FFFF Specials
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSupers.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSupers.pl
deleted file mode 100644
index df6a9adf689..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSupers.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSuperscriptsAndSubscripts} (and fuzzy permutations)
-#
-# Meaning: Block 'Superscripts and Subscripts'
-#
-return <<'END';
-2070 209F Superscripts and Subscripts
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSuppl2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSuppl2.pl
deleted file mode 100644
index d6201c7377c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSuppl2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSupplementalArrowsA} (and fuzzy permutations)
-#
-# Meaning: Block 'Supplemental Arrows-A'
-#
-return <<'END';
-27F0 27FF Supplemental Arrows-A
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSuppl3.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSuppl3.pl
deleted file mode 100644
index a1fe7ce5c03..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSuppl3.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSupplementalPunctuation} (and fuzzy permutations)
-#
-# Meaning: Block 'Supplemental Punctuation'
-#
-return <<'END';
-2E00 2E7F Supplemental Punctuation
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSuppl4.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSuppl4.pl
deleted file mode 100644
index ed610354f9d..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSuppl4.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSupplementaryPrivateUseAreaA} (and fuzzy permutations)
-#
-# Meaning: Block 'Supplementary Private Use Area-A'
-#
-return <<'END';
-F0000 FFFFF Supplementary Private Use Area-A
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSuppl5.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSuppl5.pl
deleted file mode 100644
index 19e3d669059..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSuppl5.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSupplementaryPrivateUseAreaB} (and fuzzy permutations)
-#
-# Meaning: Block 'Supplementary Private Use Area-B'
-#
-return <<'END';
-100000 10FFFF Supplementary Private Use Area-B
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSuppl6.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSuppl6.pl
deleted file mode 100644
index a5efef621a0..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSuppl6.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSupplementalMathematicalOperators} (and fuzzy permutations)
-#
-# Meaning: Block 'Supplemental Mathematical Operators'
-#
-return <<'END';
-2A00 2AFF Supplemental Mathematical Operators
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSupple.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSupple.pl
deleted file mode 100644
index 755dc683567..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSupple.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSupplementalArrowsB} (and fuzzy permutations)
-#
-# Meaning: Block 'Supplemental Arrows-B'
-#
-return <<'END';
-2900 297F Supplemental Arrows-B
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSyloti.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSyloti.pl
deleted file mode 100644
index d29f285b5e3..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSyloti.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSylotiNagri} (and fuzzy permutations)
-#
-# Meaning: Block 'Syloti Nagri'
-#
-return <<'END';
-A800 A82F Syloti Nagri
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSyriac.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSyriac.pl
deleted file mode 100644
index aed8b10fabf..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InSyriac.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSyriac} (and fuzzy permutations)
-#
-# Meaning: Block 'Syriac'
-#
-return <<'END';
-0700 074F Syriac
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTagalo.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTagalo.pl
deleted file mode 100644
index 32a9c5840df..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTagalo.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InTagalog} (and fuzzy permutations)
-#
-# Meaning: Block 'Tagalog'
-#
-return <<'END';
-1700 171F Tagalog
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTagban.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTagban.pl
deleted file mode 100644
index ed664910df1..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTagban.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InTagbanwa} (and fuzzy permutations)
-#
-# Meaning: Block 'Tagbanwa'
-#
-return <<'END';
-1760 177F Tagbanwa
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTags.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTags.pl
deleted file mode 100644
index 6dff3c0bff5..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTags.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InTags} (and fuzzy permutations)
-#
-# Meaning: Block 'Tags'
-#
-return <<'END';
-E0000 E007F Tags
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTaiLe.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTaiLe.pl
deleted file mode 100644
index f5e01dc6504..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTaiLe.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InTaiLe} (and fuzzy permutations)
-#
-# Meaning: Block 'Tai Le'
-#
-return <<'END';
-1950 197F Tai Le
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTaiXua.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTaiXua.pl
deleted file mode 100644
index 16bb6ec493a..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTaiXua.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InTaiXuanJingSymbols} (and fuzzy permutations)
-#
-# Meaning: Block 'Tai Xuan Jing Symbols'
-#
-return <<'END';
-1D300 1D35F Tai Xuan Jing Symbols
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTamil.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTamil.pl
deleted file mode 100644
index 8880319d95b..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTamil.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InTamil} (and fuzzy permutations)
-#
-# Meaning: Block 'Tamil'
-#
-return <<'END';
-0B80 0BFF Tamil
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTelugu.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTelugu.pl
deleted file mode 100644
index a67de0ac2ae..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTelugu.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InTelugu} (and fuzzy permutations)
-#
-# Meaning: Block 'Telugu'
-#
-return <<'END';
-0C00 0C7F Telugu
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InThaana.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InThaana.pl
deleted file mode 100644
index 118ea7217bd..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InThaana.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InThaana} (and fuzzy permutations)
-#
-# Meaning: Block 'Thaana'
-#
-return <<'END';
-0780 07BF Thaana
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InThai.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InThai.pl
deleted file mode 100644
index 584ac9c236f..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InThai.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InThai} (and fuzzy permutations)
-#
-# Meaning: Block 'Thai'
-#
-return <<'END';
-0E00 0E7F Thai
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTibeta.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTibeta.pl
deleted file mode 100644
index c91c5278534..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTibeta.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InTibetan} (and fuzzy permutations)
-#
-# Meaning: Block 'Tibetan'
-#
-return <<'END';
-0F00 0FFF Tibetan
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTifina.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTifina.pl
deleted file mode 100644
index 4035719d5a0..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InTifina.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InTifinagh} (and fuzzy permutations)
-#
-# Meaning: Block 'Tifinagh'
-#
-return <<'END';
-2D30 2D7F Tifinagh
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InUgarit.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InUgarit.pl
deleted file mode 100644
index e2b8b1a2f1c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InUgarit.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InUgaritic} (and fuzzy permutations)
-#
-# Meaning: Block 'Ugaritic'
-#
-return <<'END';
-10380 1039F Ugaritic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InUnifie.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InUnifie.pl
deleted file mode 100644
index 0eb4ecbe8f3..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InUnifie.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InUnifiedCanadianAboriginalSyllabics} (and fuzzy permutations)
-#
-# Meaning: Block 'Unified Canadian Aboriginal Syllabics'
-#
-return <<'END';
-1400 167F Unified Canadian Aboriginal Syllabics
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InVaria2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InVaria2.pl
deleted file mode 100644
index d6633f7ec5b..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InVaria2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InVariationSelectorsSupplement} (and fuzzy permutations)
-#
-# Meaning: Block 'Variation Selectors Supplement'
-#
-return <<'END';
-E0100 E01EF Variation Selectors Supplement
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InVariat.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InVariat.pl
deleted file mode 100644
index edd7cb38ea5..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InVariat.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InVariationSelectors} (and fuzzy permutations)
-#
-# Meaning: Block 'Variation Selectors'
-#
-return <<'END';
-FE00 FE0F Variation Selectors
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InVertic.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InVertic.pl
deleted file mode 100644
index c3a67dcd8a7..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InVertic.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InVerticalForms} (and fuzzy permutations)
-#
-# Meaning: Block 'Vertical Forms'
-#
-return <<'END';
-FE10 FE1F Vertical Forms
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InYiRadi.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InYiRadi.pl
deleted file mode 100644
index 92a91f2621f..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InYiRadi.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InYiRadicals} (and fuzzy permutations)
-#
-# Meaning: Block 'Yi Radicals'
-#
-return <<'END';
-A490 A4CF Yi Radicals
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InYiSyll.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InYiSyll.pl
deleted file mode 100644
index 1570090781b..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InYiSyll.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InYiSyllables} (and fuzzy permutations)
-#
-# Meaning: Block 'Yi Syllables'
-#
-return <<'END';
-A000 A48F Yi Syllables
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InYijing.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InYijing.pl
deleted file mode 100644
index 4253e74bc23..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/InYijing.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InYijingHexagramSymbols} (and fuzzy permutations)
-#
-# Meaning: Block 'Yijing Hexagram Symbols'
-#
-return <<'END';
-4DC0 4DFF Yijing Hexagram Symbols
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/JoinC.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/JoinC.pl
deleted file mode 100644
index eefe1c748b6..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/JoinC.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Join_Control'
-#
-return <<'END';
-200C 200D Join_Control
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/JoinCont.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/JoinCont.pl
deleted file mode 100644
index b75583f586e..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/JoinCont.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{JoinControl} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Join_Control'
-#
-return <<'END';
-200C 200D Join_Control
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Kana.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Kana.pl
deleted file mode 100644
index d544196323f..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Kana.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Katakana} (and fuzzy permutations)
-#
-# Meaning: Script 'Katakana'
-#
-return <<'END';
-30A1 30FA Katakana
-30FD 30FF Katakana
-31F0 31FF Katakana
-FF66 FF6F Katakana
-FF71 FF9D Katakana
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Khar.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Khar.pl
deleted file mode 100644
index 8197e1534b0..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Khar.pl
+++ /dev/null
@@ -1,20 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Kharoshthi} (and fuzzy permutations)
-#
-# Meaning: Script 'Kharoshthi'
-#
-return <<'END';
-10A00 10A03 Kharoshthi
-10A05 10A06 Kharoshthi
-10A0C 10A13 Kharoshthi
-10A15 10A17 Kharoshthi
-10A19 10A33 Kharoshthi
-10A38 10A3A Kharoshthi
-10A3F 10A47 Kharoshthi
-10A50 10A58 Kharoshthi
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Khmr.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Khmr.pl
deleted file mode 100644
index d1850f5b5a8..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Khmr.pl
+++ /dev/null
@@ -1,16 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Khmer} (and fuzzy permutations)
-#
-# Meaning: Script 'Khmer'
-#
-return <<'END';
-1780 17DD Khmer
-17E0 17E9 Khmer
-17F0 17F9 Khmer
-19E0 19FF Khmer
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Knda.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Knda.pl
deleted file mode 100644
index 0c2c23aa10b..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Knda.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Kannada} (and fuzzy permutations)
-#
-# Meaning: Script 'Kannada'
-#
-return <<'END';
-0C82 0C83 Kannada
-0C85 0C8C Kannada
-0C8E 0C90 Kannada
-0C92 0CA8 Kannada
-0CAA 0CB3 Kannada
-0CB5 0CB9 Kannada
-0CBC 0CC4 Kannada
-0CC6 0CC8 Kannada
-0CCA 0CCD Kannada
-0CD5 0CD6 Kannada
-0CDE Kannada
-0CE0 0CE1 Kannada
-0CE6 0CEF Kannada
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/L.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/L.pl
deleted file mode 100644
index bae3355a4b4..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/L.pl
+++ /dev/null
@@ -1,360 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{L}
-# \p{L} (and fuzzy permutations)
-#
-# Meaning: Major Category 'L'
-#
-return <<'END';
-0041 005A
-0061 007A
-00AA
-00B5
-00BA
-00C0 00D6
-00D8 00F6
-00F8 0241
-0250 02C1
-02C6 02D1
-02E0 02E4
-02EE
-037A
-0386
-0388 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 03F5
-03F7 0481
-048A 04CE
-04D0 04F9
-0500 050F
-0531 0556
-0559
-0561 0587
-05D0 05EA
-05F0 05F2
-0621 063A
-0640 064A
-066E 066F
-0671 06D3
-06D5
-06E5 06E6
-06EE 06EF
-06FA 06FC
-06FF
-0710
-0712 072F
-074D 076D
-0780 07A5
-07B1
-0904 0939
-093D
-0950
-0958 0961
-097D
-0985 098C
-098F 0990
-0993 09A8
-09AA 09B0
-09B2
-09B6 09B9
-09BD
-09CE
-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 0A8D
-0A8F 0A91
-0A93 0AA8
-0AAA 0AB0
-0AB2 0AB3
-0AB5 0AB9
-0ABD
-0AD0
-0AE0 0AE1
-0B05 0B0C
-0B0F 0B10
-0B13 0B28
-0B2A 0B30
-0B32 0B33
-0B35 0B39
-0B3D
-0B5C 0B5D
-0B5F 0B61
-0B71
-0B83
-0B85 0B8A
-0B8E 0B90
-0B92 0B95
-0B99 0B9A
-0B9C
-0B9E 0B9F
-0BA3 0BA4
-0BA8 0BAA
-0BAE 0BB9
-0C05 0C0C
-0C0E 0C10
-0C12 0C28
-0C2A 0C33
-0C35 0C39
-0C60 0C61
-0C85 0C8C
-0C8E 0C90
-0C92 0CA8
-0CAA 0CB3
-0CB5 0CB9
-0CBD
-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 10FA
-10FC
-1100 1159
-115F 11A2
-11A8 11F9
-1200 1248
-124A 124D
-1250 1256
-1258
-125A 125D
-1260 1288
-128A 128D
-1290 12B0
-12B2 12B5
-12B8 12BE
-12C0
-12C2 12C5
-12C8 12D6
-12D8 1310
-1312 1315
-1318 135A
-1380 138F
-13A0 13F4
-1401 166C
-166F 1676
-1681 169A
-16A0 16EA
-1700 170C
-170E 1711
-1720 1731
-1740 1751
-1760 176C
-176E 1770
-1780 17B3
-17D7
-17DC
-1820 1877
-1880 18A8
-1900 191C
-1950 196D
-1970 1974
-1980 19A9
-19C1 19C7
-1A00 1A16
-1D00 1DBF
-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
-2071
-207F
-2090 2094
-2102
-2107
-210A 2113
-2115
-2119 211D
-2124
-2126
-2128
-212A 212D
-212F 2131
-2133 2139
-213C 213F
-2145 2149
-2C00 2C2E
-2C30 2C5E
-2C80 2CE4
-2D00 2D25
-2D30 2D65
-2D6F
-2D80 2D96
-2DA0 2DA6
-2DA8 2DAE
-2DB0 2DB6
-2DB8 2DBE
-2DC0 2DC6
-2DC8 2DCE
-2DD0 2DD6
-2DD8 2DDE
-3005 3006
-3031 3035
-303B 303C
-3041 3096
-309D 309F
-30A1 30FA
-30FC 30FF
-3105 312C
-3131 318E
-31A0 31B7
-31F0 31FF
-3400 4DB5
-4E00 9FBB
-A000 A48C
-A800 A801
-A803 A805
-A807 A80A
-A80C A822
-AC00 D7A3
-F900 FA2D
-FA30 FA6A
-FA70 FAD9
-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 FE74
-FE76 FEFC
-FF21 FF3A
-FF41 FF5A
-FF66 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-10000 1000B
-1000D 10026
-10028 1003A
-1003C 1003D
-1003F 1004D
-10050 1005D
-10080 100FA
-10300 1031E
-10330 10349
-10380 1039D
-103A0 103C3
-103C8 103CF
-10400 1049D
-10800 10805
-10808
-1080A 10835
-10837 10838
-1083C
-1083F
-10A00
-10A10 10A13
-10A15 10A17
-10A19 10A33
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A5
-1D6A8 1D6C0
-1D6C2 1D6DA
-1D6DC 1D6FA
-1D6FC 1D714
-1D716 1D734
-1D736 1D74E
-1D750 1D76E
-1D770 1D788
-1D78A 1D7A8
-1D7AA 1D7C2
-1D7C4 1D7C9
-20000 2A6D6
-2F800 2FA1D
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/LC.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/LC.pl
deleted file mode 100644
index c86b0a6af8a..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/LC.pl
+++ /dev/null
@@ -1,116 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{LC}
-# \p{LC} (and fuzzy permutations)
-#
-# Meaning: [\p{Ll}\p{Lu}\p{Lt}]
-#
-return <<'END';
-0041 005A
-0061 007A
-00AA
-00B5
-00BA
-00C0 00D6
-00D8 00F6
-00F8 01BA
-01BC 01BF
-01C4 0241
-0250 02AF
-0386
-0388 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 03F5
-03F7 0481
-048A 04CE
-04D0 04F9
-0500 050F
-0531 0556
-0561 0587
-10A0 10C5
-1D00 1D2B
-1D62 1D77
-1D79 1D9A
-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
-2071
-207F
-2102
-2107
-210A 2113
-2115
-2119 211D
-2124
-2126
-2128
-212A 212D
-212F 2131
-2133 2134
-2139
-213C 213F
-2145 2149
-2C00 2C2E
-2C30 2C5E
-2C80 2CE4
-2D00 2D25
-FB00 FB06
-FB13 FB17
-FF21 FF3A
-FF41 FF5A
-10400 1044F
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A5
-1D6A8 1D6C0
-1D6C2 1D6DA
-1D6DC 1D6FA
-1D6FC 1D714
-1D716 1D734
-1D736 1D74E
-1D750 1D76E
-1D770 1D788
-1D78A 1D7A8
-1D7AA 1D7C2
-1D7C4 1D7C9
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/LOE.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/LOE.pl
deleted file mode 100644
index f82a91f1cf9..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/LOE.pl
+++ /dev/null
@@ -1,11 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Logical_Order_Exception'
-#
-return <<'END';
-0E40 0E44 Logical_Order_Exception
-0EC0 0EC4 Logical_Order_Exception
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Laoo.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Laoo.pl
deleted file mode 100644
index e34a6e44bc8..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Laoo.pl
+++ /dev/null
@@ -1,30 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Lao} (and fuzzy permutations)
-#
-# Meaning: Script 'Lao'
-#
-return <<'END';
-0E81 0E82 Lao
-0E84 Lao
-0E87 0E88 Lao
-0E8A Lao
-0E8D Lao
-0E94 0E97 Lao
-0E99 0E9F Lao
-0EA1 0EA3 Lao
-0EA5 Lao
-0EA7 Lao
-0EAA 0EAB Lao
-0EAD 0EB9 Lao
-0EBB 0EBD Lao
-0EC0 0EC4 Lao
-0EC6 Lao
-0EC8 0ECD Lao
-0ED0 0ED9 Lao
-0EDC 0EDD Lao
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Latn.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Latn.pl
deleted file mode 100644
index c5d4b83d5b2..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Latn.pl
+++ /dev/null
@@ -1,35 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Latin} (and fuzzy permutations)
-#
-# Meaning: Script 'Latin'
-#
-return <<'END';
-0041 005A Latin
-0061 007A Latin
-00AA Latin
-00BA Latin
-00C0 00D6 Latin
-00D8 00F6 Latin
-00F8 0241 Latin
-0250 02B8 Latin
-02E0 02E4 Latin
-1D00 1D25 Latin
-1D2C 1D5C Latin
-1D62 1D65 Latin
-1D6B 1D77 Latin
-1D79 1DBF Latin
-1E00 1E9B Latin
-1EA0 1EF9 Latin
-2071 Latin
-207F Latin
-2090 2094 Latin
-212A 212B Latin
-FB00 FB06 Latin
-FF21 FF3A Latin
-FF41 FF5A Latin
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Limb.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Limb.pl
deleted file mode 100644
index be5d715d4e2..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Limb.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Limbu} (and fuzzy permutations)
-#
-# Meaning: Script 'Limbu'
-#
-return <<'END';
-1900 191C Limbu
-1920 192B Limbu
-1930 193B Limbu
-1940 Limbu
-1944 194F Limbu
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/LinearB.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/LinearB.pl
deleted file mode 100644
index 04fb45a392b..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/LinearB.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{LinearB} (and fuzzy permutations)
-#
-# Meaning: Script 'Linear_B'
-#
-return <<'END';
-10000 1000B Linear_B
-1000D 10026 Linear_B
-10028 1003A Linear_B
-1003C 1003D Linear_B
-1003F 1004D Linear_B
-10050 1005D Linear_B
-10080 100FA Linear_B
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ll.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ll.pl
deleted file mode 100644
index 1d4db7696e3..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ll.pl
+++ /dev/null
@@ -1,493 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Ll}
-# \p{Ll} (and fuzzy permutations)
-#
-# Meaning: General Category 'Ll'
-#
-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
-0221
-0223
-0225
-0227
-0229
-022B
-022D
-022F
-0231
-0233 0239
-023C
-023F 0240
-0250 02AF
-0390
-03AC 03CE
-03D0 03D1
-03D5 03D7
-03D9
-03DB
-03DD
-03DF
-03E1
-03E3
-03E5
-03E7
-03E9
-03EB
-03ED
-03EF 03F3
-03F5
-03F8
-03FB 03FC
-0430 045F
-0461
-0463
-0465
-0467
-0469
-046B
-046D
-046F
-0471
-0473
-0475
-0477
-0479
-047B
-047D
-047F
-0481
-048B
-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
-04C6
-04C8
-04CA
-04CC
-04CE
-04D1
-04D3
-04D5
-04D7
-04D9
-04DB
-04DD
-04DF
-04E1
-04E3
-04E5
-04E7
-04E9
-04EB
-04ED
-04EF
-04F1
-04F3
-04F5
-04F7
-04F9
-0501
-0503
-0505
-0507
-0509
-050B
-050D
-050F
-0561 0587
-1D00 1D2B
-1D62 1D77
-1D79 1D9A
-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
-2071
-207F
-210A
-210E 210F
-2113
-212F
-2134
-2139
-213C 213D
-2146 2149
-2C30 2C5E
-2C81
-2C83
-2C85
-2C87
-2C89
-2C8B
-2C8D
-2C8F
-2C91
-2C93
-2C95
-2C97
-2C99
-2C9B
-2C9D
-2C9F
-2CA1
-2CA3
-2CA5
-2CA7
-2CA9
-2CAB
-2CAD
-2CAF
-2CB1
-2CB3
-2CB5
-2CB7
-2CB9
-2CBB
-2CBD
-2CBF
-2CC1
-2CC3
-2CC5
-2CC7
-2CC9
-2CCB
-2CCD
-2CCF
-2CD1
-2CD3
-2CD5
-2CD7
-2CD9
-2CDB
-2CDD
-2CDF
-2CE1
-2CE3 2CE4
-2D00 2D25
-FB00 FB06
-FB13 FB17
-FF41 FF5A
-10428 1044F
-1D41A 1D433
-1D44E 1D454
-1D456 1D467
-1D482 1D49B
-1D4B6 1D4B9
-1D4BB
-1D4BD 1D4C3
-1D4C5 1D4CF
-1D4EA 1D503
-1D51E 1D537
-1D552 1D56B
-1D586 1D59F
-1D5BA 1D5D3
-1D5EE 1D607
-1D622 1D63B
-1D656 1D66F
-1D68A 1D6A5
-1D6C2 1D6DA
-1D6DC 1D6E1
-1D6FC 1D714
-1D716 1D71B
-1D736 1D74E
-1D750 1D755
-1D770 1D788
-1D78A 1D78F
-1D7AA 1D7C2
-1D7C4 1D7C9
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lm.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lm.pl
deleted file mode 100644
index 7e1e28af9ed..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lm.pl
+++ /dev/null
@@ -1,39 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Lm}
-# \p{Lm} (and fuzzy permutations)
-#
-# Meaning: General Category 'Lm'
-#
-return <<'END';
-02B0 02C1
-02C6 02D1
-02E0 02E4
-02EE
-037A
-0559
-0640
-06E5 06E6
-0E46
-0EC6
-10FC
-17D7
-1843
-1D2C 1D61
-1D78
-1D9B 1DBF
-2090 2094
-2D6F
-3005
-3031 3035
-303B
-309D 309E
-30FC 30FE
-A015
-FF70
-FF9E FF9F
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lo.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lo.pl
deleted file mode 100644
index 7721bac7e20..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lo.pl
+++ /dev/null
@@ -1,258 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Lo}
-# \p{Lo} (and fuzzy permutations)
-#
-# Meaning: General Category 'Lo'
-#
-return <<'END';
-01BB
-01C0 01C3
-05D0 05EA
-05F0 05F2
-0621 063A
-0641 064A
-066E 066F
-0671 06D3
-06D5
-06EE 06EF
-06FA 06FC
-06FF
-0710
-0712 072F
-074D 076D
-0780 07A5
-07B1
-0904 0939
-093D
-0950
-0958 0961
-097D
-0985 098C
-098F 0990
-0993 09A8
-09AA 09B0
-09B2
-09B6 09B9
-09BD
-09CE
-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 0A8D
-0A8F 0A91
-0A93 0AA8
-0AAA 0AB0
-0AB2 0AB3
-0AB5 0AB9
-0ABD
-0AD0
-0AE0 0AE1
-0B05 0B0C
-0B0F 0B10
-0B13 0B28
-0B2A 0B30
-0B32 0B33
-0B35 0B39
-0B3D
-0B5C 0B5D
-0B5F 0B61
-0B71
-0B83
-0B85 0B8A
-0B8E 0B90
-0B92 0B95
-0B99 0B9A
-0B9C
-0B9E 0B9F
-0BA3 0BA4
-0BA8 0BAA
-0BAE 0BB9
-0C05 0C0C
-0C0E 0C10
-0C12 0C28
-0C2A 0C33
-0C35 0C39
-0C60 0C61
-0C85 0C8C
-0C8E 0C90
-0C92 0CA8
-0CAA 0CB3
-0CB5 0CB9
-0CBD
-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 10FA
-1100 1159
-115F 11A2
-11A8 11F9
-1200 1248
-124A 124D
-1250 1256
-1258
-125A 125D
-1260 1288
-128A 128D
-1290 12B0
-12B2 12B5
-12B8 12BE
-12C0
-12C2 12C5
-12C8 12D6
-12D8 1310
-1312 1315
-1318 135A
-1380 138F
-13A0 13F4
-1401 166C
-166F 1676
-1681 169A
-16A0 16EA
-1700 170C
-170E 1711
-1720 1731
-1740 1751
-1760 176C
-176E 1770
-1780 17B3
-17DC
-1820 1842
-1844 1877
-1880 18A8
-1900 191C
-1950 196D
-1970 1974
-1980 19A9
-19C1 19C7
-1A00 1A16
-2135 2138
-2D30 2D65
-2D80 2D96
-2DA0 2DA6
-2DA8 2DAE
-2DB0 2DB6
-2DB8 2DBE
-2DC0 2DC6
-2DC8 2DCE
-2DD0 2DD6
-2DD8 2DDE
-3006
-303C
-3041 3096
-309F
-30A1 30FA
-30FF
-3105 312C
-3131 318E
-31A0 31B7
-31F0 31FF
-3400 4DB5
-4E00 9FBB
-A000 A014
-A016 A48C
-A800 A801
-A803 A805
-A807 A80A
-A80C A822
-AC00 D7A3
-F900 FA2D
-FA30 FA6A
-FA70 FAD9
-FB1D
-FB1F FB28
-FB2A FB36
-FB38 FB3C
-FB3E
-FB40 FB41
-FB43 FB44
-FB46 FBB1
-FBD3 FD3D
-FD50 FD8F
-FD92 FDC7
-FDF0 FDFB
-FE70 FE74
-FE76 FEFC
-FF66 FF6F
-FF71 FF9D
-FFA0 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-10000 1000B
-1000D 10026
-10028 1003A
-1003C 1003D
-1003F 1004D
-10050 1005D
-10080 100FA
-10300 1031E
-10330 10349
-10380 1039D
-103A0 103C3
-103C8 103CF
-10450 1049D
-10800 10805
-10808
-1080A 10835
-10837 10838
-1083C
-1083F
-10A00
-10A10 10A13
-10A15 10A17
-10A19 10A33
-20000 2A6D6
-2F800 2FA1D
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/LogicalO.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/LogicalO.pl
deleted file mode 100644
index 72ed9fe581d..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/LogicalO.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{LogicalOrderException} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Logical_Order_Exception'
-#
-return <<'END';
-0E40 0E44 Logical_Order_Exception
-0EC0 0EC4 Logical_Order_Exception
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lower.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lower.pl
deleted file mode 100644
index f4208ffd909..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lower.pl
+++ /dev/null
@@ -1,492 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Lower}
-#
-# Meaning: [[:Lower:]]
-#
-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
-0221
-0223
-0225
-0227
-0229
-022B
-022D
-022F
-0231
-0233 0239
-023C
-023F 0240
-0250 02AF
-0390
-03AC 03CE
-03D0 03D1
-03D5 03D7
-03D9
-03DB
-03DD
-03DF
-03E1
-03E3
-03E5
-03E7
-03E9
-03EB
-03ED
-03EF 03F3
-03F5
-03F8
-03FB 03FC
-0430 045F
-0461
-0463
-0465
-0467
-0469
-046B
-046D
-046F
-0471
-0473
-0475
-0477
-0479
-047B
-047D
-047F
-0481
-048B
-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
-04C6
-04C8
-04CA
-04CC
-04CE
-04D1
-04D3
-04D5
-04D7
-04D9
-04DB
-04DD
-04DF
-04E1
-04E3
-04E5
-04E7
-04E9
-04EB
-04ED
-04EF
-04F1
-04F3
-04F5
-04F7
-04F9
-0501
-0503
-0505
-0507
-0509
-050B
-050D
-050F
-0561 0587
-1D00 1D2B
-1D62 1D77
-1D79 1D9A
-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
-2071
-207F
-210A
-210E 210F
-2113
-212F
-2134
-2139
-213C 213D
-2146 2149
-2C30 2C5E
-2C81
-2C83
-2C85
-2C87
-2C89
-2C8B
-2C8D
-2C8F
-2C91
-2C93
-2C95
-2C97
-2C99
-2C9B
-2C9D
-2C9F
-2CA1
-2CA3
-2CA5
-2CA7
-2CA9
-2CAB
-2CAD
-2CAF
-2CB1
-2CB3
-2CB5
-2CB7
-2CB9
-2CBB
-2CBD
-2CBF
-2CC1
-2CC3
-2CC5
-2CC7
-2CC9
-2CCB
-2CCD
-2CCF
-2CD1
-2CD3
-2CD5
-2CD7
-2CD9
-2CDB
-2CDD
-2CDF
-2CE1
-2CE3 2CE4
-2D00 2D25
-FB00 FB06
-FB13 FB17
-FF41 FF5A
-10428 1044F
-1D41A 1D433
-1D44E 1D454
-1D456 1D467
-1D482 1D49B
-1D4B6 1D4B9
-1D4BB
-1D4BD 1D4C3
-1D4C5 1D4CF
-1D4EA 1D503
-1D51E 1D537
-1D552 1D56B
-1D586 1D59F
-1D5BA 1D5D3
-1D5EE 1D607
-1D622 1D63B
-1D656 1D66F
-1D68A 1D6A5
-1D6C2 1D6DA
-1D6DC 1D6E1
-1D6FC 1D714
-1D716 1D71B
-1D736 1D74E
-1D750 1D755
-1D770 1D788
-1D78A 1D78F
-1D7AA 1D7C2
-1D7C4 1D7C9
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lowercas.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lowercas.pl
deleted file mode 100644
index 86dd301eec8..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lowercas.pl
+++ /dev/null
@@ -1,497 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Lowercase} (and fuzzy permutations)
-#
-# Meaning: [\p{Ll}\p{OtherLowercase}]
-#
-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
-0221
-0223
-0225
-0227
-0229
-022B
-022D
-022F
-0231
-0233 0239
-023C
-023F 0240
-0250 02B8
-02C0 02C1
-02E0 02E4
-0345
-037A
-0390
-03AC 03CE
-03D0 03D1
-03D5 03D7
-03D9
-03DB
-03DD
-03DF
-03E1
-03E3
-03E5
-03E7
-03E9
-03EB
-03ED
-03EF 03F3
-03F5
-03F8
-03FB 03FC
-0430 045F
-0461
-0463
-0465
-0467
-0469
-046B
-046D
-046F
-0471
-0473
-0475
-0477
-0479
-047B
-047D
-047F
-0481
-048B
-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
-04C6
-04C8
-04CA
-04CC
-04CE
-04D1
-04D3
-04D5
-04D7
-04D9
-04DB
-04DD
-04DF
-04E1
-04E3
-04E5
-04E7
-04E9
-04EB
-04ED
-04EF
-04F1
-04F3
-04F5
-04F7
-04F9
-0501
-0503
-0505
-0507
-0509
-050B
-050D
-050F
-0561 0587
-1D00 1DBF
-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
-2071
-207F
-2090 2094
-210A
-210E 210F
-2113
-212F
-2134
-2139
-213C 213D
-2146 2149
-2170 217F
-24D0 24E9
-2C30 2C5E
-2C81
-2C83
-2C85
-2C87
-2C89
-2C8B
-2C8D
-2C8F
-2C91
-2C93
-2C95
-2C97
-2C99
-2C9B
-2C9D
-2C9F
-2CA1
-2CA3
-2CA5
-2CA7
-2CA9
-2CAB
-2CAD
-2CAF
-2CB1
-2CB3
-2CB5
-2CB7
-2CB9
-2CBB
-2CBD
-2CBF
-2CC1
-2CC3
-2CC5
-2CC7
-2CC9
-2CCB
-2CCD
-2CCF
-2CD1
-2CD3
-2CD5
-2CD7
-2CD9
-2CDB
-2CDD
-2CDF
-2CE1
-2CE3 2CE4
-2D00 2D25
-FB00 FB06
-FB13 FB17
-FF41 FF5A
-10428 1044F
-1D41A 1D433
-1D44E 1D454
-1D456 1D467
-1D482 1D49B
-1D4B6 1D4B9
-1D4BB
-1D4BD 1D4C3
-1D4C5 1D4CF
-1D4EA 1D503
-1D51E 1D537
-1D552 1D56B
-1D586 1D59F
-1D5BA 1D5D3
-1D5EE 1D607
-1D622 1D63B
-1D656 1D66F
-1D68A 1D6A5
-1D6C2 1D6DA
-1D6DC 1D6E1
-1D6FC 1D714
-1D716 1D71B
-1D736 1D74E
-1D750 1D755
-1D770 1D788
-1D78A 1D78F
-1D7AA 1D7C2
-1D7C4 1D7C9
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lt.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lt.pl
deleted file mode 100644
index 6518f8e079c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lt.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Lt}
-# \p{Lt} (and fuzzy permutations)
-#
-# Meaning: General Category 'Lt'
-#
-return <<'END';
-01C5
-01C8
-01CB
-01F2
-1F88 1F8F
-1F98 1F9F
-1FA8 1FAF
-1FBC
-1FCC
-1FFC
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lu.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lu.pl
deleted file mode 100644
index 18634cb627e..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Lu.pl
+++ /dev/null
@@ -1,489 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Lu}
-# \p{Lu} (and fuzzy permutations)
-#
-# Meaning: General Category 'Lu'
-#
-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
-0220
-0222
-0224
-0226
-0228
-022A
-022C
-022E
-0230
-0232
-023A 023B
-023D 023E
-0241
-0386
-0388 038A
-038C
-038E 038F
-0391 03A1
-03A3 03AB
-03D2 03D4
-03D8
-03DA
-03DC
-03DE
-03E0
-03E2
-03E4
-03E6
-03E8
-03EA
-03EC
-03EE
-03F4
-03F7
-03F9 03FA
-03FD 042F
-0460
-0462
-0464
-0466
-0468
-046A
-046C
-046E
-0470
-0472
-0474
-0476
-0478
-047A
-047C
-047E
-0480
-048A
-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
-04C5
-04C7
-04C9
-04CB
-04CD
-04D0
-04D2
-04D4
-04D6
-04D8
-04DA
-04DC
-04DE
-04E0
-04E2
-04E4
-04E6
-04E8
-04EA
-04EC
-04EE
-04F0
-04F2
-04F4
-04F6
-04F8
-0500
-0502
-0504
-0506
-0508
-050A
-050C
-050E
-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
-213E 213F
-2145
-2C00 2C2E
-2C80
-2C82
-2C84
-2C86
-2C88
-2C8A
-2C8C
-2C8E
-2C90
-2C92
-2C94
-2C96
-2C98
-2C9A
-2C9C
-2C9E
-2CA0
-2CA2
-2CA4
-2CA6
-2CA8
-2CAA
-2CAC
-2CAE
-2CB0
-2CB2
-2CB4
-2CB6
-2CB8
-2CBA
-2CBC
-2CBE
-2CC0
-2CC2
-2CC4
-2CC6
-2CC8
-2CCA
-2CCC
-2CCE
-2CD0
-2CD2
-2CD4
-2CD6
-2CD8
-2CDA
-2CDC
-2CDE
-2CE0
-2CE2
-FF21 FF3A
-10400 10427
-1D400 1D419
-1D434 1D44D
-1D468 1D481
-1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B5
-1D4D0 1D4E9
-1D504 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D538 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D56C 1D585
-1D5A0 1D5B9
-1D5D4 1D5ED
-1D608 1D621
-1D63C 1D655
-1D670 1D689
-1D6A8 1D6C0
-1D6E2 1D6FA
-1D71C 1D734
-1D756 1D76E
-1D790 1D7A8
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/M.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/M.pl
deleted file mode 100644
index 10d6c61a669..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/M.pl
+++ /dev/null
@@ -1,146 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{M}
-# \p{M} (and fuzzy permutations)
-#
-# Meaning: Major Category 'M'
-#
-return <<'END';
-0300 036F
-0483 0486
-0488 0489
-0591 05B9
-05BB 05BD
-05BF
-05C1 05C2
-05C4 05C5
-05C7
-0610 0615
-064B 065E
-0670
-06D6 06DC
-06DE 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
-0A01 0A03
-0A3C
-0A3E 0A42
-0A47 0A48
-0A4B 0A4D
-0A70 0A71
-0A81 0A83
-0ABC
-0ABE 0AC5
-0AC7 0AC9
-0ACB 0ACD
-0AE2 0AE3
-0B01 0B03
-0B3C
-0B3E 0B43
-0B47 0B48
-0B4B 0B4D
-0B56 0B57
-0B82
-0BBE 0BC2
-0BC6 0BC8
-0BCA 0BCD
-0BD7
-0C01 0C03
-0C3E 0C44
-0C46 0C48
-0C4A 0C4D
-0C55 0C56
-0C82 0C83
-0CBC
-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
-135F
-1712 1714
-1732 1734
-1752 1753
-1772 1773
-17B6 17D3
-17DD
-180B 180D
-18A9
-1920 192B
-1930 193B
-19B0 19C0
-19C8 19C9
-1A17 1A1B
-1DC0 1DC3
-20D0 20EB
-302A 302F
-3099 309A
-A802
-A806
-A80B
-A823 A827
-FB1E
-FE00 FE0F
-FE20 FE23
-10A01 10A03
-10A05 10A06
-10A0C 10A0F
-10A38 10A3A
-10A3F
-1D165 1D169
-1D16D 1D172
-1D17B 1D182
-1D185 1D18B
-1D1AA 1D1AD
-1D242 1D244
-E0100 E01EF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Math.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Math.pl
deleted file mode 100644
index a8cb569a258..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Math.pl
+++ /dev/null
@@ -1,103 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Math} (and fuzzy permutations)
-#
-# Meaning: [\p{Sm}\p{OtherMath}]
-#
-return <<'END';
-002B
-003C 003E
-005E
-007C
-007E
-00AC
-00B1
-00D7
-00F7
-03D0 03D2
-03D5
-03F0 03F1
-03F4 03F6
-2016
-2032 2034
-2040
-2044
-2052
-2061 2063
-207A 207E
-208A 208E
-20D0 20DC
-20E1
-20E5 20E6
-2102
-210A 2113
-2115
-2119 211D
-2124
-2128 2129
-212C 212D
-212F 2131
-2133 2138
-213C 2149
-214B
-2190 2194
-219A 219B
-21A0
-21A3
-21A6
-21AE
-21CE 21CF
-21D2
-21D4
-21F4 22FF
-2308 230B
-2320 2321
-237C
-239B 23B3
-23B7
-23D0
-25B7
-25C1
-25F8 25FF
-266F
-27C0 27C6
-27D0 27EB
-27F0 27FF
-2900 2AFF
-FB29
-FE61 FE66
-FE68
-FF0B
-FF1C FF1E
-FF3C
-FF3E
-FF5C
-FF5E
-FFE2
-FFE9 FFEC
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A3
-1D6A8 1D7C9
-1D7CE 1D7FF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Mc.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Mc.pl
deleted file mode 100644
index 26e02469f02..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Mc.pl
+++ /dev/null
@@ -1,76 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Mc}
-# \p{Mc} (and fuzzy permutations)
-#
-# Meaning: General Category 'Mc'
-#
-return <<'END';
-0903
-093E 0940
-0949 094C
-0982 0983
-09BE 09C0
-09C7 09C8
-09CB 09CC
-09D7
-0A03
-0A3E 0A40
-0A83
-0ABE 0AC0
-0AC9
-0ACB 0ACC
-0B02 0B03
-0B3E
-0B40
-0B47 0B48
-0B4B 0B4C
-0B57
-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
-17B6
-17BE 17C5
-17C7 17C8
-1923 1926
-1929 192B
-1930 1931
-1933 1938
-19B0 19C0
-19C8 19C9
-1A19 1A1B
-A802
-A823 A824
-A827
-1D165 1D166
-1D16D 1D172
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Me.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Me.pl
deleted file mode 100644
index a8ffc8fee21..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Me.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Me}
-# \p{Me} (and fuzzy permutations)
-#
-# Meaning: General Category 'Me'
-#
-return <<'END';
-0488 0489
-06DE
-20DD 20E0
-20E2 20E4
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Mlym.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Mlym.pl
deleted file mode 100644
index 9a3ad1b56cc..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Mlym.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Malayalam} (and fuzzy permutations)
-#
-# Meaning: Script 'Malayalam'
-#
-return <<'END';
-0D02 0D03 Malayalam
-0D05 0D0C Malayalam
-0D0E 0D10 Malayalam
-0D12 0D28 Malayalam
-0D2A 0D39 Malayalam
-0D3E 0D43 Malayalam
-0D46 0D48 Malayalam
-0D4A 0D4D Malayalam
-0D57 Malayalam
-0D60 0D61 Malayalam
-0D66 0D6F Malayalam
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Mn.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Mn.pl
deleted file mode 100644
index a37b319a1cb..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Mn.pl
+++ /dev/null
@@ -1,137 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Mn}
-# \p{Mn} (and fuzzy permutations)
-#
-# Meaning: General Category 'Mn'
-#
-return <<'END';
-0300 036F
-0483 0486
-0591 05B9
-05BB 05BD
-05BF
-05C1 05C2
-05C4 05C5
-05C7
-0610 0615
-064B 065E
-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
-0A01 0A02
-0A3C
-0A41 0A42
-0A47 0A48
-0A4B 0A4D
-0A70 0A71
-0A81 0A82
-0ABC
-0AC1 0AC5
-0AC7 0AC8
-0ACD
-0AE2 0AE3
-0B01
-0B3C
-0B3F
-0B41 0B43
-0B4D
-0B56
-0B82
-0BC0
-0BCD
-0C3E 0C40
-0C46 0C48
-0C4A 0C4D
-0C55 0C56
-0CBC
-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
-135F
-1712 1714
-1732 1734
-1752 1753
-1772 1773
-17B7 17BD
-17C6
-17C9 17D3
-17DD
-180B 180D
-18A9
-1920 1922
-1927 1928
-1932
-1939 193B
-1A17 1A18
-1DC0 1DC3
-20D0 20DC
-20E1
-20E5 20EB
-302A 302F
-3099 309A
-A806
-A80B
-A825 A826
-FB1E
-FE00 FE0F
-FE20 FE23
-10A01 10A03
-10A05 10A06
-10A0C 10A0F
-10A38 10A3A
-10A3F
-1D167 1D169
-1D17B 1D182
-1D185 1D18B
-1D1AA 1D1AD
-1D242 1D244
-E0100 E01EF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Mong.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Mong.pl
deleted file mode 100644
index b72e78316c8..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Mong.pl
+++ /dev/null
@@ -1,16 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Mongolian} (and fuzzy permutations)
-#
-# Meaning: Script 'Mongolian'
-#
-return <<'END';
-1800 180E Mongolian
-1810 1819 Mongolian
-1820 1877 Mongolian
-1880 18A9 Mongolian
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Mymr.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Mymr.pl
deleted file mode 100644
index dc737eee2c9..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Mymr.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Myanmar} (and fuzzy permutations)
-#
-# Meaning: Script 'Myanmar'
-#
-return <<'END';
-1000 1021 Myanmar
-1023 1027 Myanmar
-1029 102A Myanmar
-102C 1032 Myanmar
-1036 1039 Myanmar
-1040 1059 Myanmar
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/N.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/N.pl
deleted file mode 100644
index c94d2d97317..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/N.pl
+++ /dev/null
@@ -1,66 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{N}
-# \p{N} (and fuzzy permutations)
-#
-# Meaning: Major Category 'N'
-#
-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
-0BE6 0BF2
-0C66 0C6F
-0CE6 0CEF
-0D66 0D6F
-0E50 0E59
-0ED0 0ED9
-0F20 0F33
-1040 1049
-1369 137C
-16EE 16F0
-17E0 17E9
-17F0 17F9
-1810 1819
-1946 194F
-19D0 19D9
-2070
-2074 2079
-2080 2089
-2153 2183
-2460 249B
-24EA 24FF
-2776 2793
-2CFD
-3007
-3021 3029
-3038 303A
-3192 3195
-3220 3229
-3251 325F
-3280 3289
-32B1 32BF
-FF10 FF19
-10107 10133
-10140 10178
-1018A
-10320 10323
-1034A
-103D1 103D5
-104A0 104A9
-10A40 10A47
-1D7CE 1D7FF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/NChar.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/NChar.pl
deleted file mode 100644
index 46f865d878c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/NChar.pl
+++ /dev/null
@@ -1,27 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Noncharacter_Code_Point'
-#
-return <<'END';
-FDD0 FDEF Noncharacter_Code_Point
-FFFE FFFF Noncharacter_Code_Point
-1FFFE 1FFFF Noncharacter_Code_Point
-2FFFE 2FFFF Noncharacter_Code_Point
-3FFFE 3FFFF Noncharacter_Code_Point
-4FFFE 4FFFF Noncharacter_Code_Point
-5FFFE 5FFFF Noncharacter_Code_Point
-6FFFE 6FFFF Noncharacter_Code_Point
-7FFFE 7FFFF Noncharacter_Code_Point
-8FFFE 8FFFF Noncharacter_Code_Point
-9FFFE 9FFFF Noncharacter_Code_Point
-AFFFE AFFFF Noncharacter_Code_Point
-BFFFE BFFFF Noncharacter_Code_Point
-CFFFE CFFFF Noncharacter_Code_Point
-DFFFE DFFFF Noncharacter_Code_Point
-EFFFE EFFFF Noncharacter_Code_Point
-FFFFE FFFFF Noncharacter_Code_Point
-10FFFE 10FFFF Noncharacter_Code_Point
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Nd.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Nd.pl
deleted file mode 100644
index e38926a9880..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Nd.pl
+++ /dev/null
@@ -1,36 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Nd}
-# \p{Nd} (and fuzzy permutations)
-#
-# Meaning: General Category 'Nd'
-#
-return <<'END';
-0030 0039
-0660 0669
-06F0 06F9
-0966 096F
-09E6 09EF
-0A66 0A6F
-0AE6 0AEF
-0B66 0B6F
-0BE6 0BEF
-0C66 0C6F
-0CE6 0CEF
-0D66 0D6F
-0E50 0E59
-0ED0 0ED9
-0F20 0F29
-1040 1049
-17E0 17E9
-1810 1819
-1946 194F
-19D0 19D9
-FF10 FF19
-104A0 104A9
-1D7CE 1D7FF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/NewTaiLu.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/NewTaiLu.pl
deleted file mode 100644
index 506c6011ab5..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/NewTaiLu.pl
+++ /dev/null
@@ -1,16 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{NewTaiLue} (and fuzzy permutations)
-#
-# Meaning: Script 'New_Tai_Lue'
-#
-return <<'END';
-1980 19A9 New_Tai_Lue
-19B0 19C9 New_Tai_Lue
-19D0 19D9 New_Tai_Lue
-19DE 19DF New_Tai_Lue
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Nl.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Nl.pl
deleted file mode 100644
index 3acf890e1e9..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Nl.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Nl}
-# \p{Nl} (and fuzzy permutations)
-#
-# Meaning: General Category 'Nl'
-#
-return <<'END';
-16EE 16F0
-2160 2183
-3007
-3021 3029
-3038 303A
-10140 10174
-1034A
-103D1 103D5
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/No.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/No.pl
deleted file mode 100644
index 4e8b11c2ab6..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/No.pl
+++ /dev/null
@@ -1,39 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{No}
-# \p{No} (and fuzzy permutations)
-#
-# Meaning: General Category 'No'
-#
-return <<'END';
-00B2 00B3
-00B9
-00BC 00BE
-09F4 09F9
-0BF0 0BF2
-0F2A 0F33
-1369 137C
-17F0 17F9
-2070
-2074 2079
-2080 2089
-2153 215F
-2460 249B
-24EA 24FF
-2776 2793
-2CFD
-3192 3195
-3220 3229
-3251 325F
-3280 3289
-32B1 32BF
-10107 10133
-10175 10178
-1018A
-10320 10323
-10A40 10A47
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Nonchara.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Nonchara.pl
deleted file mode 100644
index 02624831133..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Nonchara.pl
+++ /dev/null
@@ -1,30 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{NoncharacterCodePoint} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Noncharacter_Code_Point'
-#
-return <<'END';
-FDD0 FDEF Noncharacter_Code_Point
-FFFE FFFF Noncharacter_Code_Point
-1FFFE 1FFFF Noncharacter_Code_Point
-2FFFE 2FFFF Noncharacter_Code_Point
-3FFFE 3FFFF Noncharacter_Code_Point
-4FFFE 4FFFF Noncharacter_Code_Point
-5FFFE 5FFFF Noncharacter_Code_Point
-6FFFE 6FFFF Noncharacter_Code_Point
-7FFFE 7FFFF Noncharacter_Code_Point
-8FFFE 8FFFF Noncharacter_Code_Point
-9FFFE 9FFFF Noncharacter_Code_Point
-AFFFE AFFFF Noncharacter_Code_Point
-BFFFE BFFFF Noncharacter_Code_Point
-CFFFE CFFFF Noncharacter_Code_Point
-DFFFE DFFFF Noncharacter_Code_Point
-EFFFE EFFFF Noncharacter_Code_Point
-FFFFE FFFFF Noncharacter_Code_Point
-10FFFE 10FFFF Noncharacter_Code_Point
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OAlpha.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OAlpha.pl
deleted file mode 100644
index ad6b3b331dd..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OAlpha.pl
+++ /dev/null
@@ -1,108 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Other_Alphabetic'
-#
-return <<'END';
-0345 Other_Alphabetic
-05B0 05B9 Other_Alphabetic
-05BB 05BD Other_Alphabetic
-05BF Other_Alphabetic
-05C1 05C2 Other_Alphabetic
-05C4 05C5 Other_Alphabetic
-05C7 Other_Alphabetic
-0610 0615 Other_Alphabetic
-064B 0657 Other_Alphabetic
-0659 065E Other_Alphabetic
-0670 Other_Alphabetic
-06D6 06DC Other_Alphabetic
-06E1 06E4 Other_Alphabetic
-06E7 06E8 Other_Alphabetic
-06ED Other_Alphabetic
-0711 Other_Alphabetic
-0730 073F Other_Alphabetic
-07A6 07B0 Other_Alphabetic
-0901 0903 Other_Alphabetic
-093E 094C Other_Alphabetic
-0962 0963 Other_Alphabetic
-0981 0983 Other_Alphabetic
-09BE 09C4 Other_Alphabetic
-09C7 09C8 Other_Alphabetic
-09CB 09CC Other_Alphabetic
-09D7 Other_Alphabetic
-09E2 09E3 Other_Alphabetic
-0A01 0A03 Other_Alphabetic
-0A3E 0A42 Other_Alphabetic
-0A47 0A48 Other_Alphabetic
-0A4B 0A4C Other_Alphabetic
-0A70 0A71 Other_Alphabetic
-0A81 0A83 Other_Alphabetic
-0ABE 0AC5 Other_Alphabetic
-0AC7 0AC9 Other_Alphabetic
-0ACB 0ACC Other_Alphabetic
-0AE2 0AE3 Other_Alphabetic
-0B01 0B03 Other_Alphabetic
-0B3E 0B43 Other_Alphabetic
-0B47 0B48 Other_Alphabetic
-0B4B 0B4C Other_Alphabetic
-0B56 0B57 Other_Alphabetic
-0B82 Other_Alphabetic
-0BBE 0BC2 Other_Alphabetic
-0BC6 0BC8 Other_Alphabetic
-0BCA 0BCC Other_Alphabetic
-0BD7 Other_Alphabetic
-0C01 0C03 Other_Alphabetic
-0C3E 0C44 Other_Alphabetic
-0C46 0C48 Other_Alphabetic
-0C4A 0C4C Other_Alphabetic
-0C55 0C56 Other_Alphabetic
-0C82 0C83 Other_Alphabetic
-0CBE 0CC4 Other_Alphabetic
-0CC6 0CC8 Other_Alphabetic
-0CCA 0CCC Other_Alphabetic
-0CD5 0CD6 Other_Alphabetic
-0D02 0D03 Other_Alphabetic
-0D3E 0D43 Other_Alphabetic
-0D46 0D48 Other_Alphabetic
-0D4A 0D4C Other_Alphabetic
-0D57 Other_Alphabetic
-0D82 0D83 Other_Alphabetic
-0DCF 0DD4 Other_Alphabetic
-0DD6 Other_Alphabetic
-0DD8 0DDF Other_Alphabetic
-0DF2 0DF3 Other_Alphabetic
-0E31 Other_Alphabetic
-0E34 0E3A Other_Alphabetic
-0E4D Other_Alphabetic
-0EB1 Other_Alphabetic
-0EB4 0EB9 Other_Alphabetic
-0EBB 0EBC Other_Alphabetic
-0ECD Other_Alphabetic
-0F71 0F81 Other_Alphabetic
-0F90 0F97 Other_Alphabetic
-0F99 0FBC Other_Alphabetic
-102C 1032 Other_Alphabetic
-1036 Other_Alphabetic
-1038 Other_Alphabetic
-1056 1059 Other_Alphabetic
-135F Other_Alphabetic
-1712 1713 Other_Alphabetic
-1732 1733 Other_Alphabetic
-1752 1753 Other_Alphabetic
-1772 1773 Other_Alphabetic
-17B6 17C8 Other_Alphabetic
-18A9 Other_Alphabetic
-1920 192B Other_Alphabetic
-1930 1938 Other_Alphabetic
-19B0 19C0 Other_Alphabetic
-19C8 19C9 Other_Alphabetic
-1A17 1A1B Other_Alphabetic
-24B6 24E9 Other_Alphabetic
-A823 A827 Other_Alphabetic
-FB1E Other_Alphabetic
-10A01 10A03 Other_Alphabetic
-10A05 10A06 Other_Alphabetic
-10A0C 10A0F Other_Alphabetic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/ODI.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/ODI.pl
deleted file mode 100644
index 0bcb43d5650..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/ODI.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Other_Default_Ignorable_Code_Point'
-#
-return <<'END';
-034F Other_Default_Ignorable_Code_Point
-115F 1160 Other_Default_Ignorable_Code_Point
-2064 2069 Other_Default_Ignorable_Code_Point
-3164 Other_Default_Ignorable_Code_Point
-FFA0 Other_Default_Ignorable_Code_Point
-FFF0 FFF8 Other_Default_Ignorable_Code_Point
-E0000 Other_Default_Ignorable_Code_Point
-E0002 E001F Other_Default_Ignorable_Code_Point
-E0080 E00FF Other_Default_Ignorable_Code_Point
-E01F0 E0FFF Other_Default_Ignorable_Code_Point
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OGrExt.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OGrExt.pl
deleted file mode 100644
index 1db852615cc..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OGrExt.pl
+++ /dev/null
@@ -1,24 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Other_Grapheme_Extend'
-#
-return <<'END';
-09BE Other_Grapheme_Extend
-09D7 Other_Grapheme_Extend
-0B3E Other_Grapheme_Extend
-0B57 Other_Grapheme_Extend
-0BBE Other_Grapheme_Extend
-0BD7 Other_Grapheme_Extend
-0CC2 Other_Grapheme_Extend
-0CD5 0CD6 Other_Grapheme_Extend
-0D3E Other_Grapheme_Extend
-0D57 Other_Grapheme_Extend
-0DCF Other_Grapheme_Extend
-0DDF Other_Grapheme_Extend
-200C 200D Other_Grapheme_Extend
-1D165 Other_Grapheme_Extend
-1D16E 1D172 Other_Grapheme_Extend
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OIDC.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OIDC.pl
deleted file mode 100644
index 3c66febbd46..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OIDC.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Other_ID_Continue'
-#
-return <<'END';
-1369 1371 Other_ID_Continue
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OIDS.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OIDS.pl
deleted file mode 100644
index 2fa61e8bf7d..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OIDS.pl
+++ /dev/null
@@ -1,12 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Other_ID_Start'
-#
-return <<'END';
-2118 Other_ID_Start
-212E Other_ID_Start
-309B 309C Other_ID_Start
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OLower.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OLower.pl
deleted file mode 100644
index d403c834e8a..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OLower.pl
+++ /dev/null
@@ -1,20 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Other_Lowercase'
-#
-return <<'END';
-02B0 02B8 Other_Lowercase
-02C0 02C1 Other_Lowercase
-02E0 02E4 Other_Lowercase
-0345 Other_Lowercase
-037A Other_Lowercase
-1D2C 1D61 Other_Lowercase
-1D78 Other_Lowercase
-1D9B 1DBF Other_Lowercase
-2090 2094 Other_Lowercase
-2170 217F Other_Lowercase
-24D0 24E9 Other_Lowercase
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OMath.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OMath.pl
deleted file mode 100644
index a04d5d44761..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OMath.pl
+++ /dev/null
@@ -1,77 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Other_Math'
-#
-return <<'END';
-005E Other_Math
-03D0 03D2 Other_Math
-03D5 Other_Math
-03F0 03F1 Other_Math
-03F4 03F5 Other_Math
-2016 Other_Math
-2032 2034 Other_Math
-2040 Other_Math
-2061 2063 Other_Math
-207D 207E Other_Math
-208D 208E Other_Math
-20D0 20DC Other_Math
-20E1 Other_Math
-20E5 20E6 Other_Math
-2102 Other_Math
-210A 2113 Other_Math
-2115 Other_Math
-2119 211D Other_Math
-2124 Other_Math
-2128 2129 Other_Math
-212C 212D Other_Math
-212F 2131 Other_Math
-2133 2138 Other_Math
-213C 213F Other_Math
-2145 2149 Other_Math
-23B7 Other_Math
-23D0 Other_Math
-27C5 27C6 Other_Math
-27E6 27EB Other_Math
-2983 2998 Other_Math
-29D8 29DB Other_Math
-29FC 29FD Other_Math
-FE61 Other_Math
-FE63 Other_Math
-FE68 Other_Math
-FF3C Other_Math
-FF3E Other_Math
-1D400 1D454 Other_Math
-1D456 1D49C Other_Math
-1D49E 1D49F Other_Math
-1D4A2 Other_Math
-1D4A5 1D4A6 Other_Math
-1D4A9 1D4AC Other_Math
-1D4AE 1D4B9 Other_Math
-1D4BB Other_Math
-1D4BD 1D4C3 Other_Math
-1D4C5 1D505 Other_Math
-1D507 1D50A Other_Math
-1D50D 1D514 Other_Math
-1D516 1D51C Other_Math
-1D51E 1D539 Other_Math
-1D53B 1D53E Other_Math
-1D540 1D544 Other_Math
-1D546 Other_Math
-1D54A 1D550 Other_Math
-1D552 1D6A3 Other_Math
-1D6A8 1D6C0 Other_Math
-1D6C2 1D6DA Other_Math
-1D6DC 1D6FA Other_Math
-1D6FC 1D714 Other_Math
-1D716 1D734 Other_Math
-1D736 1D74E Other_Math
-1D750 1D76E Other_Math
-1D770 1D788 Other_Math
-1D78A 1D7A8 Other_Math
-1D7AA 1D7C2 Other_Math
-1D7C4 1D7C9 Other_Math
-1D7CE 1D7FF Other_Math
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OUpper.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OUpper.pl
deleted file mode 100644
index 28ae9bec896..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OUpper.pl
+++ /dev/null
@@ -1,11 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Other_Uppercase'
-#
-return <<'END';
-2160 216F Other_Uppercase
-24B6 24CF Other_Uppercase
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ogam.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ogam.pl
deleted file mode 100644
index febdcd5f0f9..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ogam.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Ogham} (and fuzzy permutations)
-#
-# Meaning: Script 'Ogham'
-#
-return <<'END';
-1680 169C Ogham
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OldItali.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OldItali.pl
deleted file mode 100644
index d2084536937..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OldItali.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{OldItalic} (and fuzzy permutations)
-#
-# Meaning: Script 'Old_Italic'
-#
-return <<'END';
-10300 1031E Old_Italic
-10320 10323 Old_Italic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OldPersi.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OldPersi.pl
deleted file mode 100644
index 9558e2e822e..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OldPersi.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{OldPersian} (and fuzzy permutations)
-#
-# Meaning: Script 'Old_Persian'
-#
-return <<'END';
-103A0 103C3 Old_Persian
-103C8 103D5 Old_Persian
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Orya.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Orya.pl
deleted file mode 100644
index 9b96b1f7dee..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Orya.pl
+++ /dev/null
@@ -1,26 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Oriya} (and fuzzy permutations)
-#
-# Meaning: Script 'Oriya'
-#
-return <<'END';
-0B01 0B03 Oriya
-0B05 0B0C Oriya
-0B0F 0B10 Oriya
-0B13 0B28 Oriya
-0B2A 0B30 Oriya
-0B32 0B33 Oriya
-0B35 0B39 Oriya
-0B3C 0B43 Oriya
-0B47 0B48 Oriya
-0B4B 0B4D Oriya
-0B56 0B57 Oriya
-0B5C 0B5D Oriya
-0B5F 0B61 Oriya
-0B66 0B71 Oriya
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Osma.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Osma.pl
deleted file mode 100644
index de7a8935552..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Osma.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Osmanya} (and fuzzy permutations)
-#
-# Meaning: Script 'Osmanya'
-#
-return <<'END';
-10480 1049D Osmanya
-104A0 104A9 Osmanya
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherAlp.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherAlp.pl
deleted file mode 100644
index a786ad9fb6e..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherAlp.pl
+++ /dev/null
@@ -1,111 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{OtherAlphabetic} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Other_Alphabetic'
-#
-return <<'END';
-0345 Other_Alphabetic
-05B0 05B9 Other_Alphabetic
-05BB 05BD Other_Alphabetic
-05BF Other_Alphabetic
-05C1 05C2 Other_Alphabetic
-05C4 05C5 Other_Alphabetic
-05C7 Other_Alphabetic
-0610 0615 Other_Alphabetic
-064B 0657 Other_Alphabetic
-0659 065E Other_Alphabetic
-0670 Other_Alphabetic
-06D6 06DC Other_Alphabetic
-06E1 06E4 Other_Alphabetic
-06E7 06E8 Other_Alphabetic
-06ED Other_Alphabetic
-0711 Other_Alphabetic
-0730 073F Other_Alphabetic
-07A6 07B0 Other_Alphabetic
-0901 0903 Other_Alphabetic
-093E 094C Other_Alphabetic
-0962 0963 Other_Alphabetic
-0981 0983 Other_Alphabetic
-09BE 09C4 Other_Alphabetic
-09C7 09C8 Other_Alphabetic
-09CB 09CC Other_Alphabetic
-09D7 Other_Alphabetic
-09E2 09E3 Other_Alphabetic
-0A01 0A03 Other_Alphabetic
-0A3E 0A42 Other_Alphabetic
-0A47 0A48 Other_Alphabetic
-0A4B 0A4C Other_Alphabetic
-0A70 0A71 Other_Alphabetic
-0A81 0A83 Other_Alphabetic
-0ABE 0AC5 Other_Alphabetic
-0AC7 0AC9 Other_Alphabetic
-0ACB 0ACC Other_Alphabetic
-0AE2 0AE3 Other_Alphabetic
-0B01 0B03 Other_Alphabetic
-0B3E 0B43 Other_Alphabetic
-0B47 0B48 Other_Alphabetic
-0B4B 0B4C Other_Alphabetic
-0B56 0B57 Other_Alphabetic
-0B82 Other_Alphabetic
-0BBE 0BC2 Other_Alphabetic
-0BC6 0BC8 Other_Alphabetic
-0BCA 0BCC Other_Alphabetic
-0BD7 Other_Alphabetic
-0C01 0C03 Other_Alphabetic
-0C3E 0C44 Other_Alphabetic
-0C46 0C48 Other_Alphabetic
-0C4A 0C4C Other_Alphabetic
-0C55 0C56 Other_Alphabetic
-0C82 0C83 Other_Alphabetic
-0CBE 0CC4 Other_Alphabetic
-0CC6 0CC8 Other_Alphabetic
-0CCA 0CCC Other_Alphabetic
-0CD5 0CD6 Other_Alphabetic
-0D02 0D03 Other_Alphabetic
-0D3E 0D43 Other_Alphabetic
-0D46 0D48 Other_Alphabetic
-0D4A 0D4C Other_Alphabetic
-0D57 Other_Alphabetic
-0D82 0D83 Other_Alphabetic
-0DCF 0DD4 Other_Alphabetic
-0DD6 Other_Alphabetic
-0DD8 0DDF Other_Alphabetic
-0DF2 0DF3 Other_Alphabetic
-0E31 Other_Alphabetic
-0E34 0E3A Other_Alphabetic
-0E4D Other_Alphabetic
-0EB1 Other_Alphabetic
-0EB4 0EB9 Other_Alphabetic
-0EBB 0EBC Other_Alphabetic
-0ECD Other_Alphabetic
-0F71 0F81 Other_Alphabetic
-0F90 0F97 Other_Alphabetic
-0F99 0FBC Other_Alphabetic
-102C 1032 Other_Alphabetic
-1036 Other_Alphabetic
-1038 Other_Alphabetic
-1056 1059 Other_Alphabetic
-135F Other_Alphabetic
-1712 1713 Other_Alphabetic
-1732 1733 Other_Alphabetic
-1752 1753 Other_Alphabetic
-1772 1773 Other_Alphabetic
-17B6 17C8 Other_Alphabetic
-18A9 Other_Alphabetic
-1920 192B Other_Alphabetic
-1930 1938 Other_Alphabetic
-19B0 19C0 Other_Alphabetic
-19C8 19C9 Other_Alphabetic
-1A17 1A1B Other_Alphabetic
-24B6 24E9 Other_Alphabetic
-A823 A827 Other_Alphabetic
-FB1E Other_Alphabetic
-10A01 10A03 Other_Alphabetic
-10A05 10A06 Other_Alphabetic
-10A0C 10A0F Other_Alphabetic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherDef.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherDef.pl
deleted file mode 100644
index ced4761b930..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherDef.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{OtherDefaultIgnorableCodePoint} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Other_Default_Ignorable_Code_Point'
-#
-return <<'END';
-034F Other_Default_Ignorable_Code_Point
-115F 1160 Other_Default_Ignorable_Code_Point
-2064 2069 Other_Default_Ignorable_Code_Point
-3164 Other_Default_Ignorable_Code_Point
-FFA0 Other_Default_Ignorable_Code_Point
-FFF0 FFF8 Other_Default_Ignorable_Code_Point
-E0000 Other_Default_Ignorable_Code_Point
-E0002 E001F Other_Default_Ignorable_Code_Point
-E0080 E00FF Other_Default_Ignorable_Code_Point
-E01F0 E0FFF Other_Default_Ignorable_Code_Point
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherGra.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherGra.pl
deleted file mode 100644
index 00e75a8c5fa..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherGra.pl
+++ /dev/null
@@ -1,27 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{OtherGraphemeExtend} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Other_Grapheme_Extend'
-#
-return <<'END';
-09BE Other_Grapheme_Extend
-09D7 Other_Grapheme_Extend
-0B3E Other_Grapheme_Extend
-0B57 Other_Grapheme_Extend
-0BBE Other_Grapheme_Extend
-0BD7 Other_Grapheme_Extend
-0CC2 Other_Grapheme_Extend
-0CD5 0CD6 Other_Grapheme_Extend
-0D3E Other_Grapheme_Extend
-0D57 Other_Grapheme_Extend
-0DCF Other_Grapheme_Extend
-0DDF Other_Grapheme_Extend
-200C 200D Other_Grapheme_Extend
-1D165 Other_Grapheme_Extend
-1D16E 1D172 Other_Grapheme_Extend
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherIdC.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherIdC.pl
deleted file mode 100644
index ddd390b2241..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherIdC.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{OtherIdContinue} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Other_ID_Continue'
-#
-return <<'END';
-1369 1371 Other_ID_Continue
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherIdS.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherIdS.pl
deleted file mode 100644
index 1f165d1ce17..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherIdS.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{OtherIdStart} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Other_ID_Start'
-#
-return <<'END';
-2118 Other_ID_Start
-212E Other_ID_Start
-309B 309C Other_ID_Start
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherLow.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherLow.pl
deleted file mode 100644
index b2804306e65..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherLow.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{OtherLowercase} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Other_Lowercase'
-#
-return <<'END';
-02B0 02B8 Other_Lowercase
-02C0 02C1 Other_Lowercase
-02E0 02E4 Other_Lowercase
-0345 Other_Lowercase
-037A Other_Lowercase
-1D2C 1D61 Other_Lowercase
-1D78 Other_Lowercase
-1D9B 1DBF Other_Lowercase
-2090 2094 Other_Lowercase
-2170 217F Other_Lowercase
-24D0 24E9 Other_Lowercase
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherMat.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherMat.pl
deleted file mode 100644
index 6264a6b0d89..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherMat.pl
+++ /dev/null
@@ -1,80 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{OtherMath} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Other_Math'
-#
-return <<'END';
-005E Other_Math
-03D0 03D2 Other_Math
-03D5 Other_Math
-03F0 03F1 Other_Math
-03F4 03F5 Other_Math
-2016 Other_Math
-2032 2034 Other_Math
-2040 Other_Math
-2061 2063 Other_Math
-207D 207E Other_Math
-208D 208E Other_Math
-20D0 20DC Other_Math
-20E1 Other_Math
-20E5 20E6 Other_Math
-2102 Other_Math
-210A 2113 Other_Math
-2115 Other_Math
-2119 211D Other_Math
-2124 Other_Math
-2128 2129 Other_Math
-212C 212D Other_Math
-212F 2131 Other_Math
-2133 2138 Other_Math
-213C 213F Other_Math
-2145 2149 Other_Math
-23B7 Other_Math
-23D0 Other_Math
-27C5 27C6 Other_Math
-27E6 27EB Other_Math
-2983 2998 Other_Math
-29D8 29DB Other_Math
-29FC 29FD Other_Math
-FE61 Other_Math
-FE63 Other_Math
-FE68 Other_Math
-FF3C Other_Math
-FF3E Other_Math
-1D400 1D454 Other_Math
-1D456 1D49C Other_Math
-1D49E 1D49F Other_Math
-1D4A2 Other_Math
-1D4A5 1D4A6 Other_Math
-1D4A9 1D4AC Other_Math
-1D4AE 1D4B9 Other_Math
-1D4BB Other_Math
-1D4BD 1D4C3 Other_Math
-1D4C5 1D505 Other_Math
-1D507 1D50A Other_Math
-1D50D 1D514 Other_Math
-1D516 1D51C Other_Math
-1D51E 1D539 Other_Math
-1D53B 1D53E Other_Math
-1D540 1D544 Other_Math
-1D546 Other_Math
-1D54A 1D550 Other_Math
-1D552 1D6A3 Other_Math
-1D6A8 1D6C0 Other_Math
-1D6C2 1D6DA Other_Math
-1D6DC 1D6FA Other_Math
-1D6FC 1D714 Other_Math
-1D716 1D734 Other_Math
-1D736 1D74E Other_Math
-1D750 1D76E Other_Math
-1D770 1D788 Other_Math
-1D78A 1D7A8 Other_Math
-1D7AA 1D7C2 Other_Math
-1D7C4 1D7C9 Other_Math
-1D7CE 1D7FF Other_Math
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherUpp.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherUpp.pl
deleted file mode 100644
index 4ee526f338e..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/OtherUpp.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{OtherUppercase} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Other_Uppercase'
-#
-return <<'END';
-2160 216F Other_Uppercase
-24B6 24CF Other_Uppercase
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/P.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/P.pl
deleted file mode 100644
index 9633611f351..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/P.pl
+++ /dev/null
@@ -1,109 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{P}
-# \p{P} (and fuzzy permutations)
-#
-# Meaning: Major Category 'P'
-#
-return <<'END';
-0021 0023
-0025 002A
-002C 002F
-003A 003B
-003F 0040
-005B 005D
-005F
-007B
-007D
-00A1
-00AB
-00B7
-00BB
-00BF
-037E
-0387
-055A 055F
-0589 058A
-05BE
-05C0
-05C3
-05C6
-05F3 05F4
-060C 060D
-061B
-061E 061F
-066A 066D
-06D4
-0700 070D
-0964 0965
-0970
-0DF4
-0E4F
-0E5A 0E5B
-0F04 0F12
-0F3A 0F3D
-0F85
-0FD0 0FD1
-104A 104F
-10FB
-1361 1368
-166D 166E
-169B 169C
-16EB 16ED
-1735 1736
-17D4 17D6
-17D8 17DA
-1800 180A
-1944 1945
-19DE 19DF
-1A1E 1A1F
-2010 2027
-2030 2043
-2045 2051
-2053 205E
-207D 207E
-208D 208E
-2329 232A
-23B4 23B6
-2768 2775
-27C5 27C6
-27E6 27EB
-2983 2998
-29D8 29DB
-29FC 29FD
-2CF9 2CFC
-2CFE 2CFF
-2E00 2E17
-2E1C 2E1D
-3001 3003
-3008 3011
-3014 301F
-3030
-303D
-30A0
-30FB
-FD3E FD3F
-FE10 FE19
-FE30 FE52
-FE54 FE61
-FE63
-FE68
-FE6A FE6B
-FF01 FF03
-FF05 FF0A
-FF0C FF0F
-FF1A FF1B
-FF1F FF20
-FF3B FF3D
-FF3F
-FF5B
-FF5D
-FF5F FF65
-10100 10101
-1039F
-10A50 10A58
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/PatSyn.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/PatSyn.pl
deleted file mode 100644
index bb53683d6e4..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/PatSyn.pl
+++ /dev/null
@@ -1,37 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Pattern_Syntax'
-#
-return <<'END';
-0021 002F Pattern_Syntax
-003A 0040 Pattern_Syntax
-005B 005E Pattern_Syntax
-0060 Pattern_Syntax
-007B 007E Pattern_Syntax
-00A1 00A7 Pattern_Syntax
-00A9 Pattern_Syntax
-00AB 00AC Pattern_Syntax
-00AE Pattern_Syntax
-00B0 00B1 Pattern_Syntax
-00B6 Pattern_Syntax
-00BB Pattern_Syntax
-00BF Pattern_Syntax
-00D7 Pattern_Syntax
-00F7 Pattern_Syntax
-2010 2027 Pattern_Syntax
-2030 203E Pattern_Syntax
-2041 2053 Pattern_Syntax
-2055 205E Pattern_Syntax
-2190 245F Pattern_Syntax
-2500 2775 Pattern_Syntax
-2794 2BFF Pattern_Syntax
-2E00 2E7F Pattern_Syntax
-3001 3003 Pattern_Syntax
-3008 3020 Pattern_Syntax
-3030 Pattern_Syntax
-FD3E FD3F Pattern_Syntax
-FE45 FE46 Pattern_Syntax
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/PatWS.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/PatWS.pl
deleted file mode 100644
index 4157e6479c7..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/PatWS.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Pattern_White_Space'
-#
-return <<'END';
-0009 000D Pattern_White_Space
-0020 Pattern_White_Space
-0085 Pattern_White_Space
-200E 200F Pattern_White_Space
-2028 2029 Pattern_White_Space
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/PatternS.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/PatternS.pl
deleted file mode 100644
index ef8441d6b6f..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/PatternS.pl
+++ /dev/null
@@ -1,40 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{PatternSyntax} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Pattern_Syntax'
-#
-return <<'END';
-0021 002F Pattern_Syntax
-003A 0040 Pattern_Syntax
-005B 005E Pattern_Syntax
-0060 Pattern_Syntax
-007B 007E Pattern_Syntax
-00A1 00A7 Pattern_Syntax
-00A9 Pattern_Syntax
-00AB 00AC Pattern_Syntax
-00AE Pattern_Syntax
-00B0 00B1 Pattern_Syntax
-00B6 Pattern_Syntax
-00BB Pattern_Syntax
-00BF Pattern_Syntax
-00D7 Pattern_Syntax
-00F7 Pattern_Syntax
-2010 2027 Pattern_Syntax
-2030 203E Pattern_Syntax
-2041 2053 Pattern_Syntax
-2055 205E Pattern_Syntax
-2190 245F Pattern_Syntax
-2500 2775 Pattern_Syntax
-2794 2BFF Pattern_Syntax
-2E00 2E7F Pattern_Syntax
-3001 3003 Pattern_Syntax
-3008 3020 Pattern_Syntax
-3030 Pattern_Syntax
-FD3E FD3F Pattern_Syntax
-FE45 FE46 Pattern_Syntax
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/PatternW.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/PatternW.pl
deleted file mode 100644
index 9d63eca6541..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/PatternW.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{PatternWhiteSpace} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Pattern_White_Space'
-#
-return <<'END';
-0009 000D Pattern_White_Space
-0020 Pattern_White_Space
-0085 Pattern_White_Space
-200E 200F Pattern_White_Space
-2028 2029 Pattern_White_Space
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Pc.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Pc.pl
deleted file mode 100644
index 2a2cbe552dc..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Pc.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Pc}
-# \p{Pc} (and fuzzy permutations)
-#
-# Meaning: General Category 'Pc'
-#
-return <<'END';
-005F
-203F 2040
-2054
-FE33 FE34
-FE4D FE4F
-FF3F
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Pd.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Pd.pl
deleted file mode 100644
index 5aa3eb3ee32..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Pd.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Pd}
-# \p{Pd} (and fuzzy permutations)
-#
-# Meaning: General Category 'Pd'
-#
-return <<'END';
-002D
-058A
-1806
-2010 2015
-2E17
-301C
-3030
-30A0
-FE31 FE32
-FE58
-FE63
-FF0D
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Pe.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Pe.pl
deleted file mode 100644
index c22445a2790..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Pe.pl
+++ /dev/null
@@ -1,78 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Pe}
-# \p{Pe} (and fuzzy permutations)
-#
-# Meaning: General Category 'Pe'
-#
-return <<'END';
-0029
-005D
-007D
-0F3B
-0F3D
-169C
-2046
-207E
-208E
-232A
-23B5
-2769
-276B
-276D
-276F
-2771
-2773
-2775
-27C6
-27E7
-27E9
-27EB
-2984
-2986
-2988
-298A
-298C
-298E
-2990
-2992
-2994
-2996
-2998
-29D9
-29DB
-29FD
-3009
-300B
-300D
-300F
-3011
-3015
-3017
-3019
-301B
-301E 301F
-FD3F
-FE18
-FE36
-FE38
-FE3A
-FE3C
-FE3E
-FE40
-FE42
-FE44
-FE48
-FE5A
-FE5C
-FE5E
-FF09
-FF3D
-FF5D
-FF60
-FF63
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Pf.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Pf.pl
deleted file mode 100644
index 256bef78d23..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Pf.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Pf}
-# \p{Pf} (and fuzzy permutations)
-#
-# Meaning: General Category 'Pf'
-#
-return <<'END';
-00BB
-2019
-201D
-203A
-2E03
-2E05
-2E0A
-2E0D
-2E1D
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Pi.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Pi.pl
deleted file mode 100644
index d1e23c27b3d..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Pi.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Pi}
-# \p{Pi} (and fuzzy permutations)
-#
-# Meaning: General Category 'Pi'
-#
-return <<'END';
-00AB
-2018
-201B 201C
-201F
-2039
-2E02
-2E04
-2E09
-2E0C
-2E1C
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Po.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Po.pl
deleted file mode 100644
index 55ca20ca1e7..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Po.pl
+++ /dev/null
@@ -1,101 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Po}
-# \p{Po} (and fuzzy permutations)
-#
-# Meaning: General Category 'Po'
-#
-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
-05C6
-05F3 05F4
-060C 060D
-061B
-061E 061F
-066A 066D
-06D4
-0700 070D
-0964 0965
-0970
-0DF4
-0E4F
-0E5A 0E5B
-0F04 0F12
-0F85
-0FD0 0FD1
-104A 104F
-10FB
-1361 1368
-166D 166E
-16EB 16ED
-1735 1736
-17D4 17D6
-17D8 17DA
-1800 1805
-1807 180A
-1944 1945
-19DE 19DF
-1A1E 1A1F
-2016 2017
-2020 2027
-2030 2038
-203B 203E
-2041 2043
-2047 2051
-2053
-2055 205E
-23B6
-2CF9 2CFC
-2CFE 2CFF
-2E00 2E01
-2E06 2E08
-2E0B
-2E0E 2E16
-3001 3003
-303D
-30FB
-FE10 FE16
-FE19
-FE30
-FE45 FE46
-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 FF65
-10100 10101
-1039F
-10A50 10A58
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Print.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Print.pl
deleted file mode 100644
index e2df8d7b884..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Print.pl
+++ /dev/null
@@ -1,435 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Print}
-#
-# Meaning: [[:Print:]]
-#
-return <<'END';
-0009 000D
-0020 007E
-0085
-00A0 0241
-0250 036F
-0374 0375
-037A
-037E
-0384 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 0486
-0488 04CE
-04D0 04F9
-0500 050F
-0531 0556
-0559 055F
-0561 0587
-0589 058A
-0591 05B9
-05BB 05C7
-05D0 05EA
-05F0 05F4
-0600 0603
-060B 0615
-061B
-061E 061F
-0621 063A
-0640 065E
-0660 070D
-070F 074A
-074D 076D
-0780 07B1
-0901 0939
-093C 094D
-0950 0954
-0958 0970
-097D
-0981 0983
-0985 098C
-098F 0990
-0993 09A8
-09AA 09B0
-09B2
-09B6 09B9
-09BC 09C4
-09C7 09C8
-09CB 09CE
-09D7
-09DC 09DD
-09DF 09E3
-09E6 09FA
-0A01 0A03
-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 0A8D
-0A8F 0A91
-0A93 0AA8
-0AAA 0AB0
-0AB2 0AB3
-0AB5 0AB9
-0ABC 0AC5
-0AC7 0AC9
-0ACB 0ACD
-0AD0
-0AE0 0AE3
-0AE6 0AEF
-0AF1
-0B01 0B03
-0B05 0B0C
-0B0F 0B10
-0B13 0B28
-0B2A 0B30
-0B32 0B33
-0B35 0B39
-0B3C 0B43
-0B47 0B48
-0B4B 0B4D
-0B56 0B57
-0B5C 0B5D
-0B5F 0B61
-0B66 0B71
-0B82 0B83
-0B85 0B8A
-0B8E 0B90
-0B92 0B95
-0B99 0B9A
-0B9C
-0B9E 0B9F
-0BA3 0BA4
-0BA8 0BAA
-0BAE 0BB9
-0BBE 0BC2
-0BC6 0BC8
-0BCA 0BCD
-0BD7
-0BE6 0BFA
-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
-0CBC 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 0FD1
-1000 1021
-1023 1027
-1029 102A
-102C 1032
-1036 1039
-1040 1059
-10A0 10C5
-10D0 10FC
-1100 1159
-115F 11A2
-11A8 11F9
-1200 1248
-124A 124D
-1250 1256
-1258
-125A 125D
-1260 1288
-128A 128D
-1290 12B0
-12B2 12B5
-12B8 12BE
-12C0
-12C2 12C5
-12C8 12D6
-12D8 1310
-1312 1315
-1318 135A
-135F 137C
-1380 1399
-13A0 13F4
-1401 1676
-1680 169C
-16A0 16F0
-1700 170C
-170E 1714
-1720 1736
-1740 1753
-1760 176C
-176E 1770
-1772 1773
-1780 17DD
-17E0 17E9
-17F0 17F9
-1800 180E
-1810 1819
-1820 1877
-1880 18A9
-1900 191C
-1920 192B
-1930 193B
-1940
-1944 196D
-1970 1974
-1980 19A9
-19B0 19C9
-19D0 19D9
-19DE 1A1B
-1A1E 1A1F
-1D00 1DC3
-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 2063
-206A 2071
-2074 208E
-2090 2094
-20A0 20B5
-20D0 20EB
-2100 214C
-2153 2183
-2190 23DB
-2400 2426
-2440 244A
-2460 269C
-26A0 26B1
-2701 2704
-2706 2709
-270C 2727
-2729 274B
-274D
-274F 2752
-2756
-2758 275E
-2761 2794
-2798 27AF
-27B1 27BE
-27C0 27C6
-27D0 27EB
-27F0 2B13
-2C00 2C2E
-2C30 2C5E
-2C80 2CEA
-2CF9 2D25
-2D30 2D65
-2D6F
-2D80 2D96
-2DA0 2DA6
-2DA8 2DAE
-2DB0 2DB6
-2DB8 2DBE
-2DC0 2DC6
-2DC8 2DCE
-2DD0 2DD6
-2DD8 2DDE
-2E00 2E17
-2E1C 2E1D
-2E80 2E99
-2E9B 2EF3
-2F00 2FD5
-2FF0 2FFB
-3000 303F
-3041 3096
-3099 30FF
-3105 312C
-3131 318E
-3190 31B7
-31C0 31CF
-31F0 321E
-3220 3243
-3250 32FE
-3300 4DB5
-4DC0 9FBB
-A000 A48C
-A490 A4C6
-A700 A716
-A800 A82B
-AC00 D7A3
-E000 FA2D
-FA30 FA6A
-FA70 FAD9
-FB00 FB06
-FB13 FB17
-FB1D FB36
-FB38 FB3C
-FB3E
-FB40 FB41
-FB43 FB44
-FB46 FBB1
-FBD3 FD3F
-FD50 FD8F
-FD92 FDC7
-FDF0 FDFD
-FE00 FE19
-FE20 FE23
-FE30 FE52
-FE54 FE66
-FE68 FE6B
-FE70 FE74
-FE76 FEFC
-FEFF
-FF01 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-FFE0 FFE6
-FFE8 FFEE
-FFF9 FFFD
-10000 1000B
-1000D 10026
-10028 1003A
-1003C 1003D
-1003F 1004D
-10050 1005D
-10080 100FA
-10100 10102
-10107 10133
-10137 1018A
-10300 1031E
-10320 10323
-10330 1034A
-10380 1039D
-1039F 103C3
-103C8 103D5
-10400 1049D
-104A0 104A9
-10800 10805
-10808
-1080A 10835
-10837 10838
-1083C
-1083F
-10A00 10A03
-10A05 10A06
-10A0C 10A13
-10A15 10A17
-10A19 10A33
-10A38 10A3A
-10A3F 10A47
-10A50 10A58
-1D000 1D0F5
-1D100 1D126
-1D12A 1D1DD
-1D200 1D245
-1D300 1D356
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A5
-1D6A8 1D7C9
-1D7CE 1D7FF
-20000 2A6D6
-2F800 2FA1D
-E0001
-E0020 E007F
-E0100 E01EF
-F0000 FFFFD
-100000 10FFFD
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ps.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ps.pl
deleted file mode 100644
index f08bebe61ac..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ps.pl
+++ /dev/null
@@ -1,80 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Ps}
-# \p{Ps} (and fuzzy permutations)
-#
-# Meaning: General Category 'Ps'
-#
-return <<'END';
-0028
-005B
-007B
-0F3A
-0F3C
-169B
-201A
-201E
-2045
-207D
-208D
-2329
-23B4
-2768
-276A
-276C
-276E
-2770
-2772
-2774
-27C5
-27E6
-27E8
-27EA
-2983
-2985
-2987
-2989
-298B
-298D
-298F
-2991
-2993
-2995
-2997
-29D8
-29DA
-29FC
-3008
-300A
-300C
-300E
-3010
-3014
-3016
-3018
-301A
-301D
-FD3E
-FE17
-FE35
-FE37
-FE39
-FE3B
-FE3D
-FE3F
-FE41
-FE43
-FE47
-FE59
-FE5B
-FE5D
-FF08
-FF3B
-FF5B
-FF5F
-FF62
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Punct.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Punct.pl
deleted file mode 100644
index d6cfefe06e2..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Punct.pl
+++ /dev/null
@@ -1,108 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Punct}
-#
-# Meaning: [[:Punct:]]
-#
-return <<'END';
-0021 0023
-0025 002A
-002C 002F
-003A 003B
-003F 0040
-005B 005D
-005F
-007B
-007D
-00A1
-00AB
-00B7
-00BB
-00BF
-037E
-0387
-055A 055F
-0589 058A
-05BE
-05C0
-05C3
-05C6
-05F3 05F4
-060C 060D
-061B
-061E 061F
-066A 066D
-06D4
-0700 070D
-0964 0965
-0970
-0DF4
-0E4F
-0E5A 0E5B
-0F04 0F12
-0F3A 0F3D
-0F85
-0FD0 0FD1
-104A 104F
-10FB
-1361 1368
-166D 166E
-169B 169C
-16EB 16ED
-1735 1736
-17D4 17D6
-17D8 17DA
-1800 180A
-1944 1945
-19DE 19DF
-1A1E 1A1F
-2010 2027
-2030 2043
-2045 2051
-2053 205E
-207D 207E
-208D 208E
-2329 232A
-23B4 23B6
-2768 2775
-27C5 27C6
-27E6 27EB
-2983 2998
-29D8 29DB
-29FC 29FD
-2CF9 2CFC
-2CFE 2CFF
-2E00 2E17
-2E1C 2E1D
-3001 3003
-3008 3011
-3014 301F
-3030
-303D
-30A0
-30FB
-FD3E FD3F
-FE10 FE19
-FE30 FE52
-FE54 FE61
-FE63
-FE68
-FE6A FE6B
-FF01 FF03
-FF05 FF0A
-FF0C FF0F
-FF1A FF1B
-FF1F FF20
-FF3B FF3D
-FF3F
-FF5B
-FF5D
-FF5F FF65
-10100 10101
-1039F
-10A50 10A58
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/QMark.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/QMark.pl
deleted file mode 100644
index 9778cd953bb..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/QMark.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Quotation_Mark'
-#
-return <<'END';
-0022 Quotation_Mark
-0027 Quotation_Mark
-00AB Quotation_Mark
-00BB Quotation_Mark
-2018 201F Quotation_Mark
-2039 203A Quotation_Mark
-300C 300F Quotation_Mark
-301D 301F Quotation_Mark
-FE41 FE44 Quotation_Mark
-FF02 Quotation_Mark
-FF07 Quotation_Mark
-FF62 FF63 Quotation_Mark
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Qaai.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Qaai.pl
deleted file mode 100644
index afbf5fea80d..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Qaai.pl
+++ /dev/null
@@ -1,27 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Inherited} (and fuzzy permutations)
-#
-# Meaning: Script 'Inherited'
-#
-return <<'END';
-0300 036F Inherited
-064B 0655 Inherited
-0670 Inherited
-1DC0 1DC3 Inherited
-200C 200D Inherited
-20D0 20EB Inherited
-302A 302F Inherited
-3099 309A Inherited
-FE00 FE0F Inherited
-FE20 FE23 Inherited
-1D167 1D169 Inherited
-1D17B 1D182 Inherited
-1D185 1D18B Inherited
-1D1AA 1D1AD Inherited
-E0100 E01EF Inherited
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Quotatio.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Quotatio.pl
deleted file mode 100644
index 255d986ff3b..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Quotatio.pl
+++ /dev/null
@@ -1,24 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{QuotationMark} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Quotation_Mark'
-#
-return <<'END';
-0022 Quotation_Mark
-0027 Quotation_Mark
-00AB Quotation_Mark
-00BB Quotation_Mark
-2018 201F Quotation_Mark
-2039 203A Quotation_Mark
-300C 300F Quotation_Mark
-301D 301F Quotation_Mark
-FE41 FE44 Quotation_Mark
-FF02 Quotation_Mark
-FF07 Quotation_Mark
-FF62 FF63 Quotation_Mark
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Radical.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Radical.pl
deleted file mode 100644
index aeb66ed45b9..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Radical.pl
+++ /dev/null
@@ -1,12 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Radical'
-#
-return <<'END';
-2E80 2E99 Radical
-2E9B 2EF3 Radical
-2F00 2FD5 Radical
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Radical2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Radical2.pl
deleted file mode 100644
index 1bd455af14a..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Radical2.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Radical} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Radical'
-#
-return <<'END';
-2E80 2E99 Radical
-2E9B 2EF3 Radical
-2F00 2FD5 Radical
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Runr.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Runr.pl
deleted file mode 100644
index 02f180a46aa..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Runr.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Runic} (and fuzzy permutations)
-#
-# Meaning: Script 'Runic'
-#
-return <<'END';
-16A0 16EA Runic
-16EE 16F0 Runic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/S.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/S.pl
deleted file mode 100644
index 58f6e311eab..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/S.pl
+++ /dev/null
@@ -1,175 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{S}
-# \p{S} (and fuzzy permutations)
-#
-# Meaning: Major Category 'S'
-#
-return <<'END';
-0024
-002B
-003C 003E
-005E
-0060
-007C
-007E
-00A2 00A9
-00AC
-00AE 00B1
-00B4
-00B6
-00B8
-00D7
-00F7
-02C2 02C5
-02D2 02DF
-02E5 02ED
-02EF 02FF
-0374 0375
-0384 0385
-03F6
-0482
-060B
-060E 060F
-06E9
-06FD 06FE
-09F2 09F3
-09FA
-0AF1
-0B70
-0BF3 0BFA
-0E3F
-0F01 0F03
-0F13 0F17
-0F1A 0F1F
-0F34
-0F36
-0F38
-0FBE 0FC5
-0FC7 0FCC
-0FCF
-1360
-1390 1399
-17DB
-1940
-19E0 19FF
-1FBD
-1FBF 1FC1
-1FCD 1FCF
-1FDD 1FDF
-1FED 1FEF
-1FFD 1FFE
-2044
-2052
-207A 207C
-208A 208C
-20A0 20B5
-2100 2101
-2103 2106
-2108 2109
-2114
-2116 2118
-211E 2123
-2125
-2127
-2129
-212E
-2132
-213A 213B
-2140 2144
-214A 214C
-2190 2328
-232B 23B3
-23B7 23DB
-2400 2426
-2440 244A
-249C 24E9
-2500 269C
-26A0 26B1
-2701 2704
-2706 2709
-270C 2727
-2729 274B
-274D
-274F 2752
-2756
-2758 275E
-2761 2767
-2794
-2798 27AF
-27B1 27BE
-27C0 27C4
-27D0 27E5
-27F0 2982
-2999 29D7
-29DC 29FB
-29FE 2B13
-2CE5 2CEA
-2E80 2E99
-2E9B 2EF3
-2F00 2FD5
-2FF0 2FFB
-3004
-3012 3013
-3020
-3036 3037
-303E 303F
-309B 309C
-3190 3191
-3196 319F
-31C0 31CF
-3200 321E
-322A 3243
-3250
-3260 327F
-328A 32B0
-32C0 32FE
-3300 33FF
-4DC0 4DFF
-A490 A4C6
-A700 A716
-A828 A82B
-FB29
-FDFC FDFD
-FE62
-FE64 FE66
-FE69
-FF04
-FF0B
-FF1C FF1E
-FF3E
-FF40
-FF5C
-FF5E
-FFE0 FFE6
-FFE8 FFEE
-FFFC FFFD
-10102
-10137 1013F
-10179 10189
-103D0
-1D000 1D0F5
-1D100 1D126
-1D12A 1D164
-1D16A 1D16C
-1D183 1D184
-1D18C 1D1A9
-1D1AE 1D1DD
-1D200 1D241
-1D245
-1D300 1D356
-1D6C1
-1D6DB
-1D6FB
-1D715
-1D735
-1D74F
-1D76F
-1D789
-1D7A9
-1D7C3
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/SD.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/SD.pl
deleted file mode 100644
index f8d12d548ae..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/SD.pl
+++ /dev/null
@@ -1,38 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Soft_Dotted'
-#
-return <<'END';
-0069 006A Soft_Dotted
-012F Soft_Dotted
-0268 Soft_Dotted
-029D Soft_Dotted
-02B2 Soft_Dotted
-03F3 Soft_Dotted
-0456 Soft_Dotted
-0458 Soft_Dotted
-1D62 Soft_Dotted
-1D96 Soft_Dotted
-1DA4 Soft_Dotted
-1DA8 Soft_Dotted
-1E2D Soft_Dotted
-1ECB Soft_Dotted
-2071 Soft_Dotted
-2148 2149 Soft_Dotted
-1D422 1D423 Soft_Dotted
-1D456 1D457 Soft_Dotted
-1D48A 1D48B Soft_Dotted
-1D4BE 1D4BF Soft_Dotted
-1D4F2 1D4F3 Soft_Dotted
-1D526 1D527 Soft_Dotted
-1D55A 1D55B Soft_Dotted
-1D58E 1D58F Soft_Dotted
-1D5C2 1D5C3 Soft_Dotted
-1D5F6 1D5F7 Soft_Dotted
-1D62A 1D62B Soft_Dotted
-1D65E 1D65F Soft_Dotted
-1D692 1D693 Soft_Dotted
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/STerm.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/STerm.pl
deleted file mode 100644
index 2e1ac3958dc..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/STerm.pl
+++ /dev/null
@@ -1,35 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'STerm'
-#
-return <<'END';
-0021 STerm
-002E STerm
-003F STerm
-055C STerm
-055E STerm
-0589 STerm
-061F STerm
-06D4 STerm
-0700 0702 STerm
-0964 0965 STerm
-104A 104B STerm
-1362 STerm
-1367 1368 STerm
-166E STerm
-1803 STerm
-1809 STerm
-1944 1945 STerm
-203C 203D STerm
-2047 2049 STerm
-3002 STerm
-FE52 STerm
-FE56 FE57 STerm
-FF01 STerm
-FF0E STerm
-FF1F STerm
-FF61 STerm
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Sc.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Sc.pl
deleted file mode 100644
index c85cf4175b3..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Sc.pl
+++ /dev/null
@@ -1,27 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Sc}
-# \p{Sc} (and fuzzy permutations)
-#
-# Meaning: General Category 'Sc'
-#
-return <<'END';
-0024
-00A2 00A5
-060B
-09F2 09F3
-0AF1
-0BF9
-0E3F
-17DB
-20A0 20B5
-FDFC
-FE69
-FF04
-FFE0 FFE1
-FFE5 FFE6
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Shaw.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Shaw.pl
deleted file mode 100644
index 385dd06f31d..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Shaw.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Shavian} (and fuzzy permutations)
-#
-# Meaning: Script 'Shavian'
-#
-return <<'END';
-10450 1047F Shavian
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Sinh.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Sinh.pl
deleted file mode 100644
index 154fcd4fddb..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Sinh.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Sinhala} (and fuzzy permutations)
-#
-# Meaning: Script 'Sinhala'
-#
-return <<'END';
-0D82 0D83 Sinhala
-0D85 0D96 Sinhala
-0D9A 0DB1 Sinhala
-0DB3 0DBB Sinhala
-0DBD Sinhala
-0DC0 0DC6 Sinhala
-0DCA Sinhala
-0DCF 0DD4 Sinhala
-0DD6 Sinhala
-0DD8 0DDF Sinhala
-0DF2 0DF4 Sinhala
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Sk.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Sk.pl
deleted file mode 100644
index 7e202b38f32..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Sk.pl
+++ /dev/null
@@ -1,36 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Sk}
-# \p{Sk} (and fuzzy permutations)
-#
-# Meaning: General Category 'Sk'
-#
-return <<'END';
-005E
-0060
-00A8
-00AF
-00B4
-00B8
-02C2 02C5
-02D2 02DF
-02E5 02ED
-02EF 02FF
-0374 0375
-0384 0385
-1FBD
-1FBF 1FC1
-1FCD 1FCF
-1FDD 1FDF
-1FED 1FEF
-1FFD 1FFE
-309B 309C
-A700 A716
-FF3E
-FF40
-FFE3
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Sm.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Sm.pl
deleted file mode 100644
index e5b5e4d0320..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Sm.pl
+++ /dev/null
@@ -1,72 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Sm}
-# \p{Sm} (and fuzzy permutations)
-#
-# Meaning: General Category 'Sm'
-#
-return <<'END';
-002B
-003C 003E
-007C
-007E
-00AC
-00B1
-00D7
-00F7
-03F6
-2044
-2052
-207A 207C
-208A 208C
-2140 2144
-214B
-2190 2194
-219A 219B
-21A0
-21A3
-21A6
-21AE
-21CE 21CF
-21D2
-21D4
-21F4 22FF
-2308 230B
-2320 2321
-237C
-239B 23B3
-25B7
-25C1
-25F8 25FF
-266F
-27C0 27C4
-27D0 27E5
-27F0 27FF
-2900 2982
-2999 29D7
-29DC 29FB
-29FE 2AFF
-FB29
-FE62
-FE64 FE66
-FF0B
-FF1C FF1E
-FF5C
-FF5E
-FFE2
-FFE9 FFEC
-1D6C1
-1D6DB
-1D6FB
-1D715
-1D735
-1D74F
-1D76F
-1D789
-1D7A9
-1D7C3
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/So.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/So.pl
deleted file mode 100644
index d50e3f63bf4..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/So.pl
+++ /dev/null
@@ -1,133 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{So}
-# \p{So} (and fuzzy permutations)
-#
-# Meaning: General Category 'So'
-#
-return <<'END';
-00A6 00A7
-00A9
-00AE
-00B0
-00B6
-0482
-060E 060F
-06E9
-06FD 06FE
-09FA
-0B70
-0BF3 0BF8
-0BFA
-0F01 0F03
-0F13 0F17
-0F1A 0F1F
-0F34
-0F36
-0F38
-0FBE 0FC5
-0FC7 0FCC
-0FCF
-1360
-1390 1399
-1940
-19E0 19FF
-2100 2101
-2103 2106
-2108 2109
-2114
-2116 2118
-211E 2123
-2125
-2127
-2129
-212E
-2132
-213A 213B
-214A
-214C
-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
-23B7 23DB
-2400 2426
-2440 244A
-249C 24E9
-2500 25B6
-25B8 25C0
-25C2 25F7
-2600 266E
-2670 269C
-26A0 26B1
-2701 2704
-2706 2709
-270C 2727
-2729 274B
-274D
-274F 2752
-2756
-2758 275E
-2761 2767
-2794
-2798 27AF
-27B1 27BE
-2800 28FF
-2B00 2B13
-2CE5 2CEA
-2E80 2E99
-2E9B 2EF3
-2F00 2FD5
-2FF0 2FFB
-3004
-3012 3013
-3020
-3036 3037
-303E 303F
-3190 3191
-3196 319F
-31C0 31CF
-3200 321E
-322A 3243
-3250
-3260 327F
-328A 32B0
-32C0 32FE
-3300 33FF
-4DC0 4DFF
-A490 A4C6
-A828 A82B
-FDFD
-FFE4
-FFE8
-FFED FFEE
-FFFC FFFD
-10102
-10137 1013F
-10179 10189
-103D0
-1D000 1D0F5
-1D100 1D126
-1D12A 1D164
-1D16A 1D16C
-1D183 1D184
-1D18C 1D1A9
-1D1AE 1D1DD
-1D200 1D241
-1D245
-1D300 1D356
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/SoftDott.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/SoftDott.pl
deleted file mode 100644
index 0542df885ef..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/SoftDott.pl
+++ /dev/null
@@ -1,41 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{SoftDotted} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Soft_Dotted'
-#
-return <<'END';
-0069 006A Soft_Dotted
-012F Soft_Dotted
-0268 Soft_Dotted
-029D Soft_Dotted
-02B2 Soft_Dotted
-03F3 Soft_Dotted
-0456 Soft_Dotted
-0458 Soft_Dotted
-1D62 Soft_Dotted
-1D96 Soft_Dotted
-1DA4 Soft_Dotted
-1DA8 Soft_Dotted
-1E2D Soft_Dotted
-1ECB Soft_Dotted
-2071 Soft_Dotted
-2148 2149 Soft_Dotted
-1D422 1D423 Soft_Dotted
-1D456 1D457 Soft_Dotted
-1D48A 1D48B Soft_Dotted
-1D4BE 1D4BF Soft_Dotted
-1D4F2 1D4F3 Soft_Dotted
-1D526 1D527 Soft_Dotted
-1D55A 1D55B Soft_Dotted
-1D58E 1D58F Soft_Dotted
-1D5C2 1D5C3 Soft_Dotted
-1D5F6 1D5F7 Soft_Dotted
-1D62A 1D62B Soft_Dotted
-1D65E 1D65F Soft_Dotted
-1D692 1D693 Soft_Dotted
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Space.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Space.pl
deleted file mode 100644
index 44b8a618ad8..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Space.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Space}
-#
-# Meaning: [[:Space:]]
-#
-return <<'END';
-0009 000D
-0020
-0085
-00A0
-1680
-180E
-2000 200A
-2028 2029
-202F
-205F
-3000
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/SpacePer.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/SpacePer.pl
deleted file mode 100644
index 97281a6f1a6..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/SpacePer.pl
+++ /dev/null
@@ -1,24 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{SpacePerl}
-#
-# Meaning: \s
-#
-return <<'END';
-0009 000A
-000C 000D
-0020
-0085
-00A0
-1680
-180E
-2000 200A
-2028 2029
-202F
-205F
-3000
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Sterm2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Sterm2.pl
deleted file mode 100644
index c76da9a15b8..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Sterm2.pl
+++ /dev/null
@@ -1,38 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Sterm} (and fuzzy permutations)
-#
-# Meaning: Extended property 'STerm'
-#
-return <<'END';
-0021 STerm
-002E STerm
-003F STerm
-055C STerm
-055E STerm
-0589 STerm
-061F STerm
-06D4 STerm
-0700 0702 STerm
-0964 0965 STerm
-104A 104B STerm
-1362 STerm
-1367 1368 STerm
-166E STerm
-1803 STerm
-1809 STerm
-1944 1945 STerm
-203C 203D STerm
-2047 2049 STerm
-3002 STerm
-FE52 STerm
-FE56 FE57 STerm
-FF01 STerm
-FF0E STerm
-FF1F STerm
-FF61 STerm
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/SylotiNa.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/SylotiNa.pl
deleted file mode 100644
index d95b569f671..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/SylotiNa.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{SylotiNagri} (and fuzzy permutations)
-#
-# Meaning: Script 'Syloti_Nagri'
-#
-return <<'END';
-A800 A82B Syloti_Nagri
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Syrc.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Syrc.pl
deleted file mode 100644
index 8c7aa69187a..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Syrc.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Syriac} (and fuzzy permutations)
-#
-# Meaning: Script 'Syriac'
-#
-return <<'END';
-0700 070D Syriac
-070F 074A Syriac
-074D 074F Syriac
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Tagb.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Tagb.pl
deleted file mode 100644
index 5ea4e4a29d9..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Tagb.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Tagbanwa} (and fuzzy permutations)
-#
-# Meaning: Script 'Tagbanwa'
-#
-return <<'END';
-1760 176C Tagbanwa
-176E 1770 Tagbanwa
-1772 1773 Tagbanwa
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/TaiLe.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/TaiLe.pl
deleted file mode 100644
index 92d901046dd..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/TaiLe.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{TaiLe} (and fuzzy permutations)
-#
-# Meaning: Script 'Tai_Le'
-#
-return <<'END';
-1950 196D Tai_Le
-1970 1974 Tai_Le
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Taml.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Taml.pl
deleted file mode 100644
index 6c4c5fff8d7..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Taml.pl
+++ /dev/null
@@ -1,27 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Tamil} (and fuzzy permutations)
-#
-# Meaning: Script 'Tamil'
-#
-return <<'END';
-0B82 0B83 Tamil
-0B85 0B8A Tamil
-0B8E 0B90 Tamil
-0B92 0B95 Tamil
-0B99 0B9A Tamil
-0B9C Tamil
-0B9E 0B9F Tamil
-0BA3 0BA4 Tamil
-0BA8 0BAA Tamil
-0BAE 0BB9 Tamil
-0BBE 0BC2 Tamil
-0BC6 0BC8 Tamil
-0BCA 0BCD Tamil
-0BD7 Tamil
-0BE6 0BFA Tamil
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Telu.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Telu.pl
deleted file mode 100644
index 74de197eeb9..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Telu.pl
+++ /dev/null
@@ -1,24 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Telugu} (and fuzzy permutations)
-#
-# Meaning: Script 'Telugu'
-#
-return <<'END';
-0C01 0C03 Telugu
-0C05 0C0C Telugu
-0C0E 0C10 Telugu
-0C12 0C28 Telugu
-0C2A 0C33 Telugu
-0C35 0C39 Telugu
-0C3E 0C44 Telugu
-0C46 0C48 Telugu
-0C4A 0C4D Telugu
-0C55 0C56 Telugu
-0C60 0C61 Telugu
-0C66 0C6F Telugu
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Term.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Term.pl
deleted file mode 100644
index 124872bd54c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Term.pl
+++ /dev/null
@@ -1,49 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Terminal_Punctuation'
-#
-return <<'END';
-0021 Terminal_Punctuation
-002C Terminal_Punctuation
-002E Terminal_Punctuation
-003A 003B Terminal_Punctuation
-003F Terminal_Punctuation
-037E Terminal_Punctuation
-0387 Terminal_Punctuation
-0589 Terminal_Punctuation
-05C3 Terminal_Punctuation
-060C Terminal_Punctuation
-061B Terminal_Punctuation
-061F Terminal_Punctuation
-06D4 Terminal_Punctuation
-0700 070A Terminal_Punctuation
-070C Terminal_Punctuation
-0964 0965 Terminal_Punctuation
-0E5A 0E5B Terminal_Punctuation
-0F08 Terminal_Punctuation
-0F0D 0F12 Terminal_Punctuation
-104A 104B Terminal_Punctuation
-1361 1368 Terminal_Punctuation
-166D 166E Terminal_Punctuation
-16EB 16ED Terminal_Punctuation
-17D4 17D6 Terminal_Punctuation
-17DA Terminal_Punctuation
-1802 1805 Terminal_Punctuation
-1808 1809 Terminal_Punctuation
-1944 1945 Terminal_Punctuation
-203C 203D Terminal_Punctuation
-2047 2049 Terminal_Punctuation
-3001 3002 Terminal_Punctuation
-FE50 FE52 Terminal_Punctuation
-FE54 FE57 Terminal_Punctuation
-FF01 Terminal_Punctuation
-FF0C Terminal_Punctuation
-FF0E Terminal_Punctuation
-FF1A FF1B Terminal_Punctuation
-FF1F Terminal_Punctuation
-FF61 Terminal_Punctuation
-FF64 Terminal_Punctuation
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Terminal.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Terminal.pl
deleted file mode 100644
index da5860f1fe3..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Terminal.pl
+++ /dev/null
@@ -1,52 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{TerminalPunctuation} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Terminal_Punctuation'
-#
-return <<'END';
-0021 Terminal_Punctuation
-002C Terminal_Punctuation
-002E Terminal_Punctuation
-003A 003B Terminal_Punctuation
-003F Terminal_Punctuation
-037E Terminal_Punctuation
-0387 Terminal_Punctuation
-0589 Terminal_Punctuation
-05C3 Terminal_Punctuation
-060C Terminal_Punctuation
-061B Terminal_Punctuation
-061F Terminal_Punctuation
-06D4 Terminal_Punctuation
-0700 070A Terminal_Punctuation
-070C Terminal_Punctuation
-0964 0965 Terminal_Punctuation
-0E5A 0E5B Terminal_Punctuation
-0F08 Terminal_Punctuation
-0F0D 0F12 Terminal_Punctuation
-104A 104B Terminal_Punctuation
-1361 1368 Terminal_Punctuation
-166D 166E Terminal_Punctuation
-16EB 16ED Terminal_Punctuation
-17D4 17D6 Terminal_Punctuation
-17DA Terminal_Punctuation
-1802 1805 Terminal_Punctuation
-1808 1809 Terminal_Punctuation
-1944 1945 Terminal_Punctuation
-203C 203D Terminal_Punctuation
-2047 2049 Terminal_Punctuation
-3001 3002 Terminal_Punctuation
-FE50 FE52 Terminal_Punctuation
-FE54 FE57 Terminal_Punctuation
-FF01 Terminal_Punctuation
-FF0C Terminal_Punctuation
-FF0E Terminal_Punctuation
-FF1A FF1B Terminal_Punctuation
-FF1F Terminal_Punctuation
-FF61 Terminal_Punctuation
-FF64 Terminal_Punctuation
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Tfng.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Tfng.pl
deleted file mode 100644
index 4ee12034069..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Tfng.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Tifinagh} (and fuzzy permutations)
-#
-# Meaning: Script 'Tifinagh'
-#
-return <<'END';
-2D30 2D65 Tifinagh
-2D6F Tifinagh
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Tglg.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Tglg.pl
deleted file mode 100644
index f9d24576279..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Tglg.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Tagalog} (and fuzzy permutations)
-#
-# Meaning: Script 'Tagalog'
-#
-return <<'END';
-1700 170C Tagalog
-170E 1714 Tagalog
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Thaa.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Thaa.pl
deleted file mode 100644
index 7ab38dc4eab..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Thaa.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Thaana} (and fuzzy permutations)
-#
-# Meaning: Script 'Thaana'
-#
-return <<'END';
-0780 07B1 Thaana
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Thai.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Thai.pl
deleted file mode 100644
index 03467d4b8ec..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Thai.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Thai} (and fuzzy permutations)
-#
-# Meaning: Script 'Thai'
-#
-return <<'END';
-0E01 0E3A Thai
-0E40 0E5B Thai
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Tibt.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Tibt.pl
deleted file mode 100644
index aa6be295479..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Tibt.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Tibetan} (and fuzzy permutations)
-#
-# Meaning: Script 'Tibetan'
-#
-return <<'END';
-0F00 0F47 Tibetan
-0F49 0F6A Tibetan
-0F71 0F8B Tibetan
-0F90 0F97 Tibetan
-0F99 0FBC Tibetan
-0FBE 0FCC Tibetan
-0FCF 0FD1 Tibetan
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Title.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Title.pl
deleted file mode 100644
index 158a6cd6eb5..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Title.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Title}
-#
-# Meaning: [[:Title:]]
-#
-return <<'END';
-01C5
-01C8
-01CB
-01F2
-1F88 1F8F
-1F98 1F9F
-1FA8 1FAF
-1FBC
-1FCC
-1FFC
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/UIdeo.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/UIdeo.pl
deleted file mode 100644
index e0629a335d0..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/UIdeo.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Unified_Ideograph'
-#
-return <<'END';
-3400 4DB5 Unified_Ideograph
-4E00 9FBB Unified_Ideograph
-FA0E FA0F Unified_Ideograph
-FA11 Unified_Ideograph
-FA13 FA14 Unified_Ideograph
-FA1F Unified_Ideograph
-FA21 Unified_Ideograph
-FA23 FA24 Unified_Ideograph
-FA27 FA29 Unified_Ideograph
-20000 2A6D6 Unified_Ideograph
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ugar.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ugar.pl
deleted file mode 100644
index e79e6c67738..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Ugar.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Ugaritic} (and fuzzy permutations)
-#
-# Meaning: Script 'Ugaritic'
-#
-return <<'END';
-10380 1039D Ugaritic
-1039F Ugaritic
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/UnifiedI.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/UnifiedI.pl
deleted file mode 100644
index 440dc126aae..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/UnifiedI.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{UnifiedIdeograph} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Unified_Ideograph'
-#
-return <<'END';
-3400 4DB5 Unified_Ideograph
-4E00 9FBB Unified_Ideograph
-FA0E FA0F Unified_Ideograph
-FA11 Unified_Ideograph
-FA13 FA14 Unified_Ideograph
-FA1F Unified_Ideograph
-FA21 Unified_Ideograph
-FA23 FA24 Unified_Ideograph
-FA27 FA29 Unified_Ideograph
-20000 2A6D6 Unified_Ideograph
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Upper.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Upper.pl
deleted file mode 100644
index 214ab48efef..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Upper.pl
+++ /dev/null
@@ -1,488 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Upper}
-#
-# Meaning: [[:Upper:]]
-#
-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
-0220
-0222
-0224
-0226
-0228
-022A
-022C
-022E
-0230
-0232
-023A 023B
-023D 023E
-0241
-0386
-0388 038A
-038C
-038E 038F
-0391 03A1
-03A3 03AB
-03D2 03D4
-03D8
-03DA
-03DC
-03DE
-03E0
-03E2
-03E4
-03E6
-03E8
-03EA
-03EC
-03EE
-03F4
-03F7
-03F9 03FA
-03FD 042F
-0460
-0462
-0464
-0466
-0468
-046A
-046C
-046E
-0470
-0472
-0474
-0476
-0478
-047A
-047C
-047E
-0480
-048A
-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
-04C5
-04C7
-04C9
-04CB
-04CD
-04D0
-04D2
-04D4
-04D6
-04D8
-04DA
-04DC
-04DE
-04E0
-04E2
-04E4
-04E6
-04E8
-04EA
-04EC
-04EE
-04F0
-04F2
-04F4
-04F6
-04F8
-0500
-0502
-0504
-0506
-0508
-050A
-050C
-050E
-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
-213E 213F
-2145
-2C00 2C2E
-2C80
-2C82
-2C84
-2C86
-2C88
-2C8A
-2C8C
-2C8E
-2C90
-2C92
-2C94
-2C96
-2C98
-2C9A
-2C9C
-2C9E
-2CA0
-2CA2
-2CA4
-2CA6
-2CA8
-2CAA
-2CAC
-2CAE
-2CB0
-2CB2
-2CB4
-2CB6
-2CB8
-2CBA
-2CBC
-2CBE
-2CC0
-2CC2
-2CC4
-2CC6
-2CC8
-2CCA
-2CCC
-2CCE
-2CD0
-2CD2
-2CD4
-2CD6
-2CD8
-2CDA
-2CDC
-2CDE
-2CE0
-2CE2
-FF21 FF3A
-10400 10427
-1D400 1D419
-1D434 1D44D
-1D468 1D481
-1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B5
-1D4D0 1D4E9
-1D504 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D538 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D56C 1D585
-1D5A0 1D5B9
-1D5D4 1D5ED
-1D608 1D621
-1D63C 1D655
-1D670 1D689
-1D6A8 1D6C0
-1D6E2 1D6FA
-1D71C 1D734
-1D756 1D76E
-1D790 1D7A8
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Uppercas.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Uppercas.pl
deleted file mode 100644
index 4778dc3ab52..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Uppercas.pl
+++ /dev/null
@@ -1,490 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Uppercase} (and fuzzy permutations)
-#
-# Meaning: [\p{Lu}\p{Other_Uppercase}]
-#
-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
-0220
-0222
-0224
-0226
-0228
-022A
-022C
-022E
-0230
-0232
-023A 023B
-023D 023E
-0241
-0386
-0388 038A
-038C
-038E 038F
-0391 03A1
-03A3 03AB
-03D2 03D4
-03D8
-03DA
-03DC
-03DE
-03E0
-03E2
-03E4
-03E6
-03E8
-03EA
-03EC
-03EE
-03F4
-03F7
-03F9 03FA
-03FD 042F
-0460
-0462
-0464
-0466
-0468
-046A
-046C
-046E
-0470
-0472
-0474
-0476
-0478
-047A
-047C
-047E
-0480
-048A
-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
-04C5
-04C7
-04C9
-04CB
-04CD
-04D0
-04D2
-04D4
-04D6
-04D8
-04DA
-04DC
-04DE
-04E0
-04E2
-04E4
-04E6
-04E8
-04EA
-04EC
-04EE
-04F0
-04F2
-04F4
-04F6
-04F8
-0500
-0502
-0504
-0506
-0508
-050A
-050C
-050E
-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
-213E 213F
-2145
-2160 216F
-24B6 24CF
-2C00 2C2E
-2C80
-2C82
-2C84
-2C86
-2C88
-2C8A
-2C8C
-2C8E
-2C90
-2C92
-2C94
-2C96
-2C98
-2C9A
-2C9C
-2C9E
-2CA0
-2CA2
-2CA4
-2CA6
-2CA8
-2CAA
-2CAC
-2CAE
-2CB0
-2CB2
-2CB4
-2CB6
-2CB8
-2CBA
-2CBC
-2CBE
-2CC0
-2CC2
-2CC4
-2CC6
-2CC8
-2CCA
-2CCC
-2CCE
-2CD0
-2CD2
-2CD4
-2CD6
-2CD8
-2CDA
-2CDC
-2CDE
-2CE0
-2CE2
-FF21 FF3A
-10400 10427
-1D400 1D419
-1D434 1D44D
-1D468 1D481
-1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B5
-1D4D0 1D4E9
-1D504 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D538 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D56C 1D585
-1D5A0 1D5B9
-1D5D4 1D5ED
-1D608 1D621
-1D63C 1D655
-1D670 1D689
-1D6A8 1D6C0
-1D6E2 1D6FA
-1D71C 1D734
-1D756 1D76E
-1D790 1D7A8
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/VS.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/VS.pl
deleted file mode 100644
index ca505d75531..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/VS.pl
+++ /dev/null
@@ -1,12 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'Variation_Selector'
-#
-return <<'END';
-180B 180D Variation_Selector
-FE00 FE0F Variation_Selector
-E0100 E01EF Variation_Selector
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Variatio.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Variatio.pl
deleted file mode 100644
index 74173e857ce..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Variatio.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{VariationSelector} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Variation_Selector'
-#
-return <<'END';
-180B 180D Variation_Selector
-FE00 FE0F Variation_Selector
-E0100 E01EF Variation_Selector
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/WSpace.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/WSpace.pl
deleted file mode 100644
index 0078091db50..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/WSpace.pl
+++ /dev/null
@@ -1,20 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Binary property 'White_Space'
-#
-return <<'END';
-0009 000D White_Space
-0020 White_Space
-0085 White_Space
-00A0 White_Space
-1680 White_Space
-180E White_Space
-2000 200A White_Space
-2028 2029 White_Space
-202F White_Space
-205F White_Space
-3000 White_Space
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/WhiteSpa.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/WhiteSpa.pl
deleted file mode 100644
index 0284bc05318..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/WhiteSpa.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{WhiteSpace} (and fuzzy permutations)
-#
-# Meaning: Extended property 'White_Space'
-#
-return <<'END';
-0009 000D White_Space
-0020 White_Space
-0085 White_Space
-00A0 White_Space
-1680 White_Space
-180E White_Space
-2000 200A White_Space
-2028 2029 White_Space
-202F White_Space
-205F White_Space
-3000 White_Space
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Word.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Word.pl
deleted file mode 100644
index fcae9e4d565..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Word.pl
+++ /dev/null
@@ -1,476 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Word}
-#
-# Meaning: [[:Word:]]
-#
-return <<'END';
-0030 0039
-0041 005A
-005F
-0061 007A
-00AA
-00B2 00B3
-00B5
-00B9 00BA
-00BC 00BE
-00C0 00D6
-00D8 00F6
-00F8 0241
-0250 02C1
-02C6 02D1
-02E0 02E4
-02EE
-0300 036F
-037A
-0386
-0388 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 03F5
-03F7 0481
-0483 0486
-0488 04CE
-04D0 04F9
-0500 050F
-0531 0556
-0559
-0561 0587
-0591 05B9
-05BB 05BD
-05BF
-05C1 05C2
-05C4 05C5
-05C7
-05D0 05EA
-05F0 05F2
-0610 0615
-0621 063A
-0640 065E
-0660 0669
-066E 06D3
-06D5 06DC
-06DE 06E8
-06EA 06FC
-06FF
-0710 074A
-074D 076D
-0780 07B1
-0901 0939
-093C 094D
-0950 0954
-0958 0963
-0966 096F
-097D
-0981 0983
-0985 098C
-098F 0990
-0993 09A8
-09AA 09B0
-09B2
-09B6 09B9
-09BC 09C4
-09C7 09C8
-09CB 09CE
-09D7
-09DC 09DD
-09DF 09E3
-09E6 09F1
-09F4 09F9
-0A01 0A03
-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 0A8D
-0A8F 0A91
-0A93 0AA8
-0AAA 0AB0
-0AB2 0AB3
-0AB5 0AB9
-0ABC 0AC5
-0AC7 0AC9
-0ACB 0ACD
-0AD0
-0AE0 0AE3
-0AE6 0AEF
-0B01 0B03
-0B05 0B0C
-0B0F 0B10
-0B13 0B28
-0B2A 0B30
-0B32 0B33
-0B35 0B39
-0B3C 0B43
-0B47 0B48
-0B4B 0B4D
-0B56 0B57
-0B5C 0B5D
-0B5F 0B61
-0B66 0B6F
-0B71
-0B82 0B83
-0B85 0B8A
-0B8E 0B90
-0B92 0B95
-0B99 0B9A
-0B9C
-0B9E 0B9F
-0BA3 0BA4
-0BA8 0BAA
-0BAE 0BB9
-0BBE 0BC2
-0BC6 0BC8
-0BCA 0BCD
-0BD7
-0BE6 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
-0CBC 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 0DF3
-0E01 0E3A
-0E40 0E4E
-0E50 0E59
-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
-0F18 0F19
-0F20 0F33
-0F35
-0F37
-0F39
-0F3E 0F47
-0F49 0F6A
-0F71 0F84
-0F86 0F8B
-0F90 0F97
-0F99 0FBC
-0FC6
-1000 1021
-1023 1027
-1029 102A
-102C 1032
-1036 1039
-1040 1049
-1050 1059
-10A0 10C5
-10D0 10FA
-10FC
-1100 1159
-115F 11A2
-11A8 11F9
-1200 1248
-124A 124D
-1250 1256
-1258
-125A 125D
-1260 1288
-128A 128D
-1290 12B0
-12B2 12B5
-12B8 12BE
-12C0
-12C2 12C5
-12C8 12D6
-12D8 1310
-1312 1315
-1318 135A
-135F
-1369 137C
-1380 138F
-13A0 13F4
-1401 166C
-166F 1676
-1681 169A
-16A0 16EA
-16EE 16F0
-1700 170C
-170E 1714
-1720 1734
-1740 1753
-1760 176C
-176E 1770
-1772 1773
-1780 17B3
-17B6 17D3
-17D7
-17DC 17DD
-17E0 17E9
-17F0 17F9
-180B 180D
-1810 1819
-1820 1877
-1880 18A9
-1900 191C
-1920 192B
-1930 193B
-1946 196D
-1970 1974
-1980 19A9
-19B0 19C9
-19D0 19D9
-1A00 1A1B
-1D00 1DC3
-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
-203F 2040
-2054
-2070 2071
-2074 2079
-207F 2089
-2090 2094
-20D0 20EB
-2102
-2107
-210A 2113
-2115
-2119 211D
-2124
-2126
-2128
-212A 212D
-212F 2131
-2133 2139
-213C 213F
-2145 2149
-2153 2183
-2460 249B
-24EA 24FF
-2776 2793
-2C00 2C2E
-2C30 2C5E
-2C80 2CE4
-2CFD
-2D00 2D25
-2D30 2D65
-2D6F
-2D80 2D96
-2DA0 2DA6
-2DA8 2DAE
-2DB0 2DB6
-2DB8 2DBE
-2DC0 2DC6
-2DC8 2DCE
-2DD0 2DD6
-2DD8 2DDE
-3005 3007
-3021 302F
-3031 3035
-3038 303C
-3041 3096
-3099 309A
-309D 309F
-30A1 30FA
-30FC 30FF
-3105 312C
-3131 318E
-3192 3195
-31A0 31B7
-31F0 31FF
-3220 3229
-3251 325F
-3280 3289
-32B1 32BF
-3400 4DB5
-4E00 9FBB
-A000 A48C
-A800 A827
-AC00 D7A3
-F900 FA2D
-FA30 FA6A
-FA70 FAD9
-FB00 FB06
-FB13 FB17
-FB1D FB28
-FB2A FB36
-FB38 FB3C
-FB3E
-FB40 FB41
-FB43 FB44
-FB46 FBB1
-FBD3 FD3D
-FD50 FD8F
-FD92 FDC7
-FDF0 FDFB
-FE00 FE0F
-FE20 FE23
-FE33 FE34
-FE4D FE4F
-FE70 FE74
-FE76 FEFC
-FF10 FF19
-FF21 FF3A
-FF3F
-FF41 FF5A
-FF66 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-10000 1000B
-1000D 10026
-10028 1003A
-1003C 1003D
-1003F 1004D
-10050 1005D
-10080 100FA
-10107 10133
-10140 10178
-1018A
-10300 1031E
-10320 10323
-10330 1034A
-10380 1039D
-103A0 103C3
-103C8 103CF
-103D1 103D5
-10400 1049D
-104A0 104A9
-10800 10805
-10808
-1080A 10835
-10837 10838
-1083C
-1083F
-10A00 10A03
-10A05 10A06
-10A0C 10A13
-10A15 10A17
-10A19 10A33
-10A38 10A3A
-10A3F 10A47
-1D165 1D169
-1D16D 1D172
-1D17B 1D182
-1D185 1D18B
-1D1AA 1D1AD
-1D242 1D244
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A5
-1D6A8 1D6C0
-1D6C2 1D6DA
-1D6DC 1D6FA
-1D6FC 1D714
-1D716 1D734
-1D736 1D74E
-1D750 1D76E
-1D770 1D788
-1D78A 1D7A8
-1D7AA 1D7C2
-1D7C4 1D7C9
-1D7CE 1D7FF
-20000 2A6D6
-2F800 2FA1D
-E0100 E01EF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/XDigit.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/XDigit.pl
deleted file mode 100644
index 62350a4646f..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/XDigit.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{XDigit}
-#
-# Meaning: [[:XDigit:]]
-#
-return <<'END';
-0030 0039
-0041 0046
-0061 0066
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Yiii.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Yiii.pl
deleted file mode 100644
index 628bd87ba41..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Yiii.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Yi} (and fuzzy permutations)
-#
-# Meaning: Script 'Yi'
-#
-return <<'END';
-A000 A48C Yi
-A490 A4C6 Yi
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Z.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Z.pl
deleted file mode 100644
index 361c4a92e23..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Z.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Z}
-# \p{Z} (and fuzzy permutations)
-#
-# Meaning: Major Category 'Z'
-#
-return <<'END';
-0020
-00A0
-1680
-180E
-2000 200A
-2028 2029
-202F
-205F
-3000
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Zl.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Zl.pl
deleted file mode 100644
index ed1819bd008..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Zl.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Zl}
-# \p{Zl} (and fuzzy permutations)
-#
-# Meaning: General Category 'Zl'
-#
-return <<'END';
-2028
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Zp.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Zp.pl
deleted file mode 100644
index bd18ea4696f..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Zp.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Zp}
-# \p{Zp} (and fuzzy permutations)
-#
-# Meaning: General Category 'Zp'
-#
-return <<'END';
-2029
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Zs.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Zs.pl
deleted file mode 100644
index 32c9497794c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Zs.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Zs}
-# \p{Zs} (and fuzzy permutations)
-#
-# Meaning: General Category 'Zs'
-#
-return <<'END';
-0020
-00A0
-1680
-180E
-2000 200A
-202F
-205F
-3000
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Zyyy.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Zyyy.pl
deleted file mode 100644
index a6eaa6a6887..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/Zyyy.pl
+++ /dev/null
@@ -1,138 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Common} (and fuzzy permutations)
-#
-# Meaning: Script 'Common'
-#
-return <<'END';
-0000 0040 Common
-005B 0060 Common
-007B 00A9 Common
-00AB 00B9 Common
-00BB 00BF Common
-00D7 Common
-00F7 Common
-02B9 02DF Common
-02E5 02FF Common
-037E Common
-0387 Common
-0589 Common
-0600 0603 Common
-060C Common
-061B Common
-061F Common
-0640 Common
-0660 0669 Common
-06DD Common
-0964 0965 Common
-0970 Common
-0E3F Common
-10FB Common
-16EB 16ED Common
-1735 1736 Common
-2000 200B Common
-200E 2063 Common
-206A 2070 Common
-2074 207E Common
-2080 208E Common
-20A0 20B5 Common
-2100 2125 Common
-2127 2129 Common
-212C 214C Common
-2153 2183 Common
-2190 23DB Common
-2400 2426 Common
-2440 244A Common
-2460 269C Common
-26A0 26B1 Common
-2701 2704 Common
-2706 2709 Common
-270C 2727 Common
-2729 274B Common
-274D Common
-274F 2752 Common
-2756 Common
-2758 275E Common
-2761 2794 Common
-2798 27AF Common
-27B1 27BE Common
-27C0 27C6 Common
-27D0 27EB Common
-27F0 27FF Common
-2900 2B13 Common
-2E00 2E17 Common
-2E1C 2E1D Common
-2FF0 2FFB Common
-3000 3004 Common
-3006 Common
-3008 3020 Common
-3030 3037 Common
-303C 303F Common
-309B 309C Common
-30A0 Common
-30FB 30FC Common
-3190 319F Common
-31C0 31CF Common
-3220 3243 Common
-3250 325F Common
-327E 32FE Common
-3300 33FF Common
-4DC0 4DFF Common
-A700 A716 Common
-E000 F8FF Common
-FD3E FD3F Common
-FDFD Common
-FE10 FE19 Common
-FE30 FE52 Common
-FE54 FE66 Common
-FE68 FE6B Common
-FEFF Common
-FF01 FF20 Common
-FF3B FF40 Common
-FF5B FF65 Common
-FF70 Common
-FF9E FF9F Common
-FFE0 FFE6 Common
-FFE8 FFEE Common
-FFF9 FFFD Common
-10100 10102 Common
-10107 10133 Common
-10137 1013F Common
-1D000 1D0F5 Common
-1D100 1D126 Common
-1D12A 1D166 Common
-1D16A 1D17A Common
-1D183 1D184 Common
-1D18C 1D1A9 Common
-1D1AE 1D1DD Common
-1D300 1D356 Common
-1D400 1D454 Common
-1D456 1D49C Common
-1D49E 1D49F Common
-1D4A2 Common
-1D4A5 1D4A6 Common
-1D4A9 1D4AC Common
-1D4AE 1D4B9 Common
-1D4BB Common
-1D4BD 1D4C3 Common
-1D4C5 1D505 Common
-1D507 1D50A Common
-1D50D 1D514 Common
-1D516 1D51C Common
-1D51E 1D539 Common
-1D53B 1D53E Common
-1D540 1D544 Common
-1D546 Common
-1D54A 1D550 Common
-1D552 1D6A5 Common
-1D6A8 1D7C9 Common
-1D7CE 1D7FF Common
-E0001 Common
-E0020 E007F Common
-F0000 FFFFD Common
-100000 10FFFD Common
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/_CanonDC.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/_CanonDC.pl
deleted file mode 100644
index 5da8da98335..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/_CanonDC.pl
+++ /dev/null
@@ -1,16 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{_CanonDCIJ}
-#
-# Meaning: (for internal casefolding use)
-#
-return <<'END';
-0069 006A
-012F
-1E2D
-1ECB
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/_CaseIgn.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/_CaseIgn.pl
deleted file mode 100644
index e6c2b6619d3..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/_CaseIgn.pl
+++ /dev/null
@@ -1,138 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{_CaseIgnorable}
-#
-# Meaning: (for internal casefolding use)
-#
-return <<'END';
-00AD
-0300 036F
-0483 0486
-0591 05B9
-05BB 05BD
-05BF
-05C1 05C2
-05C4 05C5
-05C7
-0610 0615
-064B 065E
-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
-0A01 0A02
-0A3C
-0A41 0A42
-0A47 0A48
-0A4B 0A4D
-0A70 0A71
-0A81 0A82
-0ABC
-0AC1 0AC5
-0AC7 0AC8
-0ACD
-0AE2 0AE3
-0B01
-0B3C
-0B3F
-0B41 0B43
-0B4D
-0B56
-0B82
-0BC0
-0BCD
-0C3E 0C40
-0C46 0C48
-0C4A 0C4D
-0C55 0C56
-0CBC
-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
-135F
-1712 1714
-1732 1734
-1752 1753
-1772 1773
-17B7 17BD
-17C6
-17C9 17D3
-17DD
-180B 180D
-18A9
-1920 1922
-1927 1928
-1932
-1939 193B
-1A17 1A18
-1DC0 1DC3
-2010
-20D0 20DC
-20E1
-20E5 20EB
-302A 302F
-3099 309A
-A806
-A80B
-A825 A826
-FB1E
-FE00 FE0F
-FE20 FE23
-10A01 10A03
-10A05 10A06
-10A0C 10A0F
-10A38 10A3A
-10A3F
-1D167 1D169
-1D17B 1D182
-1D185 1D18B
-1D1AA 1D1AD
-1D242 1D244
-E0100 E01EF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/_CombAbo.pl b/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/_CombAbo.pl
deleted file mode 100644
index 0bf4915039c..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/gc_sc/_CombAbo.pl
+++ /dev/null
@@ -1,69 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{_CombAbove}
-#
-# Meaning: (for internal casefolding use)
-#
-return <<'END';
-0300 0314
-033D 0344
-0346
-034A 034C
-0350 0352
-0357
-035B
-0363 036F
-0483 0486
-0592 0595
-0597 0599
-059C 05A1
-05A8 05A9
-05AB 05AC
-05AF
-05C4
-0610 0615
-0653 0654
-0657 065B
-065D 065E
-06D6 06DC
-06DF 06E2
-06E4
-06E7 06E8
-06EB 06EC
-0730
-0732 0733
-0735 0736
-073A
-073D
-073F 0741
-0743
-0745
-0747
-0749 074A
-0951
-0953 0954
-0F82 0F83
-0F86 0F87
-135F
-17DD
-193A
-1A17
-1DC0 1DC1
-1DC3
-20D0 20D1
-20D4 20D7
-20DB 20DC
-20E1
-20E7
-20E9
-FE20 FE23
-10A0F
-10A38
-1D185 1D189
-1D1AA 1D1AD
-1D242 1D244
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/hst/L.pl b/Master/tlpkg/tlperl/lib/unicore/lib/hst/L.pl
deleted file mode 100644
index 945fc18394f..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/hst/L.pl
+++ /dev/null
@@ -1,11 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# HangulSyllableType category 'Leading_Jamo'
-#
-return <<'END';
-1100 1159
-115F
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/hst/LV.pl b/Master/tlpkg/tlperl/lib/unicore/lib/hst/LV.pl
deleted file mode 100644
index 13d12ad5f31..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/hst/LV.pl
+++ /dev/null
@@ -1,408 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# HangulSyllableType category 'LV_Syllable'
-#
-return <<'END';
-AC00
-AC1C
-AC38
-AC54
-AC70
-AC8C
-ACA8
-ACC4
-ACE0
-ACFC
-AD18
-AD34
-AD50
-AD6C
-AD88
-ADA4
-ADC0
-ADDC
-ADF8
-AE14
-AE30
-AE4C
-AE68
-AE84
-AEA0
-AEBC
-AED8
-AEF4
-AF10
-AF2C
-AF48
-AF64
-AF80
-AF9C
-AFB8
-AFD4
-AFF0
-B00C
-B028
-B044
-B060
-B07C
-B098
-B0B4
-B0D0
-B0EC
-B108
-B124
-B140
-B15C
-B178
-B194
-B1B0
-B1CC
-B1E8
-B204
-B220
-B23C
-B258
-B274
-B290
-B2AC
-B2C8
-B2E4
-B300
-B31C
-B338
-B354
-B370
-B38C
-B3A8
-B3C4
-B3E0
-B3FC
-B418
-B434
-B450
-B46C
-B488
-B4A4
-B4C0
-B4DC
-B4F8
-B514
-B530
-B54C
-B568
-B584
-B5A0
-B5BC
-B5D8
-B5F4
-B610
-B62C
-B648
-B664
-B680
-B69C
-B6B8
-B6D4
-B6F0
-B70C
-B728
-B744
-B760
-B77C
-B798
-B7B4
-B7D0
-B7EC
-B808
-B824
-B840
-B85C
-B878
-B894
-B8B0
-B8CC
-B8E8
-B904
-B920
-B93C
-B958
-B974
-B990
-B9AC
-B9C8
-B9E4
-BA00
-BA1C
-BA38
-BA54
-BA70
-BA8C
-BAA8
-BAC4
-BAE0
-BAFC
-BB18
-BB34
-BB50
-BB6C
-BB88
-BBA4
-BBC0
-BBDC
-BBF8
-BC14
-BC30
-BC4C
-BC68
-BC84
-BCA0
-BCBC
-BCD8
-BCF4
-BD10
-BD2C
-BD48
-BD64
-BD80
-BD9C
-BDB8
-BDD4
-BDF0
-BE0C
-BE28
-BE44
-BE60
-BE7C
-BE98
-BEB4
-BED0
-BEEC
-BF08
-BF24
-BF40
-BF5C
-BF78
-BF94
-BFB0
-BFCC
-BFE8
-C004
-C020
-C03C
-C058
-C074
-C090
-C0AC
-C0C8
-C0E4
-C100
-C11C
-C138
-C154
-C170
-C18C
-C1A8
-C1C4
-C1E0
-C1FC
-C218
-C234
-C250
-C26C
-C288
-C2A4
-C2C0
-C2DC
-C2F8
-C314
-C330
-C34C
-C368
-C384
-C3A0
-C3BC
-C3D8
-C3F4
-C410
-C42C
-C448
-C464
-C480
-C49C
-C4B8
-C4D4
-C4F0
-C50C
-C528
-C544
-C560
-C57C
-C598
-C5B4
-C5D0
-C5EC
-C608
-C624
-C640
-C65C
-C678
-C694
-C6B0
-C6CC
-C6E8
-C704
-C720
-C73C
-C758
-C774
-C790
-C7AC
-C7C8
-C7E4
-C800
-C81C
-C838
-C854
-C870
-C88C
-C8A8
-C8C4
-C8E0
-C8FC
-C918
-C934
-C950
-C96C
-C988
-C9A4
-C9C0
-C9DC
-C9F8
-CA14
-CA30
-CA4C
-CA68
-CA84
-CAA0
-CABC
-CAD8
-CAF4
-CB10
-CB2C
-CB48
-CB64
-CB80
-CB9C
-CBB8
-CBD4
-CBF0
-CC0C
-CC28
-CC44
-CC60
-CC7C
-CC98
-CCB4
-CCD0
-CCEC
-CD08
-CD24
-CD40
-CD5C
-CD78
-CD94
-CDB0
-CDCC
-CDE8
-CE04
-CE20
-CE3C
-CE58
-CE74
-CE90
-CEAC
-CEC8
-CEE4
-CF00
-CF1C
-CF38
-CF54
-CF70
-CF8C
-CFA8
-CFC4
-CFE0
-CFFC
-D018
-D034
-D050
-D06C
-D088
-D0A4
-D0C0
-D0DC
-D0F8
-D114
-D130
-D14C
-D168
-D184
-D1A0
-D1BC
-D1D8
-D1F4
-D210
-D22C
-D248
-D264
-D280
-D29C
-D2B8
-D2D4
-D2F0
-D30C
-D328
-D344
-D360
-D37C
-D398
-D3B4
-D3D0
-D3EC
-D408
-D424
-D440
-D45C
-D478
-D494
-D4B0
-D4CC
-D4E8
-D504
-D520
-D53C
-D558
-D574
-D590
-D5AC
-D5C8
-D5E4
-D600
-D61C
-D638
-D654
-D670
-D68C
-D6A8
-D6C4
-D6E0
-D6FC
-D718
-D734
-D750
-D76C
-D788
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/hst/LVT.pl b/Master/tlpkg/tlperl/lib/unicore/lib/hst/LVT.pl
deleted file mode 100644
index c429e0216ee..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/hst/LVT.pl
+++ /dev/null
@@ -1,408 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# HangulSyllableType category 'LVT_Syllable'
-#
-return <<'END';
-AC01 AC1B
-AC1D AC37
-AC39 AC53
-AC55 AC6F
-AC71 AC8B
-AC8D ACA7
-ACA9 ACC3
-ACC5 ACDF
-ACE1 ACFB
-ACFD AD17
-AD19 AD33
-AD35 AD4F
-AD51 AD6B
-AD6D AD87
-AD89 ADA3
-ADA5 ADBF
-ADC1 ADDB
-ADDD ADF7
-ADF9 AE13
-AE15 AE2F
-AE31 AE4B
-AE4D AE67
-AE69 AE83
-AE85 AE9F
-AEA1 AEBB
-AEBD AED7
-AED9 AEF3
-AEF5 AF0F
-AF11 AF2B
-AF2D AF47
-AF49 AF63
-AF65 AF7F
-AF81 AF9B
-AF9D AFB7
-AFB9 AFD3
-AFD5 AFEF
-AFF1 B00B
-B00D B027
-B029 B043
-B045 B05F
-B061 B07B
-B07D B097
-B099 B0B3
-B0B5 B0CF
-B0D1 B0EB
-B0ED B107
-B109 B123
-B125 B13F
-B141 B15B
-B15D B177
-B179 B193
-B195 B1AF
-B1B1 B1CB
-B1CD B1E7
-B1E9 B203
-B205 B21F
-B221 B23B
-B23D B257
-B259 B273
-B275 B28F
-B291 B2AB
-B2AD B2C7
-B2C9 B2E3
-B2E5 B2FF
-B301 B31B
-B31D B337
-B339 B353
-B355 B36F
-B371 B38B
-B38D B3A7
-B3A9 B3C3
-B3C5 B3DF
-B3E1 B3FB
-B3FD B417
-B419 B433
-B435 B44F
-B451 B46B
-B46D B487
-B489 B4A3
-B4A5 B4BF
-B4C1 B4DB
-B4DD B4F7
-B4F9 B513
-B515 B52F
-B531 B54B
-B54D B567
-B569 B583
-B585 B59F
-B5A1 B5BB
-B5BD B5D7
-B5D9 B5F3
-B5F5 B60F
-B611 B62B
-B62D B647
-B649 B663
-B665 B67F
-B681 B69B
-B69D B6B7
-B6B9 B6D3
-B6D5 B6EF
-B6F1 B70B
-B70D B727
-B729 B743
-B745 B75F
-B761 B77B
-B77D B797
-B799 B7B3
-B7B5 B7CF
-B7D1 B7EB
-B7ED B807
-B809 B823
-B825 B83F
-B841 B85B
-B85D B877
-B879 B893
-B895 B8AF
-B8B1 B8CB
-B8CD B8E7
-B8E9 B903
-B905 B91F
-B921 B93B
-B93D B957
-B959 B973
-B975 B98F
-B991 B9AB
-B9AD B9C7
-B9C9 B9E3
-B9E5 B9FF
-BA01 BA1B
-BA1D BA37
-BA39 BA53
-BA55 BA6F
-BA71 BA8B
-BA8D BAA7
-BAA9 BAC3
-BAC5 BADF
-BAE1 BAFB
-BAFD BB17
-BB19 BB33
-BB35 BB4F
-BB51 BB6B
-BB6D BB87
-BB89 BBA3
-BBA5 BBBF
-BBC1 BBDB
-BBDD BBF7
-BBF9 BC13
-BC15 BC2F
-BC31 BC4B
-BC4D BC67
-BC69 BC83
-BC85 BC9F
-BCA1 BCBB
-BCBD BCD7
-BCD9 BCF3
-BCF5 BD0F
-BD11 BD2B
-BD2D BD47
-BD49 BD63
-BD65 BD7F
-BD81 BD9B
-BD9D BDB7
-BDB9 BDD3
-BDD5 BDEF
-BDF1 BE0B
-BE0D BE27
-BE29 BE43
-BE45 BE5F
-BE61 BE7B
-BE7D BE97
-BE99 BEB3
-BEB5 BECF
-BED1 BEEB
-BEED BF07
-BF09 BF23
-BF25 BF3F
-BF41 BF5B
-BF5D BF77
-BF79 BF93
-BF95 BFAF
-BFB1 BFCB
-BFCD BFE7
-BFE9 C003
-C005 C01F
-C021 C03B
-C03D C057
-C059 C073
-C075 C08F
-C091 C0AB
-C0AD C0C7
-C0C9 C0E3
-C0E5 C0FF
-C101 C11B
-C11D C137
-C139 C153
-C155 C16F
-C171 C18B
-C18D C1A7
-C1A9 C1C3
-C1C5 C1DF
-C1E1 C1FB
-C1FD C217
-C219 C233
-C235 C24F
-C251 C26B
-C26D C287
-C289 C2A3
-C2A5 C2BF
-C2C1 C2DB
-C2DD C2F7
-C2F9 C313
-C315 C32F
-C331 C34B
-C34D C367
-C369 C383
-C385 C39F
-C3A1 C3BB
-C3BD C3D7
-C3D9 C3F3
-C3F5 C40F
-C411 C42B
-C42D C447
-C449 C463
-C465 C47F
-C481 C49B
-C49D C4B7
-C4B9 C4D3
-C4D5 C4EF
-C4F1 C50B
-C50D C527
-C529 C543
-C545 C55F
-C561 C57B
-C57D C597
-C599 C5B3
-C5B5 C5CF
-C5D1 C5EB
-C5ED C607
-C609 C623
-C625 C63F
-C641 C65B
-C65D C677
-C679 C693
-C695 C6AF
-C6B1 C6CB
-C6CD C6E7
-C6E9 C703
-C705 C71F
-C721 C73B
-C73D C757
-C759 C773
-C775 C78F
-C791 C7AB
-C7AD C7C7
-C7C9 C7E3
-C7E5 C7FF
-C801 C81B
-C81D C837
-C839 C853
-C855 C86F
-C871 C88B
-C88D C8A7
-C8A9 C8C3
-C8C5 C8DF
-C8E1 C8FB
-C8FD C917
-C919 C933
-C935 C94F
-C951 C96B
-C96D C987
-C989 C9A3
-C9A5 C9BF
-C9C1 C9DB
-C9DD C9F7
-C9F9 CA13
-CA15 CA2F
-CA31 CA4B
-CA4D CA67
-CA69 CA83
-CA85 CA9F
-CAA1 CABB
-CABD CAD7
-CAD9 CAF3
-CAF5 CB0F
-CB11 CB2B
-CB2D CB47
-CB49 CB63
-CB65 CB7F
-CB81 CB9B
-CB9D CBB7
-CBB9 CBD3
-CBD5 CBEF
-CBF1 CC0B
-CC0D CC27
-CC29 CC43
-CC45 CC5F
-CC61 CC7B
-CC7D CC97
-CC99 CCB3
-CCB5 CCCF
-CCD1 CCEB
-CCED CD07
-CD09 CD23
-CD25 CD3F
-CD41 CD5B
-CD5D CD77
-CD79 CD93
-CD95 CDAF
-CDB1 CDCB
-CDCD CDE7
-CDE9 CE03
-CE05 CE1F
-CE21 CE3B
-CE3D CE57
-CE59 CE73
-CE75 CE8F
-CE91 CEAB
-CEAD CEC7
-CEC9 CEE3
-CEE5 CEFF
-CF01 CF1B
-CF1D CF37
-CF39 CF53
-CF55 CF6F
-CF71 CF8B
-CF8D CFA7
-CFA9 CFC3
-CFC5 CFDF
-CFE1 CFFB
-CFFD D017
-D019 D033
-D035 D04F
-D051 D06B
-D06D D087
-D089 D0A3
-D0A5 D0BF
-D0C1 D0DB
-D0DD D0F7
-D0F9 D113
-D115 D12F
-D131 D14B
-D14D D167
-D169 D183
-D185 D19F
-D1A1 D1BB
-D1BD D1D7
-D1D9 D1F3
-D1F5 D20F
-D211 D22B
-D22D D247
-D249 D263
-D265 D27F
-D281 D29B
-D29D D2B7
-D2B9 D2D3
-D2D5 D2EF
-D2F1 D30B
-D30D D327
-D329 D343
-D345 D35F
-D361 D37B
-D37D D397
-D399 D3B3
-D3B5 D3CF
-D3D1 D3EB
-D3ED D407
-D409 D423
-D425 D43F
-D441 D45B
-D45D D477
-D479 D493
-D495 D4AF
-D4B1 D4CB
-D4CD D4E7
-D4E9 D503
-D505 D51F
-D521 D53B
-D53D D557
-D559 D573
-D575 D58F
-D591 D5AB
-D5AD D5C7
-D5C9 D5E3
-D5E5 D5FF
-D601 D61B
-D61D D637
-D639 D653
-D655 D66F
-D671 D68B
-D68D D6A7
-D6A9 D6C3
-D6C5 D6DF
-D6E1 D6FB
-D6FD D717
-D719 D733
-D735 D74F
-D751 D76B
-D76D D787
-D789 D7A3
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/hst/T.pl b/Master/tlpkg/tlperl/lib/unicore/lib/hst/T.pl
deleted file mode 100644
index 7a319da9208..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/hst/T.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# HangulSyllableType category 'Trailing_Jamo'
-#
-return <<'END';
-11A8 11F9
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/hst/V.pl b/Master/tlpkg/tlperl/lib/unicore/lib/hst/V.pl
deleted file mode 100644
index a15ff227215..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/hst/V.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# HangulSyllableType category 'Vowel_Jamo'
-#
-return <<'END';
-1160 11A2
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/jt/C.pl b/Master/tlpkg/tlperl/lib/unicore/lib/jt/C.pl
deleted file mode 100644
index ff7d7801b8d..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/jt/C.pl
+++ /dev/null
@@ -1,11 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# JoiningType category 'Join_Causing'
-#
-return <<'END';
-0640
-200D
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/jt/D.pl b/Master/tlpkg/tlperl/lib/unicore/lib/jt/D.pl
deleted file mode 100644
index b5fe86b95c5..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/jt/D.pl
+++ /dev/null
@@ -1,33 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# JoiningType category 'Dual_Joining'
-#
-return <<'END';
-0626
-0628
-062A 062E
-0633 063A
-0641 0647
-0649 064A
-066E 066F
-0678 0687
-069A 06BF
-06C1 06C2
-06CC
-06CE
-06D0 06D1
-06FA 06FC
-06FF
-0712 0714
-071A 071D
-071F 0727
-0729
-072B
-072D 072E
-074E 0758
-075C 076A
-076D
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/jt/R.pl b/Master/tlpkg/tlperl/lib/unicore/lib/jt/R.pl
deleted file mode 100644
index 5ab772036f0..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/jt/R.pl
+++ /dev/null
@@ -1,34 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# JoiningType category 'Right_Joining'
-#
-return <<'END';
-0622 0625
-0627
-0629
-062F 0632
-0648
-0671 0673
-0675 0677
-0688 0699
-06C0
-06C3 06CB
-06CD
-06CF
-06D2 06D3
-06D5
-06EE 06EF
-0710
-0715 0719
-071E
-0728
-072A
-072C
-072F
-074D
-0759 075B
-076B 076C
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/jt/U.pl b/Master/tlpkg/tlperl/lib/unicore/lib/jt/U.pl
deleted file mode 100644
index 5d344f64f3a..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/jt/U.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# JoiningType category 'Non_Joining'
-#
-return <<'END';
-0600 0603
-060B
-0621
-0674
-06DD
-200C
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/AI.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/AI.pl
deleted file mode 100644
index 2837c8eca14..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/AI.pl
+++ /dev/null
@@ -1,101 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Ambiguous'
-#
-return <<'END';
-00A1
-00A7 00A8
-00AA
-00B2 00B3
-00B6 00BA
-00BC 00BF
-00D7
-00F7
-02C7
-02C9 02CB
-02CD
-02D0
-02D8 02DB
-02DD
-2015 2016
-2020 2021
-203B
-2074
-207F
-2081 2084
-2105
-2113
-2121 2122
-212B
-2154 2155
-215B
-215E
-2160 216B
-2170 2179
-2190 2199
-21D2
-21D4
-2200
-2202 2203
-2207 2208
-220B
-220F
-2211
-2215
-221A
-221D 2220
-2223
-2225
-2227 222C
-222E
-2234 2237
-223C 223D
-2248
-224C
-2252
-2260 2261
-2264 2267
-226A 226B
-226E 226F
-2282 2283
-2286 2287
-2295
-2299
-22A5
-22BF
-2312
-2460 24FE
-2500 254B
-2550 2574
-2580 258F
-2592 2595
-25A0 25A1
-25A3 25A9
-25B2 25B3
-25B6 25B7
-25BC 25BD
-25C0 25C1
-25C6 25C8
-25CB
-25CE 25D1
-25E2 25E5
-25EF
-2605 2606
-2609
-260E 260F
-2614 2617
-261C
-261E
-2640
-2642
-2660 2661
-2663 2665
-2667 266A
-266C 266D
-266F
-2776 2793
-FFFD
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/AL.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/AL.pl
deleted file mode 100644
index 7263f9ca1e6..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/AL.pl
+++ /dev/null
@@ -1,449 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Alphabetic'
-#
-return <<'END';
-0023
-0026
-002A
-003C 003E
-0040 005A
-005E 007A
-007E
-00A6
-00A9
-00AC
-00AE 00AF
-00B5
-00C0 00D6
-00D8 00F6
-00F8 0241
-0250 02C6
-02CE 02CF
-02D1 02D7
-02DC
-02DE 02FF
-0374 0375
-037A
-0384 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 0482
-048A 04CE
-04D0 04F9
-0500 050F
-0531 0556
-0559 055F
-0561 0587
-05BE
-05C0
-05C3
-05D0 05EA
-05F0 05F4
-0600 0603
-060E 060F
-0621 063A
-0640 064A
-066D 066F
-0671 06D3
-06D5
-06DD
-06E5 06E6
-06E9
-06EE 06EF
-06FA 070D
-070F 0710
-0712 072F
-074D 076D
-0780 07A5
-07B1
-0904 0939
-093D
-0950
-0958 0961
-0970
-097D
-0985 098C
-098F 0990
-0993 09A8
-09AA 09B0
-09B2
-09B6 09B9
-09BD
-09CE
-09DC 09DD
-09DF 09E1
-09F0 09F1
-09F4 09FA
-0A05 0A0A
-0A0F 0A10
-0A13 0A28
-0A2A 0A30
-0A32 0A33
-0A35 0A36
-0A38 0A39
-0A59 0A5C
-0A5E
-0A72 0A74
-0A85 0A8D
-0A8F 0A91
-0A93 0AA8
-0AAA 0AB0
-0AB2 0AB3
-0AB5 0AB9
-0ABD
-0AD0
-0AE0 0AE1
-0B05 0B0C
-0B0F 0B10
-0B13 0B28
-0B2A 0B30
-0B32 0B33
-0B35 0B39
-0B3D
-0B5C 0B5D
-0B5F 0B61
-0B70 0B71
-0B83
-0B85 0B8A
-0B8E 0B90
-0B92 0B95
-0B99 0B9A
-0B9C
-0B9E 0B9F
-0BA3 0BA4
-0BA8 0BAA
-0BAE 0BB9
-0BF0 0BF8
-0BFA
-0C05 0C0C
-0C0E 0C10
-0C12 0C28
-0C2A 0C33
-0C35 0C39
-0C60 0C61
-0C85 0C8C
-0C8E 0C90
-0C92 0CA8
-0CAA 0CB3
-0CB5 0CB9
-0CBD
-0CDE
-0CE0 0CE1
-0D05 0D0C
-0D0E 0D10
-0D12 0D28
-0D2A 0D39
-0D60 0D61
-0D85 0D96
-0D9A 0DB1
-0DB3 0DBB
-0DBD
-0DC0 0DC6
-0DF4
-0E4F
-0F00
-0F05
-0F13
-0F15 0F17
-0F1A 0F1F
-0F2A 0F33
-0F36
-0F38
-0F40 0F47
-0F49 0F6A
-0F88 0F8B
-0FC0 0FC5
-0FC7 0FCC
-0FCF
-104C 104F
-10A0 10C5
-10D0 10FC
-1200 1248
-124A 124D
-1250 1256
-1258
-125A 125D
-1260 1288
-128A 128D
-1290 12B0
-12B2 12B5
-12B8 12BE
-12C0
-12C2 12C5
-12C8 12D6
-12D8 1310
-1312 1315
-1318 135A
-1360
-1362 137C
-1380 1399
-13A0 13F4
-1401 1676
-1681 169A
-16A0 16EA
-16EE 16F0
-1700 170C
-170E 1711
-1720 1731
-1735 1736
-1740 1751
-1760 176C
-176E 1770
-17DC
-17F0 17F9
-1800 1801
-1807
-180A
-1820 1877
-1880 18A8
-1900 191C
-1940
-1950 196D
-1970 1974
-1980 19A9
-19C1 19C7
-19DE 1A16
-1A1F
-1D00 1DBF
-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
-2017
-2022 2023
-2038
-203D 2043
-2047 2055
-2057
-205C
-2061 2063
-2070 2071
-2075 207C
-2080
-2085 208C
-2090 2094
-2100 2102
-2104
-2106 2108
-210A 2112
-2114 2115
-2117 2120
-2123 212A
-212C 214C
-2153
-2156 215A
-215C 215D
-215F
-216C 216F
-217A 2183
-219A 21D1
-21D3
-21D5 21FF
-2201
-2204 2206
-2209 220A
-220C 220E
-2210
-2214
-2216 2219
-221B 221C
-2221 2222
-2224
-2226
-222D
-222F 2233
-2238 223B
-223E 2247
-2249 224B
-224D 2251
-2253 225F
-2262 2263
-2268 2269
-226C 226D
-2270 2281
-2284 2285
-2288 2294
-2296 2298
-229A 22A4
-22A6 22BE
-22C0 2311
-2313 2328
-232B 23B3
-23B7 23DB
-2400 2426
-2440 244A
-24FF
-254C 254F
-2575 257F
-2590 2591
-2596 259F
-25A2
-25AA 25B1
-25B4 25B5
-25B8 25BB
-25BE 25BF
-25C2 25C5
-25C9 25CA
-25CC 25CD
-25D2 25E1
-25E6 25EE
-25F0 2604
-2607 2608
-260A 260D
-2610 2613
-2618 261B
-261D
-261F 263F
-2641
-2643 265F
-2662
-2666
-266B
-266E
-2670 269C
-26A0 26B1
-2701 2704
-2706 2709
-270C 2727
-2729 274B
-274D
-274F 2752
-2756
-2758 275A
-2761
-2764 2767
-2794
-2798 27AF
-27B1 27BE
-27C0 27C4
-27D0 27E5
-27F0 2982
-2999 29D7
-29DC 29FB
-29FE 2B13
-2C00 2C2E
-2C30 2C5E
-2C80 2CEA
-2CFD
-2D00 2D25
-2D30 2D65
-2D6F
-2D80 2D96
-2DA0 2DA6
-2DA8 2DAE
-2DB0 2DB6
-2DB8 2DBE
-2DC0 2DC6
-2DC8 2DCE
-2DD0 2DD6
-2DD8 2DDE
-2E16
-4DC0 4DFF
-A700 A716
-A800 A801
-A803 A805
-A807 A80A
-A80C A822
-A828 A82B
-FB00 FB06
-FB13 FB17
-FB1D
-FB1F FB36
-FB38 FB3C
-FB3E
-FB40 FB41
-FB43 FB44
-FB46 FBB1
-FBD3 FD3D
-FD50 FD8F
-FD92 FDC7
-FDF0 FDFB
-FDFD
-FE70 FE74
-FE76 FEFC
-FF66
-FF71 FF9D
-FFA0 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-FFE8 FFEE
-10000 1000B
-1000D 10026
-10028 1003A
-1003C 1003D
-1003F 1004D
-10050 1005D
-10080 100FA
-10107 10133
-10137 1018A
-10300 1031E
-10320 10323
-10330 1034A
-10380 1039D
-103A0 103C3
-103C8 103D5
-10400 1049D
-10800 10805
-10808
-1080A 10835
-10837 10838
-1083C
-1083F
-10A00
-10A10 10A13
-10A15 10A17
-10A19 10A33
-10A40 10A47
-10A58
-1D000 1D0F5
-1D100 1D126
-1D12A 1D164
-1D16A 1D16C
-1D183 1D184
-1D18C 1D1A9
-1D1AE 1D1DD
-1D200 1D241
-1D245
-1D300 1D356
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A5
-1D6A8 1D7C9
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/B2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/B2.pl
deleted file mode 100644
index d00f5791082..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/B2.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Break_Both'
-#
-return <<'END';
-2014
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/BA.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/BA.pl
deleted file mode 100644
index 48d2f10faf0..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/BA.pl
+++ /dev/null
@@ -1,45 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Break_After'
-#
-return <<'END';
-0009
-007C
-00AD
-058A
-0964 0965
-0E5A 0E5B
-0F0B
-0F34
-0F7F
-0F85
-0FBE 0FBF
-104A 104B
-1361
-1680
-16EB 16ED
-17D4 17D5
-17D8
-17DA
-1802 1805
-1808 1809
-1A1E
-2000 2006
-2008 200A
-2010
-2012 2013
-2027
-2056
-2058 205B
-205D 205F
-2CF9 2CFC
-2CFE 2CFF
-2E0E 2E15
-2E17
-10100 10102
-1039F
-10A50 10A57
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/BB.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/BB.pl
deleted file mode 100644
index 497a4b89835..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/BB.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Break_Before'
-#
-return <<'END';
-00B4
-02C8
-02CC
-0F01 0F04
-0F06 0F07
-0F09 0F0A
-0FD0 0FD1
-1806
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/BK.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/BK.pl
deleted file mode 100644
index c55b1be7ebd..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/BK.pl
+++ /dev/null
@@ -1,11 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Mandatory_Break'
-#
-return <<'END';
-000C
-2028 2029
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/CB.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/CB.pl
deleted file mode 100644
index eb229b7bf98..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/CB.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Contingent_Break'
-#
-return <<'END';
-FFFC
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/CL.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/CL.pl
deleted file mode 100644
index 337639a26a5..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/CL.pl
+++ /dev/null
@@ -1,80 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Close_Punctuation'
-#
-return <<'END';
-0029
-005D
-007D
-0F3B
-0F3D
-169C
-2046
-207E
-208E
-232A
-23B5
-2769
-276B
-276D
-276F
-2771
-2773
-2775
-27C6
-27E7
-27E9
-27EB
-2984
-2986
-2988
-298A
-298C
-298E
-2990
-2992
-2994
-2996
-2998
-29D9
-29DB
-29FD
-3001 3002
-3009
-300B
-300D
-300F
-3011
-3015
-3017
-3019
-301B
-301E 301F
-FD3F
-FE11 FE12
-FE18
-FE36
-FE38
-FE3A
-FE3C
-FE3E
-FE40
-FE42
-FE44
-FE48
-FE50
-FE52
-FE5A
-FE5C
-FE5E
-FF09
-FF0C
-FF0E
-FF3D
-FF5D
-FF60 FF61
-FF63 FF64
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/CM.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/CM.pl
deleted file mode 100644
index 56aff56a330..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/CM.pl
+++ /dev/null
@@ -1,155 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Combining_Mark'
-#
-return <<'END';
-0000 0008
-000B
-000E 001F
-007F 0084
-0086 009F
-0300 034E
-0350 035C
-0363 036F
-0483 0486
-0488 0489
-0591 05B9
-05BB 05BD
-05BF
-05C1 05C2
-05C4 05C5
-05C7
-0610 0615
-064B 065E
-0670
-06D6 06DC
-06DE 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
-0A01 0A03
-0A3C
-0A3E 0A42
-0A47 0A48
-0A4B 0A4D
-0A70 0A71
-0A81 0A83
-0ABC
-0ABE 0AC5
-0AC7 0AC9
-0ACB 0ACD
-0AE2 0AE3
-0B01 0B03
-0B3C
-0B3E 0B43
-0B47 0B48
-0B4B 0B4D
-0B56 0B57
-0B82
-0BBE 0BC2
-0BC6 0BC8
-0BCA 0BCD
-0BD7
-0C01 0C03
-0C3E 0C44
-0C46 0C48
-0C4A 0C4D
-0C55 0C56
-0C82 0C83
-0CBC
-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 0F7E
-0F80 0F84
-0F86 0F87
-0F90 0F97
-0F99 0FBC
-0FC6
-102C 1032
-1036 1039
-1056 1059
-135F
-1712 1714
-1732 1734
-1752 1753
-1772 1773
-17B6 17D3
-17DD
-180B 180D
-18A9
-1920 192B
-1930 193B
-19B0 19C0
-19C8 19C9
-1A17 1A1B
-1DC0 1DC3
-200C 200F
-202A 202E
-206A 206F
-20D0 20EB
-302A 302F
-3099 309A
-A802
-A806
-A80B
-A823 A827
-FB1E
-FE00 FE0F
-FE20 FE23
-FFF9 FFFB
-10A01 10A03
-10A05 10A06
-10A0C 10A0F
-10A38 10A3A
-10A3F
-1D165 1D169
-1D16D 1D182
-1D185 1D18B
-1D1AA 1D1AD
-1D242 1D244
-E0001
-E0020 E007F
-E0100 E01EF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/CR.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/CR.pl
deleted file mode 100644
index b4c096404b2..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/CR.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Carriage_Return'
-#
-return <<'END';
-000D
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/EX.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/EX.pl
deleted file mode 100644
index c459ef107a4..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/EX.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Exclamation'
-#
-return <<'END';
-0021
-003F
-05C6
-060C
-061B
-061E 061F
-066A
-06D4
-0F0D 0F11
-0F14
-1944 1945
-2762 2763
-FE15 FE16
-FE56 FE57
-FF01
-FF1F
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/GL.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/GL.pl
deleted file mode 100644
index 5ec8b1513d4..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/GL.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Glue'
-#
-return <<'END';
-00A0
-034F
-035D 0362
-0F08
-0F0C
-0F12
-180E
-2007
-2011
-202F
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/H2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/H2.pl
deleted file mode 100644
index c4b8a0a65eb..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/H2.pl
+++ /dev/null
@@ -1,408 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'H2'
-#
-return <<'END';
-AC00
-AC1C
-AC38
-AC54
-AC70
-AC8C
-ACA8
-ACC4
-ACE0
-ACFC
-AD18
-AD34
-AD50
-AD6C
-AD88
-ADA4
-ADC0
-ADDC
-ADF8
-AE14
-AE30
-AE4C
-AE68
-AE84
-AEA0
-AEBC
-AED8
-AEF4
-AF10
-AF2C
-AF48
-AF64
-AF80
-AF9C
-AFB8
-AFD4
-AFF0
-B00C
-B028
-B044
-B060
-B07C
-B098
-B0B4
-B0D0
-B0EC
-B108
-B124
-B140
-B15C
-B178
-B194
-B1B0
-B1CC
-B1E8
-B204
-B220
-B23C
-B258
-B274
-B290
-B2AC
-B2C8
-B2E4
-B300
-B31C
-B338
-B354
-B370
-B38C
-B3A8
-B3C4
-B3E0
-B3FC
-B418
-B434
-B450
-B46C
-B488
-B4A4
-B4C0
-B4DC
-B4F8
-B514
-B530
-B54C
-B568
-B584
-B5A0
-B5BC
-B5D8
-B5F4
-B610
-B62C
-B648
-B664
-B680
-B69C
-B6B8
-B6D4
-B6F0
-B70C
-B728
-B744
-B760
-B77C
-B798
-B7B4
-B7D0
-B7EC
-B808
-B824
-B840
-B85C
-B878
-B894
-B8B0
-B8CC
-B8E8
-B904
-B920
-B93C
-B958
-B974
-B990
-B9AC
-B9C8
-B9E4
-BA00
-BA1C
-BA38
-BA54
-BA70
-BA8C
-BAA8
-BAC4
-BAE0
-BAFC
-BB18
-BB34
-BB50
-BB6C
-BB88
-BBA4
-BBC0
-BBDC
-BBF8
-BC14
-BC30
-BC4C
-BC68
-BC84
-BCA0
-BCBC
-BCD8
-BCF4
-BD10
-BD2C
-BD48
-BD64
-BD80
-BD9C
-BDB8
-BDD4
-BDF0
-BE0C
-BE28
-BE44
-BE60
-BE7C
-BE98
-BEB4
-BED0
-BEEC
-BF08
-BF24
-BF40
-BF5C
-BF78
-BF94
-BFB0
-BFCC
-BFE8
-C004
-C020
-C03C
-C058
-C074
-C090
-C0AC
-C0C8
-C0E4
-C100
-C11C
-C138
-C154
-C170
-C18C
-C1A8
-C1C4
-C1E0
-C1FC
-C218
-C234
-C250
-C26C
-C288
-C2A4
-C2C0
-C2DC
-C2F8
-C314
-C330
-C34C
-C368
-C384
-C3A0
-C3BC
-C3D8
-C3F4
-C410
-C42C
-C448
-C464
-C480
-C49C
-C4B8
-C4D4
-C4F0
-C50C
-C528
-C544
-C560
-C57C
-C598
-C5B4
-C5D0
-C5EC
-C608
-C624
-C640
-C65C
-C678
-C694
-C6B0
-C6CC
-C6E8
-C704
-C720
-C73C
-C758
-C774
-C790
-C7AC
-C7C8
-C7E4
-C800
-C81C
-C838
-C854
-C870
-C88C
-C8A8
-C8C4
-C8E0
-C8FC
-C918
-C934
-C950
-C96C
-C988
-C9A4
-C9C0
-C9DC
-C9F8
-CA14
-CA30
-CA4C
-CA68
-CA84
-CAA0
-CABC
-CAD8
-CAF4
-CB10
-CB2C
-CB48
-CB64
-CB80
-CB9C
-CBB8
-CBD4
-CBF0
-CC0C
-CC28
-CC44
-CC60
-CC7C
-CC98
-CCB4
-CCD0
-CCEC
-CD08
-CD24
-CD40
-CD5C
-CD78
-CD94
-CDB0
-CDCC
-CDE8
-CE04
-CE20
-CE3C
-CE58
-CE74
-CE90
-CEAC
-CEC8
-CEE4
-CF00
-CF1C
-CF38
-CF54
-CF70
-CF8C
-CFA8
-CFC4
-CFE0
-CFFC
-D018
-D034
-D050
-D06C
-D088
-D0A4
-D0C0
-D0DC
-D0F8
-D114
-D130
-D14C
-D168
-D184
-D1A0
-D1BC
-D1D8
-D1F4
-D210
-D22C
-D248
-D264
-D280
-D29C
-D2B8
-D2D4
-D2F0
-D30C
-D328
-D344
-D360
-D37C
-D398
-D3B4
-D3D0
-D3EC
-D408
-D424
-D440
-D45C
-D478
-D494
-D4B0
-D4CC
-D4E8
-D504
-D520
-D53C
-D558
-D574
-D590
-D5AC
-D5C8
-D5E4
-D600
-D61C
-D638
-D654
-D670
-D68C
-D6A8
-D6C4
-D6E0
-D6FC
-D718
-D734
-D750
-D76C
-D788
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/H3.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/H3.pl
deleted file mode 100644
index fdb4a80a8b9..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/H3.pl
+++ /dev/null
@@ -1,408 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'H3'
-#
-return <<'END';
-AC01 AC1B
-AC1D AC37
-AC39 AC53
-AC55 AC6F
-AC71 AC8B
-AC8D ACA7
-ACA9 ACC3
-ACC5 ACDF
-ACE1 ACFB
-ACFD AD17
-AD19 AD33
-AD35 AD4F
-AD51 AD6B
-AD6D AD87
-AD89 ADA3
-ADA5 ADBF
-ADC1 ADDB
-ADDD ADF7
-ADF9 AE13
-AE15 AE2F
-AE31 AE4B
-AE4D AE67
-AE69 AE83
-AE85 AE9F
-AEA1 AEBB
-AEBD AED7
-AED9 AEF3
-AEF5 AF0F
-AF11 AF2B
-AF2D AF47
-AF49 AF63
-AF65 AF7F
-AF81 AF9B
-AF9D AFB7
-AFB9 AFD3
-AFD5 AFEF
-AFF1 B00B
-B00D B027
-B029 B043
-B045 B05F
-B061 B07B
-B07D B097
-B099 B0B3
-B0B5 B0CF
-B0D1 B0EB
-B0ED B107
-B109 B123
-B125 B13F
-B141 B15B
-B15D B177
-B179 B193
-B195 B1AF
-B1B1 B1CB
-B1CD B1E7
-B1E9 B203
-B205 B21F
-B221 B23B
-B23D B257
-B259 B273
-B275 B28F
-B291 B2AB
-B2AD B2C7
-B2C9 B2E3
-B2E5 B2FF
-B301 B31B
-B31D B337
-B339 B353
-B355 B36F
-B371 B38B
-B38D B3A7
-B3A9 B3C3
-B3C5 B3DF
-B3E1 B3FB
-B3FD B417
-B419 B433
-B435 B44F
-B451 B46B
-B46D B487
-B489 B4A3
-B4A5 B4BF
-B4C1 B4DB
-B4DD B4F7
-B4F9 B513
-B515 B52F
-B531 B54B
-B54D B567
-B569 B583
-B585 B59F
-B5A1 B5BB
-B5BD B5D7
-B5D9 B5F3
-B5F5 B60F
-B611 B62B
-B62D B647
-B649 B663
-B665 B67F
-B681 B69B
-B69D B6B7
-B6B9 B6D3
-B6D5 B6EF
-B6F1 B70B
-B70D B727
-B729 B743
-B745 B75F
-B761 B77B
-B77D B797
-B799 B7B3
-B7B5 B7CF
-B7D1 B7EB
-B7ED B807
-B809 B823
-B825 B83F
-B841 B85B
-B85D B877
-B879 B893
-B895 B8AF
-B8B1 B8CB
-B8CD B8E7
-B8E9 B903
-B905 B91F
-B921 B93B
-B93D B957
-B959 B973
-B975 B98F
-B991 B9AB
-B9AD B9C7
-B9C9 B9E3
-B9E5 B9FF
-BA01 BA1B
-BA1D BA37
-BA39 BA53
-BA55 BA6F
-BA71 BA8B
-BA8D BAA7
-BAA9 BAC3
-BAC5 BADF
-BAE1 BAFB
-BAFD BB17
-BB19 BB33
-BB35 BB4F
-BB51 BB6B
-BB6D BB87
-BB89 BBA3
-BBA5 BBBF
-BBC1 BBDB
-BBDD BBF7
-BBF9 BC13
-BC15 BC2F
-BC31 BC4B
-BC4D BC67
-BC69 BC83
-BC85 BC9F
-BCA1 BCBB
-BCBD BCD7
-BCD9 BCF3
-BCF5 BD0F
-BD11 BD2B
-BD2D BD47
-BD49 BD63
-BD65 BD7F
-BD81 BD9B
-BD9D BDB7
-BDB9 BDD3
-BDD5 BDEF
-BDF1 BE0B
-BE0D BE27
-BE29 BE43
-BE45 BE5F
-BE61 BE7B
-BE7D BE97
-BE99 BEB3
-BEB5 BECF
-BED1 BEEB
-BEED BF07
-BF09 BF23
-BF25 BF3F
-BF41 BF5B
-BF5D BF77
-BF79 BF93
-BF95 BFAF
-BFB1 BFCB
-BFCD BFE7
-BFE9 C003
-C005 C01F
-C021 C03B
-C03D C057
-C059 C073
-C075 C08F
-C091 C0AB
-C0AD C0C7
-C0C9 C0E3
-C0E5 C0FF
-C101 C11B
-C11D C137
-C139 C153
-C155 C16F
-C171 C18B
-C18D C1A7
-C1A9 C1C3
-C1C5 C1DF
-C1E1 C1FB
-C1FD C217
-C219 C233
-C235 C24F
-C251 C26B
-C26D C287
-C289 C2A3
-C2A5 C2BF
-C2C1 C2DB
-C2DD C2F7
-C2F9 C313
-C315 C32F
-C331 C34B
-C34D C367
-C369 C383
-C385 C39F
-C3A1 C3BB
-C3BD C3D7
-C3D9 C3F3
-C3F5 C40F
-C411 C42B
-C42D C447
-C449 C463
-C465 C47F
-C481 C49B
-C49D C4B7
-C4B9 C4D3
-C4D5 C4EF
-C4F1 C50B
-C50D C527
-C529 C543
-C545 C55F
-C561 C57B
-C57D C597
-C599 C5B3
-C5B5 C5CF
-C5D1 C5EB
-C5ED C607
-C609 C623
-C625 C63F
-C641 C65B
-C65D C677
-C679 C693
-C695 C6AF
-C6B1 C6CB
-C6CD C6E7
-C6E9 C703
-C705 C71F
-C721 C73B
-C73D C757
-C759 C773
-C775 C78F
-C791 C7AB
-C7AD C7C7
-C7C9 C7E3
-C7E5 C7FF
-C801 C81B
-C81D C837
-C839 C853
-C855 C86F
-C871 C88B
-C88D C8A7
-C8A9 C8C3
-C8C5 C8DF
-C8E1 C8FB
-C8FD C917
-C919 C933
-C935 C94F
-C951 C96B
-C96D C987
-C989 C9A3
-C9A5 C9BF
-C9C1 C9DB
-C9DD C9F7
-C9F9 CA13
-CA15 CA2F
-CA31 CA4B
-CA4D CA67
-CA69 CA83
-CA85 CA9F
-CAA1 CABB
-CABD CAD7
-CAD9 CAF3
-CAF5 CB0F
-CB11 CB2B
-CB2D CB47
-CB49 CB63
-CB65 CB7F
-CB81 CB9B
-CB9D CBB7
-CBB9 CBD3
-CBD5 CBEF
-CBF1 CC0B
-CC0D CC27
-CC29 CC43
-CC45 CC5F
-CC61 CC7B
-CC7D CC97
-CC99 CCB3
-CCB5 CCCF
-CCD1 CCEB
-CCED CD07
-CD09 CD23
-CD25 CD3F
-CD41 CD5B
-CD5D CD77
-CD79 CD93
-CD95 CDAF
-CDB1 CDCB
-CDCD CDE7
-CDE9 CE03
-CE05 CE1F
-CE21 CE3B
-CE3D CE57
-CE59 CE73
-CE75 CE8F
-CE91 CEAB
-CEAD CEC7
-CEC9 CEE3
-CEE5 CEFF
-CF01 CF1B
-CF1D CF37
-CF39 CF53
-CF55 CF6F
-CF71 CF8B
-CF8D CFA7
-CFA9 CFC3
-CFC5 CFDF
-CFE1 CFFB
-CFFD D017
-D019 D033
-D035 D04F
-D051 D06B
-D06D D087
-D089 D0A3
-D0A5 D0BF
-D0C1 D0DB
-D0DD D0F7
-D0F9 D113
-D115 D12F
-D131 D14B
-D14D D167
-D169 D183
-D185 D19F
-D1A1 D1BB
-D1BD D1D7
-D1D9 D1F3
-D1F5 D20F
-D211 D22B
-D22D D247
-D249 D263
-D265 D27F
-D281 D29B
-D29D D2B7
-D2B9 D2D3
-D2D5 D2EF
-D2F1 D30B
-D30D D327
-D329 D343
-D345 D35F
-D361 D37B
-D37D D397
-D399 D3B3
-D3B5 D3CF
-D3D1 D3EB
-D3ED D407
-D409 D423
-D425 D43F
-D441 D45B
-D45D D477
-D479 D493
-D495 D4AF
-D4B1 D4CB
-D4CD D4E7
-D4E9 D503
-D505 D51F
-D521 D53B
-D53D D557
-D559 D573
-D575 D58F
-D591 D5AB
-D5AD D5C7
-D5C9 D5E3
-D5E5 D5FF
-D601 D61B
-D61D D637
-D639 D653
-D655 D66F
-D671 D68B
-D68D D6A7
-D6A9 D6C3
-D6C5 D6DF
-D6E1 D6FB
-D6FD D717
-D719 D733
-D735 D74F
-D751 D76B
-D76D D787
-D789 D7A3
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/HY.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/HY.pl
deleted file mode 100644
index 321218960fc..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/HY.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Hyphen'
-#
-return <<'END';
-002D
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/ID.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/ID.pl
deleted file mode 100644
index 9e6b32e5bab..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/ID.pl
+++ /dev/null
@@ -1,80 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Ideographic'
-#
-return <<'END';
-2E80 2E99
-2E9B 2EF3
-2F00 2FD5
-2FF0 2FFB
-3000
-3003 3004
-3006 3007
-3012 3013
-3020 3029
-3030 303A
-303D 303F
-3042
-3044
-3046
-3048
-304A 3062
-3064 3082
-3084
-3086
-3088 308D
-308F 3094
-309F
-30A2
-30A4
-30A6
-30A8
-30AA 30C2
-30C4 30E2
-30E4
-30E6
-30E8 30ED
-30EF 30F4
-30F7 30FA
-30FF
-3105 312C
-3131 318E
-3190 31B7
-31C0 31CF
-3200 321E
-3220 3243
-3250 32FE
-3300 4DB5
-4E00 9FBB
-A000 A014
-A016 A48C
-A490 A4C6
-F900 FA2D
-FA30 FA6A
-FA70 FAD9
-FE30 FE34
-FE45 FE46
-FE49 FE4F
-FE51
-FE58
-FE5F FE66
-FE68
-FE6B
-FF02 FF03
-FF06 FF07
-FF0A FF0B
-FF0D
-FF0F FF19
-FF1C FF1E
-FF20 FF3A
-FF3C
-FF3E FF5A
-FF5C
-FF5E
-FFE2 FFE4
-20000 2A6D6
-2F800 2FA1D
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/IN.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/IN.pl
deleted file mode 100644
index c13572b1169..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/IN.pl
+++ /dev/null
@@ -1,11 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Inseparable'
-#
-return <<'END';
-2024 2026
-FE19
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/IS.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/IS.pl
deleted file mode 100644
index 7ce2318e40e..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/IS.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Infix_Numeric'
-#
-return <<'END';
-002C
-002E
-003A 003B
-037E
-0589
-060D
-2044
-FE10
-FE13 FE14
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/JL.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/JL.pl
deleted file mode 100644
index c771ea9bd0d..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/JL.pl
+++ /dev/null
@@ -1,11 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'JL'
-#
-return <<'END';
-1100 1159
-115F
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/JT.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/JT.pl
deleted file mode 100644
index 8697ef25a76..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/JT.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'JT'
-#
-return <<'END';
-11A8 11F9
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/JV.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/JV.pl
deleted file mode 100644
index 5d615ad6fec..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/JV.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'JV'
-#
-return <<'END';
-1160 11A2
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/LF.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/LF.pl
deleted file mode 100644
index 08bb773718d..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/LF.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Line_Feed'
-#
-return <<'END';
-000A
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/NL.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/NL.pl
deleted file mode 100644
index c1c59b268ac..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/NL.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Next_Line'
-#
-return <<'END';
-0085
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/NS.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/NS.pl
deleted file mode 100644
index babb9c703c7..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/NS.pl
+++ /dev/null
@@ -1,46 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Nonstarter'
-#
-return <<'END';
-17D6 17D7
-17D9
-203C
-3005
-301C
-303B 303C
-3041
-3043
-3045
-3047
-3049
-3063
-3083
-3085
-3087
-308E
-3095 3096
-309B 309E
-30A0 30A1
-30A3
-30A5
-30A7
-30A9
-30C3
-30E3
-30E5
-30E7
-30EE
-30F5 30F6
-30FB 30FE
-31F0 31FF
-A015
-FE54 FE55
-FF1A FF1B
-FF65
-FF67 FF70
-FF9E FF9F
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/NU.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/NU.pl
deleted file mode 100644
index aa493a09add..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/NU.pl
+++ /dev/null
@@ -1,32 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Numeric'
-#
-return <<'END';
-0030 0039
-0660 0669
-066B 066C
-06F0 06F9
-0966 096F
-09E6 09EF
-0A66 0A6F
-0AE6 0AEF
-0B66 0B6F
-0BE6 0BEF
-0C66 0C6F
-0CE6 0CEF
-0D66 0D6F
-0E50 0E59
-0ED0 0ED9
-0F20 0F29
-1040 1049
-17E0 17E9
-1810 1819
-1946 194F
-19D0 19D9
-104A0 104A9
-1D7CE 1D7FF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/OP.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/OP.pl
deleted file mode 100644
index 01c0761ad8a..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/OP.pl
+++ /dev/null
@@ -1,76 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Open_Punctuation'
-#
-return <<'END';
-0028
-005B
-007B
-0F3A
-0F3C
-169B
-201A
-201E
-2045
-207D
-208D
-2329
-23B4
-2768
-276A
-276C
-276E
-2770
-2772
-2774
-27C5
-27E6
-27E8
-27EA
-2983
-2985
-2987
-2989
-298B
-298D
-298F
-2991
-2993
-2995
-2997
-29D8
-29DA
-29FC
-3008
-300A
-300C
-300E
-3010
-3014
-3016
-3018
-301A
-301D
-FD3E
-FE17
-FE35
-FE37
-FE39
-FE3B
-FE3D
-FE3F
-FE41
-FE43
-FE47
-FE59
-FE5B
-FE5D
-FF08
-FF3B
-FF5B
-FF5F
-FF62
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/PO.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/PO.pl
deleted file mode 100644
index f3765ef7b61..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/PO.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Postfix_Numeric'
-#
-return <<'END';
-0025
-00A2
-00B0
-060B
-2030 2037
-20A7
-2103
-2109
-FDFC
-FE6A
-FF05
-FFE0
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/PR.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/PR.pl
deleted file mode 100644
index 65195054dd1..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/PR.pl
+++ /dev/null
@@ -1,27 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Prefix_Numeric'
-#
-return <<'END';
-0024
-002B
-005C
-00A3 00A5
-00B1
-09F2 09F3
-0AF1
-0BF9
-0E3F
-17DB
-20A0 20A6
-20A8 20B5
-2116
-2212 2213
-FE69
-FF04
-FFE1
-FFE5 FFE6
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/QU.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/QU.pl
deleted file mode 100644
index 6f4386b1d24..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/QU.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Quotation'
-#
-return <<'END';
-0022
-0027
-00AB
-00BB
-2018 2019
-201B 201D
-201F
-2039 203A
-23B6
-275B 275E
-2E00 2E0D
-2E1C 2E1D
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/SA.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/SA.pl
deleted file mode 100644
index e6308583bf4..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/SA.pl
+++ /dev/null
@@ -1,34 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Complex_Context'
-#
-return <<'END';
-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
-1000 1021
-1023 1027
-1029 102A
-1050 1055
-1780 17B5
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/SG.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/SG.pl
deleted file mode 100644
index 65be30b6844..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/SG.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Surrogate'
-#
-return <<'END';
-D800 DFFF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/SP.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/SP.pl
deleted file mode 100644
index ae815232b92..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/SP.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Space'
-#
-return <<'END';
-0020
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/SY.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/SY.pl
deleted file mode 100644
index ae43e49e922..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/SY.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Break_Symbols'
-#
-return <<'END';
-002F
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/WJ.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/WJ.pl
deleted file mode 100644
index e4375785a47..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/WJ.pl
+++ /dev/null
@@ -1,11 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Word_Joiner'
-#
-return <<'END';
-2060
-FEFF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/XX.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/XX.pl
deleted file mode 100644
index 552f71808a7..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/XX.pl
+++ /dev/null
@@ -1,12 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'Unknown'
-#
-return <<'END';
-E000 F8FF
-F0000 FFFFD
-100000 10FFFD
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/lb/ZW.pl b/Master/tlpkg/tlperl/lib/unicore/lib/lb/ZW.pl
deleted file mode 100644
index 8cc1e823e24..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/lb/ZW.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# Linebreak category 'ZWSpace'
-#
-return <<'END';
-200B
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/nt/De.pl b/Master/tlpkg/tlperl/lib/unicore/lib/nt/De.pl
deleted file mode 100644
index af3697fc7ac..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/nt/De.pl
+++ /dev/null
@@ -1,32 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# NumericType category 'Decimal'
-#
-return <<'END';
-0030 0039
-0660 0669
-06F0 06F9
-0966 096F
-09E6 09EF
-0A66 0A6F
-0AE6 0AEF
-0B66 0B6F
-0BE6 0BEF
-0C66 0C6F
-0CE6 0CEF
-0D66 0D6F
-0E50 0E59
-0ED0 0ED9
-0F20 0F29
-1040 1049
-17E0 17E9
-1810 1819
-1946 194F
-19D0 19D9
-FF10 FF19
-104A0 104A9
-1D7CE 1D7FF
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/nt/Di.pl b/Master/tlpkg/tlperl/lib/unicore/lib/nt/Di.pl
deleted file mode 100644
index 8a29b9db9c3..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/nt/Di.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# NumericType category 'Digit'
-#
-return <<'END';
-00B2 00B3
-00B9
-1369 1371
-2070
-2074 2079
-2080 2089
-2460 2468
-2474 247C
-2488 2490
-24EA
-24F5 24FD
-24FF
-2776 277E
-2780 2788
-278A 2792
-10A40 10A43
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/nt/Nu.pl b/Master/tlpkg/tlperl/lib/unicore/lib/nt/Nu.pl
deleted file mode 100644
index 587a3a6e113..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/lib/nt/Nu.pl
+++ /dev/null
@@ -1,42 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# NumericType category 'Numeric'
-#
-return <<'END';
-00BC 00BE
-09F4 09F7
-09F9
-0BF0 0BF2
-0F2A 0F33
-1372 137C
-16EE 16F0
-17F0 17F9
-2153 2182
-2469 2473
-247D 2487
-2491 249B
-24EB 24F4
-24FE
-277F
-2789
-2793
-2CFD
-3007
-3021 3029
-3038 303A
-3192 3195
-3220 3229
-3251 325F
-3280 3289
-32B1 32BF
-10107 10133
-10140 10178
-1018A
-10320 10323
-1034A
-103D1 103D5
-10A44 10A47
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/mktables b/Master/tlpkg/tlperl/lib/unicore/mktables
deleted file mode 100644
index 42003663849..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/mktables
+++ /dev/null
@@ -1,2197 +0,0 @@
-## !!!!!!!!!!!!!! IF YOU MODIFY THIS FILE !!!!!!!!!!!!!!!!!!!!!!!!!
-## Any files created or read by this program should be listed in 'mktables.lst'
-
-#!/usr/bin/perl -w
-require 5.008; # Needs pack "U". Probably safest to run on 5.8.x
-use strict;
-use Carp;
-use File::Spec;
-
-##
-## mktables -- create the runtime Perl Unicode files (lib/unicore/**/*.pl)
-## from the Unicode database files (lib/unicore/*.txt).
-##
-
-## "Fuzzy" means this section in Unicode TR18:
-##
-## The recommended names for UCD properties and property values are in
-## PropertyAliases.txt [Prop] and PropertyValueAliases.txt
-## [PropValue]. There are both abbreviated names and longer, more
-## descriptive names. It is strongly recommended that both names be
-## recognized, and that loose matching of property names be used,
-## whereby the case distinctions, whitespace, hyphens, and underbar
-## are ignored.
-
-## Base names already used in lib/gc_sc (for avoiding 8.3 conflicts)
-my %BaseNames;
-
-##
-## Process any args.
-##
-my $Verbose = 0;
-my $MakeTestScript = 0;
-my $AlwaysWrite = 0;
-my $UseDir = "";
-my $FileList = "$0.lst";
-my $MakeList = 0;
-
-while (@ARGV)
-{
- my $arg = shift @ARGV;
- if ($arg eq '-v') {
- $Verbose = 1;
- } elsif ($arg eq '-q') {
- $Verbose = 0;
- } elsif ($arg eq '-w') {
- $AlwaysWrite = 1; # update the files even if they havent changed
- $FileList = "";
- } elsif ($arg eq '-maketest') {
- $MakeTestScript = 1;
- } elsif ($arg eq '-makelist') {
- $MakeList = 1;
- } elsif ($arg eq '-C' && defined ($UseDir = shift)) {
- -d $UseDir or die "Unknown directory '$UseDir'";
- } elsif ($arg eq '-L' && defined ($FileList = shift)) {
- -e $FileList or die "Filelist '$FileList' doesn't appear to exist!";
- } else {
- die "usage: $0 [-v|-q|-w|-C dir|-L filelist] [-maketest] [-makelist]\n",
- " -v : Verbose Mode\n",
- " -q : Quiet Mode\n",
- " -w : Write files regardless\n",
- " -maketest : Make test script\n",
- " -makelist : Rewrite the file list based on current setup\n",
- " -L filelist : Use this file list, (defaults to $0)\n",
- " -C dir : Change to this directory before proceding\n";
- }
-}
-
-if ($FileList) {
- print "Reading file list '$FileList'\n"
- if $Verbose;
- open my $fh,"<",$FileList or die "Failed to read '$FileList':$!";
- my @input;
- my @output;
- for my $list ( \@input, \@output ) {
- while (<$fh>) {
- s/^ \s+ | \s+ $//xg;
- next if /^ \s* (?: \# .* )? $/x;
- last if /^ =+ $/x;
- my ( $file ) = split /\t/, $_;
- push @$list, $file;
- }
- my %dupe;
- @$list = grep !$dupe{ $_ }++, @$list;
- }
- close $fh;
- die "No input or output files in '$FileList'!"
- if !@input or !@output;
- if ( $MakeList ) {
- foreach my $file (@output) {
- unlink $file;
- }
- }
- if ( $Verbose ) {
- print "Expecting ".scalar( @input )." input files. ",
- "Checking ".scalar( @output )." output files.\n";
- }
- # we set maxtime to be the youngest input file, including $0 itself.
- my $maxtime = -M $0; # do this before the chdir!
- if ($UseDir) {
- chdir $UseDir or die "Failed to chdir to '$UseDir':$!";
- }
- foreach my $in (@input) {
- my $time = -M $in;
- die "Missing input file '$in'" unless defined $time;
- $maxtime = $time if $maxtime < $time;
- }
-
- # now we check to see if any output files are older than maxtime, if
- # they are we need to continue on, otherwise we can presumably bail.
- my $ok = 1;
- foreach my $out (@output) {
- if ( ! -e $out ) {
- print "'$out' is missing.\n"
- if $Verbose;
- $ok = 0;
- last;
- }
- if ( -M $out > $maxtime ) {
- print "'$out' is too old.\n"
- if $Verbose;
- $ok = 0;
- last;
- }
- }
- if ($ok) {
- print "Files seem to be ok, not bothering to rebuild.\n";
- exit(0);
- }
- print "Must rebuild tables.\n"
- if $Verbose;
-} else {
- if ($Verbose) {
- print "Not checking filelist.\n";
- }
- if ($UseDir) {
- chdir $UseDir or die "Failed to chdir to '$UseDir':$!";
- }
-}
-
-foreach my $lib ('To', 'lib',
- map {File::Spec->catdir("lib",$_)}
- qw(gc_sc dt bc hst ea jt lb nt ccc)) {
- next if -d $lib;
- mkdir $lib, 0755 or die "mkdir '$lib': $!";
-}
-
-my $LastUnicodeCodepoint = 0x10FFFF; # As of Unicode 3.1.1.
-
-my $HEADER=<<"EOF";
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by $0 from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-EOF
-
-sub force_unlink {
- my $filename = shift;
- return unless -e $filename;
- return if CORE::unlink($filename);
- # We might need write permission
- chmod 0777, $filename;
- CORE::unlink($filename) or die "Couldn't unlink $filename: $!\n";
-}
-
-##
-## Given a filename and a reference to an array of lines,
-## write the lines to the file only if the contents have not changed.
-## Filename can be given as an arrayref of directory names
-##
-sub WriteIfChanged($\@)
-{
- my $file = shift;
- my $lines = shift;
-
- $file = File::Spec->catfile(@$file) if ref $file;
-
- my $TextToWrite = join '', @$lines;
- if (open IN, $file) {
- local($/) = undef;
- my $PreviousText = <IN>;
- close IN;
- if ($PreviousText eq $TextToWrite) {
- print "$file unchanged.\n" if $Verbose;
- return unless $AlwaysWrite;
- }
- }
- force_unlink ($file);
- if (not open OUT, ">$file") {
- die "$0: can't open $file for output: $!\n";
- }
- print "$file written.\n" if $Verbose;
-
- print OUT $TextToWrite;
- close OUT;
-}
-
-##
-## The main datastructure (a "Table") represents a set of code points that
-## are part of a particular quality (that are part of \pL, \p{InGreek},
-## etc.). They are kept as ranges of code points (starting and ending of
-## each range).
-##
-## For example, a range ASCII LETTERS would be represented as:
-## [ [ 0x41 => 0x5A, 'UPPER' ],
-## [ 0x61 => 0x7A, 'LOWER, ] ]
-##
-sub RANGE_START() { 0 } ## index into range element
-sub RANGE_END() { 1 } ## index into range element
-sub RANGE_NAME() { 2 } ## index into range element
-
-## Conceptually, these should really be folded into the 'Table' objects
-my %TableInfo;
-my %TableDesc;
-my %FuzzyNames;
-my %AliasInfo;
-my %CanonicalToOrig;
-
-##
-## Turn something like
-## OLD-ITALIC
-## into
-## OldItalic
-##
-sub CanonicalName($)
-{
- my $orig = shift;
- my $name = lc $orig;
- $name =~ s/(?<![a-z])(\w)/\u$1/g;
- $name =~ s/[-_\s]+//g;
-
- $CanonicalToOrig{$name} = $orig if not $CanonicalToOrig{$name};
- return $name;
-}
-
-
-##
-## Store the alias definitions for later use.
-##
-my %PropertyAlias;
-my %PropValueAlias;
-
-my %PA_reverse;
-my %PVA_reverse;
-
-sub Build_Aliases()
-{
- ##
- ## Most of the work with aliases doesn't occur here,
- ## but rather in utf8_heavy.pl, which uses PVA.pl,
-
- # Placate the warnings about used only once. (They are used again, but
- # via a typeglob lookup)
- %utf8::PropertyAlias = ();
- %utf8::PA_reverse = ();
- %utf8::PropValueAlias = ();
- %utf8::PVA_reverse = ();
- %utf8::PVA_abbr_map = ();
-
- open PA, "< PropertyAliases.txt"
- or confess "Can't open PropertyAliases.txt: $!";
- while (<PA>) {
- s/#.*//;
- s/\s+$//;
- next if /^$/;
-
- my ($abbrev, $name) = split /\s*;\s*/;
- next if $abbrev eq "n/a";
- $PropertyAlias{$abbrev} = $name;
- $PA_reverse{$name} = $abbrev;
-
- # The %utf8::... versions use japhy's code originally from utf8_pva.pl
- # However, it's moved here so that we build the tables at runtime.
- tr/ _-//d for $abbrev, $name;
- $utf8::PropertyAlias{lc $abbrev} = $name;
- $utf8::PA_reverse{lc $name} = $abbrev;
- }
- close PA;
-
- open PVA, "< PropValueAliases.txt"
- or confess "Can't open PropValueAliases.txt: $!";
- while (<PVA>) {
- s/#.*//;
- s/\s+$//;
- next if /^$/;
-
- my ($prop, @data) = split /\s*;\s*/;
-
- if ($prop eq 'ccc') {
- $PropValueAlias{$prop}{$data[1]} = [ @data[0,2] ];
- $PVA_reverse{$prop}{$data[2]} = [ @data[0,1] ];
- }
- else {
- next if $data[0] eq "n/a";
- $PropValueAlias{$prop}{$data[0]} = $data[1];
- $PVA_reverse{$prop}{$data[1]} = $data[0];
- }
-
- shift @data if $prop eq 'ccc';
- next if $data[0] eq "n/a";
-
- $data[1] =~ tr/ _-//d;
- $utf8::PropValueAlias{$prop}{lc $data[0]} = $data[1];
- $utf8::PVA_reverse{$prop}{lc $data[1]} = $data[0];
-
- my $abbr_class = ($prop eq 'gc' or $prop eq 'sc') ? 'gc_sc' : $prop;
- $utf8::PVA_abbr_map{$abbr_class}{lc $data[0]} = $data[0];
- }
- close PVA;
-
- # backwards compatibility for L& -> LC
- $utf8::PropValueAlias{gc}{'l&'} = $utf8::PropValueAlias{gc}{lc};
- $utf8::PVA_abbr_map{gc_sc}{'l&'} = $utf8::PVA_abbr_map{gc_sc}{lc};
-
-}
-
-
-##
-## Associates a property ("Greek", "Lu", "Assigned",...) with a Table.
-##
-## Called like:
-## New_Prop(In => 'Greek', $Table, Desc => 'Greek Block', Fuzzy => 1);
-##
-## Normally, these parameters are set when the Table is created (when the
-## Table->New constructor is called), but there are times when it needs to
-## be done after-the-fact...)
-##
-sub New_Prop($$$@)
-{
- my $Type = shift; ## "Is" or "In";
- my $Name = shift;
- my $Table = shift;
-
- ## remaining args are optional key/val
- my %Args = @_;
-
- my $Fuzzy = delete $Args{Fuzzy};
- my $Desc = delete $Args{Desc}; # description
-
- $Name = CanonicalName($Name) if $Fuzzy;
-
- ## sanity check a few args
- if (%Args or ($Type ne 'Is' and $Type ne 'In') or not ref $Table) {
- confess "$0: bad args to New_Prop"
- }
-
- if (not $TableInfo{$Type}->{$Name})
- {
- $TableInfo{$Type}->{$Name} = $Table;
- $TableDesc{$Type}->{$Name} = $Desc;
- if ($Fuzzy) {
- $FuzzyNames{$Type}->{$Name} = $Name;
- }
- }
-}
-
-
-##
-## Creates a new Table object.
-##
-## Args are key/value pairs:
-## In => Name -- Name of "In" property to be associated with
-## Is => Name -- Name of "Is" property to be associated with
-## Fuzzy => Boolean -- True if name can be accessed "fuzzily"
-## Desc => String -- Description of the property
-##
-## No args are required.
-##
-sub Table::New
-{
- my $class = shift;
- my %Args = @_;
-
- my $Table = bless [], $class;
-
- my $Fuzzy = delete $Args{Fuzzy};
- my $Desc = delete $Args{Desc};
-
- for my $Type ('Is', 'In')
- {
- if (my $Name = delete $Args{$Type}) {
- New_Prop($Type => $Name, $Table, Desc => $Desc, Fuzzy => $Fuzzy);
- }
- }
-
- ## shouldn't have any left over
- if (%Args) {
- confess "$0: bad args to Table->New"
- }
-
- return $Table;
-}
-
-
-##
-## Returns the maximum code point currently in the table.
-##
-sub Table::Max
-{
- my $last = $_[0]->[-1]; ## last code point
- confess "oops" unless $last; ## must have code points to have a max
- return $last->[RANGE_END];
-}
-
-##
-## Replaces the codepoints in the Table with those in the Table given
-## as an arg. (NOTE: this is not a "deep copy").
-##
-sub Table::Replace($$)
-{
- my $Table = shift; #self
- my $New = shift;
-
- @$Table = @$New;
-}
-
-##
-## Given a new code point, make the last range of the Table extend to
-## include the new (and all intervening) code points.
-##
-## Takes the time to make sure that the extension is valid.
-##
-sub Table::Extend
-{
- my $Table = shift; #self
- my $codepoint = shift;
-
- my $PrevMax = $Table->Max;
-
- confess "oops ($codepoint <= $PrevMax)" if $codepoint <= $PrevMax;
-
- $Table->ExtendNoCheck($codepoint);
-}
-
-
-##
-## Given a new code point, make the last range of the Table extend to
-## include the new (and all intervening) code points.
-##
-## Does NOT check that the extension is valid. Assumes that the caller
-## has already made this check.
-##
-sub Table::ExtendNoCheck
-{
- ## Optmized adding: Assumes $Table and $codepoint as parms
- $_[0]->[-1]->[RANGE_END] = $_[1];
-}
-
-##
-## Given a code point range start and end (and optional name), blindly
-## append them to the list of ranges for the Table.
-##
-## NOTE: Code points must be added in strictly ascending numeric order.
-##
-sub Table::RawAppendRange
-{
- my $Table = shift; #self
- my $start = shift;
- my $end = shift;
- my $name = shift;
- $name = "" if not defined $name; ## warning: $name can be "0"
-
- push @$Table, [ $start, # RANGE_START
- $end, # RANGE_END
- $name ]; # RANGE_NAME
-}
-
-##
-## Given a code point (and optional name), add it to the Table.
-##
-## NOTE: Code points must be added in strictly ascending numeric order.
-##
-sub Table::Append
-{
- my $Table = shift; #self
- my $codepoint = shift;
- my $name = shift;
- $name = "" if not defined $name; ## warning: $name can be "0"
-
- ##
- ## If we've already got a range working, and this code point is the next
- ## one in line, and if the name is the same, just extend the current range.
- ##
- my $last = $Table->[-1];
- if ($last
- and
- $last->[RANGE_END] == $codepoint - 1
- and
- $last->[RANGE_NAME] eq $name)
- {
- $Table->ExtendNoCheck($codepoint);
- }
- else
- {
- $Table->RawAppendRange($codepoint, $codepoint, $name);
- }
-}
-
-##
-## Given a code point range starting value and ending value (and name),
-## Add the range to teh Table.
-##
-## NOTE: Code points must be added in strictly ascending numeric order.
-##
-sub Table::AppendRange
-{
- my $Table = shift; #self
- my $start = shift;
- my $end = shift;
- my $name = shift;
- $name = "" if not defined $name; ## warning: $name can be "0"
-
- $Table->Append($start, $name);
- $Table->Extend($end) if $end > $start;
-}
-
-##
-## Return a new Table that represents all code points not in the Table.
-##
-sub Table::Invert
-{
- my $Table = shift; #self
-
- my $New = Table->New();
- my $max = -1;
- for my $range (@$Table)
- {
- my $start = $range->[RANGE_START];
- my $end = $range->[RANGE_END];
- if ($start-1 >= $max+1) {
- $New->AppendRange($max+1, $start-1, "");
- }
- $max = $end;
- }
- if ($max+1 < $LastUnicodeCodepoint) {
- $New->AppendRange($max+1, $LastUnicodeCodepoint);
- }
- return $New;
-}
-
-##
-## Merges any number of other tables with $self, returning the new table.
-## (existing tables are not modified)
-##
-##
-## Args may be Tables, or individual code points (as integers).
-##
-## Can be called as either a constructor or a method.
-##
-sub Table::Merge
-{
- shift(@_) if not ref $_[0]; ## if called as a constructor, lose the class
- my @Tables = @_;
-
- ## Accumulate all records from all tables
- my @Records;
- for my $Arg (@Tables)
- {
- if (ref $Arg) {
- ## arg is a table -- get its ranges
- push @Records, @$Arg;
- } else {
- ## arg is a codepoint, make a range
- push @Records, [ $Arg, $Arg ]
- }
- }
-
- ## sort by range start, with longer ranges coming first.
- my ($first, @Rest) = sort {
- ($a->[RANGE_START] <=> $b->[RANGE_START])
- or
- ($b->[RANGE_END] <=> $b->[RANGE_END])
- } @Records;
-
- my $New = Table->New();
-
- ## Ensuring the first range is there makes the subsequent loop easier
- $New->AppendRange($first->[RANGE_START],
- $first->[RANGE_END]);
-
- ## Fold in records so long as they add new information.
- for my $set (@Rest)
- {
- my $start = $set->[RANGE_START];
- my $end = $set->[RANGE_END];
- if ($start > $New->Max) {
- $New->AppendRange($start, $end);
- } elsif ($end > $New->Max) {
- $New->ExtendNoCheck($end);
- }
- }
-
- return $New;
-}
-
-##
-## Given a filename, write a representation of the Table to a file.
-## May have an optional comment as a 2nd arg.
-## Filename may actually be an arrayref of directories
-##
-sub Table::Write
-{
- my $Table = shift; #self
- my $filename = shift;
- my $comment = shift;
-
- my @OUT = $HEADER;
- if (defined $comment) {
- $comment =~ s/\s+\Z//;
- $comment =~ s/^/# /gm;
- push @OUT, "#\n$comment\n#\n";
- }
- push @OUT, "return <<'END';\n";
-
- for my $set (@$Table)
- {
- my $start = $set->[RANGE_START];
- my $end = $set->[RANGE_END];
- my $name = $set->[RANGE_NAME];
-
- if ($start == $end) {
- push @OUT, sprintf "%04X\t\t%s\n", $start, $name;
- } else {
- push @OUT, sprintf "%04X\t%04X\t%s\n", $start, $end, $name;
- }
- }
-
- push @OUT, "END\n";
-
- WriteIfChanged($filename, @OUT);
-}
-
-## This used only for making the test script.
-## helper function
-sub IsUsable($)
-{
- my $code = shift;
- return 0 if $code <= 0x0000; ## don't use null
- return 0 if $code >= $LastUnicodeCodepoint; ## keep in range
- return 0 if ($code >= 0xD800 and $code <= 0xDFFF); ## no surrogates
- return 0 if ($code >= 0xFDD0 and $code <= 0xFDEF); ## utf8.c says no good
- return 0 if (($code & 0xFFFF) == 0xFFFE); ## utf8.c says no good
- return 0 if (($code & 0xFFFF) == 0xFFFF); ## utf8.c says no good
- return 1;
-}
-
-## Return a code point that's part of the table.
-## Returns nothing if the table is empty (or covers only surrogates).
-## This used only for making the test script.
-sub Table::ValidCode
-{
- my $Table = shift; #self
- for my $set (@$Table) {
- return $set->[RANGE_END] if IsUsable($set->[RANGE_END]);
- }
- return ();
-}
-
-## Return a code point that's not part of the table
-## Returns nothing if the table covers all code points.
-## This used only for making the test script.
-sub Table::InvalidCode
-{
- my $Table = shift; #self
-
- return 0x1234 if not @$Table;
-
- for my $set (@$Table)
- {
- if (IsUsable($set->[RANGE_END] + 1))
- {
- return $set->[RANGE_END] + 1;
- }
-
- if (IsUsable($set->[RANGE_START] - 1))
- {
- return $set->[RANGE_START] - 1;
- }
- }
- return ();
-}
-
-###########################################################################
-###########################################################################
-###########################################################################
-
-
-##
-## Called like:
-## New_Alias(Is => 'All', SameAs => 'Any', Fuzzy => 1);
-##
-## The args must be in that order, although the Fuzzy pair may be omitted.
-##
-## This creates 'IsAll' as an alias for 'IsAny'
-##
-sub New_Alias($$$@)
-{
- my $Type = shift; ## "Is" or "In"
- my $Alias = shift;
- my $SameAs = shift; # expecting "SameAs" -- just ignored
- my $Name = shift;
-
- ## remaining args are optional key/val
- my %Args = @_;
-
- my $Fuzzy = delete $Args{Fuzzy};
-
- ## sanity check a few args
- if (%Args or ($Type ne 'Is' and $Type ne 'In') or $SameAs ne 'SameAs') {
- confess "$0: bad args to New_Alias"
- }
-
- $Alias = CanonicalName($Alias) if $Fuzzy;
-
- if (not $TableInfo{$Type}->{$Name})
- {
- my $CName = CanonicalName($Name);
- if ($TableInfo{$Type}->{$CName}) {
- confess "$0: Use canonical form '$CName' instead of '$Name' for alias.";
- } else {
- confess "$0: don't have original $Type => $Name to make alias\n";
- }
- }
- if ($TableInfo{$Alias}) {
- confess "$0: already have original $Type => $Alias; can't make alias";
- }
- $AliasInfo{$Type}->{$Name} = $Alias;
- if ($Fuzzy) {
- $FuzzyNames{$Type}->{$Alias} = $Name;
- }
-
-}
-
-
-## All assigned code points
-my $Assigned = Table->New(Is => 'Assigned',
- Desc => "All assigned code points",
- Fuzzy => 0);
-
-my $Name = Table->New(); ## all characters, individually by name
-my $General = Table->New(); ## all characters, grouped by category
-my %General;
-my %Cat;
-
-## Simple Data::Dumper alike. Good enough for our needs. We can't use the real
-## thing as we have to run under miniperl
-sub simple_dumper {
- my @lines;
- my $item;
- foreach $item (@_) {
- if (ref $item) {
- if (ref $item eq 'ARRAY') {
- push @lines, "[\n", simple_dumper (@$item), "],\n";
- } elsif (ref $item eq 'HASH') {
- push @lines, "{\n", simple_dumper (%$item), "},\n";
- } else {
- die "Can't cope with $item";
- }
- } else {
- if (defined $item) {
- my $copy = $item;
- $copy =~ s/([\'\\])/\\$1/gs;
- push @lines, "'$copy',\n";
- } else {
- push @lines, "undef,\n";
- }
- }
- }
- @lines;
-}
-
-##
-## Process UnicodeData.txt (Categories, etc.)
-##
-sub UnicodeData_Txt()
-{
- my $Bidi = Table->New();
- my $Deco = Table->New();
- my $Comb = Table->New();
- my $Number = Table->New();
- my $Mirrored = Table->New();#Is => 'Mirrored',
- #Desc => "Mirrored in bidirectional text",
- #Fuzzy => 0);
-
- my %DC;
- my %Bidi;
- my %Number;
- $DC{can} = Table->New();
- $DC{com} = Table->New();
-
- ## Initialize Perl-generated categories
- ## (Categories from UnicodeData.txt are auto-initialized in gencat)
- $Cat{Alnum} =
- Table->New(Is => 'Alnum', Desc => "[[:Alnum:]]", Fuzzy => 0);
- $Cat{Alpha} =
- Table->New(Is => 'Alpha', Desc => "[[:Alpha:]]", Fuzzy => 0);
- $Cat{ASCII} =
- Table->New(Is => 'ASCII', Desc => "[[:ASCII:]]", Fuzzy => 0);
- $Cat{Blank} =
- Table->New(Is => 'Blank', Desc => "[[:Blank:]]", Fuzzy => 0);
- $Cat{Cntrl} =
- Table->New(Is => 'Cntrl', Desc => "[[:Cntrl:]]", Fuzzy => 0);
- $Cat{Digit} =
- Table->New(Is => 'Digit', Desc => "[[:Digit:]]", Fuzzy => 0);
- $Cat{Graph} =
- Table->New(Is => 'Graph', Desc => "[[:Graph:]]", Fuzzy => 0);
- $Cat{Lower} =
- Table->New(Is => 'Lower', Desc => "[[:Lower:]]", Fuzzy => 0);
- $Cat{Print} =
- Table->New(Is => 'Print', Desc => "[[:Print:]]", Fuzzy => 0);
- $Cat{Punct} =
- Table->New(Is => 'Punct', Desc => "[[:Punct:]]", Fuzzy => 0);
- $Cat{Space} =
- Table->New(Is => 'Space', Desc => "[[:Space:]]", Fuzzy => 0);
- $Cat{Title} =
- Table->New(Is => 'Title', Desc => "[[:Title:]]", Fuzzy => 0);
- $Cat{Upper} =
- Table->New(Is => 'Upper', Desc => "[[:Upper:]]", Fuzzy => 0);
- $Cat{XDigit} =
- Table->New(Is => 'XDigit', Desc => "[[:XDigit:]]", Fuzzy => 0);
- $Cat{Word} =
- Table->New(Is => 'Word', Desc => "[[:Word:]]", Fuzzy => 0);
- $Cat{SpacePerl} =
- Table->New(Is => 'SpacePerl', Desc => '\s', Fuzzy => 0);
-
- my %To;
- $To{Upper} = Table->New();
- $To{Lower} = Table->New();
- $To{Title} = Table->New();
- $To{Digit} = Table->New();
-
- sub gencat($$$$)
- {
- my ($name, ## Name ("LATIN CAPITAL LETTER A")
- $cat, ## Category ("Lu", "Zp", "Nd", etc.)
- $code, ## Code point (as an integer)
- $op) = @_;
-
- my $MajorCat = substr($cat, 0, 1); ## L, M, Z, S, etc
-
- $Assigned->$op($code);
- $Name->$op($code, $name);
- $General->$op($code, $cat);
-
- ## add to the sub category (e.g. "Lu", "Nd", "Cf", ..)
- $Cat{$cat} ||= Table->New(Is => $cat,
- Desc => "General Category '$cat'",
- Fuzzy => 0);
- $Cat{$cat}->$op($code);
-
- ## add to the major category (e.g. "L", "N", "C", ...)
- $Cat{$MajorCat} ||= Table->New(Is => $MajorCat,
- Desc => "Major Category '$MajorCat'",
- Fuzzy => 0);
- $Cat{$MajorCat}->$op($code);
-
- ($General{$name} ||= Table->New)->$op($code, $name);
-
- # 005F: SPACING UNDERSCORE
- $Cat{Word}->$op($code) if $cat =~ /^[LMN]|Pc/;
- $Cat{Alnum}->$op($code) if $cat =~ /^[LM]|Nd/;
- $Cat{Alpha}->$op($code) if $cat =~ /^[LM]/;
-
- my $isspace =
- ($cat =~ /Zs|Zl|Zp/ &&
- $code != 0x200B) # 200B is ZWSP which is for line break control
- # and therefore it is not part of "space" even while it is "Zs".
- || $code == 0x0009 # 0009: HORIZONTAL TAB
- || $code == 0x000A # 000A: LINE FEED
- || $code == 0x000B # 000B: VERTICAL TAB
- || $code == 0x000C # 000C: FORM FEED
- || $code == 0x000D # 000D: CARRIAGE RETURN
- || $code == 0x0085 # 0085: NEL
-
- ;
-
- $Cat{Space}->$op($code) if $isspace;
-
- $Cat{SpacePerl}->$op($code) if $isspace
- && $code != 0x000B; # Backward compat.
-
- $Cat{Blank}->$op($code) if $isspace
- && !($code == 0x000A ||
- $code == 0x000B ||
- $code == 0x000C ||
- $code == 0x000D ||
- $code == 0x0085 ||
- $cat =~ /^Z[lp]/);
-
- $Cat{Digit}->$op($code) if $cat eq "Nd";
- $Cat{Upper}->$op($code) if $cat eq "Lu";
- $Cat{Lower}->$op($code) if $cat eq "Ll";
- $Cat{Title}->$op($code) if $cat eq "Lt";
- $Cat{ASCII}->$op($code) if $code <= 0x007F;
- $Cat{Cntrl}->$op($code) if $cat =~ /^C/;
- my $isgraph = !$isspace && $cat !~ /Cc|Cs|Cn/;
- $Cat{Graph}->$op($code) if $isgraph;
- $Cat{Print}->$op($code) if $isgraph || $isspace;
- $Cat{Punct}->$op($code) if $cat =~ /^P/;
-
- $Cat{XDigit}->$op($code) if ($code >= 0x30 && $code <= 0x39) ## 0..9
- || ($code >= 0x41 && $code <= 0x46) ## A..F
- || ($code >= 0x61 && $code <= 0x66); ## a..f
- }
-
- ## open ane read file.....
- if (not open IN, "UnicodeData.txt") {
- die "$0: UnicodeData.txt: $!\n";
- }
-
- ##
- ## For building \p{_CombAbove} and \p{_CanonDCIJ}
- ##
- my %_Above_HexCodes; ## Hexcodes for chars with $comb == 230 ("ABOVE")
-
- my %CodeToDeco; ## Maps code to decomp. list for chars with first
- ## decomp. char an "i" or "j" (for \p{_CanonDCIJ})
-
- ## This is filled in as we go....
- my $CombAbove = Table->New(Is => '_CombAbove',
- Desc => '(for internal casefolding use)',
- Fuzzy => 0);
-
- while (<IN>)
- {
- next unless /^[0-9A-Fa-f]+;/;
- s/\s+$//;
-
- my ($hexcode, ## code point in hex (e.g. "0041")
- $name, ## character name (e.g. "LATIN CAPITAL LETTER A")
- $cat, ## category (e.g. "Lu")
- $comb, ## Canonical combining class (e.t. "230")
- $bidi, ## directional category (e.g. "L")
- $deco, ## decomposition mapping
- $decimal, ## decimal digit value
- $digit, ## digit value
- $number, ## numeric value
- $mirrored, ## mirrored
- $unicode10, ## name in Unicode 1.0
- $comment, ## comment field
- $upper, ## uppercase mapping
- $lower, ## lowercase mapping
- $title, ## titlecase mapping
- ) = split(/\s*;\s*/);
-
- # Note that in Unicode 3.2 there will be names like
- # LINE FEED (LF), which probably means that \N{} needs
- # to cope also with LINE FEED and LF.
- $name = $unicode10 if $name eq '<control>' && $unicode10 ne '';
-
- my $code = hex($hexcode);
-
- if ($comb and $comb == 230) {
- $CombAbove->Append($code);
- $_Above_HexCodes{$hexcode} = 1;
- }
-
- ## Used in building \p{_CanonDCIJ}
- if ($deco and $deco =~ m/^006[9A]\b/) {
- $CodeToDeco{$code} = $deco;
- }
-
- ##
- ## There are a few pairs of lines like:
- ## AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
- ## D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
- ## that define ranges.
- ##
- if ($name =~ /^<(.+), (First|Last)>$/)
- {
- $name = $1;
- gencat($name, $cat, $code, $2 eq 'First' ? 'Append' : 'Extend');
- #New_Prop(In => $name, $General{$name}, Fuzzy => 1);
- }
- else
- {
- ## normal (single-character) lines
- gencat($name, $cat, $code, 'Append');
-
- # No Append() here since since several codes may map into one.
- $To{Upper}->RawAppendRange($code, $code, $upper) if $upper;
- $To{Lower}->RawAppendRange($code, $code, $lower) if $lower;
- $To{Title}->RawAppendRange($code, $code, $title) if $title;
- $To{Digit}->Append($code, $decimal) if length $decimal;
-
- $Bidi->Append($code, $bidi);
- $Comb->Append($code, $comb) if $comb;
- $Number->Append($code, $number) if length $number;
-
- length($decimal) and ($Number{De} ||= Table->New())->Append($code)
- or
- length($digit) and ($Number{Di} ||= Table->New())->Append($code)
- or
- length($number) and ($Number{Nu} ||= Table->New())->Append($code);
-
- $Mirrored->Append($code) if $mirrored eq "Y";
-
- $Bidi{$bidi} ||= Table->New();#Is => "bt/$bidi",
- #Desc => "Bi-directional category '$bidi'",
- #Fuzzy => 0);
- $Bidi{$bidi}->Append($code);
-
- if ($deco)
- {
- $Deco->Append($code, $deco);
- if ($deco =~/^<(\w+)>/)
- {
- my $dshort = $PVA_reverse{dt}{ucfirst lc $1};
- $DC{com}->Append($code);
-
- $DC{$dshort} ||= Table->New();
- $DC{$dshort}->Append($code);
- }
- else
- {
- $DC{can}->Append($code);
- }
- }
- }
- }
- close IN;
-
- ##
- ## Tidy up a few special cases....
- ##
-
- $Cat{Cn} = $Assigned->Invert; ## Cn is everything that doesn't exist
- New_Prop(Is => 'Cn',
- $Cat{Cn},
- Desc => "General Category 'Cn' [not functional in Perl]",
- Fuzzy => 0);
-
- ## Unassigned is the same as 'Cn'
- New_Alias(Is => 'Unassigned', SameAs => 'Cn', Fuzzy => 0);
-
- $Cat{C}->Replace($Cat{C}->Merge($Cat{Cn})); ## Now merge in Cn into C
-
-
- # LC is Ll, Lu, and Lt.
- # (used to be L& or L_, but PropValueAliases.txt defines it as LC)
- New_Prop(Is => 'LC',
- Table->Merge(@Cat{qw[Ll Lu Lt]}),
- Desc => '[\p{Ll}\p{Lu}\p{Lt}]',
- Fuzzy => 0);
-
- ## Any and All are all code points.
- my $Any = Table->New(Is => 'Any',
- Desc => sprintf("[\\x{0000}-\\x{%X}]",
- $LastUnicodeCodepoint),
- Fuzzy => 0);
- $Any->RawAppendRange(0, $LastUnicodeCodepoint);
-
- New_Alias(Is => 'All', SameAs => 'Any', Fuzzy => 0);
-
- ##
- ## Build special properties for Perl's internal case-folding needs:
- ## \p{_CaseIgnorable}
- ## \p{_CanonDCIJ}
- ## \p{_CombAbove}
- ## _CombAbove was built above. Others are built here....
- ##
-
- ## \p{_CaseIgnorable} is [\p{Mn}\0x00AD\x2010]
- New_Prop(Is => '_CaseIgnorable',
- Table->Merge($Cat{Mn},
- 0x00AD, #SOFT HYPHEN
- 0x2010), #HYPHEN
- Desc => '(for internal casefolding use)',
- Fuzzy => 0);
-
-
- ## \p{_CanonDCIJ} is fairly complex...
- my $CanonCDIJ = Table->New(Is => '_CanonDCIJ',
- Desc => '(for internal casefolding use)',
- Fuzzy => 0);
- ## It contains the ASCII 'i' and 'j'....
- $CanonCDIJ->Append(0x0069); # ASCII ord("i")
- $CanonCDIJ->Append(0x006A); # ASCII ord("j")
- ## ...and any character with a decomposition that starts with either of
- ## those code points, but only if the decomposition does not have any
- ## combining character with the "ABOVE" canonical combining class.
- for my $code (sort { $a <=> $b} keys %CodeToDeco)
- {
- ## Need to ensure that all decomposition characters do not have
- ## a %HexCodeToComb in %AboveCombClasses.
- my $want = 1;
- for my $deco_hexcode (split / /, $CodeToDeco{$code})
- {
- if (exists $_Above_HexCodes{$deco_hexcode}) {
- ## one of the decmposition chars has an ABOVE combination
- ## class, so we're not interested in this one
- $want = 0;
- last;
- }
- }
- if ($want) {
- $CanonCDIJ->Append($code);
- }
- }
-
-
-
- ##
- ## Now dump the files.
- ##
- $Name->Write("Name.pl");
-
- {
- my @PVA = $HEADER;
- foreach my $name (qw (PropertyAlias PA_reverse PropValueAlias
- PVA_reverse PVA_abbr_map)) {
- # Should I really jump through typeglob hoops just to avoid a
- # symbolic reference? (%{"utf8::$name})
- push @PVA, "\n", "\%utf8::$name = (\n",
- simple_dumper (%{$utf8::{$name}}), ");\n";
- }
- push @PVA, "1;\n";
- WriteIfChanged("PVA.pl", @PVA);
- }
-
- # $Bidi->Write("Bidirectional.pl");
- for (keys %Bidi) {
- $Bidi{$_}->Write(
- ["lib","bc","$_.pl"],
- "BidiClass category '$PropValueAlias{bc}{$_}'"
- );
- }
-
- $Comb->Write("CombiningClass.pl");
- for (keys %{ $PropValueAlias{ccc} }) {
- my ($code, $name) = @{ $PropValueAlias{ccc}{$_} };
- (my $c = Table->New())->Append($code);
- $c->Write(
- ["lib","ccc","$_.pl"],
- "CombiningClass category '$name'"
- );
- }
-
- $Deco->Write("Decomposition.pl");
- for (keys %DC) {
- $DC{$_}->Write(
- ["lib","dt","$_.pl"],
- "DecompositionType category '$PropValueAlias{dt}{$_}'"
- );
- }
-
- # $Number->Write("Number.pl");
- for (keys %Number) {
- $Number{$_}->Write(
- ["lib","nt","$_.pl"],
- "NumericType category '$PropValueAlias{nt}{$_}'"
- );
- }
-
- # $General->Write("Category.pl");
-
- for my $to (sort keys %To) {
- $To{$to}->Write(["To","$to.pl"]);
- }
-
- for (keys %{ $PropValueAlias{gc} }) {
- New_Alias(Is => $PropValueAlias{gc}{$_}, SameAs => $_, Fuzzy => 1);
- }
-}
-
-##
-## Process LineBreak.txt
-##
-sub LineBreak_Txt()
-{
- if (not open IN, "LineBreak.txt") {
- die "$0: LineBreak.txt: $!\n";
- }
-
- my $Lbrk = Table->New();
- my %Lbrk;
-
- while (<IN>)
- {
- next unless /^([0-9A-Fa-f]+)(?:\.\.([0-9A-Fa-f]+))?\s*;\s*(\w+)/;
-
- my ($first, $last, $lbrk) = (hex($1), hex($2||""), $3);
-
- $Lbrk->Append($first, $lbrk);
-
- $Lbrk{$lbrk} ||= Table->New();
- $Lbrk{$lbrk}->Append($first);
-
- if ($last) {
- $Lbrk->Extend($last);
- $Lbrk{$lbrk}->Extend($last);
- }
- }
- close IN;
-
- # $Lbrk->Write("Lbrk.pl");
-
-
- for (keys %Lbrk) {
- $Lbrk{$_}->Write(
- ["lib","lb","$_.pl"],
- "Linebreak category '$PropValueAlias{lb}{$_}'"
- );
- }
-}
-
-##
-## Process ArabicShaping.txt.
-##
-sub ArabicShaping_txt()
-{
- if (not open IN, "ArabicShaping.txt") {
- die "$0: ArabicShaping.txt: $!\n";
- }
-
- my $ArabLink = Table->New();
- my $ArabLinkGroup = Table->New();
-
- my %JoinType;
-
- while (<IN>)
- {
- next unless /^[0-9A-Fa-f]+;/;
- s/\s+$//;
-
- my ($hexcode, $name, $link, $linkgroup) = split(/\s*;\s*/);
- my $code = hex($hexcode);
- $ArabLink->Append($code, $link);
- $ArabLinkGroup->Append($code, $linkgroup);
-
- $JoinType{$link} ||= Table->New(Is => "JoinType$link");
- $JoinType{$link}->Append($code);
- }
- close IN;
-
- # $ArabLink->Write("ArabLink.pl");
- # $ArabLinkGroup->Write("ArabLnkGrp.pl");
-
-
- for (keys %JoinType) {
- $JoinType{$_}->Write(
- ["lib","jt","$_.pl"],
- "JoiningType category '$PropValueAlias{jt}{$_}'"
- );
- }
-}
-
-##
-## Process EastAsianWidth.txt.
-##
-sub EastAsianWidth_txt()
-{
- if (not open IN, "EastAsianWidth.txt") {
- die "$0: EastAsianWidth.txt: $!\n";
- }
-
- my %EAW;
-
- while (<IN>)
- {
- next unless /^[0-9A-Fa-f]+(\.\.[0-9A-Fa-f]+)?;/;
- s/#.*//;
- s/\s+$//;
-
- my ($hexcodes, $pv) = split(/\s*;\s*/);
- $EAW{$pv} ||= Table->New(Is => "EastAsianWidth$pv");
- my ($start, $end) = split(/\.\./, $hexcodes);
- if (defined $end) {
- $EAW{$pv}->AppendRange(hex($start), hex($end));
- } else {
- $EAW{$pv}->Append(hex($start));
- }
- }
- close IN;
-
-
- for (keys %EAW) {
- $EAW{$_}->Write(
- ["lib","ea","$_.pl"],
- "EastAsianWidth category '$PropValueAlias{ea}{$_}'"
- );
- }
-}
-
-##
-## Process HangulSyllableType.txt.
-##
-sub HangulSyllableType_txt()
-{
- if (not open IN, "HangulSyllableType.txt") {
- die "$0: HangulSyllableType.txt: $!\n";
- }
-
- my %HST;
-
- while (<IN>)
- {
- next unless /^([0-9A-Fa-f]+)(?:\.\.([0-9A-Fa-f]+))?\s*;\s*(\w+)/;
- my ($first, $last, $pv) = (hex($1), hex($2||""), $3);
-
- $HST{$pv} ||= Table->New(Is => "HangulSyllableType$pv");
- $HST{$pv}->Append($first);
-
- if ($last) { $HST{$pv}->Extend($last) }
- }
- close IN;
-
- for (keys %HST) {
- $HST{$_}->Write(
- ["lib","hst","$_.pl"],
- "HangulSyllableType category '$PropValueAlias{hst}{$_}'"
- );
- }
-}
-
-##
-## Process Jamo.txt.
-##
-sub Jamo_txt()
-{
- if (not open IN, "Jamo.txt") {
- die "$0: Jamo.txt: $!\n";
- }
- my $Short = Table->New();
-
- while (<IN>)
- {
- next unless /^([0-9A-Fa-f]+)\s*;\s*(\w*)/;
- my ($code, $short) = (hex($1), $2);
-
- $Short->Append($code, $short);
- }
- close IN;
- # $Short->Write("JamoShort.pl");
-}
-
-##
-## Process Scripts.txt.
-##
-sub Scripts_txt()
-{
- my @ScriptInfo;
-
- if (not open(IN, "Scripts.txt")) {
- die "$0: Scripts.txt: $!\n";
- }
- while (<IN>) {
- next unless /^([0-9A-Fa-f]+)(?:\.\.([0-9A-Fa-f]+))?\s*;\s*(.+?)\s*\#/;
-
- # Wait until all the scripts have been read since
- # they are not listed in numeric order.
- push @ScriptInfo, [ hex($1), hex($2||""), $3 ];
- }
- close IN;
-
- # Now append the scripts properties in their code point order.
-
- my %Script;
- my $Scripts = Table->New();
-
- for my $script (sort { $a->[0] <=> $b->[0] } @ScriptInfo)
- {
- my ($first, $last, $name) = @$script;
- $Scripts->Append($first, $name);
-
- $Script{$name} ||= Table->New(Is => $name,
- Desc => "Script '$name'",
- Fuzzy => 1);
- $Script{$name}->Append($first, $name);
-
- if ($last) {
- $Scripts->Extend($last);
- $Script{$name}->Extend($last);
- }
- }
-
- # $Scripts->Write("Scripts.pl");
-
- ## Common is everything not explicitly assigned to a Script
- ##
- ## ***shouldn't this be intersected with \p{Assigned}? ******
- ##
- New_Prop(Is => 'Common',
- $Scripts->Invert,
- Desc => 'Pseudo-Script of codepoints not in other Unicode scripts',
- Fuzzy => 1);
-}
-
-##
-## Given a name like "Close Punctuation", return a regex (that when applied
-## with /i) matches any valid form of that name (e.g. "ClosePunctuation",
-## "Close-Punctuation", etc.)
-##
-## Accept any space, dash, or underbar where in the official name there is
-## space or a dash (or underbar, but there never is).
-##
-##
-sub NameToRegex($)
-{
- my $Name = shift;
- $Name =~ s/[- _]/(?:[-_]|\\s+)?/g;
- return $Name;
-}
-
-##
-## Process Blocks.txt.
-##
-sub Blocks_txt()
-{
- my $Blocks = Table->New();
- my %Blocks;
-
- if (not open IN, "Blocks.txt") {
- die "$0: Blocks.txt: $!\n";
- }
-
- while (<IN>)
- {
- #next if not /Private Use$/;
- next if not /^([0-9A-Fa-f]+)\.\.([0-9A-Fa-f]+)\s*;\s*(.+?)\s*$/;
-
- my ($first, $last, $name) = (hex($1), hex($2), $3);
-
- $Blocks->Append($first, $name);
-
- $Blocks{$name} ||= Table->New(In => $name,
- Desc => "Block '$name'",
- Fuzzy => 1);
- $Blocks{$name}->Append($first, $name);
-
- if ($last and $last != $first) {
- $Blocks->Extend($last);
- $Blocks{$name}->Extend($last);
- }
- }
- close IN;
-
- # $Blocks->Write("Blocks.pl");
-}
-
-##
-## Read in the PropList.txt. It contains extended properties not
-## listed in the UnicodeData.txt, such as 'Other_Alphabetic':
-## alphabetic but not of the general category L; many modifiers
-## belong to this extended property category: while they are not
-## alphabets, they are alphabetic in nature.
-##
-sub PropList_txt()
-{
- my @PropInfo;
-
- if (not open IN, "PropList.txt") {
- die "$0: PropList.txt: $!\n";
- }
-
- while (<IN>)
- {
- next unless /^([0-9A-Fa-f]+)(?:\.\.([0-9A-Fa-f]+))?\s*;\s*(.+?)\s*\#/;
-
- # Wait until all the extended properties have been read since
- # they are not listed in numeric order.
- push @PropInfo, [ hex($1), hex($2||""), $3 ];
- }
- close IN;
-
- # Now append the extended properties in their code point order.
- my $Props = Table->New();
- my %Prop;
-
- for my $prop (sort { $a->[0] <=> $b->[0] } @PropInfo)
- {
- my ($first, $last, $name) = @$prop;
- $Props->Append($first, $name);
-
- $Prop{$name} ||= Table->New(Is => $name,
- Desc => "Extended property '$name'",
- Fuzzy => 1);
- $Prop{$name}->Append($first, $name);
-
- if ($last) {
- $Props->Extend($last);
- $Prop{$name}->Extend($last);
- }
- }
-
- for (keys %Prop) {
- (my $file = $PA_reverse{$_}) =~ tr/_//d;
- # XXX I'm assuming that the names from %Prop don't suffer 8.3 clashes.
- $BaseNames{lc $file}++;
- $Prop{$_}->Write(
- ["lib","gc_sc","$file.pl"],
- "Binary property '$_'"
- );
- }
-
- # Alphabetic is L and Other_Alphabetic.
- New_Prop(Is => 'Alphabetic',
- Table->Merge($Cat{L}, $Prop{Other_Alphabetic}),
- Desc => '[\p{L}\p{OtherAlphabetic}]', # use canonical names here
- Fuzzy => 1);
-
- # Lowercase is Ll and Other_Lowercase.
- New_Prop(Is => 'Lowercase',
- Table->Merge($Cat{Ll}, $Prop{Other_Lowercase}),
- Desc => '[\p{Ll}\p{OtherLowercase}]', # use canonical names here
- Fuzzy => 1);
-
- # Uppercase is Lu and Other_Uppercase.
- New_Prop(Is => 'Uppercase',
- Table->Merge($Cat{Lu}, $Prop{Other_Uppercase}),
- Desc => '[\p{Lu}\p{Other_Uppercase}]', # use canonical names here
- Fuzzy => 1);
-
- # Math is Sm and Other_Math.
- New_Prop(Is => 'Math',
- Table->Merge($Cat{Sm}, $Prop{Other_Math}),
- Desc => '[\p{Sm}\p{OtherMath}]', # use canonical names here
- Fuzzy => 1);
-
- # ID_Start is Ll, Lu, Lt, Lm, Lo, and Nl.
- New_Prop(Is => 'ID_Start',
- Table->Merge(@Cat{qw[Ll Lu Lt Lm Lo Nl]}),
- Desc => '[\p{Ll}\p{Lu}\p{Lt}\p{Lm}\p{Lo}\p{Nl}]',
- Fuzzy => 1);
-
- # ID_Continue is ID_Start, Mn, Mc, Nd, and Pc.
- New_Prop(Is => 'ID_Continue',
- Table->Merge(@Cat{qw[Ll Lu Lt Lm Lo Nl Mn Mc Nd Pc ]}),
- Desc => '[\p{ID_Start}\p{Mn}\p{Mc}\p{Nd}\p{Pc}]',
- Fuzzy => 1);
-}
-
-
-##
-## These are used in:
-## MakePropTestScript()
-## WriteAllMappings()
-## for making the test script.
-##
-my %FuzzyNameToTest;
-my %ExactNameToTest;
-
-
-## This used only for making the test script
-sub GenTests($$$$)
-{
- my $FH = shift;
- my $Prop = shift;
- my $MatchCode = shift;
- my $FailCode = shift;
-
- if (defined $MatchCode) {
- printf $FH qq/Expect(1, "\\x{%04X}", '\\p{$Prop}' );\n/, $MatchCode;
- printf $FH qq/Expect(0, "\\x{%04X}", '\\p{^$Prop}');\n/, $MatchCode;
- printf $FH qq/Expect(0, "\\x{%04X}", '\\P{$Prop}' );\n/, $MatchCode;
- printf $FH qq/Expect(1, "\\x{%04X}", '\\P{^$Prop}');\n/, $MatchCode;
- }
- if (defined $FailCode) {
- printf $FH qq/Expect(0, "\\x{%04X}", '\\p{$Prop}' );\n/, $FailCode;
- printf $FH qq/Expect(1, "\\x{%04X}", '\\p{^$Prop}');\n/, $FailCode;
- printf $FH qq/Expect(1, "\\x{%04X}", '\\P{$Prop}' );\n/, $FailCode;
- printf $FH qq/Expect(0, "\\x{%04X}", '\\P{^$Prop}');\n/, $FailCode;
- }
-}
-
-## This used only for making the test script
-sub ExpectError($$)
-{
- my $FH = shift;
- my $prop = shift;
-
- print $FH qq/Error('\\p{$prop}');\n/;
- print $FH qq/Error('\\P{$prop}');\n/;
-}
-
-## This used only for making the test script
-my @GoodSeps = (
- " ",
- "-",
- " \t ",
- "",
- "",
- "_",
- );
-my @BadSeps = (
- "--",
- "__",
- " _",
- "/"
- );
-
-## This used only for making the test script
-sub RandomlyFuzzifyName($;$)
-{
- my $Name = shift;
- my $WantError = shift; ## if true, make an error
-
- my @parts;
- for my $part (split /[-\s_]+/, $Name)
- {
- if (@parts) {
- if ($WantError and rand() < 0.3) {
- push @parts, $BadSeps[rand(@BadSeps)];
- $WantError = 0;
- } else {
- push @parts, $GoodSeps[rand(@GoodSeps)];
- }
- }
- my $switch = int rand(4);
- if ($switch == 0) {
- push @parts, uc $part;
- } elsif ($switch == 1) {
- push @parts, lc $part;
- } elsif ($switch == 2) {
- push @parts, ucfirst $part;
- } else {
- push @parts, $part;
- }
- }
- my $new = join('', @parts);
-
- if ($WantError) {
- if (rand() >= 0.5) {
- $new .= $BadSeps[rand(@BadSeps)];
- } else {
- $new = $BadSeps[rand(@BadSeps)] . $new;
- }
- }
- return $new;
-}
-
-## This used only for making the test script
-sub MakePropTestScript()
-{
- ## this written directly -- it's huge.
- force_unlink ("TestProp.pl");
- if (not open OUT, ">TestProp.pl") {
- die "$0: TestProp.pl: $!\n";
- }
- print OUT <DATA>;
-
- while (my ($Name, $Table) = each %ExactNameToTest)
- {
- GenTests(*OUT, $Name, $Table->ValidCode, $Table->InvalidCode);
- ExpectError(*OUT, uc $Name) if uc $Name ne $Name;
- ExpectError(*OUT, lc $Name) if lc $Name ne $Name;
- }
-
-
- while (my ($Name, $Table) = each %FuzzyNameToTest)
- {
- my $Orig = $CanonicalToOrig{$Name};
- my %Names = (
- $Name => 1,
- $Orig => 1,
- RandomlyFuzzifyName($Orig) => 1
- );
-
- for my $N (keys %Names) {
- GenTests(*OUT, $N, $Table->ValidCode, $Table->InvalidCode);
- }
-
- ExpectError(*OUT, RandomlyFuzzifyName($Orig, 'ERROR'));
- }
-
- print OUT "Finished();\n";
- close OUT;
-}
-
-
-##
-## These are used only in:
-## RegisterFileForName()
-## WriteAllMappings()
-##
-my %Exact; ## will become %utf8::Exact;
-my %Canonical; ## will become %utf8::Canonical;
-my %CaComment; ## Comment for %Canonical entry of same key
-
-##
-## Given info about a name and a datafile that it should be associated with,
-## register that assocation in %Exact and %Canonical.
-sub RegisterFileForName($$$$)
-{
- my $Type = shift;
- my $Name = shift;
- my $IsFuzzy = shift;
- my $filename = shift;
-
- ##
- ## Now in details for the mapping. $Type eq 'Is' has the
- ## Is removed, as it will be removed in utf8_heavy when this
- ## data is being checked. In keeps its "In", but a second
- ## sans-In record is written if it doesn't conflict with
- ## anything already there.
- ##
- if (not $IsFuzzy)
- {
- if ($Type eq 'Is') {
- die "oops[$Name]" if $Exact{$Name};
- $Exact{$Name} = $filename;
- } else {
- die "oops[$Type$Name]" if $Exact{"$Type$Name"};
- $Exact{"$Type$Name"} = $filename;
- $Exact{$Name} = $filename if not $Exact{$Name};
- }
- }
- else
- {
- my $CName = lc $Name;
- if ($Type eq 'Is') {
- die "oops[$CName]" if $Canonical{$CName};
- $Canonical{$CName} = $filename;
- $CaComment{$CName} = $Name if $Name =~ tr/A-Z// >= 2;
- } else {
- die "oops[$Type$CName]" if $Canonical{lc "$Type$CName"};
- $Canonical{lc "$Type$CName"} = $filename;
- $CaComment{lc "$Type$CName"} = "$Type$Name";
- if (not $Canonical{$CName}) {
- $Canonical{$CName} = $filename;
- $CaComment{$CName} = "$Type$Name";
- }
- }
- }
-}
-
-##
-## Writes the info accumulated in
-##
-## %TableInfo;
-## %FuzzyNames;
-## %AliasInfo;
-##
-##
-sub WriteAllMappings()
-{
- my @MAP;
-
- ## 'Is' *MUST* come first, so its names have precidence over 'In's
- for my $Type ('Is', 'In')
- {
- my %RawNameToFile; ## a per-$Type cache
-
- for my $Name (sort {length $a <=> length $b} keys %{$TableInfo{$Type}})
- {
- ## Note: $Name is already canonical
- my $Table = $TableInfo{$Type}->{$Name};
- my $IsFuzzy = $FuzzyNames{$Type}->{$Name};
-
- ## Need an 8.3 safe filename (which means "an 8 safe" $filename)
- my $filename;
- {
- ## 'Is' items lose 'Is' from the basename.
- $filename = $Type eq 'Is' ?
- ($PVA_reverse{sc}{$Name} || $Name) :
- "$Type$Name";
-
- $filename =~ s/[^\w_]+/_/g; # "L&" -> "L_"
- substr($filename, 8) = '' if length($filename) > 8;
-
- ##
- ## Make sure the basename doesn't conflict with something we
- ## might have already written. If we have, say,
- ## InGreekExtended1
- ## InGreekExtended2
- ## they become
- ## InGreekE
- ## InGreek2
- ##
- while (my $num = $BaseNames{lc $filename}++)
- {
- $num++; ## so basenames with numbers start with '2', which
- ## just looks more natural.
- ## Want to append $num, but if it'll make the basename longer
- ## than 8 characters, pre-truncate $filename so that the result
- ## is acceptable.
- my $delta = length($filename) + length($num) - 8;
- if ($delta > 0) {
- substr($filename, -$delta) = $num;
- } else {
- $filename .= $num;
- }
- }
- };
-
- ##
- ## Construct a nice comment to add to the file, and build data
- ## for the "./Properties" file along the way.
- ##
- my $Comment;
- {
- my $Desc = $TableDesc{$Type}->{$Name} || "";
- ## get list of names this table is reference by
- my @Supported = $Name;
- while (my ($Orig, $Alias) = each %{ $AliasInfo{$Type} })
- {
- if ($Orig eq $Name) {
- push @Supported, $Alias;
- }
- }
-
- my $TypeToShow = $Type eq 'Is' ? "" : $Type;
- my $OrigProp;
-
- $Comment = "This file supports:\n";
- for my $N (@Supported)
- {
- my $IsFuzzy = $FuzzyNames{$Type}->{$N};
- my $Prop = "\\p{$TypeToShow$Name}";
- $OrigProp = $Prop if not $OrigProp; #cache for aliases
- if ($IsFuzzy) {
- $Comment .= "\t$Prop (and fuzzy permutations)\n";
- } else {
- $Comment .= "\t$Prop\n";
- }
- my $MyDesc = ($N eq $Name) ? $Desc : "Alias for $OrigProp ($Desc)";
-
- push @MAP, sprintf("%s %-42s %s\n",
- $IsFuzzy ? '*' : ' ', $Prop, $MyDesc);
- }
- if ($Desc) {
- $Comment .= "\nMeaning: $Desc\n";
- }
-
- }
- ##
- ## Okay, write the file...
- ##
- $Table->Write(["lib","gc_sc","$filename.pl"], $Comment);
-
- ## and register it
- $RawNameToFile{$Name} = $filename;
- RegisterFileForName($Type => $Name, $IsFuzzy, $filename);
-
- if ($IsFuzzy)
- {
- my $CName = CanonicalName($Type . '_'. $Name);
- $FuzzyNameToTest{$Name} = $Table if !$FuzzyNameToTest{$Name};
- $FuzzyNameToTest{$CName} = $Table if !$FuzzyNameToTest{$CName};
- } else {
- $ExactNameToTest{$Name} = $Table;
- }
-
- }
-
- ## Register aliase info
- for my $Name (sort {length $a <=> length $b} keys %{$AliasInfo{$Type}})
- {
- my $Alias = $AliasInfo{$Type}->{$Name};
- my $IsFuzzy = $FuzzyNames{$Type}->{$Alias};
- my $filename = $RawNameToFile{$Name};
- die "oops [$Alias]->[$Name]" if not $filename;
- RegisterFileForName($Type => $Alias, $IsFuzzy, $filename);
-
- my $Table = $TableInfo{$Type}->{$Name};
- die "oops" if not $Table;
- if ($IsFuzzy)
- {
- my $CName = CanonicalName($Type .'_'. $Alias);
- $FuzzyNameToTest{$Alias} = $Table if !$FuzzyNameToTest{$Alias};
- $FuzzyNameToTest{$CName} = $Table if !$FuzzyNameToTest{$CName};
- } else {
- $ExactNameToTest{$Alias} = $Table;
- }
- }
- }
-
- ##
- ## Write out the property list
- ##
- {
- my @OUT = (
- "##\n",
- "## This file created by $0\n",
- "## List of built-in \\p{...}/\\P{...} properties.\n",
- "##\n",
- "## '*' means name may be 'fuzzy'\n",
- "##\n\n",
- sort { substr($a,2) cmp substr($b, 2) } @MAP,
- );
- WriteIfChanged('Properties', @OUT);
- }
-
- use Text::Tabs (); ## using this makes the files about half the size
-
- ## Write Exact.pl
- {
- my @OUT = (
- $HEADER,
- "##\n",
- "## Data in this file used by ../utf8_heavy.pl\n",
- "##\n\n",
- "## Mapping from name to filename in ./lib/gc_sc\n",
- "%utf8::Exact = (\n",
- );
-
- $Exact{InGreek} = 'InGreekA'; # this is evil kludge
- for my $Name (sort keys %Exact)
- {
- my $File = $Exact{$Name};
- $Name = $Name =~ m/\W/ ? qq/'$Name'/ : " $Name ";
- my $Text = sprintf("%-15s => %s,\n", $Name, qq/'$File'/);
- push @OUT, Text::Tabs::unexpand($Text);
- }
- push @OUT, ");\n1;\n";
-
- WriteIfChanged('Exact.pl', @OUT);
- }
-
- ## Write Canonical.pl
- {
- my @OUT = (
- $HEADER,
- "##\n",
- "## Data in this file used by ../utf8_heavy.pl\n",
- "##\n\n",
- "## Mapping from lc(canonical name) to filename in ./lib\n",
- "%utf8::Canonical = (\n",
- );
- my $Trail = ""; ## used just to keep the spacing pretty
- for my $Name (sort keys %Canonical)
- {
- my $File = $Canonical{$Name};
- if ($CaComment{$Name}) {
- push @OUT, "\n" if not $Trail;
- push @OUT, " # $CaComment{$Name}\n";
- $Trail = "\n";
- } else {
- $Trail = "";
- }
- $Name = $Name =~ m/\W/ ? qq/'$Name'/ : " $Name ";
- my $Text = sprintf(" %-41s => %s,\n$Trail", $Name, qq/'$File'/);
- push @OUT, Text::Tabs::unexpand($Text);
- }
- push @OUT, ");\n1\n";
- WriteIfChanged('Canonical.pl', @OUT);
- }
-
- MakePropTestScript() if $MakeTestScript;
-}
-
-
-sub SpecialCasing_txt()
-{
- #
- # Read in the special cases.
- #
-
- my %CaseInfo;
-
- if (not open IN, "SpecialCasing.txt") {
- die "$0: SpecialCasing.txt: $!\n";
- }
- while (<IN>) {
- next unless /^[0-9A-Fa-f]+;/;
- s/\#.*//;
- s/\s+$//;
-
- my ($code, $lower, $title, $upper, $condition) = split(/\s*;\s*/);
-
- if ($condition) { # not implemented yet
- print "# SKIPPING $_\n" if $Verbose;
- next;
- }
-
- # Wait until all the special cases have been read since
- # they are not listed in numeric order.
- my $ix = hex($code);
- push @{$CaseInfo{Lower}}, [ $ix, $code, $lower ]
- unless $code eq $lower;
- push @{$CaseInfo{Title}}, [ $ix, $code, $title ]
- unless $code eq $title;
- push @{$CaseInfo{Upper}}, [ $ix, $code, $upper ]
- unless $code eq $upper;
- }
- close IN;
-
- # Now write out the special cases properties in their code point order.
- # Prepend them to the To/{Upper,Lower,Title}.pl.
-
- for my $case (qw(Lower Title Upper))
- {
- my $NormalCase = do "To/$case.pl" || die "$0: $@\n";
-
- my @OUT =
- (
- $HEADER, "\n",
- "# The key UTF-8 _bytes_, the value UTF-8 (speed hack)\n",
- "%utf8::ToSpec$case =\n(\n",
- );
-
- for my $prop (sort { $a->[0] <=> $b->[0] } @{$CaseInfo{$case}}) {
- my ($ix, $code, $to) = @$prop;
- my $tostr =
- join "", map { sprintf "\\x{%s}", $_ } split ' ', $to;
- push @OUT, sprintf qq["%s" => "$tostr",\n], join("", map { sprintf "\\x%02X", $_ } unpack("U0C*", pack("U", $ix)));
- # Remove any single-character mappings for
- # the same character since we are going for
- # the special casing rules.
- $NormalCase =~ s/^$code\t\t\w+\n//m;
- }
- push @OUT, (
- ");\n\n",
- "return <<'END';\n",
- $NormalCase,
- "END\n"
- );
- WriteIfChanged(["To","$case.pl"], @OUT);
- }
-}
-
-#
-# Read in the case foldings.
-#
-# We will do full case folding, C + F + I (see CaseFolding.txt).
-#
-sub CaseFolding_txt()
-{
- if (not open IN, "CaseFolding.txt") {
- die "$0: CaseFolding.txt: $!\n";
- }
-
- my $Fold = Table->New();
- my %Fold;
-
- while (<IN>) {
- # Skip status 'S', simple case folding
- next unless /^([0-9A-Fa-f]+)\s*;\s*([CFI])\s*;\s*([0-9A-Fa-f]+(?: [0-9A-Fa-f]+)*)\s*;/;
-
- my ($code, $status, $fold) = (hex($1), $2, $3);
-
- if ($status eq 'C') { # Common: one-to-one folding
- # No append() since several codes may fold into one.
- $Fold->RawAppendRange($code, $code, $fold);
- } else { # F: full, or I: dotted uppercase I -> dotless lowercase I
- $Fold{$code} = $fold;
- }
- }
- close IN;
-
- $Fold->Write("To/Fold.pl");
-
- #
- # Prepend the special foldings to the common foldings.
- #
- my $CommonFold = do "To/Fold.pl" || die "$0: To/Fold.pl: $!\n";
-
- my @OUT =
- (
- $HEADER, "\n",
- "# The ke UTF-8 _bytes_, the value UTF-8 (speed hack)\n",
- "%utf8::ToSpecFold =\n(\n",
- );
- for my $code (sort { $a <=> $b } keys %Fold) {
- my $foldstr =
- join "", map { sprintf "\\x{%s}", $_ } split ' ', $Fold{$code};
- push @OUT, sprintf qq["%s" => "$foldstr",\n], join("", map { sprintf "\\x%02X", $_ } unpack("U0C*", pack("U", $code)));
- }
- push @OUT, (
- ");\n\n",
- "return <<'END';\n",
- $CommonFold,
- "END\n",
- );
-
- WriteIfChanged(["To","Fold.pl"], @OUT);
-}
-
-## Do it....
-
-Build_Aliases();
-UnicodeData_Txt();
-PropList_txt();
-
-Scripts_txt();
-Blocks_txt();
-
-WriteAllMappings();
-
-LineBreak_Txt();
-ArabicShaping_txt();
-EastAsianWidth_txt();
-HangulSyllableType_txt();
-Jamo_txt();
-SpecialCasing_txt();
-CaseFolding_txt();
-
-if ( $FileList and $MakeList ) {
-
- print "Updating '$FileList'\n"
- if ($Verbose);
-
- open my $ofh,">",$FileList
- or die "Can't write to '$FileList':$!";
- print $ofh <<"EOFHEADER";
-#
-# mktables.lst -- File list for mktables.
-#
-# Autogenerated on @{[scalar localtime]}
-#
-# - First section is input files
-# (mktables itself is automatically included)
-# - Section seperator is /^=+\$/
-# - Second section is a list of output files.
-# - Lines matching /^\\s*#/ are treated as comments
-# which along with blank lines are ignored.
-#
-
-# Input files:
-
-EOFHEADER
- my @input=("version",glob('*.txt'));
- print $ofh "$_\n" for
- @input,
- "\n=================================\n",
- "# Output files:\n",
- # special files
- "Properties";
-
-
- require File::Find;
- my $count=0;
- File::Find::find({
- no_chdir=>1,
- wanted=>sub {
- if (/\.pl$/) {
- s!^\./!!;
- print $ofh "$_\n";
- $count++;
- }
- },
- },".");
-
- print $ofh "\n# ",scalar(@input)," input files\n",
- "# ",scalar($count+1)," output files\n\n",
- "# End list\n";
- close $ofh
- or warn "Failed to close $ofh: $!";
-
- print "Filelist has ",scalar(@input)," input files and ",
- scalar($count+1)," output files\n"
- if $Verbose;
-}
-print "All done\n" if $Verbose;
-exit(0);
-
-## TRAILING CODE IS USED BY MakePropTestScript()
-__DATA__
-use strict;
-use warnings;
-
-my $Tests = 0;
-my $Fails = 0;
-
-sub Expect($$$)
-{
- my $Expect = shift;
- my $String = shift;
- my $Regex = shift;
- my $Line = (caller)[2];
-
- $Tests++;
- my $RegObj;
- my $result = eval {
- $RegObj = qr/$Regex/;
- $String =~ $RegObj ? 1 : 0
- };
-
- if (not defined $result) {
- print "couldn't compile /$Regex/ on $0 line $Line: $@\n";
- $Fails++;
- } elsif ($result ^ $Expect) {
- print "bad result (expected $Expect) on $0 line $Line: $@\n";
- $Fails++;
- }
-}
-
-sub Error($)
-{
- my $Regex = shift;
- $Tests++;
- if (eval { 'x' =~ qr/$Regex/; 1 }) {
- $Fails++;
- my $Line = (caller)[2];
- print "expected error for /$Regex/ on $0 line $Line: $@\n";
- }
-}
-
-sub Finished()
-{
- if ($Fails == 0) {
- print "All $Tests tests passed.\n";
- exit(0);
- } else {
- print "$Tests tests, $Fails failed!\n";
- exit(-1);
- }
-}
diff --git a/Master/tlpkg/tlperl/lib/unicore/mktables.lst b/Master/tlpkg/tlperl/lib/unicore/mktables.lst
deleted file mode 100644
index c3b6dc8b32b..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/mktables.lst
+++ /dev/null
@@ -1,505 +0,0 @@
-#
-# mktables.lst -- File list for mktables.
-#
-# Autogenerated on Sun Apr 24 21:25:22 2005
-#
-# - First section is input files
-# (mktables itself is automatically included)
-# - Section seperator is /^=+$/
-# - Second section is a list of output files.
-# - Lines matching /^\s*#/ are treated as comments
-# which along with blank lines are ignored.
-#
-
-# Input files:
-
-version
-ArabicShaping.txt
-BidiMirroring.txt
-Blocks.txt
-CaseFolding.txt
-CompositionExclusions.txt
-EastAsianWidth.txt
-HangulSyllableType.txt
-Index.txt
-Jamo.txt
-LineBreak.txt
-NamedSequences.txt
-NamesList.txt
-NormalizationCorrections.txt
-PropertyAliases.txt
-PropList.txt
-PropValueAliases.txt
-ReadMe.txt
-Scripts.txt
-SpecialCasing.txt
-StandardizedVariants.txt
-UnicodeData.txt
-
-=================================
-
-# Output files:
-
-Properties
-Canonical.pl
-CombiningClass.pl
-Decomposition.pl
-Exact.pl
-Name.pl
-PVA.pl
-lib/bc/AL.pl
-lib/bc/AN.pl
-lib/bc/B.pl
-lib/bc/BN.pl
-lib/bc/CS.pl
-lib/bc/EN.pl
-lib/bc/ES.pl
-lib/bc/ET.pl
-lib/bc/L.pl
-lib/bc/LRE.pl
-lib/bc/LRO.pl
-lib/bc/NSM.pl
-lib/bc/ON.pl
-lib/bc/PDF.pl
-lib/bc/R.pl
-lib/bc/RLE.pl
-lib/bc/RLO.pl
-lib/bc/S.pl
-lib/bc/WS.pl
-lib/ccc/A.pl
-lib/ccc/AL.pl
-lib/ccc/AR.pl
-lib/ccc/ATAR.pl
-lib/ccc/ATB.pl
-lib/ccc/ATBL.pl
-lib/ccc/B.pl
-lib/ccc/BL.pl
-lib/ccc/BR.pl
-lib/ccc/DA.pl
-lib/ccc/DB.pl
-lib/ccc/IS.pl
-lib/ccc/KV.pl
-lib/ccc/L.pl
-lib/ccc/NK.pl
-lib/ccc/NR.pl
-lib/ccc/OV.pl
-lib/ccc/R.pl
-lib/ccc/VR.pl
-lib/dt/can.pl
-lib/dt/com.pl
-lib/dt/enc.pl
-lib/dt/fin.pl
-lib/dt/font.pl
-lib/dt/fra.pl
-lib/dt/init.pl
-lib/dt/iso.pl
-lib/dt/med.pl
-lib/dt/nar.pl
-lib/dt/nb.pl
-lib/dt/sml.pl
-lib/dt/sqr.pl
-lib/dt/sub.pl
-lib/dt/sup.pl
-lib/dt/vert.pl
-lib/dt/wide.pl
-lib/ea/A.pl
-lib/ea/F.pl
-lib/ea/H.pl
-lib/ea/N.pl
-lib/ea/Na.pl
-lib/ea/W.pl
-lib/gc_sc/AHex.pl
-lib/gc_sc/Alnum.pl
-lib/gc_sc/Alpha.pl
-lib/gc_sc/Alphabet.pl
-lib/gc_sc/Any.pl
-lib/gc_sc/Arab.pl
-lib/gc_sc/Armn.pl
-lib/gc_sc/ASCII.pl
-lib/gc_sc/AsciiHex.pl
-lib/gc_sc/Assigned.pl
-lib/gc_sc/Beng.pl
-lib/gc_sc/BidiC.pl
-lib/gc_sc/BidiCont.pl
-lib/gc_sc/Blank.pl
-lib/gc_sc/Bopo.pl
-lib/gc_sc/Brai.pl
-lib/gc_sc/Bugi.pl
-lib/gc_sc/Buhd.pl
-lib/gc_sc/C.pl
-lib/gc_sc/Canadian.pl
-lib/gc_sc/Cc.pl
-lib/gc_sc/Cf.pl
-lib/gc_sc/Cher.pl
-lib/gc_sc/Cn.pl
-lib/gc_sc/Cntrl.pl
-lib/gc_sc/Co.pl
-lib/gc_sc/Copt.pl
-lib/gc_sc/Cprt.pl
-lib/gc_sc/Cs.pl
-lib/gc_sc/Cyrl.pl
-lib/gc_sc/Dash.pl
-lib/gc_sc/Dash2.pl
-lib/gc_sc/Dep.pl
-lib/gc_sc/Deprecat.pl
-lib/gc_sc/Deva.pl
-lib/gc_sc/Dia.pl
-lib/gc_sc/Diacriti.pl
-lib/gc_sc/Digit.pl
-lib/gc_sc/Dsrt.pl
-lib/gc_sc/Ethi.pl
-lib/gc_sc/Ext.pl
-lib/gc_sc/Extender.pl
-lib/gc_sc/Geor.pl
-lib/gc_sc/Glag.pl
-lib/gc_sc/Goth.pl
-lib/gc_sc/Graph.pl
-lib/gc_sc/Grapheme.pl
-lib/gc_sc/Grek.pl
-lib/gc_sc/GrLink.pl
-lib/gc_sc/Gujr.pl
-lib/gc_sc/Guru.pl
-lib/gc_sc/Hang.pl
-lib/gc_sc/Hani.pl
-lib/gc_sc/Hano.pl
-lib/gc_sc/Hebr.pl
-lib/gc_sc/Hex.pl
-lib/gc_sc/HexDigit.pl
-lib/gc_sc/Hira.pl
-lib/gc_sc/Hyphen.pl
-lib/gc_sc/Hyphen2.pl
-lib/gc_sc/IdContin.pl
-lib/gc_sc/Ideo.pl
-lib/gc_sc/Ideograp.pl
-lib/gc_sc/IDSB.pl
-lib/gc_sc/IdsBinar.pl
-lib/gc_sc/IDST.pl
-lib/gc_sc/IdStart.pl
-lib/gc_sc/IdsTrina.pl
-lib/gc_sc/InAegean.pl
-lib/gc_sc/InAlphab.pl
-lib/gc_sc/InAncie2.pl
-lib/gc_sc/InAncien.pl
-lib/gc_sc/InArabi2.pl
-lib/gc_sc/InArabi3.pl
-lib/gc_sc/InArabi4.pl
-lib/gc_sc/InArabic.pl
-lib/gc_sc/InArmeni.pl
-lib/gc_sc/InArrows.pl
-lib/gc_sc/InBasicL.pl
-lib/gc_sc/InBengal.pl
-lib/gc_sc/InBlockE.pl
-lib/gc_sc/InBopom2.pl
-lib/gc_sc/InBopomo.pl
-lib/gc_sc/InBoxDra.pl
-lib/gc_sc/InBraill.pl
-lib/gc_sc/InBugine.pl
-lib/gc_sc/InBuhid.pl
-lib/gc_sc/InByzant.pl
-lib/gc_sc/InCherok.pl
-lib/gc_sc/InCjkCo2.pl
-lib/gc_sc/InCjkCo3.pl
-lib/gc_sc/InCjkCo4.pl
-lib/gc_sc/InCjkCom.pl
-lib/gc_sc/InCjkRad.pl
-lib/gc_sc/InCjkStr.pl
-lib/gc_sc/InCjkSym.pl
-lib/gc_sc/InCjkUn2.pl
-lib/gc_sc/InCjkUn3.pl
-lib/gc_sc/InCjkUni.pl
-lib/gc_sc/InCombi2.pl
-lib/gc_sc/InCombi3.pl
-lib/gc_sc/InCombi4.pl
-lib/gc_sc/InCombin.pl
-lib/gc_sc/InContro.pl
-lib/gc_sc/InCoptic.pl
-lib/gc_sc/InCurren.pl
-lib/gc_sc/InCyprio.pl
-lib/gc_sc/InCyril2.pl
-lib/gc_sc/InCyrill.pl
-lib/gc_sc/InDesere.pl
-lib/gc_sc/InDevana.pl
-lib/gc_sc/InDingba.pl
-lib/gc_sc/InEnclo2.pl
-lib/gc_sc/InEnclos.pl
-lib/gc_sc/InEthio2.pl
-lib/gc_sc/InEthio3.pl
-lib/gc_sc/InEthiop.pl
-lib/gc_sc/InGenera.pl
-lib/gc_sc/InGeomet.pl
-lib/gc_sc/InGeorg2.pl
-lib/gc_sc/InGeorgi.pl
-lib/gc_sc/InGlagol.pl
-lib/gc_sc/InGothic.pl
-lib/gc_sc/InGreekA.pl
-lib/gc_sc/InGreekE.pl
-lib/gc_sc/InGujara.pl
-lib/gc_sc/InGurmuk.pl
-lib/gc_sc/InHalfwi.pl
-lib/gc_sc/InHangu2.pl
-lib/gc_sc/InHangu3.pl
-lib/gc_sc/InHangul.pl
-lib/gc_sc/InHanuno.pl
-lib/gc_sc/InHebrew.pl
-lib/gc_sc/InHighPr.pl
-lib/gc_sc/InHighSu.pl
-lib/gc_sc/InHiraga.pl
-lib/gc_sc/InIdeogr.pl
-lib/gc_sc/InIpaExt.pl
-lib/gc_sc/InKanbun.pl
-lib/gc_sc/InKangxi.pl
-lib/gc_sc/InKannad.pl
-lib/gc_sc/InKatak2.pl
-lib/gc_sc/InKataka.pl
-lib/gc_sc/InKharos.pl
-lib/gc_sc/InKhmer.pl
-lib/gc_sc/InKhmerS.pl
-lib/gc_sc/InLao.pl
-lib/gc_sc/InLatin1.pl
-lib/gc_sc/InLatin2.pl
-lib/gc_sc/InLatin3.pl
-lib/gc_sc/InLatinE.pl
-lib/gc_sc/InLetter.pl
-lib/gc_sc/InLimbu.pl
-lib/gc_sc/InLinea2.pl
-lib/gc_sc/InLinear.pl
-lib/gc_sc/InLowSur.pl
-lib/gc_sc/InMalaya.pl
-lib/gc_sc/InMathe2.pl
-lib/gc_sc/InMathem.pl
-lib/gc_sc/InMisce2.pl
-lib/gc_sc/InMisce3.pl
-lib/gc_sc/InMisce4.pl
-lib/gc_sc/InMisce5.pl
-lib/gc_sc/InMiscel.pl
-lib/gc_sc/InModifi.pl
-lib/gc_sc/InMongol.pl
-lib/gc_sc/InMusica.pl
-lib/gc_sc/InMyanma.pl
-lib/gc_sc/InNewTai.pl
-lib/gc_sc/InNumber.pl
-lib/gc_sc/InOgham.pl
-lib/gc_sc/InOldIta.pl
-lib/gc_sc/InOldPer.pl
-lib/gc_sc/InOptica.pl
-lib/gc_sc/InOriya.pl
-lib/gc_sc/InOsmany.pl
-lib/gc_sc/InPhone2.pl
-lib/gc_sc/InPhonet.pl
-lib/gc_sc/InPrivat.pl
-lib/gc_sc/InRunic.pl
-lib/gc_sc/InShavia.pl
-lib/gc_sc/InSinhal.pl
-lib/gc_sc/InSmallF.pl
-lib/gc_sc/InSpacin.pl
-lib/gc_sc/InSpecia.pl
-lib/gc_sc/InSupers.pl
-lib/gc_sc/InSuppl2.pl
-lib/gc_sc/InSuppl3.pl
-lib/gc_sc/InSuppl4.pl
-lib/gc_sc/InSuppl5.pl
-lib/gc_sc/InSuppl6.pl
-lib/gc_sc/InSupple.pl
-lib/gc_sc/InSyloti.pl
-lib/gc_sc/InSyriac.pl
-lib/gc_sc/InTagalo.pl
-lib/gc_sc/InTagban.pl
-lib/gc_sc/InTags.pl
-lib/gc_sc/InTaiLe.pl
-lib/gc_sc/InTaiXua.pl
-lib/gc_sc/InTamil.pl
-lib/gc_sc/InTelugu.pl
-lib/gc_sc/InThaana.pl
-lib/gc_sc/InThai.pl
-lib/gc_sc/InTibeta.pl
-lib/gc_sc/InTifina.pl
-lib/gc_sc/InUgarit.pl
-lib/gc_sc/InUnifie.pl
-lib/gc_sc/InVaria2.pl
-lib/gc_sc/InVariat.pl
-lib/gc_sc/InVertic.pl
-lib/gc_sc/InYijing.pl
-lib/gc_sc/InYiRadi.pl
-lib/gc_sc/InYiSyll.pl
-lib/gc_sc/JoinC.pl
-lib/gc_sc/JoinCont.pl
-lib/gc_sc/Kana.pl
-lib/gc_sc/Khar.pl
-lib/gc_sc/Khmr.pl
-lib/gc_sc/Knda.pl
-lib/gc_sc/L.pl
-lib/gc_sc/Laoo.pl
-lib/gc_sc/Latn.pl
-lib/gc_sc/LC.pl
-lib/gc_sc/Limb.pl
-lib/gc_sc/LinearB.pl
-lib/gc_sc/Ll.pl
-lib/gc_sc/Lm.pl
-lib/gc_sc/Lo.pl
-lib/gc_sc/LOE.pl
-lib/gc_sc/LogicalO.pl
-lib/gc_sc/Lower.pl
-lib/gc_sc/Lowercas.pl
-lib/gc_sc/Lt.pl
-lib/gc_sc/Lu.pl
-lib/gc_sc/M.pl
-lib/gc_sc/Math.pl
-lib/gc_sc/Mc.pl
-lib/gc_sc/Me.pl
-lib/gc_sc/Mlym.pl
-lib/gc_sc/Mn.pl
-lib/gc_sc/Mong.pl
-lib/gc_sc/Mymr.pl
-lib/gc_sc/N.pl
-lib/gc_sc/NChar.pl
-lib/gc_sc/Nd.pl
-lib/gc_sc/NewTaiLu.pl
-lib/gc_sc/Nl.pl
-lib/gc_sc/No.pl
-lib/gc_sc/Nonchara.pl
-lib/gc_sc/OAlpha.pl
-lib/gc_sc/ODI.pl
-lib/gc_sc/Ogam.pl
-lib/gc_sc/OGrExt.pl
-lib/gc_sc/OIDC.pl
-lib/gc_sc/OIDS.pl
-lib/gc_sc/OldItali.pl
-lib/gc_sc/OldPersi.pl
-lib/gc_sc/OLower.pl
-lib/gc_sc/OMath.pl
-lib/gc_sc/Orya.pl
-lib/gc_sc/Osma.pl
-lib/gc_sc/OtherAlp.pl
-lib/gc_sc/OtherDef.pl
-lib/gc_sc/OtherGra.pl
-lib/gc_sc/OtherIdC.pl
-lib/gc_sc/OtherIdS.pl
-lib/gc_sc/OtherLow.pl
-lib/gc_sc/OtherMat.pl
-lib/gc_sc/OtherUpp.pl
-lib/gc_sc/OUpper.pl
-lib/gc_sc/P.pl
-lib/gc_sc/PatSyn.pl
-lib/gc_sc/PatternS.pl
-lib/gc_sc/PatternW.pl
-lib/gc_sc/PatWS.pl
-lib/gc_sc/Pc.pl
-lib/gc_sc/Pd.pl
-lib/gc_sc/Pe.pl
-lib/gc_sc/Pf.pl
-lib/gc_sc/Pi.pl
-lib/gc_sc/Po.pl
-lib/gc_sc/Print.pl
-lib/gc_sc/Ps.pl
-lib/gc_sc/Punct.pl
-lib/gc_sc/Qaai.pl
-lib/gc_sc/QMark.pl
-lib/gc_sc/Quotatio.pl
-lib/gc_sc/Radical.pl
-lib/gc_sc/Radical2.pl
-lib/gc_sc/Runr.pl
-lib/gc_sc/S.pl
-lib/gc_sc/Sc.pl
-lib/gc_sc/SD.pl
-lib/gc_sc/Shaw.pl
-lib/gc_sc/Sinh.pl
-lib/gc_sc/Sk.pl
-lib/gc_sc/Sm.pl
-lib/gc_sc/So.pl
-lib/gc_sc/SoftDott.pl
-lib/gc_sc/Space.pl
-lib/gc_sc/SpacePer.pl
-lib/gc_sc/STerm.pl
-lib/gc_sc/Sterm2.pl
-lib/gc_sc/SylotiNa.pl
-lib/gc_sc/Syrc.pl
-lib/gc_sc/Tagb.pl
-lib/gc_sc/TaiLe.pl
-lib/gc_sc/Taml.pl
-lib/gc_sc/Telu.pl
-lib/gc_sc/Term.pl
-lib/gc_sc/Terminal.pl
-lib/gc_sc/Tfng.pl
-lib/gc_sc/Tglg.pl
-lib/gc_sc/Thaa.pl
-lib/gc_sc/Thai.pl
-lib/gc_sc/Tibt.pl
-lib/gc_sc/Title.pl
-lib/gc_sc/Ugar.pl
-lib/gc_sc/UIdeo.pl
-lib/gc_sc/UnifiedI.pl
-lib/gc_sc/Upper.pl
-lib/gc_sc/Uppercas.pl
-lib/gc_sc/Variatio.pl
-lib/gc_sc/VS.pl
-lib/gc_sc/WhiteSpa.pl
-lib/gc_sc/Word.pl
-lib/gc_sc/WSpace.pl
-lib/gc_sc/XDigit.pl
-lib/gc_sc/Yiii.pl
-lib/gc_sc/Z.pl
-lib/gc_sc/Zl.pl
-lib/gc_sc/Zp.pl
-lib/gc_sc/Zs.pl
-lib/gc_sc/Zyyy.pl
-lib/gc_sc/_CanonDC.pl
-lib/gc_sc/_CaseIgn.pl
-lib/gc_sc/_CombAbo.pl
-lib/hst/L.pl
-lib/hst/LV.pl
-lib/hst/LVT.pl
-lib/hst/T.pl
-lib/hst/V.pl
-lib/jt/C.pl
-lib/jt/D.pl
-lib/jt/R.pl
-lib/jt/U.pl
-lib/lb/AI.pl
-lib/lb/AL.pl
-lib/lb/B2.pl
-lib/lb/BA.pl
-lib/lb/BB.pl
-lib/lb/BK.pl
-lib/lb/CB.pl
-lib/lb/CL.pl
-lib/lb/CM.pl
-lib/lb/CR.pl
-lib/lb/EX.pl
-lib/lb/GL.pl
-lib/lb/H2.pl
-lib/lb/H3.pl
-lib/lb/HY.pl
-lib/lb/ID.pl
-lib/lb/IN.pl
-lib/lb/IS.pl
-lib/lb/JL.pl
-lib/lb/JT.pl
-lib/lb/JV.pl
-lib/lb/LF.pl
-lib/lb/NL.pl
-lib/lb/NS.pl
-lib/lb/NU.pl
-lib/lb/OP.pl
-lib/lb/PO.pl
-lib/lb/PR.pl
-lib/lb/QU.pl
-lib/lb/SA.pl
-lib/lb/SG.pl
-lib/lb/SP.pl
-lib/lb/SY.pl
-lib/lb/WJ.pl
-lib/lb/XX.pl
-lib/lb/ZW.pl
-lib/nt/De.pl
-lib/nt/Di.pl
-lib/nt/Nu.pl
-To/Digit.pl
-To/Fold.pl
-To/Lower.pl
-To/Title.pl
-To/Upper.pl
-
-# 22 input files
-# 458 output files
-
-# End list
diff --git a/Master/tlpkg/tlperl/lib/unicore/version b/Master/tlpkg/tlperl/lib/unicore/version
deleted file mode 100644
index ee74734aa22..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/version
+++ /dev/null
@@ -1 +0,0 @@
-4.1.0
diff --git a/Master/tlpkg/tlperl/lib/utf8.pm b/Master/tlpkg/tlperl/lib/utf8.pm
deleted file mode 100644
index 56c991bef9a..00000000000
--- a/Master/tlpkg/tlperl/lib/utf8.pm
+++ /dev/null
@@ -1,214 +0,0 @@
-package utf8;
-
-$utf8::hint_bits = 0x00800000;
-
-our $VERSION = '1.06';
-
-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 if defined &$AUTOLOAD;
- require Carp;
- Carp::croak("Undefined subroutine $AUTOLOAD called");
-}
-
-1;
-__END__
-
-=head1 NAME
-
-utf8 - Perl pragma to enable/disable UTF-8 (or UTF-EBCDIC) in source code
-
-=head1 SYNOPSIS
-
- use utf8;
- no utf8;
-
- # Convert a Perl scalar to/from UTF-8.
- $num_octets = utf8::upgrade($string);
- $success = utf8::downgrade($string[, FAIL_OK]);
-
- # Change the native bytes of a Perl scalar to/from UTF-8 bytes.
- utf8::encode($string);
- utf8::decode($string);
-
- $flag = utf8::is_utf8(STRING); # since Perl 5.8.1
- $flag = utf8::valid(STRING);
-
-=head1 DESCRIPTION
-
-The C<use utf8> pragma tells the Perl parser to allow UTF-8 in the
-program text in the current lexical scope (allow UTF-EBCDIC on EBCDIC based
-platforms). 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.
-
-B<Do not use this pragma for anything else than telling Perl that your
-script is written in UTF-8.> The utility functions described below are
-useful for their own purposes, but they are not really part of the
-"pragmatic" effect.
-
-Until UTF-8 becomes the default format for source text, either this
-pragma or the L<encoding> 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. For convenience in what
-follows the term I<UTF-X> is used to refer to UTF-8 on ASCII and ISO
-Latin based platforms and UTF-EBCDIC on EBCDIC based platforms.
-
-See also the effects of the C<-C> switch and its cousin, the
-C<$ENV{PERL_UNICODE}>, in L<perlrun>.
-
-Enabling the C<utf8> pragma has the following effect:
-
-=over 4
-
-=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 identifier names, string constants, and constant
-regular expression patterns.
-
-On EBCDIC platforms characters in the Latin 1 character set are
-treated as being part of a literal UTF-EBCDIC character.
-
-=back
-
-Note that if you have bytes with the eighth bit on in your script
-(for example embedded Latin-1 in your string literals), C<use utf8>
-will be unhappy since the bytes are most probably not well-formed
-UTF-8. If you want to have such bytes and use utf8, you can disable
-utf8 until the end the block (or file, if at top level) by C<no utf8;>.
-
-If you want to automatically upgrade your 8-bit legacy bytes to UTF-8,
-use the L<encoding> pragma instead of this pragma. For example, if
-you want to implicitly upgrade your ISO 8859-1 (Latin-1) bytes to UTF-8
-as used in e.g. C<chr()> and C<\x{...}>, try this:
-
- use encoding "latin-1";
- my $c = chr(0xc4);
- my $x = "\x{c5}";
-
-In case you are wondering: yes, C<use encoding 'utf8';> works much
-the same as C<use utf8;>.
-
-=head2 Utility functions
-
-The following functions are defined in the C<utf8::> package by the
-Perl core. You do not need to say C<use utf8> to use these and in fact
-you should not say that unless you really want to have UTF-8 source code.
-
-=over 4
-
-=item * $num_octets = utf8::upgrade($string)
-
-Converts in-place the octet sequence in the native encoding
-(Latin-1 or EBCDIC) to the equivalent character sequence in I<UTF-X>.
-I<$string> already encoded as characters does no harm.
-Returns the number of octets necessary to represent the string as I<UTF-X>.
-Can be used to make sure that the UTF-8 flag is on,
-so that C<\w> or C<lc()> work as Unicode on strings
-containing characters in the range 0x80-0xFF (on ASCII and
-derivatives).
-
-B<Note that this function does not handle arbitrary encodings.>
-Therefore I<Encode.pm> is recommended for the general purposes.
-
-Affected by the encoding pragma.
-
-=item * $success = utf8::downgrade($string[, FAIL_OK])
-
-Converts in-place the character sequence in I<UTF-X>
-to the equivalent octet sequence in the native encoding (Latin-1 or EBCDIC).
-I<$string> already encoded as octets does no harm.
-Returns true on success. On failure dies or, if the value of
-C<FAIL_OK> is true, returns false.
-Can be used to make sure that the UTF-8 flag is off,
-e.g. when you want to make sure that the substr() or length() function
-works with the usually faster byte algorithm.
-
-B<Note that this function does not handle arbitrary encodings.>
-Therefore I<Encode.pm> is recommended for the general purposes.
-
-B<Not> affected by the encoding pragma.
-
-B<NOTE:> this function is experimental and may change
-or be removed without notice.
-
-=item * utf8::encode($string)
-
-Converts in-place the character sequence to the corresponding octet sequence
-in I<UTF-X>. The UTF-8 flag is turned off. Returns nothing.
-
-B<Note that this function does not handle arbitrary encodings.>
-Therefore I<Encode.pm> is recommended for the general purposes.
-
-=item * utf8::decode($string)
-
-Attempts to convert in-place the octet sequence in I<UTF-X>
-to the corresponding character sequence. The UTF-8 flag is turned on
-only if the source string contains multiple-byte I<UTF-X> characters.
-If I<$string> is invalid as I<UTF-X>, returns false; otherwise returns true.
-
-B<Note that this function does not handle arbitrary encodings.>
-Therefore I<Encode.pm> is recommended for the general purposes.
-
-B<NOTE:> this function is experimental and may change
-or be removed without notice.
-
-=item * $flag = utf8::is_utf8(STRING)
-
-(Since Perl 5.8.1) Test whether STRING is in UTF-8. Functionally
-the same as Encode::is_utf8().
-
-=item * $flag = utf8::valid(STRING)
-
-[INTERNAL] Test whether STRING is in a consistent state regarding
-UTF-8. Will return true is well-formed UTF-8 and has the UTF-8 flag
-on B<or> if string is held as bytes (both these states are 'consistent').
-Main reason for this routine is to allow Perl's testsuite to check
-that operations have left strings in a consistent state. You most
-probably want to use utf8::is_utf8() instead.
-
-=back
-
-C<utf8::encode> is like C<utf8::upgrade>, but the UTF8 flag is
-cleared. See L<perlunicode> for more on the UTF8 flag and the C API
-functions C<sv_utf8_upgrade>, C<sv_utf8_downgrade>, C<sv_utf8_encode>,
-and C<sv_utf8_decode>, which are wrapped by the Perl functions
-C<utf8::upgrade>, C<utf8::downgrade>, C<utf8::encode> and
-C<utf8::decode>. Note that in the Perl 5.8.0 and 5.8.1 implementation
-the functions utf8::is_utf8, utf8::valid, utf8::encode, utf8::decode,
-utf8::upgrade, and utf8::downgrade are always available, without a
-C<require utf8> statement-- this may change in future releases.
-
-=head1 BUGS
-
-One can have Unicode in identifier names, but not in package/class or
-subroutine names. While some limited functionality towards this does
-exist as of Perl 5.8.0, that is more accidental than designed; use of
-Unicode for the said purposes is unsupported.
-
-One reason of this unfinishedness is its (currently) inherent
-unportability: since both package names and subroutine names may need
-to be mapped to file and directory names, the Unicode capability of
-the filesystem becomes important-- and there unfortunately aren't
-portable answers.
-
-=head1 SEE ALSO
-
-L<perluniintro>, L<encoding>, L<perlrun>, L<bytes>, L<perlunicode>
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/utf8_heavy.pl b/Master/tlpkg/tlperl/lib/utf8_heavy.pl
deleted file mode 100644
index b6fdeb997b3..00000000000
--- a/Master/tlpkg/tlperl/lib/utf8_heavy.pl
+++ /dev/null
@@ -1,412 +0,0 @@
-package utf8;
-use strict;
-use warnings;
-
-sub DEBUG () { 0 }
-
-sub DESTROY {}
-
-my %Cache;
-
-our (%PropertyAlias, %PA_reverse, %PropValueAlias, %PVA_reverse, %PVA_abbr_map);
-
-sub croak { require Carp; Carp::croak(@_) }
-
-##
-## "SWASH" == "SWATCH HASH". A "swatch" is a swatch of the Unicode landscape.
-## It's a data structure that encodes a set of Unicode characters.
-##
-
-sub SWASHNEW {
- my ($class, $type, $list, $minbits, $none) = @_;
- local $^D = 0 if $^D;
-
- print STDERR "SWASHNEW @_\n" if DEBUG;
-
- ##
- ## Get the list of codepoints for the type.
- ## Called from utf8.c
- ##
- ## Given a $type, our goal is to fill $list with the set of codepoint
- ## ranges.
- ##
- ## To make the parsing of $type clear, this code takes the a rather
- ## unorthodox approach of last'ing out of the block once we have the
- ## info we need. Were this to be a subroutine, the 'last' would just
- ## be a 'return'.
- ##
- my $file; ## file to load data from, and also part of the %Cache key.
- my $ListSorted = 0;
-
- if ($type)
- {
- $type =~ s/^\s+//;
- $type =~ s/\s+$//;
-
- print "type = $type\n" if DEBUG;
-
- GETFILE:
- {
- ##
- ## It could be a user-defined property.
- ##
-
- my $caller1 = $type =~ s/(.+)::// ? $1 : caller(1);
-
- if (defined $caller1 && $type =~ /^(?:\w+)$/) {
- my $prop = "${caller1}::$type";
- if (exists &{$prop}) {
- no strict 'refs';
-
- $list = &{$prop};
- last GETFILE;
- }
- }
-
- my $wasIs;
-
- ($wasIs = $type =~ s/^Is(?:\s+|[-_])?//i)
- or
- $type =~ s/^(?:(?:General(?:\s+|_)?)?Category|gc)\s*[:=]\s*//i
- or
- $type =~ s/^(?:Script|sc)\s*[:=]\s*//i
- or
- $type =~ s/^Block\s*[:=]\s*/In/i;
-
-
- ##
- ## See if it's in some enumeration.
- ##
- require "unicore/PVA.pl";
- if ($type =~ /^([\w\s]+)[:=]\s*(.*)/) {
- my ($enum, $val) = (lc $1, lc $2);
- $enum =~ tr/ _-//d;
- $val =~ tr/ _-//d;
-
- my $pa = $PropertyAlias{$enum} ? $enum : $PA_reverse{$enum};
- my $f = $PropValueAlias{$pa}{$val} ? $val : $PVA_reverse{$pa}{lc $val};
-
- if ($pa and $f) {
- $pa = "gc_sc" if $pa eq "gc" or $pa eq "sc";
- $file = "unicore/lib/$pa/$PVA_abbr_map{$pa}{lc $f}.pl";
- last GETFILE;
- }
- }
- else {
- my $t = lc $type;
- $t =~ tr/ _-//d;
-
- if ($PropValueAlias{gc}{$t} or $PropValueAlias{sc}{$t}) {
- $file = "unicore/lib/gc_sc/$PVA_abbr_map{gc_sc}{$t}.pl";
- last GETFILE;
- }
- }
-
- ##
- ## See if it's in the direct mapping table.
- ##
- require "unicore/Exact.pl";
- if (my $base = $utf8::Exact{$type}) {
- $file = "unicore/lib/gc_sc/$base.pl";
- last GETFILE;
- }
-
- ##
- ## If not there exactly, try the canonical form. The canonical
- ## form is lowercased, with any separators (\s+|[-_]) removed.
- ##
- my $canonical = lc $type;
- $canonical =~ s/(?<=[a-z\d])(?:\s+|[-_])(?=[a-z\d])//g;
- print "canonical = $canonical\n" if DEBUG;
-
- require "unicore/Canonical.pl";
- if (my $base = ($utf8::Canonical{$canonical} || $utf8::Canonical{ lc $utf8::PropertyAlias{$canonical} })) {
- $file = "unicore/lib/gc_sc/$base.pl";
- last GETFILE;
- }
-
- ##
- ## See if it's a user-level "To".
- ##
-
- my $caller0 = caller(0);
-
- if (defined $caller0 && $type =~ /^To(?:\w+)$/) {
- my $map = $caller0 . "::" . $type;
-
- if (exists &{$map}) {
- no strict 'refs';
-
- $list = &{$map};
- last GETFILE;
- }
- }
-
- ##
- ## Last attempt -- see if it's a standard "To" name
- ## (e.g. "ToLower") ToTitle is used by ucfirst().
- ## The user-level way to access ToDigit() and ToFold()
- ## is to use Unicode::UCD.
- ##
- if ($type =~ /^To(Digit|Fold|Lower|Title|Upper)$/)
- {
- $file = "unicore/To/$1.pl";
- ## would like to test to see if $file actually exists....
- last GETFILE;
- }
-
- ##
- ## If we reach this line, it's because we couldn't figure
- ## out what to do with $type. Ouch.
- ##
-
- return $type;
- }
-
- if (defined $file) {
- print "found it (file='$file')\n" if DEBUG;
-
- ##
- ## If we reach here, it was due to a 'last GETFILE' above
- ## (exception: user-defined properties and mappings), so we
- ## have a filename, so now we load it if we haven't already.
- ## If we have, return the cached results. The cache key is the
- ## file to load.
- ##
- if ($Cache{$file} and ref($Cache{$file}) eq $class)
- {
- print "Returning cached '$file' for \\p{$type}\n" if DEBUG;
- return $Cache{$class, $file};
- }
-
- $list = do $file;
- }
-
- $ListSorted = 1; ## we know that these lists are sorted
- }
-
- my $extras;
- my $bits = 0;
-
- my $ORIG = $list;
- if ($list) {
- my @tmp = split(/^/m, $list);
- my %seen;
- no warnings;
- $extras = join '', grep /^[^0-9a-fA-F]/, @tmp;
- $list = join '',
- map { $_->[1] }
- sort { $a->[0] <=> $b->[0] }
- map { /^([0-9a-fA-F]+)/; [ hex($1), $_ ] }
- 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 = defined $2 ? hex $2 : $min;
- my $val = defined $3 ? hex $3 : 0;
- $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;
- if ($c eq 'utf8') {
- $subobj = utf8->SWASHNEW($t, "", 0, 0, 0);
- }
- elsif (exists &$name) {
- $subobj = utf8->SWASHNEW($name, "", 0, 0, 0);
- }
- elsif ($c =~ /^([0-9a-fA-F]+)/) {
- $subobj = utf8->SWASHNEW("", $c, 0, 0, 0);
- }
- return $subobj unless ref $subobj;
- 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;
-
- my $SWASH = bless {
- TYPE => $type,
- BITS => $bits,
- EXTRAS => $extras,
- LIST => $list,
- NONE => $none,
- @extras,
- } => $class;
-
- if ($file) {
- $Cache{$class, $file} = $SWASH;
- }
-
- return $SWASH;
-}
-
-# NOTE: utf8.c:swash_init() assumes entries are never modified once generated.
-
-sub SWASHGET {
- # See utf8.c:Perl_swash_fetch for problems with this interface.
- 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) {
- chomp;
- my ($a, $b, $c) = ($1, $2, $3);
- croak "$type: illegal mapping '$_'"
- if $type =~ /^To/ &&
- !(defined $a && defined $c);
- my $min = hex $a;
- my $max = defined $b ? hex $b : $min;
- my $val = defined $c ? hex $c : 0;
- next if $max < $start;
- print "$min $max $val\n" if DEBUG;
- 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) {
- chomp;
- 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;
- }
- }
- }
- }
- 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/Master/tlpkg/tlperl/lib/vars.pm b/Master/tlpkg/tlperl/lib/vars.pm
deleted file mode 100644
index a0151b84030..00000000000
--- a/Master/tlpkg/tlperl/lib/vars.pm
+++ /dev/null
@@ -1,82 +0,0 @@
-package vars;
-
-use 5.006;
-
-our $VERSION = '1.01';
-
-use warnings::register;
-use strict qw(vars subs);
-
-sub import {
- my $callpack = caller;
- my ($pack, @imports) = @_;
- my ($sym, $ch);
- foreach (@imports) {
- if (($ch, $sym) = /^([\$\@\%\*\&])(.+)/) {
- if ($sym =~ /\W/) {
- # time for a more-detailed check-up
- if ($sym =~ /^\w+[[{].*[]}]$/) {
- require Carp;
- Carp::croak("Can't declare individual elements of hash or array");
- } elsif (warnings::enabled() and length($sym) == 1 and $sym !~ tr/a-zA-Z//) {
- warnings::warn("No need to declare built-in vars");
- } elsif (($^H &= strict::bits('vars'))) {
- require Carp;
- Carp::croak("'$_' is not a valid variable name under strict vars");
- }
- }
- $sym = "${callpack}::$sym" unless $sym =~ /::/;
- *$sym =
- ( $ch eq "\$" ? \$$sym
- : $ch eq "\@" ? \@$sym
- : $ch eq "\%" ? \%$sym
- : $ch eq "\*" ? \*$sym
- : $ch eq "\&" ? \&$sym
- : do {
- require Carp;
- Carp::croak("'$_' is not a valid variable name");
- });
- } else {
- require Carp;
- Carp::croak("'$_' is not a valid variable name");
- }
- }
-};
-
-1;
-__END__
-
-=head1 NAME
-
-vars - Perl pragma to predeclare global variable names (obsolete)
-
-=head1 SYNOPSIS
-
- use vars qw($frob @mung %seen);
-
-=head1 DESCRIPTION
-
-NOTE: For variables in the current package, 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.
-
-Unlike pragmas that affect the C<$^H> hints variable, the C<use vars> and
-C<use subs> declarations are not BLOCK-scoped. They are thus effective
-for the entire file in which they appear. You may not rescind such
-declarations with C<no vars> or C<no subs>.
-
-Packages such as the B<AutoLoader> and B<SelfLoader> that delay
-loading of subroutines within packages can create problems with
-package lexicals defined using C<my()>. While the B<vars> pragma
-cannot duplicate the effect of package lexicals (total transparency
-outside of the package), it can act as an acceptable substitute by
-pre-declaring global symbols, ensuring their availability to the
-later-loaded routines.
-
-See L<perlmodlib/Pragmatic Modules>.
-
-=cut
diff --git a/Master/tlpkg/tlperl/lib/warnings.pm b/Master/tlpkg/tlperl/lib/warnings.pm
deleted file mode 100644
index e43b686c908..00000000000
--- a/Master/tlpkg/tlperl/lib/warnings.pm
+++ /dev/null
@@ -1,497 +0,0 @@
-# -*- buffer-read-only: t -*-
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file was created by warnings.pl
-# Any changes made here will be lost.
-#
-
-package warnings;
-
-our $VERSION = '1.05';
-
-=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");
- }
-
- if (warnings::enabled($object)) {
- warnings::warn($object, "some warning");
- }
-
- warnings::warnif("some warning");
- warnings::warnif("void", "some warning");
- warnings::warnif($object, "some warning");
-
-=head1 DESCRIPTION
-
-The C<warnings> pragma is a replacement for the command line flag C<-w>,
-but the pragma is limited to the enclosing block, while the flag is global.
-See L<perllexwarn> for more information.
-
-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 with the same name as the package where
-the call to the pragma is used.
-
-=item warnings::enabled()
-
-Use the warnings category with the same name as the current package.
-
-Return TRUE if that warnings category is enabled in the calling module.
-Otherwise returns FALSE.
-
-=item warnings::enabled($category)
-
-Return TRUE if the warnings category, C<$category>, is enabled in the
-calling module.
-Otherwise returns FALSE.
-
-=item warnings::enabled($object)
-
-Use the name of the class for the object reference, C<$object>, as the
-warnings category.
-
-Return TRUE if that warnings category is enabled in the first scope
-where the object is used.
-Otherwise returns FALSE.
-
-=item warnings::warn($message)
-
-Print C<$message> to STDERR.
-
-Use the warnings category with the same name as the current package.
-
-If that warnings category has been set to "FATAL" in the calling module
-then die. Otherwise return.
-
-=item warnings::warn($category, $message)
-
-Print C<$message> to STDERR.
-
-If the warnings category, C<$category>, has been set to "FATAL" in the
-calling module then die. Otherwise return.
-
-=item warnings::warn($object, $message)
-
-Print C<$message> to STDERR.
-
-Use the name of the class for the object reference, C<$object>, as the
-warnings category.
-
-If that warnings category has been set to "FATAL" in the scope where C<$object>
-is first used then die. Otherwise return.
-
-
-=item warnings::warnif($message)
-
-Equivalent to:
-
- if (warnings::enabled())
- { warnings::warn($message) }
-
-=item warnings::warnif($category, $message)
-
-Equivalent to:
-
- if (warnings::enabled($category))
- { warnings::warn($category, $message) }
-
-=item warnings::warnif($object, $message)
-
-Equivalent to:
-
- if (warnings::enabled($object))
- { warnings::warn($object, $message) }
-
-=back
-
-See L<perlmodlib/Pragmatic Modules> and L<perllexwarn>.
-
-=cut
-
-use Carp ();
-
-our %Offsets = (
-
- # Warnings Categories added in Perl 5.008
-
- 'all' => 0,
- 'closure' => 2,
- 'deprecated' => 4,
- 'exiting' => 6,
- 'glob' => 8,
- 'io' => 10,
- 'closed' => 12,
- 'exec' => 14,
- 'layer' => 16,
- 'newline' => 18,
- 'pipe' => 20,
- 'unopened' => 22,
- 'misc' => 24,
- 'numeric' => 26,
- 'once' => 28,
- 'overflow' => 30,
- 'pack' => 32,
- 'portable' => 34,
- 'recursion' => 36,
- 'redefine' => 38,
- 'regexp' => 40,
- 'severe' => 42,
- 'debugging' => 44,
- 'inplace' => 46,
- 'internal' => 48,
- 'malloc' => 50,
- 'signal' => 52,
- 'substr' => 54,
- 'syntax' => 56,
- 'ambiguous' => 58,
- 'bareword' => 60,
- 'digit' => 62,
- 'parenthesis' => 64,
- 'precedence' => 66,
- 'printf' => 68,
- 'prototype' => 70,
- 'qw' => 72,
- 'reserved' => 74,
- 'semicolon' => 76,
- 'taint' => 78,
- 'threads' => 80,
- 'uninitialized' => 82,
- 'unpack' => 84,
- 'untie' => 86,
- 'utf8' => 88,
- 'void' => 90,
- 'y2k' => 92,
- );
-
-our %Bits = (
- 'all' => "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x15", # [0..46]
- 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00", # [29]
- 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00", # [30]
- 'closed' => "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
- 'closure' => "\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
- 'debugging' => "\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00", # [22]
- 'deprecated' => "\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2]
- 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00", # [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\x40\x00\x00\x00\x00\x00\x00", # [23]
- 'internal' => "\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00", # [24]
- 'io' => "\x00\x54\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [5..11]
- 'layer' => "\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
- 'malloc' => "\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00", # [25]
- 'misc' => "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00", # [12]
- 'newline' => "\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
- 'numeric' => "\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
- 'once' => "\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
- 'overflow' => "\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
- 'pack' => "\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00", # [16]
- 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00", # [32]
- 'pipe' => "\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
- 'portable' => "\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00", # [17]
- '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\x10\x00\x00\x00\x00\x00\x00\x00", # [18]
- 'redefine' => "\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00", # [19]
- 'regexp' => "\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00", # [20]
- '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\x54\x05\x00\x00\x00\x00\x00", # [21..25]
- 'signal' => "\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00", # [26]
- 'substr' => "\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00", # [27]
- 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\x55\x55\x15\x00\x00", # [28..38]
- 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00", # [39]
- 'threads' => "\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\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
- '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]
- );
-
-our %DeadBits = (
- 'all' => "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x2a", # [0..46]
- 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00", # [29]
- 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00", # [30]
- 'closed' => "\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
- 'closure' => "\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
- 'debugging' => "\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00", # [22]
- 'deprecated' => "\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2]
- 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00", # [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\x80\x00\x00\x00\x00\x00\x00", # [23]
- 'internal' => "\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00", # [24]
- 'io' => "\x00\xa8\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [5..11]
- 'layer' => "\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
- 'malloc' => "\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00", # [25]
- 'misc' => "\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00", # [12]
- 'newline' => "\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
- 'numeric' => "\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
- 'once' => "\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
- 'overflow' => "\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
- 'pack' => "\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00", # [16]
- 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00", # [32]
- 'pipe' => "\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
- 'portable' => "\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00", # [17]
- '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\x20\x00\x00\x00\x00\x00\x00\x00", # [18]
- 'redefine' => "\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00", # [19]
- 'regexp' => "\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00", # [20]
- '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\xa8\x0a\x00\x00\x00\x00\x00", # [21..25]
- 'signal' => "\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00", # [26]
- 'substr' => "\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00", # [27]
- 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\xaa\xaa\x2a\x00\x00", # [28..38]
- 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00", # [39]
- 'threads' => "\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\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
- '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 Croaker
-{
- local $Carp::CarpInternal{'warnings'};
- delete $Carp::CarpInternal{'warnings'};
- Carp::croak(@_);
-}
-
-sub bits
-{
- # called from B::Deparse.pm
-
- push @_, 'all' unless @_;
-
- my $mask;
- my $catmask ;
- my $fatal = 0 ;
- my $no_fatal = 0 ;
-
- foreach my $word ( @_ ) {
- if ($word eq 'FATAL') {
- $fatal = 1;
- $no_fatal = 0;
- }
- elsif ($word eq 'NONFATAL') {
- $fatal = 0;
- $no_fatal = 1;
- }
- elsif ($catmask = $Bits{$word}) {
- $mask |= $catmask ;
- $mask |= $DeadBits{$word} if $fatal ;
- $mask &= ~($DeadBits{$word}|$All) if $no_fatal ;
- }
- else
- { Croaker("Unknown warnings category '$word'")}
- }
-
- return $mask ;
-}
-
-sub import
-{
- shift;
-
- my $catmask ;
- my $fatal = 0 ;
- my $no_fatal = 0 ;
-
- my $mask = ${^WARNING_BITS} ;
-
- if (vec($mask, $Offsets{'all'}, 1)) {
- $mask |= $Bits{'all'} ;
- $mask |= $DeadBits{'all'} if vec($mask, $Offsets{'all'}+1, 1);
- }
-
- push @_, 'all' unless @_;
-
- foreach my $word ( @_ ) {
- if ($word eq 'FATAL') {
- $fatal = 1;
- $no_fatal = 0;
- }
- elsif ($word eq 'NONFATAL') {
- $fatal = 0;
- $no_fatal = 1;
- }
- elsif ($catmask = $Bits{$word}) {
- $mask |= $catmask ;
- $mask |= $DeadBits{$word} if $fatal ;
- $mask &= ~($DeadBits{$word}|$All) if $no_fatal ;
- }
- else
- { Croaker("Unknown warnings category '$word'")}
- }
-
- ${^WARNING_BITS} = $mask ;
-}
-
-sub unimport
-{
- shift;
-
- my $catmask ;
- my $mask = ${^WARNING_BITS} ;
-
- if (vec($mask, $Offsets{'all'}, 1)) {
- $mask |= $Bits{'all'} ;
- $mask |= $DeadBits{'all'} if vec($mask, $Offsets{'all'}+1, 1);
- }
-
- push @_, 'all' unless @_;
-
- foreach my $word ( @_ ) {
- if ($word eq 'FATAL') {
- next;
- }
- elsif ($catmask = $Bits{$word}) {
- $mask &= ~($catmask | $DeadBits{$word} | $All);
- }
- else
- { Croaker("Unknown warnings category '$word'")}
- }
-
- ${^WARNING_BITS} = $mask ;
-}
-
-my %builtin_type; @builtin_type{qw(SCALAR ARRAY HASH CODE REF GLOB LVALUE Regexp)} = ();
-
-sub __chk
-{
- my $category ;
- my $offset ;
- my $isobj = 0 ;
-
- if (@_) {
- # check the category supplied.
- $category = shift ;
- if (my $type = ref $category) {
- Croaker("not an object")
- if exists $builtin_type{$type};
- $category = $type;
- $isobj = 1 ;
- }
- $offset = $Offsets{$category};
- Croaker("Unknown warnings category '$category'")
- unless defined $offset;
- }
- else {
- $category = (caller(1))[0] ;
- $offset = $Offsets{$category};
- Croaker("package '$category' not registered for warnings")
- unless defined $offset ;
- }
-
- my $this_pkg = (caller(1))[0] ;
- my $i = 2 ;
- my $pkg ;
-
- if ($isobj) {
- while (do { { package DB; $pkg = (caller($i++))[0] } } ) {
- last unless @DB::args && $DB::args[0] =~ /^$category=/ ;
- }
- $i -= 2 ;
- }
- else {
- for ($i = 2 ; $pkg = (caller($i))[0] ; ++ $i) {
- last if $pkg ne $this_pkg ;
- }
- $i = 2
- if !$pkg || $pkg eq $this_pkg ;
- }
-
- my $callers_bitmask = (caller($i))[9] ;
- return ($callers_bitmask, $offset, $i) ;
-}
-
-sub enabled
-{
- Croaker("Usage: warnings::enabled([category])")
- unless @_ == 1 || @_ == 0 ;
-
- my ($callers_bitmask, $offset, $i) = __chk(@_) ;
-
- return 0 unless defined $callers_bitmask ;
- return vec($callers_bitmask, $offset, 1) ||
- vec($callers_bitmask, $Offsets{'all'}, 1) ;
-}
-
-
-sub warn
-{
- Croaker("Usage: warnings::warn([category,] 'message')")
- unless @_ == 2 || @_ == 1 ;
-
- my $message = pop ;
- my ($callers_bitmask, $offset, $i) = __chk(@_) ;
- Carp::croak($message)
- if vec($callers_bitmask, $offset+1, 1) ||
- vec($callers_bitmask, $Offsets{'all'}+1, 1) ;
- Carp::carp($message) ;
-}
-
-sub warnif
-{
- Croaker("Usage: warnings::warnif([category,] 'message')")
- unless @_ == 2 || @_ == 1 ;
-
- my $message = pop ;
- my ($callers_bitmask, $offset, $i) = __chk(@_) ;
-
- return
- unless defined $callers_bitmask &&
- (vec($callers_bitmask, $offset, 1) ||
- vec($callers_bitmask, $Offsets{'all'}, 1)) ;
-
- Carp::croak($message)
- if vec($callers_bitmask, $offset+1, 1) ||
- vec($callers_bitmask, $Offsets{'all'}+1, 1) ;
-
- Carp::carp($message) ;
-}
-
-1;
-# ex: set ro:
diff --git a/Master/tlpkg/tlperl/lib/warnings/register.pm b/Master/tlpkg/tlperl/lib/warnings/register.pm
deleted file mode 100644
index 57c865df522..00000000000
--- a/Master/tlpkg/tlperl/lib/warnings/register.pm
+++ /dev/null
@@ -1,51 +0,0 @@
-package warnings::register;
-
-our $VERSION = '1.01';
-
-=pod
-
-=head1 NAME
-
-warnings::register - warnings import function
-
-=head1 SYNOPSIS
-
- use warnings::register;
-
-=head1 DESCRIPTION
-
-Creates a warnings category with the same name as the current package.
-
-See L<warnings> and L<perllexwarn> for more information on this module's
-usage.
-
-=cut
-
-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;