(* Copyright © 2014 W3C® (MIT, ERCIM, Keio, Beihang). This software or document
   includes material copied from or derived from W3C Recommendation HTML5
   [https://www.w3.org/TR/2014/REC-html5-20141028/]. *)

(* Generated automatically from entities.json. *)

let entities : (string * [ `One of int | `Two of int * int ]) array = [|
  "Aacute", `One 0x000C1;
  "Aacut", `One 0x000C1;
  "aacute", `One 0x000E1;
  "aacut", `One 0x000E1;
  "Abreve", `One 0x00102;
  "abreve", `One 0x00103;
  "ac", `One 0x0223E;
  "acd", `One 0x0223F;
  "acE", `Two (0x0223E, 0x00333);
  "Acirc", `One 0x000C2;
  "Acir", `One 0x000C2;
  "acirc", `One 0x000E2;
  "acir", `One 0x000E2;
  "acute", `One 0x000B4;
  "acut", `One 0x000B4;
  "Acy", `One 0x00410;
  "acy", `One 0x00430;
  "AElig", `One 0x000C6;
  "AEli", `One 0x000C6;
  "aelig", `One 0x000E6;
  "aeli", `One 0x000E6;
  "af", `One 0x02061;
  "Afr", `One 0x1D504;
  "afr", `One 0x1D51E;
  "Agrave", `One 0x000C0;
  "Agrav", `One 0x000C0;
  "agrave", `One 0x000E0;
  "agrav", `One 0x000E0;
  "alefsym", `One 0x02135;
  "aleph", `One 0x02135;
  "Alpha", `One 0x00391;
  "alpha", `One 0x003B1;
  "Amacr", `One 0x00100;
  "amacr", `One 0x00101;
  "amalg", `One 0x02A3F;
  "AMP", `One 0x00026;
  "AM", `One 0x00026;
  "amp", `One 0x00026;
  "am", `One 0x00026;
  "And", `One 0x02A53;
  "and", `One 0x02227;
  "andand", `One 0x02A55;
  "andd", `One 0x02A5C;
  "andslope", `One 0x02A58;
  "andv", `One 0x02A5A;
  "ang", `One 0x02220;
  "ange", `One 0x029A4;
  "angle", `One 0x02220;
  "angmsd", `One 0x02221;
  "angmsdaa", `One 0x029A8;
  "angmsdab", `One 0x029A9;
  "angmsdac", `One 0x029AA;
  "angmsdad", `One 0x029AB;
  "angmsdae", `One 0x029AC;
  "angmsdaf", `One 0x029AD;
  "angmsdag", `One 0x029AE;
  "angmsdah", `One 0x029AF;
  "angrt", `One 0x0221F;
  "angrtvb", `One 0x022BE;
  "angrtvbd", `One 0x0299D;
  "angsph", `One 0x02222;
  "angst", `One 0x000C5;
  "angzarr", `One 0x0237C;
  "Aogon", `One 0x00104;
  "aogon", `One 0x00105;
  "Aopf", `One 0x1D538;
  "aopf", `One 0x1D552;
  "ap", `One 0x02248;
  "apacir", `One 0x02A6F;
  "apE", `One 0x02A70;
  "ape", `One 0x0224A;
  "apid", `One 0x0224B;
  "apos", `One 0x00027;
  "ApplyFunction", `One 0x02061;
  "approx", `One 0x02248;
  "approxeq", `One 0x0224A;
  "Aring", `One 0x000C5;
  "Arin", `One 0x000C5;
  "aring", `One 0x000E5;
  "arin", `One 0x000E5;
  "Ascr", `One 0x1D49C;
  "ascr", `One 0x1D4B6;
  "Assign", `One 0x02254;
  "ast", `One 0x0002A;
  "asymp", `One 0x02248;
  "asympeq", `One 0x0224D;
  "Atilde", `One 0x000C3;
  "Atild", `One 0x000C3;
  "atilde", `One 0x000E3;
  "atild", `One 0x000E3;
  "Auml", `One 0x000C4;
  "Aum", `One 0x000C4;
  "auml", `One 0x000E4;
  "aum", `One 0x000E4;
  "awconint", `One 0x02233;
  "awint", `One 0x02A11;
  "backcong", `One 0x0224C;
  "backepsilon", `One 0x003F6;
  "backprime", `One 0x02035;
  "backsim", `One 0x0223D;
  "backsimeq", `One 0x022CD;
  "Backslash", `One 0x02216;
  "Barv", `One 0x02AE7;
  "barvee", `One 0x022BD;
  "Barwed", `One 0x02306;
  "barwed", `One 0x02305;
  "barwedge", `One 0x02305;
  "bbrk", `One 0x023B5;
  "bbrktbrk", `One 0x023B6;
  "bcong", `One 0x0224C;
  "Bcy", `One 0x00411;
  "bcy", `One 0x00431;
  "bdquo", `One 0x0201E;
  "becaus", `One 0x02235;
  "Because", `One 0x02235;
  "because", `One 0x02235;
  "bemptyv", `One 0x029B0;
  "bepsi", `One 0x003F6;
  "bernou", `One 0x0212C;
  "Bernoullis", `One 0x0212C;
  "Beta", `One 0x00392;
  "beta", `One 0x003B2;
  "beth", `One 0x02136;
  "between", `One 0x0226C;
  "Bfr", `One 0x1D505;
  "bfr", `One 0x1D51F;
  "bigcap", `One 0x022C2;
  "bigcirc", `One 0x025EF;
  "bigcup", `One 0x022C3;
  "bigodot", `One 0x02A00;
  "bigoplus", `One 0x02A01;
  "bigotimes", `One 0x02A02;
  "bigsqcup", `One 0x02A06;
  "bigstar", `One 0x02605;
  "bigtriangledown", `One 0x025BD;
  "bigtriangleup", `One 0x025B3;
  "biguplus", `One 0x02A04;
  "bigvee", `One 0x022C1;
  "bigwedge", `One 0x022C0;
  "bkarow", `One 0x0290D;
  "blacklozenge", `One 0x029EB;
  "blacksquare", `One 0x025AA;
  "blacktriangle", `One 0x025B4;
  "blacktriangledown", `One 0x025BE;
  "blacktriangleleft", `One 0x025C2;
  "blacktriangleright", `One 0x025B8;
  "blank", `One 0x02423;
  "blk12", `One 0x02592;
  "blk14", `One 0x02591;
  "blk34", `One 0x02593;
  "block", `One 0x02588;
  "bne", `Two (0x0003D, 0x020E5);
  "bnequiv", `Two (0x02261, 0x020E5);
  "bNot", `One 0x02AED;
  "bnot", `One 0x02310;
  "Bopf", `One 0x1D539;
  "bopf", `One 0x1D553;
  "bot", `One 0x022A5;
  "bottom", `One 0x022A5;
  "bowtie", `One 0x022C8;
  "boxbox", `One 0x029C9;
  "boxDL", `One 0x02557;
  "boxDl", `One 0x02556;
  "boxdL", `One 0x02555;
  "boxdl", `One 0x02510;
  "boxDR", `One 0x02554;
  "boxDr", `One 0x02553;
  "boxdR", `One 0x02552;
  "boxdr", `One 0x0250C;
  "boxH", `One 0x02550;
  "boxh", `One 0x02500;
  "boxHD", `One 0x02566;
  "boxHd", `One 0x02564;
  "boxhD", `One 0x02565;
  "boxhd", `One 0x0252C;
  "boxHU", `One 0x02569;
  "boxHu", `One 0x02567;
  "boxhU", `One 0x02568;
  "boxhu", `One 0x02534;
  "boxminus", `One 0x0229F;
  "boxplus", `One 0x0229E;
  "boxtimes", `One 0x022A0;
  "boxUL", `One 0x0255D;
  "boxUl", `One 0x0255C;
  "boxuL", `One 0x0255B;
  "boxul", `One 0x02518;
  "boxUR", `One 0x0255A;
  "boxUr", `One 0x02559;
  "boxuR", `One 0x02558;
  "boxur", `One 0x02514;
  "boxV", `One 0x02551;
  "boxv", `One 0x02502;
  "boxVH", `One 0x0256C;
  "boxVh", `One 0x0256B;
  "boxvH", `One 0x0256A;
  "boxvh", `One 0x0253C;
  "boxVL", `One 0x02563;
  "boxVl", `One 0x02562;
  "boxvL", `One 0x02561;
  "boxvl", `One 0x02524;
  "boxVR", `One 0x02560;
  "boxVr", `One 0x0255F;
  "boxvR", `One 0x0255E;
  "boxvr", `One 0x0251C;
  "bprime", `One 0x02035;
  "Breve", `One 0x002D8;
  "breve", `One 0x002D8;
  "brvbar", `One 0x000A6;
  "brvba", `One 0x000A6;
  "Bscr", `One 0x0212C;
  "bscr", `One 0x1D4B7;
  "bsemi", `One 0x0204F;
  "bsim", `One 0x0223D;
  "bsime", `One 0x022CD;
  "bsol", `One 0x0005C;
  "bsolb", `One 0x029C5;
  "bsolhsub", `One 0x027C8;
  "bull", `One 0x02022;
  "bullet", `One 0x02022;
  "bump", `One 0x0224E;
  "bumpE", `One 0x02AAE;
  "bumpe", `One 0x0224F;
  "Bumpeq", `One 0x0224E;
  "bumpeq", `One 0x0224F;
  "Cacute", `One 0x00106;
  "cacute", `One 0x00107;
  "Cap", `One 0x022D2;
  "cap", `One 0x02229;
  "capand", `One 0x02A44;
  "capbrcup", `One 0x02A49;
  "capcap", `One 0x02A4B;
  "capcup", `One 0x02A47;
  "capdot", `One 0x02A40;
  "CapitalDifferentialD", `One 0x02145;
  "caps", `Two (0x02229, 0x0FE00);
  "caret", `One 0x02041;
  "caron", `One 0x002C7;
  "Cayleys", `One 0x0212D;
  "ccaps", `One 0x02A4D;
  "Ccaron", `One 0x0010C;
  "ccaron", `One 0x0010D;
  "Ccedil", `One 0x000C7;
  "Ccedi", `One 0x000C7;
  "ccedil", `One 0x000E7;
  "ccedi", `One 0x000E7;
  "Ccirc", `One 0x00108;
  "ccirc", `One 0x00109;
  "Cconint", `One 0x02230;
  "ccups", `One 0x02A4C;
  "ccupssm", `One 0x02A50;
  "Cdot", `One 0x0010A;
  "cdot", `One 0x0010B;
  "cedil", `One 0x000B8;
  "cedi", `One 0x000B8;
  "Cedilla", `One 0x000B8;
  "cemptyv", `One 0x029B2;
  "cent", `One 0x000A2;
  "cen", `One 0x000A2;
  "CenterDot", `One 0x000B7;
  "centerdot", `One 0x000B7;
  "Cfr", `One 0x0212D;
  "cfr", `One 0x1D520;
  "CHcy", `One 0x00427;
  "chcy", `One 0x00447;
  "check", `One 0x02713;
  "checkmark", `One 0x02713;
  "Chi", `One 0x003A7;
  "chi", `One 0x003C7;
  "cir", `One 0x025CB;
  "circ", `One 0x002C6;
  "circeq", `One 0x02257;
  "circlearrowleft", `One 0x021BA;
  "circlearrowright", `One 0x021BB;
  "circledast", `One 0x0229B;
  "circledcirc", `One 0x0229A;
  "circleddash", `One 0x0229D;
  "CircleDot", `One 0x02299;
  "circledR", `One 0x000AE;
  "circledS", `One 0x024C8;
  "CircleMinus", `One 0x02296;
  "CirclePlus", `One 0x02295;
  "CircleTimes", `One 0x02297;
  "cirE", `One 0x029C3;
  "cire", `One 0x02257;
  "cirfnint", `One 0x02A10;
  "cirmid", `One 0x02AEF;
  "cirscir", `One 0x029C2;
  "ClockwiseContourIntegral", `One 0x02232;
  "CloseCurlyDoubleQuote", `One 0x0201D;
  "CloseCurlyQuote", `One 0x02019;
  "clubs", `One 0x02663;
  "clubsuit", `One 0x02663;
  "Colon", `One 0x02237;
  "colon", `One 0x0003A;
  "Colone", `One 0x02A74;
  "colone", `One 0x02254;
  "coloneq", `One 0x02254;
  "comma", `One 0x0002C;
  "commat", `One 0x00040;
  "comp", `One 0x02201;
  "compfn", `One 0x02218;
  "complement", `One 0x02201;
  "complexes", `One 0x02102;
  "cong", `One 0x02245;
  "congdot", `One 0x02A6D;
  "Congruent", `One 0x02261;
  "Conint", `One 0x0222F;
  "conint", `One 0x0222E;
  "ContourIntegral", `One 0x0222E;
  "Copf", `One 0x02102;
  "copf", `One 0x1D554;
  "coprod", `One 0x02210;
  "Coproduct", `One 0x02210;
  "COPY", `One 0x000A9;
  "COP", `One 0x000A9;
  "copy", `One 0x000A9;
  "cop", `One 0x000A9;
  "copysr", `One 0x02117;
  "CounterClockwiseContourIntegral", `One 0x02233;
  "crarr", `One 0x021B5;
  "Cross", `One 0x02A2F;
  "cross", `One 0x02717;
  "Cscr", `One 0x1D49E;
  "cscr", `One 0x1D4B8;
  "csub", `One 0x02ACF;
  "csube", `One 0x02AD1;
  "csup", `One 0x02AD0;
  "csupe", `One 0x02AD2;
  "ctdot", `One 0x022EF;
  "cudarrl", `One 0x02938;
  "cudarrr", `One 0x02935;
  "cuepr", `One 0x022DE;
  "cuesc", `One 0x022DF;
  "cularr", `One 0x021B6;
  "cularrp", `One 0x0293D;
  "Cup", `One 0x022D3;
  "cup", `One 0x0222A;
  "cupbrcap", `One 0x02A48;
  "CupCap", `One 0x0224D;
  "cupcap", `One 0x02A46;
  "cupcup", `One 0x02A4A;
  "cupdot", `One 0x0228D;
  "cupor", `One 0x02A45;
  "cups", `Two (0x0222A, 0x0FE00);
  "curarr", `One 0x021B7;
  "curarrm", `One 0x0293C;
  "curlyeqprec", `One 0x022DE;
  "curlyeqsucc", `One 0x022DF;
  "curlyvee", `One 0x022CE;
  "curlywedge", `One 0x022CF;
  "curren", `One 0x000A4;
  "curre", `One 0x000A4;
  "curvearrowleft", `One 0x021B6;
  "curvearrowright", `One 0x021B7;
  "cuvee", `One 0x022CE;
  "cuwed", `One 0x022CF;
  "cwconint", `One 0x02232;
  "cwint", `One 0x02231;
  "cylcty", `One 0x0232D;
  "Dagger", `One 0x02021;
  "dagger", `One 0x02020;
  "daleth", `One 0x02138;
  "Darr", `One 0x021A1;
  "dArr", `One 0x021D3;
  "darr", `One 0x02193;
  "dash", `One 0x02010;
  "Dashv", `One 0x02AE4;
  "dashv", `One 0x022A3;
  "dbkarow", `One 0x0290F;
  "dblac", `One 0x002DD;
  "Dcaron", `One 0x0010E;
  "dcaron", `One 0x0010F;
  "Dcy", `One 0x00414;
  "dcy", `One 0x00434;
  "DD", `One 0x02145;
  "dd", `One 0x02146;
  "ddagger", `One 0x02021;
  "ddarr", `One 0x021CA;
  "DDotrahd", `One 0x02911;
  "ddotseq", `One 0x02A77;
  "deg", `One 0x000B0;
  "de", `One 0x000B0;
  "Del", `One 0x02207;
  "Delta", `One 0x00394;
  "delta", `One 0x003B4;
  "demptyv", `One 0x029B1;
  "dfisht", `One 0x0297F;
  "Dfr", `One 0x1D507;
  "dfr", `One 0x1D521;
  "dHar", `One 0x02965;
  "dharl", `One 0x021C3;
  "dharr", `One 0x021C2;
  "DiacriticalAcute", `One 0x000B4;
  "DiacriticalDot", `One 0x002D9;
  "DiacriticalDoubleAcute", `One 0x002DD;
  "DiacriticalGrave", `One 0x00060;
  "DiacriticalTilde", `One 0x002DC;
  "diam", `One 0x022C4;
  "Diamond", `One 0x022C4;
  "diamond", `One 0x022C4;
  "diamondsuit", `One 0x02666;
  "diams", `One 0x02666;
  "die", `One 0x000A8;
  "DifferentialD", `One 0x02146;
  "digamma", `One 0x003DD;
  "disin", `One 0x022F2;
  "div", `One 0x000F7;
  "divide", `One 0x000F7;
  "divid", `One 0x000F7;
  "divideontimes", `One 0x022C7;
  "divonx", `One 0x022C7;
  "DJcy", `One 0x00402;
  "djcy", `One 0x00452;
  "dlcorn", `One 0x0231E;
  "dlcrop", `One 0x0230D;
  "dollar", `One 0x00024;
  "Dopf", `One 0x1D53B;
  "dopf", `One 0x1D555;
  "Dot", `One 0x000A8;
  "dot", `One 0x002D9;
  "DotDot", `One 0x020DC;
  "doteq", `One 0x02250;
  "doteqdot", `One 0x02251;
  "DotEqual", `One 0x02250;
  "dotminus", `One 0x02238;
  "dotplus", `One 0x02214;
  "dotsquare", `One 0x022A1;
  "doublebarwedge", `One 0x02306;
  "DoubleContourIntegral", `One 0x0222F;
  "DoubleDot", `One 0x000A8;
  "DoubleDownArrow", `One 0x021D3;
  "DoubleLeftArrow", `One 0x021D0;
  "DoubleLeftRightArrow", `One 0x021D4;
  "DoubleLeftTee", `One 0x02AE4;
  "DoubleLongLeftArrow", `One 0x027F8;
  "DoubleLongLeftRightArrow", `One 0x027FA;
  "DoubleLongRightArrow", `One 0x027F9;
  "DoubleRightArrow", `One 0x021D2;
  "DoubleRightTee", `One 0x022A8;
  "DoubleUpArrow", `One 0x021D1;
  "DoubleUpDownArrow", `One 0x021D5;
  "DoubleVerticalBar", `One 0x02225;
  "DownArrow", `One 0x02193;
  "Downarrow", `One 0x021D3;
  "downarrow", `One 0x02193;
  "DownArrowBar", `One 0x02913;
  "DownArrowUpArrow", `One 0x021F5;
  "DownBreve", `One 0x00311;
  "downdownarrows", `One 0x021CA;
  "downharpoonleft", `One 0x021C3;
  "downharpoonright", `One 0x021C2;
  "DownLeftRightVector", `One 0x02950;
  "DownLeftTeeVector", `One 0x0295E;
  "DownLeftVector", `One 0x021BD;
  "DownLeftVectorBar", `One 0x02956;
  "DownRightTeeVector", `One 0x0295F;
  "DownRightVector", `One 0x021C1;
  "DownRightVectorBar", `One 0x02957;
  "DownTee", `One 0x022A4;
  "DownTeeArrow", `One 0x021A7;
  "drbkarow", `One 0x02910;
  "drcorn", `One 0x0231F;
  "drcrop", `One 0x0230C;
  "Dscr", `One 0x1D49F;
  "dscr", `One 0x1D4B9;
  "DScy", `One 0x00405;
  "dscy", `One 0x00455;
  "dsol", `One 0x029F6;
  "Dstrok", `One 0x00110;
  "dstrok", `One 0x00111;
  "dtdot", `One 0x022F1;
  "dtri", `One 0x025BF;
  "dtrif", `One 0x025BE;
  "duarr", `One 0x021F5;
  "duhar", `One 0x0296F;
  "dwangle", `One 0x029A6;
  "DZcy", `One 0x0040F;
  "dzcy", `One 0x0045F;
  "dzigrarr", `One 0x027FF;
  "Eacute", `One 0x000C9;
  "Eacut", `One 0x000C9;
  "eacute", `One 0x000E9;
  "eacut", `One 0x000E9;
  "easter", `One 0x02A6E;
  "Ecaron", `One 0x0011A;
  "ecaron", `One 0x0011B;
  "ecir", `One 0x02256;
  "Ecirc", `One 0x000CA;
  "Ecir", `One 0x000CA;
  "ecirc", `One 0x000EA;
  "ecir", `One 0x000EA;
  "ecolon", `One 0x02255;
  "Ecy", `One 0x0042D;
  "ecy", `One 0x0044D;
  "eDDot", `One 0x02A77;
  "Edot", `One 0x00116;
  "eDot", `One 0x02251;
  "edot", `One 0x00117;
  "ee", `One 0x02147;
  "efDot", `One 0x02252;
  "Efr", `One 0x1D508;
  "efr", `One 0x1D522;
  "eg", `One 0x02A9A;
  "Egrave", `One 0x000C8;
  "Egrav", `One 0x000C8;
  "egrave", `One 0x000E8;
  "egrav", `One 0x000E8;
  "egs", `One 0x02A96;
  "egsdot", `One 0x02A98;
  "el", `One 0x02A99;
  "Element", `One 0x02208;
  "elinters", `One 0x023E7;
  "ell", `One 0x02113;
  "els", `One 0x02A95;
  "elsdot", `One 0x02A97;
  "Emacr", `One 0x00112;
  "emacr", `One 0x00113;
  "empty", `One 0x02205;
  "emptyset", `One 0x02205;
  "EmptySmallSquare", `One 0x025FB;
  "emptyv", `One 0x02205;
  "EmptyVerySmallSquare", `One 0x025AB;
  "emsp", `One 0x02003;
  "emsp13", `One 0x02004;
  "emsp14", `One 0x02005;
  "ENG", `One 0x0014A;
  "eng", `One 0x0014B;
  "ensp", `One 0x02002;
  "Eogon", `One 0x00118;
  "eogon", `One 0x00119;
  "Eopf", `One 0x1D53C;
  "eopf", `One 0x1D556;
  "epar", `One 0x022D5;
  "eparsl", `One 0x029E3;
  "eplus", `One 0x02A71;
  "epsi", `One 0x003B5;
  "Epsilon", `One 0x00395;
  "epsilon", `One 0x003B5;
  "epsiv", `One 0x003F5;
  "eqcirc", `One 0x02256;
  "eqcolon", `One 0x02255;
  "eqsim", `One 0x02242;
  "eqslantgtr", `One 0x02A96;
  "eqslantless", `One 0x02A95;
  "Equal", `One 0x02A75;
  "equals", `One 0x0003D;
  "EqualTilde", `One 0x02242;
  "equest", `One 0x0225F;
  "Equilibrium", `One 0x021CC;
  "equiv", `One 0x02261;
  "equivDD", `One 0x02A78;
  "eqvparsl", `One 0x029E5;
  "erarr", `One 0x02971;
  "erDot", `One 0x02253;
  "Escr", `One 0x02130;
  "escr", `One 0x0212F;
  "esdot", `One 0x02250;
  "Esim", `One 0x02A73;
  "esim", `One 0x02242;
  "Eta", `One 0x00397;
  "eta", `One 0x003B7;
  "ETH", `One 0x000D0;
  "ET", `One 0x000D0;
  "eth", `One 0x000F0;
  "et", `One 0x000F0;
  "Euml", `One 0x000CB;
  "Eum", `One 0x000CB;
  "euml", `One 0x000EB;
  "eum", `One 0x000EB;
  "euro", `One 0x020AC;
  "excl", `One 0x00021;
  "exist", `One 0x02203;
  "Exists", `One 0x02203;
  "expectation", `One 0x02130;
  "ExponentialE", `One 0x02147;
  "exponentiale", `One 0x02147;
  "fallingdotseq", `One 0x02252;
  "Fcy", `One 0x00424;
  "fcy", `One 0x00444;
  "female", `One 0x02640;
  "ffilig", `One 0x0FB03;
  "fflig", `One 0x0FB00;
  "ffllig", `One 0x0FB04;
  "Ffr", `One 0x1D509;
  "ffr", `One 0x1D523;
  "filig", `One 0x0FB01;
  "FilledSmallSquare", `One 0x025FC;
  "FilledVerySmallSquare", `One 0x025AA;
  "fjlig", `Two (0x00066, 0x0006A);
  "flat", `One 0x0266D;
  "fllig", `One 0x0FB02;
  "fltns", `One 0x025B1;
  "fnof", `One 0x00192;
  "Fopf", `One 0x1D53D;
  "fopf", `One 0x1D557;
  "ForAll", `One 0x02200;
  "forall", `One 0x02200;
  "fork", `One 0x022D4;
  "forkv", `One 0x02AD9;
  "Fouriertrf", `One 0x02131;
  "fpartint", `One 0x02A0D;
  "frac12", `One 0x000BD;
  "frac1", `One 0x000BD;
  "frac13", `One 0x02153;
  "frac14", `One 0x000BC;
  "frac1", `One 0x000BC;
  "frac15", `One 0x02155;
  "frac16", `One 0x02159;
  "frac18", `One 0x0215B;
  "frac23", `One 0x02154;
  "frac25", `One 0x02156;
  "frac34", `One 0x000BE;
  "frac3", `One 0x000BE;
  "frac35", `One 0x02157;
  "frac38", `One 0x0215C;
  "frac45", `One 0x02158;
  "frac56", `One 0x0215A;
  "frac58", `One 0x0215D;
  "frac78", `One 0x0215E;
  "frasl", `One 0x02044;
  "frown", `One 0x02322;
  "Fscr", `One 0x02131;
  "fscr", `One 0x1D4BB;
  "gacute", `One 0x001F5;
  "Gamma", `One 0x00393;
  "gamma", `One 0x003B3;
  "Gammad", `One 0x003DC;
  "gammad", `One 0x003DD;
  "gap", `One 0x02A86;
  "Gbreve", `One 0x0011E;
  "gbreve", `One 0x0011F;
  "Gcedil", `One 0x00122;
  "Gcirc", `One 0x0011C;
  "gcirc", `One 0x0011D;
  "Gcy", `One 0x00413;
  "gcy", `One 0x00433;
  "Gdot", `One 0x00120;
  "gdot", `One 0x00121;
  "gE", `One 0x02267;
  "ge", `One 0x02265;
  "gEl", `One 0x02A8C;
  "gel", `One 0x022DB;
  "geq", `One 0x02265;
  "geqq", `One 0x02267;
  "geqslant", `One 0x02A7E;
  "ges", `One 0x02A7E;
  "gescc", `One 0x02AA9;
  "gesdot", `One 0x02A80;
  "gesdoto", `One 0x02A82;
  "gesdotol", `One 0x02A84;
  "gesl", `Two (0x022DB, 0x0FE00);
  "gesles", `One 0x02A94;
  "Gfr", `One 0x1D50A;
  "gfr", `One 0x1D524;
  "Gg", `One 0x022D9;
  "gg", `One 0x0226B;
  "ggg", `One 0x022D9;
  "gimel", `One 0x02137;
  "GJcy", `One 0x00403;
  "gjcy", `One 0x00453;
  "gl", `One 0x02277;
  "gla", `One 0x02AA5;
  "glE", `One 0x02A92;
  "glj", `One 0x02AA4;
  "gnap", `One 0x02A8A;
  "gnapprox", `One 0x02A8A;
  "gnE", `One 0x02269;
  "gne", `One 0x02A88;
  "gneq", `One 0x02A88;
  "gneqq", `One 0x02269;
  "gnsim", `One 0x022E7;
  "Gopf", `One 0x1D53E;
  "gopf", `One 0x1D558;
  "grave", `One 0x00060;
  "GreaterEqual", `One 0x02265;
  "GreaterEqualLess", `One 0x022DB;
  "GreaterFullEqual", `One 0x02267;
  "GreaterGreater", `One 0x02AA2;
  "GreaterLess", `One 0x02277;
  "GreaterSlantEqual", `One 0x02A7E;
  "GreaterTilde", `One 0x02273;
  "Gscr", `One 0x1D4A2;
  "gscr", `One 0x0210A;
  "gsim", `One 0x02273;
  "gsime", `One 0x02A8E;
  "gsiml", `One 0x02A90;
  "GT", `One 0x0003E;
  "G", `One 0x0003E;
  "Gt", `One 0x0226B;
  "gt", `One 0x0003E;
  "g", `One 0x0003E;
  "gtcc", `One 0x02AA7;
  "gtcir", `One 0x02A7A;
  "gtdot", `One 0x022D7;
  "gtlPar", `One 0x02995;
  "gtquest", `One 0x02A7C;
  "gtrapprox", `One 0x02A86;
  "gtrarr", `One 0x02978;
  "gtrdot", `One 0x022D7;
  "gtreqless", `One 0x022DB;
  "gtreqqless", `One 0x02A8C;
  "gtrless", `One 0x02277;
  "gtrsim", `One 0x02273;
  "gvertneqq", `Two (0x02269, 0x0FE00);
  "gvnE", `Two (0x02269, 0x0FE00);
  "Hacek", `One 0x002C7;
  "hairsp", `One 0x0200A;
  "half", `One 0x000BD;
  "hamilt", `One 0x0210B;
  "HARDcy", `One 0x0042A;
  "hardcy", `One 0x0044A;
  "hArr", `One 0x021D4;
  "harr", `One 0x02194;
  "harrcir", `One 0x02948;
  "harrw", `One 0x021AD;
  "Hat", `One 0x0005E;
  "hbar", `One 0x0210F;
  "Hcirc", `One 0x00124;
  "hcirc", `One 0x00125;
  "hearts", `One 0x02665;
  "heartsuit", `One 0x02665;
  "hellip", `One 0x02026;
  "hercon", `One 0x022B9;
  "Hfr", `One 0x0210C;
  "hfr", `One 0x1D525;
  "HilbertSpace", `One 0x0210B;
  "hksearow", `One 0x02925;
  "hkswarow", `One 0x02926;
  "hoarr", `One 0x021FF;
  "homtht", `One 0x0223B;
  "hookleftarrow", `One 0x021A9;
  "hookrightarrow", `One 0x021AA;
  "Hopf", `One 0x0210D;
  "hopf", `One 0x1D559;
  "horbar", `One 0x02015;
  "HorizontalLine", `One 0x02500;
  "Hscr", `One 0x0210B;
  "hscr", `One 0x1D4BD;
  "hslash", `One 0x0210F;
  "Hstrok", `One 0x00126;
  "hstrok", `One 0x00127;
  "HumpDownHump", `One 0x0224E;
  "HumpEqual", `One 0x0224F;
  "hybull", `One 0x02043;
  "hyphen", `One 0x02010;
  "Iacute", `One 0x000CD;
  "Iacut", `One 0x000CD;
  "iacute", `One 0x000ED;
  "iacut", `One 0x000ED;
  "ic", `One 0x02063;
  "Icirc", `One 0x000CE;
  "Icir", `One 0x000CE;
  "icirc", `One 0x000EE;
  "icir", `One 0x000EE;
  "Icy", `One 0x00418;
  "icy", `One 0x00438;
  "Idot", `One 0x00130;
  "IEcy", `One 0x00415;
  "iecy", `One 0x00435;
  "iexcl", `One 0x000A1;
  "iexc", `One 0x000A1;
  "iff", `One 0x021D4;
  "Ifr", `One 0x02111;
  "ifr", `One 0x1D526;
  "Igrave", `One 0x000CC;
  "Igrav", `One 0x000CC;
  "igrave", `One 0x000EC;
  "igrav", `One 0x000EC;
  "ii", `One 0x02148;
  "iiiint", `One 0x02A0C;
  "iiint", `One 0x0222D;
  "iinfin", `One 0x029DC;
  "iiota", `One 0x02129;
  "IJlig", `One 0x00132;
  "ijlig", `One 0x00133;
  "Im", `One 0x02111;
  "Imacr", `One 0x0012A;
  "imacr", `One 0x0012B;
  "image", `One 0x02111;
  "ImaginaryI", `One 0x02148;
  "imagline", `One 0x02110;
  "imagpart", `One 0x02111;
  "imath", `One 0x00131;
  "imof", `One 0x022B7;
  "imped", `One 0x001B5;
  "Implies", `One 0x021D2;
  "in", `One 0x02208;
  "incare", `One 0x02105;
  "infin", `One 0x0221E;
  "infintie", `One 0x029DD;
  "inodot", `One 0x00131;
  "Int", `One 0x0222C;
  "int", `One 0x0222B;
  "intcal", `One 0x022BA;
  "integers", `One 0x02124;
  "Integral", `One 0x0222B;
  "intercal", `One 0x022BA;
  "Intersection", `One 0x022C2;
  "intlarhk", `One 0x02A17;
  "intprod", `One 0x02A3C;
  "InvisibleComma", `One 0x02063;
  "InvisibleTimes", `One 0x02062;
  "IOcy", `One 0x00401;
  "iocy", `One 0x00451;
  "Iogon", `One 0x0012E;
  "iogon", `One 0x0012F;
  "Iopf", `One 0x1D540;
  "iopf", `One 0x1D55A;
  "Iota", `One 0x00399;
  "iota", `One 0x003B9;
  "iprod", `One 0x02A3C;
  "iquest", `One 0x000BF;
  "iques", `One 0x000BF;
  "Iscr", `One 0x02110;
  "iscr", `One 0x1D4BE;
  "isin", `One 0x02208;
  "isindot", `One 0x022F5;
  "isinE", `One 0x022F9;
  "isins", `One 0x022F4;
  "isinsv", `One 0x022F3;
  "isinv", `One 0x02208;
  "it", `One 0x02062;
  "Itilde", `One 0x00128;
  "itilde", `One 0x00129;
  "Iukcy", `One 0x00406;
  "iukcy", `One 0x00456;
  "Iuml", `One 0x000CF;
  "Ium", `One 0x000CF;
  "iuml", `One 0x000EF;
  "ium", `One 0x000EF;
  "Jcirc", `One 0x00134;
  "jcirc", `One 0x00135;
  "Jcy", `One 0x00419;
  "jcy", `One 0x00439;
  "Jfr", `One 0x1D50D;
  "jfr", `One 0x1D527;
  "jmath", `One 0x00237;
  "Jopf", `One 0x1D541;
  "jopf", `One 0x1D55B;
  "Jscr", `One 0x1D4A5;
  "jscr", `One 0x1D4BF;
  "Jsercy", `One 0x00408;
  "jsercy", `One 0x00458;
  "Jukcy", `One 0x00404;
  "jukcy", `One 0x00454;
  "Kappa", `One 0x0039A;
  "kappa", `One 0x003BA;
  "kappav", `One 0x003F0;
  "Kcedil", `One 0x00136;
  "kcedil", `One 0x00137;
  "Kcy", `One 0x0041A;
  "kcy", `One 0x0043A;
  "Kfr", `One 0x1D50E;
  "kfr", `One 0x1D528;
  "kgreen", `One 0x00138;
  "KHcy", `One 0x00425;
  "khcy", `One 0x00445;
  "KJcy", `One 0x0040C;
  "kjcy", `One 0x0045C;
  "Kopf", `One 0x1D542;
  "kopf", `One 0x1D55C;
  "Kscr", `One 0x1D4A6;
  "kscr", `One 0x1D4C0;
  "lAarr", `One 0x021DA;
  "Lacute", `One 0x00139;
  "lacute", `One 0x0013A;
  "laemptyv", `One 0x029B4;
  "lagran", `One 0x02112;
  "Lambda", `One 0x0039B;
  "lambda", `One 0x003BB;
  "Lang", `One 0x027EA;
  "lang", `One 0x027E8;
  "langd", `One 0x02991;
  "langle", `One 0x027E8;
  "lap", `One 0x02A85;
  "Laplacetrf", `One 0x02112;
  "laquo", `One 0x000AB;
  "laqu", `One 0x000AB;
  "Larr", `One 0x0219E;
  "lArr", `One 0x021D0;
  "larr", `One 0x02190;
  "larrb", `One 0x021E4;
  "larrbfs", `One 0x0291F;
  "larrfs", `One 0x0291D;
  "larrhk", `One 0x021A9;
  "larrlp", `One 0x021AB;
  "larrpl", `One 0x02939;
  "larrsim", `One 0x02973;
  "larrtl", `One 0x021A2;
  "lat", `One 0x02AAB;
  "lAtail", `One 0x0291B;
  "latail", `One 0x02919;
  "late", `One 0x02AAD;
  "lates", `Two (0x02AAD, 0x0FE00);
  "lBarr", `One 0x0290E;
  "lbarr", `One 0x0290C;
  "lbbrk", `One 0x02772;
  "lbrace", `One 0x0007B;
  "lbrack", `One 0x0005B;
  "lbrke", `One 0x0298B;
  "lbrksld", `One 0x0298F;
  "lbrkslu", `One 0x0298D;
  "Lcaron", `One 0x0013D;
  "lcaron", `One 0x0013E;
  "Lcedil", `One 0x0013B;
  "lcedil", `One 0x0013C;
  "lceil", `One 0x02308;
  "lcub", `One 0x0007B;
  "Lcy", `One 0x0041B;
  "lcy", `One 0x0043B;
  "ldca", `One 0x02936;
  "ldquo", `One 0x0201C;
  "ldquor", `One 0x0201E;
  "ldrdhar", `One 0x02967;
  "ldrushar", `One 0x0294B;
  "ldsh", `One 0x021B2;
  "lE", `One 0x02266;
  "le", `One 0x02264;
  "LeftAngleBracket", `One 0x027E8;
  "LeftArrow", `One 0x02190;
  "Leftarrow", `One 0x021D0;
  "leftarrow", `One 0x02190;
  "LeftArrowBar", `One 0x021E4;
  "LeftArrowRightArrow", `One 0x021C6;
  "leftarrowtail", `One 0x021A2;
  "LeftCeiling", `One 0x02308;
  "LeftDoubleBracket", `One 0x027E6;
  "LeftDownTeeVector", `One 0x02961;
  "LeftDownVector", `One 0x021C3;
  "LeftDownVectorBar", `One 0x02959;
  "LeftFloor", `One 0x0230A;
  "leftharpoondown", `One 0x021BD;
  "leftharpoonup", `One 0x021BC;
  "leftleftarrows", `One 0x021C7;
  "LeftRightArrow", `One 0x02194;
  "Leftrightarrow", `One 0x021D4;
  "leftrightarrow", `One 0x02194;
  "leftrightarrows", `One 0x021C6;
  "leftrightharpoons", `One 0x021CB;
  "leftrightsquigarrow", `One 0x021AD;
  "LeftRightVector", `One 0x0294E;
  "LeftTee", `One 0x022A3;
  "LeftTeeArrow", `One 0x021A4;
  "LeftTeeVector", `One 0x0295A;
  "leftthreetimes", `One 0x022CB;
  "LeftTriangle", `One 0x022B2;
  "LeftTriangleBar", `One 0x029CF;
  "LeftTriangleEqual", `One 0x022B4;
  "LeftUpDownVector", `One 0x02951;
  "LeftUpTeeVector", `One 0x02960;
  "LeftUpVector", `One 0x021BF;
  "LeftUpVectorBar", `One 0x02958;
  "LeftVector", `One 0x021BC;
  "LeftVectorBar", `One 0x02952;
  "lEg", `One 0x02A8B;
  "leg", `One 0x022DA;
  "leq", `One 0x02264;
  "leqq", `One 0x02266;
  "leqslant", `One 0x02A7D;
  "les", `One 0x02A7D;
  "lescc", `One 0x02AA8;
  "lesdot", `One 0x02A7F;
  "lesdoto", `One 0x02A81;
  "lesdotor", `One 0x02A83;
  "lesg", `Two (0x022DA, 0x0FE00);
  "lesges", `One 0x02A93;
  "lessapprox", `One 0x02A85;
  "lessdot", `One 0x022D6;
  "lesseqgtr", `One 0x022DA;
  "lesseqqgtr", `One 0x02A8B;
  "LessEqualGreater", `One 0x022DA;
  "LessFullEqual", `One 0x02266;
  "LessGreater", `One 0x02276;
  "lessgtr", `One 0x02276;
  "LessLess", `One 0x02AA1;
  "lesssim", `One 0x02272;
  "LessSlantEqual", `One 0x02A7D;
  "LessTilde", `One 0x02272;
  "lfisht", `One 0x0297C;
  "lfloor", `One 0x0230A;
  "Lfr", `One 0x1D50F;
  "lfr", `One 0x1D529;
  "lg", `One 0x02276;
  "lgE", `One 0x02A91;
  "lHar", `One 0x02962;
  "lhard", `One 0x021BD;
  "lharu", `One 0x021BC;
  "lharul", `One 0x0296A;
  "lhblk", `One 0x02584;
  "LJcy", `One 0x00409;
  "ljcy", `One 0x00459;
  "Ll", `One 0x022D8;
  "ll", `One 0x0226A;
  "llarr", `One 0x021C7;
  "llcorner", `One 0x0231E;
  "Lleftarrow", `One 0x021DA;
  "llhard", `One 0x0296B;
  "lltri", `One 0x025FA;
  "Lmidot", `One 0x0013F;
  "lmidot", `One 0x00140;
  "lmoust", `One 0x023B0;
  "lmoustache", `One 0x023B0;
  "lnap", `One 0x02A89;
  "lnapprox", `One 0x02A89;
  "lnE", `One 0x02268;
  "lne", `One 0x02A87;
  "lneq", `One 0x02A87;
  "lneqq", `One 0x02268;
  "lnsim", `One 0x022E6;
  "loang", `One 0x027EC;
  "loarr", `One 0x021FD;
  "lobrk", `One 0x027E6;
  "LongLeftArrow", `One 0x027F5;
  "Longleftarrow", `One 0x027F8;
  "longleftarrow", `One 0x027F5;
  "LongLeftRightArrow", `One 0x027F7;
  "Longleftrightarrow", `One 0x027FA;
  "longleftrightarrow", `One 0x027F7;
  "longmapsto", `One 0x027FC;
  "LongRightArrow", `One 0x027F6;
  "Longrightarrow", `One 0x027F9;
  "longrightarrow", `One 0x027F6;
  "looparrowleft", `One 0x021AB;
  "looparrowright", `One 0x021AC;
  "lopar", `One 0x02985;
  "Lopf", `One 0x1D543;
  "lopf", `One 0x1D55D;
  "loplus", `One 0x02A2D;
  "lotimes", `One 0x02A34;
  "lowast", `One 0x02217;
  "lowbar", `One 0x0005F;
  "LowerLeftArrow", `One 0x02199;
  "LowerRightArrow", `One 0x02198;
  "loz", `One 0x025CA;
  "lozenge", `One 0x025CA;
  "lozf", `One 0x029EB;
  "lpar", `One 0x00028;
  "lparlt", `One 0x02993;
  "lrarr", `One 0x021C6;
  "lrcorner", `One 0x0231F;
  "lrhar", `One 0x021CB;
  "lrhard", `One 0x0296D;
  "lrm", `One 0x0200E;
  "lrtri", `One 0x022BF;
  "lsaquo", `One 0x02039;
  "Lscr", `One 0x02112;
  "lscr", `One 0x1D4C1;
  "Lsh", `One 0x021B0;
  "lsh", `One 0x021B0;
  "lsim", `One 0x02272;
  "lsime", `One 0x02A8D;
  "lsimg", `One 0x02A8F;
  "lsqb", `One 0x0005B;
  "lsquo", `One 0x02018;
  "lsquor", `One 0x0201A;
  "Lstrok", `One 0x00141;
  "lstrok", `One 0x00142;
  "LT", `One 0x0003C;
  "L", `One 0x0003C;
  "Lt", `One 0x0226A;
  "lt", `One 0x0003C;
  "l", `One 0x0003C;
  "ltcc", `One 0x02AA6;
  "ltcir", `One 0x02A79;
  "ltdot", `One 0x022D6;
  "lthree", `One 0x022CB;
  "ltimes", `One 0x022C9;
  "ltlarr", `One 0x02976;
  "ltquest", `One 0x02A7B;
  "ltri", `One 0x025C3;
  "ltrie", `One 0x022B4;
  "ltrif", `One 0x025C2;
  "ltrPar", `One 0x02996;
  "lurdshar", `One 0x0294A;
  "luruhar", `One 0x02966;
  "lvertneqq", `Two (0x02268, 0x0FE00);
  "lvnE", `Two (0x02268, 0x0FE00);
  "macr", `One 0x000AF;
  "mac", `One 0x000AF;
  "male", `One 0x02642;
  "malt", `One 0x02720;
  "maltese", `One 0x02720;
  "Map", `One 0x02905;
  "map", `One 0x021A6;
  "mapsto", `One 0x021A6;
  "mapstodown", `One 0x021A7;
  "mapstoleft", `One 0x021A4;
  "mapstoup", `One 0x021A5;
  "marker", `One 0x025AE;
  "mcomma", `One 0x02A29;
  "Mcy", `One 0x0041C;
  "mcy", `One 0x0043C;
  "mdash", `One 0x02014;
  "mDDot", `One 0x0223A;
  "measuredangle", `One 0x02221;
  "MediumSpace", `One 0x0205F;
  "Mellintrf", `One 0x02133;
  "Mfr", `One 0x1D510;
  "mfr", `One 0x1D52A;
  "mho", `One 0x02127;
  "micro", `One 0x000B5;
  "micr", `One 0x000B5;
  "mid", `One 0x02223;
  "midast", `One 0x0002A;
  "midcir", `One 0x02AF0;
  "middot", `One 0x000B7;
  "middo", `One 0x000B7;
  "minus", `One 0x02212;
  "minusb", `One 0x0229F;
  "minusd", `One 0x02238;
  "minusdu", `One 0x02A2A;
  "MinusPlus", `One 0x02213;
  "mlcp", `One 0x02ADB;
  "mldr", `One 0x02026;
  "mnplus", `One 0x02213;
  "models", `One 0x022A7;
  "Mopf", `One 0x1D544;
  "mopf", `One 0x1D55E;
  "mp", `One 0x02213;
  "Mscr", `One 0x02133;
  "mscr", `One 0x1D4C2;
  "mstpos", `One 0x0223E;
  "Mu", `One 0x0039C;
  "mu", `One 0x003BC;
  "multimap", `One 0x022B8;
  "mumap", `One 0x022B8;
  "nabla", `One 0x02207;
  "Nacute", `One 0x00143;
  "nacute", `One 0x00144;
  "nang", `Two (0x02220, 0x020D2);
  "nap", `One 0x02249;
  "napE", `Two (0x02A70, 0x00338);
  "napid", `Two (0x0224B, 0x00338);
  "napos", `One 0x00149;
  "napprox", `One 0x02249;
  "natur", `One 0x0266E;
  "natural", `One 0x0266E;
  "naturals", `One 0x02115;
  "nbsp", `One 0x000A0;
  "nbs", `One 0x000A0;
  "nbump", `Two (0x0224E, 0x00338);
  "nbumpe", `Two (0x0224F, 0x00338);
  "ncap", `One 0x02A43;
  "Ncaron", `One 0x00147;
  "ncaron", `One 0x00148;
  "Ncedil", `One 0x00145;
  "ncedil", `One 0x00146;
  "ncong", `One 0x02247;
  "ncongdot", `Two (0x02A6D, 0x00338);
  "ncup", `One 0x02A42;
  "Ncy", `One 0x0041D;
  "ncy", `One 0x0043D;
  "ndash", `One 0x02013;
  "ne", `One 0x02260;
  "nearhk", `One 0x02924;
  "neArr", `One 0x021D7;
  "nearr", `One 0x02197;
  "nearrow", `One 0x02197;
  "nedot", `Two (0x02250, 0x00338);
  "NegativeMediumSpace", `One 0x0200B;
  "NegativeThickSpace", `One 0x0200B;
  "NegativeThinSpace", `One 0x0200B;
  "NegativeVeryThinSpace", `One 0x0200B;
  "nequiv", `One 0x02262;
  "nesear", `One 0x02928;
  "nesim", `Two (0x02242, 0x00338);
  "NestedGreaterGreater", `One 0x0226B;
  "NestedLessLess", `One 0x0226A;
  "NewLine", `One 0x0000A;
  "nexist", `One 0x02204;
  "nexists", `One 0x02204;
  "Nfr", `One 0x1D511;
  "nfr", `One 0x1D52B;
  "ngE", `Two (0x02267, 0x00338);
  "nge", `One 0x02271;
  "ngeq", `One 0x02271;
  "ngeqq", `Two (0x02267, 0x00338);
  "ngeqslant", `Two (0x02A7E, 0x00338);
  "nges", `Two (0x02A7E, 0x00338);
  "nGg", `Two (0x022D9, 0x00338);
  "ngsim", `One 0x02275;
  "nGt", `Two (0x0226B, 0x020D2);
  "ngt", `One 0x0226F;
  "ngtr", `One 0x0226F;
  "nGtv", `Two (0x0226B, 0x00338);
  "nhArr", `One 0x021CE;
  "nharr", `One 0x021AE;
  "nhpar", `One 0x02AF2;
  "ni", `One 0x0220B;
  "nis", `One 0x022FC;
  "nisd", `One 0x022FA;
  "niv", `One 0x0220B;
  "NJcy", `One 0x0040A;
  "njcy", `One 0x0045A;
  "nlArr", `One 0x021CD;
  "nlarr", `One 0x0219A;
  "nldr", `One 0x02025;
  "nlE", `Two (0x02266, 0x00338);
  "nle", `One 0x02270;
  "nLeftarrow", `One 0x021CD;
  "nleftarrow", `One 0x0219A;
  "nLeftrightarrow", `One 0x021CE;
  "nleftrightarrow", `One 0x021AE;
  "nleq", `One 0x02270;
  "nleqq", `Two (0x02266, 0x00338);
  "nleqslant", `Two (0x02A7D, 0x00338);
  "nles", `Two (0x02A7D, 0x00338);
  "nless", `One 0x0226E;
  "nLl", `Two (0x022D8, 0x00338);
  "nlsim", `One 0x02274;
  "nLt", `Two (0x0226A, 0x020D2);
  "nlt", `One 0x0226E;
  "nltri", `One 0x022EA;
  "nltrie", `One 0x022EC;
  "nLtv", `Two (0x0226A, 0x00338);
  "nmid", `One 0x02224;
  "NoBreak", `One 0x02060;
  "NonBreakingSpace", `One 0x000A0;
  "Nopf", `One 0x02115;
  "nopf", `One 0x1D55F;
  "Not", `One 0x02AEC;
  "not", `One 0x000AC;
  "no", `One 0x000AC;
  "NotCongruent", `One 0x02262;
  "NotCupCap", `One 0x0226D;
  "NotDoubleVerticalBar", `One 0x02226;
  "NotElement", `One 0x02209;
  "NotEqual", `One 0x02260;
  "NotEqualTilde", `Two (0x02242, 0x00338);
  "NotExists", `One 0x02204;
  "NotGreater", `One 0x0226F;
  "NotGreaterEqual", `One 0x02271;
  "NotGreaterFullEqual", `Two (0x02267, 0x00338);
  "NotGreaterGreater", `Two (0x0226B, 0x00338);
  "NotGreaterLess", `One 0x02279;
  "NotGreaterSlantEqual", `Two (0x02A7E, 0x00338);
  "NotGreaterTilde", `One 0x02275;
  "NotHumpDownHump", `Two (0x0224E, 0x00338);
  "NotHumpEqual", `Two (0x0224F, 0x00338);
  "notin", `One 0x02209;
  "notindot", `Two (0x022F5, 0x00338);
  "notinE", `Two (0x022F9, 0x00338);
  "notinva", `One 0x02209;
  "notinvb", `One 0x022F7;
  "notinvc", `One 0x022F6;
  "NotLeftTriangle", `One 0x022EA;
  "NotLeftTriangleBar", `Two (0x029CF, 0x00338);
  "NotLeftTriangleEqual", `One 0x022EC;
  "NotLess", `One 0x0226E;
  "NotLessEqual", `One 0x02270;
  "NotLessGreater", `One 0x02278;
  "NotLessLess", `Two (0x0226A, 0x00338);
  "NotLessSlantEqual", `Two (0x02A7D, 0x00338);
  "NotLessTilde", `One 0x02274;
  "NotNestedGreaterGreater", `Two (0x02AA2, 0x00338);
  "NotNestedLessLess", `Two (0x02AA1, 0x00338);
  "notni", `One 0x0220C;
  "notniva", `One 0x0220C;
  "notnivb", `One 0x022FE;
  "notnivc", `One 0x022FD;
  "NotPrecedes", `One 0x02280;
  "NotPrecedesEqual", `Two (0x02AAF, 0x00338);
  "NotPrecedesSlantEqual", `One 0x022E0;
  "NotReverseElement", `One 0x0220C;
  "NotRightTriangle", `One 0x022EB;
  "NotRightTriangleBar", `Two (0x029D0, 0x00338);
  "NotRightTriangleEqual", `One 0x022ED;
  "NotSquareSubset", `Two (0x0228F, 0x00338);
  "NotSquareSubsetEqual", `One 0x022E2;
  "NotSquareSuperset", `Two (0x02290, 0x00338);
  "NotSquareSupersetEqual", `One 0x022E3;
  "NotSubset", `Two (0x02282, 0x020D2);
  "NotSubsetEqual", `One 0x02288;
  "NotSucceeds", `One 0x02281;
  "NotSucceedsEqual", `Two (0x02AB0, 0x00338);
  "NotSucceedsSlantEqual", `One 0x022E1;
  "NotSucceedsTilde", `Two (0x0227F, 0x00338);
  "NotSuperset", `Two (0x02283, 0x020D2);
  "NotSupersetEqual", `One 0x02289;
  "NotTilde", `One 0x02241;
  "NotTildeEqual", `One 0x02244;
  "NotTildeFullEqual", `One 0x02247;
  "NotTildeTilde", `One 0x02249;
  "NotVerticalBar", `One 0x02224;
  "npar", `One 0x02226;
  "nparallel", `One 0x02226;
  "nparsl", `Two (0x02AFD, 0x020E5);
  "npart", `Two (0x02202, 0x00338);
  "npolint", `One 0x02A14;
  "npr", `One 0x02280;
  "nprcue", `One 0x022E0;
  "npre", `Two (0x02AAF, 0x00338);
  "nprec", `One 0x02280;
  "npreceq", `Two (0x02AAF, 0x00338);
  "nrArr", `One 0x021CF;
  "nrarr", `One 0x0219B;
  "nrarrc", `Two (0x02933, 0x00338);
  "nrarrw", `Two (0x0219D, 0x00338);
  "nRightarrow", `One 0x021CF;
  "nrightarrow", `One 0x0219B;
  "nrtri", `One 0x022EB;
  "nrtrie", `One 0x022ED;
  "nsc", `One 0x02281;
  "nsccue", `One 0x022E1;
  "nsce", `Two (0x02AB0, 0x00338);
  "Nscr", `One 0x1D4A9;
  "nscr", `One 0x1D4C3;
  "nshortmid", `One 0x02224;
  "nshortparallel", `One 0x02226;
  "nsim", `One 0x02241;
  "nsime", `One 0x02244;
  "nsimeq", `One 0x02244;
  "nsmid", `One 0x02224;
  "nspar", `One 0x02226;
  "nsqsube", `One 0x022E2;
  "nsqsupe", `One 0x022E3;
  "nsub", `One 0x02284;
  "nsubE", `Two (0x02AC5, 0x00338);
  "nsube", `One 0x02288;
  "nsubset", `Two (0x02282, 0x020D2);
  "nsubseteq", `One 0x02288;
  "nsubseteqq", `Two (0x02AC5, 0x00338);
  "nsucc", `One 0x02281;
  "nsucceq", `Two (0x02AB0, 0x00338);
  "nsup", `One 0x02285;
  "nsupE", `Two (0x02AC6, 0x00338);
  "nsupe", `One 0x02289;
  "nsupset", `Two (0x02283, 0x020D2);
  "nsupseteq", `One 0x02289;
  "nsupseteqq", `Two (0x02AC6, 0x00338);
  "ntgl", `One 0x02279;
  "Ntilde", `One 0x000D1;
  "Ntild", `One 0x000D1;
  "ntilde", `One 0x000F1;
  "ntild", `One 0x000F1;
  "ntlg", `One 0x02278;
  "ntriangleleft", `One 0x022EA;
  "ntrianglelefteq", `One 0x022EC;
  "ntriangleright", `One 0x022EB;
  "ntrianglerighteq", `One 0x022ED;
  "Nu", `One 0x0039D;
  "nu", `One 0x003BD;
  "num", `One 0x00023;
  "numero", `One 0x02116;
  "numsp", `One 0x02007;
  "nvap", `Two (0x0224D, 0x020D2);
  "nVDash", `One 0x022AF;
  "nVdash", `One 0x022AE;
  "nvDash", `One 0x022AD;
  "nvdash", `One 0x022AC;
  "nvge", `Two (0x02265, 0x020D2);
  "nvgt", `Two (0x0003E, 0x020D2);
  "nvHarr", `One 0x02904;
  "nvinfin", `One 0x029DE;
  "nvlArr", `One 0x02902;
  "nvle", `Two (0x02264, 0x020D2);
  "nvlt", `Two (0x0003C, 0x020D2);
  "nvltrie", `Two (0x022B4, 0x020D2);
  "nvrArr", `One 0x02903;
  "nvrtrie", `Two (0x022B5, 0x020D2);
  "nvsim", `Two (0x0223C, 0x020D2);
  "nwarhk", `One 0x02923;
  "nwArr", `One 0x021D6;
  "nwarr", `One 0x02196;
  "nwarrow", `One 0x02196;
  "nwnear", `One 0x02927;
  "Oacute", `One 0x000D3;
  "Oacut", `One 0x000D3;
  "oacute", `One 0x000F3;
  "oacut", `One 0x000F3;
  "oast", `One 0x0229B;
  "ocir", `One 0x0229A;
  "Ocirc", `One 0x000D4;
  "Ocir", `One 0x000D4;
  "ocirc", `One 0x000F4;
  "ocir", `One 0x000F4;
  "Ocy", `One 0x0041E;
  "ocy", `One 0x0043E;
  "odash", `One 0x0229D;
  "Odblac", `One 0x00150;
  "odblac", `One 0x00151;
  "odiv", `One 0x02A38;
  "odot", `One 0x02299;
  "odsold", `One 0x029BC;
  "OElig", `One 0x00152;
  "oelig", `One 0x00153;
  "ofcir", `One 0x029BF;
  "Ofr", `One 0x1D512;
  "ofr", `One 0x1D52C;
  "ogon", `One 0x002DB;
  "Ograve", `One 0x000D2;
  "Ograv", `One 0x000D2;
  "ograve", `One 0x000F2;
  "ograv", `One 0x000F2;
  "ogt", `One 0x029C1;
  "ohbar", `One 0x029B5;
  "ohm", `One 0x003A9;
  "oint", `One 0x0222E;
  "olarr", `One 0x021BA;
  "olcir", `One 0x029BE;
  "olcross", `One 0x029BB;
  "oline", `One 0x0203E;
  "olt", `One 0x029C0;
  "Omacr", `One 0x0014C;
  "omacr", `One 0x0014D;
  "Omega", `One 0x003A9;
  "omega", `One 0x003C9;
  "Omicron", `One 0x0039F;
  "omicron", `One 0x003BF;
  "omid", `One 0x029B6;
  "ominus", `One 0x02296;
  "Oopf", `One 0x1D546;
  "oopf", `One 0x1D560;
  "opar", `One 0x029B7;
  "OpenCurlyDoubleQuote", `One 0x0201C;
  "OpenCurlyQuote", `One 0x02018;
  "operp", `One 0x029B9;
  "oplus", `One 0x02295;
  "Or", `One 0x02A54;
  "or", `One 0x02228;
  "orarr", `One 0x021BB;
  "ord", `One 0x02A5D;
  "order", `One 0x02134;
  "orderof", `One 0x02134;
  "ordf", `One 0x000AA;
  "ord", `One 0x000AA;
  "ordm", `One 0x000BA;
  "ord", `One 0x000BA;
  "origof", `One 0x022B6;
  "oror", `One 0x02A56;
  "orslope", `One 0x02A57;
  "orv", `One 0x02A5B;
  "oS", `One 0x024C8;
  "Oscr", `One 0x1D4AA;
  "oscr", `One 0x02134;
  "Oslash", `One 0x000D8;
  "Oslas", `One 0x000D8;
  "oslash", `One 0x000F8;
  "oslas", `One 0x000F8;
  "osol", `One 0x02298;
  "Otilde", `One 0x000D5;
  "Otild", `One 0x000D5;
  "otilde", `One 0x000F5;
  "otild", `One 0x000F5;
  "Otimes", `One 0x02A37;
  "otimes", `One 0x02297;
  "otimesas", `One 0x02A36;
  "Ouml", `One 0x000D6;
  "Oum", `One 0x000D6;
  "ouml", `One 0x000F6;
  "oum", `One 0x000F6;
  "ovbar", `One 0x0233D;
  "OverBar", `One 0x0203E;
  "OverBrace", `One 0x023DE;
  "OverBracket", `One 0x023B4;
  "OverParenthesis", `One 0x023DC;
  "par", `One 0x02225;
  "para", `One 0x000B6;
  "par", `One 0x000B6;
  "parallel", `One 0x02225;
  "parsim", `One 0x02AF3;
  "parsl", `One 0x02AFD;
  "part", `One 0x02202;
  "PartialD", `One 0x02202;
  "Pcy", `One 0x0041F;
  "pcy", `One 0x0043F;
  "percnt", `One 0x00025;
  "period", `One 0x0002E;
  "permil", `One 0x02030;
  "perp", `One 0x022A5;
  "pertenk", `One 0x02031;
  "Pfr", `One 0x1D513;
  "pfr", `One 0x1D52D;
  "Phi", `One 0x003A6;
  "phi", `One 0x003C6;
  "phiv", `One 0x003D5;
  "phmmat", `One 0x02133;
  "phone", `One 0x0260E;
  "Pi", `One 0x003A0;
  "pi", `One 0x003C0;
  "pitchfork", `One 0x022D4;
  "piv", `One 0x003D6;
  "planck", `One 0x0210F;
  "planckh", `One 0x0210E;
  "plankv", `One 0x0210F;
  "plus", `One 0x0002B;
  "plusacir", `One 0x02A23;
  "plusb", `One 0x0229E;
  "pluscir", `One 0x02A22;
  "plusdo", `One 0x02214;
  "plusdu", `One 0x02A25;
  "pluse", `One 0x02A72;
  "PlusMinus", `One 0x000B1;
  "plusmn", `One 0x000B1;
  "plusm", `One 0x000B1;
  "plussim", `One 0x02A26;
  "plustwo", `One 0x02A27;
  "pm", `One 0x000B1;
  "Poincareplane", `One 0x0210C;
  "pointint", `One 0x02A15;
  "Popf", `One 0x02119;
  "popf", `One 0x1D561;
  "pound", `One 0x000A3;
  "poun", `One 0x000A3;
  "Pr", `One 0x02ABB;
  "pr", `One 0x0227A;
  "prap", `One 0x02AB7;
  "prcue", `One 0x0227C;
  "prE", `One 0x02AB3;
  "pre", `One 0x02AAF;
  "prec", `One 0x0227A;
  "precapprox", `One 0x02AB7;
  "preccurlyeq", `One 0x0227C;
  "Precedes", `One 0x0227A;
  "PrecedesEqual", `One 0x02AAF;
  "PrecedesSlantEqual", `One 0x0227C;
  "PrecedesTilde", `One 0x0227E;
  "preceq", `One 0x02AAF;
  "precnapprox", `One 0x02AB9;
  "precneqq", `One 0x02AB5;
  "precnsim", `One 0x022E8;
  "precsim", `One 0x0227E;
  "Prime", `One 0x02033;
  "prime", `One 0x02032;
  "primes", `One 0x02119;
  "prnap", `One 0x02AB9;
  "prnE", `One 0x02AB5;
  "prnsim", `One 0x022E8;
  "prod", `One 0x0220F;
  "Product", `One 0x0220F;
  "profalar", `One 0x0232E;
  "profline", `One 0x02312;
  "profsurf", `One 0x02313;
  "prop", `One 0x0221D;
  "Proportion", `One 0x02237;
  "Proportional", `One 0x0221D;
  "propto", `One 0x0221D;
  "prsim", `One 0x0227E;
  "prurel", `One 0x022B0;
  "Pscr", `One 0x1D4AB;
  "pscr", `One 0x1D4C5;
  "Psi", `One 0x003A8;
  "psi", `One 0x003C8;
  "puncsp", `One 0x02008;
  "Qfr", `One 0x1D514;
  "qfr", `One 0x1D52E;
  "qint", `One 0x02A0C;
  "Qopf", `One 0x0211A;
  "qopf", `One 0x1D562;
  "qprime", `One 0x02057;
  "Qscr", `One 0x1D4AC;
  "qscr", `One 0x1D4C6;
  "quaternions", `One 0x0210D;
  "quatint", `One 0x02A16;
  "quest", `One 0x0003F;
  "questeq", `One 0x0225F;
  "QUOT", `One 0x00022;
  "QUO", `One 0x00022;
  "quot", `One 0x00022;
  "quo", `One 0x00022;
  "rAarr", `One 0x021DB;
  "race", `Two (0x0223D, 0x00331);
  "Racute", `One 0x00154;
  "racute", `One 0x00155;
  "radic", `One 0x0221A;
  "raemptyv", `One 0x029B3;
  "Rang", `One 0x027EB;
  "rang", `One 0x027E9;
  "rangd", `One 0x02992;
  "range", `One 0x029A5;
  "rangle", `One 0x027E9;
  "raquo", `One 0x000BB;
  "raqu", `One 0x000BB;
  "Rarr", `One 0x021A0;
  "rArr", `One 0x021D2;
  "rarr", `One 0x02192;
  "rarrap", `One 0x02975;
  "rarrb", `One 0x021E5;
  "rarrbfs", `One 0x02920;
  "rarrc", `One 0x02933;
  "rarrfs", `One 0x0291E;
  "rarrhk", `One 0x021AA;
  "rarrlp", `One 0x021AC;
  "rarrpl", `One 0x02945;
  "rarrsim", `One 0x02974;
  "Rarrtl", `One 0x02916;
  "rarrtl", `One 0x021A3;
  "rarrw", `One 0x0219D;
  "rAtail", `One 0x0291C;
  "ratail", `One 0x0291A;
  "ratio", `One 0x02236;
  "rationals", `One 0x0211A;
  "RBarr", `One 0x02910;
  "rBarr", `One 0x0290F;
  "rbarr", `One 0x0290D;
  "rbbrk", `One 0x02773;
  "rbrace", `One 0x0007D;
  "rbrack", `One 0x0005D;
  "rbrke", `One 0x0298C;
  "rbrksld", `One 0x0298E;
  "rbrkslu", `One 0x02990;
  "Rcaron", `One 0x00158;
  "rcaron", `One 0x00159;
  "Rcedil", `One 0x00156;
  "rcedil", `One 0x00157;
  "rceil", `One 0x02309;
  "rcub", `One 0x0007D;
  "Rcy", `One 0x00420;
  "rcy", `One 0x00440;
  "rdca", `One 0x02937;
  "rdldhar", `One 0x02969;
  "rdquo", `One 0x0201D;
  "rdquor", `One 0x0201D;
  "rdsh", `One 0x021B3;
  "Re", `One 0x0211C;
  "real", `One 0x0211C;
  "realine", `One 0x0211B;
  "realpart", `One 0x0211C;
  "reals", `One 0x0211D;
  "rect", `One 0x025AD;
  "REG", `One 0x000AE;
  "RE", `One 0x000AE;
  "reg", `One 0x000AE;
  "re", `One 0x000AE;
  "ReverseElement", `One 0x0220B;
  "ReverseEquilibrium", `One 0x021CB;
  "ReverseUpEquilibrium", `One 0x0296F;
  "rfisht", `One 0x0297D;
  "rfloor", `One 0x0230B;
  "Rfr", `One 0x0211C;
  "rfr", `One 0x1D52F;
  "rHar", `One 0x02964;
  "rhard", `One 0x021C1;
  "rharu", `One 0x021C0;
  "rharul", `One 0x0296C;
  "Rho", `One 0x003A1;
  "rho", `One 0x003C1;
  "rhov", `One 0x003F1;
  "RightAngleBracket", `One 0x027E9;
  "RightArrow", `One 0x02192;
  "Rightarrow", `One 0x021D2;
  "rightarrow", `One 0x02192;
  "RightArrowBar", `One 0x021E5;
  "RightArrowLeftArrow", `One 0x021C4;
  "rightarrowtail", `One 0x021A3;
  "RightCeiling", `One 0x02309;
  "RightDoubleBracket", `One 0x027E7;
  "RightDownTeeVector", `One 0x0295D;
  "RightDownVector", `One 0x021C2;
  "RightDownVectorBar", `One 0x02955;
  "RightFloor", `One 0x0230B;
  "rightharpoondown", `One 0x021C1;
  "rightharpoonup", `One 0x021C0;
  "rightleftarrows", `One 0x021C4;
  "rightleftharpoons", `One 0x021CC;
  "rightrightarrows", `One 0x021C9;
  "rightsquigarrow", `One 0x0219D;
  "RightTee", `One 0x022A2;
  "RightTeeArrow", `One 0x021A6;
  "RightTeeVector", `One 0x0295B;
  "rightthreetimes", `One 0x022CC;
  "RightTriangle", `One 0x022B3;
  "RightTriangleBar", `One 0x029D0;
  "RightTriangleEqual", `One 0x022B5;
  "RightUpDownVector", `One 0x0294F;
  "RightUpTeeVector", `One 0x0295C;
  "RightUpVector", `One 0x021BE;
  "RightUpVectorBar", `One 0x02954;
  "RightVector", `One 0x021C0;
  "RightVectorBar", `One 0x02953;
  "ring", `One 0x002DA;
  "risingdotseq", `One 0x02253;
  "rlarr", `One 0x021C4;
  "rlhar", `One 0x021CC;
  "rlm", `One 0x0200F;
  "rmoust", `One 0x023B1;
  "rmoustache", `One 0x023B1;
  "rnmid", `One 0x02AEE;
  "roang", `One 0x027ED;
  "roarr", `One 0x021FE;
  "robrk", `One 0x027E7;
  "ropar", `One 0x02986;
  "Ropf", `One 0x0211D;
  "ropf", `One 0x1D563;
  "roplus", `One 0x02A2E;
  "rotimes", `One 0x02A35;
  "RoundImplies", `One 0x02970;
  "rpar", `One 0x00029;
  "rpargt", `One 0x02994;
  "rppolint", `One 0x02A12;
  "rrarr", `One 0x021C9;
  "Rrightarrow", `One 0x021DB;
  "rsaquo", `One 0x0203A;
  "Rscr", `One 0x0211B;
  "rscr", `One 0x1D4C7;
  "Rsh", `One 0x021B1;
  "rsh", `One 0x021B1;
  "rsqb", `One 0x0005D;
  "rsquo", `One 0x02019;
  "rsquor", `One 0x02019;
  "rthree", `One 0x022CC;
  "rtimes", `One 0x022CA;
  "rtri", `One 0x025B9;
  "rtrie", `One 0x022B5;
  "rtrif", `One 0x025B8;
  "rtriltri", `One 0x029CE;
  "RuleDelayed", `One 0x029F4;
  "ruluhar", `One 0x02968;
  "rx", `One 0x0211E;
  "Sacute", `One 0x0015A;
  "sacute", `One 0x0015B;
  "sbquo", `One 0x0201A;
  "Sc", `One 0x02ABC;
  "sc", `One 0x0227B;
  "scap", `One 0x02AB8;
  "Scaron", `One 0x00160;
  "scaron", `One 0x00161;
  "sccue", `One 0x0227D;
  "scE", `One 0x02AB4;
  "sce", `One 0x02AB0;
  "Scedil", `One 0x0015E;
  "scedil", `One 0x0015F;
  "Scirc", `One 0x0015C;
  "scirc", `One 0x0015D;
  "scnap", `One 0x02ABA;
  "scnE", `One 0x02AB6;
  "scnsim", `One 0x022E9;
  "scpolint", `One 0x02A13;
  "scsim", `One 0x0227F;
  "Scy", `One 0x00421;
  "scy", `One 0x00441;
  "sdot", `One 0x022C5;
  "sdotb", `One 0x022A1;
  "sdote", `One 0x02A66;
  "searhk", `One 0x02925;
  "seArr", `One 0x021D8;
  "searr", `One 0x02198;
  "searrow", `One 0x02198;
  "sect", `One 0x000A7;
  "sec", `One 0x000A7;
  "semi", `One 0x0003B;
  "seswar", `One 0x02929;
  "setminus", `One 0x02216;
  "setmn", `One 0x02216;
  "sext", `One 0x02736;
  "Sfr", `One 0x1D516;
  "sfr", `One 0x1D530;
  "sfrown", `One 0x02322;
  "sharp", `One 0x0266F;
  "SHCHcy", `One 0x00429;
  "shchcy", `One 0x00449;
  "SHcy", `One 0x00428;
  "shcy", `One 0x00448;
  "ShortDownArrow", `One 0x02193;
  "ShortLeftArrow", `One 0x02190;
  "shortmid", `One 0x02223;
  "shortparallel", `One 0x02225;
  "ShortRightArrow", `One 0x02192;
  "ShortUpArrow", `One 0x02191;
  "shy", `One 0x000AD;
  "sh", `One 0x000AD;
  "Sigma", `One 0x003A3;
  "sigma", `One 0x003C3;
  "sigmaf", `One 0x003C2;
  "sigmav", `One 0x003C2;
  "sim", `One 0x0223C;
  "simdot", `One 0x02A6A;
  "sime", `One 0x02243;
  "simeq", `One 0x02243;
  "simg", `One 0x02A9E;
  "simgE", `One 0x02AA0;
  "siml", `One 0x02A9D;
  "simlE", `One 0x02A9F;
  "simne", `One 0x02246;
  "simplus", `One 0x02A24;
  "simrarr", `One 0x02972;
  "slarr", `One 0x02190;
  "SmallCircle", `One 0x02218;
  "smallsetminus", `One 0x02216;
  "smashp", `One 0x02A33;
  "smeparsl", `One 0x029E4;
  "smid", `One 0x02223;
  "smile", `One 0x02323;
  "smt", `One 0x02AAA;
  "smte", `One 0x02AAC;
  "smtes", `Two (0x02AAC, 0x0FE00);
  "SOFTcy", `One 0x0042C;
  "softcy", `One 0x0044C;
  "sol", `One 0x0002F;
  "solb", `One 0x029C4;
  "solbar", `One 0x0233F;
  "Sopf", `One 0x1D54A;
  "sopf", `One 0x1D564;
  "spades", `One 0x02660;
  "spadesuit", `One 0x02660;
  "spar", `One 0x02225;
  "sqcap", `One 0x02293;
  "sqcaps", `Two (0x02293, 0x0FE00);
  "sqcup", `One 0x02294;
  "sqcups", `Two (0x02294, 0x0FE00);
  "Sqrt", `One 0x0221A;
  "sqsub", `One 0x0228F;
  "sqsube", `One 0x02291;
  "sqsubset", `One 0x0228F;
  "sqsubseteq", `One 0x02291;
  "sqsup", `One 0x02290;
  "sqsupe", `One 0x02292;
  "sqsupset", `One 0x02290;
  "sqsupseteq", `One 0x02292;
  "squ", `One 0x025A1;
  "Square", `One 0x025A1;
  "square", `One 0x025A1;
  "SquareIntersection", `One 0x02293;
  "SquareSubset", `One 0x0228F;
  "SquareSubsetEqual", `One 0x02291;
  "SquareSuperset", `One 0x02290;
  "SquareSupersetEqual", `One 0x02292;
  "SquareUnion", `One 0x02294;
  "squarf", `One 0x025AA;
  "squf", `One 0x025AA;
  "srarr", `One 0x02192;
  "Sscr", `One 0x1D4AE;
  "sscr", `One 0x1D4C8;
  "ssetmn", `One 0x02216;
  "ssmile", `One 0x02323;
  "sstarf", `One 0x022C6;
  "Star", `One 0x022C6;
  "star", `One 0x02606;
  "starf", `One 0x02605;
  "straightepsilon", `One 0x003F5;
  "straightphi", `One 0x003D5;
  "strns", `One 0x000AF;
  "Sub", `One 0x022D0;
  "sub", `One 0x02282;
  "subdot", `One 0x02ABD;
  "subE", `One 0x02AC5;
  "sube", `One 0x02286;
  "subedot", `One 0x02AC3;
  "submult", `One 0x02AC1;
  "subnE", `One 0x02ACB;
  "subne", `One 0x0228A;
  "subplus", `One 0x02ABF;
  "subrarr", `One 0x02979;
  "Subset", `One 0x022D0;
  "subset", `One 0x02282;
  "subseteq", `One 0x02286;
  "subseteqq", `One 0x02AC5;
  "SubsetEqual", `One 0x02286;
  "subsetneq", `One 0x0228A;
  "subsetneqq", `One 0x02ACB;
  "subsim", `One 0x02AC7;
  "subsub", `One 0x02AD5;
  "subsup", `One 0x02AD3;
  "succ", `One 0x0227B;
  "succapprox", `One 0x02AB8;
  "succcurlyeq", `One 0x0227D;
  "Succeeds", `One 0x0227B;
  "SucceedsEqual", `One 0x02AB0;
  "SucceedsSlantEqual", `One 0x0227D;
  "SucceedsTilde", `One 0x0227F;
  "succeq", `One 0x02AB0;
  "succnapprox", `One 0x02ABA;
  "succneqq", `One 0x02AB6;
  "succnsim", `One 0x022E9;
  "succsim", `One 0x0227F;
  "SuchThat", `One 0x0220B;
  "Sum", `One 0x02211;
  "sum", `One 0x02211;
  "sung", `One 0x0266A;
  "Sup", `One 0x022D1;
  "sup", `One 0x02283;
  "sup1", `One 0x000B9;
  "sup", `One 0x000B9;
  "sup2", `One 0x000B2;
  "sup", `One 0x000B2;
  "sup3", `One 0x000B3;
  "sup", `One 0x000B3;
  "supdot", `One 0x02ABE;
  "supdsub", `One 0x02AD8;
  "supE", `One 0x02AC6;
  "supe", `One 0x02287;
  "supedot", `One 0x02AC4;
  "Superset", `One 0x02283;
  "SupersetEqual", `One 0x02287;
  "suphsol", `One 0x027C9;
  "suphsub", `One 0x02AD7;
  "suplarr", `One 0x0297B;
  "supmult", `One 0x02AC2;
  "supnE", `One 0x02ACC;
  "supne", `One 0x0228B;
  "supplus", `One 0x02AC0;
  "Supset", `One 0x022D1;
  "supset", `One 0x02283;
  "supseteq", `One 0x02287;
  "supseteqq", `One 0x02AC6;
  "supsetneq", `One 0x0228B;
  "supsetneqq", `One 0x02ACC;
  "supsim", `One 0x02AC8;
  "supsub", `One 0x02AD4;
  "supsup", `One 0x02AD6;
  "swarhk", `One 0x02926;
  "swArr", `One 0x021D9;
  "swarr", `One 0x02199;
  "swarrow", `One 0x02199;
  "swnwar", `One 0x0292A;
  "szlig", `One 0x000DF;
  "szli", `One 0x000DF;
  "Tab", `One 0x00009;
  "target", `One 0x02316;
  "Tau", `One 0x003A4;
  "tau", `One 0x003C4;
  "tbrk", `One 0x023B4;
  "Tcaron", `One 0x00164;
  "tcaron", `One 0x00165;
  "Tcedil", `One 0x00162;
  "tcedil", `One 0x00163;
  "Tcy", `One 0x00422;
  "tcy", `One 0x00442;
  "tdot", `One 0x020DB;
  "telrec", `One 0x02315;
  "Tfr", `One 0x1D517;
  "tfr", `One 0x1D531;
  "there4", `One 0x02234;
  "Therefore", `One 0x02234;
  "therefore", `One 0x02234;
  "Theta", `One 0x00398;
  "theta", `One 0x003B8;
  "thetasym", `One 0x003D1;
  "thetav", `One 0x003D1;
  "thickapprox", `One 0x02248;
  "thicksim", `One 0x0223C;
  "ThickSpace", `Two (0x0205F, 0x0200A);
  "thinsp", `One 0x02009;
  "ThinSpace", `One 0x02009;
  "thkap", `One 0x02248;
  "thksim", `One 0x0223C;
  "THORN", `One 0x000DE;
  "THOR", `One 0x000DE;
  "thorn", `One 0x000FE;
  "thor", `One 0x000FE;
  "Tilde", `One 0x0223C;
  "tilde", `One 0x002DC;
  "TildeEqual", `One 0x02243;
  "TildeFullEqual", `One 0x02245;
  "TildeTilde", `One 0x02248;
  "times", `One 0x000D7;
  "time", `One 0x000D7;
  "timesb", `One 0x022A0;
  "timesbar", `One 0x02A31;
  "timesd", `One 0x02A30;
  "tint", `One 0x0222D;
  "toea", `One 0x02928;
  "top", `One 0x022A4;
  "topbot", `One 0x02336;
  "topcir", `One 0x02AF1;
  "Topf", `One 0x1D54B;
  "topf", `One 0x1D565;
  "topfork", `One 0x02ADA;
  "tosa", `One 0x02929;
  "tprime", `One 0x02034;
  "TRADE", `One 0x02122;
  "trade", `One 0x02122;
  "triangle", `One 0x025B5;
  "triangledown", `One 0x025BF;
  "triangleleft", `One 0x025C3;
  "trianglelefteq", `One 0x022B4;
  "triangleq", `One 0x0225C;
  "triangleright", `One 0x025B9;
  "trianglerighteq", `One 0x022B5;
  "tridot", `One 0x025EC;
  "trie", `One 0x0225C;
  "triminus", `One 0x02A3A;
  "TripleDot", `One 0x020DB;
  "triplus", `One 0x02A39;
  "trisb", `One 0x029CD;
  "tritime", `One 0x02A3B;
  "trpezium", `One 0x023E2;
  "Tscr", `One 0x1D4AF;
  "tscr", `One 0x1D4C9;
  "TScy", `One 0x00426;
  "tscy", `One 0x00446;
  "TSHcy", `One 0x0040B;
  "tshcy", `One 0x0045B;
  "Tstrok", `One 0x00166;
  "tstrok", `One 0x00167;
  "twixt", `One 0x0226C;
  "twoheadleftarrow", `One 0x0219E;
  "twoheadrightarrow", `One 0x021A0;
  "Uacute", `One 0x000DA;
  "Uacut", `One 0x000DA;
  "uacute", `One 0x000FA;
  "uacut", `One 0x000FA;
  "Uarr", `One 0x0219F;
  "uArr", `One 0x021D1;
  "uarr", `One 0x02191;
  "Uarrocir", `One 0x02949;
  "Ubrcy", `One 0x0040E;
  "ubrcy", `One 0x0045E;
  "Ubreve", `One 0x0016C;
  "ubreve", `One 0x0016D;
  "Ucirc", `One 0x000DB;
  "Ucir", `One 0x000DB;
  "ucirc", `One 0x000FB;
  "ucir", `One 0x000FB;
  "Ucy", `One 0x00423;
  "ucy", `One 0x00443;
  "udarr", `One 0x021C5;
  "Udblac", `One 0x00170;
  "udblac", `One 0x00171;
  "udhar", `One 0x0296E;
  "ufisht", `One 0x0297E;
  "Ufr", `One 0x1D518;
  "ufr", `One 0x1D532;
  "Ugrave", `One 0x000D9;
  "Ugrav", `One 0x000D9;
  "ugrave", `One 0x000F9;
  "ugrav", `One 0x000F9;
  "uHar", `One 0x02963;
  "uharl", `One 0x021BF;
  "uharr", `One 0x021BE;
  "uhblk", `One 0x02580;
  "ulcorn", `One 0x0231C;
  "ulcorner", `One 0x0231C;
  "ulcrop", `One 0x0230F;
  "ultri", `One 0x025F8;
  "Umacr", `One 0x0016A;
  "umacr", `One 0x0016B;
  "uml", `One 0x000A8;
  "um", `One 0x000A8;
  "UnderBar", `One 0x0005F;
  "UnderBrace", `One 0x023DF;
  "UnderBracket", `One 0x023B5;
  "UnderParenthesis", `One 0x023DD;
  "Union", `One 0x022C3;
  "UnionPlus", `One 0x0228E;
  "Uogon", `One 0x00172;
  "uogon", `One 0x00173;
  "Uopf", `One 0x1D54C;
  "uopf", `One 0x1D566;
  "UpArrow", `One 0x02191;
  "Uparrow", `One 0x021D1;
  "uparrow", `One 0x02191;
  "UpArrowBar", `One 0x02912;
  "UpArrowDownArrow", `One 0x021C5;
  "UpDownArrow", `One 0x02195;
  "Updownarrow", `One 0x021D5;
  "updownarrow", `One 0x02195;
  "UpEquilibrium", `One 0x0296E;
  "upharpoonleft", `One 0x021BF;
  "upharpoonright", `One 0x021BE;
  "uplus", `One 0x0228E;
  "UpperLeftArrow", `One 0x02196;
  "UpperRightArrow", `One 0x02197;
  "Upsi", `One 0x003D2;
  "upsi", `One 0x003C5;
  "upsih", `One 0x003D2;
  "Upsilon", `One 0x003A5;
  "upsilon", `One 0x003C5;
  "UpTee", `One 0x022A5;
  "UpTeeArrow", `One 0x021A5;
  "upuparrows", `One 0x021C8;
  "urcorn", `One 0x0231D;
  "urcorner", `One 0x0231D;
  "urcrop", `One 0x0230E;
  "Uring", `One 0x0016E;
  "uring", `One 0x0016F;
  "urtri", `One 0x025F9;
  "Uscr", `One 0x1D4B0;
  "uscr", `One 0x1D4CA;
  "utdot", `One 0x022F0;
  "Utilde", `One 0x00168;
  "utilde", `One 0x00169;
  "utri", `One 0x025B5;
  "utrif", `One 0x025B4;
  "uuarr", `One 0x021C8;
  "Uuml", `One 0x000DC;
  "Uum", `One 0x000DC;
  "uuml", `One 0x000FC;
  "uum", `One 0x000FC;
  "uwangle", `One 0x029A7;
  "vangrt", `One 0x0299C;
  "varepsilon", `One 0x003F5;
  "varkappa", `One 0x003F0;
  "varnothing", `One 0x02205;
  "varphi", `One 0x003D5;
  "varpi", `One 0x003D6;
  "varpropto", `One 0x0221D;
  "vArr", `One 0x021D5;
  "varr", `One 0x02195;
  "varrho", `One 0x003F1;
  "varsigma", `One 0x003C2;
  "varsubsetneq", `Two (0x0228A, 0x0FE00);
  "varsubsetneqq", `Two (0x02ACB, 0x0FE00);
  "varsupsetneq", `Two (0x0228B, 0x0FE00);
  "varsupsetneqq", `Two (0x02ACC, 0x0FE00);
  "vartheta", `One 0x003D1;
  "vartriangleleft", `One 0x022B2;
  "vartriangleright", `One 0x022B3;
  "Vbar", `One 0x02AEB;
  "vBar", `One 0x02AE8;
  "vBarv", `One 0x02AE9;
  "Vcy", `One 0x00412;
  "vcy", `One 0x00432;
  "VDash", `One 0x022AB;
  "Vdash", `One 0x022A9;
  "vDash", `One 0x022A8;
  "vdash", `One 0x022A2;
  "Vdashl", `One 0x02AE6;
  "Vee", `One 0x022C1;
  "vee", `One 0x02228;
  "veebar", `One 0x022BB;
  "veeeq", `One 0x0225A;
  "vellip", `One 0x022EE;
  "Verbar", `One 0x02016;
  "verbar", `One 0x0007C;
  "Vert", `One 0x02016;
  "vert", `One 0x0007C;
  "VerticalBar", `One 0x02223;
  "VerticalLine", `One 0x0007C;
  "VerticalSeparator", `One 0x02758;
  "VerticalTilde", `One 0x02240;
  "VeryThinSpace", `One 0x0200A;
  "Vfr", `One 0x1D519;
  "vfr", `One 0x1D533;
  "vltri", `One 0x022B2;
  "vnsub", `Two (0x02282, 0x020D2);
  "vnsup", `Two (0x02283, 0x020D2);
  "Vopf", `One 0x1D54D;
  "vopf", `One 0x1D567;
  "vprop", `One 0x0221D;
  "vrtri", `One 0x022B3;
  "Vscr", `One 0x1D4B1;
  "vscr", `One 0x1D4CB;
  "vsubnE", `Two (0x02ACB, 0x0FE00);
  "vsubne", `Two (0x0228A, 0x0FE00);
  "vsupnE", `Two (0x02ACC, 0x0FE00);
  "vsupne", `Two (0x0228B, 0x0FE00);
  "Vvdash", `One 0x022AA;
  "vzigzag", `One 0x0299A;
  "Wcirc", `One 0x00174;
  "wcirc", `One 0x00175;
  "wedbar", `One 0x02A5F;
  "Wedge", `One 0x022C0;
  "wedge", `One 0x02227;
  "wedgeq", `One 0x02259;
  "weierp", `One 0x02118;
  "Wfr", `One 0x1D51A;
  "wfr", `One 0x1D534;
  "Wopf", `One 0x1D54E;
  "wopf", `One 0x1D568;
  "wp", `One 0x02118;
  "wr", `One 0x02240;
  "wreath", `One 0x02240;
  "Wscr", `One 0x1D4B2;
  "wscr", `One 0x1D4CC;
  "xcap", `One 0x022C2;
  "xcirc", `One 0x025EF;
  "xcup", `One 0x022C3;
  "xdtri", `One 0x025BD;
  "Xfr", `One 0x1D51B;
  "xfr", `One 0x1D535;
  "xhArr", `One 0x027FA;
  "xharr", `One 0x027F7;
  "Xi", `One 0x0039E;
  "xi", `One 0x003BE;
  "xlArr", `One 0x027F8;
  "xlarr", `One 0x027F5;
  "xmap", `One 0x027FC;
  "xnis", `One 0x022FB;
  "xodot", `One 0x02A00;
  "Xopf", `One 0x1D54F;
  "xopf", `One 0x1D569;
  "xoplus", `One 0x02A01;
  "xotime", `One 0x02A02;
  "xrArr", `One 0x027F9;
  "xrarr", `One 0x027F6;
  "Xscr", `One 0x1D4B3;
  "xscr", `One 0x1D4CD;
  "xsqcup", `One 0x02A06;
  "xuplus", `One 0x02A04;
  "xutri", `One 0x025B3;
  "xvee", `One 0x022C1;
  "xwedge", `One 0x022C0;
  "Yacute", `One 0x000DD;
  "Yacut", `One 0x000DD;
  "yacute", `One 0x000FD;
  "yacut", `One 0x000FD;
  "YAcy", `One 0x0042F;
  "yacy", `One 0x0044F;
  "Ycirc", `One 0x00176;
  "ycirc", `One 0x00177;
  "Ycy", `One 0x0042B;
  "ycy", `One 0x0044B;
  "yen", `One 0x000A5;
  "ye", `One 0x000A5;
  "Yfr", `One 0x1D51C;
  "yfr", `One 0x1D536;
  "YIcy", `One 0x00407;
  "yicy", `One 0x00457;
  "Yopf", `One 0x1D550;
  "yopf", `One 0x1D56A;
  "Yscr", `One 0x1D4B4;
  "yscr", `One 0x1D4CE;
  "YUcy", `One 0x0042E;
  "yucy", `One 0x0044E;
  "Yuml", `One 0x00178;
  "yuml", `One 0x000FF;
  "yum", `One 0x000FF;
  "Zacute", `One 0x00179;
  "zacute", `One 0x0017A;
  "Zcaron", `One 0x0017D;
  "zcaron", `One 0x0017E;
  "Zcy", `One 0x00417;
  "zcy", `One 0x00437;
  "Zdot", `One 0x0017B;
  "zdot", `One 0x0017C;
  "zeetrf", `One 0x02128;
  "ZeroWidthSpace", `One 0x0200B;
  "Zeta", `One 0x00396;
  "zeta", `One 0x003B6;
  "Zfr", `One 0x02128;
  "zfr", `One 0x1D537;
  "ZHcy", `One 0x00416;
  "zhcy", `One 0x00436;
  "zigrarr", `One 0x021DD;
  "Zopf", `One 0x02124;
  "zopf", `One 0x1D56B;
  "Zscr", `One 0x1D4B5;
  "zscr", `One 0x1D4CF;
  "zwj", `One 0x0200D;
  "zwnj", `One 0x0200C
|]


//******************************************************************************
//
// Copyright (c) 2015 Microsoft Corporation. All rights reserved.
//
// This code is licensed under the MIT License (MIT).
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
//******************************************************************************

#ifndef __XIBOBJECTTYPES_H
#define __XIBOBJECTTYPES_H

#include "XIBObject.h"
#include "XIBObjectFloat.h"
#include "XIBObjectDouble.h"
#include "XIBObjectInt.h"
#include "XIBDictionary.h"
#include "XIBObjectNil.h"

class XIBObjectString : public XIBObject {
public:
    const char* _strVal;
    XIBObjectString(const char* str);
    XIBObjectString();
    const char* stringValue();
    int intValue();
    bool EqualToString(const char* str);
    ;
    void EmitObject(NIBWriter* writer);
    void InitFromStory(XIBObject* obj);
};

class XIBObjectData : public XIBObject {
public:
    const char* _strVal;
    void* _binVal;
    int _binLen;

    XIBObjectData(const char* str);
    XIBObjectData(void* bin, int len);
    void EmitObject(NIBWriter* writer);
    int base64Decode(void* out, int outMaxLen);
};

class XIBObjectBool : public XIBObject {
public:
    bool _val;
    XIBObjectBool(pugi::xml_node node);
    XIBObjectBool(bool val);
    bool NeedsSerialization();
    void WriteData(NIBWriter* writer);
    int intValue();
};

class XIBObjectReal : public XIBObject {
public:
    XIBObjectReal(pugi::xml_node node);
    virtual bool NeedsSerialization();
    void WriteData(NIBWriter* writer);
};

class XIBArray : public XIBObject {
public:
    XIBArray(pugi::xml_node node);
    XIBArray();

    virtual XIBObject* ApplyVariation(XIBObject* variation);

    virtual void InitFromStory(XIBObject* obj);
    void EmitObject(NIBWriter* writer);
    XIBObject* objectAtIndex(int idx);
    int count();
};

class XIBVariation : public XIBArray {
public:
    XIBVariation(pugi::xml_node node);
    XIBVariation();

    bool NeedsSerialization();
    void EmitObject(NIBWriter* writer);
};

class XIBAccessibilityArray : public XIBArray {
    void EmitObject(NIBWriter* writer);
};

// Distinguish between XIB3 format and Storyboard since we write out intermediate NIB files in the storyboard code path
// These methods are used only when dealing with storyboard (.storyboard) files
bool IsStoryboardConversion();
std::string GetOutputFilename(const char* filename);
#endif


# Makefile for the Linux sound card driver
#

obj-$(CONFIG_SOUND) += soundcore.o
obj-$(CONFIG_SOUND_PRIME) += sound_firmware.o
obj-$(CONFIG_SOUND_PRIME) += oss/
obj-$(CONFIG_DMASOUND) += oss/
obj-$(CONFIG_SND) += core/ i2c/ drivers/ isa/ pci/ ppc/ arm/ sh/ synth/ usb/ \
	firewire/ sparc/ spi/ parisc/ pcmcia/ mips/ soc/ atmel/
obj-$(CONFIG_SND_AOA) += aoa/

# This one must be compilable even if sound is configured out
obj-$(CONFIG_AC97_BUS) += ac97_bus.o

ifeq ($(CONFIG_SND),y)
  obj-y += last.o
endif

soundcore-objs  := sound_core.o


/*
 * Copyright 2010-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 *
 *  http://aws.amazon.com/apache2.0
 *
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */

#import "S3Request.h"
#import "S3BucketNameUtilities.h"

@implementation S3Request

#pragma mark methods

-(AmazonURLRequest *)configureURLRequest
{
    [super configureURLRequest];
    [self setHttpMethod:kHttpMethodGet];

    [self.urlRequest setValue:[NSString stringWithFormat:@"%lld", self.contentLength] forHTTPHeaderField:kHttpHdrContentLength];

    [self.urlRequest setValue:self.host forHTTPHeaderField:kHttpHdrHost];

    self.date = [NSDate date];

    [self.urlRequest setValue:[self.date stringWithRFC822Format] forHTTPHeaderField:kHttpHdrDate];

    if (nil != self.httpMethod) {
        [self.urlRequest setHTTPMethod:self.httpMethod];
    }
    if (nil != self.contentType) {
        [self.urlRequest setValue:self.contentType forHTTPHeaderField:kHttpHdrContentType];
    }
    if (nil != self.securityToken) {
        [self.urlRequest setValue:self.securityToken forHTTPHeaderField:kHttpHdrAmzSecurityToken];
    }

    [self.urlRequest setURL:self.url];

    return urlRequest;
}

-(NSString *)timestamp
{
    return [[self date] stringWithRFC822Format];
}

#pragma mark accessors

-(NSURL *)url
{
    NSString *keyPath;
    NSString *resQuery;

    if (self.bucket == nil || [S3BucketNameUtilities isDNSBucketName:self.bucket]) {
        keyPath  = (self.key == nil ? @"" : [NSString stringWithFormat:@"%@", [self.key stringWithURLEncoding]]);
    }
    else {
        keyPath  = (self.key == nil ? [NSString stringWithFormat:@"%@/", self.bucket] : [NSString stringWithFormat:@"%@/%@", self.bucket, [self.key stringWithURLEncoding]]);
    }
    resQuery = (self.subResource == nil ? @"" : [NSString stringWithFormat:@"?%@", self.subResource]);

    return [NSURL URLWithString:[NSString stringWithFormat:@"%@://%@/%@%@", self.protocol, self.host, keyPath, resQuery]];
}

-(NSString *)host
{
    if (nil != self.bucket) {
        if ( [S3BucketNameUtilities isDNSBucketName:self.bucket]) {
            return [NSString stringWithFormat:@"%@.%@", self.bucket, self.hostName];
        }
    }

    return self.hostName;
}

-(NSDate *)date
{
    if (_date == nil) {
        _date = [[NSDate date] retain];
    }
    return _date;
}

-(NSString *)protocol
{
    if ( [self.endpoint hasPrefix:@"http://"]) {
        return @"http";
    }
    else {
        return @"https";
    }
}

-(NSString *)endpointHost
{
    return self.hostName;
}

#pragma mark memory management

- (id)initWithCoder:(NSCoder *)decoder
{
    self = [super initWithCoder:decoder];

    [self setAuthorization:[decoder decodeObjectForKey:@"Authorization"]];
    self.contentLength = [decoder decodeInt64ForKey:@"ContentLength"];
    [self setContentType:[decoder decodeObjectForKey:@"ContentType"]];
    [self setSecurityToken:[decoder decodeObjectForKey:@"SecurityToken"]];
    [self setBucket:[decoder decodeObjectForKey:@"Bucket"]];
    [self setKey:[decoder decodeObjectForKey:@"Key"]];
    [self setSubResource:[decoder decodeObjectForKey:@"SubResource"]];

    return self;
}

- (void)encodeWithCoder:(NSCoder *)encoder
{
    [super encodeWithCoder:encoder];

    [encoder encodeObject:self.authorization forKey:@"Authorization"];
    [encoder encodeInt64:self.contentLength forKey:@"ContentLength"];
    [encoder encodeObject:self.contentType forKey:@"ContentType"];
    [encoder encodeObject:self.securityToken forKey:@"SecurityToken"];
    [encoder encodeObject:self.bucket forKey:@"Bucket"];
    [encoder encodeObject:self.key forKey:@"Key"];
    [encoder encodeObject:self.subResource forKey:@"SubResource"];
}

-(void)dealloc
{
    [_authorization release];
    [_contentType release];
    [_date release];
    [_securityToken release];
    [_bucket release];
    [_key release];
    [_subResource release];

    [super dealloc];
}

@end


---
title: BookKeeper concepts and architecture
subtitle: The core components and how they work
prev: ../run-locally
---

BookKeeper is a service that provides persistent storage of streams of log [entries](#entries)---aka *records*---in sequences called [ledgers](#ledgers). BookKeeper replicates stored entries across multiple servers.

## Basic terms

In BookKeeper:

* each unit of a log is an [*entry*](#entries) (aka record)
* streams of log entries are called [*ledgers*](#ledgers)
* individual servers storing ledgers of entries are called [*bookies*](#bookies)

BookKeeper is designed to be reliable and resilient to a wide variety of failures. Bookies can crash, corrupt data, or discard data, but as long as there are enough bookies behaving correctly in the ensemble the service as a whole will behave correctly.

## Entries

> **Entries** contain the actual data written to ledgers, along with some important metadata.

BookKeeper entries are sequences of bytes that are written to [ledgers](#ledgers). Each entry has the following fields:

Field | Java type | Description
:-----|:----------|:-----------
Ledger number | `long` | The ID of the ledger to which the entry has been written
Entry number | `long` | The unique ID of the entry
Last confirmed (LC) | `long` | The ID of the last recorded entry
Data | `byte[]` | The entry's data (written by the client application)
Authentication code | `byte[]` | The message auth code, which includes *all* other fields in the entry

## Ledgers

> **Ledgers** are the basic unit of storage in BookKeeper.

Ledgers are sequences of entries, while each entry is a sequence of bytes. Entries are written to a ledger:

* sequentially, and
* at most once.

This means that ledgers have *append-only* semantics. Entries cannot be modified once they've been written to a ledger. Determining the proper write order is the responsibility of [client applications](#clients).

## Clients and APIs

> BookKeeper clients have two main roles: they create and delete ledgers, and they read entries from and write entries to ledgers.
>
> BookKeeper provides both a lower-level and a higher-level API for ledger interaction.

There are currently two APIs that can be used for interacting with BookKeeper:

* The [ledger API](../../api/ledger-api) is a lower-level API that enables you to interact with {% pop ledgers %} directly.
* The [DistributedLog API](../../api/distributedlog-api) is a higher-level API that enables you to use BookKeeper without directly interacting with ledgers.

In general, you should choose the API based on how much granular control you need over ledger semantics. The two APIs can also both be used within a single application.

## Bookies

> **Bookies** are individual BookKeeper servers that handle ledgers (more specifically, fragments of ledgers). Bookies function as part of an ensemble.

A bookie is an individual BookKeeper storage server. Individual bookies store fragments of ledgers, not entire ledgers (for the sake of performance). For any given ledger **L**, an *ensemble* is the group of bookies storing the entries in **L**.

Whenever entries are written to a ledger, those entries are {% pop striped %} across the ensemble (written to a sub-group of bookies rather than to all bookies).

### Motivation

> BookKeeper was initially inspired by the NameNode server in HDFS but its uses now extend far beyond this.

The initial motivation for BookKeeper comes from the [Hadoop](http://hadoop.apache.org/) ecosystem. In the [Hadoop Distributed File System](https://wiki.apache.org/hadoop/HDFS) (HDFS), a special node called the [NameNode](https://wiki.apache.org/hadoop/NameNode) logs all operations in a reliable fashion, which ensures that recovery is possible in case of crashes.

The NameNode, however, served only as initial inspiration for BookKeeper. The applications for BookKeeper extend far beyond this and include essentially any application that requires an append-based storage system. BookKeeper provides a number of advantages for such applications:

* Highly efficient writes
* High fault tolerance via replication of messages within ensembles of bookies
* High throughput for write operations via {% pop striping %} (across as many bookies as you wish)

## Metadata storage

BookKeeper requires a metadata storage service to store information related to [ledgers](#ledgers) and available bookies. BookKeeper currently uses [ZooKeeper](https://zookeeper.apache.org) for this and other tasks.

## Data management in bookies

Bookies manage data in a [log-structured](https://en.wikipedia.org/wiki/Log-structured_file_system) way, which is implemented using three types of files:

* [journals](#journals)
* [entry logs](#entry-logs)
* [index files](#index-files)

### Journals

A journal file contains BookKeeper transaction logs. Before any update to a ledger takes place, the bookie ensures that a transaction describing the update is written to non-volatile storage. A new journal file is created once the bookie starts or the older journal file reaches the journal file size threshold.

### Entry logs

An entry log file manages the written entries received from BookKeeper clients. Entries from different ledgers are aggregated and written sequentially, while their offsets are kept as pointers in a [ledger cache](#ledger-cache) for fast lookup.

A new entry log file is created once the bookie starts or the older entry log file reaches the entry log size threshold. Old entry log files are removed by the Garbage Collector Thread once they are not associated with any active ledger.

### Index files

An index file is created for each ledger, which comprises a header and several fixed-length index pages that record the offsets of data stored in entry log files.

Since updating index files would introduce random disk I/O index files are updated lazily by a sync thread running in the background. This ensures speedy performance for updates. Before index pages are persisted to disk, they are gathered in a ledger cache for lookup.

### Ledger cache

Ledger indexes pages are cached in a memory pool, which allows for more efficient management of disk head scheduling.

### Adding entries

When a client instructs a {% pop bookie %} to write an entry to a ledger, the entry will go through the following steps to be persisted on disk:

1. The entry is appended to an [entry log](#entry-logs)
1. The index of the entry is updated in the [ledger cache](#ledger-cache)
1. A transaction corresponding to this entry update is appended to the [journal](#journals)
1. A response is sent to the BookKeeper client

> For performance reasons, the entry log buffers entries in memory and commits them in batches, while the ledger cache holds index pages in memory and flushes them lazily. This process is described in more detail in the [Data flush](#data-flush) section below.

### Data flush

Ledger index pages are flushed to index files in the following two cases:

* The ledger cache memory limit is reached. There is no more space available to hold newer index pages. Dirty index pages will be evicted from the ledger cache and persisted to index files.
* A background thread synchronous thread is responsible for flushing index pages from the ledger cache to index files periodically.

Besides flushing index pages, the sync thread is responsible for rolling journal files in case that journal files use too much disk space. The data flush flow in the sync thread is as follows:

* A `LastLogMark` is recorded in memory. The `LastLogMark` indicates that those entries before it have been persisted (to both index and entry log files) and contains two parts:
  1. A `txnLogId` (the file ID of a journal)
  1. A `txnLogPos` (offset in a journal)
* Dirty index pages are flushed from the ledger cache to the index file, and entry log files are flushed to ensure that all buffered entries in entry log files are persisted to disk.

    Ideally, a bookie only needs to flush index pages and entry log files that contain entries before `LastLogMark`. There is, however, no such information in the ledger and entry log mapping to journal files. Consequently, the thread flushes the ledger cache and entry log entirely here, and may flush entries after the `LastLogMark`. Flushing more is not a problem, though, just redundant.
* The `LastLogMark` is persisted to disk, which means that entries added before `LastLogMark` whose entry data and index page were also persisted to disk. It is now time to safely remove journal files created earlier than `txnLogId`.

If the bookie has crashed before persisting `LastLogMark` to disk, it still has journal files containing entries for which index pages may not have been persisted. Consequently, when this bookie restarts, it inspects journal files to restore those entries and data isn't lost.

Using the above data flush mechanism, it is safe for the sync thread to skip data flushing when the bookie shuts down. However, in the entry logger it uses a buffered channel to write entries in batches and there might be data buffered in the buffered channel upon a shut down. The bookie needs to ensure that the entry log flushes its buffered data during shutdown. Otherwise, entry log files become corrupted with partial entries.

### Data compaction

On bookies, entries of different ledgers are interleaved in entry log files. A bookie runs a garbage collector thread to delete un-associated entry log files to reclaim disk space. If a given entry log file contains entries from a ledger that has not been deleted, then the entry log file would never be removed and the occupied disk space never reclaimed. In order to avoid such a case, a bookie server compacts entry log files in a garbage collector thread to reclaim disk space.

There are two kinds of compaction running with different frequency: minor compaction and major compaction. The differences between minor compaction and major compaction lies in their threshold value and compaction interval.

* The garbage collection threshold is the size percentage of an entry log file occupied by those undeleted ledgers. The default minor compaction threshold is 0.2, while the major compaction threshold is 0.8.
* The garbage collection interval is how frequently to run the compaction. The default minor compaction interval is 1 hour, while the major compaction threshold is 1 day.

> If either the threshold or interval is set to less than or equal to zero, compaction is disabled.

The data compaction flow in the garbage collector thread is as follows:

* The thread scans entry log files to get their entry log metadata, which records a list of ledgers comprising an entry log and their corresponding percentages.
* With the normal garbage collection flow, once the bookie determines that a ledger has been deleted, the ledger will be removed from the entry log metadata and the size of the entry log reduced.
* If the remaining size of an entry log file reaches a specified threshold, the entries of active ledgers in the entry log will be copied to a new entry log file.
* Once all valid entries have been copied, the old entry log file is deleted.

## ZooKeeper metadata

BookKeeper requires a ZooKeeper installation for storing [ledger](#ledger) metadata. Whenever you construct a [`BookKeeper`](../../api/javadoc/org/apache/bookkeeper/client/BookKeeper) client object, you need to pass a list of ZooKeeper servers as a parameter to the constructor, like this:

```java
String zkConnectionString = "127.0.0.1:2181";
BookKeeper bkClient = new BookKeeper(zkConnectionString);
```

> For more info on using the BookKeeper Java client, see [this guide](../../api/ledger-api#the-java-ledger-api-client).

## Ledger manager

A *ledger manager* handles ledgers' metadata (which is stored in ZooKeeper). BookKeeper offers two types of ledger managers: the [flat ledger manager](#flat-ledger-manager) and the [hierarchical ledger manager](#hierarchical-ledger-manager). Both ledger managers extend the [`AbstractZkLedgerManager`](../../api/javadoc/org/apache/bookkeeper/meta/AbstractZkLedgerManager) abstract class.

> #### Use the flat ledger manager in most cases
> The flat ledger manager is the default and is recommended for nearly all use cases. The hierarchical ledger manager is better suited only for managing very large numbers of BookKeeper ledgers (> 50,000).

### Flat ledger manager

The *flat ledger manager*, implemented in the [`FlatLedgerManager`](../../api/javadoc/org/apache/bookkeeper/meta/FlatLedgerManager.html) class, stores all ledgers' metadata in child nodes of a single ZooKeeper path. The flat ledger manager creates [sequential nodes](https://zookeeper.apache.org/doc/trunk/zookeeperProgrammers.html#Sequence+Nodes+--+Unique+Naming) to ensure the uniqueness of the ledger ID and prefixes all nodes with `L`. Bookie servers manage their own active ledgers in a hash map so that it's easy to find which ledgers have been deleted from ZooKeeper and then garbage collect them.

The flat ledger manager's garbage collection follow proceeds as follows:

* All existing ledgers are fetched from ZooKeeper (`zkActiveLedgers`)
* All ledgers currently active within the bookie are fetched (`bkActiveLedgers`)
* The currently actively ledgers are looped through to determine which ledgers don't currently exist in ZooKeeper. Those are then garbage collected.
* The *hierarchical ledger manager* stores ledgers' metadata in two-level [znodes](https://zookeeper.apache.org/doc/current/zookeeperOver.html#Nodes+and+ephemeral+nodes).

### Hierarchical ledger manager

The *hierarchical ledger manager*, implemented in the [`HierarchicalLedgerManager`](../../api/javadoc/org/apache/bookkeeper/meta/HierarchicalLedgerManager) class, first obtains a global unique ID from ZooKeeper using an [`EPHEMERAL_SEQUENTIAL`](https://zookeeper.apache.org/doc/current/api/org/apache/zookeeper/CreateMode.html#EPHEMERAL_SEQUENTIAL) znode. Since ZooKeeper's sequence counter has a format of `%10d` (10 digits with 0 padding, for example `<path>0000000001`), the hierarchical ledger manager splits the generated ID into 3 parts:

```shell
{level1 (2 digits)}{level2 (4 digits)}{level3 (4 digits)}
```

These three parts are used to form the actual ledger node path to store ledger metadata:

```shell
{ledgers_root_path}/{level1}/{level2}/L{level3}
```

For example, ledger 0000000001 is split into three parts, 00, 0000, and 00001, and stored in znode `/{ledgers_root_path}/00/0000/L0001`. Each znode could have as many 10,000 ledgers, which avoids the problem of the child list being larger than the maximum ZooKeeper packet size (which is the [limitation](https://issues.apache.org/jira/browse/BOOKKEEPER-39) that initially prompted the creation of the hierarchical ledger manager).


Create new or use an existing Log Analytic Workspace

Specify the Azure Region for your new or existing OMS workspace

Use an existing Automation account or create a new

westeurope southeastasia eastus2 southcentralus japaneast

Specify the Azure Region for your OMS Automation Account

Specify the name of your Recovery Vault you want to analyze

GUID for the schedule creation - create a unique before deploy


Application template for Red Hat JBoss BPM Suite 6.4 intelligent process server applications built using S2I.

Red Hat JBoss BPM Suite 6.4 intelligent process server (no https)

A new BPMS application has been created in your project. The username/password for accessing the KIE Server REST or JMS interface is ${KIE_SERVER_USER}/${KIE_SERVER_PASSWORD}.

The KIE Container deployment configuration in format: containerId=groupId:artifactId:version|c2=g2:a2:v2

The user name to access the KIE Server REST or JMS interface.

The password to access the KIE Server REST or JMS interface. Must be different than username; must not be root, admin, or administrator; must contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), and 1 non-alphanumeric symbol(s).

Hibernate persistence dialect.

The name for the application.

Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>

Git source URI for application

Git branch/tag reference

Path within Git project to build; empty for root project directory.

Queue names

Topic names

HornetQ cluster admin password

GitHub trigger secret

Generic build trigger secret

Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.

Maven mirror to use for S2I builds

List of directories from which archives will be copied into the deployment folder. If unspecified, all archives in /target will be copied.

The web server's http port.

Route for application's http service.


package com.hjq.http.listener;

import okhttp3.Call;

/**
 *    author : Android 轮子哥
 *    github : https://github.com/getActivity/EasyHttp
 *    time   : 2019/05/19
 *    desc   : 请求回调包装类
 */
public class HttpCallback<T> implements OnHttpListener<T> {

    private OnHttpListener mSource;

    public HttpCallback(OnHttpListener source) {
        mSource = source;
    }

    @Override
    public void onStart(Call call) {
        if (mSource != null) {
            mSource.onStart(call);
        }
    }

    @SuppressWarnings("unchecked")
    @Override
    public void onSucceed(T result) {
        if (mSource != null) {
            mSource.onSucceed(result);
        }
    }

    @Override
    public void onFail(Exception e) {
        if (mSource != null) {
            mSource.onFail(e);
        }
    }

    @Override
    public void onEnd(Call call) {
        if (mSource != null) {
            mSource.onEnd(call);
        }
    }
}