Movatterモバイル変換


[0]ホーム

URL:


MediaWiki master
Language.php
Go to the documentation of this file.
1<?php
18namespaceMediaWiki\Language;
19
20use CLDRPluralRuleParser\Evaluator;
21use DateTime;
22use DateTimeImmutable;
23use DateTimeInterface;
24use DateTimeZone;
25use InvalidArgumentException;
26use Locale;
27useLocalisationCache;
28useMediaWiki\Config\Config;
29useMediaWiki\Context\RequestContext;
30useMediaWiki\HookContainer\HookContainer;
31useMediaWiki\HookContainer\HookRunner;
32useMediaWiki\Html\Html;
33useMediaWiki\Json\FormatJson;
34useMediaWiki\Languages\Data\NormalizeAr;
35useMediaWiki\Languages\Data\NormalizeMl;
36use MediaWiki\Languages\LanguageConverterFactory;
37use MediaWiki\Languages\LanguageFallback;
38use MediaWiki\Languages\LanguageNameUtils;
39useMediaWiki\Logger\LoggerFactory;
40useMediaWiki\MainConfigNames;
41useMediaWiki\MediaWikiServices;
42useMediaWiki\Message\Message;
43useMediaWiki\Parser\MagicWord;
44useMediaWiki\Title\NamespaceInfo;
45useMediaWiki\User\User;
46useMediaWiki\User\UserIdentity;
47useMediaWiki\User\UserTimeCorrection;
48useMediaWiki\Utils\MWTimestamp;
49useMediaWiki\Xml\XmlSelect;
50use NumberFormatter;
51use RuntimeException;
52use UtfNormal\Validator as UtfNormalValidator;
53use Wikimedia\AtEase\AtEase;
54use Wikimedia\Bcp47Code\Bcp47Code;
55use Wikimedia\DebugInfo\DebugInfoTrait;
56useWikimedia\Message\MessageParam;
57useWikimedia\Message\MessageSpecifier;
58useWikimedia\ReplacementArray;
59useWikimedia\StringUtils\StringUtils;
60use Wikimedia\Timestamp\ConvertibleTimestamp;
61
69classLanguageimplements Bcp47Code {
70 use DebugInfoTrait;
71
73public$mCode;
74
78public$mMagicExtensions = [];
79
81private $mHtmlCode =null;
82
88public$dateFormatStrings = [];
89
95public$mExtendedSpecialPageAliases;
96
98protected$namespaceNames;
100protected$mNamespaceIds;
102protected$namespaceAliases;
103
108private $transformData = [];
109
114private $namespaceInfo;
115
120private $localisationCache;
121
126private $langNameUtils;
127
132private $langFallback;
133
138private $grammarTransformCache;
139
144private $converterFactory;
145
150private $hookContainer;
151
156private $hookRunner;
157
162private $config;
163
167private $overrideUcfirstCharacters;
168
173private $numberFormatter =null;
174
178publicconstWEEKDAY_MESSAGES = [
179'sunday','monday','tuesday','wednesday','thursday',
180'friday','saturday'
181 ];
182
186publicconstWEEKDAY_ABBREVIATED_MESSAGES = [
187'sun','mon','tue','wed','thu','fri','sat'
188 ];
189
193publicconstMONTH_MESSAGES = [
194'january','february','march','april','may_long','june',
195'july','august','september','october','november',
196'december'
197 ];
198
202publicstatic$mMonthMsgs =self::MONTH_MESSAGES;
203
207publicconstMONTH_GENITIVE_MESSAGES = [
208'january-gen','february-gen','march-gen','april-gen','may-gen','june-gen',
209'july-gen','august-gen','september-gen','october-gen','november-gen',
210'december-gen'
211 ];
212
216publicconstMONTH_ABBREVIATED_MESSAGES = [
217'jan','feb','mar','apr','may','jun','jul','aug',
218'sep','oct','nov','dec'
219 ];
220
224publicstatic$mMonthAbbrevMsgs =self::MONTH_ABBREVIATED_MESSAGES;
225
229publicconstIRANIAN_CALENDAR_MONTHS_MESSAGES = [
230'iranian-calendar-m1','iranian-calendar-m2','iranian-calendar-m3',
231'iranian-calendar-m4','iranian-calendar-m5','iranian-calendar-m6',
232'iranian-calendar-m7','iranian-calendar-m8','iranian-calendar-m9',
233'iranian-calendar-m10','iranian-calendar-m11','iranian-calendar-m12'
234 ];
235
239publicconstHEBREW_CALENDAR_MONTHS_MESSAGES = [
240'hebrew-calendar-m1','hebrew-calendar-m2','hebrew-calendar-m3',
241'hebrew-calendar-m4','hebrew-calendar-m5','hebrew-calendar-m6',
242'hebrew-calendar-m7','hebrew-calendar-m8','hebrew-calendar-m9',
243'hebrew-calendar-m10','hebrew-calendar-m11','hebrew-calendar-m12',
244'hebrew-calendar-m6a','hebrew-calendar-m6b'
245 ];
246
250publicconstHEBREW_CALENDAR_MONTH_GENITIVE_MESSAGES = [
251'hebrew-calendar-m1-gen','hebrew-calendar-m2-gen','hebrew-calendar-m3-gen',
252'hebrew-calendar-m4-gen','hebrew-calendar-m5-gen','hebrew-calendar-m6-gen',
253'hebrew-calendar-m7-gen','hebrew-calendar-m8-gen','hebrew-calendar-m9-gen',
254'hebrew-calendar-m10-gen','hebrew-calendar-m11-gen','hebrew-calendar-m12-gen',
255'hebrew-calendar-m6a-gen','hebrew-calendar-m6b-gen'
256 ];
257
261publicconstHIJRI_CALENDAR_MONTH_MESSAGES = [
262'hijri-calendar-m1','hijri-calendar-m2','hijri-calendar-m3',
263'hijri-calendar-m4','hijri-calendar-m5','hijri-calendar-m6',
264'hijri-calendar-m7','hijri-calendar-m8','hijri-calendar-m9',
265'hijri-calendar-m10','hijri-calendar-m11','hijri-calendar-m12'
266 ];
267
271protectedconstDURATION_INTERVALS = [
272'millennia' => 1000 * 31_556_952,
273'centuries' => 100 * 31_556_952,
274'decades' => 10 * 31_556_952,
275// The average year is 365.2425 days (365 + (24 * 3 + 25) / 400)
276'years' => 31_556_952,// 365.2425 * 24 * 3600
277// To simplify, we consider a month to be 1/12 of a year
278'months' => 365.2425 * 24 * 3600 / 12,
279'days' => 24 * 3600,
280'hours' => 3600,
281'minutes' => 60,
282'seconds' => 1,
283 ];
284
290publicstatic$durationIntervals =self::DURATION_INTERVALS;
291
293privateconst DEADLINE_DATE_SPEC_BY_UNIT = [
294'Y' =>'first day of January next year midnight',
295'M' =>'first day of next month midnight',
296'W' =>'monday next week midnight',
297'D' =>'next day midnight',
298// Note that this may be before the current time, in which case
299// we advance by a calendar year; the ISOY is actually 1 week past
300// this, since dec 28 is always in "the last week of the ISO year".
301'ISOY' =>'december 28 midnight',
302// Note that this may be before the current time, in which case 'D'
303// is used.
304'AM' =>'today noon',
305// Note that this relative datetime specifier does not zero out
306// minutes/seconds, but we will do so manually in
307// ::computeUnitTimestampDeadline() when given the unit 'H'/'m'/'s'
308'H' =>'next hour',
309'm' =>'next minute',
310's' =>'next second',
311 ];
312
316privateconst LRM ="\u{200E}";// U+200E LEFT-TO-RIGHT MARK
317privateconst RLM ="\u{200F}";// U+200F RIGHT-TO-LEFT MARK
318privateconst LRE ="\u{202A}";// U+202A LEFT-TO-RIGHT EMBEDDING
319privateconst RLE ="\u{202B}";// U+202B RIGHT-TO-LEFT EMBEDDING
320privateconst PDF ="\u{202C}";// U+202C POP DIRECTIONAL FORMATTING
321// https://en.wikipedia.org/wiki/Arabic_letter_mark (Unicode 6.3.0)
322privateconst ALM ="\u{061C}";// U+061C ARABIC LETTER MARK
323
336// @codeCoverageIgnoreStart
337// phpcs:ignore Generic.Files.LineLength,MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate
338privatestatic $strongDirRegex ='/(?:([\x{41}-\x{5a}\x{61}-\x{7a}\x{aa}\x{b5}\x{ba}\x{c0}-\x{d6}\x{d8}-\x{f6}\x{f8}-\x{2b8}\x{2bb}-\x{2c1}\x{2d0}\x{2d1}\x{2e0}-\x{2e4}\x{2ee}\x{370}-\x{373}\x{376}\x{377}\x{37a}-\x{37d}\x{37f}\x{386}\x{388}-\x{38a}\x{38c}\x{38e}-\x{3a1}\x{3a3}-\x{3f5}\x{3f7}-\x{482}\x{48a}-\x{52f}\x{531}-\x{556}\x{559}-\x{55f}\x{561}-\x{587}\x{589}\x{903}-\x{939}\x{93b}\x{93d}-\x{940}\x{949}-\x{94c}\x{94e}-\x{950}\x{958}-\x{961}\x{964}-\x{980}\x{982}\x{983}\x{985}-\x{98c}\x{98f}\x{990}\x{993}-\x{9a8}\x{9aa}-\x{9b0}\x{9b2}\x{9b6}-\x{9b9}\x{9bd}-\x{9c0}\x{9c7}\x{9c8}\x{9cb}\x{9cc}\x{9ce}\x{9d7}\x{9dc}\x{9dd}\x{9df}-\x{9e1}\x{9e6}-\x{9f1}\x{9f4}-\x{9fa}\x{a03}\x{a05}-\x{a0a}\x{a0f}\x{a10}\x{a13}-\x{a28}\x{a2a}-\x{a30}\x{a32}\x{a33}\x{a35}\x{a36}\x{a38}\x{a39}\x{a3e}-\x{a40}\x{a59}-\x{a5c}\x{a5e}\x{a66}-\x{a6f}\x{a72}-\x{a74}\x{a83}\x{a85}-\x{a8d}\x{a8f}-\x{a91}\x{a93}-\x{aa8}\x{aaa}-\x{ab0}\x{ab2}\x{ab3}\x{ab5}-\x{ab9}\x{abd}-\x{ac0}\x{ac9}\x{acb}\x{acc}\x{ad0}\x{ae0}\x{ae1}\x{ae6}-\x{af0}\x{af9}\x{b02}\x{b03}\x{b05}-\x{b0c}\x{b0f}\x{b10}\x{b13}-\x{b28}\x{b2a}-\x{b30}\x{b32}\x{b33}\x{b35}-\x{b39}\x{b3d}\x{b3e}\x{b40}\x{b47}\x{b48}\x{b4b}\x{b4c}\x{b57}\x{b5c}\x{b5d}\x{b5f}-\x{b61}\x{b66}-\x{b77}\x{b83}\x{b85}-\x{b8a}\x{b8e}-\x{b90}\x{b92}-\x{b95}\x{b99}\x{b9a}\x{b9c}\x{b9e}\x{b9f}\x{ba3}\x{ba4}\x{ba8}-\x{baa}\x{bae}-\x{bb9}\x{bbe}\x{bbf}\x{bc1}\x{bc2}\x{bc6}-\x{bc8}\x{bca}-\x{bcc}\x{bd0}\x{bd7}\x{be6}-\x{bf2}\x{c01}-\x{c03}\x{c05}-\x{c0c}\x{c0e}-\x{c10}\x{c12}-\x{c28}\x{c2a}-\x{c39}\x{c3d}\x{c41}-\x{c44}\x{c58}-\x{c5a}\x{c60}\x{c61}\x{c66}-\x{c6f}\x{c7f}\x{c82}\x{c83}\x{c85}-\x{c8c}\x{c8e}-\x{c90}\x{c92}-\x{ca8}\x{caa}-\x{cb3}\x{cb5}-\x{cb9}\x{cbd}-\x{cc4}\x{cc6}-\x{cc8}\x{cca}\x{ccb}\x{cd5}\x{cd6}\x{cde}\x{ce0}\x{ce1}\x{ce6}-\x{cef}\x{cf1}\x{cf2}\x{d02}\x{d03}\x{d05}-\x{d0c}\x{d0e}-\x{d10}\x{d12}-\x{d3a}\x{d3d}-\x{d40}\x{d46}-\x{d48}\x{d4a}-\x{d4c}\x{d4e}\x{d57}\x{d5f}-\x{d61}\x{d66}-\x{d75}\x{d79}-\x{d7f}\x{d82}\x{d83}\x{d85}-\x{d96}\x{d9a}-\x{db1}\x{db3}-\x{dbb}\x{dbd}\x{dc0}-\x{dc6}\x{dcf}-\x{dd1}\x{dd8}-\x{ddf}\x{de6}-\x{def}\x{df2}-\x{df4}\x{e01}-\x{e30}\x{e32}\x{e33}\x{e40}-\x{e46}\x{e4f}-\x{e5b}\x{e81}\x{e82}\x{e84}\x{e87}\x{e88}\x{e8a}\x{e8d}\x{e94}-\x{e97}\x{e99}-\x{e9f}\x{ea1}-\x{ea3}\x{ea5}\x{ea7}\x{eaa}\x{eab}\x{ead}-\x{eb0}\x{eb2}\x{eb3}\x{ebd}\x{ec0}-\x{ec4}\x{ec6}\x{ed0}-\x{ed9}\x{edc}-\x{edf}\x{f00}-\x{f17}\x{f1a}-\x{f34}\x{f36}\x{f38}\x{f3e}-\x{f47}\x{f49}-\x{f6c}\x{f7f}\x{f85}\x{f88}-\x{f8c}\x{fbe}-\x{fc5}\x{fc7}-\x{fcc}\x{fce}-\x{fda}\x{1000}-\x{102c}\x{1031}\x{1038}\x{103b}\x{103c}\x{103f}-\x{1057}\x{105a}-\x{105d}\x{1061}-\x{1070}\x{1075}-\x{1081}\x{1083}\x{1084}\x{1087}-\x{108c}\x{108e}-\x{109c}\x{109e}-\x{10c5}\x{10c7}\x{10cd}\x{10d0}-\x{1248}\x{124a}-\x{124d}\x{1250}-\x{1256}\x{1258}\x{125a}-\x{125d}\x{1260}-\x{1288}\x{128a}-\x{128d}\x{1290}-\x{12b0}\x{12b2}-\x{12b5}\x{12b8}-\x{12be}\x{12c0}\x{12c2}-\x{12c5}\x{12c8}-\x{12d6}\x{12d8}-\x{1310}\x{1312}-\x{1315}\x{1318}-\x{135a}\x{1360}-\x{137c}\x{1380}-\x{138f}\x{13a0}-\x{13f5}\x{13f8}-\x{13fd}\x{1401}-\x{167f}\x{1681}-\x{169a}\x{16a0}-\x{16f8}\x{1700}-\x{170c}\x{170e}-\x{1711}\x{1720}-\x{1731}\x{1735}\x{1736}\x{1740}-\x{1751}\x{1760}-\x{176c}\x{176e}-\x{1770}\x{1780}-\x{17b3}\x{17b6}\x{17be}-\x{17c5}\x{17c7}\x{17c8}\x{17d4}-\x{17da}\x{17dc}\x{17e0}-\x{17e9}\x{1810}-\x{1819}\x{1820}-\x{1877}\x{1880}-\x{18a8}\x{18aa}\x{18b0}-\x{18f5}\x{1900}-\x{191e}\x{1923}-\x{1926}\x{1929}-\x{192b}\x{1930}\x{1931}\x{1933}-\x{1938}\x{1946}-\x{196d}\x{1970}-\x{1974}\x{1980}-\x{19ab}\x{19b0}-\x{19c9}\x{19d0}-\x{19da}\x{1a00}-\x{1a16}\x{1a19}\x{1a1a}\x{1a1e}-\x{1a55}\x{1a57}\x{1a61}\x{1a63}\x{1a64}\x{1a6d}-\x{1a72}\x{1a80}-\x{1a89}\x{1a90}-\x{1a99}\x{1aa0}-\x{1aad}\x{1b04}-\x{1b33}\x{1b35}\x{1b3b}\x{1b3d}-\x{1b41}\x{1b43}-\x{1b4b}\x{1b50}-\x{1b6a}\x{1b74}-\x{1b7c}\x{1b82}-\x{1ba1}\x{1ba6}\x{1ba7}\x{1baa}\x{1bae}-\x{1be5}\x{1be7}\x{1bea}-\x{1bec}\x{1bee}\x{1bf2}\x{1bf3}\x{1bfc}-\x{1c2b}\x{1c34}\x{1c35}\x{1c3b}-\x{1c49}\x{1c4d}-\x{1c7f}\x{1cc0}-\x{1cc7}\x{1cd3}\x{1ce1}\x{1ce9}-\x{1cec}\x{1cee}-\x{1cf3}\x{1cf5}\x{1cf6}\x{1d00}-\x{1dbf}\x{1e00}-\x{1f15}\x{1f18}-\x{1f1d}\x{1f20}-\x{1f45}\x{1f48}-\x{1f4d}\x{1f50}-\x{1f57}\x{1f59}\x{1f5b}\x{1f5d}\x{1f5f}-\x{1f7d}\x{1f80}-\x{1fb4}\x{1fb6}-\x{1fbc}\x{1fbe}\x{1fc2}-\x{1fc4}\x{1fc6}-\x{1fcc}\x{1fd0}-\x{1fd3}\x{1fd6}-\x{1fdb}\x{1fe0}-\x{1fec}\x{1ff2}-\x{1ff4}\x{1ff6}-\x{1ffc}\x{200e}\x{2071}\x{207f}\x{2090}-\x{209c}\x{2102}\x{2107}\x{210a}-\x{2113}\x{2115}\x{2119}-\x{211d}\x{2124}\x{2126}\x{2128}\x{212a}-\x{212d}\x{212f}-\x{2139}\x{213c}-\x{213f}\x{2145}-\x{2149}\x{214e}\x{214f}\x{2160}-\x{2188}\x{2336}-\x{237a}\x{2395}\x{249c}-\x{24e9}\x{26ac}\x{2800}-\x{28ff}\x{2c00}-\x{2c2e}\x{2c30}-\x{2c5e}\x{2c60}-\x{2ce4}\x{2ceb}-\x{2cee}\x{2cf2}\x{2cf3}\x{2d00}-\x{2d25}\x{2d27}\x{2d2d}\x{2d30}-\x{2d67}\x{2d6f}\x{2d70}\x{2d80}-\x{2d96}\x{2da0}-\x{2da6}\x{2da8}-\x{2dae}\x{2db0}-\x{2db6}\x{2db8}-\x{2dbe}\x{2dc0}-\x{2dc6}\x{2dc8}-\x{2dce}\x{2dd0}-\x{2dd6}\x{2dd8}-\x{2dde}\x{3005}-\x{3007}\x{3021}-\x{3029}\x{302e}\x{302f}\x{3031}-\x{3035}\x{3038}-\x{303c}\x{3041}-\x{3096}\x{309d}-\x{309f}\x{30a1}-\x{30fa}\x{30fc}-\x{30ff}\x{3105}-\x{312d}\x{3131}-\x{318e}\x{3190}-\x{31ba}\x{31f0}-\x{321c}\x{3220}-\x{324f}\x{3260}-\x{327b}\x{327f}-\x{32b0}\x{32c0}-\x{32cb}\x{32d0}-\x{32fe}\x{3300}-\x{3376}\x{337b}-\x{33dd}\x{33e0}-\x{33fe}\x{3400}-\x{4db5}\x{4e00}-\x{9fd5}\x{a000}-\x{a48c}\x{a4d0}-\x{a60c}\x{a610}-\x{a62b}\x{a640}-\x{a66e}\x{a680}-\x{a69d}\x{a6a0}-\x{a6ef}\x{a6f2}-\x{a6f7}\x{a722}-\x{a787}\x{a789}-\x{a7ad}\x{a7b0}-\x{a7b7}\x{a7f7}-\x{a801}\x{a803}-\x{a805}\x{a807}-\x{a80a}\x{a80c}-\x{a824}\x{a827}\x{a830}-\x{a837}\x{a840}-\x{a873}\x{a880}-\x{a8c3}\x{a8ce}-\x{a8d9}\x{a8f2}-\x{a8fd}\x{a900}-\x{a925}\x{a92e}-\x{a946}\x{a952}\x{a953}\x{a95f}-\x{a97c}\x{a983}-\x{a9b2}\x{a9b4}\x{a9b5}\x{a9ba}\x{a9bb}\x{a9bd}-\x{a9cd}\x{a9cf}-\x{a9d9}\x{a9de}-\x{a9e4}\x{a9e6}-\x{a9fe}\x{aa00}-\x{aa28}\x{aa2f}\x{aa30}\x{aa33}\x{aa34}\x{aa40}-\x{aa42}\x{aa44}-\x{aa4b}\x{aa4d}\x{aa50}-\x{aa59}\x{aa5c}-\x{aa7b}\x{aa7d}-\x{aaaf}\x{aab1}\x{aab5}\x{aab6}\x{aab9}-\x{aabd}\x{aac0}\x{aac2}\x{aadb}-\x{aaeb}\x{aaee}-\x{aaf5}\x{ab01}-\x{ab06}\x{ab09}-\x{ab0e}\x{ab11}-\x{ab16}\x{ab20}-\x{ab26}\x{ab28}-\x{ab2e}\x{ab30}-\x{ab65}\x{ab70}-\x{abe4}\x{abe6}\x{abe7}\x{abe9}-\x{abec}\x{abf0}-\x{abf9}\x{ac00}-\x{d7a3}\x{d7b0}-\x{d7c6}\x{d7cb}-\x{d7fb}\x{e000}-\x{fa6d}\x{fa70}-\x{fad9}\x{fb00}-\x{fb06}\x{fb13}-\x{fb17}\x{ff21}-\x{ff3a}\x{ff41}-\x{ff5a}\x{ff66}-\x{ffbe}\x{ffc2}-\x{ffc7}\x{ffca}-\x{ffcf}\x{ffd2}-\x{ffd7}\x{ffda}-\x{ffdc}\x{10000}-\x{1000b}\x{1000d}-\x{10026}\x{10028}-\x{1003a}\x{1003c}\x{1003d}\x{1003f}-\x{1004d}\x{10050}-\x{1005d}\x{10080}-\x{100fa}\x{10100}\x{10102}\x{10107}-\x{10133}\x{10137}-\x{1013f}\x{101d0}-\x{101fc}\x{10280}-\x{1029c}\x{102a0}-\x{102d0}\x{10300}-\x{10323}\x{10330}-\x{1034a}\x{10350}-\x{10375}\x{10380}-\x{1039d}\x{1039f}-\x{103c3}\x{103c8}-\x{103d5}\x{10400}-\x{1049d}\x{104a0}-\x{104a9}\x{10500}-\x{10527}\x{10530}-\x{10563}\x{1056f}\x{10600}-\x{10736}\x{10740}-\x{10755}\x{10760}-\x{10767}\x{11000}\x{11002}-\x{11037}\x{11047}-\x{1104d}\x{11066}-\x{1106f}\x{11082}-\x{110b2}\x{110b7}\x{110b8}\x{110bb}-\x{110c1}\x{110d0}-\x{110e8}\x{110f0}-\x{110f9}\x{11103}-\x{11126}\x{1112c}\x{11136}-\x{11143}\x{11150}-\x{11172}\x{11174}-\x{11176}\x{11182}-\x{111b5}\x{111bf}-\x{111c9}\x{111cd}\x{111d0}-\x{111df}\x{111e1}-\x{111f4}\x{11200}-\x{11211}\x{11213}-\x{1122e}\x{11232}\x{11233}\x{11235}\x{11238}-\x{1123d}\x{11280}-\x{11286}\x{11288}\x{1128a}-\x{1128d}\x{1128f}-\x{1129d}\x{1129f}-\x{112a9}\x{112b0}-\x{112de}\x{112e0}-\x{112e2}\x{112f0}-\x{112f9}\x{11302}\x{11303}\x{11305}-\x{1130c}\x{1130f}\x{11310}\x{11313}-\x{11328}\x{1132a}-\x{11330}\x{11332}\x{11333}\x{11335}-\x{11339}\x{1133d}-\x{1133f}\x{11341}-\x{11344}\x{11347}\x{11348}\x{1134b}-\x{1134d}\x{11350}\x{11357}\x{1135d}-\x{11363}\x{11480}-\x{114b2}\x{114b9}\x{114bb}-\x{114be}\x{114c1}\x{114c4}-\x{114c7}\x{114d0}-\x{114d9}\x{11580}-\x{115b1}\x{115b8}-\x{115bb}\x{115be}\x{115c1}-\x{115db}\x{11600}-\x{11632}\x{1163b}\x{1163c}\x{1163e}\x{11641}-\x{11644}\x{11650}-\x{11659}\x{11680}-\x{116aa}\x{116ac}\x{116ae}\x{116af}\x{116b6}\x{116c0}-\x{116c9}\x{11700}-\x{11719}\x{11720}\x{11721}\x{11726}\x{11730}-\x{1173f}\x{118a0}-\x{118f2}\x{118ff}\x{11ac0}-\x{11af8}\x{12000}-\x{12399}\x{12400}-\x{1246e}\x{12470}-\x{12474}\x{12480}-\x{12543}\x{13000}-\x{1342e}\x{14400}-\x{14646}\x{16800}-\x{16a38}\x{16a40}-\x{16a5e}\x{16a60}-\x{16a69}\x{16a6e}\x{16a6f}\x{16ad0}-\x{16aed}\x{16af5}\x{16b00}-\x{16b2f}\x{16b37}-\x{16b45}\x{16b50}-\x{16b59}\x{16b5b}-\x{16b61}\x{16b63}-\x{16b77}\x{16b7d}-\x{16b8f}\x{16f00}-\x{16f44}\x{16f50}-\x{16f7e}\x{16f93}-\x{16f9f}\x{1b000}\x{1b001}\x{1bc00}-\x{1bc6a}\x{1bc70}-\x{1bc7c}\x{1bc80}-\x{1bc88}\x{1bc90}-\x{1bc99}\x{1bc9c}\x{1bc9f}\x{1d000}-\x{1d0f5}\x{1d100}-\x{1d126}\x{1d129}-\x{1d166}\x{1d16a}-\x{1d172}\x{1d183}\x{1d184}\x{1d18c}-\x{1d1a9}\x{1d1ae}-\x{1d1e8}\x{1d360}-\x{1d371}\x{1d400}-\x{1d454}\x{1d456}-\x{1d49c}\x{1d49e}\x{1d49f}\x{1d4a2}\x{1d4a5}\x{1d4a6}\x{1d4a9}-\x{1d4ac}\x{1d4ae}-\x{1d4b9}\x{1d4bb}\x{1d4bd}-\x{1d4c3}\x{1d4c5}-\x{1d505}\x{1d507}-\x{1d50a}\x{1d50d}-\x{1d514}\x{1d516}-\x{1d51c}\x{1d51e}-\x{1d539}\x{1d53b}-\x{1d53e}\x{1d540}-\x{1d544}\x{1d546}\x{1d54a}-\x{1d550}\x{1d552}-\x{1d6a5}\x{1d6a8}-\x{1d6da}\x{1d6dc}-\x{1d714}\x{1d716}-\x{1d74e}\x{1d750}-\x{1d788}\x{1d78a}-\x{1d7c2}\x{1d7c4}-\x{1d7cb}\x{1d800}-\x{1d9ff}\x{1da37}-\x{1da3a}\x{1da6d}-\x{1da74}\x{1da76}-\x{1da83}\x{1da85}-\x{1da8b}\x{1f110}-\x{1f12e}\x{1f130}-\x{1f169}\x{1f170}-\x{1f19a}\x{1f1e6}-\x{1f202}\x{1f210}-\x{1f23a}\x{1f240}-\x{1f248}\x{1f250}\x{1f251}\x{20000}-\x{2a6d6}\x{2a700}-\x{2b734}\x{2b740}-\x{2b81d}\x{2b820}-\x{2cea1}\x{2f800}-\x{2fa1d}\x{f0000}-\x{ffffd}\x{100000}-\x{10fffd}])|([\x{590}\x{5be}\x{5c0}\x{5c3}\x{5c6}\x{5c8}-\x{5ff}\x{7c0}-\x{7ea}\x{7f4}\x{7f5}\x{7fa}-\x{815}\x{81a}\x{824}\x{828}\x{82e}-\x{858}\x{85c}-\x{89f}\x{200f}\x{fb1d}\x{fb1f}-\x{fb28}\x{fb2a}-\x{fb4f}\x{10800}-\x{1091e}\x{10920}-\x{10a00}\x{10a04}\x{10a07}-\x{10a0b}\x{10a10}-\x{10a37}\x{10a3b}-\x{10a3e}\x{10a40}-\x{10ae4}\x{10ae7}-\x{10b38}\x{10b40}-\x{10e5f}\x{10e7f}-\x{10fff}\x{1e800}-\x{1e8cf}\x{1e8d7}-\x{1edff}\x{1ef00}-\x{1efff}\x{608}\x{60b}\x{60d}\x{61b}-\x{64a}\x{66d}-\x{66f}\x{671}-\x{6d5}\x{6e5}\x{6e6}\x{6ee}\x{6ef}\x{6fa}-\x{710}\x{712}-\x{72f}\x{74b}-\x{7a5}\x{7b1}-\x{7bf}\x{8a0}-\x{8e2}\x{fb50}-\x{fd3d}\x{fd40}-\x{fdcf}\x{fdf0}-\x{fdfc}\x{fdfe}\x{fdff}\x{fe70}-\x{fefe}\x{1ee00}-\x{1eeef}\x{1eef2}-\x{1eeff}]))/u';
339// @codeCoverageIgnoreEnd
340
344publicfunction__construct(
345string $code,
346NamespaceInfo $namespaceInfo,
347LocalisationCache $localisationCache,
348LanguageNameUtils $langNameUtils,
349LanguageFallback $langFallback,
350LanguageConverterFactory $converterFactory,
351HookContainer $hookContainer,
352Config $config
353 ) {
354 $this->mCode = $code;
355 $this->namespaceInfo = $namespaceInfo;
356 $this->localisationCache = $localisationCache;
357 $this->langNameUtils = $langNameUtils;
358 $this->langFallback = $langFallback;
359 $this->converterFactory = $converterFactory;
360 $this->hookContainer = $hookContainer;
361 $this->hookRunner =newHookRunner( $hookContainer );
362 $this->config = $config;
363 }
364
369publicfunctiongetFallbackLanguages() {
370return $this->langFallback->getAll( $this->mCode );
371 }
372
377publicfunctiongetBookstoreList() {
378return $this->localisationCache->getItem( $this->mCode,'bookstoreList' );
379 }
380
388publicfunctiongetNamespaces() {
389if ( $this->namespaceNames ===null ) {
390 $metaNamespace = $this->config->get(MainConfigNames::MetaNamespace );
391 $metaNamespaceTalk = $this->config->get(MainConfigNames::MetaNamespaceTalk );
392 $extraNamespaces = $this->config->get(MainConfigNames::ExtraNamespaces );
393 $validNamespaces = $this->namespaceInfo->getCanonicalNamespaces();
394
395// @phan-suppress-next-line PhanTypeMismatchProperty
396 $this->namespaceNames = $extraNamespaces +
397 $this->localisationCache->getItem( $this->mCode,'namespaceNames' );
398// @phan-suppress-next-line PhanTypeInvalidLeftOperand
399 $this->namespaceNames += $validNamespaces;
400
401 $this->namespaceNames[NS_PROJECT] = $metaNamespace;
402if ( $metaNamespaceTalk ) {
403 $this->namespaceNames[NS_PROJECT_TALK] = $metaNamespaceTalk;
404 }else {
405 $talk = $this->namespaceNames[NS_PROJECT_TALK];
406 $this->namespaceNames[NS_PROJECT_TALK] =
407 $this->fixVariableInNamespace( $talk );
408 }
409
410 # Sometimes a language will be localised but not actually exist on this wiki.
411foreach ( $this->namespaceNames as $key => $text ) {
412if ( !isset( $validNamespaces[$key] ) ) {
413 unset( $this->namespaceNames[$key] );
414 }
415 }
416
417 # The above mixing may leave namespaces out of canonical order.
418 # Re-order by namespace ID number...
419 ksort( $this->namespaceNames );
420
421 $this->getHookRunner()->onLanguageGetNamespaces( $this->namespaceNames );
422 }
423
425 }
426
431publicfunctionsetNamespaces( array $namespaces ) {
432 $this->namespaceNames = $namespaces;
433 $this->mNamespaceIds =null;
434 }
435
440publicfunctionresetNamespaces() {
441 $this->namespaceNames =null;
442 $this->mNamespaceIds =null;
443 $this->namespaceAliases =null;
444 }
445
455publicfunctiongetFormattedNamespaces() {
456 $ns = $this->getNamespaces();
457foreach ( $ns as $k => $v ) {
458 $ns[$k] = strtr( $v,'_',' ' );
459 }
460return $ns;
461 }
462
476publicfunctiongetNsText( $index ) {
477 $ns = $this->getNamespaces();
478return $ns[$index] ??false;
479 }
480
494publicfunctiongetFormattedNsText( $index ) {
495 $ns = $this->getNsText( $index );
496return $ns ===false ?'' : strtr( $ns,'_',' ' );
497 }
498
507publicfunctiongetGenderNsText( $index, $gender ) {
508 $extraGenderNamespaces = $this->config->get(MainConfigNames::ExtraGenderNamespaces );
509
510 $ns = $extraGenderNamespaces +
511 (array)$this->localisationCache->getItem( $this->mCode,'namespaceGenderAliases' );
512
513return $ns[$index][$gender] ?? $this->getNsText( $index );
514 }
515
522publicfunctionneedsGenderDistinction() {
523 $extraGenderNamespaces = $this->config->get(MainConfigNames::ExtraGenderNamespaces );
524 $extraNamespaces = $this->config->get(MainConfigNames::ExtraNamespaces );
525if ( count( $extraGenderNamespaces ) > 0 ) {
526// $wgExtraGenderNamespaces overrides everything
527returntrue;
528 } elseif ( isset( $extraNamespaces[NS_USER] ) && isset( $extraNamespaces[NS_USER_TALK] ) ) {
529// @todo There may be other gender namespace than NS_USER & NS_USER_TALK in the future
530// $wgExtraNamespaces overrides any gender aliases specified in i18n files
531returnfalse;
532 }else {
533// Check what is in i18n files
534 $aliases = (array)$this->localisationCache->getItem( $this->mCode,'namespaceGenderAliases' );
535return count( $aliases ) > 0;
536 }
537 }
538
547publicfunctiongetLocalNsIndex( $text ) {
548 $lctext = $this->lc( $text );
549 $ids = $this->getNamespaceIds();
550return $ids[$lctext] ??false;
551 }
552
557publicfunctiongetNamespaceAliases() {
558if ( $this->namespaceAliases ===null ) {
559 $aliases = $this->localisationCache->getItem( $this->mCode,'namespaceAliases' );
560if ( !$aliases ) {
561 $aliases = [];
562 }else {
563foreach ( $aliases as $name => $index ) {
564if ( $index ===NS_PROJECT_TALK ) {
565 unset( $aliases[$name] );
566 $name = $this->fixVariableInNamespace( $name );
567 $aliases[$name] = $index;
568 }
569 }
570 }
571
572 $extraGenderNamespaces = $this->config->get(MainConfigNames::ExtraGenderNamespaces );
573 $genders = $extraGenderNamespaces + (array)$this->localisationCache
574 ->getItem( $this->mCode,'namespaceGenderAliases' );
575foreach ( $genders as $index => $forms ) {
576foreach ( $forms as $alias ) {
577 $aliases[$alias] = $index;
578 }
579 }
580
581 $langConverter = $this->getConverterInternal();
582 # Also add converted namespace names as aliases, to avoid confusion.
583 $convertedNames = [];
584foreach ( $langConverter->getVariants() as $variant ) {
585if ( $variant === $this->mCode ) {
586continue;
587 }
588foreach ( $this->getNamespaces() as $ns => $_ ) {
589 $convertedNames[$langConverter->convertNamespace( $ns, $variant )] = $ns;
590 }
591 }
592
593 $this->namespaceAliases = $aliases + $convertedNames;
594
595// In the case of conflicts between $wgNamespaceAliases and other sources
596// of aliasing, $wgNamespaceAliases wins.
597 $this->namespaceAliases = $this->config->get(MainConfigNames::NamespaceAliases ) +
599
600 # Filter out aliases to namespaces that don't exist, e.g. from extensions
601 # that aren't loaded here but are included in the l10n cache.
602 # (array_intersect preserves keys from its first argument)
603 $this->namespaceAliases = array_intersect(
604 $this->namespaceAliases,
605 array_keys( $this->getNamespaces() )
606 );
607 }
608
610 }
611
615publicfunctiongetNamespaceIds() {
616if ( $this->mNamespaceIds ===null ) {
617 # Put namespace names and aliases into a hashtable.
618 # If this is too slow, then we should arrange it so that it is done
619 # before caching. The catch is that at pre-cache time, the above
620 # class-specific fixup hasn't been done.
621 $this->mNamespaceIds = [];
622foreach ( $this->getNamespaces() as $index => $name ) {
623 $this->mNamespaceIds[$this->lc( $name )] = $index;
624 }
625foreach ( $this->getNamespaceAliases() as $name => $index ) {
626 $this->mNamespaceIds[$this->lc( $name )] = $index;
627 }
628 }
630 }
631
639publicfunctiongetNsIndex( $text ) {
640 $lctext = $this->lc( $text );
641 $ns = $this->namespaceInfo->getCanonicalIndex( $lctext );
642if ( $ns !==null ) {
643return $ns;
644 }
645 $ids = $this->getNamespaceIds();
646return $ids[$lctext] ??false;
647 }
648
656publicfunctiongetVariantname( $code, $usemsg =true ) {
657if ( $usemsg ) {
658 $msg = $this->msg("variantname-$code" );
659if ( $msg->exists() ) {
660return $msg->text();
661 }
662 }
663 $name = $this->langNameUtils->getLanguageName( $code );
664if ( $name ) {
665return $name; #if it's defined as a language name, show that
666 } else {
667 # otherwise, output the language code
668 return $code;
669 }
670 }
671
675 public function getDatePreferences() {
676 return $this->localisationCache->getItem( $this->mCode, 'datePreferences' );
677 }
678
682 public function getDateFormats() {
683 return $this->localisationCache->getItem( $this->mCode, 'dateFormats' );
684 }
685
689 public function getDefaultDateFormat() {
690 $df = $this->localisationCache->getItem( $this->mCode, 'defaultDateFormat' );
691 if ( $df === 'dmy or mdy' ) {
692 return $this->config->get( MainConfigNames::AmericanDates ) ? 'mdy' : 'dmy';
693 } else {
694 return $df;
695 }
696 }
697
701 public function getDatePreferenceMigrationMap() {
702 return $this->localisationCache->getItem( $this->mCode, 'datePreferenceMigrationMap' );
703 }
704
711 public function getMessageFromDB( $msg ) {
712 return $this->msg( $msg )->text();
713 }
714
724 protected function msg( $msg, ...$params ) {
725 return wfMessage( $msg, ...$params )->inLanguage( $this );
726 }
727
732 public function getMonthName( $key ) {
733 return $this->getMessageFromDB( self::MONTH_MESSAGES[$key - 1] );
734 }
735
739 public function getMonthNamesArray() {
740 $monthNames = [ '' ];
741 for ( $i = 1; $i <= 12; $i++ ) {
742 $monthNames[] = $this->getMonthName( $i );
743 }
744 return $monthNames;
745 }
746
751 public function getMonthNameGen( $key ) {
752 return $this->getMessageFromDB( self::MONTH_GENITIVE_MESSAGES[$key - 1] );
753 }
754
759 public function getMonthAbbreviation( $key ) {
760 return $this->getMessageFromDB( self::MONTH_ABBREVIATED_MESSAGES[$key - 1] );
761 }
762
766 public function getMonthAbbreviationsArray() {
767 $monthNames = [ '' ];
768 for ( $i = 1; $i <= 12; $i++ ) {
769 $monthNames[] = $this->getMonthAbbreviation( $i );
770 }
771 return $monthNames;
772 }
773
778 public function getWeekdayName( $key ) {
779 return $this->getMessageFromDB( self::WEEKDAY_MESSAGES[$key - 1] );
780 }
781
786 public function getWeekdayAbbreviation( $key ) {
787 return $this->getMessageFromDB( self::WEEKDAY_ABBREVIATED_MESSAGES[$key - 1] );
788 }
789
798 private static function dateTimeObj( &$dateTimeObj, $ts, $zone ): DateTime {
799 if ( !$dateTimeObj ) {
800 $dateTimeObj = DateTime::createFromFormat(
801 'YmdHis', $ts, $zone ?: new DateTimeZone( 'UTC' )
802 );
803 }
804 return $dateTimeObj;
805 }
806
816 private static function dateTimeObjFormat( &$dateTimeObj, $ts, $zone, $code ) {
817 return self::dateTimeObj( $dateTimeObj, $ts, $zone )->format( $code );
818 }
819
889 public function sprintfDate( $format, $ts, ?DateTimeZone $zone = null, &$ttl = 'unused' ) {
890 // @phan-suppress-previous-line PhanTypeMismatchDefault Type mismatch on pass-by-ref args
891 $s = '';
892 $raw = false;
893 $roman = false;
894 $hebrewNum = false;
895 $dateTimeObj = false;
896 $rawToggle = false;
897 $iranian = false;
898 $hebrew = false;
899 $hijri = false;
900 $thai = false;
901 $minguo = false;
902 $tenno = false;
903
904 $usedSecond = false;
905 $usedMinute = false;
906 $usedHour = false;
907 $usedAMPM = false;
908 $usedDay = false;
909 $usedWeek = false;
910 $usedMonth = false;
911 $usedYear = false;
912 $usedISOYear = false;
913 $usedIsLeapYear = false;
914
915 $usedHebrewMonth = false;
916 $usedIranianMonth = false;
917 $usedHijriMonth = false;
918 $usedHebrewYear = false;
919 $usedIranianYear = false;
920 $usedHijriYear = false;
921 $usedTennoYear = false;
922
923 if ( strlen( $ts ) !== 14 ) {
924 throw new InvalidArgumentException( __METHOD__ . ": The timestamp $ts should have 14 characters" );
925 }
926
927 if ( !ctype_digit( $ts ) ) {
928 throw new InvalidArgumentException( __METHOD__ . ": The timestamp $ts should be a number" );
929 }
930
931 $formatLength = strlen( $format );
932 for ( $p = 0; $p < $formatLength; $p++ ) {
933 $num = false;
934 $code = $format[$p];
935 if ( $code == 'x' && $p < $formatLength - 1 ) {
936 $code .= $format[++$p];
937 }
938
939 if ( ( $code === 'xi'
940 || $code === 'xj'
941 || $code === 'xk'
942 || $code === 'xm'
943 || $code === 'xo'
944 || $code === 'xt' )
945 && $p < $formatLength - 1
946 ) {
947 $code .= $format[++$p];
948 }
949
950 switch ( $code ) {
951 case 'xx':
952 $s .= 'x';
953 break;
954
955 case 'xn':
956 $raw = true;
957 break;
958
959 case 'xN':
960 $rawToggle = !$rawToggle;
961 break;
962
963 case 'xr':
964 $roman = true;
965 break;
966
967 case 'xh':
968 $hebrewNum = true;
969 break;
970
971 case 'xg':
972 $usedMonth = true;
973 $s .= $this->getMonthNameGen( (int)substr( $ts, 4, 2 ) );
974 break;
975
976 case 'xjx':
977 $usedHebrewMonth = true;
978 if ( !$hebrew ) {
979 $hebrew = self::tsToHebrew( $ts );
980 }
981 $s .= $this->getMessageFromDB( self::HEBREW_CALENDAR_MONTH_GENITIVE_MESSAGES[$hebrew[1] - 1] );
982 break;
983
984 case 'd':
985 $usedDay = true;
986 $num = substr( $ts, 6, 2 );
987 break;
988
989 case 'D':
990 $usedDay = true;
991 $s .= $this->getWeekdayAbbreviation(
992 (int)self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'w' ) + 1
993 );
994 break;
995
996 case 'j':
997 $usedDay = true;
998 $num = intval( substr( $ts, 6, 2 ) );
999 break;
1000
1001 case 'xij':
1002 $usedDay = true;
1003 if ( !$iranian ) {
1004 $iranian = self::tsToIranian( $ts );
1005 }
1006 $num = $iranian[2];
1007 break;
1008
1009 case 'xmj':
1010 $usedDay = true;
1011 if ( !$hijri ) {
1012 $hijri = self::tsToHijri( $ts );
1013 }
1014 $num = $hijri[2];
1015 break;
1016
1017 case 'xjj':
1018 $usedDay = true;
1019 if ( !$hebrew ) {
1020 $hebrew = self::tsToHebrew( $ts );
1021 }
1022 $num = $hebrew[2];
1023 break;
1024
1025 case 'l':
1026 $usedDay = true;
1027 $s .= $this->getWeekdayName(
1028 (int)self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'w' ) + 1
1029 );
1030 break;
1031
1032 case 'F':
1033 $usedMonth = true;
1034 $s .= $this->getMonthName( (int)substr( $ts, 4, 2 ) );
1035 break;
1036
1037 case 'xiF':
1038 $usedIranianMonth = true;
1039 if ( !$iranian ) {
1040 $iranian = self::tsToIranian( $ts );
1041 }
1042 $s .= $this->getMessageFromDB( self::IRANIAN_CALENDAR_MONTHS_MESSAGES[$iranian[1] - 1] );
1043 break;
1044
1045 case 'xmF':
1046 $usedHijriMonth = true;
1047 if ( !$hijri ) {
1048 $hijri = self::tsToHijri( $ts );
1049 }
1050 $s .= $this->getMessageFromDB( self::HIJRI_CALENDAR_MONTH_MESSAGES[$hijri[1] - 1] );
1051 break;
1052
1053 case 'xjF':
1054 $usedHebrewMonth = true;
1055 if ( !$hebrew ) {
1056 $hebrew = self::tsToHebrew( $ts );
1057 }
1058 $s .= $this->getMessageFromDB( self::HEBREW_CALENDAR_MONTHS_MESSAGES[$hebrew[1] - 1] );
1059 break;
1060
1061 case 'm':
1062 $usedMonth = true;
1063 $num = substr( $ts, 4, 2 );
1064 break;
1065
1066 case 'M':
1067 $usedMonth = true;
1068 $s .= $this->getMonthAbbreviation( (int)substr( $ts, 4, 2 ) );
1069 break;
1070
1071 case 'n':
1072 $usedMonth = true;
1073 $num = intval( substr( $ts, 4, 2 ) );
1074 break;
1075
1076 case 'xin':
1077 $usedIranianMonth = true;
1078 if ( !$iranian ) {
1079 $iranian = self::tsToIranian( $ts );
1080 }
1081 $num = $iranian[1];
1082 break;
1083
1084 case 'xmn':
1085 $usedHijriMonth = true;
1086 if ( !$hijri ) {
1087 $hijri = self::tsToHijri( $ts );
1088 }
1089 $num = $hijri[1];
1090 break;
1091
1092 case 'xjn':
1093 $usedHebrewMonth = true;
1094 if ( !$hebrew ) {
1095 $hebrew = self::tsToHebrew( $ts );
1096 }
1097 $num = $hebrew[1];
1098 break;
1099
1100 case 'xjt':
1101 $usedHebrewMonth = true;
1102 if ( !$hebrew ) {
1103 $hebrew = self::tsToHebrew( $ts );
1104 }
1105 $num = $hebrew[3];
1106 break;
1107
1108 case 'Y':
1109 $usedYear = true;
1110 $num = substr( $ts, 0, 4 );
1111 break;
1112
1113 case 'xiY':
1114 $usedIranianYear = true;
1115 if ( !$iranian ) {
1116 $iranian = self::tsToIranian( $ts );
1117 }
1118 $num = $iranian[0];
1119 break;
1120
1121 case 'xmY':
1122 $usedHijriYear = true;
1123 if ( !$hijri ) {
1124 $hijri = self::tsToHijri( $ts );
1125 }
1126 $num = $hijri[0];
1127 break;
1128
1129 case 'xjY':
1130 $usedHebrewYear = true;
1131 if ( !$hebrew ) {
1132 $hebrew = self::tsToHebrew( $ts );
1133 }
1134 $num = $hebrew[0];
1135 break;
1136
1137 case 'xkY':
1138 $usedYear = true;
1139 if ( !$thai ) {
1140 $thai = self::tsToYear( $ts, 'thai' );
1141 }
1142 $num = $thai[0];
1143 break;
1144
1145 case 'xoY':
1146 $usedYear = true;
1147 if ( !$minguo ) {
1148 $minguo = self::tsToYear( $ts, 'minguo' );
1149 }
1150 $num = $minguo[0];
1151 break;
1152
1153 case 'xtY':
1154 $usedTennoYear = true;
1155 if ( !$tenno ) {
1156 $tenno = self::tsToJapaneseGengo( $ts );
1157 }
1158 $num = $tenno;
1159 break;
1160
1161 case 'y':
1162 $usedYear = true;
1163 $num = substr( $ts, 2, 2 );
1164 break;
1165
1166 case 'xiy':
1167 $usedIranianYear = true;
1168 if ( !$iranian ) {
1169 $iranian = self::tsToIranian( $ts );
1170 }
1171 $num = substr( (string)$iranian[0], -2 );
1172 break;
1173
1174 case 'xit':
1175 $usedIranianYear = true;
1176 if ( !$iranian ) {
1177 $iranian = self::tsToIranian( $ts );
1178 }
1179 $num = self::IRANIAN_DAYS[$iranian[1] - 1];
1180 break;
1181
1182 case 'xiz':
1183 $usedIranianYear = true;
1184 if ( !$iranian ) {
1185 $iranian = self::tsToIranian( $ts );
1186 }
1187 $num = $iranian[3];
1188 break;
1189
1190 case 'a':
1191 $usedAMPM = true;
1192 $s .= intval( substr( $ts, 8, 2 ) ) < 12 ? 'am' : 'pm';
1193 break;
1194
1195 case 'A':
1196 $usedAMPM = true;
1197 $s .= intval( substr( $ts, 8, 2 ) ) < 12 ? 'AM' : 'PM';
1198 break;
1199
1200 case 'g':
1201 $usedHour = true;
1202 $h = (int)substr( $ts, 8, 2 );
1203 $num = $h % 12 ?: 12;
1204 break;
1205
1206 case 'G':
1207 $usedHour = true;
1208 $num = intval( substr( $ts, 8, 2 ) );
1209 break;
1210
1211 case 'h':
1212 $usedHour = true;
1213 $h = (int)substr( $ts, 8, 2 );
1214 $num = sprintf( '%02d', $h % 12 ?: 12 );
1215 break;
1216
1217 case 'H':
1218 $usedHour = true;
1219 $num = substr( $ts, 8, 2 );
1220 break;
1221
1222 case 'i':
1223 $usedMinute = true;
1224 $num = substr( $ts, 10, 2 );
1225 break;
1226
1227 case 's':
1228 $usedSecond = true;
1229 $num = substr( $ts, 12, 2 );
1230 break;
1231
1232 case 'c':
1233 case 'r':
1234 $usedSecond = true;
1235 // fall through
1236 case 'e':
1237 case 'O':
1238 case 'P':
1239 case 'T':
1240 $s .= self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code );
1241 break;
1242
1243 case 'w':
1244 case 'N':
1245 case 'z':
1246 $usedDay = true;
1247 $num = self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code );
1248 break;
1249
1250 case 'W':
1251 $usedWeek = true;
1252 $num = self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code );
1253 break;
1254
1255 case 't':
1256 $usedMonth = true;
1257 $num = self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code );
1258 break;
1259
1260 case 'L':
1261 $usedIsLeapYear = true;
1262 $num = self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code );
1263 break;
1264
1265 case 'o':
1266 $usedISOYear = true;
1267 $num = self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code );
1268 break;
1269
1270 case 'U':
1271 $usedSecond = true;
1272 // fall through
1273 case 'I':
1274 case 'Z':
1275 $num = self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code );
1276 break;
1277
1278 case '\\':
1279 # Backslash escaping
1280 if ( $p < $formatLength - 1 ) {
1281 $s .= $format[++$p];
1282 } else {
1283 $s .= '\\';
1284 }
1285 break;
1286
1287 case '"':
1288 # Quoted literal
1289 if ( $p < $formatLength - 1 ) {
1290 $endQuote = strpos( $format, '"', $p + 1 );
1291 if ( $endQuote === false ) {
1292 # No terminating quote, assume literal "
1293 $s .= '"';
1294 } else {
1295 $s .= substr( $format, $p + 1, $endQuote - $p - 1 );
1296 $p = $endQuote;
1297 }
1298 } else {
1299 # Quote at the end of the string, assume literal "
1300 $s .='"';
1301 }
1302break;
1303
1304default:
1305 $s .= $format[$p];
1306 }
1307if ( $num !==false ) {
1308if ( $rawToggle || $raw ) {
1309 $s .= $num;
1310 $raw =false;
1311 } elseif ( $roman ) {
1312 $s .=self::romanNumeral( $num );
1313 $roman =false;
1314 } elseif ( $hebrewNum ) {
1315 $s .=self::hebrewNumeral( $num );
1316 $hebrewNum =false;
1317 } elseif ( preg_match('/^[\d.]+$/', $num ) ) {
1318 $s .= $this->formatNumNoSeparators( $num );
1319 }else {
1320 $s .= $num;
1321 }
1322 }
1323 }
1324
1325if ( $ttl !=='unused' ) {
1326// Ensure $dateTimeObj is set.
1327 self::dateTimeObj( $dateTimeObj, $ts, $zone );
1328 }
1329'@phan-var DateTime $dateTimeObj';
1330if ( $ttl ==='unused' ) {
1331// No need to calculate the TTL, the caller won't use it anyway.
1332 } elseif ( $usedSecond ) {
1333 $ttl = self::computeUnitTimestampDeadline( $dateTimeObj,'s' );
1334 } elseif ( $usedMinute ) {
1335 $ttl = self::computeUnitTimestampDeadline( $dateTimeObj,'m' );
1336 } elseif ( $usedHour ) {
1337 $ttl = self::computeUnitTimestampDeadline( $dateTimeObj,'H' );
1338 } elseif ( $usedAMPM ) {
1339 $ttl = self::computeUnitTimestampDeadline( $dateTimeObj,'AM' );
1340 } elseif (
1341 $usedDay ||
1342 $usedHebrewMonth ||
1343 $usedIranianMonth ||
1344 $usedHijriMonth ||
1345 $usedHebrewYear ||
1346 $usedIranianYear ||
1347 $usedHijriYear ||
1348 $usedTennoYear
1349 ) {
1350// @todo Someone who understands the non-Gregorian calendars
1351// should write proper logic for them so that they don't need purged every day.
1352 $ttl = self::computeUnitTimestampDeadline( $dateTimeObj,'D' );
1353 }else {
1354 $possibleTtls = [];
1355if ( $usedWeek ) {
1356 $possibleTtls[] =
1357 self::computeUnitTimestampDeadline( $dateTimeObj,'W' );
1358 } elseif ( $usedISOYear ) {
1359// December 28th falls on the last ISO week of the year, every year.
1360// The last ISO week of a year can be 52 or 53.
1361 $possibleTtls[] =
1362 self::computeUnitTimestampDeadline( $dateTimeObj,'ISOY' );
1363 }
1364
1365if ( $usedMonth ) {
1366 $possibleTtls[] =
1367 self::computeUnitTimestampDeadline( $dateTimeObj,'M' );
1368 } elseif ( $usedYear ) {
1369 $possibleTtls[] =
1370 self::computeUnitTimestampDeadline( $dateTimeObj,'Y' );
1371 } elseif ( $usedIsLeapYear ) {
1372 $year = (int)substr( $ts, 0, 4 );
1373 $mod = $year % 4;
1374 $timeRemainingInYear =
1375 self::computeUnitTimestampDeadline( $dateTimeObj,'Y' );
1376if ( $mod || ( !( $year % 100 ) && $year % 400 ) ) {
1377// this isn't a leap year. see when the next one starts
1378 $nextCandidate = $year - $mod + 4;
1379if ( $nextCandidate % 100 || !( $nextCandidate % 400 ) ) {
1380 $possibleTtls[] = ( $nextCandidate - $year - 1 ) * 365 * 86400 +
1381 $timeRemainingInYear;
1382 }else {
1383 $possibleTtls[] = ( $nextCandidate - $year + 3 ) * 365 * 86400 +
1384 $timeRemainingInYear;
1385 }
1386 }else {
1387// this is a leap year, so the next year isn't
1388 $possibleTtls[] = $timeRemainingInYear;
1389 }
1390 }
1391
1392if ( $possibleTtls ) {
1393 $ttl = min( $possibleTtls );
1394 }
1395 }
1396
1397return $s;
1398 }
1399
1410 DateTimeInterface $date,
1411string $unit
1412 ): int {
1413// Ensure we don't mutate our argument
1414 $date = DateTimeImmutable::createFromInterface( $date );
1415 $tsUnix = $date->getTimestamp();
1416
1417 $date = $date->modify( self::DEADLINE_DATE_SPEC_BY_UNIT[$unit] );
1418if ( $unit ==='AM' ) {
1419if ( $date->getTimestamp() <= $tsUnix ) {
1420 $date = $date->modify( self::DEADLINE_DATE_SPEC_BY_UNIT['D'] );
1421 }
1422 } elseif ( $unit ==='ISOY' ) {
1423// December 28th falls on the last ISO week of the year, every year.
1424// but we could be in the same, next, or previous ISO year as
1425// December 28 of this calendar year.
1426// Compute all three and use the first which is in the future.
1427 $lastYear = $date->modify(
1428'december 28 midnight last year'
1429 )->modify('monday next week midnight' );
1430 $nextYear = $date->modify(
1431'december 28 midnight next year'
1432 )->modify('monday next week midnight' );
1433// Advance to first week of next ISO year
1434 $date = $date->modify('monday next week midnight' );
1435if ( $lastYear->getTimestamp() > $tsUnix ) {
1436 $date = $lastYear;
1437 } elseif ( $date->getTimestamp() <= $tsUnix ) {
1438 $date = $nextYear;
1439 }
1440 } elseif ( $unit ==='H' ) {
1441// Zero out the minutes/seconds
1442 $date = $date->setTime( intval( $date->format('H' ), 10 ), 0, 0 );
1443 } elseif ( $unit ==='m' ) {
1444// Zero out the seconds
1445 $date = $date->setTime( intval( $date->format('H' ), 10 ),
1446 intval( $date->format('i' ), 10 ), 0 );
1447 } elseif ( $unit ==='s' ) {
1448// Zero out the fractional seconds
1449 $date = $date->setTime( intval( $date->format('H' ), 10 ),
1450 intval( $date->format('i' ), 10 ),
1451 intval( $date->format('s' ), 10 ) );
1452 }else {
1453 $date = $date->setTime( 0, 0, 0 );
1454 }
1455 $deadlineUnix = (int)$date->format('U' );
1456return $deadlineUnix - $tsUnix;
1457 }
1458
1462privateconst GREG_DAYS = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];
1463
1467privateconst IRANIAN_DAYS = [ 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29 ];
1468
1481privatestaticfunction tsToIranian( $ts ) {
1482 $gy = (int)substr( $ts, 0, 4 ) - 1600;
1483 $gm = (int)substr( $ts, 4, 2 ) - 1;
1484 $gd = (int)substr( $ts, 6, 2 ) - 1;
1485
1486 # Days passed from the beginning (including leap years)
1487 $gDayNo = 365 * $gy
1488 + floor( ( $gy + 3 ) / 4 )
1489 - floor( ( $gy + 99 ) / 100 )
1490 + floor( ( $gy + 399 ) / 400 );
1491
1492// Add the number of days for the past months of this year
1493for ( $i = 0; $i < $gm; $i++ ) {
1494 $gDayNo += self::GREG_DAYS[$i];
1495 }
1496
1497// Leap years
1498if ( $gm > 1 && ( ( $gy % 4 === 0 && $gy % 100 !== 0 ) || $gy % 400 == 0 ) ) {
1499 $gDayNo++;
1500 }
1501
1502// Days passed in the current month
1503 $gDayNo += $gd;
1504
1505 $jDayNo = $gDayNo - 79;
1506
1507 $jNp = (int)floor( $jDayNo / 12053 );
1508 $jDayNo %= 12053;
1509
1510 $jy = 979 + 33 * $jNp + 4 * (int)floor( $jDayNo / 1461 );
1511 $jDayNo %= 1461;
1512
1513if ( $jDayNo >= 366 ) {
1514 $jy += (int)floor( ( $jDayNo - 1 ) / 365 );
1515 $jDayNo = (int)floor( ( $jDayNo - 1 ) % 365 );
1516 }
1517
1518 $jz = $jDayNo;
1519
1520for ( $i = 0; $i < 11 && $jDayNo >= self::IRANIAN_DAYS[$i]; $i++ ) {
1521 $jDayNo -= self::IRANIAN_DAYS[$i];
1522 }
1523
1524 $jm = $i + 1;
1525 $jd = $jDayNo + 1;
1526
1527return [ $jy, $jm, $jd, $jz ];
1528 }
1529
1541privatestaticfunction tsToHijri( $ts ) {
1542 $year = (int)substr( $ts, 0, 4 );
1543 $month = (int)substr( $ts, 4, 2 );
1544 $day = (int)substr( $ts, 6, 2 );
1545
1546 $zyr = $year;
1547 $zd = $day;
1548 $zm = $month;
1549 $zy = $zyr;
1550
1551if (
1552 ( $zy > 1582 ) || ( ( $zy == 1582 ) && ( $zm > 10 ) ) ||
1553 ( ( $zy == 1582 ) && ( $zm == 10 ) && ( $zd > 14 ) )
1554 ) {
1555 $zjd = (int)( ( 1461 * ( $zy + 4800 + (int)( ( $zm - 14 ) / 12 ) ) ) / 4 ) +
1556 (int)( ( 367 * ( $zm - 2 - 12 * ( (int)( ( $zm - 14 ) / 12 ) ) ) ) / 12 ) -
1557 (int)( ( 3 * (int)( ( $zy + 4900 + (int)( ( $zm - 14 ) / 12 ) ) / 100 ) ) / 4 ) +
1558 $zd - 32075;
1559 }else {
1560 $zjd = 367 * $zy - (int)( ( 7 * ( $zy + 5001 + (int)( ( $zm - 9 ) / 7 ) ) ) / 4 ) +
1561 (int)( ( 275 * $zm ) / 9 ) + $zd + 1729777;
1562 }
1563
1564 $zl = $zjd - 1948440 + 10632;
1565 $zn = (int)( ( $zl - 1 ) / 10631 );
1566 $zl = $zl - 10631 * $zn + 354;
1567 $zj = ( (int)( ( 10985 - $zl ) / 5316 ) ) * ( (int)( ( 50 * $zl ) / 17719 ) ) +
1568 ( (int)( $zl / 5670 ) ) * ( (int)( ( 43 * $zl ) / 15238 ) );
1569 $zl = $zl - ( (int)( ( 30 - $zj ) / 15 ) ) * ( (int)( ( 17719 * $zj ) / 50 ) ) -
1570 ( (int)( $zj / 16 ) ) * ( (int)( ( 15238 * $zj ) / 43 ) ) + 29;
1571 $zm = (int)( ( 24 * $zl ) / 709 );
1572 $zd = $zl - (int)( ( 709 * $zm ) / 24 );
1573 $zy = 30 * $zn + $zj - 30;
1574
1575return [ $zy, $zm, $zd ];
1576 }
1577
1593privatestaticfunction tsToHebrew( $ts ) {
1594 # Parse date
1595 $year = (int)substr( $ts, 0, 4 );
1596 $month = (int)substr( $ts, 4, 2 );
1597 $day = (int)substr( $ts, 6, 2 );
1598
1599 # Calculate Hebrew year
1600 $hebrewYear = $year + 3760;
1601
1602 # Month number when September = 1, August = 12
1603 $month += 4;
1604if ( $month > 12 ) {
1605 # Next year
1606 $month -= 12;
1607 $year++;
1608 $hebrewYear++;
1609 }
1610
1611 # Calculate day of year from 1 September
1612 $dayOfYear = $day;
1613for ( $i = 1; $i < $month; $i++ ) {
1614if ( $i == 6 ) {
1615 # February
1616 $dayOfYear += 28;
1617 # Check if the year is a leap year
1618if ( $year % 400 == 0 || ( $year % 4 == 0 && $year % 100 > 0 ) ) {
1619 $dayOfYear++;
1620 }
1621 } elseif ( $i == 8 || $i == 10 || $i == 1 || $i == 3 ) {
1622 $dayOfYear += 30;
1623 }else {
1624 $dayOfYear += 31;
1625 }
1626 }
1627
1628 # Calculate the start of the Hebrew year
1629 $start = self::hebrewYearStart( $hebrewYear );
1630
1631 # Calculate next year's start
1632if ( $dayOfYear <= $start ) {
1633 # Day is before the start of the year - it is the previous year
1634 # Next year's start
1635 $nextStart = $start;
1636 # Previous year
1637 $year--;
1638 $hebrewYear--;
1639 # Add days since the previous year's 1 September
1640 $dayOfYear += 365;
1641if ( ( $year % 400 == 0 ) || ( $year % 100 != 0 && $year % 4 == 0 ) ) {
1642 # Leap year
1643 $dayOfYear++;
1644 }
1645 # Start of the new (previous) year
1646 $start = self::hebrewYearStart( $hebrewYear );
1647 }else {
1648 # Next year's start
1649 $nextStart = self::hebrewYearStart( $hebrewYear + 1 );
1650 }
1651
1652 # Calculate Hebrew day of year
1653 $hebrewDayOfYear = $dayOfYear - $start;
1654
1655 # Difference between year's days
1656 $diff = $nextStart - $start;
1657 # Add 12 (or 13 for leap years) days to ignore the difference between
1658 # Hebrew and Gregorian year (353 at least vs. 365/6) - now the
1659 # difference is only about the year type
1660if ( ( $year % 400 == 0 ) || ( $year % 100 != 0 && $year % 4 == 0 ) ) {
1661 $diff += 13;
1662 }else {
1663 $diff += 12;
1664 }
1665
1666 # Check the year pattern, and is leap year
1667 # 0 means an incomplete year, 1 means a regular year, 2 means a complete year
1668 # This is mod 30, to work on both leap years (which add 30 days of Adar I)
1669 # and non-leap years
1670 $yearPattern = $diff % 30;
1671 # Check if leap year
1672 $isLeap = $diff >= 30;
1673
1674 # Calculate day in the month from number of day in the Hebrew year
1675 # Don't check Adar - if the day is not in Adar, we will stop before;
1676 # if it is in Adar, we will use it to check if it is Adar I or Adar II
1677 $hebrewDay = $hebrewDayOfYear;
1678 $hebrewMonth = 1;
1679 $days = 0;
1680while ( $hebrewMonth <= 12 ) {
1681 # Calculate days in this month
1682if ( $isLeap && $hebrewMonth == 6 ) {
1683 # Leap year - has Adar I, with 30 days, and Adar II, with 29 days
1684 $days = 30;
1685if ( $hebrewDay <= $days ) {
1686 # Day in Adar I
1687 $hebrewMonth = 13;
1688 }else {
1689 # Subtract the days of Adar I
1690 $hebrewDay -= $days;
1691 # Try Adar II
1692 $days = 29;
1693if ( $hebrewDay <= $days ) {
1694 # Day in Adar II
1695 $hebrewMonth = 14;
1696 }
1697 }
1698 } elseif ( $hebrewMonth == 2 && $yearPattern == 2 ) {
1699 # Cheshvan in a complete year (otherwise as the rule below)
1700 $days = 30;
1701 } elseif ( $hebrewMonth == 3 && $yearPattern == 0 ) {
1702 # Kislev in an incomplete year (otherwise as the rule below)
1703 $days = 29;
1704 }else {
1705 # Odd months have 30 days, even have 29
1706 $days = 30 - ( $hebrewMonth - 1 ) % 2;
1707 }
1708if ( $hebrewDay <= $days ) {
1709 # In the current month
1710break;
1711 }else {
1712 # Subtract the days of the current month
1713 $hebrewDay -= $days;
1714 # Try in the next month
1715 $hebrewMonth++;
1716 }
1717 }
1718
1719return [ $hebrewYear, $hebrewMonth, $hebrewDay, $days ];
1720 }
1721
1731privatestaticfunction hebrewYearStart( $year ) {
1732 $a = ( 12 * ( $year - 1 ) + 17 ) % 19;
1733 $b = ( $year - 1 ) % 4;
1734 $m = 32.044093161144 + 1.5542417966212 * $a + $b / 4.0 - 0.0031777940220923 * ( $year - 1 );
1735if ( $m < 0 ) {
1736 $m--;
1737 }
1738 $Mar = intval( $m );
1739if ( $m < 0 ) {
1740 $m++;
1741 }
1742 $m -= $Mar;
1743
1744 $c = ( $Mar + 3 * ( $year - 1 ) + 5 * $b + 5 ) % 7;
1745if ( $c == 0 && $a > 11 && $m >= 0.89772376543210 ) {
1746 $Mar++;
1747 } elseif ( $c == 1 && $a > 6 && $m >= 0.63287037037037 ) {
1748 $Mar += 2;
1749 } elseif ( $c == 2 || $c == 4 || $c == 6 ) {
1750 $Mar++;
1751 }
1752
1753 $Mar += intval( ( $year - 3761 ) / 100 ) - intval( ( $year - 3761 ) / 400 ) - 24;
1754return $Mar;
1755 }
1756
1768privatestaticfunction tsToYear( $ts, $cName ) {
1769 $gy = (int)substr( $ts, 0, 4 );
1770 $gm = (int)substr( $ts, 4, 2 );
1771 $gd = (int)substr( $ts, 6, 2 );
1772
1773if ( $cName ==='thai' ) {
1774 # Thai solar dates
1775 # Add 543 years to the Gregorian calendar
1776 # Months and days are identical
1777 $gy_offset = $gy + 543;
1778 # fix for dates between 1912 and 1941
1779 # https://en.wikipedia.org/?oldid=836596673#New_year
1780if ( $gy >= 1912 && $gy <= 1940 ) {
1781if ( $gm <= 3 ) {
1782 $gy_offset--;
1783 }
1784 $gm = ( $gm - 3 ) % 12;
1785 }
1786 } elseif ( $cName ==='minguo' || $cName ==='juche' ) {
1787 # Minguo dates
1788 # Deduct 1911 years from the Gregorian calendar
1789 # Months and days are identical
1790 $gy_offset = $gy - 1911;
1791 }else {
1792 $gy_offset = $gy;
1793 }
1794
1795return [ $gy_offset, $gm, $gd ];
1796 }
1797
1806privatestaticfunction tsToJapaneseGengo( $ts ) {
1807 # Nengō dates up to Meiji period.
1808 # Deduct years from the Gregorian calendar
1809 # depending on the nengo periods
1810 # The months and days are identical
1811 $gy = (int)substr( $ts, 0, 4 );
1812 $ts = (int)$ts;
1813if ( $ts >= 18730101000000 && $ts < 19120730000000 ) {
1814 # Meiji period; start from meiji 6 (1873) it starts using gregorian year
1815return self::tsToJapaneseGengoCalculate( $gy, 1868,'明治' );
1816 } elseif ( $ts >= 19120730000000 && $ts < 19261225000000 ) {
1817 # Taishō period
1818return self::tsToJapaneseGengoCalculate( $gy, 1912,'大正' );
1819 } elseif ( $ts >= 19261225000000 && $ts < 19890108000000 ) {
1820 # Shōwa period
1821return self::tsToJapaneseGengoCalculate( $gy, 1926,'昭和' );
1822 } elseif ( $ts >= 19890108000000 && $ts < 20190501000000 ) {
1823 # Heisei period
1824return self::tsToJapaneseGengoCalculate( $gy, 1989,'平成' );
1825 } elseif ( $ts >= 20190501000000 ) {
1826 # Reiwa period
1827return self::tsToJapaneseGengoCalculate( $gy, 2019,'令和' );
1828 }
1829return"西暦$gy";
1830 }
1831
1842privatestaticfunction tsToJapaneseGengoCalculate( $gy, $startYear, $gengo ) {
1843 $gy_offset = $gy - $startYear + 1;
1844if ( $gy_offset == 1 ) {
1845 $gy_offset ='元';
1846 }
1847return"$gengo$gy_offset";
1848 }
1849
1863privatestaticfunction strongDirFromContent( $text ='' ) {
1864if ( !preg_match( self::$strongDirRegex, $text,$matches ) ) {
1865returnnull;
1866 }
1867if ($matches[1] ==='' ) {
1868return'rtl';
1869 }
1870return'ltr';
1871 }
1872
1880publicstaticfunctionromanNumeral( $num ) {
1881static $table = [
1882 ['','I','II','III','IV','V','VI','VII','VIII','IX','X' ],
1883 ['','X','XX','XXX','XL','L','LX','LXX','LXXX','XC','C' ],
1884 ['','C','CC','CCC','CD','D','DC','DCC','DCCC','CM','M' ],
1885 ['','M','MM','MMM','MMMM','MMMMM','MMMMMM','MMMMMMM',
1886'MMMMMMMM','MMMMMMMMM','MMMMMMMMMM' ]
1887 ];
1888
1889 $num = intval( $num );
1890if ( $num > 10000 || $num <= 0 ) {
1891return (string)$num;
1892 }
1893
1894 $s ='';
1895for ( $pow10 = 1000, $i = 3; $i >= 0; $pow10 /= 10, $i-- ) {
1896if ( $num >= $pow10 ) {
1897 $s .= $table[$i][(int)floor( $num / $pow10 )];
1898 }
1899 $num %= $pow10;
1900 }
1901return $s;
1902 }
1903
1911publicstaticfunctionhebrewNumeral( $num ) {
1912static $table = [
1913 ['','א','ב','ג','ד','ה','ו','ז','ח','ט','י' ],
1914 ['','י','כ','ל','מ','נ','ס','ע','פ','צ','ק' ],
1915 ['',
1916 ['ק' ],
1917 ['ר' ],
1918 ['ש' ],
1919 ['ת' ],
1920 ['ת','ק' ],
1921 ['ת','ר' ],
1922 ['ת','ש' ],
1923 ['ת','ת' ],
1924 ['ת','ת','ק' ],
1925 ['ת','ת','ר' ],
1926 ],
1927 ['','א','ב','ג','ד','ה','ו','ז','ח','ט','י' ]
1928 ];
1929
1930 $num = intval( $num );
1931if ( $num > 9999 || $num <= 0 ) {
1932return (string)$num;
1933 }
1934
1935// Round thousands have special notations
1936if ( $num === 1000 ) {
1937return"א' אלף";
1938 } elseif ( $num % 1000 === 0 ) {
1939return $table[0][$num / 1000] ."' אלפים";
1940 }
1941
1942 $letters = [];
1943
1944for ( $pow10 = 1000, $i = 3; $i >= 0; $pow10 /= 10, $i-- ) {
1945if ( $num >= $pow10 ) {
1946if ( $num === 15 || $num === 16 ) {
1947 $letters[] = $table[0][9];
1948 $letters[] = $table[0][$num - 9];
1949 $num = 0;
1950 }else {
1951 $letters = array_merge(
1952 $letters,
1953 (array)$table[$i][intval( $num / $pow10 )]
1954 );
1955
1956if ( $pow10 === 1000 ) {
1957 $letters[] ="'";
1958 }
1959 }
1960 }
1961
1962 $num %= $pow10;
1963 }
1964
1965 $preTransformLength = count( $letters );
1966if ( $preTransformLength === 1 ) {
1967// Add geresh (single quote) to one-letter numbers
1968 $letters[] ="'";
1969 }else {
1970 $lastIndex = $preTransformLength - 1;
1971 $letters[$lastIndex] = strtr(
1972 $letters[$lastIndex],
1973 ['כ' =>'ך','מ' =>'ם','נ' =>'ן','פ' =>'ף','צ' =>'ץ' ]
1974 );
1975
1976// Add gershayim (double quote) to multiple-letter numbers,
1977// but exclude numbers with only one letter after the thousands
1978// (1001-1009, 1020, 1030, 2001-2009, etc.)
1979if ( $letters[1] ==="'" && $preTransformLength === 3 ) {
1980 $letters[] ="'";
1981 }else {
1982 array_splice( $letters, -1, 0,'"' );
1983 }
1984 }
1985
1986return implode( $letters );
1987 }
1988
1997publicfunctionuserAdjust( $ts, $tz =false ) {
1998 $localTZoffset = $this->config->get( MainConfigNames::LocalTZoffset );
1999if ( $tz ===false ) {
2000 $optionsLookup = MediaWikiServices::getInstance()->getUserOptionsLookup();
2001 $tz = $optionsLookup->getOption(
2002 RequestContext::getMain()->getUser(),
2003'timecorrection'
2004 );
2005 }
2006
2007 $timeCorrection =newUserTimeCorrection( (string)$tz,null, $localTZoffset );
2008
2009 $tzObj = $timeCorrection->getTimeZone();
2010if ( $tzObj ) {
2011 $date =new DateTime( $ts,new DateTimeZone('UTC' ) );
2012 $date->setTimezone( $tzObj );
2013return self::makeMediaWikiTimestamp( $ts, $date );
2014 }
2015 $minDiff = $timeCorrection->getTimeOffset();
2016
2017 # No difference? Return the time unchanged
2018if ( $minDiff === 0 ) {
2019return $ts;
2020 }
2021
2022 $date =new DateTime( $ts );
2023 $date->modify("{$minDiff} minutes" );
2024return self::makeMediaWikiTimestamp( $ts, $date );
2025 }
2026
2042privatefunction convertDateFormatToJs( $format ) {
2043// CLDR calendar IDs by format code
2044 $calendars = [
2045'j' =>'hebrew',
2046'i' =>'persian',// Iranian
2047'm' =>'islamic',// Hijri
2048'k' =>'buddhist',// Thai
2049'o' =>'roc',// Minguo
2050't' =>'japanese'// Tenno
2051 ];
2052
2053 $s ='';
2054 $mwOpts = [];
2055 $intlOpts = [
2056'numberingSystem' => $this->localisationCache
2057 ->getItem( $this->mCode,'numberingSystem' ) ??'latn'
2058 ];
2059 $unsupported = [];
2060 $formatLength = strlen( $format );
2061
2062for ( $p = 0; $p < $formatLength; $p++ ) {
2063 $code = $format[$p];
2064if ( $code =='x' && $p < $formatLength - 1 ) {
2065 $code .= $format[++$p];
2066 }
2067
2068if ( ( $code ==='xi'
2069 || $code ==='xj'
2070 || $code ==='xk'
2071 || $code ==='xm'
2072 || $code ==='xo'
2073 || $code ==='xt' )
2074 && $p < $formatLength - 1
2075 ) {
2076 $code .= $format[++$p];
2077 }
2078
2079switch ( $code ) {
2080case'xx':
2081 $s .='x';
2082break;
2083
2084case'xn':
2085case'xN':
2086// Raw number -- usually safe enough in ISO 8601 styles
2087// although we don't support switching
2088 $mwOpts['locale'] ='en';
2089 unset( $intlOpts['numberingSystem'] );
2090break;
2091
2092case'xr':
2093// Roman numerals
2094// Multiple numbering systems are usually used in the one format,
2095// which is unsupported. Also, browsers do not implement it.
2096 $unsupported[] = $code;
2097break;
2098
2099case'xh':
2100// Hebrew numerals. Browsers do not implement it as of 2025,
2101// and usually multiple numbering systems are desired in a
2102// single format.
2103 $unsupported[] = $code;
2104 $intlOpts['numberingSystem'] ='hebr';
2105break;
2106
2107case'xg':
2108// Genitive month name
2109 $intlOpts['month'] ='long';
2110 $s .='{mwMonthGen}';
2111break;
2112
2113case'xjx':
2114// Genitive month name in Hebrew calendar
2115 $intlOpts['calendar'] ='hebrew';
2116 $intlOpts['month'] ='long';
2117 $s .='{mwMonthGen}';
2118break;
2119
2120case'd':
2121 $intlOpts['day'] ='2-digit';
2122 $s .='{day}';
2123break;
2124
2125case'D':
2126 $intlOpts['weekday'] ='short';
2127 $s .='{weekday}';
2128break;
2129
2130case'j':
2131 $intlOpts['day'] ='numeric';
2132 $s .='{day}';
2133break;
2134
2135case'xij':
2136case'xmj':
2137case'xjj':
2138// Day number in special calendar
2139 $intlOpts['day'] ='numeric';
2140 $intlOpts['calendar'] = $calendars[$code[1]];
2141 $s .='{day}';
2142break;
2143
2144case'l':
2145 $intlOpts['weekday'] ='long';
2146 $s .='{weekday}';
2147break;
2148
2149case'F':
2150 $intlOpts['month'] ='long';
2151 $s .='{mwMonth}';
2152break;
2153
2154case'xiF':
2155case'xmF':
2156case'xjF':
2157// Full month name in special calendar
2158 $intlOpts['month'] ='long';
2159 $intlOpts['calendar'] = $calendars[$code[1]];
2160 $s .='{month}';
2161break;
2162
2163case'm':
2164 $intlOpts['month'] ='2-digit';
2165 $s .='{month}';
2166break;
2167
2168case'M':
2169 $intlOpts['month'] ='short';
2170 $s .='{mwMonthAbbrev}';
2171break;
2172
2173case'n':
2174 $intlOpts['month'] ='numeric';
2175 $s .='{month}';
2176break;
2177
2178case'xin':
2179case'xmn':
2180case'xjn':
2181// Numeric month in special calendar
2182 $intlOpts['month'] ='numeric';
2183 $intlOpts['calendar'] = $calendars[$code[1]];
2184 $s .='{month}';
2185break;
2186
2187case'xjt':
2188// Number of days in the given Hebrew month -- not supported
2189 $unsupported[] = $code;
2190break;
2191
2192case'Y':
2193 $intlOpts['year'] ='numeric';
2194 $s .='{year}';
2195break;
2196
2197case'xiY':
2198case'xmY':
2199case'xjY':
2200case'xkY':
2201case'xoY':
2202// Year number in special calendar
2203 $intlOpts['year'] ='numeric';
2204 $intlOpts['calendar'] = $calendars[$code[1]];
2205 $s .='{year}';
2206break;
2207
2208case'xtY':
2209// Japanese year needs to be prefixed with the era name to
2210// be consistent with tsToJapaneseGengo()
2211 $intlOpts['era'] ='short';
2212 $intlOpts['year'] ='numeric';
2213 $intlOpts['calendar'] = $calendars[$code[1]];
2214 $s .='{era}{year}';
2215break;
2216
2217case'y':
2218 $intlOpts['year'] ='2-digit';
2219 $s .='{year}';
2220break;
2221
2222case'xiy':
2223// Iranian 2-digit year
2224 $intlOpts['calendar'] ='persian';
2225 $intlOpts['year'] ='2-digit';
2226 $s .='{year}';
2227break;
2228
2229case'xit':
2230// Number of days in Iranian month -- not supported
2231 $unsupported[] = $code;
2232break;
2233
2234case'xiz':
2235// Day of the year -- not supported
2236 $unsupported[] = $code;
2237break;
2238
2239case'a':
2240case'A':
2241// AM/PM
2242 $intlOpts['hour12'] =true;
2243 $s .='{dayPeriod}';
2244break;
2245
2246case'g':
2247// Hour in 12-hour clock, without leading zero
2248 $intlOpts['hour'] ='numeric';
2249 $intlOpts['hour12'] =true;
2250 $s .='{hour}';
2251break;
2252
2253case'G':
2254// Hour in 24-hour clock, without leading zero
2255 $intlOpts['hour'] ='numeric';
2256 $s .='{hour}';
2257break;
2258
2259case'h':
2260// Hour in 12-hour clock, with leading zero
2261 $intlOpts['hour'] ='2-digit';
2262 $intlOpts['hour12'] =true;
2263 $s .='{hour}';
2264break;
2265
2266case'H':
2267// Hour in 24-hour clock, without leading zero
2268 $intlOpts['hour'] ='2-digit';
2269 $intlOpts['hour12'] =false;
2270 $s .='{hour}';
2271break;
2272
2273case'i':
2274 $intlOpts['minute'] ='2-digit';
2275 $s .='{minute}';
2276break;
2277
2278case's':
2279 $intlOpts['second'] ='2-digit';
2280 $s .='{second}';
2281break;
2282
2283case'c':
2284// ISO 8601
2285 $mwOpts['locale'] ='en';
2286 $intlOpts += [
2287'year' =>'numeric','month' =>'2-digit','day' =>'2-digit',
2288'hour' =>'2-digit','minute' =>'2-digit','second' =>'2-digit',
2289'hour12' =>false,'timeZoneName' =>'longOffset'
2290 ];
2291 $s .='{year}-{month}-{day}T{hour}:{minute}:{second}{timeZoneName}';
2292break;
2293
2294case'r':
2295// RFC 2822
2296 $mwOpts['locale'] ='en';
2297 $intlOpts += [
2298'year' =>'numeric','month' =>'short','day' =>'numeric',
2299'hour' =>'2-digit','minute' =>'2-digit','second' =>'2-digit',
2300'hour12' =>false,'weekday' =>'short','timeZoneName' =>'longOffset',
2301 ];
2302 $s .='{weekday}, {day} {month} {year} {hour}:{minute}:{second} {timeZoneName}';
2303break;
2304
2305case'e':
2306// Time zone identifier -- not supported, fall through to offset
2307case'O':
2308// Offset without colon not supported
2309 $unsupported[] = $code;
2310// Fall through to with colon
2311case'P':
2312 $intlOpts['timeZoneName'] ='longOffset';
2313 $s .='{timeZoneName}';
2314break;
2315
2316case'T':
2317// Time zone abbreviation
2318 $intlOpts['timeZoneName'] ='short';
2319 $s .='{timeZoneName}';
2320break;
2321
2322case'w':
2323case'N':
2324// Numeric day of week -- not supported
2325 $unsupported[] = $code;
2326 $intlOpts['weekday'] ='short';
2327 $s .='{weekday}';
2328break;
2329
2330case'z':
2331// Day of year
2332case'W':
2333// Week number
2334case't':
2335// Number of days in month
2336case'L':
2337// Leap year flag
2338case'o':
2339// ISO week numbering year
2340case'U':
2341// Seconds since UNIX epoch
2342case'I':
2343// DST flag
2344case'Z':
2345// Timezone offset in seconds
2346 $unsupported[] = $code;
2347break;
2348
2349case'\\':
2350 # Backslash escaping
2351if ( $p < $formatLength - 1 ) {
2352 $s .= $format[++$p];
2353 }else {
2354 $s .='\\';
2355 }
2356break;
2357
2358case'"':
2359 # Quoted literal
2360if ( $p < $formatLength - 1 ) {
2361 $endQuote = strpos( $format,'"', $p + 1 );
2362if ( $endQuote ===false ) {
2363 # No terminating quote, assume literal "
2364 $s .= '"';
2365 }else {
2366 $s .= substr( $format, $p + 1, $endQuote - $p - 1 );
2367 $p = $endQuote;
2368 }
2369 }else {
2370 # Quote at the end of the string, assume literal "
2371 $s .= '"';
2372 }
2373break;
2374
2375default:
2376 $s .= $format[$p];
2377 }
2378 }
2379 $mwOpts['options'] = $intlOpts;
2380 $mwOpts['pattern'] = $s;
2381if ( $unsupported ) {
2382 $mwOpts['error'] ='Unsupported format code(s): ' .
2383 implode(', ', $unsupported );
2384 }
2385return $mwOpts;
2386 }
2387
2397privatestaticfunction makeMediaWikiTimestamp($fallback, $date ) {
2398 $ts = $date->format('YmdHis' );
2399return strlen( $ts ) === 14 ? $ts :$fallback;
2400 }
2401
2417publicfunctiondateFormat( $usePrefs =true ) {
2418if ( is_bool( $usePrefs ) ) {
2419if ( $usePrefs ) {
2420 $datePreference = RequestContext::getMain()
2421 ->getUser()
2422 ->getDatePreference();
2423 }else {
2424 $userOptionsLookup = MediaWikiServices::getInstance()->getUserOptionsLookup();
2425 $datePreference = (string)$userOptionsLookup->getDefaultOption('date' );
2426 }
2427 }else {
2428 $datePreference = (string)$usePrefs;
2429 }
2430
2431// return int
2432if ( $datePreference =='' ) {
2433return'default';
2434 }
2435
2436return $datePreference;
2437 }
2438
2449publicfunctiongetDateFormatString( $type, $pref ) {
2450 $wasDefault =false;
2451if ( $pref =='default' ) {
2452 $wasDefault =true;
2453 $pref = $this->getDefaultDateFormat();
2454 }
2455
2456if ( !isset( $this->dateFormatStrings[$type][$pref] ) ) {
2457 $df = $this->localisationCache
2458 ->getSubitem( $this->mCode,'dateFormats',"$pref $type" );
2459
2460if ( $type ==='pretty' && $df ===null ) {
2461 $df = $this->getDateFormatString('date', $pref );
2462 }
2463
2464if ( !$wasDefault && $df ===null ) {
2465 $pref = $this->getDefaultDateFormat();
2466 $df = $this->localisationCache
2467 ->getSubitem( $this->mCode,'dateFormats',"$pref $type" );
2468 }
2469
2470 $this->dateFormatStrings[$type][$pref] = $df;
2471 }
2472return $this->dateFormatStrings[$type][$pref];
2473 }
2474
2485publicfunctiondate( $ts, $adj =false, $format =true, $timecorrection =false ) {
2486 $ts =wfTimestamp( TS_MW, $ts );
2487if ( $adj ) {
2488 $ts = $this->userAdjust( $ts, $timecorrection );
2489 }
2490 $df = $this->getDateFormatString('date', $this->dateFormat( $format ) );
2491return $this->sprintfDate( $df, $ts );
2492 }
2493
2504publicfunctiontime( $ts, $adj =false, $format =true, $timecorrection =false ) {
2505 $ts =wfTimestamp( TS_MW, $ts );
2506if ( $adj ) {
2507 $ts = $this->userAdjust( $ts, $timecorrection );
2508 }
2509 $df = $this->getDateFormatString('time', $this->dateFormat( $format ) );
2510return $this->sprintfDate( $df, $ts );
2511 }
2512
2524publicfunctiontimeanddate( $ts, $adj =false, $format =true, $timecorrection =false ) {
2525 $ts =wfTimestamp( TS_MW, $ts );
2526if ( $adj ) {
2527 $ts = $this->userAdjust( $ts, $timecorrection );
2528 }
2529 $df = $this->getDateFormatString('both', $this->dateFormat( $format ) );
2530return $this->sprintfDate( $df, $ts );
2531 }
2532
2543publicfunctionformatDuration( $seconds, array $chosenIntervals = [] ) {
2544 $intervals = $this->getDurationIntervals( $seconds, $chosenIntervals );
2545
2546 $segments = [];
2547
2548foreach ( $intervals as $intervalName => $intervalValue ) {
2549// Messages: duration-seconds, duration-minutes, duration-hours, duration-days, duration-weeks,
2550// duration-years, duration-decades, duration-centuries, duration-millennia
2551 $message = $this->msg('duration-' . $intervalName )->numParams( $intervalValue );
2552 $segments[] = $message->escaped();
2553 }
2554
2555return $this->listToText( $segments );
2556 }
2557
2568int $timestamp1,
2569int $timestamp2,
2570 ?int $precision =null
2571 ): string {
2572 $precision ??= count( self::DURATION_INTERVALS );
2573
2574 $sortedTimestamps = [ $timestamp1, $timestamp2 ];
2575 sort( $sortedTimestamps );
2576
2577 $tz =new DateTimeZone('UTC' );
2578 $date1 = (new DateTimeImmutable() )
2579 ->setTimezone( $tz )
2580 ->setTimestamp( $sortedTimestamps[0] );
2581 $date2 = (new DateTimeImmutable() )
2582 ->setTimezone( $tz )
2583 ->setTimestamp( $sortedTimestamps[1] );
2584
2585 $interval = $date1->diff( $date2 );
2586
2587 $format = [];
2588if ( $interval->y >= 1000 ) {
2589 $millennia = floor( $interval->y / 1000 );
2590 $format[] = $this->msg('duration-millennia' )->numParams( $millennia )->text();
2591 $interval->y -= $millennia * 1000;
2592 }
2593if ( $interval->y >= 100 ) {
2594 $centuries = floor( $interval->y / 100 );
2595 $format[] = $this->msg('duration-centuries' )->numParams( $centuries )->text();
2596 $interval->y -= $centuries * 100;
2597 }
2598if ( $interval->y >= 10 ) {
2599 $decades = floor( $interval->y / 10 );
2600 $format[] = $this->msg('duration-decades' )->numParams( $decades )->text();
2601 $interval->y -= $decades * 10;
2602 }
2603if ( $interval->y !== 0 ) {
2604 $format[] = $this->msg('duration-years' )->numParams( $interval->y )->text();
2605 }
2606if ( $interval->m !== 0 ) {
2607 $format[] = $this->msg('duration-months' )->numParams( $interval->m )->text();
2608 }
2609if ( $interval->d !== 0 ) {
2610 $format[] = $this->msg('duration-days' )->numParams( $interval->d )->text();
2611 }
2612if ( $interval->h !== 0 ) {
2613 $format[] = $this->msg('duration-hours' )->numParams( $interval->h )->text();
2614 }
2615if ( $interval->i !== 0 ) {
2616 $format[] = $this->msg('duration-minutes' )->numParams( $interval->i )->text();
2617 }
2618if ( $interval->s !== 0 ) {
2619 $format[] = $this->msg('duration-seconds' )->numParams( $interval->s )->text();
2620 }
2621
2622// slice the array to the provided precision
2623 $format = array_slice( $format, 0, $precision );
2624// build the string from the array
2625 $format = $this->listToText( $format );
2626
2627return $format ?: $this->msg('duration-seconds' )->numParams( 0 )->text();
2628 }
2629
2641publicfunctiongetDurationIntervals( $seconds, array $chosenIntervals = [] ) {
2642if ( !$chosenIntervals ) {
2643// Default intervals. Do not include `months` as they were not part of the original default implementation
2644 $chosenIntervals = [
2645'millennia',
2646'centuries',
2647'decades',
2648'years',
2649'days',
2650'hours',
2651'minutes',
2652'seconds'
2653 ];
2654 }
2655
2656 $intervals = array_intersect_key( self::DURATION_INTERVALS,
2657 array_fill_keys( $chosenIntervals,true ) );
2658 $sortedNames = array_keys( $intervals );
2659 $smallestInterval = array_pop( $sortedNames );
2660
2661 $segments = [];
2662
2663foreach ( $intervals as $name => $length ) {
2664 $value = floor( $seconds / $length );
2665
2666if ( $value > 0 || ( $name == $smallestInterval && !$segments ) ) {
2667 $seconds -= $value * $length;
2668 $segments[$name] = $value;
2669 }
2670 }
2671
2672return $segments;
2673 }
2674
2694privatefunction internalUserTimeAndDate( $type, $ts,UserIdentity $user, array $options ) {
2695 $ts =wfTimestamp( TS_MW, $ts );
2696 $options += ['timecorrection' =>true,'format' => true ];
2697if ( $options['timecorrection'] !==false ) {
2698if ( $options['timecorrection'] ===true ) {
2699 $offset = MediaWikiServices::getInstance()
2700 ->getUserOptionsLookup()
2701 ->getOption( $user,'timecorrection' );
2702 }else {
2703 $offset = $options['timecorrection'];
2704 }
2705 $ts = $this->userAdjust( $ts, $offset );
2706 }
2707if ( $options['format'] ===true ) {
2708 $format = MediaWikiServices::getInstance()
2709 ->getUserFactory()
2710 ->newFromUserIdentity( $user )
2711 ->getDatePreference();
2712 }else {
2713 $format = $options['format'];
2714 }
2715 $df = $this->getDateFormatString( $type, $this->dateFormat( $format ) );
2716return $this->sprintfDate( $df, $ts );
2717 }
2718
2738publicfunctionuserDate( $ts,UserIdentity $user, array $options = [] ) {
2739return $this->internalUserTimeAndDate('date', $ts, $user, $options );
2740 }
2741
2761publicfunctionuserTime( $ts,UserIdentity $user, array $options = [] ) {
2762return $this->internalUserTimeAndDate('time', $ts, $user, $options );
2763 }
2764
2784publicfunctionuserTimeAndDate( $ts,UserIdentity $user, array $options = [] ) {
2785return $this->internalUserTimeAndDate('both', $ts, $user, $options );
2786 }
2787
2803publicfunctiongetHumanTimestamp(
2804MWTimestamp $time, ?MWTimestamp $relativeTo =null, ?UserIdentity $user =null
2805 ) {
2806 $relativeTo ??=newMWTimestamp();
2807if ( $user ===null ) {
2808 $user = RequestContext::getMain()->getUser();
2809 }else {
2810// For compatibility with the hook signature and self::getHumanTimestampInternal
2811 $user = MediaWikiServices::getInstance()
2812 ->getUserFactory()
2813 ->newFromUserIdentity( $user );
2814 }
2815
2816// Adjust for the user's timezone.
2817 $offsetThis = $time->offsetForUser( $user );
2818 $offsetRel = $relativeTo->offsetForUser( $user );
2819
2820 $ts ='';
2821if ( $this->getHookRunner()->onGetHumanTimestamp( $ts, $time, $relativeTo, $user, $this ) ) {
2822 $ts = $this->getHumanTimestampInternal( $time, $relativeTo, $user );
2823 }
2824
2825// Reset the timezone on the objects.
2826 $time->timestamp->sub( $offsetThis );
2827 $relativeTo->timestamp->sub( $offsetRel );
2828
2829return $ts;
2830 }
2831
2843privatefunction getHumanTimestampInternal(
2844MWTimestamp $ts,MWTimestamp $relativeTo,User $user
2845 ) {
2846 $diff = $ts->diff( $relativeTo );
2847 $diffDay = (bool)( (int)$ts->timestamp->format('w' ) -
2848 (int)$relativeTo->timestamp->format('w' ) );
2849 $days = $diff->days ?: (int)$diffDay;
2850
2851if ( $diff->invert ) {
2852// Future dates: Use full timestamp
2856 $format = $this->getDateFormatString('both', $user->getDatePreference() ?:'default' );
2857 $ts = $this->sprintfDate( $format, $ts->getTimestamp( TS_MW ) );
2858 } elseif (
2859 $days > 5 &&
2860 $ts->timestamp->format('Y' ) !== $relativeTo->timestamp->format('Y' )
2861 ) {
2862// Timestamps are in different years and more than 5 days apart: use full date
2863 $format = $this->getDateFormatString('date', $user->getDatePreference() ?:'default' );
2864 $ts = $this->sprintfDate( $format, $ts->getTimestamp( TS_MW ) );
2865 } elseif ( $days > 5 ) {
2866// Timestamps are in same year and more than 5 days ago: show day and month only.
2867 $format = $this->getDateFormatString('pretty', $user->getDatePreference() ?:'default' );
2868 $ts = $this->sprintfDate( $format, $ts->getTimestamp( TS_MW ) );
2869 } elseif ( $days > 1 ) {
2870// Timestamp within the past 5 days: show the day of the week and time
2871 $format = $this->getDateFormatString('time', $user->getDatePreference() ?:'default' );
2872 $weekday = self::WEEKDAY_MESSAGES[(int)$ts->timestamp->format('w' )];
2873// The following messages are used here:
2874// * sunday-at, monday-at, tuesday-at, wednesday-at, thursday-at, friday-at, saturday-at
2875 $ts = $this->msg("$weekday-at" )
2876 ->params( $this->sprintfDate( $format, $ts->getTimestamp( TS_MW ) ) )
2877 ->text();
2878 } elseif ( $days == 1 ) {
2879// Timestamp was yesterday: say 'yesterday' and the time.
2880 $format = $this->getDateFormatString('time', $user->getDatePreference() ?:'default' );
2881 $ts = $this->msg('yesterday-at' )
2882 ->params( $this->sprintfDate( $format, $ts->getTimestamp( TS_MW ) ) )
2883 ->text();
2884 } elseif ( $diff->h > 1 || ( $diff->h == 1 && $diff->i > 30 ) ) {
2885// Timestamp was today, but more than 90 minutes ago: say 'today' and the time.
2886 $format = $this->getDateFormatString('time', $user->getDatePreference() ?:'default' );
2887 $ts = $this->msg('today-at' )
2888 ->params( $this->sprintfDate( $format, $ts->getTimestamp( TS_MW ) ) )
2889 ->text();
2890
2891// From here on in, the timestamp was soon enough ago so that we can simply say
2892// XX units ago, e.g., "2 hours ago" or "5 minutes ago"
2893 } elseif ( $diff->h == 1 ) {
2894// Less than 90 minutes, but more than an hour ago.
2895 $ts = $this->msg('hours-ago' )->numParams( 1 )->text();
2896 } elseif ( $diff->i >= 1 ) {
2897// A few minutes ago.
2898 $ts = $this->msg('minutes-ago' )->numParams( $diff->i )->text();
2899 } elseif ( $diff->s >= 30 ) {
2900// Less than a minute, but more than 30 sec ago.
2901 $ts = $this->msg('seconds-ago' )->numParams( $diff->s )->text();
2902 }else {
2903// Less than 30 seconds ago.
2904 $ts = $this->msg('just-now' )->text();
2905 }
2906
2907return $ts;
2908 }
2909
2918publicfunctiongetGroupName( $group ) {
2919 $msg = $this->msg("group-$group" );
2920return $msg->isBlank() ? $group : $msg->text();
2921 }
2922
2932publicfunctiongetGroupMemberName(string $group, $member ) {
2933if ( $member instanceofUserIdentity ) {
2934 $member = $member->getName();
2935 }
2936 $msg = $this->msg("group-$group-member", $member );
2937return $msg->isBlank() ? $group : $msg->text();
2938 }
2939
2945publicfunctiongetMessage( $key ) {
2946return $this->localisationCache->getSubitem( $this->mCode,'messages', $key );
2947 }
2948
2953publicfunctiongetAllMessages() {
2954return $this->localisationCache->getItem( $this->mCode,'messages' );
2955 }
2956
2963publicfunctioniconv( $in, $out, $string ) {
2964 # Even with//IGNORE iconv can whine about illegal characters in
2965 # *input* string. We just ignore those too.
2966 # REF: https://bugs.php.net/bug.php?id=37166
2967 # REF: https://phabricator.wikimedia.org/T18885
2968 AtEase::suppressWarnings();
2969 $text = iconv( $in, $out .'//IGNORE', $string );
2970 AtEase::restoreWarnings();
2971return $text;
2972 }
2973
2978publicfunctionucfirst( $str ) {
2979// T410920: ord() doesn't like an empty string, so just return early
2980if ( $str ==='' ) {
2981return'';
2982 }
2983
2984 $octetCode = ord( $str[0] );
2985// See https://en.wikipedia.org/wiki/ASCII#Printable_characters
2986if ( $octetCode < 96 ) {
2987// Assume this is an uppercase/uncased ASCII character
2988return (string)$str;
2989 } elseif ( $octetCode < 128 ) {
2990// Assume this is a lowercase/uncased ASCII character
2991return ucfirst( $str );
2992 }
2993 $first = mb_substr( $str, 0, 1 );
2994if ( strlen( $first ) === 1 ) {
2995// Broken UTF-8?
2996return ucfirst( $str );
2997 }
2998
2999// Memoize the config table
3000 $overrides = $this->overrideUcfirstCharacters
3001 ??= $this->config->get( MainConfigNames::OverrideUcfirstCharacters );
3002
3003// Use the config table and fall back to MB_CASE_TITLE
3004 $ucFirst = $overrides[$first] ?? mb_convert_case( $first, MB_CASE_TITLE );
3005if ( $ucFirst !== $first ) {
3006return $ucFirst . mb_substr( $str, 1 );
3007 }else {
3008return $str;
3009 }
3010 }
3011
3017publicfunctionuc( $str, $first =false ) {
3018if ( $first ) {
3019return $this->ucfirst( $str );
3020 }else {
3021return $this->isMultibyte( $str ) ? mb_strtoupper( $str ) : strtoupper( $str );
3022 }
3023 }
3024
3029publicfunctionlcfirst( $str ) {
3030// T410920: ord() doesn't like an empty string, so just return early
3031if ( $str ==='' ) {
3032return'';
3033 }
3034
3035 $octetCode = ord( $str[0] );
3036// See https://en.wikipedia.org/wiki/ASCII#Printable_characters
3037if ( $octetCode < 96 ) {
3038// Assume this is an uppercase/uncased ASCII character
3039return lcfirst( $str );
3040 } elseif ( $octetCode < 128 ) {
3041// Assume this is a lowercase/uncased ASCII character
3042return (string)$str;
3043 }
3044
3045return $this->isMultibyte( $str )
3046// Assume this is a multibyte character and mb_internal_encoding() is appropriate
3047 ? mb_strtolower( mb_substr( $str, 0, 1 ) ) . mb_substr( $str, 1 )
3048// Assume this is a non-multibyte character and LC_CASE is appropriate
3049 : lcfirst( $str );
3050 }
3051
3057publicfunctionlc( $str, $first =false ) {
3058if ( $first ) {
3059return $this->lcfirst( $str );
3060 }else {
3061return $this->isMultibyte( $str ) ? mb_strtolower( $str ) : strtolower( $str );
3062 }
3063 }
3064
3069privatefunction isMultibyte( $str ) {
3070return strlen( $str ) !== mb_strlen( $str );
3071 }
3072
3077publicfunctionucwords( $str ) {
3078if ( $this->isMultibyte( $str ) ) {
3079 $str = $this->lc( $str );
3080
3081// regexp to find the first letter in each word (i.e., after each space)
3082 $replaceRegexp ="/^([a-z]|[\\xc0-\\xff][\\x80-\\xbf]*)| ([a-z]|[\\xc0-\\xff][\\x80-\\xbf]*)/";
3083
3084// function to use to capitalize a single char
3085return preg_replace_callback(
3086 $replaceRegexp,
3087staticfunction ($matches ) {
3088return mb_strtoupper($matches[0] );
3089 },
3090 $str
3091 );
3092 }else {
3093return ucwords( strtolower( $str ) );
3094 }
3095 }
3096
3103publicfunctionucwordbreaks( $str ) {
3104if ( $this->isMultibyte( $str ) ) {
3105 $str = $this->lc( $str );
3106
3107// since \b doesn't work for UTF-8, we explicitly define word break chars
3108 $breaks ="[ \-\‍(\‍)\}\{\.,\?!]";
3109
3110// find the first letter after word break
3111 $replaceRegexp ="/^([a-z]|[\\xc0-\\xff][\\x80-\\xbf]*)|" .
3112"$breaks([a-z]|[\\xc0-\\xff][\\x80-\\xbf]*)/";
3113
3114return preg_replace_callback(
3115 $replaceRegexp,
3116staticfunction ($matches ) {
3117return mb_strtoupper($matches[0] );
3118 },
3119 $str
3120 );
3121 }else {
3122return preg_replace_callback(
3123'/\b([\w\x80-\xff]+)\b/',
3124function ($matches ) {
3125return $this->ucfirst($matches[1] );
3126 },
3127 $str
3128 );
3129 }
3130 }
3131
3147publicfunctioncaseFold( $s ) {
3148return $this->uc( $s );
3149 }
3150
3155publicfunctioncheckTitleEncoding(string $s ) {
3156if ( StringUtils::isUtf8( $s ) ) {
3157return $s;
3158 }
3159
3160return $this->iconv( $this->fallback8bitEncoding(),'utf-8', $s );
3161 }
3162
3166publicfunctionfallback8bitEncoding() {
3167return $this->localisationCache->getItem( $this->mCode,'fallback8bitEncoding' );
3168 }
3169
3178publicfunctionhasWordBreaks() {
3179returntrue;
3180 }
3181
3189publicfunctionsegmentByWord( $string ) {
3190return $string;
3191 }
3192
3198protectedfunctiongetSearchIndexVariant() {
3199returnnull;
3200 }
3201
3213publicfunctionnormalizeForSearch( $text ) {
3214 $text = self::convertDoubleWidth( $text );
3215if ( $this->getSearchIndexVariant() ) {
3216return $this->getConverterInternal()->autoConvert( $text, $this->getSearchIndexVariant() );
3217 }
3218return $text;
3219 }
3220
3228protectedstaticfunctionconvertDoubleWidth( $string ) {
3229static $transTable =null;
3230 $transTable ??= array_combine(
3231 mb_str_split('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' ),
3232 str_split('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' )
3233 );
3234
3235return strtr( $string, $transTable );
3236 }
3237
3243protectedstaticfunctioninsertSpace( $string, $pattern ) {
3244 $string = preg_replace( $pattern," $1 ", $string );
3245return preg_replace('/ +/',' ', $string );
3246 }
3247
3252publicfunctionconvertForSearchResult( $termsArray ) {
3253 # some languages, e.g., Chinese, need to do a conversion
3254 # in order for search results to be displayed correctly
3255return $termsArray;
3256 }
3257
3264publicfunctionfirstChar( $s ) {
3265 $firstChar = mb_substr( $s, 0, 1 );
3266
3267if ( $firstChar ==='' || strlen( $firstChar ) != 3 ) {
3268return $firstChar;
3269 }
3270
3271// Break down Hangul syllables to grab the first jamo
3272 $code = mb_ord( $firstChar );
3273if ( $code < 0xac00 || $code >= 0xd7a4 ) {
3274return $firstChar;
3275 } elseif ( $code < 0xb098 ) {
3276return"\u{3131}";
3277 } elseif ( $code < 0xb2e4 ) {
3278return"\u{3134}";
3279 } elseif ( $code < 0xb77c ) {
3280return"\u{3137}";
3281 } elseif ( $code < 0xb9c8 ) {
3282return"\u{3139}";
3283 } elseif ( $code < 0xbc14 ) {
3284return"\u{3141}";
3285 } elseif ( $code < 0xc0ac ) {
3286return"\u{3142}";
3287 } elseif ( $code < 0xc544 ) {
3288return"\u{3145}";
3289 } elseif ( $code < 0xc790 ) {
3290return"\u{3147}";
3291 } elseif ( $code < 0xcc28 ) {
3292return"\u{3148}";
3293 } elseif ( $code < 0xce74 ) {
3294return"\u{314A}";
3295 } elseif ( $code < 0xd0c0 ) {
3296return"\u{314B}";
3297 } elseif ( $code < 0xd30c ) {
3298return"\u{314C}";
3299 } elseif ( $code < 0xd558 ) {
3300return"\u{314D}";
3301 }else {
3302return"\u{314E}";
3303 }
3304 }
3305
3315publicfunctionnormalize( $s ) {
3316 $allUnicodeFixes = $this->config->get( MainConfigNames::AllUnicodeFixes );
3317
3318 $s = UtfNormalValidator::cleanUp( $s );
3319// Optimization: This is disabled by default to avoid negative performance impact.
3320if ( $allUnicodeFixes ) {
3321 $s = $this->transformUsingPairFile( NormalizeAr::class, $s );
3322 $s = $this->transformUsingPairFile( NormalizeMl::class, $s );
3323 }
3324
3325return $s;
3326 }
3327
3339protectedfunctiontransformUsingPairFile(string $dataClass,string $input ): string {
3340if ( !isset( $this->transformData[$dataClass] ) ) {
3341 $this->transformData[$dataClass] =newReplacementArray( $dataClass::PAIRS );
3342 }
3343
3344return $this->transformData[$dataClass]->replace( $input );
3345 }
3346
3352publicfunctionisRTL() {
3353return $this->localisationCache->getItem( $this->mCode,'rtl' );
3354 }
3355
3360publicfunctiongetDir() {
3361return $this->isRTL() ?'rtl' :'ltr';
3362 }
3363
3372publicfunctionalignStart() {
3373return $this->isRTL() ?'right' :'left';
3374 }
3375
3384publicfunctionalignEnd() {
3385return $this->isRTL() ?'left' :'right';
3386 }
3387
3406publicfunctiongetDirMarkEntity( $opposite =false ) {
3407wfDeprecated( __METHOD__,'1.43' );
3408
3409if ( $opposite ) {
3410return $this->isRTL() ?'&lrm;' :'&rlm;';
3411 }
3412return $this->isRTL() ?'&rlm;' :'&lrm;';
3413 }
3414
3430publicfunctiongetDirMark( $opposite =false ) {
3431if ( $opposite ) {
3432return $this->isRTL() ? self::LRM : self::RLM;
3433 }
3434return $this->isRTL() ? self::RLM : self::LRM;
3435 }
3436
3444publicfunctiongetArrow( $direction ='forwards' ) {
3445switch ( $direction ) {
3446case'forwards':
3447return $this->isRTL() ?'←' :'→';
3448case'backwards':
3449return $this->isRTL() ?'→' :'←';
3450case'left':
3451return'←';
3452case'right':
3453return'→';
3454case'up':
3455return'↑';
3456case'down':
3457return'↓';
3458 }
3459 }
3460
3466publicfunctionlinkPrefixExtension() {
3467return $this->localisationCache->getItem( $this->mCode,'linkPrefixExtension' );
3468 }
3469
3475publicfunctiongetMagicWords() {
3476return $this->localisationCache->getItem( $this->mCode,'magicWords' );
3477 }
3478
3484publicfunctiongetMagic( $mw ) {
3485 $rawEntry = $this->mMagicExtensions[$mw->mId] ??
3486 $this->localisationCache->getSubitem( $this->mCode,'magicWords', $mw->mId );
3487
3488if ( !is_array( $rawEntry ) ) {
3489wfWarn("\"$rawEntry\" is not a valid magic word for \"$mw->mId\"" );
3490 }else {
3491 $mw->mCaseSensitive = $rawEntry[0];
3492 $mw->mSynonyms = array_slice( $rawEntry, 1 );
3493 }
3494 }
3495
3501publicfunctiongetSpecialPageAliases() {
3502// Cache aliases because it may be slow to load them
3503 $this->mExtendedSpecialPageAliases ??=
3504 $this->localisationCache->getItem( $this->mCode,'specialPageAliases' );
3505
3506return $this->mExtendedSpecialPageAliases;
3507 }
3508
3515publicfunctionemphasize( $text ) {
3516return"<em>$text</em>";
3517 }
3518
3539publicfunctionformatNum( $number ) {
3540return $this->formatNumInternal( (string)$number,false );
3541 }
3542
3550privatefunction formatNumInternal(
3551string $number,bool $noSeparators
3552 ): string {
3553 $translateNumerals = $this->config->get(MainConfigNames::TranslateNumerals );
3554
3555if ( $number ==='' ) {
3556return $number;
3557 }
3558if ( $number ==='NAN' ) {
3559return $this->msg('formatnum-nan' )->text();
3560 }
3561if ( $number ==='INF' ) {
3562return"∞";
3563 }
3564if ( $number ==='-INF' ) {
3565return"\u{2212}∞";
3566 }
3567if ( !is_numeric( $number ) ) {
3568 # T267587: downgrade this to level:warn while we chase down the long
3569 # trail of callers.
3570 # wfDeprecated( 'Language::formatNum with a non-numeric string', '1.36' );
3571 LoggerFactory::getInstance('formatnum' )->warning(
3572'Language::formatNum with non-numeric string',
3573 ['number' => $number ]
3574 );
3575 $validNumberRe ='(-(?=[\d\.]))?(\d+|(?=\.\d))(\.\d*)?([Ee][-+]?\d+)?';
3576// For backwards-compat, apply formatNum piecewise on the valid
3577// numbers in the string. Don't split on NAN/INF in this legacy
3578// case as they are likely to be found embedded inside non-numeric
3579// text.
3580return preg_replace_callback("/{$validNumberRe}/",function ( $m ) use ( $noSeparators ) {
3581return $this->formatNumInternal( $m[0], $noSeparators );
3582 }, $number );
3583 }
3584
3585if ( !$noSeparators ) {
3586$separatorTransformTable = $this->separatorTransformTable();
3587 $fmt = $this->getNumberFormatter();
3588
3589// minimumGroupingDigits can be used to suppress groupings below a certain value.
3590// This is used for languages such as Polish, where one would only write the grouping
3591// separator for values above 9999 - numbers with more than 4 digits.
3592// NumberFormatter is yet to support minimumGroupingDigits, ICU has it as experimental feature.
3593// The attribute value is used by adding it to the grouping separator value. If
3594// the input number has fewer integer digits, the grouping separator is suppressed.
3595$minimumGroupingDigits = $this->minimumGroupingDigits();
3596// Minimum length of a number to do digit grouping on.
3597// http://unicode.org/reports/tr35/tr35-numbers.html#Examples_of_minimumGroupingDigits
3598 $minimumLength =$minimumGroupingDigits + $fmt->getAttribute( NumberFormatter::GROUPING_SIZE );
3599if ($minimumGroupingDigits > 1
3600 && !preg_match('/^\-?\d{' . $minimumLength .'}/', $number )
3601 ) {
3602// This number does not need commas inserted (even if
3603// NumberFormatter thinks it does) because it's not long
3604// enough. We still need to do decimal separator
3605// transformation, though. For example, 1234.56 becomes 1234,56
3606// in pl with $minimumGroupingDigits = 2.
3607 $number = strtr( $number,$separatorTransformTable ?: [] );
3608 } elseif ( $number ==='-0' ) {
3609// Special case to ensure we don't lose the minus sign by
3610// converting to an int.
3611 $number = strtr( $number,$separatorTransformTable ?: [] );
3612 }else {
3613// NumberFormatter supports separator transformation,
3614// but it does not know all languages MW
3615// supports. Example: arq. Also, languages like pl have
3616// customisation. So manually set it.
3617 $fmt = clone $fmt;
3618
3619if ($separatorTransformTable ) {
3620 $fmt->setSymbol(
3621 NumberFormatter::DECIMAL_SEPARATOR_SYMBOL,
3622$separatorTransformTable['.' ] ??'.'
3623 );
3624 $fmt->setSymbol(
3625 NumberFormatter::GROUPING_SEPARATOR_SYMBOL,
3626$separatorTransformTable[',' ] ??','
3627 );
3628 }
3629
3630// Maintain # of digits before and after the decimal point
3631// (and presence of decimal point)
3632if ( preg_match('/^-?(\d*)(\.(\d*))?$/', $number, $m ) ) {
3633 $fmt->setAttribute( NumberFormatter::MIN_INTEGER_DIGITS, strlen( $m[1] ) );
3634if ( isset( $m[2] ) ) {
3635 $fmt->setAttribute( NumberFormatter::DECIMAL_ALWAYS_SHOWN, 1 );
3636 }
3637 $fmt->setAttribute( NumberFormatter::FRACTION_DIGITS, strlen( $m[3] ??'' ) );
3638 }
3639 $number = $fmt->format( (float)$number );
3640 }
3641 }
3642
3643if ( $translateNumerals ) {
3644// This is often unnecessary: PHP's NumberFormatter will often
3645// do the digit transform itself (T267614)
3646 $s = $this->digitTransformTable();
3647if ( $s ) {
3648 $number = strtr( $number, $s );
3649 }
3650 }
3651 # T10327: Make our formatted numbers prettier by using a
3652 # proper Unicode 'minus' character.
3653 $number = strtr( $number, ['-' =>"\u{2212}" ] );
3654
3655// Remove any LRM or RLM characters generated from NumberFormatter,
3656// since directionality is handled outside of this context.
3657// Similarly remove \u61C (ALM) which is added starting PHP 7.3+
3658return strtr( $number, [
3659 self::LRM =>'',
3660 self::RLM =>'',
3661 self::ALM =>'',
3662 ] );
3663 }
3664
3673publicfunctionformatNumNoSeparators( $number ) {
3674return $this->formatNumInternal( (string)$number,true );
3675 }
3676
3681publicfunctionparseFormattedNumber( $number ) {
3682if ( $number === $this->msg('formatnum-nan' )->text() ) {
3683return"NAN";
3684 }
3685if ( $number ==="∞" ) {
3686return"INF";
3687 }
3688// Accept either ASCII hyphen-minus or the unicode minus emitted by
3689// ::formatNum()
3690 $number = strtr( $number, ["\u{2212}" =>'-' ] );
3691if ( $number ==="-∞" ) {
3692return"-INF";
3693 }
3694 $s = $this->digitTransformTable();
3695if ( $s ) {
3696// Eliminate empty array values such as ''. (T66347)
3697 $s = array_filter( $s );
3698 $number = strtr( $number, array_flip( $s ) );
3699 }
3700
3701 $s = $this->separatorTransformTable();
3702if ( $s ) {
3703// Eliminate empty array values such as ''. (T66347)
3704 $s = array_filter( $s );
3705 $number = strtr( $number, array_flip( $s ) );
3706 }
3707
3708return strtr( $number, [',' =>'' ] );
3709 }
3710
3714publicfunctiondigitGroupingPattern() {
3715return $this->localisationCache->getItem( $this->mCode,'digitGroupingPattern' );
3716 }
3717
3721publicfunctiondigitTransformTable() {
3722return $this->localisationCache->getItem( $this->mCode,'digitTransformTable' );
3723 }
3724
3729return $this->localisationCache->getItem( $this->mCode,'separatorTransformTable' );
3730 }
3731
3740publicfunctionminimumGroupingDigits(): int {
3741return $this->localisationCache->getItem( $this->mCode,'minimumGroupingDigits' ) ?? 1;
3742 }
3743
3753publicfunctionlistToText( array $list ) {
3754 $itemCount = count( $list );
3755if ( $itemCount < 1 ) {
3756return'';
3757 }
3758 $text = array_pop( $list );
3759if ( $itemCount > 1 ) {
3760 $and = $this->msg('and' )->escaped();
3761 $space = $this->msg('word-separator' )->escaped();
3762 $comma ='';
3763if ( $itemCount > 2 ) {
3764 $comma = $this->msg('comma-separator' )->escaped();
3765 }
3766 $text = implode( $comma, $list ) . $and . $space . $text;
3767 }
3768// @phan-suppress-next-line PhanTypeMismatchReturnNullable False positive
3769return $text;
3770 }
3771
3779publicfunctioncommaList( array $list ): string {
3780return implode(
3781 $this->msg('comma-separator' )->escaped(),
3782 $list
3783 );
3784 }
3785
3793publicfunctionsemicolonList( array $list ): string {
3794return implode(
3795 $this->msg('semicolon-separator' )->escaped(),
3796 $list
3797 );
3798 }
3799
3806publicfunctionpipeList( array $list ): string {
3807return implode(
3808 $this->msg('pipe-separator' )->escaped(),
3809 $list
3810 );
3811 }
3812
3829publicfunctiontruncateForDatabase( $string, $length, $ellipsis ='...', $adjustLength =true ) {
3830return $this->truncateInternal(
3831 $string, $length, $ellipsis, $adjustLength,'strlen','mb_strcut'
3832 );
3833 }
3834
3860publicfunctiontruncateForVisual( $string, $length, $ellipsis ='...', $adjustLength =true ) {
3861// Passing encoding to mb_strlen and mb_substr is optional.
3862// Encoding defaults to mb_internal_encoding(), which is set to UTF-8 in Setup.php, so
3863// explicit specification of encoding is skipped.
3864// Note: Both multibyte methods are callables invoked in truncateInternal.
3865return $this->truncateInternal(
3866 $string, $length, $ellipsis, $adjustLength,'mb_strlen','mb_substr'
3867 );
3868 }
3869
3886privatefunction truncateInternal(
3887 $string, $length, $ellipsis, $adjustLength, callable $measureLength, callable $getSubstring
3888 ) {
3889 # Check if there is no need to truncate
3890if ( $measureLength( $string ) <= abs( $length ) ) {
3891return $string;// no need to truncate
3892 }
3893
3894 # Use the localized ellipsis character
3895if ( $ellipsis =='...' ) {
3896 $ellipsis = $this->msg('ellipsis' )->text();
3897 }
3898if ( $length == 0 ) {
3899return $ellipsis;// convention
3900 }
3901
3902 $stringOriginal = $string;
3903 # If ellipsis length is >= $length then we can't apply $adjustLength
3904if ( $adjustLength && $measureLength( $ellipsis ) >= abs( $length ) ) {
3905 $string = $ellipsis;// this can be slightly unexpected
3906 # Otherwise, truncate and add ellipsis...
3907 }else {
3908 $ellipsisLength = $adjustLength ? $measureLength( $ellipsis ) : 0;
3909if ( $length > 0 ) {
3910 $length -= $ellipsisLength;
3911 $string = $getSubstring( $string, 0, $length );// xyz...
3912 $string = rtrim( $string ) . $ellipsis;
3913 }else {
3914 $length += $ellipsisLength;
3915 $string = $getSubstring( $string, $length );// ...xyz
3916 $string = $ellipsis . ltrim( $string );
3917 }
3918 }
3919
3920 # Do not truncate if the ellipsis makes the string longer/equal (T24181).
3921 # This check is *not* redundant if $adjustLength, due to the single case where
3922 # LEN($ellipsis) > ABS($limit arg); $stringOriginal could be shorter than $string.
3923if ( $measureLength( $string ) < $measureLength( $stringOriginal ) ) {
3924return $string;
3925 }else {
3926return $stringOriginal;
3927 }
3928 }
3929
3937protectedfunctionremoveBadCharLast( $string ) {
3938if ( $string !='' ) {
3939 $char = ord( substr( $string, -1 ) );
3940 $m = [];
3941if ( $char >= 0xc0 ) {
3942 # We got the first byte only of a multibyte char; remove it.
3943 $string = substr( $string, 0, -1 );
3944 } elseif ( $char >= 0x80 &&
3945// Use the /s modifier (PCRE_DOTALL) so (.*) also matches newlines
3946 preg_match('/^(.*)(?:[\xe0-\xef][\x80-\xbf]|' .
3947'[\xf0-\xf7][\x80-\xbf]{1,2})$/s', $string, $m )
3948 ) {
3949 # We chopped in the middle of a character; remove it
3950 $string = $m[1];
3951 }
3952 }
3953return $string;
3954 }
3955
3971publicfunctiontruncateHtml( $text, $length, $ellipsis ='...' ) {
3972 # Use the localized ellipsis character
3973if ( $ellipsis =='...' ) {
3974 $ellipsis = $this->msg('ellipsis' )->escaped();
3975 }
3976 # Check if there is clearly no need to truncate
3977if ( $length <= 0 ) {
3978return $ellipsis;// no text shown, nothing to format (convention)
3979 } elseif ( strlen( $text ) <= $length ) {
3980return $text;// string short enough even *with* HTML (short-circuit)
3981 }
3982
3983 $dispLen = 0;// innerHTML length so far
3984 $testingEllipsis =false;// check if ellipses will make the string longer/equal?
3985 $tagType = 0;// 0-open, 1-close
3986 $bracketState = 0;// 1-tag start, 2-tag name, 0-neither
3987 $entityState = 0;// 0-not entity, 1-entity
3988 $tag = $ret ='';// accumulated tag name, accumulated result string
3989 $openTags = [];// open tag stack
3990 $maybeState =null;// possible truncation state
3991
3992 $textLen = strlen( $text );
3993 $neLength = max( 0, $length - strlen( $ellipsis ) );// non-ellipsis len if truncated
3994for ( $pos = 0;true; ++$pos ) {
3995 # Consider truncation once the display length has reached the maximum.
3996 # We check if $dispLen > 0 to grab tags for the $neLength = 0 case.
3997 # Check that we're not in the middle of a bracket/entity...
3998if ( $dispLen && $dispLen >= $neLength && $bracketState == 0 && !$entityState ) {
3999if ( !$testingEllipsis ) {
4000 $testingEllipsis =true;
4001 # Save where we are; we will truncate here unless there turn out to
4002 # be so few remaining characters that truncation is not necessary.
4003if ( !$maybeState ) {// already saved? ($neLength = 0 case)
4004 $maybeState = [ $ret, $openTags ];// save state
4005 }
4006 } elseif ( $dispLen > $length && $dispLen > strlen( $ellipsis ) ) {
4007 # The string in fact does need truncation, the truncation point was OK.
4008// @phan-suppress-next-line PhanTypeInvalidExpressionArrayDestructuring
4009 [ $ret, $openTags ] = $maybeState;// reload state
4010 $ret = $this->removeBadCharLast( $ret );// multi-byte char fix
4011 $ret .= $ellipsis;// add ellipsis
4012break;
4013 }
4014 }
4015if ( $pos >= $textLen ) {
4016break;// extra iteration just for the checks above
4017 }
4018
4019 # Read the next char...
4020 $ch = $text[$pos];
4021 $lastCh = $pos ? $text[$pos - 1] :'';
4022 $ret .= $ch;// add to result string
4023if ( $ch =='<' ) {
4024 $this->truncate_endBracket( $tag, $tagType, $lastCh, $openTags );// for bad HTML
4025 $entityState = 0;// for bad HTML
4026 $bracketState = 1;// tag started (checking for backslash)
4027 } elseif ( $ch =='>' ) {
4028 $this->truncate_endBracket( $tag, $tagType, $lastCh, $openTags );
4029 $entityState = 0;// for bad HTML
4030 $bracketState = 0;// out of brackets
4031 } elseif ( $bracketState == 1 ) {
4032if ( $ch =='/' ) {
4033 $tagType = 1;// close tag (e.g. "</span>")
4034 }else {
4035 $tagType = 0;// open tag (e.g. "<span>")
4036 $tag .= $ch;
4037 }
4038 $bracketState = 2;// building tag name
4039 } elseif ( $bracketState == 2 ) {
4040if ( $ch !=' ' ) {
4041 $tag .= $ch;
4042 }else {
4043// Name found (e.g. "<a href=..."), add on tag attributes...
4044 $pos += $this->truncate_skip( $ret, $text,"<>", $pos + 1 );
4045 }
4046 } elseif ( $bracketState == 0 ) {
4047if ( $entityState ) {
4048if ( $ch ==';' ) {
4049 $entityState = 0;
4050 $dispLen++;// entity is one displayed char
4051 }
4052 }else {
4053if ( $neLength == 0 && !$maybeState ) {
4054// Save the state without $ch. We want to *hit* the first
4055// display char (to get tags) but not *use* it if truncating.
4056 $maybeState = [ substr( $ret, 0, -1 ), $openTags ];
4057 }
4058if ( $ch =='&' ) {
4059 $entityState = 1;// entity found, (e.g. "&#160;")
4060 }else {
4061 $dispLen++;// this char is displayed
4062// Add the next $max display text chars after this in one swoop...
4063 $max = ( $testingEllipsis ? $length : $neLength ) - $dispLen;
4064 $skipped = $this->truncate_skip( $ret, $text,"<>&", $pos + 1, $max );
4065 $dispLen += $skipped;
4066 $pos += $skipped;
4067 }
4068 }
4069 }
4070 }
4071// Close the last tag if left unclosed by bad HTML
4072 $this->truncate_endBracket( $tag, $tagType, $text[$textLen - 1], $openTags );
4073while ( count( $openTags ) > 0 ) {
4074 $ret .='</' . array_pop( $openTags ) .'>';// close open tags
4075 }
4076return $ret;
4077 }
4078
4090privatefunction truncate_skip( &$ret, $text, $search, $start, $len =null ) {
4091if ( $len ===null ) {
4092// -1 means "no limit" for strcspn
4093 $len = -1;
4094 } elseif ( $len < 0 ) {
4095 $len = 0;
4096 }
4097 $skipCount = 0;
4098if ( $start < strlen( $text ) ) {
4099 $skipCount = strcspn( $text, $search, $start, $len );
4100 $ret .= substr( $text, $start, $skipCount );
4101 }
4102return $skipCount;
4103 }
4104
4115privatefunction truncate_endBracket( &$tag, $tagType, $lastCh, &$openTags ) {
4116 $tag = ltrim( $tag );
4117if ( $tag !='' ) {
4118if ( $tagType == 0 && $lastCh !='/' ) {
4119 $openTags[] = $tag;// tag opened (didn't close itself)
4120 } elseif ( $tagType == 1 ) {
4121if ( $openTags && $tag == $openTags[count( $openTags ) - 1] ) {
4122 array_pop( $openTags );// tag closed
4123 }
4124 }
4125 $tag ='';
4126 }
4127 }
4128
4137publicfunctionconvertGrammar( $word, $case ) {
4138 $grammarForms = $this->config->get( MainConfigNames::GrammarForms );
4139if ( isset( $grammarForms[$this->getCode()][$case][$word] ) ) {
4140return $grammarForms[$this->getCode()][$case][$word];
4141 }
4142
4143 $grammarTransformations = $this->getGrammarTransformations();
4144
4145if ( isset( $grammarTransformations[$case] ) ) {
4146 $forms = $grammarTransformations[$case];
4147
4148// Some names of grammar rules are aliases for other rules.
4149// In such cases the value is a string rather than object,
4150// so load the actual rules.
4151if ( is_string( $forms ) ) {
4152 $forms = $grammarTransformations[$forms];
4153 }
4154
4155foreach ( $forms as $rule ) {
4156 $form = $rule[0];
4157
4158if ( $form ==='@metadata' ) {
4159continue;
4160 }
4161
4162 $replacement = $rule[1];
4163
4164 $regex ='/' . addcslashes( $form,'/' ) .'/u';
4165 $patternMatches = preg_match( $regex, $word );
4166
4167if ( $patternMatches ===false ) {
4169'An error occurred while processing grammar. ' .
4170"Word: '$word'. Regex: /$form/."
4171 );
4172 } elseif ( $patternMatches === 1 ) {
4173 $word = preg_replace( $regex, $replacement, $word );
4174
4175break;
4176 }
4177 }
4178 }
4179
4180return $word;
4181 }
4182
4189publicfunctiongetGrammarForms() {
4190 $grammarForms = $this->config->get( MainConfigNames::GrammarForms );
4191if ( isset( $grammarForms[$this->getCode()] )
4192 && is_array( $grammarForms[$this->getCode()] )
4193 ) {
4194return $grammarForms[$this->getCode()];
4195 }
4196
4197return [];
4198 }
4199
4209 global$IP;
4210if ( $this->grammarTransformCache !==null ) {
4211return $this->grammarTransformCache;
4212 }
4213
4214 $grammarDataFile =$IP ."/languages/data/grammarTransformations/{$this->getCode()}.json";
4215 $this->grammarTransformCache = is_readable( $grammarDataFile )
4216 ? FormatJson::decode( file_get_contents( $grammarDataFile ),true )
4217 : [];
4218
4219if ( $this->grammarTransformCache ===null ) {
4220thrownew RuntimeException("Invalid grammar data for \"{$this->getCode()}\"." );
4221 }
4222
4223return $this->grammarTransformCache;
4224 }
4225
4245publicfunctiongender( $gender, $forms ) {
4246if ( !count( $forms ) ) {
4247return'';
4248 }
4249 $forms = $this->preConvertPlural( $forms, 2 );
4250if ( $gender ==='male' ) {
4251return $forms[0];
4252 }
4253if ( $gender ==='female' ) {
4254return $forms[1];
4255 }
4256return $forms[2] ?? $forms[0];
4257 }
4258
4274publicfunctionconvertPlural( $count, $forms ) {
4275// Handle explicit n=pluralform cases
4276 $forms = $this->handleExplicitPluralForms( $count, $forms );
4277if ( is_string( $forms ) ) {
4278return $forms;
4279 }
4280if ( !count( $forms ) ) {
4281return'';
4282 }
4283
4284 $pluralForm = $this->getPluralRuleIndexNumber( $count );
4285 $pluralForm = min( $pluralForm, count( $forms ) - 1 );
4286return $forms[$pluralForm];
4287 }
4288
4304protectedfunctionhandleExplicitPluralForms( $count, array $forms ) {
4305foreach ( $forms as $index => $form ) {
4306if ( preg_match('/\d+=/i', $form ) ) {
4307 $pos = strpos( $form,'=' );
4308if ( substr( $form, 0, $pos ) === (string)$count ) {
4309return substr( $form, $pos + 1 );
4310 }
4311 unset( $forms[$index] );
4312 }
4313 }
4314return array_values( $forms );
4315 }
4316
4325protectedfunctionpreConvertPlural(/* Array */ $forms, $count ) {
4326return array_pad( $forms, $count, end( $forms ) );
4327 }
4328
4339publicfunctiongetFormalityIndex(): int {
4340return $this->localisationCache->getItem( $this->mCode,'formalityIndex' ) ?? 0;
4341 }
4342
4365publicfunctionembedBidi( $text ='' ) {
4366 $dir = self::strongDirFromContent( $text );
4367if ( $dir ==='ltr' ) {
4368// Wrap in LEFT-TO-RIGHT EMBEDDING ... POP DIRECTIONAL FORMATTING
4369return self::LRE . $text . self::PDF;
4370 }
4371if ( $dir ==='rtl' ) {
4372// Wrap in RIGHT-TO-LEFT EMBEDDING ... POP DIRECTIONAL FORMATTING
4373return self::RLE . $text . self::PDF;
4374 }
4375// No strong directionality: do not wrap
4376return $text;
4377 }
4378
4388publicfunctiongetBlockDurations( $includeOther =true ): array {
4389 $msg = $this->msg('ipboptions' )->text();
4390
4391if ( $msg =='-' ) {
4392return [];
4393 }
4394
4395 $a = XmlSelect::parseOptionsMessage( $msg );
4396
4397if ( $a && $includeOther ) {
4398// If options exist, add other to the end instead of the beginning (which
4399// is what happens by default).
4400 $a[ $this->msg('ipbother' )->text() ] ='other';
4401 }
4402
4403return $a;
4404 }
4405
4419publicfunctiontranslateBlockExpiry( $str, ?UserIdentity $user =null, $now = 0 ) {
4420 $duration = $this->getBlockDurations();
4421 $show = array_search( $str, $duration,true );
4422if ( $show !==false ) {
4423return trim( $show );
4424 }
4425
4426if (wfIsInfinity( $str ) ) {
4427foreach ( $duration as $show => $value ) {
4428if (wfIsInfinity( $value ) ) {
4429return trim( $show );
4430 }
4431 }
4432 }
4433
4434// If all else fails, return a standard duration or timestamp description.
4435 $time = strtotime( $str, $now );
4436if ( $time ===false ) {// Unknown format. Return it as-is in case.
4437return $str;
4438 } elseif ( $time !== strtotime( $str, $now + 1 ) ) {// It's a relative timestamp.
4439// The result differs based on current time, so the difference
4440// is a fixed duration length.
4441return $this->formatDurationBetweenTimestamps( $time, $now );
4442 }else {// It's an absolute timestamp.
4443if ( $time === 0 ) {
4444// wfTimestamp() handles 0 as current time instead of epoch.
4445 $time ='19700101000000';
4446 }
4447
4448// Return the timestamp as-is if it is in an unknown format to ConvertibleTimestamp (T354663)
4449 $time = ConvertibleTimestamp::convert( TS_MW, $time );
4450if ( $time ===false ) {
4451return $str;
4452 }
4453
4454if ( $user ) {
4455return $this->userTimeAndDate( $time, $user );
4456 }
4457return $this->timeanddate( $time );
4458 }
4459 }
4460
4468publicfunctionsegmentForDiff( $text ) {
4469return $text;
4470 }
4471
4478publicfunctionunsegmentForDiff( $text ) {
4479return $text;
4480 }
4481
4488publicfunctionlinkTrail() {
4489return $this->localisationCache->getItem( $this->mCode,'linkTrail' );
4490 }
4491
4498publicfunctionlinkPrefixCharset() {
4499return $this->localisationCache->getItem( $this->mCode,'linkPrefixCharset' );
4500 }
4501
4509publicfunctionequals(Language $lang ) {
4510return $lang === $this || $lang->getCode() === $this->mCode;
4511 }
4512
4519publicfunctiongetCode(): string {
4520return $this->mCode;
4521 }
4522
4533publicfunctiongetHtmlCode() {
4534 $this->mHtmlCode ??= LanguageCode::bcp47( $this->getCode() );
4535return $this->mHtmlCode;
4536 }
4537
4545publicfunctiontoBcp47Code(): string {
4546return $this->getHtmlCode();
4547 }
4548
4556publicfunctionisSameCodeAs( Bcp47Code $other ): bool {
4557if ( $this === $other ) {
4558returntrue;
4559 }
4560if ( $other instanceofLanguage ) {
4561// Compare the mediawiki-internal code
4562return $this->equals( $other );
4563 }
4564// Bcp-47 codes are case insensitive.
4565// See Bcp47CodeValue::isSameCode()
4566return strcasecmp( $this->toBcp47Code(), $other->toBcp47Code() ) === 0;
4567 }
4568
4577publicstaticfunctiongetCodeFromFileName( $filename, $prefix ='Language', $suffix ='.php' ) {
4578 $m =null;
4579 preg_match('/' . preg_quote( $prefix,'/' ) .'([A-Z][a-z_]+)' .
4580 preg_quote( $suffix,'/' ) .'/', $filename, $m );
4581if ( !count( $m ) ) {
4582returnfalse;
4583 }
4584return str_replace('_','-', strtolower( $m[1] ) );
4585 }
4586
4591privatefunction fixVariableInNamespace( $talk ) {
4592if ( !str_contains( $talk,'$1' ) ) {
4593return $talk;
4594 }
4595
4596 $talk = str_replace('$1', $this->config->get( MainConfigNames::MetaNamespace ), $talk );
4597
4598 # Allow grammar transformations
4599 # Allowing full message-style parsing would make simple requests
4600 # such as action=raw much more expensive than they need to be.
4601 # This will hopefully cover most cases.
4602 $talk = preg_replace_callback(
4603'/{{grammar:(.*?)\|(.*?)}}/i',
4604function ( $m ) {
4605return $this->convertGrammar( trim( $m[2] ), trim( $m[1] ) );
4606 },
4607 $talk
4608 );
4609return str_replace(' ','_', $talk );
4610 }
4611
4624publicfunctionformatExpiry( $expiry, $format =true, $infinity ='infinity', $user =null ) {
4625static $dbInfinity;
4626 $dbInfinity ??= MediaWikiServices::getInstance()->getConnectionProvider()
4627 ->getReplicaDatabase()
4628 ->getInfinity();
4629
4630if ( $expiry =='' || $expiry ==='infinity' || $expiry == $dbInfinity ) {
4631return $format ===true
4632 ? $this->getMessageFromDB('infiniteblock' )
4633 : $infinity;
4634 }else {
4635if ( $format ===true ) {
4636return $user
4637 ? $this->userTimeAndDate( $expiry, $user )
4638 : $this->timeanddate( $expiry,/* User preference timezone */true );
4639 }
4640returnwfTimestamp( $format, $expiry );
4641 }
4642 }
4643
4658publicfunctionformatTimePeriod( $seconds, $format = [] ) {
4659if ( !is_array( $format ) ) {
4660 $format = ['avoid' => $format ];// For backwards compatibility
4661 }
4662if ( !isset( $format['avoid'] ) ) {
4663 $format['avoid'] =false;
4664 }
4665if ( !isset( $format['noabbrevs'] ) ) {
4666 $format['noabbrevs'] =false;
4667 }
4668 $secondsMsg = $this->msg( $format['noabbrevs'] ?'seconds' :'seconds-abbrev' );
4669 $minutesMsg = $this->msg( $format['noabbrevs'] ?'minutes' :'minutes-abbrev' );
4670 $hoursMsg = $this->msg( $format['noabbrevs'] ?'hours' :'hours-abbrev' );
4671 $daysMsg = $this->msg( $format['noabbrevs'] ?'days' :'days-abbrev' );
4672 $space = $this->msg('word-separator' )->text();
4673
4674if ( round( $seconds * 10 ) < 100 ) {
4675 $s = $this->formatNum( sprintf("%.1f", round( $seconds * 10 ) / 10 ) );
4676 $s = $secondsMsg->params( $s )->text();
4677 } elseif ( round( $seconds ) < 60 ) {
4678 $s = $this->formatNum( round( $seconds ) );
4679 $s = $secondsMsg->params( $s )->text();
4680 } elseif ( round( $seconds ) < 3600 ) {
4681 $minutes = floor( $seconds / 60 );
4682 $secondsPart = round( fmod( $seconds, 60 ) );
4683if ( $secondsPart == 60 ) {
4684 $secondsPart = 0;
4685 $minutes++;
4686 }
4687 $s = $minutesMsg->params( $this->formatNum( $minutes ) )->text();
4688 $s .= $space;
4689 $s .= $secondsMsg->params( $this->formatNum( $secondsPart ) )->text();
4690 } elseif ( round( $seconds ) <= 2 * 86400 ) {
4691 $hours = floor( $seconds / 3600 );
4692 $minutes = floor( ( $seconds - $hours * 3600 ) / 60 );
4693 $secondsPart = round( $seconds - $hours * 3600 - $minutes * 60 );
4694if ( $secondsPart == 60 ) {
4695 $secondsPart = 0;
4696 $minutes++;
4697 }
4698if ( $minutes == 60 ) {
4699 $minutes = 0;
4700 $hours++;
4701 }
4702 $s = $hoursMsg->params( $this->formatNum( $hours ) )->text();
4703 $s .= $space;
4704 $s .= $minutesMsg->params( $this->formatNum( $minutes ) )->text();
4705if ( !in_array( $format['avoid'], ['avoidseconds','avoidminutes','avoidhours' ] ) ) {
4706 $s .= $space . $secondsMsg->params( $this->formatNum( $secondsPart ) )->text();
4707 }
4708 }else {
4709 $days = floor( $seconds / 86400 );
4710if ( $format['avoid'] ==='avoidhours' ) {
4711 $hours = round( ( $seconds - $days * 86400 ) / 3600 );
4712if ( $hours == 24 ) {
4713 $days++;
4714 }
4715 $s = $daysMsg->params( $this->formatNum( $days ) )->text();
4716 } elseif ( $format['avoid'] ==='avoidminutes' ) {
4717 $hours = round( ( $seconds - $days * 86400 ) / 3600 );
4718if ( $hours == 24 ) {
4719 $hours = 0;
4720 $days++;
4721 }
4722 $s = $daysMsg->params( $this->formatNum( $days ) )->text();
4723 $s .= $space;
4724 $s .= $hoursMsg->params( $this->formatNum( $hours ) )->text();
4725 } elseif ( $format['avoid'] ==='avoidseconds' ) {
4726 $hours = floor( ( $seconds - $days * 86400 ) / 3600 );
4727 $minutes = round( ( $seconds - $days * 86400 - $hours * 3600 ) / 60 );
4728if ( $minutes == 60 ) {
4729 $minutes = 0;
4730 $hours++;
4731 }
4732if ( $hours == 24 ) {
4733 $hours = 0;
4734 $days++;
4735 }
4736 $s = $daysMsg->params( $this->formatNum( $days ) )->text();
4737 $s .= $space;
4738 $s .= $hoursMsg->params( $this->formatNum( $hours ) )->text();
4739 $s .= $space;
4740 $s .= $minutesMsg->params( $this->formatNum( $minutes ) )->text();
4741 }else {
4742 $s = $daysMsg->params( $this->formatNum( $days ) )->text();
4743 $s .= $space;
4744 $s .= $this->formatTimePeriod( $seconds - $days * 86400, $format );
4745 }
4746 }
4747return $s;
4748 }
4749
4761publicfunctionformatBitrate( $bps ) {
4762// messages used: bitrate-bits, bitrate-kilobits, bitrate-megabits, bitrate-gigabits, bitrate-terabits,
4763// bitrate-petabits, bitrate-exabits, bitrate-zettabits, bitrate-yottabits, bitrate-ronnabits,
4764// bitrate-quettabits
4765return $this->formatComputingNumbers( $bps, 1000,"bitrate-$1bits" );
4766 }
4767
4774publicfunctionformatComputingNumbers( $size, $boundary, $messageKey ) {
4775if ( $size <= 0 ) {
4776return str_replace('$1', $this->formatNum( $size ),
4777 $this->getMessageFromDB( str_replace('$1','', $messageKey ) )
4778 );
4779 }
4780 $sizes = ['','kilo','mega','giga','tera','peta','exa','zetta','yotta','ronna','quetta' ];
4781 $index = 0;
4782
4783 $maxIndex = count( $sizes ) - 1;
4784while ( $size >= $boundary && $index < $maxIndex ) {
4785 $index++;
4786 $size /= $boundary;
4787 }
4788
4789// For small sizes no decimal places necessary
4790 $round = 0;
4791if ( $index > 1 ) {
4792// For MB and larger units, two decimal places are smarter
4793 $round = 2;
4794 }
4795 $msg = str_replace('$1', $sizes[$index], $messageKey );
4796
4797 $size = round( $size, $round );
4798 $text = $this->getMessageFromDB( $msg );
4799return str_replace('$1', $this->formatNum( $size ), $text );
4800 }
4801
4812publicfunctionformatSize( $size ) {
4813// messages used: size-bytes, size-kilobytes, size-megabytes, size-gigabytes, size-terabytes,
4814// size-petabytes, size-exabytes, size-zettabytes, size-yottabytes, size-ronnabytes, size-quettabytes
4815return $this->formatComputingNumbers( $size, 1024,"size-$1bytes" );
4816 }
4817
4825publicfunctionspecialList( $page, $details ) {
4826if ( !$details ) {
4827return $page;
4828 }
4829
4830return Html::rawElement('bdi', ['dir' => $this->getDir() ], $page ) .
4831 $this->msg('word-separator' )->escaped() .
4832 $this->msg('parentheses' )->rawParams( $details )->escaped();
4833 }
4834
4835privatefunction getNumberFormatter(): NumberFormatter {
4836if ( $this->numberFormatter === null ) {
4837$digitGroupingPattern = $this->digitGroupingPattern();
4838 $code = $this->getCode();
4839if ( !( $this->config->get( MainConfigNames::TranslateNumerals )
4840 && $this->langNameUtils->isValidCode( $code ) )
4841 ) {
4842 $code = Locale::getDefault();// POSIX system default locale
4843 }
4844
4845 $fmt = $this->createNumberFormatter( $code,$digitGroupingPattern );
4846if ( !$fmt ) {
4847 $fallbacks = $this->getFallbackLanguages();
4848foreach ( $fallbacks as $fallbackCode ) {
4849 $fmt = $this->createNumberFormatter( $fallbackCode,$digitGroupingPattern );
4850if ( $fmt ) {
4851break;
4852 }
4853 }
4854if ( !$fmt ) {
4855thrownew RuntimeException(
4856'Could not instance NumberFormatter for ' . $code .' and all fallbacks'
4857 );
4858 }
4859 }
4860
4861 $this->numberFormatter = $fmt;
4862 }
4863return $this->numberFormatter;
4864 }
4865
4866privatefunction createNumberFormatter(string $code, ?string$digitGroupingPattern ): ?NumberFormatter {
4867try {
4868if ($digitGroupingPattern ) {
4869returnnew NumberFormatter(
4870 $code, NumberFormatter::PATTERN_DECIMAL,$digitGroupingPattern
4871 );
4872 }
4873// @suppress PhanParamTooFew Phan thinks this always requires 3 parameters, that's wrong
4874returnnew NumberFormatter( $code, NumberFormatter::DECIMAL );
4875 }catch ( \ValueError ) {
4876// Value Errors are thrown since php8.4 for invalid locales
4877returnnull;
4878 }
4879 }
4880
4887publicfunctiongetCompiledPluralRules() {
4888 $pluralRules =
4889 $this->localisationCache->getItem( strtolower( $this->mCode ),'compiledPluralRules' );
4890if ( !$pluralRules ) {
4891 $fallbacks = $this->getFallbackLanguages();
4892foreach ( $fallbacks as $fallbackCode ) {
4893 $pluralRules = $this->localisationCache
4894 ->getItem( strtolower( $fallbackCode ),'compiledPluralRules' );
4895if ( $pluralRules ) {
4896break;
4897 }
4898 }
4899 }
4900return $pluralRules;
4901 }
4902
4909publicfunctiongetPluralRules() {
4910 $pluralRules =
4911 $this->localisationCache->getItem( strtolower( $this->mCode ),'pluralRules' );
4912if ( !$pluralRules ) {
4913 $fallbacks = $this->getFallbackLanguages();
4914foreach ( $fallbacks as $fallbackCode ) {
4915 $pluralRules = $this->localisationCache
4916 ->getItem( strtolower( $fallbackCode ),'pluralRules' );
4917if ( $pluralRules ) {
4918break;
4919 }
4920 }
4921 }
4922return $pluralRules;
4923 }
4924
4931publicfunctiongetPluralRuleTypes() {
4932 $pluralRuleTypes =
4933 $this->localisationCache->getItem( strtolower( $this->mCode ),'pluralRuleTypes' );
4934if ( !$pluralRuleTypes ) {
4935 $fallbacks = $this->getFallbackLanguages();
4936foreach ( $fallbacks as $fallbackCode ) {
4937 $pluralRuleTypes = $this->localisationCache
4938 ->getItem( strtolower( $fallbackCode ),'pluralRuleTypes' );
4939if ( $pluralRuleTypes ) {
4940break;
4941 }
4942 }
4943 }
4944return $pluralRuleTypes;
4945 }
4946
4953publicfunctiongetPluralRuleIndexNumber( $number ) {
4954 $pluralRules = $this->getCompiledPluralRules();
4955return Evaluator::evaluateCompiled( $number, $pluralRules );
4956 }
4957
4967publicfunctiongetPluralRuleType( $number ) {
4968 $index = $this->getPluralRuleIndexNumber( $number );
4969 $pluralRuleTypes = $this->getPluralRuleTypes();
4970return $pluralRuleTypes[$index] ??'other';
4971 }
4972
4979protectedfunctiongetConverterInternal() {
4980return $this->converterFactory->getLanguageConverter( $this );
4981 }
4982
4989protectedfunctiongetHookContainer() {
4990return $this->hookContainer;
4991 }
4992
5001protectedfunctiongetHookRunner() {
5002return $this->hookRunner;
5003 }
5004
5010publicfunctiongetJsData() {
5011return [
5012'digitTransformTable' => $this->digitTransformTable(),
5013'separatorTransformTable' => $this->separatorTransformTable(),
5014'minimumGroupingDigits' => $this->minimumGroupingDigits(),
5015'formalityIndex' => $this->getFormalityIndex(),
5016'grammarForms' => $this->getGrammarForms(),
5017'grammarTransformations' => $this->getGrammarTransformations(),
5018'pluralRules' => $this->getPluralRules(),
5019'digitGroupingPattern' => $this->digitGroupingPattern(),
5020'fallbackLanguages' => $this->getFallbackLanguages(),
5021'bcp47Map' => LanguageCode::getNonstandardLanguageCodeMapping(),
5022 ];
5023 }
5024
5029publicfunctiongetJsDateFormats() {
5030 $jsLcFormats = $this->localisationCache->getItem( $this->mCode,'jsDateFormats' );
5031 $phpLcFormats = $this->localisationCache->getItem( $this->mCode,'dateFormats' );
5032
5033 $styles = $this->getDatePreferences() ?: [];
5034 $default = $this->getDefaultDateFormat();
5035// Always include the default style
5036if ( !in_array( $default, $styles,true ) ) {
5037 $styles[] = $default;
5038 }
5039 $results = [];
5040foreach ( $styles as $style ) {
5041if ( $style ==='default' ) {
5042// Default is not a real style for our purposes
5043continue;
5044 }
5045foreach ( ['time','date','both','pretty' ] as $type ) {
5046 $key ="$style $type";
5047 $resolvedType = $type;
5048 $resolvedStyle = $style;
5049 $resolvedKey = $key;
5050
5051// If the PHP localisation lacks the "pretty" type, fall back to "date"
5052if ( !isset( $phpLcFormats[$key] ) && $type ==='pretty' ) {
5053 $resolvedType ='date';
5054 $resolvedKey ="$resolvedStyle $resolvedType";
5055 }
5056
5057// If $jsDateFormats has an alias, follow it.
5058// This is used to gracefully remove formats that don't work in the browser.
5059 $alias = $jsLcFormats[$resolvedKey]['alias'] ??'';
5060if ( preg_match('/^(.*) ([^ ]*)$/', $alias, $m ) ) {
5061 $resolvedType = $m[2];
5062 $resolvedStyle = $m[1];
5063 $resolvedKey ="$resolvedStyle $resolvedType";
5064 }
5065
5066 $jsFormat = $this->convertDateFormatToJs(
5067 $this->getDateFormatString( $resolvedType, $resolvedStyle ) );
5068if ( isset( $jsLcFormats[$resolvedKey] ) ) {
5069 $results[$key] = array_merge_recursive( $jsFormat, $jsLcFormats[$resolvedKey] );
5070 }else {
5071 $results[$key] = $jsFormat;
5072 }
5073 }
5074 }
5075return $results;
5076 }
5077}
5078
5080class_alias( Language::class,'Language' );
NS_USER
const NS_USER
DefinitionDefines.php:53
NS_PROJECT_TALK
const NS_PROJECT_TALK
DefinitionDefines.php:56
NS_USER_TALK
const NS_USER_TALK
DefinitionDefines.php:54
NS_PROJECT
const NS_PROJECT
DefinitionDefines.php:55
wfWarn
wfWarn( $msg, $callerOffset=1, $level=E_USER_NOTICE)
Send a warning either to the debug log or in a PHP error depending on $wgDevelopmentWarnings.
DefinitionGlobalFunctions.php:781
wfLogWarning
wfLogWarning( $msg, $callerOffset=1, $level=E_USER_WARNING)
Send a warning as a PHP error and the debug log.
DefinitionGlobalFunctions.php:794
wfIsInfinity
wfIsInfinity( $str)
Determine input string is represents as infinity.
DefinitionGlobalFunctions.php:1923
wfTimestamp
wfTimestamp( $outputtype=TS_UNIX, $ts=0)
Get a timestamp string in one of various formats.
DefinitionGlobalFunctions.php:1300
wfDeprecated
wfDeprecated( $function, $version=false, $component=false, $callerOffset=2)
Logs a warning that a deprecated feature was used.
DefinitionGlobalFunctions.php:735
$fallback
$fallback
DefinitionMessagesAae.php:10
$separatorTransformTable
$separatorTransformTable
DefinitionMessagesAcm.php:70
$digitGroupingPattern
$digitGroupingPattern
DefinitionMessagesAcm.php:75
$minimumGroupingDigits
$minimumGroupingDigits
DefinitionMessagesAst.php:339
try
try
DefinitionNoLocalSettings.php:39
$matches
$matches
DefinitionNoLocalSettings.php:13
$IP
if(!defined('MEDIAWIKI')) if(!defined( 'MW_ENTRY_POINT')) global $IP
Environment checks.
DefinitionSetup.php:90
if
if(!defined('MW_SETUP_CALLBACK'))
DefinitionWebStart.php:68
LocalisationCache
Caching for the contents of localisation files.
DefinitionLocalisationCache.php:34
MediaWiki\Context\RequestContext
Group all the pieces relevant to the context of a request into one instance.
DefinitionRequestContext.php:53
MediaWiki\HookContainer\HookContainer
HookContainer class.
DefinitionHookContainer.php:41
MediaWiki\HookContainer\HookRunner
This class provides an implementation of the core hook interfaces, forwarding hook calls to HookConta...
DefinitionHookRunner.php:595
MediaWiki\Html\Html
This class is a collection of static functions that serve two purposes:
DefinitionHtml.php:43
MediaWiki\Json\FormatJson
JSON formatter wrapper class.
DefinitionFormatJson.php:16
MediaWiki\Language\LanguageConverterFactory
An interface for creating language converters.
DefinitionLanguageConverterFactory.php:37
MediaWiki\Language\LanguageFallback
DefinitionLanguageFallback.php:15
MediaWiki\Language\LanguageNameUtils
A service that provides utilities to do with language names and codes.
DefinitionLanguageNameUtils.php:27
MediaWiki\Language\Language
Base class for language-specific code.
DefinitionLanguage.php:69
MediaWiki\Language\Language\resetNamespaces
resetNamespaces()
Resets all the namespace caches.
DefinitionLanguage.php:440
MediaWiki\Language\Language\formatDuration
formatDuration( $seconds, array $chosenIntervals=[])
Takes a number of seconds and turns it into a text using values such as hours and minutes.
DefinitionLanguage.php:2543
MediaWiki\Language\Language\hasWordBreaks
hasWordBreaks()
Most writing systems use whitespace to break up words.
DefinitionLanguage.php:3178
MediaWiki\Language\Language\date
date( $ts, $adj=false, $format=true, $timecorrection=false)
DefinitionLanguage.php:2485
MediaWiki\Language\Language\formatDurationBetweenTimestamps
formatDurationBetweenTimestamps(int $timestamp1, int $timestamp2, ?int $precision=null)
Takes two timestamps and turns the difference between them into a text using values such as hours and...
DefinitionLanguage.php:2567
MediaWiki\Language\Language\formatNumNoSeparators
formatNumNoSeparators( $number)
Front-end for non-commafied formatNum.
DefinitionLanguage.php:3673
MediaWiki\Language\Language\getJsDateFormats
getJsDateFormats()
DefinitionLanguage.php:5029
MediaWiki\Language\Language\computeUnitTimestampDeadline
static computeUnitTimestampDeadline(DateTimeInterface $date, string $unit)
Compute a cache expiry to account for a dynamic timestamp displayed in output.
DefinitionLanguage.php:1409
MediaWiki\Language\Language\$mNamespaceIds
array< string, int > null $mNamespaceIds
Indexed by localized lower-cased namespace name.
DefinitionLanguage.php:100
MediaWiki\Language\Language\userTimeAndDate
userTimeAndDate( $ts, UserIdentity $user, array $options=[])
Get the formatted date and time for the given timestamp and formatted for the given user.
DefinitionLanguage.php:2784
MediaWiki\Language\Language\convertGrammar
convertGrammar( $word, $case)
Grammatical transformations, needed for inflected languages Invoked by putting {{grammar:case|word}} ...
DefinitionLanguage.php:4137
MediaWiki\Language\Language\formatTimePeriod
formatTimePeriod( $seconds, $format=[])
Formats a time given in seconds into a string representation of that time.
DefinitionLanguage.php:4658
MediaWiki\Language\Language\formatExpiry
formatExpiry( $expiry, $format=true, $infinity='infinity', $user=null)
Decode an expiry (block, protection, etc.) which has come from the DB.
DefinitionLanguage.php:4624
MediaWiki\Language\Language\digitTransformTable
digitTransformTable()
DefinitionLanguage.php:3721
MediaWiki\Language\Language\truncateHtml
truncateHtml( $text, $length, $ellipsis='...')
Truncate a string of valid HTML to a specified length in bytes, appending an optional string (e....
DefinitionLanguage.php:3971
MediaWiki\Language\Language\isRTL
isRTL()
For right-to-left language support.
DefinitionLanguage.php:3352
MediaWiki\Language\Language\getPluralRuleIndexNumber
getPluralRuleIndexNumber( $number)
Find the index number of the plural rule appropriate for the given number.
DefinitionLanguage.php:4953
MediaWiki\Language\Language\formatBitrate
formatBitrate( $bps)
Format a bitrate for output, using an appropriate unit (bps, kbps, Mbps, Gbps, Tbps,...
DefinitionLanguage.php:4761
MediaWiki\Language\Language\linkPrefixCharset
linkPrefixCharset()
A regular expression character set to match legal word-prefixing characters which should be merged on...
DefinitionLanguage.php:4498
MediaWiki\Language\Language\equals
equals(Language $lang)
Compare with another language object.
DefinitionLanguage.php:4509
MediaWiki\Language\Language\getDir
getDir()
Return the correct HTML 'dir' attribute value for this language.
DefinitionLanguage.php:3360
MediaWiki\Language\Language\getGrammarForms
getGrammarForms()
Get the grammar forms for the content language.
DefinitionLanguage.php:4189
MediaWiki\Language\Language\ucfirst
ucfirst( $str)
DefinitionLanguage.php:2978
MediaWiki\Language\Language\alignStart
alignStart()
Return 'left' or 'right' as appropriate alignment for line-start for this language's text direction.
DefinitionLanguage.php:3372
MediaWiki\Language\Language\timeanddate
timeanddate( $ts, $adj=false, $format=true, $timecorrection=false)
DefinitionLanguage.php:2524
MediaWiki\Language\Language\userAdjust
userAdjust( $ts, $tz=false)
Used by date() and time() to adjust the time output.
DefinitionLanguage.php:1997
MediaWiki\Language\Language\alignEnd
alignEnd()
Return 'right' or 'left' as appropriate alignment for line-end for this language's text direction.
DefinitionLanguage.php:3384
MediaWiki\Language\Language\formatNum
formatNum( $number)
Normally we output all numbers in plain en_US style, that is 293,291.235 for two hundred ninety-three...
DefinitionLanguage.php:3539
MediaWiki\Language\Language\isSameCodeAs
isSameCodeAs(Bcp47Code $other)
Compare this Language object to a Bcp47Code.
DefinitionLanguage.php:4556
MediaWiki\Language\Language\dateFormat
dateFormat( $usePrefs=true)
This is meant to be used by time(), date(), and timeanddate() to get the date preference they're supp...
DefinitionLanguage.php:2417
MediaWiki\Language\Language\getNsText
getNsText( $index)
Get a namespace value by key.
DefinitionLanguage.php:476
MediaWiki\Language\Language\getHumanTimestamp
getHumanTimestamp(MWTimestamp $time, ?MWTimestamp $relativeTo=null, ?UserIdentity $user=null)
Get the timestamp in a human-friendly relative format, e.g., "3 days ago".
DefinitionLanguage.php:2803
MediaWiki\Language\Language\firstChar
firstChar( $s)
Get the first character of a string.
DefinitionLanguage.php:3264
MediaWiki\Language\Language\handleExplicitPluralForms
handleExplicitPluralForms( $count, array $forms)
Handles explicit plural forms for Language::convertPlural()
DefinitionLanguage.php:4304
MediaWiki\Language\Language\$mMagicExtensions
$mMagicExtensions
DefinitionLanguage.php:78
MediaWiki\Language\Language\normalize
normalize( $s)
Convert a UTF-8 string to normal form C.
DefinitionLanguage.php:3315
MediaWiki\Language\Language\$durationIntervals
static int[] $durationIntervals
DefinitionLanguage.php:290
MediaWiki\Language\Language\truncateForVisual
truncateForVisual( $string, $length, $ellipsis='...', $adjustLength=true)
Truncate a string to a specified number of characters, appending an optional string (e....
DefinitionLanguage.php:3860
MediaWiki\Language\Language\convertPlural
convertPlural( $count, $forms)
Plural form transformations, needed for some languages.
DefinitionLanguage.php:4274
MediaWiki\Language\Language\hebrewNumeral
static hebrewNumeral( $num)
Hebrew Gematria number formatting up to 9999.
DefinitionLanguage.php:1911
MediaWiki\Language\Language\WEEKDAY_MESSAGES
const WEEKDAY_MESSAGES
DefinitionLanguage.php:178
MediaWiki\Language\Language\$namespaceNames
array< int, string > null $namespaceNames
Indexed by numeric namespace ID.
DefinitionLanguage.php:98
MediaWiki\Language\Language\parseFormattedNumber
parseFormattedNumber( $number)
DefinitionLanguage.php:3681
MediaWiki\Language\Language\fallback8bitEncoding
fallback8bitEncoding()
DefinitionLanguage.php:3166
MediaWiki\Language\Language\ucwordbreaks
ucwordbreaks( $str)
capitalize words at word breaks
DefinitionLanguage.php:3103
MediaWiki\Language\Language\$dateFormatStrings
string[][] $dateFormatStrings
memoize
DefinitionLanguage.php:88
MediaWiki\Language\Language\setNamespaces
setNamespaces(array $namespaces)
Arbitrarily set all the namespace names at once.
DefinitionLanguage.php:431
MediaWiki\Language\Language\DURATION_INTERVALS
const DURATION_INTERVALS
DefinitionLanguage.php:271
MediaWiki\Language\Language\getFormattedNamespaces
getFormattedNamespaces()
A convenience function that returns {.
DefinitionLanguage.php:455
MediaWiki\Language\Language\userDate
userDate( $ts, UserIdentity $user, array $options=[])
Get the formatted date for the given timestamp and formatted for the given user.
DefinitionLanguage.php:2738
MediaWiki\Language\Language\getConverterInternal
getConverterInternal()
Return the LanguageConverter for this language, convenience function for use in the language classes ...
DefinitionLanguage.php:4979
MediaWiki\Language\Language\getCompiledPluralRules
getCompiledPluralRules()
Get the compiled plural rules for the language.
DefinitionLanguage.php:4887
MediaWiki\Language\Language\getDirMark
getDirMark( $opposite=false)
A hidden direction mark (LRM or RLM), depending on the language direction.
DefinitionLanguage.php:3430
MediaWiki\Language\Language\getCodeFromFileName
static getCodeFromFileName( $filename, $prefix='Language', $suffix='.php')
Get the language code from a file name.
DefinitionLanguage.php:4577
MediaWiki\Language\Language\getSpecialPageAliases
getSpecialPageAliases()
Get special page names, as an associative array canonical name => array of valid names,...
DefinitionLanguage.php:3501
MediaWiki\Language\Language\linkTrail
linkTrail()
A regular expression to match legal word-trailing characters which should be merged onto a link of th...
DefinitionLanguage.php:4488
MediaWiki\Language\Language\checkTitleEncoding
checkTitleEncoding(string $s)
DefinitionLanguage.php:3155
MediaWiki\Language\Language\getGroupName
getGroupName( $group)
Gets the localized friendly name for a group, if it exists.
DefinitionLanguage.php:2918
MediaWiki\Language\Language\userTime
userTime( $ts, UserIdentity $user, array $options=[])
Get the formatted time for the given timestamp and formatted for the given user.
DefinitionLanguage.php:2761
MediaWiki\Language\Language\translateBlockExpiry
translateBlockExpiry( $str, ?UserIdentity $user=null, $now=0)
DefinitionLanguage.php:4419
MediaWiki\Language\Language\getSearchIndexVariant
getSearchIndexVariant()
Specify the language variant that should be used for search indexing.
DefinitionLanguage.php:3198
MediaWiki\Language\Language\removeBadCharLast
removeBadCharLast( $string)
Remove bytes that represent an incomplete Unicode character at the end of string (e....
DefinitionLanguage.php:3937
MediaWiki\Language\Language\separatorTransformTable
separatorTransformTable()
DefinitionLanguage.php:3728
MediaWiki\Language\Language\truncateForDatabase
truncateForDatabase( $string, $length, $ellipsis='...', $adjustLength=true)
Truncate a string to a specified length in bytes, appending an optional string (e....
DefinitionLanguage.php:3829
MediaWiki\Language\Language\getPluralRuleTypes
getPluralRuleTypes()
Get the plural rule types for the language.
DefinitionLanguage.php:4931
MediaWiki\Language\Language\MONTH_MESSAGES
const MONTH_MESSAGES
DefinitionLanguage.php:193
MediaWiki\Language\Language\getGroupMemberName
getGroupMemberName(string $group, $member)
Gets the localized name for a member of a user group if it exists.
DefinitionLanguage.php:2932
MediaWiki\Language\Language\getCode
getCode()
Get the internal language code for this language object.
DefinitionLanguage.php:4519
MediaWiki\Language\Language\getPluralRuleType
getPluralRuleType( $number)
Find the plural rule type appropriate for the given number.
DefinitionLanguage.php:4967
MediaWiki\Language\Language\HEBREW_CALENDAR_MONTH_GENITIVE_MESSAGES
const HEBREW_CALENDAR_MONTH_GENITIVE_MESSAGES
DefinitionLanguage.php:250
MediaWiki\Language\Language\getBookstoreList
getBookstoreList()
Exports $wgBookstoreListEn.
DefinitionLanguage.php:377
MediaWiki\Language\Language\__construct
__construct(string $code, NamespaceInfo $namespaceInfo, LocalisationCache $localisationCache, LanguageNameUtils $langNameUtils, LanguageFallback $langFallback, LanguageConverterFactory $converterFactory, HookContainer $hookContainer, Config $config)
DefinitionLanguage.php:344
MediaWiki\Language\Language\getArrow
getArrow( $direction='forwards')
An arrow, depending on the language direction.
DefinitionLanguage.php:3444
MediaWiki\Language\Language\emphasize
emphasize( $text)
Italic is unsuitable for some languages.
DefinitionLanguage.php:3515
MediaWiki\Language\Language\needsGenderDistinction
needsGenderDistinction()
Whether this language uses gender-dependent namespace aliases.
DefinitionLanguage.php:522
MediaWiki\Language\Language\$mMonthAbbrevMsgs
static $mMonthAbbrevMsgs
DefinitionLanguage.php:224
MediaWiki\Language\Language\ucwords
ucwords( $str)
DefinitionLanguage.php:3077
MediaWiki\Language\Language\getDirMarkEntity
getDirMarkEntity( $opposite=false)
A hidden direction mark (LRM or RLM), depending on the language direction.
DefinitionLanguage.php:3406
MediaWiki\Language\Language\MONTH_ABBREVIATED_MESSAGES
const MONTH_ABBREVIATED_MESSAGES
DefinitionLanguage.php:216
MediaWiki\Language\Language\semicolonList
semicolonList(array $list)
Take a list of strings and build a locale-friendly semicolon-separated list, using the local semicolo...
DefinitionLanguage.php:3793
MediaWiki\Language\Language\iconv
iconv( $in, $out, $string)
DefinitionLanguage.php:2963
MediaWiki\Language\Language\convertForSearchResult
convertForSearchResult( $termsArray)
DefinitionLanguage.php:3252
MediaWiki\Language\Language\getMessage
getMessage( $key)
DefinitionLanguage.php:2945
MediaWiki\Language\Language\getNamespaces
getNamespaces()
Returns an array of localised namespaces (with underscores, without considering language variants) in...
DefinitionLanguage.php:388
MediaWiki\Language\Language\getAllMessages
getAllMessages()
DefinitionLanguage.php:2953
MediaWiki\Language\Language\getNamespaceIds
getNamespaceIds()
DefinitionLanguage.php:615
MediaWiki\Language\Language\lcfirst
lcfirst( $str)
DefinitionLanguage.php:3029
MediaWiki\Language\Language\linkPrefixExtension
linkPrefixExtension()
To allow "foo[[bar]]" to extend the link over the whole word "foobar".
DefinitionLanguage.php:3466
MediaWiki\Language\Language\digitGroupingPattern
digitGroupingPattern()
DefinitionLanguage.php:3714
MediaWiki\Language\Language\$namespaceAliases
array< string, int > null $namespaceAliases
Map from alias to namespace ID.
DefinitionLanguage.php:102
MediaWiki\Language\Language\getFormattedNsText
getFormattedNsText( $index)
A convenience function that returns the same thing as getNsText() except with '_' changed to ' ',...
DefinitionLanguage.php:494
MediaWiki\Language\Language\getMagic
getMagic( $mw)
Fill a MagicWord object with data from this instance.
DefinitionLanguage.php:3484
MediaWiki\Language\Language\segmentForDiff
segmentForDiff( $text)
Languages like Chinese need to be segmented in order for the diff to be of any use.
DefinitionLanguage.php:4468
MediaWiki\Language\Language\WEEKDAY_ABBREVIATED_MESSAGES
const WEEKDAY_ABBREVIATED_MESSAGES
DefinitionLanguage.php:186
MediaWiki\Language\Language\formatSize
formatSize( $size)
Format a size in bytes for output, using an appropriate unit (B, KB, MB, GB, TB, PB,...
DefinitionLanguage.php:4812
MediaWiki\Language\Language\commaList
commaList(array $list)
Take a list of strings and build a locale-friendly comma-separated list, using the local comma-separa...
DefinitionLanguage.php:3779
MediaWiki\Language\Language\pipeList
pipeList(array $list)
Same as commaList, but separate it with the pipe instead.
DefinitionLanguage.php:3806
MediaWiki\Language\Language\convertDoubleWidth
static convertDoubleWidth( $string)
Convert double-width roman characters to single-width.
DefinitionLanguage.php:3228
MediaWiki\Language\Language\getGrammarTransformations
getGrammarTransformations()
Get the grammar transformations data for the language.
DefinitionLanguage.php:4208
MediaWiki\Language\Language\getMagicWords
getMagicWords()
Get all the magic words from the localisation cache.
DefinitionLanguage.php:3475
MediaWiki\Language\Language\transformUsingPairFile
transformUsingPairFile(string $dataClass, string $input)
Transform a string using serialized data stored in the given file (which must be in the serialized su...
DefinitionLanguage.php:3339
MediaWiki\Language\Language\HEBREW_CALENDAR_MONTHS_MESSAGES
const HEBREW_CALENDAR_MONTHS_MESSAGES
DefinitionLanguage.php:239
MediaWiki\Language\Language\getJsData
getJsData()
DefinitionLanguage.php:5010
MediaWiki\Language\Language\IRANIAN_CALENDAR_MONTHS_MESSAGES
const IRANIAN_CALENDAR_MONTHS_MESSAGES
DefinitionLanguage.php:229
MediaWiki\Language\Language\unsegmentForDiff
unsegmentForDiff( $text)
And unsegment to show the result.
DefinitionLanguage.php:4478
MediaWiki\Language\Language\specialList
specialList( $page, $details)
Make a list item, used by various special pages.
DefinitionLanguage.php:4825
MediaWiki\Language\Language\getNamespaceAliases
getNamespaceAliases()
DefinitionLanguage.php:557
MediaWiki\Language\Language\normalizeForSearch
normalizeForSearch( $text)
Some languages have special punctuation need to be normalized.
DefinitionLanguage.php:3213
MediaWiki\Language\Language\getBlockDurations
getBlockDurations( $includeOther=true)
Get an array of suggested block durations from MediaWiki:Ipboptions.
DefinitionLanguage.php:4388
MediaWiki\Language\Language\getHtmlCode
getHtmlCode()
Get the code in BCP 47 format which we can use inside html lang="" tags.
DefinitionLanguage.php:4533
MediaWiki\Language\Language\getPluralRules
getPluralRules()
Get the plural rules for the language.
DefinitionLanguage.php:4909
MediaWiki\Language\Language\getLocalNsIndex
getLocalNsIndex( $text)
Get a namespace key by case-insensitive value.
DefinitionLanguage.php:547
MediaWiki\Language\Language\getHookContainer
getHookContainer()
Get a HookContainer, for hook metadata and running extension hooks.
DefinitionLanguage.php:4989
MediaWiki\Language\Language\getFallbackLanguages
getFallbackLanguages()
DefinitionLanguage.php:369
MediaWiki\Language\Language\caseFold
caseFold( $s)
Return a case-folded representation of $s.
DefinitionLanguage.php:3147
MediaWiki\Language\Language\preConvertPlural
preConvertPlural($forms, $count)
Checks that convertPlural was given an array and pads it to requested number of forms by copying the ...
DefinitionLanguage.php:4325
MediaWiki\Language\Language\formatComputingNumbers
formatComputingNumbers( $size, $boundary, $messageKey)
DefinitionLanguage.php:4774
MediaWiki\Language\Language\uc
uc( $str, $first=false)
DefinitionLanguage.php:3017
MediaWiki\Language\Language\getVariantname
getVariantname( $code, $usemsg=true)
Short names for language variants used for language conversion links.
DefinitionLanguage.php:656
MediaWiki\Language\Language\getDateFormatString
getDateFormatString( $type, $pref)
Get a format string for a given type and preference.
DefinitionLanguage.php:2449
MediaWiki\Language\Language\msg
msg( $msg,... $params)
Gets the Message object from this language.
DefinitionLanguage.php:724
MediaWiki\Language\Language\minimumGroupingDigits
minimumGroupingDigits()
The minimum number of digits a number must have, in addition to the grouping size,...
DefinitionLanguage.php:3740
MediaWiki\Language\Language\toBcp47Code
toBcp47Code()
Implement the Bcp47Code interface.
DefinitionLanguage.php:4545
MediaWiki\Language\Language\$mExtendedSpecialPageAliases
string[][] null $mExtendedSpecialPageAliases
memoize
DefinitionLanguage.php:95
MediaWiki\Language\Language\gender
gender( $gender, $forms)
Provides an alternative text depending on specified gender.
DefinitionLanguage.php:4245
MediaWiki\Language\Language\MONTH_GENITIVE_MESSAGES
const MONTH_GENITIVE_MESSAGES
DefinitionLanguage.php:207
MediaWiki\Language\Language\$mMonthMsgs
static $mMonthMsgs
DefinitionLanguage.php:202
MediaWiki\Language\Language\getHookRunner
getHookRunner()
Get a HookRunner, for running core hooks.
DefinitionLanguage.php:5001
MediaWiki\Language\Language\listToText
listToText(array $list)
Take a list of strings and build a locale-friendly comma-separated list, using the local comma-separa...
DefinitionLanguage.php:3753
MediaWiki\Language\Language\lc
lc( $str, $first=false)
DefinitionLanguage.php:3057
MediaWiki\Language\Language\embedBidi
embedBidi( $text='')
Wraps argument with unicode control characters for directionality safety.
DefinitionLanguage.php:4365
MediaWiki\Language\Language\$mCode
string $mCode
DefinitionLanguage.php:73
MediaWiki\Language\Language\romanNumeral
static romanNumeral( $num)
Roman number formatting up to 10000.
DefinitionLanguage.php:1880
MediaWiki\Language\Language\insertSpace
static insertSpace( $string, $pattern)
DefinitionLanguage.php:3243
MediaWiki\Language\Language\getDurationIntervals
getDurationIntervals( $seconds, array $chosenIntervals=[])
Takes a number of seconds and returns an array with a set of corresponding intervals.
DefinitionLanguage.php:2641
MediaWiki\Language\Language\segmentByWord
segmentByWord( $string)
Some languages such as Chinese require word segmentation, Specify such segmentation when overridden i...
DefinitionLanguage.php:3189
MediaWiki\Language\Language\getGenderNsText
getGenderNsText( $index, $gender)
Returns gender-dependent namespace alias if available.
DefinitionLanguage.php:507
MediaWiki\Language\Language\getFormalityIndex
getFormalityIndex()
Some languages provide translations in different levels of formality (or manner of address),...
DefinitionLanguage.php:4339
MediaWiki\Language\Language\HIJRI_CALENDAR_MONTH_MESSAGES
const HIJRI_CALENDAR_MONTH_MESSAGES
DefinitionLanguage.php:261
MediaWiki\Language\Language\time
time( $ts, $adj=false, $format=true, $timecorrection=false)
DefinitionLanguage.php:2504
MediaWiki\Language\Language\getNsIndex
getNsIndex( $text)
Get a namespace key by case-insensitive value.
DefinitionLanguage.php:639
MediaWiki\Languages\Data\NormalizeAr
DefinitionNormalizeAr.php:6
MediaWiki\Languages\Data\NormalizeMl
DefinitionNormalizeMl.php:6
MediaWiki\Logger\LoggerFactory
Create PSR-3 logger objects.
DefinitionLoggerFactory.php:32
MediaWiki\MainConfigNames
A class containing constants representing the names of configuration variables.
DefinitionMainConfigNames.php:22
MediaWiki\MainConfigNames\ExtraGenderNamespaces
const ExtraGenderNamespaces
Name constant for the ExtraGenderNamespaces setting, for use with Config::get()
DefinitionMainConfigNames.php:2204
MediaWiki\MainConfigNames\NamespaceAliases
const NamespaceAliases
Name constant for the NamespaceAliases setting, for use with Config::get()
DefinitionMainConfigNames.php:2210
MediaWiki\MainConfigNames\MetaNamespace
const MetaNamespace
Name constant for the MetaNamespace setting, for use with Config::get()
DefinitionMainConfigNames.php:2180
MediaWiki\MainConfigNames\ExtraNamespaces
const ExtraNamespaces
Name constant for the ExtraNamespaces setting, for use with Config::get()
DefinitionMainConfigNames.php:2198
MediaWiki\MainConfigNames\MetaNamespaceTalk
const MetaNamespaceTalk
Name constant for the MetaNamespaceTalk setting, for use with Config::get()
DefinitionMainConfigNames.php:2186
MediaWiki\MediaWikiServices
Service locator for MediaWiki core services.
DefinitionMediaWikiServices.php:256
MediaWiki\Message\Message
The Message class deals with fetching and processing of interface message into a variety of formats.
DefinitionMessage.php:144
MediaWiki\Parser\MagicWord
This class encapsulates "magic words" such as "#redirect", NOTOC, etc.
DefinitionMagicWord.php:51
MediaWiki\Title\NamespaceInfo
This is a utility class for dealing with namespaces that encodes all the "magic" behaviors of them ba...
DefinitionNamespaceInfo.php:25
MediaWiki\User\Options\UserOptionsLookup\getDefaultOption
getDefaultOption(string $opt, ?UserIdentity $userIdentity=null)
Get a given default option value.
DefinitionUserOptionsLookup.php:55
MediaWiki\User\UserTimeCorrection
Utility class to parse the TimeCorrection string value.
DefinitionUserTimeCorrection.php:30
MediaWiki\User\User
User class for the MediaWiki software.
DefinitionUser.php:109
MediaWiki\User\User\getDatePreference
getDatePreference()
Get the user's preferred date format.
DefinitionUser.php:2013
MediaWiki\Utils\MWTimestamp
Library for creating and parsing MW-style timestamps.
DefinitionMWTimestamp.php:36
MediaWiki\Utils\MWTimestamp\offsetForUser
offsetForUser(UserIdentity $user)
Adjust the timestamp depending on the given user's preferences.
DefinitionMWTimestamp.php:69
MediaWiki\Xml\XmlSelect
Class for generating HTML <select> or <datalist> elements.
DefinitionXmlSelect.php:16
Wikimedia\Message\MessageParam
Value object representing a message parameter that consists of a list of values.
DefinitionMessageParam.php:14
Wikimedia\ReplacementArray
Wrapper around strtr() that holds replacements.
DefinitionReplacementArray.php:12
Wikimedia\StringUtils\StringUtils
A collection of static methods to play with strings.
DefinitionStringUtils.php:21
return
return[0=> 'ـ', 1=> ' ', 2=> '`', 3=> '´', 4=> '˜', 5=> '^', 6=> '¯', 7=> '‾', 8=> '˘', 9=> '˙', 10=> '¨', 11=> '˚', 12=> '˝', 13=> '᾽', 14=> '῝', 15=> '¸', 16=> '˛', 17=> '_', 18=> '‗', 19=> '῀', 20=> '﮲', 21=> '﮳', 22=> '﮴', 23=> '﮵', 24=> '﮶', 25=> '﮷', 26=> '﮸', 27=> '﮹', 28=> '﮺', 29=> '﮻', 30=> '﮼', 31=> '﮽', 32=> '﮾', 33=> '﮿', 34=> '﯀', 35=> '﯁', 36=> '゛', 37=> '゜', 38=> '-', 39=> '֊', 40=> '᐀', 41=> '᭠', 42=> '᠆', 43=> '᠇', 44=> '‐', 45=> '‒', 46=> '–', 47=> '—', 48=> '―', 49=> '⁓', 50=> '⸗', 51=> '゠', 52=> '・', 53=> ',', 54=> '՝', 55=> '،', 56=> '؍', 57=> '٫', 58=> '٬', 59=> '߸', 60=> '᠂', 61=> '᠈', 62=> '꓾', 63=> '꘍', 64=> '꛵', 65=> '︑', 66=> ';', 67=> '؛', 68=> '⁏', 69=> '꛶', 70=> ':', 71=> '։', 72=> '؞', 73=> '܃', 74=> '܄', 75=> '܅', 76=> '܆', 77=> '܇', 78=> '܈', 79=> '࠰', 80=> '࠱', 81=> '࠲', 82=> '࠳', 83=> '࠴', 84=> '࠵', 85=> '࠶', 86=> '࠷', 87=> '࠸', 88=> '࠹', 89=> '࠺', 90=> '࠻', 91=> '࠼', 92=> '࠽', 93=> '࠾', 94=> '፡', 95=> '፣', 96=> '፤', 97=> '፥', 98=> '፦', 99=> '᠄', 100=> '᠅', 101=> '༔', 102=> '៖', 103=> '᭝', 104=> '꧇', 105=> '᛫', 106=> '᛬', 107=> '᛭', 108=> '꛴', 109=> '!', 110=> '¡', 111=> '՜', 112=> '߹', 113=> '᥄', 114=> '?', 115=> '¿', 116=> '⸮', 117=> '՞', 118=> '؟', 119=> '܉', 120=> '፧', 121=> '᥅', 122=> '⳺', 123=> '⳻', 124=> '꘏', 125=> '꛷', 126=> '‽', 127=> '⸘', 128=> '.', 129=> '᠁', 130=> '۔', 131=> '܁', 132=> '܂', 133=> '።', 134=> '᠃', 135=> '᠉', 136=> '᙮', 137=> '᭜', 138=> '⳹', 139=> '⳾', 140=> '⸰', 141=> '꓿', 142=> '꘎', 143=> '꛳', 144=> '︒', 145=> '·', 146=> '⸱', 147=> '।', 148=> '॥', 149=> '꣎', 150=> '꣏', 151=> '᰻', 152=> '᰼', 153=> '꡶', 154=> '꡷', 155=> '᜵', 156=> '᜶', 157=> '꤯', 158=> '၊', 159=> '။', 160=> '។', 161=> '៕', 162=> '᪨', 163=> '᪩', 164=> '᪪', 165=> '᪫', 166=> '᭞', 167=> '᭟', 168=> '꧈', 169=> '꧉', 170=> '꩝', 171=> '꩞', 172=> '꩟', 173=> '꯫', 174=> '𐩖', 175=> '𐩗', 176=> '𑁇', 177=> '𑁈', 178=> '𑃀', 179=> '𑃁', 180=> '᱾', 181=> '᱿', 182=> '܀', 183=> '߷', 184=> '჻', 185=> '፠', 186=> '፨', 187=> '᨞', 188=> '᨟', 189=> '᭚', 190=> '᭛', 191=> '꧁', 192=> '꧂', 193=> '꧃', 194=> '꧄', 195=> '꧅', 196=> '꧆', 197=> '꧊', 198=> '꧋', 199=> '꧌', 200=> '꧍', 201=> '꛲', 202=> '꥟', 203=> '𐡗', 204=> '𐬺', 205=> '𐬻', 206=> '𐬼', 207=> '𐬽', 208=> '𐬾', 209=> '𐬿', 210=> '𑂾', 211=> '𑂿', 212=> '⁕', 213=> '⁖', 214=> '⁘', 215=> '⁙', 216=> '⁚', 217=> '⁛', 218=> '⁜', 219=> '⁝', 220=> '⁞', 221=> '⸪', 222=> '⸫', 223=> '⸬', 224=> '⸭', 225=> '⳼', 226=> '⳿', 227=> '⸙', 228=> '𐤿', 229=> '𐄀', 230=> '𐄁', 231=> '𐄂', 232=> '𐎟', 233=> '𐏐', 234=> '𐤟', 235=> '𒑰', 236=> '𒑱', 237=> '𒑲', 238=> '𒑳', 239=> '\'', 240=> '‘', 241=> '’', 242=> '‚', 243=> '‛', 244=> '‹', 245=> '›', 246=> '"',247 => '“',248 => '”',249 => '„',250 => '‟',251 => '«',252 => '»',253 => '(',254 => ')',255 => '[',256 => ']',257 => '{',258 => '}',259 => '༺',260 => '༻',261 => '༼',262 => '༽',263 => '᚛',264 => '᚜',265 => '⁅',266 => '⁆',267 => '⧼',268 => '⧽',269 => '⦃',270 => '⦄',271 => '⦅',272 => '⦆',273 => '⦇',274 => '⦈',275 => '⦉',276 => '⦊',277 => '⦋',278 => '⦌',279 => '⦍',280 => '⦎',281 => '⦏',282 => '⦐',283 => '⦑',284 => '⦒',285 => '⦓',286 => '⦔',287 => '⦕',288 => '⦖',289 => '⦗',290 => '⦘',291 => '⟬',292 => '⟭',293 => '⟮',294 => '⟯',295 => '⸂',296 => '⸃',297 => '⸄',298 => '⸅',299 => '⸉',300 => '⸊',301 => '⸌',302 => '⸍',303 => '⸜',304 => '⸝',305 => '⸠',306 => '⸡',307 => '⸢',308 => '⸣',309 => '⸤',310 => '⸥',311 => '⸦',312 => '⸧',313 => '⸨',314 => '⸩',315 => '〈',316 => '〉',317 => '「',318 => '」',319 => '﹝',320 => '﹞',321 => '︗',322 => '︘',323 => '﴾',324 => '﴿',325 => '§',326 => '¶',327 => '⁋',328 => '©',329 => '®',330 => '@',331 => '*',332 => '⁎',333 => '⁑',334 => '٭',335 => '꙳',336 => '/',337 => '⁄',338 => '\\',339 => '&',340 => '⅋',341 => '⁊',342 => '#',343 => '%',344 => '٪',345 => '‰',346 => '؉',347 => '‱',348 => '؊',349 => '⁒',350 => '†',351 => '‡',352 => '•',353 => '‣',354 => '‧',355 => '⁃',356 => '⁌',357 => '⁍',358 => '′',359 => '‵',360 => '‸',361 => '※',362 => '‿',363 => '⁔',364 => '⁀',365 => '⁐',366 => '⁁',367 => '⁂',368 => '⸀',369 => '⸁',370 => '⸆',371 => '⸇',372 => '⸈',373 => '⸋',374 => '⸎',375 => '⸏',376 => '⸐',377 => '⸑',378 => '⸒',379 => '⸓',380 => '⸔',381 => '⸕',382 => '⸖',383 => '⸚',384 => '⸛',385 => '⸞',386 => '⸟',387 => '꙾',388 => '՚',389 => '՛',390 => '՟',391 => '־',392 => '׀',393 => '׃',394 => '׆',395 => '׳',396 => '״',397 => '܊',398 => '܋',399 => '܌',400 => '܍',401 => '࡞',402 => '᠀',403 => '॰',404 => '꣸',405 => '꣹',406 => '꣺',407 => '෴',408 => '๚',409 => '๛',410 => '꫞',411 => '꫟',412 => '༄',413 => '༅',414 => '༆',415 => '༇',416 => '༈',417 => '༉',418 => '༊',419 => '࿐',420 => '࿑',421 => '་',422 => '།',423 => '༎',424 => '༏',425 => '༐',426 => '༑',427 => '༒',428 => '྅',429 => '࿒',430 => '࿓',431 => '࿔',432 => '࿙',433 => '࿚',434 => '᰽',435 => '᰾',436 => '᰿',437 => '᥀',438 => '၌',439 => '၍',440 => '၎',441 => '၏',442 => '႞',443 => '႟',444 => '꩷',445 => '꩸',446 => '꩹',447 => 'ៗ',448 => '៘',449 => '៙',450 => '៚',451 => '᪠',452 => '᪡',453 => '᪢',454 => '᪣',455 => '᪤',456 => '᪥',457 => '᪦',458 => '᪬',459 => '᪭',460 => '᙭',461 => '⵰',462 => '꡴',463 => '꡵',464 => '᯼',465 => '᯽',466 => '᯾',467 => '᯿',468 => '꤮',469 => '꧞',470 => '꧟',471 => '꩜',472 => '𑁉',473 => '𑁊',474 => '𑁋',475 => '𑁌',476 => '𑁍',477 => '𐩐',478 => '𐩑',479 => '𐩒',480 => '𐩓',481 => '𐩔',482 => '𐩕',483 => '𐩘',484 => '𐬹',485 => '𑂻',486 => '𑂼',487 => 'ʹ',488 => '͵',489 => 'ʺ',490 => '˂',491 => '˃',492 => '˄',493 => '˅',494 => 'ˆ',495 => 'ˇ',496 => 'ˈ',497 => 'ˉ',498 => 'ˊ',499 => 'ˋ',500 => 'ˌ',501 => 'ˍ',502 => 'ˎ',503 => 'ˏ',504 => '˒',505 => '˓',506 => '˔',507 => '˕',508 => '˖',509 => '˗',510 => '˞',511 => '˟',512 => '˥',513 => '˦',514 => '˧',515 => '˨',516 => '˩',517 => '˪',518 => '˫',519 => 'ˬ',520 => '˭',521 => '˯',522 => '˰',523 => '˱',524 => '˲',525 => '˳',526 => '˴',527 => '˵',528 => '˶',529 => '˷',530 => '˸',531 => '˹',532 => '˺',533 => '˻',534 => '˼',535 => '˽',536 => '˾',537 => '˿',538 => '᎐',539 => '᎑',540 => '᎒',541 => '᎓',542 => '᎔',543 => '᎕',544 => '᎖',545 => '᎗',546 => '᎘',547 => '᎙',548 => '꜀',549 => '꜁',550 => '꜂',551 => '꜃',552 => '꜄',553 => '꜅',554 => '꜆',555 => '꜇',556 => '꜈',557 => '꜉',558 => '꜊',559 => '꜋',560 => '꜌',561 => '꜍',562 => '꜎',563 => '꜏',564 => '꜐',565 => '꜑',566 => '꜒',567 => '꜓',568 => '꜔',569 => '꜕',570 => '꜖',571 => 'ꜗ',572 => 'ꜘ',573 => 'ꜙ',574 => 'ꜚ',575 => 'ꜛ',576 => 'ꜜ',577 => 'ꜝ',578 => 'ꜞ',579 => 'ꜟ',580 => '꜠',581 => '꜡',582 => 'ꞈ',583 => '꞉',584 => '꞊',585 => '°',586 => '҂',587 => '؈',588 => '؎',589 => '؏',590 => '۞',591 => '۩',592 => '﷽',593 => '߶',594 => '৺',595 => '୰',596 => '௳',597 => '௴',598 => '௵',599 => '௶',600 => '௷',601 => '௸',602 => '௺',603 => '౿',604 => '൹',605 => '꠨',606 => '꠩',607 => '꠪',608 => '꠫',609 => '꠶',610 => '꠷',611 => '꠹',612 => '๏',613 => '༁',614 => '༂',615 => '༃',616 => '༓',617 => '༕',618 => '༖',619 => '༗',620 => '༚',621 => '༛',622 => '༜',623 => '༝',624 => '༞',625 => '༟',626 => '༴',627 => '༶',628 => '༸',629 => '྾',630 => '྿',631 => '࿀',632 => '࿁',633 => '࿂',634 => '࿃',635 => '࿄',636 => '࿅',637 => '࿇',638 => '࿈',639 => '࿉',640 => '࿊',641 => '࿋',642 => '࿌',643 => '࿎',644 => '࿏',645 => '࿕',646 => '࿖',647 => '࿗',648 => '࿘',649 => '᧠',650 => '᧡',651 => '᧢',652 => '᧣',653 => '᧤',654 => '᧥',655 => '᧦',656 => '᧧',657 => '᧨',658 => '᧩',659 => '᧪',660 => '᧫',661 => '᧬',662 => '᧭',663 => '᧮',664 => '᧯',665 => '᧰',666 => '᧱',667 => '᧲',668 => '᧳',669 => '᧴',670 => '᧵',671 => '᧶',672 => '᧷',673 => '᧸',674 => '᧹',675 => '᧺',676 => '᧻',677 => '᧼',678 => '᧽',679 => '᧾',680 => '᧿',681 => '᭡',682 => '᭢',683 => '᭣',684 => '᭤',685 => '᭥',686 => '᭦',687 => '᭧',688 => '᭨',689 => '᭩',690 => '᭪',691 => '᭴',692 => '᭵',693 => '᭶',694 => '᭷',695 => '᭸',696 => '᭹',697 => '᭺',698 => '᭻',699 => '᭼',700 => '℄',701 => '℈',702 => '℔',703 => '℗',704 => '℘',705 => '℞',706 => '℟',707 => '℣',708 => '℥',709 => '℧',710 => '℩',711 => '℮',712 => '℺',713 => '⅁',714 => '⅂',715 => '⅃',716 => '⅄',717 => '⅊',718 => '⅌',719 => '⅍',720 => '⅏',721 => '←',722 => '→',723 => '↑',724 => '↓',725 => '↔',726 => '↕',727 => '↖',728 => '↗',729 => '↘',730 => '↙',731 => '↜',732 => '↝',733 => '↞',734 => '↟',735 => '↠',736 => '↡',737 => '↢',738 => '↣',739 => '↤',740 => '↥',741 => '↦',742 => '↧',743 => '↨',744 => '↩',745 => '↪',746 => '↫',747 => '↬',748 => '↭',749 => '↯',750 => '↰',751 => '↱',752 => '↲',753 => '↳',754 => '↴',755 => '↵',756 => '↶',757 => '↷',758 => '↸',759 => '↹',760 => '↺',761 => '↻',762 => '↼',763 => '↽',764 => '↾',765 => '↿',766 => '⇀',767 => '⇁',768 => '⇂',769 => '⇃',770 => '⇄',771 => '⇅',772 => '⇆',773 => '⇇',774 => '⇈',775 => '⇉',776 => '⇊',777 => '⇋',778 => '⇌',779 => '⇐',780 => '⇑',781 => '⇒',782 => '⇓',783 => '⇔',784 => '⇕',785 => '⇖',786 => '⇗',787 => '⇘',788 => '⇙',789 => '⇚',790 => '⇛',791 => '⇜',792 => '⇝',793 => '⇞',794 => '⇟',795 => '⇠',796 => '⇡',797 => '⇢',798 => '⇣',799 => '⇤',800 => '⇥',801 => '⇦',802 => '⇧',803 => '⇨',804 => '⇩',805 => '⇪',806 => '⇫',807 => '⇬',808 => '⇭',809 => '⇮',810 => '⇯',811 => '⇰',812 => '⇱',813 => '⇲',814 => '⇳',815 => '⇴',816 => '⇵',817 => '⇶',818 => '⇷',819 => '⇸',820 => '⇹',821 => '⇺',822 => '⇻',823 => '⇼',824 => '⇽',825 => '⇾',826 => '⇿',827 => '∀',828 => '∁',829 => '∂',830 => '∃',831 => '∅',832 => '∆',833 => '∇',834 => '∈',835 => '∊',836 => '∋',837 => '∍',838 => '϶',839 => '∎',840 => '∏',841 => '∐',842 => '∑',843 => '+',844 => '±',845 => '÷',846 => '×',847 => '<',848 => '=',849 => '>',850 => '¬',851 => '|',852 => '¦',853 => '‖',854 => '~',855 => '−',856 => '∓',857 => '∔',858 => '∕',859 => '∖',860 => '∗',861 => '∘',862 => '∙',863 => '√',864 => '∛',865 => '؆',866 => '∜',867 => '؇',868 => '∝',869 => '∞',870 => '∟',871 => '∠',872 => '∡',873 => '∢',874 => '∣',875 => '∥',876 => '∧',877 => '∨',878 => '∩',879 => '∪',880 => '∫',881 => '∮',882 => '∱',883 => '∲',884 => '∳',885 => '∴',886 => '∵',887 => '∶',888 => '∷',889 => '∸',890 => '∹',891 => '∺',892 => '∻',893 => '∼',894 => '∽',895 => '∾',896 => '∿',897 => '≀',898 => '≂',899 => '≃',900 => '≅',901 => '≆',902 => '≈',903 => '≊',904 => '≋',905 => '≌',906 => '≍',907 => '≎',908 => '≏',909 => '≐',910 => '≑',911 => '≒',912 => '≓',913 => '≔',914 => '≕',915 => '≖',916 => '≗',917 => '≘',918 => '≙',919 => '≚',920 => '≛',921 => '≜',922 => '≝',923 => '≞',924 => '≟',925 => '≡',926 => '≣',927 => '≤',928 => '≥',929 => '≦',930 => '≧',931 => '≨',932 => '≩',933 => '≪',934 => '≫',935 => '≬',936 => '≲',937 => '≳',938 => '≶',939 => '≷',940 => '≺',941 => '≻',942 => '≼',943 => '≽',944 => '≾',945 => '≿',946 => '⊂',947 => '⊃',948 => '⊆',949 => '⊇',950 => '⊊',951 => '⊋',952 => '⊌',953 => '⊍',954 => '⊎',955 => '⊏',956 => '⊐',957 => '⊑',958 => '⊒',959 => '⊓',960 => '⊔',961 => '⊕',962 => '⊖',963 => '⊗',964 => '⊘',965 => '⊙',966 => '⊚',967 => '⊛',968 => '⊜',969 => '⊝',970 => '⊞',971 => '⊟',972 => '⊠',973 => '⊡',974 => '⊢',975 => '⊣',976 => '⊤',977 => '⊥',978 => '⊦',979 => '⊧',980 => '⊨',981 => '⊩',982 => '⊪',983 => '⊫',984 => '⊰',985 => '⊱',986 => '⊲',987 => '⊳',988 => '⊴',989 => '⊵',990 => '⊶',991 => '⊷',992 => '⊸',993 => '⊹',994 => '⊺',995 => '⊻',996 => '⊼',997 => '⊽',998 => '⊾',999 => '⊿',1000 => '⋀',1001 => '⋁',1002 => '⋂',1003 => '⋃',1004 => '⋄',1005 => '⋅',1006 => '⋆',1007 => '⋇',1008 => '⋈',1009 => '⋉',1010 => '⋊',1011 => '⋋',1012 => '⋌',1013 => '⋍',1014 => '⋎',1015 => '⋏',1016 => '⋐',1017 => '⋑',1018 => '⋒',1019 => '⋓',1020 => '⋔',1021 => '⋕',1022 => '⋖',1023 => '⋗',1024 => '⋘',1025 => '⋙',1026 => '⋚',1027 => '⋛',1028 => '⋜',1029 => '⋝',1030 => '⋞',1031 => '⋟',1032 => '⋤',1033 => '⋥',1034 => '⋦',1035 => '⋧',1036 => '⋨',1037 => '⋩',1038 => '⋮',1039 => '⋯',1040 => '⋰',1041 => '⋱',1042 => '⋲',1043 => '⋳',1044 => '⋴',1045 => '⋵',1046 => '⋶',1047 => '⋷',1048 => '⋸',1049 => '⋹',1050 => '⋺',1051 => '⋻',1052 => '⋼',1053 => '⋽',1054 => '⋾',1055 => '⋿',1056 => '⌀',1057 => '⌁',1058 => '⌂',1059 => '⌃',1060 => '⌄',1061 => '⌅',1062 => '⌆',1063 => '⌇',1064 => '⌈',1065 => '⌉',1066 => '⌊',1067 => '⌋',1068 => '⌌',1069 => '⌍',1070 => '⌎',1071 => '⌏',1072 => '⌐',1073 => '⌑',1074 => '⌒',1075 => '⌓',1076 => '⌔',1077 => '⌕',1078 => '⌖',1079 => '⌗',1080 => '⌘',1081 => '⌙',1082 => '⌚',1083 => '⌛',1084 => '⌜',1085 => '⌝',1086 => '⌞',1087 => '⌟',1088 => '⌠',1089 => '⌡',1090 => '⌢',1091 => '⌣',1092 => '⌤',1093 => '⌥',1094 => '⌦',1095 => '⌧',1096 => '⌨',1097 => '⌫',1098 => '⌬',1099 => '⌭',1100 => '⌮',1101 => '⌯',1102 => '⌰',1103 => '⌱',1104 => '⌲',1105 => '⌳',1106 => '⌴',1107 => '⌵',1108 => '⌶',1109 => '⌷',1110 => '⌸',1111 => '⌹',1112 => '⌺',1113 => '⌻',1114 => '⌼',1115 => '⌽',1116 => '⌾',1117 => '⌿',1118 => '⍀',1119 => '⍁',1120 => '⍂',1121 => '⍃',1122 => '⍄',1123 => '⍅',1124 => '⍆',1125 => '⍇',1126 => '⍈',1127 => '⍉',1128 => '⍊',1129 => '⍋',1130 => '⍌',1131 => '⍍',1132 => '⍎',1133 => '⍏',1134 => '⍐',1135 => '⍑',1136 => '⍒',1137 => '⍓',1138 => '⍔',1139 => '⍕',1140 => '⍖',1141 => '⍗',1142 => '⍘',1143 => '⍙',1144 => '⍚',1145 => '⍛',1146 => '⍜',1147 => '⍝',1148 => '⍞',1149 => '⍟',1150 => '⍠',1151 => '⍡',1152 => '⍢',1153 => '⍣',1154 => '⍤',1155 => '⍥',1156 => '⍦',1157 => '⍧',1158 => '⍨',1159 => '⍩',1160 => '⍪',1161 => '⍫',1162 => '⍬',1163 => '⍭',1164 => '⍮',1165 => '⍯',1166 => '⍰',1167 => '⍱',1168 => '⍲',1169 => '⍳',1170 => '⍴',1171 => '⍵',1172 => '⍶',1173 => '⍷',1174 => '⍸',1175 => '⍹',1176 => '⍺',1177 => '⍻',1178 => '⍼',1179 => '⍽',1180 => '⍾',1181 => '⍿',1182 => '⎀',1183 => '⎁',1184 => '⎂',1185 => '⎃',1186 => '⎄',1187 => '⎅',1188 => '⎆',1189 => '⎇',1190 => '⎈',1191 => '⎉',1192 => '⎊',1193 => '⎋',1194 => '⎌',1195 => '⎍',1196 => '⎎',1197 => '⎏',1198 => '⎐',1199 => '⎑',1200 => '⎒',1201 => '⎓',1202 => '⎔',1203 => '⎕',1204 => '⎖',1205 => '⎗',1206 => '⎘',1207 => '⎙',1208 => '⎚',1209 => '⎛',1210 => '⎜',1211 => '⎝',1212 => '⎞',1213 => '⎟',1214 => '⎠',1215 => '⎡',1216 => '⎢',1217 => '⎣',1218 => '⎤',1219 => '⎥',1220 => '⎦',1221 => '⎧',1222 => '⎨',1223 => '⎩',1224 => '⎪',1225 => '⎫',1226 => '⎬',1227 => '⎭',1228 => '⎮',1229 => '⎯',1230 => '⎰',1231 => '⎱',1232 => '⎲',1233 => '⎳',1234 => '⎴',1235 => '⎵',1236 => '⎶',1237 => '⎷',1238 => '⎸',1239 => '⎹',1240 => '⎺',1241 => '⎻',1242 => '⎼',1243 => '⎽',1244 => '⎾',1245 => '⎿',1246 => '⏀',1247 => '⏁',1248 => '⏂',1249 => '⏃',1250 => '⏄',1251 => '⏅',1252 => '⏆',1253 => '⏇',1254 => '⏈',1255 => '⏉',1256 => '⏊',1257 => '⏋',1258 => '⏌',1259 => '⏍',1260 => '⏎',1261 => '⏏',1262 => '⏐',1263 => '⏑',1264 => '⏒',1265 => '⏓',1266 => '⏔',1267 => '⏕',1268 => '⏖',1269 => '⏗',1270 => '⏘',1271 => '⏙',1272 => '⏚',1273 => '⏛',1274 => '⏜',1275 => '⏝',1276 => '⏞',1277 => '⏟',1278 => '⏠',1279 => '⏡',1280 => '⏢',1281 => '⏣',1282 => '⏤',1283 => '⏥',1284 => '⏦',1285 => '⏧',1286 => '⏨',1287 => '⏩',1288 => '⏪',1289 => '⏫',1290 => '⏬',1291 => '⏭',1292 => '⏮',1293 => '⏯',1294 => '⏰',1295 => '⏱',1296 => '⏲',1297 => '⏳',1298 => '␀',1299 => '␁',1300 => '␂',1301 => '␃',1302 => '␄',1303 => '␅',1304 => '␆',1305 => '␇',1306 => '␈',1307 => '␉',1308 => '␊',1309 => '␋',1310 => '␌',1311 => '␍',1312 => '␎',1313 => '␏',1314 => '␐',1315 => '␑',1316 => '␒',1317 => '␓',1318 => '␔',1319 => '␕',1320 => '␖',1321 => '␗',1322 => '␘',1323 => '␙',1324 => '␚',1325 => '␛',1326 => '␜',1327 => '␝',1328 => '␞',1329 => '␟',1330 => '␠',1331 => '␡',1332 => '␢',1333 => '␣',1334 => '␤',1335 => '␥',1336 => '␦',1337 => '⑀',1338 => '⑁',1339 => '⑂',1340 => '⑃',1341 => '⑄',1342 => '⑅',1343 => '⑆',1344 => '⑇',1345 => '⑈',1346 => '⑉',1347 => '⑊',1348 => '─',1349 => '━',1350 => '│',1351 => '┃',1352 => '┄',1353 => '┅',1354 => '┆',1355 => '┇',1356 => '┈',1357 => '┉',1358 => '┊',1359 => '┋',1360 => '┌',1361 => '┍',1362 => '┎',1363 => '┏',1364 => '┐',1365 => '┑',1366 => '┒',1367 => '┓',1368 => '└',1369 => '┕',1370 => '┖',1371 => '┗',1372 => '┘',1373 => '┙',1374 => '┚',1375 => '┛',1376 => '├',1377 => '┝',1378 => '┞',1379 => '┟',1380 => '┠',1381 => '┡',1382 => '┢',1383 => '┣',1384 => '┤',1385 => '┥',1386 => '┦',1387 => '┧',1388 => '┨',1389 => '┩',1390 => '┪',1391 => '┫',1392 => '┬',1393 => '┭',1394 => '┮',1395 => '┯',1396 => '┰',1397 => '┱',1398 => '┲',1399 => '┳',1400 => '┴',1401 => '┵',1402 => '┶',1403 => '┷',1404 => '┸',1405 => '┹',1406 => '┺',1407 => '┻',1408 => '┼',1409 => '┽',1410 => '┾',1411 => '┿',1412 => '╀',1413 => '╁',1414 => '╂',1415 => '╃',1416 => '╄',1417 => '╅',1418 => '╆',1419 => '╇',1420 => '╈',1421 => '╉',1422 => '╊',1423 => '╋',1424 => '╌',1425 => '╍',1426 => '╎',1427 => '╏',1428 => '═',1429 => '║',1430 => '╒',1431 => '╓',1432 => '╔',1433 => '╕',1434 => '╖',1435 => '╗',1436 => '╘',1437 => '╙',1438 => '╚',1439 => '╛',1440 => '╜',1441 => '╝',1442 => '╞',1443 => '╟',1444 => '╠',1445 => '╡',1446 => '╢',1447 => '╣',1448 => '╤',1449 => '╥',1450 => '╦',1451 => '╧',1452 => '╨',1453 => '╩',1454 => '╪',1455 => '╫',1456 => '╬',1457 => '╭',1458 => '╮',1459 => '╯',1460 => '╰',1461 => '╱',1462 => '╲',1463 => '╳',1464 => '╴',1465 => '╵',1466 => '╶',1467 => '╷',1468 => '╸',1469 => '╹',1470 => '╺',1471 => '╻',1472 => '╼',1473 => '╽',1474 => '╾',1475 => '╿',1476 => '▀',1477 => '▁',1478 => '▂',1479 => '▃',1480 => '▄',1481 => '▅',1482 => '▆',1483 => '▇',1484 => '█',1485 => '▉',1486 => '▊',1487 => '▋',1488 => '▌',1489 => '▍',1490 => '▎',1491 => '▏',1492 => '▐',1493 => '░',1494 => '▒',1495 => '▓',1496 => '▔',1497 => '▕',1498 => '▖',1499 => '▗',1500 => '▘',1501 => '▙',1502 => '▚',1503 => '▛',1504 => '▜',1505 => '▝',1506 => '▞',1507 => '▟',1508 => '■',1509 => '□',1510 => '▢',1511 => '▣',1512 => '▤',1513 => '▥',1514 => '▦',1515 => '▧',1516 => '▨',1517 => '▩',1518 => '▪',1519 => '▫',1520 => '▬',1521 => '▭',1522 => '▮',1523 => '▯',1524 => '▰',1525 => '▱',1526 => '▲',1527 => '△',1528 => '▴',1529 => '▵',1530 => '▶',1531 => '▷',1532 => '▸',1533 => '▹',1534 => '►',1535 => '▻',1536 => '▼',1537 => '▽',1538 => '▾',1539 => '▿',1540 => '◀',1541 => '◁',1542 => '◂',1543 => '◃',1544 => '◄',1545 => '◅',1546 => '◆',1547 => '◇',1548 => '◈',1549 => '◉',1550 => '◊',1551 => '○',1552 => '◌',1553 => '◍',1554 => '◎',1555 => '●',1556 => '◐',1557 => '◑',1558 => '◒',1559 => '◓',1560 => '◔',1561 => '◕',1562 => '◖',1563 => '◗',1564 => '◘',1565 => '◙',1566 => '◚',1567 => '◛',1568 => '◜',1569 => '◝',1570 => '◞',1571 => '◟',1572 => '◠',1573 => '◡',1574 => '◢',1575 => '◣',1576 => '◤',1577 => '◥',1578 => '◦',1579 => '◧',1580 => '◨',1581 => '◩',1582 => '◪',1583 => '◫',1584 => '◬',1585 => '◭',1586 => '◮',1587 => '◯',1588 => '◰',1589 => '◱',1590 => '◲',1591 => '◳',1592 => '◴',1593 => '◵',1594 => '◶',1595 => '◷',1596 => '◸',1597 => '◹',1598 => '◺',1599 => '◻',1600 => '◼',1601 => '◽',1602 => '◾',1603 => '◿',1604 => '☀',1605 => '☁',1606 => '☂',1607 => '☃',1608 => '☄',1609 => '★',1610 => '☆',1611 => '☇',1612 => '☈',1613 => '☉',1614 => '☊',1615 => '☋',1616 => '☌',1617 => '☍',1618 => '☎',1619 => '☏',1620 => '☐',1621 => '☑',1622 => '☒',1623 => '☓',1624 => '☔',1625 => '☕',1626 => '☖',1627 => '☗',1628 => '☘',1629 => '☙',1630 => '☚',1631 => '☛',1632 => '☜',1633 => '☝',1634 => '☞',1635 => '☟',1636 => '☠',1637 => '☡',1638 => '☢',1639 => '☣',1640 => '☤',1641 => '☥',1642 => '☦',1643 => '☧',1644 => '☨',1645 => '☩',1646 => '☪',1647 => '☫',1648 => '☬',1649 => '☭',1650 => '☮',1651 => '☯',1652 => '☸',1653 => '☹',1654 => '☺',1655 => '☻',1656 => '☼',1657 => '☽',1658 => '☾',1659 => '☿',1660 => '♀',1661 => '♁',1662 => '♂',1663 => '♃',1664 => '♄',1665 => '♅',1666 => '♆',1667 => '♇',1668 => '♈',1669 => '♉',1670 => '♊',1671 => '♋',1672 => '♌',1673 => '♍',1674 => '♎',1675 => '♏',1676 => '♐',1677 => '♑',1678 => '♒',1679 => '♓',1680 => '♔',1681 => '♕',1682 => '♖',1683 => '♗',1684 => '♘',1685 => '♙',1686 => '♚',1687 => '♛',1688 => '♜',1689 => '♝',1690 => '♞',1691 => '♟',1692 => '♠',1693 => '♡',1694 => '♢',1695 => '♣',1696 => '♤',1697 => '♥',1698 => '♦',1699 => '♧',1700 => '♨',1701 => '♩',1702 => '♪',1703 => '♫',1704 => '♬',1705 => '♰',1706 => '♱',1707 => '♲',1708 => '♳',1709 => '♴',1710 => '♵',1711 => '♶',1712 => '♷',1713 => '♸',1714 => '♹',1715 => '♺',1716 => '♻',1717 => '♼',1718 => '♽',1719 => '♾',1720 => '♿',1721 => '⚀',1722 => '⚁',1723 => '⚂',1724 => '⚃',1725 => '⚄',1726 => '⚅',1727 => '⚆',1728 => '⚇',1729 => '⚈',1730 => '⚉',1731 => '⚐',1732 => '⚑',1733 => '⚒',1734 => '⚓',1735 => '⚔',1736 => '⚕',1737 => '⚖',1738 => '⚗',1739 => '⚘',1740 => '⚙',1741 => '⚚',1742 => '⚛',1743 => '⚜',1744 => '⚝',1745 => '⚞',1746 => '⚟',1747 => '⚠',1748 => '⚡',1749 => '⚢',1750 => '⚣',1751 => '⚤',1752 => '⚥',1753 => '⚦',1754 => '⚧',1755 => '⚨',1756 => '⚩',1757 => '⚪',1758 => '⚫',1759 => '⚬',1760 => '⚭',1761 => '⚮',1762 => '⚯',1763 => '⚰',1764 => '⚱',1765 => '⚲',1766 => '⚳',1767 => '⚴',1768 => '⚵',1769 => '⚶',1770 => '⚷',1771 => '⚸',1772 => '⚹',1773 => '⚺',1774 => '⚻',1775 => '⚼',1776 => '⚽',1777 => '⚾',1778 => '⚿',1779 => '⛀',1780 => '⛁',1781 => '⛂',1782 => '⛃',1783 => '⛄',1784 => '⛅',1785 => '⛆',1786 => '⛇',1787 => '⛈',1788 => '⛉',1789 => '⛊',1790 => '⛋',1791 => '⛌',1792 => '⛍',1793 => '⛎',1794 => '⛏',1795 => '⛐',1796 => '⛑',1797 => '⛒',1798 => '⛓',1799 => '⛔',1800 => '⛕',1801 => '⛖',1802 => '⛗',1803 => '⛘',1804 => '⛙',1805 => '⛚',1806 => '⛛',1807 => '⛜',1808 => '⛝',1809 => '⛞',1810 => '⛟',1811 => '⛠',1812 => '⛡',1813 => '⛢',1814 => '⛣',1815 => '⛤',1816 => '⛥',1817 => '⛦',1818 => '⛧',1819 => '⛨',1820 => '⛩',1821 => '⛪',1822 => '⛫',1823 => '⛬',1824 => '⛭',1825 => '⛮',1826 => '⛯',1827 => '⛰',1828 => '⛱',1829 => '⛲',1830 => '⛳',1831 => '⛴',1832 => '⛵',1833 => '⛶',1834 => '⛷',1835 => '⛸',1836 => '⛹',1837 => '⛺',1838 => '⛻',1839 => '⛼',1840 => '⛽',1841 => '⛾',1842 => '⛿',1843 => '✁',1844 => '✂',1845 => '✃',1846 => '✄',1847 => '✅',1848 => '✆',1849 => '✇',1850 => '✈',1851 => '✉',1852 => '✊',1853 => '✋',1854 => '✌',1855 => '✍',1856 => '✎',1857 => '✏',1858 => '✐',1859 => '✑',1860 => '✒',1861 => '✓',1862 => '✔',1863 => '✕',1864 => '✖',1865 => '✗',1866 => '✘',1867 => '✙',1868 => '✚',1869 => '✛',1870 => '✜',1871 => '✝',1872 => '✞',1873 => '✟',1874 => '✠',1875 => '✡',1876 => '✢',1877 => '✣',1878 => '✤',1879 => '✥',1880 => '✦',1881 => '✧',1882 => '✨',1883 => '✩',1884 => '✪',1885 => '✫',1886 => '✬',1887 => '✭',1888 => '✮',1889 => '✯',1890 => '✰',1891 => '✱',1892 => '✲',1893 => '✳',1894 => '✴',1895 => '✵',1896 => '✶',1897 => '✷',1898 => '✸',1899 => '✹',1900 => '✺',1901 => '✻',1902 => '✼',1903 => '✽',1904 => '✾',1905 => '✿',1906 => '❀',1907 => '❁',1908 => '❂',1909 => '❃',1910 => '❄',1911 => '❅',1912 => '❆',1913 => '❇',1914 => '❈',1915 => '❉',1916 => '❊',1917 => '❋',1918 => '❌',1919 => '❍',1920 => '❎',1921 => '❏',1922 => '❐',1923 => '❑',1924 => '❒',1925 => '❓',1926 => '❔',1927 => '❕',1928 => '❖',1929 => '❗',1930 => '❘',1931 => '❙',1932 => '❚',1933 => '❛',1934 => '❜',1935 => '❝',1936 => '❞',1937 => '❟',1938 => '❠',1939 => '❡',1940 => '❢',1941 => '❣',1942 => '❤',1943 => '❥',1944 => '❦',1945 => '❧',1946 => '❨',1947 => '❩',1948 => '❪',1949 => '❫',1950 => '❬',1951 => '❭',1952 => '❮',1953 => '❯',1954 => '❰',1955 => '❱',1956 => '❲',1957 => '❳',1958 => '❴',1959 => '❵',1960 => '➔',1961 => '➕',1962 => '➖',1963 => '➗',1964 => '➘',1965 => '➙',1966 => '➚',1967 => '➛',1968 => '➜',1969 => '➝',1970 => '➞',1971 => '➟',1972 => '➠',1973 => '➡',1974 => '➢',1975 => '➣',1976 => '➤',1977 => '➥',1978 => '➦',1979 => '➧',1980 => '➨',1981 => '➩',1982 => '➪',1983 => '➫',1984 => '➬',1985 => '➭',1986 => '➮',1987 => '➯',1988 => '➰',1989 => '➱',1990 => '➲',1991 => '➳',1992 => '➴',1993 => '➵',1994 => '➶',1995 => '➷',1996 => '➸',1997 => '➹',1998 => '➺',1999 => '➻',2000 => '➼',2001 => '➽',2002 => '➾',2003 => '➿',2004 => '⟀',2005 => '⟁',2006 => '⟂',2007 => '⟃',2008 => '⟄',2009 => '⟅',2010 => '⟆',2011 => '⟇',2012 => '⟈',2013 => '⟉',2014 => '⟊',2015 => '⟌',2016 => '⟎',2017 => '⟏',2018 => '⟐',2019 => '⟑',2020 => '⟒',2021 => '⟓',2022 => '⟔',2023 => '⟕',2024 => '⟖',2025 => '⟗',2026 => '⟘',2027 => '⟙',2028 => '⟚',2029 => '⟛',2030 => '⟜',2031 => '⟝',2032 => '⟞',2033 => '⟟',2034 => '⟠',2035 => '⟡',2036 => '⟢',2037 => '⟣',2038 => '⟤',2039 => '⟥',2040 => '⟦',2041 => '⟧',2042 => '⟨',2043 => '⟩',2044 => '⟪',2045 => '⟫',2046 => '⟰',2047 => '⟱',2048 => '⟲',2049 => '⟳',2050 => '⟴',2051 => '⟵',2052 => '⟶',2053 => '⟷',2054 => '⟸',2055 => '⟹',2056 => '⟺',2057 => '⟻',2058 => '⟼',2059 => '⟽',2060 => '⟾',2061 => '⟿',2062 => '⤀',2063 => '⤁',2064 => '⤂',2065 => '⤃',2066 => '⤄',2067 => '⤅',2068 => '⤆',2069 => '⤇',2070 => '⤈',2071 => '⤉',2072 => '⤊',2073 => '⤋',2074 => '⤌',2075 => '⤍',2076 => '⤎',2077 => '⤏',2078 => '⤐',2079 => '⤑',2080 => '⤒',2081 => '⤓',2082 => '⤔',2083 => '⤕',2084 => '⤖',2085 => '⤗',2086 => '⤘',2087 => '⤙',2088 => '⤚',2089 => '⤛',2090 => '⤜',2091 => '⤝',2092 => '⤞',2093 => '⤟',2094 => '⤠',2095 => '⤡',2096 => '⤢',2097 => '⤣',2098 => '⤤',2099 => '⤥',2100 => '⤦',2101 => '⤧',2102 => '⤨',2103 => '⤩',2104 => '⤪',2105 => '⤫',2106 => '⤬',2107 => '⤭',2108 => '⤮',2109 => '⤯',2110 => '⤰',2111 => '⤱',2112 => '⤲',2113 => '⤳',2114 => '⤴',2115 => '⤵',2116 => '⤶',2117 => '⤷',2118 => '⤸',2119 => '⤹',2120 => '⤺',2121 => '⤻',2122 => '⤼',2123 => '⤽',2124 => '⤾',2125 => '⤿',2126 => '⥀',2127 => '⥁',2128 => '⥂',2129 => '⥃',2130 => '⥄',2131 => '⥅',2132 => '⥆',2133 => '⥇',2134 => '⥈',2135 => '⥉',2136 => '⥊',2137 => '⥋',2138 => '⥌',2139 => '⥍',2140 => '⥎',2141 => '⥏',2142 => '⥐',2143 => '⥑',2144 => '⥒',2145 => '⥓',2146 => '⥔',2147 => '⥕',2148 => '⥖',2149 => '⥗',2150 => '⥘',2151 => '⥙',2152 => '⥚',2153 => '⥛',2154 => '⥜',2155 => '⥝',2156 => '⥞',2157 => '⥟',2158 => '⥠',2159 => '⥡',2160 => '⥢',2161 => '⥣',2162 => '⥤',2163 => '⥥',2164 => '⥦',2165 => '⥧',2166 => '⥨',2167 => '⥩',2168 => '⥪',2169 => '⥫',2170 => '⥬',2171 => '⥭',2172 => '⥮',2173 => '⥯',2174 => '⥰',2175 => '⥱',2176 => '⥲',2177 => '⥳',2178 => '⥴',2179 => '⥵',2180 => '⥶',2181 => '⥷',2182 => '⥸',2183 => '⥹',2184 => '⥺',2185 => '⥻',2186 => '⥼',2187 => '⥽',2188 => '⥾',2189 => '⥿',2190 => '⦀',2191 => '⦁',2192 => '⦂',2193 => '⦙',2194 => '⦚',2195 => '⦛',2196 => '⦜',2197 => '⦝',2198 => '⦞',2199 => '⦟',2200 => '⦠',2201 => '⦡',2202 => '⦢',2203 => '⦣',2204 => '⦤',2205 => '⦥',2206 => '⦦',2207 => '⦧',2208 => '⦨',2209 => '⦩',2210 => '⦪',2211 => '⦫',2212 => '⦬',2213 => '⦭',2214 => '⦮',2215 => '⦯',2216 => '⦰',2217 => '⦱',2218 => '⦲',2219 => '⦳',2220 => '⦴',2221 => '⦵',2222 => '⦶',2223 => '⦷',2224 => '⦸',2225 => '⦹',2226 => '⦺',2227 => '⦻',2228 => '⦼',2229 => '⦽',2230 => '⦾',2231 => '⦿',2232 => '⧀',2233 => '⧁',2234 => '⧂',2235 => '⧃',2236 => '⧄',2237 => '⧅',2238 => '⧆',2239 => '⧇',2240 => '⧈',2241 => '⧉',2242 => '⧊',2243 => '⧋',2244 => '⧌',2245 => '⧍',2246 => '⧎',2247 => '⧏',2248 => '⧐',2249 => '⧑',2250 => '⧒',2251 => '⧓',2252 => '⧔',2253 => '⧕',2254 => '⧖',2255 => '⧗',2256 => '⧘',2257 => '⧙',2258 => '⧚',2259 => '⧛',2260 => '⧜',2261 => '⧝',2262 => '⧞',2263 => '⧟',2264 => '⧠',2265 => '⧡',2266 => '⧢',2267 => '⧣',2268 => '⧤',2269 => '⧥',2270 => '⧦',2271 => '⧧',2272 => '⧨',2273 => '⧩',2274 => '⧪',2275 => '⧫',2276 => '⧬',2277 => '⧭',2278 => '⧮',2279 => '⧯',2280 => '⧰',2281 => '⧱',2282 => '⧲',2283 => '⧳',2284 => '⧴',2285 => '⧵',2286 => '⧶',2287 => '⧷',2288 => '⧸',2289 => '⧹',2290 => '⧺',2291 => '⧻',2292 => '⧾',2293 => '⧿',2294 => '⨀',2295 => '⨁',2296 => '⨂',2297 => '⨃',2298 => '⨄',2299 => '⨅',2300 => '⨆',2301 => '⨇',2302 => '⨈',2303 => '⨉',2304 => '⨊',2305 => '⨋',2306 => '⨍',2307 => '⨎',2308 => '⨏',2309 => '⨐',2310 => '⨑',2311 => '⨒',2312 => '⨓',2313 => '⨔',2314 => '⨕',2315 => '⨖',2316 => '⨗',2317 => '⨘',2318 => '⨙',2319 => '⨚',2320 => '⨛',2321 => '⨜',2322 => '⨝',2323 => '⨞',2324 => '⨟',2325 => '⨠',2326 => '⨡',2327 => '⨢',2328 => '⨣',2329 => '⨤',2330 => '⨥',2331 => '⨦',2332 => '⨧',2333 => '⨨',2334 => '⨩',2335 => '⨪',2336 => '⨫',2337 => '⨬',2338 => '⨭',2339 => '⨮',2340 => '⨯',2341 => '⨰',2342 => '⨱',2343 => '⨲',2344 => '⨳',2345 => '⨴',2346 => '⨵',2347 => '⨶',2348 => '⨷',2349 => '⨸',2350 => '⨹',2351 => '⨺',2352 => '⨻',2353 => '⨼',2354 => '⨽',2355 => '⨾',2356 => '⨿',2357 => '⩀',2358 => '⩁',2359 => '⩂',2360 => '⩃',2361 => '⩄',2362 => '⩅',2363 => '⩆',2364 => '⩇',2365 => '⩈',2366 => '⩉',2367 => '⩊',2368 => '⩋',2369 => '⩌',2370 => '⩍',2371 => '⩎',2372 => '⩏',2373 => '⩐',2374 => '⩑',2375 => '⩒',2376 => '⩓',2377 => '⩔',2378 => '⩕',2379 => '⩖',2380 => '⩗',2381 => '⩘',2382 => '⩙',2383 => '⩚',2384 => '⩛',2385 => '⩜',2386 => '⩝',2387 => '⩞',2388 => '⩟',2389 => '⩠',2390 => '⩡',2391 => '⩢',2392 => '⩣',2393 => '⩤',2394 => '⩥',2395 => '⩦',2396 => '⩧',2397 => '⩨',2398 => '⩩',2399 => '⩪',2400 => '⩫',2401 => '⩬',2402 => '⩭',2403 => '⩮',2404 => '⩯',2405 => '⩰',2406 => '⩱',2407 => '⩲',2408 => '⩳',2409 => '⩷',2410 => '⩸',2411 => '⩹',2412 => '⩺',2413 => '⩻',2414 => '⩼',2415 => '⩽',2416 => '⩾',2417 => '⩿',2418 => '⪀',2419 => '⪁',2420 => '⪂',2421 => '⪃',2422 => '⪄',2423 => '⪅',2424 => '⪆',2425 => '⪇',2426 => '⪈',2427 => '⪉',2428 => '⪊',2429 => '⪋',2430 => '⪌',2431 => '⪍',2432 => '⪎',2433 => '⪏',2434 => '⪐',2435 => '⪑',2436 => '⪒',2437 => '⪓',2438 => '⪔',2439 => '⪕',2440 => '⪖',2441 => '⪗',2442 => '⪘',2443 => '⪙',2444 => '⪚',2445 => '⪛',2446 => '⪜',2447 => '⪝',2448 => '⪞',2449 => '⪟',2450 => '⪠',2451 => '⪡',2452 => '⪢',2453 => '⪣',2454 => '⪤',2455 => '⪥',2456 => '⪦',2457 => '⪧',2458 => '⪨',2459 => '⪩',2460 => '⪪',2461 => '⪫',2462 => '⪬',2463 => '⪭',2464 => '⪮',2465 => '⪯',2466 => '⪰',2467 => '⪱',2468 => '⪲',2469 => '⪳',2470 => '⪴',2471 => '⪵',2472 => '⪶',2473 => '⪷',2474 => '⪸',2475 => '⪹',2476 => '⪺',2477 => '⪻',2478 => '⪼',2479 => '⪽',2480 => '⪾',2481 => '⪿',2482 => '⫀',2483 => '⫁',2484 => '⫂',2485 => '⫃',2486 => '⫄',2487 => '⫅',2488 => '⫆',2489 => '⫇',2490 => '⫈',2491 => '⫉',2492 => '⫊',2493 => '⫋',2494 => '⫌',2495 => '⫍',2496 => '⫎',2497 => '⫏',2498 => '⫐',2499 => '⫑',2500 => '⫒',2501 => '⫓',2502 => '⫔',2503 => '⫕',2504 => '⫖',2505 => '⫗',2506 => '⫘',2507 => '⫙',2508 => '⫚',2509 => '⫛',2510 => '⫝',2511 => '⫞',2512 => '⫟',2513 => '⫠',2514 => '⫡',2515 => '⫢',2516 => '⫣',2517 => '⫤',2518 => '⫥',2519 => '⫦',2520 => '⫧',2521 => '⫨',2522 => '⫩',2523 => '⫪',2524 => '⫫',2525 => '⫬',2526 => '⫭',2527 => '⫮',2528 => '⫯',2529 => '⫰',2530 => '⫱',2531 => '⫲',2532 => '⫳',2533 => '⫴',2534 => '⫵',2535 => '⫶',2536 => '⫷',2537 => '⫸',2538 => '⫹',2539 => '⫺',2540 => '⫻',2541 => '⫼',2542 => '⫽',2543 => '⫾',2544 => '⫿',2545 => '⬀',2546 => '⬁',2547 => '⬂',2548 => '⬃',2549 => '⬄',2550 => '⬅',2551 => '⬆',2552 => '⬇',2553 => '⬈',2554 => '⬉',2555 => '⬊',2556 => '⬋',2557 => '⬌',2558 => '⬍',2559 => '⬎',2560 => '⬏',2561 => '⬐',2562 => '⬑',2563 => '⬒',2564 => '⬓',2565 => '⬔',2566 => '⬕',2567 => '⬖',2568 => '⬗',2569 => '⬘',2570 => '⬙',2571 => '⬚',2572 => '⬛',2573 => '⬜',2574 => '⬝',2575 => '⬞',2576 => '⬟',2577 => '⬠',2578 => '⬡',2579 => '⬢',2580 => '⬣',2581 => '⬤',2582 => '⬥',2583 => '⬦',2584 => '⬧',2585 => '⬨',2586 => '⬩',2587 => '⬪',2588 => '⬫',2589 => '⬬',2590 => '⬭',2591 => '⬮',2592 => '⬯',2593 => '⬰',2594 => '⬱',2595 => '⬲',2596 => '⬳',2597 => '⬴',2598 => '⬵',2599 => '⬶',2600 => '⬷',2601 => '⬸',2602 => '⬹',2603 => '⬺',2604 => '⬻',2605 => '⬼',2606 => '⬽',2607 => '⬾',2608 => '⬿',2609 => '⭀',2610 => '⭁',2611 => '⭂',2612 => '⭃',2613 => '⭄',2614 => '⭅',2615 => '⭆',2616 => '⭇',2617 => '⭈',2618 => '⭉',2619 => '⭊',2620 => '⭋',2621 => '⭌',2622 => '⭐',2623 => '⭑',2624 => '⭒',2625 => '⭓',2626 => '⭔',2627 => '⭕',2628 => '⭖',2629 => '⭗',2630 => '⭘',2631 => '⭙',2632 => '⳥',2633 => '⳦',2634 => '⳧',2635 => '⳨',2636 => '⳩',2637 => '⳪',2638 => '⠀',2639 => '⠁',2640 => '⠂',2641 => '⠃',2642 => '⠄',2643 => '⠅',2644 => '⠆',2645 => '⠇',2646 => '⠈',2647 => '⠉',2648 => '⠊',2649 => '⠋',2650 => '⠌',2651 => '⠍',2652 => '⠎',2653 => '⠏',2654 => '⠐',2655 => '⠑',2656 => '⠒',2657 => '⠓',2658 => '⠔',2659 => '⠕',2660 => '⠖',2661 => '⠗',2662 => '⠘',2663 => '⠙',2664 => '⠚',2665 => '⠛',2666 => '⠜',2667 => '⠝',2668 => '⠞',2669 => '⠟',2670 => '⠠',2671 => '⠡',2672 => '⠢',2673 => '⠣',2674 => '⠤',2675 => '⠥',2676 => '⠦',2677 => '⠧',2678 => '⠨',2679 => '⠩',2680 => '⠪',2681 => '⠫',2682 => '⠬',2683 => '⠭',2684 => '⠮',2685 => '⠯',2686 => '⠰',2687 => '⠱',2688 => '⠲',2689 => '⠳',2690 => '⠴',2691 => '⠵',2692 => '⠶',2693 => '⠷',2694 => '⠸',2695 => '⠹',2696 => '⠺',2697 => '⠻',2698 => '⠼',2699 => '⠽',2700 => '⠾',2701 => '⠿',2702 => '⡀',2703 => '⡁',2704 => '⡂',2705 => '⡃',2706 => '⡄',2707 => '⡅',2708 => '⡆',2709 => '⡇',2710 => '⡈',2711 => '⡉',2712 => '⡊',2713 => '⡋',2714 => '⡌',2715 => '⡍',2716 => '⡎',2717 => '⡏',2718 => '⡐',2719 => '⡑',2720 => '⡒',2721 => '⡓',2722 => '⡔',2723 => '⡕',2724 => '⡖',2725 => '⡗',2726 => '⡘',2727 => '⡙',2728 => '⡚',2729 => '⡛',2730 => '⡜',2731 => '⡝',2732 => '⡞',2733 => '⡟',2734 => '⡠',2735 => '⡡',2736 => '⡢',2737 => '⡣',2738 => '⡤',2739 => '⡥',2740 => '⡦',2741 => '⡧',2742 => '⡨',2743 => '⡩',2744 => '⡪',2745 => '⡫',2746 => '⡬',2747 => '⡭',2748 => '⡮',2749 => '⡯',2750 => '⡰',2751 => '⡱',2752 => '⡲',2753 => '⡳',2754 => '⡴',2755 => '⡵',2756 => '⡶',2757 => '⡷',2758 => '⡸',2759 => '⡹',2760 => '⡺',2761 => '⡻',2762 => '⡼',2763 => '⡽',2764 => '⡾',2765 => '⡿',2766 => '⢀',2767 => '⢁',2768 => '⢂',2769 => '⢃',2770 => '⢄',2771 => '⢅',2772 => '⢆',2773 => '⢇',2774 => '⢈',2775 => '⢉',2776 => '⢊',2777 => '⢋',2778 => '⢌',2779 => '⢍',2780 => '⢎',2781 => '⢏',2782 => '⢐',2783 => '⢑',2784 => '⢒',2785 => '⢓',2786 => '⢔',2787 => '⢕',2788 => '⢖',2789 => '⢗',2790 => '⢘',2791 => '⢙',2792 => '⢚',2793 => '⢛',2794 => '⢜',2795 => '⢝',2796 => '⢞',2797 => '⢟',2798 => '⢠',2799 => '⢡',2800 => '⢢',2801 => '⢣',2802 => '⢤',2803 => '⢥',2804 => '⢦',2805 => '⢧',2806 => '⢨',2807 => '⢩',2808 => '⢪',2809 => '⢫',2810 => '⢬',2811 => '⢭',2812 => '⢮',2813 => '⢯',2814 => '⢰',2815 => '⢱',2816 => '⢲',2817 => '⢳',2818 => '⢴',2819 => '⢵',2820 => '⢶',2821 => '⢷',2822 => '⢸',2823 => '⢹',2824 => '⢺',2825 => '⢻',2826 => '⢼',2827 => '⢽',2828 => '⢾',2829 => '⢿',2830 => '⣀',2831 => '⣁',2832 => '⣂',2833 => '⣃',2834 => '⣄',2835 => '⣅',2836 => '⣆',2837 => '⣇',2838 => '⣈',2839 => '⣉',2840 => '⣊',2841 => '⣋',2842 => '⣌',2843 => '⣍',2844 => '⣎',2845 => '⣏',2846 => '⣐',2847 => '⣑',2848 => '⣒',2849 => '⣓',2850 => '⣔',2851 => '⣕',2852 => '⣖',2853 => '⣗',2854 => '⣘',2855 => '⣙',2856 => '⣚',2857 => '⣛',2858 => '⣜',2859 => '⣝',2860 => '⣞',2861 => '⣟',2862 => '⣠',2863 => '⣡',2864 => '⣢',2865 => '⣣',2866 => '⣤',2867 => '⣥',2868 => '⣦',2869 => '⣧',2870 => '⣨',2871 => '⣩',2872 => '⣪',2873 => '⣫',2874 => '⣬',2875 => '⣭',2876 => '⣮',2877 => '⣯',2878 => '⣰',2879 => '⣱',2880 => '⣲',2881 => '⣳',2882 => '⣴',2883 => '⣵',2884 => '⣶',2885 => '⣷',2886 => '⣸',2887 => '⣹',2888 => '⣺',2889 => '⣻',2890 => '⣼',2891 => '⣽',2892 => '⣾',2893 => '⣿',2894 => '⚊',2895 => '⚋',2896 => '⚌',2897 => '⚍',2898 => '⚎',2899 => '⚏',2900 => '☰',2901 => '☱',2902 => '☲',2903 => '☳',2904 => '☴',2905 => '☵',2906 => '☶',2907 => '☷',2908 => '䷀',2909 => '䷁',2910 => '䷂',2911 => '䷃',2912 => '䷄',2913 => '䷅',2914 => '䷆',2915 => '䷇',2916 => '䷈',2917 => '䷉',2918 => '䷊',2919 => '䷋',2920 => '䷌',2921 => '䷍',2922 => '䷎',2923 => '䷏',2924 => '䷐',2925 => '䷑',2926 => '䷒',2927 => '䷓',2928 => '䷔',2929 => '䷕',2930 => '䷖',2931 => '䷗',2932 => '䷘',2933 => '䷙',2934 => '䷚',2935 => '䷛',2936 => '䷜',2937 => '䷝',2938 => '䷞',2939 => '䷟',2940 => '䷠',2941 => '䷡',2942 => '䷢',2943 => '䷣',2944 => '䷤',2945 => '䷥',2946 => '䷦',2947 => '䷧',2948 => '䷨',2949 => '䷩',2950 => '䷪',2951 => '䷫',2952 => '䷬',2953 => '䷭',2954 => '䷮',2955 => '䷯',2956 => '䷰',2957 => '䷱',2958 => '䷲',2959 => '䷳',2960 => '䷴',2961 => '䷵',2962 => '䷶',2963 => '䷷',2964 => '䷸',2965 => '䷹',2966 => '䷺',2967 => '䷻',2968 => '䷼',2969 => '䷽',2970 => '䷾',2971 => '䷿',2972 => '𝌀',2973 => '𝌁',2974 => '𝌂',2975 => '𝌃',2976 => '𝌄',2977 => '𝌅',2978 => '𝌆',2979 => '𝌇',2980 => '𝌈',2981 => '𝌉',2982 => '𝌊',2983 => '𝌋',2984 => '𝌌',2985 => '𝌍',2986 => '𝌎',2987 => '𝌏',2988 => '𝌐',2989 => '𝌑',2990 => '𝌒',2991 => '𝌓',2992 => '𝌔',2993 => '𝌕',2994 => '𝌖',2995 => '𝌗',2996 => '𝌘',2997 => '𝌙',2998 => '𝌚',2999 => '𝌛',3000 => '𝌜',3001 => '𝌝',3002 => '𝌞',3003 => '𝌟',3004 => '𝌠',3005 => '𝌡',3006 => '𝌢',3007 => '𝌣',3008 => '𝌤',3009 => '𝌥',3010 => '𝌦',3011 => '𝌧',3012 => '𝌨',3013 => '𝌩',3014 => '𝌪',3015 => '𝌫',3016 => '𝌬',3017 => '𝌭',3018 => '𝌮',3019 => '𝌯',3020 => '𝌰',3021 => '𝌱',3022 => '𝌲',3023 => '𝌳',3024 => '𝌴',3025 => '𝌵',3026 => '𝌶',3027 => '𝌷',3028 => '𝌸',3029 => '𝌹',3030 => '𝌺',3031 => '𝌻',3032 => '𝌼',3033 => '𝌽',3034 => '𝌾',3035 => '𝌿',3036 => '𝍀',3037 => '𝍁',3038 => '𝍂',3039 => '𝍃',3040 => '𝍄',3041 => '𝍅',3042 => '𝍆',3043 => '𝍇',3044 => '𝍈',3045 => '𝍉',3046 => '𝍊',3047 => '𝍋',3048 => '𝍌',3049 => '𝍍',3050 => '𝍎',3051 => '𝍏',3052 => '𝍐',3053 => '𝍑',3054 => '𝍒',3055 => '𝍓',3056 => '𝍔',3057 => '𝍕',3058 => '𝍖',3059 => '꒐',3060 => '꒑',3061 => '꒒',3062 => '꒓',3063 => '꒔',3064 => '꒕',3065 => '꒖',3066 => '꒗',3067 => '꒘',3068 => '꒙',3069 => '꒚',3070 => '꒛',3071 => '꒜',3072 => '꒝',3073 => '꒞',3074 => '꒟',3075 => '꒠',3076 => '꒡',3077 => '꒢',3078 => '꒣',3079 => '꒤',3080 => '꒥',3081 => '꒦',3082 => '꒧',3083 => '꒨',3084 => '꒩',3085 => '꒪',3086 => '꒫',3087 => '꒬',3088 => '꒭',3089 => '꒮',3090 => '꒯',3091 => '꒰',3092 => '꒱',3093 => '꒲',3094 => '꒳',3095 => '꒴',3096 => '꒵',3097 => '꒶',3098 => '꒷',3099 => '꒸',3100 => '꒹',3101 => '꒺',3102 => '꒻',3103 => '꒼',3104 => '꒽',3105 => '꒾',3106 => '꒿',3107 => '꓀',3108 => '꓁',3109 => '꓂',3110 => '꓃',3111 => '꓄',3112 => '꓅',3113 => '꓆',3114 => '𐄷',3115 => '𐄸',3116 => '𐄹',3117 => '𐄺',3118 => '𐄻',3119 => '𐄼',3120 => '𐄽',3121 => '𐄾',3122 => '𐄿',3123 => '𐅹',3124 => '𐅺',3125 => '𐅻',3126 => '𐅼',3127 => '𐅽',3128 => '𐅾',3129 => '𐅿',3130 => '𐆀',3131 => '𐆁',3132 => '𐆂',3133 => '𐆃',3134 => '𐆄',3135 => '𐆅',3136 => '𐆆',3137 => '𐆇',3138 => '𐆈',3139 => '𐆉',3140 => '𐆐',3141 => '𐆑',3142 => '𐆒',3143 => '𐆓',3144 => '𐆔',3145 => '𐆕',3146 => '𐆖',3147 => '𐆗',3148 => '𐆘',3149 => '𐆙',3150 => '𐆚',3151 => '𐆛',3152 => '𐇐',3153 => '𐇑',3154 => '𐇒',3155 => '𐇓',3156 => '𐇔',3157 => '𐇕',3158 => '𐇖',3159 => '𐇗',3160 => '𐇘',3161 => '𐇙',3162 => '𐇚',3163 => '𐇛',3164 => '𐇜',3165 => '𐇝',3166 => '𐇞',3167 => '𐇟',3168 => '𐇠',3169 => '𐇡',3170 => '𐇢',3171 => '𐇣',3172 => '𐇤',3173 => '𐇥',3174 => '𐇦',3175 => '𐇧',3176 => '𐇨',3177 => '𐇩',3178 => '𐇪',3179 => '𐇫',3180 => '𐇬',3181 => '𐇭',3182 => '𐇮',3183 => '𐇯',3184 => '𐇰',3185 => '𐇱',3186 => '𐇲',3187 => '𐇳',3188 => '𐇴',3189 => '𐇵',3190 => '𐇶',3191 => '𐇷',3192 => '𐇸',3193 => '𐇹',3194 => '𐇺',3195 => '𐇻',3196 => '𐇼',3197 => '𝀀',3198 => '𝀁',3199 => '𝀂',3200 => '𝀃',3201 => '𝀄',3202 => '𝀅',3203 => '𝀆',3204 => '𝀇',3205 => '𝀈',3206 => '𝀉',3207 => '𝀊',3208 => '𝀋',3209 => '𝀌',3210 => '𝀍',3211 => '𝀎',3212 => '𝀏',3213 => '𝀐',3214 => '𝀑',3215 => '𝀒',3216 => '𝀓',3217 => '𝀔',3218 => '𝀕',3219 => '𝀖',3220 => '𝀗',3221 => '𝀘',3222 => '𝀙',3223 => '𝀚',3224 => '𝀛',3225 => '𝀜',3226 => '𝀝',3227 => '𝀞',3228 => '𝀟',3229 => '𝀠',3230 => '𝀡',3231 => '𝀢',3232 => '𝀣',3233 => '𝀤',3234 => '𝀥',3235 => '𝀦',3236 => '𝀧',3237 => '𝀨',3238 => '𝀩',3239 => '𝀪',3240 => '𝀫',3241 => '𝀬',3242 => '𝀭',3243 => '𝀮',3244 => '𝀯',3245 => '𝀰',3246 => '𝀱',3247 => '𝀲',3248 => '𝀳',3249 => '𝀴',3250 => '𝀵',3251 => '𝀶',3252 => '𝀷',3253 => '𝀸',3254 => '𝀹',3255 => '𝀺',3256 => '𝀻',3257 => '𝀼',3258 => '𝀽',3259 => '𝀾',3260 => '𝀿',3261 => '𝁀',3262 => '𝁁',3263 => '𝁂',3264 => '𝁃',3265 => '𝁄',3266 => '𝁅',3267 => '𝁆',3268 => '𝁇',3269 => '𝁈',3270 => '𝁉',3271 => '𝁊',3272 => '𝁋',3273 => '𝁌',3274 => '𝁍',3275 => '𝁎',3276 => '𝁏',3277 => '𝁐',3278 => '𝁑',3279 => '𝁒',3280 => '𝁓',3281 => '𝁔',3282 => '𝁕',3283 => '𝁖',3284 => '𝁗',3285 => '𝁘',3286 => '𝁙',3287 => '𝁚',3288 => '𝁛',3289 => '𝁜',3290 => '𝁝',3291 => '𝁞',3292 => '𝁟',3293 => '𝁠',3294 => '𝁡',3295 => '𝁢',3296 => '𝁣',3297 => '𝁤',3298 => '𝁥',3299 => '𝁦',3300 => '𝁧',3301 => '𝁨',3302 => '𝁩',3303 => '𝁪',3304 => '𝁫',3305 => '𝁬',3306 => '𝁭',3307 => '𝁮',3308 => '𝁯',3309 => '𝁰',3310 => '𝁱',3311 => '𝁲',3312 => '𝁳',3313 => '𝁴',3314 => '𝁵',3315 => '𝁶',3316 => '𝁷',3317 => '𝁸',3318 => '𝁹',3319 => '𝁺',3320 => '𝁻',3321 => '𝁼',3322 => '𝁽',3323 => '𝁾',3324 => '𝁿',3325 => '𝂀',3326 => '𝂁',3327 => '𝂂',3328 => '𝂃',3329 => '𝂄',3330 => '𝂅',3331 => '𝂆',3332 => '𝂇',3333 => '𝂈',3334 => '𝂉',3335 => '𝂊',3336 => '𝂋',3337 => '𝂌',3338 => '𝂍',3339 => '𝂎',3340 => '𝂏',3341 => '𝂐',3342 => '𝂑',3343 => '𝂒',3344 => '𝂓',3345 => '𝂔',3346 => '𝂕',3347 => '𝂖',3348 => '𝂗',3349 => '𝂘',3350 => '𝂙',3351 => '𝂚',3352 => '𝂛',3353 => '𝂜',3354 => '𝂝',3355 => '𝂞',3356 => '𝂟',3357 => '𝂠',3358 => '𝂡',3359 => '𝂢',3360 => '𝂣',3361 => '𝂤',3362 => '𝂥',3363 => '𝂦',3364 => '𝂧',3365 => '𝂨',3366 => '𝂩',3367 => '𝂪',3368 => '𝂫',3369 => '𝂬',3370 => '𝂭',3371 => '𝂮',3372 => '𝂯',3373 => '𝂰',3374 => '𝂱',3375 => '𝂲',3376 => '𝂳',3377 => '𝂴',3378 => '𝂵',3379 => '𝂶',3380 => '𝂷',3381 => '𝂸',3382 => '𝂹',3383 => '𝂺',3384 => '𝂻',3385 => '𝂼',3386 => '𝂽',3387 => '𝂾',3388 => '𝂿',3389 => '𝃀',3390 => '𝃁',3391 => '𝃂',3392 => '𝃃',3393 => '𝃄',3394 => '𝃅',3395 => '𝃆',3396 => '𝃇',3397 => '𝃈',3398 => '𝃉',3399 => '𝃊',3400 => '𝃋',3401 => '𝃌',3402 => '𝃍',3403 => '𝃎',3404 => '𝃏',3405 => '𝃐',3406 => '𝃑',3407 => '𝃒',3408 => '𝃓',3409 => '𝃔',3410 => '𝃕',3411 => '𝃖',3412 => '𝃗',3413 => '𝃘',3414 => '𝃙',3415 => '𝃚',3416 => '𝃛',3417 => '𝃜',3418 => '𝃝',3419 => '𝃞',3420 => '𝃟',3421 => '𝃠',3422 => '𝃡',3423 => '𝃢',3424 => '𝃣',3425 => '𝃤',3426 => '𝃥',3427 => '𝃦',3428 => '𝃧',3429 => '𝃨',3430 => '𝃩',3431 => '𝃪',3432 => '𝃫',3433 => '𝃬',3434 => '𝃭',3435 => '𝃮',3436 => '𝃯',3437 => '𝃰',3438 => '𝃱',3439 => '𝃲',3440 => '𝃳',3441 => '𝃴',3442 => '𝃵',3443 => '𝄀',3444 => '𝄁',3445 => '𝄂',3446 => '𝄃',3447 => '𝄄',3448 => '𝄅',3449 => '𝄆',3450 => '𝄇',3451 => '𝄈',3452 => '𝄉',3453 => '𝄊',3454 => '𝄋',3455 => '𝄌',3456 => '𝄍',3457 => '𝄎',3458 => '𝄏',3459 => '𝄐',3460 => '𝄑',3461 => '𝄒',3462 => '𝄓',3463 => '𝄔',3464 => '𝄕',3465 => '𝄖',3466 => '𝄗',3467 => '𝄘',3468 => '𝄙',3469 => '𝄚',3470 => '𝄛',3471 => '𝄜',3472 => '𝄝',3473 => '𝄞',3474 => '𝄟',3475 => '𝄠',3476 => '𝄡',3477 => '𝄢',3478 => '𝄣',3479 => '𝄤',3480 => '𝄥',3481 => '𝄦',3482 => '♭',3483 => '♮',3484 => '♯',3485 => '𝄪',3486 => '𝄫',3487 => '𝄬',3488 => '𝄭',3489 => '𝄮',3490 => '𝄯',3491 => '𝄰',3492 => '𝄱',3493 => '𝄲',3494 => '𝄳',3495 => '𝄴',3496 => '𝄵',3497 => '𝄶',3498 => '𝄷',3499 => '𝄸',3500 => '𝄹',3501 => '𝄩',3502 => '𝄺',3503 => '𝄻',3504 => '𝄼',3505 => '𝄽',3506 => '𝄾',3507 => '𝄿',3508 => '𝅀',3509 => '𝅁',3510 => '𝅂',3511 => '𝅃',3512 => '𝅄',3513 => '𝅅',3514 => '𝅆',3515 => '𝅇',3516 => '𝅈',3517 => '𝅉',3518 => '𝅊',3519 => '𝅋',3520 => '𝅌',3521 => '𝅍',3522 => '𝅎',3523 => '𝅏',3524 => '𝅐',3525 => '𝅑',3526 => '𝅒',3527 => '𝅓',3528 => '𝅔',3529 => '𝅕',3530 => '𝅖',3531 => '𝅗',3532 => '𝅘',3533 => '𝅙',3534 => '𝅚',3535 => '𝅛',3536 => '𝅜',3537 => '𝅝',3538 => '𝅪',3539 => '𝅫',3540 => '𝅬',3541 => '𝆃',3542 => '𝆄',3543 => '𝆌',3544 => '𝆍',3545 => '𝆎',3546 => '𝆏',3547 => '𝆐',3548 => '𝆑',3549 => '𝆒',3550 => '𝆓',3551 => '𝆔',3552 => '𝆕',3553 => '𝆖',3554 => '𝆗',3555 => '𝆘',3556 => '𝆙',3557 => '𝆚',3558 => '𝆛',3559 => '𝆜',3560 => '𝆝',3561 => '𝆞',3562 => '𝆟',3563 => '𝆠',3564 => '𝆡',3565 => '𝆢',3566 => '𝆣',3567 => '𝆤',3568 => '𝆥',3569 => '𝆦',3570 => '𝆧',3571 => '𝆨',3572 => '𝆩',3573 => '𝆮',3574 => '𝆯',3575 => '𝆰',3576 => '𝆱',3577 => '𝆲',3578 => '𝆳',3579 => '𝆴',3580 => '𝆵',3581 => '𝆶',3582 => '𝆷',3583 => '𝆸',3584 => '𝆹',3585 => '𝆺',3586 => '𝇁',3587 => '𝇂',3588 => '𝇃',3589 => '𝇄',3590 => '𝇅',3591 => '𝇆',3592 => '𝇇',3593 => '𝇈',3594 => '𝇉',3595 => '𝇊',3596 => '𝇋',3597 => '𝇌',3598 => '𝇍',3599 => '𝇎',3600 => '𝇏',3601 => '𝇐',3602 => '𝇑',3603 => '𝇒',3604 => '𝇓',3605 => '𝇔',3606 => '𝇕',3607 => '𝇖',3608 => '𝇗',3609 => '𝇘',3610 => '𝇙',3611 => '𝇚',3612 => '𝇛',3613 => '𝇜',3614 => '𝇝',3615 => '𝈀',3616 => '𝈁',3617 => '𝈂',3618 => '𝈃',3619 => '𝈄',3620 => '𝈅',3621 => '𝈆',3622 => '𝈇',3623 => '𝈈',3624 => '𝈉',3625 => '𝈊',3626 => '𝈋',3627 => '𝈌',3628 => '𝈍',3629 => '𝈎',3630 => '𝈏',3631 => '𝈐',3632 => '𝈑',3633 => '𝈒',3634 => '𝈓',3635 => '𝈔',3636 => '𝈕',3637 => '𝈖',3638 => '𝈗',3639 => '𝈘',3640 => '𝈙',3641 => '𝈚',3642 => '𝈛',3643 => '𝈜',3644 => '𝈝',3645 => '𝈞',3646 => '𝈟',3647 => '𝈠',3648 => '𝈡',3649 => '𝈢',3650 => '𝈣',3651 => '𝈤',3652 => '𝈥',3653 => '𝈦',3654 => '𝈧',3655 => '𝈨',3656 => '𝈩',3657 => '𝈪',3658 => '𝈫',3659 => '𝈬',3660 => '𝈭',3661 => '𝈮',3662 => '𝈯',3663 => '𝈰',3664 => '𝈱',3665 => '𝈲',3666 => '𝈳',3667 => '𝈴',3668 => '𝈵',3669 => '𝈶',3670 => '𝈷',3671 => '𝈸',3672 => '𝈹',3673 => '𝈺',3674 => '𝈻',3675 => '𝈼',3676 => '𝈽',3677 => '𝈾',3678 => '𝈿',3679 => '𝉀',3680 => '𝉁',3681 => '𝉅',3682 => '🀀',3683 => '🀁',3684 => '🀂',3685 => '🀃',3686 => '🀄',3687 => '🀅',3688 => '🀆',3689 => '🀇',3690 => '🀈',3691 => '🀉',3692 => '🀊',3693 => '🀋',3694 => '🀌',3695 => '🀍',3696 => '🀎',3697 => '🀏',3698 => '🀐',3699 => '🀑',3700 => '🀒',3701 => '🀓',3702 => '🀔',3703 => '🀕',3704 => '🀖',3705 => '🀗',3706 => '🀘',3707 => '🀙',3708 => '🀚',3709 => '🀛',3710 => '🀜',3711 => '🀝',3712 => '🀞',3713 => '🀟',3714 => '🀠',3715 => '🀡',3716 => '🀢',3717 => '🀣',3718 => '🀤',3719 => '🀥',3720 => '🀦',3721 => '🀧',3722 => '🀨',3723 => '🀩',3724 => '🀪',3725 => '🀫',3726 => '🀰',3727 => '🀱',3728 => '🀲',3729 => '🀳',3730 => '🀴',3731 => '🀵',3732 => '🀶',3733 => '🀷',3734 => '🀸',3735 => '🀹',3736 => '🀺',3737 => '🀻',3738 => '🀼',3739 => '🀽',3740 => '🀾',3741 => '🀿',3742 => '🁀',3743 => '🁁',3744 => '🁂',3745 => '🁃',3746 => '🁄',3747 => '🁅',3748 => '🁆',3749 => '🁇',3750 => '🁈',3751 => '🁉',3752 => '🁊',3753 => '🁋',3754 => '🁌',3755 => '🁍',3756 => '🁎',3757 => '🁏',3758 => '🁐',3759 => '🁑',3760 => '🁒',3761 => '🁓',3762 => '🁔',3763 => '🁕',3764 => '🁖',3765 => '🁗',3766 => '🁘',3767 => '🁙',3768 => '🁚',3769 => '🁛',3770 => '🁜',3771 => '🁝',3772 => '🁞',3773 => '🁟',3774 => '🁠',3775 => '🁡',3776 => '🁢',3777 => '🁣',3778 => '🁤',3779 => '🁥',3780 => '🁦',3781 => '🁧',3782 => '🁨',3783 => '🁩',3784 => '🁪',3785 => '🁫',3786 => '🁬',3787 => '🁭',3788 => '🁮',3789 => '🁯',3790 => '🁰',3791 => '🁱',3792 => '🁲',3793 => '🁳',3794 => '🁴',3795 => '🁵',3796 => '🁶',3797 => '🁷',3798 => '🁸',3799 => '🁹',3800 => '🁺',3801 => '🁻',3802 => '🁼',3803 => '🁽',3804 => '🁾',3805 => '🁿',3806 => '🂀',3807 => '🂁',3808 => '🂂',3809 => '🂃',3810 => '🂄',3811 => '🂅',3812 => '🂆',3813 => '🂇',3814 => '🂈',3815 => '🂉',3816 => '🂊',3817 => '🂋',3818 => '🂌',3819 => '🂍',3820 => '🂎',3821 => '🂏',3822 => '🂐',3823 => '🂑',3824 => '🂒',3825 => '🂓',3826 => '🂠',3827 => '🂡',3828 => '🂢',3829 => '🂣',3830 => '🂤',3831 => '🂥',3832 => '🂦',3833 => '🂧',3834 => '🂨',3835 => '🂩',3836 => '🂪',3837 => '🂫',3838 => '🂬',3839 => '🂭',3840 => '🂮',3841 => '🂱',3842 => '🂲',3843 => '🂳',3844 => '🂴',3845 => '🂵',3846 => '🂶',3847 => '🂷',3848 => '🂸',3849 => '🂹',3850 => '🂺',3851 => '🂻',3852 => '🂼',3853 => '🂽',3854 => '🂾',3855 => '🃁',3856 => '🃂',3857 => '🃃',3858 => '🃄',3859 => '🃅',3860 => '🃆',3861 => '🃇',3862 => '🃈',3863 => '🃉',3864 => '🃊',3865 => '🃋',3866 => '🃌',3867 => '🃍',3868 => '🃎',3869 => '🃏',3870 => '🃑',3871 => '🃒',3872 => '🃓',3873 => '🃔',3874 => '🃕',3875 => '🃖',3876 => '🃗',3877 => '🃘',3878 => '🃙',3879 => '🃚',3880 => '🃛',3881 => '🃜',3882 => '🃝',3883 => '🃞',3884 => '🃟',3885 => '🌀',3886 => '🌁',3887 => '🌂',3888 => '🌃',3889 => '🌄',3890 => '🌅',3891 => '🌆',3892 => '🌇',3893 => '🌈',3894 => '🌉',3895 => '🌊',3896 => '🌋',3897 => '🌌',3898 => '🌍',3899 => '🌎',3900 => '🌏',3901 => '🌐',3902 => '🌑',3903 => '🌒',3904 => '🌓',3905 => '🌔',3906 => '🌕',3907 => '🌖',3908 => '🌗',3909 => '🌘',3910 => '🌙',3911 => '🌚',3912 => '🌛',3913 => '🌜',3914 => '🌝',3915 => '🌞',3916 => '🌟',3917 => '🌠',3918 => '🌰',3919 => '🌱',3920 => '🌲',3921 => '🌳',3922 => '🌴',3923 => '🌵',3924 => '🌷',3925 => '🌸',3926 => '🌹',3927 => '🌺',3928 => '🌻',3929 => '🌼',3930 => '🌽',3931 => '🌾',3932 => '🌿',3933 => '🍀',3934 => '🍁',3935 => '🍂',3936 => '🍃',3937 => '🍄',3938 => '🍅',3939 => '🍆',3940 => '🍇',3941 => '🍈',3942 => '🍉',3943 => '🍊',3944 => '🍋',3945 => '🍌',3946 => '🍍',3947 => '🍎',3948 => '🍏',3949 => '🍐',3950 => '🍑',3951 => '🍒',3952 => '🍓',3953 => '🍔',3954 => '🍕',3955 => '🍖',3956 => '🍗',3957 => '🍘',3958 => '🍙',3959 => '🍚',3960 => '🍛',3961 => '🍜',3962 => '🍝',3963 => '🍞',3964 => '🍟',3965 => '🍠',3966 => '🍡',3967 => '🍢',3968 => '🍣',3969 => '🍤',3970 => '🍥',3971 => '🍦',3972 => '🍧',3973 => '🍨',3974 => '🍩',3975 => '🍪',3976 => '🍫',3977 => '🍬',3978 => '🍭',3979 => '🍮',3980 => '🍯',3981 => '🍰',3982 => '🍱',3983 => '🍲',3984 => '🍳',3985 => '🍴',3986 => '🍵',3987 => '🍶',3988 => '🍷',3989 => '🍸',3990 => '🍹',3991 => '🍺',3992 => '🍻',3993 => '🍼',3994 => '🎀',3995 => '🎁',3996 => '🎂',3997 => '🎃',3998 => '🎄',3999 => '🎅',4000 => '🎆',4001 => '🎇',4002 => '🎈',4003 => '🎉',4004 => '🎊',4005 => '🎋',4006 => '🎌',4007 => '🎍',4008 => '🎎',4009 => '🎏',4010 => '🎐',4011 => '🎑',4012 => '🎒',4013 => '🎓',4014 => '🎠',4015 => '🎡',4016 => '🎢',4017 => '🎣',4018 => '🎤',4019 => '🎥',4020 => '🎦',4021 => '🎧',4022 => '🎨',4023 => '🎩',4024 => '🎪',4025 => '🎫',4026 => '🎬',4027 => '🎭',4028 => '🎮',4029 => '🎯',4030 => '🎰',4031 => '🎱',4032 => '🎲',4033 => '🎳',4034 => '🎴',4035 => '🎵',4036 => '🎶',4037 => '🎷',4038 => '🎸',4039 => '🎹',4040 => '🎺',4041 => '🎻',4042 => '🎼',4043 => '🎽',4044 => '🎾',4045 => '🎿',4046 => '🏀',4047 => '🏁',4048 => '🏂',4049 => '🏃',4050 => '🏄',4051 => '🏆',4052 => '🏇',4053 => '🏈',4054 => '🏉',4055 => '🏊',4056 => '🏠',4057 => '🏡',4058 => '🏢',4059 => '🏣',4060 => '🏤',4061 => '🏥',4062 => '🏦',4063 => '🏧',4064 => '🏨',4065 => '🏩',4066 => '🏪',4067 => '🏫',4068 => '🏬',4069 => '🏭',4070 => '🏮',4071 => '🏯',4072 => '🏰',4073 => '🐀',4074 => '🐁',4075 => '🐂',4076 => '🐃',4077 => '🐄',4078 => '🐅',4079 => '🐆',4080 => '🐇',4081 => '🐈',4082 => '🐉',4083 => '🐊',4084 => '🐋',4085 => '🐌',4086 => '🐍',4087 => '🐎',4088 => '🐏',4089 => '🐐',4090 => '🐑',4091 => '🐒',4092 => '🐓',4093 => '🐔',4094 => '🐕',4095 => '🐖',4096 => '🐗',4097 => '🐘',4098 => '🐙',4099 => '🐚',4100 => '🐛',4101 => '🐜',4102 => '🐝',4103 => '🐞',4104 => '🐟',4105 => '🐠',4106 => '🐡',4107 => '🐢',4108 => '🐣',4109 => '🐤',4110 => '🐥',4111 => '🐦',4112 => '🐧',4113 => '🐨',4114 => '🐩',4115 => '🐪',4116 => '🐫',4117 => '🐬',4118 => '🐭',4119 => '🐮',4120 => '🐯',4121 => '🐰',4122 => '🐱',4123 => '🐲',4124 => '🐳',4125 => '🐴',4126 => '🐵',4127 => '🐶',4128 => '🐷',4129 => '🐸',4130 => '🐹',4131 => '🐺',4132 => '🐻',4133 => '🐼',4134 => '🐽',4135 => '🐾',4136 => '👀',4137 => '👂',4138 => '👃',4139 => '👄',4140 => '👅',4141 => '👆',4142 => '👇',4143 => '👈',4144 => '👉',4145 => '👊',4146 => '👋',4147 => '👌',4148 => '👍',4149 => '👎',4150 => '👏',4151 => '👐',4152 => '👑',4153 => '👒',4154 => '👓',4155 => '👔',4156 => '👕',4157 => '👖',4158 => '👗',4159 => '👘',4160 => '👙',4161 => '👚',4162 => '👛',4163 => '👜',4164 => '👝',4165 => '👞',4166 => '👟',4167 => '👠',4168 => '👡',4169 => '👢',4170 => '👣',4171 => '👤',4172 => '👥',4173 => '👦',4174 => '👧',4175 => '👨',4176 => '👩',4177 => '👪',4178 => '👫',4179 => '👬',4180 => '👭',4181 => '👮',4182 => '👯',4183 => '👰',4184 => '👱',4185 => '👲',4186 => '👳',4187 => '👴',4188 => '👵',4189 => '👶',4190 => '👷',4191 => '👸',4192 => '👹',4193 => '👺',4194 => '👻',4195 => '👼',4196 => '👽',4197 => '👾',4198 => '👿',4199 => '💀',4200 => '💁',4201 => '💂',4202 => '💃',4203 => '💄',4204 => '💅',4205 => '💆',4206 => '💇',4207 => '💈',4208 => '💉',4209 => '💊',4210 => '💋',4211 => '💌',4212 => '💍',4213 => '💎',4214 => '💏',4215 => '💐',4216 => '💑',4217 => '💒',4218 => '💓',4219 => '💔',4220 => '💕',4221 => '💖',4222 => '💗',4223 => '💘',4224 => '💙',4225 => '💚',4226 => '💛',4227 => '💜',4228 => '💝',4229 => '💞',4230 => '💟',4231 => '💠',4232 => '💡',4233 => '💢',4234 => '💣',4235 => '💤',4236 => '💥',4237 => '💦',4238 => '💧',4239 => '💨',4240 => '💩',4241 => '💪',4242 => '💫',4243 => '💬',4244 => '💭',4245 => '💮',4246 => '💯',4247 => '💰',4248 => '💱',4249 => '💲',4250 => '💳',4251 => '💴',4252 => '💵',4253 => '💶',4254 => '💷',4255 => '💸',4256 => '💹',4257 => '💺',4258 => '💻',4259 => '💼',4260 => '💽',4261 => '💾',4262 => '💿',4263 => '📀',4264 => '📁',4265 => '📂',4266 => '📃',4267 => '📄',4268 => '📅',4269 => '📆',4270 => '📇',4271 => '📈',4272 => '📉',4273 => '📊',4274 => '📋',4275 => '📌',4276 => '📍',4277 => '📎',4278 => '📏',4279 => '📐',4280 => '📑',4281 => '📒',4282 => '📓',4283 => '📔',4284 => '📕',4285 => '📖',4286 => '📗',4287 => '📘',4288 => '📙',4289 => '📚',4290 => '📛',4291 => '📜',4292 => '📝',4293 => '📞',4294 => '📟',4295 => '📠',4296 => '📡',4297 => '📢',4298 => '📣',4299 => '📤',4300 => '📥',4301 => '📦',4302 => '📧',4303 => '📨',4304 => '📩',4305 => '📪',4306 => '📫',4307 => '📬',4308 => '📭',4309 => '📮',4310 => '📯',4311 => '📰',4312 => '📱',4313 => '📲',4314 => '📳',4315 => '📴',4316 => '📵',4317 => '📶',4318 => '📷',4319 => '📹',4320 => '📺',4321 => '📻',4322 => '📼',4323 => '🔀',4324 => '🔁',4325 => '🔂',4326 => '🔃',4327 => '🔄',4328 => '🔅',4329 => '🔆',4330 => '🔇',4331 => '🔈',4332 => '🔉',4333 => '🔊',4334 => '🔋',4335 => '🔌',4336 => '🔍',4337 => '🔎',4338 => '🔏',4339 => '🔐',4340 => '🔑',4341 => '🔒',4342 => '🔓',4343 => '🔔',4344 => '🔕',4345 => '🔖',4346 => '🔗',4347 => '🔘',4348 => '🔙',4349 => '🔚',4350 => '🔛',4351 => '🔜',4352 => '🔝',4353 => '🔞',4354 => '🔟',4355 => '🔠',4356 => '🔡',4357 => '🔢',4358 => '🔣',4359 => '🔤',4360 => '🔥',4361 => '🔦',4362 => '🔧',4363 => '🔨',4364 => '🔩',4365 => '🔪',4366 => '🔫',4367 => '🔬',4368 => '🔭',4369 => '🔮',4370 => '🔯',4371 => '🔰',4372 => '🔱',4373 => '🔲',4374 => '🔳',4375 => '🔴',4376 => '🔵',4377 => '🔶',4378 => '🔷',4379 => '🔸',4380 => '🔹',4381 => '🔺',4382 => '🔻',4383 => '🔼',4384 => '🔽',4385 => '🕐',4386 => '🕑',4387 => '🕒',4388 => '🕓',4389 => '🕔',4390 => '🕕',4391 => '🕖',4392 => '🕗',4393 => '🕘',4394 => '🕙',4395 => '🕚',4396 => '🕛',4397 => '🕜',4398 => '🕝',4399 => '🕞',4400 => '🕟',4401 => '🕠',4402 => '🕡',4403 => '🕢',4404 => '🕣',4405 => '🕤',4406 => '🕥',4407 => '🕦',4408 => '🕧',4409 => '🗻',4410 => '🗼',4411 => '🗽',4412 => '🗾',4413 => '🗿',4414 => '😁',4415 => '😂',4416 => '😃',4417 => '😄',4418 => '😅',4419 => '😆',4420 => '😇',4421 => '😈',4422 => '😉',4423 => '😊',4424 => '😋',4425 => '😌',4426 => '😍',4427 => '😎',4428 => '😏',4429 => '😐',4430 => '😒',4431 => '😓',4432 => '😔',4433 => '😖',4434 => '😘',4435 => '😚',4436 => '😜',4437 => '😝',4438 => '😞',4439 => '😠',4440 => '😡',4441 => '😢',4442 => '😣',4443 => '😤',4444 => '😥',4445 => '😨',4446 => '😩',4447 => '😪',4448 => '😫',4449 => '😭',4450 => '😰',4451 => '😱',4452 => '😲',4453 => '😳',4454 => '😵',4455 => '😶',4456 => '😷',4457 => '😸',4458 => '😹',4459 => '😺',4460 => '😻',4461 => '😼',4462 => '😽',4463 => '😾',4464 => '😿',4465 => '🙀',4466 => '🙅',4467 => '🙆',4468 => '🙇',4469 => '🙈',4470 => '🙉',4471 => '🙊',4472 => '🙋',4473 => '🙌',4474 => '🙍',4475 => '🙎',4476 => '🙏',4477 => '🚀',4478 => '🚁',4479 => '🚂',4480 => '🚃',4481 => '🚄',4482 => '🚅',4483 => '🚆',4484 => '🚇',4485 => '🚈',4486 => '🚉',4487 => '🚊',4488 => '🚋',4489 => '🚌',4490 => '🚍',4491 => '🚎',4492 => '🚏',4493 => '🚐',4494 => '🚑',4495 => '🚒',4496 => '🚓',4497 => '🚔',4498 => '🚕',4499 => '🚖',4500 => '🚗',4501 => '🚘',4502 => '🚙',4503 => '🚚',4504 => '🚛',4505 => '🚜',4506 => '🚝',4507 => '🚞',4508 => '🚟',4509 => '🚠',4510 => '🚡',4511 => '🚢',4512 => '🚣',4513 => '🚤',4514 => '🚥',4515 => '🚦',4516 => '🚧',4517 => '🚨',4518 => '🚩',4519 => '🚪',4520 => '🚫',4521 => '🚬',4522 => '🚭',4523 => '🚮',4524 => '🚯',4525 => '🚰',4526 => '🚱',4527 => '🚲',4528 => '🚳',4529 => '🚴',4530 => '🚵',4531 => '🚶',4532 => '🚷',4533 => '🚸',4534 => '🚹',4535 => '🚺',4536 => '🚻',4537 => '🚼',4538 => '🚽',4539 => '🚾',4540 => '🚿',4541 => '🛀',4542 => '🛁',4543 => '🛂',4544 => '🛃',4545 => '🛄',4546 => '🛅',4547 => '🜀',4548 => '🜁',4549 => '🜂',4550 => '🜃',4551 => '🜄',4552 => '🜅',4553 => '🜆',4554 => '🜇',4555 => '🜈',4556 => '🜉',4557 => '🜊',4558 => '🜋',4559 => '🜌',4560 => '🜍',4561 => '🜎',4562 => '🜏',4563 => '🜐',4564 => '🜑',4565 => '🜒',4566 => '🜓',4567 => '🜔',4568 => '🜕',4569 => '🜖',4570 => '🜗',4571 => '🜘',4572 => '🜙',4573 => '🜚',4574 => '🜛',4575 => '🜜',4576 => '🜝',4577 => '🜞',4578 => '🜟',4579 => '🜠',4580 => '🜡',4581 => '🜢',4582 => '🜣',4583 => '🜤',4584 => '🜥',4585 => '🜦',4586 => '🜧',4587 => '🜨',4588 => '🜩',4589 => '🜪',4590 => '🜫',4591 => '🜬',4592 => '🜭',4593 => '🜮',4594 => '🜯',4595 => '🜰',4596 => '🜱',4597 => '🜲',4598 => '🜳',4599 => '🜴',4600 => '🜵',4601 => '🜶',4602 => '🜷',4603 => '🜸',4604 => '🜹',4605 => '🜺',4606 => '🜻',4607 => '🜼',4608 => '🜽',4609 => '🜾',4610 => '🜿',4611 => '🝀',4612 => '🝁',4613 => '🝂',4614 => '🝃',4615 => '🝄',4616 => '🝅',4617 => '🝆',4618 => '🝇',4619 => '🝈',4620 => '🝉',4621 => '🝊',4622 => '🝋',4623 => '🝌',4624 => '🝍',4625 => '🝎',4626 => '🝏',4627 => '🝐',4628 => '🝑',4629 => '🝒',4630 => '🝓',4631 => '🝔',4632 => '🝕',4633 => '🝖',4634 => '🝗',4635 => '🝘',4636 => '🝙',4637 => '🝚',4638 => '🝛',4639 => '🝜',4640 => '🝝',4641 => '🝞',4642 => '🝟',4643 => '🝠',4644 => '🝡',4645 => '🝢',4646 => '🝣',4647 => '🝤',4648 => '🝥',4649 => '🝦',4650 => '🝧',4651 => '🝨',4652 => '🝩',4653 => '🝪',4654 => '🝫',4655 => '🝬',4656 => '🝭',4657 => '🝮',4658 => '🝯',4659 => '🝰',4660 => '🝱',4661 => '🝲',4662 => '🝳',4663 => '㆐',4664 => '㆑',4665 => '',4666 => '�',4667 => '৴',4668 => '৵',4669 => '৶',4670 => '৷',4671 => '৸',4672 => '৹',4673 => '୲',4674 => '୳',4675 => '୴',4676 => '୵',4677 => '୶',4678 => '୷',4679 => '꠰',4680 => '꠱',4681 => '꠲',4682 => '꠳',4683 => '꠴',4684 => '꠵',4685 => '௰',4686 => '௱',4687 => '௲',4688 => '൰',4689 => '൱',4690 => '൲',4691 => '൳',4692 => '൴',4693 => '൵',4694 => '፲',4695 => '፳',4696 => '፴',4697 => '፵',4698 => '፶',4699 => '፷',4700 => '፸',4701 => '፹',4702 => '፺',4703 => '፻',4704 => '፼',4705 => 'ↀ',4706 => 'ↁ',4707 => 'ↂ',4708 => 'ↆ',4709 => 'ↇ',4710 => 'ↈ',4711 => '𐹩',4712 => '𐹪',4713 => '𐹫',4714 => '𐹬',4715 => '𐹭',4716 => '𐹮',4717 => '𐹯',4718 => '𐹰',4719 => '𐹱',4720 => '𐹲',4721 => '𐹳',4722 => '𐹴',4723 => '𐹵',4724 => '𐹶',4725 => '𐹷',4726 => '𐹸',4727 => '𐹹',4728 => '𐹺',4729 => '𐹻',4730 => '𐹼',4731 => '𐹽',4732 => '𐹾',4733 => '⳽',4734 => '𐌢',4735 => '𐌣',4736 => '𐄐',4737 => '𐄑',4738 => '𐄒',4739 => '𐄓',4740 => '𐄔',4741 => '𐄕',4742 => '𐄖',4743 => '𐄗',4744 => '𐄘',4745 => '𐄙',4746 => '𐄚',4747 => '𐄛',4748 => '𐄜',4749 => '𐄝',4750 => '𐄞',4751 => '𐄟',4752 => '𐄠',4753 => '𐄡',4754 => '𐄢',4755 => '𐄣',4756 => '𐄤',4757 => '𐄥',4758 => '𐄦',4759 => '𐄧',4760 => '𐄨',4761 => '𐄩',4762 => '𐄪',4763 => '𐄫',4764 => '𐄬',4765 => '𐄭',4766 => '𐄮',4767 => '𐄯',4768 => '𐄰',4769 => '𐄱',4770 => '𐄲',4771 => '𐄳',4772 => '𐅀',4773 => '𐅁',4774 => '𐅄',4775 => '𐅅',4776 => '𐅆',4777 => '𐅇',4778 => '𐅉',4779 => '𐅊',4780 => '𐅋',4781 => '𐅌',4782 => '𐅍',4783 => '𐅎',4784 => '𐅐',4785 => '𐅑',4786 => '𐅒',4787 => '𐅓',4788 => '𐅔',4789 => '𐅕',4790 => '𐅖',4791 => '𐅗',4792 => '𐅠',4793 => '𐅡',4794 => '𐅢',4795 => '𐅣',4796 => '𐅤',4797 => '𐅥',4798 => '𐅦',4799 => '𐅧',4800 => '𐅨',4801 => '𐅩',4802 => '𐅪',4803 => '𐅫',4804 => '𐅬',4805 => '𐅭',4806 => '𐅮',4807 => '𐅯',4808 => '𐅰',4809 => '𐅱',4810 => '𐅲',4811 => '𐅴',4812 => '𐅵',4813 => '𐅶',4814 => '𐅷',4815 => '𐅸',4816 => '𐏓',4817 => '𐏔',4818 => '𐏕',4819 => '𐩾',4820 => '𐩿',4821 => '𐤗',4822 => '𐤘',4823 => '𐤙',4824 => '𐡛',4825 => '𐡜',4826 => '𐡝',4827 => '𐡞',4828 => '𐡟',4829 => '𐭜',4830 => '𐭝',4831 => '𐭞',4832 => '𐭟',4833 => '𐭼',4834 => '𐭽',4835 => '𐭾',4836 => '𐭿',4837 => '𑁛',4838 => '𑁜',4839 => '𑁝',4840 => '𑁞',4841 => '𑁟',4842 => '𑁠',4843 => '𑁡',4844 => '𑁢',4845 => '𑁣',4846 => '𑁤',4847 => '𑁥',4848 => '𐩄',4849 => '𐩅',4850 => '𐩆',4851 => '𐩇',4852 => '𒐲',4853 => '𒐳',4854 => '𒑖',4855 => '𒑗',4856 => '𒑚',4857 => '𒑛',4858 => '𒑜',4859 => '𒑝',4860 => '𒑞',4861 => '𒑟',4862 => '𒑠',4863 => '𒑡',4864 => '𒑢',4865 => '𝍩',4866 => '𝍪',4867 => '𝍫',4868 => '𝍬',4869 => '𝍭',4870 => '𝍮',4871 => '𝍯',4872 => '𝍰',4873 => '𝍱',4874 => 'ː',4875 => 'ˑ',4876 => 'ॱ',4877 => 'ๆ',4878 => 'ໆ',4879 => 'ᪧ',4880 => 'ꧏ',4881 => 'ꩰ',4882 => 'ꫝ',4883 => 'ゝ',4884 => 'ー',4885 => 'ヽ',4886 => '¤',4887 => '¢',4888 => '$',4889 => '£',4890 => '¥',4891 => '؋',4892 => '৲',4893 => '৳',4894 => '৻',4895 => '૱',4896 => '꠸',4897 => '௹',4898 => '฿',4899 => '៛',4900 => '₠',4901 => '₡',4902 => '₢',4903 => '₣',4904 => '₤',4905 => '₥',4906 => '₦',4907 => '₧',4908 => '₩',4909 => '₪',4910 => '₫',4911 => '€',4912 => '₭',4913 => '₮',4914 => '₯',4915 => '₰',4916 => '₱',4917 => '₲',4918 => '₳',4919 => '₴',4920 => '₵',4921 => '₶',4922 => '₷',4923 => '₸',4924 => '₹',4925 => '0',4926 => '1',4927 => '2',4928 => '3',4929 => '4',4930 => '5',4931 => '6',4932 => '7',4933 => '8',4934 => '9',4935 => 'A',4936 => 'ᴀ',4937 => 'Ⱥ',4938 => 'ᶏ',4939 => 'ᴁ',4940 => 'ᴂ',4941 => 'Ɐ',4942 => 'Ɑ',4943 => 'ᶐ',4944 => 'Ɒ',4945 => 'B',4946 => 'ʙ',4947 => 'Ƀ',4948 => 'ᴯ',4949 => 'ᴃ',4950 => 'ᵬ',4951 => 'ᶀ',4952 => 'Ɓ',4953 => 'Ƃ',4954 => 'C',4955 => 'ᴄ',4956 => 'Ȼ',4957 => 'Ƈ',4958 => 'ɕ',4959 => 'Ↄ',4960 => 'Ꜿ',4961 => 'D',4962 => 'ᴅ',4963 => 'ᴆ',4964 => 'ᵭ',4965 => 'ᶁ',4966 => 'Ɖ',4967 => 'Ɗ',4968 => 'ᶑ',4969 => 'Ƌ',4970 => 'ȡ',4971 => 'ꝱ',4972 => 'ẟ',4973 => 'E',4974 => 'ᴇ',4975 => 'Ɇ',4976 => 'ᶒ',4977 => 'ⱸ',4978 => 'Ǝ',4979 => 'ⱻ',4980 => 'Ə',4981 => 'ᶕ',4982 => 'Ɛ',4983 => 'ᶓ',4984 => 'ɘ',4985 => 'ɚ',4986 => 'ɜ',4987 => 'ᶔ',4988 => 'ᴈ',4989 => 'ɝ',4990 => 'ɞ',4991 => 'ʚ',4992 => 'ɤ',4993 => 'F',4994 => 'ꜰ',4995 => 'ᵮ',4996 => 'ᶂ',4997 => 'Ƒ',4998 => 'Ⅎ',4999 => 'ꟻ',5000 => 'G',5001 => 'ɡ',5002 => 'ɢ',5003 => 'Ǥ',5004 => 'ᶃ',5005 => 'Ɠ',5006 => 'ʛ',5007 => 'ᵷ',5008 => 'Ꝿ',5009 => 'Ɣ',5010 => 'Ƣ',5011 => 'H',5012 => 'ʜ',5013 => 'Ƕ',5014 => 'ɦ',5015 => 'Ⱨ',5016 => 'Ⱶ',5017 => 'Ꜧ',5018 => 'ɧ',5019 => 'ʻ',5020 => 'ʽ',5021 => 'I',5022 => 'ı',5023 => 'ɪ',5024 => 'ꟾ',5025 => 'ᴉ',5026 => 'Ɨ',5027 => 'ᵻ',5028 => 'ᶖ',5029 => 'Ɩ',5030 => 'ᵼ',5031 => 'J',5032 => 'ȷ',5033 => 'ᴊ',5034 => 'Ɉ',5035 => 'ʝ',5036 => 'ɟ',5037 => 'ʄ',5038 => 'K',5039 => 'ᴋ',5040 => 'ᶄ',5041 => 'Ƙ',5042 => 'Ⱪ',5043 => 'Ꝁ',5044 => 'Ꝃ',5045 => 'Ꝅ',5046 => 'ʞ',5047 => 'L',5048 => 'ʟ',5049 => 'Ꝇ',5050 => 'ᴌ',5051 => 'Ꝉ',5052 => 'Ƚ',5053 => 'Ⱡ',5054 => 'Ɫ',5055 => 'ɬ',5056 => 'ᶅ',5057 => 'ɭ',5058 => 'ꞎ',5059 => 'ȴ',5060 => 'ꝲ',5061 => 'ɮ',5062 => 'Ꞁ',5063 => 'ƛ',5064 => 'ʎ',5065 => 'M',5066 => 'ᴍ',5067 => 'ᵯ',5068 => 'ᶆ',5069 => 'Ɱ',5070 => 'ꟽ',5071 => 'ꟿ',5072 => 'ꝳ',5073 => 'N',5074 => 'ɴ',5075 => 'ᴻ',5076 => 'ᴎ',5077 => 'ᵰ',5078 => 'Ɲ',5079 => 'Ƞ',5080 => 'Ꞑ',5081 => 'ᶇ',5082 => 'ɳ',5083 => 'ȵ',5084 => 'ꝴ',5085 => 'Ŋ',5086 => 'O',5087 => 'ᴏ',5088 => 'ᴑ',5089 => 'ɶ',5090 => 'ᴔ',5091 => 'ᴓ',5092 => 'Ɔ',5093 => 'ᴐ',5094 => 'ᴒ',5095 => 'ᶗ',5096 => 'Ꝍ',5097 => 'ᴖ',5098 => 'ᴗ',5099 => 'ⱺ',5100 => 'Ɵ',5101 => 'Ꝋ',5102 => 'ɷ',5103 => 'Ȣ',5104 => 'ᴕ',5105 => 'P',5106 => 'ᴘ',5107 => 'Ᵽ',5108 => 'Ꝑ',5109 => 'ᵱ',5110 => 'ᶈ',5111 => 'Ƥ',5112 => 'Ꝓ',5113 => 'Ꝕ',5114 => 'ꟼ',5115 => 'ɸ',5116 => 'ⱷ',5117 => 'Q',5118 => 'Ꝗ',5119 => 'Ꝙ',5120 => 'ʠ',5121 => 'Ɋ',5122 => 'ĸ',5123 => 'R',5124 => 'Ʀ',5125 => 'Ꝛ',5126 => 'ᴙ',5127 => 'Ɍ',5128 => 'ᵲ',5129 => 'ɹ',5130 => 'ᴚ',5131 => 'ɺ',5132 => 'ᶉ',5133 => 'ɻ',5134 => 'ⱹ',5135 => 'ɼ',5136 => 'Ɽ',5137 => 'ɾ',5138 => 'ᵳ',5139 => 'ɿ',5140 => 'ʁ',5141 => 'ꝵ',5142 => 'ꝶ',5143 => 'Ꝝ',5144 => 'S',5145 => 'ꜱ',5146 => 'ᵴ',5147 => 'ᶊ',5148 => 'ʂ',5149 => 'Ȿ',5150 => 'ẜ',5151 => 'ẝ',5152 => 'Ʃ',5153 => 'ᶋ',5154 => 'ƪ',5155 => 'ʅ',5156 => 'ᶘ',5157 => 'ʆ',5158 => 'T',5159 => 'ᴛ',5160 => 'Ŧ',5161 => 'Ⱦ',5162 => 'ᵵ',5163 => 'ƫ',5164 => 'Ƭ',5165 => 'Ʈ',5166 => 'ȶ',5167 => 'ꝷ',5168 => 'ʇ',5169 => 'U',5170 => 'ᴜ',5171 => 'ᴝ',5172 => 'ᴞ',5173 => 'ᵫ',5174 => 'Ʉ',5175 => 'ᵾ',5176 => 'ᶙ',5177 => 'Ɥ',5178 => 'ʮ',5179 => 'ʯ',5180 => 'Ɯ',5181 => 'ꟺ',5182 => 'ᴟ',5183 => 'ɰ',5184 => 'Ʊ',5185 => 'ᵿ',5186 => 'V',5187 => 'ᴠ',5188 => 'Ꝟ',5189 => 'ᶌ',5190 => 'Ʋ',5191 => 'ⱱ',5192 => 'ⱴ',5193 => 'Ỽ',5194 => 'Ʌ',5195 => 'W',5196 => 'ᴡ',5197 => 'Ⱳ',5198 => 'ʍ',5199 => 'X',5200 => 'ᶍ',5201 => 'Y',5202 => 'ʏ',5203 => 'Ɏ',5204 => 'Ƴ',5205 => 'Ỿ',5206 => 'Z',5207 => 'ᴢ',5208 => 'Ƶ',5209 => 'ᵶ',5210 => 'ᶎ',5211 => 'Ȥ',5212 => 'ʐ',5213 => 'ʑ',5214 => 'Ɀ',5215 => 'Ⱬ',5216 => 'Ꝣ',5217 => 'Ʒ',5218 => 'ᴣ',5219 => 'Ƹ',5220 => 'ᶚ',5221 => 'ƺ',5222 => 'ʓ',5223 => 'Ȝ',5224 => 'Þ',5225 => 'Ꝥ',5226 => 'Ꝧ',5227 => 'Ƿ',5228 => 'Ꝩ',5229 => 'Ꝫ',5230 => 'Ꝭ',5231 => 'Ꝯ',5232 => 'ꝸ',5233 => 'ƻ',5234 => 'Ꜫ',5235 => 'Ꜭ',5236 => 'Ꜯ',5237 => 'Ƨ',5238 => 'Ƽ',5239 => 'Ƅ',5240 => 'ʔ',5241 => 'Ɂ',5242 => 'ˀ',5243 => 'ʼ',5244 => 'ˮ',5245 => 'ʾ',5246 => 'Ꜣ',5247 => 'Ꞌ',5248 => 'ʕ',5249 => 'ʿ',5250 => 'ˁ',5251 => 'ᴤ',5252 => 'ᴥ',5253 => 'Ꜥ',5254 => 'ʡ',5255 => 'ʢ',5256 => 'ʖ',5257 => 'ǀ',5258 => 'ǁ',5259 => 'ǂ',5260 => 'ǃ',5261 => 'ʗ',5262 => 'ʘ',5263 => 'ʬ',5264 => 'ʭ',5265 => 'Α',5266 => 'Β',5267 => 'Γ',5268 => 'ᴦ',5269 => 'Δ',5270 => 'Ε',5271 => 'Ϝ',5272 => 'Ͷ',5273 => 'Ϛ',5274 => 'Ζ',5275 => 'Ͱ',5276 => 'Η',5277 => 'Θ',5278 => 'Ι',5279 => 'ϳ',5280 => 'Κ',5281 => 'Λ',5282 => 'ᴧ',5283 => 'Μ',5284 => 'Ν',5285 => 'Ξ',5286 => 'Ο',5287 => 'Π',5288 => 'ᴨ',5289 => 'Ϻ',5290 => 'Ϟ',5291 => 'Ϙ',5292 => 'Ρ',5293 => 'ᴩ',5294 => 'ϼ',5295 => 'Σ',5296 => 'Ͼ',5297 => 'Ͻ',5298 => 'Ͽ',5299 => 'Τ',5300 => 'Υ',5301 => 'Φ',5302 => 'Χ',5303 => 'Ψ',5304 => 'ᴪ',5305 => 'Ω',5306 => 'Ϡ',5307 => 'Ͳ',5308 => 'Ϸ',5309 => 'Ⲁ',5310 => 'Ⲃ',5311 => 'Ⲅ',5312 => 'Ⲇ',5313 => 'Ⲉ',5314 => 'Ⲷ',5315 => 'Ⲋ',5316 => 'Ⲍ',5317 => 'Ⲏ',5318 => 'Ⲑ',5319 => 'Ⲓ',5320 => 'Ⲕ',5321 => 'Ⲹ',5322 => 'Ⲗ',5323 => 'Ⲙ',5324 => 'Ⲛ',5325 => 'Ⲻ',5326 => 'Ⲽ',5327 => 'Ⲝ',5328 => 'Ⲟ',5329 => 'Ⲡ',5330 => 'Ⲣ',5331 => 'Ⲥ',5332 => 'Ⲧ',5333 => 'Ⲩ',5334 => 'Ⲫ',5335 => 'Ⲭ',5336 => 'Ⲯ',5337 => 'Ⲱ',5338 => 'Ⲿ',5339 => 'Ⳁ',5340 => 'Ϣ',5341 => 'Ⳬ',5342 => 'Ⳃ',5343 => 'Ⳅ',5344 => 'Ⳇ',5345 => 'Ϥ',5346 => 'Ϧ',5347 => 'Ⳉ',5348 => 'Ϩ',5349 => 'Ⳋ',5350 => 'Ⳍ',5351 => 'Ⳏ',5352 => 'Ⳑ',5353 => 'Ⳓ',5354 => 'Ⳕ',5355 => 'Ϫ',5356 => 'Ⳮ',5357 => 'Ⳗ',5358 => 'Ϭ',5359 => 'Ⳙ',5360 => 'Ⳛ',5361 => 'Ⳝ',5362 => 'Ϯ',5363 => 'Ⲳ',5364 => 'Ⲵ',5365 => 'Ⳟ',5366 => 'Ⳡ',5367 => 'Ⳣ',5368 => 'А',5369 => 'Ӑ',5370 => 'Ӓ',5371 => 'Ә',5372 => 'Ӛ',5373 => 'Ӕ',5374 => 'Б',5375 => 'В',5376 => 'Г',5377 => 'Ғ',5378 => 'Ӻ',5379 => 'Ҕ',5380 => 'Ӷ',5381 => 'Д',5382 => 'Ԁ',5383 => 'Ꚁ',5384 => 'Ђ',5385 => 'Ꙣ',5386 => 'Ԃ',5387 => 'Ѓ',5388 => 'Ҙ',5389 => 'Е',5390 => 'Ӗ',5391 => 'Є',5392 => 'Ж',5393 => 'Ꚅ',5394 => 'Ӝ',5395 => 'Җ',5396 => 'З',5397 => 'Ꙁ',5398 => 'Ԅ',5399 => 'Ԑ',5400 => 'Ӟ',5401 => 'Ꙃ',5402 => 'Ѕ',5403 => 'Ꙅ',5404 => 'Ӡ',5405 => 'Ꚉ',5406 => 'Ԇ',5407 => 'Ꚃ',5408 => 'И',5409 => 'Ҋ',5410 => 'Ӥ',5411 => 'І',5412 => 'Ꙇ',5413 => 'Ї',5414 => 'Й',5415 => 'Ј',5416 => 'Ꙉ',5417 => 'К',5418 => 'Қ',5419 => 'Ӄ',5420 => 'Ҡ',5421 => 'Ҟ',5422 => 'Ҝ',5423 => 'Ԟ',5424 => 'Ԛ',5425 => 'Л',5426 => 'ᴫ',5427 => 'Ӆ',5428 => 'Ԓ',5429 => 'Ԡ',5430 => 'Љ',5431 => 'Ꙥ',5432 => 'Ԉ',5433 => 'Ԕ',5434 => 'М',5435 => 'Ӎ',5436 => 'Ꙧ',5437 => 'Н',5438 => 'Ӊ',5439 => 'Ң',5440 => 'Ӈ',5441 => 'Ԣ',5442 => 'Ҥ',5443 => 'Њ',5444 => 'Ԋ',5445 => 'О',5446 => 'Ӧ',5447 => 'Ө',5448 => 'Ӫ',5449 => 'П',5450 => 'Ԥ',5451 => 'Ҧ',5452 => 'Ҁ',5453 => 'Р',5454 => 'Ҏ',5455 => 'Ԗ',5456 => 'С',5457 => 'Ԍ',5458 => 'Ҫ',5459 => 'Т',5460 => 'Ꚍ',5461 => 'Ԏ',5462 => 'Ҭ',5463 => 'Ꚋ',5464 => 'Ћ',5465 => 'Ќ',5466 => 'У',5467 => 'Ў',5468 => 'Ӱ',5469 => 'Ӳ',5470 => 'Ү',5471 => 'Ұ',5472 => 'Ꙋ',5473 => 'Ѹ',5474 => 'Ф',5475 => 'Х',5476 => 'Ӽ',5477 => 'Ӿ',5478 => 'Ҳ',5479 => 'Һ',5480 => 'Ԧ',5481 => 'Ꚕ',5482 => 'Ѡ',5483 => 'Ѿ',5484 => 'Ꙍ',5485 => 'Ѽ',5486 => 'Ѻ',5487 => 'Ц',5488 => 'Ꙡ',5489 => 'Ꚏ',5490 => 'Ҵ',5491 => 'Ꚑ',5492 => 'Ч',5493 => 'Ꚓ',5494 => 'Ӵ',5495 => 'Ҷ',5496 => 'Ӌ',5497 => 'Ҹ',5498 => 'Ꚇ',5499 => 'Ҽ',5500 => 'Ҿ',5501 => 'Џ',5502 => 'Ш',5503 => 'Ꚗ',5504 => 'Щ',5505 => 'Ꙏ',5506 => 'ⸯ',5507 => 'ꙿ',5508 => 'Ъ',5509 => 'Ꙑ',5510 => 'Ы',5511 => 'Ӹ',5512 => 'Ь',5513 => 'Ҍ',5514 => 'Ѣ',5515 => 'Ꙓ',5516 => 'Э',5517 => 'Ӭ',5518 => 'Ю',5519 => 'Ꙕ',5520 => 'Ꙗ',5521 => 'Я',5522 => 'Ԙ',5523 => 'Ѥ',5524 => 'Ѧ',5525 => 'Ꙙ',5526 => 'Ѫ',5527 => 'Ꙛ',5528 => 'Ѩ',5529 => 'Ꙝ',5530 => 'Ѭ',5531 => 'Ѯ',5532 => 'Ѱ',5533 => 'Ѳ',5534 => 'Ѵ',5535 => 'Ѷ',5536 => 'Ꙟ',5537 => 'Ҩ',5538 => 'Ԝ',5539 => 'Ӏ',5540 => 'Ⰰ',5541 => 'Ⰱ',5542 => 'Ⰲ',5543 => 'Ⰳ',5544 => 'Ⰴ',5545 => 'Ⰵ',5546 => 'Ⰶ',5547 => 'Ⰷ',5548 => 'Ⰸ',5549 => 'Ⰹ',5550 => 'Ⰺ',5551 => 'Ⰻ',5552 => 'Ⰼ',5553 => 'Ⰽ',5554 => 'Ⰾ',5555 => 'Ⰿ',5556 => 'Ⱀ',5557 => 'Ⱁ',5558 => 'Ⱂ',5559 => 'Ⱃ',5560 => 'Ⱄ',5561 => 'Ⱅ',5562 => 'Ⱆ',5563 => 'Ⱇ',5564 => 'Ⱈ',5565 => 'Ⱉ',5566 => 'Ⱊ',5567 => 'Ⱋ',5568 => 'Ⱌ',5569 => 'Ⱍ',5570 => 'Ⱎ',5571 => 'Ⱏ',5572 => 'Ⱐ',5573 => 'Ⱑ',5574 => 'Ⱒ',5575 => 'Ⱓ',5576 => 'Ⱔ',5577 => 'Ⱕ',5578 => 'Ⱖ',5579 => 'Ⱗ',5580 => 'Ⱘ',5581 => 'Ⱙ',5582 => 'Ⱚ',5583 => 'Ⱛ',5584 => 'Ⱜ',5585 => 'Ⱝ',5586 => 'Ⱞ',5587 => 'ა',5588 => 'Ⴀ',5589 => 'ბ',5590 => 'Ⴁ',5591 => 'გ',5592 => 'Ⴂ',5593 => 'დ',5594 => 'Ⴃ',5595 => 'ე',5596 => 'Ⴄ',5597 => 'ვ',5598 => 'Ⴅ',5599 => 'ზ',5600 => 'Ⴆ',5601 => 'ჱ',5602 => 'Ⴡ',5603 => 'თ',5604 => 'Ⴇ',5605 => 'ი',5606 => 'Ⴈ',5607 => 'კ',5608 => 'Ⴉ',5609 => 'ლ',5610 => 'Ⴊ',5611 => 'მ',5612 => 'Ⴋ',5613 => 'ნ',5614 => 'Ⴌ',5615 => 'ჲ',5616 => 'Ⴢ',5617 => 'ო',5618 => 'Ⴍ',5619 => 'პ',5620 => 'Ⴎ',5621 => 'ჟ',5622 => 'Ⴏ',5623 => 'რ',5624 => 'Ⴐ',5625 => 'ს',5626 => 'Ⴑ',5627 => 'ტ',5628 => 'Ⴒ',5629 => 'ჳ',5630 => 'Ⴣ',5631 => 'უ',5632 => 'Ⴓ',5633 => 'ფ',5634 => 'Ⴔ',5635 => 'ქ',5636 => 'Ⴕ',5637 => 'ღ',5638 => 'Ⴖ',5639 => 'ყ',5640 => 'Ⴗ',5641 => 'შ',5642 => 'Ⴘ',5643 => 'ჩ',5644 => 'Ⴙ',5645 => 'ც',5646 => 'Ⴚ',5647 => 'ძ',5648 => 'Ⴛ',5649 => 'წ',5650 => 'Ⴜ',5651 => 'ჭ',5652 => 'Ⴝ',5653 => 'ხ',5654 => 'Ⴞ',5655 => 'ჴ',5656 => 'Ⴤ',5657 => 'ჯ',5658 => 'Ⴟ',5659 => 'ჰ',5660 => 'Ⴠ',5661 => 'ჵ',5662 => 'Ⴥ',5663 => 'ჶ',5664 => 'ჷ',5665 => 'ჸ',5666 => 'ჹ',5667 => 'ჺ',5668 => 'Ա',5669 => 'Բ',5670 => 'Գ',5671 => 'Դ',5672 => 'Ե',5673 => 'Զ',5674 => 'Է',5675 => 'Ը',5676 => 'Թ',5677 => 'Ժ',5678 => 'Ի',5679 => 'Լ',5680 => 'Խ',5681 => 'Ծ',5682 => 'Կ',5683 => 'Հ',5684 => 'Ձ',5685 => 'Ղ',5686 => 'Ճ',5687 => 'Մ',5688 => 'Յ',5689 => 'Ն',5690 => 'Շ',5691 => 'Ո',5692 => 'Չ',5693 => 'Պ',5694 => 'Ջ',5695 => 'Ռ',5696 => 'Ս',5697 => 'Վ',5698 => 'Տ',5699 => 'Ր',5700 => 'Ց',5701 => 'Ւ',5702 => 'Փ',5703 => 'Ք',5704 => 'Օ',5705 => 'Ֆ',5706 => 'ՙ',5707 => 'א',5708 => 'ב',5709 => 'ג',5710 => 'ד',5711 => 'ה',5712 => 'ו',5713 => 'ז',5714 => 'ח',5715 => 'ט',5716 => 'י',5717 => 'ך',5718 => 'ל',5719 => 'ם',5720 => 'ן',5721 => 'ס',5722 => 'ע',5723 => 'ף',5724 => 'ץ',5725 => 'ק',5726 => 'ר',5727 => 'ש',5728 => 'ת',5729 => '𐤀',5730 => '𐤁',5731 => '𐤂',5732 => '𐤃',5733 => '𐤄',5734 => '𐤅',5735 => '𐤆',5736 => '𐤇',5737 => '𐤈',5738 => '𐤉',5739 => '𐤊',5740 => '𐤋',5741 => '𐤌',5742 => '𐤍',5743 => '𐤎',5744 => '𐤏',5745 => '𐤐',5746 => '𐤑',5747 => '𐤒',5748 => '𐤓',5749 => '𐤔',5750 => '𐤕',5751 => 'ࠀ',5752 => 'ࠁ',5753 => 'ࠂ',5754 => 'ࠃ',5755 => 'ࠄ',5756 => 'ࠅ',5757 => 'ࠆ',5758 => 'ࠇ',5759 => 'ࠈ',5760 => 'ࠉ',5761 => 'ࠊ',5762 => 'ࠋ',5763 => 'ࠌ',5764 => 'ࠍ',5765 => 'ࠎ',5766 => 'ࠏ',5767 => 'ࠐ',5768 => 'ࠑ',5769 => 'ࠒ',5770 => 'ࠓ',5771 => 'ࠔ',5772 => 'ࠕ',5773 => 'ࠚ',5774 => 'ء',5775 => 'آ',5776 => 'أ',5777 => 'ٲ',5778 => 'ٱ',5779 => 'ؤ',5780 => 'إ',5781 => 'ٳ',5782 => 'ݳ',5783 => 'ݴ',5784 => 'ئ',5785 => 'ا',5786 => 'ٮ',5787 => 'ب',5788 => 'ٻ',5789 => 'پ',5790 => 'ڀ',5791 => 'ݐ',5792 => 'ݑ',5793 => 'ݒ',5794 => 'ݓ',5795 => 'ݔ',5796 => 'ݕ',5797 => 'ݖ',5798 => 'ة',5799 => 'ت',5800 => 'ث',5801 => 'ٹ',5802 => 'ٺ',5803 => 'ټ',5804 => 'ٽ',5805 => 'ٿ',5806 => 'ج',5807 => 'ڃ',5808 => 'ڄ',5809 => 'چ',5810 => 'ڿ',5811 => 'ڇ',5812 => 'ح',5813 => 'خ',5814 => 'ځ',5815 => 'ڂ',5816 => 'څ',5817 => 'ݗ',5818 => 'ݘ',5819 => 'ݮ',5820 => 'ݯ',5821 => 'ݲ',5822 => 'ݼ',5823 => 'د',5824 => 'ذ',5825 => 'ڈ',5826 => 'ډ',5827 => 'ڊ',5828 => 'ڋ',5829 => 'ڌ',5830 => 'ڍ',5831 => 'ڎ',5832 => 'ڏ',5833 => 'ڐ',5834 => 'ۮ',5835 => 'ݙ',5836 => 'ݚ',5837 => 'ر',5838 => 'ز',5839 => 'ڑ',5840 => 'ڒ',5841 => 'ړ',5842 => 'ڔ',5843 => 'ڕ',5844 => 'ږ',5845 => 'ڗ',5846 => 'ژ',5847 => 'ڙ',5848 => 'ۯ',5849 => 'ݛ',5850 => 'ݫ',5851 => 'ݬ',5852 => 'ݱ',5853 => 'س',5854 => 'ش',5855 => 'ښ',5856 => 'ڛ',5857 => 'ڜ',5858 => 'ۺ',5859 => 'ݜ',5860 => 'ݭ',5861 => 'ݰ',5862 => 'ݽ',5863 => 'ݾ',5864 => 'ص',5865 => 'ض',5866 => 'ڝ',5867 => 'ڞ',5868 => 'ۻ',5869 => 'ط',5870 => 'ظ',5871 => 'ڟ',5872 => 'ع',5873 => 'غ',5874 => 'ڠ',5875 => 'ۼ',5876 => 'ݝ',5877 => 'ݞ',5878 => 'ݟ',5879 => 'ف',5880 => 'ڡ',5881 => 'ڢ',5882 => 'ڣ',5883 => 'ڤ',5884 => 'ڥ',5885 => 'ڦ',5886 => 'ݠ',5887 => 'ݡ',5888 => 'ٯ',5889 => 'ق',5890 => 'ڧ',5891 => 'ڨ',5892 => 'ك',5893 => 'ک',5894 => 'ڪ',5895 => 'ګ',5896 => 'ڬ',5897 => 'ݿ',5898 => 'ڭ',5899 => 'ڮ',5900 => 'گ',5901 => 'ڰ',5902 => 'ڱ',5903 => 'ڲ',5904 => 'ڳ',5905 => 'ڴ',5906 => 'ݢ',5907 => 'ػ',5908 => 'ؼ',5909 => 'ݣ',5910 => 'ݤ',5911 => 'ل',5912 => 'ڵ',5913 => 'ڶ',5914 => 'ڷ',5915 => 'ڸ',5916 => 'ݪ',5917 => 'م',5918 => 'ݥ',5919 => 'ݦ',5920 => 'ن',5921 => 'ں',5922 => 'ڻ',5923 => 'ڼ',5924 => 'ڽ',5925 => 'ڹ',5926 => 'ݧ',5927 => 'ݨ',5928 => 'ݩ',5929 => 'ه',5930 => 'ھ',5931 => 'ہ',5932 => 'ۃ',5933 => 'ۿ',5934 => 'ە',5935 => 'و',5936 => 'ۄ',5937 => 'ۅ',5938 => 'ۆ',5939 => 'ۇ',5940 => 'ۈ',5941 => 'ۉ',5942 => 'ۊ',5943 => 'ۋ',5944 => 'ۏ',5945 => 'ݸ',5946 => 'ݹ',5947 => 'ى',5948 => 'ي',5949 => 'ی',5950 => 'ۍ',5951 => 'ێ',5952 => 'ې',5953 => 'ۑ',5954 => 'ؽ',5955 => 'ؾ',5956 => 'ؿ',5957 => 'ؠ',5958 => 'ݵ',5959 => 'ݶ',5960 => 'ݷ',5961 => 'ے',5962 => 'ݺ',5963 => 'ݻ',5964 => 'ܐ',5965 => 'ܒ',5966 => 'ܓ',5967 => 'ܖ',5968 => 'ܕ',5969 => 'ܗ',5970 => 'ܘ',5971 => 'ܙ',5972 => 'ݍ',5973 => 'ܚ',5974 => 'ܛ',5975 => 'ܝ',5976 => 'ܞ',5977 => 'ܟ',5978 => 'ݎ',5979 => 'ܠ',5980 => 'ܡ',5981 => 'ܢ',5982 => 'ܣ',5983 => 'ܥ',5984 => 'ܦ',5985 => 'ݏ',5986 => 'ܨ',5987 => 'ܩ',5988 => 'ܪ',5989 => 'ܫ',5990 => 'ܬ',5991 => 'ࡀ',5992 => 'ࡁ',5993 => 'ࡂ',5994 => 'ࡃ',5995 => 'ࡄ',5996 => 'ࡅ',5997 => 'ࡆ',5998 => 'ࡇ',5999 => 'ࡈ',6000 => 'ࡉ',6001 => 'ࡊ',6002 => 'ࡋ',6003 => 'ࡌ',6004 => 'ࡍ',6005 => 'ࡎ',6006 => 'ࡏ',6007 => 'ࡐ',6008 => 'ࡑ',6009 => 'ࡒ',6010 => 'ࡓ',6011 => 'ࡔ',6012 => 'ࡕ',6013 => 'ࡖ',6014 => 'ࡗ',6015 => 'ࡘ',6016 => 'ހ',6017 => 'ޙ',6018 => 'ޚ',6019 => 'ށ',6020 => 'ނ',6021 => 'ރ',6022 => 'ޜ',6023 => 'ބ',6024 => 'ޅ',6025 => 'ކ',6026 => 'އ',6027 => 'ޢ',6028 => 'ޣ',6029 => 'ވ',6030 => 'ޥ',6031 => 'މ',6032 => 'ފ',6033 => 'ދ',6034 => 'ޛ',6035 => 'ތ',6036 => 'ޘ',6037 => 'ޠ',6038 => 'ޡ',6039 => 'ލ',6040 => 'ގ',6041 => 'ޤ',6042 => 'ޏ',6043 => 'ސ',6044 => 'ޝ',6045 => 'ޞ',6046 => 'ޟ',6047 => 'ޑ',6048 => 'ޒ',6049 => 'ޓ',6050 => 'ޔ',6051 => 'ޕ',6052 => 'ޖ',6053 => 'ޗ',6054 => 'ޱ',6055 => 'ߊ',6056 => 'ߋ',6057 => 'ߌ',6058 => 'ߍ',6059 => 'ߎ',6060 => 'ߏ',6061 => 'ߐ',6062 => 'ߑ',6063 => 'ߒ',6064 => 'ߓ',6065 => 'ߔ',6066 => 'ߕ',6067 => 'ߖ',6068 => 'ߗ',6069 => 'ߘ',6070 => 'ߙ',6071 => 'ߚ',6072 => 'ߛ',6073 => 'ߜ',6074 => 'ߝ',6075 => 'ߞ',6076 => 'ߟ',6077 => 'ߠ',6078 => 'ߡ',6079 => 'ߢ',6080 => 'ߣ',6081 => 'ߤ',6082 => 'ߥ',6083 => 'ߦ',6084 => 'ߧ',6085 => 'ߴ',6086 => 'ߵ',6087 => 'ⴰ',6088 => 'ⴱ',6089 => 'ⴲ',6090 => 'ⴳ',6091 => 'ⴴ',6092 => 'ⴵ',6093 => 'ⴶ',6094 => 'ⴷ',6095 => 'ⴸ',6096 => 'ⴹ',6097 => 'ⴺ',6098 => 'ⴻ',6099 => 'ⴼ',6100 => 'ⴽ',6101 => 'ⴾ',6102 => 'ⴿ',6103 => 'ⵀ',6104 => 'ⵁ',6105 => 'ⵂ',6106 => 'ⵃ',6107 => 'ⵄ',6108 => 'ⵅ',6109 => 'ⵆ',6110 => 'ⵇ',6111 => 'ⵈ',6112 => 'ⵉ',6113 => 'ⵊ',6114 => 'ⵋ',6115 => 'ⵌ',6116 => 'ⵍ',6117 => 'ⵎ',6118 => 'ⵏ',6119 => 'ⵐ',6120 => 'ⵑ',6121 => 'ⵒ',6122 => 'ⵓ',6123 => 'ⵔ',6124 => 'ⵕ',6125 => 'ⵖ',6126 => 'ⵗ',6127 => 'ⵘ',6128 => 'ⵙ',6129 => 'ⵚ',6130 => 'ⵛ',6131 => 'ⵜ',6132 => 'ⵝ',6133 => 'ⵞ',6134 => 'ⵟ',6135 => 'ⵠ',6136 => 'ⵡ',6137 => 'ⵢ',6138 => 'ⵣ',6139 => 'ⵤ',6140 => 'ⵥ',6141 => 'ⵯ',6142 => 'ሀ',6143 => 'ሁ',6144 => 'ሂ',6145 => 'ሃ',6146 => 'ሄ',6147 => 'ህ',6148 => 'ሆ',6149 => 'ሇ',6150 => 'ለ',6151 => 'ሉ',6152 => 'ሊ',6153 => 'ላ',6154 => 'ሌ',6155 => 'ል',6156 => 'ሎ',6157 => 'ሏ',6158 => 'ⶀ',6159 => 'ሐ',6160 => 'ሑ',6161 => 'ሒ',6162 => 'ሓ',6163 => 'ሔ',6164 => 'ሕ',6165 => 'ሖ',6166 => 'ሗ',6167 => 'መ',6168 => 'ሙ',6169 => 'ሚ',6170 => 'ማ',6171 => 'ሜ',6172 => 'ም',6173 => 'ሞ',6174 => 'ሟ',6175 => 'ᎀ',6176 => 'ᎁ',6177 => 'ᎂ',6178 => 'ᎃ',6179 => 'ⶁ',6180 => 'ሠ',6181 => 'ሡ',6182 => 'ሢ',6183 => 'ሣ',6184 => 'ሤ',6185 => 'ሥ',6186 => 'ሦ',6187 => 'ሧ',6188 => 'ረ',6189 => 'ሩ',6190 => 'ሪ',6191 => 'ራ',6192 => 'ሬ',6193 => 'ር',6194 => 'ሮ',6195 => 'ሯ',6196 => 'ⶂ',6197 => 'ሰ',6198 => 'ሱ',6199 => 'ሲ',6200 => 'ሳ',6201 => 'ሴ',6202 => 'ስ',6203 => 'ሶ',6204 => 'ሷ',6205 => 'ⶃ',6206 => 'ꬁ',6207 => 'ꬂ',6208 => 'ꬃ',6209 => 'ꬄ',6210 => 'ꬅ',6211 => 'ꬆ',6212 => 'ሸ',6213 => 'ሹ',6214 => 'ሺ',6215 => 'ሻ',6216 => 'ሼ',6217 => 'ሽ',6218 => 'ሾ',6219 => 'ሿ',6220 => 'ⶄ',6221 => 'ቀ',6222 => 'ቁ',6223 => 'ቂ',6224 => 'ቃ',6225 => 'ቄ',6226 => 'ቅ',6227 => 'ቆ',6228 => 'ቇ',6229 => 'ቈ',6230 => 'ቊ',6231 => 'ቋ',6232 => 'ቌ',6233 => 'ቍ',6234 => 'ቐ',6235 => 'ቑ',6236 => 'ቒ',6237 => 'ቓ',6238 => 'ቔ',6239 => 'ቕ',6240 => 'ቖ',6241 => 'ቘ',6242 => 'ቚ',6243 => 'ቛ',6244 => 'ቜ',6245 => 'ቝ',6246 => 'በ',6247 => 'ቡ',6248 => 'ቢ',6249 => 'ባ',6250 => 'ቤ',6251 => 'ብ',6252 => 'ቦ',6253 => 'ቧ',6254 => 'ᎄ',6255 => 'ᎅ',6256 => 'ᎆ',6257 => 'ᎇ',6258 => 'ⶅ',6259 => 'ቨ',6260 => 'ቩ',6261 => 'ቪ',6262 => 'ቫ',6263 => 'ቬ',6264 => 'ቭ',6265 => 'ቮ',6266 => 'ቯ',6267 => 'ተ',6268 => 'ቱ',6269 => 'ቲ',6270 => 'ታ',6271 => 'ቴ',6272 => 'ት',6273 => 'ቶ',6274 => 'ቷ',6275 => 'ⶆ',6276 => 'ቸ',6277 => 'ቹ',6278 => 'ቺ',6279 => 'ቻ',6280 => 'ቼ',6281 => 'ች',6282 => 'ቾ',6283 => 'ቿ',6284 => 'ⶇ',6285 => 'ኀ',6286 => 'ኁ',6287 => 'ኂ',6288 => 'ኃ',6289 => 'ኄ',6290 => 'ኅ',6291 => 'ኆ',6292 => 'ኇ',6293 => 'ኈ',6294 => 'ኊ',6295 => 'ኋ',6296 => 'ኌ',6297 => 'ኍ',6298 => 'ነ',6299 => 'ኑ',6300 => 'ኒ',6301 => 'ና',6302 => 'ኔ',6303 => 'ን',6304 => 'ኖ',6305 => 'ኗ',6306 => 'ⶈ',6307 => 'ኘ',6308 => 'ኙ',6309 => 'ኚ',6310 => 'ኛ',6311 => 'ኜ',6312 => 'ኝ',6313 => 'ኞ',6314 => 'ኟ',6315 => 'ⶉ',6316 => 'አ',6317 => 'ኡ',6318 => 'ኢ',6319 => 'ኣ',6320 => 'ኤ',6321 => 'እ',6322 => 'ኦ',6323 => 'ኧ',6324 => 'ⶊ',6325 => 'ከ',6326 => 'ኩ',6327 => 'ኪ',6328 => 'ካ',6329 => 'ኬ',6330 => 'ክ',6331 => 'ኮ',6332 => 'ኯ',6333 => 'ኰ',6334 => 'ኲ',6335 => 'ኳ',6336 => 'ኴ',6337 => 'ኵ',6338 => 'ኸ',6339 => 'ኹ',6340 => 'ኺ',6341 => 'ኻ',6342 => 'ኼ',6343 => 'ኽ',6344 => 'ኾ',6345 => 'ዀ',6346 => 'ዂ',6347 => 'ዃ',6348 => 'ዄ',6349 => 'ዅ',6350 => 'ወ',6351 => 'ዉ',6352 => 'ዊ',6353 => 'ዋ',6354 => 'ዌ',6355 => 'ው',6356 => 'ዎ',6357 => 'ዏ',6358 => 'ዐ',6359 => 'ዑ',6360 => 'ዒ',6361 => 'ዓ',6362 => 'ዔ',6363 => 'ዕ',6364 => 'ዖ',6365 => 'ዘ',6366 => 'ዙ',6367 => 'ዚ',6368 => 'ዛ',6369 => 'ዜ',6370 => 'ዝ',6371 => 'ዞ',6372 => 'ዟ',6373 => 'ⶋ',6374 => 'ꬑ',6375 => 'ꬒ',6376 => 'ꬓ',6377 => 'ꬔ',6378 => 'ꬕ',6379 => 'ꬖ',6380 => 'ዠ',6381 => 'ዡ',6382 => 'ዢ',6383 => 'ዣ',6384 => 'ዤ',6385 => 'ዥ',6386 => 'ዦ',6387 => 'ዧ',6388 => 'የ',6389 => 'ዩ',6390 => 'ዪ',6391 => 'ያ',6392 => 'ዬ',6393 => 'ይ',6394 => 'ዮ',6395 => 'ዯ',6396 => 'ደ',6397 => 'ዱ',6398 => 'ዲ',6399 => 'ዳ',6400 => 'ዴ',6401 => 'ድ',6402 => 'ዶ',6403 => 'ዷ',6404 => 'ⶌ',6405 => 'ꬉ',6406 => 'ꬊ',6407 => 'ꬋ',6408 => 'ꬌ',6409 => 'ꬍ',6410 => 'ꬎ',6411 => 'ዸ',6412 => 'ዹ',6413 => 'ዺ',6414 => 'ዻ',6415 => 'ዼ',6416 => 'ዽ',6417 => 'ዾ',6418 => 'ዿ',6419 => 'ⶍ',6420 => 'ጀ',6421 => 'ጁ',6422 => 'ጂ',6423 => 'ጃ',6424 => 'ጄ',6425 => 'ጅ',6426 => 'ጆ',6427 => 'ጇ',6428 => 'ⶎ',6429 => 'ገ',6430 => 'ጉ',6431 => 'ጊ',6432 => 'ጋ',6433 => 'ጌ',6434 => 'ግ',6435 => 'ጎ',6436 => 'ጏ',6437 => 'ጐ',6438 => 'ጒ',6439 => 'ጓ',6440 => 'ጔ',6441 => 'ጕ',6442 => 'ጘ',6443 => 'ጙ',6444 => 'ጚ',6445 => 'ጛ',6446 => 'ጜ',6447 => 'ጝ',6448 => 'ጞ',6449 => 'ጟ',6450 => 'ⶓ',6451 => 'ⶔ',6452 => 'ⶕ',6453 => 'ⶖ',6454 => 'ጠ',6455 => 'ጡ',6456 => 'ጢ',6457 => 'ጣ',6458 => 'ጤ',6459 => 'ጥ',6460 => 'ጦ',6461 => 'ጧ',6462 => 'ⶏ',6463 => 'ጨ',6464 => 'ጩ',6465 => 'ጪ',6466 => 'ጫ',6467 => 'ጬ',6468 => 'ጭ',6469 => 'ጮ',6470 => 'ጯ',6471 => 'ⶐ',6472 => 'ꬠ',6473 => 'ꬡ',6474 => 'ꬢ',6475 => 'ꬣ',6476 => 'ꬤ',6477 => 'ꬥ',6478 => 'ꬦ',6479 => 'ጰ',6480 => 'ጱ',6481 => 'ጲ',6482 => 'ጳ',6483 => 'ጴ',6484 => 'ጵ',6485 => 'ጶ',6486 => 'ጷ',6487 => 'ⶑ',6488 => 'ጸ',6489 => 'ጹ',6490 => 'ጺ',6491 => 'ጻ',6492 => 'ጼ',6493 => 'ጽ',6494 => 'ጾ',6495 => 'ጿ',6496 => 'ꬨ',6497 => 'ꬩ',6498 => 'ꬪ',6499 => 'ꬫ',6500 => 'ꬬ',6501 => 'ꬭ',6502 => 'ꬮ',6503 => 'ፀ',6504 => 'ፁ',6505 => 'ፂ',6506 => 'ፃ',6507 => 'ፄ',6508 => 'ፅ',6509 => 'ፆ',6510 => 'ፇ',6511 => 'ፈ',6512 => 'ፉ',6513 => 'ፊ',6514 => 'ፋ',6515 => 'ፌ',6516 => 'ፍ',6517 => 'ፎ',6518 => 'ፏ',6519 => 'ᎈ',6520 => 'ᎉ',6521 => 'ᎊ',6522 => 'ᎋ',6523 => 'ፐ',6524 => 'ፑ',6525 => 'ፒ',6526 => 'ፓ',6527 => 'ፔ',6528 => 'ፕ',6529 => 'ፖ',6530 => 'ፗ',6531 => 'ᎌ',6532 => 'ᎍ',6533 => 'ᎎ',6534 => 'ᎏ',6535 => 'ⶒ',6536 => 'ፘ',6537 => 'ፙ',6538 => 'ፚ',6539 => 'ⶠ',6540 => 'ⶡ',6541 => 'ⶢ',6542 => 'ⶣ',6543 => 'ⶤ',6544 => 'ⶥ',6545 => 'ⶦ',6546 => 'ⶨ',6547 => 'ⶩ',6548 => 'ⶪ',6549 => 'ⶫ',6550 => 'ⶬ',6551 => 'ⶭ',6552 => 'ⶮ',6553 => 'ⶰ',6554 => 'ⶱ',6555 => 'ⶲ',6556 => 'ⶳ',6557 => 'ⶴ',6558 => 'ⶵ',6559 => 'ⶶ',6560 => 'ⶸ',6561 => 'ⶹ',6562 => 'ⶺ',6563 => 'ⶻ',6564 => 'ⶼ',6565 => 'ⶽ',6566 => 'ⶾ',6567 => 'ⷀ',6568 => 'ⷁ',6569 => 'ⷂ',6570 => 'ⷃ',6571 => 'ⷄ',6572 => 'ⷅ',6573 => 'ⷆ',6574 => 'ⷈ',6575 => 'ⷉ',6576 => 'ⷊ',6577 => 'ⷋ',6578 => 'ⷌ',6579 => 'ⷍ',6580 => 'ⷎ',6581 => 'ⷐ',6582 => 'ⷑ',6583 => 'ⷒ',6584 => 'ⷓ',6585 => 'ⷔ',6586 => 'ⷕ',6587 => 'ⷖ',6588 => 'ⷘ',6589 => 'ⷙ',6590 => 'ⷚ',6591 => 'ⷛ',6592 => 'ⷜ',6593 => 'ⷝ',6594 => 'ⷞ',6595 => 'ॐ',6596 => 'ॲ',6597 => 'ऄ',6598 => 'अ',6599 => 'आ',6600 => 'ॳ',6601 => 'ॴ',6602 => 'ॵ',6603 => 'ॶ',6604 => 'ॷ',6605 => 'इ',6606 => 'ई',6607 => 'उ',6608 => 'ऊ',6609 => 'ऋ',6610 => 'ॠ',6611 => 'ऌ',6612 => 'ॡ',6613 => 'ऍ',6614 => 'ऎ',6615 => 'ए',6616 => 'ऐ',6617 => 'ऑ',6618 => 'ऒ',6619 => 'ओ',6620 => 'औ',6621 => 'क',6622 => 'ख',6623 => 'ग',6624 => 'ॻ',6625 => 'घ',6626 => 'ङ',6627 => 'च',6628 => 'छ',6629 => 'ज',6630 => 'ॹ',6631 => 'ॼ',6632 => 'झ',6633 => 'ञ',6634 => 'ट',6635 => 'ठ',6636 => 'ड',6637 => 'ॾ',6638 => 'ढ',6639 => 'ण',6640 => 'त',6641 => 'थ',6642 => 'द',6643 => 'ध',6644 => 'न',6645 => 'प',6646 => 'फ',6647 => 'ब',6648 => 'ॿ',6649 => 'भ',6650 => 'म',6651 => 'य',6652 => 'ॺ',6653 => 'र',6654 => 'ल',6655 => 'ळ',6656 => 'व',6657 => 'श',6658 => 'ष',6659 => 'स',6660 => 'ह',6661 => 'ऽ',6662 => 'ॽ',6663 => 'ᳩ',6664 => 'ꣲ',6665 => 'ꣻ',6666 => 'অ',6667 => 'আ',6668 => 'ই',6669 => 'ঈ',6670 => 'উ',6671 => 'ঊ',6672 => 'ঋ',6673 => 'ৠ',6674 => 'ঌ',6675 => 'ৡ',6676 => 'এ',6677 => 'ঐ',6678 => 'ও',6679 => 'ঔ',6680 => 'ক',6681 => 'খ',6682 => 'গ',6683 => 'ঘ',6684 => 'ঙ',6685 => 'চ',6686 => 'ছ',6687 => 'জ',6688 => 'ঝ',6689 => 'ঞ',6690 => 'ট',6691 => 'ঠ',6692 => 'ড',6693 => 'ঢ',6694 => 'ণ',6695 => 'ত',6696 => 'থ',6697 => 'দ',6698 => 'ধ',6699 => 'ন',6700 => 'প',6701 => 'ফ',6702 => 'ব',6703 => 'ভ',6704 => 'ম',6705 => 'য',6706 => 'র',6707 => 'ৰ',6708 => 'ল',6709 => 'ৱ',6710 => 'শ',6711 => 'ষ',6712 => 'স',6713 => 'হ',6714 => 'ঽ',6715 => 'ੴ',6716 => 'ੳ',6717 => 'ਉ',6718 => 'ਊ',6719 => 'ਓ',6720 => 'ਅ',6721 => 'ਆ',6722 => 'ਐ',6723 => 'ਔ',6724 => 'ੲ',6725 => 'ਇ',6726 => 'ਈ',6727 => 'ਏ',6728 => 'ਸ',6729 => 'ਹ',6730 => 'ਕ',6731 => 'ਖ',6732 => 'ਗ',6733 => 'ਘ',6734 => 'ਙ',6735 => 'ਚ',6736 => 'ਛ',6737 => 'ਜ',6738 => 'ਝ',6739 => 'ਞ',6740 => 'ਟ',6741 => 'ਠ',6742 => 'ਡ',6743 => 'ਢ',6744 => 'ਣ',6745 => 'ਤ',6746 => 'ਥ',6747 => 'ਦ',6748 => 'ਧ',6749 => 'ਨ',6750 => 'ਪ',6751 => 'ਫ',6752 => 'ਬ',6753 => 'ਭ',6754 => 'ਮ',6755 => 'ਯ',6756 => 'ਰ',6757 => 'ਲ',6758 => 'ਵ',6759 => 'ੜ',6760 => 'ૐ',6761 => 'અ',6762 => 'આ',6763 => 'ઇ',6764 => 'ઈ',6765 => 'ઉ',6766 => 'ઊ',6767 => 'ઋ',6768 => 'ૠ',6769 => 'ઌ',6770 => 'ૡ',6771 => 'ઍ',6772 => 'એ',6773 => 'ઐ',6774 => 'ઑ',6775 => 'ઓ',6776 => 'ઔ',6777 => 'ક',6778 => 'ખ',6779 => 'ગ',6780 => 'ઘ',6781 => 'ઙ',6782 => 'ચ',6783 => 'છ',6784 => 'જ',6785 => 'ઝ',6786 => 'ઞ',6787 => 'ટ',6788 => 'ઠ',6789 => 'ડ',6790 => 'ઢ',6791 => 'ણ',6792 => 'ત',6793 => 'થ',6794 => 'દ',6795 => 'ધ',6796 => 'ન',6797 => 'પ',6798 => 'ફ',6799 => 'બ',6800 => 'ભ',6801 => 'મ',6802 => 'ય',6803 => 'ર',6804 => 'લ',6805 => 'વ',6806 => 'શ',6807 => 'ષ',6808 => 'સ',6809 => 'હ',6810 => 'ળ',6811 => 'ઽ',6812 => 'ଅ',6813 => 'ଆ',6814 => 'ଇ',6815 => 'ଈ',6816 => 'ଉ',6817 => 'ଊ',6818 => 'ଋ',6819 => 'ୠ',6820 => 'ଌ',6821 => 'ୡ',6822 => 'ଏ',6823 => 'ଐ',6824 => 'ଓ',6825 => 'ଔ',6826 => 'କ',6827 => 'ଖ',6828 => 'ଗ',6829 => 'ଘ',6830 => 'ଙ',6831 => 'ଚ',6832 => 'ଛ',6833 => 'ଜ',6834 => 'ଝ',6835 => 'ଞ',6836 => 'ଟ',6837 => 'ଠ',6838 => 'ଡ',6839 => 'ଢ',6840 => 'ଣ',6841 => 'ତ',6842 => 'ଥ',6843 => 'ଦ',6844 => 'ଧ',6845 => 'ନ',6846 => 'ପ',6847 => 'ଫ',6848 => 'ବ',6849 => 'ଭ',6850 => 'ମ',6851 => 'ଯ',6852 => 'ୟ',6853 => 'ର',6854 => 'ଲ',6855 => 'ଳ',6856 => 'ଵ',6857 => 'ୱ',6858 => 'ଶ',6859 => 'ଷ',6860 => 'ସ',6861 => 'ହ',6862 => 'ଽ',6863 => 'ௐ',6864 => 'அ',6865 => 'ஆ',6866 => 'இ',6867 => 'ஈ',6868 => 'உ',6869 => 'ஊ',6870 => 'எ',6871 => 'ஏ',6872 => 'ஐ',6873 => 'ஒ',6874 => 'ஓ',6875 => 'ஔ',6876 => 'ஃ',6877 => 'க',6878 => 'ங',6879 => 'ச',6880 => 'ஞ',6881 => 'ட',6882 => 'ண',6883 => 'த',6884 => 'ந',6885 => 'ப',6886 => 'ம',6887 => 'ய',6888 => 'ர',6889 => 'ல',6890 => 'வ',6891 => 'ழ',6892 => 'ள',6893 => 'ற',6894 => 'ன',6895 => 'ஜ',6896 => 'ஶ',6897 => 'ஷ',6898 => 'ஸ',6899 => 'ஹ',6900 => 'అ',6901 => 'ఆ',6902 => 'ఇ',6903 => 'ఈ',6904 => 'ఉ',6905 => 'ఊ',6906 => 'ఋ',6907 => 'ౠ',6908 => 'ఌ',6909 => 'ౡ',6910 => 'ఎ',6911 => 'ఏ',6912 => 'ఐ',6913 => 'ఒ',6914 => 'ఓ',6915 => 'ఔ',6916 => 'క',6917 => 'ఖ',6918 => 'గ',6919 => 'ఘ',6920 => 'ఙ',6921 => 'చ',6922 => 'ౘ',6923 => 'ఛ',6924 => 'జ',6925 => 'ౙ',6926 => 'ఝ',6927 => 'ఞ',6928 => 'ట',6929 => 'ఠ',6930 => 'డ',6931 => 'ఢ',6932 => 'ణ',6933 => 'త',6934 => 'థ',6935 => 'ద',6936 => 'ధ',6937 => 'న',6938 => 'ప',6939 => 'ఫ',6940 => 'బ',6941 => 'భ',6942 => 'మ',6943 => 'య',6944 => 'ర',6945 => 'ఱ',6946 => 'ల',6947 => 'వ',6948 => 'శ',6949 => 'ష',6950 => 'స',6951 => 'హ',6952 => 'ళ',6953 => 'ఽ',6954 => 'ಅ',6955 => 'ಆ',6956 => 'ಇ',6957 => 'ಈ',6958 => 'ಉ',6959 => 'ಊ',6960 => 'ಋ',6961 => 'ೠ',6962 => 'ಌ',6963 => 'ೡ',6964 => 'ಎ',6965 => 'ಏ',6966 => 'ಐ',6967 => 'ಒ',6968 => 'ಓ',6969 => 'ಔ',6970 => 'ಕ',6971 => 'ಖ',6972 => 'ಗ',6973 => 'ಘ',6974 => 'ಙ',6975 => 'ಚ',6976 => 'ಛ',6977 => 'ಜ',6978 => 'ಝ',6979 => 'ಞ',6980 => 'ಟ',6981 => 'ಠ',6982 => 'ಡ',6983 => 'ಢ',6984 => 'ಣ',6985 => 'ತ',6986 => 'ಥ',6987 => 'ದ',6988 => 'ಧ',6989 => 'ನ',6990 => 'ಪ',6991 => 'ಫ',6992 => 'ಬ',6993 => 'ಭ',6994 => 'ಮ',6995 => 'ಯ',6996 => 'ರ',6997 => 'ಱ',6998 => 'ಲ',6999 => 'ವ',7000 => 'ಶ',7001 => 'ಷ',7002 => 'ಸ',7003 => 'ಹ',7004 => 'ಳ',7005 => 'ೞ',7006 => 'ಽ',7007 => 'ೱ',7008 => 'ೲ',7009 => 'അ',7010 => 'ആ',7011 => 'ഇ',7012 => 'ഈ',7013 => 'ഉ',7014 => 'ഊ',7015 => 'ഋ',7016 => 'ൠ',7017 => 'ഌ',7018 => 'ൡ',7019 => 'എ',7020 => 'ഏ',7021 => 'ഐ',7022 => 'ഒ',7023 => 'ഓ',7024 => 'ഔ',7025 => 'ക',7026 => 'ഖ',7027 => 'ഗ',7028 => 'ഘ',7029 => 'ങ',7030 => 'ച',7031 => 'ഛ',7032 => 'ജ',7033 => 'ഝ',7034 => 'ഞ',7035 => 'ട',7036 => 'ഠ',7037 => 'ഡ',7038 => 'ഢ',7039 => 'ണ',7040 => 'ത',7041 => 'ഥ',7042 => 'ദ',7043 => 'ധ',7044 => 'ന',7045 => 'ഩ',7046 => 'പ',7047 => 'ഫ',7048 => 'ബ',7049 => 'ഭ',7050 => 'മ',7051 => 'യ',7052 => 'ര',7053 => 'ല',7054 => 'വ',7055 => 'ശ',7056 => 'ഷ',7057 => 'സ',7058 => 'ഹ',7059 => 'ള',7060 => 'ഴ',7061 => 'റ',7062 => 'ഺ',7063 => 'ഽ',7064 => 'අ',7065 => 'ආ',7066 => 'ඇ',7067 => 'ඈ',7068 => 'ඉ',7069 => 'ඊ',7070 => 'උ',7071 => 'ඌ',7072 => 'ඍ',7073 => 'ඎ',7074 => 'ඏ',7075 => 'ඐ',7076 => 'එ',7077 => 'ඒ',7078 => 'ඓ',7079 => 'ඔ',7080 => 'ඕ',7081 => 'ඖ',7082 => 'ක',7083 => 'ඛ',7084 => 'ග',7085 => 'ඝ',7086 => 'ඞ',7087 => 'ඟ',7088 => 'ච',7089 => 'ඡ',7090 => 'ජ',7091 => 'ඣ',7092 => 'ඤ',7093 => 'ඥ',7094 => 'ඦ',7095 => 'ට',7096 => 'ඨ',7097 => 'ඩ',7098 => 'ඪ',7099 => 'ණ',7100 => 'ඬ',7101 => 'ත',7102 => 'ථ',7103 => 'ද',7104 => 'ධ',7105 => 'න',7106 => 'ඳ',7107 => 'ප',7108 => 'ඵ',7109 => 'බ',7110 => 'භ',7111 => 'ම',7112 => 'ඹ',7113 => 'ය',7114 => 'ර',7115 => 'ල',7116 => 'ව',7117 => 'ශ',7118 => 'ෂ',7119 => 'ස',7120 => 'හ',7121 => 'ළ',7122 => 'ෆ',7123 => 'ꯀ',7124 => 'ꯁ',7125 => 'ꯂ',7126 => 'ꯃ',7127 => 'ꯄ',7128 => 'ꯅ',7129 => 'ꯆ',7130 => 'ꯇ',7131 => 'ꯈ',7132 => 'ꯉ',7133 => 'ꯊ',7134 => 'ꯋ',7135 => 'ꯌ',7136 => 'ꯍ',7137 => 'ꯎ',7138 => 'ꯏ',7139 => 'ꯐ',7140 => 'ꯑ',7141 => 'ꯒ',7142 => 'ꯓ',7143 => 'ꯔ',7144 => 'ꯕ',7145 => 'ꯖ',7146 => 'ꯗ',7147 => 'ꯘ',7148 => 'ꯙ',7149 => 'ꯚ',7150 => 'ꯛ',7151 => 'ꯜ',7152 => 'ꯝ',7153 => 'ꯞ',7154 => 'ꯟ',7155 => 'ꯠ',7156 => 'ꯡ',7157 => 'ꯢ',7158 => 'ꠀ',7159 => 'ꠁ',7160 => 'ꠃ',7161 => 'ꠄ',7162 => 'ꠅ',7163 => 'ꠇ',7164 => 'ꠈ',7165 => 'ꠉ',7166 => 'ꠊ',7167 => 'ꠌ',7168 => 'ꠍ',7169 => 'ꠎ',7170 => 'ꠏ',7171 => 'ꠐ',7172 => 'ꠑ',7173 => 'ꠒ',7174 => 'ꠓ',7175 => 'ꠔ',7176 => 'ꠕ',7177 => 'ꠖ',7178 => 'ꠗ',7179 => 'ꠘ',7180 => 'ꠙ',7181 => 'ꠚ',7182 => 'ꠛ',7183 => 'ꠜ',7184 => 'ꠝ',7185 => 'ꠞ',7186 => 'ꠟ',7187 => 'ꠠ',7188 => 'ꠡ',7189 => 'ꠢ',7190 => 'ꢂ',7191 => 'ꢃ',7192 => 'ꢄ',7193 => 'ꢅ',7194 => 'ꢆ',7195 => 'ꢇ',7196 => 'ꢈ',7197 => 'ꢉ',7198 => 'ꢊ',7199 => 'ꢋ',7200 => 'ꢌ',7201 => 'ꢍ',7202 => 'ꢎ',7203 => 'ꢏ',7204 => 'ꢐ',7205 => 'ꢑ',7206 => 'ꢒ',7207 => 'ꢓ',7208 => 'ꢔ',7209 => 'ꢕ',7210 => 'ꢖ',7211 => 'ꢗ',7212 => 'ꢘ',7213 => 'ꢙ',7214 => 'ꢚ',7215 => 'ꢛ',7216 => 'ꢜ',7217 => 'ꢝ',7218 => 'ꢞ',7219 => 'ꢟ',7220 => 'ꢠ',7221 => 'ꢡ',7222 => 'ꢢ',7223 => 'ꢣ',7224 => 'ꢤ',7225 => 'ꢥ',7226 => 'ꢦ',7227 => 'ꢧ',7228 => 'ꢨ',7229 => 'ꢩ',7230 => 'ꢪ',7231 => 'ꢫ',7232 => 'ꢬ',7233 => 'ꢭ',7234 => 'ꢮ',7235 => 'ꢯ',7236 => 'ꢰ',7237 => 'ꢱ',7238 => 'ꢲ',7239 => 'ꢳ',7240 => '𑂃',7241 => '𑂄',7242 => '𑂅',7243 => '𑂆',7244 => '𑂇',7245 => '𑂈',7246 => '𑂉',7247 => '𑂊',7248 => '𑂋',7249 => '𑂌',7250 => '𑂍',7251 => '𑂎',7252 => '𑂏',7253 => '𑂐',7254 => '𑂑',7255 => '𑂒',7256 => '𑂓',7257 => '𑂔',7258 => '𑂕',7259 => '𑂖',7260 => '𑂗',7261 => '𑂘',7262 => '𑂙',7263 => '𑂛',7264 => '𑂝',7265 => '𑂞',7266 => '𑂟',7267 => '𑂠',7268 => '𑂡',7269 => '𑂢',7270 => '𑂣',7271 => '𑂤',7272 => '𑂥',7273 => '𑂦',7274 => '𑂧',7275 => '𑂨',7276 => '𑂩',7277 => '𑂪',7278 => '𑂬',7279 => '𑂭',7280 => '𑂮',7281 => '𑂯',7282 => 'ᮃ',7283 => 'ᮄ',7284 => 'ᮅ',7285 => 'ᮆ',7286 => 'ᮇ',7287 => 'ᮈ',7288 => 'ᮉ',7289 => 'ᮊ',7290 => 'ᮮ',7291 => 'ᮋ',7292 => 'ᮌ',7293 => 'ᮍ',7294 => 'ᮎ',7295 => 'ᮏ',7296 => 'ᮐ',7297 => 'ᮑ',7298 => 'ᮒ',7299 => 'ᮓ',7300 => 'ᮔ',7301 => 'ᮕ',7302 => 'ᮖ',7303 => 'ᮗ',7304 => 'ᮘ',7305 => 'ᮙ',7306 => 'ᮚ',7307 => 'ᮛ',7308 => 'ᮜ',7309 => 'ᮝ',7310 => 'ᮞ',7311 => 'ᮟ',7312 => 'ᮯ',7313 => 'ᮠ',7314 => '𑀅',7315 => '𑀆',7316 => '𑀇',7317 => '𑀈',7318 => '𑀉',7319 => '𑀊',7320 => '𑀋',7321 => '𑀌',7322 => '𑀍',7323 => '𑀎',7324 => '𑀏',7325 => '𑀐',7326 => '𑀑',7327 => '𑀒',7328 => '𑀓',7329 => '𑀔',7330 => '𑀕',7331 => '𑀖',7332 => '𑀗',7333 => '𑀘',7334 => '𑀙',7335 => '𑀚',7336 => '𑀛',7337 => '𑀜',7338 => '𑀝',7339 => '𑀞',7340 => '𑀟',7341 => '𑀠',7342 => '𑀡',7343 => '𑀢',7344 => '𑀣',7345 => '𑀤',7346 => '𑀥',7347 => '𑀦',7348 => '𑀧',7349 => '𑀨',7350 => '𑀩',7351 => '𑀪',7352 => '𑀫',7353 => '𑀬',7354 => '𑀭',7355 => '𑀮',7356 => '𑀯',7357 => '𑀰',7358 => '𑀱',7359 => '𑀲',7360 => '𑀳',7361 => '𑀃',7362 => '𑀄',7363 => '𑀴',7364 => '𑀵',7365 => '𑀶',7366 => '𑀷',7367 => '𐨀',7368 => '𐨐',7369 => '𐨑',7370 => '𐨒',7371 => '𐨓',7372 => '𐨕',7373 => '𐨖',7374 => '𐨗',7375 => '𐨙',7376 => '𐨚',7377 => '𐨛',7378 => '𐨜',7379 => '𐨝',7380 => '𐨞',7381 => '𐨟',7382 => '𐨠',7383 => '𐨡',7384 => '𐨢',7385 => '𐨣',7386 => '𐨤',7387 => '𐨥',7388 => '𐨦',7389 => '𐨧',7390 => '𐨨',7391 => '𐨩',7392 => '𐨪',7393 => '𐨫',7394 => '𐨬',7395 => '𐨭',7396 => '𐨮',7397 => '𐨯',7398 => '𐨰',7399 => '𐨱',7400 => '𐨲',7401 => '𐨳',7402 => 'ก',7403 => 'ข',7404 => 'ฃ',7405 => 'ค',7406 => 'ฅ',7407 => 'ฆ',7408 => 'ง',7409 => 'จ',7410 => 'ฉ',7411 => 'ช',7412 => 'ซ',7413 => 'ฌ',7414 => 'ญ',7415 => 'ฎ',7416 => 'ฏ',7417 => 'ฐ',7418 => 'ฑ',7419 => 'ฒ',7420 => 'ณ',7421 => 'ด',7422 => 'ต',7423 => 'ถ',7424 => 'ท',7425 => 'ธ',7426 => 'น',7427 => 'บ',7428 => 'ป',7429 => 'ผ',7430 => 'ฝ',7431 => 'พ',7432 => 'ฟ',7433 => 'ภ',7434 => 'ม',7435 => 'ย',7436 => 'ร',7437 => 'ฤ',7438 => 'ล',7439 => 'ฦ',7440 => 'ว',7441 => 'ศ',7442 => 'ษ',7443 => 'ส',7444 => 'ห',7445 => 'ฬ',7446 => 'อ',7447 => 'ฮ',7448 => 'ฯ',7449 => 'ะ',7450 => 'า',7451 => 'ำ',7452 => 'เ',7453 => 'แ',7454 => 'โ',7455 => 'ใ',7456 => 'ไ',7457 => 'ๅ',7458 => 'ກ',7459 => 'ຂ',7460 => 'ຄ',7461 => 'ງ',7462 => 'ຈ',7463 => 'ສ',7464 => 'ຊ',7465 => 'ຍ',7466 => 'ດ',7467 => 'ຕ',7468 => 'ຖ',7469 => 'ທ',7470 => 'ນ',7471 => 'ບ',7472 => 'ປ',7473 => 'ຜ',7474 => 'ຝ',7475 => 'ພ',7476 => 'ຟ',7477 => 'ມ',7478 => 'ຢ',7479 => 'ຣ',7480 => 'ລ',7481 => 'ວ',7482 => 'ຫ',7483 => 'ອ',7484 => 'ຮ',7485 => 'ຯ',7486 => 'ະ',7487 => 'າ',7488 => 'ຳ',7489 => 'ຽ',7490 => 'ເ',7491 => 'ແ',7492 => 'ໂ',7493 => 'ໃ',7494 => 'ໄ',7495 => 'ꪀ',7496 => 'ꪁ',7497 => 'ꪂ',7498 => 'ꪃ',7499 => 'ꪄ',7500 => 'ꪅ',7501 => 'ꪆ',7502 => 'ꪇ',7503 => 'ꪈ',7504 => 'ꪉ',7505 => 'ꪊ',7506 => 'ꪋ',7507 => 'ꪌ',7508 => 'ꪍ',7509 => 'ꪎ',7510 => 'ꪏ',7511 => 'ꪐ',7512 => 'ꪑ',7513 => 'ꪒ',7514 => 'ꪓ',7515 => 'ꪔ',7516 => 'ꪕ',7517 => 'ꪖ',7518 => 'ꪗ',7519 => 'ꪘ',7520 => 'ꪙ',7521 => 'ꪚ',7522 => 'ꪛ',7523 => 'ꪜ',7524 => 'ꪝ',7525 => 'ꪞ',7526 => 'ꪟ',7527 => 'ꪠ',7528 => 'ꪡ',7529 => 'ꪢ',7530 => 'ꪣ',7531 => 'ꪤ',7532 => 'ꪥ',7533 => 'ꪦ',7534 => 'ꪧ',7535 => 'ꪨ',7536 => 'ꪩ',7537 => 'ꪪ',7538 => 'ꪫ',7539 => 'ꪬ',7540 => 'ꪭ',7541 => 'ꪮ',7542 => 'ꪯ',7543 => 'ꪱ',7544 => 'ꪵ',7545 => 'ꪶ',7546 => 'ꪹ',7547 => 'ꪺ',7548 => 'ꪻ',7549 => 'ꪼ',7550 => 'ꪽ',7551 => 'ꫀ',7552 => 'ꫂ',7553 => 'ꫛ',7554 => 'ꫜ',7555 => 'ཀ',7556 => 'ཫ',7557 => 'ཁ',7558 => 'ག',7559 => 'ང',7560 => 'ཅ',7561 => 'ཆ',7562 => 'ཇ',7563 => 'ཉ',7564 => 'ཊ',7565 => 'ཋ',7566 => 'ཌ',7567 => 'ཎ',7568 => 'ཏ',7569 => 'ཐ',7570 => 'ད',7571 => 'ན',7572 => 'པ',7573 => 'ཕ',7574 => 'བ',7575 => 'མ',7576 => 'ཙ',7577 => 'ཚ',7578 => 'ཛ',7579 => 'ཝ',7580 => 'ཞ',7581 => 'ཟ',7582 => 'འ',7583 => 'ཡ',7584 => 'ར',7585 => 'ཬ',7586 => 'ལ',7587 => 'ཤ',7588 => 'ཥ',7589 => 'ས',7590 => 'ཧ',7591 => 'ཨ',7592 => 'ྈ',7593 => 'ྉ',7594 => 'ྌ',7595 => 'ྊ',7596 => 'ྋ',7597 => 'ᰀ',7598 => 'ᰁ',7599 => 'ᰂ',7600 => 'ᰃ',7601 => 'ᰄ',7602 => 'ᰅ',7603 => 'ᰆ',7604 => 'ᰇ',7605 => 'ᰈ',7606 => 'ᰉ',7607 => 'ᱍ',7608 => 'ᱎ',7609 => 'ᱏ',7610 => 'ᰊ',7611 => 'ᰋ',7612 => 'ᰌ',7613 => 'ᰍ',7614 => 'ᰎ',7615 => 'ᰏ',7616 => 'ᰐ',7617 => 'ᰑ',7618 => 'ᰒ',7619 => 'ᰓ',7620 => 'ᰔ',7621 => 'ᰕ',7622 => 'ᰖ',7623 => 'ᰗ',7624 => 'ᰘ',7625 => 'ᰙ',7626 => 'ᰚ',7627 => 'ᰛ',7628 => 'ᰜ',7629 => 'ᰝ',7630 => 'ᰞ',7631 => 'ᰟ',7632 => 'ᰠ',7633 => 'ᰡ',7634 => 'ᰢ',7635 => 'ᰣ',7636 => 'ꡀ',7637 => 'ꡁ',7638 => 'ꡂ',7639 => 'ꡃ',7640 => 'ꡄ',7641 => 'ꡅ',7642 => 'ꡆ',7643 => 'ꡇ',7644 => 'ꡩ',7645 => 'ꡪ',7646 => 'ꡫ',7647 => 'ꡬ',7648 => 'ꡈ',7649 => 'ꡉ',7650 => 'ꡊ',7651 => 'ꡋ',7652 => 'ꡌ',7653 => 'ꡍ',7654 => 'ꡎ',7655 => 'ꡏ',7656 => 'ꡐ',7657 => 'ꡑ',7658 => 'ꡒ',7659 => 'ꡓ',7660 => 'ꡧ',7661 => 'ꡔ',7662 => 'ꡕ',7663 => 'ꡖ',7664 => 'ꡗ',7665 => 'ꡨ',7666 => 'ꡭ',7667 => 'ꡘ',7668 => 'ꡱ',7669 => 'ꡲ',7670 => 'ꡙ',7671 => 'ꡚ',7672 => 'ꡮ',7673 => 'ꡛ',7674 => 'ꡜ',7675 => 'ꡯ',7676 => 'ꡰ',7677 => 'ꡝ',7678 => 'ꡢ',7679 => 'ꡣ',7680 => 'ꡤ',7681 => 'ꡥ',7682 => 'ꡞ',7683 => 'ꡟ',7684 => 'ꡠ',7685 => 'ꡡ',7686 => 'ꡦ',7687 => 'ꡳ',7688 => 'ᤀ',7689 => 'ᤁ',7690 => 'ᤂ',7691 => 'ᤃ',7692 => 'ᤄ',7693 => 'ᤅ',7694 => 'ᤆ',7695 => 'ᤇ',7696 => 'ᤈ',7697 => 'ᤉ',7698 => 'ᤊ',7699 => 'ᤋ',7700 => 'ᤌ',7701 => 'ᤍ',7702 => 'ᤎ',7703 => 'ᤏ',7704 => 'ᤐ',7705 => 'ᤑ',7706 => 'ᤒ',7707 => 'ᤓ',7708 => 'ᤔ',7709 => 'ᤕ',7710 => 'ᤖ',7711 => 'ᤗ',7712 => 'ᤘ',7713 => 'ᤙ',7714 => 'ᤚ',7715 => 'ᤛ',7716 => 'ᤜ',7717 => 'ᜀ',7718 => 'ᜁ',7719 => 'ᜂ',7720 => 'ᜃ',7721 => 'ᜄ',7722 => 'ᜅ',7723 => 'ᜆ',7724 => 'ᜇ',7725 => 'ᜈ',7726 => 'ᜉ',7727 => 'ᜊ',7728 => 'ᜋ',7729 => 'ᜌ',7730 => 'ᜎ',7731 => 'ᜏ',7732 => 'ᜐ',7733 => 'ᜑ',7734 => 'ᜠ',7735 => 'ᜡ',7736 => 'ᜢ',7737 => 'ᜣ',7738 => 'ᜤ',7739 => 'ᜥ',7740 => 'ᜦ',7741 => 'ᜧ',7742 => 'ᜨ',7743 => 'ᜩ',7744 => 'ᜪ',7745 => 'ᜫ',7746 => 'ᜬ',7747 => 'ᜭ',7748 => 'ᜮ',7749 => 'ᜯ',7750 => 'ᜰ',7751 => 'ᜱ',7752 => 'ᝀ',7753 => 'ᝁ',7754 => 'ᝂ',7755 => 'ᝃ',7756 => 'ᝄ',7757 => 'ᝅ',7758 => 'ᝆ',7759 => 'ᝇ',7760 => 'ᝈ',7761 => 'ᝉ',7762 => 'ᝊ',7763 => 'ᝋ',7764 => 'ᝌ',7765 => 'ᝍ',7766 => 'ᝎ',7767 => 'ᝏ',7768 => 'ᝐ',7769 => 'ᝑ',7770 => 'ᝠ',7771 => 'ᝡ',7772 => 'ᝢ',7773 => 'ᝣ',7774 => 'ᝤ',7775 => 'ᝥ',7776 => 'ᝦ',7777 => 'ᝧ',7778 => 'ᝨ',7779 => 'ᝩ',7780 => 'ᝪ',7781 => 'ᝫ',7782 => 'ᝬ',7783 => 'ᝮ',7784 => 'ᝯ',7785 => 'ᝰ',7786 => 'ᨀ',7787 => 'ᨁ',7788 => 'ᨂ',7789 => 'ᨃ',7790 => 'ᨄ',7791 => 'ᨅ',7792 => 'ᨆ',7793 => 'ᨇ',7794 => 'ᨈ',7795 => 'ᨉ',7796 => 'ᨊ',7797 => 'ᨋ',7798 => 'ᨌ',7799 => 'ᨍ',7800 => 'ᨎ',7801 => 'ᨏ',7802 => 'ᨐ',7803 => 'ᨑ',7804 => 'ᨒ',7805 => 'ᨓ',7806 => 'ᨔ',7807 => 'ᨕ',7808 => 'ᨖ',7809 => 'ᯀ',7810 => 'ᯂ',7811 => 'ᯅ',7812 => 'ᯇ',7813 => 'ᯉ',7814 => 'ᯋ',7815 => 'ᯎ',7816 => 'ᯐ',7817 => 'ᯑ',7818 => 'ᯒ',7819 => 'ᯔ',7820 => 'ᯖ',7821 => 'ᯘ',7822 => 'ᯛ',7823 => 'ᯝ',7824 => 'ᯞ',7825 => 'ᯠ',7826 => 'ᯡ',7827 => 'ᯢ',7828 => 'ᯣ',7829 => 'ᯤ',7830 => 'ᯥ',7831 => 'ꤰ',7832 => 'ꤱ',7833 => 'ꤲ',7834 => 'ꤳ',7835 => 'ꤴ',7836 => 'ꤵ',7837 => 'ꤶ',7838 => 'ꤷ',7839 => 'ꤸ',7840 => 'ꤹ',7841 => 'ꤺ',7842 => 'ꤻ',7843 => 'ꤼ',7844 => 'ꤽ',7845 => 'ꤾ',7846 => 'ꤿ',7847 => 'ꥀ',7848 => 'ꥁ',7849 => 'ꥂ',7850 => 'ꥃ',7851 => 'ꥄ',7852 => 'ꥅ',7853 => 'ꥆ',7854 => 'ꤊ',7855 => 'ꤋ',7856 => 'ꤌ',7857 => 'ꤍ',7858 => 'ꤎ',7859 => 'ꤏ',7860 => 'ꤐ',7861 => 'ꤑ',7862 => 'ꤒ',7863 => 'ꤓ',7864 => 'ꤔ',7865 => 'ꤕ',7866 => 'ꤖ',7867 => 'ꤗ',7868 => 'ꤘ',7869 => 'ꤙ',7870 => 'ꤚ',7871 => 'ꤛ',7872 => 'ꤜ',7873 => 'ꤝ',7874 => 'ꤞ',7875 => 'ꤟ',7876 => 'ꤠ',7877 => 'ꤡ',7878 => 'ꤢ',7879 => 'ꤣ',7880 => 'ꤤ',7881 => 'ꤥ',7882 => 'က',7883 => 'ၵ',7884 => 'ခ',7885 => 'ၶ',7886 => 'ဂ',7887 => 'ၷ',7888 => 'ꩠ',7889 => 'ဃ',7890 => 'င',7891 => 'ၚ',7892 => 'စ',7893 => 'ၸ',7894 => 'ꩡ',7895 => 'ဆ',7896 => 'ꩢ',7897 => 'ဇ',7898 => 'ꩣ',7899 => 'ၹ',7900 => 'ꩲ',7901 => 'ဈ',7902 => 'ၛ',7903 => 'ꩤ',7904 => 'ၡ',7905 => 'ဉ',7906 => 'ၺ',7907 => 'ꩥ',7908 => 'ည',7909 => 'ဋ',7910 => 'ꩦ',7911 => 'ဌ',7912 => 'ꩧ',7913 => 'ဍ',7914 => 'ꩨ',7915 => 'ဎ',7916 => 'ꩩ',7917 => 'ဏ',7918 => 'ၮ',7919 => 'တ',7920 => 'ထ',7921 => 'ဒ',7922 => 'ၻ',7923 => 'ဓ',7924 => 'ꩪ',7925 => 'န',7926 => 'ၼ',7927 => 'ꩫ',7928 => 'ပ',7929 => 'ဖ',7930 => 'ၽ',7931 => 'ၾ',7932 => 'ꩯ',7933 => 'ႎ',7934 => 'ဗ',7935 => 'ၿ',7936 => 'ဘ',7937 => 'မ',7938 => 'ယ',7939 => 'ရ',7940 => 'ꩳ',7941 => 'ꩺ',7942 => 'လ',7943 => 'ဝ',7944 => 'ႀ',7945 => 'ၐ',7946 => 'ၑ',7947 => 'ၥ',7948 => 'သ',7949 => 'ꩬ',7950 => 'ဟ',7951 => 'ႁ',7952 => 'ꩭ',7953 => 'ꩮ',7954 => 'ꩱ',7955 => 'ဠ',7956 => 'ၜ',7957 => 'ၝ',7958 => 'ၯ',7959 => 'ၰ',7960 => 'ၦ',7961 => 'အ',7962 => 'ဢ',7963 => 'ဣ',7964 => 'ဤ',7965 => 'ဥ',7966 => 'ဦ',7967 => 'ၒ',7968 => 'ၓ',7969 => 'ၔ',7970 => 'ၕ',7971 => 'ဧ',7972 => 'ဨ',7973 => 'ဩ',7974 => 'ဪ',7975 => 'ꩴ',7976 => 'ꩵ',7977 => 'ꩶ',7978 => 'ក',7979 => 'ខ',7980 => 'គ',7981 => 'ឃ',7982 => 'ង',7983 => 'ច',7984 => 'ឆ',7985 => 'ជ',7986 => 'ឈ',7987 => 'ញ',7988 => 'ដ',7989 => 'ឋ',7990 => 'ឌ',7991 => 'ឍ',7992 => 'ណ',7993 => 'ត',7994 => 'ថ',7995 => 'ទ',7996 => 'ធ',7997 => 'ន',7998 => 'ប',7999 => 'ផ',8000 => 'ព',8001 => 'ភ',8002 => 'ម',8003 => 'យ',8004 => 'រ',8005 => 'ល',8006 => 'វ',8007 => 'ឝ',8008 => 'ឞ',8009 => 'ស',8010 => 'ហ',8011 => 'ឡ',8012 => 'អ',8013 => 'ៜ',8014 => 'ឣ',8015 => 'ឤ',8016 => 'ឥ',8017 => 'ឦ',8018 => 'ឧ',8019 => 'ឨ',8020 => 'ឩ',8021 => 'ឪ',8022 => 'ឫ',8023 => 'ឬ',8024 => 'ឭ',8025 => 'ឮ',8026 => 'ឯ',8027 => 'ឰ',8028 => 'ឱ',8029 => 'ឲ',8030 => 'ឳ',8031 => 'ᥐ',8032 => 'ᥑ',8033 => 'ᥒ',8034 => 'ᥓ',8035 => 'ᥔ',8036 => 'ᥕ',8037 => 'ᥖ',8038 => 'ᥗ',8039 => 'ᥘ',8040 => 'ᥙ',8041 => 'ᥚ',8042 => 'ᥛ',8043 => 'ᥜ',8044 => 'ᥝ',8045 => 'ᥞ',8046 => 'ᥟ',8047 => 'ᥠ',8048 => 'ᥡ',8049 => 'ᥢ',8050 => 'ᥣ',8051 => 'ᥤ',8052 => 'ᥥ',8053 => 'ᥦ',8054 => 'ᥧ',8055 => 'ᥨ',8056 => 'ᥩ',8057 => 'ᥪ',8058 => 'ᥫ',8059 => 'ᥬ',8060 => 'ᥭ',8061 => 'ᥰ',8062 => 'ᥱ',8063 => 'ᥲ',8064 => 'ᥳ',8065 => 'ᥴ',8066 => 'ᦀ',8067 => 'ᦁ',8068 => 'ᦂ',8069 => 'ᦃ',8070 => 'ᦄ',8071 => 'ᦅ',8072 => 'ᦆ',8073 => 'ᦇ',8074 => 'ᦈ',8075 => 'ᦉ',8076 => 'ᦊ',8077 => 'ᦋ',8078 => 'ᦌ',8079 => 'ᦍ',8080 => 'ᦎ',8081 => 'ᦏ',8082 => 'ᦐ',8083 => 'ᦑ',8084 => 'ᦒ',8085 => 'ᦓ',8086 => 'ᦔ',8087 => 'ᦕ',8088 => 'ᦖ',8089 => 'ᦗ',8090 => 'ᦘ',8091 => 'ᦙ',8092 => 'ᦚ',8093 => 'ᦛ',8094 => 'ᦜ',8095 => 'ᦝ',8096 => 'ᦞ',8097 => 'ᦟ',8098 => 'ᦠ',8099 => 'ᦡ',8100 => 'ᦢ',8101 => 'ᦣ',8102 => 'ᦤ',8103 => 'ᦥ',8104 => 'ᦦ',8105 => 'ᦧ',8106 => 'ᦨ',8107 => 'ᦩ',8108 => 'ᦪ',8109 => 'ᦫ',8110 => 'ᧁ',8111 => 'ᧂ',8112 => 'ᧃ',8113 => 'ᧄ',8114 => 'ᧅ',8115 => 'ᧆ',8116 => 'ᧇ',8117 => 'ᨠ',8118 => 'ᨡ',8119 => 'ᨢ',8120 => 'ᨣ',8121 => 'ᨤ',8122 => 'ᨥ',8123 => 'ᨦ',8124 => 'ᨧ',8125 => 'ᨨ',8126 => 'ᨩ',8127 => 'ᨪ',8128 => 'ᨫ',8129 => 'ᨬ',8130 => 'ᨭ',8131 => 'ᨮ',8132 => 'ᨯ',8133 => 'ᨰ',8134 => 'ᨱ',8135 => 'ᨲ',8136 => 'ᨳ',8137 => 'ᨴ',8138 => 'ᨵ',8139 => 'ᨶ',8140 => 'ᨷ',8141 => 'ᨸ',8142 => 'ᨹ',8143 => 'ᨺ',8144 => 'ᨻ',8145 => 'ᨼ',8146 => 'ᨽ',8147 => 'ᨾ',8148 => 'ᨿ',8149 => 'ᩀ',8150 => 'ᩁ',8151 => 'ᩂ',8152 => 'ᩃ',8153 => 'ᩄ',8154 => 'ᩅ',8155 => 'ᩆ',8156 => 'ᩇ',8157 => 'ᩈ',8158 => 'ᩉ',8159 => 'ᩊ',8160 => 'ᩋ',8161 => 'ᩌ',8162 => 'ᩓ',8163 => 'ᩍ',8164 => 'ᩎ',8165 => 'ᩏ',8166 => 'ᩐ',8167 => 'ᩑ',8168 => 'ᩒ',8169 => 'ꨀ',8170 => 'ꨁ',8171 => 'ꨂ',8172 => 'ꨃ',8173 => 'ꨄ',8174 => 'ꨅ',8175 => 'ꨆ',8176 => 'ꨇ',8177 => 'ꨈ',8178 => 'ꨉ',8179 => 'ꨊ',8180 => 'ꨋ',8181 => 'ꨌ',8182 => 'ꨍ',8183 => 'ꨎ',8184 => 'ꨏ',8185 => 'ꨐ',8186 => 'ꨑ',8187 => 'ꨒ',8188 => 'ꨓ',8189 => 'ꨔ',8190 => 'ꨕ',8191 => 'ꨖ',8192 => 'ꨗ',8193 => 'ꨘ',8194 => 'ꨙ',8195 => 'ꨚ',8196 => 'ꨛ',8197 => 'ꨜ',8198 => 'ꨝ',8199 => 'ꨞ',8200 => 'ꨟ',8201 => 'ꨠ',8202 => 'ꨡ',8203 => 'ꨢ',8204 => 'ꨣ',8205 => 'ꨤ',8206 => 'ꨥ',8207 => 'ꨦ',8208 => 'ꨧ',8209 => 'ꨨ',8210 => 'ꩀ',8211 => 'ꩁ',8212 => 'ꩂ',8213 => 'ꩄ',8214 => 'ꩅ',8215 => 'ꩆ',8216 => 'ꩇ',8217 => 'ꩈ',8218 => 'ꩉ',8219 => 'ꩊ',8220 => 'ꩋ',8221 => 'ᬅ',8222 => 'ᬆ',8223 => 'ᬇ',8224 => 'ᬈ',8225 => 'ᬉ',8226 => 'ᬊ',8227 => 'ᬋ',8228 => 'ᬌ',8229 => 'ᬍ',8230 => 'ᬎ',8231 => 'ᬏ',8232 => 'ᬐ',8233 => 'ᬑ',8234 => 'ᬒ',8235 => 'ᬓ',8236 => 'ᭅ',8237 => 'ᭆ',8238 => 'ᬔ',8239 => 'ᬕ',8240 => 'ᬖ',8241 => 'ᬗ',8242 => 'ᬘ',8243 => 'ᬙ',8244 => 'ᬚ',8245 => 'ᬛ',8246 => 'ᬜ',8247 => 'ᬝ',8248 => 'ᬞ',8249 => 'ᬟ',8250 => 'ᬠ',8251 => 'ᬡ',8252 => 'ᬢ',8253 => 'ᭇ',8254 => 'ᬣ',8255 => 'ᬤ',8256 => 'ᬥ',8257 => 'ᬦ',8258 => 'ᬧ',8259 => 'ᭈ',8260 => 'ᬨ',8261 => 'ᬩ',8262 => 'ᬪ',8263 => 'ᬫ',8264 => 'ᬬ',8265 => 'ᬭ',8266 => 'ᬮ',8267 => 'ᬯ',8268 => 'ᭉ',8269 => 'ᬰ',8270 => 'ᬱ',8271 => 'ᬲ',8272 => 'ᭊ',8273 => 'ᭋ',8274 => 'ᬳ',8275 => 'ꦄ',8276 => 'ꦅ',8277 => 'ꦆ',8278 => 'ꦇ',8279 => 'ꦈ',8280 => 'ꦉ',8281 => 'ꦊ',8282 => 'ꦋ',8283 => 'ꦌ',8284 => 'ꦍ',8285 => 'ꦎ',8286 => 'ꦏ',8287 => 'ꦐ',8288 => 'ꦑ',8289 => 'ꦒ',8290 => 'ꦓ',8291 => 'ꦔ',8292 => 'ꦕ',8293 => 'ꦖ',8294 => 'ꦗ',8295 => 'ꦘ',8296 => 'ꦙ',8297 => 'ꦚ',8298 => 'ꦛ',8299 => 'ꦜ',8300 => 'ꦝ',8301 => 'ꦞ',8302 => 'ꦟ',8303 => 'ꦠ',8304 => 'ꦡ',8305 => 'ꦢ',8306 => 'ꦣ',8307 => 'ꦤ',8308 => 'ꦥ',8309 => 'ꦦ',8310 => 'ꦧ',8311 => 'ꦨ',8312 => 'ꦩ',8313 => 'ꦪ',8314 => 'ꦫ',8315 => 'ꦭ',8316 => 'ꦮ',8317 => 'ꦯ',8318 => 'ꦰ',8319 => 'ꦱ',8320 => 'ꦲ',8321 => 'ᢀ',8322 => 'ᢁ',8323 => 'ᢂ',8324 => 'ᢃ',8325 => 'ᢄ',8326 => 'ᢅ',8327 => 'ᢆ',8328 => 'ᡃ',8329 => 'ᠠ',8330 => 'ᢇ',8331 => 'ᠡ',8332 => 'ᡄ',8333 => 'ᡝ',8334 => 'ᠢ',8335 => 'ᡅ',8336 => 'ᡞ',8337 => 'ᡳ',8338 => 'ᢈ',8339 => 'ᡟ',8340 => 'ᠣ',8341 => 'ᡆ',8342 => 'ᠤ',8343 => 'ᡇ',8344 => 'ᡡ',8345 => 'ᠥ',8346 => 'ᡈ',8347 => 'ᠦ',8348 => 'ᡉ',8349 => 'ᡠ',8350 => 'ᠧ',8351 => 'ᠨ',8352 => 'ᠩ',8353 => 'ᡊ',8354 => 'ᡢ',8355 => 'ᢊ',8356 => 'ᢛ',8357 => 'ᠪ',8358 => 'ᡋ',8359 => 'ᠫ',8360 => 'ᡌ',8361 => 'ᡦ',8362 => 'ᠬ',8363 => 'ᡍ',8364 => 'ᠭ',8365 => 'ᡎ',8366 => 'ᡤ',8367 => 'ᢚ',8368 => 'ᡥ',8369 => 'ᠮ',8370 => 'ᡏ',8371 => 'ᠯ',8372 => 'ᠰ',8373 => 'ᠱ',8374 => 'ᡧ',8375 => 'ᢜ',8376 => 'ᢝ',8377 => 'ᢢ',8378 => 'ᢤ',8379 => 'ᢥ',8380 => 'ᠲ',8381 => 'ᡐ',8382 => 'ᡨ',8383 => 'ᠳ',8384 => 'ᡑ',8385 => 'ᡩ',8386 => 'ᠴ',8387 => 'ᡒ',8388 => 'ᡱ',8389 => 'ᡜ',8390 => 'ᢋ',8391 => 'ᠵ',8392 => 'ᡓ',8393 => 'ᡪ',8394 => 'ᡷ',8395 => 'ᠶ',8396 => 'ᡕ',8397 => 'ᡲ',8398 => 'ᠷ',8399 => 'ᡵ',8400 => 'ᠸ',8401 => 'ᡖ',8402 => 'ᠹ',8403 => 'ᡫ',8404 => 'ᡶ',8405 => 'ᠺ',8406 => 'ᡗ',8407 => 'ᡣ',8408 => 'ᡴ',8409 => 'ᢉ',8410 => 'ᠻ',8411 => 'ᠼ',8412 => 'ᡔ',8413 => 'ᡮ',8414 => 'ᠽ',8415 => 'ᡯ',8416 => 'ᡘ',8417 => 'ᡬ',8418 => 'ᠾ',8419 => 'ᡙ',8420 => 'ᡭ',8421 => 'ᠿ',8422 => 'ᡀ',8423 => 'ᡁ',8424 => 'ᡂ',8425 => 'ᡚ',8426 => 'ᡛ',8427 => 'ᡰ',8428 => 'ᢌ',8429 => 'ᢞ',8430 => 'ᢍ',8431 => 'ᢎ',8432 => 'ᢟ',8433 => 'ᢏ',8434 => 'ᢐ',8435 => 'ᢘ',8436 => 'ᢠ',8437 => 'ᢑ',8438 => 'ᢡ',8439 => 'ᢒ',8440 => 'ᢓ',8441 => 'ᢨ',8442 => 'ᢔ',8443 => 'ᢣ',8444 => 'ᢕ',8445 => 'ᢙ',8446 => 'ᢖ',8447 => 'ᢗ',8448 => 'ᢦ',8449 => 'ᢧ',8450 => 'ᢪ',8451 => 'ᱚ',8452 => 'ᱛ',8453 => 'ᱜ',8454 => 'ᱝ',8455 => 'ᱞ',8456 => 'ᱟ',8457 => 'ᱠ',8458 => 'ᱡ',8459 => 'ᱢ',8460 => 'ᱣ',8461 => 'ᱤ',8462 => 'ᱥ',8463 => 'ᱦ',8464 => 'ᱧ',8465 => 'ᱨ',8466 => 'ᱩ',8467 => 'ᱪ',8468 => 'ᱫ',8469 => 'ᱬ',8470 => 'ᱭ',8471 => 'ᱮ',8472 => 'ᱯ',8473 => 'ᱰ',8474 => 'ᱱ',8475 => 'ᱲ',8476 => 'ᱳ',8477 => 'ᱴ',8478 => 'ᱵ',8479 => 'ᱶ',8480 => 'ᱷ',8481 => 'ᱸ',8482 => 'ᱹ',8483 => 'ᱺ',8484 => 'ᱻ',8485 => 'ᱼ',8486 => 'ᱽ',8487 => 'Ꭰ',8488 => 'Ꭱ',8489 => 'Ꭲ',8490 => 'Ꭳ',8491 => 'Ꭴ',8492 => 'Ꭵ',8493 => 'Ꭶ',8494 => 'Ꭷ',8495 => 'Ꭸ',8496 => 'Ꭹ',8497 => 'Ꭺ',8498 => 'Ꭻ',8499 => 'Ꭼ',8500 => 'Ꭽ',8501 => 'Ꭾ',8502 => 'Ꭿ',8503 => 'Ꮀ',8504 => 'Ꮁ',8505 => 'Ꮂ',8506 => 'Ꮃ',8507 => 'Ꮄ',8508 => 'Ꮅ',8509 => 'Ꮆ',8510 => 'Ꮇ',8511 => 'Ꮈ',8512 => 'Ꮉ',8513 => 'Ꮊ',8514 => 'Ꮋ',8515 => 'Ꮌ',8516 => 'Ꮍ',8517 => 'Ꮎ',8518 => 'Ꮏ',8519 => 'Ꮐ',8520 => 'Ꮑ',8521 => 'Ꮒ',8522 => 'Ꮓ',8523 => 'Ꮔ',8524 => 'Ꮕ',8525 => 'Ꮖ',8526 => 'Ꮗ',8527 => 'Ꮘ',8528 => 'Ꮙ',8529 => 'Ꮚ',8530 => 'Ꮛ',8531 => 'Ꮜ',8532 => 'Ꮝ',8533 => 'Ꮞ',8534 => 'Ꮟ',8535 => 'Ꮠ',8536 => 'Ꮡ',8537 => 'Ꮢ',8538 => 'Ꮣ',8539 => 'Ꮤ',8540 => 'Ꮥ',8541 => 'Ꮦ',8542 => 'Ꮧ',8543 => 'Ꮨ',8544 => 'Ꮩ',8545 => 'Ꮪ',8546 => 'Ꮫ',8547 => 'Ꮬ',8548 => 'Ꮭ',8549 => 'Ꮮ',8550 => 'Ꮯ',8551 => 'Ꮰ',8552 => 'Ꮱ',8553 => 'Ꮲ',8554 => 'Ꮳ',8555 => 'Ꮴ',8556 => 'Ꮵ',8557 => 'Ꮶ',8558 => 'Ꮷ',8559 => 'Ꮸ',8560 => 'Ꮹ',8561 => 'Ꮺ',8562 => 'Ꮻ',8563 => 'Ꮼ',8564 => 'Ꮽ',8565 => 'Ꮾ',8566 => 'Ꮿ',8567 => 'Ᏸ',8568 => 'Ᏹ',8569 => 'Ᏺ',8570 => 'Ᏻ',8571 => 'Ᏼ',8572 => 'ᐁ',8573 => 'ᐂ',8574 => 'ᐃ',8575 => 'ᐄ',8576 => 'ᐅ',8577 => 'ᐆ',8578 => 'ᐇ',8579 => 'ᐈ',8580 => 'ᐉ',8581 => 'ᐊ',8582 => 'ᐋ',8583 => 'ᐌ',8584 => 'ᐍ',8585 => 'ᐎ',8586 => 'ᐏ',8587 => 'ᐐ',8588 => 'ᐑ',8589 => 'ᐒ',8590 => 'ᐓ',8591 => 'ᐔ',8592 => 'ᐕ',8593 => 'ᐖ',8594 => 'ᐗ',8595 => 'ᐘ',8596 => 'ᐙ',8597 => 'ᐚ',8598 => 'ᐛ',8599 => 'ᐜ',8600 => 'ᐝ',8601 => 'ᐞ',8602 => 'ᐟ',8603 => 'ᐠ',8604 => 'ᐡ',8605 => 'ᐢ',8606 => 'ᐣ',8607 => 'ᐤ',8608 => 'ᐥ',8609 => 'ᐦ',8610 => 'ᐧ',8611 => 'ᐨ',8612 => 'ᐩ',8613 => 'ᐪ',8614 => 'ᐫ',8615 => 'ᐬ',8616 => 'ᐭ',8617 => 'ᐮ',8618 => 'ᐯ',8619 => 'ᐰ',8620 => 'ᐱ',8621 => 'ᐲ',8622 => 'ᐳ',8623 => 'ᐴ',8624 => 'ᐵ',8625 => 'ᐶ',8626 => 'ᐷ',8627 => 'ᐸ',8628 => 'ᐹ',8629 => 'ᐺ',8630 => 'ᐻ',8631 => 'ᐼ',8632 => 'ᐽ',8633 => 'ᐾ',8634 => 'ᐿ',8635 => 'ᑀ',8636 => 'ᑁ',8637 => 'ᑂ',8638 => 'ᑃ',8639 => 'ᑄ',8640 => 'ᑅ',8641 => 'ᑆ',8642 => 'ᑇ',8643 => 'ᑈ',8644 => 'ᑉ',8645 => 'ᑊ',8646 => 'ᑋ',8647 => 'ᑌ',8648 => 'ᑍ',8649 => 'ᑎ',8650 => 'ᑏ',8651 => 'ᑐ',8652 => 'ᑑ',8653 => 'ᑒ',8654 => 'ᑓ',8655 => 'ᑔ',8656 => 'ᑕ',8657 => 'ᑖ',8658 => 'ᑗ',8659 => 'ᑘ',8660 => 'ᑙ',8661 => 'ᑚ',8662 => 'ᑛ',8663 => 'ᑜ',8664 => 'ᑝ',8665 => 'ᑞ',8666 => 'ᑟ',8667 => 'ᑠ',8668 => 'ᑡ',8669 => 'ᑢ',8670 => 'ᑣ',8671 => 'ᑤ',8672 => 'ᑥ',8673 => 'ᑦ',8674 => 'ᑧ',8675 => 'ᑨ',8676 => 'ᑩ',8677 => 'ᑪ',8678 => 'ᑫ',8679 => 'ᑬ',8680 => 'ᑭ',8681 => 'ᑮ',8682 => 'ᑯ',8683 => 'ᑰ',8684 => 'ᑱ',8685 => 'ᑲ',8686 => 'ᑳ',8687 => 'ᑴ',8688 => 'ᑵ',8689 => 'ᑶ',8690 => 'ᑷ',8691 => 'ᑸ',8692 => 'ᑹ',8693 => 'ᑺ',8694 => 'ᑻ',8695 => 'ᑼ',8696 => 'ᑽ',8697 => 'ᑾ',8698 => 'ᑿ',8699 => 'ᒀ',8700 => 'ᒁ',8701 => 'ᒂ',8702 => 'ᒃ',8703 => 'ᒄ',8704 => 'ᒅ',8705 => 'ᒆ',8706 => 'ᒇ',8707 => 'ᒈ',8708 => 'ᒉ',8709 => 'ᒊ',8710 => 'ᒋ',8711 => 'ᒌ',8712 => 'ᒍ',8713 => 'ᒎ',8714 => 'ᒏ',8715 => 'ᒐ',8716 => 'ᒑ',8717 => 'ᒒ',8718 => 'ᒓ',8719 => 'ᒔ',8720 => 'ᒕ',8721 => 'ᒖ',8722 => 'ᒗ',8723 => 'ᒘ',8724 => 'ᒙ',8725 => 'ᒚ',8726 => 'ᒛ',8727 => 'ᒜ',8728 => 'ᒝ',8729 => 'ᒞ',8730 => 'ᒟ',8731 => 'ᒠ',8732 => 'ᒡ',8733 => 'ᒢ',8734 => 'ᒣ',8735 => 'ᒤ',8736 => 'ᒥ',8737 => 'ᒦ',8738 => 'ᒧ',8739 => 'ᒨ',8740 => 'ᒩ',8741 => 'ᒪ',8742 => 'ᒫ',8743 => 'ᒬ',8744 => 'ᒭ',8745 => 'ᒮ',8746 => 'ᒯ',8747 => 'ᒰ',8748 => 'ᒱ',8749 => 'ᒲ',8750 => 'ᒳ',8751 => 'ᒴ',8752 => 'ᒵ',8753 => 'ᒶ',8754 => 'ᒷ',8755 => 'ᒸ',8756 => 'ᒹ',8757 => 'ᒺ',8758 => 'ᒻ',8759 => 'ᒼ',8760 => 'ᒽ',8761 => 'ᒾ',8762 => 'ᒿ',8763 => 'ᓀ',8764 => 'ᓁ',8765 => 'ᓂ',8766 => 'ᓃ',8767 => 'ᓄ',8768 => 'ᓅ',8769 => 'ᓆ',8770 => 'ᓇ',8771 => 'ᓈ',8772 => 'ᓉ',8773 => 'ᓊ',8774 => 'ᓋ',8775 => 'ᓌ',8776 => 'ᓍ',8777 => 'ᓎ',8778 => 'ᓏ',8779 => 'ᓐ',8780 => 'ᓑ',8781 => 'ᓒ',8782 => 'ᓓ',8783 => 'ᓔ',8784 => 'ᓕ',8785 => 'ᓖ',8786 => 'ᓗ',8787 => 'ᓘ',8788 => 'ᓙ',8789 => 'ᓚ',8790 => 'ᓛ',8791 => 'ᓜ',8792 => 'ᓝ',8793 => 'ᓞ',8794 => 'ᓟ',8795 => 'ᓠ',8796 => 'ᓡ',8797 => 'ᓢ',8798 => 'ᓣ',8799 => 'ᓤ',8800 => 'ᓥ',8801 => 'ᓦ',8802 => 'ᓧ',8803 => 'ᓨ',8804 => 'ᓩ',8805 => 'ᓪ',8806 => 'ᓫ',8807 => 'ᓬ',8808 => 'ᓭ',8809 => 'ᓮ',8810 => 'ᓯ',8811 => 'ᓰ',8812 => 'ᓱ',8813 => 'ᓲ',8814 => 'ᓳ',8815 => 'ᓴ',8816 => 'ᓵ',8817 => 'ᓶ',8818 => 'ᓷ',8819 => 'ᓸ',8820 => 'ᓹ',8821 => 'ᓺ',8822 => 'ᓻ',8823 => 'ᓼ',8824 => 'ᓽ',8825 => 'ᓾ',8826 => 'ᓿ',8827 => 'ᔀ',8828 => 'ᔁ',8829 => 'ᔂ',8830 => 'ᔃ',8831 => 'ᔄ',8832 => 'ᔅ',8833 => 'ᔆ',8834 => 'ᔇ',8835 => 'ᔈ',8836 => 'ᔉ',8837 => 'ᔊ',8838 => 'ᔋ',8839 => 'ᔌ',8840 => 'ᔍ',8841 => 'ᔎ',8842 => 'ᔏ',8843 => 'ᔐ',8844 => 'ᔑ',8845 => 'ᔒ',8846 => 'ᔓ',8847 => 'ᔔ',8848 => 'ᔕ',8849 => 'ᔖ',8850 => 'ᔗ',8851 => 'ᔘ',8852 => 'ᔙ',8853 => 'ᔚ',8854 => 'ᔛ',8855 => 'ᔜ',8856 => 'ᔝ',8857 => 'ᔞ',8858 => 'ᔟ',8859 => 'ᔠ',8860 => 'ᔡ',8861 => 'ᔢ',8862 => 'ᔣ',8863 => 'ᔤ',8864 => 'ᔥ',8865 => 'ᔦ',8866 => 'ᔧ',8867 => 'ᔨ',8868 => 'ᔩ',8869 => 'ᔪ',8870 => 'ᔫ',8871 => 'ᔬ',8872 => 'ᔭ',8873 => 'ᔮ',8874 => 'ᔯ',8875 => 'ᔰ',8876 => 'ᔱ',8877 => 'ᔲ',8878 => 'ᔳ',8879 => 'ᔴ',8880 => 'ᔵ',8881 => 'ᔶ',8882 => 'ᔷ',8883 => 'ᔸ',8884 => 'ᔹ',8885 => 'ᔺ',8886 => 'ᔻ',8887 => 'ᔼ',8888 => 'ᔽ',8889 => 'ᔾ',8890 => 'ᔿ',8891 => 'ᕀ',8892 => 'ᕁ',8893 => 'ᕂ',8894 => 'ᕃ',8895 => 'ᕄ',8896 => 'ᕅ',8897 => 'ᕆ',8898 => 'ᕇ',8899 => 'ᕈ',8900 => 'ᕉ',8901 => 'ᕊ',8902 => 'ᕋ',8903 => 'ᕌ',8904 => 'ᕍ',8905 => 'ᕎ',8906 => 'ᕏ',8907 => 'ᕐ',8908 => 'ᕑ',8909 => 'ᕒ',8910 => 'ᕓ',8911 => 'ᕔ',8912 => 'ᕕ',8913 => 'ᕖ',8914 => 'ᕗ',8915 => 'ᕘ',8916 => 'ᕙ',8917 => 'ᕚ',8918 => 'ᕛ',8919 => 'ᕜ',8920 => 'ᕝ',8921 => 'ᕞ',8922 => 'ᕟ',8923 => 'ᕠ',8924 => 'ᕡ',8925 => 'ᕢ',8926 => 'ᕣ',8927 => 'ᕤ',8928 => 'ᕥ',8929 => 'ᕦ',8930 => 'ᕧ',8931 => 'ᕨ',8932 => 'ᕩ',8933 => 'ᕪ',8934 => 'ᕫ',8935 => 'ᕬ',8936 => 'ᕭ',8937 => 'ᕮ',8938 => 'ᕯ',8939 => 'ᕰ',8940 => 'ᕱ',8941 => 'ᕲ',8942 => 'ᕳ',8943 => 'ᕴ',8944 => 'ᕵ',8945 => 'ᕶ',8946 => 'ᕷ',8947 => 'ᕸ',8948 => 'ᕹ',8949 => 'ᕺ',8950 => 'ᕻ',8951 => 'ᕽ',8952 => 'ᙯ',8953 => 'ᕾ',8954 => 'ᕿ',8955 => 'ᖀ',8956 => 'ᖁ',8957 => 'ᖂ',8958 => 'ᖃ',8959 => 'ᖄ',8960 => 'ᖅ',8961 => 'ᖆ',8962 => 'ᖇ',8963 => 'ᖈ',8964 => 'ᖉ',8965 => 'ᖊ',8966 => 'ᖋ',8967 => 'ᖌ',8968 => 'ᖍ',8969 => 'ᙰ',8970 => 'ᖎ',8971 => 'ᖏ',8972 => 'ᖐ',8973 => 'ᖑ',8974 => 'ᖒ',8975 => 'ᖓ',8976 => 'ᖔ',8977 => 'ᖕ',8978 => 'ᙱ',8979 => 'ᙲ',8980 => 'ᙳ',8981 => 'ᙴ',8982 => 'ᙵ',8983 => 'ᙶ',8984 => 'ᖖ',8985 => 'ᖗ',8986 => 'ᖘ',8987 => 'ᖙ',8988 => 'ᖚ',8989 => 'ᖛ',8990 => 'ᖜ',8991 => 'ᖝ',8992 => 'ᖞ',8993 => 'ᖟ',8994 => 'ᖠ',8995 => 'ᖡ',8996 => 'ᖢ',8997 => 'ᖣ',8998 => 'ᖤ',8999 => 'ᖥ',9000 => 'ᖦ',9001 => 'ᕼ',9002 => 'ᖧ',9003 => 'ᖨ',9004 => 'ᖩ',9005 => 'ᖪ',9006 => 'ᖫ',9007 => 'ᖬ',9008 => 'ᖭ',9009 => 'ᖮ',9010 => 'ᖯ',9011 => 'ᖰ',9012 => 'ᖱ',9013 => 'ᖲ',9014 => 'ᖳ',9015 => 'ᖴ',9016 => 'ᖵ',9017 => 'ᖶ',9018 => 'ᖷ',9019 => 'ᖸ',9020 => 'ᖹ',9021 => 'ᖺ',9022 => 'ᖻ',9023 => 'ᖼ',9024 => 'ᖽ',9025 => 'ᖾ',9026 => 'ᖿ',9027 => 'ᗀ',9028 => 'ᗁ',9029 => 'ᗂ',9030 => 'ᗃ',9031 => 'ᗄ',9032 => 'ᗅ',9033 => 'ᗆ',9034 => 'ᗇ',9035 => 'ᗈ',9036 => 'ᗉ',9037 => 'ᗊ',9038 => 'ᗋ',9039 => 'ᗌ',9040 => 'ᗍ',9041 => 'ᗎ',9042 => 'ᗏ',9043 => 'ᗐ',9044 => 'ᗑ',9045 => 'ᗒ',9046 => 'ᗓ',9047 => 'ᗔ',9048 => 'ᗕ',9049 => 'ᗖ',9050 => 'ᗗ',9051 => 'ᗘ',9052 => 'ᗙ',9053 => 'ᗚ',9054 => 'ᗛ',9055 => 'ᗜ',9056 => 'ᗝ',9057 => 'ᗞ',9058 => 'ᗟ',9059 => 'ᗠ',9060 => 'ᗡ',9061 => 'ᗢ',9062 => 'ᗣ',9063 => 'ᗤ',9064 => 'ᗥ',9065 => 'ᗦ',9066 => 'ᗧ',9067 => 'ᗨ',9068 => 'ᗩ',9069 => 'ᗪ',9070 => 'ᗫ',9071 => 'ᗬ',9072 => 'ᗭ',9073 => 'ᗮ',9074 => 'ᗯ',9075 => 'ᗰ',9076 => 'ᗱ',9077 => 'ᗲ',9078 => 'ᗳ',9079 => 'ᗴ',9080 => 'ᗵ',9081 => 'ᗶ',9082 => 'ᗷ',9083 => 'ᗸ',9084 => 'ᗹ',9085 => 'ᗺ',9086 => 'ᗻ',9087 => 'ᗼ',9088 => 'ᗽ',9089 => 'ᗾ',9090 => 'ᗿ',9091 => 'ᘀ',9092 => 'ᘁ',9093 => 'ᘂ',9094 => 'ᘃ',9095 => 'ᘄ',9096 => 'ᘅ',9097 => 'ᘆ',9098 => 'ᘇ',9099 => 'ᘈ',9100 => 'ᘉ',9101 => 'ᘊ',9102 => 'ᘋ',9103 => 'ᘌ',9104 => 'ᘍ',9105 => 'ᘎ',9106 => 'ᘏ',9107 => 'ᘐ',9108 => 'ᘑ',9109 => 'ᘒ',9110 => 'ᘓ',9111 => 'ᘔ',9112 => 'ᘕ',9113 => 'ᘖ',9114 => 'ᘗ',9115 => 'ᘘ',9116 => 'ᘙ',9117 => 'ᘚ',9118 => 'ᘛ',9119 => 'ᘜ',9120 => 'ᘝ',9121 => 'ᘞ',9122 => 'ᘟ',9123 => 'ᘠ',9124 => 'ᘡ',9125 => 'ᘢ',9126 => 'ᘣ',9127 => 'ᘤ',9128 => 'ᘥ',9129 => 'ᘦ',9130 => 'ᘧ',9131 => 'ᘨ',9132 => 'ᘩ',9133 => 'ᘪ',9134 => 'ᘫ',9135 => 'ᘬ',9136 => 'ᘭ',9137 => 'ᘮ',9138 => 'ᘯ',9139 => 'ᘰ',9140 => 'ᘱ',9141 => 'ᘲ',9142 => 'ᘳ',9143 => 'ᘴ',9144 => 'ᘵ',9145 => 'ᘶ',9146 => 'ᘷ',9147 => 'ᘸ',9148 => 'ᘹ',9149 => 'ᘺ',9150 => 'ᘻ',9151 => 'ᘼ',9152 => 'ᘽ',9153 => 'ᘾ',9154 => 'ᘿ',9155 => 'ᙀ',9156 => 'ᙁ',9157 => 'ᙂ',9158 => 'ᙃ',9159 => 'ᙄ',9160 => 'ᙅ',9161 => 'ᙆ',9162 => 'ᙇ',9163 => 'ᙈ',9164 => 'ᙉ',9165 => 'ᙊ',9166 => 'ᙋ',9167 => 'ᙌ',9168 => 'ᙍ',9169 => 'ᙎ',9170 => 'ᙏ',9171 => 'ᙐ',9172 => 'ᙑ',9173 => 'ᙒ',9174 => 'ᙓ',9175 => 'ᙔ',9176 => 'ᙕ',9177 => 'ᙖ',9178 => 'ᙗ',9179 => 'ᙘ',9180 => 'ᙙ',9181 => 'ᙚ',9182 => 'ᙛ',9183 => 'ᙜ',9184 => 'ᙝ',9185 => 'ᙞ',9186 => 'ᙟ',9187 => 'ᙠ',9188 => 'ᙡ',9189 => 'ᙢ',9190 => 'ᙣ',9191 => 'ᙤ',9192 => 'ᙥ',9193 => 'ᙦ',9194 => 'ᙧ',9195 => 'ᙨ',9196 => 'ᙩ',9197 => 'ᙪ',9198 => 'ᙫ',9199 => 'ᙬ',9200 => 'ᙷ',9201 => 'ᙸ',9202 => 'ᙹ',9203 => 'ᙺ',9204 => 'ᙻ',9205 => 'ᙼ',9206 => 'ᙽ',9207 => 'ᙾ',9208 => 'ᙿ',9209 => 'ᢰ',9210 => 'ᢱ',9211 => 'ᢲ',9212 => 'ᢳ',9213 => 'ᢴ',9214 => 'ᢵ',9215 => 'ᢶ',9216 => 'ᢷ',9217 => 'ᢸ',9218 => 'ᢹ',9219 => 'ᢺ',9220 => 'ᢻ',9221 => 'ᢼ',9222 => 'ᢽ',9223 => 'ᢾ',9224 => 'ᢿ',9225 => 'ᣀ',9226 => 'ᣁ',9227 => 'ᣂ',9228 => 'ᣃ',9229 => 'ᣄ',9230 => 'ᣅ',9231 => 'ᣆ',9232 => 'ᣇ',9233 => 'ᣈ',9234 => 'ᣉ',9235 => 'ᣊ',9236 => 'ᣋ',9237 => 'ᣌ',9238 => 'ᣍ',9239 => 'ᣎ',9240 => 'ᣏ',9241 => 'ᣐ',9242 => 'ᣑ',9243 => 'ᣒ',9244 => 'ᣓ',9245 => 'ᣔ',9246 => 'ᣕ',9247 => 'ᣖ',9248 => 'ᣗ',9249 => 'ᣘ',9250 => 'ᣙ',9251 => 'ᣚ',9252 => 'ᣛ',9253 => 'ᣜ',9254 => 'ᣝ',9255 => 'ᣞ',9256 => 'ᣟ',9257 => 'ᣠ',9258 => 'ᣡ',9259 => 'ᣢ',9260 => 'ᣣ',9261 => 'ᣤ',9262 => 'ᣥ',9263 => 'ᣦ',9264 => 'ᣧ',9265 => 'ᣨ',9266 => 'ᣩ',9267 => 'ᣪ',9268 => 'ᣫ',9269 => 'ᣬ',9270 => 'ᣭ',9271 => 'ᣮ',9272 => 'ᣯ',9273 => 'ᣰ',9274 => 'ᣱ',9275 => 'ᣲ',9276 => 'ᣳ',9277 => 'ᣴ',9278 => 'ᣵ',9279 => 'ᚁ',9280 => 'ᚂ',9281 => 'ᚃ',9282 => 'ᚄ',9283 => 'ᚅ',9284 => 'ᚆ',9285 => 'ᚇ',9286 => 'ᚈ',9287 => 'ᚉ',9288 => 'ᚊ',9289 => 'ᚋ',9290 => 'ᚌ',9291 => 'ᚍ',9292 => 'ᚎ',9293 => 'ᚏ',9294 => 'ᚐ',9295 => 'ᚑ',9296 => 'ᚒ',9297 => 'ᚓ',9298 => 'ᚔ',9299 => 'ᚕ',9300 => 'ᚖ',9301 => 'ᚗ',9302 => 'ᚘ',9303 => 'ᚙ',9304 => 'ᚚ',9305 => 'ᚠ',9306 => 'ᚢ',9307 => 'ᚦ',9308 => 'ᚨ',9309 => 'ᚯ',9310 => 'ᚰ',9311 => 'ᚱ',9312 => 'ᚲ',9313 => 'ᚷ',9314 => 'ᚹ',9315 => 'ᚺ',9316 => 'ᚾ',9317 => 'ᛁ',9318 => 'ᛃ',9319 => 'ᛅ',9320 => 'ᛇ',9321 => 'ᛈ',9322 => 'ᛉ',9323 => 'ᛊ',9324 => 'ᛏ',9325 => 'ᛒ',9326 => 'ᛖ',9327 => 'ᛗ',9328 => 'ᛚ',9329 => 'ᛜ',9330 => 'ᛞ',9331 => 'ᛟ',9332 => 'ᚪ',9333 => 'ᚫ',9334 => 'ᚣ',9335 => 'ᛠ',9336 => 'ᛣ',9337 => 'ᚸ',9338 => 'ᛤ',9339 => 'ᛡ',9340 => 'ᛢ',9341 => 'ᛥ',9342 => 'ᛦ',9343 => '𐰀',9344 => '𐰂',9345 => '𐰃',9346 => '𐰅',9347 => '𐰆',9348 => '𐰇',9349 => '𐰉',9350 => '𐰋',9351 => '𐰍',9352 => '𐰏',9353 => '𐰑',9354 => '𐰓',9355 => '𐰔',9356 => '𐰖',9357 => '𐰘',9358 => '𐰚',9359 => '𐰜',9360 => '𐰞',9361 => '𐰠',9362 => '𐰡',9363 => '𐰢',9364 => '𐰣',9365 => '𐰤',9366 => '𐰦',9367 => '𐰨',9368 => '𐰪',9369 => '𐰬',9370 => '𐰭',9371 => '𐰯',9372 => '𐰰',9373 => '𐰱',9374 => '𐰲',9375 => '𐰴',9376 => '𐰶',9377 => '𐰸',9378 => '𐰺',9379 => '𐰼',9380 => '𐰽',9381 => '𐰾',9382 => '𐰿',9383 => '𐱁',9384 => '𐱃',9385 => '𐱅',9386 => '𐱇',9387 => '𐱈',9388 => 'ꔀ',9389 => 'ꔁ',9390 => 'ꔂ',9391 => 'ꔃ',9392 => 'ꔄ',9393 => 'ꔅ',9394 => 'ꔆ',9395 => 'ꔇ',9396 => 'ꔈ',9397 => 'ꔉ',9398 => 'ꔊ',9399 => 'ꔋ',9400 => 'ꔌ',9401 => 'ꔍ',9402 => 'ꔎ',9403 => 'ꔏ',9404 => 'ꔐ',9405 => 'ꔑ',9406 => 'ꔒ',9407 => 'ꔓ',9408 => 'ꔔ',9409 => 'ꔕ',9410 => 'ꔖ',9411 => 'ꔗ',9412 => 'ꔘ',9413 => 'ꔙ',9414 => 'ꔚ',9415 => 'ꔛ',9416 => 'ꔜ',9417 => 'ꔝ',9418 => 'ꔞ',9419 => 'ꔟ',9420 => 'ꔠ',9421 => 'ꔡ',9422 => 'ꔢ',9423 => 'ꔣ',9424 => 'ꔤ',9425 => 'ꔥ',9426 => 'ꔦ',9427 => 'ꔧ',9428 => 'ꔨ',9429 => 'ꔩ',9430 => 'ꔪ',9431 => 'ꔫ',9432 => 'ꔬ',9433 => 'ꔭ',9434 => 'ꔮ',9435 => 'ꔯ',9436 => 'ꔰ',9437 => 'ꔱ',9438 => 'ꔲ',9439 => 'ꔳ',9440 => 'ꔴ',9441 => 'ꔵ',9442 => 'ꔶ',9443 => 'ꔷ',9444 => 'ꔸ',9445 => 'ꔹ',9446 => 'ꔺ',9447 => 'ꔻ',9448 => 'ꔼ',9449 => 'ꔽ',9450 => 'ꔾ',9451 => 'ꔿ',9452 => 'ꕀ',9453 => 'ꕁ',9454 => 'ꕂ',9455 => 'ꕃ',9456 => 'ꕄ',9457 => 'ꕅ',9458 => 'ꕆ',9459 => 'ꕇ',9460 => 'ꕈ',9461 => 'ꕉ',9462 => 'ꕊ',9463 => 'ꕋ',9464 => 'ꕌ',9465 => 'ꕍ',9466 => 'ꕎ',9467 => 'ꕏ',9468 => 'ꕐ',9469 => 'ꕑ',9470 => 'ꕒ',9471 => 'ꕓ',9472 => 'ꕔ',9473 => 'ꕕ',9474 => 'ꕖ',9475 => 'ꕗ',9476 => 'ꕘ',9477 => 'ꕙ',9478 => 'ꕚ',9479 => 'ꕛ',9480 => 'ꕜ',9481 => 'ꕝ',9482 => 'ꕞ',9483 => 'ꕟ',9484 => 'ꕠ',9485 => 'ꕡ',9486 => 'ꕢ',9487 => 'ꕣ',9488 => 'ꕤ',9489 => 'ꕥ',9490 => 'ꕦ',9491 => 'ꕧ',9492 => 'ꕨ',9493 => 'ꕩ',9494 => 'ꕪ',9495 => 'ꕫ',9496 => 'ꕬ',9497 => 'ꕭ',9498 => 'ꕮ',9499 => 'ꕯ',9500 => 'ꕰ',9501 => 'ꕱ',9502 => 'ꕲ',9503 => 'ꕳ',9504 => 'ꕴ',9505 => 'ꕵ',9506 => 'ꕶ',9507 => 'ꕷ',9508 => 'ꕸ',9509 => 'ꕹ',9510 => 'ꕺ',9511 => 'ꕻ',9512 => 'ꕼ',9513 => 'ꕽ',9514 => 'ꕾ',9515 => 'ꕿ',9516 => 'ꖀ',9517 => 'ꖁ',9518 => 'ꖂ',9519 => 'ꖃ',9520 => 'ꖄ',9521 => 'ꖅ',9522 => 'ꖆ',9523 => 'ꖇ',9524 => 'ꖈ',9525 => 'ꖉ',9526 => 'ꖊ',9527 => 'ꖋ',9528 => 'ꖌ',9529 => 'ꖍ',9530 => 'ꖎ',9531 => 'ꖏ',9532 => 'ꖐ',9533 => 'ꖑ',9534 => 'ꖒ',9535 => 'ꖓ',9536 => 'ꖔ',9537 => 'ꖕ',9538 => 'ꖖ',9539 => 'ꖗ',9540 => 'ꖘ',9541 => 'ꖙ',9542 => 'ꖚ',9543 => 'ꖛ',9544 => 'ꖜ',9545 => 'ꖝ',9546 => 'ꖞ',9547 => 'ꖟ',9548 => 'ꖠ',9549 => 'ꖡ',9550 => 'ꖢ',9551 => 'ꖣ',9552 => 'ꖤ',9553 => 'ꖥ',9554 => 'ꖦ',9555 => 'ꖧ',9556 => 'ꖨ',9557 => 'ꖩ',9558 => 'ꖪ',9559 => 'ꖫ',9560 => 'ꖬ',9561 => 'ꖭ',9562 => 'ꖮ',9563 => 'ꖯ',9564 => 'ꖰ',9565 => 'ꖱ',9566 => 'ꖲ',9567 => 'ꖳ',9568 => 'ꖴ',9569 => 'ꖵ',9570 => 'ꖶ',9571 => 'ꖷ',9572 => 'ꖸ',9573 => 'ꖹ',9574 => 'ꖺ',9575 => 'ꖻ',9576 => 'ꖼ',9577 => 'ꖽ',9578 => 'ꖾ',9579 => 'ꖿ',9580 => 'ꗀ',9581 => 'ꗁ',9582 => 'ꗂ',9583 => 'ꗃ',9584 => 'ꗄ',9585 => 'ꗅ',9586 => 'ꗆ',9587 => 'ꗇ',9588 => 'ꗈ',9589 => 'ꗉ',9590 => 'ꗊ',9591 => 'ꗋ',9592 => 'ꗌ',9593 => 'ꗍ',9594 => 'ꗎ',9595 => 'ꗏ',9596 => 'ꗐ',9597 => 'ꗑ',9598 => 'ꗒ',9599 => 'ꗓ',9600 => 'ꗔ',9601 => 'ꗕ',9602 => 'ꗖ',9603 => 'ꗗ',9604 => 'ꗘ',9605 => 'ꗙ',9606 => 'ꗚ',9607 => 'ꗛ',9608 => 'ꗜ',9609 => 'ꗝ',9610 => 'ꗞ',9611 => 'ꗟ',9612 => 'ꗠ',9613 => 'ꗡ',9614 => 'ꗢ',9615 => 'ꗣ',9616 => 'ꗤ',9617 => 'ꗥ',9618 => 'ꗦ',9619 => 'ꗧ',9620 => 'ꗨ',9621 => 'ꗩ',9622 => 'ꗪ',9623 => 'ꗫ',9624 => 'ꗬ',9625 => 'ꗭ',9626 => 'ꗮ',9627 => 'ꗯ',9628 => 'ꗰ',9629 => 'ꗱ',9630 => 'ꗲ',9631 => 'ꗳ',9632 => 'ꗴ',9633 => 'ꗵ',9634 => 'ꗶ',9635 => 'ꗷ',9636 => 'ꗸ',9637 => 'ꗹ',9638 => 'ꗺ',9639 => 'ꗻ',9640 => 'ꗼ',9641 => 'ꗽ',9642 => 'ꗾ',9643 => 'ꗿ',9644 => 'ꘀ',9645 => 'ꘁ',9646 => 'ꘂ',9647 => 'ꘃ',9648 => 'ꘄ',9649 => 'ꘅ',9650 => 'ꘆ',9651 => 'ꘇ',9652 => 'ꘈ',9653 => 'ꘉ',9654 => 'ꘊ',9655 => 'ꘋ',9656 => 'ꘌ',9657 => 'ꚠ',9658 => 'ꚡ',9659 => 'ꚢ',9660 => 'ꚣ',9661 => 'ꚤ',9662 => 'ꚥ',9663 => 'ꚦ',9664 => 'ꚧ',9665 => 'ꚨ',9666 => 'ꚩ',9667 => 'ꚪ',9668 => 'ꚫ',9669 => 'ꚬ',9670 => 'ꚭ',9671 => 'ꚮ',9672 => 'ꚯ',9673 => 'ꚰ',9674 => 'ꚱ',9675 => 'ꚲ',9676 => 'ꚳ',9677 => 'ꚴ',9678 => 'ꚵ',9679 => 'ꚶ',9680 => 'ꚷ',9681 => 'ꚸ',9682 => 'ꚹ',9683 => 'ꚺ',9684 => 'ꚻ',9685 => 'ꚼ',9686 => 'ꚽ',9687 => 'ꚾ',9688 => 'ꚿ',9689 => 'ꛀ',9690 => 'ꛁ',9691 => 'ꛂ',9692 => 'ꛃ',9693 => 'ꛄ',9694 => 'ꛅ',9695 => 'ꛆ',9696 => 'ꛇ',9697 => 'ꛈ',9698 => 'ꛉ',9699 => 'ꛊ',9700 => 'ꛋ',9701 => 'ꛌ',9702 => 'ꛍ',9703 => 'ꛎ',9704 => 'ꛏ',9705 => 'ꛐ',9706 => 'ꛑ',9707 => 'ꛒ',9708 => 'ꛓ',9709 => 'ꛔ',9710 => 'ꛕ',9711 => 'ꛖ',9712 => 'ꛗ',9713 => 'ꛘ',9714 => 'ꛙ',9715 => 'ꛚ',9716 => 'ꛛ',9717 => 'ꛜ',9718 => 'ꛝ',9719 => 'ꛞ',9720 => 'ꛟ',9721 => 'ꛠ',9722 => 'ꛡ',9723 => 'ꛢ',9724 => 'ꛣ',9725 => 'ꛤ',9726 => 'ꛥ',9727 => 'ꛦ',9728 => 'ꛧ',9729 => 'ꛨ',9730 => 'ꛩ',9731 => 'ꛪ',9732 => 'ꛫ',9733 => 'ꛬ',9734 => 'ꛭ',9735 => 'ꛮ',9736 => 'ꛯ',9737 => '𖠀',9738 => '𖠁',9739 => '𖠂',9740 => '𖠃',9741 => '𖠄',9742 => '𖠅',9743 => '𖠆',9744 => '𖠇',9745 => '𖠈',9746 => '𖠉',9747 => '𖠊',9748 => '𖠋',9749 => '𖠌',9750 => '𖠍',9751 => '𖠎',9752 => '𖠏',9753 => '𖠐',9754 => '𖠑',9755 => '𖠒',9756 => '𖠓',9757 => '𖠔',9758 => '𖠕',9759 => '𖠖',9760 => '𖠗',9761 => '𖠘',9762 => '𖠙',9763 => '𖠚',9764 => '𖠛',9765 => '𖠜',9766 => '𖠝',9767 => '𖠞',9768 => '𖠟',9769 => '𖠠',9770 => '𖠡',9771 => '𖠢',9772 => '𖠣',9773 => '𖠤',9774 => '𖠥',9775 => '𖠦',9776 => '𖠧',9777 => '𖠨',9778 => '𖠩',9779 => '𖠪',9780 => '𖠫',9781 => '𖠬',9782 => '𖠭',9783 => '𖠮',9784 => '𖠯',9785 => '𖠰',9786 => '𖠱',9787 => '𖠲',9788 => '𖠳',9789 => '𖠴',9790 => '𖠵',9791 => '𖠶',9792 => '𖠷',9793 => '𖠸',9794 => '𖠹',9795 => '𖠺',9796 => '𖠻',9797 => '𖠼',9798 => '𖠽',9799 => '𖠾',9800 => '𖠿',9801 => '𖡀',9802 => '𖡁',9803 => '𖡂',9804 => '𖡃',9805 => '𖡄',9806 => '𖡅',9807 => '𖡆',9808 => '𖡇',9809 => '𖡈',9810 => '𖡉',9811 => '𖡊',9812 => '𖡋',9813 => '𖡌',9814 => '𖡍',9815 => '𖡎',9816 => '𖡏',9817 => '𖡐',9818 => '𖡑',9819 => '𖡒',9820 => '𖡓',9821 => '𖡔',9822 => '𖡕',9823 => '𖡖',9824 => '𖡗',9825 => '𖡘',9826 => '𖡙',9827 => '𖡚',9828 => '𖡛',9829 => '𖡜',9830 => '𖡝',9831 => '𖡞',9832 => '𖡟',9833 => '𖡠',9834 => '𖡡',9835 => '𖡢',9836 => '𖡣',9837 => '𖡤',9838 => '𖡥',9839 => '𖡦',9840 => '𖡧',9841 => '𖡨',9842 => '𖡩',9843 => '𖡪',9844 => '𖡫',9845 => '𖡬',9846 => '𖡭',9847 => '𖡮',9848 => '𖡯',9849 => '𖡰',9850 => '𖡱',9851 => '𖡲',9852 => '𖡳',9853 => '𖡴',9854 => '𖡵',9855 => '𖡶',9856 => '𖡷',9857 => '𖡸',9858 => '𖡹',9859 => '𖡺',9860 => '𖡻',9861 => '𖡼',9862 => '𖡽',9863 => '𖡾',9864 => '𖡿',9865 => '𖢀',9866 => '𖢁',9867 => '𖢂',9868 => '𖢃',9869 => '𖢄',9870 => '𖢅',9871 => '𖢆',9872 => '𖢇',9873 => '𖢈',9874 => '𖢉',9875 => '𖢊',9876 => '𖢋',9877 => '𖢌',9878 => '𖢍',9879 => '𖢎',9880 => '𖢏',9881 => '𖢐',9882 => '𖢑',9883 => '𖢒',9884 => '𖢓',9885 => '𖢔',9886 => '𖢕',9887 => '𖢖',9888 => '𖢗',9889 => '𖢘',9890 => '𖢙',9891 => '𖢚',9892 => '𖢛',9893 => '𖢜',9894 => '𖢝',9895 => '𖢞',9896 => '𖢟',9897 => '𖢠',9898 => '𖢡',9899 => '𖢢',9900 => '𖢣',9901 => '𖢤',9902 => '𖢥',9903 => '𖢦',9904 => '𖢧',9905 => '𖢨',9906 => '𖢩',9907 => '𖢪',9908 => '𖢫',9909 => '𖢬',9910 => '𖢭',9911 => '𖢮',9912 => '𖢯',9913 => '𖢰',9914 => '𖢱',9915 => '𖢲',9916 => '𖢳',9917 => '𖢴',9918 => '𖢵',9919 => '𖢶',9920 => '𖢷',9921 => '𖢸',9922 => '𖢹',9923 => '𖢺',9924 => '𖢻',9925 => '𖢼',9926 => '𖢽',9927 => '𖢾',9928 => '𖢿',9929 => '𖣀',9930 => '𖣁',9931 => '𖣂',9932 => '𖣃',9933 => '𖣄',9934 => '𖣅',9935 => '𖣆',9936 => '𖣇',9937 => '𖣈',9938 => '𖣉',9939 => '𖣊',9940 => '𖣋',9941 => '𖣌',9942 => '𖣍',9943 => '𖣎',9944 => '𖣏',9945 => '𖣐',9946 => '𖣑',9947 => '𖣒',9948 => '𖣓',9949 => '𖣔',9950 => '𖣕',9951 => '𖣖',9952 => '𖣗',9953 => '𖣘',9954 => '𖣙',9955 => '𖣚',9956 => '𖣛',9957 => '𖣜',9958 => '𖣝',9959 => '𖣞',9960 => '𖣟',9961 => '𖣠',9962 => '𖣡',9963 => '𖣢',9964 => '𖣣',9965 => '𖣤',9966 => '𖣥',9967 => '𖣦',9968 => '𖣧',9969 => '𖣨',9970 => '𖣩',9971 => '𖣪',9972 => '𖣫',9973 => '𖣬',9974 => '𖣭',9975 => '𖣮',9976 => '𖣯',9977 => '𖣰',9978 => '𖣱',9979 => '𖣲',9980 => '𖣳',9981 => '𖣴',9982 => '𖣵',9983 => '𖣶',9984 => '𖣷',9985 => '𖣸',9986 => '𖣹',9987 => '𖣺',9988 => '𖣻',9989 => '𖣼',9990 => '𖣽',9991 => '𖣾',9992 => '𖣿',9993 => '𖤀',9994 => '𖤁',9995 => '𖤂',9996 => '𖤃',9997 => '𖤄',9998 => '𖤅',9999 => '𖤆',10000 => '𖤇',10001 => '𖤈',10002 => '𖤉',10003 => '𖤊',10004 => '𖤋',10005 => '𖤌',10006 => '𖤍',10007 => '𖤎',10008 => '𖤏',10009 => '𖤐',10010 => '𖤑',10011 => '𖤒',10012 => '𖤓',10013 => '𖤔',10014 => '𖤕',10015 => '𖤖',10016 => '𖤗',10017 => '𖤘',10018 => '𖤙',10019 => '𖤚',10020 => '𖤛',10021 => '𖤜',10022 => '𖤝',10023 => '𖤞',10024 => '𖤟',10025 => '𖤠',10026 => '𖤡',10027 => '𖤢',10028 => '𖤣',10029 => '𖤤',10030 => '𖤥',10031 => '𖤦',10032 => '𖤧',10033 => '𖤨',10034 => '𖤩',10035 => '𖤪',10036 => '𖤫',10037 => '𖤬',10038 => '𖤭',10039 => '𖤮',10040 => '𖤯',10041 => '𖤰',10042 => '𖤱',10043 => '𖤲',10044 => '𖤳',10045 => '𖤴',10046 => '𖤵',10047 => '𖤶',10048 => '𖤷',10049 => '𖤸',10050 => '𖤹',10051 => '𖤺',10052 => '𖤻',10053 => '𖤼',10054 => '𖤽',10055 => '𖤾',10056 => '𖤿',10057 => '𖥀',10058 => '𖥁',10059 => '𖥂',10060 => '𖥃',10061 => '𖥄',10062 => '𖥅',10063 => '𖥆',10064 => '𖥇',10065 => '𖥈',10066 => '𖥉',10067 => '𖥊',10068 => '𖥋',10069 => '𖥌',10070 => '𖥍',10071 => '𖥎',10072 => '𖥏',10073 => '𖥐',10074 => '𖥑',10075 => '𖥒',10076 => '𖥓',10077 => '𖥔',10078 => '𖥕',10079 => '𖥖',10080 => '𖥗',10081 => '𖥘',10082 => '𖥙',10083 => '𖥚',10084 => '𖥛',10085 => '𖥜',10086 => '𖥝',10087 => '𖥞',10088 => '𖥟',10089 => '𖥠',10090 => '𖥡',10091 => '𖥢',10092 => '𖥣',10093 => '𖥤',10094 => '𖥥',10095 => '𖥦',10096 => '𖥧',10097 => '𖥨',10098 => '𖥩',10099 => '𖥪',10100 => '𖥫',10101 => '𖥬',10102 => '𖥭',10103 => '𖥮',10104 => '𖥯',10105 => '𖥰',10106 => '𖥱',10107 => '𖥲',10108 => '𖥳',10109 => '𖥴',10110 => '𖥵',10111 => '𖥶',10112 => '𖥷',10113 => '𖥸',10114 => '𖥹',10115 => '𖥺',10116 => '𖥻',10117 => '𖥼',10118 => '𖥽',10119 => '𖥾',10120 => '𖥿',10121 => '𖦀',10122 => '𖦁',10123 => '𖦂',10124 => '𖦃',10125 => '𖦄',10126 => '𖦅',10127 => '𖦆',10128 => '𖦇',10129 => '𖦈',10130 => '𖦉',10131 => '𖦊',10132 => '𖦋',10133 => '𖦌',10134 => '𖦍',10135 => '𖦎',10136 => '𖦏',10137 => '𖦐',10138 => '𖦑',10139 => '𖦒',10140 => '𖦓',10141 => '𖦔',10142 => '𖦕',10143 => '𖦖',10144 => '𖦗',10145 => '𖦘',10146 => '𖦙',10147 => '𖦚',10148 => '𖦛',10149 => '𖦜',10150 => '𖦝',10151 => '𖦞',10152 => '𖦟',10153 => '𖦠',10154 => '𖦡',10155 => '𖦢',10156 => '𖦣',10157 => '𖦤',10158 => '𖦥',10159 => '𖦦',10160 => '𖦧',10161 => '𖦨',10162 => '𖦩',10163 => '𖦪',10164 => '𖦫',10165 => '𖦬',10166 => '𖦭',10167 => '𖦮',10168 => '𖦯',10169 => '𖦰',10170 => '𖦱',10171 => '𖦲',10172 => '𖦳',10173 => '𖦴',10174 => '𖦵',10175 => '𖦶',10176 => '𖦷',10177 => '𖦸',10178 => '𖦹',10179 => '𖦺',10180 => '𖦻',10181 => '𖦼',10182 => '𖦽',10183 => '𖦾',10184 => '𖦿',10185 => '𖧀',10186 => '𖧁',10187 => '𖧂',10188 => '𖧃',10189 => '𖧄',10190 => '𖧅',10191 => '𖧆',10192 => '𖧇',10193 => '𖧈',10194 => '𖧉',10195 => '𖧊',10196 => '𖧋',10197 => '𖧌',10198 => '𖧍',10199 => '𖧎',10200 => '𖧏',10201 => '𖧐',10202 => '𖧑',10203 => '𖧒',10204 => '𖧓',10205 => '𖧔',10206 => '𖧕',10207 => '𖧖',10208 => '𖧗',10209 => '𖧘',10210 => '𖧙',10211 => '𖧚',10212 => '𖧛',10213 => '𖧜',10214 => '𖧝',10215 => '𖧞',10216 => '𖧟',10217 => '𖧠',10218 => '𖧡',10219 => '𖧢',10220 => '𖧣',10221 => '𖧤',10222 => '𖧥',10223 => '𖧦',10224 => '𖧧',10225 => '𖧨',10226 => '𖧩',10227 => '𖧪',10228 => '𖧫',10229 => '𖧬',10230 => '𖧭',10231 => '𖧮',10232 => '𖧯',10233 => '𖧰',10234 => '𖧱',10235 => '𖧲',10236 => '𖧳',10237 => '𖧴',10238 => '𖧵',10239 => '𖧶',10240 => '𖧷',10241 => '𖧸',10242 => '𖧹',10243 => '𖧺',10244 => '𖧻',10245 => '𖧼',10246 => '𖧽',10247 => '𖧾',10248 => '𖧿',10249 => '𖨀',10250 => '𖨁',10251 => '𖨂',10252 => '𖨃',10253 => '𖨄',10254 => '𖨅',10255 => '𖨆',10256 => '𖨇',10257 => '𖨈',10258 => '𖨉',10259 => '𖨊',10260 => '𖨋',10261 => '𖨌',10262 => '𖨍',10263 => '𖨎',10264 => '𖨏',10265 => '𖨐',10266 => '𖨑',10267 => '𖨒',10268 => '𖨓',10269 => '𖨔',10270 => '𖨕',10271 => '𖨖',10272 => '𖨗',10273 => '𖨘',10274 => '𖨙',10275 => '𖨚',10276 => '𖨛',10277 => '𖨜',10278 => '𖨝',10279 => '𖨞',10280 => '𖨟',10281 => '𖨠',10282 => '𖨡',10283 => '𖨢',10284 => '𖨣',10285 => '𖨤',10286 => '𖨥',10287 => '𖨦',10288 => '𖨧',10289 => '𖨨',10290 => '𖨩',10291 => '𖨪',10292 => '𖨫',10293 => '𖨬',10294 => '𖨭',10295 => '𖨮',10296 => '𖨯',10297 => '𖨰',10298 => '𖨱',10299 => '𖨲',10300 => '𖨳',10301 => '𖨴',10302 => '𖨵',10303 => '𖨶',10304 => '𖨷',10305 => '𖨸',10306 => 'ᄀ',10307 => 'ᄁ',10308 => 'ᄂ',10309 => 'ᄃ',10310 => 'ᄄ',10311 => 'ᄅ',10312 => 'ᄆ',10313 => 'ᄇ',10314 => 'ᄈ',10315 => 'ᄉ',10316 => 'ᄊ',10317 => 'ᄋ',10318 => 'ᄌ',10319 => 'ᄍ',10320 => 'ᄎ',10321 => 'ᄏ',10322 => 'ᄐ',10323 => 'ᄑ',10324 => 'ᄒ',10325 => 'ᄓ',10326 => 'ᄔ',10327 => 'ᄕ',10328 => 'ᄖ',10329 => 'ᄗ',10330 => 'ᄘ',10331 => 'ᄙ',10332 => 'ᄚ',10333 => 'ᄛ',10334 => 'ᄜ',10335 => 'ᄝ',10336 => 'ᄞ',10337 => 'ᄟ',10338 => 'ᄠ',10339 => 'ᄡ',10340 => 'ᄢ',10341 => 'ᄣ',10342 => 'ᄤ',10343 => 'ᄥ',10344 => 'ᄦ',10345 => 'ᄧ',10346 => 'ᄨ',10347 => 'ᄩ',10348 => 'ᄪ',10349 => 'ᄫ',10350 => 'ᄬ',10351 => 'ᄭ',10352 => 'ᄮ',10353 => 'ᄯ',10354 => 'ᄰ',10355 => 'ᄱ',10356 => 'ᄲ',10357 => 'ᄳ',10358 => 'ᄴ',10359 => 'ᄵ',10360 => 'ᄶ',10361 => 'ᄷ',10362 => 'ᄸ',10363 => 'ᄹ',10364 => 'ᄺ',10365 => 'ᄻ',10366 => 'ᄼ',10367 => 'ᄽ',10368 => 'ᄾ',10369 => 'ᄿ',10370 => 'ᅀ',10371 => 'ᅁ',10372 => 'ᅂ',10373 => 'ᅃ',10374 => 'ᅄ',10375 => 'ᅅ',10376 => 'ᅆ',10377 => 'ᅇ',10378 => 'ᅈ',10379 => 'ᅉ',10380 => 'ᅊ',10381 => 'ᅋ',10382 => 'ᅌ',10383 => 'ᅍ',10384 => 'ᅎ',10385 => 'ᅏ',10386 => 'ᅐ',10387 => 'ᅑ',10388 => 'ᅒ',10389 => 'ᅓ',10390 => 'ᅔ',10391 => 'ᅕ',10392 => 'ᅖ',10393 => 'ᅗ',10394 => 'ᅘ',10395 => 'ᅙ',10396 => 'ᅚ',10397 => 'ᅛ',10398 => 'ᅜ',10399 => 'ᅝ',10400 => 'ᅞ',10401 => 'ꥠ',10402 => 'ꥡ',10403 => 'ꥢ',10404 => 'ꥣ',10405 => 'ꥤ',10406 => 'ꥥ',10407 => 'ꥦ',10408 => 'ꥧ',10409 => 'ꥨ',10410 => 'ꥩ',10411 => 'ꥪ',10412 => 'ꥫ',10413 => 'ꥬ',10414 => 'ꥭ',10415 => 'ꥮ',10416 => 'ꥯ',10417 => 'ꥰ',10418 => 'ꥱ',10419 => 'ꥲ',10420 => 'ꥳ',10421 => 'ꥴ',10422 => 'ꥵ',10423 => 'ꥶ',10424 => 'ꥷ',10425 => 'ꥸ',10426 => 'ꥹ',10427 => 'ꥺ',10428 => 'ꥻ',10429 => 'ꥼ',10430 => 'ᅟ',10431 => 'ᅠ',10432 => 'ᅡ',10433 => 'ᅢ',10434 => 'ᅣ',10435 => 'ᅤ',10436 => 'ᅥ',10437 => 'ᅦ',10438 => 'ᅧ',10439 => 'ᅨ',10440 => 'ᅩ',10441 => 'ᅪ',10442 => 'ᅫ',10443 => 'ᅬ',10444 => 'ᅭ',10445 => 'ᅮ',10446 => 'ᅯ',10447 => 'ᅰ',10448 => 'ᅱ',10449 => 'ᅲ',10450 => 'ᅳ',10451 => 'ᅴ',10452 => 'ᅵ',10453 => 'ᅶ',10454 => 'ᅷ',10455 => 'ᅸ',10456 => 'ᅹ',10457 => 'ᅺ',10458 => 'ᅻ',10459 => 'ᅼ',10460 => 'ᅽ',10461 => 'ᅾ',10462 => 'ᅿ',10463 => 'ᆀ',10464 => 'ᆁ',10465 => 'ᆂ',10466 => 'ᆃ',10467 => 'ᆄ',10468 => 'ᆅ',10469 => 'ᆆ',10470 => 'ᆇ',10471 => 'ᆈ',10472 => 'ᆉ',10473 => 'ᆊ',10474 => 'ᆋ',10475 => 'ᆌ',10476 => 'ᆍ',10477 => 'ᆎ',10478 => 'ᆏ',10479 => 'ᆐ',10480 => 'ᆑ',10481 => 'ᆒ',10482 => 'ᆓ',10483 => 'ᆔ',10484 => 'ᆕ',10485 => 'ᆖ',10486 => 'ᆗ',10487 => 'ᆘ',10488 => 'ᆙ',10489 => 'ᆚ',10490 => 'ᆛ',10491 => 'ᆜ',10492 => 'ᆝ',10493 => 'ᆞ',10494 => 'ᆟ',10495 => 'ᆠ',10496 => 'ᆡ',10497 => 'ᆢ',10498 => 'ᆣ',10499 => 'ᆤ',10500 => 'ᆥ',10501 => 'ᆦ',10502 => 'ᆧ',10503 => 'ힰ',10504 => 'ힱ',10505 => 'ힲ',10506 => 'ힳ',10507 => 'ힴ',10508 => 'ힵ',10509 => 'ힶ',10510 => 'ힷ',10511 => 'ힸ',10512 => 'ힹ',10513 => 'ힺ',10514 => 'ힻ',10515 => 'ힼ',10516 => 'ힽ',10517 => 'ힾ',10518 => 'ힿ',10519 => 'ퟀ',10520 => 'ퟁ',10521 => 'ퟂ',10522 => 'ퟃ',10523 => 'ퟄ',10524 => 'ퟅ',10525 => 'ퟆ',10526 => 'ᆨ',10527 => 'ᆩ',10528 => 'ᆪ',10529 => 'ᆫ',10530 => 'ᆬ',10531 => 'ᆭ',10532 => 'ᆮ',10533 => 'ᆯ',10534 => 'ᆰ',10535 => 'ᆱ',10536 => 'ᆲ',10537 => 'ᆳ',10538 => 'ᆴ',10539 => 'ᆵ',10540 => 'ᆶ',10541 => 'ᆷ',10542 => 'ᆸ',10543 => 'ᆹ',10544 => 'ᆺ',10545 => 'ᆻ',10546 => 'ᆼ',10547 => 'ᆽ',10548 => 'ᆾ',10549 => 'ᆿ',10550 => 'ᇀ',10551 => 'ᇁ',10552 => 'ᇂ',10553 => 'ᇃ',10554 => 'ᇄ',10555 => 'ᇅ',10556 => 'ᇆ',10557 => 'ᇇ',10558 => 'ᇈ',10559 => 'ᇉ',10560 => 'ᇊ',10561 => 'ᇋ',10562 => 'ᇌ',10563 => 'ᇍ',10564 => 'ᇎ',10565 => 'ᇏ',10566 => 'ᇐ',10567 => 'ᇑ',10568 => 'ᇒ',10569 => 'ᇓ',10570 => 'ᇔ',10571 => 'ᇕ',10572 => 'ᇖ',10573 => 'ᇗ',10574 => 'ᇘ',10575 => 'ᇙ',10576 => 'ᇚ',10577 => 'ᇛ',10578 => 'ᇜ',10579 => 'ᇝ',10580 => 'ᇞ',10581 => 'ᇟ',10582 => 'ᇠ',10583 => 'ᇡ',10584 => 'ᇢ',10585 => 'ᇣ',10586 => 'ᇤ',10587 => 'ᇥ',10588 => 'ᇦ',10589 => 'ᇧ',10590 => 'ᇨ',10591 => 'ᇩ',10592 => 'ᇪ',10593 => 'ᇫ',10594 => 'ᇬ',10595 => 'ᇭ',10596 => 'ᇮ',10597 => 'ᇯ',10598 => 'ᇰ',10599 => 'ᇱ',10600 => 'ᇲ',10601 => 'ᇳ',10602 => 'ᇴ',10603 => 'ᇵ',10604 => 'ᇶ',10605 => 'ᇷ',10606 => 'ᇸ',10607 => 'ᇹ',10608 => 'ᇺ',10609 => 'ᇻ',10610 => 'ᇼ',10611 => 'ᇽ',10612 => 'ᇾ',10613 => 'ᇿ',10614 => 'ퟋ',10615 => 'ퟌ',10616 => 'ퟍ',10617 => 'ퟎ',10618 => 'ퟏ',10619 => 'ퟐ',10620 => 'ퟑ',10621 => 'ퟒ',10622 => 'ퟓ',10623 => 'ퟔ',10624 => 'ퟕ',10625 => 'ퟖ',10626 => 'ퟗ',10627 => 'ퟘ',10628 => 'ퟙ',10629 => 'ퟚ',10630 => 'ퟛ',10631 => 'ퟜ',10632 => 'ퟝ',10633 => 'ퟞ',10634 => 'ퟟ',10635 => 'ퟠ',10636 => 'ퟡ',10637 => 'ퟢ',10638 => 'ퟣ',10639 => 'ퟤ',10640 => 'ퟥ',10641 => 'ퟦ',10642 => 'ퟧ',10643 => 'ퟨ',10644 => 'ퟩ',10645 => 'ퟪ',10646 => 'ퟫ',10647 => 'ퟬ',10648 => 'ퟭ',10649 => 'ퟮ',10650 => 'ퟯ',10651 => 'ퟰ',10652 => 'ퟱ',10653 => 'ퟲ',10654 => 'ퟳ',10655 => 'ퟴ',10656 => 'ퟵ',10657 => 'ퟶ',10658 => 'ퟷ',10659 => 'ퟸ',10660 => 'ퟹ',10661 => 'ퟺ',10662 => 'ퟻ',10663 => 'あ',10664 => 'い',10665 => 'う',10666 => '𛀀',10667 => 'え',10668 => 'お',10669 => 'か',10670 => 'き',10671 => 'く',10672 => 'け',10673 => 'こ',10674 => 'さ',10675 => 'し',10676 => 'す',10677 => 'せ',10678 => 'そ',10679 => 'た',10680 => 'ち',10681 => 'つ',10682 => 'て',10683 => 'と',10684 => 'な',10685 => 'に',10686 => 'ぬ',10687 => 'ね',10688 => 'の',10689 => 'は',10690 => 'ひ',10691 => 'ふ',10692 => 'へ',10693 => 'ほ',10694 => 'ま',10695 => 'み',10696 => 'む',10697 => 'め',10698 => 'も',10699 => 'や',10700 => 'ゆ',10701 => '𛀁',10702 => 'よ',10703 => 'ら',10704 => 'り',10705 => 'る',10706 => 'れ',10707 => 'ろ',10708 => 'わ',10709 => 'ゐ',10710 => 'ゑ',10711 => 'を',10712 => 'ん',10713 => 'ㄅ',10714 => 'ㄆ',10715 => 'ㄇ',10716 => 'ㄈ',10717 => 'ㄪ',10718 => 'ㄉ',10719 => 'ㄊ',10720 => 'ㄋ',10721 => 'ㄌ',10722 => 'ㄍ',10723 => 'ㄎ',10724 => 'ㄫ',10725 => 'ㆭ',10726 => 'ㄏ',10727 => 'ㄐ',10728 => 'ㄑ',10729 => 'ㄒ',10730 => 'ㄬ',10731 => 'ㄓ',10732 => 'ㄔ',10733 => 'ㄕ',10734 => 'ㄖ',10735 => 'ㄗ',10736 => 'ㄘ',10737 => 'ㄙ',10738 => 'ㆸ',10739 => 'ㆹ',10740 => 'ㆺ',10741 => 'ㄚ',10742 => 'ㄛ',10743 => 'ㆦ',10744 => 'ㄜ',10745 => 'ㄝ',10746 => 'ㆤ',10747 => 'ㄞ',10748 => 'ㄟ',10749 => 'ㄠ',10750 => 'ㄡ',10751 => 'ㄢ',10752 => 'ㄣ',10753 => 'ㄤ',10754 => 'ㆲ',10755 => 'ㄥ',10756 => 'ㆰ',10757 => 'ㆱ',10758 => 'ㆬ',10759 => 'ㄦ',10760 => 'ㄧ',10761 => 'ㄨ',10762 => 'ㄩ',10763 => 'ㄭ',10764 => 'ꀀ',10765 => 'ꀁ',10766 => 'ꀂ',10767 => 'ꀃ',10768 => 'ꀄ',10769 => 'ꀅ',10770 => 'ꀆ',10771 => 'ꀇ',10772 => 'ꀈ',10773 => 'ꀉ',10774 => 'ꀊ',10775 => 'ꀋ',10776 => 'ꀌ',10777 => 'ꀍ',10778 => 'ꀎ',10779 => 'ꀏ',10780 => 'ꀐ',10781 => 'ꀑ',10782 => 'ꀒ',10783 => 'ꀓ',10784 => 'ꀔ',10785 => 'ꀕ',10786 => 'ꀖ',10787 => 'ꀗ',10788 => 'ꀘ',10789 => 'ꀙ',10790 => 'ꀚ',10791 => 'ꀛ',10792 => 'ꀜ',10793 => 'ꀝ',10794 => 'ꀞ',10795 => 'ꀟ',10796 => 'ꀠ',10797 => 'ꀡ',10798 => 'ꀢ',10799 => 'ꀣ',10800 => 'ꀤ',10801 => 'ꀥ',10802 => 'ꀦ',10803 => 'ꀧ',10804 => 'ꀨ',10805 => 'ꀩ',10806 => 'ꀪ',10807 => 'ꀫ',10808 => 'ꀬ',10809 => 'ꀭ',10810 => 'ꀮ',10811 => 'ꀯ',10812 => 'ꀰ',10813 => 'ꀱ',10814 => 'ꀲ',10815 => 'ꀳ',10816 => 'ꀴ',10817 => 'ꀵ',10818 => 'ꀶ',10819 => 'ꀷ',10820 => 'ꀸ',10821 => 'ꀹ',10822 => 'ꀺ',10823 => 'ꀻ',10824 => 'ꀼ',10825 => 'ꀽ',10826 => 'ꀾ',10827 => 'ꀿ',10828 => 'ꁀ',10829 => 'ꁁ',10830 => 'ꁂ',10831 => 'ꁃ',10832 => 'ꁄ',10833 => 'ꁅ',10834 => 'ꁆ',10835 => 'ꁇ',10836 => 'ꁈ',10837 => 'ꁉ',10838 => 'ꁊ',10839 => 'ꁋ',10840 => 'ꁌ',10841 => 'ꁍ',10842 => 'ꁎ',10843 => 'ꁏ',10844 => 'ꁐ',10845 => 'ꁑ',10846 => 'ꁒ',10847 => 'ꁓ',10848 => 'ꁔ',10849 => 'ꁕ',10850 => 'ꁖ',10851 => 'ꁗ',10852 => 'ꁘ',10853 => 'ꁙ',10854 => 'ꁚ',10855 => 'ꁛ',10856 => 'ꁜ',10857 => 'ꁝ',10858 => 'ꁞ',10859 => 'ꁟ',10860 => 'ꁠ',10861 => 'ꁡ',10862 => 'ꁢ',10863 => 'ꁣ',10864 => 'ꁤ',10865 => 'ꁥ',10866 => 'ꁦ',10867 => 'ꁧ',10868 => 'ꁨ',10869 => 'ꁩ',10870 => 'ꁪ',10871 => 'ꁫ',10872 => 'ꁬ',10873 => 'ꁭ',10874 => 'ꁮ',10875 => 'ꁯ',10876 => 'ꁰ',10877 => 'ꁱ',10878 => 'ꁲ',10879 => 'ꁳ',10880 => 'ꁴ',10881 => 'ꁵ',10882 => 'ꁶ',10883 => 'ꁷ',10884 => 'ꁸ',10885 => 'ꁹ',10886 => 'ꁺ',10887 => 'ꁻ',10888 => 'ꁼ',10889 => 'ꁽ',10890 => 'ꁾ',10891 => 'ꁿ',10892 => 'ꂀ',10893 => 'ꂁ',10894 => 'ꂂ',10895 => 'ꂃ',10896 => 'ꂄ',10897 => 'ꂅ',10898 => 'ꂆ',10899 => 'ꂇ',10900 => 'ꂈ',10901 => 'ꂉ',10902 => 'ꂊ',10903 => 'ꂋ',10904 => 'ꂌ',10905 => 'ꂍ',10906 => 'ꂎ',10907 => 'ꂏ',10908 => 'ꂐ',10909 => 'ꂑ',10910 => 'ꂒ',10911 => 'ꂓ',10912 => 'ꂔ',10913 => 'ꂕ',10914 => 'ꂖ',10915 => 'ꂗ',10916 => 'ꂘ',10917 => 'ꂙ',10918 => 'ꂚ',10919 => 'ꂛ',10920 => 'ꂜ',10921 => 'ꂝ',10922 => 'ꂞ',10923 => 'ꂟ',10924 => 'ꂠ',10925 => 'ꂡ',10926 => 'ꂢ',10927 => 'ꂣ',10928 => 'ꂤ',10929 => 'ꂥ',10930 => 'ꂦ',10931 => 'ꂧ',10932 => 'ꂨ',10933 => 'ꂩ',10934 => 'ꂪ',10935 => 'ꂫ',10936 => 'ꂬ',10937 => 'ꂭ',10938 => 'ꂮ',10939 => 'ꂯ',10940 => 'ꂰ',10941 => 'ꂱ',10942 => 'ꂲ',10943 => 'ꂳ',10944 => 'ꂴ',10945 => 'ꂵ',10946 => 'ꂶ',10947 => 'ꂷ',10948 => 'ꂸ',10949 => 'ꂹ',10950 => 'ꂺ',10951 => 'ꂻ',10952 => 'ꂼ',10953 => 'ꂽ',10954 => 'ꂾ',10955 => 'ꂿ',10956 => 'ꃀ',10957 => 'ꃁ',10958 => 'ꃂ',10959 => 'ꃃ',10960 => 'ꃄ',10961 => 'ꃅ',10962 => 'ꃆ',10963 => 'ꃇ',10964 => 'ꃈ',10965 => 'ꃉ',10966 => 'ꃊ',10967 => 'ꃋ',10968 => 'ꃌ',10969 => 'ꃍ',10970 => 'ꃎ',10971 => 'ꃏ',10972 => 'ꃐ',10973 => 'ꃑ',10974 => 'ꃒ',10975 => 'ꃓ',10976 => 'ꃔ',10977 => 'ꃕ',10978 => 'ꃖ',10979 => 'ꃗ',10980 => 'ꃘ',10981 => 'ꃙ',10982 => 'ꃚ',10983 => 'ꃛ',10984 => 'ꃜ',10985 => 'ꃝ',10986 => 'ꃞ',10987 => 'ꃟ',10988 => 'ꃠ',10989 => 'ꃡ',10990 => 'ꃢ',10991 => 'ꃣ',10992 => 'ꃤ',10993 => 'ꃥ',10994 => 'ꃦ',10995 => 'ꃧ',10996 => 'ꃨ',10997 => 'ꃩ',10998 => 'ꃪ',10999 => 'ꃫ',11000 => 'ꃬ',11001 => 'ꃭ',11002 => 'ꃮ',11003 => 'ꃯ',11004 => 'ꃰ',11005 => 'ꃱ',11006 => 'ꃲ',11007 => 'ꃳ',11008 => 'ꃴ',11009 => 'ꃵ',11010 => 'ꃶ',11011 => 'ꃷ',11012 => 'ꃸ',11013 => 'ꃹ',11014 => 'ꃺ',11015 => 'ꃻ',11016 => 'ꃼ',11017 => 'ꃽ',11018 => 'ꃾ',11019 => 'ꃿ',11020 => 'ꄀ',11021 => 'ꄁ',11022 => 'ꄂ',11023 => 'ꄃ',11024 => 'ꄄ',11025 => 'ꄅ',11026 => 'ꄆ',11027 => 'ꄇ',11028 => 'ꄈ',11029 => 'ꄉ',11030 => 'ꄊ',11031 => 'ꄋ',11032 => 'ꄌ',11033 => 'ꄍ',11034 => 'ꄎ',11035 => 'ꄏ',11036 => 'ꄐ',11037 => 'ꄑ',11038 => 'ꄒ',11039 => 'ꄓ',11040 => 'ꄔ',11041 => 'ꄕ',11042 => 'ꄖ',11043 => 'ꄗ',11044 => 'ꄘ',11045 => 'ꄙ',11046 => 'ꄚ',11047 => 'ꄛ',11048 => 'ꄜ',11049 => 'ꄝ',11050 => 'ꄞ',11051 => 'ꄟ',11052 => 'ꄠ',11053 => 'ꄡ',11054 => 'ꄢ',11055 => 'ꄣ',11056 => 'ꄤ',11057 => 'ꄥ',11058 => 'ꄦ',11059 => 'ꄧ',11060 => 'ꄨ',11061 => 'ꄩ',11062 => 'ꄪ',11063 => 'ꄫ',11064 => 'ꄬ',11065 => 'ꄭ',11066 => 'ꄮ',11067 => 'ꄯ',11068 => 'ꄰ',11069 => 'ꄱ',11070 => 'ꄲ',11071 => 'ꄳ',11072 => 'ꄴ',11073 => 'ꄵ',11074 => 'ꄶ',11075 => 'ꄷ',11076 => 'ꄸ',11077 => 'ꄹ',11078 => 'ꄺ',11079 => 'ꄻ',11080 => 'ꄼ',11081 => 'ꄽ',11082 => 'ꄾ',11083 => 'ꄿ',11084 => 'ꅀ',11085 => 'ꅁ',11086 => 'ꅂ',11087 => 'ꅃ',11088 => 'ꅄ',11089 => 'ꅅ',11090 => 'ꅆ',11091 => 'ꅇ',11092 => 'ꅈ',11093 => 'ꅉ',11094 => 'ꅊ',11095 => 'ꅋ',11096 => 'ꅌ',11097 => 'ꅍ',11098 => 'ꅎ',11099 => 'ꅏ',11100 => 'ꅐ',11101 => 'ꅑ',11102 => 'ꅒ',11103 => 'ꅓ',11104 => 'ꅔ',11105 => 'ꅕ',11106 => 'ꅖ',11107 => 'ꅗ',11108 => 'ꅘ',11109 => 'ꅙ',11110 => 'ꅚ',11111 => 'ꅛ',11112 => 'ꅜ',11113 => 'ꅝ',11114 => 'ꅞ',11115 => 'ꅟ',11116 => 'ꅠ',11117 => 'ꅡ',11118 => 'ꅢ',11119 => 'ꅣ',11120 => 'ꅤ',11121 => 'ꅥ',11122 => 'ꅦ',11123 => 'ꅧ',11124 => 'ꅨ',11125 => 'ꅩ',11126 => 'ꅪ',11127 => 'ꅫ',11128 => 'ꅬ',11129 => 'ꅭ',11130 => 'ꅮ',11131 => 'ꅯ',11132 => 'ꅰ',11133 => 'ꅱ',11134 => 'ꅲ',11135 => 'ꅳ',11136 => 'ꅴ',11137 => 'ꅵ',11138 => 'ꅶ',11139 => 'ꅷ',11140 => 'ꅸ',11141 => 'ꅹ',11142 => 'ꅺ',11143 => 'ꅻ',11144 => 'ꅼ',11145 => 'ꅽ',11146 => 'ꅾ',11147 => 'ꅿ',11148 => 'ꆀ',11149 => 'ꆁ',11150 => 'ꆂ',11151 => 'ꆃ',11152 => 'ꆄ',11153 => 'ꆅ',11154 => 'ꆆ',11155 => 'ꆇ',11156 => 'ꆈ',11157 => 'ꆉ',11158 => 'ꆊ',11159 => 'ꆋ',11160 => 'ꆌ',11161 => 'ꆍ',11162 => 'ꆎ',11163 => 'ꆏ',11164 => 'ꆐ',11165 => 'ꆑ',11166 => 'ꆒ',11167 => 'ꆓ',11168 => 'ꆔ',11169 => 'ꆕ',11170 => 'ꆖ',11171 => 'ꆗ',11172 => 'ꆘ',11173 => 'ꆙ',11174 => 'ꆚ',11175 => 'ꆛ',11176 => 'ꆜ',11177 => 'ꆝ',11178 => 'ꆞ',11179 => 'ꆟ',11180 => 'ꆠ',11181 => 'ꆡ',11182 => 'ꆢ',11183 => 'ꆣ',11184 => 'ꆤ',11185 => 'ꆥ',11186 => 'ꆦ',11187 => 'ꆧ',11188 => 'ꆨ',11189 => 'ꆩ',11190 => 'ꆪ',11191 => 'ꆫ',11192 => 'ꆬ',11193 => 'ꆭ',11194 => 'ꆮ',11195 => 'ꆯ',11196 => 'ꆰ',11197 => 'ꆱ',11198 => 'ꆲ',11199 => 'ꆳ',11200 => 'ꆴ',11201 => 'ꆵ',11202 => 'ꆶ',11203 => 'ꆷ',11204 => 'ꆸ',11205 => 'ꆹ',11206 => 'ꆺ',11207 => 'ꆻ',11208 => 'ꆼ',11209 => 'ꆽ',11210 => 'ꆾ',11211 => 'ꆿ',11212 => 'ꇀ',11213 => 'ꇁ',11214 => 'ꇂ',11215 => 'ꇃ',11216 => 'ꇄ',11217 => 'ꇅ',11218 => 'ꇆ',11219 => 'ꇇ',11220 => 'ꇈ',11221 => 'ꇉ',11222 => 'ꇊ',11223 => 'ꇋ',11224 => 'ꇌ',11225 => 'ꇍ',11226 => 'ꇎ',11227 => 'ꇏ',11228 => 'ꇐ',11229 => 'ꇑ',11230 => 'ꇒ',11231 => 'ꇓ',11232 => 'ꇔ',11233 => 'ꇕ',11234 => 'ꇖ',11235 => 'ꇗ',11236 => 'ꇘ',11237 => 'ꇙ',11238 => 'ꇚ',11239 => 'ꇛ',11240 => 'ꇜ',11241 => 'ꇝ',11242 => 'ꇞ',11243 => 'ꇟ',11244 => 'ꇠ',11245 => 'ꇡ',11246 => 'ꇢ',11247 => 'ꇣ',11248 => 'ꇤ',11249 => 'ꇥ',11250 => 'ꇦ',11251 => 'ꇧ',11252 => 'ꇨ',11253 => 'ꇩ',11254 => 'ꇪ',11255 => 'ꇫ',11256 => 'ꇬ',11257 => 'ꇭ',11258 => 'ꇮ',11259 => 'ꇯ',11260 => 'ꇰ',11261 => 'ꇱ',11262 => 'ꇲ',11263 => 'ꇳ',11264 => 'ꇴ',11265 => 'ꇵ',11266 => 'ꇶ',11267 => 'ꇷ',11268 => 'ꇸ',11269 => 'ꇹ',11270 => 'ꇺ',11271 => 'ꇻ',11272 => 'ꇼ',11273 => 'ꇽ',11274 => 'ꇾ',11275 => 'ꇿ',11276 => 'ꈀ',11277 => 'ꈁ',11278 => 'ꈂ',11279 => 'ꈃ',11280 => 'ꈄ',11281 => 'ꈅ',11282 => 'ꈆ',11283 => 'ꈇ',11284 => 'ꈈ',11285 => 'ꈉ',11286 => 'ꈊ',11287 => 'ꈋ',11288 => 'ꈌ',11289 => 'ꈍ',11290 => 'ꈎ',11291 => 'ꈏ',11292 => 'ꈐ',11293 => 'ꈑ',11294 => 'ꈒ',11295 => 'ꈓ',11296 => 'ꈔ',11297 => 'ꈕ',11298 => 'ꈖ',11299 => 'ꈗ',11300 => 'ꈘ',11301 => 'ꈙ',11302 => 'ꈚ',11303 => 'ꈛ',11304 => 'ꈜ',11305 => 'ꈝ',11306 => 'ꈞ',11307 => 'ꈟ',11308 => 'ꈠ',11309 => 'ꈡ',11310 => 'ꈢ',11311 => 'ꈣ',11312 => 'ꈤ',11313 => 'ꈥ',11314 => 'ꈦ',11315 => 'ꈧ',11316 => 'ꈨ',11317 => 'ꈩ',11318 => 'ꈪ',11319 => 'ꈫ',11320 => 'ꈬ',11321 => 'ꈭ',11322 => 'ꈮ',11323 => 'ꈯ',11324 => 'ꈰ',11325 => 'ꈱ',11326 => 'ꈲ',11327 => 'ꈳ',11328 => 'ꈴ',11329 => 'ꈵ',11330 => 'ꈶ',11331 => 'ꈷ',11332 => 'ꈸ',11333 => 'ꈹ',11334 => 'ꈺ',11335 => 'ꈻ',11336 => 'ꈼ',11337 => 'ꈽ',11338 => 'ꈾ',11339 => 'ꈿ',11340 => 'ꉀ',11341 => 'ꉁ',11342 => 'ꉂ',11343 => 'ꉃ',11344 => 'ꉄ',11345 => 'ꉅ',11346 => 'ꉆ',11347 => 'ꉇ',11348 => 'ꉈ',11349 => 'ꉉ',11350 => 'ꉊ',11351 => 'ꉋ',11352 => 'ꉌ',11353 => 'ꉍ',11354 => 'ꉎ',11355 => 'ꉏ',11356 => 'ꉐ',11357 => 'ꉑ',11358 => 'ꉒ',11359 => 'ꉓ',11360 => 'ꉔ',11361 => 'ꉕ',11362 => 'ꉖ',11363 => 'ꉗ',11364 => 'ꉘ',11365 => 'ꉙ',11366 => 'ꉚ',11367 => 'ꉛ',11368 => 'ꉜ',11369 => 'ꉝ',11370 => 'ꉞ',11371 => 'ꉟ',11372 => 'ꉠ',11373 => 'ꉡ',11374 => 'ꉢ',11375 => 'ꉣ',11376 => 'ꉤ',11377 => 'ꉥ',11378 => 'ꉦ',11379 => 'ꉧ',11380 => 'ꉨ',11381 => 'ꉩ',11382 => 'ꉪ',11383 => 'ꉫ',11384 => 'ꉬ',11385 => 'ꉭ',11386 => 'ꉮ',11387 => 'ꉯ',11388 => 'ꉰ',11389 => 'ꉱ',11390 => 'ꉲ',11391 => 'ꉳ',11392 => 'ꉴ',11393 => 'ꉵ',11394 => 'ꉶ',11395 => 'ꉷ',11396 => 'ꉸ',11397 => 'ꉹ',11398 => 'ꉺ',11399 => 'ꉻ',11400 => 'ꉼ',11401 => 'ꉽ',11402 => 'ꉾ',11403 => 'ꉿ',11404 => 'ꊀ',11405 => 'ꊁ',11406 => 'ꊂ',11407 => 'ꊃ',11408 => 'ꊄ',11409 => 'ꊅ',11410 => 'ꊆ',11411 => 'ꊇ',11412 => 'ꊈ',11413 => 'ꊉ',11414 => 'ꊊ',11415 => 'ꊋ',11416 => 'ꊌ',11417 => 'ꊍ',11418 => 'ꊎ',11419 => 'ꊏ',11420 => 'ꊐ',11421 => 'ꊑ',11422 => 'ꊒ',11423 => 'ꊓ',11424 => 'ꊔ',11425 => 'ꊕ',11426 => 'ꊖ',11427 => 'ꊗ',11428 => 'ꊘ',11429 => 'ꊙ',11430 => 'ꊚ',11431 => 'ꊛ',11432 => 'ꊜ',11433 => 'ꊝ',11434 => 'ꊞ',11435 => 'ꊟ',11436 => 'ꊠ',11437 => 'ꊡ',11438 => 'ꊢ',11439 => 'ꊣ',11440 => 'ꊤ',11441 => 'ꊥ',11442 => 'ꊦ',11443 => 'ꊧ',11444 => 'ꊨ',11445 => 'ꊩ',11446 => 'ꊪ',11447 => 'ꊫ',11448 => 'ꊬ',11449 => 'ꊭ',11450 => 'ꊮ',11451 => 'ꊯ',11452 => 'ꊰ',11453 => 'ꊱ',11454 => 'ꊲ',11455 => 'ꊳ',11456 => 'ꊴ',11457 => 'ꊵ',11458 => 'ꊶ',11459 => 'ꊷ',11460 => 'ꊸ',11461 => 'ꊹ',11462 => 'ꊺ',11463 => 'ꊻ',11464 => 'ꊼ',11465 => 'ꊽ',11466 => 'ꊾ',11467 => 'ꊿ',11468 => 'ꋀ',11469 => 'ꋁ',11470 => 'ꋂ',11471 => 'ꋃ',11472 => 'ꋄ',11473 => 'ꋅ',11474 => 'ꋆ',11475 => 'ꋇ',11476 => 'ꋈ',11477 => 'ꋉ',11478 => 'ꋊ',11479 => 'ꋋ',11480 => 'ꋌ',11481 => 'ꋍ',11482 => 'ꋎ',11483 => 'ꋏ',11484 => 'ꋐ',11485 => 'ꋑ',11486 => 'ꋒ',11487 => 'ꋓ',11488 => 'ꋔ',11489 => 'ꋕ',11490 => 'ꋖ',11491 => 'ꋗ',11492 => 'ꋘ',11493 => 'ꋙ',11494 => 'ꋚ',11495 => 'ꋛ',11496 => 'ꋜ',11497 => 'ꋝ',11498 => 'ꋞ',11499 => 'ꋟ',11500 => 'ꋠ',11501 => 'ꋡ',11502 => 'ꋢ',11503 => 'ꋣ',11504 => 'ꋤ',11505 => 'ꋥ',11506 => 'ꋦ',11507 => 'ꋧ',11508 => 'ꋨ',11509 => 'ꋩ',11510 => 'ꋪ',11511 => 'ꋫ',11512 => 'ꋬ',11513 => 'ꋭ',11514 => 'ꋮ',11515 => 'ꋯ',11516 => 'ꋰ',11517 => 'ꋱ',11518 => 'ꋲ',11519 => 'ꋳ',11520 => 'ꋴ',11521 => 'ꋵ',11522 => 'ꋶ',11523 => 'ꋷ',11524 => 'ꋸ',11525 => 'ꋹ',11526 => 'ꋺ',11527 => 'ꋻ',11528 => 'ꋼ',11529 => 'ꋽ',11530 => 'ꋾ',11531 => 'ꋿ',11532 => 'ꌀ',11533 => 'ꌁ',11534 => 'ꌂ',11535 => 'ꌃ',11536 => 'ꌄ',11537 => 'ꌅ',11538 => 'ꌆ',11539 => 'ꌇ',11540 => 'ꌈ',11541 => 'ꌉ',11542 => 'ꌊ',11543 => 'ꌋ',11544 => 'ꌌ',11545 => 'ꌍ',11546 => 'ꌎ',11547 => 'ꌏ',11548 => 'ꌐ',11549 => 'ꌑ',11550 => 'ꌒ',11551 => 'ꌓ',11552 => 'ꌔ',11553 => 'ꌕ',11554 => 'ꌖ',11555 => 'ꌗ',11556 => 'ꌘ',11557 => 'ꌙ',11558 => 'ꌚ',11559 => 'ꌛ',11560 => 'ꌜ',11561 => 'ꌝ',11562 => 'ꌞ',11563 => 'ꌟ',11564 => 'ꌠ',11565 => 'ꌡ',11566 => 'ꌢ',11567 => 'ꌣ',11568 => 'ꌤ',11569 => 'ꌥ',11570 => 'ꌦ',11571 => 'ꌧ',11572 => 'ꌨ',11573 => 'ꌩ',11574 => 'ꌪ',11575 => 'ꌫ',11576 => 'ꌬ',11577 => 'ꌭ',11578 => 'ꌮ',11579 => 'ꌯ',11580 => 'ꌰ',11581 => 'ꌱ',11582 => 'ꌲ',11583 => 'ꌳ',11584 => 'ꌴ',11585 => 'ꌵ',11586 => 'ꌶ',11587 => 'ꌷ',11588 => 'ꌸ',11589 => 'ꌹ',11590 => 'ꌺ',11591 => 'ꌻ',11592 => 'ꌼ',11593 => 'ꌽ',11594 => 'ꌾ',11595 => 'ꌿ',11596 => 'ꍀ',11597 => 'ꍁ',11598 => 'ꍂ',11599 => 'ꍃ',11600 => 'ꍄ',11601 => 'ꍅ',11602 => 'ꍆ',11603 => 'ꍇ',11604 => 'ꍈ',11605 => 'ꍉ',11606 => 'ꍊ',11607 => 'ꍋ',11608 => 'ꍌ',11609 => 'ꍍ',11610 => 'ꍎ',11611 => 'ꍏ',11612 => 'ꍐ',11613 => 'ꍑ',11614 => 'ꍒ',11615 => 'ꍓ',11616 => 'ꍔ',11617 => 'ꍕ',11618 => 'ꍖ',11619 => 'ꍗ',11620 => 'ꍘ',11621 => 'ꍙ',11622 => 'ꍚ',11623 => 'ꍛ',11624 => 'ꍜ',11625 => 'ꍝ',11626 => 'ꍞ',11627 => 'ꍟ',11628 => 'ꍠ',11629 => 'ꍡ',11630 => 'ꍢ',11631 => 'ꍣ',11632 => 'ꍤ',11633 => 'ꍥ',11634 => 'ꍦ',11635 => 'ꍧ',11636 => 'ꍨ',11637 => 'ꍩ',11638 => 'ꍪ',11639 => 'ꍫ',11640 => 'ꍬ',11641 => 'ꍭ',11642 => 'ꍮ',11643 => 'ꍯ',11644 => 'ꍰ',11645 => 'ꍱ',11646 => 'ꍲ',11647 => 'ꍳ',11648 => 'ꍴ',11649 => 'ꍵ',11650 => 'ꍶ',11651 => 'ꍷ',11652 => 'ꍸ',11653 => 'ꍹ',11654 => 'ꍺ',11655 => 'ꍻ',11656 => 'ꍼ',11657 => 'ꍽ',11658 => 'ꍾ',11659 => 'ꍿ',11660 => 'ꎀ',11661 => 'ꎁ',11662 => 'ꎂ',11663 => 'ꎃ',11664 => 'ꎄ',11665 => 'ꎅ',11666 => 'ꎆ',11667 => 'ꎇ',11668 => 'ꎈ',11669 => 'ꎉ',11670 => 'ꎊ',11671 => 'ꎋ',11672 => 'ꎌ',11673 => 'ꎍ',11674 => 'ꎎ',11675 => 'ꎏ',11676 => 'ꎐ',11677 => 'ꎑ',11678 => 'ꎒ',11679 => 'ꎓ',11680 => 'ꎔ',11681 => 'ꎕ',11682 => 'ꎖ',11683 => 'ꎗ',11684 => 'ꎘ',11685 => 'ꎙ',11686 => 'ꎚ',11687 => 'ꎛ',11688 => 'ꎜ',11689 => 'ꎝ',11690 => 'ꎞ',11691 => 'ꎟ',11692 => 'ꎠ',11693 => 'ꎡ',11694 => 'ꎢ',11695 => 'ꎣ',11696 => 'ꎤ',11697 => 'ꎥ',11698 => 'ꎦ',11699 => 'ꎧ',11700 => 'ꎨ',11701 => 'ꎩ',11702 => 'ꎪ',11703 => 'ꎫ',11704 => 'ꎬ',11705 => 'ꎭ',11706 => 'ꎮ',11707 => 'ꎯ',11708 => 'ꎰ',11709 => 'ꎱ',11710 => 'ꎲ',11711 => 'ꎳ',11712 => 'ꎴ',11713 => 'ꎵ',11714 => 'ꎶ',11715 => 'ꎷ',11716 => 'ꎸ',11717 => 'ꎹ',11718 => 'ꎺ',11719 => 'ꎻ',11720 => 'ꎼ',11721 => 'ꎽ',11722 => 'ꎾ',11723 => 'ꎿ',11724 => 'ꏀ',11725 => 'ꏁ',11726 => 'ꏂ',11727 => 'ꏃ',11728 => 'ꏄ',11729 => 'ꏅ',11730 => 'ꏆ',11731 => 'ꏇ',11732 => 'ꏈ',11733 => 'ꏉ',11734 => 'ꏊ',11735 => 'ꏋ',11736 => 'ꏌ',11737 => 'ꏍ',11738 => 'ꏎ',11739 => 'ꏏ',11740 => 'ꏐ',11741 => 'ꏑ',11742 => 'ꏒ',11743 => 'ꏓ',11744 => 'ꏔ',11745 => 'ꏕ',11746 => 'ꏖ',11747 => 'ꏗ',11748 => 'ꏘ',11749 => 'ꏙ',11750 => 'ꏚ',11751 => 'ꏛ',11752 => 'ꏜ',11753 => 'ꏝ',11754 => 'ꏞ',11755 => 'ꏟ',11756 => 'ꏠ',11757 => 'ꏡ',11758 => 'ꏢ',11759 => 'ꏣ',11760 => 'ꏤ',11761 => 'ꏥ',11762 => 'ꏦ',11763 => 'ꏧ',11764 => 'ꏨ',11765 => 'ꏩ',11766 => 'ꏪ',11767 => 'ꏫ',11768 => 'ꏬ',11769 => 'ꏭ',11770 => 'ꏮ',11771 => 'ꏯ',11772 => 'ꏰ',11773 => 'ꏱ',11774 => 'ꏲ',11775 => 'ꏳ',11776 => 'ꏴ',11777 => 'ꏵ',11778 => 'ꏶ',11779 => 'ꏷ',11780 => 'ꏸ',11781 => 'ꏹ',11782 => 'ꏺ',11783 => 'ꏻ',11784 => 'ꏼ',11785 => 'ꏽ',11786 => 'ꏾ',11787 => 'ꏿ',11788 => 'ꐀ',11789 => 'ꐁ',11790 => 'ꐂ',11791 => 'ꐃ',11792 => 'ꐄ',11793 => 'ꐅ',11794 => 'ꐆ',11795 => 'ꐇ',11796 => 'ꐈ',11797 => 'ꐉ',11798 => 'ꐊ',11799 => 'ꐋ',11800 => 'ꐌ',11801 => 'ꐍ',11802 => 'ꐎ',11803 => 'ꐏ',11804 => 'ꐐ',11805 => 'ꐑ',11806 => 'ꐒ',11807 => 'ꐓ',11808 => 'ꐔ',11809 => 'ꐕ',11810 => 'ꐖ',11811 => 'ꐗ',11812 => 'ꐘ',11813 => 'ꐙ',11814 => 'ꐚ',11815 => 'ꐛ',11816 => 'ꐜ',11817 => 'ꐝ',11818 => 'ꐞ',11819 => 'ꐟ',11820 => 'ꐠ',11821 => 'ꐡ',11822 => 'ꐢ',11823 => 'ꐣ',11824 => 'ꐤ',11825 => 'ꐥ',11826 => 'ꐦ',11827 => 'ꐧ',11828 => 'ꐨ',11829 => 'ꐩ',11830 => 'ꐪ',11831 => 'ꐫ',11832 => 'ꐬ',11833 => 'ꐭ',11834 => 'ꐮ',11835 => 'ꐯ',11836 => 'ꐰ',11837 => 'ꐱ',11838 => 'ꐲ',11839 => 'ꐳ',11840 => 'ꐴ',11841 => 'ꐵ',11842 => 'ꐶ',11843 => 'ꐷ',11844 => 'ꐸ',11845 => 'ꐹ',11846 => 'ꐺ',11847 => 'ꐻ',11848 => 'ꐼ',11849 => 'ꐽ',11850 => 'ꐾ',11851 => 'ꐿ',11852 => 'ꑀ',11853 => 'ꑁ',11854 => 'ꑂ',11855 => 'ꑃ',11856 => 'ꑄ',11857 => 'ꑅ',11858 => 'ꑆ',11859 => 'ꑇ',11860 => 'ꑈ',11861 => 'ꑉ',11862 => 'ꑊ',11863 => 'ꑋ',11864 => 'ꑌ',11865 => 'ꑍ',11866 => 'ꑎ',11867 => 'ꑏ',11868 => 'ꑐ',11869 => 'ꑑ',11870 => 'ꑒ',11871 => 'ꑓ',11872 => 'ꑔ',11873 => 'ꑕ',11874 => 'ꑖ',11875 => 'ꑗ',11876 => 'ꑘ',11877 => 'ꑙ',11878 => 'ꑚ',11879 => 'ꑛ',11880 => 'ꑜ',11881 => 'ꑝ',11882 => 'ꑞ',11883 => 'ꑟ',11884 => 'ꑠ',11885 => 'ꑡ',11886 => 'ꑢ',11887 => 'ꑣ',11888 => 'ꑤ',11889 => 'ꑥ',11890 => 'ꑦ',11891 => 'ꑧ',11892 => 'ꑨ',11893 => 'ꑩ',11894 => 'ꑪ',11895 => 'ꑫ',11896 => 'ꑬ',11897 => 'ꑭ',11898 => 'ꑮ',11899 => 'ꑯ',11900 => 'ꑰ',11901 => 'ꑱ',11902 => 'ꑲ',11903 => 'ꑳ',11904 => 'ꑴ',11905 => 'ꑵ',11906 => 'ꑶ',11907 => 'ꑷ',11908 => 'ꑸ',11909 => 'ꑹ',11910 => 'ꑺ',11911 => 'ꑻ',11912 => 'ꑼ',11913 => 'ꑽ',11914 => 'ꑾ',11915 => 'ꑿ',11916 => 'ꒀ',11917 => 'ꒁ',11918 => 'ꒂ',11919 => 'ꒃ',11920 => 'ꒄ',11921 => 'ꒅ',11922 => 'ꒆ',11923 => 'ꒇ',11924 => 'ꒈ',11925 => 'ꒉ',11926 => 'ꒊ',11927 => 'ꒋ',11928 => 'ꒌ',11929 => 'ꓸ',11930 => 'ꓹ',11931 => 'ꓺ',11932 => 'ꓻ',11933 => 'ꓽ',11934 => 'ꓼ',11935 => 'ꓐ',11936 => 'ꓑ',11937 => 'ꓒ',11938 => 'ꓓ',11939 => 'ꓔ',11940 => 'ꓕ',11941 => 'ꓖ',11942 => 'ꓗ',11943 => 'ꓘ',11944 => 'ꓙ',11945 => 'ꓚ',11946 => 'ꓛ',11947 => 'ꓜ',11948 => 'ꓝ',11949 => 'ꓞ',11950 => 'ꓟ',11951 => 'ꓠ',11952 => 'ꓡ',11953 => 'ꓢ',11954 => 'ꓣ',11955 => 'ꓤ',11956 => 'ꓥ',11957 => 'ꓦ',11958 => 'ꓧ',11959 => 'ꓨ',11960 => 'ꓩ',11961 => 'ꓫ',11962 => 'ꓭ',11963 => 'ꓪ',11964 => 'ꓬ',11965 => 'ꓮ',11966 => 'ꓯ',11967 => 'ꓰ',11968 => 'ꓱ',11969 => 'ꓲ',11970 => 'ꓳ',11971 => 'ꓴ',11972 => 'ꓵ',11973 => 'ꓶ',11974 => 'ꓷ',11975 => '𐊀',11976 => '𐊁',11977 => '𐊂',11978 => '𐊃',11979 => '𐊄',11980 => '𐊅',11981 => '𐊆',11982 => '𐊇',11983 => '𐊈',11984 => '𐊉',11985 => '𐊊',11986 => '𐊋',11987 => '𐊌',11988 => '𐊍',11989 => '𐊎',11990 => '𐊏',11991 => '𐊐',11992 => '𐊑',11993 => '𐊒',11994 => '𐊓',11995 => '𐊔',11996 => '𐊕',11997 => '𐊖',11998 => '𐊗',11999 => '𐊘',12000 => '𐊙',12001 => '𐊚',12002 => '𐊛',12003 => '𐊜',12004 => '𐊠',12005 => '𐊡',12006 => '𐊢',12007 => '𐊣',12008 => '𐊤',12009 => '𐊥',12010 => '𐊦',12011 => '𐊧',12012 => '𐊨',12013 => '𐊩',12014 => '𐊪',12015 => '𐊫',12016 => '𐊬',12017 => '𐊭',12018 => '𐊮',12019 => '𐊯',12020 => '𐊰',12021 => '𐊱',12022 => '𐊲',12023 => '𐊳',12024 => '𐊴',12025 => '𐊵',12026 => '𐊶',12027 => '𐊷',12028 => '𐊸',12029 => '𐊹',12030 => '𐊺',12031 => '𐊻',12032 => '𐊼',12033 => '𐊽',12034 => '𐊾',12035 => '𐊿',12036 => '𐋀',12037 => '𐋁',12038 => '𐋂',12039 => '𐋃',12040 => '𐋄',12041 => '𐋅',12042 => '𐋆',12043 => '𐋇',12044 => '𐋈',12045 => '𐋉',12046 => '𐋊',12047 => '𐋋',12048 => '𐋌',12049 => '𐋍',12050 => '𐋎',12051 => '𐋏',12052 => '𐋐',12053 => '𐤠',12054 => '𐤡',12055 => '𐤢',12056 => '𐤣',12057 => '𐤤',12058 => '𐤥',12059 => '𐤦',12060 => '𐤧',12061 => '𐤨',12062 => '𐤩',12063 => '𐤪',12064 => '𐤫',12065 => '𐤬',12066 => '𐤭',12067 => '𐤮',12068 => '𐤯',12069 => '𐤰',12070 => '𐤱',12071 => '𐤲',12072 => '𐤳',12073 => '𐤴',12074 => '𐤵',12075 => '𐤶',12076 => '𐤷',12077 => '𐤸',12078 => '𐤹',12079 => '𐌀',12080 => '𐌁',12081 => '𐌂',12082 => '𐌃',12083 => '𐌄',12084 => '𐌅',12085 => '𐌆',12086 => '𐌇',12087 => '𐌈',12088 => '𐌉',12089 => '𐌊',12090 => '𐌋',12091 => '𐌌',12092 => '𐌍',12093 => '𐌎',12094 => '𐌏',12095 => '𐌐',12096 => '𐌑',12097 => '𐌒',12098 => '𐌓',12099 => '𐌔',12100 => '𐌕',12101 => '𐌖',12102 => '𐌗',12103 => '𐌘',12104 => '𐌙',12105 => '𐌚',12106 => '𐌛',12107 => '𐌜',12108 => '𐌝',12109 => '𐌞',12110 => '𐌰',12111 => '𐌱',12112 => '𐌲',12113 => '𐌳',12114 => '𐌴',12115 => '𐌵',12116 => '𐌶',12117 => '𐌷',12118 => '𐌸',12119 => '𐌹',12120 => '𐌺',12121 => '𐌻',12122 => '𐌼',12123 => '𐌽',12124 => '𐌾',12125 => '𐌿',12126 => '𐍀',12127 => '𐍁',12128 => '𐍂',12129 => '𐍃',12130 => '𐍄',12131 => '𐍅',12132 => '𐍆',12133 => '𐍇',12134 => '𐍈',12135 => '𐍉',12136 => '𐍊',12137 => '𐐀',12138 => '𐐁',12139 => '𐐂',12140 => '𐐃',12141 => '𐐄',12142 => '𐐅',12143 => '𐐆',12144 => '𐐇',12145 => '𐐈',12146 => '𐐉',12147 => '𐐊',12148 => '𐐋',12149 => '𐐌',12150 => '𐐍',12151 => '𐐎',12152 => '𐐏',12153 => '𐐐',12154 => '𐐑',12155 => '𐐒',12156 => '𐐓',12157 => '𐐔',12158 => '𐐕',12159 => '𐐖',12160 => '𐐗',12161 => '𐐘',12162 => '𐐙',12163 => '𐐚',12164 => '𐐛',12165 => '𐐜',12166 => '𐐝',12167 => '𐐞',12168 => '𐐟',12169 => '𐐠',12170 => '𐐡',12171 => '𐐢',12172 => '𐐣',12173 => '𐐤',12174 => '𐐥',12175 => '𐐦',12176 => '𐐧',12177 => '𐑐',12178 => '𐑑',12179 => '𐑒',12180 => '𐑓',12181 => '𐑔',12182 => '𐑕',12183 => '𐑖',12184 => '𐑗',12185 => '𐑘',12186 => '𐑙',12187 => '𐑚',12188 => '𐑛',12189 => '𐑜',12190 => '𐑝',12191 => '𐑞',12192 => '𐑟',12193 => '𐑠',12194 => '𐑡',12195 => '𐑢',12196 => '𐑣',12197 => '𐑤',12198 => '𐑥',12199 => '𐑦',12200 => '𐑧',12201 => '𐑨',12202 => '𐑩',12203 => '𐑪',12204 => '𐑫',12205 => '𐑬',12206 => '𐑭',12207 => '𐑮',12208 => '𐑯',12209 => '𐑰',12210 => '𐑱',12211 => '𐑲',12212 => '𐑳',12213 => '𐑴',12214 => '𐑵',12215 => '𐑶',12216 => '𐑷',12217 => '𐑸',12218 => '𐑹',12219 => '𐑺',12220 => '𐑻',12221 => '𐑼',12222 => '𐑽',12223 => '𐑾',12224 => '𐑿',12225 => '𐒀',12226 => '𐒁',12227 => '𐒂',12228 => '𐒃',12229 => '𐒄',12230 => '𐒅',12231 => '𐒆',12232 => '𐒇',12233 => '𐒈',12234 => '𐒉',12235 => '𐒊',12236 => '𐒋',12237 => '𐒌',12238 => '𐒍',12239 => '𐒎',12240 => '𐒏',12241 => '𐒐',12242 => '𐒑',12243 => '𐒒',12244 => '𐒓',12245 => '𐒔',12246 => '𐒕',12247 => '𐒖',12248 => '𐒗',12249 => '𐒘',12250 => '𐒙',12251 => '𐒚',12252 => '𐒛',12253 => '𐒜',12254 => '𐒝',12255 => '𐀀',12256 => '𐀁',12257 => '𐀂',12258 => '𐀃',12259 => '𐀄',12260 => '𐀅',12261 => '𐀆',12262 => '𐀇',12263 => '𐀈',12264 => '𐀉',12265 => '𐀊',12266 => '𐀋',12267 => '𐀍',12268 => '𐀎',12269 => '𐀏',12270 => '𐀐',12271 => '𐀑',12272 => '𐀒',12273 => '𐀓',12274 => '𐀔',12275 => '𐀕',12276 => '𐀖',12277 => '𐀗',12278 => '𐀘',12279 => '𐀙',12280 => '𐀚',12281 => '𐀛',12282 => '𐀜',12283 => '𐀝',12284 => '𐀞',12285 => '𐀟',12286 => '𐀠',12287 => '𐀡',12288 => '𐀢',12289 => '𐀣',12290 => '𐀤',12291 => '𐀥',12292 => '𐀦',12293 => '𐀨',12294 => '𐀩',12295 => '𐀪',12296 => '𐀫',12297 => '𐀬',12298 => '𐀭',12299 => '𐀮',12300 => '𐀯',12301 => '𐀰',12302 => '𐀱',12303 => '𐀲',12304 => '𐀳',12305 => '𐀴',12306 => '𐀵',12307 => '𐀶',12308 => '𐀷',12309 => '𐀸',12310 => '𐀹',12311 => '𐀺',12312 => '𐀼',12313 => '𐀽',12314 => '𐀿',12315 => '𐁀',12316 => '𐁁',12317 => '𐁂',12318 => '𐁃',12319 => '𐁄',12320 => '𐁅',12321 => '𐁆',12322 => '𐁇',12323 => '𐁈',12324 => '𐁉',12325 => '𐁊',12326 => '𐁋',12327 => '𐁌',12328 => '𐁍',12329 => '𐁐',12330 => '𐁑',12331 => '𐁒',12332 => '𐁓',12333 => '𐁔',12334 => '𐁕',12335 => '𐁖',12336 => '𐁗',12337 => '𐁘',12338 => '𐁙',12339 => '𐁚',12340 => '𐁛',12341 => '𐁜',12342 => '𐁝',12343 => '𐂀',12344 => '𐂁',12345 => '𐂂',12346 => '𐂃',12347 => '𐂄',12348 => '𐂅',12349 => '𐂆',12350 => '𐂇',12351 => '𐂈',12352 => '𐂉',12353 => '𐂊',12354 => '𐂋',12355 => '𐂌',12356 => '𐂍',12357 => '𐂎',12358 => '𐂏',12359 => '𐂐',12360 => '𐂑',12361 => '𐂒',12362 => '𐂓',12363 => '𐂔',12364 => '𐂕',12365 => '𐂖',12366 => '𐂗',12367 => '𐂘',12368 => '𐂙',12369 => '𐂚',12370 => '𐂛',12371 => '𐂜',12372 => '𐂝',12373 => '𐂞',12374 => '𐂟',12375 => '𐂠',12376 => '𐂡',12377 => '𐂢',12378 => '𐂣',12379 => '𐂤',12380 => '𐂥',12381 => '𐂦',12382 => '𐂧',12383 => '𐂨',12384 => '𐂩',12385 => '𐂪',12386 => '𐂫',12387 => '𐂬',12388 => '𐂭',12389 => '𐂮',12390 => '𐂯',12391 => '𐂰',12392 => '𐂱',12393 => '𐂲',12394 => '𐂳',12395 => '𐂴',12396 => '𐂵',12397 => '𐂶',12398 => '𐂷',12399 => '𐂸',12400 => '𐂹',12401 => '𐂺',12402 => '𐂻',12403 => '𐂼',12404 => '𐂽',12405 => '𐂾',12406 => '𐂿',12407 => '𐃀',12408 => '𐃁',12409 => '𐃂',12410 => '𐃃',12411 => '𐃄',12412 => '𐃅',12413 => '𐃆',12414 => '𐃇',12415 => '𐃈',12416 => '𐃉',12417 => '𐃊',12418 => '𐃋',12419 => '𐃌',12420 => '𐃍',12421 => '𐃎',12422 => '𐃏',12423 => '𐃐',12424 => '𐃑',12425 => '𐃒',12426 => '𐃓',12427 => '𐃔',12428 => '𐃕',12429 => '𐃖',12430 => '𐃗',12431 => '𐃘',12432 => '𐃙',12433 => '𐃚',12434 => '𐃛',12435 => '𐃜',12436 => '𐃝',12437 => '𐃞',12438 => '𐃟',12439 => '𐃠',12440 => '𐃡',12441 => '𐃢',12442 => '𐃣',12443 => '𐃤',12444 => '𐃥',12445 => '𐃦',12446 => '𐃧',12447 => '𐃨',12448 => '𐃩',12449 => '𐃪',12450 => '𐃫',12451 => '𐃬',12452 => '𐃭',12453 => '𐃮',12454 => '𐃯',12455 => '𐃰',12456 => '𐃱',12457 => '𐃲',12458 => '𐃳',12459 => '𐃴',12460 => '𐃵',12461 => '𐃶',12462 => '𐃷',12463 => '𐃸',12464 => '𐃹',12465 => '𐃺',12466 => '𐠀',12467 => '𐠁',12468 => '𐠂',12469 => '𐠃',12470 => '𐠄',12471 => '𐠅',12472 => '𐠈',12473 => '𐠊',12474 => '𐠋',12475 => '𐠌',12476 => '𐠍',12477 => '𐠎',12478 => '𐠏',12479 => '𐠐',12480 => '𐠑',12481 => '𐠒',12482 => '𐠓',12483 => '𐠔',12484 => '𐠕',12485 => '𐠖',12486 => '𐠗',12487 => '𐠘',12488 => '𐠙',12489 => '𐠚',12490 => '𐠛',12491 => '𐠜',12492 => '𐠝',12493 => '𐠞',12494 => '𐠟',12495 => '𐠠',12496 => '𐠡',12497 => '𐠢',12498 => '𐠣',12499 => '𐠤',12500 => '𐠥',12501 => '𐠦',12502 => '𐠧',12503 => '𐠨',12504 => '𐠩',12505 => '𐠪',12506 => '𐠫',12507 => '𐠬',12508 => '𐠭',12509 => '𐠮',12510 => '𐠯',12511 => '𐠰',12512 => '𐠱',12513 => '𐠲',12514 => '𐠳',12515 => '𐠴',12516 => '𐠵',12517 => '𐠷',12518 => '𐠸',12519 => '𐠼',12520 => '𐠿',12521 => '𐩠',12522 => '𐩡',12523 => '𐩢',12524 => '𐩣',12525 => '𐩤',12526 => '𐩥',12527 => '𐩦',12528 => '𐩧',12529 => '𐩨',12530 => '𐩩',12531 => '𐩪',12532 => '𐩫',12533 => '𐩬',12534 => '𐩭',12535 => '𐩮',12536 => '𐩯',12537 => '𐩰',12538 => '𐩱',12539 => '𐩲',12540 => '𐩳',12541 => '𐩴',12542 => '𐩵',12543 => '𐩶',12544 => '𐩷',12545 => '𐩸',12546 => '𐩹',12547 => '𐩺',12548 => '𐩻',12549 => '𐩼',12550 => '𐬀',12551 => '𐬁',12552 => '𐬂',12553 => '𐬃',12554 => '𐬄',12555 => '𐬅',12556 => '𐬆',12557 => '𐬇',12558 => '𐬈',12559 => '𐬉',12560 => '𐬊',12561 => '𐬋',12562 => '𐬌',12563 => '𐬍',12564 => '𐬎',12565 => '𐬏',12566 => '𐬐',12567 => '𐬑',12568 => '𐬒',12569 => '𐬓',12570 => '𐬔',12571 => '𐬕',12572 => '𐬖',12573 => '𐬗',12574 => '𐬘',12575 => '𐬙',12576 => '𐬚',12577 => '𐬛',12578 => '𐬜',12579 => '𐬝',12580 => '𐬞',12581 => '𐬟',12582 => '𐬠',12583 => '𐬡',12584 => '𐬢',12585 => '𐬣',12586 => '𐬤',12587 => '𐬥',12588 => '𐬦',12589 => '𐬧',12590 => '𐬨',12591 => '𐬩',12592 => '𐬪',12593 => '𐬫',12594 => '𐬬',12595 => '𐬭',12596 => '𐬯',12597 => '𐬰',12598 => '𐬱',12599 => '𐬲',12600 => '𐬳',12601 => '𐬴',12602 => '𐬵',12603 => '𐡀',12604 => '𐡁',12605 => '𐡂',12606 => '𐡃',12607 => '𐡄',12608 => '𐡅',12609 => '𐡆',12610 => '𐡇',12611 => '𐡈',12612 => '𐡉',12613 => '𐡊',12614 => '𐡋',12615 => '𐡌',12616 => '𐡍',12617 => '𐡎',12618 => '𐡏',12619 => '𐡐',12620 => '𐡑',12621 => '𐡒',12622 => '𐡓',12623 => '𐡔',12624 => '𐡕',12625 => '𐭀',12626 => '𐭁',12627 => '𐭂',12628 => '𐭃',12629 => '𐭄',12630 => '𐭅',12631 => '𐭆',12632 => '𐭇',12633 => '𐭈',12634 => '𐭉',12635 => '𐭊',12636 => '𐭋',12637 => '𐭌',12638 => '𐭍',12639 => '𐭎',12640 => '𐭏',12641 => '𐭐',12642 => '𐭑',12643 => '𐭒',12644 => '𐭓',12645 => '𐭔',12646 => '𐭕',12647 => '𐭠',12648 => '𐭡',12649 => '𐭢',12650 => '𐭣',12651 => '𐭤',12652 => '𐭥',12653 => '𐭦',12654 => '𐭧',12655 => '𐭨',12656 => '𐭩',12657 => '𐭪',12658 => '𐭫',12659 => '𐭬',12660 => '𐭭',12661 => '𐭮',12662 => '𐭯',12663 => '𐭰',12664 => '𐭱',12665 => '𐭲',12666 => '𐎀',12667 => '𐎁',12668 => '𐎂',12669 => '𐎃',12670 => '𐎄',12671 => '𐎅',12672 => '𐎆',12673 => '𐎇',12674 => '𐎈',12675 => '𐎉',12676 => '𐎊',12677 => '𐎋',12678 => '𐎌',12679 => '𐎍',12680 => '𐎎',12681 => '𐎏',12682 => '𐎐',12683 => '𐎑',12684 => '𐎒',12685 => '𐎓',12686 => '𐎔',12687 => '𐎕',12688 => '𐎖',12689 => '𐎗',12690 => '𐎘',12691 => '𐎙',12692 => '𐎚',12693 => '𐎛',12694 => '𐎜',12695 => '𐎝',12696 => '𐎠',12697 => '𐎡',12698 => '𐎢',12699 => '𐎣',12700 => '𐎤',12701 => '𐎥',12702 => '𐎦',12703 => '𐎧',12704 => '𐎨',12705 => '𐎩',12706 => '𐎪',12707 => '𐎫',12708 => '𐎬',12709 => '𐎭',12710 => '𐎮',12711 => '𐎯',12712 => '𐎰',12713 => '𐎱',12714 => '𐎲',12715 => '𐎳',12716 => '𐎴',12717 => '𐎵',12718 => '𐎶',12719 => '𐎷',12720 => '𐎸',12721 => '𐎹',12722 => '𐎺',12723 => '𐎻',12724 => '𐎼',12725 => '𐎽',12726 => '𐎾',12727 => '𐎿',12728 => '𐏀',12729 => '𐏁',12730 => '𐏂',12731 => '𐏃',12732 => '𐏈',12733 => '𐏉',12734 => '𐏊',12735 => '𐏋',12736 => '𐏌',12737 => '𐏍',12738 => '𐏎',12739 => '𐏏',12740 => '𒀀',12741 => '𒀁',12742 => '𒀂',12743 => '𒀃',12744 => '𒀄',12745 => '𒀅',12746 => '𒀆',12747 => '𒀇',12748 => '𒀈',12749 => '𒀉',12750 => '𒀊',12751 => '𒀋',12752 => '𒀌',12753 => '𒀍',12754 => '𒀎',12755 => '𒀏',12756 => '𒀐',12757 => '𒀑',12758 => '𒀒',12759 => '𒀓',12760 => '𒀔',12761 => '𒀕',12762 => '𒀖',12763 => '𒀗',12764 => '𒀘',12765 => '𒀙',12766 => '𒀚',12767 => '𒀛',12768 => '𒀜',12769 => '𒀝',12770 => '𒀞',12771 => '𒀟',12772 => '𒀠',12773 => '𒀡',12774 => '𒀢',12775 => '𒀣',12776 => '𒀤',12777 => '𒀥',12778 => '𒀦',12779 => '𒀧',12780 => '𒀨',12781 => '𒀩',12782 => '𒀪',12783 => '𒀫',12784 => '𒀬',12785 => '𒀭',12786 => '𒀮',12787 => '𒀯',12788 => '𒀰',12789 => '𒀱',12790 => '𒀲',12791 => '𒀳',12792 => '𒀴',12793 => '𒀵',12794 => '𒀶',12795 => '𒀷',12796 => '𒀸',12797 => '𒀹',12798 => '𒀺',12799 => '𒀻',12800 => '𒀼',12801 => '𒀽',12802 => '𒀾',12803 => '𒀿',12804 => '𒁀',12805 => '𒁁',12806 => '𒁂',12807 => '𒁃',12808 => '𒁄',12809 => '𒁅',12810 => '𒁆',12811 => '𒁇',12812 => '𒁈',12813 => '𒁉',12814 => '𒁊',12815 => '𒁋',12816 => '𒁌',12817 => '𒁍',12818 => '𒁎',12819 => '𒁏',12820 => '𒁐',12821 => '𒁑',12822 => '𒁒',12823 => '𒁓',12824 => '𒁔',12825 => '𒁕',12826 => '𒁖',12827 => '𒁗',12828 => '𒁘',12829 => '𒁙',12830 => '𒁚',12831 => '𒁛',12832 => '𒁜',12833 => '𒁝',12834 => '𒁞',12835 => '𒁟',12836 => '𒁠',12837 => '𒁡',12838 => '𒁢',12839 => '𒁣',12840 => '𒁤',12841 => '𒁥',12842 => '𒁦',12843 => '𒁧',12844 => '𒁨',12845 => '𒁩',12846 => '𒁪',12847 => '𒁫',12848 => '𒁬',12849 => '𒁭',12850 => '𒁮',12851 => '𒁯',12852 => '𒁰',12853 => '𒁱',12854 => '𒁲',12855 => '𒁳',12856 => '𒁴',12857 => '𒁵',12858 => '𒁶',12859 => '𒁷',12860 => '𒁸',12861 => '𒁹',12862 => '𒁺',12863 => '𒁻',12864 => '𒁼',12865 => '𒁽',12866 => '𒁾',12867 => '𒁿',12868 => '𒂀',12869 => '𒂁',12870 => '𒂂',12871 => '𒂃',12872 => '𒂄',12873 => '𒂅',12874 => '𒂆',12875 => '𒂇',12876 => '𒂈',12877 => '𒂉',12878 => '𒂊',12879 => '𒂋',12880 => '𒂌',12881 => '𒂍',12882 => '𒂎',12883 => '𒂏',12884 => '𒂐',12885 => '𒂑',12886 => '𒂒',12887 => '𒂓',12888 => '𒂔',12889 => '𒂕',12890 => '𒂖',12891 => '𒂗',12892 => '𒂘',12893 => '𒂙',12894 => '𒂚',12895 => '𒂛',12896 => '𒂜',12897 => '𒂝',12898 => '𒂞',12899 => '𒂟',12900 => '𒂠',12901 => '𒂡',12902 => '𒂢',12903 => '𒂣',12904 => '𒂤',12905 => '𒂥',12906 => '𒂦',12907 => '𒂧',12908 => '𒂨',12909 => '𒂩',12910 => '𒂪',12911 => '𒂫',12912 => '𒂬',12913 => '𒂭',12914 => '𒂮',12915 => '𒂯',12916 => '𒂰',12917 => '𒂱',12918 => '𒂲',12919 => '𒂳',12920 => '𒂴',12921 => '𒂵',12922 => '𒂶',12923 => '𒂷',12924 => '𒂸',12925 => '𒂹',12926 => '𒂺',12927 => '𒂻',12928 => '𒂼',12929 => '𒂽',12930 => '𒂾',12931 => '𒂿',12932 => '𒃀',12933 => '𒃁',12934 => '𒃂',12935 => '𒃃',12936 => '𒃄',12937 => '𒃅',12938 => '𒃆',12939 => '𒃇',12940 => '𒃈',12941 => '𒃉',12942 => '𒃊',12943 => '𒃋',12944 => '𒃌',12945 => '𒃍',12946 => '𒃎',12947 => '𒃏',12948 => '𒃐',12949 => '𒃑',12950 => '𒃒',12951 => '𒃓',12952 => '𒃔',12953 => '𒃕',12954 => '𒃖',12955 => '𒃗',12956 => '𒃘',12957 => '𒃙',12958 => '𒃚',12959 => '𒃛',12960 => '𒃜',12961 => '𒃝',12962 => '𒃞',12963 => '𒃟',12964 => '𒃠',12965 => '𒃡',12966 => '𒃢',12967 => '𒃣',12968 => '𒃤',12969 => '𒃥',12970 => '𒃦',12971 => '𒃧',12972 => '𒃨',12973 => '𒃩',12974 => '𒃪',12975 => '𒃫',12976 => '𒃬',12977 => '𒃭',12978 => '𒃮',12979 => '𒃯',12980 => '𒃰',12981 => '𒃱',12982 => '𒃲',12983 => '𒃳',12984 => '𒃴',12985 => '𒃵',12986 => '𒃶',12987 => '𒃷',12988 => '𒃸',12989 => '𒃹',12990 => '𒃺',12991 => '𒃻',12992 => '𒃼',12993 => '𒃽',12994 => '𒃾',12995 => '𒃿',12996 => '𒄀',12997 => '𒄁',12998 => '𒄂',12999 => '𒄃',13000 => '𒄄',13001 => '𒄅',13002 => '𒄆',13003 => '𒄇',13004 => '𒄈',13005 => '𒄉',13006 => '𒄊',13007 => '𒄋',13008 => '𒄌',13009 => '𒄍',13010 => '𒄎',13011 => '𒄏',13012 => '𒄐',13013 => '𒄑',13014 => '𒄒',13015 => '𒄓',13016 => '𒄔',13017 => '𒄕',13018 => '𒄖',13019 => '𒄗',13020 => '𒄘',13021 => '𒄙',13022 => '𒄚',13023 => '𒄛',13024 => '𒄜',13025 => '𒄝',13026 => '𒄞',13027 => '𒄟',13028 => '𒄠',13029 => '𒄡',13030 => '𒄢',13031 => '𒄣',13032 => '𒄤',13033 => '𒄥',13034 => '𒄦',13035 => '𒄧',13036 => '𒄨',13037 => '𒄩',13038 => '𒄪',13039 => '𒄫',13040 => '𒄬',13041 => '𒄭',13042 => '𒄮',13043 => '𒄯',13044 => '𒄰',13045 => '𒄱',13046 => '𒄲',13047 => '𒄳',13048 => '𒄴',13049 => '𒄵',13050 => '𒄶',13051 => '𒄷',13052 => '𒄸',13053 => '𒄹',13054 => '𒄺',13055 => '𒄻',13056 => '𒄼',13057 => '𒄽',13058 => '𒄾',13059 => '𒄿',13060 => '𒅀',13061 => '𒅁',13062 => '𒅂',13063 => '𒅃',13064 => '𒅄',13065 => '𒅅',13066 => '𒅆',13067 => '𒅇',13068 => '𒅈',13069 => '𒅉',13070 => '𒅊',13071 => '𒅋',13072 => '𒅌',13073 => '𒅍',13074 => '𒅎',13075 => '𒅏',13076 => '𒅐',13077 => '𒅑',13078 => '𒅒',13079 => '𒅓',13080 => '𒅔',13081 => '𒅕',13082 => '𒅖',13083 => '𒅗',13084 => '𒅘',13085 => '𒅙',13086 => '𒅚',13087 => '𒅛',13088 => '𒅜',13089 => '𒅝',13090 => '𒅞',13091 => '𒅟',13092 => '𒅠',13093 => '𒅡',13094 => '𒅢',13095 => '𒅣',13096 => '𒅤',13097 => '𒅥',13098 => '𒅦',13099 => '𒅧',13100 => '𒅨',13101 => '𒅩',13102 => '𒅪',13103 => '𒅫',13104 => '𒅬',13105 => '𒅭',13106 => '𒅮',13107 => '𒅯',13108 => '𒅰',13109 => '𒅱',13110 => '𒅲',13111 => '𒅳',13112 => '𒅴',13113 => '𒅵',13114 => '𒅶',13115 => '𒅷',13116 => '𒅸',13117 => '𒅹',13118 => '𒅺',13119 => '𒅻',13120 => '𒅼',13121 => '𒅽',13122 => '𒅾',13123 => '𒅿',13124 => '𒆀',13125 => '𒆁',13126 => '𒆂',13127 => '𒆃',13128 => '𒆄',13129 => '𒆅',13130 => '𒆆',13131 => '𒆇',13132 => '𒆈',13133 => '𒆉',13134 => '𒆊',13135 => '𒆋',13136 => '𒆌',13137 => '𒆍',13138 => '𒆎',13139 => '𒆏',13140 => '𒆐',13141 => '𒆑',13142 => '𒆒',13143 => '𒆓',13144 => '𒆔',13145 => '𒆕',13146 => '𒆖',13147 => '𒆗',13148 => '𒆘',13149 => '𒆙',13150 => '𒆚',13151 => '𒆛',13152 => '𒆜',13153 => '𒆝',13154 => '𒆞',13155 => '𒆟',13156 => '𒆠',13157 => '𒆡',13158 => '𒆢',13159 => '𒆣',13160 => '𒆤',13161 => '𒆥',13162 => '𒆦',13163 => '𒆧',13164 => '𒆨',13165 => '𒆩',13166 => '𒆪',13167 => '𒆫',13168 => '𒆬',13169 => '𒆭',13170 => '𒆮',13171 => '𒆯',13172 => '𒆰',13173 => '𒆱',13174 => '𒆲',13175 => '𒆳',13176 => '𒆴',13177 => '𒆵',13178 => '𒆶',13179 => '𒆷',13180 => '𒆸',13181 => '𒆹',13182 => '𒆺',13183 => '𒆻',13184 => '𒆼',13185 => '𒆽',13186 => '𒆾',13187 => '𒆿',13188 => '𒇀',13189 => '𒇁',13190 => '𒇂',13191 => '𒇃',13192 => '𒇄',13193 => '𒇅',13194 => '𒇆',13195 => '𒇇',13196 => '𒇈',13197 => '𒇉',13198 => '𒇊',13199 => '𒇋',13200 => '𒇌',13201 => '𒇍',13202 => '𒇎',13203 => '𒇏',13204 => '𒇐',13205 => '𒇑',13206 => '𒇒',13207 => '𒇓',13208 => '𒇔',13209 => '𒇕',13210 => '𒇖',13211 => '𒇗',13212 => '𒇘',13213 => '𒇙',13214 => '𒇚',13215 => '𒇛',13216 => '𒇜',13217 => '𒇝',13218 => '𒇞',13219 => '𒇟',13220 => '𒇠',13221 => '𒇡',13222 => '𒇢',13223 => '𒇣',13224 => '𒇤',13225 => '𒇥',13226 => '𒇦',13227 => '𒇧',13228 => '𒇨',13229 => '𒇩',13230 => '𒇪',13231 => '𒇫',13232 => '𒇬',13233 => '𒇭',13234 => '𒇮',13235 => '𒇯',13236 => '𒇰',13237 => '𒇱',13238 => '𒇲',13239 => '𒇳',13240 => '𒇴',13241 => '𒇵',13242 => '𒇶',13243 => '𒇷',13244 => '𒇸',13245 => '𒇹',13246 => '𒇺',13247 => '𒇻',13248 => '𒇼',13249 => '𒇽',13250 => '𒇾',13251 => '𒇿',13252 => '𒈀',13253 => '𒈁',13254 => '𒈂',13255 => '𒈃',13256 => '𒈄',13257 => '𒈅',13258 => '𒈆',13259 => '𒈇',13260 => '𒈈',13261 => '𒈉',13262 => '𒈊',13263 => '𒈋',13264 => '𒈌',13265 => '𒈍',13266 => '𒈎',13267 => '𒈏',13268 => '𒈐',13269 => '𒈑',13270 => '𒈒',13271 => '𒈓',13272 => '𒈔',13273 => '𒈕',13274 => '𒈖',13275 => '𒈗',13276 => '𒈘',13277 => '𒈙',13278 => '𒈚',13279 => '𒈛',13280 => '𒈜',13281 => '𒈝',13282 => '𒈞',13283 => '𒈟',13284 => '𒈠',13285 => '𒈡',13286 => '𒈢',13287 => '𒈣',13288 => '𒈤',13289 => '𒈥',13290 => '𒈦',13291 => '𒈧',13292 => '𒈨',13293 => '𒈩',13294 => '𒈪',13295 => '𒈫',13296 => '𒈬',13297 => '𒈭',13298 => '𒈮',13299 => '𒈯',13300 => '𒈰',13301 => '𒈱',13302 => '𒈲',13303 => '𒈳',13304 => '𒈴',13305 => '𒈵',13306 => '𒈶',13307 => '𒈷',13308 => '𒈸',13309 => '𒈹',13310 => '𒈺',13311 => '𒈻',13312 => '𒈼',13313 => '𒈽',13314 => '𒈾',13315 => '𒈿',13316 => '𒉀',13317 => '𒉁',13318 => '𒉂',13319 => '𒉃',13320 => '𒉄',13321 => '𒉅',13322 => '𒉆',13323 => '𒉇',13324 => '𒉈',13325 => '𒉉',13326 => '𒉊',13327 => '𒉋',13328 => '𒉌',13329 => '𒉍',13330 => '𒉎',13331 => '𒉏',13332 => '𒉐',13333 => '𒉑',13334 => '𒉒',13335 => '𒉓',13336 => '𒉔',13337 => '𒉕',13338 => '𒉖',13339 => '𒉗',13340 => '𒉘',13341 => '𒉙',13342 => '𒉚',13343 => '𒉛',13344 => '𒉜',13345 => '𒉝',13346 => '𒉞',13347 => '𒉟',13348 => '𒉠',13349 => '𒉡',13350 => '𒉢',13351 => '𒉣',13352 => '𒉤',13353 => '𒉥',13354 => '𒉦',13355 => '𒉧',13356 => '𒉨',13357 => '𒉩',13358 => '𒉪',13359 => '𒉫',13360 => '𒉬',13361 => '𒉭',13362 => '𒉮',13363 => '𒉯',13364 => '𒉰',13365 => '𒉱',13366 => '𒉲',13367 => '𒉳',13368 => '𒉴',13369 => '𒉵',13370 => '𒉶',13371 => '𒉷',13372 => '𒉸',13373 => '𒉹',13374 => '𒉺',13375 => '𒉻',13376 => '𒉼',13377 => '𒉽',13378 => '𒉾',13379 => '𒉿',13380 => '𒊀',13381 => '𒊁',13382 => '𒊂',13383 => '𒊃',13384 => '𒊄',13385 => '𒊅',13386 => '𒊆',13387 => '𒊇',13388 => '𒊈',13389 => '𒊉',13390 => '𒊊',13391 => '𒊋',13392 => '𒊌',13393 => '𒊍',13394 => '𒊎',13395 => '𒊏',13396 => '𒊐',13397 => '𒊑',13398 => '𒊒',13399 => '𒊓',13400 => '𒊔',13401 => '𒊕',13402 => '𒊖',13403 => '𒊗',13404 => '𒊘',13405 => '𒊙',13406 => '𒊚',13407 => '𒊛',13408 => '𒊜',13409 => '𒊝',13410 => '𒊞',13411 => '𒊟',13412 => '𒊠',13413 => '𒊡',13414 => '𒊢',13415 => '𒊣',13416 => '𒊤',13417 => '𒊥',13418 => '𒊦',13419 => '𒊧',13420 => '𒊨',13421 => '𒊩',13422 => '𒊪',13423 => '𒊫',13424 => '𒊬',13425 => '𒊭',13426 => '𒊮',13427 => '𒊯',13428 => '𒊰',13429 => '𒊱',13430 => '𒊲',13431 => '𒊳',13432 => '𒊴',13433 => '𒊵',13434 => '𒊶',13435 => '𒊷',13436 => '𒊸',13437 => '𒊹',13438 => '𒊺',13439 => '𒊻',13440 => '𒊼',13441 => '𒊽',13442 => '𒊾',13443 => '𒊿',13444 => '𒋀',13445 => '𒋁',13446 => '𒋂',13447 => '𒋃',13448 => '𒋄',13449 => '𒋅',13450 => '𒋆',13451 => '𒋇',13452 => '𒋈',13453 => '𒋉',13454 => '𒋊',13455 => '𒋋',13456 => '𒋌',13457 => '𒋍',13458 => '𒋎',13459 => '𒋏',13460 => '𒋐',13461 => '𒋑',13462 => '𒋒',13463 => '𒋓',13464 => '𒋔',13465 => '𒋕',13466 => '𒋖',13467 => '𒋗',13468 => '𒋘',13469 => '𒋙',13470 => '𒋚',13471 => '𒋛',13472 => '𒋜',13473 => '𒋝',13474 => '𒋞',13475 => '𒋟',13476 => '𒋠',13477 => '𒋡',13478 => '𒋢',13479 => '𒋣',13480 => '𒋤',13481 => '𒋥',13482 => '𒋦',13483 => '𒋧',13484 => '𒋨',13485 => '𒋩',13486 => '𒋪',13487 => '𒋫',13488 => '𒋬',13489 => '𒋭',13490 => '𒋮',13491 => '𒋯',13492 => '𒋰',13493 => '𒋱',13494 => '𒋲',13495 => '𒋳',13496 => '𒋴',13497 => '𒋵',13498 => '𒋶',13499 => '𒋷',13500 => '𒋸',13501 => '𒋹',13502 => '𒋺',13503 => '𒋻',13504 => '𒋼',13505 => '𒋽',13506 => '𒋾',13507 => '𒋿',13508 => '𒌀',13509 => '𒌁',13510 => '𒌂',13511 => '𒌃',13512 => '𒌄',13513 => '𒌅',13514 => '𒌆',13515 => '𒌇',13516 => '𒌈',13517 => '𒌉',13518 => '𒌊',13519 => '𒌋',13520 => '𒌌',13521 => '𒌍',13522 => '𒌎',13523 => '𒌏',13524 => '𒌐',13525 => '𒌑',13526 => '𒌒',13527 => '𒌓',13528 => '𒌔',13529 => '𒌕',13530 => '𒌖',13531 => '𒌗',13532 => '𒌘',13533 => '𒌙',13534 => '𒌚',13535 => '𒌛',13536 => '𒌜',13537 => '𒌝',13538 => '𒌞',13539 => '𒌟',13540 => '𒌠',13541 => '𒌡',13542 => '𒌢',13543 => '𒌣',13544 => '𒌤',13545 => '𒌥',13546 => '𒌦',13547 => '𒌧',13548 => '𒌨',13549 => '𒌩',13550 => '𒌪',13551 => '𒌫',13552 => '𒌬',13553 => '𒌭',13554 => '𒌮',13555 => '𒌯',13556 => '𒌰',13557 => '𒌱',13558 => '𒌲',13559 => '𒌳',13560 => '𒌴',13561 => '𒌵',13562 => '𒌶',13563 => '𒌷',13564 => '𒌸',13565 => '𒌹',13566 => '𒌺',13567 => '𒌻',13568 => '𒌼',13569 => '𒌽',13570 => '𒌾',13571 => '𒌿',13572 => '𒍀',13573 => '𒍁',13574 => '𒍂',13575 => '𒍃',13576 => '𒍄',13577 => '𒍅',13578 => '𒍆',13579 => '𒍇',13580 => '𒍈',13581 => '𒍉',13582 => '𒍊',13583 => '𒍋',13584 => '𒍌',13585 => '𒍍',13586 => '𒍎',13587 => '𒍏',13588 => '𒍐',13589 => '𒍑',13590 => '𒍒',13591 => '𒍓',13592 => '𒍔',13593 => '𒍕',13594 => '𒍖',13595 => '𒍗',13596 => '𒍘',13597 => '𒍙',13598 => '𒍚',13599 => '𒍛',13600 => '𒍜',13601 => '𒍝',13602 => '𒍞',13603 => '𒍟',13604 => '𒍠',13605 => '𒍡',13606 => '𒍢',13607 => '𒍣',13608 => '𒍤',13609 => '𒍥',13610 => '𒍦',13611 => '𒍧',13612 => '𒍨',13613 => '𒍩',13614 => '𒍪',13615 => '𒍫',13616 => '𒍬',13617 => '𒍭',13618 => '𒍮',13619 => '𓀀',13620 => '𓀁',13621 => '𓀂',13622 => '𓀃',13623 => '𓀄',13624 => '𓀅',13625 => '𓀆',13626 => '𓀇',13627 => '𓀈',13628 => '𓀉',13629 => '𓀊',13630 => '𓀋',13631 => '𓀌',13632 => '𓀍',13633 => '𓀎',13634 => '𓀏',13635 => '𓀐',13636 => '𓀑',13637 => '𓀒',13638 => '𓀓',13639 => '𓀔',13640 => '𓀕',13641 => '𓀖',13642 => '𓀗',13643 => '𓀘',13644 => '𓀙',13645 => '𓀚',13646 => '𓀛',13647 => '𓀜',13648 => '𓀝',13649 => '𓀞',13650 => '𓀟',13651 => '𓀠',13652 => '𓀡',13653 => '𓀢',13654 => '𓀣',13655 => '𓀤',13656 => '𓀥',13657 => '𓀦',13658 => '𓀧',13659 => '𓀨',13660 => '𓀩',13661 => '𓀪',13662 => '𓀫',13663 => '𓀬',13664 => '𓀭',13665 => '𓀮',13666 => '𓀯',13667 => '𓀰',13668 => '𓀱',13669 => '𓀲',13670 => '𓀳',13671 => '𓀴',13672 => '𓀵',13673 => '𓀶',13674 => '𓀷',13675 => '𓀸',13676 => '𓀹',13677 => '𓀺',13678 => '𓀻',13679 => '𓀼',13680 => '𓀽',13681 => '𓀾',13682 => '𓀿',13683 => '𓁀',13684 => '𓁁',13685 => '𓁂',13686 => '𓁃',13687 => '𓁄',13688 => '𓁅',13689 => '𓁆',13690 => '𓁇',13691 => '𓁈',13692 => '𓁉',13693 => '𓁊',13694 => '𓁋',13695 => '𓁌',13696 => '𓁍',13697 => '𓁎',13698 => '𓁏',13699 => '𓁐',13700 => '𓁑',13701 => '𓁒',13702 => '𓁓',13703 => '𓁔',13704 => '𓁕',13705 => '𓁖',13706 => '𓁗',13707 => '𓁘',13708 => '𓁙',13709 => '𓁚',13710 => '𓁛',13711 => '𓁜',13712 => '𓁝',13713 => '𓁞',13714 => '𓁟',13715 => '𓁠',13716 => '𓁡',13717 => '𓁢',13718 => '𓁣',13719 => '𓁤',13720 => '𓁥',13721 => '𓁦',13722 => '𓁧',13723 => '𓁨',13724 => '𓁩',13725 => '𓁪',13726 => '𓁫',13727 => '𓁬',13728 => '𓁭',13729 => '𓁮',13730 => '𓁯',13731 => '𓁰',13732 => '𓁱',13733 => '𓁲',13734 => '𓁳',13735 => '𓁴',13736 => '𓁵',13737 => '𓁶',13738 => '𓁷',13739 => '𓁸',13740 => '𓁹',13741 => '𓁺',13742 => '𓁻',13743 => '𓁼',13744 => '𓁽',13745 => '𓁾',13746 => '𓁿',13747 => '𓂀',13748 => '𓂁',13749 => '𓂂',13750 => '𓂃',13751 => '𓂄',13752 => '𓂅',13753 => '𓂆',13754 => '𓂇',13755 => '𓂈',13756 => '𓂉',13757 => '𓂊',13758 => '𓂋',13759 => '𓂌',13760 => '𓂍',13761 => '𓂎',13762 => '𓂏',13763 => '𓂐',13764 => '𓂑',13765 => '𓂒',13766 => '𓂓',13767 => '𓂔',13768 => '𓂕',13769 => '𓂖',13770 => '𓂗',13771 => '𓂘',13772 => '𓂙',13773 => '𓂚',13774 => '𓂛',13775 => '𓂜',13776 => '𓂝',13777 => '𓂞',13778 => '𓂟',13779 => '𓂠',13780 => '𓂡',13781 => '𓂢',13782 => '𓂣',13783 => '𓂤',13784 => '𓂥',13785 => '𓂦',13786 => '𓂧',13787 => '𓂨',13788 => '𓂩',13789 => '𓂪',13790 => '𓂫',13791 => '𓂬',13792 => '𓂭',13793 => '𓂮',13794 => '𓂯',13795 => '𓂰',13796 => '𓂱',13797 => '𓂲',13798 => '𓂳',13799 => '𓂴',13800 => '𓂵',13801 => '𓂶',13802 => '𓂷',13803 => '𓂸',13804 => '𓂹',13805 => '𓂺',13806 => '𓂻',13807 => '𓂼',13808 => '𓂽',13809 => '𓂾',13810 => '𓂿',13811 => '𓃀',13812 => '𓃁',13813 => '𓃂',13814 => '𓃃',13815 => '𓃄',13816 => '𓃅',13817 => '𓃆',13818 => '𓃇',13819 => '𓃈',13820 => '𓃉',13821 => '𓃊',13822 => '𓃋',13823 => '𓃌',13824 => '𓃍',13825 => '𓃎',13826 => '𓃏',13827 => '𓃐',13828 => '𓃑',13829 => '𓃒',13830 => '𓃓',13831 => '𓃔',13832 => '𓃕',13833 => '𓃖',13834 => '𓃗',13835 => '𓃘',13836 => '𓃙',13837 => '𓃚',13838 => '𓃛',13839 => '𓃜',13840 => '𓃝',13841 => '𓃞',13842 => '𓃟',13843 => '𓃠',13844 => '𓃡',13845 => '𓃢',13846 => '𓃣',13847 => '𓃤',13848 => '𓃥',13849 => '𓃦',13850 => '𓃧',13851 => '𓃨',13852 => '𓃩',13853 => '𓃪',13854 => '𓃫',13855 => '𓃬',13856 => '𓃭',13857 => '𓃮',13858 => '𓃯',13859 => '𓃰',13860 => '𓃱',13861 => '𓃲',13862 => '𓃳',13863 => '𓃴',13864 => '𓃵',13865 => '𓃶',13866 => '𓃷',13867 => '𓃸',13868 => '𓃹',13869 => '𓃺',13870 => '𓃻',13871 => '𓃼',13872 => '𓃽',13873 => '𓃾',13874 => '𓃿',13875 => '𓄀',13876 => '𓄁',13877 => '𓄂',13878 => '𓄃',13879 => '𓄄',13880 => '𓄅',13881 => '𓄆',13882 => '𓄇',13883 => '𓄈',13884 => '𓄉',13885 => '𓄊',13886 => '𓄋',13887 => '𓄌',13888 => '𓄍',13889 => '𓄎',13890 => '𓄏',13891 => '𓄐',13892 => '𓄑',13893 => '𓄒',13894 => '𓄓',13895 => '𓄔',13896 => '𓄕',13897 => '𓄖',13898 => '𓄗',13899 => '𓄘',13900 => '𓄙',13901 => '𓄚',13902 => '𓄛',13903 => '𓄜',13904 => '𓄝',13905 => '𓄞',13906 => '𓄟',13907 => '𓄠',13908 => '𓄡',13909 => '𓄢',13910 => '𓄣',13911 => '𓄤',13912 => '𓄥',13913 => '𓄦',13914 => '𓄧',13915 => '𓄨',13916 => '𓄩',13917 => '𓄪',13918 => '𓄫',13919 => '𓄬',13920 => '𓄭',13921 => '𓄮',13922 => '𓄯',13923 => '𓄰',13924 => '𓄱',13925 => '𓄲',13926 => '𓄳',13927 => '𓄴',13928 => '𓄵',13929 => '𓄶',13930 => '𓄷',13931 => '𓄸',13932 => '𓄹',13933 => '𓄺',13934 => '𓄻',13935 => '𓄼',13936 => '𓄽',13937 => '𓄾',13938 => '𓄿',13939 => '𓅀',13940 => '𓅁',13941 => '𓅂',13942 => '𓅃',13943 => '𓅄',13944 => '𓅅',13945 => '𓅆',13946 => '𓅇',13947 => '𓅈',13948 => '𓅉',13949 => '𓅊',13950 => '𓅋',13951 => '𓅌',13952 => '𓅍',13953 => '𓅎',13954 => '𓅏',13955 => '𓅐',13956 => '𓅑',13957 => '𓅒',13958 => '𓅓',13959 => '𓅔',13960 => '𓅕',13961 => '𓅖',13962 => '𓅗',13963 => '𓅘',13964 => '𓅙',13965 => '𓅚',13966 => '𓅛',13967 => '𓅜',13968 => '𓅝',13969 => '𓅞',13970 => '𓅟',13971 => '𓅠',13972 => '𓅡',13973 => '𓅢',13974 => '𓅣',13975 => '𓅤',13976 => '𓅥',13977 => '𓅦',13978 => '𓅧',13979 => '𓅨',13980 => '𓅩',13981 => '𓅪',13982 => '𓅫',13983 => '𓅬',13984 => '𓅭',13985 => '𓅮',13986 => '𓅯',13987 => '𓅰',13988 => '𓅱',13989 => '𓅲',13990 => '𓅳',13991 => '𓅴',13992 => '𓅵',13993 => '𓅶',13994 => '𓅷',13995 => '𓅸',13996 => '𓅹',13997 => '𓅺',13998 => '𓅻',13999 => '𓅼',14000 => '𓅽',14001 => '𓅾',14002 => '𓅿',14003 => '𓆀',14004 => '𓆁',14005 => '𓆂',14006 => '𓆃',14007 => '𓆄',14008 => '𓆅',14009 => '𓆆',14010 => '𓆇',14011 => '𓆈',14012 => '𓆉',14013 => '𓆊',14014 => '𓆋',14015 => '𓆌',14016 => '𓆍',14017 => '𓆎',14018 => '𓆏',14019 => '𓆐',14020 => '𓆑',14021 => '𓆒',14022 => '𓆓',14023 => '𓆔',14024 => '𓆕',14025 => '𓆖',14026 => '𓆗',14027 => '𓆘',14028 => '𓆙',14029 => '𓆚',14030 => '𓆛',14031 => '𓆜',14032 => '𓆝',14033 => '𓆞',14034 => '𓆟',14035 => '𓆠',14036 => '𓆡',14037 => '𓆢',14038 => '𓆣',14039 => '𓆤',14040 => '𓆥',14041 => '𓆦',14042 => '𓆧',14043 => '𓆨',14044 => '𓆩',14045 => '𓆪',14046 => '𓆫',14047 => '𓆬',14048 => '𓆭',14049 => '𓆮',14050 => '𓆯',14051 => '𓆰',14052 => '𓆱',14053 => '𓆲',14054 => '𓆳',14055 => '𓆴',14056 => '𓆵',14057 => '𓆶',14058 => '𓆷',14059 => '𓆸',14060 => '𓆹',14061 => '𓆺',14062 => '𓆻',14063 => '𓆼',14064 => '𓆽',14065 => '𓆾',14066 => '𓆿',14067 => '𓇀',14068 => '𓇁',14069 => '𓇂',14070 => '𓇃',14071 => '𓇄',14072 => '𓇅',14073 => '𓇆',14074 => '𓇇',14075 => '𓇈',14076 => '𓇉',14077 => '𓇊',14078 => '𓇋',14079 => '𓇌',14080 => '𓇍',14081 => '𓇎',14082 => '𓇏',14083 => '𓇐',14084 => '𓇑',14085 => '𓇒',14086 => '𓇓',14087 => '𓇔',14088 => '𓇕',14089 => '𓇖',14090 => '𓇗',14091 => '𓇘',14092 => '𓇙',14093 => '𓇚',14094 => '𓇛',14095 => '𓇜',14096 => '𓇝',14097 => '𓇞',14098 => '𓇟',14099 => '𓇠',14100 => '𓇡',14101 => '𓇢',14102 => '𓇣',14103 => '𓇤',14104 => '𓇥',14105 => '𓇦',14106 => '𓇧',14107 => '𓇨',14108 => '𓇩',14109 => '𓇪',14110 => '𓇫',14111 => '𓇬',14112 => '𓇭',14113 => '𓇮',14114 => '𓇯',14115 => '𓇰',14116 => '𓇱',14117 => '𓇲',14118 => '𓇳',14119 => '𓇴',14120 => '𓇵',14121 => '𓇶',14122 => '𓇷',14123 => '𓇸',14124 => '𓇹',14125 => '𓇺',14126 => '𓇻',14127 => '𓇼',14128 => '𓇽',14129 => '𓇾',14130 => '𓇿',14131 => '𓈀',14132 => '𓈁',14133 => '𓈂',14134 => '𓈃',14135 => '𓈄',14136 => '𓈅',14137 => '𓈆',14138 => '𓈇',14139 => '𓈈',14140 => '𓈉',14141 => '𓈊',14142 => '𓈋',14143 => '𓈌',14144 => '𓈍',14145 => '𓈎',14146 => '𓈏',14147 => '𓈐',14148 => '𓈑',14149 => '𓈒',14150 => '𓈓',14151 => '𓈔',14152 => '𓈕',14153 => '𓈖',14154 => '𓈗',14155 => '𓈘',14156 => '𓈙',14157 => '𓈚',14158 => '𓈛',14159 => '𓈜',14160 => '𓈝',14161 => '𓈞',14162 => '𓈟',14163 => '𓈠',14164 => '𓈡',14165 => '𓈢',14166 => '𓈣',14167 => '𓈤',14168 => '𓈥',14169 => '𓈦',14170 => '𓈧',14171 => '𓈨',14172 => '𓈩',14173 => '𓈪',14174 => '𓈫',14175 => '𓈬',14176 => '𓈭',14177 => '𓈮',14178 => '𓈯',14179 => '𓈰',14180 => '𓈱',14181 => '𓈲',14182 => '𓈳',14183 => '𓈴',14184 => '𓈵',14185 => '𓈶',14186 => '𓈷',14187 => '𓈸',14188 => '𓈹',14189 => '𓈺',14190 => '𓈻',14191 => '𓈼',14192 => '𓈽',14193 => '𓈾',14194 => '𓈿',14195 => '𓉀',14196 => '𓉁',14197 => '𓉂',14198 => '𓉃',14199 => '𓉄',14200 => '𓉅',14201 => '𓉆',14202 => '𓉇',14203 => '𓉈',14204 => '𓉉',14205 => '𓉊',14206 => '𓉋',14207 => '𓉌',14208 => '𓉍',14209 => '𓉎',14210 => '𓉏',14211 => '𓉐',14212 => '𓉑',14213 => '𓉒',14214 => '𓉓',14215 => '𓉔',14216 => '𓉕',14217 => '𓉖',14218 => '𓉗',14219 => '𓉘',14220 => '𓉙',14221 => '𓉚',14222 => '𓉛',14223 => '𓉜',14224 => '𓉝',14225 => '𓉞',14226 => '𓉟',14227 => '𓉠',14228 => '𓉡',14229 => '𓉢',14230 => '𓉣',14231 => '𓉤',14232 => '𓉥',14233 => '𓉦',14234 => '𓉧',14235 => '𓉨',14236 => '𓉩',14237 => '𓉪',14238 => '𓉫',14239 => '𓉬',14240 => '𓉭',14241 => '𓉮',14242 => '𓉯',14243 => '𓉰',14244 => '𓉱',14245 => '𓉲',14246 => '𓉳',14247 => '𓉴',14248 => '𓉵',14249 => '𓉶',14250 => '𓉷',14251 => '𓉸',14252 => '𓉹',14253 => '𓉺',14254 => '𓉻',14255 => '𓉼',14256 => '𓉽',14257 => '𓉾',14258 => '𓉿',14259 => '𓊀',14260 => '𓊁',14261 => '𓊂',14262 => '𓊃',14263 => '𓊄',14264 => '𓊅',14265 => '𓊆',14266 => '𓊇',14267 => '𓊈',14268 => '𓊉',14269 => '𓊊',14270 => '𓊋',14271 => '𓊌',14272 => '𓊍',14273 => '𓊎',14274 => '𓊏',14275 => '𓊐',14276 => '𓊑',14277 => '𓊒',14278 => '𓊓',14279 => '𓊔',14280 => '𓊕',14281 => '𓊖',14282 => '𓊗',14283 => '𓊘',14284 => '𓊙',14285 => '𓊚',14286 => '𓊛',14287 => '𓊜',14288 => '𓊝',14289 => '𓊞',14290 => '𓊟',14291 => '𓊠',14292 => '𓊡',14293 => '𓊢',14294 => '𓊣',14295 => '𓊤',14296 => '𓊥',14297 => '𓊦',14298 => '𓊧',14299 => '𓊨',14300 => '𓊩',14301 => '𓊪',14302 => '𓊫',14303 => '𓊬',14304 => '𓊭',14305 => '𓊮',14306 => '𓊯',14307 => '𓊰',14308 => '𓊱',14309 => '𓊲',14310 => '𓊳',14311 => '𓊴',14312 => '𓊵',14313 => '𓊶',14314 => '𓊷',14315 => '𓊸',14316 => '𓊹',14317 => '𓊺',14318 => '𓊻',14319 => '𓊼',14320 => '𓊽',14321 => '𓊾',14322 => '𓊿',14323 => '𓋀',14324 => '𓋁',14325 => '𓋂',14326 => '𓋃',14327 => '𓋄',14328 => '𓋅',14329 => '𓋆',14330 => '𓋇',14331 => '𓋈',14332 => '𓋉',14333 => '𓋊',14334 => '𓋋',14335 => '𓋌',14336 => '𓋍',14337 => '𓋎',14338 => '𓋏',14339 => '𓋐',14340 => '𓋑',14341 => '𓋒',14342 => '𓋓',14343 => '𓋔',14344 => '𓋕',14345 => '𓋖',14346 => '𓋗',14347 => '𓋘',14348 => '𓋙',14349 => '𓋚',14350 => '𓋛',14351 => '𓋜',14352 => '𓋝',14353 => '𓋞',14354 => '𓋟',14355 => '𓋠',14356 => '𓋡',14357 => '𓋢',14358 => '𓋣',14359 => '𓋤',14360 => '𓋥',14361 => '𓋦',14362 => '𓋧',14363 => '𓋨',14364 => '𓋩',14365 => '𓋪',14366 => '𓋫',14367 => '𓋬',14368 => '𓋭',14369 => '𓋮',14370 => '𓋯',14371 => '𓋰',14372 => '𓋱',14373 => '𓋲',14374 => '𓋳',14375 => '𓋴',14376 => '𓋵',14377 => '𓋶',14378 => '𓋷',14379 => '𓋸',14380 => '𓋹',14381 => '𓋺',14382 => '𓋻',14383 => '𓋼',14384 => '𓋽',14385 => '𓋾',14386 => '𓋿',14387 => '𓌀',14388 => '𓌁',14389 => '𓌂',14390 => '𓌃',14391 => '𓌄',14392 => '𓌅',14393 => '𓌆',14394 => '𓌇',14395 => '𓌈',14396 => '𓌉',14397 => '𓌊',14398 => '𓌋',14399 => '𓌌',14400 => '𓌍',14401 => '𓌎',14402 => '𓌏',14403 => '𓌐',14404 => '𓌑',14405 => '𓌒',14406 => '𓌓',14407 => '𓌔',14408 => '𓌕',14409 => '𓌖',14410 => '𓌗',14411 => '𓌘',14412 => '𓌙',14413 => '𓌚',14414 => '𓌛',14415 => '𓌜',14416 => '𓌝',14417 => '𓌞',14418 => '𓌟',14419 => '𓌠',14420 => '𓌡',14421 => '𓌢',14422 => '𓌣',14423 => '𓌤',14424 => '𓌥',14425 => '𓌦',14426 => '𓌧',14427 => '𓌨',14428 => '𓌩',14429 => '𓌪',14430 => '𓌫',14431 => '𓌬',14432 => '𓌭',14433 => '𓌮',14434 => '𓌯',14435 => '𓌰',14436 => '𓌱',14437 => '𓌲',14438 => '𓌳',14439 => '𓌴',14440 => '𓌵',14441 => '𓌶',14442 => '𓌷',14443 => '𓌸',14444 => '𓌹',14445 => '𓌺',14446 => '𓌻',14447 => '𓌼',14448 => '𓌽',14449 => '𓌾',14450 => '𓌿',14451 => '𓍀',14452 => '𓍁',14453 => '𓍂',14454 => '𓍃',14455 => '𓍄',14456 => '𓍅',14457 => '𓍆',14458 => '𓍇',14459 => '𓍈',14460 => '𓍉',14461 => '𓍊',14462 => '𓍋',14463 => '𓍌',14464 => '𓍍',14465 => '𓍎',14466 => '𓍏',14467 => '𓍐',14468 => '𓍑',14469 => '𓍒',14470 => '𓍓',14471 => '𓍔',14472 => '𓍕',14473 => '𓍖',14474 => '𓍗',14475 => '𓍘',14476 => '𓍙',14477 => '𓍚',14478 => '𓍛',14479 => '𓍜',14480 => '𓍝',14481 => '𓍞',14482 => '𓍟',14483 => '𓍠',14484 => '𓍡',14485 => '𓍢',14486 => '𓍣',14487 => '𓍤',14488 => '𓍥',14489 => '𓍦',14490 => '𓍧',14491 => '𓍨',14492 => '𓍩',14493 => '𓍪',14494 => '𓍫',14495 => '𓍬',14496 => '𓍭',14497 => '𓍮',14498 => '𓍯',14499 => '𓍰',14500 => '𓍱',14501 => '𓍲',14502 => '𓍳',14503 => '𓍴',14504 => '𓍵',14505 => '𓍶',14506 => '𓍷',14507 => '𓍸',14508 => '𓍹',14509 => '𓍺',14510 => '𓍻',14511 => '𓍼',14512 => '𓍽',14513 => '𓍾',14514 => '𓍿',14515 => '𓎀',14516 => '𓎁',14517 => '𓎂',14518 => '𓎃',14519 => '𓎄',14520 => '𓎅',14521 => '𓎆',14522 => '𓎇',14523 => '𓎈',14524 => '𓎉',14525 => '𓎊',14526 => '𓎋',14527 => '𓎌',14528 => '𓎍',14529 => '𓎎',14530 => '𓎏',14531 => '𓎐',14532 => '𓎑',14533 => '𓎒',14534 => '𓎓',14535 => '𓎔',14536 => '𓎕',14537 => '𓎖',14538 => '𓎗',14539 => '𓎘',14540 => '𓎙',14541 => '𓎚',14542 => '𓎛',14543 => '𓎜',14544 => '𓎝',14545 => '𓎞',14546 => '𓎟',14547 => '𓎠',14548 => '𓎡',14549 => '𓎢',14550 => '𓎣',14551 => '𓎤',14552 => '𓎥',14553 => '𓎦',14554 => '𓎧',14555 => '𓎨',14556 => '𓎩',14557 => '𓎪',14558 => '𓎫',14559 => '𓎬',14560 => '𓎭',14561 => '𓎮',14562 => '𓎯',14563 => '𓎰',14564 => '𓎱',14565 => '𓎲',14566 => '𓎳',14567 => '𓎴',14568 => '𓎵',14569 => '𓎶',14570 => '𓎷',14571 => '𓎸',14572 => '𓎹',14573 => '𓎺',14574 => '𓎻',14575 => '𓎼',14576 => '𓎽',14577 => '𓎾',14578 => '𓎿',14579 => '𓏀',14580 => '𓏁',14581 => '𓏂',14582 => '𓏃',14583 => '𓏄',14584 => '𓏅',14585 => '𓏆',14586 => '𓏇',14587 => '𓏈',14588 => '𓏉',14589 => '𓏊',14590 => '𓏋',14591 => '𓏌',14592 => '𓏍',14593 => '𓏎',14594 => '𓏏',14595 => '𓏐',14596 => '𓏑',14597 => '𓏒',14598 => '𓏓',14599 => '𓏔',14600 => '𓏕',14601 => '𓏖',14602 => '𓏗',14603 => '𓏘',14604 => '𓏙',14605 => '𓏚',14606 => '𓏛',14607 => '𓏜',14608 => '𓏝',14609 => '𓏞',14610 => '𓏟',14611 => '𓏠',14612 => '𓏡',14613 => '𓏢',14614 => '𓏣',14615 => '𓏤',14616 => '𓏥',14617 => '𓏦',14618 => '𓏧',14619 => '𓏨',14620 => '𓏩',14621 => '𓏪',14622 => '𓏫',14623 => '𓏬',14624 => '𓏭',14625 => '𓏮',14626 => '𓏯',14627 => '𓏰',14628 => '𓏱',14629 => '𓏲',14630 => '𓏳',14631 => '𓏴',14632 => '𓏵',14633 => '𓏶',14634 => '𓏷',14635 => '𓏸',14636 => '𓏹',14637 => '𓏺',14638 => '𓏻',14639 => '𓏼',14640 => '𓏽',14641 => '𓏾',14642 => '𓏿',14643 => '𓐀',14644 => '𓐁',14645 => '𓐂',14646 => '𓐃',14647 => '𓐄',14648 => '𓐅',14649 => '𓐆',14650 => '𓐇',14651 => '𓐈',14652 => '𓐉',14653 => '𓐊',14654 => '𓐋',14655 => '𓐌',14656 => '𓐍',14657 => '𓐎',14658 => '𓐏',14659 => '𓐐',14660 => '𓐑',14661 => '𓐒',14662 => '𓐓',14663 => '𓐔',14664 => '𓐕',14665 => '𓐖',14666 => '𓐗',14667 => '𓐘',14668 => '𓐙',14669 => '𓐚',14670 => '𓐛',14671 => '𓐜',14672 => '𓐝',14673 => '𓐞',14674 => '𓐟',14675 => '𓐠',14676 => '𓐡',14677 => '𓐢',14678 => '𓐣',14679 => '𓐤',14680 => '𓐥',14681 => '𓐦',14682 => '𓐧',14683 => '𓐨',14684 => '𓐩',14685 => '𓐪',14686 => '𓐫',14687 => '𓐬',14688 => '𓐭',14689 => '𓐮',]
Definitionfirst-letters-root.php:14694
MediaWiki\Config\Config
Interface for configuration instances.
DefinitionConfig.php:18
MediaWiki\User\UserIdentity
Interface for objects representing user identity.
DefinitionUserIdentity.php:24
Wikimedia\Message\MessageSpecifier
DefinitionMessageSpecifier.php:12
MediaWiki\Language
DefinitionConverterRule.php:8
MediaWiki\Watchlist\msg
msg( $key,... $params)

[8]ページ先頭

©2009-2025 Movatter.jp