struct html_ent { const char *entity; unsigned char utf8_len; unsigned char utf8[3]; }; %% "quot", 1, { 0x22 } "amp", 1, { 0x26 } "apos", 1, { 0x27 } "lt", 1, { 0x3C } "gt", 1, { 0x3E } "nbsp", 2, { 0xC2, 0xA0 } "iexcl", 2, { 0xC2, 0xA1 } "cent", 2, { 0xC2, 0xA2 } "pound", 2, { 0xC2, 0xA3 } "curren", 2, { 0xC2, 0xA4 } "yen", 2, { 0xC2, 0xA5 } "brvbar", 2, { 0xC2, 0xA6 } "sect", 2, { 0xC2, 0xA7 } "uml", 2, { 0xC2, 0xA8 } "copy", 2, { 0xC2, 0xA9 } "ordf", 2, { 0xC2, 0xAA } "laquo", 2, { 0xC2, 0xAB } "not", 2, { 0xC2, 0xAC } "shy", 2, { 0xC2, 0xAD } "reg", 2, { 0xC2, 0xAE } "macr", 2, { 0xC2, 0xAF } "deg", 2, { 0xC2, 0xB0 } "plusmn", 2, { 0xC2, 0xB1 } "sup2", 2, { 0xC2, 0xB2 } "sup3", 2, { 0xC2, 0xB3 } "acute", 2, { 0xC2, 0xB4 } "micro", 2, { 0xC2, 0xB5 } "para", 2, { 0xC2, 0xB6 } "middot", 2, { 0xC2, 0xB7 } "cedil", 2, { 0xC2, 0xB8 } "sup1", 2, { 0xC2, 0xB9 } "ordm", 2, { 0xC2, 0xBA } "raquo", 2, { 0xC2, 0xBB } "frac14", 2, { 0xC2, 0xBC } "frac12", 2, { 0xC2, 0xBD } "frac34", 2, { 0xC2, 0xBE } "iquest", 2, { 0xC2, 0xBF } "Agrave", 2, { 0xC3, 0x80 } "Aacute", 2, { 0xC3, 0x81 } "Acirc", 2, { 0xC3, 0x82 } "Atilde", 2, { 0xC3, 0x83 } "Auml", 2, { 0xC3, 0x84 } "Aring", 2, { 0xC3, 0x85 } "AElig", 2, { 0xC3, 0x86 } "Ccedil", 2, { 0xC3, 0x87 } "Egrave", 2, { 0xC3, 0x88 } "Eacute", 2, { 0xC3, 0x89 } "Ecirc", 2, { 0xC3, 0x8A } "Euml", 2, { 0xC3, 0x8B } "Igrave", 2, { 0xC3, 0x8C } "Iacute", 2, { 0xC3, 0x8D } "Icirc", 2, { 0xC3, 0x8E } "Iuml", 2, { 0xC3, 0x8F } "ETH", 2, { 0xC3, 0x90 } "Ntilde", 2, { 0xC3, 0x91 } "Ograve", 2, { 0xC3, 0x92 } "Oacute", 2, { 0xC3, 0x93 } "Ocirc", 2, { 0xC3, 0x94 } "Otilde", 2, { 0xC3, 0x95 } "Ouml", 2, { 0xC3, 0x96 } "times", 2, { 0xC3, 0x97 } "Oslash", 2, { 0xC3, 0x98 } "Ugrave", 2, { 0xC3, 0x99 } "Uacute", 2, { 0xC3, 0x9A } "Ucirc", 2, { 0xC3, 0x9B } "Uuml", 2, { 0xC3, 0x9C } "Yacute", 2, { 0xC3, 0x9D } "THORN", 2, { 0xC3, 0x9E } "szlig", 2, { 0xC3, 0x9F } "agrave", 2, { 0xC3, 0xA0 } "aacute", 2, { 0xC3, 0xA1 } "acirc", 2, { 0xC3, 0xA2 } "atilde", 2, { 0xC3, 0xA3 } "auml", 2, { 0xC3, 0xA4 } "aring", 2, { 0xC3, 0xA5 } "aelig", 2, { 0xC3, 0xA6 } "ccedil", 2, { 0xC3, 0xA7 } "egrave", 2, { 0xC3, 0xA8 } "eacute", 2, { 0xC3, 0xA9 } "ecirc", 2, { 0xC3, 0xAA } "euml", 2, { 0xC3, 0xAB } "igrave", 2, { 0xC3, 0xAC } "iacute", 2, { 0xC3, 0xAD } "icirc", 2, { 0xC3, 0xAE } "iuml", 2, { 0xC3, 0xAF } "eth", 2, { 0xC3, 0xB0 } "ntilde", 2, { 0xC3, 0xB1 } "ograve", 2, { 0xC3, 0xB2 } "oacute", 2, { 0xC3, 0xB3 } "ocirc", 2, { 0xC3, 0xB4 } "otilde", 2, { 0xC3, 0xB5 } "ouml", 2, { 0xC3, 0xB6 } "divide", 2, { 0xC3, 0xB7 } "oslash", 2, { 0xC3, 0xB8 } "ugrave", 2, { 0xC3, 0xB9 } "uacute", 2, { 0xC3, 0xBA } "ucirc", 2, { 0xC3, 0xBB } "uuml", 2, { 0xC3, 0xBC } "yacute", 2, { 0xC3, 0xBD } "thorn", 2, { 0xC3, 0xBE } "yuml", 2, { 0xC3, 0xBF } "OElig", 2, { 0xC5, 0x92 } "oelig", 2, { 0xC5, 0x93 } "Scaron", 2, { 0xC5, 0xA0 } "scaron", 2, { 0xC5, 0xA1 } "Yuml", 2, { 0xC5, 0xB8 } "fnof", 2, { 0xC6, 0x92 } "circ", 2, { 0xCB, 0x86 } "tilde", 2, { 0xCB, 0x9C } "Alpha", 2, { 0xCE, 0x91 } "Beta", 2, { 0xCE, 0x92 } "Gamma", 2, { 0xCE, 0x93 } "Delta", 2, { 0xCE, 0x94 } "Epsilon", 2, { 0xCE, 0x95 } "Zeta", 2, { 0xCE, 0x96 } "Eta", 2, { 0xCE, 0x97 } "Theta", 2, { 0xCE, 0x98 } "Iota", 2, { 0xCE, 0x99 } "Kappa", 2, { 0xCE, 0x9A } "Lambda", 2, { 0xCE, 0x9B } "Mu", 2, { 0xCE, 0x9C } "Nu", 2, { 0xCE, 0x9D } "Xi", 2, { 0xCE, 0x9E } "Omicron", 2, { 0xCE, 0x9F } "Pi", 2, { 0xCE, 0xA0 } "Rho", 2, { 0xCE, 0xA1 } "Sigma", 2, { 0xCE, 0xA3 } "Tau", 2, { 0xCE, 0xA4 } "Upsilon", 2, { 0xCE, 0xA5 } "Phi", 2, { 0xCE, 0xA6 } "Chi", 2, { 0xCE, 0xA7 } "Psi", 2, { 0xCE, 0xA8 } "Omega", 2, { 0xCE, 0xA9 } "alpha", 2, { 0xCE, 0xB1 } "beta", 2, { 0xCE, 0xB2 } "gamma", 2, { 0xCE, 0xB3 } "delta", 2, { 0xCE, 0xB4 } "epsilon", 2, { 0xCE, 0xB5 } "zeta", 2, { 0xCE, 0xB6 } "eta", 2, { 0xCE, 0xB7 } "theta", 2, { 0xCE, 0xB8 } "iota", 2, { 0xCE, 0xB9 } "kappa", 2, { 0xCE, 0xBA } "lambda", 2, { 0xCE, 0xBB } "mu", 2, { 0xCE, 0xBC } "nu", 2, { 0xCE, 0xBD } "xi", 2, { 0xCE, 0xBE } "omicron", 2, { 0xCE, 0xBF } "pi", 2, { 0xCF, 0x80 } "rho", 2, { 0xCF, 0x81 } "sigmaf", 2, { 0xCF, 0x82 } "sigma", 2, { 0xCF, 0x83 } "tau", 2, { 0xCF, 0x84 } "upsilon", 2, { 0xCF, 0x85 } "phi", 2, { 0xCF, 0x86 } "chi", 2, { 0xCF, 0x87 } "psi", 2, { 0xCF, 0x88 } "omega", 2, { 0xCF, 0x89 } "thetasym", 2, { 0xCF, 0x91 } "piv", 2, { 0xCF, 0x96 } "ensp", 3, { 0xE2, 0x80, 0x82 } "emsp", 3, { 0xE2, 0x80, 0x83 } "thinsp", 3, { 0xE2, 0x80, 0x89 } "zwnj", 3, { 0xE2, 0x80, 0x8C } "zwj", 3, { 0xE2, 0x80, 0x8D } "lrm", 3, { 0xE2, 0x80, 0x8E } "rlm", 3, { 0xE2, 0x80, 0x8F } "ndash", 3, { 0xE2, 0x80, 0x93 } "mdash", 3, { 0xE2, 0x80, 0x94 } "lsquo", 3, { 0xE2, 0x80, 0x98 } "rsquo", 3, { 0xE2, 0x80, 0x99 } "sbquo", 3, { 0xE2, 0x80, 0x9A } "ldquo", 3, { 0xE2, 0x80, 0x9C } "rdquo", 3, { 0xE2, 0x80, 0x9D } "bdquo", 3, { 0xE2, 0x80, 0x9E } "dagger", 3, { 0xE2, 0x80, 0xA0 } "Dagger", 3, { 0xE2, 0x80, 0xA1 } "bull", 3, { 0xE2, 0x80, 0xA2 } "hellip", 3, { 0xE2, 0x80, 0xA6 } "permil", 3, { 0xE2, 0x80, 0xB0 } "prime", 3, { 0xE2, 0x80, 0xB2 } "Prime", 3, { 0xE2, 0x80, 0xB3 } "lsaquo", 3, { 0xE2, 0x80, 0xB9 } "rsaquo", 3, { 0xE2, 0x80, 0xBA } "oline", 3, { 0xE2, 0x80, 0xBE } "frasl", 3, { 0xE2, 0x81, 0x84 } "euro", 3, { 0xE2, 0x82, 0xAC } "image", 3, { 0xE2, 0x84, 0x91 } "weierp", 3, { 0xE2, 0x84, 0x98 } "real", 3, { 0xE2, 0x84, 0x9C } "trade", 3, { 0xE2, 0x84, 0xA2 } "alefsym", 3, { 0xE2, 0x84, 0xB5 } "larr", 3, { 0xE2, 0x86, 0x90 } "uarr", 3, { 0xE2, 0x86, 0x91 } "rarr", 3, { 0xE2, 0x86, 0x92 } "darr", 3, { 0xE2, 0x86, 0x93 } "harr", 3, { 0xE2, 0x86, 0x94 } "crarr", 3, { 0xE2, 0x86, 0xB5 } "lArr", 3, { 0xE2, 0x87, 0x90 } "uArr", 3, { 0xE2, 0x87, 0x91 } "rArr", 3, { 0xE2, 0x87, 0x92 } "dArr", 3, { 0xE2, 0x87, 0x93 } "hArr", 3, { 0xE2, 0x87, 0x94 } "forall", 3, { 0xE2, 0x88, 0x80 } "part", 3, { 0xE2, 0x88, 0x82 } "exist", 3, { 0xE2, 0x88, 0x83 } "empty", 3, { 0xE2, 0x88, 0x85 } "nabla", 3, { 0xE2, 0x88, 0x87 } "isin", 3, { 0xE2, 0x88, 0x88 } "notin", 3, { 0xE2, 0x88, 0x89 } "ni", 3, { 0xE2, 0x88, 0x8B } "prod", 3, { 0xE2, 0x88, 0x8F } "sum", 3, { 0xE2, 0x88, 0x91 } "minus", 3, { 0xE2, 0x88, 0x92 } "lowast", 3, { 0xE2, 0x88, 0x97 } "radic", 3, { 0xE2, 0x88, 0x9A } "prop", 3, { 0xE2, 0x88, 0x9D } "infin", 3, { 0xE2, 0x88, 0x9E } "ang", 3, { 0xE2, 0x88, 0xA0 } "and", 3, { 0xE2, 0x88, 0xA7 } "or", 3, { 0xE2, 0x88, 0xA8 } "cap", 3, { 0xE2, 0x88, 0xA9 } "cup", 3, { 0xE2, 0x88, 0xAA } "int", 3, { 0xE2, 0x88, 0xAB } "there4", 3, { 0xE2, 0x88, 0xB4 } "sim", 3, { 0xE2, 0x88, 0xBC } "cong", 3, { 0xE2, 0x89, 0x85 } "asymp", 3, { 0xE2, 0x89, 0x88 } "ne", 3, { 0xE2, 0x89, 0xA0 } "equiv", 3, { 0xE2, 0x89, 0xA1 } "le", 3, { 0xE2, 0x89, 0xA4 } "ge", 3, { 0xE2, 0x89, 0xA5 } "sub", 3, { 0xE2, 0x8A, 0x82 } "sup", 3, { 0xE2, 0x8A, 0x83 } "nsub", 3, { 0xE2, 0x8A, 0x84 } "sube", 3, { 0xE2, 0x8A, 0x86 } "supe", 3, { 0xE2, 0x8A, 0x87 } "oplus", 3, { 0xE2, 0x8A, 0x95 } "otimes", 3, { 0xE2, 0x8A, 0x97 } "perp", 3, { 0xE2, 0x8A, 0xA5 } "sdot", 3, { 0xE2, 0x8B, 0x85 } "lceil", 3, { 0xE2, 0x8C, 0x88 } "rceil", 3, { 0xE2, 0x8C, 0x89 } "lfloor", 3, { 0xE2, 0x8C, 0x8A } "rfloor", 3, { 0xE2, 0x8C, 0x8B } "lang", 3, { 0xE2, 0x9F, 0xA8 } "rang", 3, { 0xE2, 0x9F, 0xA9 } "loz", 3, { 0xE2, 0x97, 0x8A } "spades", 3, { 0xE2, 0x99, 0xA0 } "clubs", 3, { 0xE2, 0x99, 0xA3 } "hearts", 3, { 0xE2, 0x99, 0xA5 } "diams", 3, { 0xE2, 0x99, 0xA6 }