pub static MAX_NAME_LENGTH: usize = 33;
pub static MINIMAL_ENTITIES: [(&'static str, char); 25] = [
("&", '&'),
(">", '>'),
("<", '<'),
(" ", '\u{8287}'),
("
", '\n'),
(" ", '\u{160}'),
(""", '"'),
("	", '\u{9}'),
(" ", '\u{8201}'),
(" ", '\u{8202}'),
("&", '&'),
("'", '\''),
("\", '\\'),
(" ", '\u{8196}'),
(" ", '\u{8197}'),
(" ", '\u{8195}'),
(" ", '\u{8194}'),
(">", '>'),
(" ", '\u{8202}'),
("<", '<'),
(" ", '\u{160}'),
(" ", '\u{8199}'),
(" ", '\u{8200}'),
(""", '"'),
(" ", '\u{8201}'),
];
pub static NAMED_ENTITIES: [(&'static str, char); 2031] = [
("Æ", 'Æ'),
("&", '&'),
("Á", 'Á'),
("Ă", 'Ă'),
("Â", 'Â'),
("А", 'А'),
("𝔄", '𝔄'),
("À", 'À'),
("Α", 'Α'),
("Ā", 'Ā'),
("⩓", '⩓'),
("Ą", 'Ą'),
("𝔸", '𝔸'),
("⁡", ''),
("Å", 'Å'),
("𝒜", '𝒜'),
("≔", '≔'),
("Ã", 'Ã'),
("Ä", 'Ä'),
("∖", '∖'),
("⫧", '⫧'),
("⌆", '⌆'),
("Б", 'Б'),
("∵", '∵'),
("ℬ", 'ℬ'),
("Β", 'Β'),
("𝔅", '𝔅'),
("𝔹", '𝔹'),
("˘", '˘'),
("ℬ", 'ℬ'),
("≎", '≎'),
("Ч", 'Ч'),
("©", '©'),
("Ć", 'Ć'),
("⋒", '⋒'),
("ⅅ", 'ⅅ'),
("ℭ", 'ℭ'),
("Č", 'Č'),
("Ç", 'Ç'),
("Ĉ", 'Ĉ'),
("∰", '∰'),
("Ċ", 'Ċ'),
("¸", '¸'),
("·", '·'),
("ℭ", 'ℭ'),
("Χ", 'Χ'),
("⊙", '⊙'),
("⊖", '⊖'),
("⊕", '⊕'),
("⊗", '⊗'),
("∲", '∲'),
("”", '”'),
("’", '’'),
("∷", '∷'),
("⩴", '⩴'),
("≡", '≡'),
("∯", '∯'),
("∮", '∮'),
("ℂ", 'ℂ'),
("∐", '∐'),
("∳", '∳'),
("⨯", '⨯'),
("𝒞", '𝒞'),
("⋓", '⋓'),
("≍", '≍'),
("ⅅ", 'ⅅ'),
("⤑", '⤑'),
("Ђ", 'Ђ'),
("Ѕ", 'Ѕ'),
("Џ", 'Џ'),
("‡", '‡'),
("↡", '↡'),
("⫤", '⫤'),
("Ď", 'Ď'),
("Д", 'Д'),
("∇", '∇'),
("Δ", 'Δ'),
("𝔇", '𝔇'),
("´", '´'),
("˙", '˙'),
("˝", '˝'),
("`", '`'),
("˜", '˜'),
("⋄", '⋄'),
("ⅆ", 'ⅆ'),
("𝔻", '𝔻'),
("¨", '¨'),
("⃜", '⃜'),
("≐", '≐'),
("∯", '∯'),
("¨", '¨'),
("⇓", '⇓'),
("⇐", '⇐'),
("⇔", '⇔'),
("⫤", '⫤'),
("⟸", '⟸'),
("⟺", '⟺'),
("⟹", '⟹'),
("⇒", '⇒'),
("⊨", '⊨'),
("⇑", '⇑'),
("⇕", '⇕'),
("∥", '∥'),
("↓", '↓'),
("⤓", '⤓'),
("⇵", '⇵'),
("̑", '̑'),
("⥐", '⥐'),
("⥞", '⥞'),
("↽", '↽'),
("⥖", '⥖'),
("⥟", '⥟'),
("⇁", '⇁'),
("⥗", '⥗'),
("⊤", '⊤'),
("↧", '↧'),
("⇓", '⇓'),
("𝒟", '𝒟'),
("Đ", 'Đ'),
("Ŋ", 'Ŋ'),
("Ð", 'Ð'),
("É", 'É'),
("Ě", 'Ě'),
("Ê", 'Ê'),
("Э", 'Э'),
("Ė", 'Ė'),
("𝔈", '𝔈'),
("È", 'È'),
("∈", '∈'),
("Ē", 'Ē'),
("◻", '◻'),
("▫", '▫'),
("Ę", 'Ę'),
("𝔼", '𝔼'),
("Ε", 'Ε'),
("⩵", '⩵'),
("≂", '≂'),
("⇌", '⇌'),
("ℰ", 'ℰ'),
("⩳", '⩳'),
("Η", 'Η'),
("Ë", 'Ë'),
("∃", '∃'),
("ⅇ", 'ⅇ'),
("Ф", 'Ф'),
("𝔉", '𝔉'),
("◼", '◼'),
("▪", '▪'),
("𝔽", '𝔽'),
("∀", '∀'),
("ℱ", 'ℱ'),
("ℱ", 'ℱ'),
("Ѓ", 'Ѓ'),
(">", '>'),
("Γ", 'Γ'),
("Ϝ", 'Ϝ'),
("Ğ", 'Ğ'),
("Ģ", 'Ģ'),
("Ĝ", 'Ĝ'),
("Г", 'Г'),
("Ġ", 'Ġ'),
("𝔊", '𝔊'),
("⋙", '⋙'),
("𝔾", '𝔾'),
("≥", '≥'),
("⋛", '⋛'),
("≧", '≧'),
("⪢", '⪢'),
("≷", '≷'),
("⩾", '⩾'),
("≳", '≳'),
("𝒢", '𝒢'),
("≫", '≫'),
("Ъ", 'Ъ'),
("ˇ", 'ˇ'),
("^", '^'),
("Ĥ", 'Ĥ'),
("ℌ", 'ℌ'),
("ℋ", 'ℋ'),
("ℍ", 'ℍ'),
("─", '─'),
("ℋ", 'ℋ'),
("Ħ", 'Ħ'),
("≎", '≎'),
("≏", '≏'),
("Е", 'Е'),
("IJ", 'IJ'),
("Ё", 'Ё'),
("Í", 'Í'),
("Î", 'Î'),
("И", 'И'),
("İ", 'İ'),
("ℑ", 'ℑ'),
("Ì", 'Ì'),
("ℑ", 'ℑ'),
("Ī", 'Ī'),
("ⅈ", 'ⅈ'),
("⇒", '⇒'),
("∬", '∬'),
("∫", '∫'),
("⋂", '⋂'),
("⁣", ''),
("⁢", ''),
("Į", 'Į'),
("𝕀", '𝕀'),
("Ι", 'Ι'),
("ℐ", 'ℐ'),
("Ĩ", 'Ĩ'),
("І", 'І'),
("Ï", 'Ï'),
("Ĵ", 'Ĵ'),
("Й", 'Й'),
("𝔍", '𝔍'),
("𝕁", '𝕁'),
("𝒥", '𝒥'),
("Ј", 'Ј'),
("Є", 'Є'),
("Х", 'Х'),
("Ќ", 'Ќ'),
("Κ", 'Κ'),
("Ķ", 'Ķ'),
("К", 'К'),
("𝔎", '𝔎'),
("𝕂", '𝕂'),
("𝒦", '𝒦'),
("Љ", 'Љ'),
("<", '<'),
("Ĺ", 'Ĺ'),
("Λ", 'Λ'),
("⟪", '⟪'),
("ℒ", 'ℒ'),
("↞", '↞'),
("Ľ", 'Ľ'),
("Ļ", 'Ļ'),
("Л", 'Л'),
("⟨", '⟨'),
("←", '←'),
("⇤", '⇤'),
("⇆", '⇆'),
("⌈", '⌈'),
("⟦", '⟦'),
("⥡", '⥡'),
("⇃", '⇃'),
("⥙", '⥙'),
("⌊", '⌊'),
("↔", '↔'),
("⥎", '⥎'),
("⊣", '⊣'),
("↤", '↤'),
("⥚", '⥚'),
("⊲", '⊲'),
("⧏", '⧏'),
("⊴", '⊴'),
("⥑", '⥑'),
("⥠", '⥠'),
("↿", '↿'),
("⥘", '⥘'),
("↼", '↼'),
("⥒", '⥒'),
("⇐", '⇐'),
("⇔", '⇔'),
("⋚", '⋚'),
("≦", '≦'),
("≶", '≶'),
("⪡", '⪡'),
("⩽", '⩽'),
("≲", '≲'),
("𝔏", '𝔏'),
("⋘", '⋘'),
("⇚", '⇚'),
("Ŀ", 'Ŀ'),
("⟵", '⟵'),
("⟷", '⟷'),
("⟶", '⟶'),
("⟸", '⟸'),
("⟺", '⟺'),
("⟹", '⟹'),
("𝕃", '𝕃'),
("↙", '↙'),
("↘", '↘'),
("ℒ", 'ℒ'),
("↰", '↰'),
("Ł", 'Ł'),
("≪", '≪'),
("⤅", '⤅'),
("М", 'М'),
(" ", '\u{8287}'),
("ℳ", 'ℳ'),
("𝔐", '𝔐'),
("∓", '∓'),
("𝕄", '𝕄'),
("ℳ", 'ℳ'),
("Μ", 'Μ'),
("Њ", 'Њ'),
("Ń", 'Ń'),
("Ň", 'Ň'),
("Ņ", 'Ņ'),
("Н", 'Н'),
("​", ''),
("​", ''),
("​", ''),
("​", ''),
("≫", '≫'),
("≪", '≪'),
("
", '\n'),
("𝔑", '𝔑'),
("⁠", ''),
(" ", '\u{160}'),
("ℕ", 'ℕ'),
("⫬", '⫬'),
("≢", '≢'),
("≭", '≭'),
("∦", '∦'),
("∉", '∉'),
("≠", '≠'),
("∄", '∄'),
("≯", '≯'),
("≱", '≱'),
("≹", '≹'),
("≵", '≵'),
("⋪", '⋪'),
("⋬", '⋬'),
("≮", '≮'),
("≰", '≰'),
("≸", '≸'),
("≴", '≴'),
("⊀", '⊀'),
("⋠", '⋠'),
("∌", '∌'),
("⋫", '⋫'),
("⋭", '⋭'),
("⋢", '⋢'),
("⋣", '⋣'),
("⊈", '⊈'),
("⊁", '⊁'),
("⋡", '⋡'),
("⊉", '⊉'),
("≁", '≁'),
("≄", '≄'),
("≇", '≇'),
("≉", '≉'),
("∤", '∤'),
("𝒩", '𝒩'),
("Ñ", 'Ñ'),
("Ν", 'Ν'),
("Œ", 'Œ'),
("Ó", 'Ó'),
("Ô", 'Ô'),
("О", 'О'),
("Ő", 'Ő'),
("𝔒", '𝔒'),
("Ò", 'Ò'),
("Ō", 'Ō'),
("Ω", 'Ω'),
("Ο", 'Ο'),
("𝕆", '𝕆'),
("“", '“'),
("‘", '‘'),
("⩔", '⩔'),
("𝒪", '𝒪'),
("Ø", 'Ø'),
("Õ", 'Õ'),
("⨷", '⨷'),
("Ö", 'Ö'),
("‾", '¯'),
("⏞", '⏞'),
("⎴", '⎴'),
("⏜", '⏜'),
("∂", '∂'),
("П", 'П'),
("𝔓", '𝔓'),
("Φ", 'Φ'),
("Π", 'Π'),
("±", '±'),
("ℌ", 'ℌ'),
("ℙ", 'ℙ'),
("⪻", '⪻'),
("≺", '≺'),
("⪯", '⪯'),
("≼", '≼'),
("≾", '≾'),
("″", '″'),
("∏", '∏'),
("∷", '∷'),
("∝", '∝'),
("𝒫", '𝒫'),
("Ψ", 'Ψ'),
(""", '"'),
("𝔔", '𝔔'),
("ℚ", 'ℚ'),
("𝒬", '𝒬'),
("⤐", '⤐'),
("®", '®'),
("Ŕ", 'Ŕ'),
("⟫", '⟫'),
("↠", '↠'),
("⤖", '⤖'),
("Ř", 'Ř'),
("Ŗ", 'Ŗ'),
("Р", 'Р'),
("ℜ", 'ℜ'),
("∋", '∋'),
("⇋", '⇋'),
("⥯", '⥯'),
("ℜ", 'ℜ'),
("Ρ", 'Ρ'),
("⟩", '⟩'),
("→", '→'),
("⇥", '⇥'),
("⇄", '⇄'),
("⌉", '⌉'),
("⟧", '⟧'),
("⥝", '⥝'),
("⇂", '⇂'),
("⥕", '⥕'),
("⌋", '⌋'),
("⊢", '⊢'),
("↦", '↦'),
("⥛", '⥛'),
("⊳", '⊳'),
("⧐", '⧐'),
("⊵", '⊵'),
("⥏", '⥏'),
("⥜", '⥜'),
("↾", '↾'),
("⥔", '⥔'),
("⇀", '⇀'),
("⥓", '⥓'),
("⇒", '⇒'),
("ℝ", 'ℝ'),
("⥰", '⥰'),
("⇛", '⇛'),
("ℛ", 'ℛ'),
("↱", '↱'),
("⧴", '⧴'),
("Щ", 'Щ'),
("Ш", 'Ш'),
("Ь", 'Ь'),
("Ś", 'Ś'),
("⪼", '⪼'),
("Š", 'Š'),
("Ş", 'Ş'),
("Ŝ", 'Ŝ'),
("С", 'С'),
("𝔖", '𝔖'),
("↓", '↓'),
("←", '←'),
("→", '→'),
("↑", '↑'),
("Σ", 'Σ'),
("∘", '∘'),
("𝕊", '𝕊'),
("√", '√'),
("□", '□'),
("⊓", '⊓'),
("⊏", '⊏'),
("⊑", '⊑'),
("⊐", '⊐'),
("⊒", '⊒'),
("⊔", '⊔'),
("𝒮", '𝒮'),
("⋆", '⋆'),
("⋐", '⋐'),
("⋐", '⋐'),
("⊆", '⊆'),
("≻", '≻'),
("⪰", '⪰'),
("≽", '≽'),
("≿", '≿'),
("∋", '∋'),
("∑", '∑'),
("⋑", '⋑'),
("⊃", '⊃'),
("⊇", '⊇'),
("⋑", '⋑'),
("Þ", 'Þ'),
("™", '™'),
("Ћ", 'Ћ'),
("Ц", 'Ц'),
("	", '\u{9}'),
("Τ", 'Τ'),
("Ť", 'Ť'),
("Ţ", 'Ţ'),
("Т", 'Т'),
("𝔗", '𝔗'),
("∴", '∴'),
("Θ", 'Θ'),
(" ", '\u{8201}'),
("∼", '∼'),
("≃", '≃'),
("≅", '≅'),
("≈", '≈'),
("𝕋", '𝕋'),
("⃛", '⃛'),
("𝒯", '𝒯'),
("Ŧ", 'Ŧ'),
("Ú", 'Ú'),
("↟", '↟'),
("⥉", '⥉'),
("Ў", 'Ў'),
("Ŭ", 'Ŭ'),
("Û", 'Û'),
("У", 'У'),
("Ű", 'Ű'),
("𝔘", '𝔘'),
("Ù", 'Ù'),
("Ū", 'Ū'),
("_", '̲'),
("⏟", '⏟'),
("⎵", '⎵'),
("⏝", '⏝'),
("⋃", '⋃'),
("⊎", '⊎'),
("Ų", 'Ų'),
("𝕌", '𝕌'),
("↑", '↑'),
("⤒", '⤒'),
("⇅", '⇅'),
("↕", '↕'),
("⥮", '⥮'),
("⊥", '⊥'),
("↥", '↥'),
("⇑", '⇑'),
("⇕", '⇕'),
("↖", '↖'),
("↗", '↗'),
("ϒ", 'ϒ'),
("Υ", 'Υ'),
("Ů", 'Ů'),
("𝒰", '𝒰'),
("Ũ", 'Ũ'),
("Ü", 'Ü'),
("⊫", '⊫'),
("⫫", '⫫'),
("В", 'В'),
("⊩", '⊩'),
("⫦", '⫦'),
("⋁", '⋁'),
("‖", '‖'),
("‖", '‖'),
("∣", '∣'),
("|", '|'),
("❘", '❘'),
("≀", '≀'),
(" ", '\u{8202}'),
("𝔙", '𝔙'),
("𝕍", '𝕍'),
("𝒱", '𝒱'),
("⊪", '⊪'),
("Ŵ", 'Ŵ'),
("⋀", '⋀'),
("𝔚", '𝔚'),
("𝕎", '𝕎'),
("𝒲", '𝒲'),
("𝔛", '𝔛'),
("Ξ", 'Ξ'),
("𝕏", '𝕏'),
("𝒳", '𝒳'),
("Я", 'Я'),
("Ї", 'Ї'),
("Ю", 'Ю'),
("Ý", 'Ý'),
("Ŷ", 'Ŷ'),
("Ы", 'Ы'),
("𝔜", '𝔜'),
("𝕐", '𝕐'),
("𝒴", '𝒴'),
("Ÿ", 'Ÿ'),
("Ж", 'Ж'),
("Ź", 'Ź'),
("Ž", 'Ž'),
("З", 'З'),
("Ż", 'Ż'),
("​", ''),
("Ζ", 'Ζ'),
("ℨ", 'ℨ'),
("ℤ", 'ℤ'),
("𝒵", '𝒵'),
("á", 'á'),
("ă", 'ă'),
("∾", '∾'),
("∿", '∿'),
("â", 'â'),
("´", '´'),
("а", 'а'),
("æ", 'æ'),
("⁡", ''),
("𝔞", '𝔞'),
("à", 'à'),
("ℵ", 'ℵ'),
("ℵ", 'ℵ'),
("α", 'α'),
("ā", 'ā'),
("⨿", '⨿'),
("&", '&'),
("∧", '∧'),
("⩕", '⩕'),
("⩜", '⩜'),
("⩘", '⩘'),
("⩚", '⩚'),
("∠", '∠'),
("⦤", '⦤'),
("∠", '∠'),
("∡", '∡'),
("⦨", '⦨'),
("⦩", '⦩'),
("⦪", '⦪'),
("⦫", '⦫'),
("⦬", '⦬'),
("⦭", '⦭'),
("⦮", '⦮'),
("⦯", '⦯'),
("∟", '∟'),
("⊾", '⊾'),
("⦝", '⦝'),
("∢", '∢'),
("Å", 'Å'),
("⍼", '⍼'),
("ą", 'ą'),
("𝕒", '𝕒'),
("≈", '≈'),
("⩰", '⩰'),
("⩯", '⩯'),
("≊", '≊'),
("≋", '≋'),
("'", '\''),
("≈", '≈'),
("≊", '≊'),
("å", 'å'),
("𝒶", '𝒶'),
("*", '*'),
("≈", '≈'),
("≍", '≍'),
("ã", 'ã'),
("ä", 'ä'),
("∳", '∳'),
("⨑", '⨑'),
("⫭", '⫭'),
("≌", '≌'),
("϶", '϶'),
("‵", '‵'),
("∽", '∽'),
("⋍", '⋍'),
("⊽", '⊽'),
("⌅", '⌅'),
("⌅", '⌅'),
("⎵", '⎵'),
("⎶", '⎶'),
("≌", '≌'),
("б", 'б'),
("„", '„'),
("∵", '∵'),
("∵", '∵'),
("⦰", '⦰'),
("϶", '϶'),
("ℬ", 'ℬ'),
("β", 'β'),
("ℶ", 'ℶ'),
("≬", '≬'),
("𝔟", '𝔟'),
("⋂", '⋂'),
("◯", '◯'),
("⋃", '⋃'),
("⨀", '⨀'),
("⨁", '⨁'),
("⨂", '⨂'),
("⨆", '⨆'),
("★", '★'),
("▽", '▽'),
("△", '△'),
("⨄", '⨄'),
("⋁", '⋁'),
("⋀", '⋀'),
("⤍", '⤍'),
("⧫", '⧫'),
("▪", '▪'),
("▴", '▴'),
("▾", '▾'),
("◂", '◂'),
("▸", '▸'),
("␣", '␣'),
("▒", '▒'),
("░", '░'),
("▓", '▓'),
("█", '█'),
("⌐", '⌐'),
("𝕓", '𝕓'),
("⊥", '⊥'),
("⊥", '⊥'),
("⋈", '⋈'),
("╗", '╗'),
("╔", '╔'),
("╖", '╖'),
("╓", '╓'),
("═", '═'),
("╦", '╦'),
("╩", '╩'),
("╤", '╤'),
("╧", '╧'),
("╝", '╝'),
("╚", '╚'),
("╜", '╜'),
("╙", '╙'),
("║", '║'),
("╬", '╬'),
("╣", '╣'),
("╠", '╠'),
("╫", '╫'),
("╢", '╢'),
("╟", '╟'),
("⧉", '⧉'),
("╕", '╕'),
("╒", '╒'),
("┐", '┐'),
("┌", '┌'),
("─", '─'),
("╥", '╥'),
("╨", '╨'),
("┬", '┬'),
("┴", '┴'),
("⊟", '⊟'),
("⊞", '⊞'),
("⊠", '⊠'),
("╛", '╛'),
("╘", '╘'),
("┘", '┘'),
("└", '└'),
("│", '│'),
("╪", '╪'),
("╡", '╡'),
("╞", '╞'),
("┼", '┼'),
("┤", '┤'),
("├", '├'),
("‵", '‵'),
("˘", '˘'),
("¦", '¦'),
("𝒷", '𝒷'),
("⁏", '⁏'),
("∽", '∽'),
("⋍", '⋍'),
("\", '\\'),
("⧅", '⧅'),
("•", '•'),
("•", '•'),
("≎", '≎'),
("⪮", '⪮'),
("≏", '≏'),
("≏", '≏'),
("ć", 'ć'),
("∩", '∩'),
("⩄", '⩄'),
("⩉", '⩉'),
("⩋", '⩋'),
("⩇", '⩇'),
("⩀", '⩀'),
("⁁", '⁁'),
("ˇ", 'ˇ'),
("⩍", '⩍'),
("č", 'č'),
("ç", 'ç'),
("ĉ", 'ĉ'),
("⩌", '⩌'),
("⩐", '⩐'),
("ċ", 'ċ'),
("¸", '¸'),
("⦲", '⦲'),
("¢", '¢'),
("·", '·'),
("𝔠", '𝔠'),
("ч", 'ч'),
("✓", '✓'),
("✓", '✓'),
("χ", 'χ'),
("○", '○'),
("⧃", '⧃'),
("ˆ", 'ˆ'),
("≗", '≗'),
("↺", '↺'),
("↻", '↻'),
("®", '®'),
("Ⓢ", 'Ⓢ'),
("⊛", '⊛'),
("⊚", '⊚'),
("⊝", '⊝'),
("≗", '≗'),
("⨐", '⨐'),
("⫯", '⫯'),
("⧂", '⧂'),
("♣", '♣'),
("♣", '♣'),
(":", ':'),
("≔", '≔'),
("≔", '≔'),
(",", ','),
("@", '@'),
("∁", '∁'),
("∘", '∘'),
("∁", '∁'),
("ℂ", 'ℂ'),
("≅", '≅'),
("⩭", '⩭'),
("∮", '∮'),
("𝕔", '𝕔'),
("∐", '∐'),
("©", '©'),
("℗", '℗'),
("↵", '↵'),
("✗", '✗'),
("𝒸", '𝒸'),
("⫏", '⫏'),
("⫑", '⫑'),
("⫐", '⫐'),
("⫒", '⫒'),
("⋯", '⋯'),
("⤸", '⤸'),
("⤵", '⤵'),
("⋞", '⋞'),
("⋟", '⋟'),
("↶", '↶'),
("⤽", '⤽'),
("∪", '∪'),
("⩈", '⩈'),
("⩆", '⩆'),
("⩊", '⩊'),
("⊍", '⊍'),
("⩅", '⩅'),
("↷", '↷'),
("⤼", '⤼'),
("⋞", '⋞'),
("⋟", '⋟'),
("⋎", '⋎'),
("⋏", '⋏'),
("¤", '¤'),
("↶", '↶'),
("↷", '↷'),
("⋎", '⋎'),
("⋏", '⋏'),
("∲", '∲'),
("∱", '∱'),
("⌭", '⌭'),
("⇓", '⇓'),
("⥥", '⥥'),
("†", '†'),
("ℸ", 'ℸ'),
("↓", '↓'),
("‐", '‐'),
("⊣", '⊣'),
("⤏", '⤏'),
("˝", '˝'),
("ď", 'ď'),
("д", 'д'),
("ⅆ", 'ⅆ'),
("‡", '‡'),
("⇊", '⇊'),
("⩷", '⩷'),
("°", '°'),
("δ", 'δ'),
("⦱", '⦱'),
("⥿", '⥿'),
("𝔡", '𝔡'),
("⇃", '⇃'),
("⇂", '⇂'),
("⋄", '⋄'),
("⋄", '⋄'),
("♦", '♦'),
("♦", '♦'),
("¨", '¨'),
("ϝ", 'ϝ'),
("⋲", '⋲'),
("÷", '÷'),
("÷", '÷'),
("⋇", '⋇'),
("⋇", '⋇'),
("ђ", 'ђ'),
("⌞", '⌞'),
("⌍", '⌍'),
("$", '$'),
("𝕕", '𝕕'),
("˙", '˙'),
("≐", '≐'),
("≑", '≑'),
("∸", '∸'),
("∔", '∔'),
("⊡", '⊡'),
("⌆", '⌆'),
("↓", '↓'),
("⇊", '⇊'),
("⇃", '⇃'),
("⇂", '⇂'),
("⤐", '⤐'),
("⌟", '⌟'),
("⌌", '⌌'),
("𝒹", '𝒹'),
("ѕ", 'ѕ'),
("⧶", '⧶'),
("đ", 'đ'),
("⋱", '⋱'),
("▿", '▿'),
("▾", '▾'),
("⇵", '⇵'),
("⥯", '⥯'),
("⦦", '⦦'),
("џ", 'џ'),
("⟿", '⟿'),
("⩷", '⩷'),
("≑", '≑'),
("é", 'é'),
("⩮", '⩮'),
("ě", 'ě'),
("≖", '≖'),
("ê", 'ê'),
("≕", '≕'),
("э", 'э'),
("ė", 'ė'),
("ⅇ", 'ⅇ'),
("≒", '≒'),
("𝔢", '𝔢'),
("⪚", '⪚'),
("è", 'è'),
("⪖", '⪖'),
("⪘", '⪘'),
("⪙", '⪙'),
("⏧", '⏧'),
("ℓ", 'ℓ'),
("⪕", '⪕'),
("⪗", '⪗'),
("ē", 'ē'),
("∅", '∅'),
("∅", '∅'),
("∅", '∅'),
(" ", '\u{8196}'),
(" ", '\u{8197}'),
(" ", '\u{8195}'),
("ŋ", 'ŋ'),
(" ", '\u{8194}'),
("ę", 'ę'),
("𝕖", '𝕖'),
("⋕", '⋕'),
("⧣", '⧣'),
("⩱", '⩱'),
("ε", 'ϵ'),
("ε", 'ε'),
("ϵ", 'ε'),
("≖", '≖'),
("≕", '≕'),
("≂", '≂'),
("⪖", '⪖'),
("⪕", '⪕'),
("=", '='),
("≟", '≟'),
("≡", '≡'),
("⩸", '⩸'),
("⧥", '⧥'),
("≓", '≓'),
("⥱", '⥱'),
("ℯ", 'ℯ'),
("≐", '≐'),
("≂", '≂'),
("η", 'η'),
("ð", 'ð'),
("ë", 'ë'),
("€", '€'),
("!", '!'),
("∃", '∃'),
("ℰ", 'ℰ'),
("ⅇ", 'ⅇ'),
("≒", '≒'),
("ф", 'ф'),
("♀", '♀'),
("ffi", 'ffi'),
("ff", 'ff'),
("ffl", 'ffl'),
("𝔣", '𝔣'),
("fi", 'fi'),
("♭", '♭'),
("fl", 'fl'),
("▱", '▱'),
("ƒ", 'ƒ'),
("𝕗", '𝕗'),
("∀", '∀'),
("⋔", '⋔'),
("⫙", '⫙'),
("⨍", '⨍'),
("½", '½'),
("⅓", '⅓'),
("¼", '¼'),
("⅕", '⅕'),
("⅙", '⅙'),
("⅛", '⅛'),
("⅔", '⅔'),
("⅖", '⅖'),
("¾", '¾'),
("⅗", '⅗'),
("⅜", '⅜'),
("⅘", '⅘'),
("⅚", '⅚'),
("⅝", '⅝'),
("⅞", '⅞'),
("⁄", '⁄'),
("⌢", '⌢'),
("𝒻", '𝒻'),
("≧", '≧'),
("⪌", '⪌'),
("ǵ", 'ǵ'),
("γ", 'γ'),
("ϝ", 'ϝ'),
("⪆", '⪆'),
("ğ", 'ğ'),
("ĝ", 'ĝ'),
("г", 'г'),
("ġ", 'ġ'),
("≥", '≥'),
("⋛", '⋛'),
("≥", '≥'),
("≧", '≧'),
("⩾", '⩾'),
("⩾", '⩾'),
("⪩", '⪩'),
("⪀", '⪀'),
("⪂", '⪂'),
("⪄", '⪄'),
("⪔", '⪔'),
("𝔤", '𝔤'),
("≫", '≫'),
("⋙", '⋙'),
("ℷ", 'ℷ'),
("ѓ", 'ѓ'),
("≷", '≷'),
("⪒", '⪒'),
("⪥", '⪥'),
("⪤", '⪤'),
("≩", '≩'),
("⪊", '⪊'),
("⪊", '⪊'),
("⪈", '⪈'),
("⪈", '⪈'),
("≩", '≩'),
("⋧", '⋧'),
("𝕘", '𝕘'),
("`", '`'),
("ℊ", 'ℊ'),
("≳", '≳'),
("⪎", '⪎'),
("⪐", '⪐'),
(">", '>'),
("⪧", '⪧'),
("⩺", '⩺'),
("⋗", '⋗'),
("⦕", '⦕'),
("⩼", '⩼'),
("⪆", '⪆'),
("⥸", '⥸'),
("⋗", '⋗'),
("⋛", '⋛'),
("⪌", '⪌'),
("≷", '≷'),
("≳", '≳'),
("⇔", '⇔'),
(" ", '\u{8202}'),
("½", '½'),
("ℋ", 'ℋ'),
("ъ", 'ъ'),
("↔", '↔'),
("⥈", '⥈'),
("↭", '↭'),
("ℏ", 'ℏ'),
("ĥ", 'ĥ'),
("♥", '♥'),
("♥", '♥'),
("…", '…'),
("⊹", '⊹'),
("𝔥", '𝔥'),
("⤥", '⤥'),
("⤦", '⤦'),
("⇿", '⇿'),
("∻", '∻'),
("↩", '↩'),
("↪", '↪'),
("𝕙", '𝕙'),
("―", '―'),
("𝒽", '𝒽'),
("ℏ", 'ℏ'),
("ħ", 'ħ'),
("⁃", '⁃'),
("‐", '‐'),
("í", 'í'),
("⁣", ''),
("î", 'î'),
("и", 'и'),
("е", 'е'),
("¡", '¡'),
("⇔", '⇔'),
("𝔦", '𝔦'),
("ì", 'ì'),
("ⅈ", 'ⅈ'),
("⨌", '⨌'),
("∭", '∭'),
("⧜", '⧜'),
("℩", '℩'),
("ij", 'ij'),
("ī", 'ī'),
("ℑ", 'ℑ'),
("ℐ", 'ℐ'),
("ℑ", 'ℑ'),
("ı", 'ı'),
("⊷", '⊷'),
("Ƶ", 'Ƶ'),
("∈", '∈'),
("℅", '℅'),
("∞", '∞'),
("⧝", '⧝'),
("ı", 'ı'),
("∫", '∫'),
("⊺", '⊺'),
("ℤ", 'ℤ'),
("⊺", '⊺'),
("⨗", '⨗'),
("⨼", '⨼'),
("ё", 'ё'),
("į", 'į'),
("𝕚", '𝕚'),
("ι", 'ι'),
("⨼", '⨼'),
("¿", '¿'),
("𝒾", '𝒾'),
("∈", '∈'),
("⋹", '⋹'),
("⋵", '⋵'),
("⋴", '⋴'),
("⋳", '⋳'),
("∈", '∈'),
("⁢", ''),
("ĩ", 'ĩ'),
("і", 'і'),
("ï", 'ï'),
("ĵ", 'ĵ'),
("й", 'й'),
("𝔧", '𝔧'),
("ȷ", 'ȷ'),
("𝕛", '𝕛'),
("𝒿", '𝒿'),
("ј", 'ј'),
("є", 'є'),
("κ", 'κ'),
("ϰ", 'ϰ'),
("ķ", 'ķ'),
("к", 'к'),
("𝔨", '𝔨'),
("ĸ", 'ĸ'),
("х", 'х'),
("ќ", 'ќ'),
("𝕜", '𝕜'),
("𝓀", '𝓀'),
("⇚", '⇚'),
("⇐", '⇐'),
("⤛", '⤛'),
("⤎", '⤎'),
("≦", '≦'),
("⪋", '⪋'),
("⥢", '⥢'),
("ĺ", 'ĺ'),
("⦴", '⦴'),
("ℒ", 'ℒ'),
("λ", 'λ'),
("⟨", '⟨'),
("⦑", '⦑'),
("⟨", '⟨'),
("⪅", '⪅'),
("«", '«'),
("←", '←'),
("⇤", '⇤'),
("⤟", '⤟'),
("⤝", '⤝'),
("↩", '↩'),
("↫", '↫'),
("⤹", '⤹'),
("⥳", '⥳'),
("↢", '↢'),
("⪫", '⪫'),
("⤙", '⤙'),
("⪭", '⪭'),
("⤌", '⤌'),
("❲", '❲'),
("{", '{'),
("[", '['),
("⦋", '⦋'),
("⦏", '⦏'),
("⦍", '⦍'),
("ľ", 'ľ'),
("ļ", 'ļ'),
("⌈", '⌈'),
("{", '{'),
("л", 'л'),
("⤶", '⤶'),
("“", '“'),
("„", '„'),
("⥧", '⥧'),
("⥋", '⥋'),
("↲", '↲'),
("≤", '≤'),
("←", '←'),
("↢", '↢'),
("↽", '↽'),
("↼", '↼'),
("⇇", '⇇'),
("↔", '↔'),
("⇆", '⇆'),
("⇋", '⇋'),
("↭", '↭'),
("⋋", '⋋'),
("⋚", '⋚'),
("≤", '≤'),
("≦", '≦'),
("⩽", '⩽'),
("⩽", '⩽'),
("⪨", '⪨'),
("⩿", '⩿'),
("⪁", '⪁'),
("⪃", '⪃'),
("⪓", '⪓'),
("⪅", '⪅'),
("⋖", '⋖'),
("⋚", '⋚'),
("⪋", '⪋'),
("≶", '≶'),
("≲", '≲'),
("⥼", '⥼'),
("⌊", '⌊'),
("𝔩", '𝔩'),
("≶", '≶'),
("⪑", '⪑'),
("↽", '↽'),
("↼", '↼'),
("⥪", '⥪'),
("▄", '▄'),
("љ", 'љ'),
("≪", '≪'),
("⇇", '⇇'),
("⌞", '⌞'),
("⥫", '⥫'),
("◺", '◺'),
("ŀ", 'ŀ'),
("⎰", '⎰'),
("⎰", '⎰'),
("≨", '≨'),
("⪉", '⪉'),
("⪉", '⪉'),
("⪇", '⪇'),
("⪇", '⪇'),
("≨", '≨'),
("⋦", '⋦'),
("⟬", '⟬'),
("⇽", '⇽'),
("⟦", '⟦'),
("⟵", '⟵'),
("⟷", '⟷'),
("⟼", '⟼'),
("⟶", '⟶'),
("↫", '↫'),
("↬", '↬'),
("⦅", '⦅'),
("𝕝", '𝕝'),
("⨭", '⨭'),
("⨴", '⨴'),
("∗", '∗'),
("_", '_'),
("◊", '◊'),
("◊", '◊'),
("⧫", '⧫'),
("(", '('),
("⦓", '⦓'),
("⇆", '⇆'),
("⌟", '⌟'),
("⇋", '⇋'),
("⥭", '⥭'),
("‎", ''),
("⊿", '⊿'),
("‹", '‹'),
("𝓁", '𝓁'),
("↰", '↰'),
("≲", '≲'),
("⪍", '⪍'),
("⪏", '⪏'),
("[", '['),
("‘", '‘'),
("‚", '‚'),
("ł", 'ł'),
("<", '<'),
("⪦", '⪦'),
("⩹", '⩹'),
("⋖", '⋖'),
("⋋", '⋋'),
("⋉", '⋉'),
("⥶", '⥶'),
("⩻", '⩻'),
("⦖", '⦖'),
("◃", '◃'),
("⊴", '⊴'),
("◂", '◂'),
("⥊", '⥊'),
("⥦", '⥦'),
("∺", '∺'),
("¯", '¯'),
("♂", '♂'),
("✠", '✠'),
("✠", '✠'),
("↦", '↦'),
("↦", '↦'),
("↧", '↧'),
("↤", '↤'),
("↥", '↥'),
("▮", '▮'),
("⨩", '⨩'),
("м", 'м'),
("—", '—'),
("∡", '∡'),
("𝔪", '𝔪'),
("℧", '℧'),
("µ", 'µ'),
("∣", '∣'),
("*", '*'),
("⫰", '⫰'),
("·", '·'),
("−", '−'),
("⊟", '⊟'),
("∸", '∸'),
("⨪", '⨪'),
("⫛", '⫛'),
("…", '…'),
("∓", '∓'),
("⊧", '⊧'),
("𝕞", '𝕞'),
("∓", '∓'),
("𝓂", '𝓂'),
("∾", '∾'),
("μ", 'μ'),
("⊸", '⊸'),
("⊸", '⊸'),
("⇍", '⇍'),
("⇎", '⇎'),
("⇏", '⇏'),
("⊯", '⊯'),
("⊮", '⊮'),
("∇", '∇'),
("ń", 'ń'),
("≉", '≉'),
("ʼn", 'ʼn'),
("≉", '≉'),
("♮", '♮'),
("♮", '♮'),
("ℕ", 'ℕ'),
(" ", '\u{160}'),
("⩃", '⩃'),
("ň", 'ň'),
("ņ", 'ņ'),
("≇", '≇'),
("⩂", '⩂'),
("н", 'н'),
("–", '–'),
("≠", '≠'),
("⇗", '⇗'),
("⤤", '⤤'),
("↗", '↗'),
("↗", '↗'),
("≢", '≢'),
("⤨", '⤨'),
("∄", '∄'),
("∄", '∄'),
("𝔫", '𝔫'),
("≱", '≱'),
("≱", '≱'),
("≵", '≵'),
("≯", '≯'),
("≯", '≯'),
("⇎", '⇎'),
("↮", '↮'),
("⫲", '⫲'),
("∋", '∋'),
("⋼", '⋼'),
("⋺", '⋺'),
("∋", '∋'),
("њ", 'њ'),
("⇍", '⇍'),
("↚", '↚'),
("‥", '‥'),
("≰", '≰'),
("↚", '↚'),
("↮", '↮'),
("≰", '≰'),
("≮", '≮'),
("≴", '≴'),
("≮", '≮'),
("⋪", '⋪'),
("⋬", '⋬'),
("∤", '∤'),
("𝕟", '𝕟'),
("¬", '¬'),
("∉", '∉'),
("∉", '∉'),
("⋷", '⋷'),
("⋶", '⋶'),
("∌", '∌'),
("∌", '∌'),
("⋾", '⋾'),
("⋽", '⋽'),
("∦", '∦'),
("∦", '∦'),
("⨔", '⨔'),
("⊀", '⊀'),
("⋠", '⋠'),
("⊀", '⊀'),
("⇏", '⇏'),
("↛", '↛'),
("↛", '↛'),
("⋫", '⋫'),
("⋭", '⋭'),
("⊁", '⊁'),
("⋡", '⋡'),
("𝓃", '𝓃'),
("∤", '∤'),
("∦", '∦'),
("≁", '≁'),
("≄", '≄'),
("≄", '≄'),
("∤", '∤'),
("∦", '∦'),
("⋢", '⋢'),
("⋣", '⋣'),
("⊄", '⊄'),
("⊈", '⊈'),
("⊈", '⊈'),
("⊁", '⊁'),
("⊅", '⊅'),
("⊉", '⊉'),
("⊉", '⊉'),
("≹", '≹'),
("ñ", 'ñ'),
("≸", '≸'),
("⋪", '⋪'),
("⋬", '⋬'),
("⋫", '⋫'),
("⋭", '⋭'),
("ν", 'ν'),
("#", '#'),
("№", '№'),
(" ", '\u{8199}'),
("⊭", '⊭'),
("⤄", '⤄'),
("⊬", '⊬'),
("⧞", '⧞'),
("⤂", '⤂'),
("⤃", '⤃'),
("⇖", '⇖'),
("⤣", '⤣'),
("↖", '↖'),
("↖", '↖'),
("⤧", '⤧'),
("Ⓢ", 'Ⓢ'),
("ó", 'ó'),
("⊛", '⊛'),
("⊚", '⊚'),
("ô", 'ô'),
("о", 'о'),
("⊝", '⊝'),
("ő", 'ő'),
("⨸", '⨸'),
("⊙", '⊙'),
("⦼", '⦼'),
("œ", 'œ'),
("⦿", '⦿'),
("𝔬", '𝔬'),
("˛", '˛'),
("ò", 'ò'),
("⧁", '⧁'),
("⦵", '⦵'),
("Ω", 'Ω'),
("∮", '∮'),
("↺", '↺'),
("⦾", '⦾'),
("⦻", '⦻'),
("‾", '‾'),
("⧀", '⧀'),
("ō", 'ō'),
("ω", 'ω'),
("ο", 'ο'),
("⦶", '⦶'),
("⊖", '⊖'),
("𝕠", '𝕠'),
("⦷", '⦷'),
("⦹", '⦹'),
("⊕", '⊕'),
("∨", '∨'),
("↻", '↻'),
("⩝", '⩝'),
("ℴ", 'ℴ'),
("ℴ", 'ℴ'),
("ª", 'ª'),
("º", 'º'),
("⊶", '⊶'),
("⩖", '⩖'),
("⩗", '⩗'),
("⩛", '⩛'),
("ℴ", 'ℴ'),
("ø", 'ø'),
("⊘", '⊘'),
("õ", 'õ'),
("⊗", '⊗'),
("⨶", '⨶'),
("ö", 'ö'),
("⌽", '⌽'),
("∥", '∥'),
("¶", '¶'),
("∥", '∥'),
("⫳", '⫳'),
("⫽", '⫽'),
("∂", '∂'),
("п", 'п'),
("%", '%'),
(".", '.'),
("‰", '‰'),
("⊥", '⊥'),
("‱", '‱'),
("𝔭", '𝔭'),
("φ", 'φ'),
("ϕ", 'φ'),
("ℳ", 'ℳ'),
("☎", '☎'),
("π", 'π'),
("⋔", '⋔'),
("ϖ", 'ϖ'),
("ℏ", 'ℏ'),
("ℎ", 'ℎ'),
("ℏ", 'ℏ'),
("+", '+'),
("⨣", '⨣'),
("⊞", '⊞'),
("⨢", '⨢'),
("∔", '∔'),
("⨥", '⨥'),
("⩲", '⩲'),
("±", '±'),
("⨦", '⨦'),
("⨧", '⨧'),
("±", '±'),
("⨕", '⨕'),
("𝕡", '𝕡'),
("£", '£'),
("≺", '≺'),
("⪳", '⪳'),
("⪷", '⪷'),
("≼", '≼'),
("⪯", '⪯'),
("≺", '≺'),
("⪷", '⪷'),
("≼", '≼'),
("⪯", '⪯'),
("⪹", '⪹'),
("⪵", '⪵'),
("⋨", '⋨'),
("≾", '≾'),
("′", '′'),
("ℙ", 'ℙ'),
("⪵", '⪵'),
("⪹", '⪹'),
("⋨", '⋨'),
("∏", '∏'),
("⌮", '⌮'),
("⌒", '⌒'),
("⌓", '⌓'),
("∝", '∝'),
("∝", '∝'),
("≾", '≾'),
("⊰", '⊰'),
("𝓅", '𝓅'),
("ψ", 'ψ'),
(" ", '\u{8200}'),
("𝔮", '𝔮'),
("⨌", '⨌'),
("𝕢", '𝕢'),
("⁗", '⁗'),
("𝓆", '𝓆'),
("ℍ", 'ℍ'),
("⨖", '⨖'),
("?", '?'),
("≟", '≟'),
(""", '"'),
("⇛", '⇛'),
("⇒", '⇒'),
("⤜", '⤜'),
("⤏", '⤏'),
("⥤", '⥤'),
("∽̱", '⧚'),
("ŕ", 'ŕ'),
("√", '√'),
("⦳", '⦳'),
("⟩", '⟩'),
("⦒", '⦒'),
("⦥", '⦥'),
("⟩", '⟩'),
("»", '»'),
("→", '→'),
("⥵", '⥵'),
("⇥", '⇥'),
("⤠", '⤠'),
("⤳", '⤳'),
("⤞", '⤞'),
("↪", '↪'),
("↬", '↬'),
("⥅", '⥅'),
("⥴", '⥴'),
("↣", '↣'),
("↝", '↝'),
("⤚", '⤚'),
("∶", '∶'),
("ℚ", 'ℚ'),
("⤍", '⤍'),
("❳", '❳'),
("}", '}'),
("]", ']'),
("⦌", '⦌'),
("⦎", '⦎'),
("⦐", '⦐'),
("ř", 'ř'),
("ŗ", 'ŗ'),
("⌉", '⌉'),
("}", '}'),
("р", 'р'),
("⤷", '⤷'),
("⥩", '⥩'),
("”", '”'),
("”", '”'),
("↳", '↳'),
("ℜ", 'ℜ'),
("ℛ", 'ℛ'),
("ℜ", 'ℜ'),
("ℝ", 'ℝ'),
("▭", '▭'),
("®", '®'),
("⥽", '⥽'),
("⌋", '⌋'),
("𝔯", '𝔯'),
("⇁", '⇁'),
("⇀", '⇀'),
("⥬", '⥬'),
("ρ", 'ρ'),
("ϱ", 'ϱ'),
("→", '→'),
("↣", '↣'),
("⇁", '⇁'),
("⇀", '⇀'),
("⇄", '⇄'),
("⇌", '⇌'),
("⇉", '⇉'),
("↝", '↝'),
("⋌", '⋌'),
("˚", '˚'),
("≓", '≓'),
("⇄", '⇄'),
("⇌", '⇌'),
("‏", ''),
("⎱", '⎱'),
("⎱", '⎱'),
("⫮", '⫮'),
("⟭", '⟭'),
("⇾", '⇾'),
("⟧", '⟧'),
("⦆", '⦆'),
("𝕣", '𝕣'),
("⨮", '⨮'),
("⨵", '⨵'),
(")", ')'),
("⦔", '⦔'),
("⨒", '⨒'),
("⇉", '⇉'),
("›", '›'),
("𝓇", '𝓇'),
("↱", '↱'),
("]", ']'),
("’", '’'),
("’", '’'),
("⋌", '⋌'),
("⋊", '⋊'),
("▹", '▹'),
("⊵", '⊵'),
("▸", '▸'),
("⧎", '⧎'),
("⥨", '⥨'),
("℞", '℞'),
("ś", 'ś'),
("‚", '‚'),
("≻", '≻'),
("⪴", '⪴'),
("⪸", '⪸'),
("š", 'š'),
("≽", '≽'),
("⪰", '⪰'),
("ş", 'ş'),
("ŝ", 'ŝ'),
("⪶", '⪶'),
("⪺", '⪺'),
("⋩", '⋩'),
("⨓", '⨓'),
("≿", '≿'),
("с", 'с'),
("⋅", '⋅'),
("⊡", '⊡'),
("⩦", '⩦'),
("⇘", '⇘'),
("⤥", '⤥'),
("↘", '↘'),
("↘", '↘'),
("§", '§'),
(";", ';'),
("⤩", '⤩'),
("∖", '∖'),
("∖", '∖'),
("✶", '✶'),
("𝔰", '𝔰'),
("⌢", '⌢'),
("♯", '♯'),
("щ", 'щ'),
("ш", 'ш'),
("∣", '∣'),
("∥", '∥'),
("­", ''),
("σ", 'σ'),
("ς", 'ς'),
("ς", 'ς'),
("∼", '∼'),
("⩪", '⩪'),
("≃", '≃'),
("≃", '≃'),
("⪞", '⪞'),
("⪠", '⪠'),
("⪝", '⪝'),
("⪟", '⪟'),
("≆", '≆'),
("⨤", '⨤'),
("⥲", '⥲'),
("←", '←'),
("∖", '∖'),
("⨳", '⨳'),
("⧤", '⧤'),
("∣", '∣'),
("⌣", '⌣'),
("⪪", '⪪'),
("⪬", '⪬'),
("ь", 'ь'),
("/", '/'),
("⧄", '⧄'),
("⌿", '⌿'),
("𝕤", '𝕤'),
("♠", '♠'),
("♠", '♠'),
("∥", '∥'),
("⊓", '⊓'),
("⊔", '⊔'),
("⊏", '⊏'),
("⊑", '⊑'),
("⊏", '⊏'),
("⊑", '⊑'),
("⊐", '⊐'),
("⊒", '⊒'),
("⊐", '⊐'),
("⊒", '⊒'),
("□", '□'),
("□", '□'),
("▪", '▪'),
("▪", '▪'),
("→", '→'),
("𝓈", '𝓈'),
("∖", '∖'),
("⌣", '⌣'),
("⋆", '⋆'),
("☆", '☆'),
("★", '★'),
("ϵ", 'ϵ'),
("ϕ", 'ϕ'),
("¯", '¯'),
("⊂", '⊂'),
("⫅", '⫅'),
("⪽", '⪽'),
("⊆", '⊆'),
("⫃", '⫃'),
("⫁", '⫁'),
("⫋", '⫋'),
("⊊", '⊊'),
("⪿", '⪿'),
("⥹", '⥹'),
("⊂", '⊂'),
("⊆", '⊆'),
("⫅", '⫅'),
("⊊", '⊊'),
("⫋", '⫋'),
("⫇", '⫇'),
("⫕", '⫕'),
("⫓", '⫓'),
("≻", '≻'),
("⪸", '⪸'),
("≽", '≽'),
("⪰", '⪰'),
("⪺", '⪺'),
("⪶", '⪶'),
("⋩", '⋩'),
("≿", '≿'),
("∑", '∑'),
("♪", '♪'),
("¹", '¹'),
("²", '²'),
("³", '³'),
("⊃", '⊃'),
("⫆", '⫆'),
("⪾", '⪾'),
("⫘", '⫘'),
("⊇", '⊇'),
("⫄", '⫄'),
("⫗", '⫗'),
("⥻", '⥻'),
("⫂", '⫂'),
("⫌", '⫌'),
("⊋", '⊋'),
("⫀", '⫀'),
("⊃", '⊃'),
("⊇", '⊇'),
("⫆", '⫆'),
("⊋", '⊋'),
("⫌", '⫌'),
("⫈", '⫈'),
("⫔", '⫔'),
("⫖", '⫖'),
("⇙", '⇙'),
("⤦", '⤦'),
("↙", '↙'),
("↙", '↙'),
("⤪", '⤪'),
("ß", 'ß'),
("⌖", '⌖'),
("τ", 'τ'),
("⎴", '⎴'),
("ť", 'ť'),
("ţ", 'ţ'),
("т", 'т'),
("⃛", '⃛'),
("⌕", '⌕'),
("𝔱", '𝔱'),
("∴", '∴'),
("∴", '∴'),
("θ", 'θ'),
("ϑ", 'ϑ'),
("ϑ", 'ϑ'),
("≈", '≈'),
("∼", '∼'),
(" ", '\u{8201}'),
("≈", '≈'),
("∼", '∼'),
("þ", 'þ'),
("˜", '˜'),
("×", '×'),
("⊠", '⊠'),
("⨱", '⨱'),
("⨰", '⨰'),
("∭", '∭'),
("⤨", '⤨'),
("⊤", '⊤'),
("⌶", '⌶'),
("⫱", '⫱'),
("𝕥", '𝕥'),
("⫚", '⫚'),
("⤩", '⤩'),
("‴", '‴'),
("™", '™'),
("▵", '▵'),
("▿", '▿'),
("◃", '◃'),
("⊴", '⊴'),
("≜", '≜'),
("▹", '▹'),
("⊵", '⊵'),
("◬", '◬'),
("≜", '≜'),
("⨺", '⨺'),
("⨹", '⨹'),
("⧍", '⧍'),
("⨻", '⨻'),
("⏢", '⏢'),
("𝓉", '𝓉'),
("ц", 'ц'),
("ћ", 'ћ'),
("ŧ", 'ŧ'),
("≬", '≬'),
("↞", '↞'),
("↠", '↠'),
("⇑", '⇑'),
("⥣", '⥣'),
("ú", 'ú'),
("↑", '↑'),
("ў", 'ў'),
("ŭ", 'ŭ'),
("û", 'û'),
("у", 'у'),
("⇅", '⇅'),
("ű", 'ű'),
("⥮", '⥮'),
("⥾", '⥾'),
("𝔲", '𝔲'),
("ù", 'ù'),
("↿", '↿'),
("↾", '↾'),
("▀", '▀'),
("⌜", '⌜'),
("⌜", '⌜'),
("⌏", '⌏'),
("◸", '◸'),
("ū", 'ū'),
("¨", '¨'),
("ų", 'ų'),
("𝕦", '𝕦'),
("↑", '↑'),
("↕", '↕'),
("↿", '↿'),
("↾", '↾'),
("⊎", '⊎'),
("υ", 'υ'),
("ϒ", 'ϒ'),
("υ", 'υ'),
("⇈", '⇈'),
("⌝", '⌝'),
("⌝", '⌝'),
("⌎", '⌎'),
("ů", 'ů'),
("◹", '◹'),
("𝓊", '𝓊'),
("⋰", '⋰'),
("ũ", 'ũ'),
("▵", '▵'),
("▴", '▴'),
("⇈", '⇈'),
("ü", 'ü'),
("⦧", '⦧'),
("⇕", '⇕'),
("⫨", '⫨'),
("⫩", '⫩'),
("⊨", '⊨'),
("⦜", '⦜'),
("ϵ", 'ε'),
("ϰ", 'ϰ'),
("∅", '∅'),
("ϕ", 'φ'),
("ϖ", 'ϖ'),
("∝", '∝'),
("↕", '↕'),
("ϱ", 'ϱ'),
("ς", 'ς'),
("ϑ", 'ϑ'),
("⊲", '⊲'),
("⊳", '⊳'),
("в", 'в'),
("⊢", '⊢'),
("∨", '∨'),
("⊻", '⊻'),
("≚", '≚'),
("⋮", '⋮'),
("|", '|'),
("|", '|'),
("𝔳", '𝔳'),
("⊲", '⊲'),
("𝕧", '𝕧'),
("∝", '∝'),
("⊳", '⊳'),
("𝓋", '𝓋'),
("⦚", '⦚'),
("ŵ", 'ŵ'),
("⩟", '⩟'),
("∧", '∧'),
("≙", '≙'),
("℘", '℘'),
("𝔴", '𝔴'),
("𝕨", '𝕨'),
("℘", '℘'),
("≀", '≀'),
("≀", '≀'),
("𝓌", '𝓌'),
("⋂", '⋂'),
("◯", '◯'),
("⋃", '⋃'),
("▽", '▽'),
("𝔵", '𝔵'),
("⟺", '⟺'),
("⟷", '⟷'),
("ξ", 'ξ'),
("⟸", '⟸'),
("⟵", '⟵'),
("⟼", '⟼'),
("⋻", '⋻'),
("⨀", '⨀'),
("𝕩", '𝕩'),
("⨁", '⨁'),
("⨂", '⨂'),
("⟹", '⟹'),
("⟶", '⟶'),
("𝓍", '𝓍'),
("⨆", '⨆'),
("⨄", '⨄'),
("△", '△'),
("⋁", '⋁'),
("⋀", '⋀'),
("ý", 'ý'),
("я", 'я'),
("ŷ", 'ŷ'),
("ы", 'ы'),
("¥", '¥'),
("𝔶", '𝔶'),
("ї", 'ї'),
("𝕪", '𝕪'),
("𝓎", '𝓎'),
("ю", 'ю'),
("ÿ", 'ÿ'),
("ź", 'ź'),
("ž", 'ž'),
("з", 'з'),
("ż", 'ż'),
("ℨ", 'ℨ'),
("ζ", 'ζ'),
("𝔷", '𝔷'),
("ж", 'ж'),
("⇝", '⇝'),
("𝕫", '𝕫'),
("𝓏", '𝓏'),
("‍", ''),
("‌", '\u{8204}'),
];
pub trait HTMLEntity {
type EscapeOutput;
type UnEscapeOutput;
fn escape_html(self) -> Self::EscapeOutput;
fn unescape_html(self) -> Self::UnEscapeOutput;
}
impl HTMLEntity for &Vec<char> {
type EscapeOutput = Vec<char>;
type UnEscapeOutput = Vec<char>;
fn escape_html(self) -> Self::EscapeOutput {
let mut idx = 0usize;
let input = self;
let input_len = input.len();
let mut output: Vec<char> = Vec::with_capacity(input_len);
loop {
if idx == input_len {
break;
}
let c = input[idx];
match c {
'&' => {
output.extend_from_slice(&['&', 'A', 'M', 'P', ';']);
},
'>' => {
output.extend_from_slice(&['&', 'G', 'T', ';']);
},
'<' => {
output.extend_from_slice(&['&', 'L', 'T', ';']);
},
'"' => {
output.extend_from_slice(&['&', 'Q', 'U', 'O', 'T', ';']);
},
'\\' => {
output.extend_from_slice(&['&', 'b', 's', 'o', 'l', ';']);
},
_ => {
output.push(c);
}
}
idx += 1;
}
output
}
fn unescape_html(self) -> Self::UnEscapeOutput {
let mut idx = 0usize;
let input = self;
let input_len = input.len();
let mut output: Vec<char> = Vec::with_capacity(input_len);
loop {
if idx == input_len {
break;
}
let c = input[idx];
match c {
'&' => {
let mut idx2 = idx + 1;
match input.get(idx2) {
Some('#') => {
idx2 += 1;
let mut escaped_char: Option<char> = None;
match input.get(idx2) {
Some(c3) => {
let is_hex_number = if c3 == &'x' {
idx2 += 1;
true
} else {
false
};
if is_hex_number || c3.is_ascii_digit() {
loop {
match input.get(idx2) {
Some(c4) => {
if c4 == &';' {
if is_hex_number {
let s = &input[idx+3..idx2].iter().collect::<String>();
match u32::from_str_radix(&s, 16).ok().and_then(std::char::from_u32) {
Some(ch) => {
escaped_char = Some(ch);
idx = idx2;
},
None => {
},
}
} else {
let s = &input[idx+2..idx2].iter().collect::<String>();
match u32::from_str_radix(&s, 10).ok().and_then(std::char::from_u32) {
Some(ch) => {
escaped_char = Some(ch);
idx = idx2;
},
None => {
},
}
}
break;
}
if idx2 - idx >= 10 {
break;
}
if is_hex_number {
if !c4.is_ascii_hexdigit() {
break;
}
} else {
if !c4.is_ascii_digit() {
break;
}
}
idx2 += 1;
},
None => {
break;
}
}
}
}
},
None => { },
}
match escaped_char {
Some(ch) => {
output.push(ch);
},
None => {
output.push(c);
},
}
},
Some(c3) => {
let mut escaped_char: Option<char> = None;
if c3.is_ascii_alphabetic() {
loop {
idx2 += 1;
if idx2 - idx >= MAX_NAME_LENGTH + 2 {
break;
}
match input.get(idx2) {
Some(c4) => {
if c4 == &';' {
let s = &input[idx..idx2+1].iter().collect::<String>();
let ident = s.as_str();
match NAMED_ENTITIES.binary_search_by_key(&ident, |&(name, _)| name) {
Ok(pos) => {
let item = NAMED_ENTITIES[pos];
escaped_char = Some(item.1);
idx = idx2;
},
Err(_) => {
},
}
break;
}
if !c4.is_ascii_alphabetic() {
break;
}
},
None => {
break;
},
}
}
}
match escaped_char {
Some(ch) => {
output.push(ch);
},
None => {
output.push(c);
},
}
},
None => {
output.push(c);
},
}
},
_ => {
output.push(c);
},
}
idx += 1;
}
output
}
}
impl HTMLEntity for &[u8] {
type EscapeOutput = Vec<u8>;
type UnEscapeOutput = Vec<u8>;
fn escape_html(self) -> Self::EscapeOutput {
let mut idx = 0usize;
let input = self;
let input_utf8_len = input.len();
let mut output = Vec::with_capacity(input_utf8_len);
loop {
if idx == input_utf8_len {
break;
}
let byte = input[idx];
match byte {
b'&' => {
output.extend_from_slice("&".as_bytes());
},
b'>' => {
output.extend_from_slice(">".as_bytes());
},
b'<' => {
output.extend_from_slice("<".as_bytes());
},
b'"' => {
output.extend_from_slice(""".as_bytes());
},
b'\\' => {
output.extend_from_slice("\".as_bytes());
},
_ => {
output.push(byte);
}
}
idx += 1;
}
output
}
fn unescape_html(self) -> Self::UnEscapeOutput {
let mut idx = 0usize;
let input = self;
let input_len = input.len();
let mut output: Vec<u8> = Vec::with_capacity(input_len);
loop {
if idx == input_len {
break;
}
let c = input[idx];
match c {
b'&' => {
let mut idx2 = idx + 1;
match input.get(idx2) {
Some(b'#') => {
idx2 += 1;
let mut escaped_char: Option<char> = None;
match input.get(idx2) {
Some(c3) => {
let is_hex_number = if c3 == &b'x' {
idx2 += 1;
true
} else {
false
};
if is_hex_number || c3.is_ascii_digit() {
loop {
match input.get(idx2) {
Some(c4) => {
if c4 == &b';' {
if is_hex_number {
let s = unsafe { std::str::from_utf8_unchecked(&input[idx+3..idx2]) };
match u32::from_str_radix(&s, 16).ok().and_then(std::char::from_u32) {
Some(ch) => {
escaped_char = Some(ch);
idx = idx2;
},
None => {
},
}
} else {
let s = unsafe { std::str::from_utf8_unchecked(&input[idx+2..idx2]) };
match u32::from_str_radix(&s, 10).ok().and_then(std::char::from_u32) {
Some(ch) => {
escaped_char = Some(ch);
idx = idx2;
},
None => {
},
}
}
break;
}
if idx2 - idx >= 10 {
break;
}
if is_hex_number {
if !c4.is_ascii_hexdigit() {
break;
}
} else {
if !c4.is_ascii_digit() {
break;
}
}
idx2 += 1;
},
None => {
break;
}
}
}
}
},
None => { },
}
match escaped_char {
Some(ch) => {
let mut buffer = [0u8; 4];
output.extend_from_slice(ch.encode_utf8(&mut buffer).as_bytes());
},
None => {
output.push(c);
},
}
},
Some(c3) => {
let mut escaped_char: Option<char> = None;
if c3.is_ascii_alphabetic() {
loop {
idx2 += 1;
if idx2 - idx >= MAX_NAME_LENGTH + 2 {
break;
}
match input.get(idx2) {
Some(c4) => {
if c4 == &b';' {
let ident = unsafe { std::str::from_utf8_unchecked(&input[idx..idx2+1]) };
match NAMED_ENTITIES.binary_search_by_key(&ident, |&(name, _)| name) {
Ok(pos) => {
let item = NAMED_ENTITIES[pos];
escaped_char = Some(item.1);
idx = idx2;
},
Err(_) => {
},
}
break;
}
if !c4.is_ascii_alphabetic() {
break;
}
},
None => {
break;
},
}
}
}
match escaped_char {
Some(ch) => {
let mut buffer = [0u8; 4];
output.extend_from_slice(ch.encode_utf8(&mut buffer).as_bytes());
},
None => {
output.push(c);
},
}
},
None => {
output.push(c);
},
}
},
_ => {
output.push(c);
},
}
idx += 1;
}
output
}
}
impl HTMLEntity for &str {
type EscapeOutput = String;
type UnEscapeOutput = String;
fn escape_html(self) -> Self::EscapeOutput {
unsafe { String::from_utf8_unchecked(self.as_bytes().escape_html()) }
}
fn unescape_html(self) -> Self::UnEscapeOutput {
unsafe { String::from_utf8_unchecked(self.as_bytes().unescape_html()) }
}
}
impl HTMLEntity for Vec<u8> {
type EscapeOutput = Vec<u8>;
type UnEscapeOutput = Vec<u8>;
fn escape_html(self) -> Self::EscapeOutput {
(&self).escape_html()
}
fn unescape_html(self) -> Self::UnEscapeOutput {
(&self).unescape_html()
}
}
impl HTMLEntity for &Vec<u8> {
type EscapeOutput = Vec<u8>;
type UnEscapeOutput = Vec<u8>;
fn escape_html(self) -> Self::EscapeOutput {
self.as_slice().escape_html()
}
fn unescape_html(self) -> Self::UnEscapeOutput {
self.as_slice().unescape_html()
}
}
#[test]
fn test_escape_html() {
let s = "<App>who am i?</App>".chars().collect::<Vec<char>>();
let escaped = s.escape_html().iter().collect::<String>();
assert_eq!(escaped, "<App>who am i?</App>");
let s = "<App>who am i?</App>".as_bytes();
let r = s.escape_html();
let escaped = unsafe { std::str::from_utf8_unchecked(r.as_slice()) };
assert_eq!(escaped, "<App>who am i?</App>");
let s = "<App>who am i?</App>";
let escaped = s.escape_html();
assert_eq!(escaped.as_str(), "<App>who am i?</App>");
}
#[test]
fn test_unescape_html() {
let s = "<App>who am i?</App> 𝕏 𝕏 𝕏 𝕏 𝕏 &Xopf &#Xopf".chars().collect::<Vec<char>>();
let unescaped = s.unescape_html().iter().collect::<String>();
assert_eq!(unescaped, "<App>who am i?</App> 𝕏 𝕏 𝕏 𝕏 𝕏 &Xopf &#Xopf");
let s = "<App>who am i?</App> 𝕏 𝕏 𝕏 𝕏 𝕏 &Xopf &#Xopf".as_bytes();
let r = s.unescape_html();
let unescaped = unsafe { std::str::from_utf8_unchecked(r.as_slice()) };
assert_eq!(unescaped, "<App>who am i?</App> 𝕏 𝕏 𝕏 𝕏 𝕏 &Xopf &#Xopf");
let s = "<App>who am i?</App> 𝕏 𝕏 𝕏 𝕏 𝕏 &Xopf &#Xopf";
let unescaped = s.unescape_html();
assert_eq!(unescaped.as_str(), "<App>who am i?</App> 𝕏 𝕏 𝕏 𝕏 𝕏 &Xopf &#Xopf");
}