{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiWayIf #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}

-- | Matches and extracts entities from byte strings.
module Zenacy.HTML.Internal.Entity
  ( entityMatch
  , entityTrie
  , entityData
  ) where

import Zenacy.HTML.Internal.BS
import Zenacy.HTML.Internal.Char
import Data.Char
  ( chr
  , ord
  )
import qualified Data.Text as Text
  ( pack
  )
import qualified Data.Text.Encoding as Text
  ( encodeUtf8
  )
import Zenacy.HTML.Internal.Trie
  ( Trie
  )
import qualified Zenacy.HTML.Internal.Trie as Trie
  ( fromList
  , match
  )
import Data.Word
  ( Word8
  )

-- | Searches for an entity match.
-- Returns a tuple with the prefix, its value, and the remaining string.
entityMatch :: BS -> Maybe (BS, BS, BS)
entityMatch = Trie.match entityTrie

-- | A trie of the entity data with surrogates converted.
entityTrie :: Trie BS
entityTrie =
  Trie.fromList $ map (f . g) entityData
  where
    f (x, y) = (x, Text.encodeUtf8 $ Text.pack y)
    g (x, y) = case y of
      [a, b] ->
        let a' = ord a
            b' = ord b
        in if isUTF16Surrogate a' b'
              then (x, [convUTF16Surrogate a' b'])
              else (x, [a,b])
      _otherwise ->
        (x, y)

-- | Converts a surrogate pair to a unicode character.
convUTF16Surrogate :: Int -> Int -> Char
convUTF16Surrogate high low =
  chr $ (high - 0xD800) * 0x400 + (low - 0xDC00) + 0x10000

-- | Determines is a pair of codes represent a surrogate.
isUTF16Surrogate :: Int -> Int -> Bool
isUTF16Surrogate high low =
  high >= 0xD800 && high <= 0xDBFF && low >= 0xDC00 && low <= 0xDFFF

-- | The raw entity data.
entityData :: [(BS,String)]
entityData =
  [("Aacute","\x00C1")
  ,("aacute","\x00E1")
  ,("Aacute;","\x00C1")
  ,("aacute;","\x00E1")
  ,("Abreve;","\x0102")
  ,("abreve;","\x0103")
  ,("ac;","\x223E")
  ,("acd;","\x223F")
  ,("acE;","\x223E\x0333")
  ,("Acirc","\x00C2")
  ,("acirc","\x00E2")
  ,("Acirc;","\x00C2")
  ,("acirc;","\x00E2")
  ,("acute","\x00B4")
  ,("acute;","\x00B4")
  ,("Acy;","\x0410")
  ,("acy;","\x0430")
  ,("AElig","\x00C6")
  ,("aelig","\x00E6")
  ,("AElig;","\x00C6")
  ,("aelig;","\x00E6")
  ,("af;","\x2061")
  ,("Afr;","\xD835\xDD04")
  ,("afr;","\xD835\xDD1E")
  ,("Agrave","\x00C0")
  ,("agrave","\x00E0")
  ,("Agrave;","\x00C0")
  ,("agrave;","\x00E0")
  ,("alefsym;","\x2135")
  ,("aleph;","\x2135")
  ,("Alpha;","\x0391")
  ,("alpha;","\x03B1")
  ,("Amacr;","\x0100")
  ,("amacr;","\x0101")
  ,("amalg;","\x2A3F")
  ,("AMP","\x0026")
  ,("amp","\x0026")
  ,("AMP;","\x0026")
  ,("amp;","\x0026")
  ,("and;","\x2227")
  ,("And;","\x2A53")
  ,("andand;","\x2A55")
  ,("andd;","\x2A5C")
  ,("andslope;","\x2A58")
  ,("andv;","\x2A5A")
  ,("ang;","\x2220")
  ,("ange;","\x29A4")
  ,("angle;","\x2220")
  ,("angmsd;","\x2221")
  ,("angmsdaa;","\x29A8")
  ,("angmsdab;","\x29A9")
  ,("angmsdac;","\x29AA")
  ,("angmsdad;","\x29AB")
  ,("angmsdae;","\x29AC")
  ,("angmsdaf;","\x29AD")
  ,("angmsdag;","\x29AE")
  ,("angmsdah;","\x29AF")
  ,("angrt;","\x221F")
  ,("angrtvb;","\x22BE")
  ,("angrtvbd;","\x299D")
  ,("angsph;","\x2222")
  ,("angst;","\x00C5")
  ,("angzarr;","\x237C")
  ,("Aogon;","\x0104")
  ,("aogon;","\x0105")
  ,("Aopf;","\xD835\xDD38")
  ,("aopf;","\xD835\xDD52")
  ,("ap;","\x2248")
  ,("apacir;","\x2A6F")
  ,("ape;","\x224A")
  ,("apE;","\x2A70")
  ,("apid;","\x224B")
  ,("apos;","\x0027")
  ,("ApplyFunction;","\x2061")
  ,("approx;","\x2248")
  ,("approxeq;","\x224A")
  ,("Aring","\x00C5")
  ,("aring","\x00E5")
  ,("Aring;","\x00C5")
  ,("aring;","\x00E5")
  ,("Ascr;","\xD835\xDC9C")
  ,("ascr;","\xD835\xDCB6")
  ,("Assign;","\x2254")
  ,("ast;","\x002A")
  ,("asymp;","\x2248")
  ,("asympeq;","\x224D")
  ,("Atilde","\x00C3")
  ,("atilde","\x00E3")
  ,("Atilde;","\x00C3")
  ,("atilde;","\x00E3")
  ,("Auml","\x00C4")
  ,("auml","\x00E4")
  ,("Auml;","\x00C4")
  ,("auml;","\x00E4")
  ,("awconint;","\x2233")
  ,("awint;","\x2A11")
  ,("backcong;","\x224C")
  ,("backepsilon;","\x03F6")
  ,("backprime;","\x2035")
  ,("backsim;","\x223D")
  ,("backsimeq;","\x22CD")
  ,("Backslash;","\x2216")
  ,("Barv;","\x2AE7")
  ,("barvee;","\x22BD")
  ,("barwed;","\x2305")
  ,("Barwed;","\x2306")
  ,("barwedge;","\x2305")
  ,("bbrk;","\x23B5")
  ,("bbrktbrk;","\x23B6")
  ,("bcong;","\x224C")
  ,("Bcy;","\x0411")
  ,("bcy;","\x0431")
  ,("bdquo;","\x201E")
  ,("becaus;","\x2235")
  ,("Because;","\x2235")
  ,("because;","\x2235")
  ,("bemptyv;","\x29B0")
  ,("bepsi;","\x03F6")
  ,("bernou;","\x212C")
  ,("Bernoullis;","\x212C")
  ,("Beta;","\x0392")
  ,("beta;","\x03B2")
  ,("beth;","\x2136")
  ,("between;","\x226C")
  ,("Bfr;","\xD835\xDD05")
  ,("bfr;","\xD835\xDD1F")
  ,("bigcap;","\x22C2")
  ,("bigcirc;","\x25EF")
  ,("bigcup;","\x22C3")
  ,("bigodot;","\x2A00")
  ,("bigoplus;","\x2A01")
  ,("bigotimes;","\x2A02")
  ,("bigsqcup;","\x2A06")
  ,("bigstar;","\x2605")
  ,("bigtriangledown;","\x25BD")
  ,("bigtriangleup;","\x25B3")
  ,("biguplus;","\x2A04")
  ,("bigvee;","\x22C1")
  ,("bigwedge;","\x22C0")
  ,("bkarow;","\x290D")
  ,("blacklozenge;","\x29EB")
  ,("blacksquare;","\x25AA")
  ,("blacktriangle;","\x25B4")
  ,("blacktriangledown;","\x25BE")
  ,("blacktriangleleft;","\x25C2")
  ,("blacktriangleright;","\x25B8")
  ,("blank;","\x2423")
  ,("blk12;","\x2592")
  ,("blk14;","\x2591")
  ,("blk34;","\x2593")
  ,("block;","\x2588")
  ,("bne;","\x003D\x20E5")
  ,("bnequiv;","\x2261\x20E5")
  ,("bnot;","\x2310")
  ,("bNot;","\x2AED")
  ,("Bopf;","\xD835\xDD39")
  ,("bopf;","\xD835\xDD53")
  ,("bot;","\x22A5")
  ,("bottom;","\x22A5")
  ,("bowtie;","\x22C8")
  ,("boxbox;","\x29C9")
  ,("boxdl;","\x2510")
  ,("boxdL;","\x2555")
  ,("boxDl;","\x2556")
  ,("boxDL;","\x2557")
  ,("boxdr;","\x250C")
  ,("boxdR;","\x2552")
  ,("boxDr;","\x2553")
  ,("boxDR;","\x2554")
  ,("boxh;","\x2500")
  ,("boxH;","\x2550")
  ,("boxhd;","\x252C")
  ,("boxHd;","\x2564")
  ,("boxhD;","\x2565")
  ,("boxHD;","\x2566")
  ,("boxhu;","\x2534")
  ,("boxHu;","\x2567")
  ,("boxhU;","\x2568")
  ,("boxHU;","\x2569")
  ,("boxminus;","\x229F")
  ,("boxplus;","\x229E")
  ,("boxtimes;","\x22A0")
  ,("boxul;","\x2518")
  ,("boxuL;","\x255B")
  ,("boxUl;","\x255C")
  ,("boxUL;","\x255D")
  ,("boxur;","\x2514")
  ,("boxuR;","\x2558")
  ,("boxUr;","\x2559")
  ,("boxUR;","\x255A")
  ,("boxv;","\x2502")
  ,("boxV;","\x2551")
  ,("boxvh;","\x253C")
  ,("boxvH;","\x256A")
  ,("boxVh;","\x256B")
  ,("boxVH;","\x256C")
  ,("boxvl;","\x2524")
  ,("boxvL;","\x2561")
  ,("boxVl;","\x2562")
  ,("boxVL;","\x2563")
  ,("boxvr;","\x251C")
  ,("boxvR;","\x255E")
  ,("boxVr;","\x255F")
  ,("boxVR;","\x2560")
  ,("bprime;","\x2035")
  ,("Breve;","\x02D8")
  ,("breve;","\x02D8")
  ,("brvbar","\x00A6")
  ,("brvbar;","\x00A6")
  ,("Bscr;","\x212C")
  ,("bscr;","\xD835\xDCB7")
  ,("bsemi;","\x204F")
  ,("bsim;","\x223D")
  ,("bsime;","\x22CD")
  ,("bsol;","\x005C")
  ,("bsolb;","\x29C5")
  ,("bsolhsub;","\x27C8")
  ,("bull;","\x2022")
  ,("bullet;","\x2022")
  ,("bump;","\x224E")
  ,("bumpe;","\x224F")
  ,("bumpE;","\x2AAE")
  ,("Bumpeq;","\x224E")
  ,("bumpeq;","\x224F")
  ,("Cacute;","\x0106")
  ,("cacute;","\x0107")
  ,("cap;","\x2229")
  ,("Cap;","\x22D2")
  ,("capand;","\x2A44")
  ,("capbrcup;","\x2A49")
  ,("capcap;","\x2A4B")
  ,("capcup;","\x2A47")
  ,("capdot;","\x2A40")
  ,("CapitalDifferentialD;","\x2145")
  ,("caps;","\x2229\xFE00")
  ,("caret;","\x2041")
  ,("caron;","\x02C7")
  ,("Cayleys;","\x212D")
  ,("ccaps;","\x2A4D")
  ,("Ccaron;","\x010C")
  ,("ccaron;","\x010D")
  ,("Ccedil","\x00C7")
  ,("ccedil","\x00E7")
  ,("Ccedil;","\x00C7")
  ,("ccedil;","\x00E7")
  ,("Ccirc;","\x0108")
  ,("ccirc;","\x0109")
  ,("Cconint;","\x2230")
  ,("ccups;","\x2A4C")
  ,("ccupssm;","\x2A50")
  ,("Cdot;","\x010A")
  ,("cdot;","\x010B")
  ,("cedil","\x00B8")
  ,("cedil;","\x00B8")
  ,("Cedilla;","\x00B8")
  ,("cemptyv;","\x29B2")
  ,("cent","\x00A2")
  ,("cent;","\x00A2")
  ,("CenterDot;","\x00B7")
  ,("centerdot;","\x00B7")
  ,("Cfr;","\x212D")
  ,("cfr;","\xD835\xDD20")
  ,("CHcy;","\x0427")
  ,("chcy;","\x0447")
  ,("check;","\x2713")
  ,("checkmark;","\x2713")
  ,("Chi;","\x03A7")
  ,("chi;","\x03C7")
  ,("cir;","\x25CB")
  ,("circ;","\x02C6")
  ,("circeq;","\x2257")
  ,("circlearrowleft;","\x21BA")
  ,("circlearrowright;","\x21BB")
  ,("circledast;","\x229B")
  ,("circledcirc;","\x229A")
  ,("circleddash;","\x229D")
  ,("CircleDot;","\x2299")
  ,("circledR;","\x00AE")
  ,("circledS;","\x24C8")
  ,("CircleMinus;","\x2296")
  ,("CirclePlus;","\x2295")
  ,("CircleTimes;","\x2297")
  ,("cire;","\x2257")
  ,("cirE;","\x29C3")
  ,("cirfnint;","\x2A10")
  ,("cirmid;","\x2AEF")
  ,("cirscir;","\x29C2")
  ,("ClockwiseContourIntegral;","\x2232")
  ,("CloseCurlyDoubleQuote;","\x201D")
  ,("CloseCurlyQuote;","\x2019")
  ,("clubs;","\x2663")
  ,("clubsuit;","\x2663")
  ,("colon;","\x003A")
  ,("Colon;","\x2237")
  ,("colone;","\x2254")
  ,("Colone;","\x2A74")
  ,("coloneq;","\x2254")
  ,("comma;","\x002C")
  ,("commat;","\x0040")
  ,("comp;","\x2201")
  ,("compfn;","\x2218")
  ,("complement;","\x2201")
  ,("complexes;","\x2102")
  ,("cong;","\x2245")
  ,("congdot;","\x2A6D")
  ,("Congruent;","\x2261")
  ,("conint;","\x222E")
  ,("Conint;","\x222F")
  ,("ContourIntegral;","\x222E")
  ,("Copf;","\x2102")
  ,("copf;","\xD835\xDD54")
  ,("coprod;","\x2210")
  ,("Coproduct;","\x2210")
  ,("COPY","\x00A9")
  ,("copy","\x00A9")
  ,("COPY;","\x00A9")
  ,("copy;","\x00A9")
  ,("copysr;","\x2117")
  ,("CounterClockwiseContourIntegral;","\x2233")
  ,("crarr;","\x21B5")
  ,("cross;","\x2717")
  ,("Cross;","\x2A2F")
  ,("Cscr;","\xD835\xDC9E")
  ,("cscr;","\xD835\xDCB8")
  ,("csub;","\x2ACF")
  ,("csube;","\x2AD1")
  ,("csup;","\x2AD0")
  ,("csupe;","\x2AD2")
  ,("ctdot;","\x22EF")
  ,("cudarrl;","\x2938")
  ,("cudarrr;","\x2935")
  ,("cuepr;","\x22DE")
  ,("cuesc;","\x22DF")
  ,("cularr;","\x21B6")
  ,("cularrp;","\x293D")
  ,("cup;","\x222A")
  ,("Cup;","\x22D3")
  ,("cupbrcap;","\x2A48")
  ,("CupCap;","\x224D")
  ,("cupcap;","\x2A46")
  ,("cupcup;","\x2A4A")
  ,("cupdot;","\x228D")
  ,("cupor;","\x2A45")
  ,("cups;","\x222A\xFE00")
  ,("curarr;","\x21B7")
  ,("curarrm;","\x293C")
  ,("curlyeqprec;","\x22DE")
  ,("curlyeqsucc;","\x22DF")
  ,("curlyvee;","\x22CE")
  ,("curlywedge;","\x22CF")
  ,("curren","\x00A4")
  ,("curren;","\x00A4")
  ,("curvearrowleft;","\x21B6")
  ,("curvearrowright;","\x21B7")
  ,("cuvee;","\x22CE")
  ,("cuwed;","\x22CF")
  ,("cwconint;","\x2232")
  ,("cwint;","\x2231")
  ,("cylcty;","\x232D")
  ,("dagger;","\x2020")
  ,("Dagger;","\x2021")
  ,("daleth;","\x2138")
  ,("darr;","\x2193")
  ,("Darr;","\x21A1")
  ,("dArr;","\x21D3")
  ,("dash;","\x2010")
  ,("dashv;","\x22A3")
  ,("Dashv;","\x2AE4")
  ,("dbkarow;","\x290F")
  ,("dblac;","\x02DD")
  ,("Dcaron;","\x010E")
  ,("dcaron;","\x010F")
  ,("Dcy;","\x0414")
  ,("dcy;","\x0434")
  ,("DD;","\x2145")
  ,("dd;","\x2146")
  ,("ddagger;","\x2021")
  ,("ddarr;","\x21CA")
  ,("DDotrahd;","\x2911")
  ,("ddotseq;","\x2A77")
  ,("deg","\x00B0")
  ,("deg;","\x00B0")
  ,("Del;","\x2207")
  ,("Delta;","\x0394")
  ,("delta;","\x03B4")
  ,("demptyv;","\x29B1")
  ,("dfisht;","\x297F")
  ,("Dfr;","\xD835\xDD07")
  ,("dfr;","\xD835\xDD21")
  ,("dHar;","\x2965")
  ,("dharl;","\x21C3")
  ,("dharr;","\x21C2")
  ,("DiacriticalAcute;","\x00B4")
  ,("DiacriticalDot;","\x02D9")
  ,("DiacriticalDoubleAcute;","\x02DD")
  ,("DiacriticalGrave;","\x0060")
  ,("DiacriticalTilde;","\x02DC")
  ,("diam;","\x22C4")
  ,("Diamond;","\x22C4")
  ,("diamond;","\x22C4")
  ,("diamondsuit;","\x2666")
  ,("diams;","\x2666")
  ,("die;","\x00A8")
  ,("DifferentialD;","\x2146")
  ,("digamma;","\x03DD")
  ,("disin;","\x22F2")
  ,("div;","\x00F7")
  ,("divide","\x00F7")
  ,("divide;","\x00F7")
  ,("divideontimes;","\x22C7")
  ,("divonx;","\x22C7")
  ,("DJcy;","\x0402")
  ,("djcy;","\x0452")
  ,("dlcorn;","\x231E")
  ,("dlcrop;","\x230D")
  ,("dollar;","\x0024")
  ,("Dopf;","\xD835\xDD3B")
  ,("dopf;","\xD835\xDD55")
  ,("Dot;","\x00A8")
  ,("dot;","\x02D9")
  ,("DotDot;","\x20DC")
  ,("doteq;","\x2250")
  ,("doteqdot;","\x2251")
  ,("DotEqual;","\x2250")
  ,("dotminus;","\x2238")
  ,("dotplus;","\x2214")
  ,("dotsquare;","\x22A1")
  ,("doublebarwedge;","\x2306")
  ,("DoubleContourIntegral;","\x222F")
  ,("DoubleDot;","\x00A8")
  ,("DoubleDownArrow;","\x21D3")
  ,("DoubleLeftArrow;","\x21D0")
  ,("DoubleLeftRightArrow;","\x21D4")
  ,("DoubleLeftTee;","\x2AE4")
  ,("DoubleLongLeftArrow;","\x27F8")
  ,("DoubleLongLeftRightArrow;","\x27FA")
  ,("DoubleLongRightArrow;","\x27F9")
  ,("DoubleRightArrow;","\x21D2")
  ,("DoubleRightTee;","\x22A8")
  ,("DoubleUpArrow;","\x21D1")
  ,("DoubleUpDownArrow;","\x21D5")
  ,("DoubleVerticalBar;","\x2225")
  ,("DownArrow;","\x2193")
  ,("downarrow;","\x2193")
  ,("Downarrow;","\x21D3")
  ,("DownArrowBar;","\x2913")
  ,("DownArrowUpArrow;","\x21F5")
  ,("DownBreve;","\x0311")
  ,("downdownarrows;","\x21CA")
  ,("downharpoonleft;","\x21C3")
  ,("downharpoonright;","\x21C2")
  ,("DownLeftRightVector;","\x2950")
  ,("DownLeftTeeVector;","\x295E")
  ,("DownLeftVector;","\x21BD")
  ,("DownLeftVectorBar;","\x2956")
  ,("DownRightTeeVector;","\x295F")
  ,("DownRightVector;","\x21C1")
  ,("DownRightVectorBar;","\x2957")
  ,("DownTee;","\x22A4")
  ,("DownTeeArrow;","\x21A7")
  ,("drbkarow;","\x2910")
  ,("drcorn;","\x231F")
  ,("drcrop;","\x230C")
  ,("Dscr;","\xD835\xDC9F")
  ,("dscr;","\xD835\xDCB9")
  ,("DScy;","\x0405")
  ,("dscy;","\x0455")
  ,("dsol;","\x29F6")
  ,("Dstrok;","\x0110")
  ,("dstrok;","\x0111")
  ,("dtdot;","\x22F1")
  ,("dtri;","\x25BF")
  ,("dtrif;","\x25BE")
  ,("duarr;","\x21F5")
  ,("duhar;","\x296F")
  ,("dwangle;","\x29A6")
  ,("DZcy;","\x040F")
  ,("dzcy;","\x045F")
  ,("dzigrarr;","\x27FF")
  ,("Eacute","\x00C9")
  ,("eacute","\x00E9")
  ,("Eacute;","\x00C9")
  ,("eacute;","\x00E9")
  ,("easter;","\x2A6E")
  ,("Ecaron;","\x011A")
  ,("ecaron;","\x011B")
  ,("ecir;","\x2256")
  ,("Ecirc","\x00CA")
  ,("ecirc","\x00EA")
  ,("Ecirc;","\x00CA")
  ,("ecirc;","\x00EA")
  ,("ecolon;","\x2255")
  ,("Ecy;","\x042D")
  ,("ecy;","\x044D")
  ,("eDDot;","\x2A77")
  ,("Edot;","\x0116")
  ,("edot;","\x0117")
  ,("eDot;","\x2251")
  ,("ee;","\x2147")
  ,("efDot;","\x2252")
  ,("Efr;","\xD835\xDD08")
  ,("efr;","\xD835\xDD22")
  ,("eg;","\x2A9A")
  ,("Egrave","\x00C8")
  ,("egrave","\x00E8")
  ,("Egrave;","\x00C8")
  ,("egrave;","\x00E8")
  ,("egs;","\x2A96")
  ,("egsdot;","\x2A98")
  ,("el;","\x2A99")
  ,("Element;","\x2208")
  ,("elinters;","\x23E7")
  ,("ell;","\x2113")
  ,("els;","\x2A95")
  ,("elsdot;","\x2A97")
  ,("Emacr;","\x0112")
  ,("emacr;","\x0113")
  ,("empty;","\x2205")
  ,("emptyset;","\x2205")
  ,("EmptySmallSquare;","\x25FB")
  ,("emptyv;","\x2205")
  ,("EmptyVerySmallSquare;","\x25AB")
  ,("emsp13;","\x2004")
  ,("emsp14;","\x2005")
  ,("emsp;","\x2003")
  ,("ENG;","\x014A")
  ,("eng;","\x014B")
  ,("ensp;","\x2002")
  ,("Eogon;","\x0118")
  ,("eogon;","\x0119")
  ,("Eopf;","\xD835\xDD3C")
  ,("eopf;","\xD835\xDD56")
  ,("epar;","\x22D5")
  ,("eparsl;","\x29E3")
  ,("eplus;","\x2A71")
  ,("epsi;","\x03B5")
  ,("Epsilon;","\x0395")
  ,("epsilon;","\x03B5")
  ,("epsiv;","\x03F5")
  ,("eqcirc;","\x2256")
  ,("eqcolon;","\x2255")
  ,("eqsim;","\x2242")
  ,("eqslantgtr;","\x2A96")
  ,("eqslantless;","\x2A95")
  ,("Equal;","\x2A75")
  ,("equals;","\x003D")
  ,("EqualTilde;","\x2242")
  ,("equest;","\x225F")
  ,("Equilibrium;","\x21CC")
  ,("equiv;","\x2261")
  ,("equivDD;","\x2A78")
  ,("eqvparsl;","\x29E5")
  ,("erarr;","\x2971")
  ,("erDot;","\x2253")
  ,("escr;","\x212F")
  ,("Escr;","\x2130")
  ,("esdot;","\x2250")
  ,("esim;","\x2242")
  ,("Esim;","\x2A73")
  ,("Eta;","\x0397")
  ,("eta;","\x03B7")
  ,("ETH","\x00D0")
  ,("eth","\x00F0")
  ,("ETH;","\x00D0")
  ,("eth;","\x00F0")
  ,("Euml","\x00CB")
  ,("euml","\x00EB")
  ,("Euml;","\x00CB")
  ,("euml;","\x00EB")
  ,("euro;","\x20AC")
  ,("excl;","\x0021")
  ,("exist;","\x2203")
  ,("Exists;","\x2203")
  ,("expectation;","\x2130")
  ,("ExponentialE;","\x2147")
  ,("exponentiale;","\x2147")
  ,("fallingdotseq;","\x2252")
  ,("Fcy;","\x0424")
  ,("fcy;","\x0444")
  ,("female;","\x2640")
  ,("ffilig;","\xFB03")
  ,("fflig;","\xFB00")
  ,("ffllig;","\xFB04")
  ,("Ffr;","\xD835\xDD09")
  ,("ffr;","\xD835\xDD23")
  ,("filig;","\xFB01")
  ,("FilledSmallSquare;","\x25FC")
  ,("FilledVerySmallSquare;","\x25AA")
  ,("fjlig;","\x0066\x006A")
  ,("flat;","\x266D")
  ,("fllig;","\xFB02")
  ,("fltns;","\x25B1")
  ,("fnof;","\x0192")
  ,("Fopf;","\xD835\xDD3D")
  ,("fopf;","\xD835\xDD57")
  ,("ForAll;","\x2200")
  ,("forall;","\x2200")
  ,("fork;","\x22D4")
  ,("forkv;","\x2AD9")
  ,("Fouriertrf;","\x2131")
  ,("fpartint;","\x2A0D")
  ,("frac12","\x00BD")
  ,("frac12;","\x00BD")
  ,("frac13;","\x2153")
  ,("frac14","\x00BC")
  ,("frac14;","\x00BC")
  ,("frac15;","\x2155")
  ,("frac16;","\x2159")
  ,("frac18;","\x215B")
  ,("frac23;","\x2154")
  ,("frac25;","\x2156")
  ,("frac34","\x00BE")
  ,("frac34;","\x00BE")
  ,("frac35;","\x2157")
  ,("frac38;","\x215C")
  ,("frac45;","\x2158")
  ,("frac56;","\x215A")
  ,("frac58;","\x215D")
  ,("frac78;","\x215E")
  ,("frasl;","\x2044")
  ,("frown;","\x2322")
  ,("Fscr;","\x2131")
  ,("fscr;","\xD835\xDCBB")
  ,("gacute;","\x01F5")
  ,("Gamma;","\x0393")
  ,("gamma;","\x03B3")
  ,("Gammad;","\x03DC")
  ,("gammad;","\x03DD")
  ,("gap;","\x2A86")
  ,("Gbreve;","\x011E")
  ,("gbreve;","\x011F")
  ,("Gcedil;","\x0122")
  ,("Gcirc;","\x011C")
  ,("gcirc;","\x011D")
  ,("Gcy;","\x0413")
  ,("gcy;","\x0433")
  ,("Gdot;","\x0120")
  ,("gdot;","\x0121")
  ,("ge;","\x2265")
  ,("gE;","\x2267")
  ,("gel;","\x22DB")
  ,("gEl;","\x2A8C")
  ,("geq;","\x2265")
  ,("geqq;","\x2267")
  ,("geqslant;","\x2A7E")
  ,("ges;","\x2A7E")
  ,("gescc;","\x2AA9")
  ,("gesdot;","\x2A80")
  ,("gesdoto;","\x2A82")
  ,("gesdotol;","\x2A84")
  ,("gesl;","\x22DB\xFE00")
  ,("gesles;","\x2A94")
  ,("Gfr;","\xD835\xDD0A")
  ,("gfr;","\xD835\xDD24")
  ,("gg;","\x226B")
  ,("Gg;","\x22D9")
  ,("ggg;","\x22D9")
  ,("gimel;","\x2137")
  ,("GJcy;","\x0403")
  ,("gjcy;","\x0453")
  ,("gl;","\x2277")
  ,("gla;","\x2AA5")
  ,("glE;","\x2A92")
  ,("glj;","\x2AA4")
  ,("gnap;","\x2A8A")
  ,("gnapprox;","\x2A8A")
  ,("gnE;","\x2269")
  ,("gne;","\x2A88")
  ,("gneq;","\x2A88")
  ,("gneqq;","\x2269")
  ,("gnsim;","\x22E7")
  ,("Gopf;","\xD835\xDD3E")
  ,("gopf;","\xD835\xDD58")
  ,("grave;","\x0060")
  ,("GreaterEqual;","\x2265")
  ,("GreaterEqualLess;","\x22DB")
  ,("GreaterFullEqual;","\x2267")
  ,("GreaterGreater;","\x2AA2")
  ,("GreaterLess;","\x2277")
  ,("GreaterSlantEqual;","\x2A7E")
  ,("GreaterTilde;","\x2273")
  ,("gscr;","\x210A")
  ,("Gscr;","\xD835\xDCA2")
  ,("gsim;","\x2273")
  ,("gsime;","\x2A8E")
  ,("gsiml;","\x2A90")
  ,("GT","\x003E")
  ,("gt","\x003E")
  ,("GT;","\x003E")
  ,("gt;","\x003E")
  ,("Gt;","\x226B")
  ,("gtcc;","\x2AA7")
  ,("gtcir;","\x2A7A")
  ,("gtdot;","\x22D7")
  ,("gtlPar;","\x2995")
  ,("gtquest;","\x2A7C")
  ,("gtrapprox;","\x2A86")
  ,("gtrarr;","\x2978")
  ,("gtrdot;","\x22D7")
  ,("gtreqless;","\x22DB")
  ,("gtreqqless;","\x2A8C")
  ,("gtrless;","\x2277")
  ,("gtrsim;","\x2273")
  ,("gvertneqq;","\x2269\xFE00")
  ,("gvnE;","\x2269\xFE00")
  ,("Hacek;","\x02C7")
  ,("hairsp;","\x200A")
  ,("half;","\x00BD")
  ,("hamilt;","\x210B")
  ,("HARDcy;","\x042A")
  ,("hardcy;","\x044A")
  ,("harr;","\x2194")
  ,("hArr;","\x21D4")
  ,("harrcir;","\x2948")
  ,("harrw;","\x21AD")
  ,("Hat;","\x005E")
  ,("hbar;","\x210F")
  ,("Hcirc;","\x0124")
  ,("hcirc;","\x0125")
  ,("hearts;","\x2665")
  ,("heartsuit;","\x2665")
  ,("hellip;","\x2026")
  ,("hercon;","\x22B9")
  ,("Hfr;","\x210C")
  ,("hfr;","\xD835\xDD25")
  ,("HilbertSpace;","\x210B")
  ,("hksearow;","\x2925")
  ,("hkswarow;","\x2926")
  ,("hoarr;","\x21FF")
  ,("homtht;","\x223B")
  ,("hookleftarrow;","\x21A9")
  ,("hookrightarrow;","\x21AA")
  ,("Hopf;","\x210D")
  ,("hopf;","\xD835\xDD59")
  ,("horbar;","\x2015")
  ,("HorizontalLine;","\x2500")
  ,("Hscr;","\x210B")
  ,("hscr;","\xD835\xDCBD")
  ,("hslash;","\x210F")
  ,("Hstrok;","\x0126")
  ,("hstrok;","\x0127")
  ,("HumpDownHump;","\x224E")
  ,("HumpEqual;","\x224F")
  ,("hybull;","\x2043")
  ,("hyphen;","\x2010")
  ,("Iacute","\x00CD")
  ,("iacute","\x00ED")
  ,("Iacute;","\x00CD")
  ,("iacute;","\x00ED")
  ,("ic;","\x2063")
  ,("Icirc","\x00CE")
  ,("icirc","\x00EE")
  ,("Icirc;","\x00CE")
  ,("icirc;","\x00EE")
  ,("Icy;","\x0418")
  ,("icy;","\x0438")
  ,("Idot;","\x0130")
  ,("IEcy;","\x0415")
  ,("iecy;","\x0435")
  ,("iexcl","\x00A1")
  ,("iexcl;","\x00A1")
  ,("iff;","\x21D4")
  ,("Ifr;","\x2111")
  ,("ifr;","\xD835\xDD26")
  ,("Igrave","\x00CC")
  ,("igrave","\x00EC")
  ,("Igrave;","\x00CC")
  ,("igrave;","\x00EC")
  ,("ii;","\x2148")
  ,("iiiint;","\x2A0C")
  ,("iiint;","\x222D")
  ,("iinfin;","\x29DC")
  ,("iiota;","\x2129")
  ,("IJlig;","\x0132")
  ,("ijlig;","\x0133")
  ,("Im;","\x2111")
  ,("Imacr;","\x012A")
  ,("imacr;","\x012B")
  ,("image;","\x2111")
  ,("ImaginaryI;","\x2148")
  ,("imagline;","\x2110")
  ,("imagpart;","\x2111")
  ,("imath;","\x0131")
  ,("imof;","\x22B7")
  ,("imped;","\x01B5")
  ,("Implies;","\x21D2")
  ,("in;","\x2208")
  ,("incare;","\x2105")
  ,("infin;","\x221E")
  ,("infintie;","\x29DD")
  ,("inodot;","\x0131")
  ,("int;","\x222B")
  ,("Int;","\x222C")
  ,("intcal;","\x22BA")
  ,("integers;","\x2124")
  ,("Integral;","\x222B")
  ,("intercal;","\x22BA")
  ,("Intersection;","\x22C2")
  ,("intlarhk;","\x2A17")
  ,("intprod;","\x2A3C")
  ,("InvisibleComma;","\x2063")
  ,("InvisibleTimes;","\x2062")
  ,("IOcy;","\x0401")
  ,("iocy;","\x0451")
  ,("Iogon;","\x012E")
  ,("iogon;","\x012F")
  ,("Iopf;","\xD835\xDD40")
  ,("iopf;","\xD835\xDD5A")
  ,("Iota;","\x0399")
  ,("iota;","\x03B9")
  ,("iprod;","\x2A3C")
  ,("iquest","\x00BF")
  ,("iquest;","\x00BF")
  ,("Iscr;","\x2110")
  ,("iscr;","\xD835\xDCBE")
  ,("isin;","\x2208")
  ,("isindot;","\x22F5")
  ,("isinE;","\x22F9")
  ,("isins;","\x22F4")
  ,("isinsv;","\x22F3")
  ,("isinv;","\x2208")
  ,("it;","\x2062")
  ,("Itilde;","\x0128")
  ,("itilde;","\x0129")
  ,("Iukcy;","\x0406")
  ,("iukcy;","\x0456")
  ,("Iuml","\x00CF")
  ,("iuml","\x00EF")
  ,("Iuml;","\x00CF")
  ,("iuml;","\x00EF")
  ,("Jcirc;","\x0134")
  ,("jcirc;","\x0135")
  ,("Jcy;","\x0419")
  ,("jcy;","\x0439")
  ,("Jfr;","\xD835\xDD0D")
  ,("jfr;","\xD835\xDD27")
  ,("jmath;","\x0237")
  ,("Jopf;","\xD835\xDD41")
  ,("jopf;","\xD835\xDD5B")
  ,("Jscr;","\xD835\xDCA5")
  ,("jscr;","\xD835\xDCBF")
  ,("Jsercy;","\x0408")
  ,("jsercy;","\x0458")
  ,("Jukcy;","\x0404")
  ,("jukcy;","\x0454")
  ,("Kappa;","\x039A")
  ,("kappa;","\x03BA")
  ,("kappav;","\x03F0")
  ,("Kcedil;","\x0136")
  ,("kcedil;","\x0137")
  ,("Kcy;","\x041A")
  ,("kcy;","\x043A")
  ,("Kfr;","\xD835\xDD0E")
  ,("kfr;","\xD835\xDD28")
  ,("kgreen;","\x0138")
  ,("KHcy;","\x0425")
  ,("khcy;","\x0445")
  ,("KJcy;","\x040C")
  ,("kjcy;","\x045C")
  ,("Kopf;","\xD835\xDD42")
  ,("kopf;","\xD835\xDD5C")
  ,("Kscr;","\xD835\xDCA6")
  ,("kscr;","\xD835\xDCC0")
  ,("lAarr;","\x21DA")
  ,("Lacute;","\x0139")
  ,("lacute;","\x013A")
  ,("laemptyv;","\x29B4")
  ,("lagran;","\x2112")
  ,("Lambda;","\x039B")
  ,("lambda;","\x03BB")
  ,("lang;","\x27E8")
  ,("Lang;","\x27EA")
  ,("langd;","\x2991")
  ,("langle;","\x27E8")
  ,("lap;","\x2A85")
  ,("Laplacetrf;","\x2112")
  ,("laquo","\x00AB")
  ,("laquo;","\x00AB")
  ,("larr;","\x2190")
  ,("Larr;","\x219E")
  ,("lArr;","\x21D0")
  ,("larrb;","\x21E4")
  ,("larrbfs;","\x291F")
  ,("larrfs;","\x291D")
  ,("larrhk;","\x21A9")
  ,("larrlp;","\x21AB")
  ,("larrpl;","\x2939")
  ,("larrsim;","\x2973")
  ,("larrtl;","\x21A2")
  ,("lat;","\x2AAB")
  ,("latail;","\x2919")
  ,("lAtail;","\x291B")
  ,("late;","\x2AAD")
  ,("lates;","\x2AAD\xFE00")
  ,("lbarr;","\x290C")
  ,("lBarr;","\x290E")
  ,("lbbrk;","\x2772")
  ,("lbrace;","\x007B")
  ,("lbrack;","\x005B")
  ,("lbrke;","\x298B")
  ,("lbrksld;","\x298F")
  ,("lbrkslu;","\x298D")
  ,("Lcaron;","\x013D")
  ,("lcaron;","\x013E")
  ,("Lcedil;","\x013B")
  ,("lcedil;","\x013C")
  ,("lceil;","\x2308")
  ,("lcub;","\x007B")
  ,("Lcy;","\x041B")
  ,("lcy;","\x043B")
  ,("ldca;","\x2936")
  ,("ldquo;","\x201C")
  ,("ldquor;","\x201E")
  ,("ldrdhar;","\x2967")
  ,("ldrushar;","\x294B")
  ,("ldsh;","\x21B2")
  ,("le;","\x2264")
  ,("lE;","\x2266")
  ,("LeftAngleBracket;","\x27E8")
  ,("LeftArrow;","\x2190")
  ,("leftarrow;","\x2190")
  ,("Leftarrow;","\x21D0")
  ,("LeftArrowBar;","\x21E4")
  ,("LeftArrowRightArrow;","\x21C6")
  ,("leftarrowtail;","\x21A2")
  ,("LeftCeiling;","\x2308")
  ,("LeftDoubleBracket;","\x27E6")
  ,("LeftDownTeeVector;","\x2961")
  ,("LeftDownVector;","\x21C3")
  ,("LeftDownVectorBar;","\x2959")
  ,("LeftFloor;","\x230A")
  ,("leftharpoondown;","\x21BD")
  ,("leftharpoonup;","\x21BC")
  ,("leftleftarrows;","\x21C7")
  ,("LeftRightArrow;","\x2194")
  ,("leftrightarrow;","\x2194")
  ,("Leftrightarrow;","\x21D4")
  ,("leftrightarrows;","\x21C6")
  ,("leftrightharpoons;","\x21CB")
  ,("leftrightsquigarrow;","\x21AD")
  ,("LeftRightVector;","\x294E")
  ,("LeftTee;","\x22A3")
  ,("LeftTeeArrow;","\x21A4")
  ,("LeftTeeVector;","\x295A")
  ,("leftthreetimes;","\x22CB")
  ,("LeftTriangle;","\x22B2")
  ,("LeftTriangleBar;","\x29CF")
  ,("LeftTriangleEqual;","\x22B4")
  ,("LeftUpDownVector;","\x2951")
  ,("LeftUpTeeVector;","\x2960")
  ,("LeftUpVector;","\x21BF")
  ,("LeftUpVectorBar;","\x2958")
  ,("LeftVector;","\x21BC")
  ,("LeftVectorBar;","\x2952")
  ,("leg;","\x22DA")
  ,("lEg;","\x2A8B")
  ,("leq;","\x2264")
  ,("leqq;","\x2266")
  ,("leqslant;","\x2A7D")
  ,("les;","\x2A7D")
  ,("lescc;","\x2AA8")
  ,("lesdot;","\x2A7F")
  ,("lesdoto;","\x2A81")
  ,("lesdotor;","\x2A83")
  ,("lesg;","\x22DA\xFE00")
  ,("lesges;","\x2A93")
  ,("lessapprox;","\x2A85")
  ,("lessdot;","\x22D6")
  ,("lesseqgtr;","\x22DA")
  ,("lesseqqgtr;","\x2A8B")
  ,("LessEqualGreater;","\x22DA")
  ,("LessFullEqual;","\x2266")
  ,("LessGreater;","\x2276")
  ,("lessgtr;","\x2276")
  ,("LessLess;","\x2AA1")
  ,("lesssim;","\x2272")
  ,("LessSlantEqual;","\x2A7D")
  ,("LessTilde;","\x2272")
  ,("lfisht;","\x297C")
  ,("lfloor;","\x230A")
  ,("Lfr;","\xD835\xDD0F")
  ,("lfr;","\xD835\xDD29")
  ,("lg;","\x2276")
  ,("lgE;","\x2A91")
  ,("lHar;","\x2962")
  ,("lhard;","\x21BD")
  ,("lharu;","\x21BC")
  ,("lharul;","\x296A")
  ,("lhblk;","\x2584")
  ,("LJcy;","\x0409")
  ,("ljcy;","\x0459")
  ,("ll;","\x226A")
  ,("Ll;","\x22D8")
  ,("llarr;","\x21C7")
  ,("llcorner;","\x231E")
  ,("Lleftarrow;","\x21DA")
  ,("llhard;","\x296B")
  ,("lltri;","\x25FA")
  ,("Lmidot;","\x013F")
  ,("lmidot;","\x0140")
  ,("lmoust;","\x23B0")
  ,("lmoustache;","\x23B0")
  ,("lnap;","\x2A89")
  ,("lnapprox;","\x2A89")
  ,("lnE;","\x2268")
  ,("lne;","\x2A87")
  ,("lneq;","\x2A87")
  ,("lneqq;","\x2268")
  ,("lnsim;","\x22E6")
  ,("loang;","\x27EC")
  ,("loarr;","\x21FD")
  ,("lobrk;","\x27E6")
  ,("LongLeftArrow;","\x27F5")
  ,("longleftarrow;","\x27F5")
  ,("Longleftarrow;","\x27F8")
  ,("LongLeftRightArrow;","\x27F7")
  ,("longleftrightarrow;","\x27F7")
  ,("Longleftrightarrow;","\x27FA")
  ,("longmapsto;","\x27FC")
  ,("LongRightArrow;","\x27F6")
  ,("longrightarrow;","\x27F6")
  ,("Longrightarrow;","\x27F9")
  ,("looparrowleft;","\x21AB")
  ,("looparrowright;","\x21AC")
  ,("lopar;","\x2985")
  ,("Lopf;","\xD835\xDD43")
  ,("lopf;","\xD835\xDD5D")
  ,("loplus;","\x2A2D")
  ,("lotimes;","\x2A34")
  ,("lowast;","\x2217")
  ,("lowbar;","\x005F")
  ,("LowerLeftArrow;","\x2199")
  ,("LowerRightArrow;","\x2198")
  ,("loz;","\x25CA")
  ,("lozenge;","\x25CA")
  ,("lozf;","\x29EB")
  ,("lpar;","\x0028")
  ,("lparlt;","\x2993")
  ,("lrarr;","\x21C6")
  ,("lrcorner;","\x231F")
  ,("lrhar;","\x21CB")
  ,("lrhard;","\x296D")
  ,("lrm;","\x200E")
  ,("lrtri;","\x22BF")
  ,("lsaquo;","\x2039")
  ,("Lscr;","\x2112")
  ,("lscr;","\xD835\xDCC1")
  ,("Lsh;","\x21B0")
  ,("lsh;","\x21B0")
  ,("lsim;","\x2272")
  ,("lsime;","\x2A8D")
  ,("lsimg;","\x2A8F")
  ,("lsqb;","\x005B")
  ,("lsquo;","\x2018")
  ,("lsquor;","\x201A")
  ,("Lstrok;","\x0141")
  ,("lstrok;","\x0142")
  ,("LT","\x003C")
  ,("lt","\x003C")
  ,("LT;","\x003C")
  ,("lt;","\x003C")
  ,("Lt;","\x226A")
  ,("ltcc;","\x2AA6")
  ,("ltcir;","\x2A79")
  ,("ltdot;","\x22D6")
  ,("lthree;","\x22CB")
  ,("ltimes;","\x22C9")
  ,("ltlarr;","\x2976")
  ,("ltquest;","\x2A7B")
  ,("ltri;","\x25C3")
  ,("ltrie;","\x22B4")
  ,("ltrif;","\x25C2")
  ,("ltrPar;","\x2996")
  ,("lurdshar;","\x294A")
  ,("luruhar;","\x2966")
  ,("lvertneqq;","\x2268\xFE00")
  ,("lvnE;","\x2268\xFE00")
  ,("macr","\x00AF")
  ,("macr;","\x00AF")
  ,("male;","\x2642")
  ,("malt;","\x2720")
  ,("maltese;","\x2720")
  ,("map;","\x21A6")
  ,("Map;","\x2905")
  ,("mapsto;","\x21A6")
  ,("mapstodown;","\x21A7")
  ,("mapstoleft;","\x21A4")
  ,("mapstoup;","\x21A5")
  ,("marker;","\x25AE")
  ,("mcomma;","\x2A29")
  ,("Mcy;","\x041C")
  ,("mcy;","\x043C")
  ,("mdash;","\x2014")
  ,("mDDot;","\x223A")
  ,("measuredangle;","\x2221")
  ,("MediumSpace;","\x205F")
  ,("Mellintrf;","\x2133")
  ,("Mfr;","\xD835\xDD10")
  ,("mfr;","\xD835\xDD2A")
  ,("mho;","\x2127")
  ,("micro","\x00B5")
  ,("micro;","\x00B5")
  ,("mid;","\x2223")
  ,("midast;","\x002A")
  ,("midcir;","\x2AF0")
  ,("middot","\x00B7")
  ,("middot;","\x00B7")
  ,("minus;","\x2212")
  ,("minusb;","\x229F")
  ,("minusd;","\x2238")
  ,("minusdu;","\x2A2A")
  ,("MinusPlus;","\x2213")
  ,("mlcp;","\x2ADB")
  ,("mldr;","\x2026")
  ,("mnplus;","\x2213")
  ,("models;","\x22A7")
  ,("Mopf;","\xD835\xDD44")
  ,("mopf;","\xD835\xDD5E")
  ,("mp;","\x2213")
  ,("Mscr;","\x2133")
  ,("mscr;","\xD835\xDCC2")
  ,("mstpos;","\x223E")
  ,("Mu;","\x039C")
  ,("mu;","\x03BC")
  ,("multimap;","\x22B8")
  ,("mumap;","\x22B8")
  ,("nabla;","\x2207")
  ,("Nacute;","\x0143")
  ,("nacute;","\x0144")
  ,("nang;","\x2220\x20D2")
  ,("nap;","\x2249")
  ,("napE;","\x2A70\x0338")
  ,("napid;","\x224B\x0338")
  ,("napos;","\x0149")
  ,("napprox;","\x2249")
  ,("natur;","\x266E")
  ,("natural;","\x266E")
  ,("naturals;","\x2115")
  ,("nbsp","\x00A0")
  ,("nbsp;","\x00A0")
  ,("nbump;","\x224E\x0338")
  ,("nbumpe;","\x224F\x0338")
  ,("ncap;","\x2A43")
  ,("Ncaron;","\x0147")
  ,("ncaron;","\x0148")
  ,("Ncedil;","\x0145")
  ,("ncedil;","\x0146")
  ,("ncong;","\x2247")
  ,("ncongdot;","\x2A6D\x0338")
  ,("ncup;","\x2A42")
  ,("Ncy;","\x041D")
  ,("ncy;","\x043D")
  ,("ndash;","\x2013")
  ,("ne;","\x2260")
  ,("nearhk;","\x2924")
  ,("nearr;","\x2197")
  ,("neArr;","\x21D7")
  ,("nearrow;","\x2197")
  ,("nedot;","\x2250\x0338")
  ,("NegativeMediumSpace;","\x200B")
  ,("NegativeThickSpace;","\x200B")
  ,("NegativeThinSpace;","\x200B")
  ,("NegativeVeryThinSpace;","\x200B")
  ,("nequiv;","\x2262")
  ,("nesear;","\x2928")
  ,("nesim;","\x2242\x0338")
  ,("NestedGreaterGreater;","\x226B")
  ,("NestedLessLess;","\x226A")
  ,("NewLine;","\x000A")
  ,("nexist;","\x2204")
  ,("nexists;","\x2204")
  ,("Nfr;","\xD835\xDD11")
  ,("nfr;","\xD835\xDD2B")
  ,("ngE;","\x2267\x0338")
  ,("nge;","\x2271")
  ,("ngeq;","\x2271")
  ,("ngeqq;","\x2267\x0338")
  ,("ngeqslant;","\x2A7E\x0338")
  ,("nges;","\x2A7E\x0338")
  ,("nGg;","\x22D9\x0338")
  ,("ngsim;","\x2275")
  ,("nGt;","\x226B\x20D2")
  ,("ngt;","\x226F")
  ,("ngtr;","\x226F")
  ,("nGtv;","\x226B\x0338")
  ,("nharr;","\x21AE")
  ,("nhArr;","\x21CE")
  ,("nhpar;","\x2AF2")
  ,("ni;","\x220B")
  ,("nis;","\x22FC")
  ,("nisd;","\x22FA")
  ,("niv;","\x220B")
  ,("NJcy;","\x040A")
  ,("njcy;","\x045A")
  ,("nlarr;","\x219A")
  ,("nlArr;","\x21CD")
  ,("nldr;","\x2025")
  ,("nlE;","\x2266\x0338")
  ,("nle;","\x2270")
  ,("nleftarrow;","\x219A")
  ,("nLeftarrow;","\x21CD")
  ,("nleftrightarrow;","\x21AE")
  ,("nLeftrightarrow;","\x21CE")
  ,("nleq;","\x2270")
  ,("nleqq;","\x2266\x0338")
  ,("nleqslant;","\x2A7D\x0338")
  ,("nles;","\x2A7D\x0338")
  ,("nless;","\x226E")
  ,("nLl;","\x22D8\x0338")
  ,("nlsim;","\x2274")
  ,("nLt;","\x226A\x20D2")
  ,("nlt;","\x226E")
  ,("nltri;","\x22EA")
  ,("nltrie;","\x22EC")
  ,("nLtv;","\x226A\x0338")
  ,("nmid;","\x2224")
  ,("NoBreak;","\x2060")
  ,("NonBreakingSpace;","\x00A0")
  ,("Nopf;","\x2115")
  ,("nopf;","\xD835\xDD5F")
  ,("not","\x00AC")
  ,("not;","\x00AC")
  ,("Not;","\x2AEC")
  ,("NotCongruent;","\x2262")
  ,("NotCupCap;","\x226D")
  ,("NotDoubleVerticalBar;","\x2226")
  ,("NotElement;","\x2209")
  ,("NotEqual;","\x2260")
  ,("NotEqualTilde;","\x2242\x0338")
  ,("NotExists;","\x2204")
  ,("NotGreater;","\x226F")
  ,("NotGreaterEqual;","\x2271")
  ,("NotGreaterFullEqual;","\x2267\x0338")
  ,("NotGreaterGreater;","\x226B\x0338")
  ,("NotGreaterLess;","\x2279")
  ,("NotGreaterSlantEqual;","\x2A7E\x0338")
  ,("NotGreaterTilde;","\x2275")
  ,("NotHumpDownHump;","\x224E\x0338")
  ,("NotHumpEqual;","\x224F\x0338")
  ,("notin;","\x2209")
  ,("notindot;","\x22F5\x0338")
  ,("notinE;","\x22F9\x0338")
  ,("notinva;","\x2209")
  ,("notinvb;","\x22F7")
  ,("notinvc;","\x22F6")
  ,("NotLeftTriangle;","\x22EA")
  ,("NotLeftTriangleBar;","\x29CF\x0338")
  ,("NotLeftTriangleEqual;","\x22EC")
  ,("NotLess;","\x226E")
  ,("NotLessEqual;","\x2270")
  ,("NotLessGreater;","\x2278")
  ,("NotLessLess;","\x226A\x0338")
  ,("NotLessSlantEqual;","\x2A7D\x0338")
  ,("NotLessTilde;","\x2274")
  ,("NotNestedGreaterGreater;","\x2AA2\x0338")
  ,("NotNestedLessLess;","\x2AA1\x0338")
  ,("notni;","\x220C")
  ,("notniva;","\x220C")
  ,("notnivb;","\x22FE")
  ,("notnivc;","\x22FD")
  ,("NotPrecedes;","\x2280")
  ,("NotPrecedesEqual;","\x2AAF\x0338")
  ,("NotPrecedesSlantEqual;","\x22E0")
  ,("NotReverseElement;","\x220C")
  ,("NotRightTriangle;","\x22EB")
  ,("NotRightTriangleBar;","\x29D0\x0338")
  ,("NotRightTriangleEqual;","\x22ED")
  ,("NotSquareSubset;","\x228F\x0338")
  ,("NotSquareSubsetEqual;","\x22E2")
  ,("NotSquareSuperset;","\x2290\x0338")
  ,("NotSquareSupersetEqual;","\x22E3")
  ,("NotSubset;","\x2282\x20D2")
  ,("NotSubsetEqual;","\x2288")
  ,("NotSucceeds;","\x2281")
  ,("NotSucceedsEqual;","\x2AB0\x0338")
  ,("NotSucceedsSlantEqual;","\x22E1")
  ,("NotSucceedsTilde;","\x227F\x0338")
  ,("NotSuperset;","\x2283\x20D2")
  ,("NotSupersetEqual;","\x2289")
  ,("NotTilde;","\x2241")
  ,("NotTildeEqual;","\x2244")
  ,("NotTildeFullEqual;","\x2247")
  ,("NotTildeTilde;","\x2249")
  ,("NotVerticalBar;","\x2224")
  ,("npar;","\x2226")
  ,("nparallel;","\x2226")
  ,("nparsl;","\x2AFD\x20E5")
  ,("npart;","\x2202\x0338")
  ,("npolint;","\x2A14")
  ,("npr;","\x2280")
  ,("nprcue;","\x22E0")
  ,("npre;","\x2AAF\x0338")
  ,("nprec;","\x2280")
  ,("npreceq;","\x2AAF\x0338")
  ,("nrarr;","\x219B")
  ,("nrArr;","\x21CF")
  ,("nrarrc;","\x2933\x0338")
  ,("nrarrw;","\x219D\x0338")
  ,("nrightarrow;","\x219B")
  ,("nRightarrow;","\x21CF")
  ,("nrtri;","\x22EB")
  ,("nrtrie;","\x22ED")
  ,("nsc;","\x2281")
  ,("nsccue;","\x22E1")
  ,("nsce;","\x2AB0\x0338")
  ,("Nscr;","\xD835\xDCA9")
  ,("nscr;","\xD835\xDCC3")
  ,("nshortmid;","\x2224")
  ,("nshortparallel;","\x2226")
  ,("nsim;","\x2241")
  ,("nsime;","\x2244")
  ,("nsimeq;","\x2244")
  ,("nsmid;","\x2224")
  ,("nspar;","\x2226")
  ,("nsqsube;","\x22E2")
  ,("nsqsupe;","\x22E3")
  ,("nsub;","\x2284")
  ,("nsube;","\x2288")
  ,("nsubE;","\x2AC5\x0338")
  ,("nsubset;","\x2282\x20D2")
  ,("nsubseteq;","\x2288")
  ,("nsubseteqq;","\x2AC5\x0338")
  ,("nsucc;","\x2281")
  ,("nsucceq;","\x2AB0\x0338")
  ,("nsup;","\x2285")
  ,("nsupe;","\x2289")
  ,("nsupE;","\x2AC6\x0338")
  ,("nsupset;","\x2283\x20D2")
  ,("nsupseteq;","\x2289")
  ,("nsupseteqq;","\x2AC6\x0338")
  ,("ntgl;","\x2279")
  ,("Ntilde","\x00D1")
  ,("ntilde","\x00F1")
  ,("Ntilde;","\x00D1")
  ,("ntilde;","\x00F1")
  ,("ntlg;","\x2278")
  ,("ntriangleleft;","\x22EA")
  ,("ntrianglelefteq;","\x22EC")
  ,("ntriangleright;","\x22EB")
  ,("ntrianglerighteq;","\x22ED")
  ,("Nu;","\x039D")
  ,("nu;","\x03BD")
  ,("num;","\x0023")
  ,("numero;","\x2116")
  ,("numsp;","\x2007")
  ,("nvap;","\x224D\x20D2")
  ,("nvdash;","\x22AC")
  ,("nvDash;","\x22AD")
  ,("nVdash;","\x22AE")
  ,("nVDash;","\x22AF")
  ,("nvge;","\x2265\x20D2")
  ,("nvgt;","\x003E\x20D2")
  ,("nvHarr;","\x2904")
  ,("nvinfin;","\x29DE")
  ,("nvlArr;","\x2902")
  ,("nvle;","\x2264\x20D2")
  ,("nvlt;","\x003C\x20D2")
  ,("nvltrie;","\x22B4\x20D2")
  ,("nvrArr;","\x2903")
  ,("nvrtrie;","\x22B5\x20D2")
  ,("nvsim;","\x223C\x20D2")
  ,("nwarhk;","\x2923")
  ,("nwarr;","\x2196")
  ,("nwArr;","\x21D6")
  ,("nwarrow;","\x2196")
  ,("nwnear;","\x2927")
  ,("Oacute","\x00D3")
  ,("oacute","\x00F3")
  ,("Oacute;","\x00D3")
  ,("oacute;","\x00F3")
  ,("oast;","\x229B")
  ,("ocir;","\x229A")
  ,("Ocirc","\x00D4")
  ,("ocirc","\x00F4")
  ,("Ocirc;","\x00D4")
  ,("ocirc;","\x00F4")
  ,("Ocy;","\x041E")
  ,("ocy;","\x043E")
  ,("odash;","\x229D")
  ,("Odblac;","\x0150")
  ,("odblac;","\x0151")
  ,("odiv;","\x2A38")
  ,("odot;","\x2299")
  ,("odsold;","\x29BC")
  ,("OElig;","\x0152")
  ,("oelig;","\x0153")
  ,("ofcir;","\x29BF")
  ,("Ofr;","\xD835\xDD12")
  ,("ofr;","\xD835\xDD2C")
  ,("ogon;","\x02DB")
  ,("Ograve","\x00D2")
  ,("ograve","\x00F2")
  ,("Ograve;","\x00D2")
  ,("ograve;","\x00F2")
  ,("ogt;","\x29C1")
  ,("ohbar;","\x29B5")
  ,("ohm;","\x03A9")
  ,("oint;","\x222E")
  ,("olarr;","\x21BA")
  ,("olcir;","\x29BE")
  ,("olcross;","\x29BB")
  ,("oline;","\x203E")
  ,("olt;","\x29C0")
  ,("Omacr;","\x014C")
  ,("omacr;","\x014D")
  ,("Omega;","\x03A9")
  ,("omega;","\x03C9")
  ,("Omicron;","\x039F")
  ,("omicron;","\x03BF")
  ,("omid;","\x29B6")
  ,("ominus;","\x2296")
  ,("Oopf;","\xD835\xDD46")
  ,("oopf;","\xD835\xDD60")
  ,("opar;","\x29B7")
  ,("OpenCurlyDoubleQuote;","\x201C")
  ,("OpenCurlyQuote;","\x2018")
  ,("operp;","\x29B9")
  ,("oplus;","\x2295")
  ,("or;","\x2228")
  ,("Or;","\x2A54")
  ,("orarr;","\x21BB")
  ,("ord;","\x2A5D")
  ,("order;","\x2134")
  ,("orderof;","\x2134")
  ,("ordf","\x00AA")
  ,("ordf;","\x00AA")
  ,("ordm","\x00BA")
  ,("ordm;","\x00BA")
  ,("origof;","\x22B6")
  ,("oror;","\x2A56")
  ,("orslope;","\x2A57")
  ,("orv;","\x2A5B")
  ,("oS;","\x24C8")
  ,("oscr;","\x2134")
  ,("Oscr;","\xD835\xDCAA")
  ,("Oslash","\x00D8")
  ,("oslash","\x00F8")
  ,("Oslash;","\x00D8")
  ,("oslash;","\x00F8")
  ,("osol;","\x2298")
  ,("Otilde","\x00D5")
  ,("otilde","\x00F5")
  ,("Otilde;","\x00D5")
  ,("otilde;","\x00F5")
  ,("otimes;","\x2297")
  ,("Otimes;","\x2A37")
  ,("otimesas;","\x2A36")
  ,("Ouml","\x00D6")
  ,("ouml","\x00F6")
  ,("Ouml;","\x00D6")
  ,("ouml;","\x00F6")
  ,("ovbar;","\x233D")
  ,("OverBar;","\x203E")
  ,("OverBrace;","\x23DE")
  ,("OverBracket;","\x23B4")
  ,("OverParenthesis;","\x23DC")
  ,("par;","\x2225")
  ,("para","\x00B6")
  ,("para;","\x00B6")
  ,("parallel;","\x2225")
  ,("parsim;","\x2AF3")
  ,("parsl;","\x2AFD")
  ,("part;","\x2202")
  ,("PartialD;","\x2202")
  ,("Pcy;","\x041F")
  ,("pcy;","\x043F")
  ,("percnt;","\x0025")
  ,("period;","\x002E")
  ,("permil;","\x2030")
  ,("perp;","\x22A5")
  ,("pertenk;","\x2031")
  ,("Pfr;","\xD835\xDD13")
  ,("pfr;","\xD835\xDD2D")
  ,("Phi;","\x03A6")
  ,("phi;","\x03C6")
  ,("phiv;","\x03D5")
  ,("phmmat;","\x2133")
  ,("phone;","\x260E")
  ,("Pi;","\x03A0")
  ,("pi;","\x03C0")
  ,("pitchfork;","\x22D4")
  ,("piv;","\x03D6")
  ,("planck;","\x210F")
  ,("planckh;","\x210E")
  ,("plankv;","\x210F")
  ,("plus;","\x002B")
  ,("plusacir;","\x2A23")
  ,("plusb;","\x229E")
  ,("pluscir;","\x2A22")
  ,("plusdo;","\x2214")
  ,("plusdu;","\x2A25")
  ,("pluse;","\x2A72")
  ,("PlusMinus;","\x00B1")
  ,("plusmn","\x00B1")
  ,("plusmn;","\x00B1")
  ,("plussim;","\x2A26")
  ,("plustwo;","\x2A27")
  ,("pm;","\x00B1")
  ,("Poincareplane;","\x210C")
  ,("pointint;","\x2A15")
  ,("Popf;","\x2119")
  ,("popf;","\xD835\xDD61")
  ,("pound","\x00A3")
  ,("pound;","\x00A3")
  ,("pr;","\x227A")
  ,("Pr;","\x2ABB")
  ,("prap;","\x2AB7")
  ,("prcue;","\x227C")
  ,("pre;","\x2AAF")
  ,("prE;","\x2AB3")
  ,("prec;","\x227A")
  ,("precapprox;","\x2AB7")
  ,("preccurlyeq;","\x227C")
  ,("Precedes;","\x227A")
  ,("PrecedesEqual;","\x2AAF")
  ,("PrecedesSlantEqual;","\x227C")
  ,("PrecedesTilde;","\x227E")
  ,("preceq;","\x2AAF")
  ,("precnapprox;","\x2AB9")
  ,("precneqq;","\x2AB5")
  ,("precnsim;","\x22E8")
  ,("precsim;","\x227E")
  ,("prime;","\x2032")
  ,("Prime;","\x2033")
  ,("primes;","\x2119")
  ,("prnap;","\x2AB9")
  ,("prnE;","\x2AB5")
  ,("prnsim;","\x22E8")
  ,("prod;","\x220F")
  ,("Product;","\x220F")
  ,("profalar;","\x232E")
  ,("profline;","\x2312")
  ,("profsurf;","\x2313")
  ,("prop;","\x221D")
  ,("Proportion;","\x2237")
  ,("Proportional;","\x221D")
  ,("propto;","\x221D")
  ,("prsim;","\x227E")
  ,("prurel;","\x22B0")
  ,("Pscr;","\xD835\xDCAB")
  ,("pscr;","\xD835\xDCC5")
  ,("Psi;","\x03A8")
  ,("psi;","\x03C8")
  ,("puncsp;","\x2008")
  ,("Qfr;","\xD835\xDD14")
  ,("qfr;","\xD835\xDD2E")
  ,("qint;","\x2A0C")
  ,("Qopf;","\x211A")
  ,("qopf;","\xD835\xDD62")
  ,("qprime;","\x2057")
  ,("Qscr;","\xD835\xDCAC")
  ,("qscr;","\xD835\xDCC6")
  ,("quaternions;","\x210D")
  ,("quatint;","\x2A16")
  ,("quest;","\x003F")
  ,("questeq;","\x225F")
  ,("QUOT","\x0022")
  ,("quot","\x0022")
  ,("QUOT;","\x0022")
  ,("quot;","\x0022")
  ,("rAarr;","\x21DB")
  ,("race;","\x223D\x0331")
  ,("Racute;","\x0154")
  ,("racute;","\x0155")
  ,("radic;","\x221A")
  ,("raemptyv;","\x29B3")
  ,("rang;","\x27E9")
  ,("Rang;","\x27EB")
  ,("rangd;","\x2992")
  ,("range;","\x29A5")
  ,("rangle;","\x27E9")
  ,("raquo","\x00BB")
  ,("raquo;","\x00BB")
  ,("rarr;","\x2192")
  ,("Rarr;","\x21A0")
  ,("rArr;","\x21D2")
  ,("rarrap;","\x2975")
  ,("rarrb;","\x21E5")
  ,("rarrbfs;","\x2920")
  ,("rarrc;","\x2933")
  ,("rarrfs;","\x291E")
  ,("rarrhk;","\x21AA")
  ,("rarrlp;","\x21AC")
  ,("rarrpl;","\x2945")
  ,("rarrsim;","\x2974")
  ,("rarrtl;","\x21A3")
  ,("Rarrtl;","\x2916")
  ,("rarrw;","\x219D")
  ,("ratail;","\x291A")
  ,("rAtail;","\x291C")
  ,("ratio;","\x2236")
  ,("rationals;","\x211A")
  ,("rbarr;","\x290D")
  ,("rBarr;","\x290F")
  ,("RBarr;","\x2910")
  ,("rbbrk;","\x2773")
  ,("rbrace;","\x007D")
  ,("rbrack;","\x005D")
  ,("rbrke;","\x298C")
  ,("rbrksld;","\x298E")
  ,("rbrkslu;","\x2990")
  ,("Rcaron;","\x0158")
  ,("rcaron;","\x0159")
  ,("Rcedil;","\x0156")
  ,("rcedil;","\x0157")
  ,("rceil;","\x2309")
  ,("rcub;","\x007D")
  ,("Rcy;","\x0420")
  ,("rcy;","\x0440")
  ,("rdca;","\x2937")
  ,("rdldhar;","\x2969")
  ,("rdquo;","\x201D")
  ,("rdquor;","\x201D")
  ,("rdsh;","\x21B3")
  ,("Re;","\x211C")
  ,("real;","\x211C")
  ,("realine;","\x211B")
  ,("realpart;","\x211C")
  ,("reals;","\x211D")
  ,("rect;","\x25AD")
  ,("REG","\x00AE")
  ,("reg","\x00AE")
  ,("REG;","\x00AE")
  ,("reg;","\x00AE")
  ,("ReverseElement;","\x220B")
  ,("ReverseEquilibrium;","\x21CB")
  ,("ReverseUpEquilibrium;","\x296F")
  ,("rfisht;","\x297D")
  ,("rfloor;","\x230B")
  ,("Rfr;","\x211C")
  ,("rfr;","\xD835\xDD2F")
  ,("rHar;","\x2964")
  ,("rhard;","\x21C1")
  ,("rharu;","\x21C0")
  ,("rharul;","\x296C")
  ,("Rho;","\x03A1")
  ,("rho;","\x03C1")
  ,("rhov;","\x03F1")
  ,("RightAngleBracket;","\x27E9")
  ,("RightArrow;","\x2192")
  ,("rightarrow;","\x2192")
  ,("Rightarrow;","\x21D2")
  ,("RightArrowBar;","\x21E5")
  ,("RightArrowLeftArrow;","\x21C4")
  ,("rightarrowtail;","\x21A3")
  ,("RightCeiling;","\x2309")
  ,("RightDoubleBracket;","\x27E7")
  ,("RightDownTeeVector;","\x295D")
  ,("RightDownVector;","\x21C2")
  ,("RightDownVectorBar;","\x2955")
  ,("RightFloor;","\x230B")
  ,("rightharpoondown;","\x21C1")
  ,("rightharpoonup;","\x21C0")
  ,("rightleftarrows;","\x21C4")
  ,("rightleftharpoons;","\x21CC")
  ,("rightrightarrows;","\x21C9")
  ,("rightsquigarrow;","\x219D")
  ,("RightTee;","\x22A2")
  ,("RightTeeArrow;","\x21A6")
  ,("RightTeeVector;","\x295B")
  ,("rightthreetimes;","\x22CC")
  ,("RightTriangle;","\x22B3")
  ,("RightTriangleBar;","\x29D0")
  ,("RightTriangleEqual;","\x22B5")
  ,("RightUpDownVector;","\x294F")
  ,("RightUpTeeVector;","\x295C")
  ,("RightUpVector;","\x21BE")
  ,("RightUpVectorBar;","\x2954")
  ,("RightVector;","\x21C0")
  ,("RightVectorBar;","\x2953")
  ,("ring;","\x02DA")
  ,("risingdotseq;","\x2253")
  ,("rlarr;","\x21C4")
  ,("rlhar;","\x21CC")
  ,("rlm;","\x200F")
  ,("rmoust;","\x23B1")
  ,("rmoustache;","\x23B1")
  ,("rnmid;","\x2AEE")
  ,("roang;","\x27ED")
  ,("roarr;","\x21FE")
  ,("robrk;","\x27E7")
  ,("ropar;","\x2986")
  ,("Ropf;","\x211D")
  ,("ropf;","\xD835\xDD63")
  ,("roplus;","\x2A2E")
  ,("rotimes;","\x2A35")
  ,("RoundImplies;","\x2970")
  ,("rpar;","\x0029")
  ,("rpargt;","\x2994")
  ,("rppolint;","\x2A12")
  ,("rrarr;","\x21C9")
  ,("Rrightarrow;","\x21DB")
  ,("rsaquo;","\x203A")
  ,("Rscr;","\x211B")
  ,("rscr;","\xD835\xDCC7")
  ,("Rsh;","\x21B1")
  ,("rsh;","\x21B1")
  ,("rsqb;","\x005D")
  ,("rsquo;","\x2019")
  ,("rsquor;","\x2019")
  ,("rthree;","\x22CC")
  ,("rtimes;","\x22CA")
  ,("rtri;","\x25B9")
  ,("rtrie;","\x22B5")
  ,("rtrif;","\x25B8")
  ,("rtriltri;","\x29CE")
  ,("RuleDelayed;","\x29F4")
  ,("ruluhar;","\x2968")
  ,("rx;","\x211E")
  ,("Sacute;","\x015A")
  ,("sacute;","\x015B")
  ,("sbquo;","\x201A")
  ,("sc;","\x227B")
  ,("Sc;","\x2ABC")
  ,("scap;","\x2AB8")
  ,("Scaron;","\x0160")
  ,("scaron;","\x0161")
  ,("sccue;","\x227D")
  ,("sce;","\x2AB0")
  ,("scE;","\x2AB4")
  ,("Scedil;","\x015E")
  ,("scedil;","\x015F")
  ,("Scirc;","\x015C")
  ,("scirc;","\x015D")
  ,("scnap;","\x2ABA")
  ,("scnE;","\x2AB6")
  ,("scnsim;","\x22E9")
  ,("scpolint;","\x2A13")
  ,("scsim;","\x227F")
  ,("Scy;","\x0421")
  ,("scy;","\x0441")
  ,("sdot;","\x22C5")
  ,("sdotb;","\x22A1")
  ,("sdote;","\x2A66")
  ,("searhk;","\x2925")
  ,("searr;","\x2198")
  ,("seArr;","\x21D8")
  ,("searrow;","\x2198")
  ,("sect","\x00A7")
  ,("sect;","\x00A7")
  ,("semi;","\x003B")
  ,("seswar;","\x2929")
  ,("setminus;","\x2216")
  ,("setmn;","\x2216")
  ,("sext;","\x2736")
  ,("Sfr;","\xD835\xDD16")
  ,("sfr;","\xD835\xDD30")
  ,("sfrown;","\x2322")
  ,("sharp;","\x266F")
  ,("SHCHcy;","\x0429")
  ,("shchcy;","\x0449")
  ,("SHcy;","\x0428")
  ,("shcy;","\x0448")
  ,("ShortDownArrow;","\x2193")
  ,("ShortLeftArrow;","\x2190")
  ,("shortmid;","\x2223")
  ,("shortparallel;","\x2225")
  ,("ShortRightArrow;","\x2192")
  ,("ShortUpArrow;","\x2191")
  ,("shy","\x00AD")
  ,("shy;","\x00AD")
  ,("Sigma;","\x03A3")
  ,("sigma;","\x03C3")
  ,("sigmaf;","\x03C2")
  ,("sigmav;","\x03C2")
  ,("sim;","\x223C")
  ,("simdot;","\x2A6A")
  ,("sime;","\x2243")
  ,("simeq;","\x2243")
  ,("simg;","\x2A9E")
  ,("simgE;","\x2AA0")
  ,("siml;","\x2A9D")
  ,("simlE;","\x2A9F")
  ,("simne;","\x2246")
  ,("simplus;","\x2A24")
  ,("simrarr;","\x2972")
  ,("slarr;","\x2190")
  ,("SmallCircle;","\x2218")
  ,("smallsetminus;","\x2216")
  ,("smashp;","\x2A33")
  ,("smeparsl;","\x29E4")
  ,("smid;","\x2223")
  ,("smile;","\x2323")
  ,("smt;","\x2AAA")
  ,("smte;","\x2AAC")
  ,("smtes;","\x2AAC\xFE00")
  ,("SOFTcy;","\x042C")
  ,("softcy;","\x044C")
  ,("sol;","\x002F")
  ,("solb;","\x29C4")
  ,("solbar;","\x233F")
  ,("Sopf;","\xD835\xDD4A")
  ,("sopf;","\xD835\xDD64")
  ,("spades;","\x2660")
  ,("spadesuit;","\x2660")
  ,("spar;","\x2225")
  ,("sqcap;","\x2293")
  ,("sqcaps;","\x2293\xFE00")
  ,("sqcup;","\x2294")
  ,("sqcups;","\x2294\xFE00")
  ,("Sqrt;","\x221A")
  ,("sqsub;","\x228F")
  ,("sqsube;","\x2291")
  ,("sqsubset;","\x228F")
  ,("sqsubseteq;","\x2291")
  ,("sqsup;","\x2290")
  ,("sqsupe;","\x2292")
  ,("sqsupset;","\x2290")
  ,("sqsupseteq;","\x2292")
  ,("squ;","\x25A1")
  ,("Square;","\x25A1")
  ,("square;","\x25A1")
  ,("SquareIntersection;","\x2293")
  ,("SquareSubset;","\x228F")
  ,("SquareSubsetEqual;","\x2291")
  ,("SquareSuperset;","\x2290")
  ,("SquareSupersetEqual;","\x2292")
  ,("SquareUnion;","\x2294")
  ,("squarf;","\x25AA")
  ,("squf;","\x25AA")
  ,("srarr;","\x2192")
  ,("Sscr;","\xD835\xDCAE")
  ,("sscr;","\xD835\xDCC8")
  ,("ssetmn;","\x2216")
  ,("ssmile;","\x2323")
  ,("sstarf;","\x22C6")
  ,("Star;","\x22C6")
  ,("star;","\x2606")
  ,("starf;","\x2605")
  ,("straightepsilon;","\x03F5")
  ,("straightphi;","\x03D5")
  ,("strns;","\x00AF")
  ,("sub;","\x2282")
  ,("Sub;","\x22D0")
  ,("subdot;","\x2ABD")
  ,("sube;","\x2286")
  ,("subE;","\x2AC5")
  ,("subedot;","\x2AC3")
  ,("submult;","\x2AC1")
  ,("subne;","\x228A")
  ,("subnE;","\x2ACB")
  ,("subplus;","\x2ABF")
  ,("subrarr;","\x2979")
  ,("subset;","\x2282")
  ,("Subset;","\x22D0")
  ,("subseteq;","\x2286")
  ,("subseteqq;","\x2AC5")
  ,("SubsetEqual;","\x2286")
  ,("subsetneq;","\x228A")
  ,("subsetneqq;","\x2ACB")
  ,("subsim;","\x2AC7")
  ,("subsub;","\x2AD5")
  ,("subsup;","\x2AD3")
  ,("succ;","\x227B")
  ,("succapprox;","\x2AB8")
  ,("succcurlyeq;","\x227D")
  ,("Succeeds;","\x227B")
  ,("SucceedsEqual;","\x2AB0")
  ,("SucceedsSlantEqual;","\x227D")
  ,("SucceedsTilde;","\x227F")
  ,("succeq;","\x2AB0")
  ,("succnapprox;","\x2ABA")
  ,("succneqq;","\x2AB6")
  ,("succnsim;","\x22E9")
  ,("succsim;","\x227F")
  ,("SuchThat;","\x220B")
  ,("Sum;","\x2211")
  ,("sum;","\x2211")
  ,("sung;","\x266A")
  ,("sup1","\x00B9")
  ,("sup1;","\x00B9")
  ,("sup2","\x00B2")
  ,("sup2;","\x00B2")
  ,("sup3","\x00B3")
  ,("sup3;","\x00B3")
  ,("sup;","\x2283")
  ,("Sup;","\x22D1")
  ,("supdot;","\x2ABE")
  ,("supdsub;","\x2AD8")
  ,("supe;","\x2287")
  ,("supE;","\x2AC6")
  ,("supedot;","\x2AC4")
  ,("Superset;","\x2283")
  ,("SupersetEqual;","\x2287")
  ,("suphsol;","\x27C9")
  ,("suphsub;","\x2AD7")
  ,("suplarr;","\x297B")
  ,("supmult;","\x2AC2")
  ,("supne;","\x228B")
  ,("supnE;","\x2ACC")
  ,("supplus;","\x2AC0")
  ,("supset;","\x2283")
  ,("Supset;","\x22D1")
  ,("supseteq;","\x2287")
  ,("supseteqq;","\x2AC6")
  ,("supsetneq;","\x228B")
  ,("supsetneqq;","\x2ACC")
  ,("supsim;","\x2AC8")
  ,("supsub;","\x2AD4")
  ,("supsup;","\x2AD6")
  ,("swarhk;","\x2926")
  ,("swarr;","\x2199")
  ,("swArr;","\x21D9")
  ,("swarrow;","\x2199")
  ,("swnwar;","\x292A")
  ,("szlig","\x00DF")
  ,("szlig;","\x00DF")
  ,("Tab;","\x0009")
  ,("target;","\x2316")
  ,("Tau;","\x03A4")
  ,("tau;","\x03C4")
  ,("tbrk;","\x23B4")
  ,("Tcaron;","\x0164")
  ,("tcaron;","\x0165")
  ,("Tcedil;","\x0162")
  ,("tcedil;","\x0163")
  ,("Tcy;","\x0422")
  ,("tcy;","\x0442")
  ,("tdot;","\x20DB")
  ,("telrec;","\x2315")
  ,("Tfr;","\xD835\xDD17")
  ,("tfr;","\xD835\xDD31")
  ,("there4;","\x2234")
  ,("Therefore;","\x2234")
  ,("therefore;","\x2234")
  ,("Theta;","\x0398")
  ,("theta;","\x03B8")
  ,("thetasym;","\x03D1")
  ,("thetav;","\x03D1")
  ,("thickapprox;","\x2248")
  ,("thicksim;","\x223C")
  ,("ThickSpace;","\x205F\x200A")
  ,("thinsp;","\x2009")
  ,("ThinSpace;","\x2009")
  ,("thkap;","\x2248")
  ,("thksim;","\x223C")
  ,("THORN","\x00DE")
  ,("thorn","\x00FE")
  ,("THORN;","\x00DE")
  ,("thorn;","\x00FE")
  ,("tilde;","\x02DC")
  ,("Tilde;","\x223C")
  ,("TildeEqual;","\x2243")
  ,("TildeFullEqual;","\x2245")
  ,("TildeTilde;","\x2248")
  ,("times","\x00D7")
  ,("times;","\x00D7")
  ,("timesb;","\x22A0")
  ,("timesbar;","\x2A31")
  ,("timesd;","\x2A30")
  ,("tint;","\x222D")
  ,("toea;","\x2928")
  ,("top;","\x22A4")
  ,("topbot;","\x2336")
  ,("topcir;","\x2AF1")
  ,("Topf;","\xD835\xDD4B")
  ,("topf;","\xD835\xDD65")
  ,("topfork;","\x2ADA")
  ,("tosa;","\x2929")
  ,("tprime;","\x2034")
  ,("TRADE;","\x2122")
  ,("trade;","\x2122")
  ,("triangle;","\x25B5")
  ,("triangledown;","\x25BF")
  ,("triangleleft;","\x25C3")
  ,("trianglelefteq;","\x22B4")
  ,("triangleq;","\x225C")
  ,("triangleright;","\x25B9")
  ,("trianglerighteq;","\x22B5")
  ,("tridot;","\x25EC")
  ,("trie;","\x225C")
  ,("triminus;","\x2A3A")
  ,("TripleDot;","\x20DB")
  ,("triplus;","\x2A39")
  ,("trisb;","\x29CD")
  ,("tritime;","\x2A3B")
  ,("trpezium;","\x23E2")
  ,("Tscr;","\xD835\xDCAF")
  ,("tscr;","\xD835\xDCC9")
  ,("TScy;","\x0426")
  ,("tscy;","\x0446")
  ,("TSHcy;","\x040B")
  ,("tshcy;","\x045B")
  ,("Tstrok;","\x0166")
  ,("tstrok;","\x0167")
  ,("twixt;","\x226C")
  ,("twoheadleftarrow;","\x219E")
  ,("twoheadrightarrow;","\x21A0")
  ,("Uacute","\x00DA")
  ,("uacute","\x00FA")
  ,("Uacute;","\x00DA")
  ,("uacute;","\x00FA")
  ,("uarr;","\x2191")
  ,("Uarr;","\x219F")
  ,("uArr;","\x21D1")
  ,("Uarrocir;","\x2949")
  ,("Ubrcy;","\x040E")
  ,("ubrcy;","\x045E")
  ,("Ubreve;","\x016C")
  ,("ubreve;","\x016D")
  ,("Ucirc","\x00DB")
  ,("ucirc","\x00FB")
  ,("Ucirc;","\x00DB")
  ,("ucirc;","\x00FB")
  ,("Ucy;","\x0423")
  ,("ucy;","\x0443")
  ,("udarr;","\x21C5")
  ,("Udblac;","\x0170")
  ,("udblac;","\x0171")
  ,("udhar;","\x296E")
  ,("ufisht;","\x297E")
  ,("Ufr;","\xD835\xDD18")
  ,("ufr;","\xD835\xDD32")
  ,("Ugrave","\x00D9")
  ,("ugrave","\x00F9")
  ,("Ugrave;","\x00D9")
  ,("ugrave;","\x00F9")
  ,("uHar;","\x2963")
  ,("uharl;","\x21BF")
  ,("uharr;","\x21BE")
  ,("uhblk;","\x2580")
  ,("ulcorn;","\x231C")
  ,("ulcorner;","\x231C")
  ,("ulcrop;","\x230F")
  ,("ultri;","\x25F8")
  ,("Umacr;","\x016A")
  ,("umacr;","\x016B")
  ,("uml","\x00A8")
  ,("uml;","\x00A8")
  ,("UnderBar;","\x005F")
  ,("UnderBrace;","\x23DF")
  ,("UnderBracket;","\x23B5")
  ,("UnderParenthesis;","\x23DD")
  ,("Union;","\x22C3")
  ,("UnionPlus;","\x228E")
  ,("Uogon;","\x0172")
  ,("uogon;","\x0173")
  ,("Uopf;","\xD835\xDD4C")
  ,("uopf;","\xD835\xDD66")
  ,("UpArrow;","\x2191")
  ,("uparrow;","\x2191")
  ,("Uparrow;","\x21D1")
  ,("UpArrowBar;","\x2912")
  ,("UpArrowDownArrow;","\x21C5")
  ,("UpDownArrow;","\x2195")
  ,("updownarrow;","\x2195")
  ,("Updownarrow;","\x21D5")
  ,("UpEquilibrium;","\x296E")
  ,("upharpoonleft;","\x21BF")
  ,("upharpoonright;","\x21BE")
  ,("uplus;","\x228E")
  ,("UpperLeftArrow;","\x2196")
  ,("UpperRightArrow;","\x2197")
  ,("upsi;","\x03C5")
  ,("Upsi;","\x03D2")
  ,("upsih;","\x03D2")
  ,("Upsilon;","\x03A5")
  ,("upsilon;","\x03C5")
  ,("UpTee;","\x22A5")
  ,("UpTeeArrow;","\x21A5")
  ,("upuparrows;","\x21C8")
  ,("urcorn;","\x231D")
  ,("urcorner;","\x231D")
  ,("urcrop;","\x230E")
  ,("Uring;","\x016E")
  ,("uring;","\x016F")
  ,("urtri;","\x25F9")
  ,("Uscr;","\xD835\xDCB0")
  ,("uscr;","\xD835\xDCCA")
  ,("utdot;","\x22F0")
  ,("Utilde;","\x0168")
  ,("utilde;","\x0169")
  ,("utri;","\x25B5")
  ,("utrif;","\x25B4")
  ,("uuarr;","\x21C8")
  ,("Uuml","\x00DC")
  ,("uuml","\x00FC")
  ,("Uuml;","\x00DC")
  ,("uuml;","\x00FC")
  ,("uwangle;","\x29A7")
  ,("vangrt;","\x299C")
  ,("varepsilon;","\x03F5")
  ,("varkappa;","\x03F0")
  ,("varnothing;","\x2205")
  ,("varphi;","\x03D5")
  ,("varpi;","\x03D6")
  ,("varpropto;","\x221D")
  ,("varr;","\x2195")
  ,("vArr;","\x21D5")
  ,("varrho;","\x03F1")
  ,("varsigma;","\x03C2")
  ,("varsubsetneq;","\x228A\xFE00")
  ,("varsubsetneqq;","\x2ACB\xFE00")
  ,("varsupsetneq;","\x228B\xFE00")
  ,("varsupsetneqq;","\x2ACC\xFE00")
  ,("vartheta;","\x03D1")
  ,("vartriangleleft;","\x22B2")
  ,("vartriangleright;","\x22B3")
  ,("vBar;","\x2AE8")
  ,("Vbar;","\x2AEB")
  ,("vBarv;","\x2AE9")
  ,("Vcy;","\x0412")
  ,("vcy;","\x0432")
  ,("vdash;","\x22A2")
  ,("vDash;","\x22A8")
  ,("Vdash;","\x22A9")
  ,("VDash;","\x22AB")
  ,("Vdashl;","\x2AE6")
  ,("vee;","\x2228")
  ,("Vee;","\x22C1")
  ,("veebar;","\x22BB")
  ,("veeeq;","\x225A")
  ,("vellip;","\x22EE")
  ,("verbar;","\x007C")
  ,("Verbar;","\x2016")
  ,("vert;","\x007C")
  ,("Vert;","\x2016")
  ,("VerticalBar;","\x2223")
  ,("VerticalLine;","\x007C")
  ,("VerticalSeparator;","\x2758")
  ,("VerticalTilde;","\x2240")
  ,("VeryThinSpace;","\x200A")
  ,("Vfr;","\xD835\xDD19")
  ,("vfr;","\xD835\xDD33")
  ,("vltri;","\x22B2")
  ,("vnsub;","\x2282\x20D2")
  ,("vnsup;","\x2283\x20D2")
  ,("Vopf;","\xD835\xDD4D")
  ,("vopf;","\xD835\xDD67")
  ,("vprop;","\x221D")
  ,("vrtri;","\x22B3")
  ,("Vscr;","\xD835\xDCB1")
  ,("vscr;","\xD835\xDCCB")
  ,("vsubne;","\x228A\xFE00")
  ,("vsubnE;","\x2ACB\xFE00")
  ,("vsupne;","\x228B\xFE00")
  ,("vsupnE;","\x2ACC\xFE00")
  ,("Vvdash;","\x22AA")
  ,("vzigzag;","\x299A")
  ,("Wcirc;","\x0174")
  ,("wcirc;","\x0175")
  ,("wedbar;","\x2A5F")
  ,("wedge;","\x2227")
  ,("Wedge;","\x22C0")
  ,("wedgeq;","\x2259")
  ,("weierp;","\x2118")
  ,("Wfr;","\xD835\xDD1A")
  ,("wfr;","\xD835\xDD34")
  ,("Wopf;","\xD835\xDD4E")
  ,("wopf;","\xD835\xDD68")
  ,("wp;","\x2118")
  ,("wr;","\x2240")
  ,("wreath;","\x2240")
  ,("Wscr;","\xD835\xDCB2")
  ,("wscr;","\xD835\xDCCC")
  ,("xcap;","\x22C2")
  ,("xcirc;","\x25EF")
  ,("xcup;","\x22C3")
  ,("xdtri;","\x25BD")
  ,("Xfr;","\xD835\xDD1B")
  ,("xfr;","\xD835\xDD35")
  ,("xharr;","\x27F7")
  ,("xhArr;","\x27FA")
  ,("Xi;","\x039E")
  ,("xi;","\x03BE")
  ,("xlarr;","\x27F5")
  ,("xlArr;","\x27F8")
  ,("xmap;","\x27FC")
  ,("xnis;","\x22FB")
  ,("xodot;","\x2A00")
  ,("Xopf;","\xD835\xDD4F")
  ,("xopf;","\xD835\xDD69")
  ,("xoplus;","\x2A01")
  ,("xotime;","\x2A02")
  ,("xrarr;","\x27F6")
  ,("xrArr;","\x27F9")
  ,("Xscr;","\xD835\xDCB3")
  ,("xscr;","\xD835\xDCCD")
  ,("xsqcup;","\x2A06")
  ,("xuplus;","\x2A04")
  ,("xutri;","\x25B3")
  ,("xvee;","\x22C1")
  ,("xwedge;","\x22C0")
  ,("Yacute","\x00DD")
  ,("yacute","\x00FD")
  ,("Yacute;","\x00DD")
  ,("yacute;","\x00FD")
  ,("YAcy;","\x042F")
  ,("yacy;","\x044F")
  ,("Ycirc;","\x0176")
  ,("ycirc;","\x0177")
  ,("Ycy;","\x042B")
  ,("ycy;","\x044B")
  ,("yen","\x00A5")
  ,("yen;","\x00A5")
  ,("Yfr;","\xD835\xDD1C")
  ,("yfr;","\xD835\xDD36")
  ,("YIcy;","\x0407")
  ,("yicy;","\x0457")
  ,("Yopf;","\xD835\xDD50")
  ,("yopf;","\xD835\xDD6A")
  ,("Yscr;","\xD835\xDCB4")
  ,("yscr;","\xD835\xDCCE")
  ,("YUcy;","\x042E")
  ,("yucy;","\x044E")
  ,("yuml","\x00FF")
  ,("yuml;","\x00FF")
  ,("Yuml;","\x0178")
  ,("Zacute;","\x0179")
  ,("zacute;","\x017A")
  ,("Zcaron;","\x017D")
  ,("zcaron;","\x017E")
  ,("Zcy;","\x0417")
  ,("zcy;","\x0437")
  ,("Zdot;","\x017B")
  ,("zdot;","\x017C")
  ,("zeetrf;","\x2128")
  ,("ZeroWidthSpace;","\x200B")
  ,("Zeta;","\x0396")
  ,("zeta;","\x03B6")
  ,("Zfr;","\x2128")
  ,("zfr;","\xD835\xDD37")
  ,("ZHcy;","\x0416")
  ,("zhcy;","\x0436")
  ,("zigrarr;","\x21DD")
  ,("Zopf;","\x2124")
  ,("zopf;","\xD835\xDD6B")
  ,("Zscr;","\xD835\xDCB5")
  ,("zscr;","\xD835\xDCCF")
  ,("zwj;","\x200D")
  ,("zwnj;","\x200C")]