" <runtime>/after/syntax/html.vim
"
" Last Change: November 18, 2021
"
" This script requires Vim 7.3 or greater and the +conceal feature.  It uses
" the feature to:
"
" 1) Collapse HTML character entities into the character they represent.
" 2) Conceal the start/end tag of bold, italic, and underlined text if
"    g:html_no_rendering is not set.  (Other tags are left alone because there
"    is no other unambiguous visual indication of their presence.)
"
" It also specially highlights the "web safe" color palette and standard color
" names in appropriate contexts (such as CSS definitions).
"
" -----------------------------------------------------------------------------
"
" Copyright 2010-2021  Christian J. Robinson <heptite(at)gmail(dot)com>
"
" Distributed under the terms of the Vim license.

scriptencoding UTF-8

setlocal conceallevel=2

if !exists("html_no_rendering") || g:html_no_rendering != 0
	syn case ignore
	syn match htmlTag "<i>" conceal
		\ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster
	syn match htmlEndTag "</i>" conceal contains=htmlTagN,htmlTagError

	syn match htmlTag "<u>" conceal
		\ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster
	syn match htmlEndTag "</u>" conceal contains=htmlTagN,htmlTagError

	syn match htmlTag "<em>" conceal
		\ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster
	syn match htmlEndTag "</em>" conceal contains=htmlTagN,htmlTagError

	syn match htmlTag "<b>" conceal
		\ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster
	syn match htmlEndTag "</b>" conceal contains=htmlTagN,htmlTagError

	syn match htmlTag "<strong>"
		\ conceal contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster
	syn match htmlEndTag "</strong>" conceal contains=htmlTagN,htmlTagError

	syn clear htmlBold htmlBoldUnderline htmlBoldItalic htmlBoldUnderlineItalic htmlBoldItalicUnderline 
	syn region htmlBold start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
	syn region htmlBold start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
	syn region htmlBoldUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlBoldUnderlineItalic
	syn region htmlBoldItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlBoldItalicUnderline
	syn region htmlBoldItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop,htmlBoldItalicUnderline
	syn region htmlBoldUnderlineItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop
	syn region htmlBoldUnderlineItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop
	syn region htmlBoldItalicUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlBoldUnderlineItalic

	syn clear htmlUnderline htmlUnderlineBold htmlUnderlineItalic htmlUnderlineItalicBold htmlUnderlineBoldItalic
	syn region htmlUnderline start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlUnderlineBold,htmlUnderlineItalic
	syn region htmlUnderlineBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlUnderlineBoldItalic
	syn region htmlUnderlineBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlUnderlineBoldItalic
	syn region htmlUnderlineItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlUnderlineItalicBold
	syn region htmlUnderlineItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop,htmlUnderlineItalicBold
	syn region htmlUnderlineItalicBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop
	syn region htmlUnderlineItalicBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop
	syn region htmlUnderlineBoldItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop
	syn region htmlUnderlineBoldItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop

	syn clear htmlItalic htmlItalicBold htmlItalicBoldUnderline htmlItalicUnderline htmlItalicUnderlineBold
	syn region htmlItalic start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlItalicBold,htmlItalicUnderline
	syn region htmlItalic start="<em\>" end="</em>"me=e-5 contains=@htmlTop
	syn region htmlItalicBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlItalicBoldUnderline
	syn region htmlItalicBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlItalicBoldUnderline
	syn region htmlItalicBoldUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop
	syn region htmlItalicUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlItalicUnderlineBold
	syn region htmlItalicUnderlineBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop
	syn region htmlItalicUnderlineBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop
endif

function! s:HighlightColor(name, color)
	let key = substitute(a:name, ' ', '', 'g')
	let csplit = map(split(a:color[1:-1], '\x\x\zs'), 'str2nr(v:val, 16)')
	let contrast = ((csplit[0] > 0x88 || csplit[1] > 0x88 || csplit[2] > 0x88) ? 0x000000 : 0xFFFFFF)
	execute 'syntax match html_hc_' . key . ' /' . a:color
			\ . '/ containedin=htmlString,htmlConstant,cssConstant,cssColor,cssAttrRegion contained'
	execute 'syntax keyword html_hc_' . key . ' ' . key
			\ . ' containedin=htmlString,htmlConstant,cssConstant,cssColor,cssAttrRegion contained'
	execute 'highlight html_hc_' . key . ' guibg=' . a:color . ' guifg=#' . printf('%06X', contrast)
endfunction

" Potentially slows Vim down too much, as it creates 4096 matches and
" highlights, but this is considered the "web safe" palette:
for rr in range(0, 15)
	for gg in range(0, 15)
		for bb in range(0, 15)
			let s:color = printf('%X%X%X%X%X%X', rr, rr, gg, gg, bb, bb)
			let s:contrast = ((str2nr(rr . rr, 16) > 0x88 || str2nr(gg . gg, 16) > 0x88 || str2nr(bb . bb, 16) > 0x88) ? 0x000000 : 0xFFFFFF)
			execute 'syntax match html_hc_' . s:color . ' /#' . s:color
					\ . '/ containedin=htmlString,htmlConstant,cssConstant,cssColor,cssAttrRegion contained'
			execute 'highlight html_hc_' . s:color . ' guibg=#' . s:color . ' guifg=#' . printf('%06X', s:contrast)
		endfor
	endfor
endfor

