ref: 345714dd56f5da8dcb2193f9cdf041cfc005d82f
dir: /sys/src/cmd/tcs/html.c/
#include <u.h> #include <libc.h> #include <bio.h> #include "hdr.h" #include "conv.h" typedef struct Hchar Hchar; struct Hchar { char *s; Rune r; }; /* * Names beginning with _ are names we recognize * (without the underscore) but will not generate, * because they are nonstandard. */ static Hchar byname[] = { {"AElig", 198}, {"Aacute", 193}, {"Abreve", 258}, {"Acirc", 194}, {"Acy", 1040}, {"Agrave", 192}, {"Alpha", 913}, {"Amacr", 256}, {"And", 10835}, {"Aogon", 260}, {"ApplyFunction", 8289}, {"Aring", 197}, {"Assign", 8788}, {"Atilde", 195}, {"Auml", 196}, {"Backslash", 8726}, {"Barv", 10983}, {"Barwed", 8966}, {"Bcy", 1041}, {"Because", 8757}, {"Bernoullis", 8492}, {"Beta", 914}, {"Breve", 728}, {"Bscr", 8492}, {"Bumpeq", 8782}, {"CHcy", 1063}, {"Cacute", 262}, {"Cap", 8914}, {"CapitalDifferentialD", 8517}, {"Cayleys", 8493}, {"Ccaron", 268}, {"Ccedil", 199}, {"Ccirc", 264}, {"Cconint", 8752}, {"Cdot", 266}, {"Cedilla", 184}, {"CenterDot", 183}, {"Cfr", 8493}, {"Chi", 935}, {"CircleDot", 8857}, {"CircleMinus", 8854}, {"CirclePlus", 8853}, {"CircleTimes", 8855}, {"ClockwiseContourIntegral", 8754}, {"CloseCurlyDoubleQuote", 8221}, {"CloseCurlyQuote", 8217}, {"Colon", 8759}, {"Colone", 10868}, {"Congruent", 8801}, {"Conint", 8751}, {"ContourIntegral", 8750}, {"Copf", 8450}, {"Coproduct", 8720}, {"CounterClockwiseContourIntegral", 8755}, {"Cross", 10799}, {"Cup", 8915}, {"CupCap", 8781}, {"DD", 8517}, {"DDotrahd", 10513}, {"DJcy", 1026}, {"DScy", 1029}, {"DZcy", 1039}, {"Dagger", 8225}, {"Darr", 8609}, {"Dashv", 10980}, {"Dcaron", 270}, {"Dcy", 1044}, {"Del", 8711}, {"Delta", 916}, {"DiacriticalAcute", 180}, {"DiacriticalDot", 729}, {"DiacriticalDoubleAcute", 733}, {"DiacriticalGrave", 96}, {"DiacriticalTilde", 732}, {"Diamond", 8900}, {"DifferentialD", 8518}, {"Dot", 168}, {"DotDot", 8412}, {"DotEqual", 8784}, {"DoubleContourIntegral", 8751}, {"DoubleDot", 168}, {"DoubleDownArrow", 8659}, {"DoubleLeftArrow", 8656}, {"DoubleLeftRightArrow", 8660}, {"DoubleLeftTee", 10980}, {"DoubleLongLeftArrow", 10232}, {"DoubleLongLeftRightArrow", 10234}, {"DoubleLongRightArrow", 10233}, {"DoubleRightArrow", 8658}, {"DoubleRightTee", 8872}, {"DoubleUpArrow", 8657}, {"DoubleUpDownArrow", 8661}, {"DoubleVerticalBar", 8741}, {"DownArrow", 8595}, {"DownArrowBar", 10515}, {"DownArrowUpArrow", 8693}, {"DownBreve", 785}, {"DownLeftRightVector", 10576}, {"DownLeftTeeVector", 10590}, {"DownLeftVector", 8637}, {"DownLeftVectorBar", 10582}, {"DownRightTeeVector", 10591}, {"DownRightVector", 8641}, {"DownRightVectorBar", 10583}, {"DownTee", 8868}, {"DownTeeArrow", 8615}, {"Downarrow", 8659}, {"Dstrok", 272}, {"ENG", 330}, {"ETH", 208}, {"Eacute", 201}, {"Ecaron", 282}, {"Ecirc", 202}, {"Ecy", 1069}, {"Edot", 278}, {"Egrave", 200}, {"Element", 8712}, {"Emacr", 274}, {"EmptySmallSquare", 9723}, {"EmptyVerySmallSquare", 9643}, {"Eogon", 280}, {"Epsilon", 917}, {"Equal", 10869}, {"EqualTilde", 8770}, {"Equilibrium", 8652}, {"Escr", 8496}, {"Esim", 10867}, {"Eta", 919}, {"Euml", 203}, {"Exists", 8707}, {"ExponentialE", 8519}, {"Fcy", 1060}, {"FilledSmallSquare", 9724}, {"FilledVerySmallSquare", 9642}, {"ForAll", 8704}, {"Fouriertrf", 8497}, {"Fscr", 8497}, {"GJcy", 1027}, {"Gamma", 915}, {"Gammad", 988}, {"Gbreve", 286}, {"Gcedil", 290}, {"Gcirc", 284}, {"Gcy", 1043}, {"Gdot", 288}, {"Gg", 8921}, {"GreaterEqual", 8805}, {"GreaterEqualLess", 8923}, {"GreaterFullEqual", 8807}, {"GreaterGreater", 10914}, {"GreaterLess", 8823}, {"GreaterSlantEqual", 10878}, {"GreaterTilde", 8819}, {"Gt", 8811}, {"HARDcy", 1066}, {"Hacek", 711}, {"Hat", 94}, {"Hcirc", 292}, {"Hfr", 8460}, {"HilbertSpace", 8459}, {"Hopf", 8461}, {"HorizontalLine", 9472}, {"Hscr", 8459}, {"Hstrok", 294}, {"HumpDownHump", 8782}, {"HumpEqual", 8783}, {"IEcy", 1045}, {"IJlig", 306}, {"IOcy", 1025}, {"Iacute", 205}, {"Icirc", 206}, {"Icy", 1048}, {"Idot", 304}, {"Ifr", 8465}, {"Igrave", 204}, {"Im", 8465}, {"Imacr", 298}, {"ImaginaryI", 8520}, {"Implies", 8658}, {"Int", 8748}, {"Integral", 8747}, {"Intersection", 8898}, {"InvisibleComma", 8291}, {"InvisibleTimes", 8290}, {"Iogon", 302}, {"Iota", 921}, {"Iscr", 8464}, {"Itilde", 296}, {"Iukcy", 1030}, {"Iuml", 207}, {"Jcirc", 308}, {"Jcy", 1049}, {"Jsercy", 1032}, {"Jukcy", 1028}, {"KHcy", 1061}, {"KJcy", 1036}, {"Kappa", 922}, {"Kcedil", 310}, {"Kcy", 1050}, {"LJcy", 1033}, {"Lacute", 313}, {"Lambda", 923}, {"Lang", 10218}, {"Laplacetrf", 8466}, {"Larr", 8606}, {"Lcaron", 317}, {"Lcedil", 315}, {"Lcy", 1051}, {"LeftAngleBracket", 10216}, {"LeftArrow", 8592}, {"LeftArrowBar", 8676}, {"LeftArrowRightArrow", 8646}, {"LeftCeiling", 8968}, {"LeftDoubleBracket", 10214}, {"LeftDownTeeVector", 10593}, {"LeftDownVector", 8643}, {"LeftDownVectorBar", 10585}, {"LeftFloor", 8970}, {"LeftRightArrow", 8596}, {"LeftRightVector", 10574}, {"LeftTee", 8867}, {"LeftTeeArrow", 8612}, {"LeftTeeVector", 10586}, {"LeftTriangle", 8882}, {"LeftTriangleBar", 10703}, {"LeftTriangleEqual", 8884}, {"LeftUpDownVector", 10577}, {"LeftUpTeeVector", 10592}, {"LeftUpVector", 8639}, {"LeftUpVectorBar", 10584}, {"LeftVector", 8636}, {"LeftVectorBar", 10578}, {"Leftarrow", 8656}, {"Leftrightarrow", 8660}, {"LessEqualGreater", 8922}, {"LessFullEqual", 8806}, {"LessGreater", 8822}, {"LessLess", 10913}, {"LessSlantEqual", 10877}, {"LessTilde", 8818}, {"Ll", 8920}, {"Lleftarrow", 8666}, {"Lmidot", 319}, {"LongLeftArrow", 10229}, {"LongLeftRightArrow", 10231}, {"LongRightArrow", 10230}, {"Longleftarrow", 10232}, {"Longleftrightarrow", 10234}, {"Longrightarrow", 10233}, {"LowerLeftArrow", 8601}, {"LowerRightArrow", 8600}, {"Lscr", 8466}, {"Lsh", 8624}, {"Lstrok", 321}, {"Lt", 8810}, {"Map", 10501}, {"Mcy", 1052}, {"MediumSpace", 8287}, {"Mellintrf", 8499}, {"MinusPlus", 8723}, {"Mscr", 8499}, {"Mu", 924}, {"NJcy", 1034}, {"Nacute", 323}, {"Ncaron", 327}, {"Ncedil", 325}, {"Ncy", 1053}, {"NegativeMediumSpace", 8203}, {"NegativeThickSpace", 8203}, {"NegativeThinSpace", 8203}, {"NegativeVeryThinSpace", 8203}, {"NestedGreaterGreater", 8811}, {"NestedLessLess", 8810}, {"NewLine", 10}, {"NoBreak", 8288}, {"NonBreakingSpace", 160}, {"Nopf", 8469}, {"Not", 10988}, {"NotCongruent", 8802}, {"NotCupCap", 8813}, {"NotDoubleVerticalBar", 8742}, {"NotElement", 8713}, {"NotEqual", 8800}, {"NotEqualTilde", 8770}, {"NotExists", 8708}, {"NotGreater", 8815}, {"NotGreaterEqual", 8817}, {"NotGreaterFullEqual", 8807}, {"NotGreaterGreater", 8811}, {"NotGreaterLess", 8825}, {"NotGreaterSlantEqual", 10878}, {"NotGreaterTilde", 8821}, {"NotHumpDownHump", 8782}, {"NotHumpEqual", 8783}, {"NotLeftTriangle", 8938}, {"NotLeftTriangleBar", 10703}, {"NotLeftTriangleEqual", 8940}, {"NotLess", 8814}, {"NotLessEqual", 8816}, {"NotLessGreater", 8824}, {"NotLessLess", 8810}, {"NotLessSlantEqual", 10877}, {"NotLessTilde", 8820}, {"NotNestedGreaterGreater", 10914}, {"NotNestedLessLess", 10913}, {"NotPrecedes", 8832}, {"NotPrecedesEqual", 10927}, {"NotPrecedesSlantEqual", 8928}, {"NotReverseElement", 8716}, {"NotRightTriangle", 8939}, {"NotRightTriangleBar", 10704}, {"NotRightTriangleEqual", 8941}, {"NotSquareSubset", 8847}, {"NotSquareSubsetEqual", 8930}, {"NotSquareSuperset", 8848}, {"NotSquareSupersetEqual", 8931}, {"NotSubset", 8834}, {"NotSubsetEqual", 8840}, {"NotSucceeds", 8833}, {"NotSucceedsEqual", 10928}, {"NotSucceedsSlantEqual", 8929}, {"NotSucceedsTilde", 8831}, {"NotSuperset", 8835}, {"NotSupersetEqual", 8841}, {"NotTilde", 8769}, {"NotTildeEqual", 8772}, {"NotTildeFullEqual", 8775}, {"NotTildeTilde", 8777}, {"NotVerticalBar", 8740}, {"Ntilde", 209}, {"Nu", 925}, {"OElig", 338}, {"Oacute", 211}, {"Ocirc", 212}, {"Ocy", 1054}, {"Odblac", 336}, {"Ograve", 210}, {"Omacr", 332}, {"Omega", 937}, {"Omicron", 927}, {"OpenCurlyDoubleQuote", 8220}, {"OpenCurlyQuote", 8216}, {"Or", 10836}, {"Oslash", 216}, {"Otilde", 213}, {"Otimes", 10807}, {"Ouml", 214}, {"OverBar", 8254}, {"OverBrace", 9182}, {"OverBracket", 9140}, {"OverParenthesis", 9180}, {"PartialD", 8706}, {"Pcy", 1055}, {"Phi", 934}, {"Pi", 928}, {"PlusMinus", 177}, {"Poincareplane", 8460}, {"Popf", 8473}, {"Pr", 10939}, {"Precedes", 8826}, {"PrecedesEqual", 10927}, {"PrecedesSlantEqual", 8828}, {"PrecedesTilde", 8830}, {"Prime", 8243}, {"Product", 8719}, {"Proportion", 8759}, {"Proportional", 8733}, {"Psi", 936}, {"Qopf", 8474}, {"RBarr", 10512}, {"Racute", 340}, {"Rang", 10219}, {"Rarr", 8608}, {"Rarrtl", 10518}, {"Rcaron", 344}, {"Rcedil", 342}, {"Rcy", 1056}, {"Re", 8476}, {"ReverseElement", 8715}, {"ReverseEquilibrium", 8651}, {"ReverseUpEquilibrium", 10607}, {"Rfr", 8476}, {"Rho", 929}, {"RightAngleBracket", 10217}, {"RightArrow", 8594}, {"RightArrowBar", 8677}, {"RightArrowLeftArrow", 8644}, {"RightCeiling", 8969}, {"RightDoubleBracket", 10215}, {"RightDownTeeVector", 10589}, {"RightDownVector", 8642}, {"RightDownVectorBar", 10581}, {"RightFloor", 8971}, {"RightTee", 8866}, {"RightTeeArrow", 8614}, {"RightTeeVector", 10587}, {"RightTriangle", 8883}, {"RightTriangleBar", 10704}, {"RightTriangleEqual", 8885}, {"RightUpDownVector", 10575}, {"RightUpTeeVector", 10588}, {"RightUpVector", 8638}, {"RightUpVectorBar", 10580}, {"RightVector", 8640}, {"RightVectorBar", 10579}, {"Rightarrow", 8658}, {"Ropf", 8477}, {"RoundImplies", 10608}, {"Rrightarrow", 8667}, {"Rscr", 8475}, {"Rsh", 8625}, {"RuleDelayed", 10740}, {"SHCHcy", 1065}, {"SHcy", 1064}, {"SOFTcy", 1068}, {"Sacute", 346}, {"Sc", 10940}, {"Scaron", 352}, {"Scedil", 350}, {"Scirc", 348}, {"Scy", 1057}, {"ShortDownArrow", 8595}, {"ShortLeftArrow", 8592}, {"ShortRightArrow", 8594}, {"ShortUpArrow", 8593}, {"Sigma", 931}, {"SmallCircle", 8728}, {"Sqrt", 8730}, {"Square", 9633}, {"SquareIntersection", 8851}, {"SquareSubset", 8847}, {"SquareSubsetEqual", 8849}, {"SquareSuperset", 8848}, {"SquareSupersetEqual", 8850}, {"SquareUnion", 8852}, {"Star", 8902}, {"Sub", 8912}, {"Subset", 8912}, {"SubsetEqual", 8838}, {"Succeeds", 8827}, {"SucceedsEqual", 10928}, {"SucceedsSlantEqual", 8829}, {"SucceedsTilde", 8831}, {"SuchThat", 8715}, {"Sum", 8721}, {"Sup", 8913}, {"Superset", 8835}, {"SupersetEqual", 8839}, {"Supset", 8913}, {"THORN", 222}, {"TSHcy", 1035}, {"TScy", 1062}, {"Tab", 9}, {"Tau", 932}, {"Tcaron", 356}, {"Tcedil", 354}, {"Tcy", 1058}, {"Therefore", 8756}, {"Theta", 920}, {"ThickSpace", 8287}, {"ThinSpace", 8201}, {"Tilde", 8764}, {"TildeEqual", 8771}, {"TildeFullEqual", 8773}, {"TildeTilde", 8776}, {"TripleDot", 8411}, {"Tstrok", 358}, {"Uacute", 218}, {"Uarr", 8607}, {"Uarrocir", 10569}, {"Ubrcy", 1038}, {"Ubreve", 364}, {"Ucirc", 219}, {"Ucy", 1059}, {"Udblac", 368}, {"Ugrave", 217}, {"Umacr", 362}, {"UnderBar", 95}, {"UnderBrace", 9183}, {"UnderBracket", 9141}, {"UnderParenthesis", 9181}, {"Union", 8899}, {"UnionPlus", 8846}, {"Uogon", 370}, {"UpArrow", 8593}, {"UpArrowBar", 10514}, {"UpArrowDownArrow", 8645}, {"UpDownArrow", 8597}, {"UpEquilibrium", 10606}, {"UpTee", 8869}, {"UpTeeArrow", 8613}, {"Uparrow", 8657}, {"Updownarrow", 8661}, {"UpperLeftArrow", 8598}, {"UpperRightArrow", 8599}, {"Upsi", 978}, {"Upsilon", 933}, {"Uring", 366}, {"Utilde", 360}, {"Uuml", 220}, {"VDash", 8875}, {"Vbar", 10987}, {"Vcy", 1042}, {"Vdash", 8873}, {"Vdashl", 10982}, {"Vee", 8897}, {"Verbar", 8214}, {"Vert", 8214}, {"VerticalBar", 8739}, {"VerticalLine", 124}, {"VerticalSeparator", 10072}, {"VerticalTilde", 8768}, {"VeryThinSpace", 8202}, {"Vvdash", 8874}, {"Wcirc", 372}, {"Wedge", 8896}, {"Xi", 926}, {"YAcy", 1071}, {"YIcy", 1031}, {"YUcy", 1070}, {"Yacute", 221}, {"Ycirc", 374}, {"Ycy", 1067}, {"Yuml", 376}, {"ZHcy", 1046}, {"Zacute", 377}, {"Zcaron", 381}, {"Zcy", 1047}, {"Zdot", 379}, {"ZeroWidthSpace", 8203}, {"Zeta", 918}, {"Zfr", 8488}, {"Zopf", 8484}, {"_AMP", 38}, {"_COPY", 169}, {"_GT", 62}, {"_LT", 60}, {"_QUOT", 34}, {"_REG", 174}, {"_TRADE", 8482}, {"_emdash", 8212}, /* non-standard but commonly used */ {"_endash", 8211}, /* non-standard but commonly used */ {"_ldots", 8230}, {"_sp", 8194}, {"_varepsilon", 1013}, {"_varpi", 982}, {"_vsigma", 962}, {"_vtheta", 977}, {"aacute", 225}, {"abreve", 259}, {"ac", 8766}, {"acE", 8766}, {"acd", 8767}, {"acirc", 226}, {"acute", 180}, {"acy", 1072}, {"aelig", 230}, {"af", 8289}, {"agrave", 224}, {"alefsym", 8501}, {"aleph", 8501}, {"alpha", 945}, {"amacr", 257}, {"amalg", 10815}, {"amp", 38}, {"and", 8743}, {"andand", 10837}, {"andd", 10844}, {"andslope", 10840}, {"andv", 10842}, {"ang", 8736}, {"ange", 10660}, {"angle", 8736}, {"angmsd", 8737}, {"angmsdaa", 10664}, {"angmsdab", 10665}, {"angmsdac", 10666}, {"angmsdad", 10667}, {"angmsdae", 10668}, {"angmsdaf", 10669}, {"angmsdag", 10670}, {"angmsdah", 10671}, {"angrt", 8735}, {"angrtvb", 8894}, {"angrtvbd", 10653}, {"angsph", 8738}, {"angst", 197}, {"angzarr", 9084}, {"aogon", 261}, {"ap", 8776}, {"apE", 10864}, {"apacir", 10863}, {"ape", 8778}, {"apid", 8779}, {"apos", 39}, {"approx", 8776}, {"approxeq", 8778}, {"aring", 229}, {"ast", 42}, {"asymp", 8776}, {"asympeq", 8781}, {"atilde", 227}, {"auml", 228}, {"awconint", 8755}, {"awint", 10769}, {"bNot", 10989}, {"backcong", 8780}, {"backepsilon", 1014}, {"backprime", 8245}, {"backsim", 8765}, {"backsimeq", 8909}, {"barvee", 8893}, {"barwed", 8965}, {"barwedge", 8965}, {"bbrk", 9141}, {"bbrktbrk", 9142}, {"bcong", 8780}, {"bcy", 1073}, {"bdquo", 8222}, {"becaus", 8757}, {"because", 8757}, {"bemptyv", 10672}, {"bepsi", 1014}, {"bernou", 8492}, {"beta", 946}, {"beth", 8502}, {"between", 8812}, {"bigcap", 8898}, {"bigcirc", 9711}, {"bigcup", 8899}, {"bigodot", 10752}, {"bigoplus", 10753}, {"bigotimes", 10754}, {"bigsqcup", 10758}, {"bigstar", 9733}, {"bigtriangledown", 9661}, {"bigtriangleup", 9651}, {"biguplus", 10756}, {"bigvee", 8897}, {"bigwedge", 8896}, {"bkarow", 10509}, {"blacklozenge", 10731}, {"blacksquare", 9642}, {"blacktriangle", 9652}, {"blacktriangledown", 9662}, {"blacktriangleleft", 9666}, {"blacktriangleright", 9656}, {"blank", 9251}, {"blk12", 9618}, {"blk14", 9617}, {"blk34", 9619}, {"block", 9608}, {"bne", 61}, {"bnequiv", 8801}, {"bnot", 8976}, {"bot", 8869}, {"bottom", 8869}, {"bowtie", 8904}, {"boxDL", 9559}, {"boxDR", 9556}, {"boxDl", 9558}, {"boxDr", 9555}, {"boxH", 9552}, {"boxHD", 9574}, {"boxHU", 9577}, {"boxHd", 9572}, {"boxHu", 9575}, {"boxUL", 9565}, {"boxUR", 9562}, {"boxUl", 9564}, {"boxUr", 9561}, {"boxV", 9553}, {"boxVH", 9580}, {"boxVL", 9571}, {"boxVR", 9568}, {"boxVh", 9579}, {"boxVl", 9570}, {"boxVr", 9567}, {"boxbox", 10697}, {"boxdL", 9557}, {"boxdR", 9554}, {"boxdl", 9488}, {"boxdr", 9484}, {"boxh", 9472}, {"boxhD", 9573}, {"boxhU", 9576}, {"boxhd", 9516}, {"boxhu", 9524}, {"boxminus", 8863}, {"boxplus", 8862}, {"boxtimes", 8864}, {"boxuL", 9563}, {"boxuR", 9560}, {"boxul", 9496}, {"boxur", 9492}, {"boxv", 9474}, {"boxvH", 9578}, {"boxvL", 9569}, {"boxvR", 9566}, {"boxvh", 9532}, {"boxvl", 9508}, {"boxvr", 9500}, {"bprime", 8245}, {"breve", 728}, {"brvbar", 166}, {"bsemi", 8271}, {"bsim", 8765}, {"bsime", 8909}, {"bsol", 92}, {"bsolb", 10693}, {"bsolhsub", 10184}, {"bull", 8226}, {"bullet", 8226}, {"bump", 8782}, {"bumpE", 10926}, {"bumpe", 8783}, {"bumpeq", 8783}, {"cacute", 263}, {"cap", 8745}, {"capand", 10820}, {"capbrcup", 10825}, {"capcap", 10827}, {"capcup", 10823}, {"capdot", 10816}, {"caps", 8745}, {"caret", 8257}, {"caron", 711}, {"ccaps", 10829}, {"ccaron", 269}, {"ccedil", 231}, {"ccirc", 265}, {"ccups", 10828}, {"ccupssm", 10832}, {"cdot", 267}, {"cdots", 8943}, {"cedil", 184}, {"cemptyv", 10674}, {"cent", 162}, {"centerdot", 183}, {"chcy", 1095}, {"check", 10003}, {"checkmark", 10003}, {"chi", 967}, {"cir", 9675}, {"cirE", 10691}, {"circ", 710}, {"circeq", 8791}, {"circlearrowleft", 8634}, {"circlearrowright", 8635}, {"circledR", 174}, {"circledS", 9416}, {"circledast", 8859}, {"circledcirc", 8858}, {"circleddash", 8861}, {"cire", 8791}, {"cirfnint", 10768}, {"cirmid", 10991}, {"cirscir", 10690}, {"clubs", 9827}, {"clubsuit", 9827}, {"colon", 58}, {"colone", 8788}, {"coloneq", 8788}, {"comma", 44}, {"commat", 64}, {"comp", 8705}, {"compfn", 8728}, {"complement", 8705}, {"complexes", 8450}, {"cong", 8773}, {"congdot", 10861}, {"conint", 8750}, {"coprod", 8720}, {"copy", 169}, {"copysr", 8471}, {"crarr", 8629}, {"cross", 10007}, {"csub", 10959}, {"csube", 10961}, {"csup", 10960}, {"csupe", 10962}, {"ctdot", 8943}, {"cudarrl", 10552}, {"cudarrr", 10549}, {"cuepr", 8926}, {"cuesc", 8927}, {"cularr", 8630}, {"cularrp", 10557}, {"cup", 8746}, {"cupbrcap", 10824}, {"cupcap", 10822}, {"cupcup", 10826}, {"cupdot", 8845}, {"cupor", 10821}, {"cups", 8746}, {"curarr", 8631}, {"curarrm", 10556}, {"curlyeqprec", 8926}, {"curlyeqsucc", 8927}, {"curlyvee", 8910}, {"curlywedge", 8911}, {"curren", 164}, {"curvearrowleft", 8630}, {"curvearrowright", 8631}, {"cuvee", 8910}, {"cuwed", 8911}, {"cwconint", 8754}, {"cwint", 8753}, {"cylcty", 9005}, {"dArr", 8659}, {"dHar", 10597}, {"dagger", 8224}, {"daleth", 8504}, {"darr", 8595}, {"dash", 8208}, {"dashv", 8867}, {"dbkarow", 10511}, {"dblac", 733}, {"dcaron", 271}, {"dcy", 1076}, {"dd", 8518}, {"ddagger", 8225}, {"ddarr", 8650}, {"ddots", 8945}, {"ddotseq", 10871}, {"deg", 176}, {"delta", 948}, {"demptyv", 10673}, {"dfisht", 10623}, {"dharl", 8643}, {"dharr", 8642}, {"diam", 8900}, {"diamond", 8900}, {"diamondsuit", 9830}, {"diams", 9830}, {"die", 168}, {"digamma", 989}, {"disin", 8946}, {"div", 247}, {"divide", 247}, {"divideontimes", 8903}, {"divonx", 8903}, {"djcy", 1106}, {"dlcorn", 8990}, {"dlcrop", 8973}, {"dollar", 36}, {"dot", 729}, {"doteq", 8784}, {"doteqdot", 8785}, {"dotminus", 8760}, {"dotplus", 8724}, {"dotsquare", 8865}, {"doublebarwedge", 8966}, {"downarrow", 8595}, {"downdownarrows", 8650}, {"downharpoonleft", 8643}, {"downharpoonright", 8642}, {"drbkarow", 10512}, {"drcorn", 8991}, {"drcrop", 8972}, {"dscy", 1109}, {"dsol", 10742}, {"dstrok", 273}, {"dtdot", 8945}, {"dtri", 9663}, {"dtrif", 9662}, {"duarr", 8693}, {"duhar", 10607}, {"dwangle", 10662}, {"dzcy", 1119}, {"dzigrarr", 10239}, {"eDDot", 10871}, {"eDot", 8785}, {"eacute", 233}, {"easter", 10862}, {"ecaron", 283}, {"ecir", 8790}, {"ecirc", 234}, {"ecolon", 8789}, {"ecy", 1101}, {"edot", 279}, {"ee", 8519}, {"efDot", 8786}, {"eg", 10906}, {"egrave", 232}, {"egs", 10902}, {"egsdot", 10904}, {"el", 10905}, {"elinters", 9191}, {"ell", 8467}, {"els", 10901}, {"elsdot", 10903}, {"emacr", 275}, {"empty", 8709}, {"emptyset", 8709}, {"emptyv", 8709}, {"emsp", 8195}, {"emsp13", 8196}, {"emsp14", 8197}, {"eng", 331}, {"ensp", 8194}, {"eogon", 281}, {"epar", 8917}, {"eparsl", 10723}, {"eplus", 10865}, {"epsi", 949}, {"epsilon", 949}, {"epsiv", 1013}, {"eqcirc", 8790}, {"eqcolon", 8789}, {"eqsim", 8770}, {"eqslantgtr", 10902}, {"eqslantless", 10901}, {"equals", 61}, {"equest", 8799}, {"equiv", 8801}, {"equivDD", 10872}, {"eqvparsl", 10725}, {"erDot", 8787}, {"erarr", 10609}, {"escr", 8495}, {"esdot", 8784}, {"esim", 8770}, {"eta", 951}, {"eth", 240}, {"euml", 235}, {"euro", 8364}, {"excl", 33}, {"exist", 8707}, {"expectation", 8496}, {"exponentiale", 8519}, {"fallingdotseq", 8786}, {"fcy", 1092}, {"female", 9792}, {"ffilig", 64259}, {"fflig", 64256}, {"ffllig", 64260}, {"filig", 64257}, {"fjlig", 102}, {"flat", 9837}, {"fllig", 64258}, {"fltns", 9649}, {"fnof", 402}, {"forall", 8704}, {"fork", 8916}, {"forkv", 10969}, {"fpartint", 10765}, {"frac12", 189}, {"frac13", 8531}, {"frac14", 188}, {"frac15", 8533}, {"frac16", 8537}, {"frac18", 8539}, {"frac23", 8532}, {"frac25", 8534}, {"frac34", 190}, {"frac35", 8535}, {"frac38", 8540}, {"frac45", 8536}, {"frac56", 8538}, {"frac58", 8541}, {"frac78", 8542}, {"frasl", 8260}, {"frown", 8994}, {"gE", 8807}, {"gEl", 10892}, {"gacute", 501}, {"gamma", 947}, {"gammad", 989}, {"gap", 10886}, {"gbreve", 287}, {"gcirc", 285}, {"gcy", 1075}, {"gdot", 289}, {"ge", 8805}, {"gel", 8923}, {"geq", 8805}, {"geqq", 8807}, {"geqslant", 10878}, {"ges", 10878}, {"gescc", 10921}, {"gesdot", 10880}, {"gesdoto", 10882}, {"gesdotol", 10884}, {"gesl", 8923}, {"gesles", 10900}, {"gg", 8811}, {"ggg", 8921}, {"gimel", 8503}, {"gjcy", 1107}, {"gl", 8823}, {"glE", 10898}, {"gla", 10917}, {"glj", 10916}, {"gnE", 8809}, {"gnap", 10890}, {"gnapprox", 10890}, {"gne", 10888}, {"gneq", 10888}, {"gneqq", 8809}, {"gnsim", 8935}, {"grave", 96}, {"gscr", 8458}, {"gsim", 8819}, {"gsime", 10894}, {"gsiml", 10896}, {"gt", 62}, {"gtcc", 10919}, {"gtcir", 10874}, {"gtdot", 8919}, {"gtlPar", 10645}, {"gtquest", 10876}, {"gtrapprox", 10886}, {"gtrarr", 10616}, {"gtrdot", 8919}, {"gtreqless", 8923}, {"gtreqqless", 10892}, {"gtrless", 8823}, {"gtrsim", 8819}, {"gvertneqq", 8809}, {"gvnE", 8809}, {"hArr", 8660}, {"hairsp", 8202}, {"half", 189}, {"hamilt", 8459}, {"hardcy", 1098}, {"harr", 8596}, {"harrcir", 10568}, {"harrw", 8621}, {"hbar", 8463}, {"hcirc", 293}, {"hearts", 9829}, {"heartsuit", 9829}, {"hellip", 8230}, {"hercon", 8889}, {"hksearow", 10533}, {"hkswarow", 10534}, {"hoarr", 8703}, {"homtht", 8763}, {"hookleftarrow", 8617}, {"hookrightarrow", 8618}, {"horbar", 8213}, {"hslash", 8463}, {"hstrok", 295}, {"hybull", 8259}, {"hyphen", 8208}, {"iacute", 237}, {"ic", 8291}, {"icirc", 238}, {"icy", 1080}, {"iecy", 1077}, {"iexcl", 161}, {"iff", 8660}, {"igrave", 236}, {"ii", 8520}, {"iiiint", 10764}, {"iiint", 8749}, {"iinfin", 10716}, {"iiota", 8489}, {"ijlig", 307}, {"imacr", 299}, {"image", 8465}, {"imagline", 8464}, {"imagpart", 8465}, {"imath", 305}, {"imof", 8887}, {"imped", 437}, {"in", 8712}, {"incare", 8453}, {"infin", 8734}, {"infintie", 10717}, {"inodot", 305}, {"int", 8747}, {"intcal", 8890}, {"integers", 8484}, {"intercal", 8890}, {"intlarhk", 10775}, {"intprod", 10812}, {"iocy", 1105}, {"iogon", 303}, {"iota", 953}, {"iprod", 10812}, {"iquest", 191}, {"isin", 8712}, {"isinE", 8953}, {"isindot", 8949}, {"isins", 8948}, {"isinsv", 8947}, {"isinv", 8712}, {"it", 8290}, {"itilde", 297}, {"iukcy", 1110}, {"iuml", 239}, {"jcirc", 309}, {"jcy", 1081}, {"jmath", 567}, {"jsercy", 1112}, {"jukcy", 1108}, {"kappa", 954}, {"kappav", 1008}, {"kcedil", 311}, {"kcy", 1082}, {"kgreen", 312}, {"khcy", 1093}, {"kjcy", 1116}, {"lAarr", 8666}, {"lArr", 8656}, {"lAtail", 10523}, {"lBarr", 10510}, {"lE", 8806}, {"lEg", 10891}, {"lHar", 10594}, {"lacute", 314}, {"laemptyv", 10676}, {"lagran", 8466}, {"lambda", 955}, {"lang", 10216}, {"lang", 9001}, {"langd", 10641}, {"langle", 10216}, {"lap", 10885}, {"laquo", 171}, {"larr", 8592}, {"larrb", 8676}, {"larrbfs", 10527}, {"larrfs", 10525}, {"larrhk", 8617}, {"larrlp", 8619}, {"larrpl", 10553}, {"larrsim", 10611}, {"larrtl", 8610}, {"lat", 10923}, {"latail", 10521}, {"late", 10925}, {"lates", 10925}, {"lbarr", 10508}, {"lbbrk", 10098}, {"lbrace", 123}, {"lbrack", 91}, {"lbrke", 10635}, {"lbrksld", 10639}, {"lbrkslu", 10637}, {"lcaron", 318}, {"lcedil", 316}, {"lceil", 8968}, {"lcub", 123}, {"lcy", 1083}, {"ldca", 10550}, {"ldquo", 8220}, {"ldquor", 8222}, {"ldrdhar", 10599}, {"ldrushar", 10571}, {"ldsh", 8626}, {"le", 8804}, {"leftarrow", 8592}, {"leftarrowtail", 8610}, {"leftharpoondown", 8637}, {"leftharpoonup", 8636}, {"leftleftarrows", 8647}, {"leftrightarrow", 8596}, {"leftrightarrows", 8646}, {"leftrightharpoons", 8651}, {"leftrightsquigarrow", 8621}, {"leftthreetimes", 8907}, {"leg", 8922}, {"leq", 8804}, {"leqq", 8806}, {"leqslant", 10877}, {"les", 10877}, {"lescc", 10920}, {"lesdot", 10879}, {"lesdoto", 10881}, {"lesdotor", 10883}, {"lesg", 8922}, {"lesges", 10899}, {"lessapprox", 10885}, {"lessdot", 8918}, {"lesseqgtr", 8922}, {"lesseqqgtr", 10891}, {"lessgtr", 8822}, {"lesssim", 8818}, {"lfisht", 10620}, {"lfloor", 8970}, {"lg", 8822}, {"lgE", 10897}, {"lhard", 8637}, {"lharu", 8636}, {"lharul", 10602}, {"lhblk", 9604}, {"ljcy", 1113}, {"ll", 8810}, {"llarr", 8647}, {"llcorner", 8990}, {"llhard", 10603}, {"lltri", 9722}, {"lmidot", 320}, {"lmoust", 9136}, {"lmoustache", 9136}, {"lnE", 8808}, {"lnap", 10889}, {"lnapprox", 10889}, {"lne", 10887}, {"lneq", 10887}, {"lneqq", 8808}, {"lnsim", 8934}, {"loang", 10220}, {"loarr", 8701}, {"lobrk", 10214}, {"longleftarrow", 10229}, {"longleftrightarrow", 10231}, {"longmapsto", 10236}, {"longrightarrow", 10230}, {"looparrowleft", 8619}, {"looparrowright", 8620}, {"lopar", 10629}, {"loplus", 10797}, {"lotimes", 10804}, {"lowast", 8727}, {"lowbar", 95}, {"loz", 9674}, {"lozenge", 9674}, {"lozf", 10731}, {"lpar", 40}, {"lparlt", 10643}, {"lrarr", 8646}, {"lrcorner", 8991}, {"lrhar", 8651}, {"lrhard", 10605}, {"lrm", 8206}, {"lrtri", 8895}, {"lsaquo", 8249}, {"lsh", 8624}, {"lsim", 8818}, {"lsime", 10893}, {"lsimg", 10895}, {"lsqb", 91}, {"lsquo", 8216}, {"lsquor", 8218}, {"lstrok", 322}, {"lt", 60}, {"ltcc", 10918}, {"ltcir", 10873}, {"ltdot", 8918}, {"lthree", 8907}, {"ltimes", 8905}, {"ltlarr", 10614}, {"ltquest", 10875}, {"ltrPar", 10646}, {"ltri", 9667}, {"ltrie", 8884}, {"ltrif", 9666}, {"lurdshar", 10570}, {"luruhar", 10598}, {"lvertneqq", 8808}, {"lvnE", 8808}, {"mDDot", 8762}, {"macr", 175}, {"male", 9794}, {"malt", 10016}, {"maltese", 10016}, {"map", 8614}, {"mapsto", 8614}, {"mapstodown", 8615}, {"mapstoleft", 8612}, {"mapstoup", 8613}, {"marker", 9646}, {"mcomma", 10793}, {"mcy", 1084}, {"mdash", 8212}, {"measuredangle", 8737}, {"mho", 8487}, {"micro", 181}, {"mid", 8739}, {"midast", 42}, {"midcir", 10992}, {"middot", 183}, {"minus", 8722}, {"minusb", 8863}, {"minusd", 8760}, {"minusdu", 10794}, {"mlcp", 10971}, {"mldr", 8230}, {"mnplus", 8723}, {"models", 8871}, {"mp", 8723}, {"mstpos", 8766}, {"mu", 956}, {"multimap", 8888}, {"mumap", 8888}, {"nGg", 8921}, {"nGt", 8811}, {"nGtv", 8811}, {"nLeftarrow", 8653}, {"nLeftrightarrow", 8654}, {"nLl", 8920}, {"nLt", 8810}, {"nLtv", 8810}, {"nRightarrow", 8655}, {"nVDash", 8879}, {"nVdash", 8878}, {"nabla", 8711}, {"nacute", 324}, {"nang", 8736}, {"nap", 8777}, {"napE", 10864}, {"napid", 8779}, {"napos", 329}, {"napprox", 8777}, {"natur", 9838}, {"natural", 9838}, {"naturals", 8469}, {"nbsp", 160}, {"nbump", 8782}, {"nbumpe", 8783}, {"ncap", 10819}, {"ncaron", 328}, {"ncedil", 326}, {"ncong", 8775}, {"ncongdot", 10861}, {"ncup", 10818}, {"ncy", 1085}, {"ndash", 8211}, {"ne", 8800}, {"neArr", 8663}, {"nearhk", 10532}, {"nearr", 8599}, {"nearrow", 8599}, {"nedot", 8784}, {"nequiv", 8802}, {"nesear", 10536}, {"nesim", 8770}, {"nexist", 8708}, {"nexists", 8708}, {"ngE", 8807}, {"nge", 8817}, {"ngeq", 8817}, {"ngeqq", 8807}, {"ngeqslant", 10878}, {"nges", 10878}, {"ngsim", 8821}, {"ngt", 8815}, {"ngtr", 8815}, {"nhArr", 8654}, {"nharr", 8622}, {"nhpar", 10994}, {"ni", 8715}, {"nis", 8956}, {"nisd", 8954}, {"niv", 8715}, {"njcy", 1114}, {"nlArr", 8653}, {"nlE", 8806}, {"nlarr", 8602}, {"nldr", 8229}, {"nle", 8816}, {"nleftarrow", 8602}, {"nleftrightarrow", 8622}, {"nleq", 8816}, {"nleqq", 8806}, {"nleqslant", 10877}, {"nles", 10877}, {"nless", 8814}, {"nlsim", 8820}, {"nlt", 8814}, {"nltri", 8938}, {"nltrie", 8940}, {"nmid", 8740}, {"not", 172}, {"notin", 8713}, {"notinE", 8953}, {"notindot", 8949}, {"notinva", 8713}, {"notinvb", 8951}, {"notinvc", 8950}, {"notni", 8716}, {"notniva", 8716}, {"notnivb", 8958}, {"notnivc", 8957}, {"npar", 8742}, {"nparallel", 8742}, {"nparsl", 11005}, {"npart", 8706}, {"npolint", 10772}, {"npr", 8832}, {"nprcue", 8928}, {"npre", 10927}, {"nprec", 8832}, {"npreceq", 10927}, {"nrArr", 8655}, {"nrarr", 8603}, {"nrarrc", 10547}, {"nrarrw", 8605}, {"nrightarrow", 8603}, {"nrtri", 8939}, {"nrtrie", 8941}, {"nsc", 8833}, {"nsccue", 8929}, {"nsce", 10928}, {"nshortmid", 8740}, {"nshortparallel", 8742}, {"nsim", 8769}, {"nsime", 8772}, {"nsimeq", 8772}, {"nsmid", 8740}, {"nspar", 8742}, {"nsqsube", 8930}, {"nsqsupe", 8931}, {"nsub", 8836}, {"nsubE", 10949}, {"nsube", 8840}, {"nsubset", 8834}, {"nsubseteq", 8840}, {"nsubseteqq", 10949}, {"nsucc", 8833}, {"nsucceq", 10928}, {"nsup", 8837}, {"nsupE", 10950}, {"nsupe", 8841}, {"nsupset", 8835}, {"nsupseteq", 8841}, {"nsupseteqq", 10950}, {"ntgl", 8825}, {"ntilde", 241}, {"ntlg", 8824}, {"ntriangleleft", 8938}, {"ntrianglelefteq", 8940}, {"ntriangleright", 8939}, {"ntrianglerighteq", 8941}, {"nu", 957}, {"num", 35}, {"numero", 8470}, {"numsp", 8199}, {"nvDash", 8877}, {"nvHarr", 10500}, {"nvap", 8781}, {"nvdash", 8876}, {"nvge", 8805}, {"nvgt", 62}, {"nvinfin", 10718}, {"nvlArr", 10498}, {"nvle", 8804}, {"nvlt", 60}, {"nvltrie", 8884}, {"nvrArr", 10499}, {"nvrtrie", 8885}, {"nvsim", 8764}, {"nwArr", 8662}, {"nwarhk", 10531}, {"nwarr", 8598}, {"nwarrow", 8598}, {"nwnear", 10535}, {"oS", 9416}, {"oacute", 243}, {"oast", 8859}, {"ocir", 8858}, {"ocirc", 244}, {"ocy", 1086}, {"odash", 8861}, {"odblac", 337}, {"odiv", 10808}, {"odot", 8857}, {"odsold", 10684}, {"oelig", 339}, {"ofcir", 10687}, {"ogon", 731}, {"ograve", 242}, {"ogt", 10689}, {"ohbar", 10677}, {"ohm", 937}, {"oint", 8750}, {"olarr", 8634}, {"olcir", 10686}, {"olcross", 10683}, {"oline", 8254}, {"olt", 10688}, {"omacr", 333}, {"omega", 969}, {"omicron", 959}, {"omid", 10678}, {"ominus", 8854}, {"opar", 10679}, {"operp", 10681}, {"oplus", 8853}, {"or", 8744}, {"orarr", 8635}, {"ord", 10845}, {"order", 8500}, {"orderof", 8500}, {"ordf", 170}, {"ordm", 186}, {"origof", 8886}, {"oror", 10838}, {"orslope", 10839}, {"orv", 10843}, {"oscr", 8500}, {"oslash", 248}, {"osol", 8856}, {"otilde", 245}, {"otimes", 8855}, {"otimesas", 10806}, {"ouml", 246}, {"ovbar", 9021}, {"par", 8741}, {"para", 182}, {"parallel", 8741}, {"parsim", 10995}, {"parsl", 11005}, {"part", 8706}, {"pcy", 1087}, {"percnt", 37}, {"period", 46}, {"permil", 8240}, {"perp", 8869}, {"pertenk", 8241}, {"phi", 966}, {"phiv", 981}, {"phmmat", 8499}, {"phone", 9742}, {"pi", 960}, {"pitchfork", 8916}, {"piv", 982}, {"planck", 8463}, {"planckh", 8462}, {"plankv", 8463}, {"plus", 43}, {"plusacir", 10787}, {"plusb", 8862}, {"pluscir", 10786}, {"plusdo", 8724}, {"plusdu", 10789}, {"pluse", 10866}, {"plusmn", 177}, {"plussim", 10790}, {"plustwo", 10791}, {"pm", 177}, {"pointint", 10773}, {"pound", 163}, {"pr", 8826}, {"prE", 10931}, {"prap", 10935}, {"prcue", 8828}, {"pre", 10927}, {"prec", 8826}, {"precapprox", 10935}, {"preccurlyeq", 8828}, {"preceq", 10927}, {"precnapprox", 10937}, {"precneqq", 10933}, {"precnsim", 8936}, {"precsim", 8830}, {"prime", 8242}, {"primes", 8473}, {"prnE", 10933}, {"prnap", 10937}, {"prnsim", 8936}, {"prod", 8719}, {"profalar", 9006}, {"profline", 8978}, {"profsurf", 8979}, {"prop", 8733}, {"propto", 8733}, {"prsim", 8830}, {"prurel", 8880}, {"psi", 968}, {"puncsp", 8200}, {"qint", 10764}, {"qprime", 8279}, {"quad", 8193}, {"quaternions", 8461}, {"quatint", 10774}, {"quest", 63}, {"questeq", 8799}, {"quot", 34}, {"rAarr", 8667}, {"rArr", 8658}, {"rAtail", 10524}, {"rBarr", 10511}, {"rHar", 10596}, {"race", 8765}, {"racute", 341}, {"radic", 8730}, {"raemptyv", 10675}, {"rang", 10217}, {"rang", 9002}, {"rangd", 10642}, {"range", 10661}, {"rangle", 10217}, {"raquo", 187}, {"rarr", 8594}, {"rarrap", 10613}, {"rarrb", 8677}, {"rarrbfs", 10528}, {"rarrc", 10547}, {"rarrfs", 10526}, {"rarrhk", 8618}, {"rarrlp", 8620}, {"rarrpl", 10565}, {"rarrsim", 10612}, {"rarrtl", 8611}, {"rarrw", 8605}, {"ratail", 10522}, {"ratio", 8758}, {"rationals", 8474}, {"rbarr", 10509}, {"rbbrk", 10099}, {"rbrace", 125}, {"rbrack", 93}, {"rbrke", 10636}, {"rbrksld", 10638}, {"rbrkslu", 10640}, {"rcaron", 345}, {"rcedil", 343}, {"rceil", 8969}, {"rcub", 125}, {"rcy", 1088}, {"rdca", 10551}, {"rdldhar", 10601}, {"rdquo", 8221}, {"rdquor", 8221}, {"rdsh", 8627}, {"real", 8476}, {"realine", 8475}, {"realpart", 8476}, {"reals", 8477}, {"rect", 9645}, {"reg", 174}, {"rfisht", 10621}, {"rfloor", 8971}, {"rhard", 8641}, {"rharu", 8640}, {"rharul", 10604}, {"rho", 961}, {"rhov", 1009}, {"rightarrow", 8594}, {"rightarrowtail", 8611}, {"rightharpoondown", 8641}, {"rightharpoonup", 8640}, {"rightleftarrows", 8644}, {"rightleftharpoons", 8652}, {"rightrightarrows", 8649}, {"rightsquigarrow", 8605}, {"rightthreetimes", 8908}, {"ring", 730}, {"risingdotseq", 8787}, {"rlarr", 8644}, {"rlhar", 8652}, {"rlm", 8207}, {"rmoust", 9137}, {"rmoustache", 9137}, {"rnmid", 10990}, {"roang", 10221}, {"roarr", 8702}, {"robrk", 10215}, {"ropar", 10630}, {"roplus", 10798}, {"rotimes", 10805}, {"rpar", 41}, {"rpargt", 10644}, {"rppolint", 10770}, {"rrarr", 8649}, {"rsaquo", 8250}, {"rsh", 8625}, {"rsqb", 93}, {"rsquo", 8217}, {"rsquor", 8217}, {"rthree", 8908}, {"rtimes", 8906}, {"rtri", 9657}, {"rtrie", 8885}, {"rtrif", 9656}, {"rtriltri", 10702}, {"ruluhar", 10600}, {"rx", 8478}, {"sacute", 347}, {"sbquo", 8218}, {"sc", 8827}, {"scE", 10932}, {"scap", 10936}, {"scaron", 353}, {"sccue", 8829}, {"sce", 10928}, {"scedil", 351}, {"scirc", 349}, {"scnE", 10934}, {"scnap", 10938}, {"scnsim", 8937}, {"scpolint", 10771}, {"scsim", 8831}, {"scy", 1089}, {"sdot", 8901}, {"sdotb", 8865}, {"sdote", 10854}, {"seArr", 8664}, {"searhk", 10533}, {"searr", 8600}, {"searrow", 8600}, {"sect", 167}, {"semi", 59}, {"seswar", 10537}, {"setminus", 8726}, {"setmn", 8726}, {"sext", 10038}, {"sfrown", 8994}, {"sharp", 9839}, {"shchcy", 1097}, {"shcy", 1096}, {"shortmid", 8739}, {"shortparallel", 8741}, {"shy", 173}, {"sigma", 963}, {"sigmaf", 962}, {"sigmav", 962}, {"sim", 8764}, {"simdot", 10858}, {"sime", 8771}, {"simeq", 8771}, {"simg", 10910}, {"simgE", 10912}, {"siml", 10909}, {"simlE", 10911}, {"simne", 8774}, {"simplus", 10788}, {"simrarr", 10610}, {"slarr", 8592}, {"smallsetminus", 8726}, {"smashp", 10803}, {"smeparsl", 10724}, {"smid", 8739}, {"smile", 8995}, {"smt", 10922}, {"smte", 10924}, {"smtes", 10924}, {"softcy", 1100}, {"sol", 47}, {"solb", 10692}, {"solbar", 9023}, {"spades", 9824}, {"spadesuit", 9824}, {"spar", 8741}, {"sqcap", 8851}, {"sqcaps", 8851}, {"sqcup", 8852}, {"sqcups", 8852}, {"sqsub", 8847}, {"sqsube", 8849}, {"sqsubset", 8847}, {"sqsubseteq", 8849}, {"sqsup", 8848}, {"sqsupe", 8850}, {"sqsupset", 8848}, {"sqsupseteq", 8850}, {"squ", 9633}, {"square", 9633}, {"squarf", 9642}, {"squf", 9642}, {"srarr", 8594}, {"ssetmn", 8726}, {"ssmile", 8995}, {"sstarf", 8902}, {"star", 9734}, {"starf", 9733}, {"straightepsilon", 1013}, {"straightphi", 981}, {"strns", 175}, {"sub", 8834}, {"subE", 10949}, {"subdot", 10941}, {"sube", 8838}, {"subedot", 10947}, {"submult", 10945}, {"subnE", 10955}, {"subne", 8842}, {"subplus", 10943}, {"subrarr", 10617}, {"subset", 8834}, {"subseteq", 8838}, {"subseteqq", 10949}, {"subsetneq", 8842}, {"subsetneqq", 10955}, {"subsim", 10951}, {"subsub", 10965}, {"subsup", 10963}, {"succ", 8827}, {"succapprox", 10936}, {"succcurlyeq", 8829}, {"succeq", 10928}, {"succnapprox", 10938}, {"succneqq", 10934}, {"succnsim", 8937}, {"succsim", 8831}, {"sum", 8721}, {"sung", 9834}, {"sup", 8835}, {"sup1", 185}, {"sup2", 178}, {"sup3", 179}, {"supE", 10950}, {"supdot", 10942}, {"supdsub", 10968}, {"supe", 8839}, {"supedot", 10948}, {"suphsol", 10185}, {"suphsub", 10967}, {"suplarr", 10619}, {"supmult", 10946}, {"supnE", 10956}, {"supne", 8843}, {"supplus", 10944}, {"supset", 8835}, {"supseteq", 8839}, {"supseteqq", 10950}, {"supsetneq", 8843}, {"supsetneqq", 10956}, {"supsim", 10952}, {"supsub", 10964}, {"supsup", 10966}, {"swArr", 8665}, {"swarhk", 10534}, {"swarr", 8601}, {"swarrow", 8601}, {"swnwar", 10538}, {"szlig", 223}, {"target", 8982}, {"tau", 964}, {"tbrk", 9140}, {"tcaron", 357}, {"tcedil", 355}, {"tcy", 1090}, {"tdot", 8411}, {"telrec", 8981}, {"there4", 8756}, {"therefore", 8756}, {"theta", 952}, {"thetasym", 977}, {"thetav", 977}, {"thickapprox", 8776}, {"thicksim", 8764}, {"thinsp", 8201}, {"thkap", 8776}, {"thksim", 8764}, {"thorn", 254}, {"tilde", 732}, {"times", 215}, {"timesb", 8864}, {"timesbar", 10801}, {"timesd", 10800}, {"tint", 8749}, {"toea", 10536}, {"top", 8868}, {"topbot", 9014}, {"topcir", 10993}, {"topfork", 10970}, {"tosa", 10537}, {"tprime", 8244}, {"trade", 8482}, {"triangle", 9653}, {"triangledown", 9663}, {"triangleleft", 9667}, {"trianglelefteq", 8884}, {"triangleq", 8796}, {"triangleright", 9657}, {"trianglerighteq", 8885}, {"tridot", 9708}, {"trie", 8796}, {"triminus", 10810}, {"triplus", 10809}, {"trisb", 10701}, {"tritime", 10811}, {"trpezium", 9186}, {"tscy", 1094}, {"tshcy", 1115}, {"tstrok", 359}, {"twixt", 8812}, {"twoheadleftarrow", 8606}, {"twoheadrightarrow", 8608}, {"uArr", 8657}, {"uHar", 10595}, {"uacute", 250}, {"uarr", 8593}, {"ubrcy", 1118}, {"ubreve", 365}, {"ucirc", 251}, {"ucy", 1091}, {"udarr", 8645}, {"udblac", 369}, {"udhar", 10606}, {"ufisht", 10622}, {"ugrave", 249}, {"uharl", 8639}, {"uharr", 8638}, {"uhblk", 9600}, {"ulcorn", 8988}, {"ulcorner", 8988}, {"ulcrop", 8975}, {"ultri", 9720}, {"umacr", 363}, {"uml", 168}, {"uogon", 371}, {"uparrow", 8593}, {"updownarrow", 8597}, {"upharpoonleft", 8639}, {"upharpoonright", 8638}, {"uplus", 8846}, {"upsi", 965}, {"upsih", 978}, {"upsilon", 965}, {"upuparrows", 8648}, {"urcorn", 8989}, {"urcorner", 8989}, {"urcrop", 8974}, {"uring", 367}, {"urtri", 9721}, {"utdot", 8944}, {"utilde", 361}, {"utri", 9653}, {"utrif", 9652}, {"uuarr", 8648}, {"uuml", 252}, {"uwangle", 10663}, {"vArr", 8661}, {"vBar", 10984}, {"vBarv", 10985}, {"vDash", 8872}, {"vangrt", 10652}, {"varkappa", 1008}, {"varnothing", 8709}, {"varphi", 981}, {"varpropto", 8733}, {"varr", 8597}, {"varrho", 1009}, {"varsigma", 962}, {"varsubsetneq", 8842}, {"varsubsetneqq", 10955}, {"varsupsetneq", 8843}, {"varsupsetneqq", 10956}, {"vartheta", 977}, {"vartriangleleft", 8882}, {"vartriangleright", 8883}, {"vcy", 1074}, {"vdash", 8866}, {"vdots", 8942}, {"vee", 8744}, {"veebar", 8891}, {"veeeq", 8794}, {"vellip", 8942}, {"verbar", 124}, {"vert", 124}, {"vltri", 8882}, {"vnsub", 8834}, {"vnsup", 8835}, {"vprop", 8733}, {"vrtri", 8883}, {"vsubnE", 10955}, {"vsubne", 8842}, {"vsupnE", 10956}, {"vsupne", 8843}, {"vzigzag", 10650}, {"wcirc", 373}, {"wedbar", 10847}, {"wedge", 8743}, {"wedgeq", 8793}, {"weierp", 8472}, {"wp", 8472}, {"wr", 8768}, {"wreath", 8768}, {"xcap", 8898}, {"xcirc", 9711}, {"xcup", 8899}, {"xdtri", 9661}, {"xhArr", 10234}, {"xharr", 10231}, {"xi", 958}, {"xlArr", 10232}, {"xlarr", 10229}, {"xmap", 10236}, {"xnis", 8955}, {"xodot", 10752}, {"xoplus", 10753}, {"xotime", 10754}, {"xrArr", 10233}, {"xrarr", 10230}, {"xsqcup", 10758}, {"xuplus", 10756}, {"xutri", 9651}, {"xvee", 8897}, {"xwedge", 8896}, {"yacute", 253}, {"yacy", 1103}, {"ycirc", 375}, {"ycy", 1099}, {"yen", 165}, {"yicy", 1111}, {"yucy", 1102}, {"yuml", 255}, {"zacute", 378}, {"zcaron", 382}, {"zcy", 1079}, {"zdot", 380}, {"zeetrf", 8488}, {"zeta", 950}, {"zhcy", 1078}, {"zigrarr", 8669}, {"zwj", 8205}, {"zwnj", 8204} }; static Hchar byrune[nelem(byname)]; static int hnamecmp(const void *va, const void *vb) { Hchar *a, *b; a = (Hchar*)va; b = (Hchar*)vb; return strcmp(a->s, b->s); } static int hrunecmp(const void *va, const void *vb) { Hchar *a, *b; a = (Hchar*)va; b = (Hchar*)vb; return a->r - b->r; } static int hlencmp(const void *va, const void *vb) { Hchar *a, *b; a = (Hchar*)va; b = (Hchar*)vb; return strlen(a->s) - strlen(b->s); } static void html_init(void) { static int init; int i, j; if(init) return; init = 1; memmove(byrune, byname, sizeof byrune); /* Eliminate names we aren't allowed to generate. */ for(i=0; i<nelem(byrune); i++){ if(byrune[i].s[0] == '_'){ byrune[i].r = Runeerror; byname[i].s++; } } qsort(byname, nelem(byname), sizeof byname[0], hnamecmp); qsort(byrune, nelem(byrune), sizeof byrune[0], hrunecmp); /* Eliminate ambigious runes. use shotest name */ for(j=0, i=1; i<nelem(byrune); i++){ if(byrune[i].r == byrune[j].r) continue; if(i-j > 1) { qsort(byrune+j, i-j, sizeof byrune[0], hlencmp); while(++j<i) byrune[j].r = Runeerror; } j=i; } if(i-j > 1) { qsort(byrune+j, i-j, sizeof byrune[0], hlencmp); while(++j<i) byrune[j].r = Runeerror; } qsort(byrune, nelem(byrune), sizeof byrune[0], hrunecmp); } static Rune findbyname(char *s) { Hchar *h; int n, m, x; h = byname; n = nelem(byname); while(n > 0){ m = n/2; x = strcmp(h[m].s, s); if(x == 0) return h[m].r; if(x < 0){ h += m+1; n -= m+1; }else n = m; } return Runeerror; } static char* findbyrune(Rune r) { Hchar *h; int n, m; if(r == Runeerror) return nil; h = byrune; n = nelem(byrune); while(n > 0){ m = n/2; if(h[m].r == r) return h[m].s; if(h[m].r < r){ h += m+1; n -= m+1; }else n = m; } return nil; } void html_in(int fd, long *, struct convert *out) { char buf[100], *p; Biobuf b; Rune *r, *er, r2; int c, s, i; html_init(); r = runes; er = runes+N; r2 = 0; Binit(&b, fd, OREAD); while((c = Bgetrune(&b)) != Beof){ if(r >= er){ OUT(out, runes, r-runes); r = runes; } if(c == '&'){ s = 0; buf[0] = c; for(i=1; i<nelem(buf)-1;){ c = Bgetc(&b); if(c == Beof) break; if(strchr(";&</> \t\r\n", c)){ if(c != ';') Bungetc(&b); else s = 1; break; } buf[i++] = c; } buf[i] = 0; if(i > 1){ if((c = findbyname(buf+1)) != Runeerror) goto out; if(i > 2 && buf[1] == '#'){ if(i > 3 && strchr("xX", buf[2])) c = strtol(buf+3, &p, 16); else c = strtol(buf+2, &p, 10); if(*p || c < 0) goto bad; goto out; } } bad: if(s) buf[i++] = ';'; for(p=buf; p<buf+i; ){ p += chartorune(r++, p); if(r >= er){ OUT(out, runes, r-runes); r = runes; } } r2 = 0; continue; out: if((c & 0x7f) == c && strchr("<>&\"'", c)){ s = ';'; i = sprint(buf, "&%s", findbyrune(c)); goto bad; } } *r = c; if(fixsurrogate(r, r2)){ r2 = *r; continue; } r2 = 0; r++; } if(r > runes) OUT(out, runes, r-runes); OUT(out, runes, 0); } /* * use biobuf because can use more than UTFmax bytes per rune */ void html_out(Rune *r, int n, long *) { char *s; Biobuf b; Rune *er; html_init(); Binit(&b, 1, OWRITE); er = r+n; for(; r<er; r++){ if(*r < Runeself) Bputrune(&b, *r); else if((s = findbyrune(*r)) != nil) Bprint(&b, "&%s;", s); else Bprint(&b, "&#%d;", *r); } Bflush(&b); }