1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079 |
- 'use strict';
- Object.defineProperty(exports, '__esModule', { value: true });
- var compilerCore = require('@vue/compiler-core');
- var shared = require('@vue/shared');
- const V_MODEL_RADIO = Symbol(``);
- const V_MODEL_CHECKBOX = Symbol(``);
- const V_MODEL_TEXT = Symbol(``);
- const V_MODEL_SELECT = Symbol(``);
- const V_MODEL_DYNAMIC = Symbol(``);
- const V_ON_WITH_MODIFIERS = Symbol(``);
- const V_ON_WITH_KEYS = Symbol(``);
- const V_SHOW = Symbol(``);
- const TRANSITION = Symbol(``);
- const TRANSITION_GROUP = Symbol(``);
- compilerCore.registerRuntimeHelpers({
- [V_MODEL_RADIO]: `vModelRadio`,
- [V_MODEL_CHECKBOX]: `vModelCheckbox`,
- [V_MODEL_TEXT]: `vModelText`,
- [V_MODEL_SELECT]: `vModelSelect`,
- [V_MODEL_DYNAMIC]: `vModelDynamic`,
- [V_ON_WITH_MODIFIERS]: `withModifiers`,
- [V_ON_WITH_KEYS]: `withKeys`,
- [V_SHOW]: `vShow`,
- [TRANSITION]: `Transition`,
- [TRANSITION_GROUP]: `TransitionGroup`
- });
- var namedCharacterReferences = {
- GT: ">",
- gt: ">",
- LT: "<",
- lt: "<",
- "ac;": "∾",
- "af;": "",
- AMP: "&",
- amp: "&",
- "ap;": "≈",
- "DD;": "ⅅ",
- "dd;": "ⅆ",
- deg: "°",
- "ee;": "ⅇ",
- "eg;": "⪚",
- "el;": "⪙",
- ETH: "Ð",
- eth: "ð",
- "gE;": "≧",
- "ge;": "≥",
- "Gg;": "⋙",
- "gg;": "≫",
- "gl;": "≷",
- "GT;": ">",
- "Gt;": "≫",
- "gt;": ">",
- "ic;": "",
- "ii;": "ⅈ",
- "Im;": "ℑ",
- "in;": "∈",
- "it;": "",
- "lE;": "≦",
- "le;": "≤",
- "lg;": "≶",
- "Ll;": "⋘",
- "ll;": "≪",
- "LT;": "<",
- "Lt;": "≪",
- "lt;": "<",
- "mp;": "∓",
- "Mu;": "Μ",
- "mu;": "μ",
- "ne;": "≠",
- "ni;": "∋",
- not: "¬",
- "Nu;": "Ν",
- "nu;": "ν",
- "Or;": "⩔",
- "or;": "∨",
- "oS;": "Ⓢ",
- "Pi;": "Π",
- "pi;": "π",
- "pm;": "±",
- "Pr;": "⪻",
- "pr;": "≺",
- "Re;": "ℜ",
- REG: "®",
- reg: "®",
- "rx;": "℞",
- "Sc;": "⪼",
- "sc;": "≻",
- shy: "",
- uml: "¨",
- "wp;": "℘",
- "wr;": "≀",
- "Xi;": "Ξ",
- "xi;": "ξ",
- yen: "¥",
- "acd;": "∿",
- "acE;": "∾̳",
- "Acy;": "А",
- "acy;": "а",
- "Afr;": "𝔄",
- "afr;": "𝔞",
- "AMP;": "&",
- "amp;": "&",
- "And;": "⩓",
- "and;": "∧",
- "ang;": "∠",
- "apE;": "⩰",
- "ape;": "≊",
- "ast;": "*",
- Auml: "Ä",
- auml: "ä",
- "Bcy;": "Б",
- "bcy;": "б",
- "Bfr;": "𝔅",
- "bfr;": "𝔟",
- "bne;": "=⃥",
- "bot;": "⊥",
- "Cap;": "⋒",
- "cap;": "∩",
- cent: "¢",
- "Cfr;": "ℭ",
- "cfr;": "𝔠",
- "Chi;": "Χ",
- "chi;": "χ",
- "cir;": "○",
- COPY: "©",
- copy: "©",
- "Cup;": "⋓",
- "cup;": "∪",
- "Dcy;": "Д",
- "dcy;": "д",
- "deg;": "°",
- "Del;": "∇",
- "Dfr;": "𝔇",
- "dfr;": "𝔡",
- "die;": "¨",
- "div;": "÷",
- "Dot;": "¨",
- "dot;": "˙",
- "Ecy;": "Э",
- "ecy;": "э",
- "Efr;": "𝔈",
- "efr;": "𝔢",
- "egs;": "⪖",
- "ell;": "ℓ",
- "els;": "⪕",
- "ENG;": "Ŋ",
- "eng;": "ŋ",
- "Eta;": "Η",
- "eta;": "η",
- "ETH;": "Ð",
- "eth;": "ð",
- Euml: "Ë",
- euml: "ë",
- "Fcy;": "Ф",
- "fcy;": "ф",
- "Ffr;": "𝔉",
- "ffr;": "𝔣",
- "gap;": "⪆",
- "Gcy;": "Г",
- "gcy;": "г",
- "gEl;": "⪌",
- "gel;": "⋛",
- "geq;": "≥",
- "ges;": "⩾",
- "Gfr;": "𝔊",
- "gfr;": "𝔤",
- "ggg;": "⋙",
- "gla;": "⪥",
- "glE;": "⪒",
- "glj;": "⪤",
- "gnE;": "≩",
- "gne;": "⪈",
- "Hat;": "^",
- "Hfr;": "ℌ",
- "hfr;": "𝔥",
- "Icy;": "И",
- "icy;": "и",
- "iff;": "⇔",
- "Ifr;": "ℑ",
- "ifr;": "𝔦",
- "Int;": "∬",
- "int;": "∫",
- Iuml: "Ï",
- iuml: "ï",
- "Jcy;": "Й",
- "jcy;": "й",
- "Jfr;": "𝔍",
- "jfr;": "𝔧",
- "Kcy;": "К",
- "kcy;": "к",
- "Kfr;": "𝔎",
- "kfr;": "𝔨",
- "lap;": "⪅",
- "lat;": "⪫",
- "Lcy;": "Л",
- "lcy;": "л",
- "lEg;": "⪋",
- "leg;": "⋚",
- "leq;": "≤",
- "les;": "⩽",
- "Lfr;": "𝔏",
- "lfr;": "𝔩",
- "lgE;": "⪑",
- "lnE;": "≨",
- "lne;": "⪇",
- "loz;": "◊",
- "lrm;": "",
- "Lsh;": "↰",
- "lsh;": "↰",
- macr: "¯",
- "Map;": "⤅",
- "map;": "↦",
- "Mcy;": "М",
- "mcy;": "м",
- "Mfr;": "𝔐",
- "mfr;": "𝔪",
- "mho;": "℧",
- "mid;": "∣",
- "nap;": "≉",
- nbsp: " ",
- "Ncy;": "Н",
- "ncy;": "н",
- "Nfr;": "𝔑",
- "nfr;": "𝔫",
- "ngE;": "≧̸",
- "nge;": "≱",
- "nGg;": "⋙̸",
- "nGt;": "≫⃒",
- "ngt;": "≯",
- "nis;": "⋼",
- "niv;": "∋",
- "nlE;": "≦̸",
- "nle;": "≰",
- "nLl;": "⋘̸",
- "nLt;": "≪⃒",
- "nlt;": "≮",
- "Not;": "⫬",
- "not;": "¬",
- "npr;": "⊀",
- "nsc;": "⊁",
- "num;": "#",
- "Ocy;": "О",
- "ocy;": "о",
- "Ofr;": "𝔒",
- "ofr;": "𝔬",
- "ogt;": "⧁",
- "ohm;": "Ω",
- "olt;": "⧀",
- "ord;": "⩝",
- ordf: "ª",
- ordm: "º",
- "orv;": "⩛",
- Ouml: "Ö",
- ouml: "ö",
- "par;": "∥",
- para: "¶",
- "Pcy;": "П",
- "pcy;": "п",
- "Pfr;": "𝔓",
- "pfr;": "𝔭",
- "Phi;": "Φ",
- "phi;": "φ",
- "piv;": "ϖ",
- "prE;": "⪳",
- "pre;": "⪯",
- "Psi;": "Ψ",
- "psi;": "ψ",
- "Qfr;": "𝔔",
- "qfr;": "𝔮",
- QUOT: "\"",
- quot: "\"",
- "Rcy;": "Р",
- "rcy;": "р",
- "REG;": "®",
- "reg;": "®",
- "Rfr;": "ℜ",
- "rfr;": "𝔯",
- "Rho;": "Ρ",
- "rho;": "ρ",
- "rlm;": "",
- "Rsh;": "↱",
- "rsh;": "↱",
- "scE;": "⪴",
- "sce;": "⪰",
- "Scy;": "С",
- "scy;": "с",
- sect: "§",
- "Sfr;": "𝔖",
- "sfr;": "𝔰",
- "shy;": "",
- "sim;": "∼",
- "smt;": "⪪",
- "sol;": "/",
- "squ;": "□",
- "Sub;": "⋐",
- "sub;": "⊂",
- "Sum;": "∑",
- "sum;": "∑",
- "Sup;": "⋑",
- "sup;": "⊃",
- sup1: "¹",
- sup2: "²",
- sup3: "³",
- "Tab;": "\t",
- "Tau;": "Τ",
- "tau;": "τ",
- "Tcy;": "Т",
- "tcy;": "т",
- "Tfr;": "𝔗",
- "tfr;": "𝔱",
- "top;": "⊤",
- "Ucy;": "У",
- "ucy;": "у",
- "Ufr;": "𝔘",
- "ufr;": "𝔲",
- "uml;": "¨",
- Uuml: "Ü",
- uuml: "ü",
- "Vcy;": "В",
- "vcy;": "в",
- "Vee;": "⋁",
- "vee;": "∨",
- "Vfr;": "𝔙",
- "vfr;": "𝔳",
- "Wfr;": "𝔚",
- "wfr;": "𝔴",
- "Xfr;": "𝔛",
- "xfr;": "𝔵",
- "Ycy;": "Ы",
- "ycy;": "ы",
- "yen;": "¥",
- "Yfr;": "𝔜",
- "yfr;": "𝔶",
- yuml: "ÿ",
- "Zcy;": "З",
- "zcy;": "з",
- "Zfr;": "ℨ",
- "zfr;": "𝔷",
- "zwj;": "",
- Acirc: "Â",
- acirc: "â",
- acute: "´",
- AElig: "Æ",
- aelig: "æ",
- "andd;": "⩜",
- "andv;": "⩚",
- "ange;": "⦤",
- "Aopf;": "𝔸",
- "aopf;": "𝕒",
- "apid;": "≋",
- "apos;": "'",
- Aring: "Å",
- aring: "å",
- "Ascr;": "𝒜",
- "ascr;": "𝒶",
- "Auml;": "Ä",
- "auml;": "ä",
- "Barv;": "⫧",
- "bbrk;": "⎵",
- "Beta;": "Β",
- "beta;": "β",
- "beth;": "ℶ",
- "bNot;": "⫭",
- "bnot;": "⌐",
- "Bopf;": "𝔹",
- "bopf;": "𝕓",
- "boxH;": "═",
- "boxh;": "─",
- "boxV;": "║",
- "boxv;": "│",
- "Bscr;": "ℬ",
- "bscr;": "𝒷",
- "bsim;": "∽",
- "bsol;": "\\",
- "bull;": "•",
- "bump;": "≎",
- "caps;": "∩︀",
- "Cdot;": "Ċ",
- "cdot;": "ċ",
- cedil: "¸",
- "cent;": "¢",
- "CHcy;": "Ч",
- "chcy;": "ч",
- "circ;": "ˆ",
- "cirE;": "⧃",
- "cire;": "≗",
- "comp;": "∁",
- "cong;": "≅",
- "Copf;": "ℂ",
- "copf;": "𝕔",
- "COPY;": "©",
- "copy;": "©",
- "Cscr;": "𝒞",
- "cscr;": "𝒸",
- "csub;": "⫏",
- "csup;": "⫐",
- "cups;": "∪︀",
- "Darr;": "↡",
- "dArr;": "⇓",
- "darr;": "↓",
- "dash;": "‐",
- "dHar;": "⥥",
- "diam;": "⋄",
- "DJcy;": "Ђ",
- "djcy;": "ђ",
- "Dopf;": "𝔻",
- "dopf;": "𝕕",
- "Dscr;": "𝒟",
- "dscr;": "𝒹",
- "DScy;": "Ѕ",
- "dscy;": "ѕ",
- "dsol;": "⧶",
- "dtri;": "▿",
- "DZcy;": "Џ",
- "dzcy;": "џ",
- "ecir;": "≖",
- Ecirc: "Ê",
- ecirc: "ê",
- "Edot;": "Ė",
- "eDot;": "≑",
- "edot;": "ė",
- "emsp;": " ",
- "ensp;": " ",
- "Eopf;": "𝔼",
- "eopf;": "𝕖",
- "epar;": "⋕",
- "epsi;": "ε",
- "Escr;": "ℰ",
- "escr;": "ℯ",
- "Esim;": "⩳",
- "esim;": "≂",
- "Euml;": "Ë",
- "euml;": "ë",
- "euro;": "€",
- "excl;": "!",
- "flat;": "♭",
- "fnof;": "ƒ",
- "Fopf;": "𝔽",
- "fopf;": "𝕗",
- "fork;": "⋔",
- "Fscr;": "ℱ",
- "fscr;": "𝒻",
- "Gdot;": "Ġ",
- "gdot;": "ġ",
- "geqq;": "≧",
- "gesl;": "⋛︀",
- "GJcy;": "Ѓ",
- "gjcy;": "ѓ",
- "gnap;": "⪊",
- "gneq;": "⪈",
- "Gopf;": "𝔾",
- "gopf;": "𝕘",
- "Gscr;": "𝒢",
- "gscr;": "ℊ",
- "gsim;": "≳",
- "gtcc;": "⪧",
- "gvnE;": "≩︀",
- "half;": "½",
- "hArr;": "⇔",
- "harr;": "↔",
- "hbar;": "ℏ",
- "Hopf;": "ℍ",
- "hopf;": "𝕙",
- "Hscr;": "ℋ",
- "hscr;": "𝒽",
- Icirc: "Î",
- icirc: "î",
- "Idot;": "İ",
- "IEcy;": "Е",
- "iecy;": "е",
- iexcl: "¡",
- "imof;": "⊷",
- "IOcy;": "Ё",
- "iocy;": "ё",
- "Iopf;": "𝕀",
- "iopf;": "𝕚",
- "Iota;": "Ι",
- "iota;": "ι",
- "Iscr;": "ℐ",
- "iscr;": "𝒾",
- "isin;": "∈",
- "Iuml;": "Ï",
- "iuml;": "ï",
- "Jopf;": "𝕁",
- "jopf;": "𝕛",
- "Jscr;": "𝒥",
- "jscr;": "𝒿",
- "KHcy;": "Х",
- "khcy;": "х",
- "KJcy;": "Ќ",
- "kjcy;": "ќ",
- "Kopf;": "𝕂",
- "kopf;": "𝕜",
- "Kscr;": "𝒦",
- "kscr;": "𝓀",
- "Lang;": "⟪",
- "lang;": "⟨",
- laquo: "«",
- "Larr;": "↞",
- "lArr;": "⇐",
- "larr;": "←",
- "late;": "⪭",
- "lcub;": "{",
- "ldca;": "⤶",
- "ldsh;": "↲",
- "leqq;": "≦",
- "lesg;": "⋚︀",
- "lHar;": "⥢",
- "LJcy;": "Љ",
- "ljcy;": "љ",
- "lnap;": "⪉",
- "lneq;": "⪇",
- "Lopf;": "𝕃",
- "lopf;": "𝕝",
- "lozf;": "⧫",
- "lpar;": "(",
- "Lscr;": "ℒ",
- "lscr;": "𝓁",
- "lsim;": "≲",
- "lsqb;": "[",
- "ltcc;": "⪦",
- "ltri;": "◃",
- "lvnE;": "≨︀",
- "macr;": "¯",
- "male;": "♂",
- "malt;": "✠",
- micro: "µ",
- "mlcp;": "⫛",
- "mldr;": "…",
- "Mopf;": "𝕄",
- "mopf;": "𝕞",
- "Mscr;": "ℳ",
- "mscr;": "𝓂",
- "nang;": "∠⃒",
- "napE;": "⩰̸",
- "nbsp;": " ",
- "ncap;": "⩃",
- "ncup;": "⩂",
- "ngeq;": "≱",
- "nges;": "⩾̸",
- "ngtr;": "≯",
- "nGtv;": "≫̸",
- "nisd;": "⋺",
- "NJcy;": "Њ",
- "njcy;": "њ",
- "nldr;": "‥",
- "nleq;": "≰",
- "nles;": "⩽̸",
- "nLtv;": "≪̸",
- "nmid;": "∤",
- "Nopf;": "ℕ",
- "nopf;": "𝕟",
- "npar;": "∦",
- "npre;": "⪯̸",
- "nsce;": "⪰̸",
- "Nscr;": "𝒩",
- "nscr;": "𝓃",
- "nsim;": "≁",
- "nsub;": "⊄",
- "nsup;": "⊅",
- "ntgl;": "≹",
- "ntlg;": "≸",
- "nvap;": "≍⃒",
- "nvge;": "≥⃒",
- "nvgt;": ">⃒",
- "nvle;": "≤⃒",
- "nvlt;": "<⃒",
- "oast;": "⊛",
- "ocir;": "⊚",
- Ocirc: "Ô",
- ocirc: "ô",
- "odiv;": "⨸",
- "odot;": "⊙",
- "ogon;": "˛",
- "oint;": "∮",
- "omid;": "⦶",
- "Oopf;": "𝕆",
- "oopf;": "𝕠",
- "opar;": "⦷",
- "ordf;": "ª",
- "ordm;": "º",
- "oror;": "⩖",
- "Oscr;": "𝒪",
- "oscr;": "ℴ",
- "osol;": "⊘",
- "Ouml;": "Ö",
- "ouml;": "ö",
- "para;": "¶",
- "part;": "∂",
- "perp;": "⊥",
- "phiv;": "ϕ",
- "plus;": "+",
- "Popf;": "ℙ",
- "popf;": "𝕡",
- pound: "£",
- "prap;": "⪷",
- "prec;": "≺",
- "prnE;": "⪵",
- "prod;": "∏",
- "prop;": "∝",
- "Pscr;": "𝒫",
- "pscr;": "𝓅",
- "qint;": "⨌",
- "Qopf;": "ℚ",
- "qopf;": "𝕢",
- "Qscr;": "𝒬",
- "qscr;": "𝓆",
- "QUOT;": "\"",
- "quot;": "\"",
- "race;": "∽̱",
- "Rang;": "⟫",
- "rang;": "⟩",
- raquo: "»",
- "Rarr;": "↠",
- "rArr;": "⇒",
- "rarr;": "→",
- "rcub;": "}",
- "rdca;": "⤷",
- "rdsh;": "↳",
- "real;": "ℜ",
- "rect;": "▭",
- "rHar;": "⥤",
- "rhov;": "ϱ",
- "ring;": "˚",
- "Ropf;": "ℝ",
- "ropf;": "𝕣",
- "rpar;": ")",
- "Rscr;": "ℛ",
- "rscr;": "𝓇",
- "rsqb;": "]",
- "rtri;": "▹",
- "scap;": "⪸",
- "scnE;": "⪶",
- "sdot;": "⋅",
- "sect;": "§",
- "semi;": ";",
- "sext;": "✶",
- "SHcy;": "Ш",
- "shcy;": "ш",
- "sime;": "≃",
- "simg;": "⪞",
- "siml;": "⪝",
- "smid;": "∣",
- "smte;": "⪬",
- "solb;": "⧄",
- "Sopf;": "𝕊",
- "sopf;": "𝕤",
- "spar;": "∥",
- "Sqrt;": "√",
- "squf;": "▪",
- "Sscr;": "𝒮",
- "sscr;": "𝓈",
- "Star;": "⋆",
- "star;": "☆",
- "subE;": "⫅",
- "sube;": "⊆",
- "succ;": "≻",
- "sung;": "♪",
- "sup1;": "¹",
- "sup2;": "²",
- "sup3;": "³",
- "supE;": "⫆",
- "supe;": "⊇",
- szlig: "ß",
- "tbrk;": "⎴",
- "tdot;": "⃛",
- THORN: "Þ",
- thorn: "þ",
- times: "×",
- "tint;": "∭",
- "toea;": "⤨",
- "Topf;": "𝕋",
- "topf;": "𝕥",
- "tosa;": "⤩",
- "trie;": "≜",
- "Tscr;": "𝒯",
- "tscr;": "𝓉",
- "TScy;": "Ц",
- "tscy;": "ц",
- "Uarr;": "↟",
- "uArr;": "⇑",
- "uarr;": "↑",
- Ucirc: "Û",
- ucirc: "û",
- "uHar;": "⥣",
- "Uopf;": "𝕌",
- "uopf;": "𝕦",
- "Upsi;": "ϒ",
- "upsi;": "υ",
- "Uscr;": "𝒰",
- "uscr;": "𝓊",
- "utri;": "▵",
- "Uuml;": "Ü",
- "uuml;": "ü",
- "vArr;": "⇕",
- "varr;": "↕",
- "Vbar;": "⫫",
- "vBar;": "⫨",
- "Vert;": "‖",
- "vert;": "|",
- "Vopf;": "𝕍",
- "vopf;": "𝕧",
- "Vscr;": "𝒱",
- "vscr;": "𝓋",
- "Wopf;": "𝕎",
- "wopf;": "𝕨",
- "Wscr;": "𝒲",
- "wscr;": "𝓌",
- "xcap;": "⋂",
- "xcup;": "⋃",
- "xmap;": "⟼",
- "xnis;": "⋻",
- "Xopf;": "𝕏",
- "xopf;": "𝕩",
- "Xscr;": "𝒳",
- "xscr;": "𝓍",
- "xvee;": "⋁",
- "YAcy;": "Я",
- "yacy;": "я",
- "YIcy;": "Ї",
- "yicy;": "ї",
- "Yopf;": "𝕐",
- "yopf;": "𝕪",
- "Yscr;": "𝒴",
- "yscr;": "𝓎",
- "YUcy;": "Ю",
- "yucy;": "ю",
- "Yuml;": "Ÿ",
- "yuml;": "ÿ",
- "Zdot;": "Ż",
- "zdot;": "ż",
- "Zeta;": "Ζ",
- "zeta;": "ζ",
- "ZHcy;": "Ж",
- "zhcy;": "ж",
- "Zopf;": "ℤ",
- "zopf;": "𝕫",
- "Zscr;": "𝒵",
- "zscr;": "𝓏",
- "zwnj;": "",
- Aacute: "Á",
- aacute: "á",
- "Acirc;": "Â",
- "acirc;": "â",
- "acute;": "´",
- "AElig;": "Æ",
- "aelig;": "æ",
- Agrave: "À",
- agrave: "à",
- "aleph;": "ℵ",
- "Alpha;": "Α",
- "alpha;": "α",
- "Amacr;": "Ā",
- "amacr;": "ā",
- "amalg;": "⨿",
- "angle;": "∠",
- "angrt;": "∟",
- "angst;": "Å",
- "Aogon;": "Ą",
- "aogon;": "ą",
- "Aring;": "Å",
- "aring;": "å",
- "asymp;": "≈",
- Atilde: "Ã",
- atilde: "ã",
- "awint;": "⨑",
- "bcong;": "≌",
- "bdquo;": "„",
- "bepsi;": "϶",
- "blank;": "␣",
- "blk12;": "▒",
- "blk14;": "░",
- "blk34;": "▓",
- "block;": "█",
- "boxDL;": "╗",
- "boxDl;": "╖",
- "boxdL;": "╕",
- "boxdl;": "┐",
- "boxDR;": "╔",
- "boxDr;": "╓",
- "boxdR;": "╒",
- "boxdr;": "┌",
- "boxHD;": "╦",
- "boxHd;": "╤",
- "boxhD;": "╥",
- "boxhd;": "┬",
- "boxHU;": "╩",
- "boxHu;": "╧",
- "boxhU;": "╨",
- "boxhu;": "┴",
- "boxUL;": "╝",
- "boxUl;": "╜",
- "boxuL;": "╛",
- "boxul;": "┘",
- "boxUR;": "╚",
- "boxUr;": "╙",
- "boxuR;": "╘",
- "boxur;": "└",
- "boxVH;": "╬",
- "boxVh;": "╫",
- "boxvH;": "╪",
- "boxvh;": "┼",
- "boxVL;": "╣",
- "boxVl;": "╢",
- "boxvL;": "╡",
- "boxvl;": "┤",
- "boxVR;": "╠",
- "boxVr;": "╟",
- "boxvR;": "╞",
- "boxvr;": "├",
- "Breve;": "˘",
- "breve;": "˘",
- brvbar: "¦",
- "bsemi;": "⁏",
- "bsime;": "⋍",
- "bsolb;": "⧅",
- "bumpE;": "⪮",
- "bumpe;": "≏",
- "caret;": "⁁",
- "caron;": "ˇ",
- "ccaps;": "⩍",
- Ccedil: "Ç",
- ccedil: "ç",
- "Ccirc;": "Ĉ",
- "ccirc;": "ĉ",
- "ccups;": "⩌",
- "cedil;": "¸",
- "check;": "✓",
- "clubs;": "♣",
- "Colon;": "∷",
- "colon;": ":",
- "comma;": ",",
- "crarr;": "↵",
- "Cross;": "⨯",
- "cross;": "✗",
- "csube;": "⫑",
- "csupe;": "⫒",
- "ctdot;": "⋯",
- "cuepr;": "⋞",
- "cuesc;": "⋟",
- "cupor;": "⩅",
- curren: "¤",
- "cuvee;": "⋎",
- "cuwed;": "⋏",
- "cwint;": "∱",
- "Dashv;": "⫤",
- "dashv;": "⊣",
- "dblac;": "˝",
- "ddarr;": "⇊",
- "Delta;": "Δ",
- "delta;": "δ",
- "dharl;": "⇃",
- "dharr;": "⇂",
- "diams;": "♦",
- "disin;": "⋲",
- divide: "÷",
- "doteq;": "≐",
- "dtdot;": "⋱",
- "dtrif;": "▾",
- "duarr;": "⇵",
- "duhar;": "⥯",
- Eacute: "É",
- eacute: "é",
- "Ecirc;": "Ê",
- "ecirc;": "ê",
- "eDDot;": "⩷",
- "efDot;": "≒",
- Egrave: "È",
- egrave: "è",
- "Emacr;": "Ē",
- "emacr;": "ē",
- "empty;": "∅",
- "Eogon;": "Ę",
- "eogon;": "ę",
- "eplus;": "⩱",
- "epsiv;": "ϵ",
- "eqsim;": "≂",
- "Equal;": "⩵",
- "equiv;": "≡",
- "erarr;": "⥱",
- "erDot;": "≓",
- "esdot;": "≐",
- "exist;": "∃",
- "fflig;": "ff",
- "filig;": "fi",
- "fjlig;": "fj",
- "fllig;": "fl",
- "fltns;": "▱",
- "forkv;": "⫙",
- frac12: "½",
- frac14: "¼",
- frac34: "¾",
- "frasl;": "⁄",
- "frown;": "⌢",
- "Gamma;": "Γ",
- "gamma;": "γ",
- "Gcirc;": "Ĝ",
- "gcirc;": "ĝ",
- "gescc;": "⪩",
- "gimel;": "ℷ",
- "gneqq;": "≩",
- "gnsim;": "⋧",
- "grave;": "`",
- "gsime;": "⪎",
- "gsiml;": "⪐",
- "gtcir;": "⩺",
- "gtdot;": "⋗",
- "Hacek;": "ˇ",
- "harrw;": "↭",
- "Hcirc;": "Ĥ",
- "hcirc;": "ĥ",
- "hoarr;": "⇿",
- Iacute: "Í",
- iacute: "í",
- "Icirc;": "Î",
- "icirc;": "î",
- "iexcl;": "¡",
- Igrave: "Ì",
- igrave: "ì",
- "iiint;": "∭",
- "iiota;": "℩",
- "IJlig;": "IJ",
- "ijlig;": "ij",
- "Imacr;": "Ī",
- "imacr;": "ī",
- "image;": "ℑ",
- "imath;": "ı",
- "imped;": "Ƶ",
- "infin;": "∞",
- "Iogon;": "Į",
- "iogon;": "į",
- "iprod;": "⨼",
- iquest: "¿",
- "isinE;": "⋹",
- "isins;": "⋴",
- "isinv;": "∈",
- "Iukcy;": "І",
- "iukcy;": "і",
- "Jcirc;": "Ĵ",
- "jcirc;": "ĵ",
- "jmath;": "ȷ",
- "Jukcy;": "Є",
- "jukcy;": "є",
- "Kappa;": "Κ",
- "kappa;": "κ",
- "lAarr;": "⇚",
- "langd;": "⦑",
- "laquo;": "«",
- "larrb;": "⇤",
- "lates;": "⪭︀",
- "lBarr;": "⤎",
- "lbarr;": "⤌",
- "lbbrk;": "❲",
- "lbrke;": "⦋",
- "lceil;": "⌈",
- "ldquo;": "“",
- "lescc;": "⪨",
- "lhard;": "↽",
- "lharu;": "↼",
- "lhblk;": "▄",
- "llarr;": "⇇",
- "lltri;": "◺",
- "lneqq;": "≨",
- "lnsim;": "⋦",
- "loang;": "⟬",
- "loarr;": "⇽",
- "lobrk;": "⟦",
- "lopar;": "⦅",
- "lrarr;": "⇆",
- "lrhar;": "⇋",
- "lrtri;": "⊿",
- "lsime;": "⪍",
- "lsimg;": "⪏",
- "lsquo;": "‘",
- "ltcir;": "⩹",
- "ltdot;": "⋖",
- "ltrie;": "⊴",
- "ltrif;": "◂",
- "mdash;": "—",
- "mDDot;": "∺",
- "micro;": "µ",
- middot: "·",
- "minus;": "−",
- "mumap;": "⊸",
- "nabla;": "∇",
- "napid;": "≋̸",
- "napos;": "ʼn",
- "natur;": "♮",
- "nbump;": "≎̸",
- "ncong;": "≇",
- "ndash;": "–",
- "neArr;": "⇗",
- "nearr;": "↗",
- "nedot;": "≐̸",
- "nesim;": "≂̸",
- "ngeqq;": "≧̸",
- "ngsim;": "≵",
- "nhArr;": "⇎",
- "nharr;": "↮",
- "nhpar;": "⫲",
- "nlArr;": "⇍",
- "nlarr;": "↚",
- "nleqq;": "≦̸",
- "nless;": "≮",
- "nlsim;": "≴",
- "nltri;": "⋪",
- "notin;": "∉",
- "notni;": "∌",
- "npart;": "∂̸",
- "nprec;": "⊀",
- "nrArr;": "⇏",
- "nrarr;": "↛",
- "nrtri;": "⋫",
- "nsime;": "≄",
- "nsmid;": "∤",
- "nspar;": "∦",
- "nsubE;": "⫅̸",
- "nsube;": "⊈",
- "nsucc;": "⊁",
- "nsupE;": "⫆̸",
- "nsupe;": "⊉",
- Ntilde: "Ñ",
- ntilde: "ñ",
- "numsp;": " ",
- "nvsim;": "∼⃒",
- "nwArr;": "⇖",
- "nwarr;": "↖",
- Oacute: "Ó",
- oacute: "ó",
- "Ocirc;": "Ô",
- "ocirc;": "ô",
- "odash;": "⊝",
- "OElig;": "Œ",
- "oelig;": "œ",
- "ofcir;": "⦿",
- Ograve: "Ò",
- ograve: "ò",
- "ohbar;": "⦵",
- "olarr;": "↺",
- "olcir;": "⦾",
- "oline;": "‾",
- "Omacr;": "Ō",
- "omacr;": "ō",
- "Omega;": "Ω",
- "omega;": "ω",
- "operp;": "⦹",
- "oplus;": "⊕",
- "orarr;": "↻",
- "order;": "ℴ",
- Oslash: "Ø",
- oslash: "ø",
- Otilde: "Õ",
- otilde: "õ",
- "ovbar;": "⌽",
- "parsl;": "⫽",
- "phone;": "☎",
- "plusb;": "⊞",
- "pluse;": "⩲",
- plusmn: "±",
- "pound;": "£",
- "prcue;": "≼",
- "Prime;": "″",
- "prime;": "′",
- "prnap;": "⪹",
- "prsim;": "≾",
- "quest;": "?",
- "rAarr;": "⇛",
- "radic;": "√",
- "rangd;": "⦒",
- "range;": "⦥",
- "raquo;": "»",
- "rarrb;": "⇥",
- "rarrc;": "⤳",
- "rarrw;": "↝",
- "ratio;": "∶",
- "RBarr;": "⤐",
- "rBarr;": "⤏",
- "rbarr;": "⤍",
- "rbbrk;": "❳",
- "rbrke;": "⦌",
- "rceil;": "⌉",
- "rdquo;": "”",
- "reals;": "ℝ",
- "rhard;": "⇁",
- "rharu;": "⇀",
- "rlarr;": "⇄",
- "rlhar;": "⇌",
- "rnmid;": "⫮",
- "roang;": "⟭",
- "roarr;": "⇾",
- "robrk;": "⟧",
- "ropar;": "⦆",
- "rrarr;": "⇉",
- "rsquo;": "’",
- "rtrie;": "⊵",
- "rtrif;": "▸",
- "sbquo;": "‚",
- "sccue;": "≽",
- "Scirc;": "Ŝ",
- "scirc;": "ŝ",
- "scnap;": "⪺",
- "scsim;": "≿",
- "sdotb;": "⊡",
- "sdote;": "⩦",
- "seArr;": "⇘",
- "searr;": "↘",
- "setmn;": "∖",
- "sharp;": "♯",
- "Sigma;": "Σ",
- "sigma;": "σ",
- "simeq;": "≃",
- "simgE;": "⪠",
- "simlE;": "⪟",
- "simne;": "≆",
- "slarr;": "←",
- "smile;": "⌣",
- "smtes;": "⪬︀",
- "sqcap;": "⊓",
- "sqcup;": "⊔",
- "sqsub;": "⊏",
- "sqsup;": "⊐",
- "srarr;": "→",
- "starf;": "★",
- "strns;": "¯",
- "subnE;": "⫋",
- "subne;": "⊊",
- "supnE;": "⫌",
- "supne;": "⊋",
- "swArr;": "⇙",
- "swarr;": "↙",
- "szlig;": "ß",
- "Theta;": "Θ",
- "theta;": "θ",
- "thkap;": "≈",
- "THORN;": "Þ",
- "thorn;": "þ",
- "Tilde;": "∼",
- "tilde;": "˜",
- "times;": "×",
- "TRADE;": "™",
- "trade;": "™",
- "trisb;": "⧍",
- "TSHcy;": "Ћ",
- "tshcy;": "ћ",
- "twixt;": "≬",
- Uacute: "Ú",
- uacute: "ú",
- "Ubrcy;": "Ў",
- "ubrcy;": "ў",
- "Ucirc;": "Û",
- "ucirc;": "û",
- "udarr;": "⇅",
- "udhar;": "⥮",
- Ugrave: "Ù",
- ugrave: "ù",
- "uharl;": "↿",
- "uharr;": "↾",
- "uhblk;": "▀",
- "ultri;": "◸",
- "Umacr;": "Ū",
- "umacr;": "ū",
- "Union;": "⋃",
- "Uogon;": "Ų",
- "uogon;": "ų",
- "uplus;": "⊎",
- "upsih;": "ϒ",
- "UpTee;": "⊥",
- "Uring;": "Ů",
- "uring;": "ů",
- "urtri;": "◹",
- "utdot;": "⋰",
- "utrif;": "▴",
- "uuarr;": "⇈",
- "varpi;": "ϖ",
- "vBarv;": "⫩",
- "VDash;": "⊫",
- "Vdash;": "⊩",
- "vDash;": "⊨",
- "vdash;": "⊢",
- "veeeq;": "≚",
- "vltri;": "⊲",
- "vnsub;": "⊂⃒",
- "vnsup;": "⊃⃒",
- "vprop;": "∝",
- "vrtri;": "⊳",
- "Wcirc;": "Ŵ",
- "wcirc;": "ŵ",
- "Wedge;": "⋀",
- "wedge;": "∧",
- "xcirc;": "◯",
- "xdtri;": "▽",
- "xhArr;": "⟺",
- "xharr;": "⟷",
- "xlArr;": "⟸",
- "xlarr;": "⟵",
- "xodot;": "⨀",
- "xrArr;": "⟹",
- "xrarr;": "⟶",
- "xutri;": "△",
- Yacute: "Ý",
- yacute: "ý",
- "Ycirc;": "Ŷ",
- "ycirc;": "ŷ",
- "Aacute;": "Á",
- "aacute;": "á",
- "Abreve;": "Ă",
- "abreve;": "ă",
- "Agrave;": "À",
- "agrave;": "à",
- "andand;": "⩕",
- "angmsd;": "∡",
- "angsph;": "∢",
- "apacir;": "⩯",
- "approx;": "≈",
- "Assign;": "≔",
- "Atilde;": "Ã",
- "atilde;": "ã",
- "barvee;": "⊽",
- "Barwed;": "⌆",
- "barwed;": "⌅",
- "becaus;": "∵",
- "bernou;": "ℬ",
- "bigcap;": "⋂",
- "bigcup;": "⋃",
- "bigvee;": "⋁",
- "bkarow;": "⤍",
- "bottom;": "⊥",
- "bowtie;": "⋈",
- "boxbox;": "⧉",
- "bprime;": "‵",
- "brvbar;": "¦",
- "bullet;": "•",
- "Bumpeq;": "≎",
- "bumpeq;": "≏",
- "Cacute;": "Ć",
- "cacute;": "ć",
- "capand;": "⩄",
- "capcap;": "⩋",
- "capcup;": "⩇",
- "capdot;": "⩀",
- "Ccaron;": "Č",
- "ccaron;": "č",
- "Ccedil;": "Ç",
- "ccedil;": "ç",
- "circeq;": "≗",
- "cirmid;": "⫯",
- "Colone;": "⩴",
- "colone;": "≔",
- "commat;": "@",
- "compfn;": "∘",
- "Conint;": "∯",
- "conint;": "∮",
- "coprod;": "∐",
- "copysr;": "℗",
- "cularr;": "↶",
- "CupCap;": "≍",
- "cupcap;": "⩆",
- "cupcup;": "⩊",
- "cupdot;": "⊍",
- "curarr;": "↷",
- "curren;": "¤",
- "cylcty;": "⌭",
- "Dagger;": "‡",
- "dagger;": "†",
- "daleth;": "ℸ",
- "Dcaron;": "Ď",
- "dcaron;": "ď",
- "dfisht;": "⥿",
- "divide;": "÷",
- "divonx;": "⋇",
- "dlcorn;": "⌞",
- "dlcrop;": "⌍",
- "dollar;": "$",
- "DotDot;": "⃜",
- "drcorn;": "⌟",
- "drcrop;": "⌌",
- "Dstrok;": "Đ",
- "dstrok;": "đ",
- "Eacute;": "É",
- "eacute;": "é",
- "easter;": "⩮",
- "Ecaron;": "Ě",
- "ecaron;": "ě",
- "ecolon;": "≕",
- "Egrave;": "È",
- "egrave;": "è",
- "egsdot;": "⪘",
- "elsdot;": "⪗",
- "emptyv;": "∅",
- "emsp13;": " ",
- "emsp14;": " ",
- "eparsl;": "⧣",
- "eqcirc;": "≖",
- "equals;": "=",
- "equest;": "≟",
- "Exists;": "∃",
- "female;": "♀",
- "ffilig;": "ffi",
- "ffllig;": "ffl",
- "ForAll;": "∀",
- "forall;": "∀",
- "frac12;": "½",
- "frac13;": "⅓",
- "frac14;": "¼",
- "frac15;": "⅕",
- "frac16;": "⅙",
- "frac18;": "⅛",
- "frac23;": "⅔",
- "frac25;": "⅖",
- "frac34;": "¾",
- "frac35;": "⅗",
- "frac38;": "⅜",
- "frac45;": "⅘",
- "frac56;": "⅚",
- "frac58;": "⅝",
- "frac78;": "⅞",
- "gacute;": "ǵ",
- "Gammad;": "Ϝ",
- "gammad;": "ϝ",
- "Gbreve;": "Ğ",
- "gbreve;": "ğ",
- "Gcedil;": "Ģ",
- "gesdot;": "⪀",
- "gesles;": "⪔",
- "gtlPar;": "⦕",
- "gtrarr;": "⥸",
- "gtrdot;": "⋗",
- "gtrsim;": "≳",
- "hairsp;": " ",
- "hamilt;": "ℋ",
- "HARDcy;": "Ъ",
- "hardcy;": "ъ",
- "hearts;": "♥",
- "hellip;": "…",
- "hercon;": "⊹",
- "homtht;": "∻",
- "horbar;": "―",
- "hslash;": "ℏ",
- "Hstrok;": "Ħ",
- "hstrok;": "ħ",
- "hybull;": "⁃",
- "hyphen;": "‐",
- "Iacute;": "Í",
- "iacute;": "í",
- "Igrave;": "Ì",
- "igrave;": "ì",
- "iiiint;": "⨌",
- "iinfin;": "⧜",
- "incare;": "℅",
- "inodot;": "ı",
- "intcal;": "⊺",
- "iquest;": "¿",
- "isinsv;": "⋳",
- "Itilde;": "Ĩ",
- "itilde;": "ĩ",
- "Jsercy;": "Ј",
- "jsercy;": "ј",
- "kappav;": "ϰ",
- "Kcedil;": "Ķ",
- "kcedil;": "ķ",
- "kgreen;": "ĸ",
- "Lacute;": "Ĺ",
- "lacute;": "ĺ",
- "lagran;": "ℒ",
- "Lambda;": "Λ",
- "lambda;": "λ",
- "langle;": "⟨",
- "larrfs;": "⤝",
- "larrhk;": "↩",
- "larrlp;": "↫",
- "larrpl;": "⤹",
- "larrtl;": "↢",
- "lAtail;": "⤛",
- "latail;": "⤙",
- "lbrace;": "{",
- "lbrack;": "[",
- "Lcaron;": "Ľ",
- "lcaron;": "ľ",
- "Lcedil;": "Ļ",
- "lcedil;": "ļ",
- "ldquor;": "„",
- "lesdot;": "⩿",
- "lesges;": "⪓",
- "lfisht;": "⥼",
- "lfloor;": "⌊",
- "lharul;": "⥪",
- "llhard;": "⥫",
- "Lmidot;": "Ŀ",
- "lmidot;": "ŀ",
- "lmoust;": "⎰",
- "loplus;": "⨭",
- "lowast;": "∗",
- "lowbar;": "_",
- "lparlt;": "⦓",
- "lrhard;": "⥭",
- "lsaquo;": "‹",
- "lsquor;": "‚",
- "Lstrok;": "Ł",
- "lstrok;": "ł",
- "lthree;": "⋋",
- "ltimes;": "⋉",
- "ltlarr;": "⥶",
- "ltrPar;": "⦖",
- "mapsto;": "↦",
- "marker;": "▮",
- "mcomma;": "⨩",
- "midast;": "*",
- "midcir;": "⫰",
- "middot;": "·",
- "minusb;": "⊟",
- "minusd;": "∸",
- "mnplus;": "∓",
- "models;": "⊧",
- "mstpos;": "∾",
- "Nacute;": "Ń",
- "nacute;": "ń",
- "nbumpe;": "≏̸",
- "Ncaron;": "Ň",
- "ncaron;": "ň",
- "Ncedil;": "Ņ",
- "ncedil;": "ņ",
- "nearhk;": "⤤",
- "nequiv;": "≢",
- "nesear;": "⤨",
- "nexist;": "∄",
- "nltrie;": "⋬",
- "notinE;": "⋹̸",
- "nparsl;": "⫽⃥",
- "nprcue;": "⋠",
- "nrarrc;": "⤳̸",
- "nrarrw;": "↝̸",
- "nrtrie;": "⋭",
- "nsccue;": "⋡",
- "nsimeq;": "≄",
- "Ntilde;": "Ñ",
- "ntilde;": "ñ",
- "numero;": "№",
- "nVDash;": "⊯",
- "nVdash;": "⊮",
- "nvDash;": "⊭",
- "nvdash;": "⊬",
- "nvHarr;": "⤄",
- "nvlArr;": "⤂",
- "nvrArr;": "⤃",
- "nwarhk;": "⤣",
- "nwnear;": "⤧",
- "Oacute;": "Ó",
- "oacute;": "ó",
- "Odblac;": "Ő",
- "odblac;": "ő",
- "odsold;": "⦼",
- "Ograve;": "Ò",
- "ograve;": "ò",
- "ominus;": "⊖",
- "origof;": "⊶",
- "Oslash;": "Ø",
- "oslash;": "ø",
- "Otilde;": "Õ",
- "otilde;": "õ",
- "Otimes;": "⨷",
- "otimes;": "⊗",
- "parsim;": "⫳",
- "percnt;": "%",
- "period;": ".",
- "permil;": "‰",
- "phmmat;": "ℳ",
- "planck;": "ℏ",
- "plankv;": "ℏ",
- "plusdo;": "∔",
- "plusdu;": "⨥",
- "plusmn;": "±",
- "preceq;": "⪯",
- "primes;": "ℙ",
- "prnsim;": "⋨",
- "propto;": "∝",
- "prurel;": "⊰",
- "puncsp;": " ",
- "qprime;": "⁗",
- "Racute;": "Ŕ",
- "racute;": "ŕ",
- "rangle;": "⟩",
- "rarrap;": "⥵",
- "rarrfs;": "⤞",
- "rarrhk;": "↪",
- "rarrlp;": "↬",
- "rarrpl;": "⥅",
- "Rarrtl;": "⤖",
- "rarrtl;": "↣",
- "rAtail;": "⤜",
- "ratail;": "⤚",
- "rbrace;": "}",
- "rbrack;": "]",
- "Rcaron;": "Ř",
- "rcaron;": "ř",
- "Rcedil;": "Ŗ",
- "rcedil;": "ŗ",
- "rdquor;": "”",
- "rfisht;": "⥽",
- "rfloor;": "⌋",
- "rharul;": "⥬",
- "rmoust;": "⎱",
- "roplus;": "⨮",
- "rpargt;": "⦔",
- "rsaquo;": "›",
- "rsquor;": "’",
- "rthree;": "⋌",
- "rtimes;": "⋊",
- "Sacute;": "Ś",
- "sacute;": "ś",
- "Scaron;": "Š",
- "scaron;": "š",
- "Scedil;": "Ş",
- "scedil;": "ş",
- "scnsim;": "⋩",
- "searhk;": "⤥",
- "seswar;": "⤩",
- "sfrown;": "⌢",
- "SHCHcy;": "Щ",
- "shchcy;": "щ",
- "sigmaf;": "ς",
- "sigmav;": "ς",
- "simdot;": "⩪",
- "smashp;": "⨳",
- "SOFTcy;": "Ь",
- "softcy;": "ь",
- "solbar;": "⌿",
- "spades;": "♠",
- "sqcaps;": "⊓︀",
- "sqcups;": "⊔︀",
- "sqsube;": "⊑",
- "sqsupe;": "⊒",
- "Square;": "□",
- "square;": "□",
- "squarf;": "▪",
- "ssetmn;": "∖",
- "ssmile;": "⌣",
- "sstarf;": "⋆",
- "subdot;": "⪽",
- "Subset;": "⋐",
- "subset;": "⊂",
- "subsim;": "⫇",
- "subsub;": "⫕",
- "subsup;": "⫓",
- "succeq;": "⪰",
- "supdot;": "⪾",
- "Supset;": "⋑",
- "supset;": "⊃",
- "supsim;": "⫈",
- "supsub;": "⫔",
- "supsup;": "⫖",
- "swarhk;": "⤦",
- "swnwar;": "⤪",
- "target;": "⌖",
- "Tcaron;": "Ť",
- "tcaron;": "ť",
- "Tcedil;": "Ţ",
- "tcedil;": "ţ",
- "telrec;": "⌕",
- "there4;": "∴",
- "thetav;": "ϑ",
- "thinsp;": " ",
- "thksim;": "∼",
- "timesb;": "⊠",
- "timesd;": "⨰",
- "topbot;": "⌶",
- "topcir;": "⫱",
- "tprime;": "‴",
- "tridot;": "◬",
- "Tstrok;": "Ŧ",
- "tstrok;": "ŧ",
- "Uacute;": "Ú",
- "uacute;": "ú",
- "Ubreve;": "Ŭ",
- "ubreve;": "ŭ",
- "Udblac;": "Ű",
- "udblac;": "ű",
- "ufisht;": "⥾",
- "Ugrave;": "Ù",
- "ugrave;": "ù",
- "ulcorn;": "⌜",
- "ulcrop;": "⌏",
- "urcorn;": "⌝",
- "urcrop;": "⌎",
- "Utilde;": "Ũ",
- "utilde;": "ũ",
- "vangrt;": "⦜",
- "varphi;": "ϕ",
- "varrho;": "ϱ",
- "Vdashl;": "⫦",
- "veebar;": "⊻",
- "vellip;": "⋮",
- "Verbar;": "‖",
- "verbar;": "|",
- "vsubnE;": "⫋︀",
- "vsubne;": "⊊︀",
- "vsupnE;": "⫌︀",
- "vsupne;": "⊋︀",
- "Vvdash;": "⊪",
- "wedbar;": "⩟",
- "wedgeq;": "≙",
- "weierp;": "℘",
- "wreath;": "≀",
- "xoplus;": "⨁",
- "xotime;": "⨂",
- "xsqcup;": "⨆",
- "xuplus;": "⨄",
- "xwedge;": "⋀",
- "Yacute;": "Ý",
- "yacute;": "ý",
- "Zacute;": "Ź",
- "zacute;": "ź",
- "Zcaron;": "Ž",
- "zcaron;": "ž",
- "zeetrf;": "ℨ",
- "alefsym;": "ℵ",
- "angrtvb;": "⊾",
- "angzarr;": "⍼",
- "asympeq;": "≍",
- "backsim;": "∽",
- "Because;": "∵",
- "because;": "∵",
- "bemptyv;": "⦰",
- "between;": "≬",
- "bigcirc;": "◯",
- "bigodot;": "⨀",
- "bigstar;": "★",
- "bnequiv;": "≡⃥",
- "boxplus;": "⊞",
- "Cayleys;": "ℭ",
- "Cconint;": "∰",
- "ccupssm;": "⩐",
- "Cedilla;": "¸",
- "cemptyv;": "⦲",
- "cirscir;": "⧂",
- "coloneq;": "≔",
- "congdot;": "⩭",
- "cudarrl;": "⤸",
- "cudarrr;": "⤵",
- "cularrp;": "⤽",
- "curarrm;": "⤼",
- "dbkarow;": "⤏",
- "ddagger;": "‡",
- "ddotseq;": "⩷",
- "demptyv;": "⦱",
- "Diamond;": "⋄",
- "diamond;": "⋄",
- "digamma;": "ϝ",
- "dotplus;": "∔",
- "DownTee;": "⊤",
- "dwangle;": "⦦",
- "Element;": "∈",
- "Epsilon;": "Ε",
- "epsilon;": "ε",
- "eqcolon;": "≕",
- "equivDD;": "⩸",
- "gesdoto;": "⪂",
- "gtquest;": "⩼",
- "gtrless;": "≷",
- "harrcir;": "⥈",
- "Implies;": "⇒",
- "intprod;": "⨼",
- "isindot;": "⋵",
- "larrbfs;": "⤟",
- "larrsim;": "⥳",
- "lbrksld;": "⦏",
- "lbrkslu;": "⦍",
- "ldrdhar;": "⥧",
- "LeftTee;": "⊣",
- "lesdoto;": "⪁",
- "lessdot;": "⋖",
- "lessgtr;": "≶",
- "lesssim;": "≲",
- "lotimes;": "⨴",
- "lozenge;": "◊",
- "ltquest;": "⩻",
- "luruhar;": "⥦",
- "maltese;": "✠",
- "minusdu;": "⨪",
- "napprox;": "≉",
- "natural;": "♮",
- "nearrow;": "↗",
- "NewLine;": "\n",
- "nexists;": "∄",
- "NoBreak;": "",
- "notinva;": "∉",
- "notinvb;": "⋷",
- "notinvc;": "⋶",
- "NotLess;": "≮",
- "notniva;": "∌",
- "notnivb;": "⋾",
- "notnivc;": "⋽",
- "npolint;": "⨔",
- "npreceq;": "⪯̸",
- "nsqsube;": "⋢",
- "nsqsupe;": "⋣",
- "nsubset;": "⊂⃒",
- "nsucceq;": "⪰̸",
- "nsupset;": "⊃⃒",
- "nvinfin;": "⧞",
- "nvltrie;": "⊴⃒",
- "nvrtrie;": "⊵⃒",
- "nwarrow;": "↖",
- "olcross;": "⦻",
- "Omicron;": "Ο",
- "omicron;": "ο",
- "orderof;": "ℴ",
- "orslope;": "⩗",
- "OverBar;": "‾",
- "pertenk;": "‱",
- "planckh;": "ℎ",
- "pluscir;": "⨢",
- "plussim;": "⨦",
- "plustwo;": "⨧",
- "precsim;": "≾",
- "Product;": "∏",
- "quatint;": "⨖",
- "questeq;": "≟",
- "rarrbfs;": "⤠",
- "rarrsim;": "⥴",
- "rbrksld;": "⦎",
- "rbrkslu;": "⦐",
- "rdldhar;": "⥩",
- "realine;": "ℛ",
- "rotimes;": "⨵",
- "ruluhar;": "⥨",
- "searrow;": "↘",
- "simplus;": "⨤",
- "simrarr;": "⥲",
- "subedot;": "⫃",
- "submult;": "⫁",
- "subplus;": "⪿",
- "subrarr;": "⥹",
- "succsim;": "≿",
- "supdsub;": "⫘",
- "supedot;": "⫄",
- "suphsol;": "⟉",
- "suphsub;": "⫗",
- "suplarr;": "⥻",
- "supmult;": "⫂",
- "supplus;": "⫀",
- "swarrow;": "↙",
- "topfork;": "⫚",
- "triplus;": "⨹",
- "tritime;": "⨻",
- "UpArrow;": "↑",
- "Uparrow;": "⇑",
- "uparrow;": "↑",
- "Upsilon;": "Υ",
- "upsilon;": "υ",
- "uwangle;": "⦧",
- "vzigzag;": "⦚",
- "zigrarr;": "⇝",
- "andslope;": "⩘",
- "angmsdaa;": "⦨",
- "angmsdab;": "⦩",
- "angmsdac;": "⦪",
- "angmsdad;": "⦫",
- "angmsdae;": "⦬",
- "angmsdaf;": "⦭",
- "angmsdag;": "⦮",
- "angmsdah;": "⦯",
- "angrtvbd;": "⦝",
- "approxeq;": "≊",
- "awconint;": "∳",
- "backcong;": "≌",
- "barwedge;": "⌅",
- "bbrktbrk;": "⎶",
- "bigoplus;": "⨁",
- "bigsqcup;": "⨆",
- "biguplus;": "⨄",
- "bigwedge;": "⋀",
- "boxminus;": "⊟",
- "boxtimes;": "⊠",
- "bsolhsub;": "⟈",
- "capbrcup;": "⩉",
- "circledR;": "®",
- "circledS;": "Ⓢ",
- "cirfnint;": "⨐",
- "clubsuit;": "♣",
- "cupbrcap;": "⩈",
- "curlyvee;": "⋎",
- "cwconint;": "∲",
- "DDotrahd;": "⤑",
- "doteqdot;": "≑",
- "DotEqual;": "≐",
- "dotminus;": "∸",
- "drbkarow;": "⤐",
- "dzigrarr;": "⟿",
- "elinters;": "⏧",
- "emptyset;": "∅",
- "eqvparsl;": "⧥",
- "fpartint;": "⨍",
- "geqslant;": "⩾",
- "gesdotol;": "⪄",
- "gnapprox;": "⪊",
- "hksearow;": "⤥",
- "hkswarow;": "⤦",
- "imagline;": "ℐ",
- "imagpart;": "ℑ",
- "infintie;": "⧝",
- "integers;": "ℤ",
- "Integral;": "∫",
- "intercal;": "⊺",
- "intlarhk;": "⨗",
- "laemptyv;": "⦴",
- "ldrushar;": "⥋",
- "leqslant;": "⩽",
- "lesdotor;": "⪃",
- "LessLess;": "⪡",
- "llcorner;": "⌞",
- "lnapprox;": "⪉",
- "lrcorner;": "⌟",
- "lurdshar;": "⥊",
- "mapstoup;": "↥",
- "multimap;": "⊸",
- "naturals;": "ℕ",
- "ncongdot;": "⩭̸",
- "NotEqual;": "≠",
- "notindot;": "⋵̸",
- "NotTilde;": "≁",
- "otimesas;": "⨶",
- "parallel;": "∥",
- "PartialD;": "∂",
- "plusacir;": "⨣",
- "pointint;": "⨕",
- "Precedes;": "≺",
- "precneqq;": "⪵",
- "precnsim;": "⋨",
- "profalar;": "⌮",
- "profline;": "⌒",
- "profsurf;": "⌓",
- "raemptyv;": "⦳",
- "realpart;": "ℜ",
- "RightTee;": "⊢",
- "rppolint;": "⨒",
- "rtriltri;": "⧎",
- "scpolint;": "⨓",
- "setminus;": "∖",
- "shortmid;": "∣",
- "smeparsl;": "⧤",
- "sqsubset;": "⊏",
- "sqsupset;": "⊐",
- "subseteq;": "⊆",
- "Succeeds;": "≻",
- "succneqq;": "⪶",
- "succnsim;": "⋩",
- "SuchThat;": "∋",
- "Superset;": "⊃",
- "supseteq;": "⊇",
- "thetasym;": "ϑ",
- "thicksim;": "∼",
- "timesbar;": "⨱",
- "triangle;": "▵",
- "triminus;": "⨺",
- "trpezium;": "⏢",
- "Uarrocir;": "⥉",
- "ulcorner;": "⌜",
- "UnderBar;": "_",
- "urcorner;": "⌝",
- "varkappa;": "ϰ",
- "varsigma;": "ς",
- "vartheta;": "ϑ",
- "backprime;": "‵",
- "backsimeq;": "⋍",
- "Backslash;": "∖",
- "bigotimes;": "⨂",
- "CenterDot;": "·",
- "centerdot;": "·",
- "checkmark;": "✓",
- "CircleDot;": "⊙",
- "complexes;": "ℂ",
- "Congruent;": "≡",
- "Coproduct;": "∐",
- "dotsquare;": "⊡",
- "DoubleDot;": "¨",
- "DownArrow;": "↓",
- "Downarrow;": "⇓",
- "downarrow;": "↓",
- "DownBreve;": "̑",
- "gtrapprox;": "⪆",
- "gtreqless;": "⋛",
- "gvertneqq;": "≩︀",
- "heartsuit;": "♥",
- "HumpEqual;": "≏",
- "LeftArrow;": "←",
- "Leftarrow;": "⇐",
- "leftarrow;": "←",
- "LeftFloor;": "⌊",
- "lesseqgtr;": "⋚",
- "LessTilde;": "≲",
- "lvertneqq;": "≨︀",
- "Mellintrf;": "ℳ",
- "MinusPlus;": "∓",
- "ngeqslant;": "⩾̸",
- "nleqslant;": "⩽̸",
- "NotCupCap;": "≭",
- "NotExists;": "∄",
- "NotSubset;": "⊂⃒",
- "nparallel;": "∦",
- "nshortmid;": "∤",
- "nsubseteq;": "⊈",
- "nsupseteq;": "⊉",
- "OverBrace;": "⏞",
- "pitchfork;": "⋔",
- "PlusMinus;": "±",
- "rationals;": "ℚ",
- "spadesuit;": "♠",
- "subseteqq;": "⫅",
- "subsetneq;": "⊊",
- "supseteqq;": "⫆",
- "supsetneq;": "⊋",
- "Therefore;": "∴",
- "therefore;": "∴",
- "ThinSpace;": " ",
- "triangleq;": "≜",
- "TripleDot;": "⃛",
- "UnionPlus;": "⊎",
- "varpropto;": "∝",
- "Bernoullis;": "ℬ",
- "circledast;": "⊛",
- "CirclePlus;": "⊕",
- "complement;": "∁",
- "curlywedge;": "⋏",
- "eqslantgtr;": "⪖",
- "EqualTilde;": "≂",
- "Fouriertrf;": "ℱ",
- "gtreqqless;": "⪌",
- "ImaginaryI;": "ⅈ",
- "Laplacetrf;": "ℒ",
- "LeftVector;": "↼",
- "lessapprox;": "⪅",
- "lesseqqgtr;": "⪋",
- "Lleftarrow;": "⇚",
- "lmoustache;": "⎰",
- "longmapsto;": "⟼",
- "mapstodown;": "↧",
- "mapstoleft;": "↤",
- "nLeftarrow;": "⇍",
- "nleftarrow;": "↚",
- "NotElement;": "∉",
- "NotGreater;": "≯",
- "nsubseteqq;": "⫅̸",
- "nsupseteqq;": "⫆̸",
- "precapprox;": "⪷",
- "Proportion;": "∷",
- "RightArrow;": "→",
- "Rightarrow;": "⇒",
- "rightarrow;": "→",
- "RightFloor;": "⌋",
- "rmoustache;": "⎱",
- "sqsubseteq;": "⊑",
- "sqsupseteq;": "⊒",
- "subsetneqq;": "⫋",
- "succapprox;": "⪸",
- "supsetneqq;": "⫌",
- "ThickSpace;": " ",
- "TildeEqual;": "≃",
- "TildeTilde;": "≈",
- "UnderBrace;": "⏟",
- "UpArrowBar;": "⤒",
- "UpTeeArrow;": "↥",
- "upuparrows;": "⇈",
- "varepsilon;": "ϵ",
- "varnothing;": "∅",
- "backepsilon;": "϶",
- "blacksquare;": "▪",
- "circledcirc;": "⊚",
- "circleddash;": "⊝",
- "CircleMinus;": "⊖",
- "CircleTimes;": "⊗",
- "curlyeqprec;": "⋞",
- "curlyeqsucc;": "⋟",
- "diamondsuit;": "♦",
- "eqslantless;": "⪕",
- "Equilibrium;": "⇌",
- "expectation;": "ℰ",
- "GreaterLess;": "≷",
- "LeftCeiling;": "⌈",
- "LessGreater;": "≶",
- "MediumSpace;": " ",
- "NotLessLess;": "≪̸",
- "NotPrecedes;": "⊀",
- "NotSucceeds;": "⊁",
- "NotSuperset;": "⊃⃒",
- "nRightarrow;": "⇏",
- "nrightarrow;": "↛",
- "OverBracket;": "⎴",
- "preccurlyeq;": "≼",
- "precnapprox;": "⪹",
- "quaternions;": "ℍ",
- "RightVector;": "⇀",
- "Rrightarrow;": "⇛",
- "RuleDelayed;": "⧴",
- "SmallCircle;": "∘",
- "SquareUnion;": "⊔",
- "straightphi;": "ϕ",
- "SubsetEqual;": "⊆",
- "succcurlyeq;": "≽",
- "succnapprox;": "⪺",
- "thickapprox;": "≈",
- "UpDownArrow;": "↕",
- "Updownarrow;": "⇕",
- "updownarrow;": "↕",
- "VerticalBar;": "∣",
- "blacklozenge;": "⧫",
- "DownArrowBar;": "⤓",
- "DownTeeArrow;": "↧",
- "ExponentialE;": "ⅇ",
- "exponentiale;": "ⅇ",
- "GreaterEqual;": "≥",
- "GreaterTilde;": "≳",
- "HilbertSpace;": "ℋ",
- "HumpDownHump;": "≎",
- "Intersection;": "⋂",
- "LeftArrowBar;": "⇤",
- "LeftTeeArrow;": "↤",
- "LeftTriangle;": "⊲",
- "LeftUpVector;": "↿",
- "NotCongruent;": "≢",
- "NotHumpEqual;": "≏̸",
- "NotLessEqual;": "≰",
- "NotLessTilde;": "≴",
- "Proportional;": "∝",
- "RightCeiling;": "⌉",
- "risingdotseq;": "≓",
- "RoundImplies;": "⥰",
- "ShortUpArrow;": "↑",
- "SquareSubset;": "⊏",
- "triangledown;": "▿",
- "triangleleft;": "◃",
- "UnderBracket;": "⎵",
- "varsubsetneq;": "⊊︀",
- "varsupsetneq;": "⊋︀",
- "VerticalLine;": "|",
- "ApplyFunction;": "",
- "bigtriangleup;": "△",
- "blacktriangle;": "▴",
- "DifferentialD;": "ⅆ",
- "divideontimes;": "⋇",
- "DoubleLeftTee;": "⫤",
- "DoubleUpArrow;": "⇑",
- "fallingdotseq;": "≒",
- "hookleftarrow;": "↩",
- "leftarrowtail;": "↢",
- "leftharpoonup;": "↼",
- "LeftTeeVector;": "⥚",
- "LeftVectorBar;": "⥒",
- "LessFullEqual;": "≦",
- "LongLeftArrow;": "⟵",
- "Longleftarrow;": "⟸",
- "longleftarrow;": "⟵",
- "looparrowleft;": "↫",
- "measuredangle;": "∡",
- "NotEqualTilde;": "≂̸",
- "NotTildeEqual;": "≄",
- "NotTildeTilde;": "≉",
- "ntriangleleft;": "⋪",
- "Poincareplane;": "ℌ",
- "PrecedesEqual;": "⪯",
- "PrecedesTilde;": "≾",
- "RightArrowBar;": "⇥",
- "RightTeeArrow;": "↦",
- "RightTriangle;": "⊳",
- "RightUpVector;": "↾",
- "shortparallel;": "∥",
- "smallsetminus;": "∖",
- "SucceedsEqual;": "⪰",
- "SucceedsTilde;": "≿",
- "SupersetEqual;": "⊇",
- "triangleright;": "▹",
- "UpEquilibrium;": "⥮",
- "upharpoonleft;": "↿",
- "varsubsetneqq;": "⫋︀",
- "varsupsetneqq;": "⫌︀",
- "VerticalTilde;": "≀",
- "VeryThinSpace;": " ",
- "curvearrowleft;": "↶",
- "DiacriticalDot;": "˙",
- "doublebarwedge;": "⌆",
- "DoubleRightTee;": "⊨",
- "downdownarrows;": "⇊",
- "DownLeftVector;": "↽",
- "GreaterGreater;": "⪢",
- "hookrightarrow;": "↪",
- "HorizontalLine;": "─",
- "InvisibleComma;": "",
- "InvisibleTimes;": "",
- "LeftDownVector;": "⇃",
- "leftleftarrows;": "⇇",
- "LeftRightArrow;": "↔",
- "Leftrightarrow;": "⇔",
- "leftrightarrow;": "↔",
- "leftthreetimes;": "⋋",
- "LessSlantEqual;": "⩽",
- "LongRightArrow;": "⟶",
- "Longrightarrow;": "⟹",
- "longrightarrow;": "⟶",
- "looparrowright;": "↬",
- "LowerLeftArrow;": "↙",
- "NestedLessLess;": "≪",
- "NotGreaterLess;": "≹",
- "NotLessGreater;": "≸",
- "NotSubsetEqual;": "⊈",
- "NotVerticalBar;": "∤",
- "nshortparallel;": "∦",
- "ntriangleright;": "⋫",
- "OpenCurlyQuote;": "‘",
- "ReverseElement;": "∋",
- "rightarrowtail;": "↣",
- "rightharpoonup;": "⇀",
- "RightTeeVector;": "⥛",
- "RightVectorBar;": "⥓",
- "ShortDownArrow;": "↓",
- "ShortLeftArrow;": "←",
- "SquareSuperset;": "⊐",
- "TildeFullEqual;": "≅",
- "trianglelefteq;": "⊴",
- "upharpoonright;": "↾",
- "UpperLeftArrow;": "↖",
- "ZeroWidthSpace;": "",
- "bigtriangledown;": "▽",
- "circlearrowleft;": "↺",
- "CloseCurlyQuote;": "’",
- "ContourIntegral;": "∮",
- "curvearrowright;": "↷",
- "DoubleDownArrow;": "⇓",
- "DoubleLeftArrow;": "⇐",
- "downharpoonleft;": "⇃",
- "DownRightVector;": "⇁",
- "leftharpoondown;": "↽",
- "leftrightarrows;": "⇆",
- "LeftRightVector;": "⥎",
- "LeftTriangleBar;": "⧏",
- "LeftUpTeeVector;": "⥠",
- "LeftUpVectorBar;": "⥘",
- "LowerRightArrow;": "↘",
- "nLeftrightarrow;": "⇎",
- "nleftrightarrow;": "↮",
- "NotGreaterEqual;": "≱",
- "NotGreaterTilde;": "≵",
- "NotHumpDownHump;": "≎̸",
- "NotLeftTriangle;": "⋪",
- "NotSquareSubset;": "⊏̸",
- "ntrianglelefteq;": "⋬",
- "OverParenthesis;": "⏜",
- "RightDownVector;": "⇂",
- "rightleftarrows;": "⇄",
- "rightsquigarrow;": "↝",
- "rightthreetimes;": "⋌",
- "ShortRightArrow;": "→",
- "straightepsilon;": "ϵ",
- "trianglerighteq;": "⊵",
- "UpperRightArrow;": "↗",
- "vartriangleleft;": "⊲",
- "circlearrowright;": "↻",
- "DiacriticalAcute;": "´",
- "DiacriticalGrave;": "`",
- "DiacriticalTilde;": "˜",
- "DoubleRightArrow;": "⇒",
- "DownArrowUpArrow;": "⇵",
- "downharpoonright;": "⇂",
- "EmptySmallSquare;": "◻",
- "GreaterEqualLess;": "⋛",
- "GreaterFullEqual;": "≧",
- "LeftAngleBracket;": "⟨",
- "LeftUpDownVector;": "⥑",
- "LessEqualGreater;": "⋚",
- "NonBreakingSpace;": " ",
- "NotPrecedesEqual;": "⪯̸",
- "NotRightTriangle;": "⋫",
- "NotSucceedsEqual;": "⪰̸",
- "NotSucceedsTilde;": "≿̸",
- "NotSupersetEqual;": "⊉",
- "ntrianglerighteq;": "⋭",
- "rightharpoondown;": "⇁",
- "rightrightarrows;": "⇉",
- "RightTriangleBar;": "⧐",
- "RightUpTeeVector;": "⥜",
- "RightUpVectorBar;": "⥔",
- "twoheadleftarrow;": "↞",
- "UnderParenthesis;": "⏝",
- "UpArrowDownArrow;": "⇅",
- "vartriangleright;": "⊳",
- "blacktriangledown;": "▾",
- "blacktriangleleft;": "◂",
- "DoubleUpDownArrow;": "⇕",
- "DoubleVerticalBar;": "∥",
- "DownLeftTeeVector;": "⥞",
- "DownLeftVectorBar;": "⥖",
- "FilledSmallSquare;": "◼",
- "GreaterSlantEqual;": "⩾",
- "LeftDoubleBracket;": "⟦",
- "LeftDownTeeVector;": "⥡",
- "LeftDownVectorBar;": "⥙",
- "leftrightharpoons;": "⇋",
- "LeftTriangleEqual;": "⊴",
- "NegativeThinSpace;": "",
- "NotGreaterGreater;": "≫̸",
- "NotLessSlantEqual;": "⩽̸",
- "NotNestedLessLess;": "⪡̸",
- "NotReverseElement;": "∌",
- "NotSquareSuperset;": "⊐̸",
- "NotTildeFullEqual;": "≇",
- "RightAngleBracket;": "⟩",
- "rightleftharpoons;": "⇌",
- "RightUpDownVector;": "⥏",
- "SquareSubsetEqual;": "⊑",
- "twoheadrightarrow;": "↠",
- "VerticalSeparator;": "❘",
- "blacktriangleright;": "▸",
- "DownRightTeeVector;": "⥟",
- "DownRightVectorBar;": "⥗",
- "LongLeftRightArrow;": "⟷",
- "Longleftrightarrow;": "⟺",
- "longleftrightarrow;": "⟷",
- "NegativeThickSpace;": "",
- "NotLeftTriangleBar;": "⧏̸",
- "PrecedesSlantEqual;": "≼",
- "ReverseEquilibrium;": "⇋",
- "RightDoubleBracket;": "⟧",
- "RightDownTeeVector;": "⥝",
- "RightDownVectorBar;": "⥕",
- "RightTriangleEqual;": "⊵",
- "SquareIntersection;": "⊓",
- "SucceedsSlantEqual;": "≽",
- "DoubleLongLeftArrow;": "⟸",
- "DownLeftRightVector;": "⥐",
- "LeftArrowRightArrow;": "⇆",
- "leftrightsquigarrow;": "↭",
- "NegativeMediumSpace;": "",
- "NotGreaterFullEqual;": "≧̸",
- "NotRightTriangleBar;": "⧐̸",
- "RightArrowLeftArrow;": "⇄",
- "SquareSupersetEqual;": "⊒",
- "CapitalDifferentialD;": "ⅅ",
- "DoubleLeftRightArrow;": "⇔",
- "DoubleLongRightArrow;": "⟹",
- "EmptyVerySmallSquare;": "▫",
- "NestedGreaterGreater;": "≫",
- "NotDoubleVerticalBar;": "∦",
- "NotGreaterSlantEqual;": "⩾̸",
- "NotLeftTriangleEqual;": "⋬",
- "NotSquareSubsetEqual;": "⋢",
- "OpenCurlyDoubleQuote;": "“",
- "ReverseUpEquilibrium;": "⥯",
- "CloseCurlyDoubleQuote;": "”",
- "DoubleContourIntegral;": "∯",
- "FilledVerySmallSquare;": "▪",
- "NegativeVeryThinSpace;": "",
- "NotPrecedesSlantEqual;": "⋠",
- "NotRightTriangleEqual;": "⋭",
- "NotSucceedsSlantEqual;": "⋡",
- "DiacriticalDoubleAcute;": "˝",
- "NotSquareSupersetEqual;": "⋣",
- "NotNestedGreaterGreater;": "⪢̸",
- "ClockwiseContourIntegral;": "∲",
- "DoubleLongLeftRightArrow;": "⟺",
- "CounterClockwiseContourIntegral;": "∳"
- };
- // lazy compute this to make this file tree-shakable for browser
- let maxCRNameLength;
- const decodeHtml = (rawText, asAttr) => {
- let offset = 0;
- const end = rawText.length;
- let decodedText = '';
- function advance(length) {
- offset += length;
- rawText = rawText.slice(length);
- }
- while (offset < end) {
- const head = /&(?:#x?)?/i.exec(rawText);
- if (!head || offset + head.index >= end) {
- const remaining = end - offset;
- decodedText += rawText.slice(0, remaining);
- advance(remaining);
- break;
- }
- // Advance to the "&".
- decodedText += rawText.slice(0, head.index);
- advance(head.index);
- if (head[0] === '&') {
- // Named character reference.
- let name = '';
- let value = undefined;
- if (/[0-9a-z]/i.test(rawText[1])) {
- if (!maxCRNameLength) {
- maxCRNameLength = Object.keys(namedCharacterReferences).reduce((max, name) => Math.max(max, name.length), 0);
- }
- for (let length = maxCRNameLength; !value && length > 0; --length) {
- name = rawText.slice(1, 1 + length);
- value = namedCharacterReferences[name];
- }
- if (value) {
- const semi = name.endsWith(';');
- if (asAttr &&
- !semi &&
- /[=a-z0-9]/i.test(rawText[name.length + 1] || '')) {
- decodedText += '&' + name;
- advance(1 + name.length);
- }
- else {
- decodedText += value;
- advance(1 + name.length);
- }
- }
- else {
- decodedText += '&' + name;
- advance(1 + name.length);
- }
- }
- else {
- decodedText += '&';
- advance(1);
- }
- }
- else {
- // Numeric character reference.
- const hex = head[0] === '&#x';
- const pattern = hex ? /^&#x([0-9a-f]+);?/i : /^&#([0-9]+);?/;
- const body = pattern.exec(rawText);
- if (!body) {
- decodedText += head[0];
- advance(head[0].length);
- }
- else {
- // https://html.spec.whatwg.org/multipage/parsing.html#numeric-character-reference-end-state
- let cp = Number.parseInt(body[1], hex ? 16 : 10);
- if (cp === 0) {
- cp = 0xfffd;
- }
- else if (cp > 0x10ffff) {
- cp = 0xfffd;
- }
- else if (cp >= 0xd800 && cp <= 0xdfff) {
- cp = 0xfffd;
- }
- else if ((cp >= 0xfdd0 && cp <= 0xfdef) || (cp & 0xfffe) === 0xfffe) ;
- else if ((cp >= 0x01 && cp <= 0x08) ||
- cp === 0x0b ||
- (cp >= 0x0d && cp <= 0x1f) ||
- (cp >= 0x7f && cp <= 0x9f)) {
- cp = CCR_REPLACEMENTS[cp] || cp;
- }
- decodedText += String.fromCodePoint(cp);
- advance(body[0].length);
- }
- }
- }
- return decodedText;
- };
- // https://html.spec.whatwg.org/multipage/parsing.html#numeric-character-reference-end-state
- const CCR_REPLACEMENTS = {
- 0x80: 0x20ac,
- 0x82: 0x201a,
- 0x83: 0x0192,
- 0x84: 0x201e,
- 0x85: 0x2026,
- 0x86: 0x2020,
- 0x87: 0x2021,
- 0x88: 0x02c6,
- 0x89: 0x2030,
- 0x8a: 0x0160,
- 0x8b: 0x2039,
- 0x8c: 0x0152,
- 0x8e: 0x017d,
- 0x91: 0x2018,
- 0x92: 0x2019,
- 0x93: 0x201c,
- 0x94: 0x201d,
- 0x95: 0x2022,
- 0x96: 0x2013,
- 0x97: 0x2014,
- 0x98: 0x02dc,
- 0x99: 0x2122,
- 0x9a: 0x0161,
- 0x9b: 0x203a,
- 0x9c: 0x0153,
- 0x9e: 0x017e,
- 0x9f: 0x0178
- };
- const isRawTextContainer = /*#__PURE__*/ shared.makeMap('style,iframe,script,noscript', true);
- const parserOptions = {
- isVoidTag: shared.isVoidTag,
- isNativeTag: tag => shared.isHTMLTag(tag) || shared.isSVGTag(tag),
- isPreTag: tag => tag === 'pre',
- decodeEntities: decodeHtml,
- isBuiltInComponent: (tag) => {
- if (compilerCore.isBuiltInType(tag, `Transition`)) {
- return TRANSITION;
- }
- else if (compilerCore.isBuiltInType(tag, `TransitionGroup`)) {
- return TRANSITION_GROUP;
- }
- },
- // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher
- getNamespace(tag, parent) {
- let ns = parent ? parent.ns : 0 /* DOMNamespaces.HTML */;
- if (parent && ns === 2 /* DOMNamespaces.MATH_ML */) {
- if (parent.tag === 'annotation-xml') {
- if (tag === 'svg') {
- return 1 /* DOMNamespaces.SVG */;
- }
- if (parent.props.some(a => a.type === 6 /* NodeTypes.ATTRIBUTE */ &&
- a.name === 'encoding' &&
- a.value != null &&
- (a.value.content === 'text/html' ||
- a.value.content === 'application/xhtml+xml'))) {
- ns = 0 /* DOMNamespaces.HTML */;
- }
- }
- else if (/^m(?:[ions]|text)$/.test(parent.tag) &&
- tag !== 'mglyph' &&
- tag !== 'malignmark') {
- ns = 0 /* DOMNamespaces.HTML */;
- }
- }
- else if (parent && ns === 1 /* DOMNamespaces.SVG */) {
- if (parent.tag === 'foreignObject' ||
- parent.tag === 'desc' ||
- parent.tag === 'title') {
- ns = 0 /* DOMNamespaces.HTML */;
- }
- }
- if (ns === 0 /* DOMNamespaces.HTML */) {
- if (tag === 'svg') {
- return 1 /* DOMNamespaces.SVG */;
- }
- if (tag === 'math') {
- return 2 /* DOMNamespaces.MATH_ML */;
- }
- }
- return ns;
- },
- // https://html.spec.whatwg.org/multipage/parsing.html#parsing-html-fragments
- getTextMode({ tag, ns }) {
- if (ns === 0 /* DOMNamespaces.HTML */) {
- if (tag === 'textarea' || tag === 'title') {
- return 1 /* TextModes.RCDATA */;
- }
- if (isRawTextContainer(tag)) {
- return 2 /* TextModes.RAWTEXT */;
- }
- }
- return 0 /* TextModes.DATA */;
- }
- };
- // Parse inline CSS strings for static style attributes into an object.
- // This is a NodeTransform since it works on the static `style` attribute and
- // converts it into a dynamic equivalent:
- // style="color: red" -> :style='{ "color": "red" }'
- // It is then processed by `transformElement` and included in the generated
- // props.
- const transformStyle = node => {
- if (node.type === 1 /* NodeTypes.ELEMENT */) {
- node.props.forEach((p, i) => {
- if (p.type === 6 /* NodeTypes.ATTRIBUTE */ && p.name === 'style' && p.value) {
- // replace p with an expression node
- node.props[i] = {
- type: 7 /* NodeTypes.DIRECTIVE */,
- name: `bind`,
- arg: compilerCore.createSimpleExpression(`style`, true, p.loc),
- exp: parseInlineCSS(p.value.content, p.loc),
- modifiers: [],
- loc: p.loc
- };
- }
- });
- }
- };
- const parseInlineCSS = (cssText, loc) => {
- const normalized = shared.parseStringStyle(cssText);
- return compilerCore.createSimpleExpression(JSON.stringify(normalized), false, loc, 3 /* ConstantTypes.CAN_STRINGIFY */);
- };
- function createDOMCompilerError(code, loc) {
- return compilerCore.createCompilerError(code, loc, DOMErrorMessages );
- }
- const DOMErrorMessages = {
- [51 /* DOMErrorCodes.X_V_HTML_NO_EXPRESSION */]: `v-html is missing expression.`,
- [52 /* DOMErrorCodes.X_V_HTML_WITH_CHILDREN */]: `v-html will override element children.`,
- [53 /* DOMErrorCodes.X_V_TEXT_NO_EXPRESSION */]: `v-text is missing expression.`,
- [54 /* DOMErrorCodes.X_V_TEXT_WITH_CHILDREN */]: `v-text will override element children.`,
- [55 /* DOMErrorCodes.X_V_MODEL_ON_INVALID_ELEMENT */]: `v-model can only be used on <input>, <textarea> and <select> elements.`,
- [56 /* DOMErrorCodes.X_V_MODEL_ARG_ON_ELEMENT */]: `v-model argument is not supported on plain elements.`,
- [57 /* DOMErrorCodes.X_V_MODEL_ON_FILE_INPUT_ELEMENT */]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`,
- [58 /* DOMErrorCodes.X_V_MODEL_UNNECESSARY_VALUE */]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`,
- [59 /* DOMErrorCodes.X_V_SHOW_NO_EXPRESSION */]: `v-show is missing expression.`,
- [60 /* DOMErrorCodes.X_TRANSITION_INVALID_CHILDREN */]: `<Transition> expects exactly one child element or component.`,
- [61 /* DOMErrorCodes.X_IGNORED_SIDE_EFFECT_TAG */]: `Tags with side effect (<script> and <style>) are ignored in client component templates.`
- };
- const transformVHtml = (dir, node, context) => {
- const { exp, loc } = dir;
- if (!exp) {
- context.onError(createDOMCompilerError(51 /* DOMErrorCodes.X_V_HTML_NO_EXPRESSION */, loc));
- }
- if (node.children.length) {
- context.onError(createDOMCompilerError(52 /* DOMErrorCodes.X_V_HTML_WITH_CHILDREN */, loc));
- node.children.length = 0;
- }
- return {
- props: [
- compilerCore.createObjectProperty(compilerCore.createSimpleExpression(`innerHTML`, true, loc), exp || compilerCore.createSimpleExpression('', true))
- ]
- };
- };
- const transformVText = (dir, node, context) => {
- const { exp, loc } = dir;
- if (!exp) {
- context.onError(createDOMCompilerError(53 /* DOMErrorCodes.X_V_TEXT_NO_EXPRESSION */, loc));
- }
- if (node.children.length) {
- context.onError(createDOMCompilerError(54 /* DOMErrorCodes.X_V_TEXT_WITH_CHILDREN */, loc));
- node.children.length = 0;
- }
- return {
- props: [
- compilerCore.createObjectProperty(compilerCore.createSimpleExpression(`textContent`, true), exp
- ? compilerCore.getConstantType(exp, context) > 0
- ? exp
- : compilerCore.createCallExpression(context.helperString(compilerCore.TO_DISPLAY_STRING), [exp], loc)
- : compilerCore.createSimpleExpression('', true))
- ]
- };
- };
- const transformModel = (dir, node, context) => {
- const baseResult = compilerCore.transformModel(dir, node, context);
- // base transform has errors OR component v-model (only need props)
- if (!baseResult.props.length || node.tagType === 1 /* ElementTypes.COMPONENT */) {
- return baseResult;
- }
- if (dir.arg) {
- context.onError(createDOMCompilerError(56 /* DOMErrorCodes.X_V_MODEL_ARG_ON_ELEMENT */, dir.arg.loc));
- }
- const { tag } = node;
- const isCustomElement = context.isCustomElement(tag);
- if (tag === 'input' ||
- tag === 'textarea' ||
- tag === 'select' ||
- isCustomElement) {
- let directiveToUse = V_MODEL_TEXT;
- let isInvalidType = false;
- if (tag === 'input' || isCustomElement) {
- const type = compilerCore.findProp(node, `type`);
- if (type) {
- if (type.type === 7 /* NodeTypes.DIRECTIVE */) {
- // :type="foo"
- directiveToUse = V_MODEL_DYNAMIC;
- }
- else if (type.value) {
- switch (type.value.content) {
- case 'radio':
- directiveToUse = V_MODEL_RADIO;
- break;
- case 'checkbox':
- directiveToUse = V_MODEL_CHECKBOX;
- break;
- case 'file':
- isInvalidType = true;
- context.onError(createDOMCompilerError(57 /* DOMErrorCodes.X_V_MODEL_ON_FILE_INPUT_ELEMENT */, dir.loc));
- break;
- }
- }
- }
- else if (compilerCore.hasDynamicKeyVBind(node)) {
- // element has bindings with dynamic keys, which can possibly contain
- // "type".
- directiveToUse = V_MODEL_DYNAMIC;
- }
- else ;
- }
- else if (tag === 'select') {
- directiveToUse = V_MODEL_SELECT;
- }
- else ;
- // inject runtime directive
- // by returning the helper symbol via needRuntime
- // the import will replaced a resolveDirective call.
- if (!isInvalidType) {
- baseResult.needRuntime = context.helper(directiveToUse);
- }
- }
- else {
- context.onError(createDOMCompilerError(55 /* DOMErrorCodes.X_V_MODEL_ON_INVALID_ELEMENT */, dir.loc));
- }
- // native vmodel doesn't need the `modelValue` props since they are also
- // passed to the runtime as `binding.value`. removing it reduces code size.
- baseResult.props = baseResult.props.filter(p => !(p.key.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */ &&
- p.key.content === 'modelValue'));
- return baseResult;
- };
- const isEventOptionModifier = /*#__PURE__*/ shared.makeMap(`passive,once,capture`);
- const isNonKeyModifier = /*#__PURE__*/ shared.makeMap(
- // event propagation management
- `stop,prevent,self,` +
- // system modifiers + exact
- `ctrl,shift,alt,meta,exact,` +
- // mouse
- `middle`);
- // left & right could be mouse or key modifiers based on event type
- const maybeKeyModifier = /*#__PURE__*/ shared.makeMap('left,right');
- const isKeyboardEvent = /*#__PURE__*/ shared.makeMap(`onkeyup,onkeydown,onkeypress`, true);
- const resolveModifiers = (key, modifiers, context, loc) => {
- const keyModifiers = [];
- const nonKeyModifiers = [];
- const eventOptionModifiers = [];
- for (let i = 0; i < modifiers.length; i++) {
- const modifier = modifiers[i];
- if (modifier === 'native' &&
- compilerCore.checkCompatEnabled("COMPILER_V_ON_NATIVE" /* CompilerDeprecationTypes.COMPILER_V_ON_NATIVE */, context, loc)) {
- eventOptionModifiers.push(modifier);
- }
- else if (isEventOptionModifier(modifier)) {
- // eventOptionModifiers: modifiers for addEventListener() options,
- // e.g. .passive & .capture
- eventOptionModifiers.push(modifier);
- }
- else {
- // runtimeModifiers: modifiers that needs runtime guards
- if (maybeKeyModifier(modifier)) {
- if (compilerCore.isStaticExp(key)) {
- if (isKeyboardEvent(key.content)) {
- keyModifiers.push(modifier);
- }
- else {
- nonKeyModifiers.push(modifier);
- }
- }
- else {
- keyModifiers.push(modifier);
- nonKeyModifiers.push(modifier);
- }
- }
- else {
- if (isNonKeyModifier(modifier)) {
- nonKeyModifiers.push(modifier);
- }
- else {
- keyModifiers.push(modifier);
- }
- }
- }
- }
- return {
- keyModifiers,
- nonKeyModifiers,
- eventOptionModifiers
- };
- };
- const transformClick = (key, event) => {
- const isStaticClick = compilerCore.isStaticExp(key) && key.content.toLowerCase() === 'onclick';
- return isStaticClick
- ? compilerCore.createSimpleExpression(event, true)
- : key.type !== 4 /* NodeTypes.SIMPLE_EXPRESSION */
- ? compilerCore.createCompoundExpression([
- `(`,
- key,
- `) === "onClick" ? "${event}" : (`,
- key,
- `)`
- ])
- : key;
- };
- const transformOn = (dir, node, context) => {
- return compilerCore.transformOn(dir, node, context, baseResult => {
- const { modifiers } = dir;
- if (!modifiers.length)
- return baseResult;
- let { key, value: handlerExp } = baseResult.props[0];
- const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc);
- // normalize click.right and click.middle since they don't actually fire
- if (nonKeyModifiers.includes('right')) {
- key = transformClick(key, `onContextmenu`);
- }
- if (nonKeyModifiers.includes('middle')) {
- key = transformClick(key, `onMouseup`);
- }
- if (nonKeyModifiers.length) {
- handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [
- handlerExp,
- JSON.stringify(nonKeyModifiers)
- ]);
- }
- if (keyModifiers.length &&
- // if event name is dynamic, always wrap with keys guard
- (!compilerCore.isStaticExp(key) || isKeyboardEvent(key.content))) {
- handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_KEYS), [
- handlerExp,
- JSON.stringify(keyModifiers)
- ]);
- }
- if (eventOptionModifiers.length) {
- const modifierPostfix = eventOptionModifiers.map(shared.capitalize).join('');
- key = compilerCore.isStaticExp(key)
- ? compilerCore.createSimpleExpression(`${key.content}${modifierPostfix}`, true)
- : compilerCore.createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]);
- }
- return {
- props: [compilerCore.createObjectProperty(key, handlerExp)]
- };
- });
- };
- const transformShow = (dir, node, context) => {
- const { exp, loc } = dir;
- if (!exp) {
- context.onError(createDOMCompilerError(59 /* DOMErrorCodes.X_V_SHOW_NO_EXPRESSION */, loc));
- }
- return {
- props: [],
- needRuntime: context.helper(V_SHOW)
- };
- };
- /**
- * This module is Node-only.
- */
- /**
- * Regex for replacing placeholders for embedded constant variables
- * (e.g. import URL string constants generated by compiler-sfc)
- */
- const expReplaceRE = /__VUE_EXP_START__(.*?)__VUE_EXP_END__/g;
- /**
- * Turn eligible hoisted static trees into stringified static nodes, e.g.
- *
- * ```js
- * const _hoisted_1 = createStaticVNode(`<div class="foo">bar</div>`)
- * ```
- *
- * A single static vnode can contain stringified content for **multiple**
- * consecutive nodes (element and plain text), called a "chunk".
- * `@vue/runtime-dom` will create the content via innerHTML in a hidden
- * container element and insert all the nodes in place. The call must also
- * provide the number of nodes contained in the chunk so that during hydration
- * we can know how many nodes the static vnode should adopt.
- *
- * The optimization scans a children list that contains hoisted nodes, and
- * tries to find the largest chunk of consecutive hoisted nodes before running
- * into a non-hoisted node or the end of the list. A chunk is then converted
- * into a single static vnode and replaces the hoisted expression of the first
- * node in the chunk. Other nodes in the chunk are considered "merged" and
- * therefore removed from both the hoist list and the children array.
- *
- * This optimization is only performed in Node.js.
- */
- const stringifyStatic = (children, context, parent) => {
- // bail stringification for slot content
- if (context.scopes.vSlot > 0) {
- return;
- }
- let nc = 0; // current node count
- let ec = 0; // current element with binding count
- const currentChunk = [];
- const stringifyCurrentChunk = (currentIndex) => {
- if (nc >= 20 /* StringifyThresholds.NODE_COUNT */ ||
- ec >= 5 /* StringifyThresholds.ELEMENT_WITH_BINDING_COUNT */) {
- // combine all currently eligible nodes into a single static vnode call
- const staticCall = compilerCore.createCallExpression(context.helper(compilerCore.CREATE_STATIC), [
- JSON.stringify(currentChunk.map(node => stringifyNode(node, context)).join('')).replace(expReplaceRE, `" + $1 + "`),
- // the 2nd argument indicates the number of DOM nodes this static vnode
- // will insert / hydrate
- String(currentChunk.length)
- ]);
- // replace the first node's hoisted expression with the static vnode call
- replaceHoist(currentChunk[0], staticCall, context);
- if (currentChunk.length > 1) {
- for (let i = 1; i < currentChunk.length; i++) {
- // for the merged nodes, set their hoisted expression to null
- replaceHoist(currentChunk[i], null, context);
- }
- // also remove merged nodes from children
- const deleteCount = currentChunk.length - 1;
- children.splice(currentIndex - currentChunk.length + 1, deleteCount);
- return deleteCount;
- }
- }
- return 0;
- };
- let i = 0;
- for (; i < children.length; i++) {
- const child = children[i];
- const hoisted = getHoistedNode(child);
- if (hoisted) {
- // presence of hoisted means child must be a stringifiable node
- const node = child;
- const result = analyzeNode(node);
- if (result) {
- // node is stringifiable, record state
- nc += result[0];
- ec += result[1];
- currentChunk.push(node);
- continue;
- }
- }
- // we only reach here if we ran into a node that is not stringifiable
- // check if currently analyzed nodes meet criteria for stringification.
- // adjust iteration index
- i -= stringifyCurrentChunk(i);
- // reset state
- nc = 0;
- ec = 0;
- currentChunk.length = 0;
- }
- // in case the last node was also stringifiable
- stringifyCurrentChunk(i);
- };
- const getHoistedNode = (node) => ((node.type === 1 /* NodeTypes.ELEMENT */ && node.tagType === 0 /* ElementTypes.ELEMENT */) ||
- node.type == 12 /* NodeTypes.TEXT_CALL */) &&
- node.codegenNode &&
- node.codegenNode.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */ &&
- node.codegenNode.hoisted;
- const dataAriaRE = /^(data|aria)-/;
- const isStringifiableAttr = (name, ns) => {
- return ((ns === 0 /* DOMNamespaces.HTML */
- ? shared.isKnownHtmlAttr(name)
- : ns === 1 /* DOMNamespaces.SVG */
- ? shared.isKnownSvgAttr(name)
- : false) || dataAriaRE.test(name));
- };
- const replaceHoist = (node, replacement, context) => {
- const hoistToReplace = node.codegenNode.hoisted;
- context.hoists[context.hoists.indexOf(hoistToReplace)] = replacement;
- };
- const isNonStringifiable = /*#__PURE__*/ shared.makeMap(`caption,thead,tr,th,tbody,td,tfoot,colgroup,col`);
- /**
- * for a hoisted node, analyze it and return:
- * - false: bailed (contains non-stringifiable props or runtime constant)
- * - [nc, ec] where
- * - nc is the number of nodes inside
- * - ec is the number of element with bindings inside
- */
- function analyzeNode(node) {
- if (node.type === 1 /* NodeTypes.ELEMENT */ && isNonStringifiable(node.tag)) {
- return false;
- }
- if (node.type === 12 /* NodeTypes.TEXT_CALL */) {
- return [1, 0];
- }
- let nc = 1; // node count
- let ec = node.props.length > 0 ? 1 : 0; // element w/ binding count
- let bailed = false;
- const bail = () => {
- bailed = true;
- return false;
- };
- // TODO: check for cases where using innerHTML will result in different
- // output compared to imperative node insertions.
- // probably only need to check for most common case
- // i.e. non-phrasing-content tags inside `<p>`
- function walk(node) {
- for (let i = 0; i < node.props.length; i++) {
- const p = node.props[i];
- // bail on non-attr bindings
- if (p.type === 6 /* NodeTypes.ATTRIBUTE */ &&
- !isStringifiableAttr(p.name, node.ns)) {
- return bail();
- }
- if (p.type === 7 /* NodeTypes.DIRECTIVE */ && p.name === 'bind') {
- // bail on non-attr bindings
- if (p.arg &&
- (p.arg.type === 8 /* NodeTypes.COMPOUND_EXPRESSION */ ||
- (p.arg.isStatic && !isStringifiableAttr(p.arg.content, node.ns)))) {
- return bail();
- }
- if (p.exp &&
- (p.exp.type === 8 /* NodeTypes.COMPOUND_EXPRESSION */ ||
- p.exp.constType < 3 /* ConstantTypes.CAN_STRINGIFY */)) {
- return bail();
- }
- }
- }
- for (let i = 0; i < node.children.length; i++) {
- nc++;
- const child = node.children[i];
- if (child.type === 1 /* NodeTypes.ELEMENT */) {
- if (child.props.length > 0) {
- ec++;
- }
- walk(child);
- if (bailed) {
- return false;
- }
- }
- }
- return true;
- }
- return walk(node) ? [nc, ec] : false;
- }
- function stringifyNode(node, context) {
- if (shared.isString(node)) {
- return node;
- }
- if (shared.isSymbol(node)) {
- return ``;
- }
- switch (node.type) {
- case 1 /* NodeTypes.ELEMENT */:
- return stringifyElement(node, context);
- case 2 /* NodeTypes.TEXT */:
- return shared.escapeHtml(node.content);
- case 3 /* NodeTypes.COMMENT */:
- return `<!--${shared.escapeHtml(node.content)}-->`;
- case 5 /* NodeTypes.INTERPOLATION */:
- return shared.escapeHtml(shared.toDisplayString(evaluateConstant(node.content)));
- case 8 /* NodeTypes.COMPOUND_EXPRESSION */:
- return shared.escapeHtml(evaluateConstant(node));
- case 12 /* NodeTypes.TEXT_CALL */:
- return stringifyNode(node.content, context);
- default:
- // static trees will not contain if/for nodes
- return '';
- }
- }
- function stringifyElement(node, context) {
- let res = `<${node.tag}`;
- let innerHTML = '';
- for (let i = 0; i < node.props.length; i++) {
- const p = node.props[i];
- if (p.type === 6 /* NodeTypes.ATTRIBUTE */) {
- res += ` ${p.name}`;
- if (p.value) {
- res += `="${shared.escapeHtml(p.value.content)}"`;
- }
- }
- else if (p.type === 7 /* NodeTypes.DIRECTIVE */) {
- if (p.name === 'bind') {
- const exp = p.exp;
- if (exp.content[0] === '_') {
- // internally generated string constant references
- // e.g. imported URL strings via compiler-sfc transformAssetUrl plugin
- res += ` ${p.arg.content}="__VUE_EXP_START__${exp.content}__VUE_EXP_END__"`;
- continue;
- }
- // #6568
- if (shared.isBooleanAttr(p.arg.content) &&
- exp.content === 'false') {
- continue;
- }
- // constant v-bind, e.g. :foo="1"
- let evaluated = evaluateConstant(exp);
- if (evaluated != null) {
- const arg = p.arg && p.arg.content;
- if (arg === 'class') {
- evaluated = shared.normalizeClass(evaluated);
- }
- else if (arg === 'style') {
- evaluated = shared.stringifyStyle(shared.normalizeStyle(evaluated));
- }
- res += ` ${p.arg.content}="${shared.escapeHtml(evaluated)}"`;
- }
- }
- else if (p.name === 'html') {
- // #5439 v-html with constant value
- // not sure why would anyone do this but it can happen
- innerHTML = evaluateConstant(p.exp);
- }
- else if (p.name === 'text') {
- innerHTML = shared.escapeHtml(shared.toDisplayString(evaluateConstant(p.exp)));
- }
- }
- }
- if (context.scopeId) {
- res += ` ${context.scopeId}`;
- }
- res += `>`;
- if (innerHTML) {
- res += innerHTML;
- }
- else {
- for (let i = 0; i < node.children.length; i++) {
- res += stringifyNode(node.children[i], context);
- }
- }
- if (!shared.isVoidTag(node.tag)) {
- res += `</${node.tag}>`;
- }
- return res;
- }
- // __UNSAFE__
- // Reason: eval.
- // It's technically safe to eval because only constant expressions are possible
- // here, e.g. `{{ 1 }}` or `{{ 'foo' }}`
- // in addition, constant exps bail on presence of parens so you can't even
- // run JSFuck in here. But we mark it unsafe for security review purposes.
- // (see compiler-core/src/transforms/transformExpression)
- function evaluateConstant(exp) {
- if (exp.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */) {
- return new Function(`return ${exp.content}`)();
- }
- else {
- // compound
- let res = ``;
- exp.children.forEach(c => {
- if (shared.isString(c) || shared.isSymbol(c)) {
- return;
- }
- if (c.type === 2 /* NodeTypes.TEXT */) {
- res += c.content;
- }
- else if (c.type === 5 /* NodeTypes.INTERPOLATION */) {
- res += shared.toDisplayString(evaluateConstant(c.content));
- }
- else {
- res += evaluateConstant(c);
- }
- });
- return res;
- }
- }
- const ignoreSideEffectTags = (node, context) => {
- if (node.type === 1 /* NodeTypes.ELEMENT */ &&
- node.tagType === 0 /* ElementTypes.ELEMENT */ &&
- (node.tag === 'script' || node.tag === 'style')) {
- context.onError(createDOMCompilerError(61 /* DOMErrorCodes.X_IGNORED_SIDE_EFFECT_TAG */, node.loc));
- context.removeNode();
- }
- };
- const DOMNodeTransforms = [
- transformStyle,
- ...([])
- ];
- const DOMDirectiveTransforms = {
- cloak: compilerCore.noopDirectiveTransform,
- html: transformVHtml,
- text: transformVText,
- model: transformModel,
- on: transformOn,
- show: transformShow
- };
- function compile(template, options = {}) {
- return compilerCore.baseCompile(template, shared.extend({}, parserOptions, options, {
- nodeTransforms: [
- // ignore <script> and <tag>
- // this is not put inside DOMNodeTransforms because that list is used
- // by compiler-ssr to generate vnode fallback branches
- ignoreSideEffectTags,
- ...DOMNodeTransforms,
- ...(options.nodeTransforms || [])
- ],
- directiveTransforms: shared.extend({}, DOMDirectiveTransforms, options.directiveTransforms || {}),
- transformHoist: stringifyStatic
- }));
- }
- function parse(template, options = {}) {
- return compilerCore.baseParse(template, shared.extend({}, parserOptions, options));
- }
- Object.keys(compilerCore).forEach(function (k) {
- if (k !== 'default') exports[k] = compilerCore[k];
- });
- exports.DOMDirectiveTransforms = DOMDirectiveTransforms;
- exports.DOMNodeTransforms = DOMNodeTransforms;
- exports.TRANSITION = TRANSITION;
- exports.TRANSITION_GROUP = TRANSITION_GROUP;
- exports.V_MODEL_CHECKBOX = V_MODEL_CHECKBOX;
- exports.V_MODEL_DYNAMIC = V_MODEL_DYNAMIC;
- exports.V_MODEL_RADIO = V_MODEL_RADIO;
- exports.V_MODEL_SELECT = V_MODEL_SELECT;
- exports.V_MODEL_TEXT = V_MODEL_TEXT;
- exports.V_ON_WITH_KEYS = V_ON_WITH_KEYS;
- exports.V_ON_WITH_MODIFIERS = V_ON_WITH_MODIFIERS;
- exports.V_SHOW = V_SHOW;
- exports.compile = compile;
- exports.createDOMCompilerError = createDOMCompilerError;
- exports.parse = parse;
- exports.parserOptions = parserOptions;
- exports.transformStyle = transformStyle;
|