call s:HighlightColor('Alice Blue',              '#F0F8FF')
call s:HighlightColor('Antique White',           '#FAEBD7')
call s:HighlightColor('Aqua',                    '#00FFFF')
call s:HighlightColor('Aquamarine',              '#7FFFD4')
call s:HighlightColor('Azure',                   '#F0FFFF')
call s:HighlightColor('Beige',                   '#F5F5DC')
call s:HighlightColor('Bisque',                  '#FFE4C4')
call s:HighlightColor('Black',                   '#000000')
call s:HighlightColor('Blanched Almond',         '#FFEBCD')
call s:HighlightColor('Blue',                    '#0000FF')
call s:HighlightColor('Blue Violet',             '#8A2BE2')
call s:HighlightColor('Brown',                   '#A52A2A')
call s:HighlightColor('Burly Wood',              '#DEB887')
call s:HighlightColor('Cadet Blue',              '#5F9EA0')
call s:HighlightColor('Chartreuse',              '#7FFF00')
call s:HighlightColor('Chocolate',               '#D2691E')
call s:HighlightColor('Coral',                   '#FF7F50')
call s:HighlightColor('Cornflower Blue',         '#6495ED')
call s:HighlightColor('Cornsilk',                '#FFF8DC')
call s:HighlightColor('Crimson',                 '#DC143C')
call s:HighlightColor('Cyan',                    '#00FFFF')
call s:HighlightColor('Dark Blue',               '#00008B')
call s:HighlightColor('Dark Cyan',               '#008B8B')
call s:HighlightColor('Dark Golden Rod',         '#B8860B')
call s:HighlightColor('Dark Gray',               '#A9A9A9')
call s:HighlightColor('Dark Green',              '#006400')
call s:HighlightColor('Dark Grey',               '#A9A9A9')
call s:HighlightColor('Dark Khaki',              '#BDB76B')
call s:HighlightColor('Dark Magenta',            '#8B008B')
call s:HighlightColor('Dark Olive Green',        '#556B2F')
call s:HighlightColor('Dark Orange',             '#FF8C00')
call s:HighlightColor('Dark Orchid',             '#9932CC')
call s:HighlightColor('Dark Red',                '#8B0000')
call s:HighlightColor('Dark Salmon',             '#E9967A')
call s:HighlightColor('Dark Sea Green',          '#8FBC8F')
call s:HighlightColor('Dark Slate Blue',         '#483D8B')
call s:HighlightColor('Dark Slate Gray',         '#2F4F4F')
call s:HighlightColor('Dark Slate Grey',         '#2F4F4F')
call s:HighlightColor('Dark Turquoise',          '#00CED1')
call s:HighlightColor('Dark Violet',             '#9400D3')
call s:HighlightColor('Deep Pink',               '#FF1493')
call s:HighlightColor('Deep Sky Blue',           '#00BFFF')
call s:HighlightColor('Dim Gray',                '#696969')
call s:HighlightColor('Dim Grey',                '#696969')
call s:HighlightColor('Dodger Blue',             '#1E90FF')
call s:HighlightColor('Fire Brick',              '#B22222')
call s:HighlightColor('Floral White',            '#FFFAF0')
call s:HighlightColor('Forest Green',            '#228B22')
call s:HighlightColor('Fuchsia',                 '#FF00FF')
call s:HighlightColor('Gainsboro',               '#DCDCDC')
call s:HighlightColor('Ghost White',             '#F8F8FF')
call s:HighlightColor('Gold',                    '#FFD700')
call s:HighlightColor('Golden Rod',              '#DAA520')
call s:HighlightColor('Gray',                    '#808080')
call s:HighlightColor('Green',                   '#008000')
call s:HighlightColor('Green Yellow',            '#ADFF2F')
call s:HighlightColor('Grey',                    '#808080')
call s:HighlightColor('Honey Dew',               '#F0FFF0')
call s:HighlightColor('Hot Pink',                '#FF69B4')
call s:HighlightColor('Indian Red',              '#CD5C5C')
call s:HighlightColor('Indigo',                  '#4B0082')
call s:HighlightColor('Ivory',                   '#FFFFF0')
call s:HighlightColor('Khaki',                   '#F0E68C')
call s:HighlightColor('Lavender',                '#E6E6FA')
call s:HighlightColor('Lavender Blush',          '#FFF0F5')
call s:HighlightColor('Lawn Green',              '#7CFC00')
call s:HighlightColor('Lemon Chiffon',           '#FFFACD')
call s:HighlightColor('Light Blue',              '#ADD8E6')
call s:HighlightColor('Light Coral',             '#F08080')
call s:HighlightColor('Light Cyan',              '#E0FFFF')
call s:HighlightColor('Light Golden Rod Yellow', '#FAFAD2')
call s:HighlightColor('Light Gray',              '#D3D3D3')
call s:HighlightColor('Light Green',             '#90EE90')
call s:HighlightColor('Light Grey',              '#D3D3D3')
call s:HighlightColor('Light Pink',              '#FFB6C1')
call s:HighlightColor('Light Salmon',            '#FFA07A')
call s:HighlightColor('Light Sea Green',         '#20B2AA')
call s:HighlightColor('Light Sky Blue',          '#87CEFA')
call s:HighlightColor('Light Slate Gray',        '#778899')
call s:HighlightColor('Light Slate Grey',        '#778899')
call s:HighlightColor('Light Steel Blue',        '#B0C4DE')
call s:HighlightColor('Light Yellow',            '#FFFFE0')
call s:HighlightColor('Lime',                    '#00FF00')
call s:HighlightColor('Lime Green',              '#32CD32')
call s:HighlightColor('Linen',                   '#FAF0E6')
call s:HighlightColor('Magenta',                 '#FF00FF')
call s:HighlightColor('Maroon',                  '#800000')
call s:HighlightColor('Medium Aqua Marine',      '#66CDAA')
call s:HighlightColor('Medium Blue',             '#0000CD')
call s:HighlightColor('Medium Orchid',           '#BA55D3')
call s:HighlightColor('Medium Purple',           '#9370DB')
call s:HighlightColor('Medium Sea Green',        '#3CB371')
call s:HighlightColor('Medium Slate Blue',       '#7B68EE')
call s:HighlightColor('Medium Spring Green',     '#00FA9A')
call s:HighlightColor('Medium Turquoise',        '#48D1CC')
call s:HighlightColor('Medium Violet Red',       '#C71585')
call s:HighlightColor('Midnight Blue',           '#191970')
call s:HighlightColor('Mint Cream',              '#F5FFFA')
call s:HighlightColor('Misty Rose',              '#FFE4E1')
call s:HighlightColor('Moccasin',                '#FFE4B5')
call s:HighlightColor('Navajo White',            '#FFDEAD')
call s:HighlightColor('Navy',                    '#000080')
call s:HighlightColor('Old Lace',                '#FDF5E6')
call s:HighlightColor('Olive',                   '#808000')
call s:HighlightColor('Olive Drab',              '#6B8E23')
call s:HighlightColor('Orange',                  '#FFA500')
call s:HighlightColor('Orange Red',              '#FF4500')
call s:HighlightColor('Orchid',                  '#DA70D6')
call s:HighlightColor('Pale Golden Rod',         '#EEE8AA')
call s:HighlightColor('Pale Green',              '#98FB98')
call s:HighlightColor('Pale Turquoise',          '#AFEEEE')
call s:HighlightColor('Pale Violet Red',         '#DB7093')
call s:HighlightColor('Papaya Whip',             '#FFEFD5')
call s:HighlightColor('Peach Puff',              '#FFDAB9')
call s:HighlightColor('Peru',                    '#CD853F')
call s:HighlightColor('Pink',                    '#FFC0CB')
call s:HighlightColor('Plum',                    '#DDA0DD')
call s:HighlightColor('Powder Blue',             '#B0E0E6')
call s:HighlightColor('Purple',                  '#800080')
call s:HighlightColor('Rebecca Purple',          '#663399')
call s:HighlightColor('Red',                     '#FF0000')
call s:HighlightColor('Rosy Brown',              '#BC8F8F')
call s:HighlightColor('Royal Blue',              '#4169E1')
call s:HighlightColor('Saddle Brown',            '#8B4513')
call s:HighlightColor('Salmon',                  '#FA8072')
call s:HighlightColor('Sandy Brown',             '#F4A460')
call s:HighlightColor('Sea Green',               '#2E8B57')
call s:HighlightColor('Sea Shell',               '#FFF5EE')
call s:HighlightColor('Sienna',                  '#A0522D')
call s:HighlightColor('Silver',                  '#C0C0C0')
call s:HighlightColor('Sky Blue',                '#87CEEB')
call s:HighlightColor('Slate Blue',              '#6A5ACD')
call s:HighlightColor('Slate Gray',              '#708090')
call s:HighlightColor('Slate Grey',              '#708090')
call s:HighlightColor('Snow',                    '#FFFAFA')
call s:HighlightColor('Spring Green',            '#00FF7F')
call s:HighlightColor('Steel Blue',              '#4682B4')
call s:HighlightColor('Tan',                     '#D2B48C')
call s:HighlightColor('Teal',                    '#008080')
call s:HighlightColor('Thistle',                 '#D8BFD8')
call s:HighlightColor('Tomato',                  '#FF6347')
call s:HighlightColor('Turquoise',               '#40E0D0')
call s:HighlightColor('Violet',                  '#EE82EE')
call s:HighlightColor('Wheat',                   '#F5DEB3')
call s:HighlightColor('White',                   '#FFFFFF')
call s:HighlightColor('White Smoke',             '#F5F5F5')
call s:HighlightColor('Yellow',                  '#FFFF00')
call s:HighlightColor('Yellow Green',            '#9ACD32')

let s:added_html_charconceal_number = {}
function! s:HTMLAddEntityConceal(char, ...)
" Arguments:
" 2 args: 1 = concealed character to display, 2 = match pattern to conceal in
"                                                 the form of: &...;
" 1 arg:  1 = decimal number to match in &#...; format, character to display
"             is computed from this
	if ! has('conceal') | return | endif

	if a:0 == 1 && strlen(substitute(a:char, '.', 'x', 'g')) == 1
				\ && a:1 =~ '^&#\?\w\+;$'

		syn case match
		exe "syn match htmlSpecialChar '"
			\ . a:1 . "' conceal cchar=" . a:char

		let nr = char2nr(a:char)
		if ! exists('s:added_html_charconceal_number[' . nr . ']')
			let s:added_html_charconceal_number[l:nr] = nr2char(nr)
			syn case match
			exe "syn match htmlSpecialChar '&#"
				\ . nr . ";' conceal cchar=" . a:char
			syn case ignore
			exe "syn match htmlSpecialChar '&#x"
				\ . printf('%2X', nr) . ";' conceal cchar=" . a:char
		endif

	elseif a:0 == 0 && a:char =~ '^[0-9]\+$'
		if ! exists('s:added_html_charconceal_number[' . a:char . ']')
			let s:added_html_charconceal_number[a:char] = nr2char(a:char)
			syn case match
			exe "syn match htmlSpecialChar '&#"
				\ . a:char . ";' conceal cchar=" . nr2char(a:char)
			syn case ignore
			exe "syn match htmlSpecialChar '&#x"
				\ . printf('%2X', a:char) . ";' conceal cchar="
				\ . nr2char(a:char)
		endif
	else
		echoerr expand('<sfile>') . ": Invalid usage."
	endif
endfunction

