tables.odin 65 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892
  1. package unicode
  2. @(private) pC :: 1<<0 // a control character.
  3. @(private) pP :: 1<<1 // a punctuation character.
  4. @(private) pN :: 1<<2 // a numeral.
  5. @(private) pS :: 1<<3 // a symbolic character.
  6. @(private) pZ :: 1<<4 // a spacing character.
  7. @(private) pLu :: 1<<5 // an upper-case letter.
  8. @(private) pLl :: 1<<6 // a lower-case letter.
  9. @(private) pp :: 1<<7 // a printable character according to Go's definition.
  10. @(private) pg :: pp | pZ // a graphical character according to the Unicode definition.
  11. @(private) pLo :: pLl | pLu // a letter that is neither upper nor lower case.
  12. @(private) pLmask :: pLo
  13. @(rodata)
  14. char_properties := [MAX_LATIN1+1]u8{
  15. 0x00 = pC, // '\x00'
  16. 0x01 = pC, // '\x01'
  17. 0x02 = pC, // '\x02'
  18. 0x03 = pC, // '\x03'
  19. 0x04 = pC, // '\x04'
  20. 0x05 = pC, // '\x05'
  21. 0x06 = pC, // '\x06'
  22. 0x07 = pC, // '\a'
  23. 0x08 = pC, // '\b'
  24. 0x09 = pC, // '\t'
  25. 0x0A = pC, // '\n'
  26. 0x0B = pC, // '\v'
  27. 0x0C = pC, // '\f'
  28. 0x0D = pC, // '\r'
  29. 0x0E = pC, // '\x0e'
  30. 0x0F = pC, // '\x0f'
  31. 0x10 = pC, // '\x10'
  32. 0x11 = pC, // '\x11'
  33. 0x12 = pC, // '\x12'
  34. 0x13 = pC, // '\x13'
  35. 0x14 = pC, // '\x14'
  36. 0x15 = pC, // '\x15'
  37. 0x16 = pC, // '\x16'
  38. 0x17 = pC, // '\x17'
  39. 0x18 = pC, // '\x18'
  40. 0x19 = pC, // '\x19'
  41. 0x1A = pC, // '\x1a'
  42. 0x1B = pC, // '\x1b'
  43. 0x1C = pC, // '\x1c'
  44. 0x1D = pC, // '\x1d'
  45. 0x1E = pC, // '\x1e'
  46. 0x1F = pC, // '\x1f'
  47. 0x20 = pZ | pp, // ' '
  48. 0x21 = pP | pp, // '!'
  49. 0x22 = pP | pp, // '"'
  50. 0x23 = pP | pp, // '#'
  51. 0x24 = pS | pp, // '$'
  52. 0x25 = pP | pp, // '%'
  53. 0x26 = pP | pp, // '&'
  54. 0x27 = pP | pp, // '\''
  55. 0x28 = pP | pp, // '('
  56. 0x29 = pP | pp, // ')'
  57. 0x2A = pP | pp, // '*'
  58. 0x2B = pS | pp, // '+'
  59. 0x2C = pP | pp, // ','
  60. 0x2D = pP | pp, // '-'
  61. 0x2E = pP | pp, // '.'
  62. 0x2F = pP | pp, // '/'
  63. 0x30 = pN | pp, // '0'
  64. 0x31 = pN | pp, // '1'
  65. 0x32 = pN | pp, // '2'
  66. 0x33 = pN | pp, // '3'
  67. 0x34 = pN | pp, // '4'
  68. 0x35 = pN | pp, // '5'
  69. 0x36 = pN | pp, // '6'
  70. 0x37 = pN | pp, // '7'
  71. 0x38 = pN | pp, // '8'
  72. 0x39 = pN | pp, // '9'
  73. 0x3A = pP | pp, // ':'
  74. 0x3B = pP | pp, // ';'
  75. 0x3C = pS | pp, // '<'
  76. 0x3D = pS | pp, // '='
  77. 0x3E = pS | pp, // '>'
  78. 0x3F = pP | pp, // '?'
  79. 0x40 = pP | pp, // '@'
  80. 0x41 = pLu | pp, // 'A'
  81. 0x42 = pLu | pp, // 'B'
  82. 0x43 = pLu | pp, // 'C'
  83. 0x44 = pLu | pp, // 'D'
  84. 0x45 = pLu | pp, // 'E'
  85. 0x46 = pLu | pp, // 'F'
  86. 0x47 = pLu | pp, // 'G'
  87. 0x48 = pLu | pp, // 'H'
  88. 0x49 = pLu | pp, // 'I'
  89. 0x4A = pLu | pp, // 'J'
  90. 0x4B = pLu | pp, // 'K'
  91. 0x4C = pLu | pp, // 'L'
  92. 0x4D = pLu | pp, // 'M'
  93. 0x4E = pLu | pp, // 'N'
  94. 0x4F = pLu | pp, // 'O'
  95. 0x50 = pLu | pp, // 'P'
  96. 0x51 = pLu | pp, // 'Q'
  97. 0x52 = pLu | pp, // 'R'
  98. 0x53 = pLu | pp, // 'S'
  99. 0x54 = pLu | pp, // 'T'
  100. 0x55 = pLu | pp, // 'U'
  101. 0x56 = pLu | pp, // 'V'
  102. 0x57 = pLu | pp, // 'W'
  103. 0x58 = pLu | pp, // 'X'
  104. 0x59 = pLu | pp, // 'Y'
  105. 0x5A = pLu | pp, // 'Z'
  106. 0x5B = pP | pp, // '['
  107. 0x5C = pP | pp, // '\\'
  108. 0x5D = pP | pp, // ']'
  109. 0x5E = pS | pp, // '^'
  110. 0x5F = pP | pp, // '_'
  111. 0x60 = pS | pp, // '`'
  112. 0x61 = pLl | pp, // 'a'
  113. 0x62 = pLl | pp, // 'b'
  114. 0x63 = pLl | pp, // 'c'
  115. 0x64 = pLl | pp, // 'd'
  116. 0x65 = pLl | pp, // 'e'
  117. 0x66 = pLl | pp, // 'f'
  118. 0x67 = pLl | pp, // 'g'
  119. 0x68 = pLl | pp, // 'h'
  120. 0x69 = pLl | pp, // 'i'
  121. 0x6A = pLl | pp, // 'j'
  122. 0x6B = pLl | pp, // 'k'
  123. 0x6C = pLl | pp, // 'l'
  124. 0x6D = pLl | pp, // 'm'
  125. 0x6E = pLl | pp, // 'n'
  126. 0x6F = pLl | pp, // 'o'
  127. 0x70 = pLl | pp, // 'p'
  128. 0x71 = pLl | pp, // 'q'
  129. 0x72 = pLl | pp, // 'r'
  130. 0x73 = pLl | pp, // 's'
  131. 0x74 = pLl | pp, // 't'
  132. 0x75 = pLl | pp, // 'u'
  133. 0x76 = pLl | pp, // 'v'
  134. 0x77 = pLl | pp, // 'w'
  135. 0x78 = pLl | pp, // 'x'
  136. 0x79 = pLl | pp, // 'y'
  137. 0x7A = pLl | pp, // 'z'
  138. 0x7B = pP | pp, // '{'
  139. 0x7C = pS | pp, // '|'
  140. 0x7D = pP | pp, // '}'
  141. 0x7E = pS | pp, // '~'
  142. 0x7F = pC, // '\u007f'
  143. 0x80 = pC, // '\u0080'
  144. 0x81 = pC, // '\u0081'
  145. 0x82 = pC, // '\u0082'
  146. 0x83 = pC, // '\u0083'
  147. 0x84 = pC, // '\u0084'
  148. 0x85 = pC, // '\u0085'
  149. 0x86 = pC, // '\u0086'
  150. 0x87 = pC, // '\u0087'
  151. 0x88 = pC, // '\u0088'
  152. 0x89 = pC, // '\u0089'
  153. 0x8A = pC, // '\u008a'
  154. 0x8B = pC, // '\u008b'
  155. 0x8C = pC, // '\u008c'
  156. 0x8D = pC, // '\u008d'
  157. 0x8E = pC, // '\u008e'
  158. 0x8F = pC, // '\u008f'
  159. 0x90 = pC, // '\u0090'
  160. 0x91 = pC, // '\u0091'
  161. 0x92 = pC, // '\u0092'
  162. 0x93 = pC, // '\u0093'
  163. 0x94 = pC, // '\u0094'
  164. 0x95 = pC, // '\u0095'
  165. 0x96 = pC, // '\u0096'
  166. 0x97 = pC, // '\u0097'
  167. 0x98 = pC, // '\u0098'
  168. 0x99 = pC, // '\u0099'
  169. 0x9A = pC, // '\u009a'
  170. 0x9B = pC, // '\u009b'
  171. 0x9C = pC, // '\u009c'
  172. 0x9D = pC, // '\u009d'
  173. 0x9E = pC, // '\u009e'
  174. 0x9F = pC, // '\u009f'
  175. 0xA0 = pZ, // '\u00a0'
  176. 0xA1 = pP | pp, // '¡'
  177. 0xA2 = pS | pp, // '¢'
  178. 0xA3 = pS | pp, // '£'
  179. 0xA4 = pS | pp, // '¤'
  180. 0xA5 = pS | pp, // '¥'
  181. 0xA6 = pS | pp, // '¦'
  182. 0xA7 = pP | pp, // '§'
  183. 0xA8 = pS | pp, // '¨'
  184. 0xA9 = pS | pp, // '©'
  185. 0xAA = pLo | pp, // 'ª'
  186. 0xAB = pP | pp, // '«'
  187. 0xAC = pS | pp, // '¬'
  188. 0xAD = 0, // '\u00ad'
  189. 0xAE = pS | pp, // '®'
  190. 0xAF = pS | pp, // '¯'
  191. 0xB0 = pS | pp, // '°'
  192. 0xB1 = pS | pp, // '±'
  193. 0xB2 = pN | pp, // '²'
  194. 0xB3 = pN | pp, // '³'
  195. 0xB4 = pS | pp, // '´'
  196. 0xB5 = pLl | pp, // 'µ'
  197. 0xB6 = pP | pp, // '¶'
  198. 0xB7 = pP | pp, // '·'
  199. 0xB8 = pS | pp, // '¸'
  200. 0xB9 = pN | pp, // '¹'
  201. 0xBA = pLo | pp, // 'º'
  202. 0xBB = pP | pp, // '»'
  203. 0xBC = pN | pp, // '¼'
  204. 0xBD = pN | pp, // '½'
  205. 0xBE = pN | pp, // '¾'
  206. 0xBF = pP | pp, // '¿'
  207. 0xC0 = pLu | pp, // 'À'
  208. 0xC1 = pLu | pp, // 'Á'
  209. 0xC2 = pLu | pp, // 'Â'
  210. 0xC3 = pLu | pp, // 'Ã'
  211. 0xC4 = pLu | pp, // 'Ä'
  212. 0xC5 = pLu | pp, // 'Å'
  213. 0xC6 = pLu | pp, // 'Æ'
  214. 0xC7 = pLu | pp, // 'Ç'
  215. 0xC8 = pLu | pp, // 'È'
  216. 0xC9 = pLu | pp, // 'É'
  217. 0xCA = pLu | pp, // 'Ê'
  218. 0xCB = pLu | pp, // 'Ë'
  219. 0xCC = pLu | pp, // 'Ì'
  220. 0xCD = pLu | pp, // 'Í'
  221. 0xCE = pLu | pp, // 'Î'
  222. 0xCF = pLu | pp, // 'Ï'
  223. 0xD0 = pLu | pp, // 'Ð'
  224. 0xD1 = pLu | pp, // 'Ñ'
  225. 0xD2 = pLu | pp, // 'Ò'
  226. 0xD3 = pLu | pp, // 'Ó'
  227. 0xD4 = pLu | pp, // 'Ô'
  228. 0xD5 = pLu | pp, // 'Õ'
  229. 0xD6 = pLu | pp, // 'Ö'
  230. 0xD7 = pS | pp, // '×'
  231. 0xD8 = pLu | pp, // 'Ø'
  232. 0xD9 = pLu | pp, // 'Ù'
  233. 0xDA = pLu | pp, // 'Ú'
  234. 0xDB = pLu | pp, // 'Û'
  235. 0xDC = pLu | pp, // 'Ü'
  236. 0xDD = pLu | pp, // 'Ý'
  237. 0xDE = pLu | pp, // 'Þ'
  238. 0xDF = pLl | pp, // 'ß'
  239. 0xE0 = pLl | pp, // 'à'
  240. 0xE1 = pLl | pp, // 'á'
  241. 0xE2 = pLl | pp, // 'â'
  242. 0xE3 = pLl | pp, // 'ã'
  243. 0xE4 = pLl | pp, // 'ä'
  244. 0xE5 = pLl | pp, // 'å'
  245. 0xE6 = pLl | pp, // 'æ'
  246. 0xE7 = pLl | pp, // 'ç'
  247. 0xE8 = pLl | pp, // 'è'
  248. 0xE9 = pLl | pp, // 'é'
  249. 0xEA = pLl | pp, // 'ê'
  250. 0xEB = pLl | pp, // 'ë'
  251. 0xEC = pLl | pp, // 'ì'
  252. 0xED = pLl | pp, // 'í'
  253. 0xEE = pLl | pp, // 'î'
  254. 0xEF = pLl | pp, // 'ï'
  255. 0xF0 = pLl | pp, // 'ð'
  256. 0xF1 = pLl | pp, // 'ñ'
  257. 0xF2 = pLl | pp, // 'ò'
  258. 0xF3 = pLl | pp, // 'ó'
  259. 0xF4 = pLl | pp, // 'ô'
  260. 0xF5 = pLl | pp, // 'õ'
  261. 0xF6 = pLl | pp, // 'ö'
  262. 0xF7 = pS | pp, // '÷'
  263. 0xF8 = pLl | pp, // 'ø'
  264. 0xF9 = pLl | pp, // 'ù'
  265. 0xFA = pLl | pp, // 'ú'
  266. 0xFB = pLl | pp, // 'û'
  267. 0xFC = pLl | pp, // 'ü'
  268. 0xFD = pLl | pp, // 'ý'
  269. 0xFE = pLl | pp, // 'þ'
  270. 0xFF = pLl | pp, // 'ÿ'
  271. }
  272. @(rodata)
  273. alpha_ranges := [?]i32{
  274. 0x00d8, 0x00f6,
  275. 0x00f8, 0x01f5,
  276. 0x0250, 0x02a8,
  277. 0x038e, 0x03a1,
  278. 0x03a3, 0x03ce,
  279. 0x03d0, 0x03d6,
  280. 0x03e2, 0x03f3,
  281. 0x0490, 0x04c4,
  282. 0x0561, 0x0587,
  283. 0x05d0, 0x05ea,
  284. 0x05f0, 0x05f2,
  285. 0x0621, 0x063a,
  286. 0x0640, 0x064a,
  287. 0x0671, 0x06b7,
  288. 0x06ba, 0x06be,
  289. 0x06c0, 0x06ce,
  290. 0x06d0, 0x06d3,
  291. 0x0905, 0x0939,
  292. 0x0958, 0x0961,
  293. 0x0985, 0x098c,
  294. 0x098f, 0x0990,
  295. 0x0993, 0x09a8,
  296. 0x09aa, 0x09b0,
  297. 0x09b6, 0x09b9,
  298. 0x09dc, 0x09dd,
  299. 0x09df, 0x09e1,
  300. 0x09f0, 0x09f1,
  301. 0x0a05, 0x0a0a,
  302. 0x0a0f, 0x0a10,
  303. 0x0a13, 0x0a28,
  304. 0x0a2a, 0x0a30,
  305. 0x0a32, 0x0a33,
  306. 0x0a35, 0x0a36,
  307. 0x0a38, 0x0a39,
  308. 0x0a59, 0x0a5c,
  309. 0x0a85, 0x0a8b,
  310. 0x0a8f, 0x0a91,
  311. 0x0a93, 0x0aa8,
  312. 0x0aaa, 0x0ab0,
  313. 0x0ab2, 0x0ab3,
  314. 0x0ab5, 0x0ab9,
  315. 0x0b05, 0x0b0c,
  316. 0x0b0f, 0x0b10,
  317. 0x0b13, 0x0b28,
  318. 0x0b2a, 0x0b30,
  319. 0x0b32, 0x0b33,
  320. 0x0b36, 0x0b39,
  321. 0x0b5c, 0x0b5d,
  322. 0x0b5f, 0x0b61,
  323. 0x0b85, 0x0b8a,
  324. 0x0b8e, 0x0b90,
  325. 0x0b92, 0x0b95,
  326. 0x0b99, 0x0b9a,
  327. 0x0b9e, 0x0b9f,
  328. 0x0ba3, 0x0ba4,
  329. 0x0ba8, 0x0baa,
  330. 0x0bae, 0x0bb5,
  331. 0x0bb7, 0x0bb9,
  332. 0x0c05, 0x0c0c,
  333. 0x0c0e, 0x0c10,
  334. 0x0c12, 0x0c28,
  335. 0x0c2a, 0x0c33,
  336. 0x0c35, 0x0c39,
  337. 0x0c60, 0x0c61,
  338. 0x0c85, 0x0c8c,
  339. 0x0c8e, 0x0c90,
  340. 0x0c92, 0x0ca8,
  341. 0x0caa, 0x0cb3,
  342. 0x0cb5, 0x0cb9,
  343. 0x0ce0, 0x0ce1,
  344. 0x0d05, 0x0d0c,
  345. 0x0d0e, 0x0d10,
  346. 0x0d12, 0x0d28,
  347. 0x0d2a, 0x0d39,
  348. 0x0d60, 0x0d61,
  349. 0x0e01, 0x0e30,
  350. 0x0e32, 0x0e33,
  351. 0x0e40, 0x0e46,
  352. 0x0e5a, 0x0e5b,
  353. 0x0e81, 0x0e82,
  354. 0x0e87, 0x0e88,
  355. 0x0e94, 0x0e97,
  356. 0x0e99, 0x0e9f,
  357. 0x0ea1, 0x0ea3,
  358. 0x0eaa, 0x0eab,
  359. 0x0ead, 0x0eae,
  360. 0x0eb2, 0x0eb3,
  361. 0x0ec0, 0x0ec4,
  362. 0x0edc, 0x0edd,
  363. 0x0f18, 0x0f19,
  364. 0x0f40, 0x0f47,
  365. 0x0f49, 0x0f69,
  366. 0x10d0, 0x10f6,
  367. 0x1100, 0x1159,
  368. 0x115f, 0x11a2,
  369. 0x11a8, 0x11f9,
  370. 0x1e00, 0x1e9b,
  371. 0x1f50, 0x1f57,
  372. 0x1f80, 0x1fb4,
  373. 0x1fb6, 0x1fbc,
  374. 0x1fc2, 0x1fc4,
  375. 0x1fc6, 0x1fcc,
  376. 0x1fd0, 0x1fd3,
  377. 0x1fd6, 0x1fdb,
  378. 0x1fe0, 0x1fec,
  379. 0x1ff2, 0x1ff4,
  380. 0x1ff6, 0x1ffc,
  381. 0x210a, 0x2113,
  382. 0x2115, 0x211d,
  383. 0x2120, 0x2122,
  384. 0x212a, 0x2131,
  385. 0x2133, 0x2138,
  386. 0x3041, 0x3094,
  387. 0x30a1, 0x30fa,
  388. 0x3105, 0x312c,
  389. 0x3131, 0x318e,
  390. 0x3192, 0x319f,
  391. 0x3260, 0x327b,
  392. 0x328a, 0x32b0,
  393. 0x32d0, 0x32fe,
  394. 0x3300, 0x3357,
  395. 0x3371, 0x3376,
  396. 0x337b, 0x3394,
  397. 0x3399, 0x339e,
  398. 0x33a9, 0x33ad,
  399. 0x33b0, 0x33c1,
  400. 0x33c3, 0x33c5,
  401. 0x33c7, 0x33d7,
  402. 0x33d9, 0x33dd,
  403. 0x4e00, 0x9fff,
  404. 0xac00, 0xd7a3,
  405. 0xf900, 0xfb06,
  406. 0xfb13, 0xfb17,
  407. 0xfb1f, 0xfb28,
  408. 0xfb2a, 0xfb36,
  409. 0xfb38, 0xfb3c,
  410. 0xfb40, 0xfb41,
  411. 0xfb43, 0xfb44,
  412. 0xfb46, 0xfbb1,
  413. 0xfbd3, 0xfd3d,
  414. 0xfd50, 0xfd8f,
  415. 0xfd92, 0xfdc7,
  416. 0xfdf0, 0xfdf9,
  417. 0xfe70, 0xfe72,
  418. 0xfe76, 0xfefc,
  419. 0xff66, 0xff6f,
  420. 0xff71, 0xff9d,
  421. 0xffa0, 0xffbe,
  422. 0xffc2, 0xffc7,
  423. 0xffca, 0xffcf,
  424. 0xffd2, 0xffd7,
  425. 0xffda, 0xffdc,
  426. }
  427. @(rodata)
  428. alpha_singlets := [?]i32{
  429. 0x00aa,
  430. 0x00b5,
  431. 0x00ba,
  432. 0x03da,
  433. 0x03dc,
  434. 0x03de,
  435. 0x03e0,
  436. 0x06d5,
  437. 0x09b2,
  438. 0x0a5e,
  439. 0x0a8d,
  440. 0x0ae0,
  441. 0x0b9c,
  442. 0x0cde,
  443. 0x0e4f,
  444. 0x0e84,
  445. 0x0e8a,
  446. 0x0e8d,
  447. 0x0ea5,
  448. 0x0ea7,
  449. 0x0eb0,
  450. 0x0ebd,
  451. 0x1fbe,
  452. 0x207f,
  453. 0x20a8,
  454. 0x2102,
  455. 0x2107,
  456. 0x2124,
  457. 0x2126,
  458. 0x2128,
  459. 0xfb3e,
  460. 0xfe74,
  461. }
  462. @(rodata)
  463. space_ranges := [?]i32{
  464. 0x0009, 0x000d, // tab and newline
  465. 0x0020, 0x0020, // space
  466. 0x0085, 0x0085, // next line
  467. 0x00a0, 0x00a0,
  468. 0x1680, 0x1680, // Ogham space mark
  469. 0x2000, 0x200b, // en dash .. zero-width space
  470. 0x200e, 0x200f, // LTR mark .. RTL mark (pattern whitespace)
  471. 0x2028, 0x2029, 0x3000, 0x3000,
  472. 0x202f, 0x202f, // narrow no-break space
  473. 0x205f, 0x205f, // medium mathematical space
  474. 0x3000, 0x3000, // ideographic space
  475. 0xfeff, 0xfeff,
  476. }
  477. @(rodata)
  478. unicode_spaces := [?]i32{
  479. 0x0009, // tab
  480. 0x000a, // LF
  481. 0x000d, // CR
  482. 0x0020, // space
  483. 0x0085, // next line
  484. 0x00a0, // unknown
  485. 0x1680, // Ogham space mark
  486. 0x2000, // en dash .. zero-width space
  487. 0x200e, 0x200f, // LTR mark .. RTL mark (pattern whitespace)
  488. 0x2028, 0x2029, 0x3000, 0x3000,
  489. 0x202f, // narrow no-break space
  490. 0x205f, // medium mathematical space
  491. 0x3000, // ideographic space
  492. 0xfeff, // unknown
  493. }
  494. @(rodata)
  495. to_upper_ranges := [?]i32{
  496. 0x0061, 0x007a, 468, // a-z A-Z
  497. 0x00e0, 0x00f6, 468,
  498. 0x00f8, 0x00fe, 468,
  499. 0x0256, 0x0257, 295,
  500. 0x0258, 0x0259, 298,
  501. 0x028a, 0x028b, 283,
  502. 0x03ad, 0x03af, 463,
  503. 0x03b1, 0x03c1, 468,
  504. 0x03c3, 0x03cb, 468,
  505. 0x03cd, 0x03ce, 437,
  506. 0x0430, 0x044f, 468,
  507. 0x0451, 0x045c, 420,
  508. 0x045e, 0x045f, 420,
  509. 0x0561, 0x0586, 452,
  510. 0x1f00, 0x1f07, 508,
  511. 0x1f10, 0x1f15, 508,
  512. 0x1f20, 0x1f27, 508,
  513. 0x1f30, 0x1f37, 508,
  514. 0x1f40, 0x1f45, 508,
  515. 0x1f60, 0x1f67, 508,
  516. 0x1f70, 0x1f71, 574,
  517. 0x1f72, 0x1f75, 586,
  518. 0x1f76, 0x1f77, 600,
  519. 0x1f78, 0x1f79, 628,
  520. 0x1f7a, 0x1f7b, 612,
  521. 0x1f7c, 0x1f7d, 626,
  522. 0x1f80, 0x1f87, 508,
  523. 0x1f90, 0x1f97, 508,
  524. 0x1fa0, 0x1fa7, 508,
  525. 0x1fb0, 0x1fb1, 508,
  526. 0x1fd0, 0x1fd1, 508,
  527. 0x1fe0, 0x1fe1, 508,
  528. 0x2170, 0x217f, 484,
  529. 0x24d0, 0x24e9, 474,
  530. 0xff41, 0xff5a, 468,
  531. }
  532. @(rodata)
  533. to_upper_singlets := [?]i32{
  534. 0x00ff, 621,
  535. 0x0101, 499,
  536. 0x0103, 499,
  537. 0x0105, 499,
  538. 0x0107, 499,
  539. 0x0109, 499,
  540. 0x010b, 499,
  541. 0x010d, 499,
  542. 0x010f, 499,
  543. 0x0111, 499,
  544. 0x0113, 499,
  545. 0x0115, 499,
  546. 0x0117, 499,
  547. 0x0119, 499,
  548. 0x011b, 499,
  549. 0x011d, 499,
  550. 0x011f, 499,
  551. 0x0121, 499,
  552. 0x0123, 499,
  553. 0x0125, 499,
  554. 0x0127, 499,
  555. 0x0129, 499,
  556. 0x012b, 499,
  557. 0x012d, 499,
  558. 0x012f, 499,
  559. 0x0131, 268, // I
  560. 0x0133, 499,
  561. 0x0135, 499,
  562. 0x0137, 499,
  563. 0x013a, 499,
  564. 0x013c, 499,
  565. 0x013e, 499,
  566. 0x0140, 499,
  567. 0x0142, 499,
  568. 0x0144, 499,
  569. 0x0146, 499,
  570. 0x0148, 499,
  571. 0x014b, 499,
  572. 0x014d, 499,
  573. 0x014f, 499,
  574. 0x0151, 499,
  575. 0x0153, 499,
  576. 0x0155, 499,
  577. 0x0157, 499,
  578. 0x0159, 499,
  579. 0x015b, 499,
  580. 0x015d, 499,
  581. 0x015f, 499,
  582. 0x0161, 499,
  583. 0x0163, 499,
  584. 0x0165, 499,
  585. 0x0167, 499,
  586. 0x0169, 499,
  587. 0x016b, 499,
  588. 0x016d, 499,
  589. 0x016f, 499,
  590. 0x0171, 499,
  591. 0x0173, 499,
  592. 0x0175, 499,
  593. 0x0177, 499,
  594. 0x017a, 499,
  595. 0x017c, 499,
  596. 0x017e, 499,
  597. 0x017f, 200, // S
  598. 0x0183, 499,
  599. 0x0185, 499,
  600. 0x0188, 499,
  601. 0x018c, 499,
  602. 0x0192, 499,
  603. 0x0199, 499,
  604. 0x01a1, 499,
  605. 0x01a3, 499,
  606. 0x01a5, 499,
  607. 0x01a8, 499,
  608. 0x01ad, 499,
  609. 0x01b0, 499,
  610. 0x01b4, 499,
  611. 0x01b6, 499,
  612. 0x01b9, 499,
  613. 0x01bd, 499,
  614. 0x01c5, 499,
  615. 0x01c6, 498,
  616. 0x01c8, 499,
  617. 0x01c9, 498,
  618. 0x01cb, 499,
  619. 0x01cc, 498,
  620. 0x01ce, 499,
  621. 0x01d0, 499,
  622. 0x01d2, 499,
  623. 0x01d4, 499,
  624. 0x01d6, 499,
  625. 0x01d8, 499,
  626. 0x01da, 499,
  627. 0x01dc, 499,
  628. 0x01df, 499,
  629. 0x01e1, 499,
  630. 0x01e3, 499,
  631. 0x01e5, 499,
  632. 0x01e7, 499,
  633. 0x01e9, 499,
  634. 0x01eb, 499,
  635. 0x01ed, 499,
  636. 0x01ef, 499,
  637. 0x01f2, 499,
  638. 0x01f3, 498,
  639. 0x01f5, 499,
  640. 0x01fb, 499,
  641. 0x01fd, 499,
  642. 0x01ff, 499,
  643. 0x0201, 499,
  644. 0x0203, 499,
  645. 0x0205, 499,
  646. 0x0207, 499,
  647. 0x0209, 499,
  648. 0x020b, 499,
  649. 0x020d, 499,
  650. 0x020f, 499,
  651. 0x0211, 499,
  652. 0x0213, 499,
  653. 0x0215, 499,
  654. 0x0217, 499,
  655. 0x0253, 290,
  656. 0x0254, 294,
  657. 0x025b, 297,
  658. 0x0260, 295,
  659. 0x0263, 293,
  660. 0x0268, 291,
  661. 0x0269, 289,
  662. 0x026f, 289,
  663. 0x0272, 287,
  664. 0x0283, 282,
  665. 0x0288, 282,
  666. 0x0292, 281,
  667. 0x03ac, 462,
  668. 0x03cc, 436,
  669. 0x03d0, 438,
  670. 0x03d1, 443,
  671. 0x03d5, 453,
  672. 0x03d6, 446,
  673. 0x03e3, 499,
  674. 0x03e5, 499,
  675. 0x03e7, 499,
  676. 0x03e9, 499,
  677. 0x03eb, 499,
  678. 0x03ed, 499,
  679. 0x03ef, 499,
  680. 0x03f0, 414,
  681. 0x03f1, 420,
  682. 0x0461, 499,
  683. 0x0463, 499,
  684. 0x0465, 499,
  685. 0x0467, 499,
  686. 0x0469, 499,
  687. 0x046b, 499,
  688. 0x046d, 499,
  689. 0x046f, 499,
  690. 0x0471, 499,
  691. 0x0473, 499,
  692. 0x0475, 499,
  693. 0x0477, 499,
  694. 0x0479, 499,
  695. 0x047b, 499,
  696. 0x047d, 499,
  697. 0x047f, 499,
  698. 0x0481, 499,
  699. 0x0491, 499,
  700. 0x0493, 499,
  701. 0x0495, 499,
  702. 0x0497, 499,
  703. 0x0499, 499,
  704. 0x049b, 499,
  705. 0x049d, 499,
  706. 0x049f, 499,
  707. 0x04a1, 499,
  708. 0x04a3, 499,
  709. 0x04a5, 499,
  710. 0x04a7, 499,
  711. 0x04a9, 499,
  712. 0x04ab, 499,
  713. 0x04ad, 499,
  714. 0x04af, 499,
  715. 0x04b1, 499,
  716. 0x04b3, 499,
  717. 0x04b5, 499,
  718. 0x04b7, 499,
  719. 0x04b9, 499,
  720. 0x04bb, 499,
  721. 0x04bd, 499,
  722. 0x04bf, 499,
  723. 0x04c2, 499,
  724. 0x04c4, 499,
  725. 0x04c8, 499,
  726. 0x04cc, 499,
  727. 0x04d1, 499,
  728. 0x04d3, 499,
  729. 0x04d5, 499,
  730. 0x04d7, 499,
  731. 0x04d9, 499,
  732. 0x04db, 499,
  733. 0x04dd, 499,
  734. 0x04df, 499,
  735. 0x04e1, 499,
  736. 0x04e3, 499,
  737. 0x04e5, 499,
  738. 0x04e7, 499,
  739. 0x04e9, 499,
  740. 0x04eb, 499,
  741. 0x04ef, 499,
  742. 0x04f1, 499,
  743. 0x04f3, 499,
  744. 0x04f5, 499,
  745. 0x04f9, 499,
  746. 0x1e01, 499,
  747. 0x1e03, 499,
  748. 0x1e05, 499,
  749. 0x1e07, 499,
  750. 0x1e09, 499,
  751. 0x1e0b, 499,
  752. 0x1e0d, 499,
  753. 0x1e0f, 499,
  754. 0x1e11, 499,
  755. 0x1e13, 499,
  756. 0x1e15, 499,
  757. 0x1e17, 499,
  758. 0x1e19, 499,
  759. 0x1e1b, 499,
  760. 0x1e1d, 499,
  761. 0x1e1f, 499,
  762. 0x1e21, 499,
  763. 0x1e23, 499,
  764. 0x1e25, 499,
  765. 0x1e27, 499,
  766. 0x1e29, 499,
  767. 0x1e2b, 499,
  768. 0x1e2d, 499,
  769. 0x1e2f, 499,
  770. 0x1e31, 499,
  771. 0x1e33, 499,
  772. 0x1e35, 499,
  773. 0x1e37, 499,
  774. 0x1e39, 499,
  775. 0x1e3b, 499,
  776. 0x1e3d, 499,
  777. 0x1e3f, 499,
  778. 0x1e41, 499,
  779. 0x1e43, 499,
  780. 0x1e45, 499,
  781. 0x1e47, 499,
  782. 0x1e49, 499,
  783. 0x1e4b, 499,
  784. 0x1e4d, 499,
  785. 0x1e4f, 499,
  786. 0x1e51, 499,
  787. 0x1e53, 499,
  788. 0x1e55, 499,
  789. 0x1e57, 499,
  790. 0x1e59, 499,
  791. 0x1e5b, 499,
  792. 0x1e5d, 499,
  793. 0x1e5f, 499,
  794. 0x1e61, 499,
  795. 0x1e63, 499,
  796. 0x1e65, 499,
  797. 0x1e67, 499,
  798. 0x1e69, 499,
  799. 0x1e6b, 499,
  800. 0x1e6d, 499,
  801. 0x1e6f, 499,
  802. 0x1e71, 499,
  803. 0x1e73, 499,
  804. 0x1e75, 499,
  805. 0x1e77, 499,
  806. 0x1e79, 499,
  807. 0x1e7b, 499,
  808. 0x1e7d, 499,
  809. 0x1e7f, 499,
  810. 0x1e81, 499,
  811. 0x1e83, 499,
  812. 0x1e85, 499,
  813. 0x1e87, 499,
  814. 0x1e89, 499,
  815. 0x1e8b, 499,
  816. 0x1e8d, 499,
  817. 0x1e8f, 499,
  818. 0x1e91, 499,
  819. 0x1e93, 499,
  820. 0x1e95, 499,
  821. 0x1ea1, 499,
  822. 0x1ea3, 499,
  823. 0x1ea5, 499,
  824. 0x1ea7, 499,
  825. 0x1ea9, 499,
  826. 0x1eab, 499,
  827. 0x1ead, 499,
  828. 0x1eaf, 499,
  829. 0x1eb1, 499,
  830. 0x1eb3, 499,
  831. 0x1eb5, 499,
  832. 0x1eb7, 499,
  833. 0x1eb9, 499,
  834. 0x1ebb, 499,
  835. 0x1ebd, 499,
  836. 0x1ebf, 499,
  837. 0x1ec1, 499,
  838. 0x1ec3, 499,
  839. 0x1ec5, 499,
  840. 0x1ec7, 499,
  841. 0x1ec9, 499,
  842. 0x1ecb, 499,
  843. 0x1ecd, 499,
  844. 0x1ecf, 499,
  845. 0x1ed1, 499,
  846. 0x1ed3, 499,
  847. 0x1ed5, 499,
  848. 0x1ed7, 499,
  849. 0x1ed9, 499,
  850. 0x1edb, 499,
  851. 0x1edd, 499,
  852. 0x1edf, 499,
  853. 0x1ee1, 499,
  854. 0x1ee3, 499,
  855. 0x1ee5, 499,
  856. 0x1ee7, 499,
  857. 0x1ee9, 499,
  858. 0x1eeb, 499,
  859. 0x1eed, 499,
  860. 0x1eef, 499,
  861. 0x1ef1, 499,
  862. 0x1ef3, 499,
  863. 0x1ef5, 499,
  864. 0x1ef7, 499,
  865. 0x1ef9, 499,
  866. 0x1f51, 508,
  867. 0x1f53, 508,
  868. 0x1f55, 508,
  869. 0x1f57, 508,
  870. 0x1fb3, 509,
  871. 0x1fc3, 509,
  872. 0x1fe5, 507,
  873. 0x1ff3, 509,
  874. }
  875. @(rodata)
  876. to_lower_ranges := [?]i32{
  877. 0x0041, 0x005a, 532, // A-Z a-z
  878. 0x00c0, 0x00d6, 532, // - -
  879. 0x00d8, 0x00de, 532, // - -
  880. 0x0189, 0x018a, 705, // - -
  881. 0x018e, 0x018f, 702, // - -
  882. 0x01b1, 0x01b2, 717, // - -
  883. 0x0388, 0x038a, 537, // - -
  884. 0x038e, 0x038f, 563, // - -
  885. 0x0391, 0x03a1, 532, // - -
  886. 0x03a3, 0x03ab, 532, // - -
  887. 0x0401, 0x040c, 580, // - -
  888. 0x040e, 0x040f, 580, // - -
  889. 0x0410, 0x042f, 532, // - -
  890. 0x0531, 0x0556, 548, // - -
  891. 0x10a0, 0x10c5, 548, // - -
  892. 0x1f08, 0x1f0f, 492, // - -
  893. 0x1f18, 0x1f1d, 492, // - -
  894. 0x1f28, 0x1f2f, 492, // - -
  895. 0x1f38, 0x1f3f, 492, // - -
  896. 0x1f48, 0x1f4d, 492, // - -
  897. 0x1f68, 0x1f6f, 492, // - -
  898. 0x1f88, 0x1f8f, 492, // - -
  899. 0x1f98, 0x1f9f, 492, // - -
  900. 0x1fa8, 0x1faf, 492, // - -
  901. 0x1fb8, 0x1fb9, 492, // - -
  902. 0x1fba, 0x1fbb, 426, // - -
  903. 0x1fc8, 0x1fcb, 414, // - -
  904. 0x1fd8, 0x1fd9, 492, // - -
  905. 0x1fda, 0x1fdb, 400, // - -
  906. 0x1fe8, 0x1fe9, 492, // - -
  907. 0x1fea, 0x1feb, 388, // - -
  908. 0x1ff8, 0x1ff9, 372, // - -
  909. 0x1ffa, 0x1ffb, 374, // - -
  910. 0x2160, 0x216f, 516, // - -
  911. 0x24b6, 0x24cf, 526, // - -
  912. 0xff21, 0xff3a, 532, // - -
  913. }
  914. @(rodata)
  915. to_lower_singlets := [?]i32{
  916. 0x0100, 501,
  917. 0x0102, 501,
  918. 0x0104, 501,
  919. 0x0106, 501,
  920. 0x0108, 501,
  921. 0x010a, 501,
  922. 0x010c, 501,
  923. 0x010e, 501,
  924. 0x0110, 501,
  925. 0x0112, 501,
  926. 0x0114, 501,
  927. 0x0116, 501,
  928. 0x0118, 501,
  929. 0x011a, 501,
  930. 0x011c, 501,
  931. 0x011e, 501,
  932. 0x0120, 501,
  933. 0x0122, 501,
  934. 0x0124, 501,
  935. 0x0126, 501,
  936. 0x0128, 501,
  937. 0x012a, 501,
  938. 0x012c, 501,
  939. 0x012e, 501,
  940. 0x0130, 301, // i
  941. 0x0132, 501,
  942. 0x0134, 501,
  943. 0x0136, 501,
  944. 0x0139, 501,
  945. 0x013b, 501,
  946. 0x013d, 501,
  947. 0x013f, 501,
  948. 0x0141, 501,
  949. 0x0143, 501,
  950. 0x0145, 501,
  951. 0x0147, 501,
  952. 0x014a, 501,
  953. 0x014c, 501,
  954. 0x014e, 501,
  955. 0x0150, 501,
  956. 0x0152, 501,
  957. 0x0154, 501,
  958. 0x0156, 501,
  959. 0x0158, 501,
  960. 0x015a, 501,
  961. 0x015c, 501,
  962. 0x015e, 501,
  963. 0x0160, 501,
  964. 0x0162, 501,
  965. 0x0164, 501,
  966. 0x0166, 501,
  967. 0x0168, 501,
  968. 0x016a, 501,
  969. 0x016c, 501,
  970. 0x016e, 501,
  971. 0x0170, 501,
  972. 0x0172, 501,
  973. 0x0174, 501,
  974. 0x0176, 501,
  975. 0x0178, 379,
  976. 0x0179, 501,
  977. 0x017b, 501,
  978. 0x017d, 501,
  979. 0x0181, 710,
  980. 0x0182, 501,
  981. 0x0184, 501,
  982. 0x0186, 706,
  983. 0x0187, 501,
  984. 0x018b, 501,
  985. 0x0190, 703,
  986. 0x0191, 501,
  987. 0x0193, 705,
  988. 0x0194, 707,
  989. 0x0196, 711,
  990. 0x0197, 709,
  991. 0x0198, 501,
  992. 0x019c, 711,
  993. 0x019d, 713,
  994. 0x01a0, 501,
  995. 0x01a2, 501,
  996. 0x01a4, 501,
  997. 0x01a7, 501,
  998. 0x01a9, 718,
  999. 0x01ac, 501,
  1000. 0x01ae, 718,
  1001. 0x01af, 501,
  1002. 0x01b3, 501,
  1003. 0x01b5, 501,
  1004. 0x01b7, 719,
  1005. 0x01b8, 501,
  1006. 0x01bc, 501,
  1007. 0x01c4, 502,
  1008. 0x01c5, 501,
  1009. 0x01c7, 502,
  1010. 0x01c8, 501,
  1011. 0x01ca, 502,
  1012. 0x01cb, 501,
  1013. 0x01cd, 501,
  1014. 0x01cf, 501,
  1015. 0x01d1, 501,
  1016. 0x01d3, 501,
  1017. 0x01d5, 501,
  1018. 0x01d7, 501,
  1019. 0x01d9, 501,
  1020. 0x01db, 501,
  1021. 0x01de, 501,
  1022. 0x01e0, 501,
  1023. 0x01e2, 501,
  1024. 0x01e4, 501,
  1025. 0x01e6, 501,
  1026. 0x01e8, 501,
  1027. 0x01ea, 501,
  1028. 0x01ec, 501,
  1029. 0x01ee, 501,
  1030. 0x01f1, 502,
  1031. 0x01f2, 501,
  1032. 0x01f4, 501,
  1033. 0x01fa, 501,
  1034. 0x01fc, 501,
  1035. 0x01fe, 501,
  1036. 0x0200, 501,
  1037. 0x0202, 501,
  1038. 0x0204, 501,
  1039. 0x0206, 501,
  1040. 0x0208, 501,
  1041. 0x020a, 501,
  1042. 0x020c, 501,
  1043. 0x020e, 501,
  1044. 0x0210, 501,
  1045. 0x0212, 501,
  1046. 0x0214, 501,
  1047. 0x0216, 501,
  1048. 0x0386, 538,
  1049. 0x038c, 564,
  1050. 0x03e2, 501,
  1051. 0x03e4, 501,
  1052. 0x03e6, 501,
  1053. 0x03e8, 501,
  1054. 0x03ea, 501,
  1055. 0x03ec, 501,
  1056. 0x03ee, 501,
  1057. 0x0460, 501,
  1058. 0x0462, 501,
  1059. 0x0464, 501,
  1060. 0x0466, 501,
  1061. 0x0468, 501,
  1062. 0x046a, 501,
  1063. 0x046c, 501,
  1064. 0x046e, 501,
  1065. 0x0470, 501,
  1066. 0x0472, 501,
  1067. 0x0474, 501,
  1068. 0x0476, 501,
  1069. 0x0478, 501,
  1070. 0x047a, 501,
  1071. 0x047c, 501,
  1072. 0x047e, 501,
  1073. 0x0480, 501,
  1074. 0x0490, 501,
  1075. 0x0492, 501,
  1076. 0x0494, 501,
  1077. 0x0496, 501,
  1078. 0x0498, 501,
  1079. 0x049a, 501,
  1080. 0x049c, 501,
  1081. 0x049e, 501,
  1082. 0x04a0, 501,
  1083. 0x04a2, 501,
  1084. 0x04a4, 501,
  1085. 0x04a6, 501,
  1086. 0x04a8, 501,
  1087. 0x04aa, 501,
  1088. 0x04ac, 501,
  1089. 0x04ae, 501,
  1090. 0x04b0, 501,
  1091. 0x04b2, 501,
  1092. 0x04b4, 501,
  1093. 0x04b6, 501,
  1094. 0x04b8, 501,
  1095. 0x04ba, 501,
  1096. 0x04bc, 501,
  1097. 0x04be, 501,
  1098. 0x04c1, 501,
  1099. 0x04c3, 501,
  1100. 0x04c7, 501,
  1101. 0x04cb, 501,
  1102. 0x04d0, 501,
  1103. 0x04d2, 501,
  1104. 0x04d4, 501,
  1105. 0x04d6, 501,
  1106. 0x04d8, 501,
  1107. 0x04da, 501,
  1108. 0x04dc, 501,
  1109. 0x04de, 501,
  1110. 0x04e0, 501,
  1111. 0x04e2, 501,
  1112. 0x04e4, 501,
  1113. 0x04e6, 501,
  1114. 0x04e8, 501,
  1115. 0x04ea, 501,
  1116. 0x04ee, 501,
  1117. 0x04f0, 501,
  1118. 0x04f2, 501,
  1119. 0x04f4, 501,
  1120. 0x04f8, 501,
  1121. 0x1e00, 501,
  1122. 0x1e02, 501,
  1123. 0x1e04, 501,
  1124. 0x1e06, 501,
  1125. 0x1e08, 501,
  1126. 0x1e0a, 501,
  1127. 0x1e0c, 501,
  1128. 0x1e0e, 501,
  1129. 0x1e10, 501,
  1130. 0x1e12, 501,
  1131. 0x1e14, 501,
  1132. 0x1e16, 501,
  1133. 0x1e18, 501,
  1134. 0x1e1a, 501,
  1135. 0x1e1c, 501,
  1136. 0x1e1e, 501,
  1137. 0x1e20, 501,
  1138. 0x1e22, 501,
  1139. 0x1e24, 501,
  1140. 0x1e26, 501,
  1141. 0x1e28, 501,
  1142. 0x1e2a, 501,
  1143. 0x1e2c, 501,
  1144. 0x1e2e, 501,
  1145. 0x1e30, 501,
  1146. 0x1e32, 501,
  1147. 0x1e34, 501,
  1148. 0x1e36, 501,
  1149. 0x1e38, 501,
  1150. 0x1e3a, 501,
  1151. 0x1e3c, 501,
  1152. 0x1e3e, 501,
  1153. 0x1e40, 501,
  1154. 0x1e42, 501,
  1155. 0x1e44, 501,
  1156. 0x1e46, 501,
  1157. 0x1e48, 501,
  1158. 0x1e4a, 501,
  1159. 0x1e4c, 501,
  1160. 0x1e4e, 501,
  1161. 0x1e50, 501,
  1162. 0x1e52, 501,
  1163. 0x1e54, 501,
  1164. 0x1e56, 501,
  1165. 0x1e58, 501,
  1166. 0x1e5a, 501,
  1167. 0x1e5c, 501,
  1168. 0x1e5e, 501,
  1169. 0x1e60, 501,
  1170. 0x1e62, 501,
  1171. 0x1e64, 501,
  1172. 0x1e66, 501,
  1173. 0x1e68, 501,
  1174. 0x1e6a, 501,
  1175. 0x1e6c, 501,
  1176. 0x1e6e, 501,
  1177. 0x1e70, 501,
  1178. 0x1e72, 501,
  1179. 0x1e74, 501,
  1180. 0x1e76, 501,
  1181. 0x1e78, 501,
  1182. 0x1e7a, 501,
  1183. 0x1e7c, 501,
  1184. 0x1e7e, 501,
  1185. 0x1e80, 501,
  1186. 0x1e82, 501,
  1187. 0x1e84, 501,
  1188. 0x1e86, 501,
  1189. 0x1e88, 501,
  1190. 0x1e8a, 501,
  1191. 0x1e8c, 501,
  1192. 0x1e8e, 501,
  1193. 0x1e90, 501,
  1194. 0x1e92, 501,
  1195. 0x1e94, 501,
  1196. 0x1ea0, 501,
  1197. 0x1ea2, 501,
  1198. 0x1ea4, 501,
  1199. 0x1ea6, 501,
  1200. 0x1ea8, 501,
  1201. 0x1eaa, 501,
  1202. 0x1eac, 501,
  1203. 0x1eae, 501,
  1204. 0x1eb0, 501,
  1205. 0x1eb2, 501,
  1206. 0x1eb4, 501,
  1207. 0x1eb6, 501,
  1208. 0x1eb8, 501,
  1209. 0x1eba, 501,
  1210. 0x1ebc, 501,
  1211. 0x1ebe, 501,
  1212. 0x1ec0, 501,
  1213. 0x1ec2, 501,
  1214. 0x1ec4, 501,
  1215. 0x1ec6, 501,
  1216. 0x1ec8, 501,
  1217. 0x1eca, 501,
  1218. 0x1ecc, 501,
  1219. 0x1ece, 501,
  1220. 0x1ed0, 501,
  1221. 0x1ed2, 501,
  1222. 0x1ed4, 501,
  1223. 0x1ed6, 501,
  1224. 0x1ed8, 501,
  1225. 0x1eda, 501,
  1226. 0x1edc, 501,
  1227. 0x1ede, 501,
  1228. 0x1ee0, 501,
  1229. 0x1ee2, 501,
  1230. 0x1ee4, 501,
  1231. 0x1ee6, 501,
  1232. 0x1ee8, 501,
  1233. 0x1eea, 501,
  1234. 0x1eec, 501,
  1235. 0x1eee, 501,
  1236. 0x1ef0, 501,
  1237. 0x1ef2, 501,
  1238. 0x1ef4, 501,
  1239. 0x1ef6, 501,
  1240. 0x1ef8, 501,
  1241. 0x1f59, 492,
  1242. 0x1f5b, 492,
  1243. 0x1f5d, 492,
  1244. 0x1f5f, 492,
  1245. 0x1fbc, 491,
  1246. 0x1fcc, 491,
  1247. 0x1fec, 493,
  1248. 0x1ffc, 491,
  1249. }
  1250. @(rodata)
  1251. to_title_singlets := [?]i32{
  1252. 0x01c4, 501,
  1253. 0x01c6, 499,
  1254. 0x01c7, 501,
  1255. 0x01c9, 499,
  1256. 0x01ca, 501,
  1257. 0x01cc, 499,
  1258. 0x01f1, 501,
  1259. 0x01f3, 499,
  1260. }
  1261. //
  1262. // The tables below are accurate as of Unicode 15.1.0.
  1263. //
  1264. @(rodata)
  1265. spacing_mark_ranges := [?]i32 {
  1266. 0x0903, 0x0903,
  1267. 0x093B, 0x093B,
  1268. 0x093E, 0x0940,
  1269. 0x0949, 0x094C,
  1270. 0x094E, 0x094F,
  1271. 0x0982, 0x0983,
  1272. 0x09BE, 0x09C0,
  1273. 0x09C7, 0x09C8,
  1274. 0x09CB, 0x09CC,
  1275. 0x09D7, 0x09D7,
  1276. 0x0A03, 0x0A03,
  1277. 0x0A3E, 0x0A40,
  1278. 0x0A83, 0x0A83,
  1279. 0x0ABE, 0x0AC0,
  1280. 0x0AC9, 0x0AC9,
  1281. 0x0ACB, 0x0ACC,
  1282. 0x0B02, 0x0B03,
  1283. 0x0B3E, 0x0B3E,
  1284. 0x0B40, 0x0B40,
  1285. 0x0B47, 0x0B48,
  1286. 0x0B4B, 0x0B4C,
  1287. 0x0B57, 0x0B57,
  1288. 0x0BBE, 0x0BBF,
  1289. 0x0BC1, 0x0BC2,
  1290. 0x0BC6, 0x0BC8,
  1291. 0x0BCA, 0x0BCC,
  1292. 0x0BD7, 0x0BD7,
  1293. 0x0C01, 0x0C03,
  1294. 0x0C41, 0x0C44,
  1295. 0x0C82, 0x0C83,
  1296. 0x0CBE, 0x0CBE,
  1297. 0x0CC0, 0x0CC4,
  1298. 0x0CC7, 0x0CC8,
  1299. 0x0CCA, 0x0CCB,
  1300. 0x0CD5, 0x0CD6,
  1301. 0x0CF3, 0x0CF3,
  1302. 0x0D02, 0x0D03,
  1303. 0x0D3E, 0x0D40,
  1304. 0x0D46, 0x0D48,
  1305. 0x0D4A, 0x0D4C,
  1306. 0x0D57, 0x0D57,
  1307. 0x0D82, 0x0D83,
  1308. 0x0DCF, 0x0DD1,
  1309. 0x0DD8, 0x0DDF,
  1310. 0x0DF2, 0x0DF3,
  1311. 0x0F3E, 0x0F3F,
  1312. 0x0F7F, 0x0F7F,
  1313. 0x102B, 0x102C,
  1314. 0x1031, 0x1031,
  1315. 0x1038, 0x1038,
  1316. 0x103B, 0x103C,
  1317. 0x1056, 0x1057,
  1318. 0x1062, 0x1064,
  1319. 0x1067, 0x106D,
  1320. 0x1083, 0x1084,
  1321. 0x1087, 0x108C,
  1322. 0x108F, 0x108F,
  1323. 0x109A, 0x109C,
  1324. 0x1715, 0x1715,
  1325. 0x1734, 0x1734,
  1326. 0x17B6, 0x17B6,
  1327. 0x17BE, 0x17C5,
  1328. 0x17C7, 0x17C8,
  1329. 0x1923, 0x1926,
  1330. 0x1929, 0x192B,
  1331. 0x1930, 0x1931,
  1332. 0x1933, 0x1938,
  1333. 0x1A19, 0x1A1A,
  1334. 0x1A55, 0x1A55,
  1335. 0x1A57, 0x1A57,
  1336. 0x1A61, 0x1A61,
  1337. 0x1A63, 0x1A64,
  1338. 0x1A6D, 0x1A72,
  1339. 0x1B04, 0x1B04,
  1340. 0x1B35, 0x1B35,
  1341. 0x1B3B, 0x1B3B,
  1342. 0x1B3D, 0x1B41,
  1343. 0x1B43, 0x1B44,
  1344. 0x1B82, 0x1B82,
  1345. 0x1BA1, 0x1BA1,
  1346. 0x1BA6, 0x1BA7,
  1347. 0x1BAA, 0x1BAA,
  1348. 0x1BE7, 0x1BE7,
  1349. 0x1BEA, 0x1BEC,
  1350. 0x1BEE, 0x1BEE,
  1351. 0x1BF2, 0x1BF3,
  1352. 0x1C24, 0x1C2B,
  1353. 0x1C34, 0x1C35,
  1354. 0x1CE1, 0x1CE1,
  1355. 0x1CF7, 0x1CF7,
  1356. 0x302E, 0x302F,
  1357. 0xA823, 0xA824,
  1358. 0xA827, 0xA827,
  1359. 0xA880, 0xA881,
  1360. 0xA8B4, 0xA8C3,
  1361. 0xA952, 0xA953,
  1362. 0xA983, 0xA983,
  1363. 0xA9B4, 0xA9B5,
  1364. 0xA9BA, 0xA9BB,
  1365. 0xA9BE, 0xA9C0,
  1366. 0xAA2F, 0xAA30,
  1367. 0xAA33, 0xAA34,
  1368. 0xAA4D, 0xAA4D,
  1369. 0xAA7B, 0xAA7B,
  1370. 0xAA7D, 0xAA7D,
  1371. 0xAAEB, 0xAAEB,
  1372. 0xAAEE, 0xAAEF,
  1373. 0xAAF5, 0xAAF5,
  1374. 0xABE3, 0xABE4,
  1375. 0xABE6, 0xABE7,
  1376. 0xABE9, 0xABEA,
  1377. 0xABEC, 0xABEC,
  1378. 0x11000, 0x11000,
  1379. 0x11002, 0x11002,
  1380. 0x11082, 0x11082,
  1381. 0x110B0, 0x110B2,
  1382. 0x110B7, 0x110B8,
  1383. 0x1112C, 0x1112C,
  1384. 0x11145, 0x11146,
  1385. 0x11182, 0x11182,
  1386. 0x111B3, 0x111B5,
  1387. 0x111BF, 0x111C0,
  1388. 0x111CE, 0x111CE,
  1389. 0x1122C, 0x1122E,
  1390. 0x11232, 0x11233,
  1391. 0x11235, 0x11235,
  1392. 0x112E0, 0x112E2,
  1393. 0x11302, 0x11303,
  1394. 0x1133E, 0x1133F,
  1395. 0x11341, 0x11344,
  1396. 0x11347, 0x11348,
  1397. 0x1134B, 0x1134D,
  1398. 0x11357, 0x11357,
  1399. 0x11362, 0x11363,
  1400. 0x11435, 0x11437,
  1401. 0x11440, 0x11441,
  1402. 0x11445, 0x11445,
  1403. 0x114B0, 0x114B2,
  1404. 0x114B9, 0x114B9,
  1405. 0x114BB, 0x114BE,
  1406. 0x114C1, 0x114C1,
  1407. 0x115AF, 0x115B1,
  1408. 0x115B8, 0x115BB,
  1409. 0x115BE, 0x115BE,
  1410. 0x11630, 0x11632,
  1411. 0x1163B, 0x1163C,
  1412. 0x1163E, 0x1163E,
  1413. 0x116AC, 0x116AC,
  1414. 0x116AE, 0x116AF,
  1415. 0x116B6, 0x116B6,
  1416. 0x11720, 0x11721,
  1417. 0x11726, 0x11726,
  1418. 0x1182C, 0x1182E,
  1419. 0x11838, 0x11838,
  1420. 0x11930, 0x11935,
  1421. 0x11937, 0x11938,
  1422. 0x1193D, 0x1193D,
  1423. 0x11940, 0x11940,
  1424. 0x11942, 0x11942,
  1425. 0x119D1, 0x119D3,
  1426. 0x119DC, 0x119DF,
  1427. 0x119E4, 0x119E4,
  1428. 0x11A39, 0x11A39,
  1429. 0x11A57, 0x11A58,
  1430. 0x11A97, 0x11A97,
  1431. 0x11C2F, 0x11C2F,
  1432. 0x11C3E, 0x11C3E,
  1433. 0x11CA9, 0x11CA9,
  1434. 0x11CB1, 0x11CB1,
  1435. 0x11CB4, 0x11CB4,
  1436. 0x11D8A, 0x11D8E,
  1437. 0x11D93, 0x11D94,
  1438. 0x11D96, 0x11D96,
  1439. 0x11EF5, 0x11EF6,
  1440. 0x11F03, 0x11F03,
  1441. 0x11F34, 0x11F35,
  1442. 0x11F3E, 0x11F3F,
  1443. 0x11F41, 0x11F41,
  1444. 0x16F51, 0x16F87,
  1445. 0x16FF0, 0x16FF1,
  1446. 0x1D165, 0x1D166,
  1447. 0x1D16D, 0x1D172,
  1448. }
  1449. @(rodata)
  1450. nonspacing_mark_ranges := [?]i32 {
  1451. 0x0300, 0x036F,
  1452. 0x0483, 0x0487,
  1453. 0x0591, 0x05BD,
  1454. 0x05BF, 0x05BF,
  1455. 0x05C1, 0x05C2,
  1456. 0x05C4, 0x05C5,
  1457. 0x05C7, 0x05C7,
  1458. 0x0610, 0x061A,
  1459. 0x064B, 0x065F,
  1460. 0x0670, 0x0670,
  1461. 0x06D6, 0x06DC,
  1462. 0x06DF, 0x06E4,
  1463. 0x06E7, 0x06E8,
  1464. 0x06EA, 0x06ED,
  1465. 0x0711, 0x0711,
  1466. 0x0730, 0x074A,
  1467. 0x07A6, 0x07B0,
  1468. 0x07EB, 0x07F3,
  1469. 0x07FD, 0x07FD,
  1470. 0x0816, 0x0819,
  1471. 0x081B, 0x0823,
  1472. 0x0825, 0x0827,
  1473. 0x0829, 0x082D,
  1474. 0x0859, 0x085B,
  1475. 0x0898, 0x089F,
  1476. 0x08CA, 0x08E1,
  1477. 0x08E3, 0x0902,
  1478. 0x093A, 0x093A,
  1479. 0x093C, 0x093C,
  1480. 0x0941, 0x0948,
  1481. 0x094D, 0x094D,
  1482. 0x0951, 0x0957,
  1483. 0x0962, 0x0963,
  1484. 0x0981, 0x0981,
  1485. 0x09BC, 0x09BC,
  1486. 0x09C1, 0x09C4,
  1487. 0x09CD, 0x09CD,
  1488. 0x09E2, 0x09E3,
  1489. 0x09FE, 0x09FE,
  1490. 0x0A01, 0x0A02,
  1491. 0x0A3C, 0x0A3C,
  1492. 0x0A41, 0x0A42,
  1493. 0x0A47, 0x0A48,
  1494. 0x0A4B, 0x0A4D,
  1495. 0x0A51, 0x0A51,
  1496. 0x0A70, 0x0A71,
  1497. 0x0A75, 0x0A75,
  1498. 0x0A81, 0x0A82,
  1499. 0x0ABC, 0x0ABC,
  1500. 0x0AC1, 0x0AC5,
  1501. 0x0AC7, 0x0AC8,
  1502. 0x0ACD, 0x0ACD,
  1503. 0x0AE2, 0x0AE3,
  1504. 0x0AFA, 0x0AFF,
  1505. 0x0B01, 0x0B01,
  1506. 0x0B3C, 0x0B3C,
  1507. 0x0B3F, 0x0B3F,
  1508. 0x0B41, 0x0B44,
  1509. 0x0B4D, 0x0B4D,
  1510. 0x0B55, 0x0B56,
  1511. 0x0B62, 0x0B63,
  1512. 0x0B82, 0x0B82,
  1513. 0x0BC0, 0x0BC0,
  1514. 0x0BCD, 0x0BCD,
  1515. 0x0C00, 0x0C00,
  1516. 0x0C04, 0x0C04,
  1517. 0x0C3C, 0x0C3C,
  1518. 0x0C3E, 0x0C40,
  1519. 0x0C46, 0x0C48,
  1520. 0x0C4A, 0x0C4D,
  1521. 0x0C55, 0x0C56,
  1522. 0x0C62, 0x0C63,
  1523. 0x0C81, 0x0C81,
  1524. 0x0CBC, 0x0CBC,
  1525. 0x0CBF, 0x0CBF,
  1526. 0x0CC6, 0x0CC6,
  1527. 0x0CCC, 0x0CCD,
  1528. 0x0CE2, 0x0CE3,
  1529. 0x0D00, 0x0D01,
  1530. 0x0D3B, 0x0D3C,
  1531. 0x0D41, 0x0D44,
  1532. 0x0D4D, 0x0D4D,
  1533. 0x0D62, 0x0D63,
  1534. 0x0D81, 0x0D81,
  1535. 0x0DCA, 0x0DCA,
  1536. 0x0DD2, 0x0DD4,
  1537. 0x0DD6, 0x0DD6,
  1538. 0x0E31, 0x0E31,
  1539. 0x0E34, 0x0E3A,
  1540. 0x0E47, 0x0E4E,
  1541. 0x0EB1, 0x0EB1,
  1542. 0x0EB4, 0x0EBC,
  1543. 0x0EC8, 0x0ECE,
  1544. 0x0F18, 0x0F19,
  1545. 0x0F35, 0x0F35,
  1546. 0x0F37, 0x0F37,
  1547. 0x0F39, 0x0F39,
  1548. 0x0F71, 0x0F7E,
  1549. 0x0F80, 0x0F84,
  1550. 0x0F86, 0x0F87,
  1551. 0x0F8D, 0x0F97,
  1552. 0x0F99, 0x0FBC,
  1553. 0x0FC6, 0x0FC6,
  1554. 0x102D, 0x1030,
  1555. 0x1032, 0x1037,
  1556. 0x1039, 0x103A,
  1557. 0x103D, 0x103E,
  1558. 0x1058, 0x1059,
  1559. 0x105E, 0x1060,
  1560. 0x1071, 0x1074,
  1561. 0x1082, 0x1082,
  1562. 0x1085, 0x1086,
  1563. 0x108D, 0x108D,
  1564. 0x109D, 0x109D,
  1565. 0x135D, 0x135F,
  1566. 0x1712, 0x1714,
  1567. 0x1732, 0x1733,
  1568. 0x1752, 0x1753,
  1569. 0x1772, 0x1773,
  1570. 0x17B4, 0x17B5,
  1571. 0x17B7, 0x17BD,
  1572. 0x17C6, 0x17C6,
  1573. 0x17C9, 0x17D3,
  1574. 0x17DD, 0x17DD,
  1575. 0x180B, 0x180D,
  1576. 0x180F, 0x180F,
  1577. 0x1885, 0x1886,
  1578. 0x18A9, 0x18A9,
  1579. 0x1920, 0x1922,
  1580. 0x1927, 0x1928,
  1581. 0x1932, 0x1932,
  1582. 0x1939, 0x193B,
  1583. 0x1A17, 0x1A18,
  1584. 0x1A1B, 0x1A1B,
  1585. 0x1A56, 0x1A56,
  1586. 0x1A58, 0x1A5E,
  1587. 0x1A60, 0x1A60,
  1588. 0x1A62, 0x1A62,
  1589. 0x1A65, 0x1A6C,
  1590. 0x1A73, 0x1A7C,
  1591. 0x1A7F, 0x1A7F,
  1592. 0x1AB0, 0x1ABD,
  1593. 0x1ABF, 0x1ACE,
  1594. 0x1B00, 0x1B03,
  1595. 0x1B34, 0x1B34,
  1596. 0x1B36, 0x1B3A,
  1597. 0x1B3C, 0x1B3C,
  1598. 0x1B42, 0x1B42,
  1599. 0x1B6B, 0x1B73,
  1600. 0x1B80, 0x1B81,
  1601. 0x1BA2, 0x1BA5,
  1602. 0x1BA8, 0x1BA9,
  1603. 0x1BAB, 0x1BAD,
  1604. 0x1BE6, 0x1BE6,
  1605. 0x1BE8, 0x1BE9,
  1606. 0x1BED, 0x1BED,
  1607. 0x1BEF, 0x1BF1,
  1608. 0x1C2C, 0x1C33,
  1609. 0x1C36, 0x1C37,
  1610. 0x1CD0, 0x1CD2,
  1611. 0x1CD4, 0x1CE0,
  1612. 0x1CE2, 0x1CE8,
  1613. 0x1CED, 0x1CED,
  1614. 0x1CF4, 0x1CF4,
  1615. 0x1CF8, 0x1CF9,
  1616. 0x1DC0, 0x1DFF,
  1617. 0x20D0, 0x20DC,
  1618. 0x20E1, 0x20E1,
  1619. 0x20E5, 0x20F0,
  1620. 0x2CEF, 0x2CF1,
  1621. 0x2D7F, 0x2D7F,
  1622. 0x2DE0, 0x2DFF,
  1623. 0x302A, 0x302D,
  1624. 0x3099, 0x309A,
  1625. 0xA66F, 0xA66F,
  1626. 0xA674, 0xA67D,
  1627. 0xA69E, 0xA69F,
  1628. 0xA6F0, 0xA6F1,
  1629. 0xA802, 0xA802,
  1630. 0xA806, 0xA806,
  1631. 0xA80B, 0xA80B,
  1632. 0xA825, 0xA826,
  1633. 0xA82C, 0xA82C,
  1634. 0xA8C4, 0xA8C5,
  1635. 0xA8E0, 0xA8F1,
  1636. 0xA8FF, 0xA8FF,
  1637. 0xA926, 0xA92D,
  1638. 0xA947, 0xA951,
  1639. 0xA980, 0xA982,
  1640. 0xA9B3, 0xA9B3,
  1641. 0xA9B6, 0xA9B9,
  1642. 0xA9BC, 0xA9BD,
  1643. 0xA9E5, 0xA9E5,
  1644. 0xAA29, 0xAA2E,
  1645. 0xAA31, 0xAA32,
  1646. 0xAA35, 0xAA36,
  1647. 0xAA43, 0xAA43,
  1648. 0xAA4C, 0xAA4C,
  1649. 0xAA7C, 0xAA7C,
  1650. 0xAAB0, 0xAAB0,
  1651. 0xAAB2, 0xAAB4,
  1652. 0xAAB7, 0xAAB8,
  1653. 0xAABE, 0xAABF,
  1654. 0xAAC1, 0xAAC1,
  1655. 0xAAEC, 0xAAED,
  1656. 0xAAF6, 0xAAF6,
  1657. 0xABE5, 0xABE5,
  1658. 0xABE8, 0xABE8,
  1659. 0xABED, 0xABED,
  1660. 0xFB1E, 0xFB1E,
  1661. 0xFE00, 0xFE0F,
  1662. 0xFE20, 0xFE2F,
  1663. 0x101FD, 0x101FD,
  1664. 0x102E0, 0x102E0,
  1665. 0x10376, 0x1037A,
  1666. 0x10A01, 0x10A03,
  1667. 0x10A05, 0x10A06,
  1668. 0x10A0C, 0x10A0F,
  1669. 0x10A38, 0x10A3A,
  1670. 0x10A3F, 0x10A3F,
  1671. 0x10AE5, 0x10AE6,
  1672. 0x10D24, 0x10D27,
  1673. 0x10EAB, 0x10EAC,
  1674. 0x10EFD, 0x10EFF,
  1675. 0x10F46, 0x10F50,
  1676. 0x10F82, 0x10F85,
  1677. 0x11001, 0x11001,
  1678. 0x11038, 0x11046,
  1679. 0x11070, 0x11070,
  1680. 0x11073, 0x11074,
  1681. 0x1107F, 0x11081,
  1682. 0x110B3, 0x110B6,
  1683. 0x110B9, 0x110BA,
  1684. 0x110C2, 0x110C2,
  1685. 0x11100, 0x11102,
  1686. 0x11127, 0x1112B,
  1687. 0x1112D, 0x11134,
  1688. 0x11173, 0x11173,
  1689. 0x11180, 0x11181,
  1690. 0x111B6, 0x111BE,
  1691. 0x111C9, 0x111CC,
  1692. 0x111CF, 0x111CF,
  1693. 0x1122F, 0x11231,
  1694. 0x11234, 0x11234,
  1695. 0x11236, 0x11237,
  1696. 0x1123E, 0x1123E,
  1697. 0x11241, 0x11241,
  1698. 0x112DF, 0x112DF,
  1699. 0x112E3, 0x112EA,
  1700. 0x11300, 0x11301,
  1701. 0x1133B, 0x1133C,
  1702. 0x11340, 0x11340,
  1703. 0x11366, 0x1136C,
  1704. 0x11370, 0x11374,
  1705. 0x11438, 0x1143F,
  1706. 0x11442, 0x11444,
  1707. 0x11446, 0x11446,
  1708. 0x1145E, 0x1145E,
  1709. 0x114B3, 0x114B8,
  1710. 0x114BA, 0x114BA,
  1711. 0x114BF, 0x114C0,
  1712. 0x114C2, 0x114C3,
  1713. 0x115B2, 0x115B5,
  1714. 0x115BC, 0x115BD,
  1715. 0x115BF, 0x115C0,
  1716. 0x115DC, 0x115DD,
  1717. 0x11633, 0x1163A,
  1718. 0x1163D, 0x1163D,
  1719. 0x1163F, 0x11640,
  1720. 0x116AB, 0x116AB,
  1721. 0x116AD, 0x116AD,
  1722. 0x116B0, 0x116B5,
  1723. 0x116B7, 0x116B7,
  1724. 0x1171D, 0x1171F,
  1725. 0x11722, 0x11725,
  1726. 0x11727, 0x1172B,
  1727. 0x1182F, 0x11837,
  1728. 0x11839, 0x1183A,
  1729. 0x1193B, 0x1193C,
  1730. 0x1193E, 0x1193E,
  1731. 0x11943, 0x11943,
  1732. 0x119D4, 0x119D7,
  1733. 0x119DA, 0x119DB,
  1734. 0x119E0, 0x119E0,
  1735. 0x11A01, 0x11A0A,
  1736. 0x11A33, 0x11A38,
  1737. 0x11A3B, 0x11A3E,
  1738. 0x11A47, 0x11A47,
  1739. 0x11A51, 0x11A56,
  1740. 0x11A59, 0x11A5B,
  1741. 0x11A8A, 0x11A96,
  1742. 0x11A98, 0x11A99,
  1743. 0x11C30, 0x11C36,
  1744. 0x11C38, 0x11C3D,
  1745. 0x11C3F, 0x11C3F,
  1746. 0x11C92, 0x11CA7,
  1747. 0x11CAA, 0x11CB0,
  1748. 0x11CB2, 0x11CB3,
  1749. 0x11CB5, 0x11CB6,
  1750. 0x11D31, 0x11D36,
  1751. 0x11D3A, 0x11D3A,
  1752. 0x11D3C, 0x11D3D,
  1753. 0x11D3F, 0x11D45,
  1754. 0x11D47, 0x11D47,
  1755. 0x11D90, 0x11D91,
  1756. 0x11D95, 0x11D95,
  1757. 0x11D97, 0x11D97,
  1758. 0x11EF3, 0x11EF4,
  1759. 0x11F00, 0x11F01,
  1760. 0x11F36, 0x11F3A,
  1761. 0x11F40, 0x11F40,
  1762. 0x11F42, 0x11F42,
  1763. 0x13440, 0x13440,
  1764. 0x13447, 0x13455,
  1765. 0x16AF0, 0x16AF4,
  1766. 0x16B30, 0x16B36,
  1767. 0x16F4F, 0x16F4F,
  1768. 0x16F8F, 0x16F92,
  1769. 0x16FE4, 0x16FE4,
  1770. 0x1BC9D, 0x1BC9E,
  1771. 0x1CF00, 0x1CF2D,
  1772. 0x1CF30, 0x1CF46,
  1773. 0x1D167, 0x1D169,
  1774. 0x1D17B, 0x1D182,
  1775. 0x1D185, 0x1D18B,
  1776. 0x1D1AA, 0x1D1AD,
  1777. 0x1D242, 0x1D244,
  1778. 0x1DA00, 0x1DA36,
  1779. 0x1DA3B, 0x1DA6C,
  1780. 0x1DA75, 0x1DA75,
  1781. 0x1DA84, 0x1DA84,
  1782. 0x1DA9B, 0x1DA9F,
  1783. 0x1DAA1, 0x1DAAF,
  1784. 0x1E000, 0x1E006,
  1785. 0x1E008, 0x1E018,
  1786. 0x1E01B, 0x1E021,
  1787. 0x1E023, 0x1E024,
  1788. 0x1E026, 0x1E02A,
  1789. 0x1E08F, 0x1E08F,
  1790. 0x1E130, 0x1E136,
  1791. 0x1E2AE, 0x1E2AE,
  1792. 0x1E2EC, 0x1E2EF,
  1793. 0x1E4EC, 0x1E4EF,
  1794. 0x1E8D0, 0x1E8D6,
  1795. 0x1E944, 0x1E94A,
  1796. 0xE0100, 0xE01EF,
  1797. }
  1798. @(rodata)
  1799. emoji_extended_pictographic_ranges := [?]i32 {
  1800. 0x00A9, 0x00A9,
  1801. 0x00AE, 0x00AE,
  1802. 0x203C, 0x203C,
  1803. 0x2049, 0x2049,
  1804. 0x2122, 0x2122,
  1805. 0x2139, 0x2139,
  1806. 0x2194, 0x2199,
  1807. 0x21A9, 0x21AA,
  1808. 0x231A, 0x231B,
  1809. 0x2328, 0x2328,
  1810. 0x2388, 0x2388,
  1811. 0x23CF, 0x23CF,
  1812. 0x23E9, 0x23EC,
  1813. 0x23ED, 0x23EE,
  1814. 0x23EF, 0x23EF,
  1815. 0x23F0, 0x23F0,
  1816. 0x23F1, 0x23F2,
  1817. 0x23F3, 0x23F3,
  1818. 0x23F8, 0x23FA,
  1819. 0x24C2, 0x24C2,
  1820. 0x25AA, 0x25AB,
  1821. 0x25B6, 0x25B6,
  1822. 0x25C0, 0x25C0,
  1823. 0x25FB, 0x25FE,
  1824. 0x2600, 0x2601,
  1825. 0x2602, 0x2603,
  1826. 0x2604, 0x2604,
  1827. 0x2605, 0x2605,
  1828. 0x2607, 0x260D,
  1829. 0x260E, 0x260E,
  1830. 0x260F, 0x2610,
  1831. 0x2611, 0x2611,
  1832. 0x2612, 0x2612,
  1833. 0x2614, 0x2615,
  1834. 0x2616, 0x2617,
  1835. 0x2618, 0x2618,
  1836. 0x2619, 0x261C,
  1837. 0x261D, 0x261D,
  1838. 0x261E, 0x261F,
  1839. 0x2620, 0x2620,
  1840. 0x2621, 0x2621,
  1841. 0x2622, 0x2623,
  1842. 0x2624, 0x2625,
  1843. 0x2626, 0x2626,
  1844. 0x2627, 0x2629,
  1845. 0x262A, 0x262A,
  1846. 0x262B, 0x262D,
  1847. 0x262E, 0x262E,
  1848. 0x262F, 0x262F,
  1849. 0x2630, 0x2637,
  1850. 0x2638, 0x2639,
  1851. 0x263A, 0x263A,
  1852. 0x263B, 0x263F,
  1853. 0x2640, 0x2640,
  1854. 0x2641, 0x2641,
  1855. 0x2642, 0x2642,
  1856. 0x2643, 0x2647,
  1857. 0x2648, 0x2653,
  1858. 0x2654, 0x265E,
  1859. 0x265F, 0x265F,
  1860. 0x2660, 0x2660,
  1861. 0x2661, 0x2662,
  1862. 0x2663, 0x2663,
  1863. 0x2664, 0x2664,
  1864. 0x2665, 0x2666,
  1865. 0x2667, 0x2667,
  1866. 0x2668, 0x2668,
  1867. 0x2669, 0x267A,
  1868. 0x267B, 0x267B,
  1869. 0x267C, 0x267D,
  1870. 0x267E, 0x267E,
  1871. 0x267F, 0x267F,
  1872. 0x2680, 0x2685,
  1873. 0x2690, 0x2691,
  1874. 0x2692, 0x2692,
  1875. 0x2693, 0x2693,
  1876. 0x2694, 0x2694,
  1877. 0x2695, 0x2695,
  1878. 0x2696, 0x2697,
  1879. 0x2698, 0x2698,
  1880. 0x2699, 0x2699,
  1881. 0x269A, 0x269A,
  1882. 0x269B, 0x269C,
  1883. 0x269D, 0x269F,
  1884. 0x26A0, 0x26A1,
  1885. 0x26A2, 0x26A6,
  1886. 0x26A7, 0x26A7,
  1887. 0x26A8, 0x26A9,
  1888. 0x26AA, 0x26AB,
  1889. 0x26AC, 0x26AF,
  1890. 0x26B0, 0x26B1,
  1891. 0x26B2, 0x26BC,
  1892. 0x26BD, 0x26BE,
  1893. 0x26BF, 0x26C3,
  1894. 0x26C4, 0x26C5,
  1895. 0x26C6, 0x26C7,
  1896. 0x26C8, 0x26C8,
  1897. 0x26C9, 0x26CD,
  1898. 0x26CE, 0x26CE,
  1899. 0x26CF, 0x26CF,
  1900. 0x26D0, 0x26D0,
  1901. 0x26D1, 0x26D1,
  1902. 0x26D2, 0x26D2,
  1903. 0x26D3, 0x26D3,
  1904. 0x26D4, 0x26D4,
  1905. 0x26D5, 0x26E8,
  1906. 0x26E9, 0x26E9,
  1907. 0x26EA, 0x26EA,
  1908. 0x26EB, 0x26EF,
  1909. 0x26F0, 0x26F1,
  1910. 0x26F2, 0x26F3,
  1911. 0x26F4, 0x26F4,
  1912. 0x26F5, 0x26F5,
  1913. 0x26F6, 0x26F6,
  1914. 0x26F7, 0x26F9,
  1915. 0x26FA, 0x26FA,
  1916. 0x26FB, 0x26FC,
  1917. 0x26FD, 0x26FD,
  1918. 0x26FE, 0x2701,
  1919. 0x2702, 0x2702,
  1920. 0x2703, 0x2704,
  1921. 0x2705, 0x2705,
  1922. 0x2708, 0x270C,
  1923. 0x270D, 0x270D,
  1924. 0x270E, 0x270E,
  1925. 0x270F, 0x270F,
  1926. 0x2710, 0x2711,
  1927. 0x2712, 0x2712,
  1928. 0x2714, 0x2714,
  1929. 0x2716, 0x2716,
  1930. 0x271D, 0x271D,
  1931. 0x2721, 0x2721,
  1932. 0x2728, 0x2728,
  1933. 0x2733, 0x2734,
  1934. 0x2744, 0x2744,
  1935. 0x2747, 0x2747,
  1936. 0x274C, 0x274C,
  1937. 0x274E, 0x274E,
  1938. 0x2753, 0x2755,
  1939. 0x2757, 0x2757,
  1940. 0x2763, 0x2763,
  1941. 0x2764, 0x2764,
  1942. 0x2765, 0x2767,
  1943. 0x2795, 0x2797,
  1944. 0x27A1, 0x27A1,
  1945. 0x27B0, 0x27B0,
  1946. 0x27BF, 0x27BF,
  1947. 0x2934, 0x2935,
  1948. 0x2B05, 0x2B07,
  1949. 0x2B1B, 0x2B1C,
  1950. 0x2B50, 0x2B50,
  1951. 0x2B55, 0x2B55,
  1952. 0x3030, 0x3030,
  1953. 0x303D, 0x303D,
  1954. 0x3297, 0x3297,
  1955. 0x3299, 0x3299,
  1956. 0x1F000, 0x1F003,
  1957. 0x1F004, 0x1F004,
  1958. 0x1F005, 0x1F0CE,
  1959. 0x1F0CF, 0x1F0CF,
  1960. 0x1F0D0, 0x1F0FF,
  1961. 0x1F10D, 0x1F10F,
  1962. 0x1F12F, 0x1F12F,
  1963. 0x1F16C, 0x1F16F,
  1964. 0x1F170, 0x1F171,
  1965. 0x1F17E, 0x1F17F,
  1966. 0x1F18E, 0x1F18E,
  1967. 0x1F191, 0x1F19A,
  1968. 0x1F1AD, 0x1F1E5,
  1969. 0x1F201, 0x1F202,
  1970. 0x1F203, 0x1F20F,
  1971. 0x1F21A, 0x1F21A,
  1972. 0x1F22F, 0x1F22F,
  1973. 0x1F232, 0x1F23A,
  1974. 0x1F23C, 0x1F23F,
  1975. 0x1F249, 0x1F24F,
  1976. 0x1F250, 0x1F251,
  1977. 0x1F252, 0x1F2FF,
  1978. 0x1F300, 0x1F30C,
  1979. 0x1F30D, 0x1F30E,
  1980. 0x1F30F, 0x1F30F,
  1981. 0x1F310, 0x1F310,
  1982. 0x1F311, 0x1F311,
  1983. 0x1F312, 0x1F312,
  1984. 0x1F313, 0x1F315,
  1985. 0x1F316, 0x1F318,
  1986. 0x1F319, 0x1F319,
  1987. 0x1F31A, 0x1F31A,
  1988. 0x1F31B, 0x1F31B,
  1989. 0x1F31C, 0x1F31C,
  1990. 0x1F31D, 0x1F31E,
  1991. 0x1F31F, 0x1F320,
  1992. 0x1F321, 0x1F321,
  1993. 0x1F322, 0x1F323,
  1994. 0x1F324, 0x1F32C,
  1995. 0x1F32D, 0x1F32F,
  1996. 0x1F330, 0x1F331,
  1997. 0x1F332, 0x1F333,
  1998. 0x1F334, 0x1F335,
  1999. 0x1F336, 0x1F336,
  2000. 0x1F337, 0x1F34A,
  2001. 0x1F34B, 0x1F34B,
  2002. 0x1F34C, 0x1F34F,
  2003. 0x1F350, 0x1F350,
  2004. 0x1F351, 0x1F37B,
  2005. 0x1F37C, 0x1F37C,
  2006. 0x1F37D, 0x1F37D,
  2007. 0x1F37E, 0x1F37F,
  2008. 0x1F380, 0x1F393,
  2009. 0x1F394, 0x1F395,
  2010. 0x1F396, 0x1F397,
  2011. 0x1F398, 0x1F398,
  2012. 0x1F399, 0x1F39B,
  2013. 0x1F39C, 0x1F39D,
  2014. 0x1F39E, 0x1F39F,
  2015. 0x1F3A0, 0x1F3C4,
  2016. 0x1F3C5, 0x1F3C5,
  2017. 0x1F3C6, 0x1F3C6,
  2018. 0x1F3C7, 0x1F3C7,
  2019. 0x1F3C8, 0x1F3C8,
  2020. 0x1F3C9, 0x1F3C9,
  2021. 0x1F3CA, 0x1F3CA,
  2022. 0x1F3CB, 0x1F3CE,
  2023. 0x1F3CF, 0x1F3D3,
  2024. 0x1F3D4, 0x1F3DF,
  2025. 0x1F3E0, 0x1F3E3,
  2026. 0x1F3E4, 0x1F3E4,
  2027. 0x1F3E5, 0x1F3F0,
  2028. 0x1F3F1, 0x1F3F2,
  2029. 0x1F3F3, 0x1F3F3,
  2030. 0x1F3F4, 0x1F3F4,
  2031. 0x1F3F5, 0x1F3F5,
  2032. 0x1F3F6, 0x1F3F6,
  2033. 0x1F3F7, 0x1F3F7,
  2034. 0x1F3F8, 0x1F3FA,
  2035. 0x1F400, 0x1F407,
  2036. 0x1F408, 0x1F408,
  2037. 0x1F409, 0x1F40B,
  2038. 0x1F40C, 0x1F40E,
  2039. 0x1F40F, 0x1F410,
  2040. 0x1F411, 0x1F412,
  2041. 0x1F413, 0x1F413,
  2042. 0x1F414, 0x1F414,
  2043. 0x1F415, 0x1F415,
  2044. 0x1F416, 0x1F416,
  2045. 0x1F417, 0x1F429,
  2046. 0x1F42A, 0x1F42A,
  2047. 0x1F42B, 0x1F43E,
  2048. 0x1F43F, 0x1F43F,
  2049. 0x1F440, 0x1F440,
  2050. 0x1F441, 0x1F441,
  2051. 0x1F442, 0x1F464,
  2052. 0x1F465, 0x1F465,
  2053. 0x1F466, 0x1F46B,
  2054. 0x1F46C, 0x1F46D,
  2055. 0x1F46E, 0x1F4AC,
  2056. 0x1F4AD, 0x1F4AD,
  2057. 0x1F4AE, 0x1F4B5,
  2058. 0x1F4B6, 0x1F4B7,
  2059. 0x1F4B8, 0x1F4EB,
  2060. 0x1F4EC, 0x1F4ED,
  2061. 0x1F4EE, 0x1F4EE,
  2062. 0x1F4EF, 0x1F4EF,
  2063. 0x1F4F0, 0x1F4F4,
  2064. 0x1F4F5, 0x1F4F5,
  2065. 0x1F4F6, 0x1F4F7,
  2066. 0x1F4F8, 0x1F4F8,
  2067. 0x1F4F9, 0x1F4FC,
  2068. 0x1F4FD, 0x1F4FD,
  2069. 0x1F4FE, 0x1F4FE,
  2070. 0x1F4FF, 0x1F502,
  2071. 0x1F503, 0x1F503,
  2072. 0x1F504, 0x1F507,
  2073. 0x1F508, 0x1F508,
  2074. 0x1F509, 0x1F509,
  2075. 0x1F50A, 0x1F514,
  2076. 0x1F515, 0x1F515,
  2077. 0x1F516, 0x1F52B,
  2078. 0x1F52C, 0x1F52D,
  2079. 0x1F52E, 0x1F53D,
  2080. 0x1F546, 0x1F548,
  2081. 0x1F549, 0x1F54A,
  2082. 0x1F54B, 0x1F54E,
  2083. 0x1F54F, 0x1F54F,
  2084. 0x1F550, 0x1F55B,
  2085. 0x1F55C, 0x1F567,
  2086. 0x1F568, 0x1F56E,
  2087. 0x1F56F, 0x1F570,
  2088. 0x1F571, 0x1F572,
  2089. 0x1F573, 0x1F579,
  2090. 0x1F57A, 0x1F57A,
  2091. 0x1F57B, 0x1F586,
  2092. 0x1F587, 0x1F587,
  2093. 0x1F588, 0x1F589,
  2094. 0x1F58A, 0x1F58D,
  2095. 0x1F58E, 0x1F58F,
  2096. 0x1F590, 0x1F590,
  2097. 0x1F591, 0x1F594,
  2098. 0x1F595, 0x1F596,
  2099. 0x1F597, 0x1F5A3,
  2100. 0x1F5A4, 0x1F5A4,
  2101. 0x1F5A5, 0x1F5A5,
  2102. 0x1F5A6, 0x1F5A7,
  2103. 0x1F5A8, 0x1F5A8,
  2104. 0x1F5A9, 0x1F5B0,
  2105. 0x1F5B1, 0x1F5B2,
  2106. 0x1F5B3, 0x1F5BB,
  2107. 0x1F5BC, 0x1F5BC,
  2108. 0x1F5BD, 0x1F5C1,
  2109. 0x1F5C2, 0x1F5C4,
  2110. 0x1F5C5, 0x1F5D0,
  2111. 0x1F5D1, 0x1F5D3,
  2112. 0x1F5D4, 0x1F5DB,
  2113. 0x1F5DC, 0x1F5DE,
  2114. 0x1F5DF, 0x1F5E0,
  2115. 0x1F5E1, 0x1F5E1,
  2116. 0x1F5E2, 0x1F5E2,
  2117. 0x1F5E3, 0x1F5E3,
  2118. 0x1F5E4, 0x1F5E7,
  2119. 0x1F5E8, 0x1F5E8,
  2120. 0x1F5E9, 0x1F5EE,
  2121. 0x1F5EF, 0x1F5EF,
  2122. 0x1F5F0, 0x1F5F2,
  2123. 0x1F5F3, 0x1F5F3,
  2124. 0x1F5F4, 0x1F5F9,
  2125. 0x1F5FA, 0x1F5FA,
  2126. 0x1F5FB, 0x1F5FF,
  2127. 0x1F600, 0x1F600,
  2128. 0x1F601, 0x1F606,
  2129. 0x1F607, 0x1F608,
  2130. 0x1F609, 0x1F60D,
  2131. 0x1F60E, 0x1F60E,
  2132. 0x1F60F, 0x1F60F,
  2133. 0x1F610, 0x1F610,
  2134. 0x1F611, 0x1F611,
  2135. 0x1F612, 0x1F614,
  2136. 0x1F615, 0x1F615,
  2137. 0x1F616, 0x1F616,
  2138. 0x1F617, 0x1F617,
  2139. 0x1F618, 0x1F618,
  2140. 0x1F619, 0x1F619,
  2141. 0x1F61A, 0x1F61A,
  2142. 0x1F61B, 0x1F61B,
  2143. 0x1F61C, 0x1F61E,
  2144. 0x1F61F, 0x1F61F,
  2145. 0x1F620, 0x1F625,
  2146. 0x1F626, 0x1F627,
  2147. 0x1F628, 0x1F62B,
  2148. 0x1F62C, 0x1F62C,
  2149. 0x1F62D, 0x1F62D,
  2150. 0x1F62E, 0x1F62F,
  2151. 0x1F630, 0x1F633,
  2152. 0x1F634, 0x1F634,
  2153. 0x1F635, 0x1F635,
  2154. 0x1F636, 0x1F636,
  2155. 0x1F637, 0x1F640,
  2156. 0x1F641, 0x1F644,
  2157. 0x1F645, 0x1F64F,
  2158. 0x1F680, 0x1F680,
  2159. 0x1F681, 0x1F682,
  2160. 0x1F683, 0x1F685,
  2161. 0x1F686, 0x1F686,
  2162. 0x1F687, 0x1F687,
  2163. 0x1F688, 0x1F688,
  2164. 0x1F689, 0x1F689,
  2165. 0x1F68A, 0x1F68B,
  2166. 0x1F68C, 0x1F68C,
  2167. 0x1F68D, 0x1F68D,
  2168. 0x1F68E, 0x1F68E,
  2169. 0x1F68F, 0x1F68F,
  2170. 0x1F690, 0x1F690,
  2171. 0x1F691, 0x1F693,
  2172. 0x1F694, 0x1F694,
  2173. 0x1F695, 0x1F695,
  2174. 0x1F696, 0x1F696,
  2175. 0x1F697, 0x1F697,
  2176. 0x1F698, 0x1F698,
  2177. 0x1F699, 0x1F69A,
  2178. 0x1F69B, 0x1F6A1,
  2179. 0x1F6A2, 0x1F6A2,
  2180. 0x1F6A3, 0x1F6A3,
  2181. 0x1F6A4, 0x1F6A5,
  2182. 0x1F6A6, 0x1F6A6,
  2183. 0x1F6A7, 0x1F6AD,
  2184. 0x1F6AE, 0x1F6B1,
  2185. 0x1F6B2, 0x1F6B2,
  2186. 0x1F6B3, 0x1F6B5,
  2187. 0x1F6B6, 0x1F6B6,
  2188. 0x1F6B7, 0x1F6B8,
  2189. 0x1F6B9, 0x1F6BE,
  2190. 0x1F6BF, 0x1F6BF,
  2191. 0x1F6C0, 0x1F6C0,
  2192. 0x1F6C1, 0x1F6C5,
  2193. 0x1F6C6, 0x1F6CA,
  2194. 0x1F6CB, 0x1F6CB,
  2195. 0x1F6CC, 0x1F6CC,
  2196. 0x1F6CD, 0x1F6CF,
  2197. 0x1F6D0, 0x1F6D0,
  2198. 0x1F6D1, 0x1F6D2,
  2199. 0x1F6D3, 0x1F6D4,
  2200. 0x1F6D5, 0x1F6D5,
  2201. 0x1F6D6, 0x1F6D7,
  2202. 0x1F6D8, 0x1F6DB,
  2203. 0x1F6DC, 0x1F6DC,
  2204. 0x1F6DD, 0x1F6DF,
  2205. 0x1F6E0, 0x1F6E5,
  2206. 0x1F6E6, 0x1F6E8,
  2207. 0x1F6E9, 0x1F6E9,
  2208. 0x1F6EA, 0x1F6EA,
  2209. 0x1F6EB, 0x1F6EC,
  2210. 0x1F6ED, 0x1F6EF,
  2211. 0x1F6F0, 0x1F6F0,
  2212. 0x1F6F1, 0x1F6F2,
  2213. 0x1F6F3, 0x1F6F3,
  2214. 0x1F6F4, 0x1F6F6,
  2215. 0x1F6F7, 0x1F6F8,
  2216. 0x1F6F9, 0x1F6F9,
  2217. 0x1F6FA, 0x1F6FA,
  2218. 0x1F6FB, 0x1F6FC,
  2219. 0x1F6FD, 0x1F6FF,
  2220. 0x1F774, 0x1F77F,
  2221. 0x1F7D5, 0x1F7DF,
  2222. 0x1F7E0, 0x1F7EB,
  2223. 0x1F7EC, 0x1F7EF,
  2224. 0x1F7F0, 0x1F7F0,
  2225. 0x1F7F1, 0x1F7FF,
  2226. 0x1F80C, 0x1F80F,
  2227. 0x1F848, 0x1F84F,
  2228. 0x1F85A, 0x1F85F,
  2229. 0x1F888, 0x1F88F,
  2230. 0x1F8AE, 0x1F8FF,
  2231. 0x1F90C, 0x1F90C,
  2232. 0x1F90D, 0x1F90F,
  2233. 0x1F910, 0x1F918,
  2234. 0x1F919, 0x1F91E,
  2235. 0x1F91F, 0x1F91F,
  2236. 0x1F920, 0x1F927,
  2237. 0x1F928, 0x1F92F,
  2238. 0x1F930, 0x1F930,
  2239. 0x1F931, 0x1F932,
  2240. 0x1F933, 0x1F93A,
  2241. 0x1F93C, 0x1F93E,
  2242. 0x1F93F, 0x1F93F,
  2243. 0x1F940, 0x1F945,
  2244. 0x1F947, 0x1F94B,
  2245. 0x1F94C, 0x1F94C,
  2246. 0x1F94D, 0x1F94F,
  2247. 0x1F950, 0x1F95E,
  2248. 0x1F95F, 0x1F96B,
  2249. 0x1F96C, 0x1F970,
  2250. 0x1F971, 0x1F971,
  2251. 0x1F972, 0x1F972,
  2252. 0x1F973, 0x1F976,
  2253. 0x1F977, 0x1F978,
  2254. 0x1F979, 0x1F979,
  2255. 0x1F97A, 0x1F97A,
  2256. 0x1F97B, 0x1F97B,
  2257. 0x1F97C, 0x1F97F,
  2258. 0x1F980, 0x1F984,
  2259. 0x1F985, 0x1F991,
  2260. 0x1F992, 0x1F997,
  2261. 0x1F998, 0x1F9A2,
  2262. 0x1F9A3, 0x1F9A4,
  2263. 0x1F9A5, 0x1F9AA,
  2264. 0x1F9AB, 0x1F9AD,
  2265. 0x1F9AE, 0x1F9AF,
  2266. 0x1F9B0, 0x1F9B9,
  2267. 0x1F9BA, 0x1F9BF,
  2268. 0x1F9C0, 0x1F9C0,
  2269. 0x1F9C1, 0x1F9C2,
  2270. 0x1F9C3, 0x1F9CA,
  2271. 0x1F9CB, 0x1F9CB,
  2272. 0x1F9CC, 0x1F9CC,
  2273. 0x1F9CD, 0x1F9CF,
  2274. 0x1F9D0, 0x1F9E6,
  2275. 0x1F9E7, 0x1F9FF,
  2276. 0x1FA00, 0x1FA6F,
  2277. 0x1FA70, 0x1FA73,
  2278. 0x1FA74, 0x1FA74,
  2279. 0x1FA75, 0x1FA77,
  2280. 0x1FA78, 0x1FA7A,
  2281. 0x1FA7B, 0x1FA7C,
  2282. 0x1FA7D, 0x1FA7F,
  2283. 0x1FA80, 0x1FA82,
  2284. 0x1FA83, 0x1FA86,
  2285. 0x1FA87, 0x1FA88,
  2286. 0x1FA89, 0x1FA8F,
  2287. 0x1FA90, 0x1FA95,
  2288. 0x1FA96, 0x1FAA8,
  2289. 0x1FAA9, 0x1FAAC,
  2290. 0x1FAAD, 0x1FAAF,
  2291. 0x1FAB0, 0x1FAB6,
  2292. 0x1FAB7, 0x1FABA,
  2293. 0x1FABB, 0x1FABD,
  2294. 0x1FABE, 0x1FABE,
  2295. 0x1FABF, 0x1FABF,
  2296. 0x1FAC0, 0x1FAC2,
  2297. 0x1FAC3, 0x1FAC5,
  2298. 0x1FAC6, 0x1FACD,
  2299. 0x1FACE, 0x1FACF,
  2300. 0x1FAD0, 0x1FAD6,
  2301. 0x1FAD7, 0x1FAD9,
  2302. 0x1FADA, 0x1FADB,
  2303. 0x1FADC, 0x1FADF,
  2304. 0x1FAE0, 0x1FAE7,
  2305. 0x1FAE8, 0x1FAE8,
  2306. 0x1FAE9, 0x1FAEF,
  2307. 0x1FAF0, 0x1FAF6,
  2308. 0x1FAF7, 0x1FAF8,
  2309. 0x1FAF9, 0x1FAFF,
  2310. 0x1FC00, 0x1FFFD,
  2311. }
  2312. @(rodata)
  2313. grapheme_extend_ranges := [?]i32 {
  2314. 0x0300, 0x036F,
  2315. 0x0483, 0x0487,
  2316. 0x0488, 0x0489,
  2317. 0x0591, 0x05BD,
  2318. 0x05BF, 0x05BF,
  2319. 0x05C1, 0x05C2,
  2320. 0x05C4, 0x05C5,
  2321. 0x05C7, 0x05C7,
  2322. 0x0610, 0x061A,
  2323. 0x064B, 0x065F,
  2324. 0x0670, 0x0670,
  2325. 0x06D6, 0x06DC,
  2326. 0x06DF, 0x06E4,
  2327. 0x06E7, 0x06E8,
  2328. 0x06EA, 0x06ED,
  2329. 0x0711, 0x0711,
  2330. 0x0730, 0x074A,
  2331. 0x07A6, 0x07B0,
  2332. 0x07EB, 0x07F3,
  2333. 0x07FD, 0x07FD,
  2334. 0x0816, 0x0819,
  2335. 0x081B, 0x0823,
  2336. 0x0825, 0x0827,
  2337. 0x0829, 0x082D,
  2338. 0x0859, 0x085B,
  2339. 0x0898, 0x089F,
  2340. 0x08CA, 0x08E1,
  2341. 0x08E3, 0x0902,
  2342. 0x093A, 0x093A,
  2343. 0x093C, 0x093C,
  2344. 0x0941, 0x0948,
  2345. 0x094D, 0x094D,
  2346. 0x0951, 0x0957,
  2347. 0x0962, 0x0963,
  2348. 0x0981, 0x0981,
  2349. 0x09BC, 0x09BC,
  2350. 0x09BE, 0x09BE,
  2351. 0x09C1, 0x09C4,
  2352. 0x09CD, 0x09CD,
  2353. 0x09D7, 0x09D7,
  2354. 0x09E2, 0x09E3,
  2355. 0x09FE, 0x09FE,
  2356. 0x0A01, 0x0A02,
  2357. 0x0A3C, 0x0A3C,
  2358. 0x0A41, 0x0A42,
  2359. 0x0A47, 0x0A48,
  2360. 0x0A4B, 0x0A4D,
  2361. 0x0A51, 0x0A51,
  2362. 0x0A70, 0x0A71,
  2363. 0x0A75, 0x0A75,
  2364. 0x0A81, 0x0A82,
  2365. 0x0ABC, 0x0ABC,
  2366. 0x0AC1, 0x0AC5,
  2367. 0x0AC7, 0x0AC8,
  2368. 0x0ACD, 0x0ACD,
  2369. 0x0AE2, 0x0AE3,
  2370. 0x0AFA, 0x0AFF,
  2371. 0x0B01, 0x0B01,
  2372. 0x0B3C, 0x0B3C,
  2373. 0x0B3E, 0x0B3E,
  2374. 0x0B3F, 0x0B3F,
  2375. 0x0B41, 0x0B44,
  2376. 0x0B4D, 0x0B4D,
  2377. 0x0B55, 0x0B56,
  2378. 0x0B57, 0x0B57,
  2379. 0x0B62, 0x0B63,
  2380. 0x0B82, 0x0B82,
  2381. 0x0BBE, 0x0BBE,
  2382. 0x0BC0, 0x0BC0,
  2383. 0x0BCD, 0x0BCD,
  2384. 0x0BD7, 0x0BD7,
  2385. 0x0C00, 0x0C00,
  2386. 0x0C04, 0x0C04,
  2387. 0x0C3C, 0x0C3C,
  2388. 0x0C3E, 0x0C40,
  2389. 0x0C46, 0x0C48,
  2390. 0x0C4A, 0x0C4D,
  2391. 0x0C55, 0x0C56,
  2392. 0x0C62, 0x0C63,
  2393. 0x0C81, 0x0C81,
  2394. 0x0CBC, 0x0CBC,
  2395. 0x0CBF, 0x0CBF,
  2396. 0x0CC2, 0x0CC2,
  2397. 0x0CC6, 0x0CC6,
  2398. 0x0CCC, 0x0CCD,
  2399. 0x0CD5, 0x0CD6,
  2400. 0x0CE2, 0x0CE3,
  2401. 0x0D00, 0x0D01,
  2402. 0x0D3B, 0x0D3C,
  2403. 0x0D3E, 0x0D3E,
  2404. 0x0D41, 0x0D44,
  2405. 0x0D4D, 0x0D4D,
  2406. 0x0D57, 0x0D57,
  2407. 0x0D62, 0x0D63,
  2408. 0x0D81, 0x0D81,
  2409. 0x0DCA, 0x0DCA,
  2410. 0x0DCF, 0x0DCF,
  2411. 0x0DD2, 0x0DD4,
  2412. 0x0DD6, 0x0DD6,
  2413. 0x0DDF, 0x0DDF,
  2414. 0x0E31, 0x0E31,
  2415. 0x0E34, 0x0E3A,
  2416. 0x0E47, 0x0E4E,
  2417. 0x0EB1, 0x0EB1,
  2418. 0x0EB4, 0x0EBC,
  2419. 0x0EC8, 0x0ECE,
  2420. 0x0F18, 0x0F19,
  2421. 0x0F35, 0x0F35,
  2422. 0x0F37, 0x0F37,
  2423. 0x0F39, 0x0F39,
  2424. 0x0F71, 0x0F7E,
  2425. 0x0F80, 0x0F84,
  2426. 0x0F86, 0x0F87,
  2427. 0x0F8D, 0x0F97,
  2428. 0x0F99, 0x0FBC,
  2429. 0x0FC6, 0x0FC6,
  2430. 0x102D, 0x1030,
  2431. 0x1032, 0x1037,
  2432. 0x1039, 0x103A,
  2433. 0x103D, 0x103E,
  2434. 0x1058, 0x1059,
  2435. 0x105E, 0x1060,
  2436. 0x1071, 0x1074,
  2437. 0x1082, 0x1082,
  2438. 0x1085, 0x1086,
  2439. 0x108D, 0x108D,
  2440. 0x109D, 0x109D,
  2441. 0x135D, 0x135F,
  2442. 0x1712, 0x1714,
  2443. 0x1732, 0x1733,
  2444. 0x1752, 0x1753,
  2445. 0x1772, 0x1773,
  2446. 0x17B4, 0x17B5,
  2447. 0x17B7, 0x17BD,
  2448. 0x17C6, 0x17C6,
  2449. 0x17C9, 0x17D3,
  2450. 0x17DD, 0x17DD,
  2451. 0x180B, 0x180D,
  2452. 0x180F, 0x180F,
  2453. 0x1885, 0x1886,
  2454. 0x18A9, 0x18A9,
  2455. 0x1920, 0x1922,
  2456. 0x1927, 0x1928,
  2457. 0x1932, 0x1932,
  2458. 0x1939, 0x193B,
  2459. 0x1A17, 0x1A18,
  2460. 0x1A1B, 0x1A1B,
  2461. 0x1A56, 0x1A56,
  2462. 0x1A58, 0x1A5E,
  2463. 0x1A60, 0x1A60,
  2464. 0x1A62, 0x1A62,
  2465. 0x1A65, 0x1A6C,
  2466. 0x1A73, 0x1A7C,
  2467. 0x1A7F, 0x1A7F,
  2468. 0x1AB0, 0x1ABD,
  2469. 0x1ABE, 0x1ABE,
  2470. 0x1ABF, 0x1ACE,
  2471. 0x1B00, 0x1B03,
  2472. 0x1B34, 0x1B34,
  2473. 0x1B35, 0x1B35,
  2474. 0x1B36, 0x1B3A,
  2475. 0x1B3C, 0x1B3C,
  2476. 0x1B42, 0x1B42,
  2477. 0x1B6B, 0x1B73,
  2478. 0x1B80, 0x1B81,
  2479. 0x1BA2, 0x1BA5,
  2480. 0x1BA8, 0x1BA9,
  2481. 0x1BAB, 0x1BAD,
  2482. 0x1BE6, 0x1BE6,
  2483. 0x1BE8, 0x1BE9,
  2484. 0x1BED, 0x1BED,
  2485. 0x1BEF, 0x1BF1,
  2486. 0x1C2C, 0x1C33,
  2487. 0x1C36, 0x1C37,
  2488. 0x1CD0, 0x1CD2,
  2489. 0x1CD4, 0x1CE0,
  2490. 0x1CE2, 0x1CE8,
  2491. 0x1CED, 0x1CED,
  2492. 0x1CF4, 0x1CF4,
  2493. 0x1CF8, 0x1CF9,
  2494. 0x1DC0, 0x1DFF,
  2495. 0x200C, 0x200C,
  2496. 0x20D0, 0x20DC,
  2497. 0x20DD, 0x20E0,
  2498. 0x20E1, 0x20E1,
  2499. 0x20E2, 0x20E4,
  2500. 0x20E5, 0x20F0,
  2501. 0x2CEF, 0x2CF1,
  2502. 0x2D7F, 0x2D7F,
  2503. 0x2DE0, 0x2DFF,
  2504. 0x302A, 0x302D,
  2505. 0x302E, 0x302F,
  2506. 0x3099, 0x309A,
  2507. 0xA66F, 0xA66F,
  2508. 0xA670, 0xA672,
  2509. 0xA674, 0xA67D,
  2510. 0xA69E, 0xA69F,
  2511. 0xA6F0, 0xA6F1,
  2512. 0xA802, 0xA802,
  2513. 0xA806, 0xA806,
  2514. 0xA80B, 0xA80B,
  2515. 0xA825, 0xA826,
  2516. 0xA82C, 0xA82C,
  2517. 0xA8C4, 0xA8C5,
  2518. 0xA8E0, 0xA8F1,
  2519. 0xA8FF, 0xA8FF,
  2520. 0xA926, 0xA92D,
  2521. 0xA947, 0xA951,
  2522. 0xA980, 0xA982,
  2523. 0xA9B3, 0xA9B3,
  2524. 0xA9B6, 0xA9B9,
  2525. 0xA9BC, 0xA9BD,
  2526. 0xA9E5, 0xA9E5,
  2527. 0xAA29, 0xAA2E,
  2528. 0xAA31, 0xAA32,
  2529. 0xAA35, 0xAA36,
  2530. 0xAA43, 0xAA43,
  2531. 0xAA4C, 0xAA4C,
  2532. 0xAA7C, 0xAA7C,
  2533. 0xAAB0, 0xAAB0,
  2534. 0xAAB2, 0xAAB4,
  2535. 0xAAB7, 0xAAB8,
  2536. 0xAABE, 0xAABF,
  2537. 0xAAC1, 0xAAC1,
  2538. 0xAAEC, 0xAAED,
  2539. 0xAAF6, 0xAAF6,
  2540. 0xABE5, 0xABE5,
  2541. 0xABE8, 0xABE8,
  2542. 0xABED, 0xABED,
  2543. 0xFB1E, 0xFB1E,
  2544. 0xFE00, 0xFE0F,
  2545. 0xFE20, 0xFE2F,
  2546. 0xFF9E, 0xFF9F,
  2547. 0x101FD, 0x101FD,
  2548. 0x102E0, 0x102E0,
  2549. 0x10376, 0x1037A,
  2550. 0x10A01, 0x10A03,
  2551. 0x10A05, 0x10A06,
  2552. 0x10A0C, 0x10A0F,
  2553. 0x10A38, 0x10A3A,
  2554. 0x10A3F, 0x10A3F,
  2555. 0x10AE5, 0x10AE6,
  2556. 0x10D24, 0x10D27,
  2557. 0x10EAB, 0x10EAC,
  2558. 0x10EFD, 0x10EFF,
  2559. 0x10F46, 0x10F50,
  2560. 0x10F82, 0x10F85,
  2561. 0x11001, 0x11001,
  2562. 0x11038, 0x11046,
  2563. 0x11070, 0x11070,
  2564. 0x11073, 0x11074,
  2565. 0x1107F, 0x11081,
  2566. 0x110B3, 0x110B6,
  2567. 0x110B9, 0x110BA,
  2568. 0x110C2, 0x110C2,
  2569. 0x11100, 0x11102,
  2570. 0x11127, 0x1112B,
  2571. 0x1112D, 0x11134,
  2572. 0x11173, 0x11173,
  2573. 0x11180, 0x11181,
  2574. 0x111B6, 0x111BE,
  2575. 0x111C9, 0x111CC,
  2576. 0x111CF, 0x111CF,
  2577. 0x1122F, 0x11231,
  2578. 0x11234, 0x11234,
  2579. 0x11236, 0x11237,
  2580. 0x1123E, 0x1123E,
  2581. 0x11241, 0x11241,
  2582. 0x112DF, 0x112DF,
  2583. 0x112E3, 0x112EA,
  2584. 0x11300, 0x11301,
  2585. 0x1133B, 0x1133C,
  2586. 0x1133E, 0x1133E,
  2587. 0x11340, 0x11340,
  2588. 0x11357, 0x11357,
  2589. 0x11366, 0x1136C,
  2590. 0x11370, 0x11374,
  2591. 0x11438, 0x1143F,
  2592. 0x11442, 0x11444,
  2593. 0x11446, 0x11446,
  2594. 0x1145E, 0x1145E,
  2595. 0x114B0, 0x114B0,
  2596. 0x114B3, 0x114B8,
  2597. 0x114BA, 0x114BA,
  2598. 0x114BD, 0x114BD,
  2599. 0x114BF, 0x114C0,
  2600. 0x114C2, 0x114C3,
  2601. 0x115AF, 0x115AF,
  2602. 0x115B2, 0x115B5,
  2603. 0x115BC, 0x115BD,
  2604. 0x115BF, 0x115C0,
  2605. 0x115DC, 0x115DD,
  2606. 0x11633, 0x1163A,
  2607. 0x1163D, 0x1163D,
  2608. 0x1163F, 0x11640,
  2609. 0x116AB, 0x116AB,
  2610. 0x116AD, 0x116AD,
  2611. 0x116B0, 0x116B5,
  2612. 0x116B7, 0x116B7,
  2613. 0x1171D, 0x1171F,
  2614. 0x11722, 0x11725,
  2615. 0x11727, 0x1172B,
  2616. 0x1182F, 0x11837,
  2617. 0x11839, 0x1183A,
  2618. 0x11930, 0x11930,
  2619. 0x1193B, 0x1193C,
  2620. 0x1193E, 0x1193E,
  2621. 0x11943, 0x11943,
  2622. 0x119D4, 0x119D7,
  2623. 0x119DA, 0x119DB,
  2624. 0x119E0, 0x119E0,
  2625. 0x11A01, 0x11A0A,
  2626. 0x11A33, 0x11A38,
  2627. 0x11A3B, 0x11A3E,
  2628. 0x11A47, 0x11A47,
  2629. 0x11A51, 0x11A56,
  2630. 0x11A59, 0x11A5B,
  2631. 0x11A8A, 0x11A96,
  2632. 0x11A98, 0x11A99,
  2633. 0x11C30, 0x11C36,
  2634. 0x11C38, 0x11C3D,
  2635. 0x11C3F, 0x11C3F,
  2636. 0x11C92, 0x11CA7,
  2637. 0x11CAA, 0x11CB0,
  2638. 0x11CB2, 0x11CB3,
  2639. 0x11CB5, 0x11CB6,
  2640. 0x11D31, 0x11D36,
  2641. 0x11D3A, 0x11D3A,
  2642. 0x11D3C, 0x11D3D,
  2643. 0x11D3F, 0x11D45,
  2644. 0x11D47, 0x11D47,
  2645. 0x11D90, 0x11D91,
  2646. 0x11D95, 0x11D95,
  2647. 0x11D97, 0x11D97,
  2648. 0x11EF3, 0x11EF4,
  2649. 0x11F00, 0x11F01,
  2650. 0x11F36, 0x11F3A,
  2651. 0x11F40, 0x11F40,
  2652. 0x11F42, 0x11F42,
  2653. 0x13440, 0x13440,
  2654. 0x13447, 0x13455,
  2655. 0x16AF0, 0x16AF4,
  2656. 0x16B30, 0x16B36,
  2657. 0x16F4F, 0x16F4F,
  2658. 0x16F8F, 0x16F92,
  2659. 0x16FE4, 0x16FE4,
  2660. 0x1BC9D, 0x1BC9E,
  2661. 0x1CF00, 0x1CF2D,
  2662. 0x1CF30, 0x1CF46,
  2663. 0x1D165, 0x1D165,
  2664. 0x1D167, 0x1D169,
  2665. 0x1D16E, 0x1D172,
  2666. 0x1D17B, 0x1D182,
  2667. 0x1D185, 0x1D18B,
  2668. 0x1D1AA, 0x1D1AD,
  2669. 0x1D242, 0x1D244,
  2670. 0x1DA00, 0x1DA36,
  2671. 0x1DA3B, 0x1DA6C,
  2672. 0x1DA75, 0x1DA75,
  2673. 0x1DA84, 0x1DA84,
  2674. 0x1DA9B, 0x1DA9F,
  2675. 0x1DAA1, 0x1DAAF,
  2676. 0x1E000, 0x1E006,
  2677. 0x1E008, 0x1E018,
  2678. 0x1E01B, 0x1E021,
  2679. 0x1E023, 0x1E024,
  2680. 0x1E026, 0x1E02A,
  2681. 0x1E08F, 0x1E08F,
  2682. 0x1E130, 0x1E136,
  2683. 0x1E2AE, 0x1E2AE,
  2684. 0x1E2EC, 0x1E2EF,
  2685. 0x1E4EC, 0x1E4EF,
  2686. 0x1E8D0, 0x1E8D6,
  2687. 0x1E944, 0x1E94A,
  2688. 0xE0020, 0xE007F,
  2689. 0xE0100, 0xE01EF,
  2690. }
  2691. @(rodata)
  2692. hangul_syllable_lv_singlets := [?]i32 {
  2693. 0xAC00,
  2694. 0xAC1C,
  2695. 0xAC38,
  2696. 0xAC54,
  2697. 0xAC70,
  2698. 0xAC8C,
  2699. 0xACA8,
  2700. 0xACC4,
  2701. 0xACE0,
  2702. 0xACFC,
  2703. 0xAD18,
  2704. 0xAD34,
  2705. 0xAD50,
  2706. 0xAD6C,
  2707. 0xAD88,
  2708. 0xADA4,
  2709. 0xADC0,
  2710. 0xADDC,
  2711. 0xADF8,
  2712. 0xAE14,
  2713. 0xAE30,
  2714. 0xAE4C,
  2715. 0xAE68,
  2716. 0xAE84,
  2717. 0xAEA0,
  2718. 0xAEBC,
  2719. 0xAED8,
  2720. 0xAEF4,
  2721. 0xAF10,
  2722. 0xAF2C,
  2723. 0xAF48,
  2724. 0xAF64,
  2725. 0xAF80,
  2726. 0xAF9C,
  2727. 0xAFB8,
  2728. 0xAFD4,
  2729. 0xAFF0,
  2730. 0xB00C,
  2731. 0xB028,
  2732. 0xB044,
  2733. 0xB060,
  2734. 0xB07C,
  2735. 0xB098,
  2736. 0xB0B4,
  2737. 0xB0D0,
  2738. 0xB0EC,
  2739. 0xB108,
  2740. 0xB124,
  2741. 0xB140,
  2742. 0xB15C,
  2743. 0xB178,
  2744. 0xB194,
  2745. 0xB1B0,
  2746. 0xB1CC,
  2747. 0xB1E8,
  2748. 0xB204,
  2749. 0xB220,
  2750. 0xB23C,
  2751. 0xB258,
  2752. 0xB274,
  2753. 0xB290,
  2754. 0xB2AC,
  2755. 0xB2C8,
  2756. 0xB2E4,
  2757. 0xB300,
  2758. 0xB31C,
  2759. 0xB338,
  2760. 0xB354,
  2761. 0xB370,
  2762. 0xB38C,
  2763. 0xB3A8,
  2764. 0xB3C4,
  2765. 0xB3E0,
  2766. 0xB3FC,
  2767. 0xB418,
  2768. 0xB434,
  2769. 0xB450,
  2770. 0xB46C,
  2771. 0xB488,
  2772. 0xB4A4,
  2773. 0xB4C0,
  2774. 0xB4DC,
  2775. 0xB4F8,
  2776. 0xB514,
  2777. 0xB530,
  2778. 0xB54C,
  2779. 0xB568,
  2780. 0xB584,
  2781. 0xB5A0,
  2782. 0xB5BC,
  2783. 0xB5D8,
  2784. 0xB5F4,
  2785. 0xB610,
  2786. 0xB62C,
  2787. 0xB648,
  2788. 0xB664,
  2789. 0xB680,
  2790. 0xB69C,
  2791. 0xB6B8,
  2792. 0xB6D4,
  2793. 0xB6F0,
  2794. 0xB70C,
  2795. 0xB728,
  2796. 0xB744,
  2797. 0xB760,
  2798. 0xB77C,
  2799. 0xB798,
  2800. 0xB7B4,
  2801. 0xB7D0,
  2802. 0xB7EC,
  2803. 0xB808,
  2804. 0xB824,
  2805. 0xB840,
  2806. 0xB85C,
  2807. 0xB878,
  2808. 0xB894,
  2809. 0xB8B0,
  2810. 0xB8CC,
  2811. 0xB8E8,
  2812. 0xB904,
  2813. 0xB920,
  2814. 0xB93C,
  2815. 0xB958,
  2816. 0xB974,
  2817. 0xB990,
  2818. 0xB9AC,
  2819. 0xB9C8,
  2820. 0xB9E4,
  2821. 0xBA00,
  2822. 0xBA1C,
  2823. 0xBA38,
  2824. 0xBA54,
  2825. 0xBA70,
  2826. 0xBA8C,
  2827. 0xBAA8,
  2828. 0xBAC4,
  2829. 0xBAE0,
  2830. 0xBAFC,
  2831. 0xBB18,
  2832. 0xBB34,
  2833. 0xBB50,
  2834. 0xBB6C,
  2835. 0xBB88,
  2836. 0xBBA4,
  2837. 0xBBC0,
  2838. 0xBBDC,
  2839. 0xBBF8,
  2840. 0xBC14,
  2841. 0xBC30,
  2842. 0xBC4C,
  2843. 0xBC68,
  2844. 0xBC84,
  2845. 0xBCA0,
  2846. 0xBCBC,
  2847. 0xBCD8,
  2848. 0xBCF4,
  2849. 0xBD10,
  2850. 0xBD2C,
  2851. 0xBD48,
  2852. 0xBD64,
  2853. 0xBD80,
  2854. 0xBD9C,
  2855. 0xBDB8,
  2856. 0xBDD4,
  2857. 0xBDF0,
  2858. 0xBE0C,
  2859. 0xBE28,
  2860. 0xBE44,
  2861. 0xBE60,
  2862. 0xBE7C,
  2863. 0xBE98,
  2864. 0xBEB4,
  2865. 0xBED0,
  2866. 0xBEEC,
  2867. 0xBF08,
  2868. 0xBF24,
  2869. 0xBF40,
  2870. 0xBF5C,
  2871. 0xBF78,
  2872. 0xBF94,
  2873. 0xBFB0,
  2874. 0xBFCC,
  2875. 0xBFE8,
  2876. 0xC004,
  2877. 0xC020,
  2878. 0xC03C,
  2879. 0xC058,
  2880. 0xC074,
  2881. 0xC090,
  2882. 0xC0AC,
  2883. 0xC0C8,
  2884. 0xC0E4,
  2885. 0xC100,
  2886. 0xC11C,
  2887. 0xC138,
  2888. 0xC154,
  2889. 0xC170,
  2890. 0xC18C,
  2891. 0xC1A8,
  2892. 0xC1C4,
  2893. 0xC1E0,
  2894. 0xC1FC,
  2895. 0xC218,
  2896. 0xC234,
  2897. 0xC250,
  2898. 0xC26C,
  2899. 0xC288,
  2900. 0xC2A4,
  2901. 0xC2C0,
  2902. 0xC2DC,
  2903. 0xC2F8,
  2904. 0xC314,
  2905. 0xC330,
  2906. 0xC34C,
  2907. 0xC368,
  2908. 0xC384,
  2909. 0xC3A0,
  2910. 0xC3BC,
  2911. 0xC3D8,
  2912. 0xC3F4,
  2913. 0xC410,
  2914. 0xC42C,
  2915. 0xC448,
  2916. 0xC464,
  2917. 0xC480,
  2918. 0xC49C,
  2919. 0xC4B8,
  2920. 0xC4D4,
  2921. 0xC4F0,
  2922. 0xC50C,
  2923. 0xC528,
  2924. 0xC544,
  2925. 0xC560,
  2926. 0xC57C,
  2927. 0xC598,
  2928. 0xC5B4,
  2929. 0xC5D0,
  2930. 0xC5EC,
  2931. 0xC608,
  2932. 0xC624,
  2933. 0xC640,
  2934. 0xC65C,
  2935. 0xC678,
  2936. 0xC694,
  2937. 0xC6B0,
  2938. 0xC6CC,
  2939. 0xC6E8,
  2940. 0xC704,
  2941. 0xC720,
  2942. 0xC73C,
  2943. 0xC758,
  2944. 0xC774,
  2945. 0xC790,
  2946. 0xC7AC,
  2947. 0xC7C8,
  2948. 0xC7E4,
  2949. 0xC800,
  2950. 0xC81C,
  2951. 0xC838,
  2952. 0xC854,
  2953. 0xC870,
  2954. 0xC88C,
  2955. 0xC8A8,
  2956. 0xC8C4,
  2957. 0xC8E0,
  2958. 0xC8FC,
  2959. 0xC918,
  2960. 0xC934,
  2961. 0xC950,
  2962. 0xC96C,
  2963. 0xC988,
  2964. 0xC9A4,
  2965. 0xC9C0,
  2966. 0xC9DC,
  2967. 0xC9F8,
  2968. 0xCA14,
  2969. 0xCA30,
  2970. 0xCA4C,
  2971. 0xCA68,
  2972. 0xCA84,
  2973. 0xCAA0,
  2974. 0xCABC,
  2975. 0xCAD8,
  2976. 0xCAF4,
  2977. 0xCB10,
  2978. 0xCB2C,
  2979. 0xCB48,
  2980. 0xCB64,
  2981. 0xCB80,
  2982. 0xCB9C,
  2983. 0xCBB8,
  2984. 0xCBD4,
  2985. 0xCBF0,
  2986. 0xCC0C,
  2987. 0xCC28,
  2988. 0xCC44,
  2989. 0xCC60,
  2990. 0xCC7C,
  2991. 0xCC98,
  2992. 0xCCB4,
  2993. 0xCCD0,
  2994. 0xCCEC,
  2995. 0xCD08,
  2996. 0xCD24,
  2997. 0xCD40,
  2998. 0xCD5C,
  2999. 0xCD78,
  3000. 0xCD94,
  3001. 0xCDB0,
  3002. 0xCDCC,
  3003. 0xCDE8,
  3004. 0xCE04,
  3005. 0xCE20,
  3006. 0xCE3C,
  3007. 0xCE58,
  3008. 0xCE74,
  3009. 0xCE90,
  3010. 0xCEAC,
  3011. 0xCEC8,
  3012. 0xCEE4,
  3013. 0xCF00,
  3014. 0xCF1C,
  3015. 0xCF38,
  3016. 0xCF54,
  3017. 0xCF70,
  3018. 0xCF8C,
  3019. 0xCFA8,
  3020. 0xCFC4,
  3021. 0xCFE0,
  3022. 0xCFFC,
  3023. 0xD018,
  3024. 0xD034,
  3025. 0xD050,
  3026. 0xD06C,
  3027. 0xD088,
  3028. 0xD0A4,
  3029. 0xD0C0,
  3030. 0xD0DC,
  3031. 0xD0F8,
  3032. 0xD114,
  3033. 0xD130,
  3034. 0xD14C,
  3035. 0xD168,
  3036. 0xD184,
  3037. 0xD1A0,
  3038. 0xD1BC,
  3039. 0xD1D8,
  3040. 0xD1F4,
  3041. 0xD210,
  3042. 0xD22C,
  3043. 0xD248,
  3044. 0xD264,
  3045. 0xD280,
  3046. 0xD29C,
  3047. 0xD2B8,
  3048. 0xD2D4,
  3049. 0xD2F0,
  3050. 0xD30C,
  3051. 0xD328,
  3052. 0xD344,
  3053. 0xD360,
  3054. 0xD37C,
  3055. 0xD398,
  3056. 0xD3B4,
  3057. 0xD3D0,
  3058. 0xD3EC,
  3059. 0xD408,
  3060. 0xD424,
  3061. 0xD440,
  3062. 0xD45C,
  3063. 0xD478,
  3064. 0xD494,
  3065. 0xD4B0,
  3066. 0xD4CC,
  3067. 0xD4E8,
  3068. 0xD504,
  3069. 0xD520,
  3070. 0xD53C,
  3071. 0xD558,
  3072. 0xD574,
  3073. 0xD590,
  3074. 0xD5AC,
  3075. 0xD5C8,
  3076. 0xD5E4,
  3077. 0xD600,
  3078. 0xD61C,
  3079. 0xD638,
  3080. 0xD654,
  3081. 0xD670,
  3082. 0xD68C,
  3083. 0xD6A8,
  3084. 0xD6C4,
  3085. 0xD6E0,
  3086. 0xD6FC,
  3087. 0xD718,
  3088. 0xD734,
  3089. 0xD750,
  3090. 0xD76C,
  3091. 0xD788,
  3092. }
  3093. @(rodata)
  3094. hangul_syllable_lvt_ranges := [?]i32 {
  3095. 0xAC01, 0xAC1B,
  3096. 0xAC1D, 0xAC37,
  3097. 0xAC39, 0xAC53,
  3098. 0xAC55, 0xAC6F,
  3099. 0xAC71, 0xAC8B,
  3100. 0xAC8D, 0xACA7,
  3101. 0xACA9, 0xACC3,
  3102. 0xACC5, 0xACDF,
  3103. 0xACE1, 0xACFB,
  3104. 0xACFD, 0xAD17,
  3105. 0xAD19, 0xAD33,
  3106. 0xAD35, 0xAD4F,
  3107. 0xAD51, 0xAD6B,
  3108. 0xAD6D, 0xAD87,
  3109. 0xAD89, 0xADA3,
  3110. 0xADA5, 0xADBF,
  3111. 0xADC1, 0xADDB,
  3112. 0xADDD, 0xADF7,
  3113. 0xADF9, 0xAE13,
  3114. 0xAE15, 0xAE2F,
  3115. 0xAE31, 0xAE4B,
  3116. 0xAE4D, 0xAE67,
  3117. 0xAE69, 0xAE83,
  3118. 0xAE85, 0xAE9F,
  3119. 0xAEA1, 0xAEBB,
  3120. 0xAEBD, 0xAED7,
  3121. 0xAED9, 0xAEF3,
  3122. 0xAEF5, 0xAF0F,
  3123. 0xAF11, 0xAF2B,
  3124. 0xAF2D, 0xAF47,
  3125. 0xAF49, 0xAF63,
  3126. 0xAF65, 0xAF7F,
  3127. 0xAF81, 0xAF9B,
  3128. 0xAF9D, 0xAFB7,
  3129. 0xAFB9, 0xAFD3,
  3130. 0xAFD5, 0xAFEF,
  3131. 0xAFF1, 0xB00B,
  3132. 0xB00D, 0xB027,
  3133. 0xB029, 0xB043,
  3134. 0xB045, 0xB05F,
  3135. 0xB061, 0xB07B,
  3136. 0xB07D, 0xB097,
  3137. 0xB099, 0xB0B3,
  3138. 0xB0B5, 0xB0CF,
  3139. 0xB0D1, 0xB0EB,
  3140. 0xB0ED, 0xB107,
  3141. 0xB109, 0xB123,
  3142. 0xB125, 0xB13F,
  3143. 0xB141, 0xB15B,
  3144. 0xB15D, 0xB177,
  3145. 0xB179, 0xB193,
  3146. 0xB195, 0xB1AF,
  3147. 0xB1B1, 0xB1CB,
  3148. 0xB1CD, 0xB1E7,
  3149. 0xB1E9, 0xB203,
  3150. 0xB205, 0xB21F,
  3151. 0xB221, 0xB23B,
  3152. 0xB23D, 0xB257,
  3153. 0xB259, 0xB273,
  3154. 0xB275, 0xB28F,
  3155. 0xB291, 0xB2AB,
  3156. 0xB2AD, 0xB2C7,
  3157. 0xB2C9, 0xB2E3,
  3158. 0xB2E5, 0xB2FF,
  3159. 0xB301, 0xB31B,
  3160. 0xB31D, 0xB337,
  3161. 0xB339, 0xB353,
  3162. 0xB355, 0xB36F,
  3163. 0xB371, 0xB38B,
  3164. 0xB38D, 0xB3A7,
  3165. 0xB3A9, 0xB3C3,
  3166. 0xB3C5, 0xB3DF,
  3167. 0xB3E1, 0xB3FB,
  3168. 0xB3FD, 0xB417,
  3169. 0xB419, 0xB433,
  3170. 0xB435, 0xB44F,
  3171. 0xB451, 0xB46B,
  3172. 0xB46D, 0xB487,
  3173. 0xB489, 0xB4A3,
  3174. 0xB4A5, 0xB4BF,
  3175. 0xB4C1, 0xB4DB,
  3176. 0xB4DD, 0xB4F7,
  3177. 0xB4F9, 0xB513,
  3178. 0xB515, 0xB52F,
  3179. 0xB531, 0xB54B,
  3180. 0xB54D, 0xB567,
  3181. 0xB569, 0xB583,
  3182. 0xB585, 0xB59F,
  3183. 0xB5A1, 0xB5BB,
  3184. 0xB5BD, 0xB5D7,
  3185. 0xB5D9, 0xB5F3,
  3186. 0xB5F5, 0xB60F,
  3187. 0xB611, 0xB62B,
  3188. 0xB62D, 0xB647,
  3189. 0xB649, 0xB663,
  3190. 0xB665, 0xB67F,
  3191. 0xB681, 0xB69B,
  3192. 0xB69D, 0xB6B7,
  3193. 0xB6B9, 0xB6D3,
  3194. 0xB6D5, 0xB6EF,
  3195. 0xB6F1, 0xB70B,
  3196. 0xB70D, 0xB727,
  3197. 0xB729, 0xB743,
  3198. 0xB745, 0xB75F,
  3199. 0xB761, 0xB77B,
  3200. 0xB77D, 0xB797,
  3201. 0xB799, 0xB7B3,
  3202. 0xB7B5, 0xB7CF,
  3203. 0xB7D1, 0xB7EB,
  3204. 0xB7ED, 0xB807,
  3205. 0xB809, 0xB823,
  3206. 0xB825, 0xB83F,
  3207. 0xB841, 0xB85B,
  3208. 0xB85D, 0xB877,
  3209. 0xB879, 0xB893,
  3210. 0xB895, 0xB8AF,
  3211. 0xB8B1, 0xB8CB,
  3212. 0xB8CD, 0xB8E7,
  3213. 0xB8E9, 0xB903,
  3214. 0xB905, 0xB91F,
  3215. 0xB921, 0xB93B,
  3216. 0xB93D, 0xB957,
  3217. 0xB959, 0xB973,
  3218. 0xB975, 0xB98F,
  3219. 0xB991, 0xB9AB,
  3220. 0xB9AD, 0xB9C7,
  3221. 0xB9C9, 0xB9E3,
  3222. 0xB9E5, 0xB9FF,
  3223. 0xBA01, 0xBA1B,
  3224. 0xBA1D, 0xBA37,
  3225. 0xBA39, 0xBA53,
  3226. 0xBA55, 0xBA6F,
  3227. 0xBA71, 0xBA8B,
  3228. 0xBA8D, 0xBAA7,
  3229. 0xBAA9, 0xBAC3,
  3230. 0xBAC5, 0xBADF,
  3231. 0xBAE1, 0xBAFB,
  3232. 0xBAFD, 0xBB17,
  3233. 0xBB19, 0xBB33,
  3234. 0xBB35, 0xBB4F,
  3235. 0xBB51, 0xBB6B,
  3236. 0xBB6D, 0xBB87,
  3237. 0xBB89, 0xBBA3,
  3238. 0xBBA5, 0xBBBF,
  3239. 0xBBC1, 0xBBDB,
  3240. 0xBBDD, 0xBBF7,
  3241. 0xBBF9, 0xBC13,
  3242. 0xBC15, 0xBC2F,
  3243. 0xBC31, 0xBC4B,
  3244. 0xBC4D, 0xBC67,
  3245. 0xBC69, 0xBC83,
  3246. 0xBC85, 0xBC9F,
  3247. 0xBCA1, 0xBCBB,
  3248. 0xBCBD, 0xBCD7,
  3249. 0xBCD9, 0xBCF3,
  3250. 0xBCF5, 0xBD0F,
  3251. 0xBD11, 0xBD2B,
  3252. 0xBD2D, 0xBD47,
  3253. 0xBD49, 0xBD63,
  3254. 0xBD65, 0xBD7F,
  3255. 0xBD81, 0xBD9B,
  3256. 0xBD9D, 0xBDB7,
  3257. 0xBDB9, 0xBDD3,
  3258. 0xBDD5, 0xBDEF,
  3259. 0xBDF1, 0xBE0B,
  3260. 0xBE0D, 0xBE27,
  3261. 0xBE29, 0xBE43,
  3262. 0xBE45, 0xBE5F,
  3263. 0xBE61, 0xBE7B,
  3264. 0xBE7D, 0xBE97,
  3265. 0xBE99, 0xBEB3,
  3266. 0xBEB5, 0xBECF,
  3267. 0xBED1, 0xBEEB,
  3268. 0xBEED, 0xBF07,
  3269. 0xBF09, 0xBF23,
  3270. 0xBF25, 0xBF3F,
  3271. 0xBF41, 0xBF5B,
  3272. 0xBF5D, 0xBF77,
  3273. 0xBF79, 0xBF93,
  3274. 0xBF95, 0xBFAF,
  3275. 0xBFB1, 0xBFCB,
  3276. 0xBFCD, 0xBFE7,
  3277. 0xBFE9, 0xC003,
  3278. 0xC005, 0xC01F,
  3279. 0xC021, 0xC03B,
  3280. 0xC03D, 0xC057,
  3281. 0xC059, 0xC073,
  3282. 0xC075, 0xC08F,
  3283. 0xC091, 0xC0AB,
  3284. 0xC0AD, 0xC0C7,
  3285. 0xC0C9, 0xC0E3,
  3286. 0xC0E5, 0xC0FF,
  3287. 0xC101, 0xC11B,
  3288. 0xC11D, 0xC137,
  3289. 0xC139, 0xC153,
  3290. 0xC155, 0xC16F,
  3291. 0xC171, 0xC18B,
  3292. 0xC18D, 0xC1A7,
  3293. 0xC1A9, 0xC1C3,
  3294. 0xC1C5, 0xC1DF,
  3295. 0xC1E1, 0xC1FB,
  3296. 0xC1FD, 0xC217,
  3297. 0xC219, 0xC233,
  3298. 0xC235, 0xC24F,
  3299. 0xC251, 0xC26B,
  3300. 0xC26D, 0xC287,
  3301. 0xC289, 0xC2A3,
  3302. 0xC2A5, 0xC2BF,
  3303. 0xC2C1, 0xC2DB,
  3304. 0xC2DD, 0xC2F7,
  3305. 0xC2F9, 0xC313,
  3306. 0xC315, 0xC32F,
  3307. 0xC331, 0xC34B,
  3308. 0xC34D, 0xC367,
  3309. 0xC369, 0xC383,
  3310. 0xC385, 0xC39F,
  3311. 0xC3A1, 0xC3BB,
  3312. 0xC3BD, 0xC3D7,
  3313. 0xC3D9, 0xC3F3,
  3314. 0xC3F5, 0xC40F,
  3315. 0xC411, 0xC42B,
  3316. 0xC42D, 0xC447,
  3317. 0xC449, 0xC463,
  3318. 0xC465, 0xC47F,
  3319. 0xC481, 0xC49B,
  3320. 0xC49D, 0xC4B7,
  3321. 0xC4B9, 0xC4D3,
  3322. 0xC4D5, 0xC4EF,
  3323. 0xC4F1, 0xC50B,
  3324. 0xC50D, 0xC527,
  3325. 0xC529, 0xC543,
  3326. 0xC545, 0xC55F,
  3327. 0xC561, 0xC57B,
  3328. 0xC57D, 0xC597,
  3329. 0xC599, 0xC5B3,
  3330. 0xC5B5, 0xC5CF,
  3331. 0xC5D1, 0xC5EB,
  3332. 0xC5ED, 0xC607,
  3333. 0xC609, 0xC623,
  3334. 0xC625, 0xC63F,
  3335. 0xC641, 0xC65B,
  3336. 0xC65D, 0xC677,
  3337. 0xC679, 0xC693,
  3338. 0xC695, 0xC6AF,
  3339. 0xC6B1, 0xC6CB,
  3340. 0xC6CD, 0xC6E7,
  3341. 0xC6E9, 0xC703,
  3342. 0xC705, 0xC71F,
  3343. 0xC721, 0xC73B,
  3344. 0xC73D, 0xC757,
  3345. 0xC759, 0xC773,
  3346. 0xC775, 0xC78F,
  3347. 0xC791, 0xC7AB,
  3348. 0xC7AD, 0xC7C7,
  3349. 0xC7C9, 0xC7E3,
  3350. 0xC7E5, 0xC7FF,
  3351. 0xC801, 0xC81B,
  3352. 0xC81D, 0xC837,
  3353. 0xC839, 0xC853,
  3354. 0xC855, 0xC86F,
  3355. 0xC871, 0xC88B,
  3356. 0xC88D, 0xC8A7,
  3357. 0xC8A9, 0xC8C3,
  3358. 0xC8C5, 0xC8DF,
  3359. 0xC8E1, 0xC8FB,
  3360. 0xC8FD, 0xC917,
  3361. 0xC919, 0xC933,
  3362. 0xC935, 0xC94F,
  3363. 0xC951, 0xC96B,
  3364. 0xC96D, 0xC987,
  3365. 0xC989, 0xC9A3,
  3366. 0xC9A5, 0xC9BF,
  3367. 0xC9C1, 0xC9DB,
  3368. 0xC9DD, 0xC9F7,
  3369. 0xC9F9, 0xCA13,
  3370. 0xCA15, 0xCA2F,
  3371. 0xCA31, 0xCA4B,
  3372. 0xCA4D, 0xCA67,
  3373. 0xCA69, 0xCA83,
  3374. 0xCA85, 0xCA9F,
  3375. 0xCAA1, 0xCABB,
  3376. 0xCABD, 0xCAD7,
  3377. 0xCAD9, 0xCAF3,
  3378. 0xCAF5, 0xCB0F,
  3379. 0xCB11, 0xCB2B,
  3380. 0xCB2D, 0xCB47,
  3381. 0xCB49, 0xCB63,
  3382. 0xCB65, 0xCB7F,
  3383. 0xCB81, 0xCB9B,
  3384. 0xCB9D, 0xCBB7,
  3385. 0xCBB9, 0xCBD3,
  3386. 0xCBD5, 0xCBEF,
  3387. 0xCBF1, 0xCC0B,
  3388. 0xCC0D, 0xCC27,
  3389. 0xCC29, 0xCC43,
  3390. 0xCC45, 0xCC5F,
  3391. 0xCC61, 0xCC7B,
  3392. 0xCC7D, 0xCC97,
  3393. 0xCC99, 0xCCB3,
  3394. 0xCCB5, 0xCCCF,
  3395. 0xCCD1, 0xCCEB,
  3396. 0xCCED, 0xCD07,
  3397. 0xCD09, 0xCD23,
  3398. 0xCD25, 0xCD3F,
  3399. 0xCD41, 0xCD5B,
  3400. 0xCD5D, 0xCD77,
  3401. 0xCD79, 0xCD93,
  3402. 0xCD95, 0xCDAF,
  3403. 0xCDB1, 0xCDCB,
  3404. 0xCDCD, 0xCDE7,
  3405. 0xCDE9, 0xCE03,
  3406. 0xCE05, 0xCE1F,
  3407. 0xCE21, 0xCE3B,
  3408. 0xCE3D, 0xCE57,
  3409. 0xCE59, 0xCE73,
  3410. 0xCE75, 0xCE8F,
  3411. 0xCE91, 0xCEAB,
  3412. 0xCEAD, 0xCEC7,
  3413. 0xCEC9, 0xCEE3,
  3414. 0xCEE5, 0xCEFF,
  3415. 0xCF01, 0xCF1B,
  3416. 0xCF1D, 0xCF37,
  3417. 0xCF39, 0xCF53,
  3418. 0xCF55, 0xCF6F,
  3419. 0xCF71, 0xCF8B,
  3420. 0xCF8D, 0xCFA7,
  3421. 0xCFA9, 0xCFC3,
  3422. 0xCFC5, 0xCFDF,
  3423. 0xCFE1, 0xCFFB,
  3424. 0xCFFD, 0xD017,
  3425. 0xD019, 0xD033,
  3426. 0xD035, 0xD04F,
  3427. 0xD051, 0xD06B,
  3428. 0xD06D, 0xD087,
  3429. 0xD089, 0xD0A3,
  3430. 0xD0A5, 0xD0BF,
  3431. 0xD0C1, 0xD0DB,
  3432. 0xD0DD, 0xD0F7,
  3433. 0xD0F9, 0xD113,
  3434. 0xD115, 0xD12F,
  3435. 0xD131, 0xD14B,
  3436. 0xD14D, 0xD167,
  3437. 0xD169, 0xD183,
  3438. 0xD185, 0xD19F,
  3439. 0xD1A1, 0xD1BB,
  3440. 0xD1BD, 0xD1D7,
  3441. 0xD1D9, 0xD1F3,
  3442. 0xD1F5, 0xD20F,
  3443. 0xD211, 0xD22B,
  3444. 0xD22D, 0xD247,
  3445. 0xD249, 0xD263,
  3446. 0xD265, 0xD27F,
  3447. 0xD281, 0xD29B,
  3448. 0xD29D, 0xD2B7,
  3449. 0xD2B9, 0xD2D3,
  3450. 0xD2D5, 0xD2EF,
  3451. 0xD2F1, 0xD30B,
  3452. 0xD30D, 0xD327,
  3453. 0xD329, 0xD343,
  3454. 0xD345, 0xD35F,
  3455. 0xD361, 0xD37B,
  3456. 0xD37D, 0xD397,
  3457. 0xD399, 0xD3B3,
  3458. 0xD3B5, 0xD3CF,
  3459. 0xD3D1, 0xD3EB,
  3460. 0xD3ED, 0xD407,
  3461. 0xD409, 0xD423,
  3462. 0xD425, 0xD43F,
  3463. 0xD441, 0xD45B,
  3464. 0xD45D, 0xD477,
  3465. 0xD479, 0xD493,
  3466. 0xD495, 0xD4AF,
  3467. 0xD4B1, 0xD4CB,
  3468. 0xD4CD, 0xD4E7,
  3469. 0xD4E9, 0xD503,
  3470. 0xD505, 0xD51F,
  3471. 0xD521, 0xD53B,
  3472. 0xD53D, 0xD557,
  3473. 0xD559, 0xD573,
  3474. 0xD575, 0xD58F,
  3475. 0xD591, 0xD5AB,
  3476. 0xD5AD, 0xD5C7,
  3477. 0xD5C9, 0xD5E3,
  3478. 0xD5E5, 0xD5FF,
  3479. 0xD601, 0xD61B,
  3480. 0xD61D, 0xD637,
  3481. 0xD639, 0xD653,
  3482. 0xD655, 0xD66F,
  3483. 0xD671, 0xD68B,
  3484. 0xD68D, 0xD6A7,
  3485. 0xD6A9, 0xD6C3,
  3486. 0xD6C5, 0xD6DF,
  3487. 0xD6E1, 0xD6FB,
  3488. 0xD6FD, 0xD717,
  3489. 0xD719, 0xD733,
  3490. 0xD735, 0xD74F,
  3491. 0xD751, 0xD76B,
  3492. 0xD76D, 0xD787,
  3493. 0xD789, 0xD7A3,
  3494. }
  3495. @(rodata)
  3496. indic_conjunct_break_consonant_ranges := [?]i32 {
  3497. 0x0915, 0x0939,
  3498. 0x0958, 0x095F,
  3499. 0x0978, 0x097F,
  3500. 0x0995, 0x09A8,
  3501. 0x09AA, 0x09B0,
  3502. 0x09B2, 0x09B2,
  3503. 0x09B6, 0x09B9,
  3504. 0x09DC, 0x09DD,
  3505. 0x09DF, 0x09DF,
  3506. 0x09F0, 0x09F1,
  3507. 0x0A95, 0x0AA8,
  3508. 0x0AAA, 0x0AB0,
  3509. 0x0AB2, 0x0AB3,
  3510. 0x0AB5, 0x0AB9,
  3511. 0x0AF9, 0x0AF9,
  3512. 0x0B15, 0x0B28,
  3513. 0x0B2A, 0x0B30,
  3514. 0x0B32, 0x0B33,
  3515. 0x0B35, 0x0B39,
  3516. 0x0B5C, 0x0B5D,
  3517. 0x0B5F, 0x0B5F,
  3518. 0x0B71, 0x0B71,
  3519. 0x0C15, 0x0C28,
  3520. 0x0C2A, 0x0C39,
  3521. 0x0C58, 0x0C5A,
  3522. 0x0D15, 0x0D3A,
  3523. }
  3524. @(rodata)
  3525. indic_conjunct_break_extend_ranges := [?]i32 {
  3526. 0x0300, 0x034E,
  3527. 0x0350, 0x036F,
  3528. 0x0483, 0x0487,
  3529. 0x0591, 0x05BD,
  3530. 0x05BF, 0x05BF,
  3531. 0x05C1, 0x05C2,
  3532. 0x05C4, 0x05C5,
  3533. 0x05C7, 0x05C7,
  3534. 0x0610, 0x061A,
  3535. 0x064B, 0x065F,
  3536. 0x0670, 0x0670,
  3537. 0x06D6, 0x06DC,
  3538. 0x06DF, 0x06E4,
  3539. 0x06E7, 0x06E8,
  3540. 0x06EA, 0x06ED,
  3541. 0x0711, 0x0711,
  3542. 0x0730, 0x074A,
  3543. 0x07EB, 0x07F3,
  3544. 0x07FD, 0x07FD,
  3545. 0x0816, 0x0819,
  3546. 0x081B, 0x0823,
  3547. 0x0825, 0x0827,
  3548. 0x0829, 0x082D,
  3549. 0x0859, 0x085B,
  3550. 0x0898, 0x089F,
  3551. 0x08CA, 0x08E1,
  3552. 0x08E3, 0x08FF,
  3553. 0x093C, 0x093C,
  3554. 0x0951, 0x0954,
  3555. 0x09BC, 0x09BC,
  3556. 0x09FE, 0x09FE,
  3557. 0x0A3C, 0x0A3C,
  3558. 0x0ABC, 0x0ABC,
  3559. 0x0B3C, 0x0B3C,
  3560. 0x0C3C, 0x0C3C,
  3561. 0x0C55, 0x0C56,
  3562. 0x0CBC, 0x0CBC,
  3563. 0x0D3B, 0x0D3C,
  3564. 0x0E38, 0x0E3A,
  3565. 0x0E48, 0x0E4B,
  3566. 0x0EB8, 0x0EBA,
  3567. 0x0EC8, 0x0ECB,
  3568. 0x0F18, 0x0F19,
  3569. 0x0F35, 0x0F35,
  3570. 0x0F37, 0x0F37,
  3571. 0x0F39, 0x0F39,
  3572. 0x0F71, 0x0F72,
  3573. 0x0F74, 0x0F74,
  3574. 0x0F7A, 0x0F7D,
  3575. 0x0F80, 0x0F80,
  3576. 0x0F82, 0x0F84,
  3577. 0x0F86, 0x0F87,
  3578. 0x0FC6, 0x0FC6,
  3579. 0x1037, 0x1037,
  3580. 0x1039, 0x103A,
  3581. 0x108D, 0x108D,
  3582. 0x135D, 0x135F,
  3583. 0x1714, 0x1714,
  3584. 0x17D2, 0x17D2,
  3585. 0x17DD, 0x17DD,
  3586. 0x18A9, 0x18A9,
  3587. 0x1939, 0x193B,
  3588. 0x1A17, 0x1A18,
  3589. 0x1A60, 0x1A60,
  3590. 0x1A75, 0x1A7C,
  3591. 0x1A7F, 0x1A7F,
  3592. 0x1AB0, 0x1ABD,
  3593. 0x1ABF, 0x1ACE,
  3594. 0x1B34, 0x1B34,
  3595. 0x1B6B, 0x1B73,
  3596. 0x1BAB, 0x1BAB,
  3597. 0x1BE6, 0x1BE6,
  3598. 0x1C37, 0x1C37,
  3599. 0x1CD0, 0x1CD2,
  3600. 0x1CD4, 0x1CE0,
  3601. 0x1CE2, 0x1CE8,
  3602. 0x1CED, 0x1CED,
  3603. 0x1CF4, 0x1CF4,
  3604. 0x1CF8, 0x1CF9,
  3605. 0x1DC0, 0x1DFF,
  3606. 0x200D, 0x200D,
  3607. 0x20D0, 0x20DC,
  3608. 0x20E1, 0x20E1,
  3609. 0x20E5, 0x20F0,
  3610. 0x2CEF, 0x2CF1,
  3611. 0x2D7F, 0x2D7F,
  3612. 0x2DE0, 0x2DFF,
  3613. 0x302A, 0x302D,
  3614. 0x302E, 0x302F,
  3615. 0x3099, 0x309A,
  3616. 0xA66F, 0xA66F,
  3617. 0xA674, 0xA67D,
  3618. 0xA69E, 0xA69F,
  3619. 0xA6F0, 0xA6F1,
  3620. 0xA82C, 0xA82C,
  3621. 0xA8E0, 0xA8F1,
  3622. 0xA92B, 0xA92D,
  3623. 0xA9B3, 0xA9B3,
  3624. 0xAAB0, 0xAAB0,
  3625. 0xAAB2, 0xAAB4,
  3626. 0xAAB7, 0xAAB8,
  3627. 0xAABE, 0xAABF,
  3628. 0xAAC1, 0xAAC1,
  3629. 0xAAF6, 0xAAF6,
  3630. 0xABED, 0xABED,
  3631. 0xFB1E, 0xFB1E,
  3632. 0xFE20, 0xFE2F,
  3633. 0x101FD, 0x101FD,
  3634. 0x102E0, 0x102E0,
  3635. 0x10376, 0x1037A,
  3636. 0x10A0D, 0x10A0D,
  3637. 0x10A0F, 0x10A0F,
  3638. 0x10A38, 0x10A3A,
  3639. 0x10A3F, 0x10A3F,
  3640. 0x10AE5, 0x10AE6,
  3641. 0x10D24, 0x10D27,
  3642. 0x10EAB, 0x10EAC,
  3643. 0x10EFD, 0x10EFF,
  3644. 0x10F46, 0x10F50,
  3645. 0x10F82, 0x10F85,
  3646. 0x11070, 0x11070,
  3647. 0x1107F, 0x1107F,
  3648. 0x110BA, 0x110BA,
  3649. 0x11100, 0x11102,
  3650. 0x11133, 0x11134,
  3651. 0x11173, 0x11173,
  3652. 0x111CA, 0x111CA,
  3653. 0x11236, 0x11236,
  3654. 0x112E9, 0x112EA,
  3655. 0x1133B, 0x1133C,
  3656. 0x11366, 0x1136C,
  3657. 0x11370, 0x11374,
  3658. 0x11446, 0x11446,
  3659. 0x1145E, 0x1145E,
  3660. 0x114C3, 0x114C3,
  3661. 0x115C0, 0x115C0,
  3662. 0x116B7, 0x116B7,
  3663. 0x1172B, 0x1172B,
  3664. 0x1183A, 0x1183A,
  3665. 0x1193E, 0x1193E,
  3666. 0x11943, 0x11943,
  3667. 0x11A34, 0x11A34,
  3668. 0x11A47, 0x11A47,
  3669. 0x11A99, 0x11A99,
  3670. 0x11D42, 0x11D42,
  3671. 0x11D44, 0x11D45,
  3672. 0x11D97, 0x11D97,
  3673. 0x11F42, 0x11F42,
  3674. 0x16AF0, 0x16AF4,
  3675. 0x16B30, 0x16B36,
  3676. 0x1BC9E, 0x1BC9E,
  3677. 0x1D165, 0x1D165,
  3678. 0x1D167, 0x1D169,
  3679. 0x1D16E, 0x1D172,
  3680. 0x1D17B, 0x1D182,
  3681. 0x1D185, 0x1D18B,
  3682. 0x1D1AA, 0x1D1AD,
  3683. 0x1D242, 0x1D244,
  3684. 0x1E000, 0x1E006,
  3685. 0x1E008, 0x1E018,
  3686. 0x1E01B, 0x1E021,
  3687. 0x1E023, 0x1E024,
  3688. 0x1E026, 0x1E02A,
  3689. 0x1E08F, 0x1E08F,
  3690. 0x1E130, 0x1E136,
  3691. 0x1E2AE, 0x1E2AE,
  3692. 0x1E2EC, 0x1E2EF,
  3693. 0x1E4EC, 0x1E4EF,
  3694. 0x1E8D0, 0x1E8D6,
  3695. 0x1E944, 0x1E94A,
  3696. }
  3697. // Fullwidth (F) and Wide (W) are counted as 2.
  3698. // Everything else is 1.
  3699. //
  3700. // Derived from: https://unicode.org/Public/15.1.0/ucd/EastAsianWidth.txt
  3701. @(rodata)
  3702. normalized_east_asian_width_ranges := [?]i32 {
  3703. 0x0000, 0x10FF, 1,
  3704. 0x1100, 0x115F, 2,
  3705. 0x1160, 0x2319, 1,
  3706. 0x231A, 0x231B, 2,
  3707. 0x231C, 0x2328, 1,
  3708. 0x2329, 0x232A, 2,
  3709. 0x232B, 0x23E8, 1,
  3710. 0x23E9, 0x23EC, 2,
  3711. 0x23ED, 0x23EF, 1,
  3712. 0x23F0, 0x23F0, 2,
  3713. 0x23F1, 0x23F2, 1,
  3714. 0x23F3, 0x23F3, 2,
  3715. 0x23F4, 0x25FC, 1,
  3716. 0x25FD, 0x25FE, 2,
  3717. 0x25FF, 0x2613, 1,
  3718. 0x2614, 0x2615, 2,
  3719. 0x2616, 0x2647, 1,
  3720. 0x2648, 0x2653, 2,
  3721. 0x2654, 0x267E, 1,
  3722. 0x267F, 0x267F, 2,
  3723. 0x2680, 0x2692, 1,
  3724. 0x2693, 0x2693, 2,
  3725. 0x2694, 0x26A0, 1,
  3726. 0x26A1, 0x26A1, 2,
  3727. 0x26A2, 0x26A9, 1,
  3728. 0x26AA, 0x26AB, 2,
  3729. 0x26AC, 0x26BC, 1,
  3730. 0x26BD, 0x26BE, 2,
  3731. 0x26BF, 0x26C3, 1,
  3732. 0x26C4, 0x26C5, 2,
  3733. 0x26C6, 0x26CD, 1,
  3734. 0x26CE, 0x26CE, 2,
  3735. 0x26CF, 0x26D3, 1,
  3736. 0x26D4, 0x26D4, 2,
  3737. 0x26D5, 0x26E9, 1,
  3738. 0x26EA, 0x26EA, 2,
  3739. 0x26EB, 0x26F1, 1,
  3740. 0x26F2, 0x26F3, 2,
  3741. 0x26F4, 0x26F4, 1,
  3742. 0x26F5, 0x26F5, 2,
  3743. 0x26F6, 0x26F9, 1,
  3744. 0x26FA, 0x26FA, 2,
  3745. 0x26FB, 0x26FC, 1,
  3746. 0x26FD, 0x26FD, 2,
  3747. 0x26FE, 0x2704, 1,
  3748. 0x2705, 0x2705, 2,
  3749. 0x2706, 0x2709, 1,
  3750. 0x270A, 0x270B, 2,
  3751. 0x270C, 0x2727, 1,
  3752. 0x2728, 0x2728, 2,
  3753. 0x2729, 0x274B, 1,
  3754. 0x274C, 0x274C, 2,
  3755. 0x274D, 0x274D, 1,
  3756. 0x274E, 0x274E, 2,
  3757. 0x274F, 0x2752, 1,
  3758. 0x2753, 0x2755, 2,
  3759. 0x2756, 0x2756, 1,
  3760. 0x2757, 0x2757, 2,
  3761. 0x2758, 0x2794, 1,
  3762. 0x2795, 0x2797, 2,
  3763. 0x2798, 0x27AF, 1,
  3764. 0x27B0, 0x27B0, 2,
  3765. 0x27B1, 0x27BE, 1,
  3766. 0x27BF, 0x27BF, 2,
  3767. 0x27C0, 0x2B1A, 1,
  3768. 0x2B1B, 0x2B1C, 2,
  3769. 0x2B1D, 0x2B4F, 1,
  3770. 0x2B50, 0x2B50, 2,
  3771. 0x2B51, 0x2B54, 1,
  3772. 0x2B55, 0x2B55, 2,
  3773. 0x2B56, 0x2E5D, 1,
  3774. 0x2E80, 0x303E, 2,
  3775. 0x303F, 0x303F, 1,
  3776. 0x3041, 0x3247, 2,
  3777. 0x3248, 0x324F, 1,
  3778. 0x3250, 0x4DBF, 2,
  3779. 0x4DC0, 0x4DFF, 1,
  3780. 0x4E00, 0xA4C6, 2,
  3781. 0xA4D0, 0xA95F, 1,
  3782. 0xA960, 0xA97C, 2,
  3783. 0xA980, 0xABF9, 1,
  3784. 0xAC00, 0xD7A3, 2,
  3785. 0xD7B0, 0xF8FF, 1,
  3786. 0xF900, 0xFAFF, 2,
  3787. 0xFB00, 0xFE0F, 1,
  3788. 0xFE10, 0xFE19, 2,
  3789. 0xFE20, 0xFE2F, 1,
  3790. 0xFE30, 0xFE6B, 2,
  3791. 0xFE70, 0xFEFF, 1,
  3792. 0xFF01, 0xFF60, 2,
  3793. 0xFF61, 0xFFDC, 1,
  3794. 0xFFE0, 0xFFE6, 2,
  3795. 0xFFE8, 0x16F9F, 1,
  3796. 0x16FE0, 0x1B2FB, 2,
  3797. 0x1BC00, 0x1F003, 1,
  3798. 0x1F004, 0x1F004, 2,
  3799. 0x1F005, 0x1F0CE, 1,
  3800. 0x1F0CF, 0x1F0CF, 2,
  3801. 0x1F0D1, 0x1F18D, 1,
  3802. 0x1F18E, 0x1F18E, 2,
  3803. 0x1F18F, 0x1F190, 1,
  3804. 0x1F191, 0x1F19A, 2,
  3805. 0x1F19B, 0x1F1FF, 1,
  3806. 0x1F200, 0x1F320, 2,
  3807. 0x1F321, 0x1F32C, 1,
  3808. 0x1F32D, 0x1F335, 2,
  3809. 0x1F336, 0x1F336, 1,
  3810. 0x1F337, 0x1F37C, 2,
  3811. 0x1F37D, 0x1F37D, 1,
  3812. 0x1F37E, 0x1F393, 2,
  3813. 0x1F394, 0x1F39F, 1,
  3814. 0x1F3A0, 0x1F3CA, 2,
  3815. 0x1F3CB, 0x1F3CE, 1,
  3816. 0x1F3CF, 0x1F3D3, 2,
  3817. 0x1F3D4, 0x1F3DF, 1,
  3818. 0x1F3E0, 0x1F3F0, 2,
  3819. 0x1F3F1, 0x1F3F3, 1,
  3820. 0x1F3F4, 0x1F3F4, 2,
  3821. 0x1F3F5, 0x1F3F7, 1,
  3822. 0x1F3F8, 0x1F43E, 2,
  3823. 0x1F43F, 0x1F43F, 1,
  3824. 0x1F440, 0x1F440, 2,
  3825. 0x1F441, 0x1F441, 1,
  3826. 0x1F442, 0x1F4FC, 2,
  3827. 0x1F4FD, 0x1F4FE, 1,
  3828. 0x1F4FF, 0x1F53D, 2,
  3829. 0x1F53E, 0x1F54A, 1,
  3830. 0x1F54B, 0x1F54E, 2,
  3831. 0x1F54F, 0x1F54F, 1,
  3832. 0x1F550, 0x1F567, 2,
  3833. 0x1F568, 0x1F579, 1,
  3834. 0x1F57A, 0x1F57A, 2,
  3835. 0x1F57B, 0x1F594, 1,
  3836. 0x1F595, 0x1F596, 2,
  3837. 0x1F597, 0x1F5A3, 1,
  3838. 0x1F5A4, 0x1F5A4, 2,
  3839. 0x1F5A5, 0x1F5FA, 1,
  3840. 0x1F5FB, 0x1F64F, 2,
  3841. 0x1F650, 0x1F67F, 1,
  3842. 0x1F680, 0x1F6C5, 2,
  3843. 0x1F6C6, 0x1F6CB, 1,
  3844. 0x1F6CC, 0x1F6CC, 2,
  3845. 0x1F6CD, 0x1F6CF, 1,
  3846. 0x1F6D0, 0x1F6D2, 2,
  3847. 0x1F6D3, 0x1F6D4, 1,
  3848. 0x1F6D5, 0x1F6DF, 2,
  3849. 0x1F6E0, 0x1F6EA, 1,
  3850. 0x1F6EB, 0x1F6EC, 2,
  3851. 0x1F6F0, 0x1F6F3, 1,
  3852. 0x1F6F4, 0x1F6FC, 2,
  3853. 0x1F700, 0x1F7D9, 1,
  3854. 0x1F7E0, 0x1F7F0, 2,
  3855. 0x1F800, 0x1F90B, 1,
  3856. 0x1F90C, 0x1F93A, 2,
  3857. 0x1F93B, 0x1F93B, 1,
  3858. 0x1F93C, 0x1F945, 2,
  3859. 0x1F946, 0x1F946, 1,
  3860. 0x1F947, 0x1F9FF, 2,
  3861. 0x1FA00, 0x1FA6D, 1,
  3862. 0x1FA70, 0x1FAF8, 2,
  3863. 0x1FB00, 0x1FBF9, 1,
  3864. 0x20000, 0x3FFFD, 2,
  3865. 0xE0001, 0x10FFFD, 1,
  3866. }
  3867. //
  3868. // End of Unicode 15.1.0 block.
  3869. //