let s:DictEntitiesToChar = {
	\ '&excl;': "\x21",
	\ '&quot;': "\x22", '&num;': "\x23", '&dollar;': "\x24",
	\ '&percnt;': "\x25", '&amp;': "\x26", '&apos;': "\x27",
	\ '&lpar;': "\x28", '&rpar;': "\x29", '&ast;': "\x2A",
	\ '&plus;': "\x2B", '&comma;': "\x2C", '&period;': "\x2E",
	\ '&sol;': "\x2F", '&colon;': "\x3A", '&semi;': "\x3B",
	\ '&lt;': "\x3C", '&equals;': "\x3D", '&gt;': "\x3E",
	\ '&quest;': "\x3F", '&commat;': "\x40", '&lsqb;': "\x5B",
	\ '&bsol;': "\x5C", '&rsqb;': "\x5D", '&Hat;': "\x5E",
	\ '&lowbar;': "\x5F", '&grave;': "\x60", '&lcub;': "\x7B",
	\ '&verbar;': "\x7C", '&rcub;': "\x7D", '&nbsp;': "\xA0",
	\ '&iexcl;': "\xA1", '&cent;': "\xA2", '&pound;': "\xA3",
	\ '&curren;': "\xA4", '&yen;': "\xA5", '&brvbar;': "\xA6",
	\ '&sect;': "\xA7", '&uml;': "\xA8", '&copy;': "\xA9",
	\ '&ordf;': "\xAA", '&laquo;': "\xAB", '&not;': "\xAC",
	\ '&shy;': "\xAD", '&reg;': "\xAE", '&macr;': "\xAF",
	\ '&deg;': "\xB0", '&plusmn;': "\xB1", "&sup2;": "\xB2",
	\ "&sup3;": "\xB3", '&acute;': "\xB4", '&micro;': "\xB5",
	\ '&para;': "\xB6", '&middot;': "\xB7", '&cedil;': "\xB8",
	\ "&sup1;": "\xB9", '&ordm;': "\xBA", '&raquo;': "\xBB",
	\ "&frac14;": "\xBC", "&frac12;": "\xBD", "&frac34;": "\xBE",
	\ '&iquest;': "\xBF", '&Agrave;': "\xC0", '&Aacute;': "\xC1",
	\ '&Acirc;': "\xC2", '&Atilde;': "\xC3", '&Auml;': "\xC4",
	\ '&Aring;': "\xC5", '&AElig;': "\xC6", '&Ccedil;': "\xC7",
	\ '&Egrave;': "\xC8", '&Eacute;': "\xC9", '&Ecirc;': "\xCA",
	\ '&Euml;': "\xCB", '&Igrave;': "\xCC", '&Iacute;': "\xCD",
	\ '&Icirc;': "\xCE", '&Iuml;': "\xCF", '&ETH;': "\xD0",
	\ '&Ntilde;': "\xD1", '&Ograve;': "\xD2", '&Oacute;': "\xD3",
	\ '&Ocirc;': "\xD4", '&Otilde;': "\xD5", '&Ouml;': "\xD6",
	\ '&times;': "\xD7", '&Oslash;': "\xD8", '&Ugrave;': "\xD9",
	\ '&Uacute;': "\xDA", '&Ucirc;': "\xDB", '&Uuml;': "\xDC",
	\ '&Yacute;': "\xDD", '&THORN;': "\xDE", '&szlig;': "\xDF",
	\ '&agrave;': "\xE0", '&aacute;': "\xE1", '&acirc;': "\xE2",
	\ '&atilde;': "\xE3", '&auml;': "\xE4", '&aring;': "\xE5",
	\ '&aelig;': "\xE6", '&ccedil;': "\xE7", '&egrave;': "\xE8",
	\ '&eacute;': "\xE9", '&ecirc;': "\xEA", '&euml;': "\xEB",
	\ '&igrave;': "\xEC", '&iacute;': "\xED", '&icirc;': "\xEE",
	\ '&iuml;': "\xEF", '&eth;': "\xF0", '&ntilde;': "\xF1",
	\ '&ograve;': "\xF2", '&oacute;': "\xF3", '&ocirc;': "\xF4",
	\ '&otilde;': "\xF5", '&ouml;': "\xF6", '&divide;': "\xF7",
	\ '&oslash;': "\xF8", '&ugrave;': "\xF9", '&uacute;': "\xFA",
	\ '&ucirc;': "\xFB", '&uuml;': "\xFC", '&yacute;': "\xFD",
	\ '&thorn;': "\xFE", '&yuml;': "\xFF", '&Amacr;': "\U100",
	\ '&amacr;': "\U101", '&Abreve;': "\U102", '&abreve;': "\U103",
	\ '&Aogon;': "\U104", '&aogon;': "\U105", '&Cacute;': "\U106",
	\ '&cacute;': "\U107", '&Ccirc;': "\U108", '&ccirc;': "\U109",
	\ '&Cdot;': "\U10A", '&cdot;': "\U10B", '&Ccaron;': "\U10C",
	\ '&ccaron;': "\U10D", '&Dcaron;': "\U10E", '&dcaron;': "\U10F",
	\ '&Dstrok;': "\U110", '&dstrok;': "\U111", '&Emacr;': "\U112",
	\ '&emacr;': "\U113", '&Edot;': "\U116", '&edot;': "\U117",
	\ '&Eogon;': "\U118", '&eogon;': "\U119", '&Ecaron;': "\U11A",
	\ '&ecaron;': "\U11B", '&Gcirc;': "\U11C", '&gcirc;': "\U11D",
	\ '&Gbreve;': "\U11E", '&gbreve;': "\U11F", '&Gdot;': "\U120",
	\ '&gdot;': "\U121", '&Gcedil;': "\U122", '&Hcirc;': "\U124",
	\ '&hcirc;': "\U125", '&Hstrok;': "\U126", '&hstrok;': "\U127",
	\ '&Itilde;': "\U128", '&itilde;': "\U129", '&Imacr;': "\U12A",
	\ '&imacr;': "\U12B", '&Iogon;': "\U12E", '&iogon;': "\U12F",
	\ '&Idot;': "\U130", '&imath;': "\U131", '&IJlig;': "\U132",
	\ '&ijlig;': "\U133", '&Jcirc;': "\U134", '&jcirc;': "\U135",
	\ '&Kcedil;': "\U136", '&kcedil;': "\U137", '&kgreen;': "\U138",
	\ '&Lacute;': "\U139", '&lacute;': "\U13A", '&Lcedil;': "\U13B",
	\ '&lcedil;': "\U13C", '&Lcaron;': "\U13D", '&lcaron;': "\U13E",
	\ '&Lmidot;': "\U13F", '&lmidot;': "\U140", '&Lstrok;': "\U141",
	\ '&lstrok;': "\U142", '&Nacute;': "\U143", '&nacute;': "\U144",
	\ '&Ncedil;': "\U145", '&ncedil;': "\U146", '&Ncaron;': "\U147",
	\ '&ncaron;': "\U148", '&napos;': "\U149", '&ENG;': "\U14A",
	\ '&eng;': "\U14B", '&Omacr;': "\U14C", '&omacr;': "\U14D",
	\ '&Odblac;': "\U150", '&odblac;': "\U151", '&OElig;': "\U152",
	\ '&oelig;': "\U153", '&Racute;': "\U154", '&racute;': "\U155",
	\ '&Rcedil;': "\U156", '&rcedil;': "\U157", '&Rcaron;': "\U158",
	\ '&rcaron;': "\U159", '&Sacute;': "\U15A", '&sacute;': "\U15B",
	\ '&Scirc;': "\U15C", '&scirc;': "\U15D", '&Scedil;': "\U15E",
	\ '&scedil;': "\U15F", '&Scaron;': "\U160", '&scaron;': "\U161",
	\ '&Tcedil;': "\U162", '&tcedil;': "\U163", '&Tcaron;': "\U164",
	\ '&tcaron;': "\U165", '&Tstrok;': "\U166", '&tstrok;': "\U167",
	\ '&Utilde;': "\U168", '&utilde;': "\U169", '&Umacr;': "\U16A",
	\ '&umacr;': "\U16B", '&Ubreve;': "\U16C", '&ubreve;': "\U16D",
	\ '&Uring;': "\U16E", '&uring;': "\U16F", '&Udblac;': "\U170",
	\ '&udblac;': "\U171", '&Uogon;': "\U172", '&uogon;': "\U173",
	\ '&Wcirc;': "\U174", '&wcirc;': "\U175", '&Ycirc;': "\U176",
	\ '&ycirc;': "\U177", '&Yuml;': "\U178", '&Zacute;': "\U179",
	\ '&zacute;': "\U17A", '&Zdot;': "\U17B", '&zdot;': "\U17C",
	\ '&Zcaron;': "\U17D", '&zcaron;': "\U17E", '&fnof;': "\U192",
	\ '&imped;': "\U1B5", '&gacute;': "\U1F5", '&jmath;': "\U237",
	\ '&circ;': "\U2C6", '&caron;': "\U2C7", '&breve;': "\U2D8",
	\ '&dot;': "\U2D9", '&ring;': "\U2DA", '&ogon;': "\U2DB",
	\ '&tilde;': "\U2DC", '&dblac;': "\U2DD", '&DownBreve;': "\U311",
	\ '&UnderBar;': "\U332", '&Alpha;': "\U391", '&Beta;': "\U392",
	\ '&Gamma;': "\U393", '&Delta;': "\U394", '&Epsilon;': "\U395",
	\ '&Zeta;': "\U396", '&Eta;': "\U397", '&Theta;': "\U398",
	\ '&Iota;': "\U399", '&Kappa;': "\U39A", '&Lambda;': "\U39B",
	\ '&Mu;': "\U39C", '&Nu;': "\U39D", '&Xi;': "\U39E",
	\ '&Omicron;': "\U39F", '&Pi;': "\U3A0", '&Rho;': "\U3A1",
	\ '&Sigma;': "\U3A3", '&Tau;': "\U3A4", '&Upsilon;': "\U3A5",
	\ '&Phi;': "\U3A6", '&Chi;': "\U3A7", '&Psi;': "\U3A8",
	\ '&Omega;': "\U3A9", '&alpha;': "\U3B1", '&beta;': "\U3B2",
	\ '&gamma;': "\U3B3", '&delta;': "\U3B4", '&epsiv;': "\U3B5",
	\ '&zeta;': "\U3B6", '&eta;': "\U3B7", '&theta;': "\U3B8",
	\ '&iota;': "\U3B9", '&kappa;': "\U3BA", '&lambda;': "\U3BB",
	\ '&mu;': "\U3BC", '&nu;': "\U3BD", '&xi;': "\U3BE",
	\ '&omicron;': "\U3BF", '&pi;': "\U3C0", '&rho;': "\U3C1",
	\ '&sigmav;': "\U3C2", '&sigma;': "\U3C3", '&tau;': "\U3C4",
	\ '&upsi;': "\U3C5", '&phi;': "\U3C6", '&chi;': "\U3C7",
	\ '&psi;': "\U3C8", '&omega;': "\U3C9", '&thetav;': "\U3D1",
	\ '&Upsi;': "\U3D2", '&straightphi;': "\U3D5", '&piv;': "\U3D6",
	\ '&Gammad;': "\U3DC", '&gammad;': "\U3DD", '&kappav;': "\U3F0",
	\ '&rhov;': "\U3F1", '&epsi;': "\U3F5", '&bepsi;': "\U3F6",
	\ '&IOcy;': "\U401", '&DJcy;': "\U402", '&GJcy;': "\U403",
	\ '&Jukcy;': "\U404", '&DScy;': "\U405", '&Iukcy;': "\U406",
	\ '&YIcy;': "\U407", '&Jsercy;': "\U408", '&LJcy;': "\U409",
	\ '&NJcy;': "\U40A", '&TSHcy;': "\U40B", '&KJcy;': "\U40C",
	\ '&Ubrcy;': "\U40E", '&DZcy;': "\U40F", '&Acy;': "\U410",
	\ '&Bcy;': "\U411", '&Vcy;': "\U412", '&Gcy;': "\U413",
	\ '&Dcy;': "\U414", '&IEcy;': "\U415", '&ZHcy;': "\U416",
	\ '&Zcy;': "\U417", '&Icy;': "\U418", '&Jcy;': "\U419",
	\ '&Kcy;': "\U41A", '&Lcy;': "\U41B", '&Mcy;': "\U41C",
	\ '&Ncy;': "\U41D", '&Ocy;': "\U41E", '&Pcy;': "\U41F",
	\ '&Rcy;': "\U420", '&Scy;': "\U421", '&Tcy;': "\U422",
	\ '&Ucy;': "\U423", '&Fcy;': "\U424", '&KHcy;': "\U425",
	\ '&TScy;': "\U426", '&CHcy;': "\U427", '&SHcy;': "\U428",
	\ '&SHCHcy;': "\U429", '&HARDcy;': "\U42A", '&Ycy;': "\U42B",
	\ '&SOFTcy;': "\U42C", '&Ecy;': "\U42D", '&YUcy;': "\U42E",
	\ '&YAcy;': "\U42F", '&acy;': "\U430", '&bcy;': "\U431",
	\ '&vcy;': "\U432", '&gcy;': "\U433", '&dcy;': "\U434",
	\ '&iecy;': "\U435", '&zhcy;': "\U436", '&zcy;': "\U437",
	\ '&icy;': "\U438", '&jcy;': "\U439", '&kcy;': "\U43A",
	\ '&lcy;': "\U43B", '&mcy;': "\U43C", '&ncy;': "\U43D",
	\ '&ocy;': "\U43E", '&pcy;': "\U43F", '&rcy;': "\U440",
	\ '&scy;': "\U441", '&tcy;': "\U442", '&ucy;': "\U443",
	\ '&fcy;': "\U444", '&khcy;': "\U445", '&tscy;': "\U446",
	\ '&chcy;': "\U447", '&shcy;': "\U448", '&shchcy;': "\U449",
	\ '&hardcy;': "\U44A", '&ycy;': "\U44B", '&softcy;': "\U44C",
	\ '&ecy;': "\U44D", '&yucy;': "\U44E", '&yacy;': "\U44F",
	\ '&iocy;': "\U451", '&djcy;': "\U452", '&gjcy;': "\U453",
	\ '&jukcy;': "\U454", '&dscy;': "\U455", '&iukcy;': "\U456",
	\ '&yicy;': "\U457", '&jsercy;': "\U458", '&ljcy;': "\U459",
	\ '&njcy;': "\U45A", '&tshcy;': "\U45B", '&kjcy;': "\U45C",
	\ '&ubrcy;': "\U45E", '&dzcy;': "\U45F", '&ensp;': "\u2002",
	\ '&emsp;': "\u2003", "&emsp13;": "\u2004", "&emsp14;": "\u2005",
	\ '&numsp;': "\u2007", '&puncsp;': "\u2008", '&thinsp;': "\u2009",
	\ '&hairsp;': "\u200A",
	\ '&hyphen;': "\u2010", '&ndash;': "\u2013", '&mdash;': "\u2014",
	\ '&horbar;': "\u2015", '&Verbar;': "\u2016", '&lsquo;': "\u2018",
	\ '&rsquo;': "\u2019", '&lsquor;': "\u201A", '&ldquo;': "\u201C",
	\ '&rdquo;': "\u201D", '&ldquor;': "\u201E", '&dagger;': "\u2020",
	\ '&Dagger;': "\u2021", '&bull;': "\u2022", '&nldr;': "\u2025",
	\ '&hellip;': "\u2026", '&permil;': "\u2030", '&pertenk;': "\u2031",
	\ '&prime;': "\u2032", '&Prime;': "\u2033", '&tprime;': "\u2034",
	\ '&bprime;': "\u2035", '&lsaquo;': "\u2039", '&rsaquo;': "\u203A",
	\ '&oline;': "\u203E", '&caret;': "\u2041", '&hybull;': "\u2043",
	\ '&frasl;': "\u2044", '&bsemi;': "\u204F", '&qprime;': "\u2057",
	\ '&MediumSpace;': "\u205F", '&euro;': "\u20AC",
	\ '&tdot;': "\u20DB", '&DotDot;': "\u20DC", '&Copf;': "\u2102",
	\ '&incare;': "\u2105", '&gscr;': "\u210A", '&hamilt;': "\u210B",
	\ '&Hfr;': "\u210C", '&quaternions;': "\u210D", '&planckh;': "\u210E",
	\ '&planck;': "\u210F", '&Iscr;': "\u2110", '&image;': "\u2111",
	\ '&Lscr;': "\u2112", '&ell;': "\u2113", '&Nopf;': "\u2115",
	\ '&numero;': "\u2116", '&copysr;': "\u2117", '&weierp;': "\u2118",
	\ '&Popf;': "\u2119", '&rationals;': "\u211A", '&Rscr;': "\u211B",
	\ '&real;': "\u211C", '&reals;': "\u211D", '&rx;': "\u211E",
	\ '&trade;': "\u2122", '&integers;': "\u2124", '&ohm;': "\u2126",
	\ '&mho;': "\u2127", '&Zfr;': "\u2128", '&iiota;': "\u2129",
	\ '&angst;': "\u212B", '&bernou;': "\u212C", '&Cfr;': "\u212D",
	\ '&escr;': "\u212F", '&Escr;': "\u2130", '&Fscr;': "\u2131",
	\ '&phmmat;': "\u2133", '&order;': "\u2134", '&alefsym;': "\u2135",
	\ '&beth;': "\u2136", '&gimel;': "\u2137", '&daleth;': "\u2138",
	\ '&CapitalDifferentialD;': "\u2145", '&DifferentialD;': "\u2146", '&ExponentialE;': "\u2147",
	\ '&ImaginaryI;': "\u2148", "&frac13;": "\u2153", "&frac23;": "\u2154",
	\ "&frac15;": "\u2155", "&frac25;": "\u2156", "&frac35;": "\u2157",
	\ "&frac45;": "\u2158", "&frac16;": "\u2159", "&frac56;": "\u215A",
	\ "&frac18;": "\u215B", "&frac38;": "\u215C", "&frac58;": "\u215D",
	\ "&frac78;": "\u215E", '&larr;': "\u2190", '&uarr;': "\u2191",
	\ '&rarr;': "\u2192", '&darr;': "\u2193", '&harr;': "\u2194",
	\ '&varr;': "\u2195", '&nwarr;': "\u2196", '&nearr;': "\u2197",
	\ '&searr;': "\u2198", '&swarr;': "\u2199", '&nlarr;': "\u219A",
	\ '&nrarr;': "\u219B", '&rarrw;': "\u219D", '&Larr;': "\u219E",
	\ '&Uarr;': "\u219F", '&Rarr;': "\u21A0", '&Darr;': "\u21A1",
	\ '&larrtl;': "\u21A2", '&rarrtl;': "\u21A3", '&LeftTeeArrow;': "\u21A4",
	\ '&UpTeeArrow;': "\u21A5", '&map;': "\u21A6", '&DownTeeArrow;': "\u21A7",
	\ '&larrhk;': "\u21A9", '&rarrhk;': "\u21AA", '&larrlp;': "\u21AB",
	\ '&rarrlp;': "\u21AC", '&harrw;': "\u21AD", '&nharr;': "\u21AE",
	\ '&lsh;': "\u21B0", '&rsh;': "\u21B1", '&ldsh;': "\u21B2",
	\ '&rdsh;': "\u21B3", '&crarr;': "\u21B5", '&cularr;': "\u21B6",
	\ '&curarr;': "\u21B7", '&olarr;': "\u21BA", '&orarr;': "\u21BB",
	\ '&lharu;': "\u21BC", '&lhard;': "\u21BD", '&uharr;': "\u21BE",
	\ '&uharl;': "\u21BF", '&rharu;': "\u21C0", '&rhard;': "\u21C1",
	\ '&dharr;': "\u21C2", '&dharl;': "\u21C3", '&rlarr;': "\u21C4",
	\ '&udarr;': "\u21C5", '&lrarr;': "\u21C6", '&llarr;': "\u21C7",
	\ '&uuarr;': "\u21C8", '&rrarr;': "\u21C9", '&ddarr;': "\u21CA",
	\ '&lrhar;': "\u21CB", '&rlhar;': "\u21CC", '&nlArr;': "\u21CD",
	\ '&nhArr;': "\u21CE", '&nrArr;': "\u21CF", '&lArr;': "\u21D0",
	\ '&uArr;': "\u21D1", '&rArr;': "\u21D2", '&dArr;': "\u21D3",
	\ '&hArr;': "\u21D4", '&vArr;': "\u21D5", '&nwArr;': "\u21D6",
	\ '&neArr;': "\u21D7", '&seArr;': "\u21D8", '&swArr;': "\u21D9",
	\ '&lAarr;': "\u21DA", '&rAarr;': "\u21DB", '&zigrarr;': "\u21DD",
	\ '&larrb;': "\u21E4", '&rarrb;': "\u21E5", '&duarr;': "\u21F5",
	\ '&loarr;': "\u21FD", '&roarr;': "\u21FE", '&hoarr;': "\u21FF",
	\ '&forall;': "\u2200", '&comp;': "\u2201", '&part;': "\u2202",
	\ '&exist;': "\u2203", '&nexist;': "\u2204", '&empty;': "\u2205",
	\ '&nabla;': "\u2207", '&isin;': "\u2208", '&notin;': "\u2209",
	\ '&niv;': "\u220B", '&notni;': "\u220C", '&prod;': "\u220F",
	\ '&coprod;': "\u2210", '&sum;': "\u2211", '&minus;': "\u2212",
	\ '&mnplus;': "\u2213", '&plusdo;': "\u2214", '&setmn;': "\u2216",
	\ '&lowast;': "\u2217", '&compfn;': "\u2218", '&radic;': "\u221A",
	\ '&prop;': "\u221D", '&infin;': "\u221E", '&angrt;': "\u221F",
	\ '&ang;': "\u2220", '&angmsd;': "\u2221", '&angsph;': "\u2222",
	\ '&mid;': "\u2223", '&nmid;': "\u2224", '&par;': "\u2225",
	\ '&npar;': "\u2226", '&and;': "\u2227", '&or;': "\u2228",
	\ '&cap;': "\u2229", '&cup;': "\u222A", '&int;': "\u222B",
	\ '&Int;': "\u222C", '&tint;': "\u222D", '&conint;': "\u222E",
	\ '&Conint;': "\u222F", '&Cconint;': "\u2230", '&cwint;': "\u2231",
	\ '&cwconint;': "\u2232", '&awconint;': "\u2233", "&there4;": "\u2234",
	\ '&becaus;': "\u2235", '&ratio;': "\u2236", '&Colon;': "\u2237",
	\ '&minusd;': "\u2238", '&mDDot;': "\u223A", '&homtht;': "\u223B",
	\ '&sim;': "\u223C", '&bsim;': "\u223D", '&ac;': "\u223E",
	\ '&acd;': "\u223F", '&wreath;': "\u2240", '&nsim;': "\u2241",
	\ '&esim;': "\u2242", '&sime;': "\u2243", '&nsime;': "\u2244",
	\ '&cong;': "\u2245", '&simne;': "\u2246", '&ncong;': "\u2247",
	\ '&asymp;': "\u2248", '&nap;': "\u2249", '&ape;': "\u224A",
	\ '&apid;': "\u224B", '&bcong;': "\u224C", '&asympeq;': "\u224D",
	\ '&bump;': "\u224E", '&bumpe;': "\u224F", '&esdot;': "\u2250",
	\ '&eDot;': "\u2251", '&efDot;': "\u2252", '&erDot;': "\u2253",
	\ '&colone;': "\u2254", '&ecolon;': "\u2255", '&ecir;': "\u2256",
	\ '&cire;': "\u2257", '&wedgeq;': "\u2259", '&veeeq;': "\u225A",
	\ '&trie;': "\u225C", '&equest;': "\u225F", '&ne;': "\u2260",
	\ '&equiv;': "\u2261", '&nequiv;': "\u2262", '&le;': "\u2264",
	\ '&ge;': "\u2265", '&lE;': "\u2266", '&gE;': "\u2267",
	\ '&lnE;': "\u2268", '&gnE;': "\u2269", '&Lt;': "\u226A",
	\ '&Gt;': "\u226B", '&twixt;': "\u226C", '&NotCupCap;': "\u226D",
	\ '&nlt;': "\u226E", '&ngt;': "\u226F", '&nle;': "\u2270",
	\ '&nge;': "\u2271", '&lsim;': "\u2272", '&gsim;': "\u2273",
	\ '&nlsim;': "\u2274", '&ngsim;': "\u2275", '&lg;': "\u2276",
	\ '&gl;': "\u2277", '&ntlg;': "\u2278", '&ntgl;': "\u2279",
	\ '&pr;': "\u227A", '&sc;': "\u227B", '&prcue;': "\u227C",
	\ '&sccue;': "\u227D", '&prsim;': "\u227E", '&scsim;': "\u227F",
	\ '&npr;': "\u2280", '&nsc;': "\u2281", '&sub;': "\u2282",
	\ '&sup;': "\u2283", '&nsub;': "\u2284", '&nsup;': "\u2285",
	\ '&sube;': "\u2286", '&supe;': "\u2287", '&nsube;': "\u2288",
	\ '&nsupe;': "\u2289", '&subne;': "\u228A", '&supne;': "\u228B",
	\ '&cupdot;': "\u228D", '&uplus;': "\u228E", '&sqsub;': "\u228F",
	\ '&sqsup;': "\u2290", '&sqsube;': "\u2291", '&sqsupe;': "\u2292",
	\ '&sqcap;': "\u2293", '&sqcup;': "\u2294", '&oplus;': "\u2295",
	\ '&ominus;': "\u2296", '&otimes;': "\u2297", '&osol;': "\u2298",
	\ '&odot;': "\u2299", '&ocir;': "\u229A", '&oast;': "\u229B",
	\ '&odash;': "\u229D", '&plusb;': "\u229E", '&minusb;': "\u229F",
	\ '&timesb;': "\u22A0", '&sdotb;': "\u22A1", '&vdash;': "\u22A2",
	\ '&dashv;': "\u22A3", '&top;': "\u22A4", '&bottom;': "\u22A5",
	\ '&models;': "\u22A7", '&vDash;': "\u22A8", '&Vdash;': "\u22A9",
	\ '&Vvdash;': "\u22AA", '&VDash;': "\u22AB", '&nvdash;': "\u22AC",
	\ '&nvDash;': "\u22AD", '&nVdash;': "\u22AE", '&nVDash;': "\u22AF",
	\ '&prurel;': "\u22B0", '&vltri;': "\u22B2", '&vrtri;': "\u22B3",
	\ '&ltrie;': "\u22B4", '&rtrie;': "\u22B5", '&origof;': "\u22B6",
	\ '&imof;': "\u22B7", '&mumap;': "\u22B8", '&hercon;': "\u22B9",
	\ '&intcal;': "\u22BA", '&veebar;': "\u22BB", '&barvee;': "\u22BD",
	\ '&angrtvb;': "\u22BE", '&lrtri;': "\u22BF", '&xwedge;': "\u22C0",
	\ '&xvee;': "\u22C1", '&xcap;': "\u22C2", '&xcup;': "\u22C3",
	\ '&diam;': "\u22C4", '&sdot;': "\u22C5", '&sstarf;': "\u22C6",
	\ '&divonx;': "\u22C7", '&bowtie;': "\u22C8", '&ltimes;': "\u22C9",
	\ '&rtimes;': "\u22CA", '&lthree;': "\u22CB", '&rthree;': "\u22CC",
	\ '&bsime;': "\u22CD", '&cuvee;': "\u22CE", '&cuwed;': "\u22CF",
	\ '&Sub;': "\u22D0", '&Sup;': "\u22D1", '&Cap;': "\u22D2",
	\ '&Cup;': "\u22D3", '&fork;': "\u22D4", '&epar;': "\u22D5",
	\ '&ltdot;': "\u22D6", '&gtdot;': "\u22D7", '&Ll;': "\u22D8",
	\ '&Gg;': "\u22D9", '&leg;': "\u22DA", '&gel;': "\u22DB",
	\ '&cuepr;': "\u22DE", '&cuesc;': "\u22DF", '&nprcue;': "\u22E0",
	\ '&nsccue;': "\u22E1", '&nsqsube;': "\u22E2", '&nsqsupe;': "\u22E3",
	\ '&lnsim;': "\u22E6", '&gnsim;': "\u22E7", '&prnsim;': "\u22E8",
	\ '&scnsim;': "\u22E9", '&nltri;': "\u22EA", '&nrtri;': "\u22EB",
	\ '&nltrie;': "\u22EC", '&nrtrie;': "\u22ED", '&vellip;': "\u22EE",
	\ '&ctdot;': "\u22EF", '&utdot;': "\u22F0", '&dtdot;': "\u22F1",
	\ '&disin;': "\u22F2", '&isinsv;': "\u22F3", '&isins;': "\u22F4",
	\ '&isindot;': "\u22F5", '&notinvc;': "\u22F6", '&notinvb;': "\u22F7",
	\ '&isinE;': "\u22F9", '&nisd;': "\u22FA", '&xnis;': "\u22FB",
	\ '&nis;': "\u22FC", '&notnivc;': "\u22FD", '&notnivb;': "\u22FE",
	\ '&barwed;': "\u2305", '&Barwed;': "\u2306", '&lceil;': "\u2308",
	\ '&rceil;': "\u2309", '&lfloor;': "\u230A", '&rfloor;': "\u230B",
	\ '&drcrop;': "\u230C", '&dlcrop;': "\u230D", '&urcrop;': "\u230E",
	\ '&ulcrop;': "\u230F", '&bnot;': "\u2310", '&profline;': "\u2312",
	\ '&profsurf;': "\u2313", '&telrec;': "\u2315", '&target;': "\u2316",
	\ '&ulcorn;': "\u231C", '&urcorn;': "\u231D", '&dlcorn;': "\u231E",
	\ '&drcorn;': "\u231F", '&frown;': "\u2322", '&smile;': "\u2323",
	\ '&cylcty;': "\u232D", '&profalar;': "\u232E", '&topbot;': "\u2336",
	\ '&ovbar;': "\u233D", '&solbar;': "\u233F", '&angzarr;': "\u237C",
	\ '&lmoust;': "\u23B0", '&rmoust;': "\u23B1", '&tbrk;': "\u23B4",
	\ '&bbrk;': "\u23B5", '&bbrktbrk;': "\u23B6", '&OverParenthesis;': "\u23DC",
	\ '&UnderParenthesis;': "\u23DD", '&OverBrace;': "\u23DE", '&UnderBrace;': "\u23DF",
	\ '&trpezium;': "\u23E2", '&elinters;': "\u23E7", '&blank;': "\u2423",
	\ '&oS;': "\u24C8", '&boxh;': "\u2500", '&boxv;': "\u2502",
	\ '&boxdr;': "\u250C", '&boxdl;': "\u2510", '&boxur;': "\u2514",
	\ '&boxul;': "\u2518", '&boxvr;': "\u251C", '&boxvl;': "\u2524",
	\ '&boxhd;': "\u252C", '&boxhu;': "\u2534", '&boxvh;': "\u253C",
	\ '&boxH;': "\u2550", '&boxV;': "\u2551", '&boxdR;': "\u2552",
	\ '&boxDr;': "\u2553", '&boxDR;': "\u2554", '&boxdL;': "\u2555",
	\ '&boxDl;': "\u2556", '&boxDL;': "\u2557", '&boxuR;': "\u2558",
	\ '&boxUr;': "\u2559", '&boxUR;': "\u255A", '&boxuL;': "\u255B",
	\ '&boxUl;': "\u255C", '&boxUL;': "\u255D", '&boxvR;': "\u255E",
	\ '&boxVr;': "\u255F", '&boxVR;': "\u2560", '&boxvL;': "\u2561",
	\ '&boxVl;': "\u2562", '&boxVL;': "\u2563", '&boxHd;': "\u2564",
	\ '&boxhD;': "\u2565", '&boxHD;': "\u2566", '&boxHu;': "\u2567",
	\ '&boxhU;': "\u2568", '&boxHU;': "\u2569", '&boxvH;': "\u256A",
	\ '&boxVh;': "\u256B", '&boxVH;': "\u256C", '&uhblk;': "\u2580",
	\ '&lhblk;': "\u2584", '&block;': "\u2588", "&blk14;": "\u2591",
	\ "&blk12;": "\u2592", "&blk34;": "\u2593", '&squ;': "\u25A1",
	\ '&squf;': "\u25AA", '&EmptyVerySmallSquare;': "\u25AB", '&rect;': "\u25AD",
	\ '&marker;': "\u25AE", '&fltns;': "\u25B1", '&xutri;': "\u25B3",
	\ '&utrif;': "\u25B4", '&utri;': "\u25B5", '&rtrif;': "\u25B8",
	\ '&rtri;': "\u25B9", '&xdtri;': "\u25BD", '&dtrif;': "\u25BE",
	\ '&dtri;': "\u25BF", '&ltrif;': "\u25C2", '&ltri;': "\u25C3",
	\ '&loz;': "\u25CA", '&cir;': "\u25CB", '&tridot;': "\u25EC",
	\ '&xcirc;': "\u25EF", '&ultri;': "\u25F8", '&urtri;': "\u25F9",
	\ '&lltri;': "\u25FA", '&EmptySmallSquare;': "\u25FB", '&FilledSmallSquare;': "\u25FC",
	\ '&starf;': "\u2605", '&star;': "\u2606", '&phone;': "\u260E",
	\ '&female;': "\u2640", '&male;': "\u2642", '&spades;': "\u2660",
	\ '&clubs;': "\u2663", '&hearts;': "\u2665", '&diams;': "\u2666",
	\ '&sung;': "\u266A", '&flat;': "\u266D", '&natur;': "\u266E",
	\ '&sharp;': "\u266F", '&check;': "\u2713", '&cross;': "\u2717",
	\ '&malt;': "\u2720", '&sext;': "\u2736", '&VerticalSeparator;': "\u2758",
	\ '&lbbrk;': "\u2772", '&rbbrk;': "\u2773", '&lobrk;': "\u27E6",
	\ '&robrk;': "\u27E7", '&lang;': "\u27E8", '&rang;': "\u27E9",
	\ '&Lang;': "\u27EA", '&Rang;': "\u27EB", '&loang;': "\u27EC",
	\ '&roang;': "\u27ED", '&xlarr;': "\u27F5", '&xrarr;': "\u27F6",
	\ '&xharr;': "\u27F7", '&xlArr;': "\u27F8", '&xrArr;': "\u27F9",
	\ '&xhArr;': "\u27FA", '&xmap;': "\u27FC", '&dzigrarr;': "\u27FF",
	\ '&nvlArr;': "\u2902", '&nvrArr;': "\u2903", '&nvHarr;': "\u2904",
	\ '&Map;': "\u2905", '&lbarr;': "\u290C", '&rbarr;': "\u290D",
	\ '&lBarr;': "\u290E", '&rBarr;': "\u290F", '&RBarr;': "\u2910",
	\ '&DDotrahd;': "\u2911", '&UpArrowBar;': "\u2912", '&DownArrowBar;': "\u2913",
	\ '&Rarrtl;': "\u2916", '&latail;': "\u2919", '&ratail;': "\u291A",
	\ '&lAtail;': "\u291B", '&rAtail;': "\u291C", '&larrfs;': "\u291D",
	\ '&rarrfs;': "\u291E", '&larrbfs;': "\u291F", '&rarrbfs;': "\u2920",
	\ '&nwarhk;': "\u2923", '&nearhk;': "\u2924", '&searhk;': "\u2925",
	\ '&swarhk;': "\u2926", '&nwnear;': "\u2927", '&nesear;': "\u2928",
	\ '&seswar;': "\u2929", '&swnwar;': "\u292A", '&rarrc;': "\u2933",
	\ '&cudarrr;': "\u2935", '&ldca;': "\u2936", '&rdca;': "\u2937",
	\ '&cudarrl;': "\u2938", '&larrpl;': "\u2939", '&curarrm;': "\u293C",
	\ '&cularrp;': "\u293D", '&rarrpl;': "\u2945", '&harrcir;': "\u2948",
	\ '&Uarrocir;': "\u2949", '&lurdshar;': "\u294A", '&ldrushar;': "\u294B",
	\ '&LeftRightVector;': "\u294E", '&RightUpDownVector;': "\u294F", '&DownLeftRightVector;': "\u2950",
	\ '&LeftUpDownVector;': "\u2951", '&LeftVectorBar;': "\u2952", '&RightVectorBar;': "\u2953",
	\ '&RightUpVectorBar;': "\u2954", '&RightDownVectorBar;': "\u2955", '&DownLeftVectorBar;': "\u2956",
	\ '&DownRightVectorBar;': "\u2957", '&LeftUpVectorBar;': "\u2958", '&LeftDownVectorBar;': "\u2959",
	\ '&LeftTeeVector;': "\u295A", '&RightTeeVector;': "\u295B", '&RightUpTeeVector;': "\u295C",
	\ '&RightDownTeeVector;': "\u295D", '&DownLeftTeeVector;': "\u295E", '&DownRightTeeVector;': "\u295F",
	\ '&LeftUpTeeVector;': "\u2960", '&LeftDownTeeVector;': "\u2961", '&lHar;': "\u2962",
	\ '&uHar;': "\u2963", '&rHar;': "\u2964", '&dHar;': "\u2965",
	\ '&luruhar;': "\u2966", '&ldrdhar;': "\u2967", '&ruluhar;': "\u2968",
	\ '&rdldhar;': "\u2969", '&lharul;': "\u296A", '&llhard;': "\u296B",
	\ '&rharul;': "\u296C", '&lrhard;': "\u296D", '&udhar;': "\u296E",
	\ '&duhar;': "\u296F", '&RoundImplies;': "\u2970", '&erarr;': "\u2971",
	\ '&simrarr;': "\u2972", '&larrsim;': "\u2973", '&rarrsim;': "\u2974",
	\ '&rarrap;': "\u2975", '&ltlarr;': "\u2976", '&gtrarr;': "\u2978",
	\ '&subrarr;': "\u2979", '&suplarr;': "\u297B", '&lfisht;': "\u297C",
	\ '&rfisht;': "\u297D", '&ufisht;': "\u297E", '&dfisht;': "\u297F",
	\ '&lopar;': "\u2985", '&ropar;': "\u2986", '&lbrke;': "\u298B",
	\ '&rbrke;': "\u298C", '&lbrkslu;': "\u298D", '&rbrksld;': "\u298E",
	\ '&lbrksld;': "\u298F", '&rbrkslu;': "\u2990", '&langd;': "\u2991",
	\ '&rangd;': "\u2992", '&lparlt;': "\u2993", '&rpargt;': "\u2994",
	\ '&gtlPar;': "\u2995", '&ltrPar;': "\u2996", '&vzigzag;': "\u299A",
	\ '&vangrt;': "\u299C", '&angrtvbd;': "\u299D", '&ange;': "\u29A4",
	\ '&range;': "\u29A5", '&dwangle;': "\u29A6", '&uwangle;': "\u29A7",
	\ '&angmsdaa;': "\u29A8", '&angmsdab;': "\u29A9", '&angmsdac;': "\u29AA",
	\ '&angmsdad;': "\u29AB", '&angmsdae;': "\u29AC", '&angmsdaf;': "\u29AD",
	\ '&angmsdag;': "\u29AE", '&angmsdah;': "\u29AF", '&bemptyv;': "\u29B0",
	\ '&demptyv;': "\u29B1", '&cemptyv;': "\u29B2", '&raemptyv;': "\u29B3",
	\ '&laemptyv;': "\u29B4", '&ohbar;': "\u29B5", '&omid;': "\u29B6",
	\ '&opar;': "\u29B7", '&operp;': "\u29B9", '&olcross;': "\u29BB",
	\ '&odsold;': "\u29BC", '&olcir;': "\u29BE", '&ofcir;': "\u29BF",
	\ '&olt;': "\u29C0", '&ogt;': "\u29C1", '&cirscir;': "\u29C2",
	\ '&cirE;': "\u29C3", '&solb;': "\u29C4", '&bsolb;': "\u29C5",
	\ '&boxbox;': "\u29C9", '&trisb;': "\u29CD", '&rtriltri;': "\u29CE",
	\ '&LeftTriangleBar;': "\u29CF", '&RightTriangleBar;': "\u29D0", '&race;': "\u29DA",
	\ '&iinfin;': "\u29DC", '&infintie;': "\u29DD", '&nvinfin;': "\u29DE",
	\ '&eparsl;': "\u29E3", '&smeparsl;': "\u29E4", '&eqvparsl;': "\u29E5",
	\ '&lozf;': "\u29EB", '&RuleDelayed;': "\u29F4", '&dsol;': "\u29F6",
	\ '&xodot;': "\u2A00", '&xoplus;': "\u2A01", '&xotime;': "\u2A02",
	\ '&xuplus;': "\u2A04", '&xsqcup;': "\u2A06", '&qint;': "\u2A0C",
	\ '&fpartint;': "\u2A0D", '&cirfnint;': "\u2A10", '&awint;': "\u2A11",
	\ '&rppolint;': "\u2A12", '&scpolint;': "\u2A13", '&npolint;': "\u2A14",
	\ '&pointint;': "\u2A15", '&quatint;': "\u2A16", '&intlarhk;': "\u2A17",
	\ '&pluscir;': "\u2A22", '&plusacir;': "\u2A23", '&simplus;': "\u2A24",
	\ '&plusdu;': "\u2A25", '&plussim;': "\u2A26", '&plustwo;': "\u2A27",
	\ '&mcomma;': "\u2A29", '&minusdu;': "\u2A2A", '&loplus;': "\u2A2D",
	\ '&roplus;': "\u2A2E", '&Cross;': "\u2A2F", '&timesd;': "\u2A30",
	\ '&timesbar;': "\u2A31", '&smashp;': "\u2A33", '&lotimes;': "\u2A34",
	\ '&rotimes;': "\u2A35", '&otimesas;': "\u2A36", '&Otimes;': "\u2A37",
	\ '&odiv;': "\u2A38", '&triplus;': "\u2A39", '&triminus;': "\u2A3A",
	\ '&tritime;': "\u2A3B", '&iprod;': "\u2A3C", '&amalg;': "\u2A3F",
	\ '&capdot;': "\u2A40", '&ncup;': "\u2A42", '&ncap;': "\u2A43",
	\ '&capand;': "\u2A44", '&cupor;': "\u2A45", '&cupcap;': "\u2A46",
	\ '&capcup;': "\u2A47", '&cupbrcap;': "\u2A48", '&capbrcup;': "\u2A49",
	\ '&cupcup;': "\u2A4A", '&capcap;': "\u2A4B", '&ccups;': "\u2A4C",
	\ '&ccaps;': "\u2A4D", '&ccupssm;': "\u2A50", '&And;': "\u2A53",
	\ '&Or;': "\u2A54", '&andand;': "\u2A55", '&oror;': "\u2A56",
	\ '&orslope;': "\u2A57", '&andslope;': "\u2A58", '&andv;': "\u2A5A",
	\ '&orv;': "\u2A5B", '&andd;': "\u2A5C", '&ord;': "\u2A5D",
	\ '&wedbar;': "\u2A5F", '&sdote;': "\u2A66", '&simdot;': "\u2A6A",
	\ '&congdot;': "\u2A6D", '&easter;': "\u2A6E", '&apacir;': "\u2A6F",
	\ '&apE;': "\u2A70", '&eplus;': "\u2A71", '&pluse;': "\u2A72",
	\ '&Esim;': "\u2A73", '&Colone;': "\u2A74", '&Equal;': "\u2A75",
	\ '&eDDot;': "\u2A77", '&equivDD;': "\u2A78", '&ltcir;': "\u2A79",
	\ '&gtcir;': "\u2A7A", '&ltquest;': "\u2A7B", '&gtquest;': "\u2A7C",
	\ '&les;': "\u2A7D", '&ges;': "\u2A7E", '&lesdot;': "\u2A7F",
	\ '&gesdot;': "\u2A80", '&lesdoto;': "\u2A81", '&gesdoto;': "\u2A82",
	\ '&lesdotor;': "\u2A83", '&gesdotol;': "\u2A84", '&lap;': "\u2A85",
	\ '&gap;': "\u2A86", '&lne;': "\u2A87", '&gne;': "\u2A88",
	\ '&lnap;': "\u2A89", '&gnap;': "\u2A8A", '&lEg;': "\u2A8B",
	\ '&gEl;': "\u2A8C", '&lsime;': "\u2A8D", '&gsime;': "\u2A8E",
	\ '&lsimg;': "\u2A8F", '&gsiml;': "\u2A90", '&lgE;': "\u2A91",
	\ '&glE;': "\u2A92", '&lesges;': "\u2A93", '&gesles;': "\u2A94",
	\ '&els;': "\u2A95", '&egs;': "\u2A96", '&elsdot;': "\u2A97",
	\ '&egsdot;': "\u2A98", '&el;': "\u2A99", '&eg;': "\u2A9A",
	\ '&siml;': "\u2A9D", '&simg;': "\u2A9E", '&simlE;': "\u2A9F",
	\ '&simgE;': "\u2AA0", '&LessLess;': "\u2AA1", '&GreaterGreater;': "\u2AA2",
	\ '&glj;': "\u2AA4", '&gla;': "\u2AA5", '&ltcc;': "\u2AA6",
	\ '&gtcc;': "\u2AA7", '&lescc;': "\u2AA8", '&gescc;': "\u2AA9",
	\ '&smt;': "\u2AAA", '&lat;': "\u2AAB", '&smte;': "\u2AAC",
	\ '&late;': "\u2AAD", '&bumpE;': "\u2AAE", '&pre;': "\u2AAF",
	\ '&sce;': "\u2AB0", '&prE;': "\u2AB3", '&scE;': "\u2AB4",
	\ '&prnE;': "\u2AB5", '&scnE;': "\u2AB6", '&prap;': "\u2AB7",
	\ '&scap;': "\u2AB8", '&prnap;': "\u2AB9", '&scnap;': "\u2ABA",
	\ '&Pr;': "\u2ABB", '&Sc;': "\u2ABC", '&subdot;': "\u2ABD",
	\ '&supdot;': "\u2ABE", '&subplus;': "\u2ABF", '&supplus;': "\u2AC0",
	\ '&submult;': "\u2AC1", '&supmult;': "\u2AC2", '&subedot;': "\u2AC3",
	\ '&supedot;': "\u2AC4", '&subE;': "\u2AC5", '&supE;': "\u2AC6",
	\ '&subsim;': "\u2AC7", '&supsim;': "\u2AC8", '&subnE;': "\u2ACB",
	\ '&supnE;': "\u2ACC", '&csub;': "\u2ACF", '&csup;': "\u2AD0",
	\ '&csube;': "\u2AD1", '&csupe;': "\u2AD2", '&subsup;': "\u2AD3",
	\ '&supsub;': "\u2AD4", '&subsub;': "\u2AD5", '&supsup;': "\u2AD6",
	\ '&suphsub;': "\u2AD7", '&supdsub;': "\u2AD8", '&forkv;': "\u2AD9",
	\ '&topfork;': "\u2ADA", '&mlcp;': "\u2ADB", '&Dashv;': "\u2AE4",
	\ '&Vdashl;': "\u2AE6", '&Barv;': "\u2AE7", '&vBar;': "\u2AE8",
	\ '&vBarv;': "\u2AE9", '&Vbar;': "\u2AEB", '&Not;': "\u2AEC",
	\ '&bNot;': "\u2AED", '&rnmid;': "\u2AEE", '&cirmid;': "\u2AEF",
	\ '&midcir;': "\u2AF0", '&topcir;': "\u2AF1", '&nhpar;': "\u2AF2",
	\ '&parsim;': "\u2AF3", '&parsl;': "\u2AFD", '&fflig;': "\uFB00",
	\ '&filig;': "\uFB01", '&fllig;': "\uFB02", '&ffilig;': "\uFB03",
	\ '&ffllig;': "\uFB04", '&Ascr;': "\U1D49C", '&Cscr;': "\U1D49E",
	\ '&Dscr;': "\U1D49F", '&Gscr;': "\U1D4A2", '&Jscr;': "\U1D4A5",
	\ '&Kscr;': "\U1D4A6", '&Nscr;': "\U1D4A9", '&Oscr;': "\U1D4AA",
	\ '&Pscr;': "\U1D4AB", '&Qscr;': "\U1D4AC", '&Sscr;': "\U1D4AE",
	\ '&Tscr;': "\U1D4AF", '&Uscr;': "\U1D4B0", '&Vscr;': "\U1D4B1",
	\ '&Wscr;': "\U1D4B2", '&Xscr;': "\U1D4B3", '&Yscr;': "\U1D4B4",
	\ '&Zscr;': "\U1D4B5", '&ascr;': "\U1D4B6", '&bscr;': "\U1D4B7",
	\ '&cscr;': "\U1D4B8", '&dscr;': "\U1D4B9", '&fscr;': "\U1D4BB",
	\ '&hscr;': "\U1D4BD", '&iscr;': "\U1D4BE", '&jscr;': "\U1D4BF",
	\ '&kscr;': "\U1D4C0", '&lscr;': "\U1D4C1", '&mscr;': "\U1D4C2",
	\ '&nscr;': "\U1D4C3", '&pscr;': "\U1D4C5", '&qscr;': "\U1D4C6",
	\ '&rscr;': "\U1D4C7", '&sscr;': "\U1D4C8", '&tscr;': "\U1D4C9",
	\ '&uscr;': "\U1D4CA", '&vscr;': "\U1D4CB", '&wscr;': "\U1D4CC",
	\ '&xscr;': "\U1D4CD", '&yscr;': "\U1D4CE", '&zscr;': "\U1D4CF",
	\ '&Afr;': "\U1D504", '&Bfr;': "\U1D505", '&Dfr;': "\U1D507",
	\ '&Efr;': "\U1D508", '&Ffr;': "\U1D509", '&Gfr;': "\U1D50A",
	\ '&Jfr;': "\U1D50D", '&Kfr;': "\U1D50E", '&Lfr;': "\U1D50F",
	\ '&Mfr;': "\U1D510", '&Nfr;': "\U1D511", '&Ofr;': "\U1D512",
	\ '&Pfr;': "\U1D513", '&Qfr;': "\U1D514", '&Sfr;': "\U1D516",
	\ '&Tfr;': "\U1D517", '&Ufr;': "\U1D518", '&Vfr;': "\U1D519",
	\ '&Wfr;': "\U1D51A", '&Xfr;': "\U1D51B", '&Yfr;': "\U1D51C",
	\ '&afr;': "\U1D51E", '&bfr;': "\U1D51F", '&cfr;': "\U1D520",
	\ '&dfr;': "\U1D521", '&efr;': "\U1D522", '&ffr;': "\U1D523",
	\ '&gfr;': "\U1D524", '&hfr;': "\U1D525", '&ifr;': "\U1D526",
	\ '&jfr;': "\U1D527", '&kfr;': "\U1D528", '&lfr;': "\U1D529",
	\ '&mfr;': "\U1D52A", '&nfr;': "\U1D52B", '&ofr;': "\U1D52C",
	\ '&pfr;': "\U1D52D", '&qfr;': "\U1D52E", '&rfr;': "\U1D52F",
	\ '&sfr;': "\U1D530", '&tfr;': "\U1D531", '&ufr;': "\U1D532",
	\ '&vfr;': "\U1D533", '&wfr;': "\U1D534", '&xfr;': "\U1D535",
	\ '&yfr;': "\U1D536", '&zfr;': "\U1D537", '&Aopf;': "\U1D538",
	\ '&Bopf;': "\U1D539", '&Dopf;': "\U1D53B", '&Eopf;': "\U1D53C",
	\ '&Fopf;': "\U1D53D", '&Gopf;': "\U1D53E", '&Iopf;': "\U1D540",
	\ '&Jopf;': "\U1D541", '&Kopf;': "\U1D542", '&Lopf;': "\U1D543",
	\ '&Mopf;': "\U1D544", '&Oopf;': "\U1D546", '&Sopf;': "\U1D54A",
	\ '&Topf;': "\U1D54B", '&Uopf;': "\U1D54C", '&Vopf;': "\U1D54D",
	\ '&Wopf;': "\U1D54E", '&Xopf;': "\U1D54F", '&Yopf;': "\U1D550",
	\ '&aopf;': "\U1D552", '&bopf;': "\U1D553", '&copf;': "\U1D554",
	\ '&dopf;': "\U1D555", '&eopf;': "\U1D556", '&fopf;': "\U1D557",
	\ '&gopf;': "\U1D558", '&hopf;': "\U1D559", '&iopf;': "\U1D55A",
	\ '&jopf;': "\U1D55B", '&kopf;': "\U1D55C", '&lopf;': "\U1D55D",
	\ '&mopf;': "\U1D55E", '&nopf;': "\U1D55F", '&oopf;': "\U1D560",
	\ '&popf;': "\U1D561", '&qopf;': "\U1D562", '&ropf;': "\U1D563",
	\ '&sopf;': "\U1D564", '&topf;': "\U1D565", '&uopf;': "\U1D566",
	\ '&vopf;': "\U1D567", '&wopf;': "\U1D568", '&xopf;': "\U1D569",
	\ '&yopf;': "\U1D56A", '&zopf;': "\U1D56B",
	\ '&#x2669;': "\u2669", '&#x266B;': "\u266B", '&#x1D11E;': "\U1D11E",
	\ '&#x1D122;': "\U1D122",
	\ '&#x2070;': "\u2070", '&#x2074;': "\u2074", '&#x2075;': "\u2075", 
	\ '&#x2076;': "\u2076", '&#x2077;': "\u2077", '&#x2078;': "\u2078", 
	\ '&#x2079;': "\u2079", '&#x2080;': "\u2080", '&#x2081;': "\u2081", 
	\ '&#x2082;': "\u2082", '&#x2083;': "\u2083", '&#x2084;': "\u2084", 
	\ '&#x2085;': "\u2085", '&#x2086;': "\u2086", '&#x2087;': "\u2087", 
	\ '&#x2088;': "\u2088", '&#x2089;': "\u2089", 
	\ '&#x2160;': "\u2160", '&#x2161;': "\u2161", '&#x2162;': "\u2162",
	\ '&#x2163;': "\u2163", '&#x2164;': "\u2164", '&#x2165;': "\u2165",
	\ '&#x2166;': "\u2166", '&#x2167;': "\u2167", '&#x2168;': "\u2168",
	\ '&#x2169;': "\u2169", '&#x216A;': "\u216A", '&#x216B;': "\u216B",
	\ '&#x216C;': "\u216C", '&#x216D;': "\u216D", '&#x216E;': "\u216E",
	\ '&#x216F;': "\u216F", '&#x2170;': "\u2170", '&#x2171;': "\u2171",
	\ '&#x2172;': "\u2172", '&#x2173;': "\u2173", '&#x2174;': "\u2174",
	\ '&#x2175;': "\u2175", '&#x2176;': "\u2176", '&#x2177;': "\u2177",
	\ '&#x2178;': "\u2178", '&#x2179;': "\u2179", '&#x217A;': "\u217A",
	\ '&#x217B;': "\u217B", '&#x217C;': "\u217C", '&#x217D;': "\u217D",
	\ '&#x217E;': "\u217E", '&#x217F;': "\u217F", '&#x20A4;': "\u20A4",
	\ '&#x232B;': "\u232B"
\}
call map(items(s:DictEntitiesToChar), 's:HTMLAddEntityConceal(v:val[1], v:val[0])')

" Define the standard printable ASCII character set as &#.; entities:
call map(range(32, 126), 's:HTMLAddEntityConceal(v:val)')

" Some stuff no longer necessary:
unlet s:DictEntitiesToChar s:color s:contrast